diff --git a/.gitignore b/.gitignore index 3d178992123da..cd9f90d55932c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ sbt/*.jar .settings .cache +.mima-excludes /build/ work/ out/ @@ -45,3 +46,5 @@ dist/ spark-*-bin.tar.gz unit-tests.log /lib/ +rat-results.txt +scalastyle.txt diff --git a/.rat-excludes b/.rat-excludes new file mode 100644 index 0000000000000..a2b5665a0be26 --- /dev/null +++ b/.rat-excludes @@ -0,0 +1,42 @@ +target +.gitignore +.project +.classpath +.mima-excludes +.rat-excludes +.*md +derby.log +TAGS +RELEASE +control +docs +fairscheduler.xml.template +log4j.properties +log4j.properties.template +metrics.properties.template +slaves +spark-env.sh +spark-env.sh.template +log4j-defaults.properties +sorttable.js +.*txt +.*data +.*log +cloudpickle.py +join.py +SparkExprTyper.scala +SparkILoop.scala +SparkILoopInit.scala +SparkIMain.scala +SparkImports.scala +SparkJLineCompletion.scala +SparkJLineReader.scala +SparkMemberHandlers.scala +sbt +sbt-launch-lib.bash +plugins.sbt +work +.*\.q +golden +test.out/* +.*iml \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000..8ebd0d68429fc --- /dev/null +++ b/.travis.yml @@ -0,0 +1,32 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + language: scala + scala: + - "2.10.3" + jdk: + - oraclejdk7 + env: + matrix: + - TEST="scalastyle assembly/assembly" + - TEST="catalyst/test sql/test streaming/test mllib/test graphx/test bagel/test" + - TEST=hive/test + cache: + directories: + - $HOME/.m2 + - $HOME/.ivy2 + - $HOME/.sbt + script: + - "sbt ++$TRAVIS_SCALA_VERSION $TEST" diff --git a/NOTICE b/NOTICE index 7cbb114b2ae2d..42f6c3a835725 100644 --- a/NOTICE +++ b/NOTICE @@ -1,5 +1,14 @@ Apache Spark -Copyright 2013 The Apache Software Foundation. +Copyright 2014 The Apache Software Foundation. This product includes software developed at The Apache Software Foundation (http://www.apache.org/). + +In addition, this product includes: + +- JUnit (http://www.junit.org) is a testing framework for Java. We included it + under the terms of the Eclipse Public License v1.0. + +- JTransforms (https://sites.google.com/site/piotrwendykier/software/jtransforms) + provides fast transforms in Java. It is tri-licensed, and we included it under + the terms of the Mozilla Public License v1.1. diff --git a/assembly/pom.xml b/assembly/pom.xml index 82a5985504b4e..923bf47f7076a 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -79,6 +79,11 @@ spark-graphx_${scala.binary.version} ${project.version} + + org.apache.spark + spark-sql_${scala.binary.version} + ${project.version} + net.sf.py4j py4j @@ -158,6 +163,26 @@ + + hive + + + org.apache.spark + spark-hive_${scala.binary.version} + ${project.version} + + + + + spark-ganglia-lgpl + + + org.apache.spark + spark-ganglia-lgpl_${scala.binary.version} + ${project.version} + + + bigtop-dist + + + yarn-alpha + + + org.apache.avro + avro + + + + @@ -105,12 +117,10 @@ com.twitter chill_${scala.binary.version} - 0.3.1 com.twitter chill-java - 0.3.1 commons-net @@ -138,7 +148,7 @@ json4s-jackson_${scala.binary.version} 3.2.6 @@ -179,10 +189,6 @@ com.codahale.metrics metrics-json - - com.codahale.metrics - metrics-ganglia - com.codahale.metrics metrics-graphite @@ -193,9 +199,51 @@ test - commons-io - commons-io - test + org.tachyonproject + tachyon + 0.4.1-thrift + + + org.apache.hadoop + hadoop-client + + + org.apache.curator + curator-recipes + + + org.eclipse.jetty + jetty-jsp + + + org.eclipse.jetty + jetty-webapp + + + org.eclipse.jetty + jetty-server + + + org.eclipse.jetty + jetty-servlet + + + junit + junit + + + org.powermock + powermock-module-junit4 + + + org.powermock + powermock-api-mockito + + + org.apache.curator + curator-test + + org.scalatest diff --git a/core/src/main/java/org/apache/spark/api/java/StorageLevels.java b/core/src/main/java/org/apache/spark/api/java/StorageLevels.java index 9f13b39909481..840a1bd93bfbb 100644 --- a/core/src/main/java/org/apache/spark/api/java/StorageLevels.java +++ b/core/src/main/java/org/apache/spark/api/java/StorageLevels.java @@ -23,17 +23,18 @@ * Expose some commonly useful storage level constants. */ public class StorageLevels { - public static final StorageLevel NONE = create(false, false, false, 1); - public static final StorageLevel DISK_ONLY = create(true, false, false, 1); - public static final StorageLevel DISK_ONLY_2 = create(true, false, false, 2); - public static final StorageLevel MEMORY_ONLY = create(false, true, true, 1); - public static final StorageLevel MEMORY_ONLY_2 = create(false, true, true, 2); - public static final StorageLevel MEMORY_ONLY_SER = create(false, true, false, 1); - public static final StorageLevel MEMORY_ONLY_SER_2 = create(false, true, false, 2); - public static final StorageLevel MEMORY_AND_DISK = create(true, true, true, 1); - public static final StorageLevel MEMORY_AND_DISK_2 = create(true, true, true, 2); - public static final StorageLevel MEMORY_AND_DISK_SER = create(true, true, false, 1); - public static final StorageLevel MEMORY_AND_DISK_SER_2 = create(true, true, false, 2); + public static final StorageLevel NONE = create(false, false, false, false, 1); + public static final StorageLevel DISK_ONLY = create(true, false, false, false, 1); + public static final StorageLevel DISK_ONLY_2 = create(true, false, false, false, 2); + public static final StorageLevel MEMORY_ONLY = create(false, true, false, true, 1); + public static final StorageLevel MEMORY_ONLY_2 = create(false, true, false, true, 2); + public static final StorageLevel MEMORY_ONLY_SER = create(false, true, false, false, 1); + public static final StorageLevel MEMORY_ONLY_SER_2 = create(false, true, false, false, 2); + public static final StorageLevel MEMORY_AND_DISK = create(true, true, false, true, 1); + public static final StorageLevel MEMORY_AND_DISK_2 = create(true, true, false, true, 2); + public static final StorageLevel MEMORY_AND_DISK_SER = create(true, true, false, false, 1); + public static final StorageLevel MEMORY_AND_DISK_SER_2 = create(true, true, false, false, 2); + public static final StorageLevel OFF_HEAP = create(false, false, true, false, 1); /** * Create a new StorageLevel object. @@ -42,7 +43,26 @@ public class StorageLevels { * @param deserialized saved as deserialized objects, if true * @param replication replication factor */ - public static StorageLevel create(boolean useDisk, boolean useMemory, boolean deserialized, int replication) { - return StorageLevel.apply(useDisk, useMemory, deserialized, replication); + @Deprecated + public static StorageLevel create(boolean useDisk, boolean useMemory, boolean deserialized, + int replication) { + return StorageLevel.apply(useDisk, useMemory, false, deserialized, replication); + } + + /** + * Create a new StorageLevel object. + * @param useDisk saved to disk, if true + * @param useMemory saved to memory, if true + * @param useOffHeap saved to Tachyon, if true + * @param deserialized saved as deserialized objects, if true + * @param replication replication factor + */ + public static StorageLevel create( + boolean useDisk, + boolean useMemory, + boolean useOffHeap, + boolean deserialized, + int replication) { + return StorageLevel.apply(useDisk, useMemory, useOffHeap, deserialized, replication); } } diff --git a/core/src/main/scala/org/apache/spark/Aggregator.scala b/core/src/main/scala/org/apache/spark/Aggregator.scala index c4579cf6ad560..59fdf659c9e11 100644 --- a/core/src/main/scala/org/apache/spark/Aggregator.scala +++ b/core/src/main/scala/org/apache/spark/Aggregator.scala @@ -17,17 +17,18 @@ package org.apache.spark -import scala.{Option, deprecated} - +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.util.collection.{AppendOnlyMap, ExternalAppendOnlyMap} /** + * :: DeveloperApi :: * A set of functions used to aggregate data. * * @param createCombiner function to create the initial value of the aggregation. * @param mergeValue function to merge a new value into the aggregation result. * @param mergeCombiners function to merge outputs from multiple mergeValue function. */ +@DeveloperApi case class Aggregator[K, V, C] ( createCombiner: V => C, mergeValue: (C, V) => C, diff --git a/core/src/main/scala/org/apache/spark/CacheManager.scala b/core/src/main/scala/org/apache/spark/CacheManager.scala index 872e892c04fe6..c7893f288b4b5 100644 --- a/core/src/main/scala/org/apache/spark/CacheManager.scala +++ b/core/src/main/scala/org/apache/spark/CacheManager.scala @@ -20,11 +20,12 @@ package org.apache.spark import scala.collection.mutable.{ArrayBuffer, HashSet} import org.apache.spark.rdd.RDD -import org.apache.spark.storage.{BlockManager, RDDBlockId, StorageLevel} +import org.apache.spark.storage.{BlockId, BlockManager, BlockStatus, RDDBlockId, StorageLevel} -/** Spark class responsible for passing RDDs split contents to the BlockManager and making - sure a node doesn't load two copies of an RDD at once. - */ +/** + * Spark class responsible for passing RDDs split contents to the BlockManager and making + * sure a node doesn't load two copies of an RDD at once. + */ private[spark] class CacheManager(blockManager: BlockManager) extends Logging { /** Keys of RDD splits that are being computed/loaded. */ @@ -49,11 +50,11 @@ private[spark] class CacheManager(blockManager: BlockManager) extends Logging { try {loading.wait()} catch {case _ : Throwable =>} } logInfo("Finished waiting for %s".format(key)) - // See whether someone else has successfully loaded it. The main way this would fail - // is for the RDD-level cache eviction policy if someone else has loaded the same RDD - // partition but we didn't want to make space for it. However, that case is unlikely - // because it's unlikely that two threads would work on the same RDD partition. One - // downside of the current code is that threads wait serially if this does happen. + /* See whether someone else has successfully loaded it. The main way this would fail + * is for the RDD-level cache eviction policy if someone else has loaded the same RDD + * partition but we didn't want to make space for it. However, that case is unlikely + * because it's unlikely that two threads would work on the same RDD partition. One + * downside of the current code is that threads wait serially if this does happen. */ blockManager.get(key) match { case Some(values) => return new InterruptibleIterator(context, values.asInstanceOf[Iterator[T]]) @@ -69,32 +70,45 @@ private[spark] class CacheManager(blockManager: BlockManager) extends Logging { // If we got here, we have to load the split logInfo("Partition %s not found, computing it".format(key)) val computedValues = rdd.computeOrReadCheckpoint(split, context) + // Persist the result, so long as the task is not running locally if (context.runningLocally) { return computedValues } - if (storageLevel.useDisk && !storageLevel.useMemory) { - // In the case that this RDD is to be persisted using DISK_ONLY - // the iterator will be passed directly to the blockManager (rather then - // caching it to an ArrayBuffer first), then the resulting block data iterator - // will be passed back to the user. If the iterator generates a lot of data, - // this means that it doesn't all have to be held in memory at one time. - // This could also apply to MEMORY_ONLY_SER storage, but we need to make sure - // blocks aren't dropped by the block store before enabling that. - blockManager.put(key, computedValues, storageLevel, tellMaster = true) - return blockManager.get(key) match { - case Some(values) => - return new InterruptibleIterator(context, values.asInstanceOf[Iterator[T]]) - case None => - logInfo("Failure to store %s".format(key)) - throw new Exception("Block manager failed to return persisted valued") + + // Keep track of blocks with updated statuses + var updatedBlocks = Seq[(BlockId, BlockStatus)]() + val returnValue: Iterator[T] = { + if (storageLevel.useDisk && !storageLevel.useMemory) { + /* In the case that this RDD is to be persisted using DISK_ONLY + * the iterator will be passed directly to the blockManager (rather then + * caching it to an ArrayBuffer first), then the resulting block data iterator + * will be passed back to the user. If the iterator generates a lot of data, + * this means that it doesn't all have to be held in memory at one time. + * This could also apply to MEMORY_ONLY_SER storage, but we need to make sure + * blocks aren't dropped by the block store before enabling that. */ + updatedBlocks = blockManager.put(key, computedValues, storageLevel, tellMaster = true) + blockManager.get(key) match { + case Some(values) => + new InterruptibleIterator(context, values.asInstanceOf[Iterator[T]]) + case None => + logInfo("Failure to store %s".format(key)) + throw new Exception("Block manager failed to return persisted valued") + } + } else { + // In this case the RDD is cached to an array buffer. This will save the results + // if we're dealing with a 'one-time' iterator + val elements = new ArrayBuffer[Any] + elements ++= computedValues + updatedBlocks = blockManager.put(key, elements, storageLevel, tellMaster = true) + elements.iterator.asInstanceOf[Iterator[T]] } - } else { - // In this case the RDD is cached to an array buffer. This will save the results - // if we're dealing with a 'one-time' iterator - val elements = new ArrayBuffer[Any] - elements ++= computedValues - blockManager.put(key, elements, storageLevel, tellMaster = true) - return elements.iterator.asInstanceOf[Iterator[T]] } + + // Update task metrics to include any blocks whose storage status is updated + val metrics = context.taskMetrics + metrics.updatedBlocks = Some(updatedBlocks) + + returnValue + } finally { loading.synchronized { loading.remove(key) diff --git a/core/src/main/scala/org/apache/spark/ContextCleaner.scala b/core/src/main/scala/org/apache/spark/ContextCleaner.scala new file mode 100644 index 0000000000000..54e08d7866f75 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ContextCleaner.scala @@ -0,0 +1,192 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark + +import java.lang.ref.{ReferenceQueue, WeakReference} + +import scala.collection.mutable.{ArrayBuffer, SynchronizedBuffer} + +import org.apache.spark.broadcast.Broadcast +import org.apache.spark.rdd.RDD + +/** + * Classes that represent cleaning tasks. + */ +private sealed trait CleanupTask +private case class CleanRDD(rddId: Int) extends CleanupTask +private case class CleanShuffle(shuffleId: Int) extends CleanupTask +private case class CleanBroadcast(broadcastId: Long) extends CleanupTask + +/** + * A WeakReference associated with a CleanupTask. + * + * When the referent object becomes only weakly reachable, the corresponding + * CleanupTaskWeakReference is automatically added to the given reference queue. + */ +private class CleanupTaskWeakReference( + val task: CleanupTask, + referent: AnyRef, + referenceQueue: ReferenceQueue[AnyRef]) + extends WeakReference(referent, referenceQueue) + +/** + * An asynchronous cleaner for RDD, shuffle, and broadcast state. + * + * This maintains a weak reference for each RDD, ShuffleDependency, and Broadcast of interest, + * to be processed when the associated object goes out of scope of the application. Actual + * cleanup is performed in a separate daemon thread. + */ +private[spark] class ContextCleaner(sc: SparkContext) extends Logging { + + private val referenceBuffer = new ArrayBuffer[CleanupTaskWeakReference] + with SynchronizedBuffer[CleanupTaskWeakReference] + + private val referenceQueue = new ReferenceQueue[AnyRef] + + private val listeners = new ArrayBuffer[CleanerListener] + with SynchronizedBuffer[CleanerListener] + + private val cleaningThread = new Thread() { override def run() { keepCleaning() }} + + /** + * Whether the cleaning thread will block on cleanup tasks. + * This is set to true only for tests. + */ + private val blockOnCleanupTasks = sc.conf.getBoolean( + "spark.cleaner.referenceTracking.blocking", false) + + @volatile private var stopped = false + + /** Attach a listener object to get information of when objects are cleaned. */ + def attachListener(listener: CleanerListener) { + listeners += listener + } + + /** Start the cleaner. */ + def start() { + cleaningThread.setDaemon(true) + cleaningThread.setName("Spark Context Cleaner") + cleaningThread.start() + } + + /** Stop the cleaner. */ + def stop() { + stopped = true + } + + /** Register a RDD for cleanup when it is garbage collected. */ + def registerRDDForCleanup(rdd: RDD[_]) { + registerForCleanup(rdd, CleanRDD(rdd.id)) + } + + /** Register a ShuffleDependency for cleanup when it is garbage collected. */ + def registerShuffleForCleanup(shuffleDependency: ShuffleDependency[_, _]) { + registerForCleanup(shuffleDependency, CleanShuffle(shuffleDependency.shuffleId)) + } + + /** Register a Broadcast for cleanup when it is garbage collected. */ + def registerBroadcastForCleanup[T](broadcast: Broadcast[T]) { + registerForCleanup(broadcast, CleanBroadcast(broadcast.id)) + } + + /** Register an object for cleanup. */ + private def registerForCleanup(objectForCleanup: AnyRef, task: CleanupTask) { + referenceBuffer += new CleanupTaskWeakReference(task, objectForCleanup, referenceQueue) + } + + /** Keep cleaning RDD, shuffle, and broadcast state. */ + private def keepCleaning() { + while (!stopped) { + try { + val reference = Option(referenceQueue.remove(ContextCleaner.REF_QUEUE_POLL_TIMEOUT)) + .map(_.asInstanceOf[CleanupTaskWeakReference]) + reference.map(_.task).foreach { task => + logDebug("Got cleaning task " + task) + referenceBuffer -= reference.get + task match { + case CleanRDD(rddId) => + doCleanupRDD(rddId, blocking = blockOnCleanupTasks) + case CleanShuffle(shuffleId) => + doCleanupShuffle(shuffleId, blocking = blockOnCleanupTasks) + case CleanBroadcast(broadcastId) => + doCleanupBroadcast(broadcastId, blocking = blockOnCleanupTasks) + } + } + } catch { + case t: Throwable => logError("Error in cleaning thread", t) + } + } + } + + /** Perform RDD cleanup. */ + def doCleanupRDD(rddId: Int, blocking: Boolean) { + try { + logDebug("Cleaning RDD " + rddId) + sc.unpersistRDD(rddId, blocking) + listeners.foreach(_.rddCleaned(rddId)) + logInfo("Cleaned RDD " + rddId) + } catch { + case t: Throwable => logError("Error cleaning RDD " + rddId, t) + } + } + + /** Perform shuffle cleanup, asynchronously. */ + def doCleanupShuffle(shuffleId: Int, blocking: Boolean) { + try { + logDebug("Cleaning shuffle " + shuffleId) + mapOutputTrackerMaster.unregisterShuffle(shuffleId) + blockManagerMaster.removeShuffle(shuffleId, blocking) + listeners.foreach(_.shuffleCleaned(shuffleId)) + logInfo("Cleaned shuffle " + shuffleId) + } catch { + case t: Throwable => logError("Error cleaning shuffle " + shuffleId, t) + } + } + + /** Perform broadcast cleanup. */ + def doCleanupBroadcast(broadcastId: Long, blocking: Boolean) { + try { + logDebug("Cleaning broadcast " + broadcastId) + broadcastManager.unbroadcast(broadcastId, true, blocking) + listeners.foreach(_.broadcastCleaned(broadcastId)) + logInfo("Cleaned broadcast " + broadcastId) + } catch { + case t: Throwable => logError("Error cleaning broadcast " + broadcastId, t) + } + } + + private def blockManagerMaster = sc.env.blockManager.master + private def broadcastManager = sc.env.broadcastManager + private def mapOutputTrackerMaster = sc.env.mapOutputTracker.asInstanceOf[MapOutputTrackerMaster] + + // Used for testing. These methods explicitly blocks until cleanup is completed + // to ensure that more reliable testing. +} + +private object ContextCleaner { + private val REF_QUEUE_POLL_TIMEOUT = 100 +} + +/** + * Listener class used for testing when any item has been cleaned by the Cleaner class. + */ +private[spark] trait CleanerListener { + def rddCleaned(rddId: Int) + def shuffleCleaned(shuffleId: Int) + def broadcastCleaned(broadcastId: Long) +} diff --git a/core/src/main/scala/org/apache/spark/Dependency.scala b/core/src/main/scala/org/apache/spark/Dependency.scala index cc30105940d1a..2c31cc20211ff 100644 --- a/core/src/main/scala/org/apache/spark/Dependency.scala +++ b/core/src/main/scala/org/apache/spark/Dependency.scala @@ -17,18 +17,24 @@ package org.apache.spark +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.rdd.RDD +import org.apache.spark.serializer.Serializer /** + * :: DeveloperApi :: * Base class for dependencies. */ +@DeveloperApi abstract class Dependency[T](val rdd: RDD[T]) extends Serializable /** + * :: DeveloperApi :: * Base class for dependencies where each partition of the parent RDD is used by at most one * partition of the child RDD. Narrow dependencies allow for pipelined execution. */ +@DeveloperApi abstract class NarrowDependency[T](rdd: RDD[T]) extends Dependency(rdd) { /** * Get the parent partitions for a child partition. @@ -40,36 +46,46 @@ abstract class NarrowDependency[T](rdd: RDD[T]) extends Dependency(rdd) { /** + * :: DeveloperApi :: * Represents a dependency on the output of a shuffle stage. * @param rdd the parent RDD * @param partitioner partitioner used to partition the shuffle output - * @param serializerClass class name of the serializer to use + * @param serializer [[org.apache.spark.serializer.Serializer Serializer]] to use. If set to null, + * the default serializer, as specified by `spark.serializer` config option, will + * be used. */ +@DeveloperApi class ShuffleDependency[K, V]( @transient rdd: RDD[_ <: Product2[K, V]], val partitioner: Partitioner, - val serializerClass: String = null) + val serializer: Serializer = null) extends Dependency(rdd.asInstanceOf[RDD[Product2[K, V]]]) { val shuffleId: Int = rdd.context.newShuffleId() + + rdd.sparkContext.cleaner.foreach(_.registerShuffleForCleanup(this)) } /** + * :: DeveloperApi :: * Represents a one-to-one dependency between partitions of the parent and child RDDs. */ +@DeveloperApi class OneToOneDependency[T](rdd: RDD[T]) extends NarrowDependency[T](rdd) { override def getParents(partitionId: Int) = List(partitionId) } /** + * :: DeveloperApi :: * Represents a one-to-one dependency between ranges of partitions in the parent and child RDDs. * @param rdd the parent RDD * @param inStart the start of the range in the parent RDD * @param outStart the start of the range in the child RDD * @param length the length of the range */ +@DeveloperApi class RangeDependency[T](rdd: RDD[T], inStart: Int, outStart: Int, length: Int) extends NarrowDependency[T](rdd) { diff --git a/core/src/main/scala/org/apache/spark/FutureAction.scala b/core/src/main/scala/org/apache/spark/FutureAction.scala index f2decd14ef6d9..1e4dec86a0530 100644 --- a/core/src/main/scala/org/apache/spark/FutureAction.scala +++ b/core/src/main/scala/org/apache/spark/FutureAction.scala @@ -21,13 +21,16 @@ import scala.concurrent._ import scala.concurrent.duration.Duration import scala.util.Try +import org.apache.spark.annotation.Experimental import org.apache.spark.rdd.RDD import org.apache.spark.scheduler.{JobFailed, JobSucceeded, JobWaiter} /** + * :: Experimental :: * A future for the result of an action to support cancellation. This is an extension of the * Scala Future interface to support cancellation. */ +@Experimental trait FutureAction[T] extends Future[T] { // Note that we redefine methods of the Future trait here explicitly so we can specify a different // documentation (with reference to the word "action"). @@ -84,9 +87,11 @@ trait FutureAction[T] extends Future[T] { /** + * :: Experimental :: * A [[FutureAction]] holding the result of an action that triggers a single job. Examples include * count, collect, reduce. */ +@Experimental class SimpleFutureAction[T] private[spark](jobWaiter: JobWaiter[_], resultFunc: => T) extends FutureAction[T] { @@ -141,17 +146,19 @@ class SimpleFutureAction[T] private[spark](jobWaiter: JobWaiter[_], resultFunc: private def awaitResult(): Try[T] = { jobWaiter.awaitResult() match { case JobSucceeded => scala.util.Success(resultFunc) - case JobFailed(e: Exception, _) => scala.util.Failure(e) + case JobFailed(e: Exception) => scala.util.Failure(e) } } } /** + * :: Experimental :: * A [[FutureAction]] for actions that could trigger multiple Spark jobs. Examples include take, * takeSample. Cancellation works by setting the cancelled flag to true and interrupting the * action thread if it is being blocked by a job. */ +@Experimental class ComplexFutureAction[T] extends FutureAction[T] { // Pointer to the thread that is executing the action. It is set when the action is run. diff --git a/core/src/main/scala/org/apache/spark/InterruptibleIterator.scala b/core/src/main/scala/org/apache/spark/InterruptibleIterator.scala index 9b1601d5b95fa..fd1802ba2f984 100644 --- a/core/src/main/scala/org/apache/spark/InterruptibleIterator.scala +++ b/core/src/main/scala/org/apache/spark/InterruptibleIterator.scala @@ -21,7 +21,7 @@ package org.apache.spark * An iterator that wraps around an existing iterator to provide task killing functionality. * It works by checking the interrupted flag in [[TaskContext]]. */ -class InterruptibleIterator[+T](val context: TaskContext, val delegate: Iterator[T]) +private[spark] class InterruptibleIterator[+T](val context: TaskContext, val delegate: Iterator[T]) extends Iterator[T] { def hasNext: Boolean = !context.interrupted && delegate.hasNext diff --git a/core/src/main/scala/org/apache/spark/Logging.scala b/core/src/main/scala/org/apache/spark/Logging.scala index 7423082e34f47..9d429dceeb858 100644 --- a/core/src/main/scala/org/apache/spark/Logging.scala +++ b/core/src/main/scala/org/apache/spark/Logging.scala @@ -21,11 +21,18 @@ import org.apache.log4j.{LogManager, PropertyConfigurator} import org.slf4j.{Logger, LoggerFactory} import org.slf4j.impl.StaticLoggerBinder +import org.apache.spark.annotation.DeveloperApi + /** + * :: DeveloperApi :: * Utility trait for classes that want to log data. Creates a SLF4J logger for the class and allows * logging messages at different levels using methods that only evaluate parameters lazily if the * log level is enabled. + * + * NOTE: DO NOT USE this class outside of Spark. It is intended as an internal utility. + * This will likely be changed or removed in future releases. */ +@DeveloperApi trait Logging { // Make the log field transient so that objects with Logging can // be serialized and used on another machine @@ -53,7 +60,7 @@ trait Logging { protected def logDebug(msg: => String) { if (log.isDebugEnabled) log.debug(msg) } - + protected def logTrace(msg: => String) { if (log.isTraceEnabled) log.trace(msg) } @@ -110,10 +117,10 @@ trait Logging { val defaultLogProps = "org/apache/spark/log4j-defaults.properties" val classLoader = this.getClass.getClassLoader Option(classLoader.getResource(defaultLogProps)) match { - case Some(url) => + case Some(url) => PropertyConfigurator.configure(url) log.info(s"Using Spark's default log4j profile: $defaultLogProps") - case None => + case None => System.err.println(s"Spark was unable to load $defaultLogProps") } } @@ -128,4 +135,16 @@ trait Logging { private object Logging { @volatile private var initialized = false val initLock = new Object() + try { + // We use reflection here to handle the case where users remove the + // slf4j-to-jul bridge order to route their logs to JUL. + val bridgeClass = Class.forName("org.slf4j.bridge.SLF4JBridgeHandler") + bridgeClass.getMethod("removeHandlersForRootLogger").invoke(null) + val installed = bridgeClass.getMethod("isInstalled").invoke(null).asInstanceOf[Boolean] + if (!installed) { + bridgeClass.getMethod("install").invoke(null) + } + } catch { + case e: ClassNotFoundException => // can't log anything yet so just fail silently + } } diff --git a/core/src/main/scala/org/apache/spark/MapOutputTracker.scala b/core/src/main/scala/org/apache/spark/MapOutputTracker.scala index 5968973132942..ee82d9fa7874b 100644 --- a/core/src/main/scala/org/apache/spark/MapOutputTracker.scala +++ b/core/src/main/scala/org/apache/spark/MapOutputTracker.scala @@ -20,28 +20,43 @@ package org.apache.spark import java.io._ import java.util.zip.{GZIPInputStream, GZIPOutputStream} -import scala.collection.mutable.HashSet +import scala.collection.mutable.{HashSet, HashMap, Map} import scala.concurrent.Await import akka.actor._ import akka.pattern.ask - import org.apache.spark.scheduler.MapStatus import org.apache.spark.storage.BlockManagerId -import org.apache.spark.util.{AkkaUtils, MetadataCleaner, MetadataCleanerType, TimeStampedHashMap} +import org.apache.spark.util._ private[spark] sealed trait MapOutputTrackerMessage private[spark] case class GetMapOutputStatuses(shuffleId: Int) extends MapOutputTrackerMessage private[spark] case object StopMapOutputTracker extends MapOutputTrackerMessage -private[spark] class MapOutputTrackerMasterActor(tracker: MapOutputTrackerMaster) +/** Actor class for MapOutputTrackerMaster */ +private[spark] class MapOutputTrackerMasterActor(tracker: MapOutputTrackerMaster, conf: SparkConf) extends Actor with Logging { + val maxAkkaFrameSize = AkkaUtils.maxFrameSizeBytes(conf) + def receive = { case GetMapOutputStatuses(shuffleId: Int) => val hostPort = sender.path.address.hostPort logInfo("Asked to send map output locations for shuffle " + shuffleId + " to " + hostPort) - sender ! tracker.getSerializedMapOutputStatuses(shuffleId) + val mapOutputStatuses = tracker.getSerializedMapOutputStatuses(shuffleId) + val serializedSize = mapOutputStatuses.size + if (serializedSize > maxAkkaFrameSize) { + val msg = s"Map output statuses were $serializedSize bytes which " + + s"exceeds spark.akka.frameSize ($maxAkkaFrameSize bytes)." + + /* For SPARK-1244 we'll opt for just logging an error and then throwing an exception. + * Note that on exception the actor will just restart. A bigger refactoring (SPARK-1239) + * will ultimately remove this entire code path. */ + val exception = new SparkException(msg) + logError(msg, exception) + throw exception + } + sender ! mapOutputStatuses case StopMapOutputTracker => logInfo("MapOutputTrackerActor stopped!") @@ -50,26 +65,41 @@ private[spark] class MapOutputTrackerMasterActor(tracker: MapOutputTrackerMaster } } -private[spark] class MapOutputTracker(conf: SparkConf) extends Logging { - +/** + * Class that keeps track of the location of the map output of + * a stage. This is abstract because different versions of MapOutputTracker + * (driver and worker) use different HashMap to store its metadata. + */ +private[spark] abstract class MapOutputTracker(conf: SparkConf) extends Logging { private val timeout = AkkaUtils.askTimeout(conf) - // Set to the MapOutputTrackerActor living on the driver + /** Set to the MapOutputTrackerActor living on the driver. */ var trackerActor: ActorRef = _ - protected val mapStatuses = new TimeStampedHashMap[Int, Array[MapStatus]] + /** + * This HashMap has different behavior for the master and the workers. + * + * On the master, it serves as the source of map outputs recorded from ShuffleMapTasks. + * On the workers, it simply serves as a cache, in which a miss triggers a fetch from the + * master's corresponding HashMap. + */ + protected val mapStatuses: Map[Int, Array[MapStatus]] - // Incremented every time a fetch fails so that client nodes know to clear - // their cache of map output locations if this happens. + /** + * Incremented every time a fetch fails so that client nodes know to clear + * their cache of map output locations if this happens. + */ protected var epoch: Long = 0 - protected val epochLock = new java.lang.Object + protected val epochLock = new AnyRef - private val metadataCleaner = - new MetadataCleaner(MetadataCleanerType.MAP_OUTPUT_TRACKER, this.cleanup, conf) + /** Remembers which map output locations are currently being fetched on a worker. */ + private val fetching = new HashSet[Int] - // Send a message to the trackerActor and get its result within a default timeout, or - // throw a SparkException if this fails. - private def askTracker(message: Any): Any = { + /** + * Send a message to the trackerActor and get its result within a default timeout, or + * throw a SparkException if this fails. + */ + protected def askTracker(message: Any): Any = { try { val future = trackerActor.ask(message)(timeout) Await.result(future, timeout) @@ -79,17 +109,17 @@ private[spark] class MapOutputTracker(conf: SparkConf) extends Logging { } } - // Send a one-way message to the trackerActor, to which we expect it to reply with true. - private def communicate(message: Any) { + /** Send a one-way message to the trackerActor, to which we expect it to reply with true. */ + protected def sendTracker(message: Any) { if (askTracker(message) != true) { throw new SparkException("Error reply received from MapOutputTracker") } } - // Remembers which map output locations are currently being fetched on a worker - private val fetching = new HashSet[Int] - - // Called on possibly remote nodes to get the server URIs and output sizes for a given shuffle + /** + * Called from executors to get the server URIs and output sizes of the map outputs of + * a given shuffle. + */ def getServerStatuses(shuffleId: Int, reduceId: Int): Array[(BlockManagerId, Long)] = { val statuses = mapStatuses.get(shuffleId).orNull if (statuses == null) { @@ -137,8 +167,7 @@ private[spark] class MapOutputTracker(conf: SparkConf) extends Logging { fetchedStatuses.synchronized { return MapOutputTracker.convertMapStatuses(shuffleId, reduceId, fetchedStatuses) } - } - else { + } else { throw new FetchFailedException(null, shuffleId, -1, reduceId, new Exception("Missing all output locations for shuffle " + shuffleId)) } @@ -149,27 +178,18 @@ private[spark] class MapOutputTracker(conf: SparkConf) extends Logging { } } - protected def cleanup(cleanupTime: Long) { - mapStatuses.clearOldValues(cleanupTime) - } - - def stop() { - communicate(StopMapOutputTracker) - mapStatuses.clear() - metadataCleaner.cancel() - trackerActor = null - } - - // Called to get current epoch number + /** Called to get current epoch number. */ def getEpoch: Long = { epochLock.synchronized { return epoch } } - // Called on workers to update the epoch number, potentially clearing old outputs - // because of a fetch failure. (Each worker task calls this with the latest epoch - // number on the master at the time it was created.) + /** + * Called from executors to update the epoch number, potentially clearing old outputs + * because of a fetch failure. Each worker task calls this with the latest epoch + * number on the master at the time it was created. + */ def updateEpoch(newEpoch: Long) { epochLock.synchronized { if (newEpoch > epoch) { @@ -179,17 +199,40 @@ private[spark] class MapOutputTracker(conf: SparkConf) extends Logging { } } } + + /** Unregister shuffle data. */ + def unregisterShuffle(shuffleId: Int) { + mapStatuses.remove(shuffleId) + } + + /** Stop the tracker. */ + def stop() { } } +/** + * MapOutputTracker for the driver. This uses TimeStampedHashMap to keep track of map + * output information, which allows old output information based on a TTL. + */ private[spark] class MapOutputTrackerMaster(conf: SparkConf) extends MapOutputTracker(conf) { - // Cache a serialized version of the output statuses for each shuffle to send them out faster + /** Cache a serialized version of the output statuses for each shuffle to send them out faster */ private var cacheEpoch = epoch - private val cachedSerializedStatuses = new TimeStampedHashMap[Int, Array[Byte]] + + /** + * Timestamp based HashMap for storing mapStatuses and cached serialized statuses in the master, + * so that statuses are dropped only by explicit de-registering or by TTL-based cleaning (if set). + * Other than these two scenarios, nothing should be dropped from this HashMap. + */ + protected val mapStatuses = new TimeStampedHashMap[Int, Array[MapStatus]]() + private val cachedSerializedStatuses = new TimeStampedHashMap[Int, Array[Byte]]() + + // For cleaning up TimeStampedHashMaps + private val metadataCleaner = + new MetadataCleaner(MetadataCleanerType.MAP_OUTPUT_TRACKER, this.cleanup, conf) def registerShuffle(shuffleId: Int, numMaps: Int) { - if (mapStatuses.putIfAbsent(shuffleId, new Array[MapStatus](numMaps)).isDefined) { + if (mapStatuses.put(shuffleId, new Array[MapStatus](numMaps)).isDefined) { throw new IllegalArgumentException("Shuffle ID " + shuffleId + " registered twice") } } @@ -201,6 +244,7 @@ private[spark] class MapOutputTrackerMaster(conf: SparkConf) } } + /** Register multiple map output information for the given shuffle */ def registerMapOutputs(shuffleId: Int, statuses: Array[MapStatus], changeEpoch: Boolean = false) { mapStatuses.put(shuffleId, Array[MapStatus]() ++ statuses) if (changeEpoch) { @@ -208,6 +252,7 @@ private[spark] class MapOutputTrackerMaster(conf: SparkConf) } } + /** Unregister map output information of the given shuffle, mapper and block manager */ def unregisterMapOutput(shuffleId: Int, mapId: Int, bmAddress: BlockManagerId) { val arrayOpt = mapStatuses.get(shuffleId) if (arrayOpt.isDefined && arrayOpt.get != null) { @@ -223,6 +268,17 @@ private[spark] class MapOutputTrackerMaster(conf: SparkConf) } } + /** Unregister shuffle data */ + override def unregisterShuffle(shuffleId: Int) { + mapStatuses.remove(shuffleId) + cachedSerializedStatuses.remove(shuffleId) + } + + /** Check if the given shuffle is being tracked */ + def containsShuffle(shuffleId: Int): Boolean = { + cachedSerializedStatuses.contains(shuffleId) || mapStatuses.contains(shuffleId) + } + def incrementEpoch() { epochLock.synchronized { epoch += 1 @@ -259,23 +315,26 @@ private[spark] class MapOutputTrackerMaster(conf: SparkConf) bytes } - protected override def cleanup(cleanupTime: Long) { - super.cleanup(cleanupTime) - cachedSerializedStatuses.clearOldValues(cleanupTime) - } - override def stop() { - super.stop() + sendTracker(StopMapOutputTracker) + mapStatuses.clear() + trackerActor = null + metadataCleaner.cancel() cachedSerializedStatuses.clear() } - override def updateEpoch(newEpoch: Long) { - // This might be called on the MapOutputTrackerMaster if we're running in local mode. + private def cleanup(cleanupTime: Long) { + mapStatuses.clearOldValues(cleanupTime) + cachedSerializedStatuses.clearOldValues(cleanupTime) } +} - def has(shuffleId: Int): Boolean = { - cachedSerializedStatuses.get(shuffleId).isDefined || mapStatuses.contains(shuffleId) - } +/** + * MapOutputTracker for the workers, which fetches map output information from the driver's + * MapOutputTrackerMaster. + */ +private[spark] class MapOutputTrackerWorker(conf: SparkConf) extends MapOutputTracker(conf) { + protected val mapStatuses = new HashMap[Int, Array[MapStatus]] } private[spark] object MapOutputTracker { diff --git a/core/src/main/scala/org/apache/spark/SecurityManager.scala b/core/src/main/scala/org/apache/spark/SecurityManager.scala index 591978c1d3630..2237ee3bb7aad 100644 --- a/core/src/main/scala/org/apache/spark/SecurityManager.scala +++ b/core/src/main/scala/org/apache/spark/SecurityManager.scala @@ -18,13 +18,13 @@ package org.apache.spark import java.net.{Authenticator, PasswordAuthentication} -import org.apache.hadoop.io.Text -import org.apache.hadoop.security.Credentials -import org.apache.hadoop.security.UserGroupInformation -import org.apache.spark.deploy.SparkHadoopUtil import scala.collection.mutable.ArrayBuffer +import org.apache.hadoop.io.Text + +import org.apache.spark.deploy.SparkHadoopUtil + /** * Spark class responsible for security. * diff --git a/core/src/main/scala/org/apache/spark/SerializableWritable.scala b/core/src/main/scala/org/apache/spark/SerializableWritable.scala index dff665cae6cb6..e50b9ac2291f9 100644 --- a/core/src/main/scala/org/apache/spark/SerializableWritable.scala +++ b/core/src/main/scala/org/apache/spark/SerializableWritable.scala @@ -23,6 +23,9 @@ import org.apache.hadoop.conf.Configuration import org.apache.hadoop.io.ObjectWritable import org.apache.hadoop.io.Writable +import org.apache.spark.annotation.DeveloperApi + +@DeveloperApi class SerializableWritable[T <: Writable](@transient var t: T) extends Serializable { def value = t override def toString = t.toString diff --git a/core/src/main/scala/org/apache/spark/ShuffleFetcher.scala b/core/src/main/scala/org/apache/spark/ShuffleFetcher.scala index e8f756c408889..a4f69b6b22b2c 100644 --- a/core/src/main/scala/org/apache/spark/ShuffleFetcher.scala +++ b/core/src/main/scala/org/apache/spark/ShuffleFetcher.scala @@ -29,7 +29,7 @@ private[spark] abstract class ShuffleFetcher { shuffleId: Int, reduceId: Int, context: TaskContext, - serializer: Serializer = SparkEnv.get.serializerManager.default): Iterator[T] + serializer: Serializer = SparkEnv.get.serializer): Iterator[T] /** Stop the fetcher */ def stop() {} diff --git a/core/src/main/scala/org/apache/spark/SparkContext.scala b/core/src/main/scala/org/apache/spark/SparkContext.scala index cdc0e5a34240e..28923a1d8c340 100644 --- a/core/src/main/scala/org/apache/spark/SparkContext.scala +++ b/core/src/main/scala/org/apache/spark/SparkContext.scala @@ -19,14 +19,13 @@ package org.apache.spark import java.io._ import java.net.URI -import java.util.{Properties, UUID} import java.util.concurrent.atomic.AtomicInteger - +import java.util.{Properties, UUID} +import java.util.UUID.randomUUID import scala.collection.{Map, Set} import scala.collection.generic.Growable import scala.collection.mutable.{ArrayBuffer, HashMap} import scala.reflect.{ClassTag, classTag} - import org.apache.hadoop.conf.Configuration import org.apache.hadoop.fs.Path import org.apache.hadoop.io.{ArrayWritable, BooleanWritable, BytesWritable, DoubleWritable, FloatWritable, IntWritable, LongWritable, NullWritable, Text, Writable} @@ -35,7 +34,10 @@ import org.apache.hadoop.mapreduce.{InputFormat => NewInputFormat, Job => NewHad import org.apache.hadoop.mapreduce.lib.input.{FileInputFormat => NewFileInputFormat} import org.apache.mesos.MesosNativeLibrary +import org.apache.spark.annotation.{DeveloperApi, Experimental} +import org.apache.spark.broadcast.Broadcast import org.apache.spark.deploy.{LocalSparkCluster, SparkHadoopUtil} +import org.apache.spark.input.WholeTextFileInputFormat import org.apache.spark.partial.{ApproximateEvaluator, PartialResult} import org.apache.spark.rdd._ import org.apache.spark.scheduler._ @@ -44,25 +46,38 @@ import org.apache.spark.scheduler.cluster.mesos.{CoarseMesosSchedulerBackend, Me import org.apache.spark.scheduler.local.LocalBackend import org.apache.spark.storage.{BlockManagerSource, RDDInfo, StorageStatus, StorageUtils} import org.apache.spark.ui.SparkUI -import org.apache.spark.util.{ClosureCleaner, MetadataCleaner, MetadataCleanerType, TimeStampedHashMap, Utils} +import org.apache.spark.util.{ClosureCleaner, MetadataCleaner, MetadataCleanerType, TimeStampedWeakValueHashMap, Utils} /** + * :: DeveloperApi :: * Main entry point for Spark functionality. A SparkContext represents the connection to a Spark * cluster, and can be used to create RDDs, accumulators and broadcast variables on that cluster. * * @param config a Spark Config object describing the application configuration. Any settings in * this config overrides the default configs as well as system properties. - * @param preferredNodeLocationData used in YARN mode to select nodes to launch containers on. Can - * be generated using [[org.apache.spark.scheduler.InputFormatInfo.computePreferredLocations]] - * from a list of input files or InputFormats for the application. */ -class SparkContext( - config: SparkConf, - // This is used only by YARN for now, but should be relevant to other cluster types (Mesos, - // etc) too. This is typically generated from InputFormatInfo.computePreferredLocations. It - // contains a map from hostname to a list of input format splits on the host. - val preferredNodeLocationData: Map[String, Set[SplitInfo]] = Map()) - extends Logging { + +@DeveloperApi +class SparkContext(config: SparkConf) extends Logging { + + // This is used only by YARN for now, but should be relevant to other cluster types (Mesos, + // etc) too. This is typically generated from InputFormatInfo.computePreferredLocations. It + // contains a map from hostname to a list of input format splits on the host. + private[spark] var preferredNodeLocationData: Map[String, Set[SplitInfo]] = Map() + + /** + * :: DeveloperApi :: + * Alternative constructor for setting preferred locations where Spark will create executors. + * + * @param preferredNodeLocationData used in YARN mode to select nodes to launch containers on. Ca + * be generated using [[org.apache.spark.scheduler.InputFormatInfo.computePreferredLocations]] + * from a list of input files or InputFormats for the application. + */ + @DeveloperApi + def this(config: SparkConf, preferredNodeLocationData: Map[String, Set[SplitInfo]]) = { + this(config) + this.preferredNodeLocationData = preferredNodeLocationData + } /** * Alternative constructor that allows setting common Spark properties directly @@ -92,10 +107,45 @@ class SparkContext( environment: Map[String, String] = Map(), preferredNodeLocationData: Map[String, Set[SplitInfo]] = Map()) = { - this(SparkContext.updatedConf(new SparkConf(), master, appName, sparkHome, jars, environment), - preferredNodeLocationData) + this(SparkContext.updatedConf(new SparkConf(), master, appName, sparkHome, jars, environment)) + this.preferredNodeLocationData = preferredNodeLocationData } + // NOTE: The below constructors could be consolidated using default arguments. Due to + // Scala bug SI-8479, however, this causes the compile step to fail when generating docs. + // Until we have a good workaround for that bug the constructors remain broken out. + + /** + * Alternative constructor that allows setting common Spark properties directly + * + * @param master Cluster URL to connect to (e.g. mesos://host:port, spark://host:port, local[4]). + * @param appName A name for your application, to display on the cluster web UI. + */ + private[spark] def this(master: String, appName: String) = + this(master, appName, null, Nil, Map(), Map()) + + /** + * Alternative constructor that allows setting common Spark properties directly + * + * @param master Cluster URL to connect to (e.g. mesos://host:port, spark://host:port, local[4]). + * @param appName A name for your application, to display on the cluster web UI. + * @param sparkHome Location where Spark is installed on cluster nodes. + */ + private[spark] def this(master: String, appName: String, sparkHome: String) = + this(master, appName, sparkHome, Nil, Map(), Map()) + + /** + * Alternative constructor that allows setting common Spark properties directly + * + * @param master Cluster URL to connect to (e.g. mesos://host:port, spark://host:port, local[4]). + * @param appName A name for your application, to display on the cluster web UI. + * @param sparkHome Location where Spark is installed on cluster nodes. + * @param jars Collection of JARs to send to the cluster. These can be paths on the local file + * system or HDFS, HTTP, HTTPS, or FTP URLs. + */ + private[spark] def this(master: String, appName: String, sparkHome: String, jars: Seq[String]) = + this(master, appName, sparkHome, jars, Map(), Map()) + private[spark] val conf = config.clone() /** @@ -128,10 +178,18 @@ class SparkContext( val master = conf.get("spark.master") val appName = conf.get("spark.app.name") + // Generate the random name for a temp folder in Tachyon + // Add a timestamp as the suffix here to make it more safe + val tachyonFolderName = "spark-" + randomUUID.toString() + conf.set("spark.tachyonStore.folderName", tachyonFolderName) + val isLocal = (master == "local" || master.startsWith("local[")) if (master == "yarn-client") System.setProperty("SPARK_YARN_MODE", "true") + // An asynchronous listener bus for Spark events + private[spark] val listenerBus = new LiveListenerBus + // Create the Spark execution environment (cache, map output tracker, etc) private[spark] val env = SparkEnv.create( conf, @@ -139,7 +197,8 @@ class SparkContext( conf.get("spark.driver.host"), conf.get("spark.driver.port").toInt, isDriver = true, - isLocal = isLocal) + isLocal = isLocal, + listenerBus = listenerBus) SparkEnv.set(env) // Used to store a URL for each static file/jar together with the file's local timestamp @@ -147,14 +206,27 @@ class SparkContext( private[spark] val addedJars = HashMap[String, Long]() // Keeps track of all persisted RDDs - private[spark] val persistentRdds = new TimeStampedHashMap[Int, RDD[_]] + private[spark] val persistentRdds = new TimeStampedWeakValueHashMap[Int, RDD[_]] private[spark] val metadataCleaner = new MetadataCleaner(MetadataCleanerType.SPARK_CONTEXT, this.cleanup, conf) - // Initialize the Spark UI + // Initialize the Spark UI, registering all associated listeners private[spark] val ui = new SparkUI(this) ui.bind() + // Optionally log Spark events + private[spark] val eventLogger: Option[EventLoggingListener] = { + if (conf.getBoolean("spark.eventLog.enabled", false)) { + val logger = new EventLoggingListener(appName, conf) + logger.start() + listenerBus.addListener(logger) + Some(logger) + } else None + } + + // At this point, all relevant SparkListeners have been registered, so begin releasing events + listenerBus.start() + val startTime = System.currentTimeMillis() // Add each JAR given through the constructor @@ -162,7 +234,7 @@ class SparkContext( jars.foreach(addJar) } - def warnSparkMem(value: String): String = { + private def warnSparkMem(value: String): String = { logWarning("Using SPARK_MEM to set amount of memory to use per executor process is " + "deprecated, please use spark.executor.memory instead.") value @@ -200,16 +272,26 @@ class SparkContext( executorEnvs("SPARK_USER") = sparkUser // Create and start the scheduler - private[spark] var taskScheduler = SparkContext.createTaskScheduler(this, master, appName) + private[spark] var taskScheduler = SparkContext.createTaskScheduler(this, master) taskScheduler.start() - @volatile private[spark] var dagScheduler = new DAGScheduler(taskScheduler) + @volatile private[spark] var dagScheduler = new DAGScheduler(this) dagScheduler.start() - ui.start() + private[spark] val cleaner: Option[ContextCleaner] = { + if (conf.getBoolean("spark.cleaner.referenceTracking", true)) { + Some(new ContextCleaner(this)) + } else { + None + } + } + cleaner.foreach(_.start()) + + postEnvironmentUpdate() + postApplicationStart() /** A default Hadoop Configuration for the Hadoop code (e.g. file systems) that we reuse. */ - val hadoopConfiguration = { + val hadoopConfiguration: Configuration = { val env = SparkEnv.get val hadoopConf = SparkHadoopUtil.get.newConfiguration() // Explicitly check for S3 environment variables @@ -349,6 +431,39 @@ class SparkContext( minSplits).map(pair => pair._2.toString) } + /** + * Read a directory of text files from HDFS, a local file system (available on all nodes), or any + * Hadoop-supported file system URI. Each file is read as a single record and returned in a + * key-value pair, where the key is the path of each file, the value is the content of each file. + * + *

For example, if you have the following files: + * {{{ + * hdfs://a-hdfs-path/part-00000 + * hdfs://a-hdfs-path/part-00001 + * ... + * hdfs://a-hdfs-path/part-nnnnn + * }}} + * + * Do `val rdd = sparkContext.wholeTextFile("hdfs://a-hdfs-path")`, + * + *

then `rdd` contains + * {{{ + * (a-hdfs-path/part-00000, its content) + * (a-hdfs-path/part-00001, its content) + * ... + * (a-hdfs-path/part-nnnnn, its content) + * }}} + * + * @note Small files are preferred, as each file will be loaded fully in memory. + */ + def wholeTextFiles(path: String): RDD[(String, String)] = { + newAPIHadoopFile( + path, + classOf[WholeTextFileInputFormat], + classOf[String], + classOf[String]) + } + /** * Get an RDD for a Hadoop-readable dataset from a Hadoop JobConf given its InputFormat and other * necessary info (e.g. file name for a filesystem-based dataset, table name for HyperTable), @@ -571,7 +686,6 @@ class SparkContext( .flatMap(x => Utils.deserialize[Array[T]](x._2.getBytes)) } - protected[spark] def checkpointFile[T: ClassTag]( path: String ): RDD[T] = { @@ -585,6 +699,9 @@ class SparkContext( def union[T: ClassTag](first: RDD[T], rest: RDD[T]*): RDD[T] = new UnionRDD(this, Seq(first) ++ rest) + /** Get an RDD that has no partitions or elements. */ + def emptyRDD[T: ClassTag] = new EmptyRDD[T](this) + // Methods for creating shared variables /** @@ -610,7 +727,7 @@ class SparkContext( * standard mutable collections. So you can use this with mutable Map, Set, etc. */ def accumulableCollection[R <% Growable[T] with TraversableOnce[T] with Serializable, T] - (initialValue: R) = { + (initialValue: R): Accumulable[R, T] = { val param = new GrowableAccumulableParam[R,T] new Accumulable(initialValue, param) } @@ -620,7 +737,11 @@ class SparkContext( * [[org.apache.spark.broadcast.Broadcast]] object for reading it in distributed functions. * The variable will be sent to each cluster only once. */ - def broadcast[T](value: T) = env.broadcastManager.newBroadcast[T](value, isLocal) + def broadcast[T](value: T): Broadcast[T] = { + val bc = env.broadcastManager.newBroadcast[T](value, isLocal) + cleaner.foreach(_.registerBroadcastForCleanup(bc)) + bc + } /** * Add a file to be downloaded with this Spark job on every node. @@ -641,12 +762,21 @@ class SparkContext( Utils.fetchFile(path, new File(SparkFiles.getRootDirectory), conf, env.securityManager) logInfo("Added file " + path + " at " + key + " with timestamp " + addedFiles(key)) + postEnvironmentUpdate() } + /** + * :: DeveloperApi :: + * Register a listener to receive up-calls from events that happen during execution. + */ + @DeveloperApi def addSparkListener(listener: SparkListener) { - dagScheduler.addSparkListener(listener) + listenerBus.addListener(listener) } + /** The version of Spark on which this application is running. */ + def version = SparkContext.SPARK_VERSION + /** * Return a map from the slave to the max memory available for caching and the remaining * memory available for caching. @@ -671,10 +801,6 @@ class SparkContext( */ def getPersistentRDDs: Map[Int, RDD[_]] = persistentRdds.toMap - def getStageInfo: Map[Stage,StageInfo] = { - dagScheduler.stageToInfos - } - /** * Return information about blocks stored in all of the slaves */ @@ -698,7 +824,7 @@ class SparkContext( } /** - * Return current scheduling mode + * Return current scheduling mode */ def getSchedulingMode: SchedulingMode.SchedulingMode = { taskScheduler.schedulingMode @@ -708,6 +834,7 @@ class SparkContext( * Clear the job's list of files added by `addFile` so that they do not get downloaded to * any new nodes. */ + @deprecated("adding files no longer creates local copies that need to be deleted", "1.0.0") def clearFiles() { addedFiles.clear() } @@ -722,6 +849,22 @@ class SparkContext( dagScheduler.getPreferredLocs(rdd, partition) } + /** + * Register an RDD to be persisted in memory and/or disk storage + */ + private[spark] def persistRDD(rdd: RDD[_]) { + persistentRdds(rdd.id) = rdd + } + + /** + * Unpersist an RDD from memory and/or disk storage + */ + private[spark] def unpersistRDD(rddId: Int, blocking: Boolean = true) { + env.blockManager.master.removeRdd(rddId, blocking) + persistentRdds.remove(rddId) + listenerBus.post(SparkListenerUnpersistRDD(rddId)) + } + /** * Adds a JAR dependency for all tasks to be executed on this SparkContext in the future. * The `path` passed can be either a local file, a file in HDFS (or other Hadoop-supported @@ -744,7 +887,7 @@ class SparkContext( if (SparkHadoopUtil.get.isYarnMode() && (master == "yarn-standalone" || master == "yarn-cluster")) { // In order for this to work in yarn-cluster mode the user must specify the - // --addjars option to the client to upload the file into the distributed cache + // --addjars option to the client to upload the file into the distributed cache // of the AM to make it show up in the current working directory. val fileName = new Path(uri.getPath).getName() try { @@ -752,7 +895,7 @@ class SparkContext( } catch { case e: Exception => { // For now just log an error but allow to go through so spark examples work. - // The spark examples don't really need the jar distributed since its also + // The spark examples don't really need the jar distributed since its also // the app jar. logError("Error adding jar (" + e + "), was the --addJars option used?") null @@ -773,18 +916,21 @@ class SparkContext( logInfo("Added JAR " + path + " at " + key + " with timestamp " + addedJars(key)) } } + postEnvironmentUpdate() } /** * Clear the job's list of JARs added by `addJar` so that they do not get downloaded to * any new nodes. */ + @deprecated("adding jars no longer creates local copies that need to be deleted", "1.0.0") def clearJars() { addedJars.clear() } /** Shut down the SparkContext. */ def stop() { + postApplicationEnd() ui.stop() // Do this only if not stopped already - best case effort. // prevent NPE if stopped more than once. @@ -792,16 +938,16 @@ class SparkContext( dagScheduler = null if (dagSchedulerCopy != null) { metadataCleaner.cancel() + cleaner.foreach(_.stop()) dagSchedulerCopy.stop() taskScheduler = null // TODO: Cache.stop()? env.stop() - // Clean up locally linked files - clearFiles() - clearJars() SparkEnv.set(null) ShuffleMapTask.clearCache() ResultTask.clearCache() + listenerBus.stop() + eventLogger.foreach(_.stop()) logInfo("Successfully stopped SparkContext") } else { logInfo("SparkContext already stopped") @@ -832,13 +978,13 @@ class SparkContext( setLocalProperty("externalCallSite", null) } + /** + * Capture the current user callsite and return a formatted version for printing. If the user + * has overridden the call site, this will return the user's version. + */ private[spark] def getCallSite(): String = { - val callSite = getLocalProperty("externalCallSite") - if (callSite == null) { - Utils.formatSparkCallSite - } else { - callSite - } + val defaultCallSite = Utils.getCallSiteInfo + Option(getLocalProperty("externalCallSite")).getOrElse(defaultCallSite.toString) } /** @@ -853,6 +999,9 @@ class SparkContext( partitions: Seq[Int], allowLocal: Boolean, resultHandler: (Int, U) => Unit) { + partitions.foreach{ p => + require(p >= 0 && p < rdd.partitions.size, s"Invalid partition requested: $p") + } val callSite = getCallSite val cleanedFunc = clean(func) logInfo("Starting job: " + callSite) @@ -930,8 +1079,10 @@ class SparkContext( } /** + * :: DeveloperApi :: * Run a job that can return approximate results. */ + @DeveloperApi def runApproximateJob[T, U, R]( rdd: RDD[T], func: (TaskContext, Iterator[T]) => U, @@ -949,6 +1100,7 @@ class SparkContext( /** * Submit a job for execution and return a FutureJob holding the result. */ + @Experimental def submitJob[T, U, R]( rdd: RDD[T], processPartition: Iterator[T] => U, @@ -956,6 +1108,9 @@ class SparkContext( resultHandler: (Int, U) => Unit, resultFunc: => R): SimpleFutureAction[R] = { + partitions.foreach{ p => + require(p >= 0 && p < rdd.partitions.size, s"Invalid partition requested: $p") + } val cleanF = clean(processPartition) val callSite = getCallSite val waiter = dagScheduler.submitJob( @@ -1021,6 +1176,33 @@ class SparkContext( /** Register a new RDD, returning its RDD ID */ private[spark] def newRddId(): Int = nextRddId.getAndIncrement() + /** Post the application start event */ + private def postApplicationStart() { + listenerBus.post(SparkListenerApplicationStart(appName, startTime, sparkUser)) + } + + /** + * Post the application end event to all listeners immediately, rather than adding it + * to the event queue for it to be asynchronously processed eventually. Otherwise, a race + * condition exists in which the listeners may stop before this event has been propagated. + */ + private def postApplicationEnd() { + listenerBus.post(SparkListenerApplicationEnd(System.currentTimeMillis)) + } + + /** Post the environment update event once the task scheduler is ready */ + private def postEnvironmentUpdate() { + if (taskScheduler != null) { + val schedulingMode = getSchedulingMode.toString + val addedJarPaths = addedJars.keys.toSeq + val addedFilePaths = addedFiles.keys.toSeq + val environmentDetails = + SparkEnv.environmentDetails(conf, schedulingMode, addedJarPaths, addedFilePaths) + val environmentUpdate = SparkListenerEnvironmentUpdate(environmentDetails) + listenerBus.post(environmentUpdate) + } + } + /** Called by MetadataCleaner to clean up the persistentRdds map periodically */ private[spark] def cleanup(cleanupTime: Long) { persistentRdds.clearOldValues(cleanupTime) @@ -1033,6 +1215,8 @@ class SparkContext( */ object SparkContext extends Logging { + private[spark] val SPARK_VERSION = "1.0.0" + private[spark] val SPARK_JOB_DESCRIPTION = "spark.job.description" private[spark] val SPARK_JOB_GROUP_ID = "spark.jobGroup.id" @@ -1067,7 +1251,7 @@ object SparkContext extends Logging { implicit def rddToAsyncRDDActions[T: ClassTag](rdd: RDD[T]) = new AsyncRDDActions(rdd) implicit def rddToSequenceFileRDDFunctions[K <% Writable: ClassTag, V <% Writable: ClassTag]( - rdd: RDD[(K, V)]) = + rdd: RDD[(K, V)]) = new SequenceFileRDDFunctions(rdd) implicit def rddToOrderedRDDFunctions[K <% Ordered[K]: ClassTag, V: ClassTag]( @@ -1104,27 +1288,33 @@ object SparkContext extends Logging { } // Helper objects for converting common types to Writable - private def simpleWritableConverter[T, W <: Writable: ClassTag](convert: W => T) = { + private def simpleWritableConverter[T, W <: Writable: ClassTag](convert: W => T) + : WritableConverter[T] = { val wClass = classTag[W].runtimeClass.asInstanceOf[Class[W]] new WritableConverter[T](_ => wClass, x => convert(x.asInstanceOf[W])) } - implicit def intWritableConverter() = simpleWritableConverter[Int, IntWritable](_.get) + implicit def intWritableConverter(): WritableConverter[Int] = + simpleWritableConverter[Int, IntWritable](_.get) - implicit def longWritableConverter() = simpleWritableConverter[Long, LongWritable](_.get) + implicit def longWritableConverter(): WritableConverter[Long] = + simpleWritableConverter[Long, LongWritable](_.get) - implicit def doubleWritableConverter() = simpleWritableConverter[Double, DoubleWritable](_.get) + implicit def doubleWritableConverter(): WritableConverter[Double] = + simpleWritableConverter[Double, DoubleWritable](_.get) - implicit def floatWritableConverter() = simpleWritableConverter[Float, FloatWritable](_.get) + implicit def floatWritableConverter(): WritableConverter[Float] = + simpleWritableConverter[Float, FloatWritable](_.get) - implicit def booleanWritableConverter() = + implicit def booleanWritableConverter(): WritableConverter[Boolean] = simpleWritableConverter[Boolean, BooleanWritable](_.get) - implicit def bytesWritableConverter() = { + implicit def bytesWritableConverter(): WritableConverter[Array[Byte]] = { simpleWritableConverter[Array[Byte], BytesWritable](_.getBytes) } - implicit def stringWritableConverter() = simpleWritableConverter[String, Text](_.toString) + implicit def stringWritableConverter(): WritableConverter[String] = + simpleWritableConverter[String, Text](_.toString) implicit def writableWritableConverter[T <: Writable]() = new WritableConverter[T](_.runtimeClass.asInstanceOf[Class[T]], _.asInstanceOf[T]) @@ -1184,11 +1374,9 @@ object SparkContext extends Logging { } /** Creates a task scheduler based on a given master URL. Extracted for testing. */ - private def createTaskScheduler(sc: SparkContext, master: String, appName: String) - : TaskScheduler = - { - // Regular expression used for local[N] master format - val LOCAL_N_REGEX = """local\[([0-9]+)\]""".r + private def createTaskScheduler(sc: SparkContext, master: String): TaskScheduler = { + // Regular expression used for local[N] and local[*] master formats + val LOCAL_N_REGEX = """local\[([0-9\*]+)\]""".r // Regular expression for local[N, maxRetries], used in tests with failing tasks val LOCAL_N_FAILURES_REGEX = """local\[([0-9]+)\s*,\s*([0-9]+)\]""".r // Regular expression for simulating a Spark cluster of [N, cores, memory] locally @@ -1211,8 +1399,11 @@ object SparkContext extends Logging { scheduler case LOCAL_N_REGEX(threads) => + def localCpuCount = Runtime.getRuntime.availableProcessors() + // local[*] estimates the number of cores on the machine; local[N] uses exactly N threads. + val threadCount = if (threads == "*") localCpuCount else threads.toInt val scheduler = new TaskSchedulerImpl(sc, MAX_LOCAL_TASK_FAILURES, isLocal = true) - val backend = new LocalBackend(scheduler, threads.toInt) + val backend = new LocalBackend(scheduler, threadCount) scheduler.initialize(backend) scheduler @@ -1225,7 +1416,7 @@ object SparkContext extends Logging { case SPARK_REGEX(sparkUrl) => val scheduler = new TaskSchedulerImpl(sc) val masterUrls = sparkUrl.split(",").map("spark://" + _) - val backend = new SparkDeploySchedulerBackend(scheduler, sc, masterUrls, appName) + val backend = new SparkDeploySchedulerBackend(scheduler, sc, masterUrls) scheduler.initialize(backend) scheduler @@ -1242,7 +1433,7 @@ object SparkContext extends Logging { val localCluster = new LocalSparkCluster( numSlaves.toInt, coresPerSlave.toInt, memoryPerSlaveInt) val masterUrls = localCluster.start() - val backend = new SparkDeploySchedulerBackend(scheduler, sc, masterUrls, appName) + val backend = new SparkDeploySchedulerBackend(scheduler, sc, masterUrls) scheduler.initialize(backend) backend.shutdownCallback = (backend: SparkDeploySchedulerBackend) => { localCluster.stop() @@ -1302,9 +1493,9 @@ object SparkContext extends Logging { val coarseGrained = sc.conf.getBoolean("spark.mesos.coarse", false) val url = mesosUrl.stripPrefix("mesos://") // strip scheme from raw Mesos URLs val backend = if (coarseGrained) { - new CoarseMesosSchedulerBackend(scheduler, sc, url, appName) + new CoarseMesosSchedulerBackend(scheduler, sc, url) } else { - new MesosSchedulerBackend(scheduler, sc, url, appName) + new MesosSchedulerBackend(scheduler, sc, url) } scheduler.initialize(backend) scheduler diff --git a/core/src/main/scala/org/apache/spark/SparkEnv.scala b/core/src/main/scala/org/apache/spark/SparkEnv.scala index 5e43b5198422c..915315ed74436 100644 --- a/core/src/main/scala/org/apache/spark/SparkEnv.scala +++ b/core/src/main/scala/org/apache/spark/SparkEnv.scala @@ -17,31 +17,39 @@ package org.apache.spark +import scala.collection.JavaConversions._ import scala.collection.mutable import scala.concurrent.Await +import scala.util.Properties import akka.actor._ import com.google.common.collect.MapMaker +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.api.python.PythonWorkerFactory import org.apache.spark.broadcast.BroadcastManager import org.apache.spark.metrics.MetricsSystem -import org.apache.spark.storage.{BlockManager, BlockManagerMaster, BlockManagerMasterActor} import org.apache.spark.network.ConnectionManager -import org.apache.spark.serializer.{Serializer, SerializerManager} +import org.apache.spark.scheduler.LiveListenerBus +import org.apache.spark.serializer.Serializer +import org.apache.spark.storage._ import org.apache.spark.util.{AkkaUtils, Utils} /** + * :: DeveloperApi :: * Holds all the runtime environment objects for a running Spark instance (either master or worker), * including the serializer, Akka actor system, block manager, map output tracker, etc. Currently * Spark code finds the SparkEnv through a thread-local variable, so each thread that accesses these * objects needs to have the right SparkEnv set. You can get the current environment with * SparkEnv.get (e.g. after creating a SparkContext) and set it with SparkEnv.set. + * + * NOTE: This is not intended for external use. This is exposed for Shark and may be made private + * in a future release. */ -class SparkEnv private[spark] ( +@DeveloperApi +class SparkEnv ( val executorId: String, val actorSystem: ActorSystem, - val serializerManager: SerializerManager, val serializer: Serializer, val closureSerializer: Serializer, val cacheManager: CacheManager, @@ -50,11 +58,11 @@ class SparkEnv private[spark] ( val broadcastManager: BroadcastManager, val blockManager: BlockManager, val connectionManager: ConnectionManager, + val securityManager: SecurityManager, val httpFileServer: HttpFileServer, val sparkFilesDir: String, val metricsSystem: MetricsSystem, - val conf: SparkConf, - val securityManager: SecurityManager) extends Logging { + val conf: SparkConf) extends Logging { // A mapping of thread ID to amount of memory used for shuffle in bytes // All accesses should be manually synchronized @@ -79,7 +87,7 @@ class SparkEnv private[spark] ( // Unfortunately Akka's awaitTermination doesn't actually wait for the Netty server to shut // down, but let's call it anyway in case it gets fixed in a later release // UPDATE: In Akka 2.1.x, this hangs if there are remote actors, so we can't call it. - //actorSystem.awaitTermination() + // actorSystem.awaitTermination() } private[spark] @@ -121,9 +129,16 @@ object SparkEnv extends Logging { hostname: String, port: Int, isDriver: Boolean, - isLocal: Boolean): SparkEnv = { + isLocal: Boolean, + listenerBus: LiveListenerBus = null): SparkEnv = { + + // Listener bus is only used on the driver + if (isDriver) { + assert(listenerBus != null, "Attempted to create driver SparkEnv with null listener bus!") + } val securityManager = new SecurityManager(conf) + val (actorSystem, boundPort) = AkkaUtils.createActorSystem("spark", hostname, port, conf = conf, securityManager = securityManager) @@ -139,16 +154,22 @@ object SparkEnv extends Logging { // defaultClassName if the property is not set, and return it as a T def instantiateClass[T](propertyName: String, defaultClassName: String): T = { val name = conf.get(propertyName, defaultClassName) - Class.forName(name, true, classLoader).newInstance().asInstanceOf[T] + val cls = Class.forName(name, true, classLoader) + // First try with the constructor that takes SparkConf. If we can't find one, + // use a no-arg constructor instead. + try { + cls.getConstructor(classOf[SparkConf]).newInstance(conf).asInstanceOf[T] + } catch { + case _: NoSuchMethodException => + cls.getConstructor().newInstance().asInstanceOf[T] + } } - val serializerManager = new SerializerManager - val serializer = serializerManager.setDefault( - conf.get("spark.serializer", "org.apache.spark.serializer.JavaSerializer"), conf) + val serializer = instantiateClass[Serializer]( + "spark.serializer", "org.apache.spark.serializer.JavaSerializer") - val closureSerializer = serializerManager.get( - conf.get("spark.closure.serializer", "org.apache.spark.serializer.JavaSerializer"), - conf) + val closureSerializer = instantiateClass[Serializer]( + "spark.closure.serializer", "org.apache.spark.serializer.JavaSerializer") def registerOrLookup(name: String, newActor: => Actor): ActorRef = { if (isDriver) { @@ -165,11 +186,24 @@ object SparkEnv extends Logging { } } + val mapOutputTracker = if (isDriver) { + new MapOutputTrackerMaster(conf) + } else { + new MapOutputTrackerWorker(conf) + } + + // Have to assign trackerActor after initialization as MapOutputTrackerActor + // requires the MapOutputTracker itself + mapOutputTracker.trackerActor = registerOrLookup( + "MapOutputTracker", + new MapOutputTrackerMasterActor(mapOutputTracker.asInstanceOf[MapOutputTrackerMaster], conf)) + val blockManagerMaster = new BlockManagerMaster(registerOrLookup( "BlockManagerMaster", - new BlockManagerMasterActor(isLocal, conf)), conf) - val blockManager = new BlockManager(executorId, actorSystem, blockManagerMaster, - serializer, conf, securityManager) + new BlockManagerMasterActor(isLocal, conf, listenerBus)), conf) + + val blockManager = new BlockManager(executorId, actorSystem, blockManagerMaster, + serializer, conf, securityManager, mapOutputTracker) val connectionManager = blockManager.connectionManager @@ -177,17 +211,6 @@ object SparkEnv extends Logging { val cacheManager = new CacheManager(blockManager) - // Have to assign trackerActor after initialization as MapOutputTrackerActor - // requires the MapOutputTracker itself - val mapOutputTracker = if (isDriver) { - new MapOutputTrackerMaster(conf) - } else { - new MapOutputTracker(conf) - } - mapOutputTracker.trackerActor = registerOrLookup( - "MapOutputTracker", - new MapOutputTrackerMasterActor(mapOutputTracker.asInstanceOf[MapOutputTrackerMaster])) - val shuffleFetcher = instantiateClass[ShuffleFetcher]( "spark.shuffle.fetcher", "org.apache.spark.BlockStoreShuffleFetcher") @@ -220,7 +243,6 @@ object SparkEnv extends Logging { new SparkEnv( executorId, actorSystem, - serializerManager, serializer, closureSerializer, cacheManager, @@ -229,10 +251,63 @@ object SparkEnv extends Logging { broadcastManager, blockManager, connectionManager, + securityManager, httpFileServer, sparkFilesDir, metricsSystem, - conf, - securityManager) + conf) + } + + /** + * Return a map representation of jvm information, Spark properties, system properties, and + * class paths. Map keys define the category, and map values represent the corresponding + * attributes as a sequence of KV pairs. This is used mainly for SparkListenerEnvironmentUpdate. + */ + private[spark] + def environmentDetails( + conf: SparkConf, + schedulingMode: String, + addedJars: Seq[String], + addedFiles: Seq[String]): Map[String, Seq[(String, String)]] = { + + val jvmInformation = Seq( + ("Java Version", "%s (%s)".format(Properties.javaVersion, Properties.javaVendor)), + ("Java Home", Properties.javaHome), + ("Scala Version", Properties.versionString), + ("Scala Home", Properties.scalaHome) + ).sorted + + // Spark properties + // This includes the scheduling mode whether or not it is configured (used by SparkUI) + val schedulerMode = + if (!conf.contains("spark.scheduler.mode")) { + Seq(("spark.scheduler.mode", schedulingMode)) + } else { + Seq[(String, String)]() + } + val sparkProperties = (conf.getAll ++ schedulerMode).sorted + + // System properties that are not java classpaths + val systemProperties = System.getProperties.iterator.toSeq + val otherProperties = systemProperties.filter { case (k, v) => + k != "java.class.path" && !k.startsWith("spark.") + }.sorted + + // Class paths including all added jars and files + val classPathProperty = systemProperties.find { case (k, v) => + k == "java.class.path" + }.getOrElse(("", "")) + val classPathEntries = classPathProperty._2 + .split(conf.get("path.separator", ":")) + .filterNot(e => e.isEmpty) + .map(e => (e, "System Classpath")) + val addedJarsAndFiles = (addedJars ++ addedFiles).map((_, "Added By User")) + val classPaths = (addedJarsAndFiles ++ classPathEntries).sorted + + Map[String, Seq[(String, String)]]( + "JVM Information" -> jvmInformation, + "Spark Properties" -> sparkProperties, + "System Properties" -> otherProperties, + "Classpath Entries" -> classPaths) } } diff --git a/core/src/main/scala/org/apache/spark/SparkHadoopWriter.scala b/core/src/main/scala/org/apache/spark/SparkHadoopWriter.scala index d404459a8eb7e..b92ea01a877f7 100644 --- a/core/src/main/scala/org/apache/spark/SparkHadoopWriter.scala +++ b/core/src/main/scala/org/apache/spark/SparkHadoopWriter.scala @@ -15,28 +15,26 @@ * limitations under the License. */ -package org.apache.hadoop.mapred +package org.apache.spark import java.io.IOException import java.text.NumberFormat import java.text.SimpleDateFormat import java.util.Date +import org.apache.hadoop.mapred._ import org.apache.hadoop.fs.FileSystem import org.apache.hadoop.fs.Path -import org.apache.spark.Logging -import org.apache.spark.SerializableWritable +import org.apache.spark.rdd.HadoopRDD /** - * Internal helper class that saves an RDD using a Hadoop OutputFormat. This is only public - * because we need to access this class from the `spark` package to use some package-private Hadoop - * functions, but this class should not be used directly by users. + * Internal helper class that saves an RDD using a Hadoop OutputFormat. * * Saves the RDD using a JobConf, which should contain an output key class, an output value class, * a filename to write to, etc, exactly like in a Hadoop MapReduce job. */ -private[apache] +private[spark] class SparkHadoopWriter(@transient jobConf: JobConf) extends Logging with SparkHadoopMapRedUtil @@ -59,7 +57,7 @@ class SparkHadoopWriter(@transient jobConf: JobConf) def preSetup() { setIDs(0, 0, 0) - setConfParams() + HadoopRDD.addLocalConfiguration("", 0, 0, 0, conf.value) val jCtxt = getJobContext() getOutputCommitter().setupJob(jCtxt) @@ -68,7 +66,8 @@ class SparkHadoopWriter(@transient jobConf: JobConf) def setup(jobid: Int, splitid: Int, attemptid: Int) { setIDs(jobid, splitid, attemptid) - setConfParams() + HadoopRDD.addLocalConfiguration(new SimpleDateFormat("yyyyMMddHHmm").format(now), + jobid, splitID, attemptID, conf.value) } def open() { @@ -167,21 +166,13 @@ class SparkHadoopWriter(@transient jobConf: JobConf) taID = new SerializableWritable[TaskAttemptID]( new TaskAttemptID(new TaskID(jID.value, true, splitID), attemptID)) } - - private def setConfParams() { - conf.value.set("mapred.job.id", jID.value.toString) - conf.value.set("mapred.tip.id", taID.value.getTaskID.toString) - conf.value.set("mapred.task.id", taID.value.toString) - conf.value.setBoolean("mapred.task.is.map", true) - conf.value.setInt("mapred.task.partition", splitID) - } } -private[apache] +private[spark] object SparkHadoopWriter { def createJobID(time: Date, id: Int): JobID = { val formatter = new SimpleDateFormat("yyyyMMddHHmm") - val jobtrackerID = formatter.format(new Date()) + val jobtrackerID = formatter.format(time) new JobID(jobtrackerID, id) } diff --git a/core/src/main/scala/org/apache/spark/TaskContext.scala b/core/src/main/scala/org/apache/spark/TaskContext.scala index cae983ed4c652..dc5a19ecd738e 100644 --- a/core/src/main/scala/org/apache/spark/TaskContext.scala +++ b/core/src/main/scala/org/apache/spark/TaskContext.scala @@ -19,8 +19,14 @@ package org.apache.spark import scala.collection.mutable.ArrayBuffer +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.executor.TaskMetrics +/** + * :: DeveloperApi :: + * Contextual information about a task which can be read or mutated during execution. + */ +@DeveloperApi class TaskContext( val stageId: Int, val partitionId: Int, @@ -46,6 +52,7 @@ class TaskContext( } def executeOnCompleteCallbacks() { - onCompleteCallbacks.foreach{_()} + // Process complete callbacks in the reverse order of registration + onCompleteCallbacks.reverse.foreach{_()} } } diff --git a/core/src/main/scala/org/apache/spark/TaskEndReason.scala b/core/src/main/scala/org/apache/spark/TaskEndReason.scala index 3fd6f5eb472f4..a3074916d13e7 100644 --- a/core/src/main/scala/org/apache/spark/TaskEndReason.scala +++ b/core/src/main/scala/org/apache/spark/TaskEndReason.scala @@ -17,29 +17,35 @@ package org.apache.spark +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.executor.TaskMetrics import org.apache.spark.storage.BlockManagerId /** + * :: DeveloperApi :: * Various possible reasons why a task ended. The low-level TaskScheduler is supposed to retry * tasks several times for "ephemeral" failures, and only report back failures that require some * old stages to be resubmitted, such as shuffle map fetch failures. */ -private[spark] sealed trait TaskEndReason +@DeveloperApi +sealed trait TaskEndReason -private[spark] case object Success extends TaskEndReason +@DeveloperApi +case object Success extends TaskEndReason -private[spark] +@DeveloperApi case object Resubmitted extends TaskEndReason // Task was finished earlier but we've now lost it -private[spark] case class FetchFailed( +@DeveloperApi +case class FetchFailed( bmAddress: BlockManagerId, shuffleId: Int, mapId: Int, reduceId: Int) extends TaskEndReason -private[spark] case class ExceptionFailure( +@DeveloperApi +case class ExceptionFailure( className: String, description: String, stackTrace: Array[StackTraceElement], @@ -47,22 +53,28 @@ private[spark] case class ExceptionFailure( extends TaskEndReason /** + * :: DeveloperApi :: * The task finished successfully, but the result was lost from the executor's block manager before * it was fetched. */ -private[spark] case object TaskResultLost extends TaskEndReason +@DeveloperApi +case object TaskResultLost extends TaskEndReason -private[spark] case object TaskKilled extends TaskEndReason +@DeveloperApi +case object TaskKilled extends TaskEndReason /** + * :: DeveloperApi :: * The task failed because the executor that it was running on was lost. This may happen because * the task crashed the JVM. */ -private[spark] case object ExecutorLostFailure extends TaskEndReason +@DeveloperApi +case object ExecutorLostFailure extends TaskEndReason /** + * :: DeveloperApi :: * We don't know why the task ended -- for example, because of a ClassNotFound exception when * deserializing the task result. */ -private[spark] case object UnknownReason extends TaskEndReason - +@DeveloperApi +case object UnknownReason extends TaskEndReason diff --git a/core/src/main/scala/org/apache/spark/TestUtils.scala b/core/src/main/scala/org/apache/spark/TestUtils.scala new file mode 100644 index 0000000000000..4597595a838e3 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/TestUtils.scala @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark + +import java.io.{File, FileInputStream, FileOutputStream} +import java.net.{URI, URL} +import java.util.jar.{JarEntry, JarOutputStream} + +import scala.collection.JavaConversions._ + +import javax.tools.{JavaFileObject, SimpleJavaFileObject, ToolProvider} +import com.google.common.io.Files + +/** + * Utilities for tests. Included in main codebase since it's used by multiple + * projects. + * + * TODO: See if we can move this to the test codebase by specifying + * test dependencies between projects. + */ +private[spark] object TestUtils { + + /** + * Create a jar that defines classes with the given names. + * + * Note: if this is used during class loader tests, class names should be unique + * in order to avoid interference between tests. + */ + def createJarWithClasses(classNames: Seq[String], value: String = ""): URL = { + val tempDir = Files.createTempDir() + val files = for (name <- classNames) yield createCompiledClass(name, tempDir, value) + val jarFile = new File(tempDir, "testJar-%s.jar".format(System.currentTimeMillis())) + createJar(files, jarFile) + } + + + /** + * Create a jar file that contains this set of files. All files will be located at the root + * of the jar. + */ + def createJar(files: Seq[File], jarFile: File): URL = { + val jarFileStream = new FileOutputStream(jarFile) + val jarStream = new JarOutputStream(jarFileStream, new java.util.jar.Manifest()) + + for (file <- files) { + val jarEntry = new JarEntry(file.getName) + jarStream.putNextEntry(jarEntry) + + val in = new FileInputStream(file) + val buffer = new Array[Byte](10240) + var nRead = 0 + while (nRead <= 0) { + nRead = in.read(buffer, 0, buffer.length) + jarStream.write(buffer, 0, nRead) + } + in.close() + } + jarStream.close() + jarFileStream.close() + + jarFile.toURI.toURL + } + + // Adapted from the JavaCompiler.java doc examples + private val SOURCE = JavaFileObject.Kind.SOURCE + private def createURI(name: String) = { + URI.create(s"string:///${name.replace(".", "/")}${SOURCE.extension}") + } + + private class JavaSourceFromString(val name: String, val code: String) + extends SimpleJavaFileObject(createURI(name), SOURCE) { + override def getCharContent(ignoreEncodingErrors: Boolean) = code + } + + /** Creates a compiled class with the given name. Class file will be placed in destDir. */ + def createCompiledClass(className: String, destDir: File, value: String = ""): File = { + val compiler = ToolProvider.getSystemJavaCompiler + val sourceFile = new JavaSourceFromString(className, + "public class " + className + " { @Override public String toString() { " + + "return \"" + value + "\";}}") + + // Calling this outputs a class file in pwd. It's easier to just rename the file than + // build a custom FileManager that controls the output location. + compiler.getTask(null, null, null, null, null, Seq(sourceFile)).call() + + val fileName = className + ".class" + val result = new File(fileName) + if (!result.exists()) throw new Exception("Compiled file not found: " + fileName) + val out = new File(destDir, fileName) + result.renameTo(out) + out + } +} diff --git a/core/src/main/scala/org/apache/spark/annotation/AlphaComponent.java b/core/src/main/scala/org/apache/spark/annotation/AlphaComponent.java new file mode 100644 index 0000000000000..af01fb7cfbd04 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/annotation/AlphaComponent.java @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.annotation; + +import java.lang.annotation.*; + +/** A new component of Spark which may have unstable API's. */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, + ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE, ElementType.PACKAGE}) +public @interface AlphaComponent {} diff --git a/core/src/main/scala/org/apache/spark/annotation/DeveloperApi.java b/core/src/main/scala/org/apache/spark/annotation/DeveloperApi.java new file mode 100644 index 0000000000000..5d546e7a63985 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/annotation/DeveloperApi.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.annotation; + +import java.lang.annotation.*; + +/** + * A lower-level, unstable API intended for developers. + * + * Developer API's might change or be removed in minor versions of Spark. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, + ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE, ElementType.PACKAGE}) +public @interface DeveloperApi {} diff --git a/core/src/main/scala/org/apache/spark/annotation/Experimental.java b/core/src/main/scala/org/apache/spark/annotation/Experimental.java new file mode 100644 index 0000000000000..306b1418d8d0a --- /dev/null +++ b/core/src/main/scala/org/apache/spark/annotation/Experimental.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.annotation; + +import java.lang.annotation.*; + +/** + * An experimental user-facing API. + * + * Experimental API's might change or be removed in minor versions of Spark, or be adopted as + * first-class Spark API's. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, + ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE, ElementType.PACKAGE}) +public @interface Experimental {} diff --git a/core/src/main/scala/org/apache/spark/api/java/JavaDoubleRDD.scala b/core/src/main/scala/org/apache/spark/api/java/JavaDoubleRDD.scala index f816bb43a5b44..537f410b0ca26 100644 --- a/core/src/main/scala/org/apache/spark/api/java/JavaDoubleRDD.scala +++ b/core/src/main/scala/org/apache/spark/api/java/JavaDoubleRDD.scala @@ -23,6 +23,7 @@ import scala.reflect.ClassTag import org.apache.spark.Partitioner import org.apache.spark.SparkContext.doubleRDDToDoubleRDDFunctions +import org.apache.spark.annotation.Experimental import org.apache.spark.api.java.function.{Function => JFunction} import org.apache.spark.partial.{BoundedDouble, PartialResult} import org.apache.spark.rdd.RDD @@ -184,14 +185,26 @@ class JavaDoubleRDD(val srdd: RDD[scala.Double]) extends JavaRDDLike[JDouble, Ja def meanApprox(timeout: Long, confidence: JDouble): PartialResult[BoundedDouble] = srdd.meanApprox(timeout, confidence) - /** (Experimental) Approximate operation to return the mean within a timeout. */ + /** + * :: Experimental :: + * Approximate operation to return the mean within a timeout. + */ + @Experimental def meanApprox(timeout: Long): PartialResult[BoundedDouble] = srdd.meanApprox(timeout) - /** (Experimental) Approximate operation to return the sum within a timeout. */ + /** + * :: Experimental :: + * Approximate operation to return the sum within a timeout. + */ + @Experimental def sumApprox(timeout: Long, confidence: JDouble): PartialResult[BoundedDouble] = srdd.sumApprox(timeout, confidence) - /** (Experimental) Approximate operation to return the sum within a timeout. */ + /** + * :: Experimental :: + * Approximate operation to return the sum within a timeout. + */ + @Experimental def sumApprox(timeout: Long): PartialResult[BoundedDouble] = srdd.sumApprox(timeout) /** diff --git a/core/src/main/scala/org/apache/spark/api/java/JavaPairRDD.scala b/core/src/main/scala/org/apache/spark/api/java/JavaPairRDD.scala index 0ff428c120353..a41c7dbda2afc 100644 --- a/core/src/main/scala/org/apache/spark/api/java/JavaPairRDD.scala +++ b/core/src/main/scala/org/apache/spark/api/java/JavaPairRDD.scala @@ -18,6 +18,7 @@ package org.apache.spark.api.java import java.util.{Comparator, List => JList} +import java.lang.{Iterable => JIterable} import scala.collection.JavaConversions._ import scala.reflect.ClassTag @@ -31,6 +32,7 @@ import org.apache.hadoop.mapreduce.{OutputFormat => NewOutputFormat} import org.apache.spark.{HashPartitioner, Partitioner} import org.apache.spark.Partitioner._ import org.apache.spark.SparkContext.rddToPairRDDFunctions +import org.apache.spark.annotation.Experimental import org.apache.spark.api.java.JavaSparkContext.fakeClassTag import org.apache.spark.api.java.function.{Function => JFunction, Function2 => JFunction2, PairFunction} import org.apache.spark.partial.{BoundedDouble, PartialResult} @@ -200,16 +202,20 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) def countByKey(): java.util.Map[K, Long] = mapAsJavaMap(rdd.countByKey()) /** - * (Experimental) Approximate version of countByKey that can return a partial result if it does + * :: Experimental :: + * Approximate version of countByKey that can return a partial result if it does * not finish within a timeout. */ + @Experimental def countByKeyApprox(timeout: Long): PartialResult[java.util.Map[K, BoundedDouble]] = rdd.countByKeyApprox(timeout).map(mapAsJavaMap) /** - * (Experimental) Approximate version of countByKey that can return a partial result if it does + * :: Experimental :: + * Approximate version of countByKey that can return a partial result if it does * not finish within a timeout. */ + @Experimental def countByKeyApprox(timeout: Long, confidence: Double = 0.95) : PartialResult[java.util.Map[K, BoundedDouble]] = rdd.countByKeyApprox(timeout, confidence).map(mapAsJavaMap) @@ -250,14 +256,14 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) * Group the values for each key in the RDD into a single sequence. Allows controlling the * partitioning of the resulting key-value pair RDD by passing a Partitioner. */ - def groupByKey(partitioner: Partitioner): JavaPairRDD[K, JList[V]] = + def groupByKey(partitioner: Partitioner): JavaPairRDD[K, JIterable[V]] = fromRDD(groupByResultToJava(rdd.groupByKey(partitioner))) /** * Group the values for each key in the RDD into a single sequence. Hash-partitions the * resulting RDD with into `numPartitions` partitions. */ - def groupByKey(numPartitions: Int): JavaPairRDD[K, JList[V]] = + def groupByKey(numPartitions: Int): JavaPairRDD[K, JIterable[V]] = fromRDD(groupByResultToJava(rdd.groupByKey(numPartitions))) /** @@ -367,7 +373,7 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) * Group the values for each key in the RDD into a single sequence. Hash-partitions the * resulting RDD with the existing partitioner/parallelism level. */ - def groupByKey(): JavaPairRDD[K, JList[V]] = + def groupByKey(): JavaPairRDD[K, JIterable[V]] = fromRDD(groupByResultToJava(rdd.groupByKey())) /** @@ -462,7 +468,7 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) * list of values for that key in `this` as well as `other`. */ def cogroup[W](other: JavaPairRDD[K, W], partitioner: Partitioner) - : JavaPairRDD[K, (JList[V], JList[W])] = + : JavaPairRDD[K, (JIterable[V], JIterable[W])] = fromRDD(cogroupResultToJava(rdd.cogroup(other, partitioner))) /** @@ -470,14 +476,14 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) * tuple with the list of values for that key in `this`, `other1` and `other2`. */ def cogroup[W1, W2](other1: JavaPairRDD[K, W1], other2: JavaPairRDD[K, W2], - partitioner: Partitioner): JavaPairRDD[K, (JList[V], JList[W1], JList[W2])] = + partitioner: Partitioner): JavaPairRDD[K, (JIterable[V], JIterable[W1], JIterable[W2])] = fromRDD(cogroupResult2ToJava(rdd.cogroup(other1, other2, partitioner))) /** * For each key k in `this` or `other`, return a resulting RDD that contains a tuple with the * list of values for that key in `this` as well as `other`. */ - def cogroup[W](other: JavaPairRDD[K, W]): JavaPairRDD[K, (JList[V], JList[W])] = + def cogroup[W](other: JavaPairRDD[K, W]): JavaPairRDD[K, (JIterable[V], JIterable[W])] = fromRDD(cogroupResultToJava(rdd.cogroup(other))) /** @@ -485,7 +491,7 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) * tuple with the list of values for that key in `this`, `other1` and `other2`. */ def cogroup[W1, W2](other1: JavaPairRDD[K, W1], other2: JavaPairRDD[K, W2]) - : JavaPairRDD[K, (JList[V], JList[W1], JList[W2])] = + : JavaPairRDD[K, (JIterable[V], JIterable[W1], JIterable[W2])] = fromRDD(cogroupResult2ToJava(rdd.cogroup(other1, other2))) /** @@ -493,7 +499,7 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) * list of values for that key in `this` as well as `other`. */ def cogroup[W](other: JavaPairRDD[K, W], numPartitions: Int) - : JavaPairRDD[K, (JList[V], JList[W])] = + : JavaPairRDD[K, (JIterable[V], JIterable[W])] = fromRDD(cogroupResultToJava(rdd.cogroup(other, numPartitions))) /** @@ -501,16 +507,16 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) * tuple with the list of values for that key in `this`, `other1` and `other2`. */ def cogroup[W1, W2](other1: JavaPairRDD[K, W1], other2: JavaPairRDD[K, W2], numPartitions: Int) - : JavaPairRDD[K, (JList[V], JList[W1], JList[W2])] = + : JavaPairRDD[K, (JIterable[V], JIterable[W1], JIterable[W2])] = fromRDD(cogroupResult2ToJava(rdd.cogroup(other1, other2, numPartitions))) /** Alias for cogroup. */ - def groupWith[W](other: JavaPairRDD[K, W]): JavaPairRDD[K, (JList[V], JList[W])] = + def groupWith[W](other: JavaPairRDD[K, W]): JavaPairRDD[K, (JIterable[V], JIterable[W])] = fromRDD(cogroupResultToJava(rdd.groupWith(other))) /** Alias for cogroup. */ def groupWith[W1, W2](other1: JavaPairRDD[K, W1], other2: JavaPairRDD[K, W2]) - : JavaPairRDD[K, (JList[V], JList[W1], JList[W2])] = + : JavaPairRDD[K, (JIterable[V], JIterable[W1], JIterable[W2])] = fromRDD(cogroupResult2ToJava(rdd.groupWith(other1, other2))) /** @@ -558,6 +564,14 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) rdd.saveAsNewAPIHadoopFile(path, keyClass, valueClass, outputFormatClass, conf) } + /** + * Output the RDD to any Hadoop-supported storage system, using + * a Configuration object for that storage system. + */ + def saveAsNewAPIHadoopDataset(conf: Configuration) { + rdd.saveAsNewAPIHadoopDataset(conf) + } + /** Output the RDD to any Hadoop-supported file system. */ def saveAsNewAPIHadoopFile[F <: NewOutputFormat[_, _]]( path: String, @@ -687,21 +701,22 @@ class JavaPairRDD[K, V](val rdd: RDD[(K, V)]) object JavaPairRDD { private[spark] - def groupByResultToJava[K: ClassTag, T](rdd: RDD[(K, Seq[T])]): RDD[(K, JList[T])] = { - rddToPairRDDFunctions(rdd).mapValues(seqAsJavaList) + def groupByResultToJava[K: ClassTag, T](rdd: RDD[(K, Iterable[T])]): RDD[(K, JIterable[T])] = { + rddToPairRDDFunctions(rdd).mapValues(asJavaIterable) } private[spark] def cogroupResultToJava[K: ClassTag, V, W]( - rdd: RDD[(K, (Seq[V], Seq[W]))]): RDD[(K, (JList[V], JList[W]))] = { - rddToPairRDDFunctions(rdd).mapValues(x => (seqAsJavaList(x._1), seqAsJavaList(x._2))) + rdd: RDD[(K, (Iterable[V], Iterable[W]))]): RDD[(K, (JIterable[V], JIterable[W]))] = { + rddToPairRDDFunctions(rdd).mapValues(x => (asJavaIterable(x._1), asJavaIterable(x._2))) } private[spark] def cogroupResult2ToJava[K: ClassTag, V, W1, W2]( - rdd: RDD[(K, (Seq[V], Seq[W1], Seq[W2]))]): RDD[(K, (JList[V], JList[W1], JList[W2]))] = { + rdd: RDD[(K, (Iterable[V], Iterable[W1], Iterable[W2]))]) + : RDD[(K, (JIterable[V], JIterable[W1], JIterable[W2]))] = { rddToPairRDDFunctions(rdd) - .mapValues(x => (seqAsJavaList(x._1), seqAsJavaList(x._2), seqAsJavaList(x._3))) + .mapValues(x => (asJavaIterable(x._1), asJavaIterable(x._2), asJavaIterable(x._3))) } def fromRDD[K: ClassTag, V: ClassTag](rdd: RDD[(K, V)]): JavaPairRDD[K, V] = { diff --git a/core/src/main/scala/org/apache/spark/api/java/JavaRDD.scala b/core/src/main/scala/org/apache/spark/api/java/JavaRDD.scala index 91bf404631f49..01d9357a2556d 100644 --- a/core/src/main/scala/org/apache/spark/api/java/JavaRDD.scala +++ b/core/src/main/scala/org/apache/spark/api/java/JavaRDD.scala @@ -135,8 +135,6 @@ class JavaRDD[T](val rdd: RDD[T])(implicit val classTag: ClassTag[T]) def subtract(other: JavaRDD[T], p: Partitioner): JavaRDD[T] = wrapRDD(rdd.subtract(other, p)) - def generator: String = rdd.generator - override def toString = rdd.toString /** Assign a name to this RDD */ diff --git a/core/src/main/scala/org/apache/spark/api/java/JavaRDDLike.scala b/core/src/main/scala/org/apache/spark/api/java/JavaRDDLike.scala index af0114bee3f49..725c423a53e35 100644 --- a/core/src/main/scala/org/apache/spark/api/java/JavaRDDLike.scala +++ b/core/src/main/scala/org/apache/spark/api/java/JavaRDDLike.scala @@ -17,9 +17,9 @@ package org.apache.spark.api.java -import java.util.{Comparator, List => JList} +import java.util.{Comparator, List => JList, Iterator => JIterator} +import java.lang.{Iterable => JIterable} -import scala.Tuple2 import scala.collection.JavaConversions._ import scala.reflect.ClassTag @@ -27,6 +27,7 @@ import com.google.common.base.Optional import org.apache.hadoop.io.compress.CompressionCodec import org.apache.spark.{Partition, SparkContext, TaskContext} +import org.apache.spark.annotation.Experimental import org.apache.spark.api.java.JavaPairRDD._ import org.apache.spark.api.java.JavaSparkContext.fakeClassTag import org.apache.spark.api.java.function.{Function => JFunction, Function2 => JFunction2, _} @@ -204,7 +205,7 @@ trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable { * Return an RDD of grouped elements. Each group consists of a key and a sequence of elements * mapping to that key. */ - def groupBy[K](f: JFunction[T, K]): JavaPairRDD[K, JList[T]] = { + def groupBy[K](f: JFunction[T, K]): JavaPairRDD[K, JIterable[T]] = { implicit val ctagK: ClassTag[K] = fakeClassTag implicit val ctagV: ClassTag[JList[T]] = fakeClassTag JavaPairRDD.fromRDD(groupByResultToJava(rdd.groupBy(f)(fakeClassTag))) @@ -214,7 +215,7 @@ trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable { * Return an RDD of grouped elements. Each group consists of a key and a sequence of elements * mapping to that key. */ - def groupBy[K](f: JFunction[T, K], numPartitions: Int): JavaPairRDD[K, JList[T]] = { + def groupBy[K](f: JFunction[T, K], numPartitions: Int): JavaPairRDD[K, JIterable[T]] = { implicit val ctagK: ClassTag[K] = fakeClassTag implicit val ctagV: ClassTag[JList[T]] = fakeClassTag JavaPairRDD.fromRDD(groupByResultToJava(rdd.groupBy(f, numPartitions)(fakeClassTag[K]))) @@ -281,9 +282,22 @@ trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable { new java.util.ArrayList(arr) } + /** + * Return an iterator that contains all of the elements in this RDD. + * + * The iterator will consume as much memory as the largest partition in this RDD. + */ + def toLocalIterator(): JIterator[T] = { + import scala.collection.JavaConversions._ + rdd.toLocalIterator + } + + /** * Return an array that contains all of the elements in this RDD. + * @deprecated As of Spark 1.0.0, toArray() is deprecated, use {@link #collect()} instead */ + @Deprecated def toArray(): JList[T] = collect() /** @@ -330,16 +344,20 @@ trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable { def count(): Long = rdd.count() /** - * (Experimental) Approximate version of count() that returns a potentially incomplete result + * :: Experimental :: + * Approximate version of count() that returns a potentially incomplete result * within a timeout, even if not all tasks have finished. */ + @Experimental def countApprox(timeout: Long, confidence: Double): PartialResult[BoundedDouble] = rdd.countApprox(timeout, confidence) /** - * (Experimental) Approximate version of count() that returns a potentially incomplete result + * :: Experimental :: + * Approximate version of count() that returns a potentially incomplete result * within a timeout, even if not all tasks have finished. */ + @Experimental def countApprox(timeout: Long): PartialResult[BoundedDouble] = rdd.countApprox(timeout) @@ -390,19 +408,24 @@ trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable { /** * Save this RDD as a text file, using string representations of elements. */ - def saveAsTextFile(path: String) = rdd.saveAsTextFile(path) + def saveAsTextFile(path: String): Unit = { + rdd.saveAsTextFile(path) + } /** * Save this RDD as a compressed text file, using string representations of elements. */ - def saveAsTextFile(path: String, codec: Class[_ <: CompressionCodec]) = + def saveAsTextFile(path: String, codec: Class[_ <: CompressionCodec]): Unit = { rdd.saveAsTextFile(path, codec) + } /** * Save this RDD as a SequenceFile of serialized objects. */ - def saveAsObjectFile(path: String) = rdd.saveAsObjectFile(path) + def saveAsObjectFile(path: String): Unit = { + rdd.saveAsObjectFile(path) + } /** * Creates tuples of the elements in this RDD by applying `f`. @@ -419,7 +442,9 @@ trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable { * executed on this RDD. It is strongly recommended that this RDD is persisted in * memory, otherwise saving it on a file will require recomputation. */ - def checkpoint() = rdd.checkpoint() + def checkpoint(): Unit = { + rdd.checkpoint() + } /** * Return whether this RDD has been checkpointed or not @@ -477,6 +502,26 @@ trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable { new java.util.ArrayList(arr) } + /** + * Returns the maximum element from this RDD as defined by the specified + * Comparator[T]. + * @param comp the comparator that defines ordering + * @return the maximum of the RDD + * */ + def max(comp: Comparator[T]): T = { + rdd.max()(Ordering.comparatorToOrdering(comp)) + } + + /** + * Returns the minimum element from this RDD as defined by the specified + * Comparator[T]. + * @param comp the comparator that defines ordering + * @return the minimum of the RDD + * */ + def min(comp: Comparator[T]): T = { + rdd.min()(Ordering.comparatorToOrdering(comp)) + } + /** * Returns the first K elements from this RDD using the * natural ordering for T while maintain the order. @@ -500,8 +545,4 @@ trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable { def name(): String = rdd.name - /** Reset generator */ - def setGenerator(_generator: String) = { - rdd.setGenerator(_generator) - } } diff --git a/core/src/main/scala/org/apache/spark/api/java/JavaSparkContext.scala b/core/src/main/scala/org/apache/spark/api/java/JavaSparkContext.scala index 8e0eab56a3dcf..1e8242a2cbbce 100644 --- a/core/src/main/scala/org/apache/spark/api/java/JavaSparkContext.scala +++ b/core/src/main/scala/org/apache/spark/api/java/JavaSparkContext.scala @@ -89,7 +89,7 @@ class JavaSparkContext(val sc: SparkContext) extends JavaSparkContextVarargsWork */ def this(master: String, appName: String, sparkHome: String, jars: Array[String], environment: JMap[String, String]) = - this(new SparkContext(master, appName, sparkHome, jars.toSeq, environment)) + this(new SparkContext(master, appName, sparkHome, jars.toSeq, environment, Map())) private[spark] val env = sc.env @@ -154,6 +154,34 @@ class JavaSparkContext(val sc: SparkContext) extends JavaSparkContextVarargsWork */ def textFile(path: String, minSplits: Int): JavaRDD[String] = sc.textFile(path, minSplits) + /** + * Read a directory of text files from HDFS, a local file system (available on all nodes), or any + * Hadoop-supported file system URI. Each file is read as a single record and returned in a + * key-value pair, where the key is the path of each file, the value is the content of each file. + * + *

For example, if you have the following files: + * {{{ + * hdfs://a-hdfs-path/part-00000 + * hdfs://a-hdfs-path/part-00001 + * ... + * hdfs://a-hdfs-path/part-nnnnn + * }}} + * + * Do `JavaPairRDD rdd = sparkContext.wholeTextFiles("hdfs://a-hdfs-path")`, + * + *

then `rdd` contains + * {{{ + * (a-hdfs-path/part-00000, its content) + * (a-hdfs-path/part-00001, its content) + * ... + * (a-hdfs-path/part-nnnnn, its content) + * }}} + * + * @note Small files are preferred, as each file will be loaded fully in memory. + */ + def wholeTextFiles(path: String): JavaPairRDD[String, String] = + new JavaPairRDD(sc.wholeTextFiles(path)) + /** Get an RDD for a Hadoop SequenceFile with given key and value types. * * '''Note:''' Because Hadoop's RecordReader class re-uses the same Writable object for each @@ -434,6 +462,7 @@ class JavaSparkContext(val sc: SparkContext) extends JavaSparkContextVarargsWork * Clear the job's list of JARs added by `addJar` so that they do not get downloaded to * any new nodes. */ + @deprecated("adding jars no longer creates local copies that need to be deleted", "1.0.0") def clearJars() { sc.clearJars() } @@ -442,6 +471,7 @@ class JavaSparkContext(val sc: SparkContext) extends JavaSparkContextVarargsWork * Clear the job's list of files added by `addFile` so that they do not get downloaded to * any new nodes. */ + @deprecated("adding files no longer creates local copies that need to be deleted", "1.0.0") def clearFiles() { sc.clearFiles() } @@ -461,7 +491,7 @@ class JavaSparkContext(val sc: SparkContext) extends JavaSparkContextVarargsWork sc.setCheckpointDir(dir) } - def getCheckpointDir = JavaUtils.optionToOptional(sc.getCheckpointDir) + def getCheckpointDir: Optional[String] = JavaUtils.optionToOptional(sc.getCheckpointDir) protected def checkpointFile[T](path: String): JavaRDD[T] = { implicit val ctag: ClassTag[T] = fakeClassTag diff --git a/core/src/main/scala/org/apache/spark/api/java/JavaUtils.scala b/core/src/main/scala/org/apache/spark/api/java/JavaUtils.scala index ecbf18849ad48..22810cb1c662d 100644 --- a/core/src/main/scala/org/apache/spark/api/java/JavaUtils.scala +++ b/core/src/main/scala/org/apache/spark/api/java/JavaUtils.scala @@ -19,7 +19,7 @@ package org.apache.spark.api.java import com.google.common.base.Optional -object JavaUtils { +private[spark] object JavaUtils { def optionToOptional[T](option: Option[T]): Optional[T] = option match { case Some(value) => Optional.of(value) diff --git a/core/src/main/scala/org/apache/spark/api/python/PythonRDD.scala b/core/src/main/scala/org/apache/spark/api/python/PythonRDD.scala index e4d0285710e84..32f1100406d74 100644 --- a/core/src/main/scala/org/apache/spark/api/python/PythonRDD.scala +++ b/core/src/main/scala/org/apache/spark/api/python/PythonRDD.scala @@ -19,6 +19,7 @@ package org.apache.spark.api.python import java.io._ import java.net._ +import java.nio.charset.Charset import java.util.{List => JList, ArrayList => JArrayList, Map => JMap, Collections} import scala.collection.JavaConversions._ @@ -100,6 +101,14 @@ private[spark] class PythonRDD[T: ClassTag]( } }.start() + /* + * Partial fix for SPARK-1019: Attempts to stop reading the input stream since + * other completion callbacks might invalidate the input. Because interruption + * is not synchronous this still leaves a potential race where the interruption is + * processed only after the stream becomes invalid. + */ + context.addOnCompleteCallback(() => context.interrupted = true) + // Return an iterator that read lines from the process's stdout val stream = new DataInputStream(new BufferedInputStream(worker.getInputStream, bufferSize)) val stdoutIterator = new Iterator[Array[Byte]] { @@ -198,6 +207,7 @@ private object SpecialLengths { } private[spark] object PythonRDD { + val UTF8 = Charset.forName("UTF-8") def readRDDFromFile(sc: JavaSparkContext, filename: String, parallelism: Int): JavaRDD[Array[Byte]] = { @@ -258,7 +268,7 @@ private[spark] object PythonRDD { } def writeUTF(str: String, dataOut: DataOutputStream) { - val bytes = str.getBytes("UTF-8") + val bytes = str.getBytes(UTF8) dataOut.writeInt(bytes.length) dataOut.write(bytes) } @@ -278,7 +288,7 @@ private[spark] object PythonRDD { private class BytesToString extends org.apache.spark.api.java.function.Function[Array[Byte], String] { - override def call(arr: Array[Byte]) : String = new String(arr, "UTF-8") + override def call(arr: Array[Byte]) : String = new String(arr, PythonRDD.UTF8) } /** diff --git a/core/src/main/scala/org/apache/spark/broadcast/Broadcast.scala b/core/src/main/scala/org/apache/spark/broadcast/Broadcast.scala index e3c3a12d16f2a..738a3b1bed7f3 100644 --- a/core/src/main/scala/org/apache/spark/broadcast/Broadcast.scala +++ b/core/src/main/scala/org/apache/spark/broadcast/Broadcast.scala @@ -18,9 +18,8 @@ package org.apache.spark.broadcast import java.io.Serializable -import java.util.concurrent.atomic.AtomicLong -import org.apache.spark._ +import org.apache.spark.SparkException /** * A broadcast variable. Broadcast variables allow the programmer to keep a read-only variable @@ -29,7 +28,8 @@ import org.apache.spark._ * attempts to distribute broadcast variables using efficient broadcast algorithms to reduce * communication cost. * - * Broadcast variables are created from a variable `v` by calling [[SparkContext#broadcast]]. + * Broadcast variables are created from a variable `v` by calling + * [[org.apache.spark.SparkContext#broadcast]]. * The broadcast variable is a wrapper around `v`, and its value can be accessed by calling the * `value` method. The interpreter session below shows this: * @@ -51,49 +51,80 @@ import org.apache.spark._ * @tparam T Type of the data contained in the broadcast variable. */ abstract class Broadcast[T](val id: Long) extends Serializable { - def value: T - // We cannot have an abstract readObject here due to some weird issues with - // readObject having to be 'private' in sub-classes. + /** + * Flag signifying whether the broadcast variable is valid + * (that is, not already destroyed) or not. + */ + @volatile private var _isValid = true - override def toString = "Broadcast(" + id + ")" -} - -private[spark] -class BroadcastManager(val _isDriver: Boolean, conf: SparkConf, securityManager: SecurityManager) - extends Logging with Serializable { - - private var initialized = false - private var broadcastFactory: BroadcastFactory = null - - initialize() - - // Called by SparkContext or Executor before using Broadcast - private def initialize() { - synchronized { - if (!initialized) { - val broadcastFactoryClass = conf.get( - "spark.broadcast.factory", "org.apache.spark.broadcast.HttpBroadcastFactory") - - broadcastFactory = - Class.forName(broadcastFactoryClass).newInstance.asInstanceOf[BroadcastFactory] + /** Get the broadcasted value. */ + def value: T = { + assertValid() + getValue() + } - // Initialize appropriate BroadcastFactory and BroadcastObject - broadcastFactory.initialize(isDriver, conf, securityManager) + /** + * Asynchronously delete cached copies of this broadcast on the executors. + * If the broadcast is used after this is called, it will need to be re-sent to each executor. + */ + def unpersist() { + unpersist(blocking = false) + } - initialized = true - } - } + /** + * Delete cached copies of this broadcast on the executors. If the broadcast is used after + * this is called, it will need to be re-sent to each executor. + * @param blocking Whether to block until unpersisting has completed + */ + def unpersist(blocking: Boolean) { + assertValid() + doUnpersist(blocking) } - def stop() { - broadcastFactory.stop() + /** + * Destroy all data and metadata related to this broadcast variable. Use this with caution; + * once a broadcast variable has been destroyed, it cannot be used again. + */ + private[spark] def destroy(blocking: Boolean) { + assertValid() + _isValid = false + doDestroy(blocking) } - private val nextBroadcastId = new AtomicLong(0) + /** + * Whether this Broadcast is actually usable. This should be false once persisted state is + * removed from the driver. + */ + private[spark] def isValid: Boolean = { + _isValid + } - def newBroadcast[T](value_ : T, isLocal: Boolean) = - broadcastFactory.newBroadcast[T](value_, isLocal, nextBroadcastId.getAndIncrement()) + /** + * Actually get the broadcasted value. Concrete implementations of Broadcast class must + * define their own way to get the value. + */ + private[spark] def getValue(): T + + /** + * Actually unpersist the broadcasted value on the executors. Concrete implementations of + * Broadcast class must define their own logic to unpersist their own data. + */ + private[spark] def doUnpersist(blocking: Boolean) + + /** + * Actually destroy all data and metadata related to this broadcast variable. + * Implementation of Broadcast class must define their own logic to destroy their own + * state. + */ + private[spark] def doDestroy(blocking: Boolean) + + /** Check if this broadcast is valid. If not valid, exception is thrown. */ + private[spark] def assertValid() { + if (!_isValid) { + throw new SparkException("Attempted to use %s after it has been destroyed!".format(toString)) + } + } - def isDriver = _isDriver + override def toString = "Broadcast(" + id + ")" } diff --git a/core/src/main/scala/org/apache/spark/broadcast/BroadcastFactory.scala b/core/src/main/scala/org/apache/spark/broadcast/BroadcastFactory.scala index 6beecaeced5be..8c8ce9b1691ac 100644 --- a/core/src/main/scala/org/apache/spark/broadcast/BroadcastFactory.scala +++ b/core/src/main/scala/org/apache/spark/broadcast/BroadcastFactory.scala @@ -16,18 +16,22 @@ */ package org.apache.spark.broadcast -import org.apache.spark.SecurityManager +import org.apache.spark.SecurityManager import org.apache.spark.SparkConf +import org.apache.spark.annotation.DeveloperApi /** - * An interface for all the broadcast implementations in Spark (to allow + * :: DeveloperApi :: + * An interface for all the broadcast implementations in Spark (to allow * multiple broadcast implementations). SparkContext uses a user-specified * BroadcastFactory implementation to instantiate a particular broadcast for the * entire Spark job. */ +@DeveloperApi trait BroadcastFactory { - def initialize(isDriver: Boolean, conf: SparkConf, securityMgr: SecurityManager): Unit + def initialize(isDriver: Boolean, conf: SparkConf, securityMgr: SecurityManager): Unit def newBroadcast[T](value: T, isLocal: Boolean, id: Long): Broadcast[T] + def unbroadcast(id: Long, removeFromDriver: Boolean, blocking: Boolean): Unit def stop(): Unit } diff --git a/core/src/main/scala/org/apache/spark/broadcast/BroadcastManager.scala b/core/src/main/scala/org/apache/spark/broadcast/BroadcastManager.scala new file mode 100644 index 0000000000000..cf62aca4d45e8 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/broadcast/BroadcastManager.scala @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.broadcast + +import java.util.concurrent.atomic.AtomicLong + +import org.apache.spark._ + +private[spark] class BroadcastManager( + val isDriver: Boolean, + conf: SparkConf, + securityManager: SecurityManager) + extends Logging { + + private var initialized = false + private var broadcastFactory: BroadcastFactory = null + + initialize() + + // Called by SparkContext or Executor before using Broadcast + private def initialize() { + synchronized { + if (!initialized) { + val broadcastFactoryClass = + conf.get("spark.broadcast.factory", "org.apache.spark.broadcast.HttpBroadcastFactory") + + broadcastFactory = + Class.forName(broadcastFactoryClass).newInstance.asInstanceOf[BroadcastFactory] + + // Initialize appropriate BroadcastFactory and BroadcastObject + broadcastFactory.initialize(isDriver, conf, securityManager) + + initialized = true + } + } + } + + def stop() { + broadcastFactory.stop() + } + + private val nextBroadcastId = new AtomicLong(0) + + def newBroadcast[T](value_ : T, isLocal: Boolean) = { + broadcastFactory.newBroadcast[T](value_, isLocal, nextBroadcastId.getAndIncrement()) + } + + def unbroadcast(id: Long, removeFromDriver: Boolean, blocking: Boolean) { + broadcastFactory.unbroadcast(id, removeFromDriver, blocking) + } +} diff --git a/core/src/main/scala/org/apache/spark/broadcast/HttpBroadcast.scala b/core/src/main/scala/org/apache/spark/broadcast/HttpBroadcast.scala index e8eb04bb10469..f6a8a8af91e4b 100644 --- a/core/src/main/scala/org/apache/spark/broadcast/HttpBroadcast.scala +++ b/core/src/main/scala/org/apache/spark/broadcast/HttpBroadcast.scala @@ -17,34 +17,65 @@ package org.apache.spark.broadcast -import java.io.{File, FileOutputStream, ObjectInputStream, OutputStream} -import java.net.{URL, URLConnection, URI} +import java.io.{File, FileOutputStream, ObjectInputStream, ObjectOutputStream, OutputStream} +import java.net.{URI, URL, URLConnection} import java.util.concurrent.TimeUnit -import it.unimi.dsi.fastutil.io.FastBufferedInputStream -import it.unimi.dsi.fastutil.io.FastBufferedOutputStream +import it.unimi.dsi.fastutil.io.{FastBufferedInputStream, FastBufferedOutputStream} -import org.apache.spark.{SparkConf, HttpServer, Logging, SecurityManager, SparkEnv} +import org.apache.spark.{HttpServer, Logging, SecurityManager, SparkConf, SparkEnv} import org.apache.spark.io.CompressionCodec import org.apache.spark.storage.{BroadcastBlockId, StorageLevel} import org.apache.spark.util.{MetadataCleaner, MetadataCleanerType, TimeStampedHashSet, Utils} +/** + * A [[org.apache.spark.broadcast.Broadcast]] implementation that uses HTTP server + * as a broadcast mechanism. The first time a HTTP broadcast variable (sent as part of a + * task) is deserialized in the executor, the broadcasted data is fetched from the driver + * (through a HTTP server running at the driver) and stored in the BlockManager of the + * executor to speed up future accesses. + */ private[spark] class HttpBroadcast[T](@transient var value_ : T, isLocal: Boolean, id: Long) extends Broadcast[T](id) with Logging with Serializable { - def value = value_ + def getValue = value_ - def blockId = BroadcastBlockId(id) + val blockId = BroadcastBlockId(id) + /* + * Broadcasted data is also stored in the BlockManager of the driver. The BlockManagerMaster + * does not need to be told about this block as not only need to know about this data block. + */ HttpBroadcast.synchronized { - SparkEnv.get.blockManager.putSingle(blockId, value_, StorageLevel.MEMORY_AND_DISK, false) + SparkEnv.get.blockManager.putSingle( + blockId, value_, StorageLevel.MEMORY_AND_DISK, tellMaster = false) } if (!isLocal) { HttpBroadcast.write(id, value_) } - // Called by JVM when deserializing an object + /** + * Remove all persisted state associated with this HTTP broadcast on the executors. + */ + def doUnpersist(blocking: Boolean) { + HttpBroadcast.unpersist(id, removeFromDriver = false, blocking) + } + + /** + * Remove all persisted state associated with this HTTP broadcast on the executors and driver. + */ + def doDestroy(blocking: Boolean) { + HttpBroadcast.unpersist(id, removeFromDriver = true, blocking) + } + + /** Used by the JVM when serializing this object. */ + private def writeObject(out: ObjectOutputStream) { + assertValid() + out.defaultWriteObject() + } + + /** Used by the JVM when deserializing this object. */ private def readObject(in: ObjectInputStream) { in.defaultReadObject() HttpBroadcast.synchronized { @@ -54,7 +85,13 @@ private[spark] class HttpBroadcast[T](@transient var value_ : T, isLocal: Boolea logInfo("Started reading broadcast variable " + id) val start = System.nanoTime value_ = HttpBroadcast.read[T](id) - SparkEnv.get.blockManager.putSingle(blockId, value_, StorageLevel.MEMORY_AND_DISK, false) + /* + * We cache broadcast data in the BlockManager so that subsequent tasks using it + * do not need to re-fetch. This data is only used locally and no other node + * needs to fetch this block, so we don't notify the master. + */ + SparkEnv.get.blockManager.putSingle( + blockId, value_, StorageLevel.MEMORY_AND_DISK, tellMaster = false) val time = (System.nanoTime - start) / 1e9 logInfo("Reading broadcast variable " + id + " took " + time + " s") } @@ -63,23 +100,8 @@ private[spark] class HttpBroadcast[T](@transient var value_ : T, isLocal: Boolea } } -/** - * A [[BroadcastFactory]] implementation that uses a HTTP server as the broadcast medium. - */ -class HttpBroadcastFactory extends BroadcastFactory { - def initialize(isDriver: Boolean, conf: SparkConf, securityMgr: SecurityManager) { - HttpBroadcast.initialize(isDriver, conf, securityMgr) - } - - def newBroadcast[T](value_ : T, isLocal: Boolean, id: Long) = - new HttpBroadcast[T](value_, isLocal, id) - - def stop() { HttpBroadcast.stop() } -} - -private object HttpBroadcast extends Logging { +private[spark] object HttpBroadcast extends Logging { private var initialized = false - private var broadcastDir: File = null private var compress: Boolean = false private var bufferSize: Int = 65536 @@ -89,11 +111,9 @@ private object HttpBroadcast extends Logging { // TODO: This shouldn't be a global variable so that multiple SparkContexts can coexist private val files = new TimeStampedHashSet[String] - private var cleaner: MetadataCleaner = null - private val httpReadTimeout = TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES).toInt - private var compressionCodec: CompressionCodec = null + private var cleaner: MetadataCleaner = null def initialize(isDriver: Boolean, conf: SparkConf, securityMgr: SecurityManager) { synchronized { @@ -136,8 +156,10 @@ private object HttpBroadcast extends Logging { logInfo("Broadcast server started at " + serverUri) } + def getFile(id: Long) = new File(broadcastDir, BroadcastBlockId(id).name) + def write(id: Long, value: Any) { - val file = new File(broadcastDir, BroadcastBlockId(id).name) + val file = getFile(id) val out: OutputStream = { if (compress) { compressionCodec.compressedOutputStream(new FileOutputStream(file)) @@ -160,7 +182,7 @@ private object HttpBroadcast extends Logging { if (securityManager.isAuthenticationEnabled()) { logDebug("broadcast security enabled") val newuri = Utils.constructURIForAuthentication(new URI(url), securityManager) - uc = newuri.toURL().openConnection() + uc = newuri.toURL.openConnection() uc.setAllowUserInteraction(false) } else { logDebug("broadcast not using security") @@ -169,7 +191,7 @@ private object HttpBroadcast extends Logging { val in = { uc.setReadTimeout(httpReadTimeout) - val inputStream = uc.getInputStream(); + val inputStream = uc.getInputStream if (compress) { compressionCodec.compressedInputStream(inputStream) } else { @@ -183,20 +205,48 @@ private object HttpBroadcast extends Logging { obj } - def cleanup(cleanupTime: Long) { + /** + * Remove all persisted blocks associated with this HTTP broadcast on the executors. + * If removeFromDriver is true, also remove these persisted blocks on the driver + * and delete the associated broadcast file. + */ + def unpersist(id: Long, removeFromDriver: Boolean, blocking: Boolean) = synchronized { + SparkEnv.get.blockManager.master.removeBroadcast(id, removeFromDriver, blocking) + if (removeFromDriver) { + val file = getFile(id) + files.remove(file.toString) + deleteBroadcastFile(file) + } + } + + /** + * Periodically clean up old broadcasts by removing the associated map entries and + * deleting the associated files. + */ + private def cleanup(cleanupTime: Long) { val iterator = files.internalMap.entrySet().iterator() while(iterator.hasNext) { val entry = iterator.next() val (file, time) = (entry.getKey, entry.getValue) if (time < cleanupTime) { - try { - iterator.remove() - new File(file.toString).delete() - logInfo("Deleted broadcast file '" + file + "'") - } catch { - case e: Exception => logWarning("Could not delete broadcast file '" + file + "'", e) + iterator.remove() + deleteBroadcastFile(new File(file.toString)) + } + } + } + + private def deleteBroadcastFile(file: File) { + try { + if (file.exists) { + if (file.delete()) { + logInfo("Deleted broadcast file: %s".format(file)) + } else { + logWarning("Could not delete broadcast file: %s".format(file)) } } + } catch { + case e: Exception => + logError("Exception while deleting broadcast file: %s".format(file), e) } } } diff --git a/core/src/main/scala/org/apache/spark/broadcast/HttpBroadcastFactory.scala b/core/src/main/scala/org/apache/spark/broadcast/HttpBroadcastFactory.scala new file mode 100644 index 0000000000000..e3f6cdc6154dd --- /dev/null +++ b/core/src/main/scala/org/apache/spark/broadcast/HttpBroadcastFactory.scala @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.broadcast + +import org.apache.spark.{SecurityManager, SparkConf} + +/** + * A [[org.apache.spark.broadcast.BroadcastFactory]] implementation that uses a + * HTTP server as the broadcast mechanism. Refer to + * [[org.apache.spark.broadcast.HttpBroadcast]] for more details about this mechanism. + */ +class HttpBroadcastFactory extends BroadcastFactory { + def initialize(isDriver: Boolean, conf: SparkConf, securityMgr: SecurityManager) { + HttpBroadcast.initialize(isDriver, conf, securityMgr) + } + + def newBroadcast[T](value_ : T, isLocal: Boolean, id: Long) = + new HttpBroadcast[T](value_, isLocal, id) + + def stop() { HttpBroadcast.stop() } + + /** + * Remove all persisted state associated with the HTTP broadcast with the given ID. + * @param removeFromDriver Whether to remove state from the driver + * @param blocking Whether to block until unbroadcasted + */ + def unbroadcast(id: Long, removeFromDriver: Boolean, blocking: Boolean) { + HttpBroadcast.unpersist(id, removeFromDriver, blocking) + } +} diff --git a/core/src/main/scala/org/apache/spark/broadcast/TorrentBroadcast.scala b/core/src/main/scala/org/apache/spark/broadcast/TorrentBroadcast.scala index 3cd71213769b7..2b32546c6854d 100644 --- a/core/src/main/scala/org/apache/spark/broadcast/TorrentBroadcast.scala +++ b/core/src/main/scala/org/apache/spark/broadcast/TorrentBroadcast.scala @@ -17,24 +17,43 @@ package org.apache.spark.broadcast -import java.io._ +import java.io.{ByteArrayInputStream, ObjectInputStream, ObjectOutputStream} import scala.math import scala.util.Random -import org.apache.spark._ -import org.apache.spark.storage.{BroadcastBlockId, BroadcastHelperBlockId, StorageLevel} +import org.apache.spark.{Logging, SparkConf, SparkEnv, SparkException} +import org.apache.spark.storage.{BroadcastBlockId, StorageLevel} import org.apache.spark.util.Utils +/** + * A [[org.apache.spark.broadcast.Broadcast]] implementation that uses a BitTorrent-like + * protocol to do a distributed transfer of the broadcasted data to the executors. + * The mechanism is as follows. The driver divides the serializes the broadcasted data, + * divides it into smaller chunks, and stores them in the BlockManager of the driver. + * These chunks are reported to the BlockManagerMaster so that all the executors can + * learn the location of those chunks. The first time the broadcast variable (sent as + * part of task) is deserialized at a executor, all the chunks are fetched using + * the BlockManager. When all the chunks are fetched (initially from the driver's + * BlockManager), they are combined and deserialized to recreate the broadcasted data. + * However, the chunks are also stored in the BlockManager and reported to the + * BlockManagerMaster. As more executors fetch the chunks, BlockManagerMaster learns + * multiple locations for each chunk. Hence, subsequent fetches of each chunk will be + * made to other executors who already have those chunks, resulting in a distributed + * fetching. This prevents the driver from being the bottleneck in sending out multiple + * copies of the broadcast data (one per executor) as done by the + * [[org.apache.spark.broadcast.HttpBroadcast]]. + */ private[spark] class TorrentBroadcast[T](@transient var value_ : T, isLocal: Boolean, id: Long) -extends Broadcast[T](id) with Logging with Serializable { + extends Broadcast[T](id) with Logging with Serializable { - def value = value_ + def getValue = value_ - def broadcastId = BroadcastBlockId(id) + val broadcastId = BroadcastBlockId(id) TorrentBroadcast.synchronized { - SparkEnv.get.blockManager.putSingle(broadcastId, value_, StorageLevel.MEMORY_AND_DISK, false) + SparkEnv.get.blockManager.putSingle( + broadcastId, value_, StorageLevel.MEMORY_AND_DISK, tellMaster = false) } @transient var arrayOfBlocks: Array[TorrentBlock] = null @@ -46,32 +65,52 @@ extends Broadcast[T](id) with Logging with Serializable { sendBroadcast() } - def sendBroadcast() { - var tInfo = TorrentBroadcast.blockifyObject(value_) + /** + * Remove all persisted state associated with this Torrent broadcast on the executors. + */ + def doUnpersist(blocking: Boolean) { + TorrentBroadcast.unpersist(id, removeFromDriver = false, blocking) + } + + /** + * Remove all persisted state associated with this Torrent broadcast on the executors + * and driver. + */ + def doDestroy(blocking: Boolean) { + TorrentBroadcast.unpersist(id, removeFromDriver = true, blocking) + } + def sendBroadcast() { + val tInfo = TorrentBroadcast.blockifyObject(value_) totalBlocks = tInfo.totalBlocks totalBytes = tInfo.totalBytes hasBlocks = tInfo.totalBlocks // Store meta-info - val metaId = BroadcastHelperBlockId(broadcastId, "meta") + val metaId = BroadcastBlockId(id, "meta") val metaInfo = TorrentInfo(null, totalBlocks, totalBytes) TorrentBroadcast.synchronized { SparkEnv.get.blockManager.putSingle( - metaId, metaInfo, StorageLevel.MEMORY_AND_DISK, true) + metaId, metaInfo, StorageLevel.MEMORY_AND_DISK, tellMaster = true) } // Store individual pieces for (i <- 0 until totalBlocks) { - val pieceId = BroadcastHelperBlockId(broadcastId, "piece" + i) + val pieceId = BroadcastBlockId(id, "piece" + i) TorrentBroadcast.synchronized { SparkEnv.get.blockManager.putSingle( - pieceId, tInfo.arrayOfBlocks(i), StorageLevel.MEMORY_AND_DISK, true) + pieceId, tInfo.arrayOfBlocks(i), StorageLevel.MEMORY_AND_DISK, tellMaster = true) } } } - // Called by JVM when deserializing an object + /** Used by the JVM when serializing this object. */ + private def writeObject(out: ObjectOutputStream) { + assertValid() + out.defaultWriteObject() + } + + /** Used by the JVM when deserializing this object. */ private def readObject(in: ObjectInputStream) { in.defaultReadObject() TorrentBroadcast.synchronized { @@ -86,18 +125,22 @@ extends Broadcast[T](id) with Logging with Serializable { // Initialize @transient variables that will receive garbage values from the master. resetWorkerVariables() - if (receiveBroadcast(id)) { + if (receiveBroadcast()) { value_ = TorrentBroadcast.unBlockifyObject[T](arrayOfBlocks, totalBytes, totalBlocks) - // Store the merged copy in cache so that the next worker doesn't need to rebuild it. - // This creates a tradeoff between memory usage and latency. - // Storing copy doubles the memory footprint; not storing doubles deserialization cost. + /* Store the merged copy in cache so that the next worker doesn't need to rebuild it. + * This creates a trade-off between memory usage and latency. Storing copy doubles + * the memory footprint; not storing doubles deserialization cost. Also, + * this does not need to be reported to BlockManagerMaster since other executors + * does not need to access this block (they only need to fetch the chunks, + * which are reported). + */ SparkEnv.get.blockManager.putSingle( - broadcastId, value_, StorageLevel.MEMORY_AND_DISK, false) + broadcastId, value_, StorageLevel.MEMORY_AND_DISK, tellMaster = false) // Remove arrayOfBlocks from memory once value_ is on local cache resetWorkerVariables() - } else { + } else { logError("Reading broadcast variable " + id + " failed") } @@ -114,9 +157,10 @@ extends Broadcast[T](id) with Logging with Serializable { hasBlocks = 0 } - def receiveBroadcast(variableID: Long): Boolean = { - // Receive meta-info - val metaId = BroadcastHelperBlockId(broadcastId, "meta") + def receiveBroadcast(): Boolean = { + // Receive meta-info about the size of broadcast data, + // the number of chunks it is divided into, etc. + val metaId = BroadcastBlockId(id, "meta") var attemptId = 10 while (attemptId > 0 && totalBlocks == -1) { TorrentBroadcast.synchronized { @@ -138,17 +182,21 @@ extends Broadcast[T](id) with Logging with Serializable { return false } - // Receive actual blocks + /* + * Fetch actual chunks of data. Note that all these chunks are stored in + * the BlockManager and reported to the master, so that other executors + * can find out and pull the chunks from this executor. + */ val recvOrder = new Random().shuffle(Array.iterate(0, totalBlocks)(_ + 1).toList) for (pid <- recvOrder) { - val pieceId = BroadcastHelperBlockId(broadcastId, "piece" + pid) + val pieceId = BroadcastBlockId(id, "piece" + pid) TorrentBroadcast.synchronized { SparkEnv.get.blockManager.getSingle(pieceId) match { case Some(x) => arrayOfBlocks(pid) = x.asInstanceOf[TorrentBlock] hasBlocks += 1 SparkEnv.get.blockManager.putSingle( - pieceId, arrayOfBlocks(pid), StorageLevel.MEMORY_AND_DISK, true) + pieceId, arrayOfBlocks(pid), StorageLevel.MEMORY_AND_DISK, tellMaster = true) case None => throw new SparkException("Failed to get " + pieceId + " of " + broadcastId) @@ -156,18 +204,18 @@ extends Broadcast[T](id) with Logging with Serializable { } } - (hasBlocks == totalBlocks) + hasBlocks == totalBlocks } } -private object TorrentBroadcast -extends Logging { - +private[spark] object TorrentBroadcast extends Logging { + private lazy val BLOCK_SIZE = conf.getInt("spark.broadcast.blockSize", 4096) * 1024 private var initialized = false private var conf: SparkConf = null + def initialize(_isDriver: Boolean, conf: SparkConf) { - TorrentBroadcast.conf = conf //TODO: we might have to fix it in tests + TorrentBroadcast.conf = conf // TODO: we might have to fix it in tests synchronized { if (!initialized) { initialized = true @@ -179,39 +227,37 @@ extends Logging { initialized = false } - lazy val BLOCK_SIZE = conf.getInt("spark.broadcast.blockSize", 4096) * 1024 - def blockifyObject[T](obj: T): TorrentInfo = { val byteArray = Utils.serialize[T](obj) val bais = new ByteArrayInputStream(byteArray) - var blockNum = (byteArray.length / BLOCK_SIZE) + var blockNum = byteArray.length / BLOCK_SIZE if (byteArray.length % BLOCK_SIZE != 0) { blockNum += 1 } - var retVal = new Array[TorrentBlock](blockNum) - var blockID = 0 + val blocks = new Array[TorrentBlock](blockNum) + var blockId = 0 for (i <- 0 until (byteArray.length, BLOCK_SIZE)) { val thisBlockSize = math.min(BLOCK_SIZE, byteArray.length - i) - var tempByteArray = new Array[Byte](thisBlockSize) - val hasRead = bais.read(tempByteArray, 0, thisBlockSize) + val tempByteArray = new Array[Byte](thisBlockSize) + bais.read(tempByteArray, 0, thisBlockSize) - retVal(blockID) = new TorrentBlock(blockID, tempByteArray) - blockID += 1 + blocks(blockId) = new TorrentBlock(blockId, tempByteArray) + blockId += 1 } bais.close() - val tInfo = TorrentInfo(retVal, blockNum, byteArray.length) - tInfo.hasBlocks = blockNum - - tInfo + val info = TorrentInfo(blocks, blockNum, byteArray.length) + info.hasBlocks = blockNum + info } - def unBlockifyObject[T](arrayOfBlocks: Array[TorrentBlock], - totalBytes: Int, - totalBlocks: Int): T = { + def unBlockifyObject[T]( + arrayOfBlocks: Array[TorrentBlock], + totalBytes: Int, + totalBlocks: Int): T = { val retByteArray = new Array[Byte](totalBytes) for (i <- 0 until totalBlocks) { System.arraycopy(arrayOfBlocks(i).byteArray, 0, retByteArray, @@ -220,6 +266,13 @@ extends Logging { Utils.deserialize[T](retByteArray, Thread.currentThread.getContextClassLoader) } + /** + * Remove all persisted blocks associated with this torrent broadcast on the executors. + * If removeFromDriver is true, also remove these persisted blocks on the driver. + */ + def unpersist(id: Long, removeFromDriver: Boolean, blocking: Boolean) = synchronized { + SparkEnv.get.blockManager.master.removeBroadcast(id, removeFromDriver, blocking) + } } private[spark] case class TorrentBlock( @@ -228,25 +281,10 @@ private[spark] case class TorrentBlock( extends Serializable private[spark] case class TorrentInfo( - @transient arrayOfBlocks : Array[TorrentBlock], + @transient arrayOfBlocks: Array[TorrentBlock], totalBlocks: Int, totalBytes: Int) extends Serializable { @transient var hasBlocks = 0 } - -/** - * A [[BroadcastFactory]] that creates a torrent-based implementation of broadcast. - */ -class TorrentBroadcastFactory extends BroadcastFactory { - - def initialize(isDriver: Boolean, conf: SparkConf, securityMgr: SecurityManager) { - TorrentBroadcast.initialize(isDriver, conf) - } - - def newBroadcast[T](value_ : T, isLocal: Boolean, id: Long) = - new TorrentBroadcast[T](value_, isLocal, id) - - def stop() { TorrentBroadcast.stop() } -} diff --git a/core/src/main/scala/org/apache/spark/broadcast/TorrentBroadcastFactory.scala b/core/src/main/scala/org/apache/spark/broadcast/TorrentBroadcastFactory.scala new file mode 100644 index 0000000000000..d216b58718148 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/broadcast/TorrentBroadcastFactory.scala @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.broadcast + +import org.apache.spark.{SecurityManager, SparkConf} + +/** + * A [[org.apache.spark.broadcast.Broadcast]] implementation that uses a BitTorrent-like + * protocol to do a distributed transfer of the broadcasted data to the executors. Refer to + * [[org.apache.spark.broadcast.TorrentBroadcast]] for more details. + */ +class TorrentBroadcastFactory extends BroadcastFactory { + + def initialize(isDriver: Boolean, conf: SparkConf, securityMgr: SecurityManager) { + TorrentBroadcast.initialize(isDriver, conf) + } + + def newBroadcast[T](value_ : T, isLocal: Boolean, id: Long) = + new TorrentBroadcast[T](value_, isLocal, id) + + def stop() { TorrentBroadcast.stop() } + + /** + * Remove all persisted state associated with the torrent broadcast with the given ID. + * @param removeFromDriver Whether to remove state from the driver. + * @param blocking Whether to block until unbroadcasted + */ + def unbroadcast(id: Long, removeFromDriver: Boolean, blocking: Boolean) { + TorrentBroadcast.unpersist(id, removeFromDriver, blocking) + } +} diff --git a/core/src/main/scala/org/apache/spark/deploy/ApplicationDescription.scala b/core/src/main/scala/org/apache/spark/deploy/ApplicationDescription.scala index 449b953530ff9..86305d2ea8a09 100644 --- a/core/src/main/scala/org/apache/spark/deploy/ApplicationDescription.scala +++ b/core/src/main/scala/org/apache/spark/deploy/ApplicationDescription.scala @@ -23,7 +23,8 @@ private[spark] class ApplicationDescription( val memoryPerSlave: Int, val command: Command, val sparkHome: Option[String], - val appUiUrl: String) + var appUiUrl: String, + val eventLogDir: Option[String] = None) extends Serializable { val user = System.getProperty("user.name", "") diff --git a/core/src/main/scala/org/apache/spark/deploy/Client.scala b/core/src/main/scala/org/apache/spark/deploy/Client.scala index d9e3035e1ab59..8fd2c7e95b966 100644 --- a/core/src/main/scala/org/apache/spark/deploy/Client.scala +++ b/core/src/main/scala/org/apache/spark/deploy/Client.scala @@ -128,6 +128,9 @@ private class ClientActor(driverArgs: ClientArguments, conf: SparkConf) extends */ object Client { def main(args: Array[String]) { + println("WARNING: This client is deprecated and will be removed in a future version of Spark.") + println("Use ./bin/spark-submit with \"--master spark://host:port\"") + val conf = new SparkConf() val driverArgs = new ClientArguments(args) diff --git a/core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala b/core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala index 00f5cd54ad650..c07838f798799 100644 --- a/core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala +++ b/core/src/main/scala/org/apache/spark/deploy/ClientArguments.scala @@ -112,5 +112,5 @@ private[spark] class ClientArguments(args: Array[String]) { } object ClientArguments { - def isValidJarUrl(s: String) = s.matches("(.+):(.+)jar") + def isValidJarUrl(s: String): Boolean = s.matches("(.+):(.+)jar") } diff --git a/core/src/main/scala/org/apache/spark/deploy/DeployMessage.scala b/core/src/main/scala/org/apache/spark/deploy/DeployMessage.scala index 83ce14a0a806a..a7368f9f3dfbe 100644 --- a/core/src/main/scala/org/apache/spark/deploy/DeployMessage.scala +++ b/core/src/main/scala/org/apache/spark/deploy/DeployMessage.scala @@ -86,6 +86,10 @@ private[deploy] object DeployMessages { case class KillDriver(driverId: String) extends DeployMessage + // Worker internal + + case object WorkDirCleanup // Sent to Worker actor periodically for cleaning up app folders + // AppClient to Master case class RegisterApplication(appDescription: ApplicationDescription) diff --git a/core/src/main/scala/org/apache/spark/deploy/JsonProtocol.scala b/core/src/main/scala/org/apache/spark/deploy/JsonProtocol.scala index cefb1ff97e83c..c4f5e294a393e 100644 --- a/core/src/main/scala/org/apache/spark/deploy/JsonProtocol.scala +++ b/core/src/main/scala/org/apache/spark/deploy/JsonProtocol.scala @@ -43,7 +43,6 @@ private[spark] object JsonProtocol { ("starttime" -> obj.startTime) ~ ("id" -> obj.id) ~ ("name" -> obj.desc.name) ~ - ("appuiurl" -> obj.appUiUrl) ~ ("cores" -> obj.desc.maxCores) ~ ("user" -> obj.desc.user) ~ ("memoryperslave" -> obj.desc.memoryPerSlave) ~ diff --git a/core/src/main/scala/org/apache/spark/deploy/LocalSparkCluster.scala b/core/src/main/scala/org/apache/spark/deploy/LocalSparkCluster.scala index a73b459c3cea1..9a7a113c95715 100644 --- a/core/src/main/scala/org/apache/spark/deploy/LocalSparkCluster.scala +++ b/core/src/main/scala/org/apache/spark/deploy/LocalSparkCluster.scala @@ -66,9 +66,9 @@ class LocalSparkCluster(numWorkers: Int, coresPerWorker: Int, memoryPerWorker: I // TODO: In Akka 2.1.x, ActorSystem.awaitTermination hangs when you have remote actors! // This is unfortunate, but for now we just comment it out. workerActorSystems.foreach(_.shutdown()) - //workerActorSystems.foreach(_.awaitTermination()) + // workerActorSystems.foreach(_.awaitTermination()) masterActorSystems.foreach(_.shutdown()) - //masterActorSystems.foreach(_.awaitTermination()) + // masterActorSystems.foreach(_.awaitTermination()) masterActorSystems.clear() workerActorSystems.clear() } diff --git a/core/src/main/scala/org/apache/spark/deploy/SparkHadoopUtil.scala b/core/src/main/scala/org/apache/spark/deploy/SparkHadoopUtil.scala index d2d8d6d662d55..9bdbfb33bf54f 100644 --- a/core/src/main/scala/org/apache/spark/deploy/SparkHadoopUtil.scala +++ b/core/src/main/scala/org/apache/spark/deploy/SparkHadoopUtil.scala @@ -32,7 +32,7 @@ import scala.collection.JavaConversions._ * Contains util methods to interact with Hadoop from Spark. */ class SparkHadoopUtil { - val conf = newConfiguration() + val conf: Configuration = newConfiguration() UserGroupInformation.setConfiguration(conf) def runAsUser(user: String)(func: () => Unit) { diff --git a/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala b/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala new file mode 100644 index 0000000000000..e05fbfe321495 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala @@ -0,0 +1,234 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy + +import java.io.{PrintStream, File} +import java.net.URL + +import org.apache.spark.executor.ExecutorURLClassLoader + +import scala.collection.mutable.ArrayBuffer +import scala.collection.mutable.HashMap +import scala.collection.mutable.Map + +/** + * Scala code behind the spark-submit script. The script handles setting up the classpath with + * relevant Spark dependencies and provides a layer over the different cluster managers and deploy + * modes that Spark supports. + */ +object SparkSubmit { + private val YARN = 1 + private val STANDALONE = 2 + private val MESOS = 4 + private val LOCAL = 8 + private val ALL_CLUSTER_MGRS = YARN | STANDALONE | MESOS | LOCAL + + private var clusterManager: Int = LOCAL + + def main(args: Array[String]) { + val appArgs = new SparkSubmitArguments(args) + if (appArgs.verbose) { + printStream.println(appArgs) + } + val (childArgs, classpath, sysProps, mainClass) = createLaunchEnv(appArgs) + launch(childArgs, classpath, sysProps, mainClass, appArgs.verbose) + } + + // Exposed for testing + private[spark] var printStream: PrintStream = System.err + private[spark] var exitFn: () => Unit = () => System.exit(-1) + + private[spark] def printErrorAndExit(str: String) = { + printStream.println("error: " + str) + printStream.println("run with --help for more information or --verbose for debugging output") + exitFn() + } + private[spark] def printWarning(str: String) = printStream.println("warning: " + str) + + /** + * @return + * a tuple containing the arguments for the child, a list of classpath + * entries for the child, and the main class for the child + */ + private[spark] def createLaunchEnv(appArgs: SparkSubmitArguments): (ArrayBuffer[String], + ArrayBuffer[String], Map[String, String], String) = { + if (appArgs.master.startsWith("local")) { + clusterManager = LOCAL + } else if (appArgs.master.startsWith("yarn")) { + clusterManager = YARN + } else if (appArgs.master.startsWith("spark")) { + clusterManager = STANDALONE + } else if (appArgs.master.startsWith("mesos")) { + clusterManager = MESOS + } else { + printErrorAndExit("master must start with yarn, mesos, spark, or local") + } + + // Because "yarn-cluster" and "yarn-client" encapsulate both the master + // and deploy mode, we have some logic to infer the master and deploy mode + // from each other if only one is specified, or exit early if they are at odds. + if (appArgs.deployMode == null && + (appArgs.master == "yarn-standalone" || appArgs.master == "yarn-cluster")) { + appArgs.deployMode = "cluster" + } + if (appArgs.deployMode == "cluster" && appArgs.master == "yarn-client") { + printErrorAndExit("Deploy mode \"cluster\" and master \"yarn-client\" are not compatible") + } + if (appArgs.deployMode == "client" && + (appArgs.master == "yarn-standalone" || appArgs.master == "yarn-cluster")) { + printErrorAndExit("Deploy mode \"client\" and master \"" + appArgs.master + + "\" are not compatible") + } + if (appArgs.deployMode == "cluster" && appArgs.master.startsWith("yarn")) { + appArgs.master = "yarn-cluster" + } + if (appArgs.deployMode != "cluster" && appArgs.master.startsWith("yarn")) { + appArgs.master = "yarn-client" + } + + val deployOnCluster = Option(appArgs.deployMode).getOrElse("client") == "cluster" + + val childClasspath = new ArrayBuffer[String]() + val childArgs = new ArrayBuffer[String]() + val sysProps = new HashMap[String, String]() + var childMainClass = "" + + if (clusterManager == MESOS && deployOnCluster) { + printErrorAndExit("Mesos does not support running the driver on the cluster") + } + + if (!deployOnCluster) { + childMainClass = appArgs.mainClass + childClasspath += appArgs.primaryResource + } else if (clusterManager == YARN) { + childMainClass = "org.apache.spark.deploy.yarn.Client" + childArgs += ("--jar", appArgs.primaryResource) + childArgs += ("--class", appArgs.mainClass) + } + + val options = List[OptionAssigner]( + new OptionAssigner(appArgs.master, ALL_CLUSTER_MGRS, false, sysProp = "spark.master"), + new OptionAssigner(appArgs.driverMemory, YARN, true, clOption = "--driver-memory"), + new OptionAssigner(appArgs.name, YARN, true, clOption = "--name"), + new OptionAssigner(appArgs.queue, YARN, true, clOption = "--queue"), + new OptionAssigner(appArgs.queue, YARN, false, sysProp = "spark.yarn.queue"), + new OptionAssigner(appArgs.numExecutors, YARN, true, clOption = "--num-executors"), + new OptionAssigner(appArgs.numExecutors, YARN, false, sysProp = "spark.executor.instances"), + new OptionAssigner(appArgs.executorMemory, YARN, true, clOption = "--executor-memory"), + new OptionAssigner(appArgs.executorMemory, STANDALONE | MESOS | YARN, false, + sysProp = "spark.executor.memory"), + new OptionAssigner(appArgs.driverMemory, STANDALONE, true, clOption = "--memory"), + new OptionAssigner(appArgs.driverCores, STANDALONE, true, clOption = "--cores"), + new OptionAssigner(appArgs.executorCores, YARN, true, clOption = "--executor-cores"), + new OptionAssigner(appArgs.executorCores, YARN, false, sysProp = "spark.executor.cores"), + new OptionAssigner(appArgs.totalExecutorCores, STANDALONE | MESOS, false, + sysProp = "spark.cores.max"), + new OptionAssigner(appArgs.files, YARN, false, sysProp = "spark.yarn.dist.files"), + new OptionAssigner(appArgs.files, YARN, true, clOption = "--files"), + new OptionAssigner(appArgs.archives, YARN, false, sysProp = "spark.yarn.dist.archives"), + new OptionAssigner(appArgs.archives, YARN, true, clOption = "--archives"), + new OptionAssigner(appArgs.jars, YARN, true, clOption = "--addJars") + ) + + // more jars + if (appArgs.jars != null && !deployOnCluster) { + for (jar <- appArgs.jars.split(",")) { + childClasspath += jar + } + } + + for (opt <- options) { + if (opt.value != null && deployOnCluster == opt.deployOnCluster && + (clusterManager & opt.clusterManager) != 0) { + if (opt.clOption != null) { + childArgs += (opt.clOption, opt.value) + } else if (opt.sysProp != null) { + sysProps.put(opt.sysProp, opt.value) + } + } + } + + if (deployOnCluster && clusterManager == STANDALONE) { + if (appArgs.supervise) { + childArgs += "--supervise" + } + + childMainClass = "org.apache.spark.deploy.Client" + childArgs += "launch" + childArgs += (appArgs.master, appArgs.primaryResource, appArgs.mainClass) + } + + // args + if (appArgs.childArgs != null) { + if (!deployOnCluster || clusterManager == STANDALONE) { + childArgs ++= appArgs.childArgs + } else if (clusterManager == YARN) { + for (arg <- appArgs.childArgs) { + childArgs += ("--args", arg) + } + } + } + + (childArgs, childClasspath, sysProps, childMainClass) + } + + private def launch(childArgs: ArrayBuffer[String], childClasspath: ArrayBuffer[String], + sysProps: Map[String, String], childMainClass: String, verbose: Boolean = false) { + + if (verbose) { + System.err.println(s"Main class:\n$childMainClass") + System.err.println(s"Arguments:\n${childArgs.mkString("\n")}") + System.err.println(s"System properties:\n${sysProps.mkString("\n")}") + System.err.println(s"Classpath elements:\n${childClasspath.mkString("\n")}") + System.err.println("\n") + } + + val loader = new ExecutorURLClassLoader(new Array[URL](0), + Thread.currentThread.getContextClassLoader) + Thread.currentThread.setContextClassLoader(loader) + + for (jar <- childClasspath) { + addJarToClasspath(jar, loader) + } + + for ((key, value) <- sysProps) { + System.setProperty(key, value) + } + + val mainClass = Class.forName(childMainClass, true, loader) + val mainMethod = mainClass.getMethod("main", new Array[String](0).getClass) + mainMethod.invoke(null, childArgs.toArray) + } + + private def addJarToClasspath(localJar: String, loader: ExecutorURLClassLoader) { + val localJarFile = new File(localJar) + if (!localJarFile.exists()) { + printWarning(s"Jar $localJar does not exist, skipping.") + } + + val url = localJarFile.getAbsoluteFile.toURI.toURL + loader.addURL(url) + } +} + +private[spark] class OptionAssigner(val value: String, + val clusterManager: Int, + val deployOnCluster: Boolean, + val clOption: String = null, + val sysProp: String = null +) { } diff --git a/core/src/main/scala/org/apache/spark/deploy/SparkSubmitArguments.scala b/core/src/main/scala/org/apache/spark/deploy/SparkSubmitArguments.scala new file mode 100644 index 0000000000000..834b3df2f164b --- /dev/null +++ b/core/src/main/scala/org/apache/spark/deploy/SparkSubmitArguments.scala @@ -0,0 +1,206 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy + +import scala.collection.mutable.ArrayBuffer + +/** + * Parses and encapsulates arguments from the spark-submit script. + */ +private[spark] class SparkSubmitArguments(args: Array[String]) { + var master: String = "local" + var deployMode: String = null + var executorMemory: String = null + var executorCores: String = null + var totalExecutorCores: String = null + var driverMemory: String = null + var driverCores: String = null + var supervise: Boolean = false + var queue: String = null + var numExecutors: String = null + var files: String = null + var archives: String = null + var mainClass: String = null + var primaryResource: String = null + var name: String = null + var childArgs: ArrayBuffer[String] = new ArrayBuffer[String]() + var jars: String = null + var verbose: Boolean = false + + loadEnvVars() + parseOpts(args.toList) + + // Sanity checks + if (args.length == 0) printUsageAndExit(-1) + if (primaryResource == null) SparkSubmit.printErrorAndExit("Must specify a primary resource") + if (mainClass == null) SparkSubmit.printErrorAndExit("Must specify a main class with --class") + + override def toString = { + s"""Parsed arguments: + | master $master + | deployMode $deployMode + | executorMemory $executorMemory + | executorCores $executorCores + | totalExecutorCores $totalExecutorCores + | driverMemory $driverMemory + | drivercores $driverCores + | supervise $supervise + | queue $queue + | numExecutors $numExecutors + | files $files + | archives $archives + | mainClass $mainClass + | primaryResource $primaryResource + | name $name + | childArgs [${childArgs.mkString(" ")}] + | jars $jars + | verbose $verbose + """.stripMargin + } + + private def loadEnvVars() { + Option(System.getenv("MASTER")).map(master = _) + Option(System.getenv("DEPLOY_MODE")).map(deployMode = _) + } + + private def parseOpts(opts: List[String]): Unit = opts match { + case ("--name") :: value :: tail => + name = value + parseOpts(tail) + + case ("--master") :: value :: tail => + master = value + parseOpts(tail) + + case ("--class") :: value :: tail => + mainClass = value + parseOpts(tail) + + case ("--deploy-mode") :: value :: tail => + if (value != "client" && value != "cluster") { + SparkSubmit.printErrorAndExit("--deploy-mode must be either \"client\" or \"cluster\"") + } + deployMode = value + parseOpts(tail) + + case ("--num-executors") :: value :: tail => + numExecutors = value + parseOpts(tail) + + case ("--total-executor-cores") :: value :: tail => + totalExecutorCores = value + parseOpts(tail) + + case ("--executor-cores") :: value :: tail => + executorCores = value + parseOpts(tail) + + case ("--executor-memory") :: value :: tail => + executorMemory = value + parseOpts(tail) + + case ("--driver-memory") :: value :: tail => + driverMemory = value + parseOpts(tail) + + case ("--driver-cores") :: value :: tail => + driverCores = value + parseOpts(tail) + + case ("--supervise") :: tail => + supervise = true + parseOpts(tail) + + case ("--queue") :: value :: tail => + queue = value + parseOpts(tail) + + case ("--files") :: value :: tail => + files = value + parseOpts(tail) + + case ("--archives") :: value :: tail => + archives = value + parseOpts(tail) + + case ("--arg") :: value :: tail => + childArgs += value + parseOpts(tail) + + case ("--jars") :: value :: tail => + jars = value + parseOpts(tail) + + case ("--help" | "-h") :: tail => + printUsageAndExit(0) + + case ("--verbose" | "-v") :: tail => + verbose = true + parseOpts(tail) + + case value :: tail => + if (primaryResource != null) { + val error = s"Found two conflicting resources, $value and $primaryResource." + + " Expecting only one resource." + SparkSubmit.printErrorAndExit(error) + } + primaryResource = value + parseOpts(tail) + + case Nil => + } + + private def printUsageAndExit(exitCode: Int, unknownParam: Any = null) { + val outStream = SparkSubmit.printStream + if (unknownParam != null) { + outStream.println("Unknown/unsupported param " + unknownParam) + } + outStream.println( + """Usage: spark-submit [options] + |Options: + | --master MASTER_URL spark://host:port, mesos://host:port, yarn, or local. + | --deploy-mode DEPLOY_MODE Mode to deploy the app in, either 'client' or 'cluster'. + | --class CLASS_NAME Name of your app's main class (required for Java apps). + | --arg ARG Argument to be passed to your application's main class. This + | option can be specified multiple times for multiple args. + | --driver-memory MEM Memory for driver (e.g. 1000M, 2G) (Default: 512M). + | --name NAME The name of your application (Default: 'Spark'). + | --jars JARS A comma-separated list of local jars to include on the + | driver classpath and that SparkContext.addJar will work + | with. Doesn't work on standalone with 'cluster' deploy mode. + | + | Spark standalone with cluster deploy mode only: + | --driver-cores NUM Cores for driver (Default: 1). + | --supervise If given, restarts the driver on failure. + | + | Spark standalone and Mesos only: + | --total-executor-cores NUM Total cores for all executors. + | + | YARN-only: + | --executor-cores NUM Number of cores per executor (Default: 1). + | --executor-memory MEM Memory per executor (e.g. 1000M, 2G) (Default: 1G). + | --queue QUEUE_NAME The YARN queue to submit to (Default: 'default'). + | --num-executors NUM Number of executors to (Default: 2). + | --files FILES Comma separated list of files to be placed in the working dir + | of each executor. + | --archives ARCHIVES Comma separated list of archives to be extracted into the + | working dir of each executor.""".stripMargin + ) + SparkSubmit.exitFn() + } +} diff --git a/core/src/main/scala/org/apache/spark/deploy/WebUI.scala b/core/src/main/scala/org/apache/spark/deploy/WebUI.scala deleted file mode 100644 index ae258b58b9cc5..0000000000000 --- a/core/src/main/scala/org/apache/spark/deploy/WebUI.scala +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.deploy - -import java.text.SimpleDateFormat -import java.util.Date - -/** - * Utilities used throughout the web UI. - */ -private[spark] object DeployWebUI { - val DATE_FORMAT = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") - - def formatDate(date: Date): String = DATE_FORMAT.format(date) - - def formatDate(timestamp: Long): String = DATE_FORMAT.format(new Date(timestamp)) - - def formatDuration(milliseconds: Long): String = { - val seconds = milliseconds.toDouble / 1000 - if (seconds < 60) { - return "%.0f s".format(seconds) - } - val minutes = seconds / 60 - if (minutes < 10) { - return "%.1f min".format(minutes) - } else if (minutes < 60) { - return "%.0f min".format(minutes) - } - val hours = minutes / 60 - return "%.1f h".format(hours) - } -} diff --git a/core/src/main/scala/org/apache/spark/deploy/history/HistoryPage.scala b/core/src/main/scala/org/apache/spark/deploy/history/HistoryPage.scala new file mode 100644 index 0000000000000..7f7372746f92e --- /dev/null +++ b/core/src/main/scala/org/apache/spark/deploy/history/HistoryPage.scala @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.history + +import javax.servlet.http.HttpServletRequest + +import scala.xml.Node + +import org.apache.spark.ui.{WebUIPage, UIUtils} + +private[spark] class IndexPage(parent: HistoryServer) extends WebUIPage("") { + + def render(request: HttpServletRequest): Seq[Node] = { + val appRows = parent.appIdToInfo.values.toSeq.sortBy { app => -app.lastUpdated } + val appTable = UIUtils.listingTable(appHeader, appRow, appRows) + val content = +

+
+
    +
  • Event Log Location: {parent.baseLogDir}
  • +
+ { + if (parent.appIdToInfo.size > 0) { +

+ Showing {parent.appIdToInfo.size}/{parent.getNumApplications} + Completed Application{if (parent.getNumApplications > 1) "s" else ""} +

++ + appTable + } else { +

No Completed Applications Found

+ } + } +
+
+ UIUtils.basicSparkPage(content, "History Server") + } + + private val appHeader = Seq( + "App Name", + "Started", + "Completed", + "Duration", + "Spark User", + "Log Directory", + "Last Updated") + + private def appRow(info: ApplicationHistoryInfo): Seq[Node] = { + val appName = if (info.started) info.name else info.logDirPath.getName + val uiAddress = parent.getAddress + info.ui.basePath + val startTime = if (info.started) UIUtils.formatDate(info.startTime) else "Not started" + val endTime = if (info.completed) UIUtils.formatDate(info.endTime) else "Not completed" + val difference = if (info.started && info.completed) info.endTime - info.startTime else -1L + val duration = if (difference > 0) UIUtils.formatDuration(difference) else "---" + val sparkUser = if (info.started) info.sparkUser else "Unknown user" + val logDirectory = info.logDirPath.getName + val lastUpdated = UIUtils.formatDate(info.lastUpdated) + + {appName} + {startTime} + {endTime} + {duration} + {sparkUser} + {logDirectory} + {lastUpdated} + + } +} diff --git a/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala b/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala new file mode 100644 index 0000000000000..f495edcf1c6af --- /dev/null +++ b/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala @@ -0,0 +1,278 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.history + +import scala.collection.mutable + +import org.apache.hadoop.fs.{FileStatus, Path} + +import org.apache.spark.{Logging, SecurityManager, SparkConf} +import org.apache.spark.scheduler._ +import org.apache.spark.ui.{WebUI, SparkUI} +import org.apache.spark.ui.JettyUtils._ +import org.apache.spark.util.Utils + +/** + * A web server that renders SparkUIs of completed applications. + * + * For the standalone mode, MasterWebUI already achieves this functionality. Thus, the + * main use case of the HistoryServer is in other deploy modes (e.g. Yarn or Mesos). + * + * The logging directory structure is as follows: Within the given base directory, each + * application's event logs are maintained in the application's own sub-directory. This + * is the same structure as maintained in the event log write code path in + * EventLoggingListener. + * + * @param baseLogDir The base directory in which event logs are found + */ +class HistoryServer( + val baseLogDir: String, + securityManager: SecurityManager, + conf: SparkConf) + extends WebUI(securityManager, HistoryServer.WEB_UI_PORT, conf) with Logging { + + import HistoryServer._ + + private val fileSystem = Utils.getHadoopFileSystem(baseLogDir) + private val localHost = Utils.localHostName() + private val publicHost = Option(System.getenv("SPARK_PUBLIC_DNS")).getOrElse(localHost) + + // A timestamp of when the disk was last accessed to check for log updates + private var lastLogCheckTime = -1L + + // Number of completed applications found in this directory + private var numCompletedApplications = 0 + + @volatile private var stopped = false + + /** + * A background thread that periodically checks for event log updates on disk. + * + * If a log check is invoked manually in the middle of a period, this thread re-adjusts the + * time at which it performs the next log check to maintain the same period as before. + * + * TODO: Add a mechanism to update manually. + */ + private val logCheckingThread = new Thread { + override def run() { + while (!stopped) { + val now = System.currentTimeMillis + if (now - lastLogCheckTime > UPDATE_INTERVAL_MS) { + checkForLogs() + Thread.sleep(UPDATE_INTERVAL_MS) + } else { + // If the user has manually checked for logs recently, wait until + // UPDATE_INTERVAL_MS after the last check time + Thread.sleep(lastLogCheckTime + UPDATE_INTERVAL_MS - now) + } + } + } + } + + // A mapping of application ID to its history information, which includes the rendered UI + val appIdToInfo = mutable.HashMap[String, ApplicationHistoryInfo]() + + initialize() + + /** + * Initialize the history server. + * + * This starts a background thread that periodically synchronizes information displayed on + * this UI with the event logs in the provided base directory. + */ + def initialize() { + attachPage(new IndexPage(this)) + attachHandler(createStaticHandler(STATIC_RESOURCE_DIR, "/static")) + logCheckingThread.start() + } + + /** + * Check for any updates to event logs in the base directory. This is only effective once + * the server has been bound. + * + * If a new completed application is found, the server renders the associated SparkUI + * from the application's event logs, attaches this UI to itself, and stores metadata + * information for this application. + * + * If the logs for an existing completed application are no longer found, the server + * removes all associated information and detaches the SparkUI. + */ + def checkForLogs() = synchronized { + if (serverInfo.isDefined) { + lastLogCheckTime = System.currentTimeMillis + logDebug("Checking for logs. Time is now %d.".format(lastLogCheckTime)) + try { + val logStatus = fileSystem.listStatus(new Path(baseLogDir)) + val logDirs = if (logStatus != null) logStatus.filter(_.isDir).toSeq else Seq[FileStatus]() + val logInfos = logDirs + .sortBy { dir => getModificationTime(dir) } + .map { dir => (dir, EventLoggingListener.parseLoggingInfo(dir.getPath, fileSystem)) } + .filter { case (dir, info) => info.applicationComplete } + + // Logging information for applications that should be retained + val retainedLogInfos = logInfos.takeRight(RETAINED_APPLICATIONS) + val retainedAppIds = retainedLogInfos.map { case (dir, _) => dir.getPath.getName } + + // Remove any applications that should no longer be retained + appIdToInfo.foreach { case (appId, info) => + if (!retainedAppIds.contains(appId)) { + detachSparkUI(info.ui) + appIdToInfo.remove(appId) + } + } + + // Render the application's UI if it is not already there + retainedLogInfos.foreach { case (dir, info) => + val appId = dir.getPath.getName + if (!appIdToInfo.contains(appId)) { + renderSparkUI(dir, info) + } + } + + // Track the total number of completed applications observed this round + numCompletedApplications = logInfos.size + + } catch { + case t: Throwable => logError("Exception in checking for event log updates", t) + } + } else { + logWarning("Attempted to check for event log updates before binding the server.") + } + } + + /** + * Render a new SparkUI from the event logs if the associated application is completed. + * + * HistoryServer looks for a special file that indicates application completion in the given + * directory. If this file exists, the associated application is regarded to be completed, in + * which case the server proceeds to render the SparkUI. Otherwise, the server does nothing. + */ + private def renderSparkUI(logDir: FileStatus, logInfo: EventLoggingInfo) { + val path = logDir.getPath + val appId = path.getName + val replayBus = new ReplayListenerBus(logInfo.logPaths, fileSystem, logInfo.compressionCodec) + val appListener = new ApplicationEventListener + replayBus.addListener(appListener) + val ui = new SparkUI(conf, replayBus, appId, "/history/" + appId) + + // Do not call ui.bind() to avoid creating a new server for each application + replayBus.replay() + if (appListener.applicationStarted) { + attachSparkUI(ui) + val appName = appListener.appName + val sparkUser = appListener.sparkUser + val startTime = appListener.startTime + val endTime = appListener.endTime + val lastUpdated = getModificationTime(logDir) + ui.setAppName(appName + " (completed)") + appIdToInfo(appId) = ApplicationHistoryInfo(appId, appName, startTime, endTime, + lastUpdated, sparkUser, path, ui) + } + } + + /** Stop the server and close the file system. */ + override def stop() { + super.stop() + stopped = true + fileSystem.close() + } + + /** Attach a reconstructed UI to this server. Only valid after bind(). */ + private def attachSparkUI(ui: SparkUI) { + assert(serverInfo.isDefined, "HistoryServer must be bound before attaching SparkUIs") + ui.getHandlers.foreach(attachHandler) + } + + /** Detach a reconstructed UI from this server. Only valid after bind(). */ + private def detachSparkUI(ui: SparkUI) { + assert(serverInfo.isDefined, "HistoryServer must be bound before detaching SparkUIs") + ui.getHandlers.foreach(detachHandler) + } + + /** Return the address of this server. */ + def getAddress: String = "http://" + publicHost + ":" + boundPort + + /** Return the number of completed applications found, whether or not the UI is rendered. */ + def getNumApplications: Int = numCompletedApplications + + /** Return when this directory was last modified. */ + private def getModificationTime(dir: FileStatus): Long = { + try { + val logFiles = fileSystem.listStatus(dir.getPath) + if (logFiles != null && !logFiles.isEmpty) { + logFiles.map(_.getModificationTime).max + } else { + dir.getModificationTime + } + } catch { + case t: Throwable => + logError("Exception in accessing modification time of %s".format(dir.getPath), t) + -1L + } + } +} + +/** + * The recommended way of starting and stopping a HistoryServer is through the scripts + * start-history-server.sh and stop-history-server.sh. The path to a base log directory + * is must be specified, while the requested UI port is optional. For example: + * + * ./sbin/spark-history-server.sh /tmp/spark-events + * ./sbin/spark-history-server.sh hdfs://1.2.3.4:9000/spark-events + * + * This launches the HistoryServer as a Spark daemon. + */ +object HistoryServer { + private val conf = new SparkConf + + // Interval between each check for event log updates + val UPDATE_INTERVAL_MS = conf.getInt("spark.history.updateInterval", 10) * 1000 + + // How many applications to retain + val RETAINED_APPLICATIONS = conf.getInt("spark.history.retainedApplications", 250) + + // The port to which the web UI is bound + val WEB_UI_PORT = conf.getInt("spark.history.ui.port", 18080) + + val STATIC_RESOURCE_DIR = SparkUI.STATIC_RESOURCE_DIR + + def main(argStrings: Array[String]) { + val args = new HistoryServerArguments(argStrings) + val securityManager = new SecurityManager(conf) + val server = new HistoryServer(args.logDir, securityManager, conf) + server.bind() + + // Wait until the end of the world... or if the HistoryServer process is manually stopped + while(true) { Thread.sleep(Int.MaxValue) } + server.stop() + } +} + + +private[spark] case class ApplicationHistoryInfo( + id: String, + name: String, + startTime: Long, + endTime: Long, + lastUpdated: Long, + sparkUser: String, + logDirPath: Path, + ui: SparkUI) { + def started = startTime != -1 + def completed = endTime != -1 +} diff --git a/core/src/main/scala/org/apache/spark/deploy/history/HistoryServerArguments.scala b/core/src/main/scala/org/apache/spark/deploy/history/HistoryServerArguments.scala new file mode 100644 index 0000000000000..943c061743dbd --- /dev/null +++ b/core/src/main/scala/org/apache/spark/deploy/history/HistoryServerArguments.scala @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.history + +import java.net.URI + +import org.apache.hadoop.fs.Path + +import org.apache.spark.util.Utils + +/** + * Command-line parser for the master. + */ +private[spark] class HistoryServerArguments(args: Array[String]) { + var logDir = "" + + parse(args.toList) + + private def parse(args: List[String]): Unit = { + args match { + case ("--dir" | "-d") :: value :: tail => + logDir = value + parse(tail) + + case ("--help" | "-h") :: tail => + printUsageAndExit(0) + + case Nil => + + case _ => + printUsageAndExit(1) + } + validateLogDir() + } + + private def validateLogDir() { + if (logDir == "") { + System.err.println("Logging directory must be specified.") + printUsageAndExit(1) + } + val fileSystem = Utils.getHadoopFileSystem(new URI(logDir)) + val path = new Path(logDir) + if (!fileSystem.exists(path)) { + System.err.println("Logging directory specified does not exist: %s".format(logDir)) + printUsageAndExit(1) + } + if (!fileSystem.getFileStatus(path).isDir) { + System.err.println("Logging directory specified is not a directory: %s".format(logDir)) + printUsageAndExit(1) + } + } + + private def printUsageAndExit(exitCode: Int) { + System.err.println( + "Usage: HistoryServer [options]\n" + + "\n" + + "Options:\n" + + " -d DIR, --dir DIR Location of event log files") + System.exit(exitCode) + } +} diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ApplicationInfo.scala b/core/src/main/scala/org/apache/spark/deploy/master/ApplicationInfo.scala index e8867bc1691d3..46b9f4dc7d3ba 100644 --- a/core/src/main/scala/org/apache/spark/deploy/master/ApplicationInfo.scala +++ b/core/src/main/scala/org/apache/spark/deploy/master/ApplicationInfo.scala @@ -31,7 +31,6 @@ private[spark] class ApplicationInfo( val desc: ApplicationDescription, val submitDate: Date, val driver: ActorRef, - val appUiUrl: String, defaultCores: Int) extends Serializable { @@ -45,11 +44,6 @@ private[spark] class ApplicationInfo( init() - private def readObject(in: java.io.ObjectInputStream) : Unit = { - in.defaultReadObject() - init() - } - private def init() { state = ApplicationState.WAITING executors = new mutable.HashMap[Int, ExecutorInfo] diff --git a/core/src/main/scala/org/apache/spark/deploy/master/LeaderElectionAgent.scala b/core/src/main/scala/org/apache/spark/deploy/master/LeaderElectionAgent.scala index a730fe1f599af..4433a2ec29be6 100644 --- a/core/src/main/scala/org/apache/spark/deploy/master/LeaderElectionAgent.scala +++ b/core/src/main/scala/org/apache/spark/deploy/master/LeaderElectionAgent.scala @@ -30,7 +30,7 @@ import org.apache.spark.deploy.master.MasterMessages.ElectedLeader * [[org.apache.spark.deploy.master.MasterMessages.RevokedLeadership RevokedLeadership]] */ private[spark] trait LeaderElectionAgent extends Actor { - //TODO: LeaderElectionAgent does not necessary to be an Actor anymore, need refactoring. + // TODO: LeaderElectionAgent does not necessary to be an Actor anymore, need refactoring. val masterActor: ActorRef } diff --git a/core/src/main/scala/org/apache/spark/deploy/master/Master.scala b/core/src/main/scala/org/apache/spark/deploy/master/Master.scala index b8dfa44102583..6c58e741df001 100644 --- a/core/src/main/scala/org/apache/spark/deploy/master/Master.scala +++ b/core/src/main/scala/org/apache/spark/deploy/master/Master.scala @@ -29,6 +29,7 @@ import akka.actor._ import akka.pattern.ask import akka.remote.{DisassociatedEvent, RemotingLifecycleEvent} import akka.serialization.SerializationExtension +import org.apache.hadoop.fs.FileSystem import org.apache.spark.{Logging, SecurityManager, SparkConf, SparkException} import org.apache.spark.deploy.{ApplicationDescription, DriverDescription, ExecutorState} @@ -37,15 +38,22 @@ import org.apache.spark.deploy.master.DriverState.DriverState import org.apache.spark.deploy.master.MasterMessages._ import org.apache.spark.deploy.master.ui.MasterWebUI import org.apache.spark.metrics.MetricsSystem +import org.apache.spark.scheduler.{EventLoggingListener, ReplayListenerBus} +import org.apache.spark.ui.SparkUI import org.apache.spark.util.{AkkaUtils, Utils} -private[spark] class Master(host: String, port: Int, webUiPort: Int, - val securityMgr: SecurityManager) extends Actor with Logging { +private[spark] class Master( + host: String, + port: Int, + webUiPort: Int, + val securityMgr: SecurityManager) + extends Actor with Logging { + import context.dispatcher // to use Akka's scheduler.schedule() val conf = new SparkConf - val DATE_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss") // For application IDs + def createDateFormat = new SimpleDateFormat("yyyyMMddHHmmss") // For application IDs val WORKER_TIMEOUT = conf.getLong("spark.worker.timeout", 60) * 1000 val RETAINED_APPLICATIONS = conf.getInt("spark.deploy.retainedApplications", 200) val REAPER_ITERATIONS = conf.getInt("spark.dead.worker.persistence", 15) @@ -64,6 +72,9 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int, val completedApps = new ArrayBuffer[ApplicationInfo] var nextAppNumber = 0 + val appIdToUI = new HashMap[String, SparkUI] + val fileSystemsUsed = new HashSet[FileSystem] + val drivers = new HashSet[DriverInfo] val completedDrivers = new ArrayBuffer[DriverInfo] val waitingDrivers = new ArrayBuffer[DriverInfo] // Drivers currently spooled for scheduling @@ -107,8 +118,8 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int, logInfo("Starting Spark master at " + masterUrl) // Listen for remote client disconnection events, since they don't go through Akka's watch() context.system.eventStream.subscribe(self, classOf[RemotingLifecycleEvent]) - webUi.start() - masterWebUiUrl = "http://" + masterPublicAddress + ":" + webUi.boundPort.get + webUi.bind() + masterWebUiUrl = "http://" + masterPublicAddress + ":" + webUi.boundPort context.system.scheduler.schedule(0 millis, WORKER_TIMEOUT millis, self, CheckForWorkerTimeOut) masterMetricsSystem.registerSource(masterSource) @@ -141,6 +152,7 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int, override def postStop() { webUi.stop() + fileSystemsUsed.foreach(_.close()) masterMetricsSystem.stop() applicationMetricsSystem.stop() persistenceEngine.close() @@ -373,7 +385,7 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int, } case RequestWebUIPort => { - sender ! WebUIPortResponse(webUi.boundPort.getOrElse(-1)) + sender ! WebUIPortResponse(webUi.boundPort) } } @@ -581,8 +593,7 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int, def createApplication(desc: ApplicationDescription, driver: ActorRef): ApplicationInfo = { val now = System.currentTimeMillis() val date = new Date(now) - new ApplicationInfo( - now, newApplicationId(date), desc, date, driver, desc.appUiUrl, defaultCores) + new ApplicationInfo(now, newApplicationId(date), desc, date, driver, defaultCores) } def registerApplication(app: ApplicationInfo): Unit = { @@ -614,12 +625,20 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int, if (completedApps.size >= RETAINED_APPLICATIONS) { val toRemove = math.max(RETAINED_APPLICATIONS / 10, 1) completedApps.take(toRemove).foreach( a => { + appIdToUI.remove(a.id).foreach { ui => webUi.detachSparkUI(ui) } applicationMetricsSystem.removeSource(a.appSource) }) completedApps.trimStart(toRemove) } completedApps += app // Remember it in our history waitingApps -= app + + // If application events are logged, use them to rebuild the UI + if (!rebuildSparkUI(app)) { + // Avoid broken links if the UI is not reconstructed + app.desc.appUiUrl = "" + } + for (exec <- app.executors.values) { exec.worker.removeExecutor(exec) exec.worker.actor ! KillExecutor(masterUrl, exec.application.id, exec.id) @@ -634,9 +653,40 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int, } } + /** + * Rebuild a new SparkUI from the given application's event logs. + * Return whether this is successful. + */ + def rebuildSparkUI(app: ApplicationInfo): Boolean = { + val appName = app.desc.name + val eventLogDir = app.desc.eventLogDir.getOrElse { return false } + val fileSystem = Utils.getHadoopFileSystem(eventLogDir) + val eventLogInfo = EventLoggingListener.parseLoggingInfo(eventLogDir, fileSystem) + val eventLogPaths = eventLogInfo.logPaths + val compressionCodec = eventLogInfo.compressionCodec + if (!eventLogPaths.isEmpty) { + try { + val replayBus = new ReplayListenerBus(eventLogPaths, fileSystem, compressionCodec) + val ui = new SparkUI( + new SparkConf, replayBus, appName + " (completed)", "/history/" + app.id) + replayBus.replay() + app.desc.appUiUrl = ui.basePath + appIdToUI(app.id) = ui + webUi.attachSparkUI(ui) + return true + } catch { + case t: Throwable => + logError("Exception in replaying log for application %s (%s)".format(appName, app.id), t) + } + } else { + logWarning("Application %s (%s) has no valid logs: %s".format(appName, app.id, eventLogDir)) + } + false + } + /** Generate a new app ID given a app's submission date */ def newApplicationId(submitDate: Date): String = { - val appId = "app-%s-%04d".format(DATE_FORMAT.format(submitDate), nextAppNumber) + val appId = "app-%s-%04d".format(createDateFormat.format(submitDate), nextAppNumber) nextAppNumber += 1 appId } @@ -660,7 +710,7 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int, } def newDriverId(submitDate: Date): String = { - val appId = "driver-%s-%04d".format(DATE_FORMAT.format(submitDate), nextDriverNumber) + val appId = "driver-%s-%04d".format(createDateFormat.format(submitDate), nextDriverNumber) nextDriverNumber += 1 appId } @@ -717,9 +767,11 @@ private[spark] object Master { } } - def startSystemAndActor(host: String, port: Int, webUiPort: Int, conf: SparkConf) - : (ActorSystem, Int, Int) = - { + def startSystemAndActor( + host: String, + port: Int, + webUiPort: Int, + conf: SparkConf): (ActorSystem, Int, Int) = { val securityMgr = new SecurityManager(conf) val (actorSystem, boundPort) = AkkaUtils.createActorSystem(systemName, host, port, conf = conf, securityManager = securityMgr) diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ZooKeeperPersistenceEngine.scala b/core/src/main/scala/org/apache/spark/deploy/master/ZooKeeperPersistenceEngine.scala index 5413ff671ad8d..834dfedee52ce 100644 --- a/core/src/main/scala/org/apache/spark/deploy/master/ZooKeeperPersistenceEngine.scala +++ b/core/src/main/scala/org/apache/spark/deploy/master/ZooKeeperPersistenceEngine.scala @@ -20,6 +20,7 @@ package org.apache.spark.deploy.master import scala.collection.JavaConversions._ import akka.serialization.Serialization +import org.apache.curator.framework.CuratorFramework import org.apache.zookeeper.CreateMode import org.apache.spark.{Logging, SparkConf} @@ -29,7 +30,7 @@ class ZooKeeperPersistenceEngine(serialization: Serialization, conf: SparkConf) with Logging { val WORKING_DIR = conf.get("spark.deploy.zookeeper.dir", "/spark") + "/master_status" - val zk = SparkCuratorUtil.newClient(conf) + val zk: CuratorFramework = SparkCuratorUtil.newClient(conf) SparkCuratorUtil.mkdir(zk, WORKING_DIR) diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/ApplicationPage.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/ApplicationPage.scala index 90cad3c37fda6..b5cd4d2ea963f 100644 --- a/core/src/main/scala/org/apache/spark/deploy/master/ui/ApplicationPage.scala +++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/ApplicationPage.scala @@ -23,21 +23,21 @@ import scala.concurrent.Await import scala.xml.Node import akka.pattern.ask -import javax.servlet.http.HttpServletRequest import org.json4s.JValue import org.apache.spark.deploy.JsonProtocol import org.apache.spark.deploy.DeployMessages.{MasterStateResponse, RequestMasterState} import org.apache.spark.deploy.master.ExecutorInfo -import org.apache.spark.ui.UIUtils +import org.apache.spark.ui.{WebUIPage, UIUtils} import org.apache.spark.util.Utils -private[spark] class ApplicationPage(parent: MasterWebUI) { - val master = parent.masterActorRef - val timeout = parent.timeout +private[spark] class ApplicationPage(parent: MasterWebUI) extends WebUIPage("app") { + + private val master = parent.masterActorRef + private val timeout = parent.timeout /** Executor details for a particular application */ - def renderJson(request: HttpServletRequest): JValue = { + override def renderJson(request: HttpServletRequest): JValue = { val appId = request.getParameter("appId") val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse] val state = Await.result(stateFuture, timeout) @@ -83,7 +83,7 @@ private[spark] class ApplicationPage(parent: MasterWebUI) {
  • Submit Date: {app.submitDate}
  • State: {app.state}
  • -
  • Application Detail UI
  • +
  • Application Detail UI
  • @@ -97,7 +97,7 @@ private[spark] class ApplicationPage(parent: MasterWebUI) { UIUtils.basicSparkPage(content, "Application: " + app.desc.name) } - def executorRow(executor: ExecutorInfo): Seq[Node] = { + private def executorRow(executor: ExecutorInfo): Seq[Node] = { {executor.id} diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/IndexPage.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/IndexPage.scala deleted file mode 100644 index 3233cd97f7bd0..0000000000000 --- a/core/src/main/scala/org/apache/spark/deploy/master/ui/IndexPage.scala +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.deploy.master.ui - -import javax.servlet.http.HttpServletRequest - -import scala.concurrent.Await -import scala.xml.Node - -import akka.pattern.ask -import javax.servlet.http.HttpServletRequest -import org.json4s.JValue - -import org.apache.spark.deploy.{DeployWebUI, JsonProtocol} -import org.apache.spark.deploy.DeployMessages.{MasterStateResponse, RequestMasterState} -import org.apache.spark.deploy.master.{ApplicationInfo, DriverInfo, WorkerInfo} -import org.apache.spark.ui.UIUtils -import org.apache.spark.util.Utils - -private[spark] class IndexPage(parent: MasterWebUI) { - val master = parent.masterActorRef - val timeout = parent.timeout - - def renderJson(request: HttpServletRequest): JValue = { - val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse] - val state = Await.result(stateFuture, timeout) - JsonProtocol.writeMasterState(state) - } - - /** Index view listing applications and executors */ - def render(request: HttpServletRequest): Seq[Node] = { - val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse] - val state = Await.result(stateFuture, timeout) - - val workerHeaders = Seq("Id", "Address", "State", "Cores", "Memory") - val workers = state.workers.sortBy(_.id) - val workerTable = UIUtils.listingTable(workerHeaders, workerRow, workers) - - val appHeaders = Seq("ID", "Name", "Cores", "Memory per Node", "Submitted Time", "User", - "State", "Duration") - val activeApps = state.activeApps.sortBy(_.startTime).reverse - val activeAppsTable = UIUtils.listingTable(appHeaders, appRow, activeApps) - val completedApps = state.completedApps.sortBy(_.endTime).reverse - val completedAppsTable = UIUtils.listingTable(appHeaders, appRow, completedApps) - - val driverHeaders = Seq("ID", "Submitted Time", "Worker", "State", "Cores", "Memory", - "Main Class") - val activeDrivers = state.activeDrivers.sortBy(_.startTime).reverse - val activeDriversTable = UIUtils.listingTable(driverHeaders, driverRow, activeDrivers) - val completedDrivers = state.completedDrivers.sortBy(_.startTime).reverse - val completedDriversTable = UIUtils.listingTable(driverHeaders, driverRow, completedDrivers) - - // For now we only show driver information if the user has submitted drivers to the cluster. - // This is until we integrate the notion of drivers and applications in the UI. - def hasDrivers = activeDrivers.length > 0 || completedDrivers.length > 0 - - val content = -
    -
    -
      -
    • URL: {state.uri}
    • -
    • Workers: {state.workers.size}
    • -
    • Cores: {state.workers.map(_.cores).sum} Total, - {state.workers.map(_.coresUsed).sum} Used
    • -
    • Memory: - {Utils.megabytesToString(state.workers.map(_.memory).sum)} Total, - {Utils.megabytesToString(state.workers.map(_.memoryUsed).sum)} Used
    • -
    • Applications: - {state.activeApps.size} Running, - {state.completedApps.size} Completed
    • -
    • Drivers: - {state.activeDrivers.size} Running, - {state.completedDrivers.size} Completed
    • -
    • Status: {state.status}
    • -
    -
    -
    - -
    -
    -

    Workers

    - {workerTable} -
    -
    - -
    -
    -

    Running Applications

    - {activeAppsTable} -
    -
    - -
    - {if (hasDrivers) { -
    -
    -

    Running Drivers

    - {activeDriversTable} -
    -
    - } - } -
    - -
    -
    -

    Completed Applications

    - {completedAppsTable} -
    -
    - -
    - { - if (hasDrivers) { -
    -
    -

    Completed Drivers

    - {completedDriversTable} -
    -
    - } - } -
    ; - - UIUtils.basicSparkPage(content, "Spark Master at " + state.uri) - } - - def workerRow(worker: WorkerInfo): Seq[Node] = { - - - {worker.id} - - {worker.host}:{worker.port} - {worker.state} - {worker.cores} ({worker.coresUsed} Used) - - {Utils.megabytesToString(worker.memory)} - ({Utils.megabytesToString(worker.memoryUsed)} Used) - - - } - - - def appRow(app: ApplicationInfo): Seq[Node] = { - - - {app.id} - - - {app.desc.name} - - - {app.coresGranted} - - - {Utils.megabytesToString(app.desc.memoryPerSlave)} - - {DeployWebUI.formatDate(app.submitDate)} - {app.desc.user} - {app.state.toString} - {DeployWebUI.formatDuration(app.duration)} - - } - - def driverRow(driver: DriverInfo): Seq[Node] = { - - {driver.id} - {driver.submitDate} - {driver.worker.map(w => {w.id.toString}).getOrElse("None")} - - {driver.state} - - {driver.desc.cores} - - - {Utils.megabytesToString(driver.desc.mem.toLong)} - - {driver.desc.command.arguments(1)} - - } -} diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala new file mode 100644 index 0000000000000..30c2e4b1563d8 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala @@ -0,0 +1,194 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.master.ui + +import javax.servlet.http.HttpServletRequest + +import scala.concurrent.Await +import scala.xml.Node + +import akka.pattern.ask +import org.json4s.JValue + +import org.apache.spark.deploy.JsonProtocol +import org.apache.spark.deploy.DeployMessages.{MasterStateResponse, RequestMasterState} +import org.apache.spark.deploy.master.{ApplicationInfo, DriverInfo, WorkerInfo} +import org.apache.spark.ui.{WebUIPage, UIUtils} +import org.apache.spark.util.Utils + +private[spark] class IndexPage(parent: MasterWebUI) extends WebUIPage("") { + private val master = parent.masterActorRef + private val timeout = parent.timeout + + override def renderJson(request: HttpServletRequest): JValue = { + val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse] + val state = Await.result(stateFuture, timeout) + JsonProtocol.writeMasterState(state) + } + + /** Index view listing applications and executors */ + def render(request: HttpServletRequest): Seq[Node] = { + val stateFuture = (master ? RequestMasterState)(timeout).mapTo[MasterStateResponse] + val state = Await.result(stateFuture, timeout) + + val workerHeaders = Seq("Id", "Address", "State", "Cores", "Memory") + val workers = state.workers.sortBy(_.id) + val workerTable = UIUtils.listingTable(workerHeaders, workerRow, workers) + + val appHeaders = Seq("ID", "Name", "Cores", "Memory per Node", "Submitted Time", "User", + "State", "Duration") + val activeApps = state.activeApps.sortBy(_.startTime).reverse + val activeAppsTable = UIUtils.listingTable(appHeaders, appRow, activeApps) + val completedApps = state.completedApps.sortBy(_.endTime).reverse + val completedAppsTable = UIUtils.listingTable(appHeaders, appRow, completedApps) + + val driverHeaders = Seq("ID", "Submitted Time", "Worker", "State", "Cores", "Memory", + "Main Class") + val activeDrivers = state.activeDrivers.sortBy(_.startTime).reverse + val activeDriversTable = UIUtils.listingTable(driverHeaders, driverRow, activeDrivers) + val completedDrivers = state.completedDrivers.sortBy(_.startTime).reverse + val completedDriversTable = UIUtils.listingTable(driverHeaders, driverRow, completedDrivers) + + // For now we only show driver information if the user has submitted drivers to the cluster. + // This is until we integrate the notion of drivers and applications in the UI. + def hasDrivers = activeDrivers.length > 0 || completedDrivers.length > 0 + + val content = +
    +
    +
      +
    • URL: {state.uri}
    • +
    • Workers: {state.workers.size}
    • +
    • Cores: {state.workers.map(_.cores).sum} Total, + {state.workers.map(_.coresUsed).sum} Used
    • +
    • Memory: + {Utils.megabytesToString(state.workers.map(_.memory).sum)} Total, + {Utils.megabytesToString(state.workers.map(_.memoryUsed).sum)} Used
    • +
    • Applications: + {state.activeApps.size} Running, + {state.completedApps.size} Completed
    • +
    • Drivers: + {state.activeDrivers.size} Running, + {state.completedDrivers.size} Completed
    • +
    • Status: {state.status}
    • +
    +
    +
    + +
    +
    +

    Workers

    + {workerTable} +
    +
    + +
    +
    +

    Running Applications

    + {activeAppsTable} +
    +
    + +
    + {if (hasDrivers) { +
    +
    +

    Running Drivers

    + {activeDriversTable} +
    +
    + } + } +
    + +
    +
    +

    Completed Applications

    + {completedAppsTable} +
    +
    + +
    + { + if (hasDrivers) { +
    +
    +

    Completed Drivers

    + {completedDriversTable} +
    +
    + } + } +
    ; + + UIUtils.basicSparkPage(content, "Spark Master at " + state.uri) + } + + private def workerRow(worker: WorkerInfo): Seq[Node] = { + + + {worker.id} + + {worker.host}:{worker.port} + {worker.state} + {worker.cores} ({worker.coresUsed} Used) + + {Utils.megabytesToString(worker.memory)} + ({Utils.megabytesToString(worker.memoryUsed)} Used) + + + } + + private def appRow(app: ApplicationInfo): Seq[Node] = { + + + {app.id} + + + {app.desc.name} + + + {app.coresGranted} + + + {Utils.megabytesToString(app.desc.memoryPerSlave)} + + {UIUtils.formatDate(app.submitDate)} + {app.desc.user} + {app.state.toString} + {UIUtils.formatDuration(app.duration)} + + } + + private def driverRow(driver: DriverInfo): Seq[Node] = { + + {driver.id} + {driver.submitDate} + {driver.worker.map(w => {w.id.toString}).getOrElse("None")} + + {driver.state} + + {driver.desc.cores} + + + {Utils.megabytesToString(driver.desc.mem.toLong)} + + {driver.desc.command.arguments(1)} + + } +} diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterWebUI.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterWebUI.scala index a7bd01e284c8e..939cf2ea9a678 100644 --- a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterWebUI.scala +++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterWebUI.scala @@ -17,13 +17,9 @@ package org.apache.spark.deploy.master.ui -import javax.servlet.http.HttpServletRequest -import org.eclipse.jetty.server.Server -import org.eclipse.jetty.servlet.ServletContextHandler - import org.apache.spark.Logging import org.apache.spark.deploy.master.Master -import org.apache.spark.ui.JettyUtils +import org.apache.spark.ui.{SparkUI, WebUI} import org.apache.spark.ui.JettyUtils._ import org.apache.spark.util.{AkkaUtils, Utils} @@ -31,53 +27,36 @@ import org.apache.spark.util.{AkkaUtils, Utils} * Web UI server for the standalone master. */ private[spark] -class MasterWebUI(val master: Master, requestedPort: Int) extends Logging { - val timeout = AkkaUtils.askTimeout(master.conf) - val host = Utils.localHostName() - val port = requestedPort +class MasterWebUI(val master: Master, requestedPort: Int) + extends WebUI(master.securityMgr, requestedPort, master.conf) with Logging { val masterActorRef = master.self + val timeout = AkkaUtils.askTimeout(master.conf) - var server: Option[Server] = None - var boundPort: Option[Int] = None - - val applicationPage = new ApplicationPage(this) - val indexPage = new IndexPage(this) + initialize() - def start() { - try { - val (srv, bPort) = JettyUtils.startJettyServer(host, port, handlers, master.conf) - server = Some(srv) - boundPort = Some(bPort) - logInfo("Started Master web UI at http://%s:%d".format(host, boundPort.get)) - } catch { - case e: Exception => - logError("Failed to create Master JettyUtils", e) - System.exit(1) - } + /** Initialize all components of the server. */ + def initialize() { + attachPage(new ApplicationPage(this)) + attachPage(new IndexPage(this)) + attachHandler(createStaticHandler(MasterWebUI.STATIC_RESOURCE_DIR, "/static")) + master.masterMetricsSystem.getServletHandlers.foreach(attachHandler) + master.applicationMetricsSystem.getServletHandlers.foreach(attachHandler) } - val metricsHandlers = master.masterMetricsSystem.getServletHandlers ++ - master.applicationMetricsSystem.getServletHandlers - - val handlers = metricsHandlers ++ Seq[ServletContextHandler]( - createStaticHandler(MasterWebUI.STATIC_RESOURCE_DIR, "/static/*"), - createServletHandler("/app/json", - createServlet((request: HttpServletRequest) => applicationPage.renderJson(request), - master.securityMgr)), - createServletHandler("/app", createServlet((request: HttpServletRequest) => applicationPage - .render(request), master.securityMgr)), - createServletHandler("/json", createServlet((request: HttpServletRequest) => indexPage - .renderJson(request), master.securityMgr)), - createServletHandler("*", createServlet((request: HttpServletRequest) => indexPage.render - (request), master.securityMgr)) - ) + /** Attach a reconstructed UI to this Master UI. Only valid after bind(). */ + def attachSparkUI(ui: SparkUI) { + assert(serverInfo.isDefined, "Master UI must be bound to a server before attaching SparkUIs") + ui.getHandlers.foreach(attachHandler) + } - def stop() { - server.foreach(_.stop()) + /** Detach a reconstructed UI from this Master UI. Only valid after bind(). */ + def detachSparkUI(ui: SparkUI) { + assert(serverInfo.isDefined, "Master UI must be bound to a server before detaching SparkUIs") + ui.getHandlers.foreach(detachHandler) } } private[spark] object MasterWebUI { - val STATIC_RESOURCE_DIR = "org/apache/spark/ui" + val STATIC_RESOURCE_DIR = SparkUI.STATIC_RESOURCE_DIR } diff --git a/core/src/main/scala/org/apache/spark/deploy/worker/Worker.scala b/core/src/main/scala/org/apache/spark/deploy/worker/Worker.scala index afaabedffefea..52c164ca3c574 100755 --- a/core/src/main/scala/org/apache/spark/deploy/worker/Worker.scala +++ b/core/src/main/scala/org/apache/spark/deploy/worker/Worker.scala @@ -56,7 +56,7 @@ private[spark] class Worker( Utils.checkHost(host, "Expected hostname") assert (port > 0) - val DATE_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss") // For worker and executor IDs + def createDateFormat = new SimpleDateFormat("yyyyMMddHHmmss") // For worker and executor IDs // Send a heartbeat every (heartbeat timeout) / 4 milliseconds val HEARTBEAT_MILLIS = conf.getLong("spark.worker.timeout", 60) * 1000 / 4 @@ -64,6 +64,12 @@ private[spark] class Worker( val REGISTRATION_TIMEOUT = 20.seconds val REGISTRATION_RETRIES = 3 + val CLEANUP_ENABLED = conf.getBoolean("spark.worker.cleanup.enabled", true) + // How often worker will clean up old app folders + val CLEANUP_INTERVAL_MILLIS = conf.getLong("spark.worker.cleanup.interval", 60 * 30) * 1000 + // TTL for app folders/data; after TTL expires it will be cleaned up + val APP_DATA_RETENTION_SECS = conf.getLong("spark.worker.cleanup.appDataTtl", 7 * 24 * 3600) + // Index into masterUrls that we're currently trying to register with. var masterIndex = 0 @@ -122,9 +128,9 @@ private[spark] class Worker( host, port, cores, Utils.megabytesToString(memory))) logInfo("Spark home: " + sparkHome) createWorkDir() - webUi = new WorkerWebUI(this, workDir, Some(webUiPort)) context.system.eventStream.subscribe(self, classOf[RemotingLifecycleEvent]) - webUi.start() + webUi = new WorkerWebUI(this, workDir, Some(webUiPort)) + webUi.bind() registerWithMaster() metricsSystem.registerSource(workerSource) @@ -150,8 +156,7 @@ private[spark] class Worker( for (masterUrl <- masterUrls) { logInfo("Connecting to master " + masterUrl + "...") val actor = context.actorSelection(Master.toAkkaUrl(masterUrl)) - actor ! RegisterWorker(workerId, host, port, cores, memory, webUi.boundPort.get, - publicAddress) + actor ! RegisterWorker(workerId, host, port, cores, memory, webUi.boundPort, publicAddress) } } @@ -180,12 +185,28 @@ private[spark] class Worker( registered = true changeMaster(masterUrl, masterWebUiUrl) context.system.scheduler.schedule(0 millis, HEARTBEAT_MILLIS millis, self, SendHeartbeat) + if (CLEANUP_ENABLED) { + context.system.scheduler.schedule(CLEANUP_INTERVAL_MILLIS millis, + CLEANUP_INTERVAL_MILLIS millis, self, WorkDirCleanup) + } case SendHeartbeat => masterLock.synchronized { if (connected) { master ! Heartbeat(workerId) } } + case WorkDirCleanup => + // Spin up a separate thread (in a future) to do the dir cleanup; don't tie up worker actor + val cleanupFuture = concurrent.future { + logInfo("Cleaning up oldest application directories in " + workDir + " ...") + Utils.findOldFiles(workDir, APP_DATA_RETENTION_SECS) + .foreach(Utils.deleteRecursively) + } + cleanupFuture onFailure { + case e: Throwable => + logError("App dir cleanup failed: " + e.getMessage, e) + } + case MasterChanged(masterUrl, masterWebUiUrl) => logInfo("Master has changed, new master is at " + masterUrl) changeMaster(masterUrl, masterWebUiUrl) @@ -320,7 +341,7 @@ private[spark] class Worker( } def generateWorkerId(): String = { - "worker-%s-%s-%d".format(DATE_FORMAT.format(new Date), host, port) + "worker-%s-%s-%d".format(createDateFormat.format(new Date), host, port) } override def postStop() { @@ -332,7 +353,6 @@ private[spark] class Worker( } private[spark] object Worker { - def main(argStrings: Array[String]) { val args = new WorkerArguments(argStrings) val (actorSystem, _) = startSystemAndActor(args.host, args.port, args.webUiPort, args.cores, @@ -340,10 +360,15 @@ private[spark] object Worker { actorSystem.awaitTermination() } - def startSystemAndActor(host: String, port: Int, webUiPort: Int, cores: Int, memory: Int, - masterUrls: Array[String], workDir: String, workerNumber: Option[Int] = None) - : (ActorSystem, Int) = - { + def startSystemAndActor( + host: String, + port: Int, + webUiPort: Int, + cores: Int, + memory: Int, + masterUrls: Array[String], + workDir: String, workerNumber: Option[Int] = None): (ActorSystem, Int) = { + // The LocalSparkCluster runs multiple local sparkWorkerX actor systems val conf = new SparkConf val systemName = "sparkWorker" + workerNumber.map(_.toString).getOrElse("") diff --git a/core/src/main/scala/org/apache/spark/deploy/worker/ui/IndexPage.scala b/core/src/main/scala/org/apache/spark/deploy/worker/ui/IndexPage.scala deleted file mode 100644 index 85200ab0e102d..0000000000000 --- a/core/src/main/scala/org/apache/spark/deploy/worker/ui/IndexPage.scala +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.deploy.worker.ui - -import scala.concurrent.Await -import scala.xml.Node - -import akka.pattern.ask -import javax.servlet.http.HttpServletRequest -import org.json4s.JValue - -import org.apache.spark.deploy.JsonProtocol -import org.apache.spark.deploy.DeployMessages.{RequestWorkerState, WorkerStateResponse} -import org.apache.spark.deploy.master.DriverState -import org.apache.spark.deploy.worker.{DriverRunner, ExecutorRunner} -import org.apache.spark.ui.UIUtils -import org.apache.spark.util.Utils - -private[spark] class IndexPage(parent: WorkerWebUI) { - val workerActor = parent.worker.self - val worker = parent.worker - val timeout = parent.timeout - - def renderJson(request: HttpServletRequest): JValue = { - val stateFuture = (workerActor ? RequestWorkerState)(timeout).mapTo[WorkerStateResponse] - val workerState = Await.result(stateFuture, timeout) - JsonProtocol.writeWorkerState(workerState) - } - - def render(request: HttpServletRequest): Seq[Node] = { - val stateFuture = (workerActor ? RequestWorkerState)(timeout).mapTo[WorkerStateResponse] - val workerState = Await.result(stateFuture, timeout) - - val executorHeaders = Seq("ExecutorID", "Cores", "Memory", "Job Details", "Logs") - val runningExecutorTable = - UIUtils.listingTable(executorHeaders, executorRow, workerState.executors) - val finishedExecutorTable = - UIUtils.listingTable(executorHeaders, executorRow, workerState.finishedExecutors) - - val driverHeaders = Seq("DriverID", "Main Class", "State", "Cores", "Memory", "Logs", "Notes") - val runningDrivers = workerState.drivers.sortBy(_.driverId).reverse - val runningDriverTable = UIUtils.listingTable(driverHeaders, driverRow, runningDrivers) - val finishedDrivers = workerState.finishedDrivers.sortBy(_.driverId).reverse - def finishedDriverTable = UIUtils.listingTable(driverHeaders, driverRow, finishedDrivers) - - // For now we only show driver information if the user has submitted drivers to the cluster. - // This is until we integrate the notion of drivers and applications in the UI. - def hasDrivers = runningDrivers.length > 0 || finishedDrivers.length > 0 - - val content = -
    -
    -
      -
    • ID: {workerState.workerId}
    • -
    • - Master URL: {workerState.masterUrl} -
    • -
    • Cores: {workerState.cores} ({workerState.coresUsed} Used)
    • -
    • Memory: {Utils.megabytesToString(workerState.memory)} - ({Utils.megabytesToString(workerState.memoryUsed)} Used)
    • -
    -

    Back to Master

    -
    -
    - -
    -
    -

    Running Executors {workerState.executors.size}

    - {runningExecutorTable} -
    -
    - // scalastyle:off -
    - {if (hasDrivers) -
    -
    -

    Running Drivers {workerState.drivers.size}

    - {runningDriverTable} -
    -
    - } -
    - -
    -
    -

    Finished Executors

    - {finishedExecutorTable} -
    -
    - -
    - {if (hasDrivers) -
    -
    -

    Finished Drivers

    - {finishedDriverTable} -
    -
    - } -
    ; - // scalastyle:on - UIUtils.basicSparkPage(content, "Spark Worker at %s:%s".format( - workerState.host, workerState.port)) - } - - def executorRow(executor: ExecutorRunner): Seq[Node] = { - - {executor.execId} - {executor.cores} - - {Utils.megabytesToString(executor.memory)} - - -
      -
    • ID: {executor.appId}
    • -
    • Name: {executor.appDesc.name}
    • -
    • User: {executor.appDesc.user}
    • -
    - - - stdout - stderr - - - - } - - def driverRow(driver: DriverRunner): Seq[Node] = { - - {driver.driverId} - {driver.driverDesc.command.arguments(1)} - {driver.finalState.getOrElse(DriverState.RUNNING)} - - {driver.driverDesc.cores.toString} - - - {Utils.megabytesToString(driver.driverDesc.mem)} - - - stdout - stderr - - - {driver.finalException.getOrElse("")} - - - } -} diff --git a/core/src/main/scala/org/apache/spark/deploy/worker/ui/LogPage.scala b/core/src/main/scala/org/apache/spark/deploy/worker/ui/LogPage.scala new file mode 100644 index 0000000000000..fec1207948628 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/deploy/worker/ui/LogPage.scala @@ -0,0 +1,147 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.worker.ui + +import java.io.File +import javax.servlet.http.HttpServletRequest + +import scala.xml.Node + +import org.apache.spark.ui.{WebUIPage, UIUtils} +import org.apache.spark.util.Utils + +private[spark] class LogPage(parent: WorkerWebUI) extends WebUIPage("logPage") { + private val worker = parent.worker + private val workDir = parent.workDir + + def renderLog(request: HttpServletRequest): String = { + val defaultBytes = 100 * 1024 + + val appId = Option(request.getParameter("appId")) + val executorId = Option(request.getParameter("executorId")) + val driverId = Option(request.getParameter("driverId")) + val logType = request.getParameter("logType") + val offset = Option(request.getParameter("offset")).map(_.toLong) + val byteLength = Option(request.getParameter("byteLength")).map(_.toInt).getOrElse(defaultBytes) + + val path = (appId, executorId, driverId) match { + case (Some(a), Some(e), None) => + s"${workDir.getPath}/$appId/$executorId/$logType" + case (None, None, Some(d)) => + s"${workDir.getPath}/$driverId/$logType" + case _ => + throw new Exception("Request must specify either application or driver identifiers") + } + + val (startByte, endByte) = getByteRange(path, offset, byteLength) + val file = new File(path) + val logLength = file.length + + val pre = s"==== Bytes $startByte-$endByte of $logLength of $path ====\n" + pre + Utils.offsetBytes(path, startByte, endByte) + } + + def render(request: HttpServletRequest): Seq[Node] = { + val defaultBytes = 100 * 1024 + val appId = Option(request.getParameter("appId")) + val executorId = Option(request.getParameter("executorId")) + val driverId = Option(request.getParameter("driverId")) + val logType = request.getParameter("logType") + val offset = Option(request.getParameter("offset")).map(_.toLong) + val byteLength = Option(request.getParameter("byteLength")).map(_.toInt).getOrElse(defaultBytes) + + val (path, params) = (appId, executorId, driverId) match { + case (Some(a), Some(e), None) => + (s"${workDir.getPath}/$a/$e/$logType", s"appId=$a&executorId=$e") + case (None, None, Some(d)) => + (s"${workDir.getPath}/$d/$logType", s"driverId=$d") + case _ => + throw new Exception("Request must specify either application or driver identifiers") + } + + val (startByte, endByte) = getByteRange(path, offset, byteLength) + val file = new File(path) + val logLength = file.length + val logText = {Utils.offsetBytes(path, startByte, endByte)} + val linkToMaster =

    Back to Master

    + val range = Bytes {startByte.toString} - {endByte.toString} of {logLength} + + val backButton = + if (startByte > 0) { + + + + } + else { + + } + + val nextButton = + if (endByte < logLength) { + + + + } + else { + + } + + val content = + + + {linkToMaster} +
    +
    {backButton}
    +
    {range}
    +
    {nextButton}
    +
    +
    +
    +
    {logText}
    +
    + + + UIUtils.basicSparkPage(content, logType + " log page for " + appId) + } + + /** Determine the byte range for a log or log page. */ + private def getByteRange(path: String, offset: Option[Long], byteLength: Int): (Long, Long) = { + val defaultBytes = 100 * 1024 + val maxBytes = 1024 * 1024 + val file = new File(path) + val logLength = file.length() + val getOffset = offset.getOrElse(logLength - defaultBytes) + val startByte = + if (getOffset < 0) 0L + else if (getOffset > logLength) logLength + else getOffset + val logPageLength = math.min(byteLength, maxBytes) + val endByte = math.min(startByte + logPageLength, logLength) + (startByte, endByte) + } +} diff --git a/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerPage.scala b/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerPage.scala new file mode 100644 index 0000000000000..15b79872bc556 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerPage.scala @@ -0,0 +1,165 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.worker.ui + +import scala.concurrent.Await +import scala.xml.Node + +import akka.pattern.ask +import javax.servlet.http.HttpServletRequest +import org.json4s.JValue + +import org.apache.spark.deploy.JsonProtocol +import org.apache.spark.deploy.DeployMessages.{RequestWorkerState, WorkerStateResponse} +import org.apache.spark.deploy.master.DriverState +import org.apache.spark.deploy.worker.{DriverRunner, ExecutorRunner} +import org.apache.spark.ui.{WebUIPage, UIUtils} +import org.apache.spark.util.Utils + +private[spark] class IndexPage(parent: WorkerWebUI) extends WebUIPage("") { + val workerActor = parent.worker.self + val worker = parent.worker + val timeout = parent.timeout + + override def renderJson(request: HttpServletRequest): JValue = { + val stateFuture = (workerActor ? RequestWorkerState)(timeout).mapTo[WorkerStateResponse] + val workerState = Await.result(stateFuture, timeout) + JsonProtocol.writeWorkerState(workerState) + } + + def render(request: HttpServletRequest): Seq[Node] = { + val stateFuture = (workerActor ? RequestWorkerState)(timeout).mapTo[WorkerStateResponse] + val workerState = Await.result(stateFuture, timeout) + + val executorHeaders = Seq("ExecutorID", "Cores", "Memory", "Job Details", "Logs") + val runningExecutorTable = + UIUtils.listingTable(executorHeaders, executorRow, workerState.executors) + val finishedExecutorTable = + UIUtils.listingTable(executorHeaders, executorRow, workerState.finishedExecutors) + + val driverHeaders = Seq("DriverID", "Main Class", "State", "Cores", "Memory", "Logs", "Notes") + val runningDrivers = workerState.drivers.sortBy(_.driverId).reverse + val runningDriverTable = UIUtils.listingTable(driverHeaders, driverRow, runningDrivers) + val finishedDrivers = workerState.finishedDrivers.sortBy(_.driverId).reverse + def finishedDriverTable = UIUtils.listingTable(driverHeaders, driverRow, finishedDrivers) + + // For now we only show driver information if the user has submitted drivers to the cluster. + // This is until we integrate the notion of drivers and applications in the UI. + def hasDrivers = runningDrivers.length > 0 || finishedDrivers.length > 0 + + val content = +
    +
    +
      +
    • ID: {workerState.workerId}
    • +
    • + Master URL: {workerState.masterUrl} +
    • +
    • Cores: {workerState.cores} ({workerState.coresUsed} Used)
    • +
    • Memory: {Utils.megabytesToString(workerState.memory)} + ({Utils.megabytesToString(workerState.memoryUsed)} Used)
    • +
    +

    Back to Master

    +
    +
    + +
    +
    +

    Running Executors {workerState.executors.size}

    + {runningExecutorTable} +
    +
    + // scalastyle:off +
    + {if (hasDrivers) +
    +
    +

    Running Drivers {workerState.drivers.size}

    + {runningDriverTable} +
    +
    + } +
    + +
    +
    +

    Finished Executors

    + {finishedExecutorTable} +
    +
    + +
    + {if (hasDrivers) +
    +
    +

    Finished Drivers

    + {finishedDriverTable} +
    +
    + } +
    ; + // scalastyle:on + UIUtils.basicSparkPage(content, "Spark Worker at %s:%s".format( + workerState.host, workerState.port)) + } + + def executorRow(executor: ExecutorRunner): Seq[Node] = { + + {executor.execId} + {executor.cores} + + {Utils.megabytesToString(executor.memory)} + + +
      +
    • ID: {executor.appId}
    • +
    • Name: {executor.appDesc.name}
    • +
    • User: {executor.appDesc.user}
    • +
    + + + stdout + stderr + + + + } + + def driverRow(driver: DriverRunner): Seq[Node] = { + + {driver.driverId} + {driver.driverDesc.command.arguments(1)} + {driver.finalState.getOrElse(DriverState.RUNNING)} + + {driver.driverDesc.cores.toString} + + + {Utils.megabytesToString(driver.driverDesc.mem)} + + + stdout + stderr + + + {driver.finalException.getOrElse("")} + + + } +} diff --git a/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerWebUI.scala b/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerWebUI.scala index ffc05bd30687a..34b5acd2f9b64 100644 --- a/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerWebUI.scala +++ b/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerWebUI.scala @@ -19,189 +19,45 @@ package org.apache.spark.deploy.worker.ui import java.io.File import javax.servlet.http.HttpServletRequest -import org.eclipse.jetty.server.Server -import org.eclipse.jetty.servlet.ServletContextHandler -import org.apache.spark.Logging +import org.apache.spark.{Logging, SparkConf} import org.apache.spark.deploy.worker.Worker -import org.apache.spark.ui.{JettyUtils, UIUtils} +import org.apache.spark.ui.{SparkUI, WebUI} import org.apache.spark.ui.JettyUtils._ -import org.apache.spark.util.{AkkaUtils, Utils} +import org.apache.spark.util.AkkaUtils /** * Web UI server for the standalone worker. */ private[spark] -class WorkerWebUI(val worker: Worker, val workDir: File, requestedPort: Option[Int] = None) - extends Logging { - val timeout = AkkaUtils.askTimeout(worker.conf) - val host = Utils.localHostName() - val port = requestedPort.getOrElse( - worker.conf.get("worker.ui.port", WorkerWebUI.DEFAULT_PORT).toInt) - - var server: Option[Server] = None - var boundPort: Option[Int] = None - - val indexPage = new IndexPage(this) - - val metricsHandlers = worker.metricsSystem.getServletHandlers - - val handlers = metricsHandlers ++ Seq[ServletContextHandler]( - createStaticHandler(WorkerWebUI.STATIC_RESOURCE_BASE, "/static/*"), - createServletHandler("/log", createServlet((request: HttpServletRequest) => log(request), - worker.securityMgr)), - createServletHandler("/logPage", createServlet((request: HttpServletRequest) => logPage - (request), worker.securityMgr)), - createServletHandler("/json", createServlet((request: HttpServletRequest) => indexPage - .renderJson(request), worker.securityMgr)), - createServletHandler("*", createServlet((request: HttpServletRequest) => indexPage.render - (request), worker.securityMgr)) - ) - - def start() { - try { - val (srv, bPort) = JettyUtils.startJettyServer(host, port, handlers, worker.conf) - server = Some(srv) - boundPort = Some(bPort) - logInfo("Started Worker web UI at http://%s:%d".format(host, bPort)) - } catch { - case e: Exception => - logError("Failed to create Worker JettyUtils", e) - System.exit(1) - } - } - - def log(request: HttpServletRequest): String = { - val defaultBytes = 100 * 1024 - - val appId = Option(request.getParameter("appId")) - val executorId = Option(request.getParameter("executorId")) - val driverId = Option(request.getParameter("driverId")) - val logType = request.getParameter("logType") - val offset = Option(request.getParameter("offset")).map(_.toLong) - val byteLength = Option(request.getParameter("byteLength")).map(_.toInt).getOrElse(defaultBytes) - - val path = (appId, executorId, driverId) match { - case (Some(a), Some(e), None) => - s"${workDir.getPath}/$appId/$executorId/$logType" - case (None, None, Some(d)) => - s"${workDir.getPath}/$driverId/$logType" - case _ => - throw new Exception("Request must specify either application or driver identifiers") - } - - val (startByte, endByte) = getByteRange(path, offset, byteLength) - val file = new File(path) - val logLength = file.length - - val pre = s"==== Bytes $startByte-$endByte of $logLength of $path ====\n" - pre + Utils.offsetBytes(path, startByte, endByte) - } - - def logPage(request: HttpServletRequest): Seq[scala.xml.Node] = { - val defaultBytes = 100 * 1024 - val appId = Option(request.getParameter("appId")) - val executorId = Option(request.getParameter("executorId")) - val driverId = Option(request.getParameter("driverId")) - val logType = request.getParameter("logType") - val offset = Option(request.getParameter("offset")).map(_.toLong) - val byteLength = Option(request.getParameter("byteLength")).map(_.toInt).getOrElse(defaultBytes) - - val (path, params) = (appId, executorId, driverId) match { - case (Some(a), Some(e), None) => - (s"${workDir.getPath}/$a/$e/$logType", s"appId=$a&executorId=$e") - case (None, None, Some(d)) => - (s"${workDir.getPath}/$d/$logType", s"driverId=$d") - case _ => - throw new Exception("Request must specify either application or driver identifiers") - } - - val (startByte, endByte) = getByteRange(path, offset, byteLength) - val file = new File(path) - val logLength = file.length +class WorkerWebUI( + val worker: Worker, + val workDir: File, + port: Option[Int] = None) + extends WebUI(worker.securityMgr, WorkerWebUI.getUIPort(port, worker.conf), worker.conf) + with Logging { - val logText = {Utils.offsetBytes(path, startByte, endByte)} - - val linkToMaster =

    Back to Master

    - - val range = Bytes {startByte.toString} - {endByte.toString} of {logLength} - - val backButton = - if (startByte > 0) { - - - - } - else { - - } - - val nextButton = - if (endByte < logLength) { - - - - } - else { - - } - - val content = - - - {linkToMaster} -
    -
    {backButton}
    -
    {range}
    -
    {nextButton}
    -
    -
    -
    -
    {logText}
    -
    - - - UIUtils.basicSparkPage(content, logType + " log page for " + appId) - } - - /** Determine the byte range for a log or log page. */ - def getByteRange(path: String, offset: Option[Long], byteLength: Int) - : (Long, Long) = { - val defaultBytes = 100 * 1024 - val maxBytes = 1024 * 1024 - - val file = new File(path) - val logLength = file.length() - val getOffset = offset.getOrElse(logLength-defaultBytes) - - val startByte = - if (getOffset < 0) 0L - else if (getOffset > logLength) logLength - else getOffset - - val logPageLength = math.min(byteLength, maxBytes) - - val endByte = math.min(startByte + logPageLength, logLength) - - (startByte, endByte) - } + val timeout = AkkaUtils.askTimeout(worker.conf) - def stop() { - server.foreach(_.stop()) + initialize() + + /** Initialize all components of the server. */ + def initialize() { + val logPage = new LogPage(this) + attachPage(logPage) + attachPage(new IndexPage(this)) + attachHandler(createStaticHandler(WorkerWebUI.STATIC_RESOURCE_BASE, "/static")) + attachHandler(createServletHandler("/log", + (request: HttpServletRequest) => logPage.renderLog(request), worker.securityMgr)) + worker.metricsSystem.getServletHandlers.foreach(attachHandler) } } private[spark] object WorkerWebUI { - val STATIC_RESOURCE_BASE = "org/apache/spark/ui" - val DEFAULT_PORT="8081" + val DEFAULT_PORT = 8081 + val STATIC_RESOURCE_BASE = SparkUI.STATIC_RESOURCE_DIR + + def getUIPort(requestedPort: Option[Int], conf: SparkConf): Int = { + requestedPort.getOrElse(conf.getInt("worker.ui.port", WorkerWebUI.DEFAULT_PORT)) + } } diff --git a/core/src/main/scala/org/apache/spark/executor/CoarseGrainedExecutorBackend.scala b/core/src/main/scala/org/apache/spark/executor/CoarseGrainedExecutorBackend.scala index 3486092a140fb..16887d8892b31 100644 --- a/core/src/main/scala/org/apache/spark/executor/CoarseGrainedExecutorBackend.scala +++ b/core/src/main/scala/org/apache/spark/executor/CoarseGrainedExecutorBackend.scala @@ -53,7 +53,8 @@ private[spark] class CoarseGrainedExecutorBackend( case RegisteredExecutor(sparkProperties) => logInfo("Successfully registered with driver") // Make this host instead of hostPort ? - executor = new Executor(executorId, Utils.parseHostPort(hostPort)._1, sparkProperties) + executor = new Executor(executorId, Utils.parseHostPort(hostPort)._1, sparkProperties, + false) case RegisterExecutorFailed(message) => logError("Slave registration failed: " + message) @@ -105,7 +106,8 @@ private[spark] object CoarseGrainedExecutorBackend { // set it val sparkHostPort = hostname + ":" + boundPort actorSystem.actorOf( - Props(classOf[CoarseGrainedExecutorBackend], driverUrl, executorId, sparkHostPort, cores), + Props(classOf[CoarseGrainedExecutorBackend], driverUrl, executorId, + sparkHostPort, cores), name = "Executor") workerUrl.foreach{ url => actorSystem.actorOf(Props(classOf[WorkerWatcher], url), name = "WorkerWatcher") diff --git a/core/src/main/scala/org/apache/spark/executor/Executor.scala b/core/src/main/scala/org/apache/spark/executor/Executor.scala index e69f6f72d3275..c12bd922d40e4 100644 --- a/core/src/main/scala/org/apache/spark/executor/Executor.scala +++ b/core/src/main/scala/org/apache/spark/executor/Executor.scala @@ -29,7 +29,7 @@ import org.apache.spark._ import org.apache.spark.deploy.SparkHadoopUtil import org.apache.spark.scheduler._ import org.apache.spark.storage.{StorageLevel, TaskResultBlockId} -import org.apache.spark.util.Utils +import org.apache.spark.util.{AkkaUtils, Utils} /** * Spark executor used with Mesos, YARN, and the standalone scheduler. @@ -112,17 +112,14 @@ private[spark] class Executor( } } - // Create our ClassLoader and set it on this thread + // Create our ClassLoader // do this after SparkEnv creation so can access the SecurityManager private val urlClassLoader = createClassLoader() private val replClassLoader = addReplClassLoaderIfNeeded(urlClassLoader) - Thread.currentThread.setContextClassLoader(replClassLoader) // Akka's message frame size. If task result is bigger than this, we use the block manager // to send the result back. - private val akkaFrameSize = { - env.actorSystem.settings.config.getBytes("akka.remote.netty.tcp.maximum-frame-size") - } + private val akkaFrameSize = AkkaUtils.maxFrameSizeBytes(conf) // Start worker thread pool val threadPool = Utils.newDaemonCachedThreadPool("Executor task launch worker") @@ -226,10 +223,10 @@ private[spark] class Executor( for (m <- task.metrics) { m.hostname = Utils.localHostName() - m.executorDeserializeTime = (taskStart - startTime).toInt - m.executorRunTime = (taskFinish - taskStart).toInt + m.executorDeserializeTime = taskStart - startTime + m.executorRunTime = taskFinish - taskStart m.jvmGCTime = gcTime - startGCTime - m.resultSerializationTime = (afterSerialization - beforeSerialization).toInt + m.resultSerializationTime = afterSerialization - beforeSerialization } val accumUpdates = Accumulators.values @@ -265,7 +262,7 @@ private[spark] class Executor( } case t: Throwable => { - val serviceTime = (System.currentTimeMillis() - taskStart).toInt + val serviceTime = System.currentTimeMillis() - taskStart val metrics = attemptedTask.flatMap(t => t.metrics) for (m <- metrics) { m.executorRunTime = serviceTime @@ -278,7 +275,6 @@ private[spark] class Executor( // have left some weird state around depending on when the exception was thrown, but on // the other hand, maybe we could detect that when future tasks fail and exit then. logError("Exception in task ID " + taskId, t) - //System.exit(1) } } finally { // TODO: Unregister shuffle memory only for ResultTask @@ -295,7 +291,7 @@ private[spark] class Executor( * Create a ClassLoader for use in tasks, adding any JARs specified by the user or any classes * created by the interpreter to the search path */ - private def createClassLoader(): ExecutorURLClassLoader = { + private def createClassLoader(): MutableURLClassLoader = { val loader = this.getClass.getClassLoader // For each of the jars in the jarSet, add them to the class loader. @@ -303,7 +299,11 @@ private[spark] class Executor( val urls = currentJars.keySet.map { uri => new File(uri.split("/").last).toURI.toURL }.toArray - new ExecutorURLClassLoader(urls, loader) + val userClassPathFirst = conf.getBoolean("spark.files.userClassPathFirst", false) + userClassPathFirst match { + case true => new ChildExecutorURLClassLoader(urls, loader) + case false => new ExecutorURLClassLoader(urls, loader) + } } /** @@ -314,11 +314,14 @@ private[spark] class Executor( val classUri = conf.get("spark.repl.class.uri", null) if (classUri != null) { logInfo("Using REPL class URI: " + classUri) + val userClassPathFirst: java.lang.Boolean = + conf.getBoolean("spark.files.userClassPathFirst", false) try { val klass = Class.forName("org.apache.spark.repl.ExecutorClassLoader") .asInstanceOf[Class[_ <: ClassLoader]] - val constructor = klass.getConstructor(classOf[String], classOf[ClassLoader]) - constructor.newInstance(classUri, parent) + val constructor = klass.getConstructor(classOf[String], classOf[ClassLoader], + classOf[Boolean]) + constructor.newInstance(classUri, parent, userClassPathFirst) } catch { case _: ClassNotFoundException => logError("Could not find org.apache.spark.repl.ExecutorClassLoader on classpath!") diff --git a/core/src/main/scala/org/apache/spark/executor/ExecutorExitCode.scala b/core/src/main/scala/org/apache/spark/executor/ExecutorExitCode.scala index 210f3dbeebaca..ceff3a067d72a 100644 --- a/core/src/main/scala/org/apache/spark/executor/ExecutorExitCode.scala +++ b/core/src/main/scala/org/apache/spark/executor/ExecutorExitCode.scala @@ -41,6 +41,12 @@ object ExecutorExitCode { /** DiskStore failed to create a local temporary directory after many attempts. */ val DISK_STORE_FAILED_TO_CREATE_DIR = 53 + /** TachyonStore failed to initialize after many attempts. */ + val TACHYON_STORE_FAILED_TO_INITIALIZE = 54 + + /** TachyonStore failed to create a local temporary directory after many attempts. */ + val TACHYON_STORE_FAILED_TO_CREATE_DIR = 55 + def explainExitCode(exitCode: Int): String = { exitCode match { case UNCAUGHT_EXCEPTION => "Uncaught exception" @@ -48,6 +54,9 @@ object ExecutorExitCode { case OOM => "OutOfMemoryError" case DISK_STORE_FAILED_TO_CREATE_DIR => "Failed to create local directory (bad spark.local.dir?)" + case TACHYON_STORE_FAILED_TO_INITIALIZE => "TachyonStore failed to initialize." + case TACHYON_STORE_FAILED_TO_CREATE_DIR => + "TachyonStore failed to create a local temporary directory." case _ => "Unknown executor exit code (" + exitCode + ")" + ( if (exitCode > 128) { diff --git a/core/src/main/scala/org/apache/spark/executor/ExecutorSource.scala b/core/src/main/scala/org/apache/spark/executor/ExecutorSource.scala index 127f5e90f3e1a..0ed52cfe9df61 100644 --- a/core/src/main/scala/org/apache/spark/executor/ExecutorSource.scala +++ b/core/src/main/scala/org/apache/spark/executor/ExecutorSource.scala @@ -24,7 +24,7 @@ import org.apache.hadoop.fs.FileSystem import org.apache.spark.metrics.source.Source -class ExecutorSource(val executor: Executor, executorId: String) extends Source { +private[spark] class ExecutorSource(val executor: Executor, executorId: String) extends Source { private def fileStats(scheme: String) : Option[FileSystem.Statistics] = FileSystem.getAllStatistics().filter(s => s.getScheme.equals(scheme)).headOption diff --git a/core/src/main/scala/org/apache/spark/executor/ExecutorURLClassLoader.scala b/core/src/main/scala/org/apache/spark/executor/ExecutorURLClassLoader.scala index f9bfe8ed2f5ba..208e77073fd03 100644 --- a/core/src/main/scala/org/apache/spark/executor/ExecutorURLClassLoader.scala +++ b/core/src/main/scala/org/apache/spark/executor/ExecutorURLClassLoader.scala @@ -19,13 +19,56 @@ package org.apache.spark.executor import java.net.{URLClassLoader, URL} +import org.apache.spark.util.ParentClassLoader + /** * The addURL method in URLClassLoader is protected. We subclass it to make this accessible. + * We also make changes so user classes can come before the default classes. */ + +private[spark] trait MutableURLClassLoader extends ClassLoader { + def addURL(url: URL) + def getURLs: Array[URL] +} + +private[spark] class ChildExecutorURLClassLoader(urls: Array[URL], parent: ClassLoader) + extends MutableURLClassLoader { + + private object userClassLoader extends URLClassLoader(urls, null){ + override def addURL(url: URL) { + super.addURL(url) + } + override def findClass(name: String): Class[_] = { + super.findClass(name) + } + } + + private val parentClassLoader = new ParentClassLoader(parent) + + override def findClass(name: String): Class[_] = { + try { + userClassLoader.findClass(name) + } catch { + case e: ClassNotFoundException => { + parentClassLoader.loadClass(name) + } + } + } + + def addURL(url: URL) { + userClassLoader.addURL(url) + } + + def getURLs() = { + userClassLoader.getURLs() + } +} + private[spark] class ExecutorURLClassLoader(urls: Array[URL], parent: ClassLoader) - extends URLClassLoader(urls, parent) { + extends URLClassLoader(urls, parent) with MutableURLClassLoader { override def addURL(url: URL) { super.addURL(url) } } + diff --git a/core/src/main/scala/org/apache/spark/executor/TaskMetrics.scala b/core/src/main/scala/org/apache/spark/executor/TaskMetrics.scala index 760458cb02a9b..e4f02a4be0b97 100644 --- a/core/src/main/scala/org/apache/spark/executor/TaskMetrics.scala +++ b/core/src/main/scala/org/apache/spark/executor/TaskMetrics.scala @@ -17,21 +17,29 @@ package org.apache.spark.executor +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.storage.{BlockId, BlockStatus} + +/** + * :: DeveloperApi :: + * Metrics tracked during the execution of a task. + */ +@DeveloperApi class TaskMetrics extends Serializable { /** - * Host's name the task runs on + * Host's name the task runs on */ var hostname: String = _ /** * Time taken on the executor to deserialize this task */ - var executorDeserializeTime: Int = _ + var executorDeserializeTime: Long = _ /** * Time the executor spends actually running the task (including fetching shuffle data) */ - var executorRunTime: Int = _ + var executorRunTime: Long = _ /** * The number of bytes this task transmitted back to the driver as the TaskResult @@ -68,13 +76,23 @@ class TaskMetrics extends Serializable { * here */ var shuffleWriteMetrics: Option[ShuffleWriteMetrics] = None + + /** + * Storage statuses of any blocks that have been updated as a result of this task. + */ + var updatedBlocks: Option[Seq[(BlockId, BlockStatus)]] = None } -object TaskMetrics { - private[spark] def empty(): TaskMetrics = new TaskMetrics +private[spark] object TaskMetrics { + def empty(): TaskMetrics = new TaskMetrics } +/** + * :: DeveloperApi :: + * Metrics pertaining to shuffle data read in a given task. + */ +@DeveloperApi class ShuffleReadMetrics extends Serializable { /** * Absolute time when this task finished reading shuffle data @@ -109,6 +127,11 @@ class ShuffleReadMetrics extends Serializable { var remoteBytesRead: Long = _ } +/** + * :: DeveloperApi :: + * Metrics pertaining to shuffle data written in a given task. + */ +@DeveloperApi class ShuffleWriteMetrics extends Serializable { /** * Number of bytes written for the shuffle by this task diff --git a/core/src/main/scala/org/apache/spark/input/WholeTextFileInputFormat.scala b/core/src/main/scala/org/apache/spark/input/WholeTextFileInputFormat.scala new file mode 100644 index 0000000000000..4887fb6b84eb2 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/input/WholeTextFileInputFormat.scala @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.input + +import org.apache.hadoop.fs.Path +import org.apache.hadoop.mapreduce.InputSplit +import org.apache.hadoop.mapreduce.JobContext +import org.apache.hadoop.mapreduce.lib.input.CombineFileInputFormat +import org.apache.hadoop.mapreduce.RecordReader +import org.apache.hadoop.mapreduce.TaskAttemptContext +import org.apache.hadoop.mapreduce.lib.input.CombineFileRecordReader +import org.apache.hadoop.mapreduce.lib.input.CombineFileSplit + +/** + * A [[org.apache.hadoop.mapreduce.lib.input.CombineFileInputFormat CombineFileInputFormat]] for + * reading whole text files. Each file is read as key-value pair, where the key is the file path and + * the value is the entire content of file. + */ + +private[spark] class WholeTextFileInputFormat extends CombineFileInputFormat[String, String] { + override protected def isSplitable(context: JobContext, file: Path): Boolean = false + + override def createRecordReader( + split: InputSplit, + context: TaskAttemptContext): RecordReader[String, String] = { + + new CombineFileRecordReader[String, String]( + split.asInstanceOf[CombineFileSplit], + context, + classOf[WholeTextFileRecordReader]) + } +} diff --git a/core/src/main/scala/org/apache/spark/input/WholeTextFileRecordReader.scala b/core/src/main/scala/org/apache/spark/input/WholeTextFileRecordReader.scala new file mode 100644 index 0000000000000..c3dabd2e79995 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/input/WholeTextFileRecordReader.scala @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.input + +import com.google.common.io.{ByteStreams, Closeables} + +import org.apache.hadoop.io.Text +import org.apache.hadoop.mapreduce.InputSplit +import org.apache.hadoop.mapreduce.lib.input.CombineFileSplit +import org.apache.hadoop.mapreduce.RecordReader +import org.apache.hadoop.mapreduce.TaskAttemptContext + +/** + * A [[org.apache.hadoop.mapreduce.RecordReader RecordReader]] for reading a single whole text file + * out in a key-value pair, where the key is the file path and the value is the entire content of + * the file. + */ +private[spark] class WholeTextFileRecordReader( + split: CombineFileSplit, + context: TaskAttemptContext, + index: Integer) + extends RecordReader[String, String] { + + private val path = split.getPath(index) + private val fs = path.getFileSystem(context.getConfiguration) + + // True means the current file has been processed, then skip it. + private var processed = false + + private val key = path.toString + private var value: String = null + + override def initialize(split: InputSplit, context: TaskAttemptContext) = {} + + override def close() = {} + + override def getProgress = if (processed) 1.0f else 0.0f + + override def getCurrentKey = key + + override def getCurrentValue = value + + override def nextKeyValue = { + if (!processed) { + val fileIn = fs.open(path) + val innerBuffer = ByteStreams.toByteArray(fileIn) + + value = new Text(innerBuffer).toString + Closeables.close(fileIn, false) + + processed = true + true + } else { + false + } + } +} diff --git a/core/src/main/scala/org/apache/spark/io/CompressionCodec.scala b/core/src/main/scala/org/apache/spark/io/CompressionCodec.scala index 848b5c439bb5b..e1a5ee316bb69 100644 --- a/core/src/main/scala/org/apache/spark/io/CompressionCodec.scala +++ b/core/src/main/scala/org/apache/spark/io/CompressionCodec.scala @@ -23,11 +23,18 @@ import com.ning.compress.lzf.{LZFInputStream, LZFOutputStream} import org.xerial.snappy.{SnappyInputStream, SnappyOutputStream} import org.apache.spark.SparkConf +import org.apache.spark.annotation.DeveloperApi /** + * :: DeveloperApi :: * CompressionCodec allows the customization of choosing different compression implementations * to be used in block storage. + * + * Note: The wire protocol for a codec is not guaranteed compatible across versions of Spark. + * This is intended for use as an internal compression utility within a single + * Spark application. */ +@DeveloperApi trait CompressionCodec { def compressedOutputStream(s: OutputStream): OutputStream @@ -38,8 +45,7 @@ trait CompressionCodec { private[spark] object CompressionCodec { def createCodec(conf: SparkConf): CompressionCodec = { - createCodec(conf, conf.get( - "spark.io.compression.codec", classOf[LZFCompressionCodec].getName)) + createCodec(conf, conf.get("spark.io.compression.codec", DEFAULT_COMPRESSION_CODEC)) } def createCodec(conf: SparkConf, codecName: String): CompressionCodec = { @@ -47,12 +53,20 @@ private[spark] object CompressionCodec { .getConstructor(classOf[SparkConf]) ctor.newInstance(conf).asInstanceOf[CompressionCodec] } + + val DEFAULT_COMPRESSION_CODEC = classOf[LZFCompressionCodec].getName } /** + * :: DeveloperApi :: * LZF implementation of [[org.apache.spark.io.CompressionCodec]]. + * + * Note: The wire protocol for this codec is not guaranteed to be compatible across versions + * of Spark. This is intended for use as an internal compression utility within a single Spark + * application. */ +@DeveloperApi class LZFCompressionCodec(conf: SparkConf) extends CompressionCodec { override def compressedOutputStream(s: OutputStream): OutputStream = { @@ -64,9 +78,15 @@ class LZFCompressionCodec(conf: SparkConf) extends CompressionCodec { /** + * :: DeveloperApi :: * Snappy implementation of [[org.apache.spark.io.CompressionCodec]]. * Block size can be configured by spark.io.compression.snappy.block.size. + * + * Note: The wire protocol for this codec is not guaranteed to be compatible across versions + * of Spark. This is intended for use as an internal compression utility within a single Spark + * application. */ +@DeveloperApi class SnappyCompressionCodec(conf: SparkConf) extends CompressionCodec { override def compressedOutputStream(s: OutputStream): OutputStream = { diff --git a/core/src/main/scala/org/apache/spark/metrics/MetricsConfig.scala b/core/src/main/scala/org/apache/spark/metrics/MetricsConfig.scala index 6883a54494598..3e3e18c3537d0 100644 --- a/core/src/main/scala/org/apache/spark/metrics/MetricsConfig.scala +++ b/core/src/main/scala/org/apache/spark/metrics/MetricsConfig.scala @@ -42,7 +42,7 @@ private[spark] class MetricsConfig(val configFile: Option[String]) extends Loggi } def initialize() { - //Add default properties in case there's no properties file + // Add default properties in case there's no properties file setDefaultProperties(properties) // If spark.metrics.conf is not set, try to get file in class path diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/ConsoleSink.scala b/core/src/main/scala/org/apache/spark/metrics/sink/ConsoleSink.scala index 4d2ffc54d8983..05852f1f98993 100644 --- a/core/src/main/scala/org/apache/spark/metrics/sink/ConsoleSink.scala +++ b/core/src/main/scala/org/apache/spark/metrics/sink/ConsoleSink.scala @@ -25,7 +25,7 @@ import com.codahale.metrics.{ConsoleReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem -class ConsoleSink(val property: Properties, val registry: MetricRegistry, +private[spark] class ConsoleSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CONSOLE_DEFAULT_PERIOD = 10 val CONSOLE_DEFAULT_UNIT = "SECONDS" @@ -38,7 +38,7 @@ class ConsoleSink(val property: Properties, val registry: MetricRegistry, case None => CONSOLE_DEFAULT_PERIOD } - val pollUnit = Option(property.getProperty(CONSOLE_KEY_UNIT)) match { + val pollUnit: TimeUnit = Option(property.getProperty(CONSOLE_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CONSOLE_DEFAULT_UNIT) } diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/CsvSink.scala b/core/src/main/scala/org/apache/spark/metrics/sink/CsvSink.scala index 319f40815d65f..42c1200926fea 100644 --- a/core/src/main/scala/org/apache/spark/metrics/sink/CsvSink.scala +++ b/core/src/main/scala/org/apache/spark/metrics/sink/CsvSink.scala @@ -26,7 +26,7 @@ import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem -class CsvSink(val property: Properties, val registry: MetricRegistry, +private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" @@ -41,7 +41,7 @@ class CsvSink(val property: Properties, val registry: MetricRegistry, case None => CSV_DEFAULT_PERIOD } - val pollUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { + val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/GraphiteSink.scala b/core/src/main/scala/org/apache/spark/metrics/sink/GraphiteSink.scala index 0ffdf3846dc4a..aeb4ad44a0647 100644 --- a/core/src/main/scala/org/apache/spark/metrics/sink/GraphiteSink.scala +++ b/core/src/main/scala/org/apache/spark/metrics/sink/GraphiteSink.scala @@ -27,7 +27,7 @@ import com.codahale.metrics.graphite.{Graphite, GraphiteReporter} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem -class GraphiteSink(val property: Properties, val registry: MetricRegistry, +private[spark] class GraphiteSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val GRAPHITE_DEFAULT_PERIOD = 10 val GRAPHITE_DEFAULT_UNIT = "SECONDS" @@ -39,7 +39,7 @@ class GraphiteSink(val property: Properties, val registry: MetricRegistry, val GRAPHITE_KEY_UNIT = "unit" val GRAPHITE_KEY_PREFIX = "prefix" - def propertyToOption(prop: String) = Option(property.getProperty(prop)) + def propertyToOption(prop: String): Option[String] = Option(property.getProperty(prop)) if (!propertyToOption(GRAPHITE_KEY_HOST).isDefined) { throw new Exception("Graphite sink requires 'host' property.") @@ -57,7 +57,7 @@ class GraphiteSink(val property: Properties, val registry: MetricRegistry, case None => GRAPHITE_DEFAULT_PERIOD } - val pollUnit = propertyToOption(GRAPHITE_KEY_UNIT) match { + val pollUnit: TimeUnit = propertyToOption(GRAPHITE_KEY_UNIT) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(GRAPHITE_DEFAULT_UNIT) } diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/JmxSink.scala b/core/src/main/scala/org/apache/spark/metrics/sink/JmxSink.scala index 3b5edd5c376f0..ed27234b4e760 100644 --- a/core/src/main/scala/org/apache/spark/metrics/sink/JmxSink.scala +++ b/core/src/main/scala/org/apache/spark/metrics/sink/JmxSink.scala @@ -22,7 +22,7 @@ import java.util.Properties import com.codahale.metrics.{JmxReporter, MetricRegistry} import org.apache.spark.SecurityManager -class JmxSink(val property: Properties, val registry: MetricRegistry, +private[spark] class JmxSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val reporter: JmxReporter = JmxReporter.forRegistry(registry).build() diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/MetricsServlet.scala b/core/src/main/scala/org/apache/spark/metrics/sink/MetricsServlet.scala index 3110eccdee4fc..571539ba5e467 100644 --- a/core/src/main/scala/org/apache/spark/metrics/sink/MetricsServlet.scala +++ b/core/src/main/scala/org/apache/spark/metrics/sink/MetricsServlet.scala @@ -28,9 +28,9 @@ import com.fasterxml.jackson.databind.ObjectMapper import org.eclipse.jetty.servlet.ServletContextHandler import org.apache.spark.SecurityManager -import org.apache.spark.ui.JettyUtils +import org.apache.spark.ui.JettyUtils._ -class MetricsServlet(val property: Properties, val registry: MetricRegistry, +private[spark] class MetricsServlet(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SERVLET_KEY_PATH = "path" val SERVLET_KEY_SAMPLE = "sample" @@ -46,10 +46,8 @@ class MetricsServlet(val property: Properties, val registry: MetricRegistry, new MetricsModule(TimeUnit.SECONDS, TimeUnit.MILLISECONDS, servletShowSample)) def getHandlers = Array[ServletContextHandler]( - JettyUtils.createServletHandler(servletPath, - JettyUtils.createServlet( - new JettyUtils.ServletParams(request => getMetricsSnapshot(request), "text/json"), - securityMgr) ) + createServletHandler(servletPath, + new ServletParams(request => getMetricsSnapshot(request), "text/json"), securityMgr) ) def getMetricsSnapshot(request: HttpServletRequest): String = { diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/Sink.scala b/core/src/main/scala/org/apache/spark/metrics/sink/Sink.scala index 3a739aa563eae..6f2b5a06027ea 100644 --- a/core/src/main/scala/org/apache/spark/metrics/sink/Sink.scala +++ b/core/src/main/scala/org/apache/spark/metrics/sink/Sink.scala @@ -17,7 +17,7 @@ package org.apache.spark.metrics.sink -trait Sink { +private[spark] trait Sink { def start: Unit def stop: Unit } diff --git a/core/src/main/scala/org/apache/spark/metrics/source/JvmSource.scala b/core/src/main/scala/org/apache/spark/metrics/source/JvmSource.scala index 75cb2b8973aa1..f865f9648a91e 100644 --- a/core/src/main/scala/org/apache/spark/metrics/source/JvmSource.scala +++ b/core/src/main/scala/org/apache/spark/metrics/source/JvmSource.scala @@ -20,7 +20,7 @@ package org.apache.spark.metrics.source import com.codahale.metrics.MetricRegistry import com.codahale.metrics.jvm.{GarbageCollectorMetricSet, MemoryUsageGaugeSet} -class JvmSource extends Source { +private[spark] class JvmSource extends Source { val sourceName = "jvm" val metricRegistry = new MetricRegistry() diff --git a/core/src/main/scala/org/apache/spark/metrics/source/Source.scala b/core/src/main/scala/org/apache/spark/metrics/source/Source.scala index 3fee55cc6dcd5..1dda2cd83b2a9 100644 --- a/core/src/main/scala/org/apache/spark/metrics/source/Source.scala +++ b/core/src/main/scala/org/apache/spark/metrics/source/Source.scala @@ -19,7 +19,7 @@ package org.apache.spark.metrics.source import com.codahale.metrics.MetricRegistry -trait Source { +private[spark] trait Source { def sourceName: String def metricRegistry: MetricRegistry } diff --git a/core/src/main/scala/org/apache/spark/network/Connection.scala b/core/src/main/scala/org/apache/spark/network/Connection.scala index 8fd9c2b87d256..2f7576c53b482 100644 --- a/core/src/main/scala/org/apache/spark/network/Connection.scala +++ b/core/src/main/scala/org/apache/spark/network/Connection.scala @@ -48,7 +48,7 @@ abstract class Connection(val channel: SocketChannel, val selector: Selector, channel.socket.setTcpNoDelay(true) channel.socket.setReuseAddress(true) channel.socket.setKeepAlive(true) - /*channel.socket.setReceiveBufferSize(32768) */ + /* channel.socket.setReceiveBufferSize(32768) */ @volatile private var closed = false var onCloseCallback: Connection => Unit = null @@ -206,12 +206,12 @@ class SendingConnection(val address: InetSocketAddress, selector_ : Selector, private class Outbox { val messages = new Queue[Message]() - val defaultChunkSize = 65536 //32768 //16384 + val defaultChunkSize = 65536 var nextMessageToBeUsed = 0 def addMessage(message: Message) { messages.synchronized{ - /*messages += message*/ + /* messages += message */ messages.enqueue(message) logDebug("Added [" + message + "] to outbox for sending to " + "[" + getRemoteConnectionManagerId() + "]") @@ -221,8 +221,8 @@ class SendingConnection(val address: InetSocketAddress, selector_ : Selector, def getChunk(): Option[MessageChunk] = { messages.synchronized { while (!messages.isEmpty) { - /*nextMessageToBeUsed = nextMessageToBeUsed % messages.size */ - /*val message = messages(nextMessageToBeUsed)*/ + /* nextMessageToBeUsed = nextMessageToBeUsed % messages.size */ + /* val message = messages(nextMessageToBeUsed) */ val message = messages.dequeue val chunk = message.getChunkForSending(defaultChunkSize) if (chunk.isDefined) { @@ -262,7 +262,7 @@ class SendingConnection(val address: InetSocketAddress, selector_ : Selector, val currentBuffers = new ArrayBuffer[ByteBuffer]() - /*channel.socket.setSendBufferSize(256 * 1024)*/ + /* channel.socket.setSendBufferSize(256 * 1024) */ override def getRemoteAddress() = address @@ -355,7 +355,7 @@ class SendingConnection(val address: InetSocketAddress, selector_ : Selector, } case None => { // changeConnectionKeyInterest(0) - /*key.interestOps(0)*/ + /* key.interestOps(0) */ return false } } @@ -540,10 +540,10 @@ private[spark] class ReceivingConnection( return false } - /*logDebug("Read " + bytesRead + " bytes for the buffer")*/ + /* logDebug("Read " + bytesRead + " bytes for the buffer") */ if (currentChunk.buffer.remaining == 0) { - /*println("Filled buffer at " + System.currentTimeMillis)*/ + /* println("Filled buffer at " + System.currentTimeMillis) */ val bufferMessage = inbox.getMessageForChunk(currentChunk).get if (bufferMessage.isCompletelyReceived) { bufferMessage.flip diff --git a/core/src/main/scala/org/apache/spark/network/ConnectionManager.scala b/core/src/main/scala/org/apache/spark/network/ConnectionManager.scala index a75130cba2a2e..bdf586351ac14 100644 --- a/core/src/main/scala/org/apache/spark/network/ConnectionManager.scala +++ b/core/src/main/scala/org/apache/spark/network/ConnectionManager.scala @@ -17,7 +17,6 @@ package org.apache.spark.network -import java.net._ import java.nio._ import java.nio.channels._ import java.nio.channels.spi._ @@ -505,7 +504,7 @@ private[spark] class ConnectionManager(port: Int, conf: SparkConf, } } handleMessageExecutor.execute(runnable) - /*handleMessage(connection, message)*/ + /* handleMessage(connection, message) */ } private def handleClientAuthentication( @@ -733,7 +732,7 @@ private[spark] class ConnectionManager(port: Int, conf: SparkConf, logTrace("Sending Security [" + message + "] to [" + connManagerId + "]") val connection = connectionsById.getOrElseUpdate(connManagerId, startNewConnection()) - //send security message until going connection has been authenticated + // send security message until going connection has been authenticated connection.send(message) wakeupSelector() @@ -859,14 +858,14 @@ private[spark] object ConnectionManager { None }) - /*testSequentialSending(manager)*/ - /*System.gc()*/ + /* testSequentialSending(manager) */ + /* System.gc() */ - /*testParallelSending(manager)*/ - /*System.gc()*/ + /* testParallelSending(manager) */ + /* System.gc() */ - /*testParallelDecreasingSending(manager)*/ - /*System.gc()*/ + /* testParallelDecreasingSending(manager) */ + /* System.gc() */ testContinuousSending(manager) System.gc() @@ -948,7 +947,7 @@ private[spark] object ConnectionManager { val ms = finishTime - startTime val tput = mb * 1000.0 / ms println("--------------------------") - /*println("Started at " + startTime + ", finished at " + finishTime) */ + /* println("Started at " + startTime + ", finished at " + finishTime) */ println("Sent " + mb + " MB in " + ms + " ms (" + tput + " MB/s)") println("--------------------------") println() diff --git a/core/src/main/scala/org/apache/spark/network/ConnectionManagerTest.scala b/core/src/main/scala/org/apache/spark/network/ConnectionManagerTest.scala index 35f64134b073a..9d9b9dbdd5331 100644 --- a/core/src/main/scala/org/apache/spark/network/ConnectionManagerTest.scala +++ b/core/src/main/scala/org/apache/spark/network/ConnectionManagerTest.scala @@ -47,8 +47,8 @@ private[spark] object ConnectionManagerTest extends Logging{ val slaves = slavesFile.mkString.split("\n") slavesFile.close() - /*println("Slaves")*/ - /*slaves.foreach(println)*/ + /* println("Slaves") */ + /* slaves.foreach(println) */ val tasknum = if (args.length > 2) args(2).toInt else slaves.length val size = ( if (args.length > 3) (args(3).toInt) else 10 ) * 1024 * 1024 val count = if (args.length > 4) args(4).toInt else 3 diff --git a/core/src/main/scala/org/apache/spark/network/ReceiverTest.scala b/core/src/main/scala/org/apache/spark/network/ReceiverTest.scala index 3c09a713c6fe0..2b41c403b2e0a 100644 --- a/core/src/main/scala/org/apache/spark/network/ReceiverTest.scala +++ b/core/src/main/scala/org/apache/spark/network/ReceiverTest.scala @@ -27,7 +27,7 @@ private[spark] object ReceiverTest { println("Started connection manager with id = " + manager.id) manager.onReceiveMessage((msg: Message, id: ConnectionManagerId) => { - /*println("Received [" + msg + "] from [" + id + "] at " + System.currentTimeMillis)*/ + /* println("Received [" + msg + "] from [" + id + "] at " + System.currentTimeMillis) */ val buffer = ByteBuffer.wrap("response".getBytes) Some(Message.createBufferMessage(buffer, msg.id)) }) diff --git a/core/src/main/scala/org/apache/spark/network/SenderTest.scala b/core/src/main/scala/org/apache/spark/network/SenderTest.scala index aac2c24a46faa..14c094c6177d5 100644 --- a/core/src/main/scala/org/apache/spark/network/SenderTest.scala +++ b/core/src/main/scala/org/apache/spark/network/SenderTest.scala @@ -50,7 +50,7 @@ private[spark] object SenderTest { (0 until count).foreach(i => { val dataMessage = Message.createBufferMessage(buffer.duplicate) val startTime = System.currentTimeMillis - /*println("Started timer at " + startTime)*/ + /* println("Started timer at " + startTime) */ val responseStr = manager.sendMessageReliablySync(targetConnectionManagerId, dataMessage) .map { response => val buffer = response.asInstanceOf[BufferMessage].buffers(0) diff --git a/core/src/main/scala/org/apache/spark/network/netty/FileHeader.scala b/core/src/main/scala/org/apache/spark/network/netty/FileHeader.scala index f9082ffb9141a..4164e81d3a8ae 100644 --- a/core/src/main/scala/org/apache/spark/network/netty/FileHeader.scala +++ b/core/src/main/scala/org/apache/spark/network/netty/FileHeader.scala @@ -32,7 +32,7 @@ private[spark] class FileHeader ( buf.writeInt(fileLen) buf.writeInt(blockId.name.length) blockId.name.foreach((x: Char) => buf.writeByte(x)) - //padding the rest of header + // padding the rest of header if (FileHeader.HEADER_SIZE - buf.readableBytes > 0 ) { buf.writeZero(FileHeader.HEADER_SIZE - buf.readableBytes) } else { diff --git a/core/src/main/scala/org/apache/spark/package.scala b/core/src/main/scala/org/apache/spark/package.scala index 2625a7f6a575a..59bbb1171f239 100644 --- a/core/src/main/scala/org/apache/spark/package.scala +++ b/core/src/main/scala/org/apache/spark/package.scala @@ -32,7 +32,16 @@ package org.apache * * Java programmers should reference the [[spark.api.java]] package * for Spark programming APIs in Java. + * + * Classes and methods marked with + * Experimental are user-facing features which have not been officially adopted by the + * Spark project. These are subject to change or removal in minor releases. + * + * Classes and methods marked with + * Developer API are intended for advanced users want to extend Spark through lower + * level interfaces. These are subject to changes or removal in minor releases. */ + package object spark { // For package docs only } diff --git a/core/src/main/scala/org/apache/spark/partial/BoundedDouble.scala b/core/src/main/scala/org/apache/spark/partial/BoundedDouble.scala index 5f4450859cc9b..aed0353344427 100644 --- a/core/src/main/scala/org/apache/spark/partial/BoundedDouble.scala +++ b/core/src/main/scala/org/apache/spark/partial/BoundedDouble.scala @@ -17,9 +17,13 @@ package org.apache.spark.partial +import org.apache.spark.annotation.Experimental + /** - * A Double with error bars on it. + * :: Experimental :: + * A Double value with error bars and associated confidence. */ +@Experimental class BoundedDouble(val mean: Double, val confidence: Double, val low: Double, val high: Double) { override def toString(): String = "[%.3f, %.3f]".format(low, high) } diff --git a/core/src/main/scala/org/apache/spark/partial/PartialResult.scala b/core/src/main/scala/org/apache/spark/partial/PartialResult.scala index 812368e04ac0d..eade07fbcbe37 100644 --- a/core/src/main/scala/org/apache/spark/partial/PartialResult.scala +++ b/core/src/main/scala/org/apache/spark/partial/PartialResult.scala @@ -17,6 +17,9 @@ package org.apache.spark.partial +import org.apache.spark.annotation.Experimental + +@Experimental class PartialResult[R](initialVal: R, isFinal: Boolean) { private var finalValue: Option[R] = if (isFinal) Some(initialVal) else None private var failure: Option[Exception] = None diff --git a/core/src/main/scala/org/apache/spark/rdd/AsyncRDDActions.scala b/core/src/main/scala/org/apache/spark/rdd/AsyncRDDActions.scala index d1c74a5063510..aed951a40b40c 100644 --- a/core/src/main/scala/org/apache/spark/rdd/AsyncRDDActions.scala +++ b/core/src/main/scala/org/apache/spark/rdd/AsyncRDDActions.scala @@ -24,11 +24,14 @@ import scala.concurrent.ExecutionContext.Implicits.global import scala.reflect.ClassTag import org.apache.spark.{ComplexFutureAction, FutureAction, Logging} +import org.apache.spark.annotation.Experimental /** + * :: Experimental :: * A set of asynchronous RDD actions available through an implicit conversion. * Import `org.apache.spark.SparkContext._` at the top of your program to use these functions. */ +@Experimental class AsyncRDDActions[T: ClassTag](self: RDD[T]) extends Serializable with Logging { /** diff --git a/core/src/main/scala/org/apache/spark/rdd/CoGroupedRDD.scala b/core/src/main/scala/org/apache/spark/rdd/CoGroupedRDD.scala index 699a10c96c227..c6e79557f08a1 100644 --- a/core/src/main/scala/org/apache/spark/rdd/CoGroupedRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/CoGroupedRDD.scala @@ -23,7 +23,9 @@ import scala.collection.mutable.ArrayBuffer import org.apache.spark.{InterruptibleIterator, Partition, Partitioner, SparkEnv, TaskContext} import org.apache.spark.{Dependency, OneToOneDependency, ShuffleDependency} +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.util.collection.{ExternalAppendOnlyMap, AppendOnlyMap} +import org.apache.spark.serializer.Serializer private[spark] sealed trait CoGroupSplitDep extends Serializable @@ -50,12 +52,17 @@ private[spark] class CoGroupPartition(idx: Int, val deps: Array[CoGroupSplitDep] } /** + * :: DeveloperApi :: * A RDD that cogroups its parents. For each key k in parent RDDs, the resulting RDD contains a * tuple with the list of values for that key. * + * Note: This is an internal API. We recommend users use RDD.coGroup(...) instead of + * instantiating this directly. + * @param rdds parent RDDs. - * @param part partitioner used to partition the shuffle output. + * @param part partitioner used to partition the shuffle output */ +@DeveloperApi class CoGroupedRDD[K](@transient var rdds: Seq[RDD[_ <: Product2[K, _]]], part: Partitioner) extends RDD[(K, Seq[Seq[_]])](rdds.head.context, Nil) { @@ -66,10 +73,10 @@ class CoGroupedRDD[K](@transient var rdds: Seq[RDD[_ <: Product2[K, _]]], part: private type CoGroupValue = (Any, Int) // Int is dependency number private type CoGroupCombiner = Seq[CoGroup] - private var serializerClass: String = null + private var serializer: Serializer = null - def setSerializer(cls: String): CoGroupedRDD[K] = { - serializerClass = cls + def setSerializer(serializer: Serializer): CoGroupedRDD[K] = { + this.serializer = serializer this } @@ -80,7 +87,7 @@ class CoGroupedRDD[K](@transient var rdds: Seq[RDD[_ <: Product2[K, _]]], part: new OneToOneDependency(rdd) } else { logDebug("Adding shuffle dependency with " + rdd) - new ShuffleDependency[Any, Any](rdd, part, serializerClass) + new ShuffleDependency[Any, Any](rdd, part, serializer) } } } @@ -102,7 +109,7 @@ class CoGroupedRDD[K](@transient var rdds: Seq[RDD[_ <: Product2[K, _]]], part: array } - override val partitioner = Some(part) + override val partitioner: Some[Partitioner] = Some(part) override def compute(s: Partition, context: TaskContext): Iterator[(K, CoGroupCombiner)] = { val sparkConf = SparkEnv.get.conf @@ -113,18 +120,17 @@ class CoGroupedRDD[K](@transient var rdds: Seq[RDD[_ <: Product2[K, _]]], part: // A list of (rdd iterator, dependency number) pairs val rddIterators = new ArrayBuffer[(Iterator[Product2[K, Any]], Int)] for ((dep, depNum) <- split.deps.zipWithIndex) dep match { - case NarrowCoGroupSplitDep(rdd, _, itsSplit) => { + case NarrowCoGroupSplitDep(rdd, _, itsSplit) => // Read them from the parent val it = rdd.iterator(itsSplit, context).asInstanceOf[Iterator[Product2[K, Any]]] rddIterators += ((it, depNum)) - } - case ShuffleCoGroupSplitDep(shuffleId) => { + + case ShuffleCoGroupSplitDep(shuffleId) => // Read map outputs of shuffle val fetcher = SparkEnv.get.shuffleFetcher - val ser = SparkEnv.get.serializerManager.get(serializerClass, sparkConf) + val ser = Serializer.getSerializer(serializer) val it = fetcher.fetch[Product2[K, Any]](shuffleId, split.index, context, ser) rddIterators += ((it, depNum)) - } } if (!externalSorting) { diff --git a/core/src/main/scala/org/apache/spark/rdd/CoalescedRDD.scala b/core/src/main/scala/org/apache/spark/rdd/CoalescedRDD.scala index 4e82b51313bf0..44401a663440c 100644 --- a/core/src/main/scala/org/apache/spark/rdd/CoalescedRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/CoalescedRDD.scala @@ -32,7 +32,7 @@ import org.apache.spark._ * @param parentsIndices list of indices in the parent that have been coalesced into this partition * @param preferredLocation the preferred location for this partition */ -case class CoalescedRDDPartition( +private[spark] case class CoalescedRDDPartition( index: Int, @transient rdd: RDD[_], parentsIndices: Array[Int], @@ -70,7 +70,7 @@ case class CoalescedRDDPartition( * @param maxPartitions number of desired partitions in the coalesced RDD * @param balanceSlack used to trade-off balance and locality. 1.0 is all locality, 0 is all balance */ -class CoalescedRDD[T: ClassTag]( +private[spark] class CoalescedRDD[T: ClassTag]( @transient var prev: RDD[T], maxPartitions: Int, balanceSlack: Double = 0.10) diff --git a/core/src/main/scala/org/apache/spark/rdd/DoubleRDDFunctions.scala b/core/src/main/scala/org/apache/spark/rdd/DoubleRDDFunctions.scala index a7b6b3b5146ce..2306c9736b334 100644 --- a/core/src/main/scala/org/apache/spark/rdd/DoubleRDDFunctions.scala +++ b/core/src/main/scala/org/apache/spark/rdd/DoubleRDDFunctions.scala @@ -17,6 +17,7 @@ package org.apache.spark.rdd +import org.apache.spark.annotation.Experimental import org.apache.spark.{TaskContext, Logging} import org.apache.spark.partial.BoundedDouble import org.apache.spark.partial.MeanEvaluator @@ -63,14 +64,22 @@ class DoubleRDDFunctions(self: RDD[Double]) extends Logging with Serializable { */ def sampleVariance(): Double = stats().sampleVariance - /** (Experimental) Approximate operation to return the mean within a timeout. */ + /** + * :: Experimental :: + * Approximate operation to return the mean within a timeout. + */ + @Experimental def meanApprox(timeout: Long, confidence: Double = 0.95): PartialResult[BoundedDouble] = { val processPartition = (ctx: TaskContext, ns: Iterator[Double]) => StatCounter(ns) val evaluator = new MeanEvaluator(self.partitions.size, confidence) self.context.runApproximateJob(self, processPartition, evaluator, timeout) } - /** (Experimental) Approximate operation to return the sum within a timeout. */ + /** + * :: Experimental :: + * Approximate operation to return the sum within a timeout. + */ + @Experimental def sumApprox(timeout: Long, confidence: Double = 0.95): PartialResult[BoundedDouble] = { val processPartition = (ctx: TaskContext, ns: Iterator[Double]) => StatCounter(ns) val evaluator = new SumEvaluator(self.partitions.size, confidence) diff --git a/core/src/main/scala/org/apache/spark/rdd/EmptyRDD.scala b/core/src/main/scala/org/apache/spark/rdd/EmptyRDD.scala index a84e5f9fd8ef8..a2d7e344cf1b2 100644 --- a/core/src/main/scala/org/apache/spark/rdd/EmptyRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/EmptyRDD.scala @@ -22,9 +22,9 @@ import scala.reflect.ClassTag import org.apache.spark.{Partition, SparkContext, TaskContext} /** - * An RDD that is empty, i.e. has no element in it. + * An RDD that has no partitions and no elements. */ -class EmptyRDD[T: ClassTag](sc: SparkContext) extends RDD[T](sc, Nil) { +private[spark] class EmptyRDD[T: ClassTag](sc: SparkContext) extends RDD[T](sc, Nil) { override def getPartitions: Array[Partition] = Array.empty diff --git a/core/src/main/scala/org/apache/spark/rdd/HadoopRDD.scala b/core/src/main/scala/org/apache/spark/rdd/HadoopRDD.scala index 100ddb360732a..6811e1abb8b70 100644 --- a/core/src/main/scala/org/apache/spark/rdd/HadoopRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/HadoopRDD.scala @@ -17,6 +17,8 @@ package org.apache.spark.rdd +import java.text.SimpleDateFormat +import java.util.Date import java.io.EOFException import scala.collection.immutable.Map @@ -27,9 +29,13 @@ import org.apache.hadoop.mapred.InputSplit import org.apache.hadoop.mapred.JobConf import org.apache.hadoop.mapred.RecordReader import org.apache.hadoop.mapred.Reporter +import org.apache.hadoop.mapred.JobID +import org.apache.hadoop.mapred.TaskAttemptID +import org.apache.hadoop.mapred.TaskID import org.apache.hadoop.util.ReflectionUtils import org.apache.spark._ +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.broadcast.Broadcast import org.apache.spark.deploy.SparkHadoopUtil import org.apache.spark.util.NextIterator @@ -65,9 +71,13 @@ private[spark] class HadoopPartition(rddId: Int, idx: Int, @transient s: InputSp } /** + * :: DeveloperApi :: * An RDD that provides core functionality for reading data stored in Hadoop (e.g., files in HDFS, * sources in HBase, or S3), using the older MapReduce API (`org.apache.hadoop.mapred`). * + * Note: Instantiating this class directly is not recommended, please use + * [[org.apache.spark.SparkContext.hadoopRDD()]] + * * @param sc The SparkContext to associate the RDD with. * @param broadcastedConf A general Hadoop Configuration, or a subclass of it. If the enclosed * variabe references an instance of JobConf, then that JobConf will be used for the Hadoop job. @@ -79,6 +89,7 @@ private[spark] class HadoopPartition(rddId: Int, idx: Int, @transient s: InputSp * @param valueClass Class of the value associated with the inputFormatClass. * @param minSplits Minimum number of Hadoop Splits (HadoopRDD partitions) to generate. */ +@DeveloperApi class HadoopRDD[K, V]( sc: SparkContext, broadcastedConf: Broadcast[SerializableWritable[Configuration]], @@ -111,6 +122,9 @@ class HadoopRDD[K, V]( protected val inputFormatCacheKey = "rdd_%d_input_format".format(id) + // used to build JobTracker ID + private val createTime = new Date() + // Returns a JobConf that will be used on slaves to obtain input splits for Hadoop reads. protected def getJobConf(): JobConf = { val conf: Configuration = broadcastedConf.value.value @@ -163,14 +177,16 @@ class HadoopRDD[K, V]( array } - override def compute(theSplit: Partition, context: TaskContext) = { + override def compute(theSplit: Partition, context: TaskContext): InterruptibleIterator[(K, V)] = { val iter = new NextIterator[(K, V)] { + val split = theSplit.asInstanceOf[HadoopPartition] logInfo("Input split: " + split.inputSplit) var reader: RecordReader[K, V] = null - val jobConf = getJobConf() val inputFormat = getInputFormat(jobConf) + HadoopRDD.addLocalConfiguration(new SimpleDateFormat("yyyyMMddHHmm").format(createTime), + context.stageId, theSplit.index, context.attemptId.toInt, jobConf) reader = inputFormat.getRecordReader(split.inputSplit.value, jobConf, Reporter.NULL) // Register an on-task-completion callback to close the input stream. @@ -222,4 +238,17 @@ private[spark] object HadoopRDD { def putCachedMetadata(key: String, value: Any) = SparkEnv.get.hadoopJobMetadata.put(key, value) + + /** Add Hadoop configuration specific to a single partition and attempt. */ + def addLocalConfiguration(jobTrackerId: String, jobId: Int, splitId: Int, attemptId: Int, + conf: JobConf) { + val jobID = new JobID(jobTrackerId, jobId) + val taId = new TaskAttemptID(new TaskID(jobID, true, splitId), attemptId) + + conf.set("mapred.tip.id", taId.getTaskID.toString) + conf.set("mapred.task.id", taId.toString) + conf.setBoolean("mapred.task.is.map", true) + conf.setInt("mapred.task.partition", splitId) + conf.set("mapred.job.id", jobID.toString) + } } diff --git a/core/src/main/scala/org/apache/spark/rdd/JdbcRDD.scala b/core/src/main/scala/org/apache/spark/rdd/JdbcRDD.scala index 8df8718f3b65b..a76a070b5b863 100644 --- a/core/src/main/scala/org/apache/spark/rdd/JdbcRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/JdbcRDD.scala @@ -27,7 +27,7 @@ import org.apache.spark.util.NextIterator private[spark] class JdbcPartition(idx: Int, val lower: Long, val upper: Long) extends Partition { override def index = idx } - +// TODO: Expose a jdbcRDD function in SparkContext and mark this as semi-private /** * An RDD that executes an SQL query on a JDBC connection and reads results. * For usage example, see test case JdbcRDDSuite. @@ -116,7 +116,7 @@ class JdbcRDD[T: ClassTag]( } object JdbcRDD { - def resultSetToObjectArray(rs: ResultSet) = { + def resultSetToObjectArray(rs: ResultSet): Array[Object] = { Array.tabulate[Object](rs.getMetaData.getColumnCount)(i => rs.getObject(i + 1)) } } diff --git a/core/src/main/scala/org/apache/spark/rdd/NewHadoopRDD.scala b/core/src/main/scala/org/apache/spark/rdd/NewHadoopRDD.scala index d1fff296878c3..2d8dfa5a1645a 100644 --- a/core/src/main/scala/org/apache/spark/rdd/NewHadoopRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/NewHadoopRDD.scala @@ -25,6 +25,7 @@ import org.apache.hadoop.io.Writable import org.apache.hadoop.mapreduce._ import org.apache.spark.{InterruptibleIterator, Logging, Partition, SerializableWritable, SparkContext, TaskContext} +import org.apache.spark.annotation.DeveloperApi private[spark] class NewHadoopPartition(rddId: Int, val index: Int, @transient rawSplit: InputSplit with Writable) @@ -36,15 +37,20 @@ class NewHadoopPartition(rddId: Int, val index: Int, @transient rawSplit: InputS } /** + * :: DeveloperApi :: * An RDD that provides core functionality for reading data stored in Hadoop (e.g., files in HDFS, * sources in HBase, or S3), using the new MapReduce API (`org.apache.hadoop.mapreduce`). * + * Note: Instantiating this class directly is not recommended, please use + * [[org.apache.spark.SparkContext.newAPIHadoopRDD()]] + * * @param sc The SparkContext to associate the RDD with. * @param inputFormatClass Storage format of the data to be read. * @param keyClass Class of the key associated with the inputFormatClass. * @param valueClass Class of the value associated with the inputFormatClass. * @param conf The Hadoop configuration. */ +@DeveloperApi class NewHadoopRDD[K, V]( sc : SparkContext, inputFormatClass: Class[_ <: InputFormat[K, V]], @@ -80,7 +86,7 @@ class NewHadoopRDD[K, V]( result } - override def compute(theSplit: Partition, context: TaskContext) = { + override def compute(theSplit: Partition, context: TaskContext): InterruptibleIterator[(K, V)] = { val iter = new Iterator[(K, V)] { val split = theSplit.asInstanceOf[NewHadoopPartition] logInfo("Input split: " + split.serializableHadoopSplit) diff --git a/core/src/main/scala/org/apache/spark/rdd/PairRDDFunctions.scala b/core/src/main/scala/org/apache/spark/rdd/PairRDDFunctions.scala index 2384c8f2b6fd4..343e4325c0ef0 100644 --- a/core/src/main/scala/org/apache/spark/rdd/PairRDDFunctions.scala +++ b/core/src/main/scala/org/apache/spark/rdd/PairRDDFunctions.scala @@ -30,20 +30,22 @@ import scala.reflect.ClassTag import com.clearspring.analytics.stream.cardinality.HyperLogLog import org.apache.hadoop.conf.{Configurable, Configuration} -import org.apache.hadoop.fs.{FileSystem, Path} +import org.apache.hadoop.fs.FileSystem import org.apache.hadoop.io.SequenceFile.CompressionType import org.apache.hadoop.io.compress.CompressionCodec import org.apache.hadoop.mapred.{FileOutputCommitter, FileOutputFormat, JobConf, OutputFormat} -import org.apache.hadoop.mapreduce.{OutputFormat => NewOutputFormat, Job => NewAPIHadoopJob, RecordWriter => NewRecordWriter, JobContext, SparkHadoopMapReduceUtil} +import org.apache.hadoop.mapreduce.{OutputFormat => NewOutputFormat, Job => NewAPIHadoopJob, +RecordWriter => NewRecordWriter, SparkHadoopMapReduceUtil} import org.apache.hadoop.mapreduce.lib.output.{FileOutputFormat => NewFileOutputFormat} -// SparkHadoopWriter and SparkHadoopMapReduceUtil are actually source files defined in Spark. -import org.apache.hadoop.mapred.SparkHadoopWriter - import org.apache.spark._ +import org.apache.spark.annotation.Experimental +import org.apache.spark.deploy.SparkHadoopUtil +import org.apache.spark.SparkHadoopWriter import org.apache.spark.Partitioner.defaultPartitioner import org.apache.spark.SparkContext._ import org.apache.spark.partial.{BoundedDouble, PartialResult} +import org.apache.spark.serializer.Serializer import org.apache.spark.util.SerializableHyperLogLog /** @@ -73,7 +75,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) mergeCombiners: (C, C) => C, partitioner: Partitioner, mapSideCombine: Boolean = true, - serializerClass: String = null): RDD[(K, C)] = { + serializer: Serializer = null): RDD[(K, C)] = { require(mergeCombiners != null, "mergeCombiners must be defined") // required as of Spark 0.9.0 if (getKeyClass().isArray) { if (mapSideCombine) { @@ -93,13 +95,13 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) aggregator.combineValuesByKey(iter, context) }, preservesPartitioning = true) val partitioned = new ShuffledRDD[K, C, (K, C)](combined, partitioner) - .setSerializer(serializerClass) + .setSerializer(serializer) partitioned.mapPartitionsWithContext((context, iter) => { new InterruptibleIterator(context, aggregator.combineCombinersByKey(iter, context)) }, preservesPartitioning = true) } else { // Don't apply map-side combiner. - val values = new ShuffledRDD[K, V, (K, V)](self, partitioner).setSerializer(serializerClass) + val values = new ShuffledRDD[K, V, (K, V)](self, partitioner).setSerializer(serializer) values.mapPartitionsWithContext((context, iter) => { new InterruptibleIterator(context, aggregator.combineValuesByKey(iter, context)) }, preservesPartitioning = true) @@ -200,9 +202,11 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) def countByKey(): Map[K, Long] = self.map(_._1).countByValue() /** - * (Experimental) Approximate version of countByKey that can return a partial result if it does + * :: Experimental :: + * Approximate version of countByKey that can return a partial result if it does * not finish within a timeout. */ + @Experimental def countByKeyApprox(timeout: Long, confidence: Double = 0.95) : PartialResult[Map[K, BoundedDouble]] = { self.map(_._1).countByValueApprox(timeout, confidence) @@ -260,7 +264,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * Group the values for each key in the RDD into a single sequence. Allows controlling the * partitioning of the resulting key-value pair RDD by passing a Partitioner. */ - def groupByKey(partitioner: Partitioner): RDD[(K, Seq[V])] = { + def groupByKey(partitioner: Partitioner): RDD[(K, Iterable[V])] = { // groupByKey shouldn't use map side combine because map side combine does not // reduce the amount of data shuffled and requires all map side data be inserted // into a hash table, leading to more objects in the old gen. @@ -269,14 +273,14 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) def mergeCombiners(c1: ArrayBuffer[V], c2: ArrayBuffer[V]) = c1 ++ c2 val bufs = combineByKey[ArrayBuffer[V]]( createCombiner _, mergeValue _, mergeCombiners _, partitioner, mapSideCombine=false) - bufs.asInstanceOf[RDD[(K, Seq[V])]] + bufs.mapValues(_.toIterable) } /** * Group the values for each key in the RDD into a single sequence. Hash-partitions the * resulting RDD with into `numPartitions` partitions. */ - def groupByKey(numPartitions: Int): RDD[(K, Seq[V])] = { + def groupByKey(numPartitions: Int): RDD[(K, Iterable[V])] = { groupByKey(new HashPartitioner(numPartitions)) } @@ -297,7 +301,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) */ def join[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, W))] = { this.cogroup(other, partitioner).flatMapValues { case (vs, ws) => - for (v <- vs.iterator; w <- ws.iterator) yield (v, w) + for (v <- vs; w <- ws) yield (v, w) } } @@ -310,9 +314,9 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) def leftOuterJoin[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, Option[W]))] = { this.cogroup(other, partitioner).flatMapValues { case (vs, ws) => if (ws.isEmpty) { - vs.iterator.map(v => (v, None)) + vs.map(v => (v, None)) } else { - for (v <- vs.iterator; w <- ws.iterator) yield (v, Some(w)) + for (v <- vs; w <- ws) yield (v, Some(w)) } } } @@ -327,9 +331,9 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) : RDD[(K, (Option[V], W))] = { this.cogroup(other, partitioner).flatMapValues { case (vs, ws) => if (vs.isEmpty) { - ws.iterator.map(w => (None, w)) + ws.map(w => (None, w)) } else { - for (v <- vs.iterator; w <- ws.iterator) yield (Some(v), w) + for (v <- vs; w <- ws) yield (Some(v), w) } } } @@ -357,7 +361,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * Group the values for each key in the RDD into a single sequence. Hash-partitions the * resulting RDD with the existing partitioner/parallelism level. */ - def groupByKey(): RDD[(K, Seq[V])] = { + def groupByKey(): RDD[(K, Iterable[V])] = { groupByKey(defaultPartitioner(self)) } @@ -423,7 +427,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * Return the key-value pairs in this RDD to the master as a Map. */ def collectAsMap(): Map[K, V] = { - val data = self.toArray() + val data = self.collect() val map = new mutable.HashMap[K, V] map.sizeHint(data.length) data.foreach { case (k, v) => map.put(k, v) } @@ -452,7 +456,8 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * For each key k in `this` or `other`, return a resulting RDD that contains a tuple with the * list of values for that key in `this` as well as `other`. */ - def cogroup[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (Seq[V], Seq[W]))] = { + def cogroup[W](other: RDD[(K, W)], partitioner: Partitioner) + : RDD[(K, (Iterable[V], Iterable[W]))] = { if (partitioner.isInstanceOf[HashPartitioner] && getKeyClass().isArray) { throw new SparkException("Default partitioner cannot partition array keys.") } @@ -467,13 +472,15 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * tuple with the list of values for that key in `this`, `other1` and `other2`. */ def cogroup[W1, W2](other1: RDD[(K, W1)], other2: RDD[(K, W2)], partitioner: Partitioner) - : RDD[(K, (Seq[V], Seq[W1], Seq[W2]))] = { + : RDD[(K, (Iterable[V], Iterable[W1], Iterable[W2]))] = { if (partitioner.isInstanceOf[HashPartitioner] && getKeyClass().isArray) { throw new SparkException("Default partitioner cannot partition array keys.") } val cg = new CoGroupedRDD[K](Seq(self, other1, other2), partitioner) cg.mapValues { case Seq(vs, w1s, w2s) => - (vs.asInstanceOf[Seq[V]], w1s.asInstanceOf[Seq[W1]], w2s.asInstanceOf[Seq[W2]]) + (vs.asInstanceOf[Seq[V]], + w1s.asInstanceOf[Seq[W1]], + w2s.asInstanceOf[Seq[W2]]) } } @@ -481,7 +488,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * For each key k in `this` or `other`, return a resulting RDD that contains a tuple with the * list of values for that key in `this` as well as `other`. */ - def cogroup[W](other: RDD[(K, W)]): RDD[(K, (Seq[V], Seq[W]))] = { + def cogroup[W](other: RDD[(K, W)]): RDD[(K, (Iterable[V], Iterable[W]))] = { cogroup(other, defaultPartitioner(self, other)) } @@ -490,7 +497,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * tuple with the list of values for that key in `this`, `other1` and `other2`. */ def cogroup[W1, W2](other1: RDD[(K, W1)], other2: RDD[(K, W2)]) - : RDD[(K, (Seq[V], Seq[W1], Seq[W2]))] = { + : RDD[(K, (Iterable[V], Iterable[W1], Iterable[W2]))] = { cogroup(other1, other2, defaultPartitioner(self, other1, other2)) } @@ -498,7 +505,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * For each key k in `this` or `other`, return a resulting RDD that contains a tuple with the * list of values for that key in `this` as well as `other`. */ - def cogroup[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (Seq[V], Seq[W]))] = { + def cogroup[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (Iterable[V], Iterable[W]))] = { cogroup(other, new HashPartitioner(numPartitions)) } @@ -507,18 +514,18 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) * tuple with the list of values for that key in `this`, `other1` and `other2`. */ def cogroup[W1, W2](other1: RDD[(K, W1)], other2: RDD[(K, W2)], numPartitions: Int) - : RDD[(K, (Seq[V], Seq[W1], Seq[W2]))] = { + : RDD[(K, (Iterable[V], Iterable[W1], Iterable[W2]))] = { cogroup(other1, other2, new HashPartitioner(numPartitions)) } /** Alias for cogroup. */ - def groupWith[W](other: RDD[(K, W)]): RDD[(K, (Seq[V], Seq[W]))] = { + def groupWith[W](other: RDD[(K, W)]): RDD[(K, (Iterable[V], Iterable[W]))] = { cogroup(other, defaultPartitioner(self, other)) } /** Alias for cogroup. */ def groupWith[W1, W2](other1: RDD[(K, W1)], other2: RDD[(K, W2)]) - : RDD[(K, (Seq[V], Seq[W1], Seq[W2]))] = { + : RDD[(K, (Iterable[V], Iterable[W1], Iterable[W2]))] = { cogroup(other1, other2, defaultPartitioner(self, other1, other2)) } @@ -602,50 +609,9 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) val job = new NewAPIHadoopJob(conf) job.setOutputKeyClass(keyClass) job.setOutputValueClass(valueClass) - - val wrappedConf = new SerializableWritable(job.getConfiguration) - val outpath = new Path(path) - NewFileOutputFormat.setOutputPath(job, outpath) - val jobFormat = outputFormatClass.newInstance - jobFormat.checkOutputSpecs(job) - val formatter = new SimpleDateFormat("yyyyMMddHHmm") - val jobtrackerID = formatter.format(new Date()) - val stageId = self.id - def writeShard(context: TaskContext, iter: Iterator[(K,V)]): Int = { - // Hadoop wants a 32-bit task attempt ID, so if ours is bigger than Int.MaxValue, roll it - // around by taking a mod. We expect that no task will be attempted 2 billion times. - val attemptNumber = (context.attemptId % Int.MaxValue).toInt - /* "reduce task" */ - val attemptId = newTaskAttemptID(jobtrackerID, stageId, isMap = false, context.partitionId, - attemptNumber) - val hadoopContext = newTaskAttemptContext(wrappedConf.value, attemptId) - val format = outputFormatClass.newInstance - format match { - case c: Configurable => c.setConf(wrappedConf.value) - case _ => () - } - val committer = format.getOutputCommitter(hadoopContext) - committer.setupTask(hadoopContext) - val writer = format.getRecordWriter(hadoopContext).asInstanceOf[NewRecordWriter[K,V]] - while (iter.hasNext) { - val (k, v) = iter.next() - writer.write(k, v) - } - writer.close(hadoopContext) - committer.commitTask(hadoopContext) - return 1 - } - - /* apparently we need a TaskAttemptID to construct an OutputCommitter; - * however we're only going to use this local OutputCommitter for - * setupJob/commitJob, so we just use a dummy "map" task. - */ - val jobAttemptId = newTaskAttemptID(jobtrackerID, stageId, isMap = true, 0, 0) - val jobTaskContext = newTaskAttemptContext(wrappedConf.value, jobAttemptId) - val jobCommitter = jobFormat.getOutputCommitter(jobTaskContext) - jobCommitter.setupJob(jobTaskContext) - self.context.runJob(self, writeShard _) - jobCommitter.commitJob(jobTaskContext) + job.setOutputFormatClass(outputFormatClass) + job.getConfiguration.set("mapred.output.dir", path) + saveAsNewAPIHadoopDataset(job.getConfiguration) } /** @@ -691,6 +657,59 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) saveAsHadoopDataset(conf) } + /** + * Output the RDD to any Hadoop-supported storage system with new Hadoop API, using a Hadoop + * Configuration object for that storage system. The Conf should set an OutputFormat and any + * output paths required (e.g. a table name to write to) in the same way as it would be + * configured for a Hadoop MapReduce job. + */ + def saveAsNewAPIHadoopDataset(conf: Configuration) { + val job = new NewAPIHadoopJob(conf) + val formatter = new SimpleDateFormat("yyyyMMddHHmm") + val jobtrackerID = formatter.format(new Date()) + val stageId = self.id + val wrappedConf = new SerializableWritable(job.getConfiguration) + val outfmt = job.getOutputFormatClass + val jobFormat = outfmt.newInstance + + if (jobFormat.isInstanceOf[NewFileOutputFormat[_, _]]) { + // FileOutputFormat ignores the filesystem parameter + jobFormat.checkOutputSpecs(job) + } + + def writeShard(context: TaskContext, iter: Iterator[(K,V)]): Int = { + // Hadoop wants a 32-bit task attempt ID, so if ours is bigger than Int.MaxValue, roll it + // around by taking a mod. We expect that no task will be attempted 2 billion times. + val attemptNumber = (context.attemptId % Int.MaxValue).toInt + /* "reduce task" */ + val attemptId = newTaskAttemptID(jobtrackerID, stageId, isMap = false, context.partitionId, + attemptNumber) + val hadoopContext = newTaskAttemptContext(wrappedConf.value, attemptId) + val format = outfmt.newInstance + format match { + case c: Configurable => c.setConf(wrappedConf.value) + case _ => () + } + val committer = format.getOutputCommitter(hadoopContext) + committer.setupTask(hadoopContext) + val writer = format.getRecordWriter(hadoopContext).asInstanceOf[NewRecordWriter[K,V]] + while (iter.hasNext) { + val (k, v) = iter.next() + writer.write(k, v) + } + writer.close(hadoopContext) + committer.commitTask(hadoopContext) + return 1 + } + + val jobAttemptId = newTaskAttemptID(jobtrackerID, stageId, isMap = true, 0, 0) + val jobTaskContext = newTaskAttemptContext(wrappedConf.value, jobAttemptId) + val jobCommitter = jobFormat.getOutputCommitter(jobTaskContext) + jobCommitter.setupJob(jobTaskContext) + self.context.runJob(self, writeShard _) + jobCommitter.commitJob(jobTaskContext) + } + /** * Output the RDD to any Hadoop-supported storage system, using a Hadoop JobConf object for * that storage system. The JobConf should set an OutputFormat and any output paths required @@ -710,6 +729,7 @@ class PairRDDFunctions[K: ClassTag, V: ClassTag](self: RDD[(K, V)]) if (valueClass == null) { throw new SparkException("Output value class not set") } + SparkHadoopUtil.get.addCredentials(conf) logDebug("Saving as hadoop file of type (" + keyClass.getSimpleName + ", " + valueClass.getSimpleName + ")") diff --git a/core/src/main/scala/org/apache/spark/rdd/PartitionPruningRDD.scala b/core/src/main/scala/org/apache/spark/rdd/PartitionPruningRDD.scala index b0440ca7f32cf..f781a8d776f2a 100644 --- a/core/src/main/scala/org/apache/spark/rdd/PartitionPruningRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/PartitionPruningRDD.scala @@ -20,8 +20,10 @@ package org.apache.spark.rdd import scala.reflect.ClassTag import org.apache.spark.{NarrowDependency, Partition, TaskContext} +import org.apache.spark.annotation.DeveloperApi -class PartitionPruningRDDPartition(idx: Int, val parentSplit: Partition) extends Partition { +private[spark] class PartitionPruningRDDPartition(idx: Int, val parentSplit: Partition) + extends Partition { override val index = idx } @@ -30,7 +32,7 @@ class PartitionPruningRDDPartition(idx: Int, val parentSplit: Partition) extends * Represents a dependency between the PartitionPruningRDD and its parent. In this * case, the child RDD contains a subset of partitions of the parents'. */ -class PruneDependency[T](rdd: RDD[T], @transient partitionFilterFunc: Int => Boolean) +private[spark] class PruneDependency[T](rdd: RDD[T], @transient partitionFilterFunc: Int => Boolean) extends NarrowDependency[T](rdd) { @transient @@ -45,11 +47,13 @@ class PruneDependency[T](rdd: RDD[T], @transient partitionFilterFunc: Int => Boo /** + * :: DeveloperApi :: * A RDD used to prune RDD partitions/partitions so we can avoid launching tasks on * all partitions. An example use case: If we know the RDD is partitioned by range, * and the execution DAG has a filter on the key, we can avoid launching tasks * on partitions that don't have the range covering the key. */ +@DeveloperApi class PartitionPruningRDD[T: ClassTag]( @transient prev: RDD[T], @transient partitionFilterFunc: Int => Boolean) @@ -63,6 +67,7 @@ class PartitionPruningRDD[T: ClassTag]( } +@DeveloperApi object PartitionPruningRDD { /** diff --git a/core/src/main/scala/org/apache/spark/rdd/PartitionwiseSampledRDD.scala b/core/src/main/scala/org/apache/spark/rdd/PartitionwiseSampledRDD.scala index ce4c0d382baab..b4e3bb5d75e17 100644 --- a/core/src/main/scala/org/apache/spark/rdd/PartitionwiseSampledRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/PartitionwiseSampledRDD.scala @@ -42,7 +42,7 @@ class PartitionwiseSampledRDDPartition(val prev: Partition, val seed: Long) * @tparam T input RDD item type * @tparam U sampled RDD item type */ -class PartitionwiseSampledRDD[T: ClassTag, U: ClassTag]( +private[spark] class PartitionwiseSampledRDD[T: ClassTag, U: ClassTag]( prev: RDD[T], sampler: RandomSampler[T, U], @transient seed: Long = System.nanoTime) diff --git a/core/src/main/scala/org/apache/spark/rdd/PipedRDD.scala b/core/src/main/scala/org/apache/spark/rdd/PipedRDD.scala index 4250a9d02f764..e441d4a40ccd2 100644 --- a/core/src/main/scala/org/apache/spark/rdd/PipedRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/PipedRDD.scala @@ -17,6 +17,9 @@ package org.apache.spark.rdd +import java.io.File +import java.io.FilenameFilter +import java.io.IOException import java.io.PrintWriter import java.util.StringTokenizer @@ -27,18 +30,20 @@ import scala.io.Source import scala.reflect.ClassTag import org.apache.spark.{Partition, SparkEnv, TaskContext} +import org.apache.spark.util.Utils /** * An RDD that pipes the contents of each parent partition through an external command * (printing them one per line) and returns the output as a collection of strings. */ -class PipedRDD[T: ClassTag]( +private[spark] class PipedRDD[T: ClassTag]( prev: RDD[T], command: Seq[String], envVars: Map[String, String], printPipeContext: (String => Unit) => Unit, - printRDDElement: (T, String => Unit) => Unit) + printRDDElement: (T, String => Unit) => Unit, + separateWorkingDir: Boolean) extends RDD[String](prev) { // Similar to Runtime.exec(), if we are given a single string, split it into words @@ -48,12 +53,24 @@ class PipedRDD[T: ClassTag]( command: String, envVars: Map[String, String] = Map(), printPipeContext: (String => Unit) => Unit = null, - printRDDElement: (T, String => Unit) => Unit = null) = - this(prev, PipedRDD.tokenize(command), envVars, printPipeContext, printRDDElement) + printRDDElement: (T, String => Unit) => Unit = null, + separateWorkingDir: Boolean = false) = + this(prev, PipedRDD.tokenize(command), envVars, printPipeContext, printRDDElement, + separateWorkingDir) override def getPartitions: Array[Partition] = firstParent[T].partitions + /** + * A FilenameFilter that accepts anything that isn't equal to the name passed in. + * @param name of file or directory to leave out + */ + class NotEqualsFileNameFilter(filterName: String) extends FilenameFilter { + def accept(dir: File, name: String): Boolean = { + !name.equals(filterName) + } + } + override def compute(split: Partition, context: TaskContext): Iterator[String] = { val pb = new ProcessBuilder(command) // Add the environmental variables to the process. @@ -67,6 +84,38 @@ class PipedRDD[T: ClassTag]( currentEnvVars.putAll(hadoopSplit.getPipeEnvVars()) } + // When spark.worker.separated.working.directory option is turned on, each + // task will be run in separate directory. This should be resolve file + // access conflict issue + val taskDirectory = "./tasks/" + java.util.UUID.randomUUID.toString + var workInTaskDirectory = false + logDebug("taskDirectory = " + taskDirectory) + if (separateWorkingDir == true) { + val currentDir = new File(".") + logDebug("currentDir = " + currentDir.getAbsolutePath()) + val taskDirFile = new File(taskDirectory) + taskDirFile.mkdirs() + + try { + val tasksDirFilter = new NotEqualsFileNameFilter("tasks") + + // Need to add symlinks to jars, files, and directories. On Yarn we could have + // directories and other files not known to the SparkContext that were added via the + // Hadoop distributed cache. We also don't want to symlink to the /tasks directories we + // are creating here. + for (file <- currentDir.list(tasksDirFilter)) { + val fileWithDir = new File(currentDir, file) + Utils.symlink(new File(fileWithDir.getAbsolutePath()), + new File(taskDirectory + "/" + fileWithDir.getName())) + } + pb.directory(taskDirFile) + workInTaskDirectory = true + } catch { + case e: Exception => logError("Unable to setup task working directory: " + e.getMessage + + " (" + taskDirectory + ")") + } + } + val proc = pb.start() val env = SparkEnv.get @@ -112,6 +161,15 @@ class PipedRDD[T: ClassTag]( if (exitStatus != 0) { throw new Exception("Subprocess exited with status " + exitStatus) } + + // cleanup task working directory if used + if (workInTaskDirectory == true) { + scala.util.control.Exception.ignoring(classOf[IOException]) { + Utils.deleteRecursively(new File(taskDirectory)) + } + logDebug("Removed task working directory " + taskDirectory) + } + false } } diff --git a/core/src/main/scala/org/apache/spark/rdd/RDD.scala b/core/src/main/scala/org/apache/spark/rdd/RDD.scala index 3fe56963e0008..3437b2cac19c2 100644 --- a/core/src/main/scala/org/apache/spark/rdd/RDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/RDD.scala @@ -35,6 +35,7 @@ import org.apache.hadoop.mapred.TextOutputFormat import org.apache.spark._ import org.apache.spark.Partitioner._ import org.apache.spark.SparkContext._ +import org.apache.spark.annotation.{DeveloperApi, Experimental} import org.apache.spark.api.java.JavaRDD import org.apache.spark.partial.BoundedDouble import org.apache.spark.partial.CountEvaluator @@ -86,22 +87,34 @@ abstract class RDD[T: ClassTag]( // Methods that should be implemented by subclasses of RDD // ======================================================================= - /** Implemented by subclasses to compute a given partition. */ + /** + * :: DeveloperApi :: + * Implemented by subclasses to compute a given partition. + */ + @DeveloperApi def compute(split: Partition, context: TaskContext): Iterator[T] /** + * :: DeveloperApi :: * Implemented by subclasses to return the set of partitions in this RDD. This method will only * be called once, so it is safe to implement a time-consuming computation in it. */ + @DeveloperApi protected def getPartitions: Array[Partition] /** + * :: DeveloperApi :: * Implemented by subclasses to return how this RDD depends on parent RDDs. This method will only * be called once, so it is safe to implement a time-consuming computation in it. */ + @DeveloperApi protected def getDependencies: Seq[Dependency[_]] = deps - /** Optionally overridden by subclasses to specify placement preferences. */ + /** + * :: DeveloperApi :: + * Optionally overridden by subclasses to specify placement preferences. + */ + @DeveloperApi protected def getPreferredLocations(split: Partition): Seq[String] = Nil /** Optionally overridden by subclasses to specify how they are partitioned. */ @@ -121,19 +134,11 @@ abstract class RDD[T: ClassTag]( @transient var name: String = null /** Assign a name to this RDD */ - def setName(_name: String) = { + def setName(_name: String): RDD[T] = { name = _name this } - /** User-defined generator of this RDD*/ - @transient var generator = Utils.getCallSiteInfo.firstUserClass - - /** Reset generator*/ - def setGenerator(_generator: String) = { - generator = _generator - } - /** * Set this RDD's storage level to persist its values across operations after the first time * it is computed. This can only be used to assign a new storage level if the RDD does not @@ -145,9 +150,10 @@ abstract class RDD[T: ClassTag]( throw new UnsupportedOperationException( "Cannot change storage level of an RDD after it was already assigned a level") } + sc.persistRDD(this) + // Register the RDD with the ContextCleaner for automatic GC-based cleanup + sc.cleaner.foreach(_.registerRDDForCleanup(this)) storageLevel = newLevel - // Register the RDD with the SparkContext - sc.persistentRdds(id) = this this } @@ -165,8 +171,7 @@ abstract class RDD[T: ClassTag]( */ def unpersist(blocking: Boolean = true): RDD[T] = { logInfo("Removing RDD " + id + " from persistence list") - sc.env.blockManager.master.removeRdd(id, blocking) - sc.persistentRdds.remove(id) + sc.unpersistRDD(id, blocking) storageLevel = StorageLevel.NONE this } @@ -318,6 +323,7 @@ abstract class RDD[T: ClassTag]( * Return a sampled subset of this RDD. */ def sample(withReplacement: Boolean, fraction: Double, seed: Int): RDD[T] = { + require(fraction >= 0.0, "Invalid fraction value: " + fraction) if (withReplacement) { new PartitionwiseSampledRDD[T, T](this, new PoissonSampler[T](fraction), seed) } else { @@ -352,6 +358,10 @@ abstract class RDD[T: ClassTag]( throw new IllegalArgumentException("Negative number of elements requested") } + if (initialCount == 0) { + return new Array[T](0) + } + if (initialCount > Integer.MAX_VALUE - 1) { maxSelected = Integer.MAX_VALUE - 1 } else { @@ -370,7 +380,7 @@ abstract class RDD[T: ClassTag]( var samples = this.sample(withReplacement, fraction, rand.nextInt()).collect() // If the first sample didn't turn out large enough, keep trying to take samples; - // this shouldn't happen often because we use a big multiplier for thei initial size + // this shouldn't happen often because we use a big multiplier for the initial size while (samples.length < total) { samples = this.sample(withReplacement, fraction, rand.nextInt()).collect() } @@ -441,20 +451,20 @@ abstract class RDD[T: ClassTag]( /** * Return an RDD of grouped items. */ - def groupBy[K: ClassTag](f: T => K): RDD[(K, Seq[T])] = + def groupBy[K: ClassTag](f: T => K): RDD[(K, Iterable[T])] = groupBy[K](f, defaultPartitioner(this)) /** * Return an RDD of grouped elements. Each group consists of a key and a sequence of elements * mapping to that key. */ - def groupBy[K: ClassTag](f: T => K, numPartitions: Int): RDD[(K, Seq[T])] = + def groupBy[K: ClassTag](f: T => K, numPartitions: Int): RDD[(K, Iterable[T])] = groupBy(f, new HashPartitioner(numPartitions)) /** * Return an RDD of grouped items. */ - def groupBy[K: ClassTag](f: T => K, p: Partitioner): RDD[(K, Seq[T])] = { + def groupBy[K: ClassTag](f: T => K, p: Partitioner): RDD[(K, Iterable[T])] = { val cleanF = sc.clean(f) this.map(t => (cleanF(t), t)).groupByKey(p) } @@ -486,16 +496,19 @@ abstract class RDD[T: ClassTag]( * instead of constructing a huge String to concat all the elements: * def printRDDElement(record:(String, Seq[String]), f:String=>Unit) = * for (e <- record._2){f(e)} + * @param separateWorkingDir Use separate working directories for each task. * @return the result RDD */ def pipe( command: Seq[String], env: Map[String, String] = Map(), printPipeContext: (String => Unit) => Unit = null, - printRDDElement: (T, String => Unit) => Unit = null): RDD[String] = { + printRDDElement: (T, String => Unit) => Unit = null, + separateWorkingDir: Boolean = false): RDD[String] = { new PipedRDD(this, command, env, if (printPipeContext ne null) sc.clean(printPipeContext) else null, - if (printRDDElement ne null) sc.clean(printRDDElement) else null) + if (printRDDElement ne null) sc.clean(printRDDElement) else null, + separateWorkingDir) } /** @@ -518,9 +531,11 @@ abstract class RDD[T: ClassTag]( } /** + * :: DeveloperApi :: * Return a new RDD by applying a function to each partition of this RDD. This is a variant of * mapPartitions that also passes the TaskContext into the closure. */ + @DeveloperApi def mapPartitionsWithContext[U: ClassTag]( f: (TaskContext, Iterator[T]) => Iterator[U], preservesPartitioning: Boolean = false): RDD[U] = { @@ -663,9 +678,22 @@ abstract class RDD[T: ClassTag]( Array.concat(results: _*) } + /** + * Return an iterator that contains all of the elements in this RDD. + * + * The iterator will consume as much memory as the largest partition in this RDD. + */ + def toLocalIterator: Iterator[T] = { + def collectPartition(p: Int): Array[T] = { + sc.runJob(this, (iter: Iterator[T]) => iter.toArray, Seq(p), allowLocal = false).head + } + (0 until partitions.length).iterator.flatMap(i => collectPartition(i)) + } + /** * Return an array that contains all of the elements in this RDD. */ + @deprecated("use collect", "1.0.0") def toArray(): Array[T] = collect() /** @@ -779,9 +807,11 @@ abstract class RDD[T: ClassTag]( def count(): Long = sc.runJob(this, Utils.getIteratorSize _).sum /** - * (Experimental) Approximate version of count() that returns a potentially incomplete result + * :: Experimental :: + * Approximate version of count() that returns a potentially incomplete result * within a timeout, even if not all tasks have finished. */ + @Experimental def countApprox(timeout: Long, confidence: Double = 0.95): PartialResult[BoundedDouble] = { val countElements: (TaskContext, Iterator[T]) => Long = { (ctx, iter) => var result = 0L @@ -825,8 +855,10 @@ abstract class RDD[T: ClassTag]( } /** - * (Experimental) Approximate version of countByValue(). + * :: Experimental :: + * Approximate version of countByValue(). */ + @Experimental def countByValueApprox( timeout: Long, confidence: Double = 0.95 @@ -847,6 +879,7 @@ abstract class RDD[T: ClassTag]( } /** + * :: Experimental :: * Return approximate number of distinct elements in the RDD. * * The accuracy of approximation can be controlled through the relative standard deviation @@ -854,6 +887,7 @@ abstract class RDD[T: ClassTag]( * more accurate counts but increase the memory footprint and vise versa. The default value of * relativeSD is 0.05. */ + @Experimental def countApproxDistinct(relativeSD: Double = 0.05): Long = { val zeroCounter = new SerializableHyperLogLog(new HyperLogLog(relativeSD)) aggregate(zeroCounter)(_.add(_), _.merge(_)).value.cardinality() @@ -931,32 +965,61 @@ abstract class RDD[T: ClassTag]( } /** - * Returns the top K elements from this RDD as defined by - * the specified implicit Ordering[T]. + * Returns the top K (largest) elements from this RDD as defined by the specified + * implicit Ordering[T]. This does the opposite of [[takeOrdered]]. For example: + * {{{ + * sc.parallelize([10, 4, 2, 12, 3]).top(1) + * // returns [12] + * + * sc.parallelize([2, 3, 4, 5, 6]).top(2) + * // returns [6, 5] + * }}} + * + * @param num the number of top elements to return + * @param ord the implicit ordering for T + * @return an array of top elements + */ + def top(num: Int)(implicit ord: Ordering[T]): Array[T] = takeOrdered(num)(ord.reverse) + + /** + * Returns the first K (smallest) elements from this RDD as defined by the specified + * implicit Ordering[T] and maintains the ordering. This does the opposite of [[top]]. + * For example: + * {{{ + * sc.parallelize([10, 4, 2, 12, 3]).takeOrdered(1) + * // returns [12] + * + * sc.parallelize([2, 3, 4, 5, 6]).takeOrdered(2) + * // returns [2, 3] + * }}} + * * @param num the number of top elements to return * @param ord the implicit ordering for T * @return an array of top elements */ - def top(num: Int)(implicit ord: Ordering[T]): Array[T] = { + def takeOrdered(num: Int)(implicit ord: Ordering[T]): Array[T] = { mapPartitions { items => - val queue = new BoundedPriorityQueue[T](num) - queue ++= items + // Priority keeps the largest elements, so let's reverse the ordering. + val queue = new BoundedPriorityQueue[T](num)(ord.reverse) + queue ++= util.collection.Utils.takeOrdered(items, num)(ord) Iterator.single(queue) }.reduce { (queue1, queue2) => queue1 ++= queue2 queue1 - }.toArray.sorted(ord.reverse) + }.toArray.sorted(ord) } /** - * Returns the first K elements from this RDD as defined by - * the specified implicit Ordering[T] and maintains the - * ordering. - * @param num the number of top elements to return - * @param ord the implicit ordering for T - * @return an array of top elements - */ - def takeOrdered(num: Int)(implicit ord: Ordering[T]): Array[T] = top(num)(ord.reverse) + * Returns the max of this RDD as defined by the implicit Ordering[T]. + * @return the maximum element of the RDD + * */ + def max()(implicit ord: Ordering[T]):T = this.reduce(ord.max) + + /** + * Returns the min of this RDD as defined by the implicit Ordering[T]. + * @return the minimum element of the RDD + * */ + def min()(implicit ord: Ordering[T]):T = this.reduce(ord.min) /** * Save this RDD as a text file, using string representations of elements. @@ -1031,8 +1094,9 @@ abstract class RDD[T: ClassTag]( private var storageLevel: StorageLevel = StorageLevel.NONE - /** Record user function generating this RDD. */ - @transient private[spark] val origin = sc.getCallSite() + /** User code that created this RDD (e.g. `textFile`, `parallelize`). */ + @transient private[spark] val creationSiteInfo = Utils.getCallSiteInfo + private[spark] def getCreationSite: String = creationSiteInfo.toString private[spark] def elementClassTag: ClassTag[T] = classTag[T] @@ -1095,13 +1159,9 @@ abstract class RDD[T: ClassTag]( } override def toString: String = "%s%s[%d] at %s".format( - Option(name).map(_ + " ").getOrElse(""), - getClass.getSimpleName, - id, - origin) + Option(name).map(_ + " ").getOrElse(""), getClass.getSimpleName, id, getCreationSite) def toJavaRDD() : JavaRDD[T] = { new JavaRDD(this)(elementClassTag) } - } diff --git a/core/src/main/scala/org/apache/spark/rdd/SampledRDD.scala b/core/src/main/scala/org/apache/spark/rdd/SampledRDD.scala index b50307cfa49b7..b097c30f8c231 100644 --- a/core/src/main/scala/org/apache/spark/rdd/SampledRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/SampledRDD.scala @@ -26,14 +26,14 @@ import cern.jet.random.engine.DRand import org.apache.spark.{Partition, TaskContext} -@deprecated("Replaced by PartitionwiseSampledRDDPartition", "1.0") +@deprecated("Replaced by PartitionwiseSampledRDDPartition", "1.0.0") private[spark] class SampledRDDPartition(val prev: Partition, val seed: Int) extends Partition with Serializable { override val index: Int = prev.index } -@deprecated("Replaced by PartitionwiseSampledRDD", "1.0") -class SampledRDD[T: ClassTag]( +@deprecated("Replaced by PartitionwiseSampledRDD", "1.0.0") +private[spark] class SampledRDD[T: ClassTag]( prev: RDD[T], withReplacement: Boolean, frac: Double, diff --git a/core/src/main/scala/org/apache/spark/rdd/ShuffledRDD.scala b/core/src/main/scala/org/apache/spark/rdd/ShuffledRDD.scala index 0bbda25a905cd..802b0bdfb2d59 100644 --- a/core/src/main/scala/org/apache/spark/rdd/ShuffledRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/ShuffledRDD.scala @@ -20,6 +20,8 @@ package org.apache.spark.rdd import scala.reflect.ClassTag import org.apache.spark.{Dependency, Partition, Partitioner, ShuffleDependency, SparkEnv, TaskContext} +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.serializer.Serializer private[spark] class ShuffledRDDPartition(val idx: Int) extends Partition { override val index = idx @@ -27,26 +29,28 @@ private[spark] class ShuffledRDDPartition(val idx: Int) extends Partition { } /** + * :: DeveloperApi :: * The resulting RDD from a shuffle (e.g. repartitioning of data). * @param prev the parent RDD. * @param part the partitioner used to partition the RDD * @tparam K the key class. * @tparam V the value class. */ +@DeveloperApi class ShuffledRDD[K, V, P <: Product2[K, V] : ClassTag]( @transient var prev: RDD[P], part: Partitioner) extends RDD[P](prev.context, Nil) { - private var serializerClass: String = null + private var serializer: Serializer = null - def setSerializer(cls: String): ShuffledRDD[K, V, P] = { - serializerClass = cls + def setSerializer(serializer: Serializer): ShuffledRDD[K, V, P] = { + this.serializer = serializer this } override def getDependencies: Seq[Dependency[_]] = { - List(new ShuffleDependency(prev, part, serializerClass)) + List(new ShuffleDependency(prev, part, serializer)) } override val partitioner = Some(part) @@ -57,8 +61,8 @@ class ShuffledRDD[K, V, P <: Product2[K, V] : ClassTag]( override def compute(split: Partition, context: TaskContext): Iterator[P] = { val shuffledId = dependencies.head.asInstanceOf[ShuffleDependency[K, V]].shuffleId - SparkEnv.get.shuffleFetcher.fetch[P](shuffledId, split.index, context, - SparkEnv.get.serializerManager.get(serializerClass, SparkEnv.get.conf)) + val ser = Serializer.getSerializer(serializer) + SparkEnv.get.shuffleFetcher.fetch[P](shuffledId, split.index, context, ser) } override def clearDependencies() { diff --git a/core/src/main/scala/org/apache/spark/rdd/SubtractedRDD.scala b/core/src/main/scala/org/apache/spark/rdd/SubtractedRDD.scala index 5fe9f363db453..9a09c05bbc959 100644 --- a/core/src/main/scala/org/apache/spark/rdd/SubtractedRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/SubtractedRDD.scala @@ -30,6 +30,7 @@ import org.apache.spark.Partitioner import org.apache.spark.ShuffleDependency import org.apache.spark.SparkEnv import org.apache.spark.TaskContext +import org.apache.spark.serializer.Serializer /** * An optimized version of cogroup for set difference/subtraction. @@ -53,10 +54,10 @@ private[spark] class SubtractedRDD[K: ClassTag, V: ClassTag, W: ClassTag]( part: Partitioner) extends RDD[(K, V)](rdd1.context, Nil) { - private var serializerClass: String = null + private var serializer: Serializer = null - def setSerializer(cls: String): SubtractedRDD[K, V, W] = { - serializerClass = cls + def setSerializer(serializer: Serializer): SubtractedRDD[K, V, W] = { + this.serializer = serializer this } @@ -67,7 +68,7 @@ private[spark] class SubtractedRDD[K: ClassTag, V: ClassTag, W: ClassTag]( new OneToOneDependency(rdd) } else { logDebug("Adding shuffle dependency with " + rdd) - new ShuffleDependency(rdd, part, serializerClass) + new ShuffleDependency(rdd, part, serializer) } } } @@ -92,7 +93,7 @@ private[spark] class SubtractedRDD[K: ClassTag, V: ClassTag, W: ClassTag]( override def compute(p: Partition, context: TaskContext): Iterator[(K, V)] = { val partition = p.asInstanceOf[CoGroupPartition] - val serializer = SparkEnv.get.serializerManager.get(serializerClass, SparkEnv.get.conf) + val ser = Serializer.getSerializer(serializer) val map = new JHashMap[K, ArrayBuffer[V]] def getSeq(k: K): ArrayBuffer[V] = { val seq = map.get(k) @@ -105,14 +106,13 @@ private[spark] class SubtractedRDD[K: ClassTag, V: ClassTag, W: ClassTag]( } } def integrate(dep: CoGroupSplitDep, op: Product2[K, V] => Unit) = dep match { - case NarrowCoGroupSplitDep(rdd, _, itsSplit) => { + case NarrowCoGroupSplitDep(rdd, _, itsSplit) => rdd.iterator(itsSplit, context).asInstanceOf[Iterator[Product2[K, V]]].foreach(op) - } - case ShuffleCoGroupSplitDep(shuffleId) => { + + case ShuffleCoGroupSplitDep(shuffleId) => val iter = SparkEnv.get.shuffleFetcher.fetch[Product2[K, V]](shuffleId, partition.index, - context, serializer) + context, ser) iter.foreach(op) - } } // the first dep is rdd1; add all values to the map integrate(partition.deps(0), t => getSeq(t._1) += t._2) diff --git a/core/src/main/scala/org/apache/spark/rdd/UnionRDD.scala b/core/src/main/scala/org/apache/spark/rdd/UnionRDD.scala index a447030752096..21c6e07d69f90 100644 --- a/core/src/main/scala/org/apache/spark/rdd/UnionRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/UnionRDD.scala @@ -23,6 +23,7 @@ import scala.collection.mutable.ArrayBuffer import scala.reflect.ClassTag import org.apache.spark.{Dependency, Partition, RangeDependency, SparkContext, TaskContext} +import org.apache.spark.annotation.DeveloperApi private[spark] class UnionPartition[T: ClassTag](idx: Int, rdd: RDD[T], splitIndex: Int) extends Partition { @@ -43,6 +44,7 @@ private[spark] class UnionPartition[T: ClassTag](idx: Int, rdd: RDD[T], splitInd } } +@DeveloperApi class UnionRDD[T: ClassTag]( sc: SparkContext, @transient var rdds: Seq[RDD[T]]) diff --git a/core/src/main/scala/org/apache/spark/rdd/ZippedPartitionsRDD.scala b/core/src/main/scala/org/apache/spark/rdd/ZippedPartitionsRDD.scala index b56643444aa40..f3d30f6c9b32f 100644 --- a/core/src/main/scala/org/apache/spark/rdd/ZippedPartitionsRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/ZippedPartitionsRDD.scala @@ -41,7 +41,7 @@ private[spark] class ZippedPartitionsPartition( } } -abstract class ZippedPartitionsBaseRDD[V: ClassTag]( +private[spark] abstract class ZippedPartitionsBaseRDD[V: ClassTag]( sc: SparkContext, var rdds: Seq[RDD[_]], preservesPartitioning: Boolean = false) @@ -74,7 +74,7 @@ abstract class ZippedPartitionsBaseRDD[V: ClassTag]( } } -class ZippedPartitionsRDD2[A: ClassTag, B: ClassTag, V: ClassTag]( +private[spark] class ZippedPartitionsRDD2[A: ClassTag, B: ClassTag, V: ClassTag]( sc: SparkContext, f: (Iterator[A], Iterator[B]) => Iterator[V], var rdd1: RDD[A], @@ -94,7 +94,7 @@ class ZippedPartitionsRDD2[A: ClassTag, B: ClassTag, V: ClassTag]( } } -class ZippedPartitionsRDD3 +private[spark] class ZippedPartitionsRDD3 [A: ClassTag, B: ClassTag, C: ClassTag, V: ClassTag]( sc: SparkContext, f: (Iterator[A], Iterator[B], Iterator[C]) => Iterator[V], @@ -119,7 +119,7 @@ class ZippedPartitionsRDD3 } } -class ZippedPartitionsRDD4 +private[spark] class ZippedPartitionsRDD4 [A: ClassTag, B: ClassTag, C: ClassTag, D:ClassTag, V: ClassTag]( sc: SparkContext, f: (Iterator[A], Iterator[B], Iterator[C], Iterator[D]) => Iterator[V], diff --git a/core/src/main/scala/org/apache/spark/rdd/ZippedRDD.scala b/core/src/main/scala/org/apache/spark/rdd/ZippedRDD.scala index 2119e76f0e032..b8110ffc42f2d 100644 --- a/core/src/main/scala/org/apache/spark/rdd/ZippedRDD.scala +++ b/core/src/main/scala/org/apache/spark/rdd/ZippedRDD.scala @@ -44,7 +44,7 @@ private[spark] class ZippedPartition[T: ClassTag, U: ClassTag]( } } -class ZippedRDD[T: ClassTag, U: ClassTag]( +private[spark] class ZippedRDD[T: ClassTag, U: ClassTag]( sc: SparkContext, var rdd1: RDD[T], var rdd2: RDD[U]) diff --git a/core/src/main/scala/org/apache/spark/scheduler/ApplicationEventListener.scala b/core/src/main/scala/org/apache/spark/scheduler/ApplicationEventListener.scala new file mode 100644 index 0000000000000..affda13df6531 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/scheduler/ApplicationEventListener.scala @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.scheduler + +/** + * A simple listener for application events. + * + * This listener expects to hear events from a single application only. If events + * from multiple applications are seen, the behavior is unspecified. + */ +private[spark] class ApplicationEventListener extends SparkListener { + var appName = "" + var sparkUser = "" + var startTime = -1L + var endTime = -1L + + def applicationStarted = startTime != -1 + + def applicationFinished = endTime != -1 + + def applicationDuration: Long = { + val difference = endTime - startTime + if (applicationStarted && applicationFinished && difference > 0) difference else -1L + } + + override def onApplicationStart(applicationStart: SparkListenerApplicationStart) { + appName = applicationStart.appName + startTime = applicationStart.time + sparkUser = applicationStart.sparkUser + } + + override def onApplicationEnd(applicationEnd: SparkListenerApplicationEnd) { + endTime = applicationEnd.time + } +} diff --git a/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala b/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala index dc5b25d845dc2..c41d6d75a1d49 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala @@ -32,7 +32,7 @@ import org.apache.spark.executor.TaskMetrics import org.apache.spark.partial.{ApproximateActionListener, ApproximateEvaluator, PartialResult} import org.apache.spark.rdd.RDD import org.apache.spark.storage.{BlockId, BlockManager, BlockManagerMaster, RDDBlockId} -import org.apache.spark.util.{MetadataCleaner, MetadataCleanerType, TimeStampedHashMap} +import org.apache.spark.util.Utils /** * The high-level scheduling layer that implements stage-oriented scheduling. It computes a DAG of @@ -54,87 +54,53 @@ import org.apache.spark.util.{MetadataCleaner, MetadataCleanerType, TimeStampedH */ private[spark] class DAGScheduler( - taskSched: TaskScheduler, + taskScheduler: TaskScheduler, + listenerBus: LiveListenerBus, mapOutputTracker: MapOutputTrackerMaster, blockManagerMaster: BlockManagerMaster, env: SparkEnv) extends Logging { - def this(taskSched: TaskScheduler) { - this(taskSched, SparkEnv.get.mapOutputTracker.asInstanceOf[MapOutputTrackerMaster], - SparkEnv.get.blockManager.master, SparkEnv.get) - } - taskSched.setDAGScheduler(this) - - // Called by TaskScheduler to report task's starting. - def taskStarted(task: Task[_], taskInfo: TaskInfo) { - eventProcessActor ! BeginEvent(task, taskInfo) - } - - // Called to report that a task has completed and results are being fetched remotely. - def taskGettingResult(task: Task[_], taskInfo: TaskInfo) { - eventProcessActor ! GettingResultEvent(task, taskInfo) - } - - // Called by TaskScheduler to report task completions or failures. - def taskEnded( - task: Task[_], - reason: TaskEndReason, - result: Any, - accumUpdates: Map[Long, Any], - taskInfo: TaskInfo, - taskMetrics: TaskMetrics) { - eventProcessActor ! CompletionEvent(task, reason, result, accumUpdates, taskInfo, taskMetrics) - } - - // Called by TaskScheduler when an executor fails. - def executorLost(execId: String) { - eventProcessActor ! ExecutorLost(execId) - } - - // Called by TaskScheduler when a host is added - def executorGained(execId: String, host: String) { - eventProcessActor ! ExecutorGained(execId, host) - } + import DAGScheduler._ - // Called by TaskScheduler to cancel an entire TaskSet due to either repeated failures or - // cancellation of the job itself. - def taskSetFailed(taskSet: TaskSet, reason: String) { - eventProcessActor ! TaskSetFailed(taskSet, reason) + def this(sc: SparkContext, taskScheduler: TaskScheduler) = { + this( + taskScheduler, + sc.listenerBus, + sc.env.mapOutputTracker.asInstanceOf[MapOutputTrackerMaster], + sc.env.blockManager.master, + sc.env) } - // The time, in millis, to wait for fetch failure events to stop coming in after one is detected; - // this is a simplistic way to avoid resubmitting tasks in the non-fetchable map stage one by one - // as more failure events come in - val RESUBMIT_TIMEOUT = 200.milliseconds - - // The time, in millis, to wake up between polls of the completion queue in order to potentially - // resubmit failed stages - val POLL_TIMEOUT = 10L - - // Warns the user if a stage contains a task with size greater than this value (in KB) - val TASK_SIZE_TO_WARN = 100 + def this(sc: SparkContext) = this(sc, sc.taskScheduler) private var eventProcessActor: ActorRef = _ private[scheduler] val nextJobId = new AtomicInteger(0) - - def numTotalJobs: Int = nextJobId.get() - + private[scheduler] def numTotalJobs: Int = nextJobId.get() private val nextStageId = new AtomicInteger(0) - private[scheduler] val jobIdToStageIds = new TimeStampedHashMap[Int, HashSet[Int]] + private[scheduler] val jobIdToStageIds = new HashMap[Int, HashSet[Int]] + private[scheduler] val stageIdToJobIds = new HashMap[Int, HashSet[Int]] + private[scheduler] val stageIdToStage = new HashMap[Int, Stage] + private[scheduler] val shuffleToMapStage = new HashMap[Int, Stage] + private[scheduler] val jobIdToActiveJob = new HashMap[Int, ActiveJob] + private[scheduler] val resultStageToJob = new HashMap[Stage, ActiveJob] + private[scheduler] val stageToInfos = new HashMap[Stage, StageInfo] - private[scheduler] val stageIdToJobIds = new TimeStampedHashMap[Int, HashSet[Int]] + // Stages we need to run whose parents aren't done + private[scheduler] val waitingStages = new HashSet[Stage] - private[scheduler] val stageIdToStage = new TimeStampedHashMap[Int, Stage] + // Stages we are running right now + private[scheduler] val runningStages = new HashSet[Stage] - private[scheduler] val shuffleToMapStage = new TimeStampedHashMap[Int, Stage] + // Stages that must be resubmitted due to fetch failures + private[scheduler] val failedStages = new HashSet[Stage] - private[spark] val stageToInfos = new TimeStampedHashMap[Stage, StageInfo] + // Missing tasks from each stage + private[scheduler] val pendingTasks = new HashMap[Stage, HashSet[Task[_]]] - // An async scheduler event bus. The bus should be stopped when DAGSCheduler is stopped. - private[spark] val listenerBus = new SparkListenerBus + private[scheduler] val activeJobs = new HashSet[ActiveJob] // Contains the locations that each RDD's partitions are cached on private val cacheLocs = new HashMap[Int, Array[Seq[TaskLocation]]] @@ -145,22 +111,9 @@ class DAGScheduler( // // TODO: Garbage collect information about failure epochs when we know there are no more // stray messages to detect. - val failedEpoch = new HashMap[String, Long] - - // stage id to the active job - val idToActiveJob = new HashMap[Int, ActiveJob] + private val failedEpoch = new HashMap[String, Long] - val waiting = new HashSet[Stage] // Stages we need to run whose parents aren't done - val running = new HashSet[Stage] // Stages we are running right now - val failed = new HashSet[Stage] // Stages that must be resubmitted due to fetch failures - // Missing tasks from each stage - val pendingTasks = new TimeStampedHashMap[Stage, HashSet[Task[_]]] - - val activeJobs = new HashSet[ActiveJob] - val resultStageToJob = new HashMap[Stage, ActiveJob] - - val metadataCleaner = new MetadataCleaner( - MetadataCleanerType.DAG_SCHEDULER, this.cleanup, env.conf) + taskScheduler.setDAGScheduler(this) /** * Starts the event processing actor. The actor has two responsibilities: @@ -196,13 +149,46 @@ class DAGScheduler( })) } - def addSparkListener(listener: SparkListener) { - listenerBus.addListener(listener) + // Called by TaskScheduler to report task's starting. + def taskStarted(task: Task[_], taskInfo: TaskInfo) { + eventProcessActor ! BeginEvent(task, taskInfo) + } + + // Called to report that a task has completed and results are being fetched remotely. + def taskGettingResult(task: Task[_], taskInfo: TaskInfo) { + eventProcessActor ! GettingResultEvent(task, taskInfo) + } + + // Called by TaskScheduler to report task completions or failures. + def taskEnded( + task: Task[_], + reason: TaskEndReason, + result: Any, + accumUpdates: Map[Long, Any], + taskInfo: TaskInfo, + taskMetrics: TaskMetrics) { + eventProcessActor ! CompletionEvent(task, reason, result, accumUpdates, taskInfo, taskMetrics) + } + + // Called by TaskScheduler when an executor fails. + def executorLost(execId: String) { + eventProcessActor ! ExecutorLost(execId) + } + + // Called by TaskScheduler when a host is added + def executorAdded(execId: String, host: String) { + eventProcessActor ! ExecutorAdded(execId, host) + } + + // Called by TaskScheduler to cancel an entire TaskSet due to either repeated failures or + // cancellation of the job itself. + def taskSetFailed(taskSet: TaskSet, reason: String) { + eventProcessActor ! TaskSetFailed(taskSet, reason) } private def getCacheLocs(rdd: RDD[_]): Array[Seq[TaskLocation]] = { if (!cacheLocs.contains(rdd.id)) { - val blockIds = rdd.partitions.indices.map(index=> RDDBlockId(rdd.id, index)).toArray[BlockId] + val blockIds = rdd.partitions.indices.map(index => RDDBlockId(rdd.id, index)).toArray[BlockId] val locs = BlockManager.blockIdsToBlockManagers(blockIds, env, blockManagerMaster) cacheLocs(rdd.id) = blockIds.map { id => locs.getOrElse(id, Nil).map(bm => TaskLocation(bm.host, bm.executorId)) @@ -250,7 +236,7 @@ class DAGScheduler( new Stage(id, rdd, numTasks, shuffleDep, getParentStages(rdd, jobId), jobId, callSite) stageIdToStage(id) = stage updateJobIdStageIdMaps(jobId, stage) - stageToInfos(stage) = new StageInfo(stage) + stageToInfos(stage) = StageInfo.fromStage(stage) stage } @@ -269,7 +255,7 @@ class DAGScheduler( : Stage = { val stage = newStage(rdd, numTasks, Some(shuffleDep), jobId, callSite) - if (mapOutputTracker.has(shuffleDep.shuffleId)) { + if (mapOutputTracker.containsShuffle(shuffleDep.shuffleId)) { val serLocs = mapOutputTracker.getSerializedMapOutputStatuses(shuffleDep.shuffleId) val locs = MapOutputTracker.deserializeMapStatuses(serLocs) for (i <- 0 until locs.size) { @@ -279,7 +265,7 @@ class DAGScheduler( } else { // Kind of ugly: need to register RDDs with the cache and map output tracker here // since we can't do it in the RDD constructor because # of partitions is unknown - logInfo("Registering RDD " + rdd.id + " (" + rdd.origin + ")") + logInfo("Registering RDD " + rdd.id + " (" + rdd.getCreationSite + ")") mapOutputTracker.registerShuffle(shuffleDep.shuffleId, rdd.partitions.size) } stage @@ -356,29 +342,31 @@ class DAGScheduler( } /** - * Removes job and any stages that are not needed by any other job. Returns the set of ids for - * stages that were removed. The associated tasks for those stages need to be cancelled if we - * got here via job cancellation. + * Removes state for job and any stages that are not needed by any other job. Does not + * handle cancelling tasks or notifying the SparkListener about finished jobs/stages/tasks. + * + * @param job The job whose state to cleanup. + * @param resultStage Specifies the result stage for the job; if set to None, this method + * searches resultStagesToJob to find and cleanup the appropriate result stage. */ - private def removeJobAndIndependentStages(jobId: Int): Set[Int] = { - val registeredStages = jobIdToStageIds(jobId) - val independentStages = new HashSet[Int]() - if (registeredStages.isEmpty) { - logError("No stages registered for job " + jobId) + private def cleanupStateForJobAndIndependentStages(job: ActiveJob, resultStage: Option[Stage]) { + val registeredStages = jobIdToStageIds.get(job.jobId) + if (registeredStages.isEmpty || registeredStages.get.isEmpty) { + logError("No stages registered for job " + job.jobId) } else { - stageIdToJobIds.filterKeys(stageId => registeredStages.contains(stageId)).foreach { + stageIdToJobIds.filterKeys(stageId => registeredStages.get.contains(stageId)).foreach { case (stageId, jobSet) => - if (!jobSet.contains(jobId)) { + if (!jobSet.contains(job.jobId)) { logError( "Job %d not registered for stage %d even though that stage was registered for the job" - .format(jobId, stageId)) + .format(job.jobId, stageId)) } else { def removeStage(stageId: Int) { // data structures based on Stage for (stage <- stageIdToStage.get(stageId)) { - if (running.contains(stage)) { + if (runningStages.contains(stage)) { logDebug("Removing running stage %d".format(stageId)) - running -= stage + runningStages -= stage } stageToInfos -= stage for ((k, v) <- shuffleToMapStage.find(_._2 == stage)) { @@ -388,40 +376,48 @@ class DAGScheduler( logDebug("Removing pending status for stage %d".format(stageId)) } pendingTasks -= stage - if (waiting.contains(stage)) { + if (waitingStages.contains(stage)) { logDebug("Removing stage %d from waiting set.".format(stageId)) - waiting -= stage + waitingStages -= stage } - if (failed.contains(stage)) { + if (failedStages.contains(stage)) { logDebug("Removing stage %d from failed set.".format(stageId)) - failed -= stage + failedStages -= stage } } // data structures based on StageId stageIdToStage -= stageId stageIdToJobIds -= stageId + ShuffleMapTask.removeStage(stageId) + ResultTask.removeStage(stageId) + logDebug("After removal of stage %d, remaining stages = %d" .format(stageId, stageIdToStage.size)) } - jobSet -= jobId + jobSet -= job.jobId if (jobSet.isEmpty) { // no other job needs this stage - independentStages += stageId removeStage(stageId) } } } } - independentStages.toSet - } - - private def jobIdToStageIdsRemove(jobId: Int) { - if (!jobIdToStageIds.contains(jobId)) { - logDebug("Trying to remove unregistered job " + jobId) + jobIdToStageIds -= job.jobId + jobIdToActiveJob -= job.jobId + activeJobs -= job + + if (resultStage.isEmpty) { + // Clean up result stages. + val resultStagesForJob = resultStageToJob.keySet.filter( + stage => resultStageToJob(stage).jobId == job.jobId) + if (resultStagesForJob.size != 1) { + logWarning( + s"${resultStagesForJob.size} result stages for job ${job.jobId} (expect exactly 1)") + } + resultStageToJob --= resultStagesForJob } else { - removeJobAndIndependentStages(jobId) - jobIdToStageIds -= jobId + resultStageToJob -= resultStage.get } } @@ -471,7 +467,7 @@ class DAGScheduler( val waiter = submitJob(rdd, func, partitions, callSite, allowLocal, resultHandler, properties) waiter.awaitResult() match { case JobSucceeded => {} - case JobFailed(exception: Exception, _) => + case JobFailed(exception: Exception) => logInfo("Failed to run " + callSite) throw exception } @@ -544,13 +540,14 @@ class DAGScheduler( logInfo("Missing parents: " + getMissingParentStages(finalStage)) if (allowLocal && finalStage.parents.size == 0 && partitions.length == 1) { // Compute very short actions like first() or take() with no parent stages locally. - listenerBus.post(SparkListenerJobStart(job, Array(), properties)) + listenerBus.post(SparkListenerJobStart(job.jobId, Array[Int](), properties)) runLocally(job) } else { - idToActiveJob(jobId) = job + jobIdToActiveJob(jobId) = job activeJobs += job resultStageToJob(finalStage) = job - listenerBus.post(SparkListenerJobStart(job, jobIdToStageIds(jobId).toArray, properties)) + listenerBus.post( + SparkListenerJobStart(job.jobId, jobIdToStageIds(jobId).toArray, properties)) submitStage(finalStage) } @@ -563,23 +560,22 @@ class DAGScheduler( val activeInGroup = activeJobs.filter(activeJob => groupId == activeJob.properties.get(SparkContext.SPARK_JOB_GROUP_ID)) val jobIds = activeInGroup.map(_.jobId) - jobIds.foreach { handleJobCancellation } + jobIds.foreach(handleJobCancellation) case AllJobsCancelled => // Cancel all running jobs. - running.map(_.jobId).foreach { handleJobCancellation } + runningStages.map(_.jobId).foreach(handleJobCancellation) activeJobs.clear() // These should already be empty by this point, - idToActiveJob.clear() // but just in case we lost track of some jobs... + jobIdToActiveJob.clear() // but just in case we lost track of some jobs... - case ExecutorGained(execId, host) => - handleExecutorGained(execId, host) + case ExecutorAdded(execId, host) => + handleExecutorAdded(execId, host) case ExecutorLost(execId) => handleExecutorLost(execId) case BeginEvent(task, taskInfo) => for ( - job <- idToActiveJob.get(task.stageId); stage <- stageIdToStage.get(task.stageId); stageInfo <- stageToInfos.get(stage) ) { @@ -591,20 +587,22 @@ class DAGScheduler( task.stageId, stageInfo.name, taskInfo.serializedSize / 1024, TASK_SIZE_TO_WARN)) } } - listenerBus.post(SparkListenerTaskStart(task, taskInfo)) + listenerBus.post(SparkListenerTaskStart(task.stageId, taskInfo)) case GettingResultEvent(task, taskInfo) => - listenerBus.post(SparkListenerTaskGettingResult(task, taskInfo)) + listenerBus.post(SparkListenerTaskGettingResult(taskInfo)) case completion @ CompletionEvent(task, reason, _, _, taskInfo, taskMetrics) => - listenerBus.post(SparkListenerTaskEnd(task, reason, taskInfo, taskMetrics)) + val stageId = task.stageId + val taskType = Utils.getFormattedClassName(task) + listenerBus.post(SparkListenerTaskEnd(stageId, taskType, reason, taskInfo, taskMetrics)) handleTaskCompletion(completion) case TaskSetFailed(taskSet, reason) => stageIdToStage.get(taskSet.stageId).foreach { abortStage(_, reason) } case ResubmitFailedStages => - if (failed.size > 0) { + if (failedStages.size > 0) { // Failed stages may be removed by job cancellation, so failed might be empty even if // the ResubmitFailedStages event has been scheduled. resubmitFailedStages() @@ -615,7 +613,16 @@ class DAGScheduler( for (job <- activeJobs) { val error = new SparkException("Job cancelled because SparkContext was shut down") job.listener.jobFailed(error) - listenerBus.post(SparkListenerJobEnd(job, JobFailed(error, None))) + // Tell the listeners that all of the running stages have ended. Don't bother + // cancelling the stages because if the DAG scheduler is stopped, the entire application + // is in the process of getting stopped. + val stageFailedMessage = "Stage cancelled because SparkContext was shut down" + runningStages.foreach { stage => + val info = stageToInfos(stage) + info.stageFailed(stageFailedMessage) + listenerBus.post(SparkListenerStageCompleted(info)) + } + listenerBus.post(SparkListenerJobEnd(job.jobId, JobFailed(error))) } return true } @@ -629,9 +636,9 @@ class DAGScheduler( private[scheduler] def resubmitFailedStages() { logInfo("Resubmitting failed stages") clearCacheLocs() - val failed2 = failed.toArray - failed.clear() - for (stage <- failed2.sortBy(_.jobId)) { + val failedStagesCopy = failedStages.toArray + failedStages.clear() + for (stage <- failedStagesCopy.sortBy(_.jobId)) { submitStage(stage) } } @@ -644,12 +651,12 @@ class DAGScheduler( // TODO: We might want to run this less often, when we are sure that something has become // runnable that wasn't before. logTrace("Checking for newly runnable parent stages") - logTrace("running: " + running) - logTrace("waiting: " + waiting) - logTrace("failed: " + failed) - val waiting2 = waiting.toArray - waiting.clear() - for (stage <- waiting2.sortBy(_.jobId)) { + logTrace("running: " + runningStages) + logTrace("waiting: " + waitingStages) + logTrace("failed: " + failedStages) + val waitingStagesCopy = waitingStages.toArray + waitingStages.clear() + for (stage <- waitingStagesCopy.sortBy(_.jobId)) { submitStage(stage) } } @@ -685,7 +692,7 @@ class DAGScheduler( } } catch { case e: Exception => - jobResult = JobFailed(e, Some(job.finalStage)) + jobResult = JobFailed(e) job.listener.jobFailed(e) } finally { val s = job.finalStage @@ -693,7 +700,7 @@ class DAGScheduler( stageIdToStage -= s.id // but that won't get cleaned up via the normal paths through stageToInfos -= s // completion events or stage abort jobIdToStageIds -= job.jobId - listenerBus.post(SparkListenerJobEnd(job, jobResult)) + listenerBus.post(SparkListenerJobEnd(job.jobId, jobResult)) } } @@ -705,7 +712,7 @@ class DAGScheduler( private def activeJobForStage(stage: Stage): Option[Int] = { if (stageIdToJobIds.contains(stage.id)) { val jobsThatUseStage: Array[Int] = stageIdToJobIds(stage.id).toArray.sorted - jobsThatUseStage.find(idToActiveJob.contains(_)) + jobsThatUseStage.find(jobIdToActiveJob.contains) } else { None } @@ -716,18 +723,18 @@ class DAGScheduler( val jobId = activeJobForStage(stage) if (jobId.isDefined) { logDebug("submitStage(" + stage + ")") - if (!waiting(stage) && !running(stage) && !failed(stage)) { + if (!waitingStages(stage) && !runningStages(stage) && !failedStages(stage)) { val missing = getMissingParentStages(stage).sortBy(_.id) logDebug("missing: " + missing) if (missing == Nil) { logInfo("Submitting " + stage + " (" + stage.rdd + "), which has no missing parents") submitMissingTasks(stage, jobId.get) - running += stage + runningStages += stage } else { for (parent <- missing) { submitStage(parent) } - waiting += stage + waitingStages += stage } } } else { @@ -758,10 +765,10 @@ class DAGScheduler( } } - val properties = if (idToActiveJob.contains(jobId)) { - idToActiveJob(stage.jobId).properties + val properties = if (jobIdToActiveJob.contains(jobId)) { + jobIdToActiveJob(stage.jobId).properties } else { - //this stage will be assigned to "default" pool + // this stage will be assigned to "default" pool null } @@ -779,20 +786,20 @@ class DAGScheduler( } catch { case e: NotSerializableException => abortStage(stage, "Task not serializable: " + e.toString) - running -= stage + runningStages -= stage return } logInfo("Submitting " + tasks.size + " missing tasks from " + stage + " (" + stage.rdd + ")") myPending ++= tasks logDebug("New pending tasks: " + myPending) - taskSched.submitTasks( + taskScheduler.submitTasks( new TaskSet(tasks.toArray, stage.id, stage.newAttemptId(), stage.jobId, properties)) stageToInfos(stage).submissionTime = Some(System.currentTimeMillis()) } else { logDebug("Stage " + stage + " is actually done; %b %d %d".format( stage.isAvailable, stage.numAvailableOutputs, stage.numPartitions)) - running -= stage + runningStages -= stage } } @@ -817,7 +824,7 @@ class DAGScheduler( logInfo("%s (%s) finished in %s s".format(stage, stage.name, serviceTime)) stageToInfos(stage).completionTime = Some(System.currentTimeMillis()) listenerBus.post(SparkListenerStageCompleted(stageToInfos(stage))) - running -= stage + runningStages -= stage } event.reason match { case Success => @@ -826,7 +833,6 @@ class DAGScheduler( Accumulators.add(event.accumUpdates) // TODO: do this only if task wasn't resubmitted } pendingTasks(stage) -= task - stageToInfos(stage).taskInfos += event.taskInfo -> event.taskMetrics task match { case rt: ResultTask[_, _] => resultStageToJob.get(stage) match { @@ -836,12 +842,9 @@ class DAGScheduler( job.numFinished += 1 // If the whole job has finished, remove it if (job.numFinished == job.numPartitions) { - idToActiveJob -= stage.jobId - activeJobs -= job - resultStageToJob -= stage markStageAsFinished(stage) - jobIdToStageIdsRemove(job.jobId) - listenerBus.post(SparkListenerJobEnd(job, JobSucceeded)) + cleanupStateForJobAndIndependentStages(job, Some(stage)) + listenerBus.post(SparkListenerJobEnd(job.jobId, JobSucceeded)) } job.listener.taskSucceeded(rt.outputId, event.result) } @@ -858,12 +861,12 @@ class DAGScheduler( } else { stage.addOutputLoc(smt.partitionId, status) } - if (running.contains(stage) && pendingTasks(stage).isEmpty) { + if (runningStages.contains(stage) && pendingTasks(stage).isEmpty) { markStageAsFinished(stage) logInfo("looking for newly runnable stages") - logInfo("running: " + running) - logInfo("waiting: " + waiting) - logInfo("failed: " + failed) + logInfo("running: " + runningStages) + logInfo("waiting: " + waitingStages) + logInfo("failed: " + failedStages) if (stage.shuffleDep.isDefined) { // We supply true to increment the epoch number here in case this is a // recomputation of the map outputs. In that case, some nodes may have cached @@ -886,14 +889,14 @@ class DAGScheduler( submitStage(stage) } else { val newlyRunnable = new ArrayBuffer[Stage] - for (stage <- waiting) { + for (stage <- waitingStages) { logInfo("Missing parents for " + stage + ": " + getMissingParentStages(stage)) } - for (stage <- waiting if getMissingParentStages(stage) == Nil) { + for (stage <- waitingStages if getMissingParentStages(stage) == Nil) { newlyRunnable += stage } - waiting --= newlyRunnable - running ++= newlyRunnable + waitingStages --= newlyRunnable + runningStages ++= newlyRunnable for { stage <- newlyRunnable.sortBy(_.id) jobId <- activeJobForStage(stage) @@ -912,7 +915,7 @@ class DAGScheduler( case FetchFailed(bmAddress, shuffleId, mapId, reduceId) => // Mark the stage that the reducer was in as unrunnable val failedStage = stageIdToStage(task.stageId) - running -= failedStage + runningStages -= failedStage // TODO: Cancel running tasks in the stage logInfo("Marking " + failedStage + " (" + failedStage.name + ") for resubmision due to a fetch failure") @@ -924,7 +927,7 @@ class DAGScheduler( } logInfo("The failed fetch was from " + mapStage + " (" + mapStage.name + "); marking it for resubmission") - if (failed.isEmpty && eventProcessActor != null) { + if (failedStages.isEmpty && eventProcessActor != null) { // Don't schedule an event to resubmit failed stages if failed isn't empty, because // in that case the event will already have been scheduled. eventProcessActor may be // null during unit tests. @@ -932,8 +935,8 @@ class DAGScheduler( env.actorSystem.scheduler.scheduleOnce( RESUBMIT_TIMEOUT, eventProcessActor, ResubmitFailedStages) } - failed += failedStage - failed += mapStage + failedStages += failedStage + failedStages += mapStage // TODO: mark the executor as failed only if there were lots of fetch failures on it if (bmAddress != null) { handleExecutorLost(bmAddress.executorId, Some(task.epoch)) @@ -980,10 +983,10 @@ class DAGScheduler( } } - private def handleExecutorGained(execId: String, host: String) { + private def handleExecutorAdded(execId: String, host: String) { // remove from failedEpoch(execId) ? if (failedEpoch.contains(execId)) { - logInfo("Host gained which was in lost list earlier: " + host) + logInfo("Host added was in lost list earlier: " + host) failedEpoch -= execId } } @@ -992,15 +995,7 @@ class DAGScheduler( if (!jobIdToStageIds.contains(jobId)) { logDebug("Trying to cancel unregistered job " + jobId) } else { - val independentStages = removeJobAndIndependentStages(jobId) - independentStages.foreach { taskSched.cancelTasks } - val error = new SparkException("Job %d cancelled".format(jobId)) - val job = idToActiveJob(jobId) - job.listener.jobFailed(error) - jobIdToStageIds -= jobId - activeJobs -= job - idToActiveJob -= jobId - listenerBus.post(SparkListenerJobEnd(job, JobFailed(error, Some(job.finalStage)))) + failJobAndIndependentStages(jobIdToActiveJob(jobId), s"Job $jobId cancelled", None) } } @@ -1017,19 +1012,57 @@ class DAGScheduler( stageToInfos(failedStage).completionTime = Some(System.currentTimeMillis()) for (resultStage <- dependentStages) { val job = resultStageToJob(resultStage) - val error = new SparkException("Job aborted: " + reason) - job.listener.jobFailed(error) - jobIdToStageIdsRemove(job.jobId) - idToActiveJob -= resultStage.jobId - activeJobs -= job - resultStageToJob -= resultStage - listenerBus.post(SparkListenerJobEnd(job, JobFailed(error, Some(failedStage)))) + failJobAndIndependentStages(job, s"Job aborted due to stage failure: $reason", + Some(resultStage)) } if (dependentStages.isEmpty) { logInfo("Ignoring failure of " + failedStage + " because all jobs depending on it are done") } } + /** + * Fails a job and all stages that are only used by that job, and cleans up relevant state. + * + * @param resultStage The result stage for the job, if known. Used to cleanup state for the job + * slightly more efficiently than when not specified. + */ + private def failJobAndIndependentStages(job: ActiveJob, failureReason: String, + resultStage: Option[Stage]) { + val error = new SparkException(failureReason) + job.listener.jobFailed(error) + + // Cancel all independent, running stages. + val stages = jobIdToStageIds(job.jobId) + if (stages.isEmpty) { + logError("No stages registered for job " + job.jobId) + } + stages.foreach { stageId => + val jobsForStage = stageIdToJobIds.get(stageId) + if (jobsForStage.isEmpty || !jobsForStage.get.contains(job.jobId)) { + logError( + "Job %d not registered for stage %d even though that stage was registered for the job" + .format(job.jobId, stageId)) + } else if (jobsForStage.get.size == 1) { + if (!stageIdToStage.contains(stageId)) { + logError("Missing Stage for stage with id $stageId") + } else { + // This is the only job that uses this stage, so fail the stage if it is running. + val stage = stageIdToStage(stageId) + if (runningStages.contains(stage)) { + taskScheduler.cancelTasks(stageId) + val stageInfo = stageToInfos(stage) + stageInfo.stageFailed(failureReason) + listenerBus.post(SparkListenerStageCompleted(stageToInfos(stage))) + } + } + } + } + + cleanupStateForJobAndIndependentStages(job, resultStage) + + listenerBus.post(SparkListenerJobEnd(job.jobId, JobFailed(error))) + } + /** * Return true if one of stage's ancestors is target. */ @@ -1094,27 +1127,24 @@ class DAGScheduler( Nil } - private def cleanup(cleanupTime: Long) { - Map( - "stageIdToStage" -> stageIdToStage, - "shuffleToMapStage" -> shuffleToMapStage, - "pendingTasks" -> pendingTasks, - "stageToInfos" -> stageToInfos, - "jobIdToStageIds" -> jobIdToStageIds, - "stageIdToJobIds" -> stageIdToJobIds). - foreach { case(s, t) => { - val sizeBefore = t.size - t.clearOldValues(cleanupTime) - logInfo("%s %d --> %d".format(s, sizeBefore, t.size)) - }} - } - def stop() { if (eventProcessActor != null) { eventProcessActor ! StopDAGScheduler } - metadataCleaner.cancel() - taskSched.stop() - listenerBus.stop() + taskScheduler.stop() } } + +private[spark] object DAGScheduler { + // The time, in millis, to wait for fetch failure events to stop coming in after one is detected; + // this is a simplistic way to avoid resubmitting tasks in the non-fetchable map stage one by one + // as more failure events come in + val RESUBMIT_TIMEOUT = 200.milliseconds + + // The time, in millis, to wake up between polls of the completion queue in order to potentially + // resubmit failed stages + val POLL_TIMEOUT = 10L + + // Warns the user if a stage contains a task with size greater than this value (in KB) + val TASK_SIZE_TO_WARN = 100 +} diff --git a/core/src/main/scala/org/apache/spark/scheduler/DAGSchedulerEvent.scala b/core/src/main/scala/org/apache/spark/scheduler/DAGSchedulerEvent.scala index 39cd98e2d74e4..04c53d468465a 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/DAGSchedulerEvent.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/DAGSchedulerEvent.scala @@ -65,7 +65,7 @@ private[scheduler] case class CompletionEvent( taskMetrics: TaskMetrics) extends DAGSchedulerEvent -private[scheduler] case class ExecutorGained(execId: String, host: String) extends DAGSchedulerEvent +private[scheduler] case class ExecutorAdded(execId: String, host: String) extends DAGSchedulerEvent private[scheduler] case class ExecutorLost(execId: String) extends DAGSchedulerEvent diff --git a/core/src/main/scala/org/apache/spark/scheduler/DAGSchedulerSource.scala b/core/src/main/scala/org/apache/spark/scheduler/DAGSchedulerSource.scala index b52fe2410abde..5878e733908f5 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/DAGSchedulerSource.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/DAGSchedulerSource.scala @@ -28,15 +28,15 @@ private[spark] class DAGSchedulerSource(val dagScheduler: DAGScheduler, sc: Spar val sourceName = "%s.DAGScheduler".format(sc.appName) metricRegistry.register(MetricRegistry.name("stage", "failedStages"), new Gauge[Int] { - override def getValue: Int = dagScheduler.failed.size + override def getValue: Int = dagScheduler.failedStages.size }) metricRegistry.register(MetricRegistry.name("stage", "runningStages"), new Gauge[Int] { - override def getValue: Int = dagScheduler.running.size + override def getValue: Int = dagScheduler.runningStages.size }) metricRegistry.register(MetricRegistry.name("stage", "waitingStages"), new Gauge[Int] { - override def getValue: Int = dagScheduler.waiting.size + override def getValue: Int = dagScheduler.waitingStages.size }) metricRegistry.register(MetricRegistry.name("job", "allJobs"), new Gauge[Int] { diff --git a/core/src/main/scala/org/apache/spark/scheduler/EventLoggingListener.scala b/core/src/main/scala/org/apache/spark/scheduler/EventLoggingListener.scala new file mode 100644 index 0000000000000..b983c16af14f4 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/scheduler/EventLoggingListener.scala @@ -0,0 +1,216 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.scheduler + +import scala.collection.mutable + +import org.apache.hadoop.fs.{FileSystem, Path} +import org.json4s.jackson.JsonMethods._ + +import org.apache.spark.{Logging, SparkConf, SparkContext} +import org.apache.spark.io.CompressionCodec +import org.apache.spark.util.{FileLogger, JsonProtocol} + +/** + * A SparkListener that logs events to persistent storage. + * + * Event logging is specified by the following configurable parameters: + * spark.eventLog.enabled - Whether event logging is enabled. + * spark.eventLog.compress - Whether to compress logged events + * spark.eventLog.overwrite - Whether to overwrite any existing files. + * spark.eventLog.dir - Path to the directory in which events are logged. + * spark.eventLog.buffer.kb - Buffer size to use when writing to output streams + */ +private[spark] class EventLoggingListener(appName: String, conf: SparkConf) + extends SparkListener with Logging { + + import EventLoggingListener._ + + private val shouldCompress = conf.getBoolean("spark.eventLog.compress", false) + private val shouldOverwrite = conf.getBoolean("spark.eventLog.overwrite", false) + private val outputBufferSize = conf.getInt("spark.eventLog.buffer.kb", 100) * 1024 + private val logBaseDir = conf.get("spark.eventLog.dir", "/tmp/spark-events").stripSuffix("/") + private val name = appName.replaceAll("[ :/]", "-").toLowerCase + "-" + System.currentTimeMillis + val logDir = logBaseDir + "/" + name + + private val logger = + new FileLogger(logDir, conf, outputBufferSize, shouldCompress, shouldOverwrite) + + /** + * Begin logging events. + * If compression is used, log a file that indicates which compression library is used. + */ + def start() { + logInfo("Logging events to %s".format(logDir)) + if (shouldCompress) { + val codec = conf.get("spark.io.compression.codec", CompressionCodec.DEFAULT_COMPRESSION_CODEC) + logger.newFile(COMPRESSION_CODEC_PREFIX + codec) + } + logger.newFile(SPARK_VERSION_PREFIX + SparkContext.SPARK_VERSION) + logger.newFile(LOG_PREFIX + logger.fileIndex) + } + + /** Log the event as JSON. */ + private def logEvent(event: SparkListenerEvent, flushLogger: Boolean = false) { + val eventJson = compact(render(JsonProtocol.sparkEventToJson(event))) + logger.logLine(eventJson) + if (flushLogger) { + logger.flush() + } + } + + // Events that do not trigger a flush + override def onStageSubmitted(event: SparkListenerStageSubmitted) = + logEvent(event) + override def onTaskStart(event: SparkListenerTaskStart) = + logEvent(event) + override def onTaskGettingResult(event: SparkListenerTaskGettingResult) = + logEvent(event) + override def onTaskEnd(event: SparkListenerTaskEnd) = + logEvent(event) + override def onEnvironmentUpdate(event: SparkListenerEnvironmentUpdate) = + logEvent(event) + + // Events that trigger a flush + override def onStageCompleted(event: SparkListenerStageCompleted) = + logEvent(event, flushLogger = true) + override def onJobStart(event: SparkListenerJobStart) = + logEvent(event, flushLogger = true) + override def onJobEnd(event: SparkListenerJobEnd) = + logEvent(event, flushLogger = true) + override def onBlockManagerAdded(event: SparkListenerBlockManagerAdded) = + logEvent(event, flushLogger = true) + override def onBlockManagerRemoved(event: SparkListenerBlockManagerRemoved) = + logEvent(event, flushLogger = true) + override def onUnpersistRDD(event: SparkListenerUnpersistRDD) = + logEvent(event, flushLogger = true) + override def onApplicationStart(event: SparkListenerApplicationStart) = + logEvent(event, flushLogger = true) + override def onApplicationEnd(event: SparkListenerApplicationEnd) = + logEvent(event, flushLogger = true) + + /** + * Stop logging events. + * In addition, create an empty special file to indicate application completion. + */ + def stop() = { + logger.newFile(APPLICATION_COMPLETE) + logger.stop() + } +} + +private[spark] object EventLoggingListener extends Logging { + val LOG_PREFIX = "EVENT_LOG_" + val SPARK_VERSION_PREFIX = "SPARK_VERSION_" + val COMPRESSION_CODEC_PREFIX = "COMPRESSION_CODEC_" + val APPLICATION_COMPLETE = "APPLICATION_COMPLETE" + + // A cache for compression codecs to avoid creating the same codec many times + private val codecMap = new mutable.HashMap[String, CompressionCodec] + + def isEventLogFile(fileName: String): Boolean = { + fileName.startsWith(LOG_PREFIX) + } + + def isSparkVersionFile(fileName: String): Boolean = { + fileName.startsWith(SPARK_VERSION_PREFIX) + } + + def isCompressionCodecFile(fileName: String): Boolean = { + fileName.startsWith(COMPRESSION_CODEC_PREFIX) + } + + def isApplicationCompleteFile(fileName: String): Boolean = { + fileName == APPLICATION_COMPLETE + } + + def parseSparkVersion(fileName: String): String = { + if (isSparkVersionFile(fileName)) { + fileName.replaceAll(SPARK_VERSION_PREFIX, "") + } else "" + } + + def parseCompressionCodec(fileName: String): String = { + if (isCompressionCodecFile(fileName)) { + fileName.replaceAll(COMPRESSION_CODEC_PREFIX, "") + } else "" + } + + /** + * Parse the event logging information associated with the logs in the given directory. + * + * Specifically, this looks for event log files, the Spark version file, the compression + * codec file (if event logs are compressed), and the application completion file (if the + * application has run to completion). + */ + def parseLoggingInfo(logDir: Path, fileSystem: FileSystem): EventLoggingInfo = { + try { + val fileStatuses = fileSystem.listStatus(logDir) + val filePaths = + if (fileStatuses != null) { + fileStatuses.filter(!_.isDir).map(_.getPath).toSeq + } else { + Seq[Path]() + } + if (filePaths.isEmpty) { + logWarning("No files found in logging directory %s".format(logDir)) + } + EventLoggingInfo( + logPaths = filePaths.filter { path => isEventLogFile(path.getName) }, + sparkVersion = filePaths + .find { path => isSparkVersionFile(path.getName) } + .map { path => parseSparkVersion(path.getName) } + .getOrElse(""), + compressionCodec = filePaths + .find { path => isCompressionCodecFile(path.getName) } + .map { path => + val codec = EventLoggingListener.parseCompressionCodec(path.getName) + val conf = new SparkConf + conf.set("spark.io.compression.codec", codec) + codecMap.getOrElseUpdate(codec, CompressionCodec.createCodec(conf)) + }, + applicationComplete = filePaths.exists { path => isApplicationCompleteFile(path.getName) } + ) + } catch { + case t: Throwable => + logError("Exception in parsing logging info from directory %s".format(logDir), t) + EventLoggingInfo.empty + } + } + + /** + * Parse the event logging information associated with the logs in the given directory. + */ + def parseLoggingInfo(logDir: String, fileSystem: FileSystem): EventLoggingInfo = { + parseLoggingInfo(new Path(logDir), fileSystem) + } +} + + +/** + * Information needed to process the event logs associated with an application. + */ +private[spark] case class EventLoggingInfo( + logPaths: Seq[Path], + sparkVersion: String, + compressionCodec: Option[CompressionCodec], + applicationComplete: Boolean = false) + +private[spark] object EventLoggingInfo { + def empty = EventLoggingInfo(Seq[Path](), "", None, applicationComplete = false) +} diff --git a/core/src/main/scala/org/apache/spark/scheduler/InputFormatInfo.scala b/core/src/main/scala/org/apache/spark/scheduler/InputFormatInfo.scala index 5555585c8b4cd..bac37bfdaa23f 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/InputFormatInfo.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/InputFormatInfo.scala @@ -27,11 +27,14 @@ import org.apache.hadoop.mapreduce.Job import org.apache.hadoop.util.ReflectionUtils import org.apache.spark.Logging +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.deploy.SparkHadoopUtil /** + * :: DeveloperApi :: * Parses and holds information about inputFormat (and files) specified as a parameter. */ +@DeveloperApi class InputFormatInfo(val configuration: Configuration, val inputFormatClazz: Class[_], val path: String) extends Logging { @@ -164,8 +167,7 @@ object InputFormatInfo { PS: I know the wording here is weird, hopefully it makes some sense ! */ - def computePreferredLocations(formats: Seq[InputFormatInfo]): HashMap[String, HashSet[SplitInfo]] - = { + def computePreferredLocations(formats: Seq[InputFormatInfo]): Map[String, Set[SplitInfo]] = { val nodeToSplit = new HashMap[String, HashSet[SplitInfo]] for (inputSplit <- formats) { @@ -178,6 +180,6 @@ object InputFormatInfo { } } - nodeToSplit + nodeToSplit.mapValues(_.toSet).toMap } } diff --git a/core/src/main/scala/org/apache/spark/scheduler/JobLogger.scala b/core/src/main/scala/org/apache/spark/scheduler/JobLogger.scala index 80f9ec7d03007..713aebfa3ce00 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/JobLogger.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/JobLogger.scala @@ -22,24 +22,27 @@ import java.text.SimpleDateFormat import java.util.{Date, Properties} import java.util.concurrent.LinkedBlockingQueue -import scala.collection.mutable.{HashMap, HashSet, ListBuffer} +import scala.collection.mutable.HashMap import org.apache.spark._ +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.executor.TaskMetrics -import org.apache.spark.rdd.RDD -import org.apache.spark.storage.StorageLevel /** + * :: DeveloperApi :: * A logger class to record runtime information for jobs in Spark. This class outputs one log file - * for each Spark job, containing RDD graph, tasks start/stop, shuffle information. - * JobLogger is a subclass of SparkListener, use addSparkListener to add JobLogger to a SparkContext - * after the SparkContext is created. - * Note that each JobLogger only works for one SparkContext - * @param logDirName The base directory for the log files. + * for each Spark job, containing tasks start/stop and shuffle information. JobLogger is a subclass + * of SparkListener, use addSparkListener to add JobLogger to a SparkContext after the SparkContext + * is created. Note that each JobLogger only works for one SparkContext + * + * NOTE: The functionality of this class is heavily stripped down to accommodate for a general + * refactor of the SparkListener interface. In its place, the EventLoggingListener is introduced + * to log application information as SparkListenerEvents. To enable this functionality, set + * spark.eventLog.enabled to true. */ - -class JobLogger(val user: String, val logDirName: String) - extends SparkListener with Logging { +@DeveloperApi +@deprecated("Log application information by setting spark.eventLog.enabled.", "1.0.0") +class JobLogger(val user: String, val logDirName: String) extends SparkListener with Logging { def this() = this(System.getProperty("user.name", ""), String.valueOf(System.currentTimeMillis())) @@ -51,19 +54,21 @@ class JobLogger(val user: String, val logDirName: String) "/tmp/spark-%s".format(user) } - private val jobIDToPrintWriter = new HashMap[Int, PrintWriter] - private val stageIDToJobID = new HashMap[Int, Int] - private val jobIDToStages = new HashMap[Int, ListBuffer[Stage]] - private val DATE_FORMAT = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") - private val eventQueue = new LinkedBlockingQueue[SparkListenerEvents] + private val jobIdToPrintWriter = new HashMap[Int, PrintWriter] + private val stageIdToJobId = new HashMap[Int, Int] + private val jobIdToStageIds = new HashMap[Int, Seq[Int]] + private val dateFormat = new ThreadLocal[SimpleDateFormat]() { + override def initialValue() = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") + } + private val eventQueue = new LinkedBlockingQueue[SparkListenerEvent] createLogDir() // The following 5 functions are used only in testing. private[scheduler] def getLogDir = logDir - private[scheduler] def getJobIDtoPrintWriter = jobIDToPrintWriter - private[scheduler] def getStageIDToJobID = stageIDToJobID - private[scheduler] def getJobIDToStages = jobIDToStages + private[scheduler] def getJobIdToPrintWriter = jobIdToPrintWriter + private[scheduler] def getStageIdToJobId = stageIdToJobId + private[scheduler] def getJobIdToStageIds = jobIdToStageIds private[scheduler] def getEventQueue = eventQueue /** Create a folder for log files, the folder's name is the creation time of jobLogger */ @@ -80,191 +85,78 @@ class JobLogger(val user: String, val logDirName: String) /** * Create a log file for one job - * @param jobID ID of the job + * @param jobId ID of the job * @throws FileNotFoundException Fail to create log file */ - protected def createLogWriter(jobID: Int) { + protected def createLogWriter(jobId: Int) { try { - val fileWriter = new PrintWriter(logDir + "/" + logDirName + "/" + jobID) - jobIDToPrintWriter += (jobID -> fileWriter) + val fileWriter = new PrintWriter(logDir + "/" + logDirName + "/" + jobId) + jobIdToPrintWriter += (jobId -> fileWriter) } catch { case e: FileNotFoundException => e.printStackTrace() } } /** - * Close log file, and clean the stage relationship in stageIDToJobID - * @param jobID ID of the job + * Close log file, and clean the stage relationship in stageIdToJobId + * @param jobId ID of the job */ - protected def closeLogWriter(jobID: Int) { - jobIDToPrintWriter.get(jobID).foreach { fileWriter => + protected def closeLogWriter(jobId: Int) { + jobIdToPrintWriter.get(jobId).foreach { fileWriter => fileWriter.close() - jobIDToStages.get(jobID).foreach(_.foreach{ stage => - stageIDToJobID -= stage.id + jobIdToStageIds.get(jobId).foreach(_.foreach { stageId => + stageIdToJobId -= stageId }) - jobIDToPrintWriter -= jobID - jobIDToStages -= jobID + jobIdToPrintWriter -= jobId + jobIdToStageIds -= jobId } } + /** + * Build up the maps that represent stage-job relationships + * @param jobId ID of the job + * @param stageIds IDs of the associated stages + */ + protected def buildJobStageDependencies(jobId: Int, stageIds: Seq[Int]) = { + jobIdToStageIds(jobId) = stageIds + stageIds.foreach { stageId => stageIdToJobId(stageId) = jobId } + } + /** * Write info into log file - * @param jobID ID of the job + * @param jobId ID of the job * @param info Info to be recorded * @param withTime Controls whether to record time stamp before the info, default is true */ - protected def jobLogInfo(jobID: Int, info: String, withTime: Boolean = true) { + protected def jobLogInfo(jobId: Int, info: String, withTime: Boolean = true) { var writeInfo = info if (withTime) { val date = new Date(System.currentTimeMillis()) - writeInfo = DATE_FORMAT.format(date) + ": " + info + writeInfo = dateFormat.get.format(date) + ": " + info } - jobIDToPrintWriter.get(jobID).foreach(_.println(writeInfo)) + jobIdToPrintWriter.get(jobId).foreach(_.println(writeInfo)) } /** * Write info into log file - * @param stageID ID of the stage + * @param stageId ID of the stage * @param info Info to be recorded * @param withTime Controls whether to record time stamp before the info, default is true */ - protected def stageLogInfo(stageID: Int, info: String, withTime: Boolean = true) { - stageIDToJobID.get(stageID).foreach(jobID => jobLogInfo(jobID, info, withTime)) - } - - /** - * Build stage dependency for a job - * @param jobID ID of the job - * @param stage Root stage of the job - */ - protected def buildJobDep(jobID: Int, stage: Stage) { - if (stage.jobId == jobID) { - jobIDToStages.get(jobID) match { - case Some(stageList) => stageList += stage - case None => val stageList = new ListBuffer[Stage] - stageList += stage - jobIDToStages += (jobID -> stageList) - } - stageIDToJobID += (stage.id -> jobID) - stage.parents.foreach(buildJobDep(jobID, _)) - } - } - - /** - * Record stage dependency and RDD dependency for a stage - * @param jobID Job ID of the stage - */ - protected def recordStageDep(jobID: Int) { - def getRddsInStage(rdd: RDD[_]): ListBuffer[RDD[_]] = { - var rddList = new ListBuffer[RDD[_]] - rddList += rdd - rdd.dependencies.foreach { - case shufDep: ShuffleDependency[_, _] => - case dep: Dependency[_] => rddList ++= getRddsInStage(dep.rdd) - } - rddList - } - jobIDToStages.get(jobID).foreach {_.foreach { stage => - var depRddDesc: String = "" - getRddsInStage(stage.rdd).foreach { rdd => - depRddDesc += rdd.id + "," - } - var depStageDesc: String = "" - stage.parents.foreach { stage => - depStageDesc += "(" + stage.id + "," + stage.shuffleDep.get.shuffleId + ")" - } - jobLogInfo(jobID, "STAGE_ID=" + stage.id + " RDD_DEP=(" + - depRddDesc.substring(0, depRddDesc.length - 1) + ")" + - " STAGE_DEP=" + depStageDesc, false) - } - } - } - - /** - * Generate indents and convert to String - * @param indent Number of indents - * @return string of indents - */ - protected def indentString(indent: Int): String = { - val sb = new StringBuilder() - for (i <- 1 to indent) { - sb.append(" ") - } - sb.toString() - } - - /** - * Get RDD's name - * @param rdd Input RDD - * @return String of RDD's name - */ - protected def getRddName(rdd: RDD[_]): String = { - var rddName = rdd.getClass.getSimpleName - if (rdd.name != null) { - rddName = rdd.name - } - rddName - } - - /** - * Record RDD dependency graph in a stage - * @param jobID Job ID of the stage - * @param rdd Root RDD of the stage - * @param indent Indent number before info - */ - protected def recordRddInStageGraph(jobID: Int, rdd: RDD[_], indent: Int) { - val rddInfo = - if (rdd.getStorageLevel != StorageLevel.NONE) { - "RDD_ID=" + rdd.id + " " + getRddName(rdd) + " CACHED" + " " + - rdd.origin + " " + rdd.generator - } else { - "RDD_ID=" + rdd.id + " " + getRddName(rdd) + " NONE" + " " + - rdd.origin + " " + rdd.generator - } - jobLogInfo(jobID, indentString(indent) + rddInfo, false) - rdd.dependencies.foreach { - case shufDep: ShuffleDependency[_, _] => - val depInfo = "SHUFFLE_ID=" + shufDep.shuffleId - jobLogInfo(jobID, indentString(indent + 1) + depInfo, false) - case dep: Dependency[_] => recordRddInStageGraph(jobID, dep.rdd, indent + 1) - } - } - - /** - * Record stage dependency graph of a job - * @param jobID Job ID of the stage - * @param stage Root stage of the job - * @param indent Indent number before info, default is 0 - */ - protected def recordStageDepGraph(jobID: Int, stage: Stage, idSet: HashSet[Int], indent: Int = 0) - { - val stageInfo = if (stage.isShuffleMap) { - "STAGE_ID=" + stage.id + " MAP_STAGE SHUFFLE_ID=" + stage.shuffleDep.get.shuffleId - } else { - "STAGE_ID=" + stage.id + " RESULT_STAGE" - } - if (stage.jobId == jobID) { - jobLogInfo(jobID, indentString(indent) + stageInfo, false) - if (!idSet.contains(stage.id)) { - idSet += stage.id - recordRddInStageGraph(jobID, stage.rdd, indent) - stage.parents.foreach(recordStageDepGraph(jobID, _, idSet, indent + 2)) - } - } else { - jobLogInfo(jobID, indentString(indent) + stageInfo + " JOB_ID=" + stage.jobId, false) - } + protected def stageLogInfo(stageId: Int, info: String, withTime: Boolean = true) { + stageIdToJobId.get(stageId).foreach(jobId => jobLogInfo(jobId, info, withTime)) } /** * Record task metrics into job log files, including execution info and shuffle metrics - * @param stageID Stage ID of the task + * @param stageId Stage ID of the task * @param status Status info of the task * @param taskInfo Task description info * @param taskMetrics Task running metrics */ - protected def recordTaskMetrics(stageID: Int, status: String, + protected def recordTaskMetrics(stageId: Int, status: String, taskInfo: TaskInfo, taskMetrics: TaskMetrics) { - val info = " TID=" + taskInfo.taskId + " STAGE_ID=" + stageID + + val info = " TID=" + taskInfo.taskId + " STAGE_ID=" + stageId + " START_TIME=" + taskInfo.launchTime + " FINISH_TIME=" + taskInfo.finishTime + " EXECUTOR_ID=" + taskInfo.executorId + " HOST=" + taskMetrics.hostname val executorRunTime = " EXECUTOR_RUN_TIME=" + taskMetrics.executorRunTime @@ -282,7 +174,7 @@ class JobLogger(val user: String, val logDirName: String) case Some(metrics) => " SHUFFLE_BYTES_WRITTEN=" + metrics.shuffleBytesWritten case None => "" } - stageLogInfo(stageID, status + info + executorRunTime + readMetrics + writeMetrics) + stageLogInfo(stageId, status + info + executorRunTime + readMetrics + writeMetrics) } /** @@ -290,8 +182,9 @@ class JobLogger(val user: String, val logDirName: String) * @param stageSubmitted Stage submitted event */ override def onStageSubmitted(stageSubmitted: SparkListenerStageSubmitted) { - stageLogInfo(stageSubmitted.stage.stageId,"STAGE_ID=%d STATUS=SUBMITTED TASK_SIZE=%d".format( - stageSubmitted.stage.stageId, stageSubmitted.stage.numTasks)) + val stageInfo = stageSubmitted.stageInfo + stageLogInfo(stageInfo.stageId, "STAGE_ID=%d STATUS=SUBMITTED TASK_SIZE=%d".format( + stageInfo.stageId, stageInfo.numTasks)) } /** @@ -299,36 +192,34 @@ class JobLogger(val user: String, val logDirName: String) * @param stageCompleted Stage completed event */ override def onStageCompleted(stageCompleted: SparkListenerStageCompleted) { - stageLogInfo(stageCompleted.stage.stageId, "STAGE_ID=%d STATUS=COMPLETED".format( - stageCompleted.stage.stageId)) + val stageId = stageCompleted.stageInfo.stageId + if (stageCompleted.stageInfo.failureReason.isEmpty) { + stageLogInfo(stageId, s"STAGE_ID=$stageId STATUS=COMPLETED") + } else { + stageLogInfo(stageId, s"STAGE_ID=$stageId STATUS=FAILED") + } } - override def onTaskStart(taskStart: SparkListenerTaskStart) { } - /** * When task ends, record task completion status and metrics * @param taskEnd Task end event */ override def onTaskEnd(taskEnd: SparkListenerTaskEnd) { - val task = taskEnd.task val taskInfo = taskEnd.taskInfo - var taskStatus = "" - task match { - case resultTask: ResultTask[_, _] => taskStatus = "TASK_TYPE=RESULT_TASK" - case shuffleMapTask: ShuffleMapTask => taskStatus = "TASK_TYPE=SHUFFLE_MAP_TASK" - } + var taskStatus = "TASK_TYPE=%s".format(taskEnd.taskType) + val taskMetrics = if (taskEnd.taskMetrics != null) taskEnd.taskMetrics else TaskMetrics.empty() taskEnd.reason match { case Success => taskStatus += " STATUS=SUCCESS" - recordTaskMetrics(task.stageId, taskStatus, taskInfo, taskEnd.taskMetrics) + recordTaskMetrics(taskEnd.stageId, taskStatus, taskInfo, taskMetrics) case Resubmitted => taskStatus += " STATUS=RESUBMITTED TID=" + taskInfo.taskId + - " STAGE_ID=" + task.stageId - stageLogInfo(task.stageId, taskStatus) + " STAGE_ID=" + taskEnd.stageId + stageLogInfo(taskEnd.stageId, taskStatus) case FetchFailed(bmAddress, shuffleId, mapId, reduceId) => taskStatus += " STATUS=FETCHFAILED TID=" + taskInfo.taskId + " STAGE_ID=" + - task.stageId + " SHUFFLE_ID=" + shuffleId + " MAP_ID=" + + taskEnd.stageId + " SHUFFLE_ID=" + shuffleId + " MAP_ID=" + mapId + " REDUCE_ID=" + reduceId - stageLogInfo(task.stageId, taskStatus) + stageLogInfo(taskEnd.stageId, taskStatus) case _ => } } @@ -338,28 +229,28 @@ class JobLogger(val user: String, val logDirName: String) * @param jobEnd Job end event */ override def onJobEnd(jobEnd: SparkListenerJobEnd) { - val job = jobEnd.job - var info = "JOB_ID=" + job.jobId + val jobId = jobEnd.jobId + var info = "JOB_ID=" + jobId jobEnd.jobResult match { case JobSucceeded => info += " STATUS=SUCCESS" - case JobFailed(exception, _) => + case JobFailed(exception) => info += " STATUS=FAILED REASON=" exception.getMessage.split("\\s+").foreach(info += _ + "_") case _ => } - jobLogInfo(job.jobId, info.substring(0, info.length - 1).toUpperCase) - closeLogWriter(job.jobId) + jobLogInfo(jobId, info.substring(0, info.length - 1).toUpperCase) + closeLogWriter(jobId) } /** * Record job properties into job log file - * @param jobID ID of the job + * @param jobId ID of the job * @param properties Properties of the job */ - protected def recordJobProperties(jobID: Int, properties: Properties) { - if(properties != null) { + protected def recordJobProperties(jobId: Int, properties: Properties) { + if (properties != null) { val description = properties.getProperty(SparkContext.SPARK_JOB_DESCRIPTION, "") - jobLogInfo(jobID, description, false) + jobLogInfo(jobId, description, false) } } @@ -368,14 +259,11 @@ class JobLogger(val user: String, val logDirName: String) * @param jobStart Job start event */ override def onJobStart(jobStart: SparkListenerJobStart) { - val job = jobStart.job + val jobId = jobStart.jobId val properties = jobStart.properties - createLogWriter(job.jobId) - recordJobProperties(job.jobId, properties) - buildJobDep(job.jobId, job.finalStage) - recordStageDep(job.jobId) - recordStageDepGraph(job.jobId, job.finalStage, new HashSet[Int]) - jobLogInfo(job.jobId, "JOB_ID=" + job.jobId + " STATUS=STARTED") + createLogWriter(jobId) + recordJobProperties(jobId, properties) + buildJobStageDependencies(jobId, jobStart.stageIds) + jobLogInfo(jobId, "JOB_ID=" + jobId + " STATUS=STARTED") } } - diff --git a/core/src/main/scala/org/apache/spark/scheduler/JobResult.scala b/core/src/main/scala/org/apache/spark/scheduler/JobResult.scala index d94f6ad924260..4cd6cbe189aab 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/JobResult.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/JobResult.scala @@ -17,11 +17,17 @@ package org.apache.spark.scheduler +import org.apache.spark.annotation.DeveloperApi + /** + * :: DeveloperApi :: * A result of a job in the DAGScheduler. */ -private[spark] sealed trait JobResult +@DeveloperApi +sealed trait JobResult + +@DeveloperApi +case object JobSucceeded extends JobResult -private[spark] case object JobSucceeded extends JobResult -private[spark] case class JobFailed(exception: Exception, failedStage: Option[Stage]) - extends JobResult +@DeveloperApi +private[spark] case class JobFailed(exception: Exception) extends JobResult diff --git a/core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala b/core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala index b026f860a8cd8..e9bfee2248e5b 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala @@ -64,7 +64,7 @@ private[spark] class JobWaiter[T]( override def jobFailed(exception: Exception): Unit = synchronized { _jobFinished = true - jobResult = JobFailed(exception, None) + jobResult = JobFailed(exception) this.notifyAll() } diff --git a/core/src/main/scala/org/apache/spark/scheduler/LiveListenerBus.scala b/core/src/main/scala/org/apache/spark/scheduler/LiveListenerBus.scala new file mode 100644 index 0000000000000..76f3e327d60b8 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/scheduler/LiveListenerBus.scala @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.scheduler + +import java.util.concurrent.LinkedBlockingQueue + +import org.apache.spark.Logging + +/** + * Asynchronously passes SparkListenerEvents to registered SparkListeners. + * + * Until start() is called, all posted events are only buffered. Only after this listener bus + * has started will events be actually propagated to all attached listeners. This listener bus + * is stopped when it receives a SparkListenerShutdown event, which is posted using stop(). + */ +private[spark] class LiveListenerBus extends SparkListenerBus with Logging { + + /* Cap the capacity of the SparkListenerEvent queue so we get an explicit error (rather than + * an OOM exception) if it's perpetually being added to more quickly than it's being drained. */ + private val EVENT_QUEUE_CAPACITY = 10000 + private val eventQueue = new LinkedBlockingQueue[SparkListenerEvent](EVENT_QUEUE_CAPACITY) + private var queueFullErrorMessageLogged = false + private var started = false + private val listenerThread = new Thread("SparkListenerBus") { + setDaemon(true) + override def run() { + while (true) { + val event = eventQueue.take + if (event == SparkListenerShutdown) { + // Get out of the while loop and shutdown the daemon thread + return + } + postToAll(event) + } + } + } + + // Exposed for testing + @volatile private[spark] var stopCalled = false + + /** + * Start sending events to attached listeners. + * + * This first sends out all buffered events posted before this listener bus has started, then + * listens for any additional events asynchronously while the listener bus is still running. + * This should only be called once. + */ + def start() { + if (started) { + throw new IllegalStateException("Listener bus already started!") + } + listenerThread.start() + started = true + } + + def post(event: SparkListenerEvent) { + val eventAdded = eventQueue.offer(event) + if (!eventAdded && !queueFullErrorMessageLogged) { + logError("Dropping SparkListenerEvent because no remaining room in event queue. " + + "This likely means one of the SparkListeners is too slow and cannot keep up with the " + + "rate at which tasks are being started by the scheduler.") + queueFullErrorMessageLogged = true + } + } + + /** + * Waits until there are no more events in the queue, or until the specified time has elapsed. + * Used for testing only. Returns true if the queue has emptied and false is the specified time + * elapsed before the queue emptied. + */ + def waitUntilEmpty(timeoutMillis: Int): Boolean = { + val finishTime = System.currentTimeMillis + timeoutMillis + while (!eventQueue.isEmpty) { + if (System.currentTimeMillis > finishTime) { + return false + } + /* Sleep rather than using wait/notify, because this is used only for testing and wait/notify + * add overhead in the general case. */ + Thread.sleep(10) + } + true + } + + def stop() { + stopCalled = true + if (!started) { + throw new IllegalStateException("Attempted to stop a listener bus that has not yet started!") + } + post(SparkListenerShutdown) + listenerThread.join() + } +} diff --git a/core/src/main/scala/org/apache/spark/scheduler/Pool.scala b/core/src/main/scala/org/apache/spark/scheduler/Pool.scala index 4bc13c23d980b..187672c4e19e7 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/Pool.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/Pool.scala @@ -62,7 +62,7 @@ private[spark] class Pool( override def addSchedulable(schedulable: Schedulable) { schedulableQueue += schedulable schedulableNameToSchedulable(schedulable.name) = schedulable - schedulable.parent= this + schedulable.parent = this } override def removeSchedulable(schedulable: Schedulable) { diff --git a/core/src/main/scala/org/apache/spark/scheduler/ReplayListenerBus.scala b/core/src/main/scala/org/apache/spark/scheduler/ReplayListenerBus.scala new file mode 100644 index 0000000000000..b03665fd56d33 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/scheduler/ReplayListenerBus.scala @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.scheduler + +import java.io.InputStream + +import scala.io.Source + +import it.unimi.dsi.fastutil.io.FastBufferedInputStream +import org.apache.hadoop.fs.{Path, FileSystem} +import org.json4s.jackson.JsonMethods._ + +import org.apache.spark.Logging +import org.apache.spark.io.CompressionCodec +import org.apache.spark.util.JsonProtocol + +/** + * A SparkListenerBus that replays logged events from persisted storage. + * + * This class expects files to be appropriately prefixed as specified in EventLoggingListener. + * There exists a one-to-one mapping between ReplayListenerBus and event logging applications. + */ +private[spark] class ReplayListenerBus( + logPaths: Seq[Path], + fileSystem: FileSystem, + compressionCodec: Option[CompressionCodec]) + extends SparkListenerBus with Logging { + + private var replayed = false + + if (logPaths.length == 0) { + logWarning("Log path provided contains no log files.") + } + + /** + * Replay each event in the order maintained in the given logs. + * This should only be called exactly once. + */ + def replay() { + assert(!replayed, "ReplayListenerBus cannot replay events more than once") + logPaths.foreach { path => + // Keep track of input streams at all levels to close them later + // This is necessary because an exception can occur in between stream initializations + var fileStream: Option[InputStream] = None + var bufferedStream: Option[InputStream] = None + var compressStream: Option[InputStream] = None + var currentLine = "" + try { + fileStream = Some(fileSystem.open(path)) + bufferedStream = Some(new FastBufferedInputStream(fileStream.get)) + compressStream = Some(wrapForCompression(bufferedStream.get)) + + // Parse each line as an event and post the event to all attached listeners + val lines = Source.fromInputStream(compressStream.get).getLines() + lines.foreach { line => + currentLine = line + postToAll(JsonProtocol.sparkEventFromJson(parse(line))) + } + } catch { + case e: Exception => + logError("Exception in parsing Spark event log %s".format(path), e) + logError("Malformed line: %s\n".format(currentLine)) + } finally { + fileStream.foreach(_.close()) + bufferedStream.foreach(_.close()) + compressStream.foreach(_.close()) + } + } + replayed = true + } + + /** If a compression codec is specified, wrap the given stream in a compression stream. */ + private def wrapForCompression(stream: InputStream): InputStream = { + compressionCodec.map(_.compressedInputStream(stream)).getOrElse(stream) + } +} diff --git a/core/src/main/scala/org/apache/spark/scheduler/ResultTask.scala b/core/src/main/scala/org/apache/spark/scheduler/ResultTask.scala index 3fc6cc9850feb..083fb895d8696 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/ResultTask.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/ResultTask.scala @@ -20,21 +20,17 @@ package org.apache.spark.scheduler import java.io._ import java.util.zip.{GZIPInputStream, GZIPOutputStream} +import scala.collection.mutable.HashMap + import org.apache.spark._ -import org.apache.spark.rdd.RDD -import org.apache.spark.rdd.RDDCheckpointData -import org.apache.spark.util.{MetadataCleaner, MetadataCleanerType, TimeStampedHashMap} +import org.apache.spark.rdd.{RDD, RDDCheckpointData} private[spark] object ResultTask { // A simple map between the stage id to the serialized byte array of a task. // Served as a cache for task serialization because serialization can be // expensive on the master node if it needs to launch thousands of tasks. - val serializedInfoCache = new TimeStampedHashMap[Int, Array[Byte]] - - // TODO: This object shouldn't have global variables - val metadataCleaner = new MetadataCleaner( - MetadataCleanerType.RESULT_TASK, serializedInfoCache.clearOldValues, new SparkConf) + private val serializedInfoCache = new HashMap[Int, Array[Byte]] def serializeInfo(stageId: Int, rdd: RDD[_], func: (TaskContext, Iterator[_]) => _): Array[Byte] = { @@ -67,6 +63,10 @@ private[spark] object ResultTask { (rdd, func) } + def removeStage(stageId: Int) { + serializedInfoCache.remove(stageId) + } + def clearCache() { synchronized { serializedInfoCache.clear() diff --git a/core/src/main/scala/org/apache/spark/scheduler/ShuffleMapTask.scala b/core/src/main/scala/org/apache/spark/scheduler/ShuffleMapTask.scala index 77789031f464a..23f3b3e824762 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/ShuffleMapTask.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/ShuffleMapTask.scala @@ -24,21 +24,16 @@ import scala.collection.mutable.HashMap import org.apache.spark._ import org.apache.spark.executor.ShuffleWriteMetrics -import org.apache.spark.rdd.RDD -import org.apache.spark.rdd.RDDCheckpointData +import org.apache.spark.rdd.{RDD, RDDCheckpointData} +import org.apache.spark.serializer.Serializer import org.apache.spark.storage._ -import org.apache.spark.util.{MetadataCleaner, MetadataCleanerType, TimeStampedHashMap} private[spark] object ShuffleMapTask { // A simple map between the stage id to the serialized byte array of a task. // Served as a cache for task serialization because serialization can be // expensive on the master node if it needs to launch thousands of tasks. - val serializedInfoCache = new TimeStampedHashMap[Int, Array[Byte]] - - // TODO: This object shouldn't have global variables - val metadataCleaner = new MetadataCleaner( - MetadataCleanerType.SHUFFLE_MAP_TASK, serializedInfoCache.clearOldValues, new SparkConf) + private val serializedInfoCache = new HashMap[Int, Array[Byte]] def serializeInfo(stageId: Int, rdd: RDD[_], dep: ShuffleDependency[_,_]): Array[Byte] = { synchronized { @@ -79,6 +74,10 @@ private[spark] object ShuffleMapTask { HashMap(set.toSeq: _*) } + def removeStage(stageId: Int) { + serializedInfoCache.remove(stageId) + } + def clearCache() { synchronized { serializedInfoCache.clear() @@ -153,7 +152,7 @@ private[spark] class ShuffleMapTask( try { // Obtain all the block writers for shuffle blocks. - val ser = SparkEnv.get.serializerManager.get(dep.serializerClass, SparkEnv.get.conf) + val ser = Serializer.getSerializer(dep.serializer) shuffle = shuffleBlockManager.forMapTask(dep.shuffleId, partitionId, numOutputSplits, ser) // Write the map output to its associated buckets. diff --git a/core/src/main/scala/org/apache/spark/scheduler/SparkListener.scala b/core/src/main/scala/org/apache/spark/scheduler/SparkListener.scala index 9590c03f10632..378cf1aaebe7b 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/SparkListener.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/SparkListener.scala @@ -19,40 +19,80 @@ package org.apache.spark.scheduler import java.util.Properties +import scala.collection.Map +import scala.collection.mutable + import org.apache.spark.{Logging, TaskEndReason} +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.executor.TaskMetrics +import org.apache.spark.storage.BlockManagerId import org.apache.spark.util.{Distribution, Utils} -sealed trait SparkListenerEvents +@DeveloperApi +sealed trait SparkListenerEvent + +@DeveloperApi +case class SparkListenerStageSubmitted(stageInfo: StageInfo, properties: Properties = null) + extends SparkListenerEvent + +@DeveloperApi +case class SparkListenerStageCompleted(stageInfo: StageInfo) extends SparkListenerEvent + +@DeveloperApi +case class SparkListenerTaskStart(stageId: Int, taskInfo: TaskInfo) extends SparkListenerEvent + +@DeveloperApi +case class SparkListenerTaskGettingResult(taskInfo: TaskInfo) extends SparkListenerEvent -case class SparkListenerStageSubmitted(stage: StageInfo, properties: Properties) - extends SparkListenerEvents +@DeveloperApi +case class SparkListenerTaskEnd( + stageId: Int, + taskType: String, + reason: TaskEndReason, + taskInfo: TaskInfo, + taskMetrics: TaskMetrics) + extends SparkListenerEvent -case class SparkListenerStageCompleted(stage: StageInfo) extends SparkListenerEvents +@DeveloperApi +case class SparkListenerJobStart(jobId: Int, stageIds: Seq[Int], properties: Properties = null) + extends SparkListenerEvent -case class SparkListenerTaskStart(task: Task[_], taskInfo: TaskInfo) extends SparkListenerEvents +@DeveloperApi +case class SparkListenerJobEnd(jobId: Int, jobResult: JobResult) extends SparkListenerEvent -case class SparkListenerTaskGettingResult( - task: Task[_], taskInfo: TaskInfo) extends SparkListenerEvents +@DeveloperApi +case class SparkListenerEnvironmentUpdate(environmentDetails: Map[String, Seq[(String, String)]]) + extends SparkListenerEvent -case class SparkListenerTaskEnd(task: Task[_], reason: TaskEndReason, taskInfo: TaskInfo, - taskMetrics: TaskMetrics) extends SparkListenerEvents +@DeveloperApi +case class SparkListenerBlockManagerAdded(blockManagerId: BlockManagerId, maxMem: Long) + extends SparkListenerEvent -case class SparkListenerJobStart(job: ActiveJob, stageIds: Array[Int], - properties: Properties = null) extends SparkListenerEvents +@DeveloperApi +case class SparkListenerBlockManagerRemoved(blockManagerId: BlockManagerId) + extends SparkListenerEvent -case class SparkListenerJobEnd(job: ActiveJob, jobResult: JobResult) - extends SparkListenerEvents +@DeveloperApi +case class SparkListenerUnpersistRDD(rddId: Int) extends SparkListenerEvent + +case class SparkListenerApplicationStart(appName: String, time: Long, sparkUser: String) + extends SparkListenerEvent + +case class SparkListenerApplicationEnd(time: Long) extends SparkListenerEvent /** An event used in the listener to shutdown the listener daemon thread. */ -private[scheduler] case object SparkListenerShutdown extends SparkListenerEvents +private[spark] case object SparkListenerShutdown extends SparkListenerEvent + /** - * Interface for listening to events from the Spark scheduler. + * :: DeveloperApi :: + * Interface for listening to events from the Spark scheduler. Note that this is an internal + * interface which might change in different Spark releases. */ +@DeveloperApi trait SparkListener { /** - * Called when a stage is completed, with information on the completed stage + * Called when a stage completes successfully or fails, with information on the completed stage. */ def onStageCompleted(stageCompleted: SparkListenerStageCompleted) { } @@ -87,97 +127,146 @@ trait SparkListener { */ def onJobEnd(jobEnd: SparkListenerJobEnd) { } + /** + * Called when environment properties have been updated + */ + def onEnvironmentUpdate(environmentUpdate: SparkListenerEnvironmentUpdate) { } + + /** + * Called when a new block manager has joined + */ + def onBlockManagerAdded(blockManagerAdded: SparkListenerBlockManagerAdded) { } + + /** + * Called when an existing block manager has been removed + */ + def onBlockManagerRemoved(blockManagerRemoved: SparkListenerBlockManagerRemoved) { } + + /** + * Called when an RDD is manually unpersisted by the application + */ + def onUnpersistRDD(unpersistRDD: SparkListenerUnpersistRDD) { } + + /** + * Called when the application starts + */ + def onApplicationStart(applicationStart: SparkListenerApplicationStart) { } + + /** + * Called when the application ends + */ + def onApplicationEnd(applicationEnd: SparkListenerApplicationEnd) { } } /** + * :: DeveloperApi :: * Simple SparkListener that logs a few summary statistics when each stage completes */ +@DeveloperApi class StatsReportListener extends SparkListener with Logging { + + import org.apache.spark.scheduler.StatsReportListener._ + + private val taskInfoMetrics = mutable.Buffer[(TaskInfo, TaskMetrics)]() + + override def onTaskEnd(taskEnd: SparkListenerTaskEnd) { + val info = taskEnd.taskInfo + val metrics = taskEnd.taskMetrics + if (info != null && metrics != null) { + taskInfoMetrics += ((info, metrics)) + } + } + override def onStageCompleted(stageCompleted: SparkListenerStageCompleted) { - import org.apache.spark.scheduler.StatsReportListener._ implicit val sc = stageCompleted - this.logInfo("Finished stage: " + stageCompleted.stage) - showMillisDistribution("task runtime:", (info, _) => Some(info.duration)) + this.logInfo("Finished stage: " + stageCompleted.stageInfo) + showMillisDistribution("task runtime:", (info, _) => Some(info.duration), taskInfoMetrics) - //shuffle write + // Shuffle write showBytesDistribution("shuffle bytes written:", - (_,metric) => metric.shuffleWriteMetrics.map(_.shuffleBytesWritten)) + (_, metric) => metric.shuffleWriteMetrics.map(_.shuffleBytesWritten), taskInfoMetrics) - //fetch & io + // Fetch & I/O showMillisDistribution("fetch wait time:", - (_, metric) => metric.shuffleReadMetrics.map(_.fetchWaitTime)) + (_, metric) => metric.shuffleReadMetrics.map(_.fetchWaitTime), taskInfoMetrics) showBytesDistribution("remote bytes read:", - (_, metric) => metric.shuffleReadMetrics.map(_.remoteBytesRead)) - showBytesDistribution("task result size:", (_, metric) => Some(metric.resultSize)) + (_, metric) => metric.shuffleReadMetrics.map(_.remoteBytesRead), taskInfoMetrics) + showBytesDistribution("task result size:", + (_, metric) => Some(metric.resultSize), taskInfoMetrics) - //runtime breakdown - - val runtimePcts = stageCompleted.stage.taskInfos.map{ - case (info, metrics) => RuntimePercentage(info.duration, metrics) + // Runtime breakdown + val runtimePcts = taskInfoMetrics.map { case (info, metrics) => + RuntimePercentage(info.duration, metrics) } showDistribution("executor (non-fetch) time pct: ", - Distribution(runtimePcts.map{_.executorPct * 100}), "%2.0f %%") + Distribution(runtimePcts.map(_.executorPct * 100)), "%2.0f %%") showDistribution("fetch wait time pct: ", - Distribution(runtimePcts.flatMap{_.fetchPct.map{_ * 100}}), "%2.0f %%") - showDistribution("other time pct: ", Distribution(runtimePcts.map{_.other * 100}), "%2.0f %%") + Distribution(runtimePcts.flatMap(_.fetchPct.map(_ * 100))), "%2.0f %%") + showDistribution("other time pct: ", Distribution(runtimePcts.map(_.other * 100)), "%2.0f %%") + taskInfoMetrics.clear() } } private[spark] object StatsReportListener extends Logging { - //for profiling, the extremes are more interesting + // For profiling, the extremes are more interesting val percentiles = Array[Int](0,5,10,25,50,75,90,95,100) - val probabilities = percentiles.map{_ / 100.0} + val probabilities = percentiles.map(_ / 100.0) val percentilesHeader = "\t" + percentiles.mkString("%\t") + "%" - def extractDoubleDistribution(stage: SparkListenerStageCompleted, - getMetric: (TaskInfo,TaskMetrics) => Option[Double]) - : Option[Distribution] = { - Distribution(stage.stage.taskInfos.flatMap { - case ((info,metric)) => getMetric(info, metric)}) + def extractDoubleDistribution( + taskInfoMetrics: Seq[(TaskInfo, TaskMetrics)], + getMetric: (TaskInfo, TaskMetrics) => Option[Double]): Option[Distribution] = { + Distribution(taskInfoMetrics.flatMap { case (info, metric) => getMetric(info, metric) }) } - //is there some way to setup the types that I can get rid of this completely? - def extractLongDistribution(stage: SparkListenerStageCompleted, - getMetric: (TaskInfo,TaskMetrics) => Option[Long]) - : Option[Distribution] = { - extractDoubleDistribution(stage, (info, metric) => getMetric(info,metric).map{_.toDouble}) + // Is there some way to setup the types that I can get rid of this completely? + def extractLongDistribution( + taskInfoMetrics: Seq[(TaskInfo, TaskMetrics)], + getMetric: (TaskInfo, TaskMetrics) => Option[Long]): Option[Distribution] = { + extractDoubleDistribution( + taskInfoMetrics, + (info, metric) => { getMetric(info, metric).map(_.toDouble) }) } def showDistribution(heading: String, d: Distribution, formatNumber: Double => String) { val stats = d.statCounter - val quantiles = d.getQuantiles(probabilities).map{formatNumber} + val quantiles = d.getQuantiles(probabilities).map(formatNumber) logInfo(heading + stats) logInfo(percentilesHeader) logInfo("\t" + quantiles.mkString("\t")) } - def showDistribution(heading: String, dOpt: Option[Distribution], formatNumber: Double => String) - { + def showDistribution( + heading: String, + dOpt: Option[Distribution], + formatNumber: Double => String) { dOpt.foreach { d => showDistribution(heading, d, formatNumber)} } def showDistribution(heading: String, dOpt: Option[Distribution], format:String) { - def f(d:Double) = format.format(d) + def f(d: Double) = format.format(d) showDistribution(heading, dOpt, f _) } def showDistribution( heading: String, format: String, - getMetric: (TaskInfo, TaskMetrics) => Option[Double]) - (implicit stage: SparkListenerStageCompleted) { - showDistribution(heading, extractDoubleDistribution(stage, getMetric), format) + getMetric: (TaskInfo, TaskMetrics) => Option[Double], + taskInfoMetrics: Seq[(TaskInfo, TaskMetrics)]) { + showDistribution(heading, extractDoubleDistribution(taskInfoMetrics, getMetric), format) } - def showBytesDistribution(heading:String, getMetric: (TaskInfo,TaskMetrics) => Option[Long]) - (implicit stage: SparkListenerStageCompleted) { - showBytesDistribution(heading, extractLongDistribution(stage, getMetric)) + def showBytesDistribution( + heading:String, + getMetric: (TaskInfo, TaskMetrics) => Option[Long], + taskInfoMetrics: Seq[(TaskInfo, TaskMetrics)]) { + showBytesDistribution(heading, extractLongDistribution(taskInfoMetrics, getMetric)) } def showBytesDistribution(heading: String, dOpt: Option[Distribution]) { - dOpt.foreach{dist => showBytesDistribution(heading, dist)} + dOpt.foreach { dist => showBytesDistribution(heading, dist) } } def showBytesDistribution(heading: String, dist: Distribution) { @@ -189,9 +278,11 @@ private[spark] object StatsReportListener extends Logging { (d => StatsReportListener.millisToString(d.toLong)): Double => String) } - def showMillisDistribution(heading: String, getMetric: (TaskInfo, TaskMetrics) => Option[Long]) - (implicit stage: SparkListenerStageCompleted) { - showMillisDistribution(heading, extractLongDistribution(stage, getMetric)) + def showMillisDistribution( + heading: String, + getMetric: (TaskInfo, TaskMetrics) => Option[Long], + taskInfoMetrics: Seq[(TaskInfo, TaskMetrics)]) { + showMillisDistribution(heading, extractLongDistribution(taskInfoMetrics, getMetric)) } val seconds = 1000L @@ -199,7 +290,7 @@ private[spark] object StatsReportListener extends Logging { val hours = minutes * 60 /** - * reformat a time interval in milliseconds to a prettier format for output + * Reformat a time interval in milliseconds to a prettier format for output */ def millisToString(ms: Long) = { val (size, units) = @@ -221,8 +312,8 @@ private case class RuntimePercentage(executorPct: Double, fetchPct: Option[Doubl private object RuntimePercentage { def apply(totalTime: Long, metrics: TaskMetrics): RuntimePercentage = { val denom = totalTime.toDouble - val fetchTime = metrics.shuffleReadMetrics.map{_.fetchWaitTime} - val fetch = fetchTime.map{_ / denom} + val fetchTime = metrics.shuffleReadMetrics.map(_.fetchWaitTime) + val fetch = fetchTime.map(_ / denom) val exec = (metrics.executorRunTime - fetchTime.getOrElse(0L)) / denom val other = 1.0 - (exec + fetch.getOrElse(0d)) RuntimePercentage(exec, fetch, other) diff --git a/core/src/main/scala/org/apache/spark/scheduler/SparkListenerBus.scala b/core/src/main/scala/org/apache/spark/scheduler/SparkListenerBus.scala index 17b1328b86788..d6df193d9bcf8 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/SparkListenerBus.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/SparkListenerBus.scala @@ -1,100 +1,71 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.scheduler - -import java.util.concurrent.LinkedBlockingQueue - -import scala.collection.mutable.{ArrayBuffer, SynchronizedBuffer} - -import org.apache.spark.Logging - -/** Asynchronously passes SparkListenerEvents to registered SparkListeners. */ -private[spark] class SparkListenerBus extends Logging { - private val sparkListeners = new ArrayBuffer[SparkListener] with SynchronizedBuffer[SparkListener] - - /* Cap the capacity of the SparkListenerEvent queue so we get an explicit error (rather than - * an OOM exception) if it's perpetually being added to more quickly than it's being drained. */ - private val EVENT_QUEUE_CAPACITY = 10000 - private val eventQueue = new LinkedBlockingQueue[SparkListenerEvents](EVENT_QUEUE_CAPACITY) - private var queueFullErrorMessageLogged = false - - // Create a new daemon thread to listen for events. This thread is stopped when it receives - // a SparkListenerShutdown event, using the stop method. - new Thread("SparkListenerBus") { - setDaemon(true) - override def run() { - while (true) { - val event = eventQueue.take - event match { - case stageSubmitted: SparkListenerStageSubmitted => - sparkListeners.foreach(_.onStageSubmitted(stageSubmitted)) - case stageCompleted: SparkListenerStageCompleted => - sparkListeners.foreach(_.onStageCompleted(stageCompleted)) - case jobStart: SparkListenerJobStart => - sparkListeners.foreach(_.onJobStart(jobStart)) - case jobEnd: SparkListenerJobEnd => - sparkListeners.foreach(_.onJobEnd(jobEnd)) - case taskStart: SparkListenerTaskStart => - sparkListeners.foreach(_.onTaskStart(taskStart)) - case taskGettingResult: SparkListenerTaskGettingResult => - sparkListeners.foreach(_.onTaskGettingResult(taskGettingResult)) - case taskEnd: SparkListenerTaskEnd => - sparkListeners.foreach(_.onTaskEnd(taskEnd)) - case SparkListenerShutdown => - // Get out of the while loop and shutdown the daemon thread - return - case _ => - } - } - } - }.start() - - def addListener(listener: SparkListener) { - sparkListeners += listener - } - - def post(event: SparkListenerEvents) { - val eventAdded = eventQueue.offer(event) - if (!eventAdded && !queueFullErrorMessageLogged) { - logError("Dropping SparkListenerEvent because no remaining room in event queue. " + - "This likely means one of the SparkListeners is too slow and cannot keep up with the " + - "rate at which tasks are being started by the scheduler.") - queueFullErrorMessageLogged = true - } - } - - /** - * Waits until there are no more events in the queue, or until the specified time has elapsed. - * Used for testing only. Returns true if the queue has emptied and false is the specified time - * elapsed before the queue emptied. - */ - def waitUntilEmpty(timeoutMillis: Int): Boolean = { - val finishTime = System.currentTimeMillis + timeoutMillis - while (!eventQueue.isEmpty) { - if (System.currentTimeMillis > finishTime) { - return false - } - /* Sleep rather than using wait/notify, because this is used only for testing and wait/notify - * add overhead in the general case. */ - Thread.sleep(10) - } - true - } - - def stop(): Unit = post(SparkListenerShutdown) -} +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.scheduler + +import scala.collection.mutable +import scala.collection.mutable.ArrayBuffer + +/** + * A SparkListenerEvent bus that relays events to its listeners + */ +private[spark] trait SparkListenerBus { + + // SparkListeners attached to this event bus + protected val sparkListeners = new ArrayBuffer[SparkListener] + with mutable.SynchronizedBuffer[SparkListener] + + def addListener(listener: SparkListener) { + sparkListeners += listener + } + + /** + * Post an event to all attached listeners. This does nothing if the event is + * SparkListenerShutdown. + */ + protected def postToAll(event: SparkListenerEvent) { + event match { + case stageSubmitted: SparkListenerStageSubmitted => + sparkListeners.foreach(_.onStageSubmitted(stageSubmitted)) + case stageCompleted: SparkListenerStageCompleted => + sparkListeners.foreach(_.onStageCompleted(stageCompleted)) + case jobStart: SparkListenerJobStart => + sparkListeners.foreach(_.onJobStart(jobStart)) + case jobEnd: SparkListenerJobEnd => + sparkListeners.foreach(_.onJobEnd(jobEnd)) + case taskStart: SparkListenerTaskStart => + sparkListeners.foreach(_.onTaskStart(taskStart)) + case taskGettingResult: SparkListenerTaskGettingResult => + sparkListeners.foreach(_.onTaskGettingResult(taskGettingResult)) + case taskEnd: SparkListenerTaskEnd => + sparkListeners.foreach(_.onTaskEnd(taskEnd)) + case environmentUpdate: SparkListenerEnvironmentUpdate => + sparkListeners.foreach(_.onEnvironmentUpdate(environmentUpdate)) + case blockManagerAdded: SparkListenerBlockManagerAdded => + sparkListeners.foreach(_.onBlockManagerAdded(blockManagerAdded)) + case blockManagerRemoved: SparkListenerBlockManagerRemoved => + sparkListeners.foreach(_.onBlockManagerRemoved(blockManagerRemoved)) + case unpersistRDD: SparkListenerUnpersistRDD => + sparkListeners.foreach(_.onUnpersistRDD(unpersistRDD)) + case applicationStart: SparkListenerApplicationStart => + sparkListeners.foreach(_.onApplicationStart(applicationStart)) + case applicationEnd: SparkListenerApplicationEnd => + sparkListeners.foreach(_.onApplicationEnd(applicationEnd)) + case SparkListenerShutdown => + } + } +} diff --git a/core/src/main/scala/org/apache/spark/scheduler/SplitInfo.scala b/core/src/main/scala/org/apache/spark/scheduler/SplitInfo.scala index 5b40a3eb29b30..b85eabd6bbdbc 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/SplitInfo.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/SplitInfo.scala @@ -19,8 +19,11 @@ package org.apache.spark.scheduler import collection.mutable.ArrayBuffer +import org.apache.spark.annotation.DeveloperApi + // information about a specific split instance : handles both split instances. // So that we do not need to worry about the differences. +@DeveloperApi class SplitInfo(val inputFormatClazz: Class[_], val hostLocation: String, val path: String, val length: Long, val underlyingSplit: Any) { override def toString(): String = { diff --git a/core/src/main/scala/org/apache/spark/scheduler/Stage.scala b/core/src/main/scala/org/apache/spark/scheduler/Stage.scala index a78b0186b9eab..5c1fc30e4a557 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/Stage.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/Stage.scala @@ -100,7 +100,7 @@ private[spark] class Stage( id } - val name = callSite.getOrElse(rdd.origin) + val name = callSite.getOrElse(rdd.getCreationSite) override def toString = "Stage " + id diff --git a/core/src/main/scala/org/apache/spark/scheduler/StageInfo.scala b/core/src/main/scala/org/apache/spark/scheduler/StageInfo.scala index 8f320e5c7a74b..9f732f7191465 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/StageInfo.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/StageInfo.scala @@ -17,28 +17,36 @@ package org.apache.spark.scheduler -import scala.collection._ - -import org.apache.spark.executor.TaskMetrics +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.storage.RDDInfo /** + * :: DeveloperApi :: * Stores information about a stage to pass from the scheduler to SparkListeners. - * - * taskInfos stores the metrics for all tasks that have completed, including redundant, speculated - * tasks. */ -class StageInfo( - stage: Stage, - val taskInfos: mutable.Buffer[(TaskInfo, TaskMetrics)] = - mutable.Buffer[(TaskInfo, TaskMetrics)]() -) { - val stageId = stage.id +@DeveloperApi +class StageInfo(val stageId: Int, val name: String, val numTasks: Int, val rddInfo: RDDInfo) { /** When this stage was submitted from the DAGScheduler to a TaskScheduler. */ var submissionTime: Option[Long] = None + /** Time when all tasks in the stage completed or when the stage was cancelled. */ var completionTime: Option[Long] = None - val rddName = stage.rdd.name - val name = stage.name - val numPartitions = stage.numPartitions - val numTasks = stage.numTasks + /** If the stage failed, the reason why. */ + var failureReason: Option[String] = None + var emittedTaskSizeWarning = false + + def stageFailed(reason: String) { + failureReason = Some(reason) + completionTime = Some(System.currentTimeMillis) + } +} + +private[spark] +object StageInfo { + def fromStage(stage: Stage): StageInfo = { + val rdd = stage.rdd + val rddName = Option(rdd.name).getOrElse(rdd.id.toString) + val rddInfo = new RDDInfo(rdd.id, rddName, rdd.partitions.size, rdd.getStorageLevel) + new StageInfo(stage.id, stage.name, stage.numTasks, rddInfo) + } } diff --git a/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala b/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala index 6183b125def99..4c62e4dc0bac8 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/TaskInfo.scala @@ -17,10 +17,13 @@ package org.apache.spark.scheduler +import org.apache.spark.annotation.DeveloperApi + /** + * :: DeveloperApi :: * Information about a running task attempt inside a TaskSet. */ -private[spark] +@DeveloperApi class TaskInfo( val taskId: Long, val index: Int, @@ -46,15 +49,15 @@ class TaskInfo( var serializedSize: Int = 0 - def markGettingResult(time: Long = System.currentTimeMillis) { + private[spark] def markGettingResult(time: Long = System.currentTimeMillis) { gettingResultTime = time } - def markSuccessful(time: Long = System.currentTimeMillis) { + private[spark] def markSuccessful(time: Long = System.currentTimeMillis) { finishTime = time } - def markFailed(time: Long = System.currentTimeMillis) { + private[spark] def markFailed(time: Long = System.currentTimeMillis) { finishTime = time failed = true } @@ -83,11 +86,11 @@ class TaskInfo( def duration: Long = { if (!finished) { - throw new UnsupportedOperationException("duration() called on unfinished tasks") + throw new UnsupportedOperationException("duration() called on unfinished task") } else { finishTime - launchTime } } - def timeRunning(currentTime: Long): Long = currentTime - launchTime + private[spark] def timeRunning(currentTime: Long): Long = currentTime - launchTime } diff --git a/core/src/main/scala/org/apache/spark/scheduler/TaskLocality.scala b/core/src/main/scala/org/apache/spark/scheduler/TaskLocality.scala index ea3229b75be36..eb920ab0c0b67 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/TaskLocality.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/TaskLocality.scala @@ -17,8 +17,11 @@ package org.apache.spark.scheduler -private[spark] object TaskLocality extends Enumeration { - // process local is expected to be used ONLY within tasksetmanager for now. +import org.apache.spark.annotation.DeveloperApi + +@DeveloperApi +object TaskLocality extends Enumeration { + // Process local is expected to be used ONLY within TaskSetManager for now. val PROCESS_LOCAL, NODE_LOCAL, RACK_LOCAL, ANY = Value type TaskLocality = Value diff --git a/core/src/main/scala/org/apache/spark/scheduler/TaskSchedulerImpl.scala b/core/src/main/scala/org/apache/spark/scheduler/TaskSchedulerImpl.scala index 23b06612fd7ab..acd152dda89d4 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/TaskSchedulerImpl.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/TaskSchedulerImpl.scala @@ -42,7 +42,7 @@ import org.apache.spark.scheduler.SchedulingMode.SchedulingMode * * THREADING: SchedulerBackends and task-submitting clients can call this class from multiple * threads, so it needs locks in public API methods to maintain its state. In addition, some - * SchedulerBackends sycnchronize on themselves when they want to send events here, and then + * SchedulerBackends synchronize on themselves when they want to send events here, and then * acquire a lock on us, so we need to make sure that we don't try to lock the backend while * we are holding a lock on ourselves. */ @@ -62,6 +62,9 @@ private[spark] class TaskSchedulerImpl( // Threshold above which we warn user initial TaskSet may be starved val STARVATION_TIMEOUT = conf.getLong("spark.starvation.timeout", 15000) + // CPUs to request per task + val CPUS_PER_TASK = conf.getInt("spark.task.cpus", 1) + // TaskSetManagers are not thread safe, so any access to one should be synchronized // on this class. val activeTaskSets = new HashMap[String, TaskSetManager] @@ -204,7 +207,7 @@ private[spark] class TaskSchedulerImpl( executorIdToHost(o.executorId) = o.host if (!executorsByHost.contains(o.host)) { executorsByHost(o.host) = new HashSet[String]() - executorGained(o.executorId, o.host) + executorAdded(o.executorId, o.host) } } @@ -228,15 +231,18 @@ private[spark] class TaskSchedulerImpl( for (i <- 0 until shuffledOffers.size) { val execId = shuffledOffers(i).executorId val host = shuffledOffers(i).host - for (task <- taskSet.resourceOffer(execId, host, availableCpus(i), maxLocality)) { - tasks(i) += task - val tid = task.taskId - taskIdToTaskSetId(tid) = taskSet.taskSet.id - taskIdToExecutorId(tid) = execId - activeExecutorIds += execId - executorsByHost(host) += execId - availableCpus(i) -= 1 - launchedTask = true + if (availableCpus(i) >= CPUS_PER_TASK) { + for (task <- taskSet.resourceOffer(execId, host, maxLocality)) { + tasks(i) += task + val tid = task.taskId + taskIdToTaskSetId(tid) = taskSet.taskSet.id + taskIdToExecutorId(tid) = execId + activeExecutorIds += execId + executorsByHost(host) += execId + availableCpus(i) -= CPUS_PER_TASK + assert (availableCpus(i) >= 0) + launchedTask = true + } } } } while (launchedTask) @@ -399,8 +405,8 @@ private[spark] class TaskSchedulerImpl( rootPool.executorLost(executorId, host) } - def executorGained(execId: String, host: String) { - dagScheduler.executorGained(execId, host) + def executorAdded(execId: String, host: String) { + dagScheduler.executorAdded(execId, host) } def getExecutorsAliveOnHost(host: String): Option[Set[String]] = synchronized { diff --git a/core/src/main/scala/org/apache/spark/scheduler/TaskSetManager.scala b/core/src/main/scala/org/apache/spark/scheduler/TaskSetManager.scala index 5ea4557bbf56a..86d2050a03f18 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/TaskSetManager.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/TaskSetManager.scala @@ -56,8 +56,14 @@ private[spark] class TaskSetManager( { val conf = sched.sc.conf - // CPUs to request per task - val CPUS_PER_TASK = conf.getInt("spark.task.cpus", 1) + /* + * Sometimes if an executor is dead or in an otherwise invalid state, the driver + * does not realize right away leading to repeated task failures. If enabled, + * this temporarily prevents a task from re-launching on an executor where + * it just failed. + */ + private val EXECUTOR_TASK_BLACKLIST_TIMEOUT = + conf.getLong("spark.scheduler.executorTaskBlacklistTime", 0L) // Quantile of tasks at which to start speculation val SPECULATION_QUANTILE = conf.getDouble("spark.speculation.quantile", 0.75) @@ -71,7 +77,9 @@ private[spark] class TaskSetManager( val numTasks = tasks.length val copiesRunning = new Array[Int](numTasks) val successful = new Array[Boolean](numTasks) - val numFailures = new Array[Int](numTasks) + private val numFailures = new Array[Int](numTasks) + // key is taskId, value is a Map of executor id to when it failed + private val failedExecutors = new HashMap[Int, HashMap[String, Long]]() val taskAttempts = Array.fill[List[TaskInfo]](numTasks)(Nil) var tasksSuccessful = 0 @@ -228,12 +236,18 @@ private[spark] class TaskSetManager( * This method also cleans up any tasks in the list that have already * been launched, since we want that to happen lazily. */ - private def findTaskFromList(list: ArrayBuffer[Int]): Option[Int] = { - while (!list.isEmpty) { - val index = list.last - list.trimEnd(1) - if (copiesRunning(index) == 0 && !successful(index)) { - return Some(index) + private def findTaskFromList(execId: String, list: ArrayBuffer[Int]): Option[Int] = { + var indexOffset = list.size + + while (indexOffset > 0) { + indexOffset -= 1 + val index = list(indexOffset) + if (!executorIsBlacklisted(execId, index)) { + // This should almost always be list.trimEnd(1) to remove tail + list.remove(indexOffset) + if (copiesRunning(index) == 0 && !successful(index)) { + return Some(index) + } } } None @@ -244,6 +258,21 @@ private[spark] class TaskSetManager( taskAttempts(taskIndex).exists(_.host == host) } + /** + * Is this re-execution of a failed task on an executor it already failed in before + * EXECUTOR_TASK_BLACKLIST_TIMEOUT has elapsed ? + */ + private def executorIsBlacklisted(execId: String, taskId: Int): Boolean = { + if (failedExecutors.contains(taskId)) { + val failed = failedExecutors.get(taskId).get + + return failed.contains(execId) && + clock.getTime() - failed.get(execId).get < EXECUTOR_TASK_BLACKLIST_TIMEOUT + } + + false + } + /** * Return a speculative task for a given executor if any are available. The task should not have * an attempt running on this host, in case the host is slow. In addition, the task should meet @@ -254,10 +283,13 @@ private[spark] class TaskSetManager( { speculatableTasks.retain(index => !successful(index)) // Remove finished tasks from set + def canRunOnHost(index: Int): Boolean = + !hasAttemptOnHost(index, host) && !executorIsBlacklisted(execId, index) + if (!speculatableTasks.isEmpty) { // Check for process-local or preference-less tasks; note that tasks can be process-local // on multiple nodes when we replicate cached blocks, as in Spark Streaming - for (index <- speculatableTasks if !hasAttemptOnHost(index, host)) { + for (index <- speculatableTasks if canRunOnHost(index)) { val prefs = tasks(index).preferredLocations val executors = prefs.flatMap(_.executorId) if (prefs.size == 0 || executors.contains(execId)) { @@ -268,7 +300,7 @@ private[spark] class TaskSetManager( // Check for node-local tasks if (TaskLocality.isAllowed(locality, TaskLocality.NODE_LOCAL)) { - for (index <- speculatableTasks if !hasAttemptOnHost(index, host)) { + for (index <- speculatableTasks if canRunOnHost(index)) { val locations = tasks(index).preferredLocations.map(_.host) if (locations.contains(host)) { speculatableTasks -= index @@ -280,7 +312,7 @@ private[spark] class TaskSetManager( // Check for rack-local tasks if (TaskLocality.isAllowed(locality, TaskLocality.RACK_LOCAL)) { for (rack <- sched.getRackForHost(host)) { - for (index <- speculatableTasks if !hasAttemptOnHost(index, host)) { + for (index <- speculatableTasks if canRunOnHost(index)) { val racks = tasks(index).preferredLocations.map(_.host).map(sched.getRackForHost) if (racks.contains(rack)) { speculatableTasks -= index @@ -292,7 +324,7 @@ private[spark] class TaskSetManager( // Check for non-local tasks if (TaskLocality.isAllowed(locality, TaskLocality.ANY)) { - for (index <- speculatableTasks if !hasAttemptOnHost(index, host)) { + for (index <- speculatableTasks if canRunOnHost(index)) { speculatableTasks -= index return Some((index, TaskLocality.ANY)) } @@ -309,12 +341,12 @@ private[spark] class TaskSetManager( private def findTask(execId: String, host: String, locality: TaskLocality.Value) : Option[(Int, TaskLocality.Value)] = { - for (index <- findTaskFromList(getPendingTasksForExecutor(execId))) { + for (index <- findTaskFromList(execId, getPendingTasksForExecutor(execId))) { return Some((index, TaskLocality.PROCESS_LOCAL)) } if (TaskLocality.isAllowed(locality, TaskLocality.NODE_LOCAL)) { - for (index <- findTaskFromList(getPendingTasksForHost(host))) { + for (index <- findTaskFromList(execId, getPendingTasksForHost(host))) { return Some((index, TaskLocality.NODE_LOCAL)) } } @@ -322,19 +354,19 @@ private[spark] class TaskSetManager( if (TaskLocality.isAllowed(locality, TaskLocality.RACK_LOCAL)) { for { rack <- sched.getRackForHost(host) - index <- findTaskFromList(getPendingTasksForRack(rack)) + index <- findTaskFromList(execId, getPendingTasksForRack(rack)) } { return Some((index, TaskLocality.RACK_LOCAL)) } } // Look for no-pref tasks after rack-local tasks since they can run anywhere. - for (index <- findTaskFromList(pendingTasksWithNoPrefs)) { + for (index <- findTaskFromList(execId, pendingTasksWithNoPrefs)) { return Some((index, TaskLocality.PROCESS_LOCAL)) } if (TaskLocality.isAllowed(locality, TaskLocality.ANY)) { - for (index <- findTaskFromList(allPendingTasks)) { + for (index <- findTaskFromList(execId, allPendingTasks)) { return Some((index, TaskLocality.ANY)) } } @@ -349,11 +381,10 @@ private[spark] class TaskSetManager( def resourceOffer( execId: String, host: String, - availableCpus: Int, maxLocality: TaskLocality.TaskLocality) : Option[TaskDescription] = { - if (!isZombie && availableCpus >= CPUS_PER_TASK) { + if (!isZombie) { val curTime = clock.getTime() var allowedLocality = getAllowedLocalityLevel(curTime) @@ -460,6 +491,7 @@ private[spark] class TaskSetManager( logInfo("Ignorning task-finished event for TID " + tid + " because task " + index + " has already completed successfully") } + failedExecutors.remove(index) maybeFinishTaskSet() } @@ -480,7 +512,7 @@ private[spark] class TaskSetManager( logWarning("Lost TID %s (task %s:%d)".format(tid, taskSet.id, index)) } var taskMetrics : TaskMetrics = null - var failureReason = "unknown" + var failureReason: String = null reason match { case fetchFailed: FetchFailed => logWarning("Loss was due to fetch failure from " + fetchFailed.bmAddress) @@ -488,9 +520,11 @@ private[spark] class TaskSetManager( successful(index) = true tasksSuccessful += 1 } + // Not adding to failed executors for FetchFailed. isZombie = true case TaskKilled => + // Not adding to failed executors for TaskKilled. logWarning("Task %d was killed.".format(tid)) case ef: ExceptionFailure => @@ -504,7 +538,8 @@ private[spark] class TaskSetManager( return } val key = ef.description - failureReason = "Exception failure: %s".format(ef.description) + failureReason = "Exception failure in TID %s on host %s: %s".format( + tid, info.host, ef.description) val now = clock.getTime() val (printFull, dupCount) = { if (recentExceptions.contains(key)) { @@ -533,11 +568,16 @@ private[spark] class TaskSetManager( failureReason = "Lost result for TID %s on host %s".format(tid, info.host) logWarning(failureReason) - case _ => {} + case _ => + failureReason = "TID %s on host %s failed for unknown reason".format(tid, info.host) } + // always add to failed executors + failedExecutors.getOrElseUpdate(index, new HashMap[String, Long]()). + put(info.executorId, clock.getTime()) sched.dagScheduler.taskEnded(tasks(index), reason, null, null, info, taskMetrics) addPendingTask(index) if (!isZombie && state != TaskState.KILLED) { + assert (null != failureReason) numFailures(index) += 1 if (numFailures(index) >= maxTaskFailures) { logError("Task %s:%d failed %d times; aborting job".format( diff --git a/core/src/main/scala/org/apache/spark/scheduler/cluster/CoarseGrainedSchedulerBackend.scala b/core/src/main/scala/org/apache/spark/scheduler/cluster/CoarseGrainedSchedulerBackend.scala index fad03731572e7..7bfc30b4208a3 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/cluster/CoarseGrainedSchedulerBackend.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/cluster/CoarseGrainedSchedulerBackend.scala @@ -89,7 +89,7 @@ class CoarseGrainedSchedulerBackend(scheduler: TaskSchedulerImpl, actorSystem: A scheduler.statusUpdate(taskId, state, data.value) if (TaskState.isFinished(state)) { if (executorActor.contains(executorId)) { - freeCores(executorId) += 1 + freeCores(executorId) += scheduler.CPUS_PER_TASK makeOffers(executorId) } else { // Ignoring the update since we don't know about the executor. @@ -140,7 +140,7 @@ class CoarseGrainedSchedulerBackend(scheduler: TaskSchedulerImpl, actorSystem: A // Launch tasks returned by a set of resource offers def launchTasks(tasks: Seq[Seq[TaskDescription]]) { for (task <- tasks.flatten) { - freeCores(task.executorId) -= 1 + freeCores(task.executorId) -= scheduler.CPUS_PER_TASK executorActor(task.executorId) ! LaunchTask(task) } } @@ -172,7 +172,7 @@ class CoarseGrainedSchedulerBackend(scheduler: TaskSchedulerImpl, actorSystem: A properties += ((key, value)) } } - //TODO (prashant) send conf instead of properties + // TODO (prashant) send conf instead of properties driverActor = actorSystem.actorOf( Props(new DriverActor(properties)), name = CoarseGrainedSchedulerBackend.ACTOR_NAME) } diff --git a/core/src/main/scala/org/apache/spark/scheduler/cluster/SparkDeploySchedulerBackend.scala b/core/src/main/scala/org/apache/spark/scheduler/cluster/SparkDeploySchedulerBackend.scala index ee4b65e312abc..936e9db80573d 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/cluster/SparkDeploySchedulerBackend.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/cluster/SparkDeploySchedulerBackend.scala @@ -18,7 +18,7 @@ package org.apache.spark.scheduler.cluster import org.apache.spark.{Logging, SparkContext} -import org.apache.spark.deploy.{Command, ApplicationDescription} +import org.apache.spark.deploy.{ApplicationDescription, Command} import org.apache.spark.deploy.client.{AppClient, AppClientListener} import org.apache.spark.scheduler.{ExecutorExited, ExecutorLossReason, SlaveLost, TaskSchedulerImpl} import org.apache.spark.util.Utils @@ -26,8 +26,7 @@ import org.apache.spark.util.Utils private[spark] class SparkDeploySchedulerBackend( scheduler: TaskSchedulerImpl, sc: SparkContext, - masters: Array[String], - appName: String) + masters: Array[String]) extends CoarseGrainedSchedulerBackend(scheduler, sc.env.actorSystem) with AppClientListener with Logging { @@ -49,8 +48,8 @@ private[spark] class SparkDeploySchedulerBackend( val command = Command( "org.apache.spark.executor.CoarseGrainedExecutorBackend", args, sc.executorEnvs) val sparkHome = sc.getSparkHome() - val appDesc = new ApplicationDescription(appName, maxCores, sc.executorMemory, command, - sparkHome, "http://" + sc.ui.appUIAddress) + val appDesc = new ApplicationDescription(sc.appName, maxCores, sc.executorMemory, command, + sparkHome, sc.ui.appUIAddress, sc.eventLogger.map(_.logDir)) client = new AppClient(sc.env.actorSystem, masters, appDesc, this, conf) client.start() diff --git a/core/src/main/scala/org/apache/spark/scheduler/cluster/mesos/CoarseMesosSchedulerBackend.scala b/core/src/main/scala/org/apache/spark/scheduler/cluster/mesos/CoarseMesosSchedulerBackend.scala index 28b019d9fd495..c478e685641d7 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/cluster/mesos/CoarseMesosSchedulerBackend.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/cluster/mesos/CoarseMesosSchedulerBackend.scala @@ -45,8 +45,7 @@ import org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend private[spark] class CoarseMesosSchedulerBackend( scheduler: TaskSchedulerImpl, sc: SparkContext, - master: String, - appName: String) + master: String) extends CoarseGrainedSchedulerBackend(scheduler, sc.env.actorSystem) with MScheduler with Logging { @@ -94,7 +93,7 @@ private[spark] class CoarseMesosSchedulerBackend( setDaemon(true) override def run() { val scheduler = CoarseMesosSchedulerBackend.this - val fwInfo = FrameworkInfo.newBuilder().setUser("").setName(appName).build() + val fwInfo = FrameworkInfo.newBuilder().setUser("").setName(sc.appName).build() driver = new MesosSchedulerDriver(scheduler, fwInfo, master) try { { val ret = driver.run() @@ -195,10 +194,12 @@ private[spark] class CoarseMesosSchedulerBackend( .addResources(createResource("cpus", cpusToUse)) .addResources(createResource("mem", sc.executorMemory)) .build() - d.launchTasks(offer.getId, Collections.singletonList(task), filters) + d.launchTasks(Collections.singletonList(offer.getId), + Collections.singletonList(task), + filters) } else { // Filter it out - d.launchTasks(offer.getId, Collections.emptyList[MesosTaskInfo](), filters) + d.declineOffer(offer.getId, filters) } } } diff --git a/core/src/main/scala/org/apache/spark/scheduler/cluster/mesos/MesosSchedulerBackend.scala b/core/src/main/scala/org/apache/spark/scheduler/cluster/mesos/MesosSchedulerBackend.scala index bcf0ce19a54cd..f878ae338fc95 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/cluster/mesos/MesosSchedulerBackend.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/cluster/mesos/MesosSchedulerBackend.scala @@ -41,8 +41,7 @@ import org.apache.spark.util.Utils private[spark] class MesosSchedulerBackend( scheduler: TaskSchedulerImpl, sc: SparkContext, - master: String, - appName: String) + master: String) extends SchedulerBackend with MScheduler with Logging { @@ -71,7 +70,7 @@ private[spark] class MesosSchedulerBackend( setDaemon(true) override def run() { val scheduler = MesosSchedulerBackend.this - val fwInfo = FrameworkInfo.newBuilder().setUser("").setName(appName).build() + val fwInfo = FrameworkInfo.newBuilder().setUser("").setName(sc.appName).build() driver = new MesosSchedulerDriver(scheduler, fwInfo, master) try { val ret = driver.run() @@ -224,7 +223,7 @@ private[spark] class MesosSchedulerBackend( // Reply to the offers val filters = Filters.newBuilder().setRefuseSeconds(1).build() // TODO: lower timeout? for (i <- 0 until offers.size) { - d.launchTasks(offers(i).getId, mesosTasks(i), filters) + d.launchTasks(Collections.singletonList(offers(i).getId), mesosTasks(i), filters) } } } finally { @@ -247,7 +246,7 @@ private[spark] class MesosSchedulerBackend( val cpuResource = Resource.newBuilder() .setName("cpus") .setType(Value.Type.SCALAR) - .setScalar(Value.Scalar.newBuilder().setValue(1).build()) + .setScalar(Value.Scalar.newBuilder().setValue(scheduler.CPUS_PER_TASK).build()) .build() MesosTaskInfo.newBuilder() .setTaskId(taskId) diff --git a/core/src/main/scala/org/apache/spark/serializer/JavaSerializer.scala b/core/src/main/scala/org/apache/spark/serializer/JavaSerializer.scala index bfa647f7f0516..5e5883554fcc1 100644 --- a/core/src/main/scala/org/apache/spark/serializer/JavaSerializer.scala +++ b/core/src/main/scala/org/apache/spark/serializer/JavaSerializer.scala @@ -21,13 +21,13 @@ import java.io._ import java.nio.ByteBuffer import org.apache.spark.SparkConf +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.util.ByteBufferInputStream -private[spark] class JavaSerializationStream(out: OutputStream, conf: SparkConf) +private[spark] class JavaSerializationStream(out: OutputStream, counterReset: Int) extends SerializationStream { - val objOut = new ObjectOutputStream(out) - var counter = 0 - val counterReset = conf.getInt("spark.serializer.objectStreamReset", 10000) + private val objOut = new ObjectOutputStream(out) + private var counter = 0 /** * Calling reset to avoid memory leak: @@ -51,7 +51,7 @@ private[spark] class JavaSerializationStream(out: OutputStream, conf: SparkConf) private[spark] class JavaDeserializationStream(in: InputStream, loader: ClassLoader) extends DeserializationStream { - val objIn = new ObjectInputStream(in) { + private val objIn = new ObjectInputStream(in) { override def resolveClass(desc: ObjectStreamClass) = Class.forName(desc.getName, false, loader) } @@ -60,7 +60,7 @@ extends DeserializationStream { def close() { objIn.close() } } -private[spark] class JavaSerializerInstance(conf: SparkConf) extends SerializerInstance { +private[spark] class JavaSerializerInstance(counterReset: Int) extends SerializerInstance { def serialize[T](t: T): ByteBuffer = { val bos = new ByteArrayOutputStream() val out = serializeStream(bos) @@ -82,7 +82,7 @@ private[spark] class JavaSerializerInstance(conf: SparkConf) extends SerializerI } def serializeStream(s: OutputStream): SerializationStream = { - new JavaSerializationStream(s, conf) + new JavaSerializationStream(s, counterReset) } def deserializeStream(s: InputStream): DeserializationStream = { @@ -95,8 +95,24 @@ private[spark] class JavaSerializerInstance(conf: SparkConf) extends SerializerI } /** + * :: DeveloperApi :: * A Spark serializer that uses Java's built-in serialization. + * + * Note that this serializer is not guaranteed to be wire-compatible across different versions of + * Spark. It is intended to be used to serialize/de-serialize data within a single + * Spark application. */ -class JavaSerializer(conf: SparkConf) extends Serializer { - def newInstance(): SerializerInstance = new JavaSerializerInstance(conf) +@DeveloperApi +class JavaSerializer(conf: SparkConf) extends Serializer with Externalizable { + private var counterReset = conf.getInt("spark.serializer.objectStreamReset", 10000) + + def newInstance(): SerializerInstance = new JavaSerializerInstance(counterReset) + + override def writeExternal(out: ObjectOutput) { + out.writeInt(counterReset) + } + + override def readExternal(in: ObjectInput) { + counterReset = in.readInt() + } } diff --git a/core/src/main/scala/org/apache/spark/serializer/KryoSerializer.scala b/core/src/main/scala/org/apache/spark/serializer/KryoSerializer.scala index 920490f9d0d61..d1e8c3ef63622 100644 --- a/core/src/main/scala/org/apache/spark/serializer/KryoSerializer.scala +++ b/core/src/main/scala/org/apache/spark/serializer/KryoSerializer.scala @@ -33,11 +33,19 @@ import org.apache.spark.storage.{GetBlock, GotBlock, PutBlock} /** * A Spark serializer that uses the [[https://code.google.com/p/kryo/ Kryo serialization library]]. + * + * Note that this serializer is not guaranteed to be wire-compatible across different versions of + * Spark. It is intended to be used to serialize/de-serialize data within a single + * Spark application. */ -class KryoSerializer(conf: SparkConf) extends org.apache.spark.serializer.Serializer with Logging { - private val bufferSize = { - conf.getInt("spark.kryoserializer.buffer.mb", 2) * 1024 * 1024 - } +class KryoSerializer(conf: SparkConf) + extends org.apache.spark.serializer.Serializer + with Logging + with Serializable { + + private val bufferSize = conf.getInt("spark.kryoserializer.buffer.mb", 2) * 1024 * 1024 + private val referenceTracking = conf.getBoolean("spark.kryo.referenceTracking", true) + private val registrator = conf.getOption("spark.kryo.registrator") def newKryoOutput() = new KryoOutput(bufferSize) @@ -48,7 +56,7 @@ class KryoSerializer(conf: SparkConf) extends org.apache.spark.serializer.Serial // Allow disabling Kryo reference tracking if user knows their object graphs don't have loops. // Do this before we invoke the user registrator so the user registrator can override this. - kryo.setReferences(conf.getBoolean("spark.kryo.referenceTracking", true)) + kryo.setReferences(referenceTracking) for (cls <- KryoSerializer.toRegister) kryo.register(cls) @@ -58,7 +66,7 @@ class KryoSerializer(conf: SparkConf) extends org.apache.spark.serializer.Serial // Allow the user to register their own classes by setting spark.kryo.registrator try { - for (regCls <- conf.getOption("spark.kryo.registrator")) { + for (regCls <- registrator) { logDebug("Running user registrator: " + regCls) val reg = Class.forName(regCls, true, classLoader).newInstance() .asInstanceOf[KryoRegistrator] @@ -103,7 +111,8 @@ class KryoDeserializationStream(kryo: Kryo, inStream: InputStream) extends Deser kryo.readClassAndObject(input).asInstanceOf[T] } catch { // DeserializationStream uses the EOF exception to indicate stopping condition. - case _: KryoException => throw new EOFException + case e: KryoException if e.getMessage.toLowerCase.contains("buffer underflow") => + throw new EOFException } } diff --git a/core/src/main/scala/org/apache/spark/serializer/Serializer.scala b/core/src/main/scala/org/apache/spark/serializer/Serializer.scala index 16677ab54be04..9f04dc6e427c0 100644 --- a/core/src/main/scala/org/apache/spark/serializer/Serializer.scala +++ b/core/src/main/scala/org/apache/spark/serializer/Serializer.scala @@ -22,25 +22,44 @@ import java.nio.ByteBuffer import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream +import org.apache.spark.SparkEnv +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.util.{ByteBufferInputStream, NextIterator} /** + * :: DeveloperApi :: * A serializer. Because some serialization libraries are not thread safe, this class is used to * create [[org.apache.spark.serializer.SerializerInstance]] objects that do the actual * serialization and are guaranteed to only be called from one thread at a time. * - * Implementations of this trait should have a zero-arg constructor or a constructor that accepts a - * [[org.apache.spark.SparkConf]] as parameter. If both constructors are defined, the latter takes - * precedence. + * Implementations of this trait should implement: + * + * 1. a zero-arg constructor or a constructor that accepts a [[org.apache.spark.SparkConf]] + * as parameter. If both constructors are defined, the latter takes precedence. + * + * 2. Java serialization interface. + * + * Note that serializers are not required to be wire-compatible across different versions of Spark. + * They are intended to be used to serialize/de-serialize data within a single Spark application. */ +@DeveloperApi trait Serializer { def newInstance(): SerializerInstance } +object Serializer { + def getSerializer(serializer: Serializer): Serializer = { + if (serializer == null) SparkEnv.get.serializer else serializer + } +} + + /** + * :: DeveloperApi :: * An instance of a serializer, for use by one thread at a time. */ +@DeveloperApi trait SerializerInstance { def serialize[T](t: T): ByteBuffer @@ -71,8 +90,10 @@ trait SerializerInstance { /** + * :: DeveloperApi :: * A stream for writing serialized objects. */ +@DeveloperApi trait SerializationStream { def writeObject[T](t: T): SerializationStream def flush(): Unit @@ -88,8 +109,10 @@ trait SerializationStream { /** + * :: DeveloperApi :: * A stream for reading serialized objects. */ +@DeveloperApi trait DeserializationStream { def readObject[T](): T def close(): Unit diff --git a/core/src/main/scala/org/apache/spark/serializer/SerializerManager.scala b/core/src/main/scala/org/apache/spark/serializer/SerializerManager.scala deleted file mode 100644 index 65ac0155f45e7..0000000000000 --- a/core/src/main/scala/org/apache/spark/serializer/SerializerManager.scala +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.serializer - -import java.util.concurrent.ConcurrentHashMap - -import org.apache.spark.SparkConf - -/** - * A service that returns a serializer object given the serializer's class name. If a previous - * instance of the serializer object has been created, the get method returns that instead of - * creating a new one. - */ -private[spark] class SerializerManager { - // TODO: Consider moving this into SparkConf itself to remove the global singleton. - - private val serializers = new ConcurrentHashMap[String, Serializer] - private var _default: Serializer = _ - - def default = _default - - def setDefault(clsName: String, conf: SparkConf): Serializer = { - _default = get(clsName, conf) - _default - } - - def get(clsName: String, conf: SparkConf): Serializer = { - if (clsName == null) { - default - } else { - var serializer = serializers.get(clsName) - if (serializer != null) { - // If the serializer has been created previously, reuse that. - serializer - } else this.synchronized { - // Otherwise, create a new one. But make sure no other thread has attempted - // to create another new one at the same time. - serializer = serializers.get(clsName) - if (serializer == null) { - val clsLoader = Thread.currentThread.getContextClassLoader - val cls = Class.forName(clsName, true, clsLoader) - - // First try with the constructor that takes SparkConf. If we can't find one, - // use a no-arg constructor instead. - try { - val constructor = cls.getConstructor(classOf[SparkConf]) - serializer = constructor.newInstance(conf).asInstanceOf[Serializer] - } catch { - case _: NoSuchMethodException => - val constructor = cls.getConstructor() - serializer = constructor.newInstance().asInstanceOf[Serializer] - } - - serializers.put(clsName, serializer) - } - serializer - } - } - } -} diff --git a/core/src/main/scala/org/apache/spark/storage/BlockFetcherIterator.scala b/core/src/main/scala/org/apache/spark/storage/BlockFetcherIterator.scala index bcfc39146a61e..2fbbda5b76c74 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockFetcherIterator.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockFetcherIterator.scala @@ -284,7 +284,7 @@ object BlockFetcherIterator { } } catch { case x: InterruptedException => logInfo("Copier Interrupted") - //case _ => throw new SparkException("Exception Throw in Shuffle Copier") + // case _ => throw new SparkException("Exception Throw in Shuffle Copier") } } } diff --git a/core/src/main/scala/org/apache/spark/storage/BlockId.scala b/core/src/main/scala/org/apache/spark/storage/BlockId.scala index 301d784b350a3..cffea28fbf794 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockId.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockId.scala @@ -34,7 +34,7 @@ private[spark] sealed abstract class BlockId { def asRDDId = if (isRDD) Some(asInstanceOf[RDDBlockId]) else None def isRDD = isInstanceOf[RDDBlockId] def isShuffle = isInstanceOf[ShuffleBlockId] - def isBroadcast = isInstanceOf[BroadcastBlockId] || isInstanceOf[BroadcastHelperBlockId] + def isBroadcast = isInstanceOf[BroadcastBlockId] override def toString = name override def hashCode = name.hashCode @@ -48,18 +48,13 @@ private[spark] case class RDDBlockId(rddId: Int, splitIndex: Int) extends BlockI def name = "rdd_" + rddId + "_" + splitIndex } -private[spark] -case class ShuffleBlockId(shuffleId: Int, mapId: Int, reduceId: Int) extends BlockId { +private[spark] case class ShuffleBlockId(shuffleId: Int, mapId: Int, reduceId: Int) + extends BlockId { def name = "shuffle_" + shuffleId + "_" + mapId + "_" + reduceId } -private[spark] case class BroadcastBlockId(broadcastId: Long) extends BlockId { - def name = "broadcast_" + broadcastId -} - -private[spark] -case class BroadcastHelperBlockId(broadcastId: BroadcastBlockId, hType: String) extends BlockId { - def name = broadcastId.name + "_" + hType +private[spark] case class BroadcastBlockId(broadcastId: Long, field: String = "") extends BlockId { + def name = "broadcast_" + broadcastId + (if (field == "") "" else "_" + field) } private[spark] case class TaskResultBlockId(taskId: Long) extends BlockId { @@ -83,8 +78,7 @@ private[spark] case class TestBlockId(id: String) extends BlockId { private[spark] object BlockId { val RDD = "rdd_([0-9]+)_([0-9]+)".r val SHUFFLE = "shuffle_([0-9]+)_([0-9]+)_([0-9]+)".r - val BROADCAST = "broadcast_([0-9]+)".r - val BROADCAST_HELPER = "broadcast_([0-9]+)_([A-Za-z0-9]+)".r + val BROADCAST = "broadcast_([0-9]+)([_A-Za-z0-9]*)".r val TASKRESULT = "taskresult_([0-9]+)".r val STREAM = "input-([0-9]+)-([0-9]+)".r val TEST = "test_(.*)".r @@ -95,10 +89,8 @@ private[spark] object BlockId { RDDBlockId(rddId.toInt, splitIndex.toInt) case SHUFFLE(shuffleId, mapId, reduceId) => ShuffleBlockId(shuffleId.toInt, mapId.toInt, reduceId.toInt) - case BROADCAST(broadcastId) => - BroadcastBlockId(broadcastId.toLong) - case BROADCAST_HELPER(broadcastId, hType) => - BroadcastHelperBlockId(BroadcastBlockId(broadcastId.toLong), hType) + case BROADCAST(broadcastId, field) => + BroadcastBlockId(broadcastId.toLong, field.stripPrefix("_")) case TASKRESULT(taskId) => TaskResultBlockId(taskId.toLong) case STREAM(streamId, uniqueId) => diff --git a/core/src/main/scala/org/apache/spark/storage/BlockManager.scala b/core/src/main/scala/org/apache/spark/storage/BlockManager.scala index 1bf3f4db32ea7..a2a729130091f 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockManager.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockManager.scala @@ -29,17 +29,17 @@ import akka.actor.{ActorSystem, Cancellable, Props} import it.unimi.dsi.fastutil.io.{FastBufferedOutputStream, FastByteArrayOutputStream} import sun.nio.ch.DirectBuffer -import org.apache.spark.{Logging, SparkConf, SparkEnv, SparkException, SecurityManager} +import org.apache.spark.{Logging, MapOutputTracker, SecurityManager, SparkConf, SparkEnv, SparkException} import org.apache.spark.io.CompressionCodec import org.apache.spark.network._ import org.apache.spark.serializer.Serializer import org.apache.spark.util._ -sealed trait Values +private[spark] sealed trait Values -case class ByteBufferValues(buffer: ByteBuffer) extends Values -case class IteratorValues(iterator: Iterator[Any]) extends Values -case class ArrayBufferValues(buffer: ArrayBuffer[Any]) extends Values +private[spark] case class ByteBufferValues(buffer: ByteBuffer) extends Values +private[spark] case class IteratorValues(iterator: Iterator[Any]) extends Values +private[spark] case class ArrayBufferValues(buffer: ArrayBuffer[Any]) extends Values private[spark] class BlockManager( executorId: String, @@ -48,7 +48,8 @@ private[spark] class BlockManager( val defaultSerializer: Serializer, maxMemory: Long, val conf: SparkConf, - securityManager: SecurityManager) + securityManager: SecurityManager, + mapOutputTracker: MapOutputTracker) extends Logging { val shuffleBlockManager = new ShuffleBlockManager(this) @@ -57,8 +58,19 @@ private[spark] class BlockManager( private val blockInfo = new TimeStampedHashMap[BlockId, BlockInfo] - private[storage] val memoryStore: BlockStore = new MemoryStore(this, maxMemory) + private[storage] val memoryStore = new MemoryStore(this, maxMemory) private[storage] val diskStore = new DiskStore(this, diskBlockManager) + var tachyonInitialized = false + private[storage] lazy val tachyonStore: TachyonStore = { + val storeDir = conf.get("spark.tachyonStore.baseDir", "/tmp_spark_tachyon") + val appFolderName = conf.get("spark.tachyonStore.folderName") + val tachyonStorePath = s"${storeDir}/${appFolderName}/${this.executorId}" + val tachyonMaster = conf.get("spark.tachyonStore.url", "tachyon://localhost:19998") + val tachyonBlockManager = new TachyonBlockManager( + shuffleBlockManager, tachyonStorePath, tachyonMaster) + tachyonInitialized = true + new TachyonStore(this, tachyonBlockManager) + } // If we use Netty for shuffle, start a new Netty-based shuffle sender service. private val nettyPort: Int = { @@ -89,10 +101,10 @@ private[spark] class BlockManager( val heartBeatFrequency = BlockManager.getHeartBeatFrequency(conf) - val slaveActor = actorSystem.actorOf(Props(new BlockManagerSlaveActor(this)), + val slaveActor = actorSystem.actorOf(Props(new BlockManagerSlaveActor(this, mapOutputTracker)), name = "BlockManagerActor" + BlockManager.ID_GENERATOR.next) - // Pending reregistration action being executed asynchronously or null if none + // Pending re-registration action being executed asynchronously or null if none // is pending. Accesses should synchronize on asyncReregisterLock. var asyncReregisterTask: Future[Unit] = null val asyncReregisterLock = new Object @@ -122,10 +134,16 @@ private[spark] class BlockManager( /** * Construct a BlockManager with a memory limit set based on system properties. */ - def this(execId: String, actorSystem: ActorSystem, master: BlockManagerMaster, - serializer: Serializer, conf: SparkConf, securityManager: SecurityManager) = { - this(execId, actorSystem, master, serializer, BlockManager.getMaxMemory(conf), conf, - securityManager) + def this( + execId: String, + actorSystem: ActorSystem, + master: BlockManagerMaster, + serializer: Serializer, + conf: SparkConf, + securityManager: SecurityManager, + mapOutputTracker: MapOutputTracker) = { + this(execId, actorSystem, master, serializer, BlockManager.getMaxMemory(conf), + conf, securityManager, mapOutputTracker) } /** @@ -148,14 +166,15 @@ private[spark] class BlockManager( * an executor crash. * * This function deliberately fails silently if the master returns false (indicating that - * the slave needs to reregister). The error condition will be detected again by the next - * heart beat attempt or new block registration and another try to reregister all blocks + * the slave needs to re-register). The error condition will be detected again by the next + * heart beat attempt or new block registration and another try to re-register all blocks * will be made then. */ private def reportAllBlocks() { logInfo("Reporting " + blockInfo.size + " blocks to the master.") for ((blockId, info) <- blockInfo) { - if (!tryToReportBlockStatus(blockId, info)) { + val status = getCurrentBlockStatus(blockId, info) + if (!tryToReportBlockStatus(blockId, info, status)) { logError("Failed to report " + blockId + " to master; giving up.") return } @@ -163,20 +182,20 @@ private[spark] class BlockManager( } /** - * Reregister with the master and report all blocks to it. This will be called by the heart beat + * Re-register with the master and report all blocks to it. This will be called by the heart beat * thread if our heartbeat to the block manager indicates that we were not registered. * * Note that this method must be called without any BlockInfo locks held. */ def reregister() { - // TODO: We might need to rate limit reregistering. - logInfo("BlockManager reregistering with master") + // TODO: We might need to rate limit re-registering. + logInfo("BlockManager re-registering with master") master.registerBlockManager(blockManagerId, maxMemory, slaveActor) reportAllBlocks() } /** - * Reregister with the master sometime soon. + * Re-register with the master sometime soon. */ def asyncReregister() { asyncReregisterLock.synchronized { @@ -192,7 +211,7 @@ private[spark] class BlockManager( } /** - * For testing. Wait for any pending asynchronous reregistration; otherwise, do nothing. + * For testing. Wait for any pending asynchronous re-registration; otherwise, do nothing. */ def waitForAsyncReregister() { val task = asyncReregisterTask @@ -202,24 +221,45 @@ private[spark] class BlockManager( } /** - * Get storage level of local block. If no info exists for the block, then returns null. + * Get the BlockStatus for the block identified by the given ID, if it exists. + * NOTE: This is mainly for testing, and it doesn't fetch information from Tachyon. */ - def getLevel(blockId: BlockId): StorageLevel = blockInfo.get(blockId).map(_.level).orNull + def getStatus(blockId: BlockId): Option[BlockStatus] = { + blockInfo.get(blockId).map { info => + val memSize = if (memoryStore.contains(blockId)) memoryStore.getSize(blockId) else 0L + val diskSize = if (diskStore.contains(blockId)) diskStore.getSize(blockId) else 0L + // Assume that block is not in Tachyon + BlockStatus(info.level, memSize, diskSize, 0L) + } + } + + /** + * Get the ids of existing blocks that match the given filter. Note that this will + * query the blocks stored in the disk block manager (that the block manager + * may not know of). + */ + def getMatchingBlockIds(filter: BlockId => Boolean): Seq[BlockId] = { + (blockInfo.keys ++ diskBlockManager.getAllBlocks()).filter(filter).toSeq + } /** * Tell the master about the current storage status of a block. This will send a block update * message reflecting the current status, *not* the desired storage level in its block info. * For example, a block with MEMORY_AND_DISK set might have fallen out to be only on disk. * - * droppedMemorySize exists to account for when block is dropped from memory to disk (so it - * is still valid). This ensures that update in master will compensate for the increase in + * droppedMemorySize exists to account for when the block is dropped from memory to disk (so + * it is still valid). This ensures that update in master will compensate for the increase in * memory on slave. */ - def reportBlockStatus(blockId: BlockId, info: BlockInfo, droppedMemorySize: Long = 0L) { - val needReregister = !tryToReportBlockStatus(blockId, info, droppedMemorySize) + def reportBlockStatus( + blockId: BlockId, + info: BlockInfo, + status: BlockStatus, + droppedMemorySize: Long = 0L) { + val needReregister = !tryToReportBlockStatus(blockId, info, status, droppedMemorySize) if (needReregister) { - logInfo("Got told to reregister updating block " + blockId) - // Reregistering will report our new block for free. + logInfo("Got told to re-register updating block " + blockId) + // Re-registering will report our new block for free. asyncReregister() } logDebug("Told master about block " + blockId) @@ -230,27 +270,45 @@ private[spark] class BlockManager( * which will be true if the block was successfully recorded and false if * the slave needs to re-register. */ - private def tryToReportBlockStatus(blockId: BlockId, info: BlockInfo, + private def tryToReportBlockStatus( + blockId: BlockId, + info: BlockInfo, + status: BlockStatus, droppedMemorySize: Long = 0L): Boolean = { - val (curLevel, inMemSize, onDiskSize, tellMaster) = info.synchronized { + if (info.tellMaster) { + val storageLevel = status.storageLevel + val inMemSize = Math.max(status.memSize, droppedMemorySize) + val inTachyonSize = status.tachyonSize + val onDiskSize = status.diskSize + master.updateBlockInfo( + blockManagerId, blockId, storageLevel, inMemSize, onDiskSize, inTachyonSize) + } else true + } + + /** + * Return the updated storage status of the block with the given ID. More specifically, if + * the block is dropped from memory and possibly added to disk, return the new storage level + * and the updated in-memory and on-disk sizes. + */ + private def getCurrentBlockStatus(blockId: BlockId, info: BlockInfo): BlockStatus = { + val (newLevel, inMemSize, onDiskSize, inTachyonSize) = info.synchronized { info.level match { case null => - (StorageLevel.NONE, 0L, 0L, false) + (StorageLevel.NONE, 0L, 0L, 0L) case level => val inMem = level.useMemory && memoryStore.contains(blockId) + val inTachyon = level.useOffHeap && tachyonStore.contains(blockId) val onDisk = level.useDisk && diskStore.contains(blockId) - val storageLevel = StorageLevel(onDisk, inMem, level.deserialized, level.replication) - val memSize = if (inMem) memoryStore.getSize(blockId) else droppedMemorySize + val deserialized = if (inMem) level.deserialized else false + val replication = if (inMem || inTachyon || onDisk) level.replication else 1 + val storageLevel = StorageLevel(onDisk, inMem, inTachyon, deserialized, replication) + val memSize = if (inMem) memoryStore.getSize(blockId) else 0L + val tachyonSize = if (inTachyon) tachyonStore.getSize(blockId) else 0L val diskSize = if (onDisk) diskStore.getSize(blockId) else 0L - (storageLevel, memSize, diskSize, info.tellMaster) + (storageLevel, memSize, diskSize, tachyonSize) } } - - if (tellMaster) { - master.updateBlockInfo(blockManagerId, blockId, curLevel, inMemSize, onDiskSize) - } else { - true - } + BlockStatus(newLevel, inMemSize, onDiskSize, inTachyonSize) } /** @@ -330,6 +388,24 @@ private[spark] class BlockManager( logDebug("Block " + blockId + " not found in memory") } } + + // Look for the block in Tachyon + if (level.useOffHeap) { + logDebug("Getting block " + blockId + " from tachyon") + if (tachyonStore.contains(blockId)) { + tachyonStore.getBytes(blockId) match { + case Some(bytes) => { + if (!asValues) { + return Some(bytes) + } else { + return Some(dataDeserialize(blockId, bytes)) + } + } + case None => + logDebug("Block " + blockId + " not found in tachyon") + } + } + } // Look for block on disk, potentially storing it back into memory if required: if (level.useDisk) { @@ -398,10 +474,10 @@ private[spark] class BlockManager( /** * Get block from remote block managers as serialized bytes. */ - def getRemoteBytes(blockId: BlockId): Option[ByteBuffer] = { + def getRemoteBytes(blockId: BlockId): Option[ByteBuffer] = { logDebug("Getting remote block " + blockId + " as bytes") doGetRemote(blockId, asValues = false).asInstanceOf[Option[ByteBuffer]] - } + } private def doGetRemote(blockId: BlockId, asValues: Boolean): Option[Any] = { require(blockId != null, "BlockId is null") @@ -447,9 +523,8 @@ private[spark] class BlockManager( * so that we can control the maxMegabytesInFlight for the fetch. */ def getMultiple( - blocksByAddress: Seq[(BlockManagerId, Seq[(BlockId, Long)])], serializer: Serializer) - : BlockFetcherIterator = { - + blocksByAddress: Seq[(BlockManagerId, Seq[(BlockId, Long)])], + serializer: Serializer): BlockFetcherIterator = { val iter = if (conf.getBoolean("spark.shuffle.use.netty", false)) { new BlockFetcherIterator.NettyBlockFetcherIterator(this, blocksByAddress, serializer) @@ -461,52 +536,71 @@ private[spark] class BlockManager( iter } - def put(blockId: BlockId, values: Iterator[Any], level: StorageLevel, tellMaster: Boolean) - : Long = { + def put( + blockId: BlockId, + values: Iterator[Any], + level: StorageLevel, + tellMaster: Boolean): Seq[(BlockId, BlockStatus)] = { doPut(blockId, IteratorValues(values), level, tellMaster) } /** * A short circuited method to get a block writer that can write data directly to disk. - * The Block will be appended to the File specified by filename. - * This is currently used for writing shuffle files out. Callers should handle error - * cases. + * The Block will be appended to the File specified by filename. This is currently used for + * writing shuffle files out. Callers should handle error cases. */ - def getDiskWriter(blockId: BlockId, file: File, serializer: Serializer, bufferSize: Int) - : BlockObjectWriter = { + def getDiskWriter( + blockId: BlockId, + file: File, + serializer: Serializer, + bufferSize: Int): BlockObjectWriter = { val compressStream: OutputStream => OutputStream = wrapForCompression(blockId, _) val syncWrites = conf.getBoolean("spark.shuffle.sync", false) new DiskBlockObjectWriter(blockId, file, serializer, bufferSize, compressStream, syncWrites) } /** - * Put a new block of values to the block manager. Returns its (estimated) size in bytes. + * Put a new block of values to the block manager. Return a list of blocks updated as a + * result of this put. */ - def put(blockId: BlockId, values: ArrayBuffer[Any], level: StorageLevel, - tellMaster: Boolean = true) : Long = { + def put( + blockId: BlockId, + values: ArrayBuffer[Any], + level: StorageLevel, + tellMaster: Boolean = true): Seq[(BlockId, BlockStatus)] = { require(values != null, "Values is null") doPut(blockId, ArrayBufferValues(values), level, tellMaster) } /** - * Put a new block of serialized bytes to the block manager. + * Put a new block of serialized bytes to the block manager. Return a list of blocks updated + * as a result of this put. */ - def putBytes(blockId: BlockId, bytes: ByteBuffer, level: StorageLevel, - tellMaster: Boolean = true) { + def putBytes( + blockId: BlockId, + bytes: ByteBuffer, + level: StorageLevel, + tellMaster: Boolean = true): Seq[(BlockId, BlockStatus)] = { require(bytes != null, "Bytes is null") doPut(blockId, ByteBufferValues(bytes), level, tellMaster) } - private def doPut(blockId: BlockId, - data: Values, - level: StorageLevel, tellMaster: Boolean = true): Long = { + private def doPut( + blockId: BlockId, + data: Values, + level: StorageLevel, + tellMaster: Boolean = true): Seq[(BlockId, BlockStatus)] = { + require(blockId != null, "BlockId is null") require(level != null && level.isValid, "StorageLevel is null or invalid") + // Return value + val updatedBlocks = new ArrayBuffer[(BlockId, BlockStatus)] + // Remember the block's storage level so that we can correctly drop it to disk if it needs // to be dropped right after it got put into memory. Note, however, that other threads will // not be able to get() this block until we call markReady on its BlockInfo. - val myInfo = { + val putBlockInfo = { val tinfo = new BlockInfo(level, tellMaster) // Do atomically ! val oldBlockOpt = blockInfo.putIfAbsent(blockId, tinfo) @@ -514,7 +608,7 @@ private[spark] class BlockManager( if (oldBlockOpt.isDefined) { if (oldBlockOpt.get.waitForReady()) { logWarning("Block " + blockId + " already exists on this machine; not re-adding it") - return oldBlockOpt.get.size + return updatedBlocks } // TODO: So the block info exists - but previous attempt to load it (?) failed. @@ -536,7 +630,7 @@ private[spark] class BlockManager( // Ditto for the bytes after the put var bytesAfterPut: ByteBuffer = null - // Size of the block in bytes (to return to caller) + // Size of the block in bytes var size = 0L // If we're storing bytes, then initiate the replication before storing them locally. @@ -551,7 +645,7 @@ private[spark] class BlockManager( null } - myInfo.synchronized { + putBlockInfo.synchronized { logTrace("Put for block " + blockId + " took " + Utils.getUsedTimeMs(startTimeMs) + " to get into synchronized block") @@ -566,7 +660,7 @@ private[spark] class BlockManager( case ArrayBufferValues(array) => memoryStore.putValues(blockId, array, level, true) case ByteBufferValues(bytes) => { - bytes.rewind(); + bytes.rewind() memoryStore.putBytes(blockId, bytes, level) } } @@ -575,6 +669,25 @@ private[spark] class BlockManager( case Right(newBytes) => bytesAfterPut = newBytes case Left(newIterator) => valuesAfterPut = newIterator } + // Keep track of which blocks are dropped from memory + res.droppedBlocks.foreach { block => updatedBlocks += block } + } else if (level.useOffHeap) { + // Save to Tachyon. + val res = data match { + case IteratorValues(iterator) => + tachyonStore.putValues(blockId, iterator, level, false) + case ArrayBufferValues(array) => + tachyonStore.putValues(blockId, array, level, false) + case ByteBufferValues(bytes) => { + bytes.rewind(); + tachyonStore.putBytes(blockId, bytes, level) + } + } + size = res.size + res.data match { + case Right(newBytes) => bytesAfterPut = newBytes + case _ => + } } else { // Save directly to disk. // Don't get back the bytes unless we replicate them. @@ -586,7 +699,7 @@ private[spark] class BlockManager( case ArrayBufferValues(array) => diskStore.putValues(blockId, array, level, askForBytes) case ByteBufferValues(bytes) => { - bytes.rewind(); + bytes.rewind() diskStore.putBytes(blockId, bytes, level) } } @@ -597,21 +710,25 @@ private[spark] class BlockManager( } } - // Now that the block is in either the memory or disk store, let other threads read it, - // and tell the master about it. - marked = true - myInfo.markReady(size) - if (tellMaster) { - reportBlockStatus(blockId, myInfo) + val putBlockStatus = getCurrentBlockStatus(blockId, putBlockInfo) + if (putBlockStatus.storageLevel != StorageLevel.NONE) { + // Now that the block is in either the memory, tachyon, or disk store, + // let other threads read it, and tell the master about it. + marked = true + putBlockInfo.markReady(size) + if (tellMaster) { + reportBlockStatus(blockId, putBlockInfo, putBlockStatus) + } + updatedBlocks += ((blockId, putBlockStatus)) } } finally { - // If we failed at putting the block to memory/disk, notify other possible readers + // If we failed in putting the block to memory/disk, notify other possible readers // that it has failed, and then remove it from the block info map. - if (! marked) { + if (!marked) { // Note that the remove must happen before markFailure otherwise another thread // could've inserted a new BlockInfo before we remove it. blockInfo.remove(blockId) - myInfo.markFailure() + putBlockInfo.markFailure() logWarning("Putting block " + blockId + " failed") } } @@ -650,7 +767,7 @@ private[spark] class BlockManager( Utils.getUsedTimeMs(startTimeMs)) } - size + updatedBlocks } /** @@ -658,7 +775,8 @@ private[spark] class BlockManager( */ var cachedPeers: Seq[BlockManagerId] = null private def replicate(blockId: BlockId, data: ByteBuffer, level: StorageLevel) { - val tLevel = StorageLevel(level.useDisk, level.useMemory, level.deserialized, 1) + val tLevel = StorageLevel( + level.useDisk, level.useMemory, level.useOffHeap, level.deserialized, 1) if (cachedPeers == null) { cachedPeers = master.getPeers(blockManagerId, level.replication - 1) } @@ -687,28 +805,42 @@ private[spark] class BlockManager( /** * Write a block consisting of a single object. */ - def putSingle(blockId: BlockId, value: Any, level: StorageLevel, tellMaster: Boolean = true) { + def putSingle( + blockId: BlockId, + value: Any, + level: StorageLevel, + tellMaster: Boolean = true): Seq[(BlockId, BlockStatus)] = { put(blockId, Iterator(value), level, tellMaster) } /** * Drop a block from memory, possibly putting it on disk if applicable. Called when the memory * store reaches its limit and needs to free up space. + * + * Return the block status if the given block has been updated, else None. */ - def dropFromMemory(blockId: BlockId, data: Either[ArrayBuffer[Any], ByteBuffer]) { + def dropFromMemory( + blockId: BlockId, + data: Either[ArrayBuffer[Any], ByteBuffer]): Option[BlockStatus] = { + logInfo("Dropping block " + blockId + " from memory") val info = blockInfo.get(blockId).orNull + + // If the block has not already been dropped if (info != null) { info.synchronized { // required ? As of now, this will be invoked only for blocks which are ready // But in case this changes in future, adding for consistency sake. - if (! info.waitForReady() ) { + if (!info.waitForReady()) { // If we get here, the block write failed. logWarning("Block " + blockId + " was marked as failure. Nothing to drop") - return + return None } + var blockIsUpdated = false val level = info.level + + // Drop to disk, if storage level requires if (level.useDisk && !diskStore.contains(blockId)) { logInfo("Writing block " + blockId + " to disk") data match { @@ -717,24 +849,33 @@ private[spark] class BlockManager( case Right(bytes) => diskStore.putBytes(blockId, bytes, level) } + blockIsUpdated = true } + + // Actually drop from memory store val droppedMemorySize = if (memoryStore.contains(blockId)) memoryStore.getSize(blockId) else 0L - val blockWasRemoved = memoryStore.remove(blockId) - if (!blockWasRemoved) { + val blockIsRemoved = memoryStore.remove(blockId) + if (blockIsRemoved) { + blockIsUpdated = true + } else { logWarning("Block " + blockId + " could not be dropped from memory as it does not exist") } + + val status = getCurrentBlockStatus(blockId, info) if (info.tellMaster) { - reportBlockStatus(blockId, info, droppedMemorySize) + reportBlockStatus(blockId, info, status, droppedMemorySize) } if (!level.useDisk) { // The block is completely gone from this node; forget it so we can put() it again later. blockInfo.remove(blockId) } + if (blockIsUpdated) { + return Some(status) + } } - } else { - // The block has already been dropped } + None } /** @@ -742,11 +883,22 @@ private[spark] class BlockManager( * @return The number of blocks removed. */ def removeRdd(rddId: Int): Int = { - // TODO: Instead of doing a linear scan on the blockInfo map, create another map that maps - // from RDD.id to blocks. + // TODO: Avoid a linear scan by creating another mapping of RDD.id to blocks. logInfo("Removing RDD " + rddId) val blocksToRemove = blockInfo.keys.flatMap(_.asRDDId).filter(_.rddId == rddId) - blocksToRemove.foreach(blockId => removeBlock(blockId, tellMaster = false)) + blocksToRemove.foreach { blockId => removeBlock(blockId, tellMaster = false) } + blocksToRemove.size + } + + /** + * Remove all blocks belonging to the given broadcast. + */ + def removeBroadcast(broadcastId: Long, tellMaster: Boolean): Int = { + logInfo("Removing broadcast " + broadcastId) + val blocksToRemove = blockInfo.keys.collect { + case bid @ BroadcastBlockId(`broadcastId`, _) => bid + } + blocksToRemove.foreach { blockId => removeBlock(blockId, tellMaster) } blocksToRemove.size } @@ -760,13 +912,15 @@ private[spark] class BlockManager( // Removals are idempotent in disk store and memory store. At worst, we get a warning. val removedFromMemory = memoryStore.remove(blockId) val removedFromDisk = diskStore.remove(blockId) - if (!removedFromMemory && !removedFromDisk) { + val removedFromTachyon = if (tachyonInitialized) tachyonStore.remove(blockId) else false + if (!removedFromMemory && !removedFromDisk && !removedFromTachyon) { logWarning("Block " + blockId + " could not be removed as it was not found in either " + - "the disk or memory store") + "the disk, memory, or tachyon store") } blockInfo.remove(blockId) if (tellMaster && info.tellMaster) { - reportBlockStatus(blockId, info) + val status = getCurrentBlockStatus(blockId, info) + reportBlockStatus(blockId, info, status) } } else { // The block has already been removed; do nothing. @@ -785,10 +939,10 @@ private[spark] class BlockManager( } private def dropOldBlocks(cleanupTime: Long, shouldDrop: (BlockId => Boolean)) { - val iterator = blockInfo.internalMap.entrySet().iterator() + val iterator = blockInfo.getEntrySet.iterator while (iterator.hasNext) { val entry = iterator.next() - val (id, info, time) = (entry.getKey, entry.getValue._1, entry.getValue._2) + val (id, info, time) = (entry.getKey, entry.getValue.value, entry.getValue.timestamp) if (time < cleanupTime && shouldDrop(id)) { info.synchronized { val level = info.level @@ -798,17 +952,21 @@ private[spark] class BlockManager( if (level.useDisk) { diskStore.remove(id) } + if (level.useOffHeap) { + tachyonStore.remove(id) + } iterator.remove() logInfo("Dropped block " + id) } - reportBlockStatus(id, info) + val status = getCurrentBlockStatus(id, info) + reportBlockStatus(id, info, status) } } } def shouldCompress(blockId: BlockId): Boolean = blockId match { case ShuffleBlockId(_, _, _) => compressShuffle - case BroadcastBlockId(_) => compressBroadcast + case BroadcastBlockId(_, _) => compressBroadcast case RDDBlockId(_, _) => compressRdds case TempBlockId(_) => compressShuffleSpill case _ => false @@ -872,6 +1030,9 @@ private[spark] class BlockManager( blockInfo.clear() memoryStore.clear() diskStore.clear() + if (tachyonInitialized) { + tachyonStore.clear() + } metadataCleaner.cancel() broadcastCleaner.cancel() logInfo("BlockManager stopped") @@ -911,9 +1072,8 @@ private[spark] object BlockManager extends Logging { def blockIdsToBlockManagers( blockIds: Array[BlockId], env: SparkEnv, - blockManagerMaster: BlockManagerMaster = null) - : Map[BlockId, Seq[BlockManagerId]] = - { + blockManagerMaster: BlockManagerMaster = null): Map[BlockId, Seq[BlockManagerId]] = { + // blockManagerMaster != null is used in tests assert (env != null || blockManagerMaster != null) val blockLocations: Seq[Seq[BlockManagerId]] = if (blockManagerMaster == null) { @@ -932,18 +1092,14 @@ private[spark] object BlockManager extends Logging { def blockIdsToExecutorIds( blockIds: Array[BlockId], env: SparkEnv, - blockManagerMaster: BlockManagerMaster = null) - : Map[BlockId, Seq[String]] = - { + blockManagerMaster: BlockManagerMaster = null): Map[BlockId, Seq[String]] = { blockIdsToBlockManagers(blockIds, env, blockManagerMaster).mapValues(s => s.map(_.executorId)) } def blockIdsToHosts( blockIds: Array[BlockId], env: SparkEnv, - blockManagerMaster: BlockManagerMaster = null) - : Map[BlockId, Seq[String]] = - { + blockManagerMaster: BlockManagerMaster = null): Map[BlockId, Seq[String]] = { blockIdsToBlockManagers(blockIds, env, blockManagerMaster).mapValues(s => s.map(_.host)) } } diff --git a/core/src/main/scala/org/apache/spark/storage/BlockManagerId.scala b/core/src/main/scala/org/apache/spark/storage/BlockManagerId.scala index 98cd6e68fa724..be537d77309bc 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockManagerId.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockManagerId.scala @@ -50,7 +50,6 @@ private[spark] class BlockManagerId private ( // DEBUG code Utils.checkHost(host) assert (port > 0) - host + ":" + port } @@ -93,7 +92,7 @@ private[spark] class BlockManagerId private ( private[spark] object BlockManagerId { /** - * Returns a [[org.apache.spark.storage.BlockManagerId]] for the given configuraiton. + * Returns a [[org.apache.spark.storage.BlockManagerId]] for the given configuration. * * @param execId ID of the executor. * @param host Host name of the block manager. diff --git a/core/src/main/scala/org/apache/spark/storage/BlockManagerMaster.scala b/core/src/main/scala/org/apache/spark/storage/BlockManagerMaster.scala index e531467cccb40..7897fade2df2b 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockManagerMaster.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockManagerMaster.scala @@ -28,8 +28,7 @@ import org.apache.spark.storage.BlockManagerMessages._ import org.apache.spark.util.AkkaUtils private[spark] -class BlockManagerMaster(var driverActor : ActorRef, conf: SparkConf) extends Logging { - +class BlockManagerMaster(var driverActor: ActorRef, conf: SparkConf) extends Logging { val AKKA_RETRY_ATTEMPTS: Int = conf.getInt("spark.akka.num.retries", 3) val AKKA_RETRY_INTERVAL_MS: Int = conf.getInt("spark.akka.retry.wait", 3000) @@ -53,8 +52,7 @@ class BlockManagerMaster(var driverActor : ActorRef, conf: SparkConf) extends Lo } /** Register the BlockManager's id with the driver. */ - def registerBlockManager( - blockManagerId: BlockManagerId, maxMemSize: Long, slaveActor: ActorRef) { + def registerBlockManager(blockManagerId: BlockManagerId, maxMemSize: Long, slaveActor: ActorRef) { logInfo("Trying to register BlockManager") tell(RegisterBlockManager(blockManagerId, maxMemSize, slaveActor)) logInfo("Registered BlockManager") @@ -65,9 +63,10 @@ class BlockManagerMaster(var driverActor : ActorRef, conf: SparkConf) extends Lo blockId: BlockId, storageLevel: StorageLevel, memSize: Long, - diskSize: Long): Boolean = { + diskSize: Long, + tachyonSize: Long): Boolean = { val res = askDriverWithReply[Boolean]( - UpdateBlockInfo(blockManagerId, blockId, storageLevel, memSize, diskSize)) + UpdateBlockInfo(blockManagerId, blockId, storageLevel, memSize, diskSize, tachyonSize)) logInfo("Updated info of block " + blockId) res } @@ -82,6 +81,14 @@ class BlockManagerMaster(var driverActor : ActorRef, conf: SparkConf) extends Lo askDriverWithReply[Seq[Seq[BlockManagerId]]](GetLocationsMultipleBlockIds(blockIds)) } + /** + * Check if block manager master has a block. Note that this can be used to check for only + * those blocks that are reported to block manager master. + */ + def contains(blockId: BlockId) = { + !getLocations(blockId).isEmpty + } + /** Get ids of other nodes in the cluster from the driver */ def getPeers(blockManagerId: BlockManagerId, numPeers: Int): Seq[BlockManagerId] = { val result = askDriverWithReply[Seq[BlockManagerId]](GetPeers(blockManagerId, numPeers)) @@ -100,12 +107,10 @@ class BlockManagerMaster(var driverActor : ActorRef, conf: SparkConf) extends Lo askDriverWithReply(RemoveBlock(blockId)) } - /** - * Remove all blocks belonging to the given RDD. - */ + /** Remove all blocks belonging to the given RDD. */ def removeRdd(rddId: Int, blocking: Boolean) { val future = askDriverWithReply[Future[Seq[Int]]](RemoveRdd(rddId)) - future onFailure { + future.onFailure { case e: Throwable => logError("Failed to remove RDD " + rddId, e) } if (blocking) { @@ -113,6 +118,31 @@ class BlockManagerMaster(var driverActor : ActorRef, conf: SparkConf) extends Lo } } + /** Remove all blocks belonging to the given shuffle. */ + def removeShuffle(shuffleId: Int, blocking: Boolean) { + val future = askDriverWithReply[Future[Seq[Boolean]]](RemoveShuffle(shuffleId)) + future.onFailure { + case e: Throwable => logError("Failed to remove shuffle " + shuffleId, e) + } + if (blocking) { + Await.result(future, timeout) + } + } + + /** Remove all blocks belonging to the given broadcast. */ + def removeBroadcast(broadcastId: Long, removeFromMaster: Boolean, blocking: Boolean) { + val future = askDriverWithReply[Future[Seq[Int]]]( + RemoveBroadcast(broadcastId, removeFromMaster)) + future.onFailure { + case e: Throwable => + logError("Failed to remove broadcast " + broadcastId + + " with removeFromMaster = " + removeFromMaster, e) + } + if (blocking) { + Await.result(future, timeout) + } + } + /** * Return the memory status for each block manager, in the form of a map from * the block manager's id to two long values. The first value is the maximum @@ -127,6 +157,51 @@ class BlockManagerMaster(var driverActor : ActorRef, conf: SparkConf) extends Lo askDriverWithReply[Array[StorageStatus]](GetStorageStatus) } + /** + * Return the block's status on all block managers, if any. NOTE: This is a + * potentially expensive operation and should only be used for testing. + * + * If askSlaves is true, this invokes the master to query each block manager for the most + * updated block statuses. This is useful when the master is not informed of the given block + * by all block managers. + */ + def getBlockStatus( + blockId: BlockId, + askSlaves: Boolean = true): Map[BlockManagerId, BlockStatus] = { + val msg = GetBlockStatus(blockId, askSlaves) + /* + * To avoid potential deadlocks, the use of Futures is necessary, because the master actor + * should not block on waiting for a block manager, which can in turn be waiting for the + * master actor for a response to a prior message. + */ + val response = askDriverWithReply[Map[BlockManagerId, Future[Option[BlockStatus]]]](msg) + val (blockManagerIds, futures) = response.unzip + val result = Await.result(Future.sequence(futures), timeout) + if (result == null) { + throw new SparkException("BlockManager returned null for BlockStatus query: " + blockId) + } + val blockStatus = result.asInstanceOf[Iterable[Option[BlockStatus]]] + blockManagerIds.zip(blockStatus).flatMap { case (blockManagerId, status) => + status.map { s => (blockManagerId, s) } + }.toMap + } + + /** + * Return a list of ids of existing blocks such that the ids match the given filter. NOTE: This + * is a potentially expensive operation and should only be used for testing. + * + * If askSlaves is true, this invokes the master to query each block manager for the most + * updated block statuses. This is useful when the master is not informed of the given block + * by all block managers. + */ + def getMatchingBlockIds( + filter: BlockId => Boolean, + askSlaves: Boolean): Seq[BlockId] = { + val msg = GetMatchingBlockIds(filter, askSlaves) + val future = askDriverWithReply[Future[Seq[BlockId]]](msg) + Await.result(future, timeout) + } + /** Stop the driver actor, called only on the Spark driver node */ def stop() { if (driverActor != null) { diff --git a/core/src/main/scala/org/apache/spark/storage/BlockManagerMasterActor.scala b/core/src/main/scala/org/apache/spark/storage/BlockManagerMasterActor.scala index a999d76a326a6..c57b6e8391b13 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockManagerMasterActor.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockManagerMasterActor.scala @@ -28,6 +28,7 @@ import akka.actor.{Actor, ActorRef, Cancellable} import akka.pattern.ask import org.apache.spark.{Logging, SparkConf, SparkException} +import org.apache.spark.scheduler._ import org.apache.spark.storage.BlockManagerMessages._ import org.apache.spark.util.{AkkaUtils, Utils} @@ -36,11 +37,11 @@ import org.apache.spark.util.{AkkaUtils, Utils} * all slaves' block managers. */ private[spark] -class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Actor with Logging { +class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf, listenerBus: LiveListenerBus) + extends Actor with Logging { // Mapping from block manager id to the block manager's information. - private val blockManagerInfo = - new mutable.HashMap[BlockManagerId, BlockManagerMasterActor.BlockManagerInfo] + private val blockManagerInfo = new mutable.HashMap[BlockManagerId, BlockManagerInfo] // Mapping from executor ID to block manager ID. private val blockManagerIdByExecutor = new mutable.HashMap[String, BlockManagerId] @@ -72,10 +73,11 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act register(blockManagerId, maxMemSize, slaveActor) sender ! true - case UpdateBlockInfo(blockManagerId, blockId, storageLevel, deserializedSize, size) => + case UpdateBlockInfo( + blockManagerId, blockId, storageLevel, deserializedSize, size, tachyonSize) => // TODO: Ideally we want to handle all the message replies in receive instead of in the // individual private methods. - updateBlockInfo(blockManagerId, blockId, storageLevel, deserializedSize, size) + updateBlockInfo(blockManagerId, blockId, storageLevel, deserializedSize, size, tachyonSize) case GetLocations(blockId) => sender ! getLocations(blockId) @@ -92,9 +94,21 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act case GetStorageStatus => sender ! storageStatus + case GetBlockStatus(blockId, askSlaves) => + sender ! blockStatus(blockId, askSlaves) + + case GetMatchingBlockIds(filter, askSlaves) => + sender ! getMatchingBlockIds(filter, askSlaves) + case RemoveRdd(rddId) => sender ! removeRdd(rddId) + case RemoveShuffle(shuffleId) => + sender ! removeShuffle(shuffleId) + + case RemoveBroadcast(broadcastId, removeFromDriver) => + sender ! removeBroadcast(broadcastId, removeFromDriver) + case RemoveBlock(blockId) => removeBlockFromWorkers(blockId) sender ! true @@ -138,9 +152,41 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act // The dispatcher is used as an implicit argument into the Future sequence construction. import context.dispatcher val removeMsg = RemoveRdd(rddId) - Future.sequence(blockManagerInfo.values.map { bm => - bm.slaveActor.ask(removeMsg)(akkaTimeout).mapTo[Int] - }.toSeq) + Future.sequence( + blockManagerInfo.values.map { bm => + bm.slaveActor.ask(removeMsg)(akkaTimeout).mapTo[Int] + }.toSeq + ) + } + + private def removeShuffle(shuffleId: Int): Future[Seq[Boolean]] = { + // Nothing to do in the BlockManagerMasterActor data structures + import context.dispatcher + val removeMsg = RemoveShuffle(shuffleId) + Future.sequence( + blockManagerInfo.values.map { bm => + bm.slaveActor.ask(removeMsg)(akkaTimeout).mapTo[Boolean] + }.toSeq + ) + } + + /** + * Delegate RemoveBroadcast messages to each BlockManager because the master may not notified + * of all broadcast blocks. If removeFromDriver is false, broadcast blocks are only removed + * from the executors, but not from the driver. + */ + private def removeBroadcast(broadcastId: Long, removeFromDriver: Boolean): Future[Seq[Int]] = { + // TODO: Consolidate usages of + import context.dispatcher + val removeMsg = RemoveBroadcast(broadcastId, removeFromDriver) + val requiredBlockManagers = blockManagerInfo.values.filter { info => + removeFromDriver || info.blockManagerId.executorId != "" + } + Future.sequence( + requiredBlockManagers.map { bm => + bm.slaveActor.ask(removeMsg)(akkaTimeout).mapTo[Int] + }.toSeq + ) } private def removeBlockManager(blockManagerId: BlockManagerId) { @@ -160,6 +206,7 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act blockLocations.remove(locations) } } + listenerBus.post(SparkListenerBlockManagerRemoved(blockManagerId)) } private def expireDeadHosts() { @@ -217,11 +264,66 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act private def storageStatus: Array[StorageStatus] = { blockManagerInfo.map { case(blockManagerId, info) => - import collection.JavaConverters._ - StorageStatus(blockManagerId, info.maxMem, info.blocks.asScala.toMap) + val blockMap = mutable.Map[BlockId, BlockStatus](info.blocks.toSeq: _*) + new StorageStatus(blockManagerId, info.maxMem, blockMap) }.toArray } + /** + * Return the block's status for all block managers, if any. NOTE: This is a + * potentially expensive operation and should only be used for testing. + * + * If askSlaves is true, the master queries each block manager for the most updated block + * statuses. This is useful when the master is not informed of the given block by all block + * managers. + */ + private def blockStatus( + blockId: BlockId, + askSlaves: Boolean): Map[BlockManagerId, Future[Option[BlockStatus]]] = { + import context.dispatcher + val getBlockStatus = GetBlockStatus(blockId) + /* + * Rather than blocking on the block status query, master actor should simply return + * Futures to avoid potential deadlocks. This can arise if there exists a block manager + * that is also waiting for this master actor's response to a previous message. + */ + blockManagerInfo.values.map { info => + val blockStatusFuture = + if (askSlaves) { + info.slaveActor.ask(getBlockStatus)(akkaTimeout).mapTo[Option[BlockStatus]] + } else { + Future { info.getStatus(blockId) } + } + (info.blockManagerId, blockStatusFuture) + }.toMap + } + + /** + * Return the ids of blocks present in all the block managers that match the given filter. + * NOTE: This is a potentially expensive operation and should only be used for testing. + * + * If askSlaves is true, the master queries each block manager for the most updated block + * statuses. This is useful when the master is not informed of the given block by all block + * managers. + */ + private def getMatchingBlockIds( + filter: BlockId => Boolean, + askSlaves: Boolean): Future[Seq[BlockId]] = { + import context.dispatcher + val getMatchingBlockIds = GetMatchingBlockIds(filter) + Future.sequence( + blockManagerInfo.values.map { info => + val future = + if (askSlaves) { + info.slaveActor.ask(getMatchingBlockIds)(akkaTimeout).mapTo[Seq[BlockId]] + } else { + Future { info.blocks.keys.filter(filter).toSeq } + } + future + } + ).map(_.flatten.toSeq) + } + private def register(id: BlockManagerId, maxMemSize: Long, slaveActor: ActorRef) { if (!blockManagerInfo.contains(id)) { blockManagerIdByExecutor.get(id.executorId) match { @@ -233,9 +335,10 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act case None => blockManagerIdByExecutor(id.executorId) = id } - blockManagerInfo(id) = new BlockManagerMasterActor.BlockManagerInfo( - id, System.currentTimeMillis(), maxMemSize, slaveActor) + blockManagerInfo(id) = + new BlockManagerInfo(id, System.currentTimeMillis(), maxMemSize, slaveActor) } + listenerBus.post(SparkListenerBlockManagerAdded(id, maxMemSize)) } private def updateBlockInfo( @@ -243,7 +346,8 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act blockId: BlockId, storageLevel: StorageLevel, memSize: Long, - diskSize: Long) { + diskSize: Long, + tachyonSize: Long) { if (!blockManagerInfo.contains(blockManagerId)) { if (blockManagerId.executorId == "" && !isLocal) { @@ -262,7 +366,8 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act return } - blockManagerInfo(blockManagerId).updateBlockInfo(blockId, storageLevel, memSize, diskSize) + blockManagerInfo(blockManagerId).updateBlockInfo( + blockId, storageLevel, memSize, diskSize, tachyonSize) var locations: mutable.HashSet[BlockManagerId] = null if (blockLocations.containsKey(blockId)) { @@ -306,98 +411,113 @@ class BlockManagerMasterActor(val isLocal: Boolean, conf: SparkConf) extends Act } } +private[spark] case class BlockStatus( + storageLevel: StorageLevel, + memSize: Long, + diskSize: Long, + tachyonSize: Long) -private[spark] -object BlockManagerMasterActor { - - case class BlockStatus(storageLevel: StorageLevel, memSize: Long, diskSize: Long) +private[spark] class BlockManagerInfo( + val blockManagerId: BlockManagerId, + timeMs: Long, + val maxMem: Long, + val slaveActor: ActorRef) + extends Logging { - class BlockManagerInfo( - val blockManagerId: BlockManagerId, - timeMs: Long, - val maxMem: Long, - val slaveActor: ActorRef) - extends Logging { + private var _lastSeenMs: Long = timeMs + private var _remainingMem: Long = maxMem - private var _lastSeenMs: Long = timeMs - private var _remainingMem: Long = maxMem + // Mapping from block id to its status. + private val _blocks = new JHashMap[BlockId, BlockStatus] - // Mapping from block id to its status. - private val _blocks = new JHashMap[BlockId, BlockStatus] + logInfo("Registering block manager %s with %s RAM".format( + blockManagerId.hostPort, Utils.bytesToString(maxMem))) - logInfo("Registering block manager %s with %s RAM".format( - blockManagerId.hostPort, Utils.bytesToString(maxMem))) + def getStatus(blockId: BlockId) = Option(_blocks.get(blockId)) - def updateLastSeenMs() { - _lastSeenMs = System.currentTimeMillis() - } + def updateLastSeenMs() { + _lastSeenMs = System.currentTimeMillis() + } - def updateBlockInfo(blockId: BlockId, storageLevel: StorageLevel, memSize: Long, - diskSize: Long) { + def updateBlockInfo( + blockId: BlockId, + storageLevel: StorageLevel, + memSize: Long, + diskSize: Long, + tachyonSize: Long) { - updateLastSeenMs() + updateLastSeenMs() - if (_blocks.containsKey(blockId)) { - // The block exists on the slave already. - val originalLevel: StorageLevel = _blocks.get(blockId).storageLevel + if (_blocks.containsKey(blockId)) { + // The block exists on the slave already. + val originalLevel: StorageLevel = _blocks.get(blockId).storageLevel - if (originalLevel.useMemory) { - _remainingMem += memSize - } + if (originalLevel.useMemory) { + _remainingMem += memSize } + } - if (storageLevel.isValid) { - // isValid means it is either stored in-memory or on-disk. - // But the memSize here indicates the data size in or dropped from memory, - // and the diskSize here indicates the data size in or dropped to disk. - // They can be both larger than 0, when a block is dropped from memory to disk. - // Therefore, a safe way to set BlockStatus is to set its info in accurate modes. - if (storageLevel.useMemory) { - _blocks.put(blockId, BlockStatus(storageLevel, memSize, 0)) - _remainingMem -= memSize - logInfo("Added %s in memory on %s (size: %s, free: %s)".format( - blockId, blockManagerId.hostPort, Utils.bytesToString(memSize), - Utils.bytesToString(_remainingMem))) - } - if (storageLevel.useDisk) { - _blocks.put(blockId, BlockStatus(storageLevel, 0, diskSize)) - logInfo("Added %s on disk on %s (size: %s)".format( - blockId, blockManagerId.hostPort, Utils.bytesToString(diskSize))) - } - } else if (_blocks.containsKey(blockId)) { - // If isValid is not true, drop the block. - val blockStatus: BlockStatus = _blocks.get(blockId) - _blocks.remove(blockId) - if (blockStatus.storageLevel.useMemory) { - _remainingMem += blockStatus.memSize - logInfo("Removed %s on %s in memory (size: %s, free: %s)".format( - blockId, blockManagerId.hostPort, Utils.bytesToString(blockStatus.memSize), - Utils.bytesToString(_remainingMem))) - } - if (blockStatus.storageLevel.useDisk) { - logInfo("Removed %s on %s on disk (size: %s)".format( - blockId, blockManagerId.hostPort, Utils.bytesToString(blockStatus.diskSize))) - } + if (storageLevel.isValid) { + /* isValid means it is either stored in-memory, on-disk or on-Tachyon. + * But the memSize here indicates the data size in or dropped from memory, + * tachyonSize here indicates the data size in or dropped from Tachyon, + * and the diskSize here indicates the data size in or dropped to disk. + * They can be both larger than 0, when a block is dropped from memory to disk. + * Therefore, a safe way to set BlockStatus is to set its info in accurate modes. */ + if (storageLevel.useMemory) { + _blocks.put(blockId, BlockStatus(storageLevel, memSize, 0, 0)) + _remainingMem -= memSize + logInfo("Added %s in memory on %s (size: %s, free: %s)".format( + blockId, blockManagerId.hostPort, Utils.bytesToString(memSize), + Utils.bytesToString(_remainingMem))) + } + if (storageLevel.useDisk) { + _blocks.put(blockId, BlockStatus(storageLevel, 0, diskSize, 0)) + logInfo("Added %s on disk on %s (size: %s)".format( + blockId, blockManagerId.hostPort, Utils.bytesToString(diskSize))) + } + if (storageLevel.useOffHeap) { + _blocks.put(blockId, BlockStatus(storageLevel, 0, 0, tachyonSize)) + logInfo("Added %s on tachyon on %s (size: %s)".format( + blockId, blockManagerId.hostPort, Utils.bytesToString(tachyonSize))) + } + } else if (_blocks.containsKey(blockId)) { + // If isValid is not true, drop the block. + val blockStatus: BlockStatus = _blocks.get(blockId) + _blocks.remove(blockId) + if (blockStatus.storageLevel.useMemory) { + _remainingMem += blockStatus.memSize + logInfo("Removed %s on %s in memory (size: %s, free: %s)".format( + blockId, blockManagerId.hostPort, Utils.bytesToString(blockStatus.memSize), + Utils.bytesToString(_remainingMem))) + } + if (blockStatus.storageLevel.useDisk) { + logInfo("Removed %s on %s on disk (size: %s)".format( + blockId, blockManagerId.hostPort, Utils.bytesToString(blockStatus.diskSize))) + } + if (blockStatus.storageLevel.useOffHeap) { + logInfo("Removed %s on %s on tachyon (size: %s)".format( + blockId, blockManagerId.hostPort, Utils.bytesToString(blockStatus.tachyonSize))) } } + } - def removeBlock(blockId: BlockId) { - if (_blocks.containsKey(blockId)) { - _remainingMem += _blocks.get(blockId).memSize - _blocks.remove(blockId) - } + def removeBlock(blockId: BlockId) { + if (_blocks.containsKey(blockId)) { + _remainingMem += _blocks.get(blockId).memSize + _blocks.remove(blockId) } + } - def remainingMem: Long = _remainingMem + def remainingMem: Long = _remainingMem - def lastSeenMs: Long = _lastSeenMs + def lastSeenMs: Long = _lastSeenMs - def blocks: JHashMap[BlockId, BlockStatus] = _blocks + def blocks: JHashMap[BlockId, BlockStatus] = _blocks - override def toString: String = "BlockManagerInfo " + timeMs + " " + _remainingMem + override def toString: String = "BlockManagerInfo " + timeMs + " " + _remainingMem - def clear() { - _blocks.clear() - } + def clear() { + _blocks.clear() } } diff --git a/core/src/main/scala/org/apache/spark/storage/BlockManagerMessages.scala b/core/src/main/scala/org/apache/spark/storage/BlockManagerMessages.scala index bbb9529b5a0ca..2b53bf33b5fba 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockManagerMessages.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockManagerMessages.scala @@ -34,6 +34,13 @@ private[storage] object BlockManagerMessages { // Remove all blocks belonging to a specific RDD. case class RemoveRdd(rddId: Int) extends ToBlockManagerSlave + // Remove all blocks belonging to a specific shuffle. + case class RemoveShuffle(shuffleId: Int) extends ToBlockManagerSlave + + // Remove all blocks belonging to a specific broadcast. + case class RemoveBroadcast(broadcastId: Long, removeFromDriver: Boolean = true) + extends ToBlockManagerSlave + ////////////////////////////////////////////////////////////////////////////////// // Messages from slaves to the master. @@ -53,11 +60,12 @@ private[storage] object BlockManagerMessages { var blockId: BlockId, var storageLevel: StorageLevel, var memSize: Long, - var diskSize: Long) + var diskSize: Long, + var tachyonSize: Long) extends ToBlockManagerMaster with Externalizable { - def this() = this(null, null, null, 0, 0) // For deserialization only + def this() = this(null, null, null, 0, 0, 0) // For deserialization only override def writeExternal(out: ObjectOutput) { blockManagerId.writeExternal(out) @@ -65,6 +73,7 @@ private[storage] object BlockManagerMessages { storageLevel.writeExternal(out) out.writeLong(memSize) out.writeLong(diskSize) + out.writeLong(tachyonSize) } override def readExternal(in: ObjectInput) { @@ -73,21 +82,25 @@ private[storage] object BlockManagerMessages { storageLevel = StorageLevel(in) memSize = in.readLong() diskSize = in.readLong() + tachyonSize = in.readLong() } } object UpdateBlockInfo { - def apply(blockManagerId: BlockManagerId, + def apply( + blockManagerId: BlockManagerId, blockId: BlockId, storageLevel: StorageLevel, memSize: Long, - diskSize: Long): UpdateBlockInfo = { - new UpdateBlockInfo(blockManagerId, blockId, storageLevel, memSize, diskSize) + diskSize: Long, + tachyonSize: Long): UpdateBlockInfo = { + new UpdateBlockInfo(blockManagerId, blockId, storageLevel, memSize, diskSize, tachyonSize) } // For pattern-matching - def unapply(h: UpdateBlockInfo): Option[(BlockManagerId, BlockId, StorageLevel, Long, Long)] = { - Some((h.blockManagerId, h.blockId, h.storageLevel, h.memSize, h.diskSize)) + def unapply(h: UpdateBlockInfo) + : Option[(BlockManagerId, BlockId, StorageLevel, Long, Long, Long)] = { + Some((h.blockManagerId, h.blockId, h.storageLevel, h.memSize, h.diskSize, h.tachyonSize)) } } @@ -103,7 +116,13 @@ private[storage] object BlockManagerMessages { case object GetMemoryStatus extends ToBlockManagerMaster - case object ExpireDeadHosts extends ToBlockManagerMaster - case object GetStorageStatus extends ToBlockManagerMaster + + case class GetBlockStatus(blockId: BlockId, askSlaves: Boolean = true) + extends ToBlockManagerMaster + + case class GetMatchingBlockIds(filter: BlockId => Boolean, askSlaves: Boolean = true) + extends ToBlockManagerMaster + + case object ExpireDeadHosts extends ToBlockManagerMaster } diff --git a/core/src/main/scala/org/apache/spark/storage/BlockManagerSlaveActor.scala b/core/src/main/scala/org/apache/spark/storage/BlockManagerSlaveActor.scala index bcfb82d3c7336..6d4db064dff58 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockManagerSlaveActor.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockManagerSlaveActor.scala @@ -17,8 +17,11 @@ package org.apache.spark.storage -import akka.actor.Actor +import scala.concurrent.Future +import akka.actor.{ActorRef, Actor} + +import org.apache.spark.{Logging, MapOutputTracker} import org.apache.spark.storage.BlockManagerMessages._ /** @@ -26,14 +29,59 @@ import org.apache.spark.storage.BlockManagerMessages._ * this is used to remove blocks from the slave's BlockManager. */ private[storage] -class BlockManagerSlaveActor(blockManager: BlockManager) extends Actor { - override def receive = { +class BlockManagerSlaveActor( + blockManager: BlockManager, + mapOutputTracker: MapOutputTracker) + extends Actor with Logging { + + import context.dispatcher + // Operations that involve removing blocks may be slow and should be done asynchronously + override def receive = { case RemoveBlock(blockId) => - blockManager.removeBlock(blockId) + doAsync[Boolean]("removing block " + blockId, sender) { + blockManager.removeBlock(blockId) + true + } case RemoveRdd(rddId) => - val numBlocksRemoved = blockManager.removeRdd(rddId) - sender ! numBlocksRemoved + doAsync[Int]("removing RDD " + rddId, sender) { + blockManager.removeRdd(rddId) + } + + case RemoveShuffle(shuffleId) => + doAsync[Boolean]("removing shuffle " + shuffleId, sender) { + if (mapOutputTracker != null) { + mapOutputTracker.unregisterShuffle(shuffleId) + } + blockManager.shuffleBlockManager.removeShuffle(shuffleId) + } + + case RemoveBroadcast(broadcastId, tellMaster) => + doAsync[Int]("removing broadcast " + broadcastId, sender) { + blockManager.removeBroadcast(broadcastId, tellMaster) + } + + case GetBlockStatus(blockId, _) => + sender ! blockManager.getStatus(blockId) + + case GetMatchingBlockIds(filter, _) => + sender ! blockManager.getMatchingBlockIds(filter) + } + + private def doAsync[T](actionMessage: String, responseActor: ActorRef)(body: => T) { + val future = Future { + logDebug(actionMessage) + body + } + future.onSuccess { case response => + logDebug("Done " + actionMessage + ", response is " + response) + responseActor ! response + logDebug("Sent response: " + response + " to " + responseActor) + } + future.onFailure { case t: Throwable => + logError("Error in " + actionMessage, t) + responseActor ! null.asInstanceOf[T] + } } } diff --git a/core/src/main/scala/org/apache/spark/storage/DiskBlockManager.scala b/core/src/main/scala/org/apache/spark/storage/DiskBlockManager.scala index f3e1c38744d78..7a24c8f57f43b 100644 --- a/core/src/main/scala/org/apache/spark/storage/DiskBlockManager.scala +++ b/core/src/main/scala/org/apache/spark/storage/DiskBlockManager.scala @@ -90,6 +90,20 @@ private[spark] class DiskBlockManager(shuffleManager: ShuffleBlockManager, rootD def getFile(blockId: BlockId): File = getFile(blockId.name) + /** Check if disk block manager has a block. */ + def containsBlock(blockId: BlockId): Boolean = { + getBlockLocation(blockId).file.exists() + } + + /** List all the blocks currently stored on disk by the disk manager. */ + def getAllBlocks(): Seq[BlockId] = { + // Get all the files inside the array of array of directories + subDirs.flatten.filter(_ != null).flatMap { dir => + val files = dir.list() + if (files != null) files else Seq.empty + }.map(BlockId.apply) + } + /** Produces a unique block id and File suitable for intermediate results. */ def createTempBlock(): (TempBlockId, File) = { var blockId = new TempBlockId(UUID.randomUUID()) diff --git a/core/src/main/scala/org/apache/spark/storage/FileSegment.scala b/core/src/main/scala/org/apache/spark/storage/FileSegment.scala index 555486830a769..132502b75f8cd 100644 --- a/core/src/main/scala/org/apache/spark/storage/FileSegment.scala +++ b/core/src/main/scala/org/apache/spark/storage/FileSegment.scala @@ -23,6 +23,6 @@ import java.io.File * References a particular segment of a file (potentially the entire file), * based off an offset and a length. */ -private[spark] class FileSegment(val file: File, val offset: Long, val length : Long) { +private[spark] class FileSegment(val file: File, val offset: Long, val length: Long) { override def toString = "(name=%s, offset=%d, length=%d)".format(file.getName, offset, length) } diff --git a/core/src/main/scala/org/apache/spark/storage/MemoryStore.scala b/core/src/main/scala/org/apache/spark/storage/MemoryStore.scala index 38836d44b04e8..488f1ea9628f5 100644 --- a/core/src/main/scala/org/apache/spark/storage/MemoryStore.scala +++ b/core/src/main/scala/org/apache/spark/storage/MemoryStore.scala @@ -49,7 +49,7 @@ private class MemoryStore(blockManager: BlockManager, maxMemory: Long) } } - override def putBytes(blockId: BlockId, _bytes: ByteBuffer, level: StorageLevel) : PutResult = { + override def putBytes(blockId: BlockId, _bytes: ByteBuffer, level: StorageLevel): PutResult = { // Work on a duplicate - since the original input might be used elsewhere. val bytes = _bytes.duplicate() bytes.rewind() @@ -70,16 +70,15 @@ private class MemoryStore(blockManager: BlockManager, maxMemory: Long) blockId: BlockId, values: ArrayBuffer[Any], level: StorageLevel, - returnValues: Boolean) - : PutResult = { + returnValues: Boolean): PutResult = { if (level.deserialized) { val sizeEstimate = SizeEstimator.estimate(values.asInstanceOf[AnyRef]) - tryToPut(blockId, values, sizeEstimate, true) - PutResult(sizeEstimate, Left(values.toIterator)) + val putAttempt = tryToPut(blockId, values, sizeEstimate, deserialized = true) + PutResult(sizeEstimate, Left(values.iterator), putAttempt.droppedBlocks) } else { - val bytes = blockManager.dataSerialize(blockId, values.toIterator) - tryToPut(blockId, bytes, bytes.limit, false) - PutResult(bytes.limit(), Right(bytes.duplicate())) + val bytes = blockManager.dataSerialize(blockId, values.iterator) + val putAttempt = tryToPut(blockId, bytes, bytes.limit, deserialized = false) + PutResult(bytes.limit(), Right(bytes.duplicate()), putAttempt.droppedBlocks) } } @@ -87,20 +86,10 @@ private class MemoryStore(blockManager: BlockManager, maxMemory: Long) blockId: BlockId, values: Iterator[Any], level: StorageLevel, - returnValues: Boolean) - : PutResult = { - - if (level.deserialized) { - val valueEntries = new ArrayBuffer[Any]() - valueEntries ++= values - val sizeEstimate = SizeEstimator.estimate(valueEntries.asInstanceOf[AnyRef]) - tryToPut(blockId, valueEntries, sizeEstimate, true) - PutResult(sizeEstimate, Left(valueEntries.toIterator)) - } else { - val bytes = blockManager.dataSerialize(blockId, values) - tryToPut(blockId, bytes, bytes.limit, false) - PutResult(bytes.limit(), Right(bytes.duplicate())) - } + returnValues: Boolean): PutResult = { + val valueEntries = new ArrayBuffer[Any]() + valueEntries ++= values + putValues(blockId, valueEntries, level, returnValues) } override def getBytes(blockId: BlockId): Option[ByteBuffer] = { @@ -164,19 +153,34 @@ private class MemoryStore(blockManager: BlockManager, maxMemory: Long) * an ArrayBuffer if deserialized is true or a ByteBuffer otherwise. Its (possibly estimated) * size must also be passed by the caller. * - * Locks on the object putLock to ensure that all the put requests and its associated block + * Lock on the object putLock to ensure that all the put requests and its associated block * dropping is done by only on thread at a time. Otherwise while one thread is dropping * blocks to free memory for one block, another thread may use up the freed space for * another block. + * + * Return whether put was successful, along with the blocks dropped in the process. */ - private def tryToPut(blockId: BlockId, value: Any, size: Long, deserialized: Boolean): Boolean = { - // TODO: Its possible to optimize the locking by locking entries only when selecting blocks - // to be dropped. Once the to-be-dropped blocks have been selected, and lock on entries has been - // released, it must be ensured that those to-be-dropped blocks are not double counted for - // freeing up more space for another block that needs to be put. Only then the actually dropping - // of blocks (and writing to disk if necessary) can proceed in parallel. + private def tryToPut( + blockId: BlockId, + value: Any, + size: Long, + deserialized: Boolean): ResultWithDroppedBlocks = { + + /* TODO: Its possible to optimize the locking by locking entries only when selecting blocks + * to be dropped. Once the to-be-dropped blocks have been selected, and lock on entries has + * been released, it must be ensured that those to-be-dropped blocks are not double counted + * for freeing up more space for another block that needs to be put. Only then the actually + * dropping of blocks (and writing to disk if necessary) can proceed in parallel. */ + + var putSuccess = false + val droppedBlocks = new ArrayBuffer[(BlockId, BlockStatus)] + putLock.synchronized { - if (ensureFreeSpace(blockId, size)) { + val freeSpaceResult = ensureFreeSpace(blockId, size) + val enoughFreeSpace = freeSpaceResult.success + droppedBlocks ++= freeSpaceResult.droppedBlocks + + if (enoughFreeSpace) { val entry = new Entry(value, size, deserialized) entries.synchronized { entries.put(blockId, entry) @@ -189,7 +193,7 @@ private class MemoryStore(blockManager: BlockManager, maxMemory: Long) logInfo("Block %s stored as bytes to memory (size %s, free %s)".format( blockId, Utils.bytesToString(size), Utils.bytesToString(freeMemory))) } - true + putSuccess = true } else { // Tell the block manager that we couldn't put it in memory so that it can drop it to // disk if the block allows disk storage. @@ -198,29 +202,33 @@ private class MemoryStore(blockManager: BlockManager, maxMemory: Long) } else { Right(value.asInstanceOf[ByteBuffer].duplicate()) } - blockManager.dropFromMemory(blockId, data) - false + val droppedBlockStatus = blockManager.dropFromMemory(blockId, data) + droppedBlockStatus.foreach { status => droppedBlocks += ((blockId, status)) } } } + ResultWithDroppedBlocks(putSuccess, droppedBlocks) } /** - * Tries to free up a given amount of space to store a particular block, but can fail and return - * false if either the block is bigger than our memory or it would require replacing another - * block from the same RDD (which leads to a wasteful cyclic replacement pattern for RDDs that + * Try to free up a given amount of space to store a particular block, but can fail if + * either the block is bigger than our memory or it would require replacing another block + * from the same RDD (which leads to a wasteful cyclic replacement pattern for RDDs that * don't fit into memory that we want to avoid). * - * Assumes that a lock is held by the caller to ensure only one thread is dropping blocks. + * Assume that a lock is held by the caller to ensure only one thread is dropping blocks. * Otherwise, the freed space may fill up before the caller puts in their new value. + * + * Return whether there is enough free space, along with the blocks dropped in the process. */ - private def ensureFreeSpace(blockIdToAdd: BlockId, space: Long): Boolean = { - + private def ensureFreeSpace(blockIdToAdd: BlockId, space: Long): ResultWithDroppedBlocks = { logInfo("ensureFreeSpace(%d) called with curMem=%d, maxMem=%d".format( space, currentMemory, maxMemory)) + val droppedBlocks = new ArrayBuffer[(BlockId, BlockStatus)] + if (space > maxMemory) { logInfo("Will not store " + blockIdToAdd + " as it is larger than our memory limit") - return false + return ResultWithDroppedBlocks(success = false, droppedBlocks) } if (maxMemory - currentMemory < space) { @@ -256,17 +264,18 @@ private class MemoryStore(blockManager: BlockManager, maxMemory: Long) } else { Right(entry.value.asInstanceOf[ByteBuffer].duplicate()) } - blockManager.dropFromMemory(blockId, data) + val droppedBlockStatus = blockManager.dropFromMemory(blockId, data) + droppedBlockStatus.foreach { status => droppedBlocks += ((blockId, status)) } } } - return true + return ResultWithDroppedBlocks(success = true, droppedBlocks) } else { logInfo(s"Will not store $blockIdToAdd as it would require dropping another block " + "from the same RDD") - return false + return ResultWithDroppedBlocks(success = false, droppedBlocks) } } - true + ResultWithDroppedBlocks(success = true, droppedBlocks) } override def contains(blockId: BlockId): Boolean = { @@ -274,3 +283,6 @@ private class MemoryStore(blockManager: BlockManager, maxMemory: Long) } } +private case class ResultWithDroppedBlocks( + success: Boolean, + droppedBlocks: Seq[(BlockId, BlockStatus)]) diff --git a/core/src/main/scala/org/apache/spark/storage/PutResult.scala b/core/src/main/scala/org/apache/spark/storage/PutResult.scala index 2eba2f06b5bfd..f0eac7594ecf6 100644 --- a/core/src/main/scala/org/apache/spark/storage/PutResult.scala +++ b/core/src/main/scala/org/apache/spark/storage/PutResult.scala @@ -20,7 +20,13 @@ package org.apache.spark.storage import java.nio.ByteBuffer /** - * Result of adding a block into a BlockStore. Contains its estimated size, and possibly the - * values put if the caller asked for them to be returned (e.g. for chaining replication) + * Result of adding a block into a BlockStore. This case class contains a few things: + * (1) The estimated size of the put, + * (2) The values put if the caller asked for them to be returned (e.g. for chaining + * replication), and + * (3) A list of blocks dropped as a result of this put. This is always empty for DiskStore. */ -private[spark] case class PutResult(size: Long, data: Either[Iterator[_], ByteBuffer]) +private[spark] case class PutResult( + size: Long, + data: Either[Iterator[_], ByteBuffer], + droppedBlocks: Seq[(BlockId, BlockStatus)] = Seq.empty) diff --git a/core/src/main/scala/org/apache/spark/storage/ShuffleBlockManager.scala b/core/src/main/scala/org/apache/spark/storage/ShuffleBlockManager.scala index bb07c8cb134cc..4cd4cdbd9909d 100644 --- a/core/src/main/scala/org/apache/spark/storage/ShuffleBlockManager.scala +++ b/core/src/main/scala/org/apache/spark/storage/ShuffleBlockManager.scala @@ -169,23 +169,43 @@ class ShuffleBlockManager(blockManager: BlockManager) extends Logging { throw new IllegalStateException("Failed to find shuffle block: " + id) } + /** Remove all the blocks / files and metadata related to a particular shuffle. */ + def removeShuffle(shuffleId: ShuffleId): Boolean = { + // Do not change the ordering of this, if shuffleStates should be removed only + // after the corresponding shuffle blocks have been removed + val cleaned = removeShuffleBlocks(shuffleId) + shuffleStates.remove(shuffleId) + cleaned + } + + /** Remove all the blocks / files related to a particular shuffle. */ + private def removeShuffleBlocks(shuffleId: ShuffleId): Boolean = { + shuffleStates.get(shuffleId) match { + case Some(state) => + if (consolidateShuffleFiles) { + for (fileGroup <- state.allFileGroups; file <- fileGroup.files) { + file.delete() + } + } else { + for (mapId <- state.completedMapTasks; reduceId <- 0 until state.numBuckets) { + val blockId = new ShuffleBlockId(shuffleId, mapId, reduceId) + blockManager.diskBlockManager.getFile(blockId).delete() + } + } + logInfo("Deleted all files for shuffle " + shuffleId) + true + case None => + logInfo("Could not find files for shuffle " + shuffleId + " for deleting") + false + } + } + private def physicalFileName(shuffleId: Int, bucketId: Int, fileId: Int) = { "merged_shuffle_%d_%d_%d".format(shuffleId, bucketId, fileId) } private def cleanup(cleanupTime: Long) { - shuffleStates.clearOldValues(cleanupTime, (shuffleId, state) => { - if (consolidateShuffleFiles) { - for (fileGroup <- state.allFileGroups; file <- fileGroup.files) { - file.delete() - } - } else { - for (mapId <- state.completedMapTasks; reduceId <- 0 until state.numBuckets) { - val blockId = new ShuffleBlockId(shuffleId, mapId, reduceId) - blockManager.diskBlockManager.getFile(blockId).delete() - } - } - }) + shuffleStates.clearOldValues(cleanupTime, (shuffleId, state) => removeShuffleBlocks(shuffleId)) } } diff --git a/core/src/main/scala/org/apache/spark/storage/StorageLevel.scala b/core/src/main/scala/org/apache/spark/storage/StorageLevel.scala index 1b7934d59fa1d..95e71de2d3f1d 100644 --- a/core/src/main/scala/org/apache/spark/storage/StorageLevel.scala +++ b/core/src/main/scala/org/apache/spark/storage/StorageLevel.scala @@ -21,8 +21,9 @@ import java.io.{Externalizable, IOException, ObjectInput, ObjectOutput} /** * Flags for controlling the storage of an RDD. Each StorageLevel records whether to use memory, - * whether to drop the RDD to disk if it falls out of memory, whether to keep the data in memory - * in a serialized format, and whether to replicate the RDD partitions on multiple nodes. + * or Tachyon, whether to drop the RDD to disk if it falls out of memory or Tachyon , whether to + * keep the data in memory in a serialized format, and whether to replicate the RDD partitions on + * multiple nodes. * The [[org.apache.spark.storage.StorageLevel$]] singleton object contains some static constants * for commonly useful storage levels. To create your own storage level object, use the * factory method of the singleton object (`StorageLevel(...)`). @@ -30,45 +31,58 @@ import java.io.{Externalizable, IOException, ObjectInput, ObjectOutput} class StorageLevel private( private var useDisk_ : Boolean, private var useMemory_ : Boolean, + private var useOffHeap_ : Boolean, private var deserialized_ : Boolean, private var replication_ : Int = 1) extends Externalizable { // TODO: Also add fields for caching priority, dataset ID, and flushing. private def this(flags: Int, replication: Int) { - this((flags & 4) != 0, (flags & 2) != 0, (flags & 1) != 0, replication) + this((flags & 8) != 0, (flags & 4) != 0, (flags & 2) != 0, (flags & 1) != 0, replication) } - def this() = this(false, true, false) // For deserialization + def this() = this(false, true, false, false) // For deserialization def useDisk = useDisk_ def useMemory = useMemory_ + def useOffHeap = useOffHeap_ def deserialized = deserialized_ def replication = replication_ assert(replication < 40, "Replication restricted to be less than 40 for calculating hashcodes") + if (useOffHeap) { + require(useDisk == false, "Off-heap storage level does not support using disk") + require(useMemory == false, "Off-heap storage level does not support using heap memory") + require(deserialized == false, "Off-heap storage level does not support deserialized storage") + require(replication == 1, "Off-heap storage level does not support multiple replication") + } + override def clone(): StorageLevel = new StorageLevel( - this.useDisk, this.useMemory, this.deserialized, this.replication) + this.useDisk, this.useMemory, this.useOffHeap, this.deserialized, this.replication) override def equals(other: Any): Boolean = other match { case s: StorageLevel => s.useDisk == useDisk && s.useMemory == useMemory && + s.useOffHeap == useOffHeap && s.deserialized == deserialized && s.replication == replication case _ => false } - def isValid = ((useMemory || useDisk) && (replication > 0)) + def isValid = ((useMemory || useDisk || useOffHeap) && (replication > 0)) def toInt: Int = { var ret = 0 if (useDisk_) { - ret |= 4 + ret |= 8 } if (useMemory_) { + ret |= 4 + } + if (useOffHeap_) { ret |= 2 } if (deserialized_) { @@ -84,8 +98,9 @@ class StorageLevel private( override def readExternal(in: ObjectInput) { val flags = in.readByte() - useDisk_ = (flags & 4) != 0 - useMemory_ = (flags & 2) != 0 + useDisk_ = (flags & 8) != 0 + useMemory_ = (flags & 4) != 0 + useOffHeap_ = (flags & 2) != 0 deserialized_ = (flags & 1) != 0 replication_ = in.readByte() } @@ -93,14 +108,15 @@ class StorageLevel private( @throws(classOf[IOException]) private def readResolve(): Object = StorageLevel.getCachedStorageLevel(this) - override def toString: String = - "StorageLevel(%b, %b, %b, %d)".format(useDisk, useMemory, deserialized, replication) + override def toString: String = "StorageLevel(%b, %b, %b, %b, %d)".format( + useDisk, useMemory, useOffHeap, deserialized, replication) override def hashCode(): Int = toInt * 41 + replication def description : String = { var result = "" result += (if (useDisk) "Disk " else "") result += (if (useMemory) "Memory " else "") + result += (if (useOffHeap) "Tachyon " else "") result += (if (deserialized) "Deserialized " else "Serialized ") result += "%sx Replicated".format(replication) result @@ -113,28 +129,35 @@ class StorageLevel private( * new storage levels. */ object StorageLevel { - val NONE = new StorageLevel(false, false, false) - val DISK_ONLY = new StorageLevel(true, false, false) - val DISK_ONLY_2 = new StorageLevel(true, false, false, 2) - val MEMORY_ONLY = new StorageLevel(false, true, true) - val MEMORY_ONLY_2 = new StorageLevel(false, true, true, 2) - val MEMORY_ONLY_SER = new StorageLevel(false, true, false) - val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, 2) - val MEMORY_AND_DISK = new StorageLevel(true, true, true) - val MEMORY_AND_DISK_2 = new StorageLevel(true, true, true, 2) - val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false) - val MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, 2) + val NONE = new StorageLevel(false, false, false, false) + val DISK_ONLY = new StorageLevel(true, false, false, false) + val DISK_ONLY_2 = new StorageLevel(true, false, false, false, 2) + val MEMORY_ONLY = new StorageLevel(false, true, false, true) + val MEMORY_ONLY_2 = new StorageLevel(false, true, false, true, 2) + val MEMORY_ONLY_SER = new StorageLevel(false, true, false, false) + val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, false, 2) + val MEMORY_AND_DISK = new StorageLevel(true, true, false, true) + val MEMORY_AND_DISK_2 = new StorageLevel(true, true, false, true, 2) + val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false, false) + val MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, false, 2) + val OFF_HEAP = new StorageLevel(false, false, true, false) + + /** Create a new StorageLevel object without setting useOffHeap */ + def apply(useDisk: Boolean, useMemory: Boolean, useOffHeap: Boolean, + deserialized: Boolean, replication: Int) = getCachedStorageLevel( + new StorageLevel(useDisk, useMemory, useOffHeap, deserialized, replication)) /** Create a new StorageLevel object */ - def apply(useDisk: Boolean, useMemory: Boolean, deserialized: Boolean, replication: Int = 1) = - getCachedStorageLevel(new StorageLevel(useDisk, useMemory, deserialized, replication)) + def apply(useDisk: Boolean, useMemory: Boolean, + deserialized: Boolean, replication: Int = 1) = getCachedStorageLevel( + new StorageLevel(useDisk, useMemory, false, deserialized, replication)) /** Create a new StorageLevel object from its integer representation */ - def apply(flags: Int, replication: Int) = + def apply(flags: Int, replication: Int): StorageLevel = getCachedStorageLevel(new StorageLevel(flags, replication)) /** Read StorageLevel object from ObjectInput stream */ - def apply(in: ObjectInput) = { + def apply(in: ObjectInput): StorageLevel = { val obj = new StorageLevel() obj.readExternal(in) getCachedStorageLevel(obj) diff --git a/core/src/main/scala/org/apache/spark/storage/StorageStatusListener.scala b/core/src/main/scala/org/apache/spark/storage/StorageStatusListener.scala new file mode 100644 index 0000000000000..7a174959037be --- /dev/null +++ b/core/src/main/scala/org/apache/spark/storage/StorageStatusListener.scala @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.storage + +import scala.collection.mutable + +import org.apache.spark.scheduler._ + +/** + * A SparkListener that maintains executor storage status + */ +private[spark] class StorageStatusListener extends SparkListener { + private val executorIdToStorageStatus = mutable.Map[String, StorageStatus]() + + def storageStatusList = executorIdToStorageStatus.values.toSeq + + /** Update storage status list to reflect updated block statuses */ + def updateStorageStatus(execId: String, updatedBlocks: Seq[(BlockId, BlockStatus)]) { + val filteredStatus = storageStatusList.find(_.blockManagerId.executorId == execId) + filteredStatus.foreach { storageStatus => + updatedBlocks.foreach { case (blockId, updatedStatus) => + storageStatus.blocks(blockId) = updatedStatus + } + } + } + + /** Update storage status list to reflect the removal of an RDD from the cache */ + def updateStorageStatus(unpersistedRDDId: Int) { + storageStatusList.foreach { storageStatus => + val unpersistedBlocksIds = storageStatus.rddBlocks.keys.filter(_.rddId == unpersistedRDDId) + unpersistedBlocksIds.foreach { blockId => + storageStatus.blocks(blockId) = BlockStatus(StorageLevel.NONE, 0L, 0L, 0L) + } + } + } + + override def onTaskEnd(taskEnd: SparkListenerTaskEnd) = synchronized { + val info = taskEnd.taskInfo + val metrics = taskEnd.taskMetrics + if (info != null && metrics != null) { + val execId = formatExecutorId(info.executorId) + val updatedBlocks = metrics.updatedBlocks.getOrElse(Seq[(BlockId, BlockStatus)]()) + if (updatedBlocks.length > 0) { + updateStorageStatus(execId, updatedBlocks) + } + } + } + + override def onUnpersistRDD(unpersistRDD: SparkListenerUnpersistRDD) = synchronized { + updateStorageStatus(unpersistRDD.rddId) + } + + override def onBlockManagerAdded(blockManagerAdded: SparkListenerBlockManagerAdded) { + synchronized { + val blockManagerId = blockManagerAdded.blockManagerId + val executorId = blockManagerId.executorId + val maxMem = blockManagerAdded.maxMem + val storageStatus = new StorageStatus(blockManagerId, maxMem) + executorIdToStorageStatus(executorId) = storageStatus + } + } + + override def onBlockManagerRemoved(blockManagerRemoved: SparkListenerBlockManagerRemoved) { + synchronized { + val executorId = blockManagerRemoved.blockManagerId.executorId + executorIdToStorageStatus.remove(executorId) + } + } + + /** + * In the local mode, there is a discrepancy between the executor ID according to the + * task ("localhost") and that according to SparkEnv (""). In the UI, this + * results in duplicate rows for the same executor. Thus, in this mode, we aggregate + * these two rows and use the executor ID of "" to be consistent. + */ + def formatExecutorId(execId: String): String = { + if (execId == "localhost") "" else execId + } +} diff --git a/core/src/main/scala/org/apache/spark/storage/StorageUtils.scala b/core/src/main/scala/org/apache/spark/storage/StorageUtils.scala index 2d88a40fbb3f2..07255aa366a6d 100644 --- a/core/src/main/scala/org/apache/spark/storage/StorageUtils.scala +++ b/core/src/main/scala/org/apache/spark/storage/StorageUtils.scala @@ -17,13 +17,18 @@ package org.apache.spark.storage +import scala.collection.Map +import scala.collection.mutable + import org.apache.spark.SparkContext -import org.apache.spark.storage.BlockManagerMasterActor.BlockStatus +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.util.Utils private[spark] -case class StorageStatus(blockManagerId: BlockManagerId, maxMem: Long, - blocks: Map[BlockId, BlockStatus]) { +class StorageStatus( + val blockManagerId: BlockManagerId, + val maxMem: Long, + val blocks: mutable.Map[BlockId, BlockStatus] = mutable.Map.empty) { def memUsed() = blocks.values.map(_.memSize).reduceOption(_ + _).getOrElse(0L) @@ -43,14 +48,25 @@ case class StorageStatus(blockManagerId: BlockManagerId, maxMem: Long, } } -case class RDDInfo(id: Int, name: String, storageLevel: StorageLevel, - numCachedPartitions: Int, numPartitions: Int, memSize: Long, diskSize: Long) - extends Ordered[RDDInfo] { +@DeveloperApi +private[spark] +class RDDInfo( + val id: Int, + val name: String, + val numPartitions: Int, + val storageLevel: StorageLevel) extends Ordered[RDDInfo] { + + var numCachedPartitions = 0 + var memSize = 0L + var diskSize = 0L + var tachyonSize= 0L + override def toString = { import Utils.bytesToString - ("RDD \"%s\" (%d) Storage: %s; CachedPartitions: %d; TotalPartitions: %d; MemorySize: %s; " + - "DiskSize: %s").format(name, id, storageLevel.toString, numCachedPartitions, - numPartitions, bytesToString(memSize), bytesToString(diskSize)) + ("RDD \"%s\" (%d) Storage: %s; CachedPartitions: %d; TotalPartitions: %d; MemorySize: %s;" + + "TachyonSize: %s; DiskSize: %s").format( + name, id, storageLevel.toString, numCachedPartitions, numPartitions, + bytesToString(memSize), bytesToString(tachyonSize), bytesToString(diskSize)) } override def compare(that: RDDInfo) = { @@ -62,55 +78,79 @@ case class RDDInfo(id: Int, name: String, storageLevel: StorageLevel, private[spark] object StorageUtils { - /* Returns RDD-level information, compiled from a list of StorageStatus objects */ - def rddInfoFromStorageStatus(storageStatusList: Seq[StorageStatus], - sc: SparkContext) : Array[RDDInfo] = { - rddInfoFromBlockStatusList( - storageStatusList.flatMap(_.rddBlocks).toMap[RDDBlockId, BlockStatus], sc) + /** + * Returns basic information of all RDDs persisted in the given SparkContext. This does not + * include storage information. + */ + def rddInfoFromSparkContext(sc: SparkContext): Array[RDDInfo] = { + sc.persistentRdds.values.map { rdd => + val rddName = Option(rdd.name).getOrElse(rdd.id.toString) + val rddNumPartitions = rdd.partitions.size + val rddStorageLevel = rdd.getStorageLevel + val rddInfo = new RDDInfo(rdd.id, rddName, rddNumPartitions, rddStorageLevel) + rddInfo + }.toArray } - /* Returns a map of blocks to their locations, compiled from a list of StorageStatus objects */ - def blockLocationsFromStorageStatus(storageStatusList: Seq[StorageStatus]) = { - val blockLocationPairs = storageStatusList - .flatMap(s => s.blocks.map(b => (b._1, s.blockManagerId.hostPort))) - blockLocationPairs.groupBy(_._1).map{case (k, v) => (k, v.unzip._2)}.toMap + /** Returns storage information of all RDDs persisted in the given SparkContext. */ + def rddInfoFromStorageStatus( + storageStatuses: Seq[StorageStatus], + sc: SparkContext): Array[RDDInfo] = { + rddInfoFromStorageStatus(storageStatuses, rddInfoFromSparkContext(sc)) } - /* Given a list of BlockStatus objets, returns information for each RDD */ - def rddInfoFromBlockStatusList(infos: Map[RDDBlockId, BlockStatus], - sc: SparkContext) : Array[RDDInfo] = { - - // Group by rddId, ignore the partition name - val groupedRddBlocks = infos.groupBy { case(k, v) => k.rddId }.mapValues(_.values.toArray) - - // For each RDD, generate an RDDInfo object - val rddInfos = groupedRddBlocks.map { case (rddId, rddBlocks) => - // Add up memory and disk sizes - val memSize = rddBlocks.map(_.memSize).reduce(_ + _) - val diskSize = rddBlocks.map(_.diskSize).reduce(_ + _) - - // Get the friendly name and storage level for the RDD, if available - sc.persistentRdds.get(rddId).map { r => - val rddName = Option(r.name).getOrElse(rddId.toString) - val rddStorageLevel = r.getStorageLevel - RDDInfo(rddId, rddName, rddStorageLevel, rddBlocks.length, r.partitions.size, - memSize, diskSize) + /** Returns storage information of all RDDs in the given list. */ + def rddInfoFromStorageStatus( + storageStatuses: Seq[StorageStatus], + rddInfos: Seq[RDDInfo]): Array[RDDInfo] = { + + // Mapping from RDD ID -> an array of associated BlockStatuses + val blockStatusMap = storageStatuses.flatMap(_.rddBlocks).toMap + .groupBy { case (k, _) => k.rddId } + .mapValues(_.values.toArray) + + // Mapping from RDD ID -> the associated RDDInfo (with potentially outdated storage information) + val rddInfoMap = rddInfos.map { info => (info.id, info) }.toMap + + val rddStorageInfos = blockStatusMap.flatMap { case (rddId, blocks) => + // Add up memory, disk and Tachyon sizes + val persistedBlocks = + blocks.filter { status => status.memSize + status.diskSize + status.tachyonSize > 0 } + val memSize = persistedBlocks.map(_.memSize).reduceOption(_ + _).getOrElse(0L) + val diskSize = persistedBlocks.map(_.diskSize).reduceOption(_ + _).getOrElse(0L) + val tachyonSize = persistedBlocks.map(_.tachyonSize).reduceOption(_ + _).getOrElse(0L) + rddInfoMap.get(rddId).map { rddInfo => + rddInfo.numCachedPartitions = persistedBlocks.length + rddInfo.memSize = memSize + rddInfo.diskSize = diskSize + rddInfo.tachyonSize = tachyonSize + rddInfo } - }.flatten.toArray + }.toArray - scala.util.Sorting.quickSort(rddInfos) - - rddInfos + scala.util.Sorting.quickSort(rddStorageInfos) + rddStorageInfos } - /* Filters storage status by a given RDD id. */ - def filterStorageStatusByRDD(storageStatusList: Array[StorageStatus], rddId: Int) - : Array[StorageStatus] = { - - storageStatusList.map { status => - val newBlocks = status.rddBlocks.filterKeys(_.rddId == rddId).toMap[BlockId, BlockStatus] - //val newRemainingMem = status.maxMem - newBlocks.values.map(_.memSize).reduce(_ + _) - StorageStatus(status.blockManagerId, status.maxMem, newBlocks) + /** Returns a mapping from BlockId to the locations of the associated block. */ + def blockLocationsFromStorageStatus( + storageStatuses: Seq[StorageStatus]): Map[BlockId, Seq[String]] = { + val blockLocationPairs = storageStatuses.flatMap { storageStatus => + storageStatus.blocks.map { case (bid, _) => (bid, storageStatus.blockManagerId.hostPort) } } + blockLocationPairs.toMap + .groupBy { case (blockId, _) => blockId } + .mapValues(_.values.toSeq) + } + + /** Filters the given list of StorageStatus by the given RDD ID. */ + def filterStorageStatusByRDD( + storageStatuses: Seq[StorageStatus], + rddId: Int): Array[StorageStatus] = { + storageStatuses.map { status => + val filteredBlocks = status.rddBlocks.filterKeys(_.rddId == rddId).toSeq + val filteredBlockMap = mutable.Map[BlockId, BlockStatus](filteredBlocks: _*) + new StorageStatus(status.blockManagerId, status.maxMem, filteredBlockMap) + }.toArray } } diff --git a/core/src/main/scala/org/apache/spark/storage/TachyonBlockManager.scala b/core/src/main/scala/org/apache/spark/storage/TachyonBlockManager.scala new file mode 100644 index 0000000000000..b0b9674856568 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/storage/TachyonBlockManager.scala @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.storage + +import java.text.SimpleDateFormat +import java.util.{Date, Random} + +import tachyon.client.TachyonFS +import tachyon.client.TachyonFile + +import org.apache.spark.Logging +import org.apache.spark.executor.ExecutorExitCode +import org.apache.spark.network.netty.ShuffleSender +import org.apache.spark.util.Utils + + +/** + * Creates and maintains the logical mapping between logical blocks and tachyon fs locations. By + * default, one block is mapped to one file with a name given by its BlockId. + * + * @param rootDirs The directories to use for storing block files. Data will be hashed among these. + */ +private[spark] class TachyonBlockManager( + shuffleManager: ShuffleBlockManager, + rootDirs: String, + val master: String) + extends Logging { + + val client = if (master != null && master != "") TachyonFS.get(master) else null + + if (client == null) { + logError("Failed to connect to the Tachyon as the master address is not configured") + System.exit(ExecutorExitCode.TACHYON_STORE_FAILED_TO_INITIALIZE) + } + + private val MAX_DIR_CREATION_ATTEMPTS = 10 + private val subDirsPerTachyonDir = + shuffleManager.conf.get("spark.tachyonStore.subDirectories", "64").toInt + + // Create one Tachyon directory for each path mentioned in spark.tachyonStore.folderName; + // then, inside this directory, create multiple subdirectories that we will hash files into, + // in order to avoid having really large inodes at the top level in Tachyon. + private val tachyonDirs: Array[TachyonFile] = createTachyonDirs() + private val subDirs = Array.fill(tachyonDirs.length)(new Array[TachyonFile](subDirsPerTachyonDir)) + + addShutdownHook() + + def removeFile(file: TachyonFile): Boolean = { + client.delete(file.getPath(), false) + } + + def fileExists(file: TachyonFile): Boolean = { + client.exist(file.getPath()) + } + + def getFile(filename: String): TachyonFile = { + // Figure out which tachyon directory it hashes to, and which subdirectory in that + val hash = Utils.nonNegativeHash(filename) + val dirId = hash % tachyonDirs.length + val subDirId = (hash / tachyonDirs.length) % subDirsPerTachyonDir + + // Create the subdirectory if it doesn't already exist + var subDir = subDirs(dirId)(subDirId) + if (subDir == null) { + subDir = subDirs(dirId).synchronized { + val old = subDirs(dirId)(subDirId) + if (old != null) { + old + } else { + val path = tachyonDirs(dirId) + "/" + "%02x".format(subDirId) + client.mkdir(path) + val newDir = client.getFile(path) + subDirs(dirId)(subDirId) = newDir + newDir + } + } + } + val filePath = subDir + "/" + filename + if(!client.exist(filePath)) { + client.createFile(filePath) + } + val file = client.getFile(filePath) + file + } + + def getFile(blockId: BlockId): TachyonFile = getFile(blockId.name) + + // TODO: Some of the logic here could be consolidated/de-duplicated with that in the DiskStore. + private def createTachyonDirs(): Array[TachyonFile] = { + logDebug("Creating tachyon directories at root dirs '" + rootDirs + "'") + val dateFormat = new SimpleDateFormat("yyyyMMddHHmmss") + rootDirs.split(",").map { rootDir => + var foundLocalDir = false + var tachyonDir: TachyonFile = null + var tachyonDirId: String = null + var tries = 0 + val rand = new Random() + while (!foundLocalDir && tries < MAX_DIR_CREATION_ATTEMPTS) { + tries += 1 + try { + tachyonDirId = "%s-%04x".format(dateFormat.format(new Date), rand.nextInt(65536)) + val path = rootDir + "/" + "spark-tachyon-" + tachyonDirId + if (!client.exist(path)) { + foundLocalDir = client.mkdir(path) + tachyonDir = client.getFile(path) + } + } catch { + case e: Exception => + logWarning("Attempt " + tries + " to create tachyon dir " + tachyonDir + " failed", e) + } + } + if (!foundLocalDir) { + logError("Failed " + MAX_DIR_CREATION_ATTEMPTS + " attempts to create tachyon dir in " + + rootDir) + System.exit(ExecutorExitCode.TACHYON_STORE_FAILED_TO_CREATE_DIR) + } + logInfo("Created tachyon directory at " + tachyonDir) + tachyonDir + } + } + + private def addShutdownHook() { + tachyonDirs.foreach(tachyonDir => Utils.registerShutdownDeleteDir(tachyonDir)) + Runtime.getRuntime.addShutdownHook(new Thread("delete Spark tachyon dirs") { + override def run() { + logDebug("Shutdown hook called") + tachyonDirs.foreach { tachyonDir => + try { + if (!Utils.hasRootAsShutdownDeleteDir(tachyonDir)) { + Utils.deleteRecursively(tachyonDir, client) + } + } catch { + case t: Throwable => + logError("Exception while deleting tachyon spark dir: " + tachyonDir, t) + } + } + } + }) + } +} diff --git a/core/src/main/scala/org/apache/spark/storage/TachyonFileSegment.scala b/core/src/main/scala/org/apache/spark/storage/TachyonFileSegment.scala new file mode 100644 index 0000000000000..b86abbda1d3e7 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/storage/TachyonFileSegment.scala @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.storage + +import tachyon.client.TachyonFile + +/** + * References a particular segment of a file (potentially the entire file), based off an offset and + * a length. + */ +private[spark] class TachyonFileSegment(val file: TachyonFile, val offset: Long, val length: Long) { + override def toString = "(name=%s, offset=%d, length=%d)".format(file.getPath(), offset, length) +} diff --git a/core/src/main/scala/org/apache/spark/storage/TachyonStore.scala b/core/src/main/scala/org/apache/spark/storage/TachyonStore.scala new file mode 100644 index 0000000000000..c37e76f893605 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/storage/TachyonStore.scala @@ -0,0 +1,142 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.storage + +import java.io.IOException +import java.nio.ByteBuffer + +import scala.collection.mutable.ArrayBuffer + +import tachyon.client.{WriteType, ReadType} + +import org.apache.spark.Logging +import org.apache.spark.util.Utils +import org.apache.spark.serializer.Serializer + + +private class Entry(val size: Long) + + +/** + * Stores BlockManager blocks on Tachyon. + */ +private class TachyonStore( + blockManager: BlockManager, + tachyonManager: TachyonBlockManager) + extends BlockStore(blockManager: BlockManager) with Logging { + + logInfo("TachyonStore started") + + override def getSize(blockId: BlockId): Long = { + tachyonManager.getFile(blockId.name).length + } + + override def putBytes(blockId: BlockId, bytes: ByteBuffer, level: StorageLevel): PutResult = { + putToTachyonStore(blockId, bytes, true) + } + + override def putValues( + blockId: BlockId, + values: ArrayBuffer[Any], + level: StorageLevel, + returnValues: Boolean): PutResult = { + return putValues(blockId, values.toIterator, level, returnValues) + } + + override def putValues( + blockId: BlockId, + values: Iterator[Any], + level: StorageLevel, + returnValues: Boolean): PutResult = { + logDebug("Attempting to write values for block " + blockId) + val _bytes = blockManager.dataSerialize(blockId, values) + putToTachyonStore(blockId, _bytes, returnValues) + } + + private def putToTachyonStore( + blockId: BlockId, + bytes: ByteBuffer, + returnValues: Boolean): PutResult = { + // So that we do not modify the input offsets ! + // duplicate does not copy buffer, so inexpensive + val byteBuffer = bytes.duplicate() + byteBuffer.rewind() + logDebug("Attempting to put block " + blockId + " into Tachyon") + val startTime = System.currentTimeMillis + val file = tachyonManager.getFile(blockId) + val os = file.getOutStream(WriteType.TRY_CACHE) + os.write(byteBuffer.array()) + os.close() + val finishTime = System.currentTimeMillis + logDebug("Block %s stored as %s file in Tachyon in %d ms".format( + blockId, Utils.bytesToString(byteBuffer.limit), (finishTime - startTime))) + + if (returnValues) { + PutResult(bytes.limit(), Right(bytes.duplicate())) + } else { + PutResult(bytes.limit(), null) + } + } + + override def remove(blockId: BlockId): Boolean = { + val file = tachyonManager.getFile(blockId) + if (tachyonManager.fileExists(file)) { + tachyonManager.removeFile(file) + } else { + false + } + } + + override def getValues(blockId: BlockId): Option[Iterator[Any]] = { + getBytes(blockId).map(buffer => blockManager.dataDeserialize(blockId, buffer)) + } + + + override def getBytes(blockId: BlockId): Option[ByteBuffer] = { + val file = tachyonManager.getFile(blockId) + if (file == null || file.getLocationHosts().size == 0) { + return None + } + val is = file.getInStream(ReadType.CACHE) + var buffer: ByteBuffer = null + try { + if (is != null) { + val size = file.length + val bs = new Array[Byte](size.asInstanceOf[Int]) + val fetchSize = is.read(bs, 0, size.asInstanceOf[Int]) + buffer = ByteBuffer.wrap(bs) + if (fetchSize != size) { + logWarning("Failed to fetch the block " + blockId + " from Tachyon : Size " + size + + " is not equal to fetched size " + fetchSize) + return None + } + } + } catch { + case ioe: IOException => { + logWarning("Failed to fetch the block " + blockId + " from Tachyon", ioe) + return None + } + } + Some(buffer) + } + + override def contains(blockId: BlockId): Boolean = { + val file = tachyonManager.getFile(blockId) + tachyonManager.fileExists(file) + } +} diff --git a/core/src/main/scala/org/apache/spark/storage/ThreadingTest.scala b/core/src/main/scala/org/apache/spark/storage/ThreadingTest.scala index 36f2a0fd02724..a107c5182b3be 100644 --- a/core/src/main/scala/org/apache/spark/storage/ThreadingTest.scala +++ b/core/src/main/scala/org/apache/spark/storage/ThreadingTest.scala @@ -22,9 +22,9 @@ import java.util.concurrent.ArrayBlockingQueue import akka.actor._ import util.Random -import org.apache.spark.SparkConf +import org.apache.spark.{MapOutputTrackerMaster, SecurityManager, SparkConf} +import org.apache.spark.scheduler.LiveListenerBus import org.apache.spark.serializer.KryoSerializer -import org.apache.spark.{SecurityManager, SparkConf} /** * This class tests the BlockManager and MemoryStore for thread safety and @@ -48,7 +48,7 @@ private[spark] object ThreadingTest { val block = (1 to blockSize).map(_ => Random.nextInt()) val level = randomLevel() val startTime = System.currentTimeMillis() - manager.put(blockId, block.iterator, level, true) + manager.put(blockId, block.iterator, level, tellMaster = true) println("Pushed block " + blockId + " in " + (System.currentTimeMillis - startTime) + " ms") queue.add((blockId, block)) } @@ -97,10 +97,11 @@ private[spark] object ThreadingTest { val conf = new SparkConf() val serializer = new KryoSerializer(conf) val blockManagerMaster = new BlockManagerMaster( - actorSystem.actorOf(Props(new BlockManagerMasterActor(true, conf))), conf) + actorSystem.actorOf(Props(new BlockManagerMasterActor(true, conf, new LiveListenerBus))), + conf) val blockManager = new BlockManager( "", actorSystem, blockManagerMaster, serializer, 1024 * 1024, conf, - new SecurityManager(conf)) + new SecurityManager(conf), new MapOutputTrackerMaster(conf)) val producers = (1 to numProducers).map(i => new ProducerThread(blockManager, i)) val consumers = producers.map(p => new ConsumerThread(blockManager, p.queue)) producers.foreach(_.start) diff --git a/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala b/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala index 7c35cd165ad7c..e1a1f209c9282 100644 --- a/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala +++ b/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala @@ -17,30 +17,30 @@ package org.apache.spark.ui -import java.net.InetSocketAddress -import java.net.URL -import javax.servlet.http.{HttpServlet, HttpServletResponse, HttpServletRequest} +import java.net.{InetSocketAddress, URL} +import javax.servlet.DispatcherType +import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse} import scala.annotation.tailrec import scala.util.{Failure, Success, Try} import scala.xml.Node +import org.eclipse.jetty.server.Server +import org.eclipse.jetty.server.handler._ +import org.eclipse.jetty.servlet._ +import org.eclipse.jetty.util.thread.QueuedThreadPool import org.json4s.JValue import org.json4s.jackson.JsonMethods.{pretty, render} -import org.eclipse.jetty.server.{DispatcherType, Server} -import org.eclipse.jetty.server.handler.HandlerList -import org.eclipse.jetty.servlet.{DefaultServlet, FilterHolder, ServletContextHandler, ServletHolder} -import org.eclipse.jetty.util.thread.QueuedThreadPool - import org.apache.spark.{Logging, SecurityManager, SparkConf} - -/** Utilities for launching a web server using Jetty's HTTP Server class */ +/** + * Utilities for launching a web server using Jetty's HTTP Server class + */ private[spark] object JettyUtils extends Logging { + // Base type for a function that returns something based on an HTTP request. Allows for // implicit conversion from many types of functions to jetty Handlers. - type Responder[T] = HttpServletRequest => T class ServletParams[T <% AnyRef](val responder: Responder[T], @@ -57,55 +57,68 @@ private[spark] object JettyUtils extends Logging { implicit def textResponderToServlet(responder: Responder[String]): ServletParams[String] = new ServletParams(responder, "text/plain") - def createServlet[T <% AnyRef](servletParams: ServletParams[T], + def createServlet[T <% AnyRef]( + servletParams: ServletParams[T], securityMgr: SecurityManager): HttpServlet = { new HttpServlet { - override def doGet(request: HttpServletRequest, - response: HttpServletResponse) { - if (securityMgr.checkUIViewPermissions(request.getRemoteUser())) { + override def doGet(request: HttpServletRequest, response: HttpServletResponse) { + if (securityMgr.checkUIViewPermissions(request.getRemoteUser)) { response.setContentType("%s;charset=utf-8".format(servletParams.contentType)) response.setStatus(HttpServletResponse.SC_OK) val result = servletParams.responder(request) response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate") - response.getWriter().println(servletParams.extractFn(result)) + response.getWriter.println(servletParams.extractFn(result)) } else { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED) response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate") response.sendError(HttpServletResponse.SC_UNAUTHORIZED, - "User is not authorized to access this page."); + "User is not authorized to access this page.") } } } } - def createServletHandler(path: String, servlet: HttpServlet): ServletContextHandler = { - val contextHandler = new ServletContextHandler() + /** Create a context handler that responds to a request with the given path prefix */ + def createServletHandler[T <% AnyRef]( + path: String, + servletParams: ServletParams[T], + securityMgr: SecurityManager, + basePath: String = ""): ServletContextHandler = { + createServletHandler(path, createServlet(servletParams, securityMgr), basePath) + } + + /** Create a context handler that responds to a request with the given path prefix */ + def createServletHandler( + path: String, + servlet: HttpServlet, + basePath: String = ""): ServletContextHandler = { + val prefixedPath = attachPrefix(basePath, path) + val contextHandler = new ServletContextHandler val holder = new ServletHolder(servlet) - contextHandler.setContextPath(path) + contextHandler.setContextPath(prefixedPath) contextHandler.addServlet(holder, "/") contextHandler } - /** Creates a handler that always redirects the user to a given path */ - def createRedirectHandler(newPath: String, path: String): ServletContextHandler = { + /** Create a handler that always redirects the user to the given path */ + def createRedirectHandler( + srcPath: String, + destPath: String, + basePath: String = ""): ServletContextHandler = { + val prefixedDestPath = attachPrefix(basePath, destPath) val servlet = new HttpServlet { - override def doGet(request: HttpServletRequest, - response: HttpServletResponse) { - // make sure we don't end up with // in the middle - val newUri = new URL(new URL(request.getRequestURL.toString), newPath).toURI - response.sendRedirect(newUri.toString) + override def doGet(request: HttpServletRequest, response: HttpServletResponse) { + // Make sure we don't end up with "//" in the middle + val newUrl = new URL(new URL(request.getRequestURL.toString), prefixedDestPath).toString + response.sendRedirect(newUrl) } } - val contextHandler = new ServletContextHandler() - val holder = new ServletHolder(servlet) - contextHandler.setContextPath(path) - contextHandler.addServlet(holder, "/") - contextHandler + createServletHandler(srcPath, servlet, basePath) } - /** Creates a handler for serving files from a static directory */ + /** Create a handler for serving files from a static directory */ def createStaticHandler(resourceBase: String, path: String): ServletContextHandler = { - val contextHandler = new ServletContextHandler() + val contextHandler = new ServletContextHandler val staticHandler = new DefaultServlet val holder = new ServletHolder(staticHandler) Option(getClass.getClassLoader.getResource(resourceBase)) match { @@ -114,10 +127,12 @@ private[spark] object JettyUtils extends Logging { case None => throw new Exception("Could not find resource path for Web UI: " + resourceBase) } - contextHandler.addServlet(holder, path) + contextHandler.setContextPath(path) + contextHandler.addServlet(holder, "/") contextHandler } + /** Add security filters, if any, do the given list of ServletContextHandlers */ private def addFilters(handlers: Seq[ServletContextHandler], conf: SparkConf) { val filters: Array[String] = conf.get("spark.ui.filters", "").split(',').map(_.trim()) filters.foreach { @@ -126,7 +141,7 @@ private[spark] object JettyUtils extends Logging { logInfo("Adding filter: " + filter) val holder : FilterHolder = new FilterHolder() holder.setClassName(filter) - // get any parameters for each filter + // Get any parameters for each filter val paramName = "spark." + filter + ".params" val params = conf.get(paramName, "").split(',').map(_.trim()).toSet params.foreach { @@ -144,18 +159,21 @@ private[spark] object JettyUtils extends Logging { } /** - * Attempts to start a Jetty server at the supplied hostName:port which uses the supplied - * handlers. + * Attempt to start a Jetty server bound to the supplied hostName:port using the given + * context handlers. * - * If the desired port number is contented, continues incrementing ports until a free port is - * found. Returns the chosen port and the jetty Server object. + * If the desired port number is contended, continues incrementing ports until a free port is + * found. Return the jetty Server object, the chosen port, and a mutable collection of handlers. */ - def startJettyServer(hostName: String, port: Int, handlers: Seq[ServletContextHandler], - conf: SparkConf): (Server, Int) = { - + def startJettyServer( + hostName: String, + port: Int, + handlers: Seq[ServletContextHandler], + conf: SparkConf): ServerInfo = { + + val collection = new ContextHandlerCollection + collection.setHandlers(handlers.toArray) addFilters(handlers, conf) - val handlerList = new HandlerList - handlerList.setHandlers(handlers.toArray) @tailrec def connect(currentPort: Int): (Server, Int) = { @@ -163,7 +181,7 @@ private[spark] object JettyUtils extends Logging { val pool = new QueuedThreadPool pool.setDaemon(true) server.setThreadPool(pool) - server.setHandler(handlerList) + server.setHandler(collection) Try { server.start() @@ -178,6 +196,17 @@ private[spark] object JettyUtils extends Logging { } } - connect(port) + val (server, boundPort) = connect(port) + ServerInfo(server, boundPort, collection) + } + + /** Attach a prefix to the given path, but avoid returning an empty path */ + private def attachPrefix(basePath: String, relativePath: String): String = { + if (basePath == "") relativePath else (basePath + relativePath).stripSuffix("/") } } + +private[spark] case class ServerInfo( + server: Server, + boundPort: Int, + rootHandler: ContextHandlerCollection) diff --git a/core/src/main/scala/org/apache/spark/ui/Page.scala b/core/src/main/scala/org/apache/spark/ui/Page.scala deleted file mode 100644 index b2a069a37552d..0000000000000 --- a/core/src/main/scala/org/apache/spark/ui/Page.scala +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.ui - -private[spark] object Page extends Enumeration { - val Stages, Storage, Environment, Executors = Value -} diff --git a/core/src/main/scala/org/apache/spark/ui/SparkUI.scala b/core/src/main/scala/org/apache/spark/ui/SparkUI.scala index ca82c3da2fc24..bca4c3c42d27f 100644 --- a/core/src/main/scala/org/apache/spark/ui/SparkUI.scala +++ b/core/src/main/scala/org/apache/spark/ui/SparkUI.scala @@ -17,74 +17,78 @@ package org.apache.spark.ui -import javax.servlet.http.HttpServletRequest - -import org.eclipse.jetty.server.Server -import org.eclipse.jetty.servlet.ServletContextHandler - -import org.apache.spark.{Logging, SparkContext, SparkEnv} +import org.apache.spark.{Logging, SecurityManager, SparkConf, SparkContext} +import org.apache.spark.scheduler._ +import org.apache.spark.storage.StorageStatusListener import org.apache.spark.ui.JettyUtils._ -import org.apache.spark.ui.env.EnvironmentUI -import org.apache.spark.ui.exec.ExecutorsUI -import org.apache.spark.ui.jobs.JobProgressUI -import org.apache.spark.ui.storage.BlockManagerUI -import org.apache.spark.util.Utils +import org.apache.spark.ui.env.EnvironmentTab +import org.apache.spark.ui.exec.ExecutorsTab +import org.apache.spark.ui.jobs.JobProgressTab +import org.apache.spark.ui.storage.StorageTab + +/** + * Top level user interface for a Spark application. + */ +private[spark] class SparkUI( + val sc: SparkContext, + val conf: SparkConf, + val securityManager: SecurityManager, + val listenerBus: SparkListenerBus, + var appName: String, + val basePath: String = "") + extends WebUI(securityManager, SparkUI.getUIPort(conf), conf, basePath) + with Logging { -/** Top level user interface for Spark */ -private[spark] class SparkUI(sc: SparkContext) extends Logging { - val host = Option(System.getenv("SPARK_PUBLIC_DNS")).getOrElse(Utils.localHostName()) - val port = sc.conf.get("spark.ui.port", SparkUI.DEFAULT_PORT).toInt - var boundPort: Option[Int] = None - var server: Option[Server] = None + def this(sc: SparkContext) = this(sc, sc.conf, sc.env.securityManager, sc.listenerBus, sc.appName) + def this(conf: SparkConf, listenerBus: SparkListenerBus, appName: String, basePath: String) = + this(null, conf, new SecurityManager(conf), listenerBus, appName, basePath) - val handlers = Seq[ServletContextHandler] ( - createStaticHandler(SparkUI.STATIC_RESOURCE_DIR, "/static/*"), - createRedirectHandler("/stages", "/") - ) - val storage = new BlockManagerUI(sc) - val jobs = new JobProgressUI(sc) - val env = new EnvironmentUI(sc) - val exec = new ExecutorsUI(sc) + // If SparkContext is not provided, assume the associated application is not live + val live = sc != null - // Add MetricsServlet handlers by default - val metricsServletHandlers = SparkEnv.get.metricsSystem.getServletHandlers + // Maintain executor storage status through Spark events + val storageStatusListener = new StorageStatusListener - val allHandlers = storage.getHandlers ++ jobs.getHandlers ++ env.getHandlers ++ - exec.getHandlers ++ metricsServletHandlers ++ handlers + initialize() - /** Bind the HTTP server which backs this web interface */ - def bind() { - try { - val (srv, usedPort) = JettyUtils.startJettyServer(host, port, allHandlers, sc.conf) - logInfo("Started Spark Web UI at http://%s:%d".format(host, usedPort)) - server = Some(srv) - boundPort = Some(usedPort) - } catch { - case e: Exception => - logError("Failed to create Spark JettyUtils", e) - System.exit(1) + /** Initialize all components of the server. */ + def initialize() { + listenerBus.addListener(storageStatusListener) + attachTab(new JobProgressTab(this)) + attachTab(new StorageTab(this)) + attachTab(new EnvironmentTab(this)) + attachTab(new ExecutorsTab(this)) + attachHandler(createStaticHandler(SparkUI.STATIC_RESOURCE_DIR, "/static")) + attachHandler(createRedirectHandler("/", "/stages", basePath)) + if (live) { + sc.env.metricsSystem.getServletHandlers.foreach(attachHandler) } } - /** Initialize all components of the server */ - def start() { - // NOTE: This is decoupled from bind() because of the following dependency cycle: - // DAGScheduler() requires that the port of this server is known - // This server must register all handlers, including JobProgressUI, before binding - // JobProgressUI registers a listener with SparkContext, which requires sc to initialize - jobs.start() - exec.start() + /** Set the app name for this UI. */ + def setAppName(name: String) { + appName = name } - def stop() { - server.foreach(_.stop()) + /** Register the given listener with the listener bus. */ + def registerListener(listener: SparkListener) { + listenerBus.addListener(listener) } - private[spark] def appUIAddress = host + ":" + boundPort.getOrElse("-1") + /** Stop the server behind this web interface. Only valid after bind(). */ + override def stop() { + super.stop() + logInfo("Stopped Spark web UI at %s".format(appUIAddress)) + } + private[spark] def appUIAddress = "http://" + publicHostName + ":" + boundPort } private[spark] object SparkUI { - val DEFAULT_PORT = "4040" - val STATIC_RESOURCE_DIR = "org/apache/spark/ui" + val DEFAULT_PORT = 4040 + val STATIC_RESOURCE_DIR = "org/apache/spark/ui/static" + + def getUIPort(conf: SparkConf): Int = { + conf.getInt("spark.ui.port", SparkUI.DEFAULT_PORT) + } } diff --git a/core/src/main/scala/org/apache/spark/ui/UIUtils.scala b/core/src/main/scala/org/apache/spark/ui/UIUtils.scala index 547a194d58a5c..ecdb9c6385657 100644 --- a/core/src/main/scala/org/apache/spark/ui/UIUtils.scala +++ b/core/src/main/scala/org/apache/spark/ui/UIUtils.scala @@ -17,40 +17,132 @@ package org.apache.spark.ui -import scala.xml.Node +import java.text.SimpleDateFormat +import java.util.{Locale, Date} -import org.apache.spark.SparkContext +import scala.xml.Node +import org.apache.spark.Logging /** Utility functions for generating XML pages with spark content. */ -private[spark] object UIUtils { - import Page._ +private[spark] object UIUtils extends Logging { - // Yarn has to go through a proxy so the base uri is provided and has to be on all links - private[spark] val uiRoot : String = Option(System.getenv("APPLICATION_WEB_PROXY_BASE")). - getOrElse("") + // SimpleDateFormat is not thread-safe. Don't expose it to avoid improper use. + private val dateFormat = new ThreadLocal[SimpleDateFormat]() { + override def initialValue(): SimpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") + } - def prependBaseUri(resource: String = "") = uiRoot + resource + def formatDate(date: Date): String = dateFormat.get.format(date) - /** Returns a spark page with correctly formatted headers */ - def headerSparkPage(content: => Seq[Node], sc: SparkContext, title: String, page: Page.Value) - : Seq[Node] = { - val jobs = page match { - case Stages =>
  • Stages
  • - case _ =>
  • Stages
  • + def formatDate(timestamp: Long): String = dateFormat.get.format(new Date(timestamp)) + + def formatDuration(milliseconds: Long): String = { + val seconds = milliseconds.toDouble / 1000 + if (seconds < 60) { + return "%.0f s".format(seconds) } - val storage = page match { - case Storage =>
  • Storage
  • - case _ =>
  • Storage
  • + val minutes = seconds / 60 + if (minutes < 10) { + return "%.1f min".format(minutes) + } else if (minutes < 60) { + return "%.0f min".format(minutes) } - val environment = page match { - case Environment => -
  • Environment
  • - case _ =>
  • Environment
  • + val hours = minutes / 60 + "%.1f h".format(hours) + } + + /** Generate a verbose human-readable string representing a duration such as "5 second 35 ms" */ + def formatDurationVerbose(ms: Long): String = { + try { + val second = 1000L + val minute = 60 * second + val hour = 60 * minute + val day = 24 * hour + val week = 7 * day + val year = 365 * day + + def toString(num: Long, unit: String): String = { + if (num == 0) { + "" + } else if (num == 1) { + s"$num $unit" + } else { + s"$num ${unit}s" + } + } + + val millisecondsString = if (ms >= second && ms % second == 0) "" else s"${ms % second} ms" + val secondString = toString((ms % minute) / second, "second") + val minuteString = toString((ms % hour) / minute, "minute") + val hourString = toString((ms % day) / hour, "hour") + val dayString = toString((ms % week) / day, "day") + val weekString = toString((ms % year) / week, "week") + val yearString = toString(ms / year, "year") + + Seq( + second -> millisecondsString, + minute -> s"$secondString $millisecondsString", + hour -> s"$minuteString $secondString", + day -> s"$hourString $minuteString $secondString", + week -> s"$dayString $hourString $minuteString", + year -> s"$weekString $dayString $hourString" + ).foreach { case (durationLimit, durationString) => + if (ms < durationLimit) { + // if time is less than the limit (upto year) + return durationString + } + } + // if time is more than a year + return s"$yearString $weekString $dayString" + } catch { + case e: Exception => + logError("Error converting time to string", e) + // if there is some error, return blank string + return "" } - val executors = page match { - case Executors => -
  • Executors
  • - case _ =>
  • Executors
  • + } + + /** Generate a human-readable string representing a number (e.g. 100 K) */ + def formatNumber(records: Double): String = { + val trillion = 1e12 + val billion = 1e9 + val million = 1e6 + val thousand = 1e3 + + val (value, unit) = { + if (records >= 2*trillion) { + (records / trillion, " T") + } else if (records >= 2*billion) { + (records / billion, " B") + } else if (records >= 2*million) { + (records / million, " M") + } else if (records >= 2*thousand) { + (records / thousand, " K") + } else { + (records, "") + } + } + "%.1f%s".formatLocal(Locale.US, value, unit) + } + + // Yarn has to go through a proxy so the base uri is provided and has to be on all links + val uiRoot : String = Option(System.getenv("APPLICATION_WEB_PROXY_BASE")).getOrElse("") + + def prependBaseUri(basePath: String = "", resource: String = "") = uiRoot + basePath + resource + + /** Returns a spark page with correctly formatted headers */ + def headerSparkPage( + content: => Seq[Node], + basePath: String, + appName: String, + title: String, + tabs: Seq[WebUITab], + activeTab: WebUITab, + refreshInterval: Option[Int] = None): Seq[Node] = { + + val header = tabs.map { tab => +
  • + {tab.name} +
  • } @@ -58,23 +150,28 @@ private[spark] object UIUtils { - + - {sc.appName} - {title} + {appName} - {title} + - + @@ -123,21 +220,36 @@ private[spark] object UIUtils { /** Returns an HTML table constructed by generating a row for each object in a sequence. */ def listingTable[T]( headers: Seq[String], - makeRow: T => Seq[Node], - rows: Seq[T], + generateDataRow: T => Seq[Node], + data: Seq[T], fixedWidth: Boolean = false): Seq[Node] = { - val colWidth = 100.toDouble / headers.size - val colWidthAttr = if (fixedWidth) colWidth + "%" else "" var tableClass = "table table-bordered table-striped table-condensed sortable" if (fixedWidth) { tableClass += " table-fixed" } - + val colWidth = 100.toDouble / headers.size + val colWidthAttr = if (fixedWidth) colWidth + "%" else "" + val headerRow: Seq[Node] = { + // if none of the headers have "\n" in them + if (headers.forall(!_.contains("\n"))) { + // represent header as simple text + headers.map(h => {h}) + } else { + // represent header text as list while respecting "\n" + headers.map { case h => + +
      + { h.split("\n").map { case t =>
    • {t}
    • } } +
    + + } + } + } - {headers.map(h => )} + {headerRow} - {rows.map(r => makeRow(r))} + {data.map(r => generateDataRow(r))}
    {h}
    } diff --git a/core/src/main/scala/org/apache/spark/ui/WebUI.scala b/core/src/main/scala/org/apache/spark/ui/WebUI.scala new file mode 100644 index 0000000000000..b08f308fda1dd --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/WebUI.scala @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui + +import javax.servlet.http.HttpServletRequest + +import scala.collection.mutable.ArrayBuffer +import scala.xml.Node + +import org.eclipse.jetty.servlet.ServletContextHandler +import org.json4s.JsonAST.{JNothing, JValue} + +import org.apache.spark.{Logging, SecurityManager, SparkConf} +import org.apache.spark.ui.JettyUtils._ +import org.apache.spark.util.Utils + +/** + * The top level component of the UI hierarchy that contains the server. + * + * Each WebUI represents a collection of tabs, each of which in turn represents a collection of + * pages. The use of tabs is optional, however; a WebUI may choose to include pages directly. + */ +private[spark] abstract class WebUI( + securityManager: SecurityManager, + port: Int, + conf: SparkConf, + basePath: String = "") + extends Logging { + + protected val tabs = ArrayBuffer[WebUITab]() + protected val handlers = ArrayBuffer[ServletContextHandler]() + protected var serverInfo: Option[ServerInfo] = None + protected val localHostName = Utils.localHostName() + protected val publicHostName = Option(System.getenv("SPARK_PUBLIC_DNS")).getOrElse(localHostName) + private val className = Utils.getFormattedClassName(this) + + def getTabs: Seq[WebUITab] = tabs.toSeq + def getHandlers: Seq[ServletContextHandler] = handlers.toSeq + + /** Attach a tab to this UI, along with all of its attached pages. */ + def attachTab(tab: WebUITab) { + tab.pages.foreach(attachPage) + tabs += tab + } + + /** Attach a page to this UI. */ + def attachPage(page: WebUIPage) { + val pagePath = "/" + page.prefix + attachHandler(createServletHandler(pagePath, + (request: HttpServletRequest) => page.render(request), securityManager, basePath)) + attachHandler(createServletHandler(pagePath.stripSuffix("/") + "/json", + (request: HttpServletRequest) => page.renderJson(request), securityManager, basePath)) + } + + /** Attach a handler to this UI. */ + def attachHandler(handler: ServletContextHandler) { + handlers += handler + serverInfo.foreach { info => + info.rootHandler.addHandler(handler) + if (!handler.isStarted) { + handler.start() + } + } + } + + /** Detach a handler from this UI. */ + def detachHandler(handler: ServletContextHandler) { + handlers -= handler + serverInfo.foreach { info => + info.rootHandler.removeHandler(handler) + if (handler.isStarted) { + handler.stop() + } + } + } + + /** Initialize all components of the server. */ + def initialize() + + /** Bind to the HTTP server behind this web interface. */ + def bind() { + assert(!serverInfo.isDefined, "Attempted to bind %s more than once!".format(className)) + try { + serverInfo = Some(startJettyServer("0.0.0.0", port, handlers, conf)) + logInfo("Started %s at http://%s:%d".format(className, publicHostName, boundPort)) + } catch { + case e: Exception => + logError("Failed to bind %s".format(className), e) + System.exit(1) + } + } + + /** Return the actual port to which this server is bound. Only valid after bind(). */ + def boundPort: Int = serverInfo.map(_.boundPort).getOrElse(-1) + + /** Stop the server behind this web interface. Only valid after bind(). */ + def stop() { + assert(serverInfo.isDefined, + "Attempted to stop %s before binding to a server!".format(className)) + serverInfo.get.server.stop() + } +} + + +/** + * A tab that represents a collection of pages. + * The prefix is appended to the parent address to form a full path, and must not contain slashes. + */ +private[spark] abstract class WebUITab(parent: WebUI, val prefix: String) { + val pages = ArrayBuffer[WebUIPage]() + val name = prefix.capitalize + + /** Attach a page to this tab. This prepends the page's prefix with the tab's own prefix. */ + def attachPage(page: WebUIPage) { + page.prefix = (prefix + "/" + page.prefix).stripSuffix("/") + pages += page + } + + /** Get a list of header tabs from the parent UI. */ + def headerTabs: Seq[WebUITab] = parent.getTabs +} + + +/** + * A page that represents the leaf node in the UI hierarchy. + * + * The direct parent of a WebUIPage is not specified as it can be either a WebUI or a WebUITab. + * If the parent is a WebUI, the prefix is appended to the parent's address to form a full path. + * Else, if the parent is a WebUITab, the prefix is appended to the super prefix of the parent + * to form a relative path. The prefix must not contain slashes. + */ +private[spark] abstract class WebUIPage(var prefix: String) { + def render(request: HttpServletRequest): Seq[Node] + def renderJson(request: HttpServletRequest): JValue = JNothing +} diff --git a/core/src/main/scala/org/apache/spark/ui/env/EnvironmentPage.scala b/core/src/main/scala/org/apache/spark/ui/env/EnvironmentPage.scala new file mode 100644 index 0000000000000..70578c3eb87c8 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/env/EnvironmentPage.scala @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui.env + +import javax.servlet.http.HttpServletRequest + +import scala.xml.Node + +import org.apache.spark.ui.{UIUtils, WebUIPage} + +private[ui] class IndexPage(parent: EnvironmentTab) extends WebUIPage("") { + private val appName = parent.appName + private val basePath = parent.basePath + private val listener = parent.listener + + def render(request: HttpServletRequest): Seq[Node] = { + val runtimeInformationTable = UIUtils.listingTable( + propertyHeader, jvmRow, listener.jvmInformation, fixedWidth = true) + val sparkPropertiesTable = UIUtils.listingTable( + propertyHeader, propertyRow, listener.sparkProperties, fixedWidth = true) + val systemPropertiesTable = UIUtils.listingTable( + propertyHeader, propertyRow, listener.systemProperties, fixedWidth = true) + val classpathEntriesTable = UIUtils.listingTable( + classPathHeaders, classPathRow, listener.classpathEntries, fixedWidth = true) + val content = + +

    Runtime Information

    {runtimeInformationTable} +

    Spark Properties

    {sparkPropertiesTable} +

    System Properties

    {systemPropertiesTable} +

    Classpath Entries

    {classpathEntriesTable} +
    + + UIUtils.headerSparkPage(content, basePath, appName, "Environment", parent.headerTabs, parent) + } + + private def propertyHeader = Seq("Name", "Value") + private def classPathHeaders = Seq("Resource", "Source") + private def jvmRow(kv: (String, String)) = {kv._1}{kv._2} + private def propertyRow(kv: (String, String)) = {kv._1}{kv._2} + private def classPathRow(data: (String, String)) = {data._1}{data._2} +} diff --git a/core/src/main/scala/org/apache/spark/ui/env/EnvironmentTab.scala b/core/src/main/scala/org/apache/spark/ui/env/EnvironmentTab.scala new file mode 100644 index 0000000000000..7797057fa1aa9 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/env/EnvironmentTab.scala @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui.env + +import org.apache.spark.scheduler._ +import org.apache.spark.ui._ + +private[ui] class EnvironmentTab(parent: SparkUI) extends WebUITab(parent, "environment") { + val appName = parent.appName + val basePath = parent.basePath + val listener = new EnvironmentListener + + attachPage(new IndexPage(this)) + parent.registerListener(listener) +} + +/** + * A SparkListener that prepares information to be displayed on the EnvironmentTab + */ +private[ui] class EnvironmentListener extends SparkListener { + var jvmInformation = Seq[(String, String)]() + var sparkProperties = Seq[(String, String)]() + var systemProperties = Seq[(String, String)]() + var classpathEntries = Seq[(String, String)]() + + override def onEnvironmentUpdate(environmentUpdate: SparkListenerEnvironmentUpdate) { + synchronized { + val environmentDetails = environmentUpdate.environmentDetails + jvmInformation = environmentDetails("JVM Information") + sparkProperties = environmentDetails("Spark Properties") + systemProperties = environmentDetails("System Properties") + classpathEntries = environmentDetails("Classpath Entries") + } + } +} diff --git a/core/src/main/scala/org/apache/spark/ui/env/EnvironmentUI.scala b/core/src/main/scala/org/apache/spark/ui/env/EnvironmentUI.scala deleted file mode 100644 index 14333476c0e31..0000000000000 --- a/core/src/main/scala/org/apache/spark/ui/env/EnvironmentUI.scala +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.ui.env - -import javax.servlet.http.HttpServletRequest - -import scala.collection.JavaConversions._ -import scala.util.Properties -import scala.xml.Node - -import org.eclipse.jetty.servlet.ServletContextHandler - -import org.apache.spark.SparkContext -import org.apache.spark.ui.JettyUtils._ -import org.apache.spark.ui.Page.Environment -import org.apache.spark.ui.UIUtils - -private[spark] class EnvironmentUI(sc: SparkContext) { - - def getHandlers = Seq[ServletContextHandler]( - createServletHandler("/environment", - createServlet((request: HttpServletRequest) => envDetails(request), sc.env.securityManager)) - ) - - def envDetails(request: HttpServletRequest): Seq[Node] = { - val jvmInformation = Seq( - ("Java Version", "%s (%s)".format(Properties.javaVersion, Properties.javaVendor)), - ("Java Home", Properties.javaHome), - ("Scala Version", Properties.versionString), - ("Scala Home", Properties.scalaHome) - ).sorted - def jvmRow(kv: (String, String)) = {kv._1}{kv._2} - def jvmTable = - UIUtils.listingTable(Seq("Name", "Value"), jvmRow, jvmInformation, fixedWidth = true) - - val sparkProperties = sc.conf.getAll.sorted - - val systemProperties = System.getProperties.iterator.toSeq - val classPathProperty = systemProperties.find { case (k, v) => - k == "java.class.path" - }.getOrElse(("", "")) - val otherProperties = systemProperties.filter { case (k, v) => - k != "java.class.path" && !k.startsWith("spark.") - }.sorted - - val propertyHeaders = Seq("Name", "Value") - def propertyRow(kv: (String, String)) = {kv._1}{kv._2} - val sparkPropertyTable = - UIUtils.listingTable(propertyHeaders, propertyRow, sparkProperties, fixedWidth = true) - val otherPropertyTable = - UIUtils.listingTable(propertyHeaders, propertyRow, otherProperties, fixedWidth = true) - - val classPathEntries = classPathProperty._2 - .split(sc.conf.get("path.separator", ":")) - .filterNot(e => e.isEmpty) - .map(e => (e, "System Classpath")) - val addedJars = sc.addedJars.iterator.toSeq.map{case (path, time) => (path, "Added By User")} - val addedFiles = sc.addedFiles.iterator.toSeq.map{case (path, time) => (path, "Added By User")} - val classPath = (addedJars ++ addedFiles ++ classPathEntries).sorted - - val classPathHeaders = Seq("Resource", "Source") - def classPathRow(data: (String, String)) = {data._1}{data._2} - val classPathTable = - UIUtils.listingTable(classPathHeaders, classPathRow, classPath, fixedWidth = true) - - val content = - -

    Runtime Information

    {jvmTable} -

    Spark Properties

    - {sparkPropertyTable} -

    System Properties

    - {otherPropertyTable} -

    Classpath Entries

    - {classPathTable} -
    - - UIUtils.headerSparkPage(content, sc, "Environment", Environment) - } -} diff --git a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsPage.scala b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsPage.scala new file mode 100644 index 0000000000000..56c3887923758 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsPage.scala @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui.exec + +import javax.servlet.http.HttpServletRequest + +import scala.xml.Node + +import org.apache.spark.ui.{WebUIPage, UIUtils} +import org.apache.spark.util.Utils + +private[ui] class IndexPage(parent: ExecutorsTab) extends WebUIPage("") { + private val appName = parent.appName + private val basePath = parent.basePath + private val listener = parent.listener + + def render(request: HttpServletRequest): Seq[Node] = { + val storageStatusList = listener.storageStatusList + val maxMem = storageStatusList.map(_.maxMem).fold(0L)(_ + _) + val memUsed = storageStatusList.map(_.memUsed()).fold(0L)(_ + _) + val diskSpaceUsed = storageStatusList.flatMap(_.blocks.values.map(_.diskSize)).fold(0L)(_ + _) + val execInfo = for (statusId <- 0 until storageStatusList.size) yield getExecInfo(statusId) + val execInfoSorted = execInfo.sortBy(_.getOrElse("Executor ID", "")) + val execTable = UIUtils.listingTable(execHeader, execRow, execInfoSorted) + + val content = +
    +
    +
      +
    • Memory: + {Utils.bytesToString(memUsed)} Used + ({Utils.bytesToString(maxMem)} Total)
    • +
    • Disk: {Utils.bytesToString(diskSpaceUsed)} Used
    • +
    +
    +
    +
    +
    + {execTable} +
    +
    ; + + UIUtils.headerSparkPage(content, basePath, appName, "Executors (" + execInfo.size + ")", + parent.headerTabs, parent) + } + + /** Header fields for the executors table */ + private def execHeader = Seq( + "Executor ID", + "Address", + "RDD Blocks", + "Memory Used", + "Disk Used", + "Active Tasks", + "Failed Tasks", + "Complete Tasks", + "Total Tasks", + "Task Time", + "Shuffle Read", + "Shuffle Write") + + /** Render an HTML row representing an executor */ + private def execRow(values: Map[String, String]): Seq[Node] = { + val maximumMemory = values("Maximum Memory") + val memoryUsed = values("Memory Used") + val diskUsed = values("Disk Used") + + {values("Executor ID")} + {values("Address")} + {values("RDD Blocks")} + + {Utils.bytesToString(memoryUsed.toLong)} / + {Utils.bytesToString(maximumMemory.toLong)} + + + {Utils.bytesToString(diskUsed.toLong)} + + {values("Active Tasks")} + {values("Failed Tasks")} + {values("Complete Tasks")} + {values("Total Tasks")} + {Utils.msDurationToString(values("Task Time").toLong)} + {Utils.bytesToString(values("Shuffle Read").toLong)} + {Utils.bytesToString(values("Shuffle Write").toLong)} + + } + + /** Represent an executor's info as a map given a storage status index */ + private def getExecInfo(statusId: Int): Map[String, String] = { + val status = listener.storageStatusList(statusId) + val execId = status.blockManagerId.executorId + val hostPort = status.blockManagerId.hostPort + val rddBlocks = status.blocks.size + val memUsed = status.memUsed() + val maxMem = status.maxMem + val diskUsed = status.diskUsed() + val activeTasks = listener.executorToTasksActive.getOrElse(execId, 0) + val failedTasks = listener.executorToTasksFailed.getOrElse(execId, 0) + val completedTasks = listener.executorToTasksComplete.getOrElse(execId, 0) + val totalTasks = activeTasks + failedTasks + completedTasks + val totalDuration = listener.executorToDuration.getOrElse(execId, 0) + val totalShuffleRead = listener.executorToShuffleRead.getOrElse(execId, 0) + val totalShuffleWrite = listener.executorToShuffleWrite.getOrElse(execId, 0) + + // Also include fields not in the header + val execFields = execHeader ++ Seq("Maximum Memory") + + val execValues = Seq( + execId, + hostPort, + rddBlocks, + memUsed, + diskUsed, + activeTasks, + failedTasks, + completedTasks, + totalTasks, + totalDuration, + totalShuffleRead, + totalShuffleWrite, + maxMem + ).map(_.toString) + + execFields.zip(execValues).toMap + } +} diff --git a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsTab.scala b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsTab.scala new file mode 100644 index 0000000000000..e9ec18a3e74af --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsTab.scala @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui.exec + +import scala.collection.mutable.HashMap + +import org.apache.spark.ExceptionFailure +import org.apache.spark.scheduler._ +import org.apache.spark.storage.StorageStatusListener +import org.apache.spark.ui.{SparkUI, WebUITab} + +private[ui] class ExecutorsTab(parent: SparkUI) extends WebUITab(parent, "executors") { + val appName = parent.appName + val basePath = parent.basePath + val listener = new ExecutorsListener(parent.storageStatusListener) + + attachPage(new IndexPage(this)) + parent.registerListener(listener) +} + +/** + * A SparkListener that prepares information to be displayed on the ExecutorsTab + */ +private[ui] class ExecutorsListener(storageStatusListener: StorageStatusListener) + extends SparkListener { + + val executorToTasksActive = HashMap[String, Int]() + val executorToTasksComplete = HashMap[String, Int]() + val executorToTasksFailed = HashMap[String, Int]() + val executorToDuration = HashMap[String, Long]() + val executorToShuffleRead = HashMap[String, Long]() + val executorToShuffleWrite = HashMap[String, Long]() + + def storageStatusList = storageStatusListener.storageStatusList + + override def onTaskStart(taskStart: SparkListenerTaskStart) = synchronized { + val eid = formatExecutorId(taskStart.taskInfo.executorId) + executorToTasksActive(eid) = executorToTasksActive.getOrElse(eid, 0) + 1 + } + + override def onTaskEnd(taskEnd: SparkListenerTaskEnd) = synchronized { + val info = taskEnd.taskInfo + if (info != null) { + val eid = formatExecutorId(info.executorId) + executorToTasksActive(eid) = executorToTasksActive.getOrElse(eid, 1) - 1 + executorToDuration(eid) = executorToDuration.getOrElse(eid, 0L) + info.duration + taskEnd.reason match { + case e: ExceptionFailure => + executorToTasksFailed(eid) = executorToTasksFailed.getOrElse(eid, 0) + 1 + case _ => + executorToTasksComplete(eid) = executorToTasksComplete.getOrElse(eid, 0) + 1 + } + + // Update shuffle read/write + val metrics = taskEnd.taskMetrics + if (metrics != null) { + metrics.shuffleReadMetrics.foreach { shuffleRead => + executorToShuffleRead(eid) = + executorToShuffleRead.getOrElse(eid, 0L) + shuffleRead.remoteBytesRead + } + metrics.shuffleWriteMetrics.foreach { shuffleWrite => + executorToShuffleWrite(eid) = + executorToShuffleWrite.getOrElse(eid, 0L) + shuffleWrite.shuffleBytesWritten + } + } + } + } + + // This addresses executor ID inconsistencies in the local mode + private def formatExecutorId(execId: String) = storageStatusListener.formatExecutorId(execId) +} diff --git a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsUI.scala b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsUI.scala deleted file mode 100644 index 4235cfeff9fa2..0000000000000 --- a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsUI.scala +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.ui.exec - -import javax.servlet.http.HttpServletRequest - -import scala.collection.mutable.{HashMap, HashSet} -import scala.xml.Node - -import org.eclipse.jetty.servlet.ServletContextHandler - -import org.apache.spark.{ExceptionFailure, Logging, SparkContext} -import org.apache.spark.executor.TaskMetrics -import org.apache.spark.scheduler.{SparkListener, SparkListenerTaskEnd, SparkListenerTaskStart} -import org.apache.spark.scheduler.TaskInfo -import org.apache.spark.ui.JettyUtils._ -import org.apache.spark.ui.Page.Executors -import org.apache.spark.ui.UIUtils -import org.apache.spark.util.Utils - -private[spark] class ExecutorsUI(val sc: SparkContext) { - - private var _listener: Option[ExecutorsListener] = None - def listener = _listener.get - - def start() { - _listener = Some(new ExecutorsListener) - sc.addSparkListener(listener) - } - - def getHandlers = Seq[ServletContextHandler]( - createServletHandler("/executors", createServlet((request: HttpServletRequest) => render - (request), sc.env.securityManager)) - ) - - def render(request: HttpServletRequest): Seq[Node] = { - val storageStatusList = sc.getExecutorStorageStatus - - val maxMem = storageStatusList.map(_.maxMem).fold(0L)(_ + _) - val memUsed = storageStatusList.map(_.memUsed()).fold(0L)(_ + _) - val diskSpaceUsed = storageStatusList.flatMap(_.blocks.values.map(_.diskSize)).fold(0L)(_ + _) - - val execHead = Seq("Executor ID", "Address", "RDD blocks", "Memory used", "Disk used", - "Active tasks", "Failed tasks", "Complete tasks", "Total tasks", "Task Time", "Shuffle Read", - "Shuffle Write") - - def execRow(kv: Seq[String]) = { - - {kv(0)} - {kv(1)} - {kv(2)} - - {Utils.bytesToString(kv(3).toLong)} / {Utils.bytesToString(kv(4).toLong)} - - - {Utils.bytesToString(kv(5).toLong)} - - {kv(6)} - {kv(7)} - {kv(8)} - {kv(9)} - {Utils.msDurationToString(kv(10).toLong)} - {Utils.bytesToString(kv(11).toLong)} - {Utils.bytesToString(kv(12).toLong)} - - } - - val execInfo = for (statusId <- 0 until storageStatusList.size) yield getExecInfo(statusId) - val execTable = UIUtils.listingTable(execHead, execRow, execInfo) - - val content = -
    -
    -
      -
    • Memory: - {Utils.bytesToString(memUsed)} Used - ({Utils.bytesToString(maxMem)} Total)
    • -
    • Disk: {Utils.bytesToString(diskSpaceUsed)} Used
    • -
    -
    -
    -
    -
    - {execTable} -
    -
    ; - - UIUtils.headerSparkPage(content, sc, "Executors (" + execInfo.size + ")", Executors) - } - - def getExecInfo(statusId: Int): Seq[String] = { - val status = sc.getExecutorStorageStatus(statusId) - val execId = status.blockManagerId.executorId - val hostPort = status.blockManagerId.hostPort - val rddBlocks = status.blocks.size.toString - val memUsed = status.memUsed().toString - val maxMem = status.maxMem.toString - val diskUsed = status.diskUsed().toString - val activeTasks = listener.executorToTasksActive.getOrElse(execId, HashSet.empty[Long]).size - val failedTasks = listener.executorToTasksFailed.getOrElse(execId, 0) - val completedTasks = listener.executorToTasksComplete.getOrElse(execId, 0) - val totalTasks = activeTasks + failedTasks + completedTasks - val totalDuration = listener.executorToDuration.getOrElse(execId, 0) - val totalShuffleRead = listener.executorToShuffleRead.getOrElse(execId, 0) - val totalShuffleWrite = listener.executorToShuffleWrite.getOrElse(execId, 0) - - Seq( - execId, - hostPort, - rddBlocks, - memUsed, - maxMem, - diskUsed, - activeTasks.toString, - failedTasks.toString, - completedTasks.toString, - totalTasks.toString, - totalDuration.toString, - totalShuffleRead.toString, - totalShuffleWrite.toString - ) - } - - private[spark] class ExecutorsListener extends SparkListener with Logging { - val executorToTasksActive = HashMap[String, HashSet[TaskInfo]]() - val executorToTasksComplete = HashMap[String, Int]() - val executorToTasksFailed = HashMap[String, Int]() - val executorToDuration = HashMap[String, Long]() - val executorToShuffleRead = HashMap[String, Long]() - val executorToShuffleWrite = HashMap[String, Long]() - - override def onTaskStart(taskStart: SparkListenerTaskStart) { - val eid = taskStart.taskInfo.executorId - val activeTasks = executorToTasksActive.getOrElseUpdate(eid, new HashSet[TaskInfo]()) - activeTasks += taskStart.taskInfo - } - - override def onTaskEnd(taskEnd: SparkListenerTaskEnd) { - val eid = taskEnd.taskInfo.executorId - val activeTasks = executorToTasksActive.getOrElseUpdate(eid, new HashSet[TaskInfo]()) - val newDuration = executorToDuration.getOrElse(eid, 0L) + taskEnd.taskInfo.duration - executorToDuration.put(eid, newDuration) - - activeTasks -= taskEnd.taskInfo - val (failureInfo, metrics): (Option[ExceptionFailure], Option[TaskMetrics]) = - taskEnd.reason match { - case e: ExceptionFailure => - executorToTasksFailed(eid) = executorToTasksFailed.getOrElse(eid, 0) + 1 - (Some(e), e.metrics) - case _ => - executorToTasksComplete(eid) = executorToTasksComplete.getOrElse(eid, 0) + 1 - (None, Option(taskEnd.taskMetrics)) - } - - // update shuffle read/write - if (null != taskEnd.taskMetrics) { - taskEnd.taskMetrics.shuffleReadMetrics.foreach(shuffleRead => - executorToShuffleRead.put(eid, executorToShuffleRead.getOrElse(eid, 0L) + - shuffleRead.remoteBytesRead)) - - taskEnd.taskMetrics.shuffleWriteMetrics.foreach(shuffleWrite => - executorToShuffleWrite.put(eid, executorToShuffleWrite.getOrElse(eid, 0L) + - shuffleWrite.shuffleBytesWritten)) - } - } - } -} diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorSummary.scala b/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorSummary.scala index 64e22a30b48f9..1dfe1d4f1fa11 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorSummary.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorSummary.scala @@ -18,7 +18,7 @@ package org.apache.spark.ui.jobs /** class for reporting aggregated metrics for each executors in stageUI */ -private[spark] class ExecutorSummary { +private[ui] class ExecutorSummary { var taskTime : Long = 0 var failedTasks : Int = 0 var succeededTasks : Int = 0 diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorTable.scala b/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorTable.scala index d012ba4dbb3db..c83e196c9c156 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorTable.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/ExecutorTable.scala @@ -20,17 +20,14 @@ package org.apache.spark.ui.jobs import scala.collection.mutable import scala.xml.Node -import org.apache.spark.scheduler.SchedulingMode +import org.apache.spark.ui.UIUtils import org.apache.spark.util.Utils /** Page showing executor summary */ -private[spark] class ExecutorTable(val parent: JobProgressUI, val stageId: Int) { +private[ui] class ExecutorTable(stageId: Int, parent: JobProgressTab) { + private val listener = parent.listener - val listener = parent.listener - val dateFmt = parent.dateFmt - val isFairScheduler = listener.sc.getSchedulingMode == SchedulingMode.FAIR - - def toNodeSeq(): Seq[Node] = { + def toNodeSeq: Seq[Node] = { listener.synchronized { executorTable() } @@ -58,11 +55,9 @@ private[spark] class ExecutorTable(val parent: JobProgressUI, val stageId: Int) } private def createExecutorTable() : Seq[Node] = { - // make a executor-id -> address map + // Make an executor-id -> address map val executorIdToAddress = mutable.HashMap[String, String]() - val storageStatusList = parent.sc.getExecutorStorageStatus - for (statusId <- 0 until storageStatusList.size) { - val blockManagerId = parent.sc.getExecutorStorageStatus(statusId).blockManagerId + listener.blockManagerIds.foreach { blockManagerId => val address = blockManagerId.hostPort val executorId = blockManagerId.executorId executorIdToAddress.put(executorId, address) @@ -70,25 +65,23 @@ private[spark] class ExecutorTable(val parent: JobProgressUI, val stageId: Int) val executorIdToSummary = listener.stageIdToExecutorSummaries.get(stageId) executorIdToSummary match { - case Some(x) => { - x.toSeq.sortBy(_._1).map{ - case (k,v) => { - - {k} - {executorIdToAddress.getOrElse(k, "CANNOT FIND ADDRESS")} - {parent.formatDuration(v.taskTime)} - {v.failedTasks + v.succeededTasks} - {v.failedTasks} - {v.succeededTasks} - {Utils.bytesToString(v.shuffleRead)} - {Utils.bytesToString(v.shuffleWrite)} - {Utils.bytesToString(v.memoryBytesSpilled)} - {Utils.bytesToString(v.diskBytesSpilled)} - - } + case Some(x) => + x.toSeq.sortBy(_._1).map { case (k, v) => { + + {k} + {executorIdToAddress.getOrElse(k, "CANNOT FIND ADDRESS")} + {UIUtils.formatDuration(v.taskTime)} + {v.failedTasks + v.succeededTasks} + {v.failedTasks} + {v.succeededTasks} + {Utils.bytesToString(v.shuffleRead)} + {Utils.bytesToString(v.shuffleWrite)} + {Utils.bytesToString(v.memoryBytesSpilled)} + {Utils.bytesToString(v.diskBytesSpilled)} + } } - case _ => { Seq[Node]() } + case _ => Seq[Node]() } } } diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/IndexPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/IndexPage.scala deleted file mode 100644 index 81713edcf5db2..0000000000000 --- a/core/src/main/scala/org/apache/spark/ui/jobs/IndexPage.scala +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.ui.jobs - -import javax.servlet.http.HttpServletRequest - -import scala.xml.{NodeSeq, Node} - -import org.apache.spark.scheduler.SchedulingMode -import org.apache.spark.ui.Page._ -import org.apache.spark.ui.UIUtils._ - -/** Page showing list of all ongoing and recently finished stages and pools*/ -private[spark] class IndexPage(parent: JobProgressUI) { - def listener = parent.listener - - def render(request: HttpServletRequest): Seq[Node] = { - listener.synchronized { - val activeStages = listener.activeStages.toSeq - val completedStages = listener.completedStages.reverse.toSeq - val failedStages = listener.failedStages.reverse.toSeq - val now = System.currentTimeMillis() - - var activeTime = 0L - for (tasks <- listener.stageIdToTasksActive.values; t <- tasks) { - activeTime += t.timeRunning(now) - } - - val activeStagesTable = new StageTable(activeStages.sortBy(_.submissionTime).reverse, parent) - val completedStagesTable = new StageTable(completedStages.sortBy(_.submissionTime).reverse, - parent) - val failedStagesTable = new StageTable(failedStages.sortBy(_.submissionTime).reverse, parent) - - val pools = listener.sc.getAllPools - val poolTable = new PoolTable(pools, listener) - val summary: NodeSeq = -
    -
      -
    • - Total Duration: - {parent.formatDuration(now - listener.sc.startTime)} -
    • -
    • Scheduling Mode: {parent.sc.getSchedulingMode}
    • -
    • - Active Stages: - {activeStages.size} -
    • -
    • - Completed Stages: - {completedStages.size} -
    • -
    • - Failed Stages: - {failedStages.size} -
    • -
    -
    - - val content = summary ++ - {if (listener.sc.getSchedulingMode == SchedulingMode.FAIR) { -

    {pools.size} Fair Scheduler Pools

    ++ poolTable.toNodeSeq - } else { - Seq() - }} ++ -

    Active Stages ({activeStages.size})

    ++ - activeStagesTable.toNodeSeq++ -

    Completed Stages ({completedStages.size})

    ++ - completedStagesTable.toNodeSeq++ -

    Failed Stages ({failedStages.size})

    ++ - failedStagesTable.toNodeSeq - - headerSparkPage(content, parent.sc, "Spark Stages", Stages) - } - } -} diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala index 07a08f5277d19..18559f732d2a3 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala @@ -17,29 +17,29 @@ package org.apache.spark.ui.jobs -import scala.collection.mutable.{ListBuffer, HashMap, HashSet} +import scala.collection.mutable.{HashMap, ListBuffer} -import org.apache.spark.{ExceptionFailure, SparkContext, Success} +import org.apache.spark.{ExceptionFailure, SparkConf, SparkContext, Success} import org.apache.spark.executor.TaskMetrics import org.apache.spark.scheduler._ +import org.apache.spark.scheduler.SchedulingMode.SchedulingMode +import org.apache.spark.storage.BlockManagerId /** * Tracks task-level information to be displayed in the UI. * * All access to the data structures in this class must be synchronized on the - * class, since the UI thread and the DAGScheduler event loop may otherwise - * be reading/updating the internal data structures concurrently. + * class, since the UI thread and the EventBus loop may otherwise be reading and + * updating the internal data structures concurrently. */ -private[spark] class JobProgressListener(val sc: SparkContext) extends SparkListener { - // How many stages to remember - val RETAINED_STAGES = sc.conf.getInt("spark.ui.retainedStages", 1000) - val DEFAULT_POOL_NAME = "default" +private[ui] class JobProgressListener(conf: SparkConf) extends SparkListener { - val stageIdToPool = new HashMap[Int, String]() - val stageIdToDescription = new HashMap[Int, String]() - val poolToActiveStages = new HashMap[String, HashSet[StageInfo]]() + import JobProgressListener._ - val activeStages = HashSet[StageInfo]() + // How many stages to remember + val retainedStages = conf.getInt("spark.ui.retainedStages", DEFAULT_RETAINED_STAGES) + + val activeStages = HashMap[Int, StageInfo]() val completedStages = ListBuffer[StageInfo]() val failedStages = ListBuffer[StageInfo]() @@ -53,29 +53,41 @@ private[spark] class JobProgressListener(val sc: SparkContext) extends SparkList val stageIdToShuffleWrite = HashMap[Int, Long]() val stageIdToMemoryBytesSpilled = HashMap[Int, Long]() val stageIdToDiskBytesSpilled = HashMap[Int, Long]() - val stageIdToTasksActive = HashMap[Int, HashSet[TaskInfo]]() + val stageIdToTasksActive = HashMap[Int, HashMap[Long, TaskInfo]]() val stageIdToTasksComplete = HashMap[Int, Int]() val stageIdToTasksFailed = HashMap[Int, Int]() - val stageIdToTaskInfos = - HashMap[Int, HashSet[(TaskInfo, Option[TaskMetrics], Option[ExceptionFailure])]]() + val stageIdToTaskData = HashMap[Int, HashMap[Long, TaskUIData]]() val stageIdToExecutorSummaries = HashMap[Int, HashMap[String, ExecutorSummary]]() + val stageIdToPool = HashMap[Int, String]() + val stageIdToDescription = HashMap[Int, String]() + val poolToActiveStages = HashMap[String, HashMap[Int, StageInfo]]() + + val executorIdToBlockManagerId = HashMap[String, BlockManagerId]() - override def onJobStart(jobStart: SparkListenerJobStart) {} + var schedulingMode: Option[SchedulingMode] = None + + def blockManagerIds = executorIdToBlockManagerId.values.toSeq override def onStageCompleted(stageCompleted: SparkListenerStageCompleted) = synchronized { - val stage = stageCompleted.stage - poolToActiveStages(stageIdToPool(stage.stageId)) -= stage - activeStages -= stage - completedStages += stage - trimIfNecessary(completedStages) + val stage = stageCompleted.stageInfo + val stageId = stage.stageId + // Remove by stageId, rather than by StageInfo, in case the StageInfo is from storage + poolToActiveStages(stageIdToPool(stageId)).remove(stageId) + activeStages.remove(stageId) + if (stage.failureReason.isEmpty) { + completedStages += stage + trimIfNecessary(completedStages) + } else { + failedStages += stage + trimIfNecessary(failedStages) + } } /** If stages is too large, remove and garbage collect old stages */ - def trimIfNecessary(stages: ListBuffer[StageInfo]) = synchronized { - if (stages.size > RETAINED_STAGES) { - val toRemove = RETAINED_STAGES / 10 - stages.takeRight(toRemove).foreach( s => { - stageIdToTaskInfos.remove(s.stageId) + private def trimIfNecessary(stages: ListBuffer[StageInfo]) = synchronized { + if (stages.size > retainedStages) { + val toRemove = math.max(retainedStages / 10, 1) + stages.take(toRemove).foreach { s => stageIdToTime.remove(s.stageId) stageIdToShuffleRead.remove(s.stageId) stageIdToShuffleWrite.remove(s.stageId) @@ -84,17 +96,19 @@ private[spark] class JobProgressListener(val sc: SparkContext) extends SparkList stageIdToTasksActive.remove(s.stageId) stageIdToTasksComplete.remove(s.stageId) stageIdToTasksFailed.remove(s.stageId) + stageIdToTaskData.remove(s.stageId) + stageIdToExecutorSummaries.remove(s.stageId) stageIdToPool.remove(s.stageId) - if (stageIdToDescription.contains(s.stageId)) {stageIdToDescription.remove(s.stageId)} - }) - stages.trimEnd(toRemove) + stageIdToDescription.remove(s.stageId) + } + stages.trimStart(toRemove) } } /** For FIFO, all stages are contained by "default" pool but "default" pool here is meaningless */ override def onStageSubmitted(stageSubmitted: SparkListenerStageSubmitted) = synchronized { - val stage = stageSubmitted.stage - activeStages += stage + val stage = stageSubmitted.stageInfo + activeStages(stage.stageId) = stage val poolName = Option(stageSubmitted.properties).map { p => p.getProperty("spark.scheduler.pool", DEFAULT_POOL_NAME) @@ -106,121 +120,138 @@ private[spark] class JobProgressListener(val sc: SparkContext) extends SparkList } description.map(d => stageIdToDescription(stage.stageId) = d) - val stages = poolToActiveStages.getOrElseUpdate(poolName, new HashSet[StageInfo]()) - stages += stage + val stages = poolToActiveStages.getOrElseUpdate(poolName, new HashMap[Int, StageInfo]()) + stages(stage.stageId) = stage } override def onTaskStart(taskStart: SparkListenerTaskStart) = synchronized { - val sid = taskStart.task.stageId - val tasksActive = stageIdToTasksActive.getOrElseUpdate(sid, new HashSet[TaskInfo]()) - tasksActive += taskStart.taskInfo - val taskList = stageIdToTaskInfos.getOrElse( - sid, HashSet[(TaskInfo, Option[TaskMetrics], Option[ExceptionFailure])]()) - taskList += ((taskStart.taskInfo, None, None)) - stageIdToTaskInfos(sid) = taskList + val sid = taskStart.stageId + val taskInfo = taskStart.taskInfo + if (taskInfo != null) { + val tasksActive = stageIdToTasksActive.getOrElseUpdate(sid, new HashMap[Long, TaskInfo]()) + tasksActive(taskInfo.taskId) = taskInfo + val taskMap = stageIdToTaskData.getOrElse(sid, HashMap[Long, TaskUIData]()) + taskMap(taskInfo.taskId) = new TaskUIData(taskInfo) + stageIdToTaskData(sid) = taskMap + } } - override def onTaskGettingResult(taskGettingResult: SparkListenerTaskGettingResult) - = synchronized { + override def onTaskGettingResult(taskGettingResult: SparkListenerTaskGettingResult) { // Do nothing: because we don't do a deep copy of the TaskInfo, the TaskInfo in // stageToTaskInfos already has the updated status. } override def onTaskEnd(taskEnd: SparkListenerTaskEnd) = synchronized { - val sid = taskEnd.task.stageId - - // create executor summary map if necessary - val executorSummaryMap = stageIdToExecutorSummaries.getOrElseUpdate(key = sid, - op = new HashMap[String, ExecutorSummary]()) - executorSummaryMap.getOrElseUpdate(key = taskEnd.taskInfo.executorId, - op = new ExecutorSummary()) - - val executorSummary = executorSummaryMap.get(taskEnd.taskInfo.executorId) - executorSummary match { - case Some(y) => { - // first update failed-task, succeed-task + val sid = taskEnd.stageId + val info = taskEnd.taskInfo + + if (info != null) { + // create executor summary map if necessary + val executorSummaryMap = stageIdToExecutorSummaries.getOrElseUpdate(key = sid, + op = new HashMap[String, ExecutorSummary]()) + executorSummaryMap.getOrElseUpdate(key = info.executorId, op = new ExecutorSummary) + + val executorSummary = executorSummaryMap.get(info.executorId) + executorSummary match { + case Some(y) => { + // first update failed-task, succeed-task + taskEnd.reason match { + case Success => + y.succeededTasks += 1 + case _ => + y.failedTasks += 1 + } + + // update duration + y.taskTime += info.duration + + val metrics = taskEnd.taskMetrics + if (metrics != null) { + metrics.shuffleReadMetrics.foreach { y.shuffleRead += _.remoteBytesRead } + metrics.shuffleWriteMetrics.foreach { y.shuffleWrite += _.shuffleBytesWritten } + y.memoryBytesSpilled += metrics.memoryBytesSpilled + y.diskBytesSpilled += metrics.diskBytesSpilled + } + } + case _ => {} + } + + val tasksActive = stageIdToTasksActive.getOrElseUpdate(sid, new HashMap[Long, TaskInfo]()) + // Remove by taskId, rather than by TaskInfo, in case the TaskInfo is from storage + tasksActive.remove(info.taskId) + + val (failureInfo, metrics): (Option[ExceptionFailure], Option[TaskMetrics]) = taskEnd.reason match { - case Success => - y.succeededTasks += 1 + case e: ExceptionFailure => + stageIdToTasksFailed(sid) = stageIdToTasksFailed.getOrElse(sid, 0) + 1 + (Some(e), e.metrics) case _ => - y.failedTasks += 1 + stageIdToTasksComplete(sid) = stageIdToTasksComplete.getOrElse(sid, 0) + 1 + (None, Option(taskEnd.taskMetrics)) } - // update duration - y.taskTime += taskEnd.taskInfo.duration + stageIdToTime.getOrElseUpdate(sid, 0L) + val time = metrics.map(_.executorRunTime).getOrElse(0L) + stageIdToTime(sid) += time + totalTime += time - Option(taskEnd.taskMetrics).foreach { taskMetrics => - taskMetrics.shuffleReadMetrics.foreach { y.shuffleRead += _.remoteBytesRead } - taskMetrics.shuffleWriteMetrics.foreach { y.shuffleWrite += _.shuffleBytesWritten } - y.memoryBytesSpilled += taskMetrics.memoryBytesSpilled - y.diskBytesSpilled += taskMetrics.diskBytesSpilled - } - } - case _ => {} + stageIdToShuffleRead.getOrElseUpdate(sid, 0L) + val shuffleRead = metrics.flatMap(_.shuffleReadMetrics).map(_.remoteBytesRead).getOrElse(0L) + stageIdToShuffleRead(sid) += shuffleRead + totalShuffleRead += shuffleRead + + stageIdToShuffleWrite.getOrElseUpdate(sid, 0L) + val shuffleWrite = + metrics.flatMap(_.shuffleWriteMetrics).map(_.shuffleBytesWritten).getOrElse(0L) + stageIdToShuffleWrite(sid) += shuffleWrite + totalShuffleWrite += shuffleWrite + + stageIdToMemoryBytesSpilled.getOrElseUpdate(sid, 0L) + val memoryBytesSpilled = metrics.map(_.memoryBytesSpilled).getOrElse(0L) + stageIdToMemoryBytesSpilled(sid) += memoryBytesSpilled + + stageIdToDiskBytesSpilled.getOrElseUpdate(sid, 0L) + val diskBytesSpilled = metrics.map(_.diskBytesSpilled).getOrElse(0L) + stageIdToDiskBytesSpilled(sid) += diskBytesSpilled + + val taskMap = stageIdToTaskData.getOrElse(sid, HashMap[Long, TaskUIData]()) + taskMap(info.taskId) = new TaskUIData(info, metrics, failureInfo) + stageIdToTaskData(sid) = taskMap } + } - val tasksActive = stageIdToTasksActive.getOrElseUpdate(sid, new HashSet[TaskInfo]()) - tasksActive -= taskEnd.taskInfo - - val (failureInfo, metrics): (Option[ExceptionFailure], Option[TaskMetrics]) = - taskEnd.reason match { - case e: ExceptionFailure => - stageIdToTasksFailed(sid) = stageIdToTasksFailed.getOrElse(sid, 0) + 1 - (Some(e), e.metrics) - case _ => - stageIdToTasksComplete(sid) = stageIdToTasksComplete.getOrElse(sid, 0) + 1 - (None, Option(taskEnd.taskMetrics)) - } + override def onEnvironmentUpdate(environmentUpdate: SparkListenerEnvironmentUpdate) { + synchronized { + environmentUpdate + .environmentDetails("Spark Properties").toMap + .get("spark.scheduler.mode") + .map(SchedulingMode.withName) + } + } - stageIdToTime.getOrElseUpdate(sid, 0L) - val time = metrics.map(m => m.executorRunTime).getOrElse(0) - stageIdToTime(sid) += time - totalTime += time - - stageIdToShuffleRead.getOrElseUpdate(sid, 0L) - val shuffleRead = metrics.flatMap(m => m.shuffleReadMetrics).map(s => - s.remoteBytesRead).getOrElse(0L) - stageIdToShuffleRead(sid) += shuffleRead - totalShuffleRead += shuffleRead - - stageIdToShuffleWrite.getOrElseUpdate(sid, 0L) - val shuffleWrite = metrics.flatMap(m => m.shuffleWriteMetrics).map(s => - s.shuffleBytesWritten).getOrElse(0L) - stageIdToShuffleWrite(sid) += shuffleWrite - totalShuffleWrite += shuffleWrite - - stageIdToMemoryBytesSpilled.getOrElseUpdate(sid, 0L) - val memoryBytesSpilled = metrics.map(m => m.memoryBytesSpilled).getOrElse(0L) - stageIdToMemoryBytesSpilled(sid) += memoryBytesSpilled - - stageIdToDiskBytesSpilled.getOrElseUpdate(sid, 0L) - val diskBytesSpilled = metrics.map(m => m.diskBytesSpilled).getOrElse(0L) - stageIdToDiskBytesSpilled(sid) += diskBytesSpilled - - val taskList = stageIdToTaskInfos.getOrElse( - sid, HashSet[(TaskInfo, Option[TaskMetrics], Option[ExceptionFailure])]()) - taskList -= ((taskEnd.taskInfo, None, None)) - taskList += ((taskEnd.taskInfo, metrics, failureInfo)) - stageIdToTaskInfos(sid) = taskList + override def onBlockManagerAdded(blockManagerAdded: SparkListenerBlockManagerAdded) { + synchronized { + val blockManagerId = blockManagerAdded.blockManagerId + val executorId = blockManagerId.executorId + executorIdToBlockManagerId(executorId) = blockManagerId + } } - override def onJobEnd(jobEnd: SparkListenerJobEnd) = synchronized { - jobEnd match { - case end: SparkListenerJobEnd => - end.jobResult match { - case JobFailed(ex, Some(stage)) => - /* If two jobs share a stage we could get this failure message twice. So we first - * check whether we've already retired this stage. */ - val stageInfo = activeStages.filter(s => s.stageId == stage.id).headOption - stageInfo.foreach {s => - activeStages -= s - poolToActiveStages(stageIdToPool(stage.id)) -= s - failedStages += s - trimIfNecessary(failedStages) - } - case _ => - } - case _ => + override def onBlockManagerRemoved(blockManagerRemoved: SparkListenerBlockManagerRemoved) { + synchronized { + val executorId = blockManagerRemoved.blockManagerId.executorId + executorIdToBlockManagerId.remove(executorId) } } + +} + +private[ui] case class TaskUIData( + taskInfo: TaskInfo, + taskMetrics: Option[TaskMetrics] = None, + exception: Option[ExceptionFailure] = None) + +private object JobProgressListener { + val DEFAULT_POOL_NAME = "default" + val DEFAULT_RETAINED_STAGES = 1000 } diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressPage.scala new file mode 100644 index 0000000000000..12c82796349c9 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressPage.scala @@ -0,0 +1,97 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui.jobs + +import javax.servlet.http.HttpServletRequest + +import scala.xml.{Node, NodeSeq} + +import org.apache.spark.scheduler.Schedulable +import org.apache.spark.ui.{WebUIPage, UIUtils} + +/** Page showing list of all ongoing and recently finished stages and pools */ +private[ui] class IndexPage(parent: JobProgressTab) extends WebUIPage("") { + private val appName = parent.appName + private val basePath = parent.basePath + private val live = parent.live + private val sc = parent.sc + private val listener = parent.listener + private lazy val isFairScheduler = parent.isFairScheduler + + def render(request: HttpServletRequest): Seq[Node] = { + listener.synchronized { + val activeStages = listener.activeStages.values.toSeq + val completedStages = listener.completedStages.reverse.toSeq + val failedStages = listener.failedStages.reverse.toSeq + val now = System.currentTimeMillis + + val activeStagesTable = new StageTable(activeStages.sortBy(_.submissionTime).reverse, parent) + val completedStagesTable = + new StageTable(completedStages.sortBy(_.submissionTime).reverse, parent) + val failedStagesTable = new StageTable(failedStages.sortBy(_.submissionTime).reverse, parent) + + // For now, pool information is only accessible in live UIs + val pools = if (live) sc.getAllPools else Seq[Schedulable]() + val poolTable = new PoolTable(pools, parent) + + val summary: NodeSeq = +
    +
      + {if (live) { + // Total duration is not meaningful unless the UI is live +
    • + Total Duration: + {UIUtils.formatDuration(now - sc.startTime)} +
    • + }} +
    • + Scheduling Mode: + {listener.schedulingMode.map(_.toString).getOrElse("Unknown")} +
    • +
    • + Active Stages: + {activeStages.size} +
    • +
    • + Completed Stages: + {completedStages.size} +
    • +
    • + Failed Stages: + {failedStages.size} +
    • +
    +
    + + val content = summary ++ + {if (live && isFairScheduler) { +

    {pools.size} Fair Scheduler Pools

    ++ poolTable.toNodeSeq + } else { + Seq[Node]() + }} ++ +

    Active Stages ({activeStages.size})

    ++ + activeStagesTable.toNodeSeq ++ +

    Completed Stages ({completedStages.size})

    ++ + completedStagesTable.toNodeSeq ++ +

    Failed Stages ({failedStages.size})

    ++ + failedStagesTable.toNodeSeq + + UIUtils.headerSparkPage(content, basePath, appName, "Spark Stages", parent.headerTabs, parent) + } + } +} diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressTab.scala b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressTab.scala new file mode 100644 index 0000000000000..da9de035f89f1 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressTab.scala @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui.jobs + +import org.apache.spark.SparkConf +import org.apache.spark.scheduler.SchedulingMode +import org.apache.spark.ui.{SparkUI, WebUITab} + +/** Web UI showing progress status of all jobs in the given SparkContext. */ +private[ui] class JobProgressTab(parent: SparkUI) extends WebUITab(parent, "stages") { + val appName = parent.appName + val basePath = parent.basePath + val live = parent.live + val sc = parent.sc + val conf = if (live) sc.conf else new SparkConf + val listener = new JobProgressListener(conf) + + attachPage(new IndexPage(this)) + attachPage(new StagePage(this)) + attachPage(new PoolPage(this)) + parent.registerListener(listener) + + def isFairScheduler = listener.schedulingMode.exists(_ == SchedulingMode.FAIR) +} diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressUI.scala b/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressUI.scala deleted file mode 100644 index 2d95d47e154cd..0000000000000 --- a/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressUI.scala +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.ui.jobs - -import java.text.SimpleDateFormat -import javax.servlet.http.HttpServletRequest - -import scala.Seq - -import org.eclipse.jetty.server.Handler -import org.eclipse.jetty.servlet.ServletContextHandler - -import org.apache.spark.SparkContext -import org.apache.spark.ui.JettyUtils._ -import org.apache.spark.util.Utils - -/** Web UI showing progress status of all jobs in the given SparkContext. */ -private[spark] class JobProgressUI(val sc: SparkContext) { - private var _listener: Option[JobProgressListener] = None - def listener = _listener.get - val dateFmt = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") - - private val indexPage = new IndexPage(this) - private val stagePage = new StagePage(this) - private val poolPage = new PoolPage(this) - - def start() { - _listener = Some(new JobProgressListener(sc)) - sc.addSparkListener(listener) - } - - def formatDuration(ms: Long) = Utils.msDurationToString(ms) - - def getHandlers = Seq[ServletContextHandler]( - createServletHandler("/stages/stage", - createServlet((request: HttpServletRequest) => stagePage.render(request), - sc.env.securityManager)), - createServletHandler("/stages/pool", - createServlet((request: HttpServletRequest) => poolPage.render(request), - sc.env.securityManager)), - createServletHandler("/stages", - createServlet((request: HttpServletRequest) => indexPage.render(request), - sc.env.securityManager)) - ) -} diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/PoolPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/PoolPage.scala index eb7518a020840..fd83d37583967 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/PoolPage.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/PoolPage.scala @@ -21,27 +21,37 @@ import javax.servlet.http.HttpServletRequest import scala.xml.Node -import org.apache.spark.ui.Page._ -import org.apache.spark.ui.UIUtils._ +import org.apache.spark.scheduler.{Schedulable, StageInfo} +import org.apache.spark.ui.{WebUIPage, UIUtils} /** Page showing specific pool details */ -private[spark] class PoolPage(parent: JobProgressUI) { - def listener = parent.listener +private[ui] class PoolPage(parent: JobProgressTab) extends WebUIPage("pool") { + private val appName = parent.appName + private val basePath = parent.basePath + private val live = parent.live + private val sc = parent.sc + private val listener = parent.listener def render(request: HttpServletRequest): Seq[Node] = { listener.synchronized { val poolName = request.getParameter("poolname") val poolToActiveStages = listener.poolToActiveStages - val activeStages = poolToActiveStages.get(poolName).toSeq.flatten + val activeStages = poolToActiveStages.get(poolName) match { + case Some(s) => s.values.toSeq + case None => Seq[StageInfo]() + } val activeStagesTable = new StageTable(activeStages.sortBy(_.submissionTime).reverse, parent) - val pool = listener.sc.getPoolForName(poolName).get - val poolTable = new PoolTable(Seq(pool), listener) + // For now, pool information is only accessible in live UIs + val pools = if (live) Seq(sc.getPoolForName(poolName).get) else Seq[Schedulable]() + val poolTable = new PoolTable(pools, parent) - val content =

    Summary

    ++ poolTable.toNodeSeq() ++ -

    {activeStages.size} Active Stages

    ++ activeStagesTable.toNodeSeq() + val content = +

    Summary

    ++ poolTable.toNodeSeq ++ +

    {activeStages.size} Active Stages

    ++ activeStagesTable.toNodeSeq - headerSparkPage(content, parent.sc, "Fair Scheduler Pool: " + poolName, Stages) + UIUtils.headerSparkPage(content, basePath, appName, "Fair Scheduler Pool: " + poolName, + parent.headerTabs, parent) } } } diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/PoolTable.scala b/core/src/main/scala/org/apache/spark/ui/jobs/PoolTable.scala index 22bc97ada18be..f4b68f241966d 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/PoolTable.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/PoolTable.scala @@ -18,26 +18,25 @@ package org.apache.spark.ui.jobs import scala.collection.mutable.HashMap -import scala.collection.mutable.HashSet import scala.xml.Node import org.apache.spark.scheduler.{Schedulable, StageInfo} import org.apache.spark.ui.UIUtils /** Table showing list of pools */ -private[spark] class PoolTable(pools: Seq[Schedulable], listener: JobProgressListener) { +private[ui] class PoolTable(pools: Seq[Schedulable], parent: JobProgressTab) { + private val basePath = parent.basePath + private val listener = parent.listener - var poolToActiveStages: HashMap[String, HashSet[StageInfo]] = listener.poolToActiveStages - - def toNodeSeq(): Seq[Node] = { + def toNodeSeq: Seq[Node] = { listener.synchronized { poolTable(poolRow, pools) } } - private def poolTable(makeRow: (Schedulable, HashMap[String, HashSet[StageInfo]]) => Seq[Node], - rows: Seq[Schedulable] - ): Seq[Node] = { + private def poolTable( + makeRow: (Schedulable, HashMap[String, HashMap[Int, StageInfo]]) => Seq[Node], + rows: Seq[Schedulable]): Seq[Node] = { @@ -48,20 +47,23 @@ private[spark] class PoolTable(pools: Seq[Schedulable], listener: JobProgressLis - {rows.map(r => makeRow(r, poolToActiveStages))} + {rows.map(r => makeRow(r, listener.poolToActiveStages))}
    Pool NameSchedulingMode
    } - private def poolRow(p: Schedulable, poolToActiveStages: HashMap[String, HashSet[StageInfo]]) - : Seq[Node] = { + private def poolRow( + p: Schedulable, + poolToActiveStages: HashMap[String, HashMap[Int, StageInfo]]): Seq[Node] = { val activeStages = poolToActiveStages.get(p.name) match { case Some(stages) => stages.size case None => 0 } - {p.name} + + {p.name} + {p.minShare} {p.weight} diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala index ddc687a45a095..4bce472036f7d 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala @@ -22,54 +22,52 @@ import javax.servlet.http.HttpServletRequest import scala.xml.Node -import org.apache.spark.ExceptionFailure -import org.apache.spark.executor.TaskMetrics -import org.apache.spark.scheduler.TaskInfo -import org.apache.spark.ui.UIUtils._ -import org.apache.spark.ui.Page._ +import org.apache.spark.ui.{WebUIPage, UIUtils} import org.apache.spark.util.{Utils, Distribution} /** Page showing statistics and task list for a given stage */ -private[spark] class StagePage(parent: JobProgressUI) { - def listener = parent.listener - val dateFmt = parent.dateFmt +private[ui] class StagePage(parent: JobProgressTab) extends WebUIPage("stage") { + private val appName = parent.appName + private val basePath = parent.basePath + private val listener = parent.listener def render(request: HttpServletRequest): Seq[Node] = { listener.synchronized { val stageId = request.getParameter("id").toInt - val now = System.currentTimeMillis() - if (!listener.stageIdToTaskInfos.contains(stageId)) { + if (!listener.stageIdToTaskData.contains(stageId)) { val content =

    Summary Metrics

    No tasks have started yet

    Tasks

    No tasks have started yet
    - return headerSparkPage(content, parent.sc, "Details for Stage %s".format(stageId), Stages) + return UIUtils.headerSparkPage(content, basePath, appName, + "Details for Stage %s".format(stageId), parent.headerTabs, parent) } - val tasks = listener.stageIdToTaskInfos(stageId).toSeq.sortBy(_._1.launchTime) + val tasks = listener.stageIdToTaskData(stageId).values.toSeq.sortBy(_.taskInfo.launchTime) - val numCompleted = tasks.count(_._1.finished) + val numCompleted = tasks.count(_.taskInfo.finished) val shuffleReadBytes = listener.stageIdToShuffleRead.getOrElse(stageId, 0L) val hasShuffleRead = shuffleReadBytes > 0 val shuffleWriteBytes = listener.stageIdToShuffleWrite.getOrElse(stageId, 0L) val hasShuffleWrite = shuffleWriteBytes > 0 val memoryBytesSpilled = listener.stageIdToMemoryBytesSpilled.getOrElse(stageId, 0L) val diskBytesSpilled = listener.stageIdToDiskBytesSpilled.getOrElse(stageId, 0L) - val hasBytesSpilled = (memoryBytesSpilled > 0 && diskBytesSpilled > 0) + val hasBytesSpilled = memoryBytesSpilled > 0 && diskBytesSpilled > 0 var activeTime = 0L - listener.stageIdToTasksActive(stageId).foreach(activeTime += _.timeRunning(now)) + val now = System.currentTimeMillis + val tasksActive = listener.stageIdToTasksActive(stageId).values + tasksActive.foreach(activeTime += _.timeRunning(now)) - val finishedTasks = listener.stageIdToTaskInfos(stageId).filter(_._1.finished) // scalastyle:off val summary =
    • Total task time across all tasks: - {parent.formatDuration(listener.stageIdToTime.getOrElse(stageId, 0L) + activeTime)} + {UIUtils.formatDuration(listener.stageIdToTime.getOrElse(stageId, 0L) + activeTime)}
    • {if (hasShuffleRead)
    • @@ -104,42 +102,45 @@ private[spark] class StagePage(parent: JobProgressUI) { {if (hasBytesSpilled) Seq("Shuffle Spill (Memory)", "Shuffle Spill (Disk)") else Nil} ++ Seq("Errors") - val taskTable = listingTable( + val taskTable = UIUtils.listingTable( taskHeaders, taskRow(hasShuffleRead, hasShuffleWrite, hasBytesSpilled), tasks) // Excludes tasks which failed and have incomplete metrics - val validTasks = tasks.filter(t => t._1.status == "SUCCESS" && (t._2.isDefined)) + val validTasks = tasks.filter(t => t.taskInfo.status == "SUCCESS" && t.taskMetrics.isDefined) val summaryTable: Option[Seq[Node]] = if (validTasks.size == 0) { None } else { - val serializationTimes = validTasks.map{case (info, metrics, exception) => - metrics.get.resultSerializationTime.toDouble} + val serializationTimes = validTasks.map { case TaskUIData(_, metrics, _) => + metrics.get.resultSerializationTime.toDouble + } val serializationQuantiles = "Result serialization time" +: Distribution(serializationTimes). - get.getQuantiles().map(ms => parent.formatDuration(ms.toLong)) + get.getQuantiles().map(ms => UIUtils.formatDuration(ms.toLong)) - val serviceTimes = validTasks.map{case (info, metrics, exception) => - metrics.get.executorRunTime.toDouble} - val serviceQuantiles = "Duration" +: Distribution(serviceTimes).get.getQuantiles().map( - ms => parent.formatDuration(ms.toLong)) + val serviceTimes = validTasks.map { case TaskUIData(_, metrics, _) => + metrics.get.executorRunTime.toDouble + } + val serviceQuantiles = "Duration" +: Distribution(serviceTimes).get.getQuantiles() + .map(ms => UIUtils.formatDuration(ms.toLong)) - val gettingResultTimes = validTasks.map{case (info, metrics, exception) => + val gettingResultTimes = validTasks.map { case TaskUIData(info, _, _) => if (info.gettingResultTime > 0) { (info.finishTime - info.gettingResultTime).toDouble } else { 0.0 } } - val gettingResultQuantiles = ("Time spent fetching task results" +: - Distribution(gettingResultTimes).get.getQuantiles().map( - millis => parent.formatDuration(millis.toLong))) + val gettingResultQuantiles = "Time spent fetching task results" +: + Distribution(gettingResultTimes).get.getQuantiles().map { millis => + UIUtils.formatDuration(millis.toLong) + } // The scheduler delay includes the network delay to send the task to the worker // machine and to send back the result (but not the time to fetch the task result, // if it needed to be fetched from the block manager on the worker). - val schedulerDelays = validTasks.map{case (info, metrics, exception) => + val schedulerDelays = validTasks.map { case TaskUIData(info, metrics, _) => val totalExecutionTime = { if (info.gettingResultTime > 0) { (info.gettingResultTime - info.launchTime).toDouble @@ -149,35 +150,32 @@ private[spark] class StagePage(parent: JobProgressUI) { } totalExecutionTime - metrics.get.executorRunTime } - val schedulerDelayQuantiles = ("Scheduler delay" +: - Distribution(schedulerDelays).get.getQuantiles().map( - millis => parent.formatDuration(millis.toLong))) + val schedulerDelayQuantiles = "Scheduler delay" +: + Distribution(schedulerDelays).get.getQuantiles().map { millis => + UIUtils.formatDuration(millis.toLong) + } def getQuantileCols(data: Seq[Double]) = Distribution(data).get.getQuantiles().map(d => Utils.bytesToString(d.toLong)) - val shuffleReadSizes = validTasks.map { - case(info, metrics, exception) => - metrics.get.shuffleReadMetrics.map(_.remoteBytesRead).getOrElse(0L).toDouble + val shuffleReadSizes = validTasks.map { case TaskUIData(_, metrics, _) => + metrics.get.shuffleReadMetrics.map(_.remoteBytesRead).getOrElse(0L).toDouble } val shuffleReadQuantiles = "Shuffle Read (Remote)" +: getQuantileCols(shuffleReadSizes) - val shuffleWriteSizes = validTasks.map { - case(info, metrics, exception) => - metrics.get.shuffleWriteMetrics.map(_.shuffleBytesWritten).getOrElse(0L).toDouble + val shuffleWriteSizes = validTasks.map { case TaskUIData(_, metrics, _) => + metrics.get.shuffleWriteMetrics.map(_.shuffleBytesWritten).getOrElse(0L).toDouble } val shuffleWriteQuantiles = "Shuffle Write" +: getQuantileCols(shuffleWriteSizes) - val memoryBytesSpilledSizes = validTasks.map { - case(info, metrics, exception) => - metrics.get.memoryBytesSpilled.toDouble + val memoryBytesSpilledSizes = validTasks.map { case TaskUIData(_, metrics, _) => + metrics.get.memoryBytesSpilled.toDouble } val memoryBytesSpilledQuantiles = "Shuffle spill (memory)" +: getQuantileCols(memoryBytesSpilledSizes) - val diskBytesSpilledSizes = validTasks.map { - case(info, metrics, exception) => - metrics.get.diskBytesSpilled.toDouble + val diskBytesSpilledSizes = validTasks.map { case TaskUIData(_, metrics, _) => + metrics.get.diskBytesSpilled.toDouble } val diskBytesSpilledQuantiles = "Shuffle spill (disk)" +: getQuantileCols(diskBytesSpilledSizes) @@ -195,98 +193,104 @@ private[spark] class StagePage(parent: JobProgressUI) { val quantileHeaders = Seq("Metric", "Min", "25th percentile", "Median", "75th percentile", "Max") def quantileRow(data: Seq[String]): Seq[Node] = {data.map(d => {d})} - Some(listingTable(quantileHeaders, quantileRow, listings, fixedWidth = true)) + Some(UIUtils.listingTable(quantileHeaders, quantileRow, listings, fixedWidth = true)) } - val executorTable = new ExecutorTable(parent, stageId) + val executorTable = new ExecutorTable(stageId, parent) val content = summary ++

      Summary Metrics for {numCompleted} Completed Tasks

      ++
      {summaryTable.getOrElse("No tasks have reported metrics yet.")}
      ++ -

      Aggregated Metrics by Executor

      ++ executorTable.toNodeSeq() ++ +

      Aggregated Metrics by Executor

      ++ executorTable.toNodeSeq ++

      Tasks

      ++ taskTable - headerSparkPage(content, parent.sc, "Details for Stage %d".format(stageId), Stages) + UIUtils.headerSparkPage(content, basePath, appName, "Details for Stage %d".format(stageId), + parent.headerTabs, parent) } } def taskRow(shuffleRead: Boolean, shuffleWrite: Boolean, bytesSpilled: Boolean) - (taskData: (TaskInfo, Option[TaskMetrics], Option[ExceptionFailure])): Seq[Node] = { + (taskData: TaskUIData): Seq[Node] = { def fmtStackTrace(trace: Seq[StackTraceElement]): Seq[Node] = trace.map(e => {e.toString}) - val (info, metrics, exception) = taskData - - val duration = if (info.status == "RUNNING") info.timeRunning(System.currentTimeMillis()) - else metrics.map(m => m.executorRunTime).getOrElse(1) - val formatDuration = if (info.status == "RUNNING") parent.formatDuration(duration) - else metrics.map(m => parent.formatDuration(m.executorRunTime)).getOrElse("") - val gcTime = metrics.map(m => m.jvmGCTime).getOrElse(0L) - val serializationTime = metrics.map(m => m.resultSerializationTime).getOrElse(0L) - - val maybeShuffleRead = metrics.flatMap(m => m.shuffleReadMetrics).map(s => s.remoteBytesRead) - val shuffleReadSortable = maybeShuffleRead.map(_.toString).getOrElse("") - val shuffleReadReadable = maybeShuffleRead.map(Utils.bytesToString).getOrElse("") - - val maybeShuffleWrite = - metrics.flatMap{m => m.shuffleWriteMetrics}.map(s => s.shuffleBytesWritten) - val shuffleWriteSortable = maybeShuffleWrite.map(_.toString).getOrElse("") - val shuffleWriteReadable = maybeShuffleWrite.map(Utils.bytesToString).getOrElse("") - - val maybeWriteTime = metrics.flatMap(m => m.shuffleWriteMetrics).map(s => s.shuffleWriteTime) - val writeTimeSortable = maybeWriteTime.map(_.toString).getOrElse("") - val writeTimeReadable = maybeWriteTime.map( t => t / (1000 * 1000)).map{ ms => - if (ms == 0) "" else parent.formatDuration(ms)}.getOrElse("") - - val maybeMemoryBytesSpilled = metrics.map(m => m.memoryBytesSpilled) - val memoryBytesSpilledSortable = maybeMemoryBytesSpilled.map(_.toString).getOrElse("") - val memoryBytesSpilledReadable = maybeMemoryBytesSpilled.map(Utils.bytesToString).getOrElse("") - - val maybeDiskBytesSpilled = metrics.map{m => m.diskBytesSpilled} - val diskBytesSpilledSortable = maybeDiskBytesSpilled.map(_.toString).getOrElse("") - val diskBytesSpilledReadable = maybeDiskBytesSpilled.map(Utils.bytesToString).getOrElse("") - - - {info.index} - {info.taskId} - {info.status} - {info.taskLocality} - {info.host} - {dateFmt.format(new Date(info.launchTime))} - - {formatDuration} - - - {if (gcTime > 0) parent.formatDuration(gcTime) else ""} - - - {if (serializationTime > 0) parent.formatDuration(serializationTime) else ""} - - {if (shuffleRead) { - - {shuffleReadReadable} - - }} - {if (shuffleWrite) { - - {writeTimeReadable} - - - {shuffleWriteReadable} - - }} - {if (bytesSpilled) { - - {memoryBytesSpilledReadable} + + taskData match { case TaskUIData(info, metrics, exception) => + val duration = if (info.status == "RUNNING") info.timeRunning(System.currentTimeMillis()) + else metrics.map(_.executorRunTime).getOrElse(1L) + val formatDuration = if (info.status == "RUNNING") UIUtils.formatDuration(duration) + else metrics.map(m => UIUtils.formatDuration(m.executorRunTime)).getOrElse("") + val gcTime = metrics.map(_.jvmGCTime).getOrElse(0L) + val serializationTime = metrics.map(_.resultSerializationTime).getOrElse(0L) + + val maybeShuffleRead = metrics.flatMap(_.shuffleReadMetrics).map(_.remoteBytesRead) + val shuffleReadSortable = maybeShuffleRead.map(_.toString).getOrElse("") + val shuffleReadReadable = maybeShuffleRead.map(Utils.bytesToString).getOrElse("") + + val maybeShuffleWrite = + metrics.flatMap(_.shuffleWriteMetrics).map(_.shuffleBytesWritten) + val shuffleWriteSortable = maybeShuffleWrite.map(_.toString).getOrElse("") + val shuffleWriteReadable = maybeShuffleWrite.map(Utils.bytesToString).getOrElse("") + + val maybeWriteTime = metrics.flatMap(_.shuffleWriteMetrics).map(_.shuffleWriteTime) + val writeTimeSortable = maybeWriteTime.map(_.toString).getOrElse("") + val writeTimeReadable = maybeWriteTime.map(t => t / (1000 * 1000)).map { ms => + if (ms == 0) "" else UIUtils.formatDuration(ms) + }.getOrElse("") + + val maybeMemoryBytesSpilled = metrics.map(_.memoryBytesSpilled) + val memoryBytesSpilledSortable = maybeMemoryBytesSpilled.map(_.toString).getOrElse("") + val memoryBytesSpilledReadable = + maybeMemoryBytesSpilled.map(Utils.bytesToString).getOrElse("") + + val maybeDiskBytesSpilled = metrics.map(_.diskBytesSpilled) + val diskBytesSpilledSortable = maybeDiskBytesSpilled.map(_.toString).getOrElse("") + val diskBytesSpilledReadable = maybeDiskBytesSpilled.map(Utils.bytesToString).getOrElse("") + + + {info.index} + {info.taskId} + {info.status} + {info.taskLocality} + {info.host} + {UIUtils.formatDate(new Date(info.launchTime))} + + {formatDuration} + + + {if (gcTime > 0) UIUtils.formatDuration(gcTime) else ""} - - {diskBytesSpilledReadable} + + {if (serializationTime > 0) UIUtils.formatDuration(serializationTime) else ""} - }} - {exception.map(e => - - {e.className} ({e.description})
      - {fmtStackTrace(e.stackTrace)} -
      ).getOrElse("")} - - + {if (shuffleRead) { + + {shuffleReadReadable} + + }} + {if (shuffleWrite) { + + {writeTimeReadable} + + + {shuffleWriteReadable} + + }} + {if (bytesSpilled) { + + {memoryBytesSpilledReadable} + + + {diskBytesSpilledReadable} + + }} + + {exception.map { e => + + {e.className} ({e.description})
      + {fmtStackTrace(e.stackTrace)} +
      + }.getOrElse("")} + + + } } } diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala b/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala index c5fd3ae16dc9f..5cc1fcd10a08d 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala @@ -19,27 +19,26 @@ package org.apache.spark.ui.jobs import java.util.Date -import scala.collection.mutable.HashSet +import scala.collection.mutable.HashMap import scala.xml.Node -import org.apache.spark.scheduler.{SchedulingMode, StageInfo, TaskInfo} +import org.apache.spark.scheduler.{StageInfo, TaskInfo} import org.apache.spark.ui.UIUtils import org.apache.spark.util.Utils /** Page showing list of all ongoing and recently finished stages */ -private[spark] class StageTable(val stages: Seq[StageInfo], val parent: JobProgressUI) { +private[ui] class StageTable(stages: Seq[StageInfo], parent: JobProgressTab) { + private val basePath = parent.basePath + private val listener = parent.listener + private lazy val isFairScheduler = parent.isFairScheduler - val listener = parent.listener - val dateFmt = parent.dateFmt - val isFairScheduler = listener.sc.getSchedulingMode == SchedulingMode.FAIR - - def toNodeSeq(): Seq[Node] = { + def toNodeSeq: Seq[Node] = { listener.synchronized { stageTable(stageRow, stages) } } - /** Special table which merges two header cells. */ + /** Special table that merges two header cells. */ private def stageTable[T](makeRow: T => Seq[Node], rows: Seq[T]): Seq[Node] = { @@ -64,7 +63,7 @@ private[spark] class StageTable(val stages: Seq[StageInfo], val parent: JobProgr val startWidth = "width: %s%%".format((started.toDouble/total)*100)
      - + {completed}/{total} {failed}
      @@ -72,53 +71,56 @@ private[spark] class StageTable(val stages: Seq[StageInfo], val parent: JobProgr
      } - + /** Render an HTML row that represents a stage */ private def stageRow(s: StageInfo): Seq[Node] = { + val poolName = listener.stageIdToPool.get(s.stageId) + val nameLink = + + {s.name} + + val description = listener.stageIdToDescription.get(s.stageId) + .map(d =>
      {d}
      {nameLink}
      ).getOrElse(nameLink) val submissionTime = s.submissionTime match { - case Some(t) => dateFmt.format(new Date(t)) + case Some(t) => UIUtils.formatDate(new Date(t)) case None => "Unknown" } - + val finishTime = s.completionTime.getOrElse(System.currentTimeMillis) + val duration = s.submissionTime.map { t => + if (finishTime > t) finishTime - t else System.currentTimeMillis - t + } + val formattedDuration = duration.map(d => UIUtils.formatDuration(d)).getOrElse("Unknown") + val startedTasks = + listener.stageIdToTasksActive.getOrElse(s.stageId, HashMap[Long, TaskInfo]()).size + val completedTasks = listener.stageIdToTasksComplete.getOrElse(s.stageId, 0) + val failedTasks = listener.stageIdToTasksFailed.getOrElse(s.stageId, 0) match { + case f if f > 0 => "(%s failed)".format(f) + case _ => "" + } + val totalTasks = s.numTasks val shuffleReadSortable = listener.stageIdToShuffleRead.getOrElse(s.stageId, 0L) val shuffleRead = shuffleReadSortable match { case 0 => "" case b => Utils.bytesToString(b) } - val shuffleWriteSortable = listener.stageIdToShuffleWrite.getOrElse(s.stageId, 0L) val shuffleWrite = shuffleWriteSortable match { case 0 => "" case b => Utils.bytesToString(b) } - val startedTasks = listener.stageIdToTasksActive.getOrElse(s.stageId, HashSet[TaskInfo]()).size - val completedTasks = listener.stageIdToTasksComplete.getOrElse(s.stageId, 0) - val failedTasks = listener.stageIdToTasksFailed.getOrElse(s.stageId, 0) match { - case f if f > 0 => "(%s failed)".format(f) - case _ => "" - } - val totalTasks = s.numTasks - - val poolName = listener.stageIdToPool.get(s.stageId) - - val nameLink = - {s.name} - val description = listener.stageIdToDescription.get(s.stageId) - .map(d =>
      {d}
      {nameLink}
      ).getOrElse(nameLink) - val finishTime = s.completionTime.getOrElse(System.currentTimeMillis()) - val duration = s.submissionTime.map(t => finishTime - t) - {if (isFairScheduler) { - } - } + + }} - + diff --git a/core/src/main/scala/org/apache/spark/ui/storage/BlockManagerUI.scala b/core/src/main/scala/org/apache/spark/ui/storage/BlockManagerUI.scala deleted file mode 100644 index cb2083eb019bf..0000000000000 --- a/core/src/main/scala/org/apache/spark/ui/storage/BlockManagerUI.scala +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.ui.storage - -import javax.servlet.http.HttpServletRequest - -import org.eclipse.jetty.servlet.ServletContextHandler - -import org.apache.spark.{Logging, SparkContext} -import org.apache.spark.ui.JettyUtils._ - -/** Web UI showing storage status of all RDD's in the given SparkContext. */ -private[spark] class BlockManagerUI(val sc: SparkContext) extends Logging { - val indexPage = new IndexPage(this) - val rddPage = new RDDPage(this) - - def getHandlers = Seq[ServletContextHandler]( - createServletHandler("/storage/rdd", - createServlet((request: HttpServletRequest) => rddPage.render(request), - sc.env.securityManager)), - createServletHandler("/storage", - createServlet((request: HttpServletRequest) => indexPage.render(request), - sc.env.securityManager)) - ) -} diff --git a/core/src/main/scala/org/apache/spark/ui/storage/IndexPage.scala b/core/src/main/scala/org/apache/spark/ui/storage/IndexPage.scala deleted file mode 100644 index 6a3c41fb1155d..0000000000000 --- a/core/src/main/scala/org/apache/spark/ui/storage/IndexPage.scala +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.ui.storage - -import javax.servlet.http.HttpServletRequest - -import scala.xml.Node - -import org.apache.spark.storage.{RDDInfo, StorageUtils} -import org.apache.spark.ui.Page._ -import org.apache.spark.ui.UIUtils._ -import org.apache.spark.util.Utils - -/** Page showing list of RDD's currently stored in the cluster */ -private[spark] class IndexPage(parent: BlockManagerUI) { - val sc = parent.sc - - def render(request: HttpServletRequest): Seq[Node] = { - val storageStatusList = sc.getExecutorStorageStatus - // Calculate macro-level statistics - - val rddHeaders = Seq( - "RDD Name", - "Storage Level", - "Cached Partitions", - "Fraction Cached", - "Size in Memory", - "Size on Disk") - val rdds = StorageUtils.rddInfoFromStorageStatus(storageStatusList, sc) - val content = listingTable(rddHeaders, rddRow, rdds) - - headerSparkPage(content, parent.sc, "Storage ", Storage) - } - - def rddRow(rdd: RDDInfo): Seq[Node] = { - - - - - - - - - } -} diff --git a/core/src/main/scala/org/apache/spark/ui/storage/RDDPage.scala b/core/src/main/scala/org/apache/spark/ui/storage/RDDPage.scala index 78b149b14b1d4..d07f1c9b20fcf 100644 --- a/core/src/main/scala/org/apache/spark/ui/storage/RDDPage.scala +++ b/core/src/main/scala/org/apache/spark/ui/storage/RDDPage.scala @@ -21,36 +21,37 @@ import javax.servlet.http.HttpServletRequest import scala.xml.Node -import org.apache.spark.storage.{BlockId, StorageStatus, StorageUtils} -import org.apache.spark.storage.BlockManagerMasterActor.BlockStatus -import org.apache.spark.ui.Page._ -import org.apache.spark.ui.UIUtils._ +import org.apache.spark.storage.{BlockId, BlockStatus, StorageStatus, StorageUtils} +import org.apache.spark.ui.{WebUIPage, UIUtils} import org.apache.spark.util.Utils /** Page showing storage details for a given RDD */ -private[spark] class RDDPage(parent: BlockManagerUI) { - val sc = parent.sc +private[ui] class RddPage(parent: StorageTab) extends WebUIPage("rdd") { + private val appName = parent.appName + private val basePath = parent.basePath + private val listener = parent.listener def render(request: HttpServletRequest): Seq[Node] = { - val id = request.getParameter("id").toInt - val storageStatusList = sc.getExecutorStorageStatus - val filteredStorageStatusList = StorageUtils.filterStorageStatusByRDD(storageStatusList, id) - val rddInfo = StorageUtils.rddInfoFromStorageStatus(filteredStorageStatusList, sc).head - - val workerHeaders = Seq("Host", "Memory Usage", "Disk Usage") - val workers = filteredStorageStatusList.map((id, _)) - val workerTable = listingTable(workerHeaders, workerRow, workers) + val rddId = request.getParameter("id").toInt + val storageStatusList = listener.storageStatusList + val rddInfo = listener.rddInfoList.find(_.id == rddId).getOrElse { + // Rather than crashing, render an "RDD Not Found" page + return UIUtils.headerSparkPage(Seq[Node](), basePath, appName, "RDD Not Found", + parent.headerTabs, parent) + } - val blockHeaders = Seq("Block Name", "Storage Level", "Size in Memory", "Size on Disk", - "Executors") + // Worker table + val workers = storageStatusList.map((rddId, _)) + val workerTable = UIUtils.listingTable(workerHeader, workerRow, workers) - val blockStatuses = filteredStorageStatusList.flatMap(_.blocks).toArray. - sortWith(_._1.name < _._1.name) + // Block table + val filteredStorageStatusList = StorageUtils.filterStorageStatusByRDD(storageStatusList, rddId) + val blockStatuses = filteredStorageStatusList.flatMap(_.blocks).sortWith(_._1.name < _._1.name) val blockLocations = StorageUtils.blockLocationsFromStorageStatus(filteredStorageStatusList) - val blocks = blockStatuses.map { - case(id, status) => (id, status, blockLocations.get(id).getOrElse(Seq("UNKNOWN"))) + val blocks = blockStatuses.map { case (blockId, status) => + (blockId, status, blockLocations.get(blockId).getOrElse(Seq[String]("Unknown"))) } - val blockTable = listingTable(blockHeaders, blockRow, blocks) + val blockTable = UIUtils.listingTable(blockHeader, blockRow, blocks) val content =
      @@ -94,10 +95,39 @@ private[spark] class RDDPage(parent: BlockManagerUI) {
      ; - headerSparkPage(content, parent.sc, "RDD Storage Info for " + rddInfo.name, Storage) + UIUtils.headerSparkPage(content, basePath, appName, "RDD Storage Info for " + rddInfo.name, + parent.headerTabs, parent) + } + + /** Header fields for the worker table */ + private def workerHeader = Seq( + "Host", + "Memory Usage", + "Disk Usage") + + /** Header fields for the block table */ + private def blockHeader = Seq( + "Block Name", + "Storage Level", + "Size in Memory", + "Size on Disk", + "Executors") + + /** Render an HTML row representing a worker */ + private def workerRow(worker: (Int, StorageStatus)): Seq[Node] = { + val (rddId, status) = worker + + + + + } - def blockRow(row: (BlockId, BlockStatus, Seq[String])): Seq[Node] = { + /** Render an HTML row representing a block */ + private def blockRow(row: (BlockId, BlockStatus, Seq[String])): Seq[Node] = { val (id, block, locations) = row @@ -115,16 +145,4 @@ private[spark] class RDDPage(parent: BlockManagerUI) { } - - def workerRow(worker: (Int, StorageStatus)): Seq[Node] = { - val (rddId, status) = worker - - - - - - } } diff --git a/core/src/main/scala/org/apache/spark/ui/storage/StoragePage.scala b/core/src/main/scala/org/apache/spark/ui/storage/StoragePage.scala new file mode 100644 index 0000000000000..c5cfee777aab5 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/storage/StoragePage.scala @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui.storage + +import javax.servlet.http.HttpServletRequest + +import scala.xml.Node + +import org.apache.spark.storage.RDDInfo +import org.apache.spark.ui.{WebUIPage, UIUtils} +import org.apache.spark.util.Utils + +/** Page showing list of RDD's currently stored in the cluster */ +private[ui] class IndexPage(parent: StorageTab) extends WebUIPage("") { + private val appName = parent.appName + private val basePath = parent.basePath + private val listener = parent.listener + + def render(request: HttpServletRequest): Seq[Node] = { + val rdds = listener.rddInfoList + val content = UIUtils.listingTable(rddHeader, rddRow, rdds) + UIUtils.headerSparkPage(content, basePath, appName, "Storage ", parent.headerTabs, parent) + } + + /** Header fields for the RDD table */ + private def rddHeader = Seq( + "RDD Name", + "Storage Level", + "Cached Partitions", + "Fraction Cached", + "Size in Memory", + "Size in Tachyon", + "Size on Disk") + + /** Render an HTML row representing an RDD */ + private def rddRow(rdd: RDDInfo): Seq[Node] = { + + + + + + + + + + } +} diff --git a/core/src/main/scala/org/apache/spark/ui/storage/StorageTab.scala b/core/src/main/scala/org/apache/spark/ui/storage/StorageTab.scala new file mode 100644 index 0000000000000..0886950c3f8e6 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/ui/storage/StorageTab.scala @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.ui.storage + +import scala.collection.mutable + +import org.apache.spark.ui._ +import org.apache.spark.scheduler._ +import org.apache.spark.storage.{RDDInfo, StorageStatusListener, StorageUtils} + +/** Web UI showing storage status of all RDD's in the given SparkContext. */ +private[ui] class StorageTab(parent: SparkUI) extends WebUITab(parent, "storage") { + val appName = parent.appName + val basePath = parent.basePath + val listener = new StorageListener(parent.storageStatusListener) + + attachPage(new IndexPage(this)) + attachPage(new RddPage(this)) + parent.registerListener(listener) +} + +/** + * A SparkListener that prepares information to be displayed on the BlockManagerUI + */ +private[ui] class StorageListener(storageStatusListener: StorageStatusListener) + extends SparkListener { + + private val _rddInfoMap = mutable.Map[Int, RDDInfo]() + + def storageStatusList = storageStatusListener.storageStatusList + + /** Filter RDD info to include only those with cached partitions */ + def rddInfoList = _rddInfoMap.values.filter(_.numCachedPartitions > 0).toSeq + + /** Update each RDD's info to reflect any updates to the RDD's storage status */ + private def updateRDDInfo() { + val rddInfos = _rddInfoMap.values.toSeq + val updatedRddInfos = StorageUtils.rddInfoFromStorageStatus(storageStatusList, rddInfos) + updatedRddInfos.foreach { info => _rddInfoMap(info.id) = info } + } + + /** + * Assumes the storage status list is fully up-to-date. This implies the corresponding + * StorageStatusSparkListener must process the SparkListenerTaskEnd event before this listener. + */ + override def onTaskEnd(taskEnd: SparkListenerTaskEnd) = synchronized { + val metrics = taskEnd.taskMetrics + if (metrics != null && metrics.updatedBlocks.isDefined) { + updateRDDInfo() + } + } + + override def onStageSubmitted(stageSubmitted: SparkListenerStageSubmitted) = synchronized { + val rddInfo = stageSubmitted.stageInfo.rddInfo + _rddInfoMap.getOrElseUpdate(rddInfo.id, rddInfo) + } + + override def onStageCompleted(stageCompleted: SparkListenerStageCompleted) = synchronized { + // Remove all partitions that are no longer cached + _rddInfoMap.retain { case (_, info) => info.numCachedPartitions > 0 } + } + + override def onUnpersistRDD(unpersistRDD: SparkListenerUnpersistRDD) = synchronized { + updateRDDInfo() + } +} diff --git a/core/src/main/scala/org/apache/spark/util/AkkaUtils.scala b/core/src/main/scala/org/apache/spark/util/AkkaUtils.scala index a6c9a9aaba8eb..d0ff17db632c1 100644 --- a/core/src/main/scala/org/apache/spark/util/AkkaUtils.scala +++ b/core/src/main/scala/org/apache/spark/util/AkkaUtils.scala @@ -49,7 +49,7 @@ private[spark] object AkkaUtils extends Logging { val akkaTimeout = conf.getInt("spark.akka.timeout", 100) - val akkaFrameSize = conf.getInt("spark.akka.frameSize", 10) + val akkaFrameSize = maxFrameSizeBytes(conf) val akkaLogLifecycleEvents = conf.getBoolean("spark.akka.logLifecycleEvents", false) val lifecycleEvents = if (akkaLogLifecycleEvents) "on" else "off" if (!akkaLogLifecycleEvents) { @@ -92,7 +92,7 @@ private[spark] object AkkaUtils extends Logging { |akka.remote.netty.tcp.port = $port |akka.remote.netty.tcp.tcp-nodelay = on |akka.remote.netty.tcp.connection-timeout = $akkaTimeout s - |akka.remote.netty.tcp.maximum-frame-size = ${akkaFrameSize}MiB + |akka.remote.netty.tcp.maximum-frame-size = ${akkaFrameSize}B |akka.remote.netty.tcp.execution-pool-size = $akkaThreads |akka.actor.default-dispatcher.throughput = $akkaBatchSize |akka.log-config-on-start = $logAkkaConfig @@ -121,4 +121,9 @@ private[spark] object AkkaUtils extends Logging { def lookupTimeout(conf: SparkConf): FiniteDuration = { Duration.create(conf.get("spark.akka.lookupTimeout", "30").toLong, "seconds") } + + /** Returns the configured max frame size for Akka messages in bytes. */ + def maxFrameSizeBytes(conf: SparkConf): Int = { + conf.getInt("spark.akka.frameSize", 10) * 1024 * 1024 + } } diff --git a/core/src/main/scala/org/apache/spark/util/BoundedPriorityQueue.scala b/core/src/main/scala/org/apache/spark/util/BoundedPriorityQueue.scala index c3692f2fd929b..b9f4a5d720b93 100644 --- a/core/src/main/scala/org/apache/spark/util/BoundedPriorityQueue.scala +++ b/core/src/main/scala/org/apache/spark/util/BoundedPriorityQueue.scala @@ -28,7 +28,7 @@ import scala.collection.generic.Growable * class and modifies it such that only the top K elements are retained. * The top K elements are defined by an implicit Ordering[A]. */ -class BoundedPriorityQueue[A](maxSize: Int)(implicit ord: Ordering[A]) +private[spark] class BoundedPriorityQueue[A](maxSize: Int)(implicit ord: Ordering[A]) extends Iterable[A] with Growable[A] with Serializable { private val underlying = new JPriorityQueue[A](maxSize, ord) diff --git a/core/src/main/scala/org/apache/spark/util/ClosureCleaner.scala b/core/src/main/scala/org/apache/spark/util/ClosureCleaner.scala index a8d20ee332355..cdbbc65292188 100644 --- a/core/src/main/scala/org/apache/spark/util/ClosureCleaner.scala +++ b/core/src/main/scala/org/apache/spark/util/ClosureCleaner.scala @@ -112,7 +112,7 @@ private[spark] object ClosureCleaner extends Logging { accessedFields(cls) = Set[String]() for (cls <- func.getClass :: innerClasses) getClassReader(cls).accept(new FieldAccessFinder(accessedFields), 0) - //logInfo("accessedFields: " + accessedFields) + // logInfo("accessedFields: " + accessedFields) val inInterpreter = { try { @@ -139,13 +139,13 @@ private[spark] object ClosureCleaner extends Logging { val field = cls.getDeclaredField(fieldName) field.setAccessible(true) val value = field.get(obj) - //logInfo("1: Setting " + fieldName + " on " + cls + " to " + value); + // logInfo("1: Setting " + fieldName + " on " + cls + " to " + value); field.set(outer, value) } } if (outer != null) { - //logInfo("2: Setting $outer on " + func.getClass + " to " + outer); + // logInfo("2: Setting $outer on " + func.getClass + " to " + outer); val field = func.getClass.getDeclaredField("$outer") field.setAccessible(true) field.set(func, outer) @@ -153,7 +153,7 @@ private[spark] object ClosureCleaner extends Logging { } private def instantiateClass(cls: Class[_], outer: AnyRef, inInterpreter: Boolean): AnyRef = { - //logInfo("Creating a " + cls + " with outer = " + outer) + // logInfo("Creating a " + cls + " with outer = " + outer) if (!inInterpreter) { // This is a bona fide closure class, whose constructor has no effects // other than to set its fields, so use its constructor @@ -170,7 +170,7 @@ private[spark] object ClosureCleaner extends Logging { val newCtor = rf.newConstructorForSerialization(cls, parentCtor) val obj = newCtor.newInstance().asInstanceOf[AnyRef] if (outer != null) { - //logInfo("3: Setting $outer on " + cls + " to " + outer); + // logInfo("3: Setting $outer on " + cls + " to " + outer); val field = cls.getDeclaredField("$outer") field.setAccessible(true) field.set(obj, outer) diff --git a/core/src/main/scala/org/apache/spark/util/CollectionsUtil.scala b/core/src/main/scala/org/apache/spark/util/CollectionsUtil.scala index db3db87e6618e..93235031f3ad5 100644 --- a/core/src/main/scala/org/apache/spark/util/CollectionsUtil.scala +++ b/core/src/main/scala/org/apache/spark/util/CollectionsUtil.scala @@ -22,7 +22,7 @@ import java.util import scala.Array import scala.reflect._ -object CollectionsUtils { +private[spark] object CollectionsUtils { def makeBinarySearch[K <% Ordered[K] : ClassTag] : (Array[K], K) => Int = { classTag[K] match { case ClassTag.Float => diff --git a/core/src/main/scala/org/apache/spark/util/Distribution.scala b/core/src/main/scala/org/apache/spark/util/Distribution.scala index ab738c4b868fa..a465298c8c5ab 100644 --- a/core/src/main/scala/org/apache/spark/util/Distribution.scala +++ b/core/src/main/scala/org/apache/spark/util/Distribution.scala @@ -19,6 +19,8 @@ package org.apache.spark.util import java.io.PrintStream +import scala.collection.immutable.IndexedSeq + /** * Util for getting some stats from a small sample of numeric values, with some handy * summary functions. @@ -27,7 +29,7 @@ import java.io.PrintStream * * Assumes you are giving it a non-empty set of data */ -class Distribution(val data: Array[Double], val startIdx: Int, val endIdx: Int) { +private[spark] class Distribution(val data: Array[Double], val startIdx: Int, val endIdx: Int) { require(startIdx < endIdx) def this(data: Traversable[Double]) = this(data.toArray, 0, data.size) java.util.Arrays.sort(data, startIdx, endIdx) @@ -40,7 +42,8 @@ class Distribution(val data: Array[Double], val startIdx: Int, val endIdx: Int) * given from 0 to 1 * @param probabilities */ - def getQuantiles(probabilities: Traversable[Double] = defaultProbabilities) = { + def getQuantiles(probabilities: Traversable[Double] = defaultProbabilities) + : IndexedSeq[Double] = { probabilities.toIndexedSeq.map{p:Double => data(closestIndex(p))} } @@ -48,7 +51,7 @@ class Distribution(val data: Array[Double], val startIdx: Int, val endIdx: Int) math.min((p * length).toInt + startIdx, endIdx - 1) } - def showQuantiles(out: PrintStream = System.out) = { + def showQuantiles(out: PrintStream = System.out): Unit = { out.println("min\t25%\t50%\t75%\tmax") getQuantiles(defaultProbabilities).foreach{q => out.print(q + "\t")} out.println @@ -66,7 +69,7 @@ class Distribution(val data: Array[Double], val startIdx: Int, val endIdx: Int) } } -object Distribution { +private[spark] object Distribution { def apply(data: Traversable[Double]): Option[Distribution] = { if (data.size > 0) { diff --git a/core/src/main/scala/org/apache/spark/util/FileLogger.scala b/core/src/main/scala/org/apache/spark/util/FileLogger.scala new file mode 100644 index 0000000000000..0080a8b342b05 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/util/FileLogger.scala @@ -0,0 +1,171 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.util + +import java.io._ +import java.net.URI +import java.text.SimpleDateFormat +import java.util.Date + +import it.unimi.dsi.fastutil.io.FastBufferedOutputStream +import org.apache.hadoop.fs.{FSDataOutputStream, Path} + +import org.apache.spark.{Logging, SparkConf} +import org.apache.spark.io.CompressionCodec + +/** + * A generic class for logging information to file. + * + * @param logDir Path to the directory in which files are logged + * @param outputBufferSize The buffer size to use when writing to an output stream in bytes + * @param compress Whether to compress output + * @param overwrite Whether to overwrite existing files + */ +private[spark] class FileLogger( + logDir: String, + conf: SparkConf = new SparkConf, + outputBufferSize: Int = 8 * 1024, // 8 KB + compress: Boolean = false, + overwrite: Boolean = true) + extends Logging { + + private val dateFormat = new ThreadLocal[SimpleDateFormat]() { + override def initialValue(): SimpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") + } + + private val fileSystem = Utils.getHadoopFileSystem(new URI(logDir)) + var fileIndex = 0 + + // Only used if compression is enabled + private lazy val compressionCodec = CompressionCodec.createCodec(conf) + + // Only defined if the file system scheme is not local + private var hadoopDataStream: Option[FSDataOutputStream] = None + + private var writer: Option[PrintWriter] = None + + createLogDir() + + /** + * Create a logging directory with the given path. + */ + private def createLogDir() { + val path = new Path(logDir) + if (fileSystem.exists(path)) { + if (overwrite) { + logWarning("Log directory %s already exists. Overwriting...".format(logDir)) + // Second parameter is whether to delete recursively + fileSystem.delete(path, true) + } else { + throw new IOException("Log directory %s already exists!".format(logDir)) + } + } + if (!fileSystem.mkdirs(path)) { + throw new IOException("Error in creating log directory: %s".format(logDir)) + } + } + + /** + * Create a new writer for the file identified by the given path. + */ + private def createWriter(fileName: String): PrintWriter = { + val logPath = logDir + "/" + fileName + val uri = new URI(logPath) + + /* The Hadoop LocalFileSystem (r1.0.4) has known issues with syncing (HADOOP-7844). + * Therefore, for local files, use FileOutputStream instead. */ + val dstream = uri.getScheme match { + case "file" | null => + // Second parameter is whether to append + new FileOutputStream(logPath, !overwrite) + + case _ => + val path = new Path(logPath) + hadoopDataStream = Some(fileSystem.create(path, overwrite)) + hadoopDataStream.get + } + + val bstream = new FastBufferedOutputStream(dstream, outputBufferSize) + val cstream = if (compress) compressionCodec.compressedOutputStream(bstream) else bstream + new PrintWriter(cstream) + } + + /** + * Log the message to the given writer. + * @param msg The message to be logged + * @param withTime Whether to prepend message with a timestamp + */ + def log(msg: String, withTime: Boolean = false) { + val writeInfo = if (!withTime) msg else { + val date = new Date(System.currentTimeMillis()) + dateFormat.get.format(date) + ": " + msg + } + writer.foreach(_.print(writeInfo)) + } + + /** + * Log the message to the given writer as a new line. + * @param msg The message to be logged + * @param withTime Whether to prepend message with a timestamp + */ + def logLine(msg: String, withTime: Boolean = false) = log(msg + "\n", withTime) + + /** + * Flush the writer to disk manually. + * + * If the Hadoop FileSystem is used, the underlying FSDataOutputStream (r1.0.4) must be + * sync()'ed manually as it does not support flush(), which is invoked by when higher + * level streams are flushed. + */ + def flush() { + writer.foreach(_.flush()) + hadoopDataStream.foreach(_.sync()) + } + + /** + * Close the writer. Any subsequent calls to log or flush will have no effect. + */ + def close() { + writer.foreach(_.close()) + writer = None + } + + /** + * Start a writer for a new file, closing the existing one if it exists. + * @param fileName Name of the new file, defaulting to the file index if not provided. + */ + def newFile(fileName: String = "") { + fileIndex += 1 + writer.foreach(_.close()) + val name = fileName match { + case "" => fileIndex.toString + case _ => fileName + } + writer = Some(createWriter(name)) + } + + /** + * Close all open writers, streams, and file systems. Any subsequent uses of this FileLogger + * instance will throw exceptions. + */ + def stop() { + hadoopDataStream.foreach(_.close()) + writer.foreach(_.close()) + fileSystem.close() + } +} diff --git a/core/src/main/scala/org/apache/spark/util/IndestructibleActorSystem.scala b/core/src/main/scala/org/apache/spark/util/IndestructibleActorSystem.scala index c539d2f708f95..4188a869c13da 100644 --- a/core/src/main/scala/org/apache/spark/util/IndestructibleActorSystem.scala +++ b/core/src/main/scala/org/apache/spark/util/IndestructibleActorSystem.scala @@ -49,7 +49,7 @@ private[akka] class IndestructibleActorSystemImpl( if (isFatalError(cause) && !settings.JvmExitOnFatalError) { log.error(cause, "Uncaught fatal error from thread [{}] not shutting down " + "ActorSystem [{}] tolerating and continuing.... ", thread.getName, name) - //shutdown() //TODO make it configurable + // shutdown() //TODO make it configurable } else { fallbackHandler.uncaughtException(thread, cause) } diff --git a/core/src/main/scala/org/apache/spark/util/JsonProtocol.scala b/core/src/main/scala/org/apache/spark/util/JsonProtocol.scala new file mode 100644 index 0000000000000..d990fd49ef834 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/util/JsonProtocol.scala @@ -0,0 +1,676 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.util + +import java.util.{Properties, UUID} + +import scala.collection.JavaConverters._ +import scala.collection.Map + +import org.json4s.DefaultFormats +import org.json4s.JsonDSL._ +import org.json4s.JsonAST._ + +import org.apache.spark.executor.{ShuffleReadMetrics, ShuffleWriteMetrics, TaskMetrics} +import org.apache.spark.scheduler._ +import org.apache.spark.storage._ +import org.apache.spark._ + +private[spark] object JsonProtocol { + private implicit val format = DefaultFormats + + /** ------------------------------------------------- * + * JSON serialization methods for SparkListenerEvents | + * -------------------------------------------------- */ + + def sparkEventToJson(event: SparkListenerEvent): JValue = { + event match { + case stageSubmitted: SparkListenerStageSubmitted => + stageSubmittedToJson(stageSubmitted) + case stageCompleted: SparkListenerStageCompleted => + stageCompletedToJson(stageCompleted) + case taskStart: SparkListenerTaskStart => + taskStartToJson(taskStart) + case taskGettingResult: SparkListenerTaskGettingResult => + taskGettingResultToJson(taskGettingResult) + case taskEnd: SparkListenerTaskEnd => + taskEndToJson(taskEnd) + case jobStart: SparkListenerJobStart => + jobStartToJson(jobStart) + case jobEnd: SparkListenerJobEnd => + jobEndToJson(jobEnd) + case environmentUpdate: SparkListenerEnvironmentUpdate => + environmentUpdateToJson(environmentUpdate) + case blockManagerAdded: SparkListenerBlockManagerAdded => + blockManagerAddedToJson(blockManagerAdded) + case blockManagerRemoved: SparkListenerBlockManagerRemoved => + blockManagerRemovedToJson(blockManagerRemoved) + case unpersistRDD: SparkListenerUnpersistRDD => + unpersistRDDToJson(unpersistRDD) + case applicationStart: SparkListenerApplicationStart => + applicationStartToJson(applicationStart) + case applicationEnd: SparkListenerApplicationEnd => + applicationEndToJson(applicationEnd) + + // Not used, but keeps compiler happy + case SparkListenerShutdown => JNothing + } + } + + def stageSubmittedToJson(stageSubmitted: SparkListenerStageSubmitted): JValue = { + val stageInfo = stageInfoToJson(stageSubmitted.stageInfo) + val properties = propertiesToJson(stageSubmitted.properties) + ("Event" -> Utils.getFormattedClassName(stageSubmitted)) ~ + ("Stage Info" -> stageInfo) ~ + ("Properties" -> properties) + } + + def stageCompletedToJson(stageCompleted: SparkListenerStageCompleted): JValue = { + val stageInfo = stageInfoToJson(stageCompleted.stageInfo) + ("Event" -> Utils.getFormattedClassName(stageCompleted)) ~ + ("Stage Info" -> stageInfo) + } + + def taskStartToJson(taskStart: SparkListenerTaskStart): JValue = { + val taskInfo = taskStart.taskInfo + val taskInfoJson = if (taskInfo != null) taskInfoToJson(taskInfo) else JNothing + ("Event" -> Utils.getFormattedClassName(taskStart)) ~ + ("Stage ID" -> taskStart.stageId) ~ + ("Task Info" -> taskInfoJson) + } + + def taskGettingResultToJson(taskGettingResult: SparkListenerTaskGettingResult): JValue = { + val taskInfo = taskGettingResult.taskInfo + val taskInfoJson = if (taskInfo != null) taskInfoToJson(taskInfo) else JNothing + ("Event" -> Utils.getFormattedClassName(taskGettingResult)) ~ + ("Task Info" -> taskInfoJson) + } + + def taskEndToJson(taskEnd: SparkListenerTaskEnd): JValue = { + val taskEndReason = taskEndReasonToJson(taskEnd.reason) + val taskInfo = taskEnd.taskInfo + val taskInfoJson = if (taskInfo != null) taskInfoToJson(taskInfo) else JNothing + val taskMetrics = taskEnd.taskMetrics + val taskMetricsJson = if (taskMetrics != null) taskMetricsToJson(taskMetrics) else JNothing + ("Event" -> Utils.getFormattedClassName(taskEnd)) ~ + ("Stage ID" -> taskEnd.stageId) ~ + ("Task Type" -> taskEnd.taskType) ~ + ("Task End Reason" -> taskEndReason) ~ + ("Task Info" -> taskInfoJson) ~ + ("Task Metrics" -> taskMetricsJson) + } + + def jobStartToJson(jobStart: SparkListenerJobStart): JValue = { + val properties = propertiesToJson(jobStart.properties) + ("Event" -> Utils.getFormattedClassName(jobStart)) ~ + ("Job ID" -> jobStart.jobId) ~ + ("Stage IDs" -> jobStart.stageIds) ~ + ("Properties" -> properties) + } + + def jobEndToJson(jobEnd: SparkListenerJobEnd): JValue = { + val jobResult = jobResultToJson(jobEnd.jobResult) + ("Event" -> Utils.getFormattedClassName(jobEnd)) ~ + ("Job ID" -> jobEnd.jobId) ~ + ("Job Result" -> jobResult) + } + + def environmentUpdateToJson(environmentUpdate: SparkListenerEnvironmentUpdate): JValue = { + val environmentDetails = environmentUpdate.environmentDetails + val jvmInformation = mapToJson(environmentDetails("JVM Information").toMap) + val sparkProperties = mapToJson(environmentDetails("Spark Properties").toMap) + val systemProperties = mapToJson(environmentDetails("System Properties").toMap) + val classpathEntries = mapToJson(environmentDetails("Classpath Entries").toMap) + ("Event" -> Utils.getFormattedClassName(environmentUpdate)) ~ + ("JVM Information" -> jvmInformation) ~ + ("Spark Properties" -> sparkProperties) ~ + ("System Properties" -> systemProperties) ~ + ("Classpath Entries" -> classpathEntries) + } + + def blockManagerAddedToJson(blockManagerAdded: SparkListenerBlockManagerAdded): JValue = { + val blockManagerId = blockManagerIdToJson(blockManagerAdded.blockManagerId) + ("Event" -> Utils.getFormattedClassName(blockManagerAdded)) ~ + ("Block Manager ID" -> blockManagerId) ~ + ("Maximum Memory" -> blockManagerAdded.maxMem) + } + + def blockManagerRemovedToJson(blockManagerRemoved: SparkListenerBlockManagerRemoved): JValue = { + val blockManagerId = blockManagerIdToJson(blockManagerRemoved.blockManagerId) + ("Event" -> Utils.getFormattedClassName(blockManagerRemoved)) ~ + ("Block Manager ID" -> blockManagerId) + } + + def unpersistRDDToJson(unpersistRDD: SparkListenerUnpersistRDD): JValue = { + ("Event" -> Utils.getFormattedClassName(unpersistRDD)) ~ + ("RDD ID" -> unpersistRDD.rddId) + } + + def applicationStartToJson(applicationStart: SparkListenerApplicationStart): JValue = { + ("Event" -> Utils.getFormattedClassName(applicationStart)) ~ + ("App Name" -> applicationStart.appName) ~ + ("Timestamp" -> applicationStart.time) ~ + ("User" -> applicationStart.sparkUser) + } + + def applicationEndToJson(applicationEnd: SparkListenerApplicationEnd): JValue = { + ("Event" -> Utils.getFormattedClassName(applicationEnd)) ~ + ("Timestamp" -> applicationEnd.time) + } + + + /** ------------------------------------------------------------------- * + * JSON serialization methods for classes SparkListenerEvents depend on | + * -------------------------------------------------------------------- */ + + def stageInfoToJson(stageInfo: StageInfo): JValue = { + val rddInfo = rddInfoToJson(stageInfo.rddInfo) + val submissionTime = stageInfo.submissionTime.map(JInt(_)).getOrElse(JNothing) + val completionTime = stageInfo.completionTime.map(JInt(_)).getOrElse(JNothing) + val failureReason = stageInfo.failureReason.map(JString(_)).getOrElse(JNothing) + ("Stage ID" -> stageInfo.stageId) ~ + ("Stage Name" -> stageInfo.name) ~ + ("Number of Tasks" -> stageInfo.numTasks) ~ + ("RDD Info" -> rddInfo) ~ + ("Submission Time" -> submissionTime) ~ + ("Completion Time" -> completionTime) ~ + ("Failure Reason" -> failureReason) ~ + ("Emitted Task Size Warning" -> stageInfo.emittedTaskSizeWarning) + } + + def taskInfoToJson(taskInfo: TaskInfo): JValue = { + ("Task ID" -> taskInfo.taskId) ~ + ("Index" -> taskInfo.index) ~ + ("Launch Time" -> taskInfo.launchTime) ~ + ("Executor ID" -> taskInfo.executorId) ~ + ("Host" -> taskInfo.host) ~ + ("Locality" -> taskInfo.taskLocality.toString) ~ + ("Getting Result Time" -> taskInfo.gettingResultTime) ~ + ("Finish Time" -> taskInfo.finishTime) ~ + ("Failed" -> taskInfo.failed) ~ + ("Serialized Size" -> taskInfo.serializedSize) + } + + def taskMetricsToJson(taskMetrics: TaskMetrics): JValue = { + val shuffleReadMetrics = + taskMetrics.shuffleReadMetrics.map(shuffleReadMetricsToJson).getOrElse(JNothing) + val shuffleWriteMetrics = + taskMetrics.shuffleWriteMetrics.map(shuffleWriteMetricsToJson).getOrElse(JNothing) + val updatedBlocks = taskMetrics.updatedBlocks.map { blocks => + JArray(blocks.toList.map { case (id, status) => + ("Block ID" -> id.toString) ~ + ("Status" -> blockStatusToJson(status)) + }) + }.getOrElse(JNothing) + ("Host Name" -> taskMetrics.hostname) ~ + ("Executor Deserialize Time" -> taskMetrics.executorDeserializeTime) ~ + ("Executor Run Time" -> taskMetrics.executorRunTime) ~ + ("Result Size" -> taskMetrics.resultSize) ~ + ("JVM GC Time" -> taskMetrics.jvmGCTime) ~ + ("Result Serialization Time" -> taskMetrics.resultSerializationTime) ~ + ("Memory Bytes Spilled" -> taskMetrics.memoryBytesSpilled) ~ + ("Disk Bytes Spilled" -> taskMetrics.diskBytesSpilled) ~ + ("Shuffle Read Metrics" -> shuffleReadMetrics) ~ + ("Shuffle Write Metrics" -> shuffleWriteMetrics) ~ + ("Updated Blocks" -> updatedBlocks) + } + + def shuffleReadMetricsToJson(shuffleReadMetrics: ShuffleReadMetrics): JValue = { + ("Shuffle Finish Time" -> shuffleReadMetrics.shuffleFinishTime) ~ + ("Total Blocks Fetched" -> shuffleReadMetrics.totalBlocksFetched) ~ + ("Remote Blocks Fetched" -> shuffleReadMetrics.remoteBlocksFetched) ~ + ("Local Blocks Fetched" -> shuffleReadMetrics.localBlocksFetched) ~ + ("Fetch Wait Time" -> shuffleReadMetrics.fetchWaitTime) ~ + ("Remote Bytes Read" -> shuffleReadMetrics.remoteBytesRead) + } + + def shuffleWriteMetricsToJson(shuffleWriteMetrics: ShuffleWriteMetrics): JValue = { + ("Shuffle Bytes Written" -> shuffleWriteMetrics.shuffleBytesWritten) ~ + ("Shuffle Write Time" -> shuffleWriteMetrics.shuffleWriteTime) + } + + def taskEndReasonToJson(taskEndReason: TaskEndReason): JValue = { + val reason = Utils.getFormattedClassName(taskEndReason) + val json = taskEndReason match { + case fetchFailed: FetchFailed => + val blockManagerAddress = blockManagerIdToJson(fetchFailed.bmAddress) + ("Block Manager Address" -> blockManagerAddress) ~ + ("Shuffle ID" -> fetchFailed.shuffleId) ~ + ("Map ID" -> fetchFailed.mapId) ~ + ("Reduce ID" -> fetchFailed.reduceId) + case exceptionFailure: ExceptionFailure => + val stackTrace = stackTraceToJson(exceptionFailure.stackTrace) + val metrics = exceptionFailure.metrics.map(taskMetricsToJson).getOrElse(JNothing) + ("Class Name" -> exceptionFailure.className) ~ + ("Description" -> exceptionFailure.description) ~ + ("Stack Trace" -> stackTrace) ~ + ("Metrics" -> metrics) + case _ => Utils.emptyJson + } + ("Reason" -> reason) ~ json + } + + def blockManagerIdToJson(blockManagerId: BlockManagerId): JValue = { + ("Executor ID" -> blockManagerId.executorId) ~ + ("Host" -> blockManagerId.host) ~ + ("Port" -> blockManagerId.port) ~ + ("Netty Port" -> blockManagerId.nettyPort) + } + + def jobResultToJson(jobResult: JobResult): JValue = { + val result = Utils.getFormattedClassName(jobResult) + val json = jobResult match { + case JobSucceeded => Utils.emptyJson + case jobFailed: JobFailed => + JObject("Exception" -> exceptionToJson(jobFailed.exception)) + } + ("Result" -> result) ~ json + } + + def rddInfoToJson(rddInfo: RDDInfo): JValue = { + val storageLevel = storageLevelToJson(rddInfo.storageLevel) + ("RDD ID" -> rddInfo.id) ~ + ("Name" -> rddInfo.name) ~ + ("Storage Level" -> storageLevel) ~ + ("Number of Partitions" -> rddInfo.numPartitions) ~ + ("Number of Cached Partitions" -> rddInfo.numCachedPartitions) ~ + ("Memory Size" -> rddInfo.memSize) ~ + ("Tachyon Size" -> rddInfo.tachyonSize) ~ + ("Disk Size" -> rddInfo.diskSize) + } + + def storageLevelToJson(storageLevel: StorageLevel): JValue = { + ("Use Disk" -> storageLevel.useDisk) ~ + ("Use Memory" -> storageLevel.useMemory) ~ + ("Use Tachyon" -> storageLevel.useOffHeap) ~ + ("Deserialized" -> storageLevel.deserialized) ~ + ("Replication" -> storageLevel.replication) + } + + def blockStatusToJson(blockStatus: BlockStatus): JValue = { + val storageLevel = storageLevelToJson(blockStatus.storageLevel) + ("Storage Level" -> storageLevel) ~ + ("Memory Size" -> blockStatus.memSize) ~ + ("Tachyon Size" -> blockStatus.tachyonSize) ~ + ("Disk Size" -> blockStatus.diskSize) + } + + + /** ------------------------------ * + * Util JSON serialization methods | + * ------------------------------- */ + + def mapToJson(m: Map[String, String]): JValue = { + val jsonFields = m.map { case (k, v) => JField(k, JString(v)) } + JObject(jsonFields.toList) + } + + def propertiesToJson(properties: Properties): JValue = { + Option(properties).map { p => + mapToJson(p.asScala) + }.getOrElse(JNothing) + } + + def UUIDToJson(id: UUID): JValue = { + ("Least Significant Bits" -> id.getLeastSignificantBits) ~ + ("Most Significant Bits" -> id.getMostSignificantBits) + } + + def stackTraceToJson(stackTrace: Array[StackTraceElement]): JValue = { + JArray(stackTrace.map { case line => + ("Declaring Class" -> line.getClassName) ~ + ("Method Name" -> line.getMethodName) ~ + ("File Name" -> line.getFileName) ~ + ("Line Number" -> line.getLineNumber) + }.toList) + } + + def exceptionToJson(exception: Exception): JValue = { + ("Message" -> exception.getMessage) ~ + ("Stack Trace" -> stackTraceToJson(exception.getStackTrace)) + } + + + /** --------------------------------------------------- * + * JSON deserialization methods for SparkListenerEvents | + * ---------------------------------------------------- */ + + def sparkEventFromJson(json: JValue): SparkListenerEvent = { + val stageSubmitted = Utils.getFormattedClassName(SparkListenerStageSubmitted) + val stageCompleted = Utils.getFormattedClassName(SparkListenerStageCompleted) + val taskStart = Utils.getFormattedClassName(SparkListenerTaskStart) + val taskGettingResult = Utils.getFormattedClassName(SparkListenerTaskGettingResult) + val taskEnd = Utils.getFormattedClassName(SparkListenerTaskEnd) + val jobStart = Utils.getFormattedClassName(SparkListenerJobStart) + val jobEnd = Utils.getFormattedClassName(SparkListenerJobEnd) + val environmentUpdate = Utils.getFormattedClassName(SparkListenerEnvironmentUpdate) + val blockManagerAdded = Utils.getFormattedClassName(SparkListenerBlockManagerAdded) + val blockManagerRemoved = Utils.getFormattedClassName(SparkListenerBlockManagerRemoved) + val unpersistRDD = Utils.getFormattedClassName(SparkListenerUnpersistRDD) + val applicationStart = Utils.getFormattedClassName(SparkListenerApplicationStart) + val applicationEnd = Utils.getFormattedClassName(SparkListenerApplicationEnd) + + (json \ "Event").extract[String] match { + case `stageSubmitted` => stageSubmittedFromJson(json) + case `stageCompleted` => stageCompletedFromJson(json) + case `taskStart` => taskStartFromJson(json) + case `taskGettingResult` => taskGettingResultFromJson(json) + case `taskEnd` => taskEndFromJson(json) + case `jobStart` => jobStartFromJson(json) + case `jobEnd` => jobEndFromJson(json) + case `environmentUpdate` => environmentUpdateFromJson(json) + case `blockManagerAdded` => blockManagerAddedFromJson(json) + case `blockManagerRemoved` => blockManagerRemovedFromJson(json) + case `unpersistRDD` => unpersistRDDFromJson(json) + case `applicationStart` => applicationStartFromJson(json) + case `applicationEnd` => applicationEndFromJson(json) + } + } + + def stageSubmittedFromJson(json: JValue): SparkListenerStageSubmitted = { + val stageInfo = stageInfoFromJson(json \ "Stage Info") + val properties = propertiesFromJson(json \ "Properties") + SparkListenerStageSubmitted(stageInfo, properties) + } + + def stageCompletedFromJson(json: JValue): SparkListenerStageCompleted = { + val stageInfo = stageInfoFromJson(json \ "Stage Info") + SparkListenerStageCompleted(stageInfo) + } + + def taskStartFromJson(json: JValue): SparkListenerTaskStart = { + val stageId = (json \ "Stage ID").extract[Int] + val taskInfo = taskInfoFromJson(json \ "Task Info") + SparkListenerTaskStart(stageId, taskInfo) + } + + def taskGettingResultFromJson(json: JValue): SparkListenerTaskGettingResult = { + val taskInfo = taskInfoFromJson(json \ "Task Info") + SparkListenerTaskGettingResult(taskInfo) + } + + def taskEndFromJson(json: JValue): SparkListenerTaskEnd = { + val stageId = (json \ "Stage ID").extract[Int] + val taskType = (json \ "Task Type").extract[String] + val taskEndReason = taskEndReasonFromJson(json \ "Task End Reason") + val taskInfo = taskInfoFromJson(json \ "Task Info") + val taskMetrics = taskMetricsFromJson(json \ "Task Metrics") + SparkListenerTaskEnd(stageId, taskType, taskEndReason, taskInfo, taskMetrics) + } + + def jobStartFromJson(json: JValue): SparkListenerJobStart = { + val jobId = (json \ "Job ID").extract[Int] + val stageIds = (json \ "Stage IDs").extract[List[JValue]].map(_.extract[Int]) + val properties = propertiesFromJson(json \ "Properties") + SparkListenerJobStart(jobId, stageIds, properties) + } + + def jobEndFromJson(json: JValue): SparkListenerJobEnd = { + val jobId = (json \ "Job ID").extract[Int] + val jobResult = jobResultFromJson(json \ "Job Result") + SparkListenerJobEnd(jobId, jobResult) + } + + def environmentUpdateFromJson(json: JValue): SparkListenerEnvironmentUpdate = { + val environmentDetails = Map[String, Seq[(String, String)]]( + "JVM Information" -> mapFromJson(json \ "JVM Information").toSeq, + "Spark Properties" -> mapFromJson(json \ "Spark Properties").toSeq, + "System Properties" -> mapFromJson(json \ "System Properties").toSeq, + "Classpath Entries" -> mapFromJson(json \ "Classpath Entries").toSeq) + SparkListenerEnvironmentUpdate(environmentDetails) + } + + def blockManagerAddedFromJson(json: JValue): SparkListenerBlockManagerAdded = { + val blockManagerId = blockManagerIdFromJson(json \ "Block Manager ID") + val maxMem = (json \ "Maximum Memory").extract[Long] + SparkListenerBlockManagerAdded(blockManagerId, maxMem) + } + + def blockManagerRemovedFromJson(json: JValue): SparkListenerBlockManagerRemoved = { + val blockManagerId = blockManagerIdFromJson(json \ "Block Manager ID") + SparkListenerBlockManagerRemoved(blockManagerId) + } + + def unpersistRDDFromJson(json: JValue): SparkListenerUnpersistRDD = { + SparkListenerUnpersistRDD((json \ "RDD ID").extract[Int]) + } + + def applicationStartFromJson(json: JValue): SparkListenerApplicationStart = { + val appName = (json \ "App Name").extract[String] + val time = (json \ "Timestamp").extract[Long] + val sparkUser = (json \ "User").extract[String] + SparkListenerApplicationStart(appName, time, sparkUser) + } + + def applicationEndFromJson(json: JValue): SparkListenerApplicationEnd = { + SparkListenerApplicationEnd((json \ "Timestamp").extract[Long]) + } + + + /** --------------------------------------------------------------------- * + * JSON deserialization methods for classes SparkListenerEvents depend on | + * ---------------------------------------------------------------------- */ + + def stageInfoFromJson(json: JValue): StageInfo = { + val stageId = (json \ "Stage ID").extract[Int] + val stageName = (json \ "Stage Name").extract[String] + val numTasks = (json \ "Number of Tasks").extract[Int] + val rddInfo = rddInfoFromJson(json \ "RDD Info") + val submissionTime = Utils.jsonOption(json \ "Submission Time").map(_.extract[Long]) + val completionTime = Utils.jsonOption(json \ "Completion Time").map(_.extract[Long]) + val failureReason = Utils.jsonOption(json \ "Failure Reason").map(_.extract[String]) + val emittedTaskSizeWarning = (json \ "Emitted Task Size Warning").extract[Boolean] + + val stageInfo = new StageInfo(stageId, stageName, numTasks, rddInfo) + stageInfo.submissionTime = submissionTime + stageInfo.completionTime = completionTime + stageInfo.failureReason = failureReason + stageInfo.emittedTaskSizeWarning = emittedTaskSizeWarning + stageInfo + } + + def taskInfoFromJson(json: JValue): TaskInfo = { + val taskId = (json \ "Task ID").extract[Long] + val index = (json \ "Index").extract[Int] + val launchTime = (json \ "Launch Time").extract[Long] + val executorId = (json \ "Executor ID").extract[String] + val host = (json \ "Host").extract[String] + val taskLocality = TaskLocality.withName((json \ "Locality").extract[String]) + val gettingResultTime = (json \ "Getting Result Time").extract[Long] + val finishTime = (json \ "Finish Time").extract[Long] + val failed = (json \ "Failed").extract[Boolean] + val serializedSize = (json \ "Serialized Size").extract[Int] + + val taskInfo = new TaskInfo(taskId, index, launchTime, executorId, host, taskLocality) + taskInfo.gettingResultTime = gettingResultTime + taskInfo.finishTime = finishTime + taskInfo.failed = failed + taskInfo.serializedSize = serializedSize + taskInfo + } + + def taskMetricsFromJson(json: JValue): TaskMetrics = { + val metrics = new TaskMetrics + metrics.hostname = (json \ "Host Name").extract[String] + metrics.executorDeserializeTime = (json \ "Executor Deserialize Time").extract[Long] + metrics.executorRunTime = (json \ "Executor Run Time").extract[Long] + metrics.resultSize = (json \ "Result Size").extract[Long] + metrics.jvmGCTime = (json \ "JVM GC Time").extract[Long] + metrics.resultSerializationTime = (json \ "Result Serialization Time").extract[Long] + metrics.memoryBytesSpilled = (json \ "Memory Bytes Spilled").extract[Long] + metrics.diskBytesSpilled = (json \ "Disk Bytes Spilled").extract[Long] + metrics.shuffleReadMetrics = + Utils.jsonOption(json \ "Shuffle Read Metrics").map(shuffleReadMetricsFromJson) + metrics.shuffleWriteMetrics = + Utils.jsonOption(json \ "Shuffle Write Metrics").map(shuffleWriteMetricsFromJson) + metrics.updatedBlocks = Utils.jsonOption(json \ "Updated Blocks").map { value => + value.extract[List[JValue]].map { block => + val id = BlockId((block \ "Block ID").extract[String]) + val status = blockStatusFromJson(block \ "Status") + (id, status) + } + } + metrics + } + + def shuffleReadMetricsFromJson(json: JValue): ShuffleReadMetrics = { + val metrics = new ShuffleReadMetrics + metrics.shuffleFinishTime = (json \ "Shuffle Finish Time").extract[Long] + metrics.totalBlocksFetched = (json \ "Total Blocks Fetched").extract[Int] + metrics.remoteBlocksFetched = (json \ "Remote Blocks Fetched").extract[Int] + metrics.localBlocksFetched = (json \ "Local Blocks Fetched").extract[Int] + metrics.fetchWaitTime = (json \ "Fetch Wait Time").extract[Long] + metrics.remoteBytesRead = (json \ "Remote Bytes Read").extract[Long] + metrics + } + + def shuffleWriteMetricsFromJson(json: JValue): ShuffleWriteMetrics = { + val metrics = new ShuffleWriteMetrics + metrics.shuffleBytesWritten = (json \ "Shuffle Bytes Written").extract[Long] + metrics.shuffleWriteTime = (json \ "Shuffle Write Time").extract[Long] + metrics + } + + def taskEndReasonFromJson(json: JValue): TaskEndReason = { + val success = Utils.getFormattedClassName(Success) + val resubmitted = Utils.getFormattedClassName(Resubmitted) + val fetchFailed = Utils.getFormattedClassName(FetchFailed) + val exceptionFailure = Utils.getFormattedClassName(ExceptionFailure) + val taskResultLost = Utils.getFormattedClassName(TaskResultLost) + val taskKilled = Utils.getFormattedClassName(TaskKilled) + val executorLostFailure = Utils.getFormattedClassName(ExecutorLostFailure) + val unknownReason = Utils.getFormattedClassName(UnknownReason) + + (json \ "Reason").extract[String] match { + case `success` => Success + case `resubmitted` => Resubmitted + case `fetchFailed` => + val blockManagerAddress = blockManagerIdFromJson(json \ "Block Manager Address") + val shuffleId = (json \ "Shuffle ID").extract[Int] + val mapId = (json \ "Map ID").extract[Int] + val reduceId = (json \ "Reduce ID").extract[Int] + new FetchFailed(blockManagerAddress, shuffleId, mapId, reduceId) + case `exceptionFailure` => + val className = (json \ "Class Name").extract[String] + val description = (json \ "Description").extract[String] + val stackTrace = stackTraceFromJson(json \ "Stack Trace") + val metrics = Utils.jsonOption(json \ "Metrics").map(taskMetricsFromJson) + new ExceptionFailure(className, description, stackTrace, metrics) + case `taskResultLost` => TaskResultLost + case `taskKilled` => TaskKilled + case `executorLostFailure` => ExecutorLostFailure + case `unknownReason` => UnknownReason + } + } + + def blockManagerIdFromJson(json: JValue): BlockManagerId = { + val executorId = (json \ "Executor ID").extract[String] + val host = (json \ "Host").extract[String] + val port = (json \ "Port").extract[Int] + val nettyPort = (json \ "Netty Port").extract[Int] + BlockManagerId(executorId, host, port, nettyPort) + } + + def jobResultFromJson(json: JValue): JobResult = { + val jobSucceeded = Utils.getFormattedClassName(JobSucceeded) + val jobFailed = Utils.getFormattedClassName(JobFailed) + + (json \ "Result").extract[String] match { + case `jobSucceeded` => JobSucceeded + case `jobFailed` => + val exception = exceptionFromJson(json \ "Exception") + new JobFailed(exception) + } + } + + def rddInfoFromJson(json: JValue): RDDInfo = { + val rddId = (json \ "RDD ID").extract[Int] + val name = (json \ "Name").extract[String] + val storageLevel = storageLevelFromJson(json \ "Storage Level") + val numPartitions = (json \ "Number of Partitions").extract[Int] + val numCachedPartitions = (json \ "Number of Cached Partitions").extract[Int] + val memSize = (json \ "Memory Size").extract[Long] + val tachyonSize = (json \ "Tachyon Size").extract[Long] + val diskSize = (json \ "Disk Size").extract[Long] + + val rddInfo = new RDDInfo(rddId, name, numPartitions, storageLevel) + rddInfo.numCachedPartitions = numCachedPartitions + rddInfo.memSize = memSize + rddInfo.tachyonSize = tachyonSize + rddInfo.diskSize = diskSize + rddInfo + } + + def storageLevelFromJson(json: JValue): StorageLevel = { + val useDisk = (json \ "Use Disk").extract[Boolean] + val useMemory = (json \ "Use Memory").extract[Boolean] + val useTachyon = (json \ "Use Tachyon").extract[Boolean] + val deserialized = (json \ "Deserialized").extract[Boolean] + val replication = (json \ "Replication").extract[Int] + StorageLevel(useDisk, useMemory, useTachyon, deserialized, replication) + } + + def blockStatusFromJson(json: JValue): BlockStatus = { + val storageLevel = storageLevelFromJson(json \ "Storage Level") + val memorySize = (json \ "Memory Size").extract[Long] + val diskSize = (json \ "Disk Size").extract[Long] + val tachyonSize = (json \ "Tachyon Size").extract[Long] + BlockStatus(storageLevel, memorySize, diskSize, tachyonSize) + } + + + /** -------------------------------- * + * Util JSON deserialization methods | + * --------------------------------- */ + + def mapFromJson(json: JValue): Map[String, String] = { + val jsonFields = json.asInstanceOf[JObject].obj + jsonFields.map { case JField(k, JString(v)) => (k, v) }.toMap + } + + def propertiesFromJson(json: JValue): Properties = { + val properties = new Properties() + if (json != JNothing) { + mapFromJson(json).map { case (k, v) => properties.setProperty(k, v) } + } + properties + } + + def UUIDFromJson(json: JValue): UUID = { + val leastSignificantBits = (json \ "Least Significant Bits").extract[Long] + val mostSignificantBits = (json \ "Most Significant Bits").extract[Long] + new UUID(leastSignificantBits, mostSignificantBits) + } + + def stackTraceFromJson(json: JValue): Array[StackTraceElement] = { + json.extract[List[JValue]].map { line => + val declaringClass = (line \ "Declaring Class").extract[String] + val methodName = (line \ "Method Name").extract[String] + val fileName = (line \ "File Name").extract[String] + val lineNumber = (line \ "Line Number").extract[Int] + new StackTraceElement(declaringClass, methodName, fileName, lineNumber) + }.toArray + } + + def exceptionFromJson(json: JValue): Exception = { + val e = new Exception((json \ "Message").extract[String]) + e.setStackTrace(stackTraceFromJson(json \ "Stack Trace")) + e + } + +} diff --git a/core/src/main/scala/org/apache/spark/util/MetadataCleaner.scala b/core/src/main/scala/org/apache/spark/util/MetadataCleaner.scala index 0448919e09161..7ebed5105b9fd 100644 --- a/core/src/main/scala/org/apache/spark/util/MetadataCleaner.scala +++ b/core/src/main/scala/org/apache/spark/util/MetadataCleaner.scala @@ -62,8 +62,8 @@ private[spark] class MetadataCleaner( private[spark] object MetadataCleanerType extends Enumeration { - val MAP_OUTPUT_TRACKER, SPARK_CONTEXT, HTTP_BROADCAST, DAG_SCHEDULER, RESULT_TASK, - SHUFFLE_MAP_TASK, BLOCK_MANAGER, SHUFFLE_BLOCK_MANAGER, BROADCAST_VARS = Value + val MAP_OUTPUT_TRACKER, SPARK_CONTEXT, HTTP_BROADCAST, BLOCK_MANAGER, + SHUFFLE_BLOCK_MANAGER, BROADCAST_VARS = Value type MetadataCleanerType = Value @@ -78,15 +78,16 @@ private[spark] object MetadataCleaner { conf.getInt("spark.cleaner.ttl", -1) } - def getDelaySeconds(conf: SparkConf, cleanerType: MetadataCleanerType.MetadataCleanerType): Int = - { - conf.get(MetadataCleanerType.systemProperty(cleanerType), getDelaySeconds(conf).toString) - .toInt + def getDelaySeconds( + conf: SparkConf, + cleanerType: MetadataCleanerType.MetadataCleanerType): Int = { + conf.get(MetadataCleanerType.systemProperty(cleanerType), getDelaySeconds(conf).toString).toInt } - def setDelaySeconds(conf: SparkConf, cleanerType: MetadataCleanerType.MetadataCleanerType, - delay: Int) - { + def setDelaySeconds( + conf: SparkConf, + cleanerType: MetadataCleanerType.MetadataCleanerType, + delay: Int) { conf.set(MetadataCleanerType.systemProperty(cleanerType), delay.toString) } diff --git a/core/src/main/scala/org/apache/spark/util/MutablePair.scala b/core/src/main/scala/org/apache/spark/util/MutablePair.scala index b053266f12748..74fa77b68de0b 100644 --- a/core/src/main/scala/org/apache/spark/util/MutablePair.scala +++ b/core/src/main/scala/org/apache/spark/util/MutablePair.scala @@ -17,18 +17,32 @@ package org.apache.spark.util +import org.apache.spark.annotation.DeveloperApi + /** + * :: DeveloperApi :: * A tuple of 2 elements. This can be used as an alternative to Scala's Tuple2 when we want to * minimize object allocation. * * @param _1 Element 1 of this MutablePair * @param _2 Element 2 of this MutablePair */ -case class MutablePair[@specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) T1, - @specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) T2] +@DeveloperApi +case class MutablePair[@specialized(Int, Long, Double, Char, Boolean/* , AnyRef */) T1, + @specialized(Int, Long, Double, Char, Boolean/* , AnyRef */) T2] (var _1: T1, var _2: T2) extends Product2[T1, T2] { + /** No-arg constructor for serialization */ + def this() = this(null.asInstanceOf[T1], null.asInstanceOf[T2]) + + /** Updates this pair with new values and returns itself */ + def update(n1: T1, n2: T2): MutablePair[T1, T2] = { + _1 = n1 + _2 = n2 + this + } + override def toString = "(" + _1 + "," + _2 + ")" override def canEqual(that: Any): Boolean = that.isInstanceOf[MutablePair[_,_]] diff --git a/core/src/main/scala/org/apache/spark/util/ParentClassLoader.scala b/core/src/main/scala/org/apache/spark/util/ParentClassLoader.scala new file mode 100644 index 0000000000000..3abc12681fe9a --- /dev/null +++ b/core/src/main/scala/org/apache/spark/util/ParentClassLoader.scala @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.util + +/** + * A class loader which makes findClass accesible to the child + */ +private[spark] class ParentClassLoader(parent: ClassLoader) extends ClassLoader(parent) { + + override def findClass(name: String) = { + super.findClass(name) + } + + override def loadClass(name: String): Class[_] = { + super.loadClass(name) + } +} diff --git a/core/src/main/scala/org/apache/spark/util/StatCounter.scala b/core/src/main/scala/org/apache/spark/util/StatCounter.scala index f837dc7ccc860..732748a7ff82b 100644 --- a/core/src/main/scala/org/apache/spark/util/StatCounter.scala +++ b/core/src/main/scala/org/apache/spark/util/StatCounter.scala @@ -29,6 +29,8 @@ class StatCounter(values: TraversableOnce[Double]) extends Serializable { private var n: Long = 0 // Running count of our values private var mu: Double = 0 // Running mean of our values private var m2: Double = 0 // Running variance numerator (sum of (x - mean)^2) + private var maxValue: Double = Double.NegativeInfinity // Running max of our values + private var minValue: Double = Double.PositiveInfinity // Running min of our values merge(values) @@ -41,6 +43,8 @@ class StatCounter(values: TraversableOnce[Double]) extends Serializable { n += 1 mu += delta / n m2 += delta * (value - mu) + maxValue = math.max(maxValue, value) + minValue = math.min(minValue, value) this } @@ -58,7 +62,9 @@ class StatCounter(values: TraversableOnce[Double]) extends Serializable { if (n == 0) { mu = other.mu m2 = other.m2 - n = other.n + n = other.n + maxValue = other.maxValue + minValue = other.minValue } else if (other.n != 0) { val delta = other.mu - mu if (other.n * 10 < n) { @@ -70,6 +76,8 @@ class StatCounter(values: TraversableOnce[Double]) extends Serializable { } m2 += other.m2 + (delta * delta * n * other.n) / (n + other.n) n += other.n + maxValue = math.max(maxValue, other.maxValue) + minValue = math.min(minValue, other.minValue) } this } @@ -81,6 +89,8 @@ class StatCounter(values: TraversableOnce[Double]) extends Serializable { other.n = n other.mu = mu other.m2 = m2 + other.maxValue = maxValue + other.minValue = minValue other } @@ -90,6 +100,10 @@ class StatCounter(values: TraversableOnce[Double]) extends Serializable { def sum: Double = n * mu + def max: Double = maxValue + + def min: Double = minValue + /** Return the variance of the values. */ def variance: Double = { if (n == 0) { @@ -121,7 +135,7 @@ class StatCounter(values: TraversableOnce[Double]) extends Serializable { def sampleStdev: Double = math.sqrt(sampleVariance) override def toString: String = { - "(count: %d, mean: %f, stdev: %f)".format(count, mean, stdev) + "(count: %d, mean: %f, stdev: %f, max: %f, min: %f)".format(count, mean, stdev, max, min) } } diff --git a/core/src/main/scala/org/apache/spark/util/TimeStampedHashMap.scala b/core/src/main/scala/org/apache/spark/util/TimeStampedHashMap.scala index ddbd084ed7f01..8de75ba9a9c92 100644 --- a/core/src/main/scala/org/apache/spark/util/TimeStampedHashMap.scala +++ b/core/src/main/scala/org/apache/spark/util/TimeStampedHashMap.scala @@ -17,48 +17,54 @@ package org.apache.spark.util +import java.util.Set +import java.util.Map.Entry import java.util.concurrent.ConcurrentHashMap -import scala.collection.JavaConversions -import scala.collection.immutable -import scala.collection.mutable.Map +import scala.collection.{JavaConversions, mutable} import org.apache.spark.Logging +private[spark] case class TimeStampedValue[V](value: V, timestamp: Long) + /** * This is a custom implementation of scala.collection.mutable.Map which stores the insertion * timestamp along with each key-value pair. If specified, the timestamp of each pair can be * updated every time it is accessed. Key-value pairs whose timestamp are older than a particular * threshold time can then be removed using the clearOldValues method. This is intended to * be a drop-in replacement of scala.collection.mutable.HashMap. - * @param updateTimeStampOnGet When enabled, the timestamp of a pair will be - * updated when it is accessed + * + * @param updateTimeStampOnGet Whether timestamp of a pair will be updated when it is accessed */ -class TimeStampedHashMap[A, B](updateTimeStampOnGet: Boolean = false) - extends Map[A, B]() with Logging { - val internalMap = new ConcurrentHashMap[A, (B, Long)]() +private[spark] class TimeStampedHashMap[A, B](updateTimeStampOnGet: Boolean = false) + extends mutable.Map[A, B]() with Logging { + + private val internalMap = new ConcurrentHashMap[A, TimeStampedValue[B]]() def get(key: A): Option[B] = { val value = internalMap.get(key) if (value != null && updateTimeStampOnGet) { - internalMap.replace(key, value, (value._1, currentTime)) + internalMap.replace(key, value, TimeStampedValue(value.value, currentTime)) } - Option(value).map(_._1) + Option(value).map(_.value) } def iterator: Iterator[(A, B)] = { - val jIterator = internalMap.entrySet().iterator() - JavaConversions.asScalaIterator(jIterator).map(kv => (kv.getKey, kv.getValue._1)) + val jIterator = getEntrySet.iterator + JavaConversions.asScalaIterator(jIterator).map(kv => (kv.getKey, kv.getValue.value)) } - override def + [B1 >: B](kv: (A, B1)): Map[A, B1] = { + def getEntrySet: Set[Entry[A, TimeStampedValue[B]]] = internalMap.entrySet + + override def + [B1 >: B](kv: (A, B1)): mutable.Map[A, B1] = { val newMap = new TimeStampedHashMap[A, B1] - newMap.internalMap.putAll(this.internalMap) - newMap.internalMap.put(kv._1, (kv._2, currentTime)) + val oldInternalMap = this.internalMap.asInstanceOf[ConcurrentHashMap[A, TimeStampedValue[B1]]] + newMap.internalMap.putAll(oldInternalMap) + kv match { case (a, b) => newMap.internalMap.put(a, TimeStampedValue(b, currentTime)) } newMap } - override def - (key: A): Map[A, B] = { + override def - (key: A): mutable.Map[A, B] = { val newMap = new TimeStampedHashMap[A, B] newMap.internalMap.putAll(this.internalMap) newMap.internalMap.remove(key) @@ -66,17 +72,10 @@ class TimeStampedHashMap[A, B](updateTimeStampOnGet: Boolean = false) } override def += (kv: (A, B)): this.type = { - internalMap.put(kv._1, (kv._2, currentTime)) + kv match { case (a, b) => internalMap.put(a, TimeStampedValue(b, currentTime)) } this } - // Should we return previous value directly or as Option ? - def putIfAbsent(key: A, value: B): Option[B] = { - val prev = internalMap.putIfAbsent(key, (value, currentTime)) - if (prev != null) Some(prev._1) else None - } - - override def -= (key: A): this.type = { internalMap.remove(key) this @@ -87,53 +86,65 @@ class TimeStampedHashMap[A, B](updateTimeStampOnGet: Boolean = false) } override def apply(key: A): B = { - val value = internalMap.get(key) - if (value == null) throw new NoSuchElementException() - value._1 + get(key).getOrElse { throw new NoSuchElementException() } } - override def filter(p: ((A, B)) => Boolean): Map[A, B] = { - JavaConversions.mapAsScalaConcurrentMap(internalMap).map(kv => (kv._1, kv._2._1)).filter(p) + override def filter(p: ((A, B)) => Boolean): mutable.Map[A, B] = { + JavaConversions.mapAsScalaConcurrentMap(internalMap) + .map { case (k, TimeStampedValue(v, t)) => (k, v) } + .filter(p) } - override def empty: Map[A, B] = new TimeStampedHashMap[A, B]() + override def empty: mutable.Map[A, B] = new TimeStampedHashMap[A, B]() override def size: Int = internalMap.size override def foreach[U](f: ((A, B)) => U) { - val iterator = internalMap.entrySet().iterator() - while(iterator.hasNext) { - val entry = iterator.next() - val kv = (entry.getKey, entry.getValue._1) + val it = getEntrySet.iterator + while(it.hasNext) { + val entry = it.next() + val kv = (entry.getKey, entry.getValue.value) f(kv) } } - def toMap: immutable.Map[A, B] = iterator.toMap + def putIfAbsent(key: A, value: B): Option[B] = { + val prev = internalMap.putIfAbsent(key, TimeStampedValue(value, currentTime)) + Option(prev).map(_.value) + } + + def putAll(map: Map[A, B]) { + map.foreach { case (k, v) => update(k, v) } + } + + def toMap: Map[A, B] = iterator.toMap - /** - * Removes old key-value pairs that have timestamp earlier than `threshTime`, - * calling the supplied function on each such entry before removing. - */ def clearOldValues(threshTime: Long, f: (A, B) => Unit) { - val iterator = internalMap.entrySet().iterator() - while (iterator.hasNext) { - val entry = iterator.next() - if (entry.getValue._2 < threshTime) { - f(entry.getKey, entry.getValue._1) + val it = getEntrySet.iterator + while (it.hasNext) { + val entry = it.next() + if (entry.getValue.timestamp < threshTime) { + f(entry.getKey, entry.getValue.value) logDebug("Removing key " + entry.getKey) - iterator.remove() + it.remove() } } } - /** - * Removes old key-value pairs that have timestamp earlier than `threshTime` - */ + /** Removes old key-value pairs that have timestamp earlier than `threshTime`. */ def clearOldValues(threshTime: Long) { clearOldValues(threshTime, (_, _) => ()) } - private def currentTime: Long = System.currentTimeMillis() + private def currentTime: Long = System.currentTimeMillis + // For testing + + def getTimeStampedValue(key: A): Option[TimeStampedValue[B]] = { + Option(internalMap.get(key)) + } + + def getTimestamp(key: A): Option[Long] = { + getTimeStampedValue(key).map(_.timestamp) + } } diff --git a/core/src/main/scala/org/apache/spark/util/TimeStampedHashSet.scala b/core/src/main/scala/org/apache/spark/util/TimeStampedHashSet.scala index 19bece86b36b4..7cd8f28b12dd6 100644 --- a/core/src/main/scala/org/apache/spark/util/TimeStampedHashSet.scala +++ b/core/src/main/scala/org/apache/spark/util/TimeStampedHashSet.scala @@ -22,7 +22,7 @@ import java.util.concurrent.ConcurrentHashMap import scala.collection.JavaConversions import scala.collection.mutable.Set -class TimeStampedHashSet[A] extends Set[A] { +private[spark] class TimeStampedHashSet[A] extends Set[A] { val internalMap = new ConcurrentHashMap[A, Long]() def contains(key: A): Boolean = { diff --git a/core/src/main/scala/org/apache/spark/util/TimeStampedWeakValueHashMap.scala b/core/src/main/scala/org/apache/spark/util/TimeStampedWeakValueHashMap.scala new file mode 100644 index 0000000000000..b65017d6806c6 --- /dev/null +++ b/core/src/main/scala/org/apache/spark/util/TimeStampedWeakValueHashMap.scala @@ -0,0 +1,170 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.util + +import java.lang.ref.WeakReference +import java.util.concurrent.atomic.AtomicInteger + +import scala.collection.mutable + +import org.apache.spark.Logging + +/** + * A wrapper of TimeStampedHashMap that ensures the values are weakly referenced and timestamped. + * + * If the value is garbage collected and the weak reference is null, get() will return a + * non-existent value. These entries are removed from the map periodically (every N inserts), as + * their values are no longer strongly reachable. Further, key-value pairs whose timestamps are + * older than a particular threshold can be removed using the clearOldValues method. + * + * TimeStampedWeakValueHashMap exposes a scala.collection.mutable.Map interface, which allows it + * to be a drop-in replacement for Scala HashMaps. Internally, it uses a Java ConcurrentHashMap, + * so all operations on this HashMap are thread-safe. + * + * @param updateTimeStampOnGet Whether timestamp of a pair will be updated when it is accessed. + */ +private[spark] class TimeStampedWeakValueHashMap[A, B](updateTimeStampOnGet: Boolean = false) + extends mutable.Map[A, B]() with Logging { + + import TimeStampedWeakValueHashMap._ + + private val internalMap = new TimeStampedHashMap[A, WeakReference[B]](updateTimeStampOnGet) + private val insertCount = new AtomicInteger(0) + + /** Return a map consisting only of entries whose values are still strongly reachable. */ + private def nonNullReferenceMap = internalMap.filter { case (_, ref) => ref.get != null } + + def get(key: A): Option[B] = internalMap.get(key) + + def iterator: Iterator[(A, B)] = nonNullReferenceMap.iterator + + override def + [B1 >: B](kv: (A, B1)): mutable.Map[A, B1] = { + val newMap = new TimeStampedWeakValueHashMap[A, B1] + val oldMap = nonNullReferenceMap.asInstanceOf[mutable.Map[A, WeakReference[B1]]] + newMap.internalMap.putAll(oldMap.toMap) + newMap.internalMap += kv + newMap + } + + override def - (key: A): mutable.Map[A, B] = { + val newMap = new TimeStampedWeakValueHashMap[A, B] + newMap.internalMap.putAll(nonNullReferenceMap.toMap) + newMap.internalMap -= key + newMap + } + + override def += (kv: (A, B)): this.type = { + internalMap += kv + if (insertCount.incrementAndGet() % CLEAR_NULL_VALUES_INTERVAL == 0) { + clearNullValues() + } + this + } + + override def -= (key: A): this.type = { + internalMap -= key + this + } + + override def update(key: A, value: B) = this += ((key, value)) + + override def apply(key: A): B = internalMap.apply(key) + + override def filter(p: ((A, B)) => Boolean): mutable.Map[A, B] = nonNullReferenceMap.filter(p) + + override def empty: mutable.Map[A, B] = new TimeStampedWeakValueHashMap[A, B]() + + override def size: Int = internalMap.size + + override def foreach[U](f: ((A, B)) => U) = nonNullReferenceMap.foreach(f) + + def putIfAbsent(key: A, value: B): Option[B] = internalMap.putIfAbsent(key, value) + + def toMap: Map[A, B] = iterator.toMap + + /** Remove old key-value pairs with timestamps earlier than `threshTime`. */ + def clearOldValues(threshTime: Long) = internalMap.clearOldValues(threshTime) + + /** Remove entries with values that are no longer strongly reachable. */ + def clearNullValues() { + val it = internalMap.getEntrySet.iterator + while (it.hasNext) { + val entry = it.next() + if (entry.getValue.value.get == null) { + logDebug("Removing key " + entry.getKey + " because it is no longer strongly reachable.") + it.remove() + } + } + } + + // For testing + + def getTimestamp(key: A): Option[Long] = { + internalMap.getTimeStampedValue(key).map(_.timestamp) + } + + def getReference(key: A): Option[WeakReference[B]] = { + internalMap.getTimeStampedValue(key).map(_.value) + } +} + +/** + * Helper methods for converting to and from WeakReferences. + */ +private object TimeStampedWeakValueHashMap { + + // Number of inserts after which entries with null references are removed + val CLEAR_NULL_VALUES_INTERVAL = 100 + + /* Implicit conversion methods to WeakReferences. */ + + implicit def toWeakReference[V](v: V): WeakReference[V] = new WeakReference[V](v) + + implicit def toWeakReferenceTuple[K, V](kv: (K, V)): (K, WeakReference[V]) = { + kv match { case (k, v) => (k, toWeakReference(v)) } + } + + implicit def toWeakReferenceFunction[K, V, R](p: ((K, V)) => R): ((K, WeakReference[V])) => R = { + (kv: (K, WeakReference[V])) => p(kv) + } + + /* Implicit conversion methods from WeakReferences. */ + + implicit def fromWeakReference[V](ref: WeakReference[V]): V = ref.get + + implicit def fromWeakReferenceOption[V](v: Option[WeakReference[V]]): Option[V] = { + v match { + case Some(ref) => Option(fromWeakReference(ref)) + case None => None + } + } + + implicit def fromWeakReferenceTuple[K, V](kv: (K, WeakReference[V])): (K, V) = { + kv match { case (k, v) => (k, fromWeakReference(v)) } + } + + implicit def fromWeakReferenceIterator[K, V]( + it: Iterator[(K, WeakReference[V])]): Iterator[(K, V)] = { + it.map(fromWeakReferenceTuple) + } + + implicit def fromWeakReferenceMap[K, V]( + map: mutable.Map[K, WeakReference[V]]) : mutable.Map[K, V] = { + mutable.Map(map.mapValues(fromWeakReference).toSeq: _*) + } +} diff --git a/core/src/main/scala/org/apache/spark/util/Utils.scala b/core/src/main/scala/org/apache/spark/util/Utils.scala index ac376fc403ada..166f48ce7342e 100644 --- a/core/src/main/scala/org/apache/spark/util/Utils.scala +++ b/core/src/main/scala/org/apache/spark/util/Utils.scala @@ -32,10 +32,12 @@ import scala.reflect.ClassTag import com.google.common.io.Files import com.google.common.util.concurrent.ThreadFactoryBuilder import org.apache.hadoop.fs.{FileSystem, FileUtil, Path} +import org.json4s._ +import tachyon.client.{TachyonFile,TachyonFS} import org.apache.spark.{Logging, SecurityManager, SparkConf, SparkException} -import org.apache.spark.serializer.{DeserializationStream, SerializationStream, SerializerInstance} import org.apache.spark.deploy.SparkHadoopUtil +import org.apache.spark.serializer.{DeserializationStream, SerializationStream, SerializerInstance} /** @@ -43,6 +45,8 @@ import org.apache.spark.deploy.SparkHadoopUtil */ private[spark] object Utils extends Logging { + val osName = System.getProperty("os.name") + /** Serialize an object using Java serialization */ def serialize[T](o: T): Array[Byte] = { val bos = new ByteArrayOutputStream() @@ -150,6 +154,7 @@ private[spark] object Utils extends Logging { } private val shutdownDeletePaths = new scala.collection.mutable.HashSet[String]() + private val shutdownDeleteTachyonPaths = new scala.collection.mutable.HashSet[String]() // Register the path to be deleted via shutdown hook def registerShutdownDeleteDir(file: File) { @@ -159,6 +164,14 @@ private[spark] object Utils extends Logging { } } + // Register the tachyon path to be deleted via shutdown hook + def registerShutdownDeleteDir(tachyonfile: TachyonFile) { + val absolutePath = tachyonfile.getPath() + shutdownDeleteTachyonPaths.synchronized { + shutdownDeleteTachyonPaths += absolutePath + } + } + // Is the path already registered to be deleted via a shutdown hook ? def hasShutdownDeleteDir(file: File): Boolean = { val absolutePath = file.getAbsolutePath() @@ -167,6 +180,14 @@ private[spark] object Utils extends Logging { } } + // Is the path already registered to be deleted via a shutdown hook ? + def hasShutdownDeleteTachyonDir(file: TachyonFile): Boolean = { + val absolutePath = file.getPath() + shutdownDeletePaths.synchronized { + shutdownDeletePaths.contains(absolutePath) + } + } + // Note: if file is child of some registered path, while not equal to it, then return true; // else false. This is to ensure that two shutdown hooks do not try to delete each others // paths - resulting in IOException and incomplete cleanup. @@ -183,6 +204,22 @@ private[spark] object Utils extends Logging { retval } + // Note: if file is child of some registered path, while not equal to it, then return true; + // else false. This is to ensure that two shutdown hooks do not try to delete each others + // paths - resulting in Exception and incomplete cleanup. + def hasRootAsShutdownDeleteDir(file: TachyonFile): Boolean = { + val absolutePath = file.getPath() + val retval = shutdownDeletePaths.synchronized { + shutdownDeletePaths.find { path => + !absolutePath.equals(path) && absolutePath.startsWith(path) + }.isDefined + } + if (retval) { + logInfo("path = " + file + ", already present as root for deletion.") + } + retval + } + /** Create a temporary directory inside the given parent directory */ def createTempDir(root: String = System.getProperty("java.io.tmpdir")): File = { var attempts = 0 @@ -245,7 +282,7 @@ private[spark] object Utils extends Logging { val userCred = securityMgr.getSecretKey() if (userCred == null) throw new Exception("Secret key is null with authentication on") val userInfo = securityMgr.getHttpUser() + ":" + userCred - new URI(uri.getScheme(), userInfo, uri.getHost(), uri.getPort(), uri.getPath(), + new URI(uri.getScheme(), userInfo, uri.getHost(), uri.getPort(), uri.getPath(), uri.getQuery(), uri.getFragment()) } @@ -282,7 +319,7 @@ private[spark] object Utils extends Logging { uc.setConnectTimeout(timeout) uc.setReadTimeout(timeout) uc.connect() - val in = uc.getInputStream(); + val in = uc.getInputStream() val out = new FileOutputStream(tempFile) Utils.copyStream(in, out, true) if (targetFile.exists && !Files.equal(tempFile, targetFile)) { @@ -328,8 +365,7 @@ private[spark] object Utils extends Logging { } case _ => // Use the Hadoop filesystem library, which supports file://, hdfs://, s3://, and others - val conf = SparkHadoopUtil.get.newConfiguration() - val fs = FileSystem.get(uri, conf) + val fs = getHadoopFileSystem(uri) val in = fs.open(new Path(uri)) val out = new FileOutputStream(tempFile) Utils.copyStream(in, out, true) @@ -462,10 +498,10 @@ private[spark] object Utils extends Logging { private val hostPortParseResults = new ConcurrentHashMap[String, (String, Int)]() def parseHostPort(hostPort: String): (String, Int) = { - { - // Check cache first. - val cached = hostPortParseResults.get(hostPort) - if (cached != null) return cached + // Check cache first. + val cached = hostPortParseResults.get(hostPort) + if (cached != null) { + return cached } val indx: Int = hostPort.lastIndexOf(':') @@ -500,7 +536,7 @@ private[spark] object Utils extends Logging { * millisecond. */ def getUsedTimeMs(startTimeMs: Long): String = { - return " " + (System.currentTimeMillis - startTimeMs) + " ms" + " " + (System.currentTimeMillis - startTimeMs) + " ms" } /** @@ -522,15 +558,62 @@ private[spark] object Utils extends Logging { /** * Delete a file or directory and its contents recursively. + * Don't follow directories if they are symlinks. */ def deleteRecursively(file: File) { - if (file.isDirectory) { + if ((file.isDirectory) && !isSymlink(file)) { for (child <- listFilesSafely(file)) { deleteRecursively(child) } } if (!file.delete()) { - throw new IOException("Failed to delete: " + file) + // Delete can also fail if the file simply did not exist + if (file.exists()) { + throw new IOException("Failed to delete: " + file.getAbsolutePath) + } + } + } + + /** + * Delete a file or directory and its contents recursively. + */ + def deleteRecursively(dir: TachyonFile, client: TachyonFS) { + if (!client.delete(dir.getPath(), true)) { + throw new IOException("Failed to delete the tachyon dir: " + dir) + } + } + + /** + * Check to see if file is a symbolic link. + */ + def isSymlink(file: File): Boolean = { + if (file == null) throw new NullPointerException("File must not be null") + if (osName.startsWith("Windows")) return false + val fileInCanonicalDir = if (file.getParent() == null) { + file + } else { + new File(file.getParentFile().getCanonicalFile(), file.getName()) + } + + if (fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile())) { + return false + } else { + return true + } + } + + /** + * Finds all the files in a directory whose last modified time is older than cutoff seconds. + * @param dir must be the path to a directory, or IllegalArgumentException is thrown + * @param cutoff measured in seconds. Files older than this are returned. + */ + def findOldFiles(dir: File, cutoff: Long): Seq[File] = { + val currentTimeMillis = System.currentTimeMillis + if (dir.isDirectory) { + val files = listFilesSafely(dir) + files.filter { file => file.lastModified < (currentTimeMillis - cutoff * 1000) } + } else { + throw new IllegalArgumentException(dir + " is not a directory!") } } @@ -677,7 +760,13 @@ private[spark] object Utils extends Logging { private val SPARK_CLASS_REGEX = """^org\.apache\.spark(\.api\.java)?(\.util)?(\.rdd)?\.[A-Z]""".r private[spark] class CallSiteInfo(val lastSparkMethod: String, val firstUserFile: String, - val firstUserLine: Int, val firstUserClass: String) + val firstUserLine: Int, val firstUserClass: String) { + + /** Returns a printable version of the call site info suitable for logs. */ + override def toString = { + "%s at %s:%s".format(lastSparkMethod, firstUserFile, firstUserLine) + } + } /** * When called inside a class in the spark package, returns the name of the user code class @@ -685,8 +774,8 @@ private[spark] object Utils extends Logging { * This is used, for example, to tell users where in their code each RDD got created. */ def getCallSiteInfo: CallSiteInfo = { - val trace = Thread.currentThread.getStackTrace().filter( el => - (!el.getMethodName.contains("getStackTrace"))) + val trace = Thread.currentThread.getStackTrace() + .filterNot(_.getMethodName.contains("getStackTrace")) // Keep crawling up the stack trace until we find the first function not inside of the spark // package. We track the last (shallowest) contiguous Spark method. This might be an RDD @@ -719,12 +808,6 @@ private[spark] object Utils extends Logging { new CallSiteInfo(lastSparkMethod, firstUserFile, firstUserLine, firstUserClass) } - def formatSparkCallSite = { - val callSiteInfo = getCallSiteInfo - "%s at %s:%s".format(callSiteInfo.lastSparkMethod, callSiteInfo.firstUserFile, - callSiteInfo.firstUserLine) - } - /** Return a string containing part of a file from byte 'start' to 'end'. */ def offsetBytes(path: String, start: Long, end: Long): String = { val file = new File(path) @@ -789,7 +872,7 @@ private[spark] object Utils extends Logging { } var i = 0 while (i < s.length) { - var nextChar = s.charAt(i) + val nextChar = s.charAt(i) if (inDoubleQuote) { if (nextChar == '"') { inDoubleQuote = false @@ -895,4 +978,54 @@ private[spark] object Utils extends Logging { } count } + + /** + * Creates a symlink. Note jdk1.7 has Files.createSymbolicLink but not used here + * for jdk1.6 support. Supports windows by doing copy, everything else uses "ln -sf". + * @param src absolute path to the source + * @param dst relative path for the destination + */ + def symlink(src: File, dst: File) { + if (!src.isAbsolute()) { + throw new IOException("Source must be absolute") + } + if (dst.isAbsolute()) { + throw new IOException("Destination must be relative") + } + val linkCmd = if (osName.startsWith("Windows")) "copy" else "ln -sf" + import scala.sys.process._ + (linkCmd + " " + src.getAbsolutePath() + " " + dst.getPath()) lines_! ProcessLogger(line => + (logInfo(line))) + } + + + /** Return the class name of the given object, removing all dollar signs */ + def getFormattedClassName(obj: AnyRef) = { + obj.getClass.getSimpleName.replace("$", "") + } + + /** Return an option that translates JNothing to None */ + def jsonOption(json: JValue): Option[JValue] = { + json match { + case JNothing => None + case value: JValue => Some(value) + } + } + + /** Return an empty JSON object */ + def emptyJson = JObject(List[JField]()) + + /** + * Return a Hadoop FileSystem with the scheme encoded in the given path. + */ + def getHadoopFileSystem(path: URI): FileSystem = { + FileSystem.get(path, SparkHadoopUtil.get.newConfiguration()) + } + + /** + * Return a Hadoop FileSystem with the scheme encoded in the given path. + */ + def getHadoopFileSystem(path: String): FileSystem = { + getHadoopFileSystem(new URI(path)) + } } diff --git a/core/src/main/scala/org/apache/spark/util/Vector.scala b/core/src/main/scala/org/apache/spark/util/Vector.scala index dc4b8f253f259..3c8f94a416c65 100644 --- a/core/src/main/scala/org/apache/spark/util/Vector.scala +++ b/core/src/main/scala/org/apache/spark/util/Vector.scala @@ -21,6 +21,7 @@ import scala.util.Random import org.apache.spark.util.random.XORShiftRandom +@deprecated("Use Vectors.dense from Spark's mllib.linalg package instead.", "1.0.0") class Vector(val elements: Array[Double]) extends Serializable { def length = elements.length diff --git a/core/src/main/scala/org/apache/spark/util/collection/AppendOnlyMap.scala b/core/src/main/scala/org/apache/spark/util/collection/AppendOnlyMap.scala index b8c852b4ff5c7..025492b177a77 100644 --- a/core/src/main/scala/org/apache/spark/util/collection/AppendOnlyMap.scala +++ b/core/src/main/scala/org/apache/spark/util/collection/AppendOnlyMap.scala @@ -19,7 +19,10 @@ package org.apache.spark.util.collection import java.util.{Arrays, Comparator} +import org.apache.spark.annotation.DeveloperApi + /** + * :: DeveloperApi :: * A simple open hash table optimized for the append-only use case, where keys * are never removed, but the value for each key may be changed. * @@ -29,9 +32,9 @@ import java.util.{Arrays, Comparator} * * TODO: Cache the hash values of each key? java.util.HashMap does that. */ -private[spark] -class AppendOnlyMap[K, V](initialCapacity: Int = 64) extends Iterable[(K, - V)] with Serializable { +@DeveloperApi +class AppendOnlyMap[K, V](initialCapacity: Int = 64) + extends Iterable[(K, V)] with Serializable { require(initialCapacity <= (1 << 29), "Can't make capacity bigger than 2^29 elements") require(initialCapacity >= 1, "Invalid initial capacity") diff --git a/core/src/main/scala/org/apache/spark/util/collection/BitSet.scala b/core/src/main/scala/org/apache/spark/util/collection/BitSet.scala index d3153d2cac4a5..af1f64649f354 100644 --- a/core/src/main/scala/org/apache/spark/util/collection/BitSet.scala +++ b/core/src/main/scala/org/apache/spark/util/collection/BitSet.scala @@ -88,6 +88,45 @@ class BitSet(numBits: Int) extends Serializable { newBS } + /** + * Compute the symmetric difference by performing bit-wise XOR of the two sets returning the + * result. + */ + def ^(other: BitSet): BitSet = { + val newBS = new BitSet(math.max(capacity, other.capacity)) + val smaller = math.min(numWords, other.numWords) + var ind = 0 + while (ind < smaller) { + newBS.words(ind) = words(ind) ^ other.words(ind) + ind += 1 + } + if (ind < numWords) { + Array.copy( words, ind, newBS.words, ind, numWords - ind ) + } + if (ind < other.numWords) { + Array.copy( other.words, ind, newBS.words, ind, other.numWords - ind ) + } + newBS + } + + /** + * Compute the difference of the two sets by performing bit-wise AND-NOT returning the + * result. + */ + def andNot(other: BitSet): BitSet = { + val newBS = new BitSet(capacity) + val smaller = math.min(numWords, other.numWords) + var ind = 0 + while (ind < smaller) { + newBS.words(ind) = words(ind) & ~other.words(ind) + ind += 1 + } + if (ind < numWords) { + Array.copy( words, ind, newBS.words, ind, numWords - ind ) + } + newBS + } + /** * Sets the bit at the specified index to true. * @param index the bit index diff --git a/core/src/main/scala/org/apache/spark/util/collection/ExternalAppendOnlyMap.scala b/core/src/main/scala/org/apache/spark/util/collection/ExternalAppendOnlyMap.scala index ed74a31f05bae..dd01ae821f705 100644 --- a/core/src/main/scala/org/apache/spark/util/collection/ExternalAppendOnlyMap.scala +++ b/core/src/main/scala/org/apache/spark/util/collection/ExternalAppendOnlyMap.scala @@ -27,10 +27,12 @@ import com.google.common.io.ByteStreams import it.unimi.dsi.fastutil.io.FastBufferedInputStream import org.apache.spark.{Logging, SparkEnv} +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.serializer.Serializer import org.apache.spark.storage.{BlockId, BlockManager} /** + * :: DeveloperApi :: * An append-only map that spills sorted content to disk when there is insufficient space for it * to grow. * @@ -55,12 +57,12 @@ import org.apache.spark.storage.{BlockId, BlockManager} * `spark.shuffle.safetyFraction` specifies an additional margin of safety as a fraction of * this threshold, in case map size estimation is not sufficiently accurate. */ - -private[spark] class ExternalAppendOnlyMap[K, V, C]( +@DeveloperApi +class ExternalAppendOnlyMap[K, V, C]( createCombiner: V => C, mergeValue: (C, V) => C, mergeCombiners: (C, C) => C, - serializer: Serializer = SparkEnv.get.serializerManager.default, + serializer: Serializer = SparkEnv.get.serializer, blockManager: BlockManager = SparkEnv.get.blockManager) extends Iterable[(K, C)] with Serializable with Logging { diff --git a/core/src/main/scala/org/apache/spark/util/collection/OpenHashMap.scala b/core/src/main/scala/org/apache/spark/util/collection/OpenHashMap.scala index c26f23d50024a..62f99f3981793 100644 --- a/core/src/main/scala/org/apache/spark/util/collection/OpenHashMap.scala +++ b/core/src/main/scala/org/apache/spark/util/collection/OpenHashMap.scala @@ -19,14 +19,17 @@ package org.apache.spark.util.collection import scala.reflect.ClassTag +import org.apache.spark.annotation.DeveloperApi + /** + * :: DeveloperApi :: * A fast hash map implementation for nullable keys. This hash map supports insertions and updates, * but not deletions. This map is about 5X faster than java.util.HashMap, while using much less * space overhead. * * Under the hood, it uses our OpenHashSet implementation. */ -private[spark] +@DeveloperApi class OpenHashMap[K >: Null : ClassTag, @specialized(Long, Int, Double) V: ClassTag]( initialCapacity: Int) extends Iterable[(K, V)] diff --git a/core/src/main/scala/org/apache/spark/util/collection/Utils.scala b/core/src/main/scala/org/apache/spark/util/collection/Utils.scala new file mode 100644 index 0000000000000..c5268c0fae0ef --- /dev/null +++ b/core/src/main/scala/org/apache/spark/util/collection/Utils.scala @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.util.collection + +import scala.collection.JavaConversions.{collectionAsScalaIterable, asJavaIterator} + +import com.google.common.collect.{Ordering => GuavaOrdering} + +/** + * Utility functions for collections. + */ +private[spark] object Utils { + + /** + * Returns the first K elements from the input as defined by the specified implicit Ordering[T] + * and maintains the ordering. + */ + def takeOrdered[T](input: Iterator[T], num: Int)(implicit ord: Ordering[T]): Iterator[T] = { + val ordering = new GuavaOrdering[T] { + override def compare(l: T, r: T) = ord.compare(l, r) + } + collectionAsScalaIterable(ordering.leastOf(asJavaIterator(input), num)).iterator + } +} diff --git a/core/src/main/scala/org/apache/spark/util/random/Pseudorandom.scala b/core/src/main/scala/org/apache/spark/util/random/Pseudorandom.scala index 98569143ee1e3..70f3dd62b9b19 100644 --- a/core/src/main/scala/org/apache/spark/util/random/Pseudorandom.scala +++ b/core/src/main/scala/org/apache/spark/util/random/Pseudorandom.scala @@ -17,9 +17,13 @@ package org.apache.spark.util.random +import org.apache.spark.annotation.DeveloperApi + /** + * :: DeveloperApi :: * A class with pseudorandom behavior. */ +@DeveloperApi trait Pseudorandom { /** Set random seed. */ def setSeed(seed: Long) diff --git a/core/src/main/scala/org/apache/spark/util/random/RandomSampler.scala b/core/src/main/scala/org/apache/spark/util/random/RandomSampler.scala index 0f1fca4813ba9..37a6b04f5200f 100644 --- a/core/src/main/scala/org/apache/spark/util/random/RandomSampler.scala +++ b/core/src/main/scala/org/apache/spark/util/random/RandomSampler.scala @@ -22,7 +22,10 @@ import java.util.Random import cern.jet.random.Poisson import cern.jet.random.engine.DRand +import org.apache.spark.annotation.DeveloperApi + /** + * :: DeveloperApi :: * A pseudorandom sampler. It is possible to change the sampled item type. For example, we might * want to add weights for stratified sampling or importance sampling. Should only use * transformations that are tied to the sampler and cannot be applied after sampling. @@ -30,6 +33,7 @@ import cern.jet.random.engine.DRand * @tparam T item type * @tparam U sampled item type */ +@DeveloperApi trait RandomSampler[T, U] extends Pseudorandom with Cloneable with Serializable { /** take a random sample */ @@ -40,6 +44,7 @@ trait RandomSampler[T, U] extends Pseudorandom with Cloneable with Serializable } /** + * :: DeveloperApi :: * A sampler based on Bernoulli trials. * * @param lb lower bound of the acceptance range @@ -47,6 +52,7 @@ trait RandomSampler[T, U] extends Pseudorandom with Cloneable with Serializable * @param complement whether to use the complement of the range specified, default to false * @tparam T item type */ +@DeveloperApi class BernoulliSampler[T](lb: Double, ub: Double, complement: Boolean = false) (implicit random: Random = new XORShiftRandom) extends RandomSampler[T, T] { @@ -67,11 +73,13 @@ class BernoulliSampler[T](lb: Double, ub: Double, complement: Boolean = false) } /** + * :: DeveloperApi :: * A sampler based on values drawn from Poisson distribution. * * @param poisson a Poisson random number generator * @tparam T item type */ +@DeveloperApi class PoissonSampler[T](mean: Double) (implicit var poisson: Poisson = new Poisson(mean, new DRand)) extends RandomSampler[T, T] { diff --git a/core/src/test/java/org/apache/spark/JavaAPISuite.java b/core/src/test/java/org/apache/spark/JavaAPISuite.java index 40e853c39ca99..ab2fdac553349 100644 --- a/core/src/test/java/org/apache/spark/JavaAPISuite.java +++ b/core/src/test/java/org/apache/spark/JavaAPISuite.java @@ -17,13 +17,14 @@ package org.apache.spark; -import java.io.File; -import java.io.IOException; -import java.io.Serializable; +import java.io.*; +import java.lang.StringBuilder; import java.util.*; import scala.Tuple2; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.google.common.base.Optional; import com.google.common.base.Charsets; import com.google.common.io.Files; @@ -43,6 +44,7 @@ import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.*; +import org.apache.spark.executor.TaskMetrics; import org.apache.spark.partial.BoundedDouble; import org.apache.spark.partial.PartialResult; import org.apache.spark.storage.StorageLevel; @@ -180,6 +182,14 @@ public void call(String s) { Assert.assertEquals(2, foreachCalls); } + @Test + public void toLocalIterator() { + List correct = Arrays.asList(1, 2, 3, 4); + JavaRDD rdd = sc.parallelize(correct); + List result = Lists.newArrayList(rdd.toLocalIterator()); + Assert.assertTrue(correct.equals(result)); + } + @SuppressWarnings("unchecked") @Test public void lookup() { @@ -189,7 +199,7 @@ public void lookup() { new Tuple2("Oranges", "Citrus") )); Assert.assertEquals(2, categories.lookup("Oranges").size()); - Assert.assertEquals(2, categories.groupByKey().lookup("Oranges").get(0).size()); + Assert.assertEquals(2, Iterables.size(categories.groupByKey().lookup("Oranges").get(0))); } @Test @@ -201,15 +211,15 @@ public Boolean call(Integer x) { return x % 2 == 0; } }; - JavaPairRDD> oddsAndEvens = rdd.groupBy(isOdd); + JavaPairRDD> oddsAndEvens = rdd.groupBy(isOdd); Assert.assertEquals(2, oddsAndEvens.count()); - Assert.assertEquals(2, oddsAndEvens.lookup(true).get(0).size()); // Evens - Assert.assertEquals(5, oddsAndEvens.lookup(false).get(0).size()); // Odds + Assert.assertEquals(2, Iterables.size(oddsAndEvens.lookup(true).get(0))); // Evens + Assert.assertEquals(5, Iterables.size(oddsAndEvens.lookup(false).get(0))); // Odds oddsAndEvens = rdd.groupBy(isOdd, 1); Assert.assertEquals(2, oddsAndEvens.count()); - Assert.assertEquals(2, oddsAndEvens.lookup(true).get(0).size()); // Evens - Assert.assertEquals(5, oddsAndEvens.lookup(false).get(0).size()); // Odds + Assert.assertEquals(2, Iterables.size(oddsAndEvens.lookup(true).get(0))); // Evens + Assert.assertEquals(5, Iterables.size(oddsAndEvens.lookup(false).get(0))); // Odds } @SuppressWarnings("unchecked") @@ -224,9 +234,9 @@ public void cogroup() { new Tuple2("Oranges", 2), new Tuple2("Apples", 3) )); - JavaPairRDD, List>> cogrouped = categories.cogroup(prices); - Assert.assertEquals("[Fruit, Citrus]", cogrouped.lookup("Oranges").get(0)._1().toString()); - Assert.assertEquals("[2]", cogrouped.lookup("Oranges").get(0)._2().toString()); + JavaPairRDD, Iterable>> cogrouped = categories.cogroup(prices); + Assert.assertEquals("[Fruit, Citrus]", Iterables.toString(cogrouped.lookup("Oranges").get(0)._1())); + Assert.assertEquals("[2]", Iterables.toString(cogrouped.lookup("Oranges").get(0)._2())); cogrouped.collect(); } @@ -402,16 +412,16 @@ public Boolean call(Double x) { @Test public void javaDoubleRDDHistoGram() { - JavaDoubleRDD rdd = sc.parallelizeDoubles(Arrays.asList(1.0, 2.0, 3.0, 4.0)); - // Test using generated buckets - Tuple2 results = rdd.histogram(2); - double[] expected_buckets = {1.0, 2.5, 4.0}; - long[] expected_counts = {2, 2}; - Assert.assertArrayEquals(expected_buckets, results._1, 0.1); - Assert.assertArrayEquals(expected_counts, results._2); - // Test with provided buckets - long[] histogram = rdd.histogram(expected_buckets); - Assert.assertArrayEquals(expected_counts, histogram); + JavaDoubleRDD rdd = sc.parallelizeDoubles(Arrays.asList(1.0, 2.0, 3.0, 4.0)); + // Test using generated buckets + Tuple2 results = rdd.histogram(2); + double[] expected_buckets = {1.0, 2.5, 4.0}; + long[] expected_counts = {2, 2}; + Assert.assertArrayEquals(expected_buckets, results._1, 0.1); + Assert.assertArrayEquals(expected_counts, results._2); + // Test with provided buckets + long[] histogram = rdd.histogram(expected_buckets); + Assert.assertArrayEquals(expected_counts, histogram); } @Test @@ -570,7 +580,7 @@ public void persist() { @Test public void iterator() { JavaRDD rdd = sc.parallelize(Arrays.asList(1, 2, 3, 4, 5), 2); - TaskContext context = new TaskContext(0, 0, 0, false, false, null); + TaskContext context = new TaskContext(0, 0, 0, false, false, new TaskMetrics()); Assert.assertEquals(1, rdd.iterator(rdd.splits().get(0), context).next().intValue()); } @@ -598,6 +608,32 @@ public void textFiles() throws IOException { Assert.assertEquals(expected, readRDD.collect()); } + @Test + public void wholeTextFiles() throws IOException { + byte[] content1 = "spark is easy to use.\n".getBytes(); + byte[] content2 = "spark is also easy to use.\n".getBytes(); + + File tempDir = Files.createTempDir(); + String tempDirName = tempDir.getAbsolutePath(); + DataOutputStream ds = new DataOutputStream(new FileOutputStream(tempDirName + "/part-00000")); + ds.write(content1); + ds.close(); + ds = new DataOutputStream(new FileOutputStream(tempDirName + "/part-00001")); + ds.write(content2); + ds.close(); + + HashMap container = new HashMap(); + container.put(tempDirName+"/part-00000", new Text(content1).toString()); + container.put(tempDirName+"/part-00001", new Text(content2).toString()); + + JavaPairRDD readRDD = sc.wholeTextFiles(tempDirName); + List> result = readRDD.collect(); + + for (Tuple2 res : result) { + Assert.assertEquals(res._2(), container.get(res._1())); + } + } + @Test public void textFilesCompressed() throws IOException { File tempDir = Files.createTempDir(); diff --git a/core/src/test/scala/org/apache/spark/AccumulatorSuite.scala b/core/src/test/scala/org/apache/spark/AccumulatorSuite.scala index 6c73ea6949dd2..4e7c34e6d1ada 100644 --- a/core/src/test/scala/org/apache/spark/AccumulatorSuite.scala +++ b/core/src/test/scala/org/apache/spark/AccumulatorSuite.scala @@ -66,7 +66,7 @@ class AccumulatorSuite extends FunSuite with ShouldMatchers with LocalSparkConte test ("add value to collection accumulators") { val maxI = 1000 - for (nThreads <- List(1, 10)) { //test single & multi-threaded + for (nThreads <- List(1, 10)) { // test single & multi-threaded sc = new SparkContext("local[" + nThreads + "]", "test") val acc: Accumulable[mutable.Set[Any], Any] = sc.accumulable(new mutable.HashSet[Any]()) val d = sc.parallelize(1 to maxI) @@ -83,7 +83,7 @@ class AccumulatorSuite extends FunSuite with ShouldMatchers with LocalSparkConte test ("value not readable in tasks") { val maxI = 1000 - for (nThreads <- List(1, 10)) { //test single & multi-threaded + for (nThreads <- List(1, 10)) { // test single & multi-threaded sc = new SparkContext("local[" + nThreads + "]", "test") val acc: Accumulable[mutable.Set[Any], Any] = sc.accumulable(new mutable.HashSet[Any]()) val d = sc.parallelize(1 to maxI) @@ -124,7 +124,7 @@ class AccumulatorSuite extends FunSuite with ShouldMatchers with LocalSparkConte test ("localValue readable in tasks") { val maxI = 1000 - for (nThreads <- List(1, 10)) { //test single & multi-threaded + for (nThreads <- List(1, 10)) { // test single & multi-threaded sc = new SparkContext("local[" + nThreads + "]", "test") val acc: Accumulable[mutable.Set[Any], Any] = sc.accumulable(new mutable.HashSet[Any]()) val groupedInts = (1 to (maxI/20)).map {x => (20 * (x - 1) to 20 * x).toSet} diff --git a/core/src/test/scala/org/apache/spark/AkkaUtilsSuite.scala b/core/src/test/scala/org/apache/spark/AkkaUtilsSuite.scala index cd054c1f684ab..c5f24c66ce0c1 100644 --- a/core/src/test/scala/org/apache/spark/AkkaUtilsSuite.scala +++ b/core/src/test/scala/org/apache/spark/AkkaUtilsSuite.scala @@ -45,18 +45,18 @@ class AkkaUtilsSuite extends FunSuite with LocalSparkContext { val masterTracker = new MapOutputTrackerMaster(conf) masterTracker.trackerActor = actorSystem.actorOf( - Props(new MapOutputTrackerMasterActor(masterTracker)), "MapOutputTracker") + Props(new MapOutputTrackerMasterActor(masterTracker, conf)), "MapOutputTracker") val badconf = new SparkConf badconf.set("spark.authenticate", "true") badconf.set("spark.authenticate.secret", "bad") - val securityManagerBad = new SecurityManager(badconf); + val securityManagerBad = new SecurityManager(badconf) assert(securityManagerBad.isAuthenticationEnabled() === true) val (slaveSystem, _) = AkkaUtils.createActorSystem("spark-slave", hostname, 0, conf = conf, securityManager = securityManagerBad) - val slaveTracker = new MapOutputTracker(conf) + val slaveTracker = new MapOutputTrackerWorker(conf) val selection = slaveSystem.actorSelection( s"akka.tcp://spark@localhost:$boundPort/user/MapOutputTracker") val timeout = AkkaUtils.lookupTimeout(conf) @@ -84,7 +84,7 @@ class AkkaUtilsSuite extends FunSuite with LocalSparkContext { val masterTracker = new MapOutputTrackerMaster(conf) masterTracker.trackerActor = actorSystem.actorOf( - Props(new MapOutputTrackerMasterActor(masterTracker)), "MapOutputTracker") + Props(new MapOutputTrackerMasterActor(masterTracker, conf)), "MapOutputTracker") val badconf = new SparkConf badconf.set("spark.authenticate", "false") @@ -93,7 +93,7 @@ class AkkaUtilsSuite extends FunSuite with LocalSparkContext { val (slaveSystem, _) = AkkaUtils.createActorSystem("spark-slave", hostname, 0, conf = badconf, securityManager = securityManagerBad) - val slaveTracker = new MapOutputTracker(conf) + val slaveTracker = new MapOutputTrackerWorker(conf) val selection = slaveSystem.actorSelection( s"akka.tcp://spark@localhost:$boundPort/user/MapOutputTracker") val timeout = AkkaUtils.lookupTimeout(conf) @@ -136,7 +136,7 @@ class AkkaUtilsSuite extends FunSuite with LocalSparkContext { val masterTracker = new MapOutputTrackerMaster(conf) masterTracker.trackerActor = actorSystem.actorOf( - Props(new MapOutputTrackerMasterActor(masterTracker)), "MapOutputTracker") + Props(new MapOutputTrackerMasterActor(masterTracker, conf)), "MapOutputTracker") val goodconf = new SparkConf goodconf.set("spark.authenticate", "true") @@ -147,7 +147,7 @@ class AkkaUtilsSuite extends FunSuite with LocalSparkContext { val (slaveSystem, _) = AkkaUtils.createActorSystem("spark-slave", hostname, 0, conf = goodconf, securityManager = securityManagerGood) - val slaveTracker = new MapOutputTracker(conf) + val slaveTracker = new MapOutputTrackerWorker(conf) val selection = slaveSystem.actorSelection( s"akka.tcp://spark@localhost:$boundPort/user/MapOutputTracker") val timeout = AkkaUtils.lookupTimeout(conf) @@ -189,7 +189,7 @@ class AkkaUtilsSuite extends FunSuite with LocalSparkContext { val masterTracker = new MapOutputTrackerMaster(conf) masterTracker.trackerActor = actorSystem.actorOf( - Props(new MapOutputTrackerMasterActor(masterTracker)), "MapOutputTracker") + Props(new MapOutputTrackerMasterActor(masterTracker, conf)), "MapOutputTracker") val badconf = new SparkConf badconf.set("spark.authenticate", "false") @@ -200,7 +200,7 @@ class AkkaUtilsSuite extends FunSuite with LocalSparkContext { val (slaveSystem, _) = AkkaUtils.createActorSystem("spark-slave", hostname, 0, conf = badconf, securityManager = securityManagerBad) - val slaveTracker = new MapOutputTracker(conf) + val slaveTracker = new MapOutputTrackerWorker(conf) val selection = slaveSystem.actorSelection( s"akka.tcp://spark@localhost:$boundPort/user/MapOutputTracker") val timeout = AkkaUtils.lookupTimeout(conf) diff --git a/core/src/test/scala/org/apache/spark/BroadcastSuite.scala b/core/src/test/scala/org/apache/spark/BroadcastSuite.scala index 96ba3929c1685..c9936256a5b95 100644 --- a/core/src/test/scala/org/apache/spark/BroadcastSuite.scala +++ b/core/src/test/scala/org/apache/spark/BroadcastSuite.scala @@ -19,68 +19,297 @@ package org.apache.spark import org.scalatest.FunSuite -class BroadcastSuite extends FunSuite with LocalSparkContext { +import org.apache.spark.storage._ +import org.apache.spark.broadcast.{Broadcast, HttpBroadcast} +import org.apache.spark.storage.BroadcastBlockId +class BroadcastSuite extends FunSuite with LocalSparkContext { - override def afterEach() { - super.afterEach() - System.clearProperty("spark.broadcast.factory") - } + private val httpConf = broadcastConf("HttpBroadcastFactory") + private val torrentConf = broadcastConf("TorrentBroadcastFactory") test("Using HttpBroadcast locally") { - System.setProperty("spark.broadcast.factory", "org.apache.spark.broadcast.HttpBroadcastFactory") - sc = new SparkContext("local", "test") - val list = List(1, 2, 3, 4) - val listBroadcast = sc.broadcast(list) - val results = sc.parallelize(1 to 2).map(x => (x, listBroadcast.value.sum)) - assert(results.collect.toSet === Set((1, 10), (2, 10))) + sc = new SparkContext("local", "test", httpConf) + val list = List[Int](1, 2, 3, 4) + val broadcast = sc.broadcast(list) + val results = sc.parallelize(1 to 2).map(x => (x, broadcast.value.sum)) + assert(results.collect().toSet === Set((1, 10), (2, 10))) } test("Accessing HttpBroadcast variables from multiple threads") { - System.setProperty("spark.broadcast.factory", "org.apache.spark.broadcast.HttpBroadcastFactory") - sc = new SparkContext("local[10]", "test") - val list = List(1, 2, 3, 4) - val listBroadcast = sc.broadcast(list) - val results = sc.parallelize(1 to 10).map(x => (x, listBroadcast.value.sum)) - assert(results.collect.toSet === (1 to 10).map(x => (x, 10)).toSet) + sc = new SparkContext("local[10]", "test", httpConf) + val list = List[Int](1, 2, 3, 4) + val broadcast = sc.broadcast(list) + val results = sc.parallelize(1 to 10).map(x => (x, broadcast.value.sum)) + assert(results.collect().toSet === (1 to 10).map(x => (x, 10)).toSet) } test("Accessing HttpBroadcast variables in a local cluster") { - System.setProperty("spark.broadcast.factory", "org.apache.spark.broadcast.HttpBroadcastFactory") val numSlaves = 4 - sc = new SparkContext("local-cluster[%d, 1, 512]".format(numSlaves), "test") - val list = List(1, 2, 3, 4) - val listBroadcast = sc.broadcast(list) - val results = sc.parallelize(1 to numSlaves).map(x => (x, listBroadcast.value.sum)) - assert(results.collect.toSet === (1 to numSlaves).map(x => (x, 10)).toSet) + sc = new SparkContext("local-cluster[%d, 1, 512]".format(numSlaves), "test", httpConf) + val list = List[Int](1, 2, 3, 4) + val broadcast = sc.broadcast(list) + val results = sc.parallelize(1 to numSlaves).map(x => (x, broadcast.value.sum)) + assert(results.collect().toSet === (1 to numSlaves).map(x => (x, 10)).toSet) } test("Using TorrentBroadcast locally") { - System.setProperty("spark.broadcast.factory", "org.apache.spark.broadcast.TorrentBroadcastFactory") - sc = new SparkContext("local", "test") - val list = List(1, 2, 3, 4) - val listBroadcast = sc.broadcast(list) - val results = sc.parallelize(1 to 2).map(x => (x, listBroadcast.value.sum)) - assert(results.collect.toSet === Set((1, 10), (2, 10))) + sc = new SparkContext("local", "test", torrentConf) + val list = List[Int](1, 2, 3, 4) + val broadcast = sc.broadcast(list) + val results = sc.parallelize(1 to 2).map(x => (x, broadcast.value.sum)) + assert(results.collect().toSet === Set((1, 10), (2, 10))) } test("Accessing TorrentBroadcast variables from multiple threads") { - System.setProperty("spark.broadcast.factory", "org.apache.spark.broadcast.TorrentBroadcastFactory") - sc = new SparkContext("local[10]", "test") - val list = List(1, 2, 3, 4) - val listBroadcast = sc.broadcast(list) - val results = sc.parallelize(1 to 10).map(x => (x, listBroadcast.value.sum)) - assert(results.collect.toSet === (1 to 10).map(x => (x, 10)).toSet) + sc = new SparkContext("local[10]", "test", torrentConf) + val list = List[Int](1, 2, 3, 4) + val broadcast = sc.broadcast(list) + val results = sc.parallelize(1 to 10).map(x => (x, broadcast.value.sum)) + assert(results.collect().toSet === (1 to 10).map(x => (x, 10)).toSet) } test("Accessing TorrentBroadcast variables in a local cluster") { - System.setProperty("spark.broadcast.factory", "org.apache.spark.broadcast.TorrentBroadcastFactory") val numSlaves = 4 - sc = new SparkContext("local-cluster[%d, 1, 512]".format(numSlaves), "test") - val list = List(1, 2, 3, 4) - val listBroadcast = sc.broadcast(list) - val results = sc.parallelize(1 to numSlaves).map(x => (x, listBroadcast.value.sum)) - assert(results.collect.toSet === (1 to numSlaves).map(x => (x, 10)).toSet) + sc = new SparkContext("local-cluster[%d, 1, 512]".format(numSlaves), "test", torrentConf) + val list = List[Int](1, 2, 3, 4) + val broadcast = sc.broadcast(list) + val results = sc.parallelize(1 to numSlaves).map(x => (x, broadcast.value.sum)) + assert(results.collect().toSet === (1 to numSlaves).map(x => (x, 10)).toSet) + } + + test("Unpersisting HttpBroadcast on executors only in local mode") { + testUnpersistHttpBroadcast(distributed = false, removeFromDriver = false) + } + + test("Unpersisting HttpBroadcast on executors and driver in local mode") { + testUnpersistHttpBroadcast(distributed = false, removeFromDriver = true) + } + + test("Unpersisting HttpBroadcast on executors only in distributed mode") { + testUnpersistHttpBroadcast(distributed = true, removeFromDriver = false) + } + + test("Unpersisting HttpBroadcast on executors and driver in distributed mode") { + testUnpersistHttpBroadcast(distributed = true, removeFromDriver = true) + } + + test("Unpersisting TorrentBroadcast on executors only in local mode") { + testUnpersistTorrentBroadcast(distributed = false, removeFromDriver = false) + } + + test("Unpersisting TorrentBroadcast on executors and driver in local mode") { + testUnpersistTorrentBroadcast(distributed = false, removeFromDriver = true) + } + + test("Unpersisting TorrentBroadcast on executors only in distributed mode") { + testUnpersistTorrentBroadcast(distributed = true, removeFromDriver = false) + } + + test("Unpersisting TorrentBroadcast on executors and driver in distributed mode") { + testUnpersistTorrentBroadcast(distributed = true, removeFromDriver = true) + } + /** + * Verify the persistence of state associated with an HttpBroadcast in either local mode or + * local-cluster mode (when distributed = true). + * + * This test creates a broadcast variable, uses it on all executors, and then unpersists it. + * In between each step, this test verifies that the broadcast blocks and the broadcast file + * are present only on the expected nodes. + */ + private def testUnpersistHttpBroadcast(distributed: Boolean, removeFromDriver: Boolean) { + val numSlaves = if (distributed) 2 else 0 + + def getBlockIds(id: Long) = Seq[BroadcastBlockId](BroadcastBlockId(id)) + + // Verify that the broadcast file is created, and blocks are persisted only on the driver + def afterCreation(blockIds: Seq[BroadcastBlockId], bmm: BlockManagerMaster) { + assert(blockIds.size === 1) + val statuses = bmm.getBlockStatus(blockIds.head, askSlaves = true) + assert(statuses.size === 1) + statuses.head match { case (bm, status) => + assert(bm.executorId === "", "Block should only be on the driver") + assert(status.storageLevel === StorageLevel.MEMORY_AND_DISK) + assert(status.memSize > 0, "Block should be in memory store on the driver") + assert(status.diskSize === 0, "Block should not be in disk store on the driver") + } + if (distributed) { + // this file is only generated in distributed mode + assert(HttpBroadcast.getFile(blockIds.head.broadcastId).exists, "Broadcast file not found!") + } + } + + // Verify that blocks are persisted in both the executors and the driver + def afterUsingBroadcast(blockIds: Seq[BroadcastBlockId], bmm: BlockManagerMaster) { + assert(blockIds.size === 1) + val statuses = bmm.getBlockStatus(blockIds.head, askSlaves = true) + assert(statuses.size === numSlaves + 1) + statuses.foreach { case (_, status) => + assert(status.storageLevel === StorageLevel.MEMORY_AND_DISK) + assert(status.memSize > 0, "Block should be in memory store") + assert(status.diskSize === 0, "Block should not be in disk store") + } + } + + // Verify that blocks are unpersisted on all executors, and on all nodes if removeFromDriver + // is true. In the latter case, also verify that the broadcast file is deleted on the driver. + def afterUnpersist(blockIds: Seq[BroadcastBlockId], bmm: BlockManagerMaster) { + assert(blockIds.size === 1) + val statuses = bmm.getBlockStatus(blockIds.head, askSlaves = true) + val expectedNumBlocks = if (removeFromDriver) 0 else 1 + val possiblyNot = if (removeFromDriver) "" else " not" + assert(statuses.size === expectedNumBlocks, + "Block should%s be unpersisted on the driver".format(possiblyNot)) + if (distributed && removeFromDriver) { + // this file is only generated in distributed mode + assert(!HttpBroadcast.getFile(blockIds.head.broadcastId).exists, + "Broadcast file should%s be deleted".format(possiblyNot)) + } + } + + testUnpersistBroadcast(distributed, numSlaves, httpConf, getBlockIds, afterCreation, + afterUsingBroadcast, afterUnpersist, removeFromDriver) + } + + /** + * Verify the persistence of state associated with an TorrentBroadcast in a local-cluster. + * + * This test creates a broadcast variable, uses it on all executors, and then unpersists it. + * In between each step, this test verifies that the broadcast blocks are present only on the + * expected nodes. + */ + private def testUnpersistTorrentBroadcast(distributed: Boolean, removeFromDriver: Boolean) { + val numSlaves = if (distributed) 2 else 0 + + def getBlockIds(id: Long) = { + val broadcastBlockId = BroadcastBlockId(id) + val metaBlockId = BroadcastBlockId(id, "meta") + // Assume broadcast value is small enough to fit into 1 piece + val pieceBlockId = BroadcastBlockId(id, "piece0") + if (distributed) { + // the metadata and piece blocks are generated only in distributed mode + Seq[BroadcastBlockId](broadcastBlockId, metaBlockId, pieceBlockId) + } else { + Seq[BroadcastBlockId](broadcastBlockId) + } + } + + // Verify that blocks are persisted only on the driver + def afterCreation(blockIds: Seq[BroadcastBlockId], bmm: BlockManagerMaster) { + blockIds.foreach { blockId => + val statuses = bmm.getBlockStatus(blockIds.head, askSlaves = true) + assert(statuses.size === 1) + statuses.head match { case (bm, status) => + assert(bm.executorId === "", "Block should only be on the driver") + assert(status.storageLevel === StorageLevel.MEMORY_AND_DISK) + assert(status.memSize > 0, "Block should be in memory store on the driver") + assert(status.diskSize === 0, "Block should not be in disk store on the driver") + } + } + } + + // Verify that blocks are persisted in both the executors and the driver + def afterUsingBroadcast(blockIds: Seq[BroadcastBlockId], bmm: BlockManagerMaster) { + blockIds.foreach { blockId => + val statuses = bmm.getBlockStatus(blockId, askSlaves = true) + if (blockId.field == "meta") { + // Meta data is only on the driver + assert(statuses.size === 1) + statuses.head match { case (bm, _) => assert(bm.executorId === "") } + } else { + // Other blocks are on both the executors and the driver + assert(statuses.size === numSlaves + 1, + blockId + " has " + statuses.size + " statuses: " + statuses.mkString(",")) + statuses.foreach { case (_, status) => + assert(status.storageLevel === StorageLevel.MEMORY_AND_DISK) + assert(status.memSize > 0, "Block should be in memory store") + assert(status.diskSize === 0, "Block should not be in disk store") + } + } + } + } + + // Verify that blocks are unpersisted on all executors, and on all nodes if removeFromDriver + // is true. + def afterUnpersist(blockIds: Seq[BroadcastBlockId], bmm: BlockManagerMaster) { + val expectedNumBlocks = if (removeFromDriver) 0 else 1 + val possiblyNot = if (removeFromDriver) "" else " not" + blockIds.foreach { blockId => + val statuses = bmm.getBlockStatus(blockId, askSlaves = true) + assert(statuses.size === expectedNumBlocks, + "Block should%s be unpersisted on the driver".format(possiblyNot)) + } + } + + testUnpersistBroadcast(distributed, numSlaves, torrentConf, getBlockIds, afterCreation, + afterUsingBroadcast, afterUnpersist, removeFromDriver) + } + + /** + * This test runs in 4 steps: + * + * 1) Create broadcast variable, and verify that all state is persisted on the driver. + * 2) Use the broadcast variable on all executors, and verify that all state is persisted + * on both the driver and the executors. + * 3) Unpersist the broadcast, and verify that all state is removed where they should be. + * 4) [Optional] If removeFromDriver is false, we verify that the broadcast is re-usable. + */ + private def testUnpersistBroadcast( + distributed: Boolean, + numSlaves: Int, // used only when distributed = true + broadcastConf: SparkConf, + getBlockIds: Long => Seq[BroadcastBlockId], + afterCreation: (Seq[BroadcastBlockId], BlockManagerMaster) => Unit, + afterUsingBroadcast: (Seq[BroadcastBlockId], BlockManagerMaster) => Unit, + afterUnpersist: (Seq[BroadcastBlockId], BlockManagerMaster) => Unit, + removeFromDriver: Boolean) { + + sc = if (distributed) { + new SparkContext("local-cluster[%d, 1, 512]".format(numSlaves), "test", broadcastConf) + } else { + new SparkContext("local", "test", broadcastConf) + } + val blockManagerMaster = sc.env.blockManager.master + val list = List[Int](1, 2, 3, 4) + + // Create broadcast variable + val broadcast = sc.broadcast(list) + val blocks = getBlockIds(broadcast.id) + afterCreation(blocks, blockManagerMaster) + + // Use broadcast variable on all executors + val partitions = 10 + assert(partitions > numSlaves) + val results = sc.parallelize(1 to partitions, partitions).map(x => (x, broadcast.value.sum)) + assert(results.collect().toSet === (1 to partitions).map(x => (x, list.sum)).toSet) + afterUsingBroadcast(blocks, blockManagerMaster) + + // Unpersist broadcast + if (removeFromDriver) { + broadcast.destroy(blocking = true) + } else { + broadcast.unpersist(blocking = true) + } + afterUnpersist(blocks, blockManagerMaster) + + // If the broadcast is removed from driver, all subsequent uses of the broadcast variable + // should throw SparkExceptions. Otherwise, the result should be the same as before. + if (removeFromDriver) { + // Using this variable on the executors crashes them, which hangs the test. + // Instead, crash the driver by directly accessing the broadcast value. + intercept[SparkException] { broadcast.value } + intercept[SparkException] { broadcast.unpersist() } + intercept[SparkException] { broadcast.destroy(blocking = true) } + } else { + val results = sc.parallelize(1 to partitions, partitions).map(x => (x, broadcast.value.sum)) + assert(results.collect().toSet === (1 to partitions).map(x => (x, list.sum)).toSet) + } } + /** Helper method to create a SparkConf that uses the given broadcast factory. */ + private def broadcastConf(factoryName: String): SparkConf = { + val conf = new SparkConf + conf.set("spark.broadcast.factory", "org.apache.spark.broadcast.%s".format(factoryName)) + conf + } } diff --git a/core/src/test/scala/org/apache/spark/CacheManagerSuite.scala b/core/src/test/scala/org/apache/spark/CacheManagerSuite.scala index ea936e815b24a..b86923f07f793 100644 --- a/core/src/test/scala/org/apache/spark/CacheManagerSuite.scala +++ b/core/src/test/scala/org/apache/spark/CacheManagerSuite.scala @@ -23,7 +23,8 @@ import org.scalatest.{BeforeAndAfter, FunSuite} import org.scalatest.mock.EasyMockSugar import org.apache.spark.rdd.RDD -import org.apache.spark.storage.{BlockManager, RDDBlockId, StorageLevel} +import org.apache.spark.executor.TaskMetrics +import org.apache.spark.storage._ // TODO: Test the CacheManager's thread-safety aspects class CacheManagerSuite extends FunSuite with BeforeAndAfter with EasyMockSugar { @@ -54,12 +55,12 @@ class CacheManagerSuite extends FunSuite with BeforeAndAfter with EasyMockSugar expecting { blockManager.get(RDDBlockId(0, 0)).andReturn(None) blockManager.put(RDDBlockId(0, 0), ArrayBuffer[Any](1, 2, 3, 4), StorageLevel.MEMORY_ONLY, - true).andReturn(0) + true).andStubReturn(Seq[(BlockId, BlockStatus)]()) } whenExecuting(blockManager) { val context = new TaskContext(0, 0, 0, interrupted = false, runningLocally = false, - taskMetrics = null) + taskMetrics = TaskMetrics.empty()) val value = cacheManager.getOrCompute(rdd, split, context, StorageLevel.MEMORY_ONLY) assert(value.toList === List(1, 2, 3, 4)) } @@ -72,7 +73,7 @@ class CacheManagerSuite extends FunSuite with BeforeAndAfter with EasyMockSugar whenExecuting(blockManager) { val context = new TaskContext(0, 0, 0, interrupted = false, runningLocally = false, - taskMetrics = null) + taskMetrics = TaskMetrics.empty()) val value = cacheManager.getOrCompute(rdd, split, context, StorageLevel.MEMORY_ONLY) assert(value.toList === List(5, 6, 7)) } @@ -86,7 +87,7 @@ class CacheManagerSuite extends FunSuite with BeforeAndAfter with EasyMockSugar whenExecuting(blockManager) { val context = new TaskContext(0, 0, 0, runningLocally = true, interrupted = false, - taskMetrics = null) + taskMetrics = TaskMetrics.empty()) val value = cacheManager.getOrCompute(rdd, split, context, StorageLevel.MEMORY_ONLY) assert(value.toList === List(1, 2, 3, 4)) } diff --git a/core/src/test/scala/org/apache/spark/CheckpointSuite.scala b/core/src/test/scala/org/apache/spark/CheckpointSuite.scala index d2e29f20f0b08..d2555b7c052c1 100644 --- a/core/src/test/scala/org/apache/spark/CheckpointSuite.scala +++ b/core/src/test/scala/org/apache/spark/CheckpointSuite.scala @@ -432,7 +432,6 @@ object CheckpointSuite { // This is a custom cogroup function that does not use mapValues like // the PairRDDFunctions.cogroup() def cogroup[K, V](first: RDD[(K, V)], second: RDD[(K, V)], part: Partitioner) = { - //println("First = " + first + ", second = " + second) new CoGroupedRDD[K]( Seq(first.asInstanceOf[RDD[(K, _)]], second.asInstanceOf[RDD[(K, _)]]), part diff --git a/core/src/test/scala/org/apache/spark/ContextCleanerSuite.scala b/core/src/test/scala/org/apache/spark/ContextCleanerSuite.scala new file mode 100644 index 0000000000000..e50981cf6fb20 --- /dev/null +++ b/core/src/test/scala/org/apache/spark/ContextCleanerSuite.scala @@ -0,0 +1,415 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark + +import java.lang.ref.WeakReference + +import scala.collection.mutable.{HashSet, SynchronizedSet} +import scala.util.Random + +import org.scalatest.{BeforeAndAfter, FunSuite} +import org.scalatest.concurrent.Eventually +import org.scalatest.concurrent.Eventually._ +import org.scalatest.time.SpanSugar._ + +import org.apache.spark.SparkContext._ +import org.apache.spark.rdd.RDD +import org.apache.spark.storage.{BlockId, BroadcastBlockId, RDDBlockId, ShuffleBlockId} + +class ContextCleanerSuite extends FunSuite with BeforeAndAfter with LocalSparkContext { + + implicit val defaultTimeout = timeout(10000 millis) + val conf = new SparkConf() + .setMaster("local[2]") + .setAppName("ContextCleanerSuite") + .set("spark.cleaner.referenceTracking.blocking", "true") + + before { + sc = new SparkContext(conf) + } + + after { + if (sc != null) { + sc.stop() + sc = null + } + } + + + test("cleanup RDD") { + val rdd = newRDD.persist() + val collected = rdd.collect().toList + val tester = new CleanerTester(sc, rddIds = Seq(rdd.id)) + + // Explicit cleanup + cleaner.doCleanupRDD(rdd.id, blocking = true) + tester.assertCleanup() + + // Verify that RDDs can be re-executed after cleaning up + assert(rdd.collect().toList === collected) + } + + test("cleanup shuffle") { + val (rdd, shuffleDeps) = newRDDWithShuffleDependencies + val collected = rdd.collect().toList + val tester = new CleanerTester(sc, shuffleIds = shuffleDeps.map(_.shuffleId)) + + // Explicit cleanup + shuffleDeps.foreach(s => cleaner.doCleanupShuffle(s.shuffleId, blocking = true)) + tester.assertCleanup() + + // Verify that shuffles can be re-executed after cleaning up + assert(rdd.collect().toList === collected) + } + + test("cleanup broadcast") { + val broadcast = newBroadcast + val tester = new CleanerTester(sc, broadcastIds = Seq(broadcast.id)) + + // Explicit cleanup + cleaner.doCleanupBroadcast(broadcast.id, blocking = true) + tester.assertCleanup() + } + + test("automatically cleanup RDD") { + var rdd = newRDD.persist() + rdd.count() + + // Test that GC does not cause RDD cleanup due to a strong reference + val preGCTester = new CleanerTester(sc, rddIds = Seq(rdd.id)) + runGC() + intercept[Exception] { + preGCTester.assertCleanup()(timeout(1000 millis)) + } + + // Test that GC causes RDD cleanup after dereferencing the RDD + val postGCTester = new CleanerTester(sc, rddIds = Seq(rdd.id)) + rdd = null // Make RDD out of scope + runGC() + postGCTester.assertCleanup() + } + + test("automatically cleanup shuffle") { + var rdd = newShuffleRDD + rdd.count() + + // Test that GC does not cause shuffle cleanup due to a strong reference + val preGCTester = new CleanerTester(sc, shuffleIds = Seq(0)) + runGC() + intercept[Exception] { + preGCTester.assertCleanup()(timeout(1000 millis)) + } + + // Test that GC causes shuffle cleanup after dereferencing the RDD + val postGCTester = new CleanerTester(sc, shuffleIds = Seq(0)) + rdd = null // Make RDD out of scope, so that corresponding shuffle goes out of scope + runGC() + postGCTester.assertCleanup() + } + + test("automatically cleanup broadcast") { + var broadcast = newBroadcast + + // Test that GC does not cause broadcast cleanup due to a strong reference + val preGCTester = new CleanerTester(sc, broadcastIds = Seq(broadcast.id)) + runGC() + intercept[Exception] { + preGCTester.assertCleanup()(timeout(1000 millis)) + } + + // Test that GC causes broadcast cleanup after dereferencing the broadcast variable + val postGCTester = new CleanerTester(sc, broadcastIds = Seq(broadcast.id)) + broadcast = null // Make broadcast variable out of scope + runGC() + postGCTester.assertCleanup() + } + + test("automatically cleanup RDD + shuffle + broadcast") { + val numRdds = 100 + val numBroadcasts = 4 // Broadcasts are more costly + val rddBuffer = (1 to numRdds).map(i => randomRdd).toBuffer + val broadcastBuffer = (1 to numBroadcasts).map(i => randomBroadcast).toBuffer + val rddIds = sc.persistentRdds.keys.toSeq + val shuffleIds = 0 until sc.newShuffleId + val broadcastIds = 0L until numBroadcasts + + val preGCTester = new CleanerTester(sc, rddIds, shuffleIds, broadcastIds) + runGC() + intercept[Exception] { + preGCTester.assertCleanup()(timeout(1000 millis)) + } + + // Test that GC triggers the cleanup of all variables after the dereferencing them + val postGCTester = new CleanerTester(sc, rddIds, shuffleIds, broadcastIds) + broadcastBuffer.clear() + rddBuffer.clear() + runGC() + postGCTester.assertCleanup() + } + + test("automatically cleanup RDD + shuffle + broadcast in distributed mode") { + sc.stop() + + val conf2 = new SparkConf() + .setMaster("local-cluster[2, 1, 512]") + .setAppName("ContextCleanerSuite") + .set("spark.cleaner.referenceTracking.blocking", "true") + sc = new SparkContext(conf2) + + val numRdds = 10 + val numBroadcasts = 4 // Broadcasts are more costly + val rddBuffer = (1 to numRdds).map(i => randomRdd).toBuffer + val broadcastBuffer = (1 to numBroadcasts).map(i => randomBroadcast).toBuffer + val rddIds = sc.persistentRdds.keys.toSeq + val shuffleIds = 0 until sc.newShuffleId + val broadcastIds = 0L until numBroadcasts + + val preGCTester = new CleanerTester(sc, rddIds, shuffleIds, broadcastIds) + runGC() + intercept[Exception] { + preGCTester.assertCleanup()(timeout(1000 millis)) + } + + // Test that GC triggers the cleanup of all variables after the dereferencing them + val postGCTester = new CleanerTester(sc, rddIds, shuffleIds, broadcastIds) + broadcastBuffer.clear() + rddBuffer.clear() + runGC() + postGCTester.assertCleanup() + } + + //------ Helper functions ------ + + def newRDD = sc.makeRDD(1 to 10) + def newPairRDD = newRDD.map(_ -> 1) + def newShuffleRDD = newPairRDD.reduceByKey(_ + _) + def newBroadcast = sc.broadcast(1 to 100) + def newRDDWithShuffleDependencies: (RDD[_], Seq[ShuffleDependency[_, _]]) = { + def getAllDependencies(rdd: RDD[_]): Seq[Dependency[_]] = { + rdd.dependencies ++ rdd.dependencies.flatMap { dep => + getAllDependencies(dep.rdd) + } + } + val rdd = newShuffleRDD + + // Get all the shuffle dependencies + val shuffleDeps = getAllDependencies(rdd) + .filter(_.isInstanceOf[ShuffleDependency[_, _]]) + .map(_.asInstanceOf[ShuffleDependency[_, _]]) + (rdd, shuffleDeps) + } + + def randomRdd = { + val rdd: RDD[_] = Random.nextInt(3) match { + case 0 => newRDD + case 1 => newShuffleRDD + case 2 => newPairRDD.join(newPairRDD) + } + if (Random.nextBoolean()) rdd.persist() + rdd.count() + rdd + } + + def randomBroadcast = { + sc.broadcast(Random.nextInt(Int.MaxValue)) + } + + /** Run GC and make sure it actually has run */ + def runGC() { + val weakRef = new WeakReference(new Object()) + val startTime = System.currentTimeMillis + System.gc() // Make a best effort to run the garbage collection. It *usually* runs GC. + // Wait until a weak reference object has been GCed + while(System.currentTimeMillis - startTime < 10000 && weakRef.get != null) { + System.gc() + Thread.sleep(200) + } + } + + def cleaner = sc.cleaner.get +} + + +/** Class to test whether RDDs, shuffles, etc. have been successfully cleaned. */ +class CleanerTester( + sc: SparkContext, + rddIds: Seq[Int] = Seq.empty, + shuffleIds: Seq[Int] = Seq.empty, + broadcastIds: Seq[Long] = Seq.empty) + extends Logging { + + val toBeCleanedRDDIds = new HashSet[Int] with SynchronizedSet[Int] ++= rddIds + val toBeCleanedShuffleIds = new HashSet[Int] with SynchronizedSet[Int] ++= shuffleIds + val toBeCleanedBroadcstIds = new HashSet[Long] with SynchronizedSet[Long] ++= broadcastIds + val isDistributed = !sc.isLocal + + val cleanerListener = new CleanerListener { + def rddCleaned(rddId: Int): Unit = { + toBeCleanedRDDIds -= rddId + logInfo("RDD "+ rddId + " cleaned") + } + + def shuffleCleaned(shuffleId: Int): Unit = { + toBeCleanedShuffleIds -= shuffleId + logInfo("Shuffle " + shuffleId + " cleaned") + } + + def broadcastCleaned(broadcastId: Long): Unit = { + toBeCleanedBroadcstIds -= broadcastId + logInfo("Broadcast" + broadcastId + " cleaned") + } + } + + val MAX_VALIDATION_ATTEMPTS = 10 + val VALIDATION_ATTEMPT_INTERVAL = 100 + + logInfo("Attempting to validate before cleanup:\n" + uncleanedResourcesToString) + preCleanupValidate() + sc.cleaner.get.attachListener(cleanerListener) + + /** Assert that all the stuff has been cleaned up */ + def assertCleanup()(implicit waitTimeout: Eventually.Timeout) { + try { + eventually(waitTimeout, interval(100 millis)) { + assert(isAllCleanedUp) + } + postCleanupValidate() + } finally { + logInfo("Resources left from cleaning up:\n" + uncleanedResourcesToString) + } + } + + /** Verify that RDDs, shuffles, etc. occupy resources */ + private def preCleanupValidate() { + assert(rddIds.nonEmpty || shuffleIds.nonEmpty || broadcastIds.nonEmpty, "Nothing to cleanup") + + // Verify the RDDs have been persisted and blocks are present + rddIds.foreach { rddId => + assert( + sc.persistentRdds.contains(rddId), + "RDD " + rddId + " have not been persisted, cannot start cleaner test" + ) + + assert( + !getRDDBlocks(rddId).isEmpty, + "Blocks of RDD " + rddId + " cannot be found in block manager, " + + "cannot start cleaner test" + ) + } + + // Verify the shuffle ids are registered and blocks are present + shuffleIds.foreach { shuffleId => + assert( + mapOutputTrackerMaster.containsShuffle(shuffleId), + "Shuffle " + shuffleId + " have not been registered, cannot start cleaner test" + ) + + assert( + !getShuffleBlocks(shuffleId).isEmpty, + "Blocks of shuffle " + shuffleId + " cannot be found in block manager, " + + "cannot start cleaner test" + ) + } + + // Verify that the broadcast blocks are present + broadcastIds.foreach { broadcastId => + assert( + !getBroadcastBlocks(broadcastId).isEmpty, + "Blocks of broadcast " + broadcastId + "cannot be found in block manager, " + + "cannot start cleaner test" + ) + } + } + + /** + * Verify that RDDs, shuffles, etc. do not occupy resources. Tests multiple times as there is + * as there is not guarantee on how long it will take clean up the resources. + */ + private def postCleanupValidate() { + // Verify the RDDs have been persisted and blocks are present + rddIds.foreach { rddId => + assert( + !sc.persistentRdds.contains(rddId), + "RDD " + rddId + " was not cleared from sc.persistentRdds" + ) + + assert( + getRDDBlocks(rddId).isEmpty, + "Blocks of RDD " + rddId + " were not cleared from block manager" + ) + } + + // Verify the shuffle ids are registered and blocks are present + shuffleIds.foreach { shuffleId => + assert( + !mapOutputTrackerMaster.containsShuffle(shuffleId), + "Shuffle " + shuffleId + " was not deregistered from map output tracker" + ) + + assert( + getShuffleBlocks(shuffleId).isEmpty, + "Blocks of shuffle " + shuffleId + " were not cleared from block manager" + ) + } + + // Verify that the broadcast blocks are present + broadcastIds.foreach { broadcastId => + assert( + getBroadcastBlocks(broadcastId).isEmpty, + "Blocks of broadcast " + broadcastId + " were not cleared from block manager" + ) + } + } + + private def uncleanedResourcesToString = { + s""" + |\tRDDs = ${toBeCleanedRDDIds.toSeq.sorted.mkString("[", ", ", "]")} + |\tShuffles = ${toBeCleanedShuffleIds.toSeq.sorted.mkString("[", ", ", "]")} + |\tBroadcasts = ${toBeCleanedBroadcstIds.toSeq.sorted.mkString("[", ", ", "]")} + """.stripMargin + } + + private def isAllCleanedUp = + toBeCleanedRDDIds.isEmpty && + toBeCleanedShuffleIds.isEmpty && + toBeCleanedBroadcstIds.isEmpty + + private def getRDDBlocks(rddId: Int): Seq[BlockId] = { + blockManager.master.getMatchingBlockIds( _ match { + case RDDBlockId(`rddId`, _) => true + case _ => false + }, askSlaves = true) + } + + private def getShuffleBlocks(shuffleId: Int): Seq[BlockId] = { + blockManager.master.getMatchingBlockIds( _ match { + case ShuffleBlockId(`shuffleId`, _, _) => true + case _ => false + }, askSlaves = true) + } + + private def getBroadcastBlocks(broadcastId: Long): Seq[BlockId] = { + blockManager.master.getMatchingBlockIds( _ match { + case BroadcastBlockId(`broadcastId`, _) => true + case _ => false + }, askSlaves = true) + } + + private def blockManager = sc.env.blockManager + private def mapOutputTrackerMaster = sc.env.mapOutputTracker.asInstanceOf[MapOutputTrackerMaster] +} diff --git a/core/src/test/scala/org/apache/spark/FailureSuite.scala b/core/src/test/scala/org/apache/spark/FailureSuite.scala index f3fb64d87a2fd..12dbebcb28644 100644 --- a/core/src/test/scala/org/apache/spark/FailureSuite.scala +++ b/core/src/test/scala/org/apache/spark/FailureSuite.scala @@ -72,7 +72,7 @@ class FailureSuite extends FunSuite with LocalSparkContext { throw new Exception("Intentional task failure") } } - (k, v(0) * v(0)) + (k, v.head * v.head) }.collect() FailureSuiteState.synchronized { assert(FailureSuiteState.tasksRun === 4) @@ -137,5 +137,3 @@ class FailureSuite extends FunSuite with LocalSparkContext { // TODO: Need to add tests with shuffle fetch failures. } - - diff --git a/core/src/test/scala/org/apache/spark/FileSuite.scala b/core/src/test/scala/org/apache/spark/FileSuite.scala index 76173608e9f70..01af94077144a 100644 --- a/core/src/test/scala/org/apache/spark/FileSuite.scala +++ b/core/src/test/scala/org/apache/spark/FileSuite.scala @@ -24,11 +24,12 @@ import scala.io.Source import com.google.common.io.Files import org.apache.hadoop.io._ import org.apache.hadoop.io.compress.DefaultCodec -import org.apache.hadoop.mapred.FileAlreadyExistsException +import org.apache.hadoop.mapred.{JobConf, FileAlreadyExistsException, TextOutputFormat} +import org.apache.hadoop.mapreduce.lib.output.{TextOutputFormat => NewTextOutputFormat} +import org.apache.hadoop.mapreduce.Job import org.scalatest.FunSuite import org.apache.spark.SparkContext._ -import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat class FileSuite extends FunSuite with LocalSparkContext { @@ -236,7 +237,7 @@ class FileSuite extends FunSuite with LocalSparkContext { val tempdir = Files.createTempDir() val randomRDD = sc.parallelize(Array(("key1", "a"), ("key2", "a"), ("key3", "b"), ("key4", "c")), 1) intercept[FileAlreadyExistsException] { - randomRDD.saveAsNewAPIHadoopFile[TextOutputFormat[String, String]](tempdir.getPath) + randomRDD.saveAsNewAPIHadoopFile[NewTextOutputFormat[String, String]](tempdir.getPath) } } @@ -244,10 +245,36 @@ class FileSuite extends FunSuite with LocalSparkContext { sc = new SparkContext("local", "test") val tempdir = Files.createTempDir() val randomRDD = sc.parallelize(Array(("key1", "a"), ("key2", "a"), ("key3", "b"), ("key4", "c")), 1) - randomRDD.saveAsTextFile(tempdir.getPath + "/output") - assert(new File(tempdir.getPath + "/output/part-00000").exists() === true) + randomRDD.saveAsNewAPIHadoopFile[NewTextOutputFormat[String, String]](tempdir.getPath + "/output") + assert(new File(tempdir.getPath + "/output/part-r-00000").exists() === true) intercept[FileAlreadyExistsException] { - randomRDD.saveAsNewAPIHadoopFile[TextOutputFormat[String, String]](tempdir.getPath) + randomRDD.saveAsNewAPIHadoopFile[NewTextOutputFormat[String, String]](tempdir.getPath) } } + + test ("save Hadoop Dataset through old Hadoop API") { + sc = new SparkContext("local", "test") + val tempdir = Files.createTempDir() + val randomRDD = sc.parallelize(Array(("key1", "a"), ("key2", "a"), ("key3", "b"), ("key4", "c")), 1) + val job = new JobConf() + job.setOutputKeyClass(classOf[String]) + job.setOutputValueClass(classOf[String]) + job.set("mapred.output.format.class", classOf[TextOutputFormat[String, String]].getName) + job.set("mapred.output.dir", tempdir.getPath + "/outputDataset_old") + randomRDD.saveAsHadoopDataset(job) + assert(new File(tempdir.getPath + "/outputDataset_old/part-00000").exists() === true) + } + + test ("save Hadoop Dataset through new Hadoop API") { + sc = new SparkContext("local", "test") + val tempdir = Files.createTempDir() + val randomRDD = sc.parallelize(Array(("key1", "a"), ("key2", "a"), ("key3", "b"), ("key4", "c")), 1) + val job = new Job(sc.hadoopConfiguration) + job.setOutputKeyClass(classOf[String]) + job.setOutputValueClass(classOf[String]) + job.setOutputFormatClass(classOf[NewTextOutputFormat[String, String]]) + job.getConfiguration.set("mapred.output.dir", tempdir.getPath + "/outputDataset_new") + randomRDD.saveAsNewAPIHadoopDataset(job.getConfiguration) + assert(new File(tempdir.getPath + "/outputDataset_new/part-r-00000").exists() === true) + } } diff --git a/core/src/test/scala/org/apache/spark/JobCancellationSuite.scala b/core/src/test/scala/org/apache/spark/JobCancellationSuite.scala index 20c503d30c801..7a39d1af9e2d5 100644 --- a/core/src/test/scala/org/apache/spark/JobCancellationSuite.scala +++ b/core/src/test/scala/org/apache/spark/JobCancellationSuite.scala @@ -28,7 +28,7 @@ import org.scalatest.{BeforeAndAfter, FunSuite} import org.scalatest.matchers.ShouldMatchers import org.apache.spark.SparkContext._ -import org.apache.spark.scheduler.{SparkListenerTaskStart, SparkListener} +import org.apache.spark.scheduler.{SparkListener, SparkListenerTaskStart} /** * Test suite for cancelling running jobs. We run the cancellation tasks for single job action @@ -89,7 +89,7 @@ class JobCancellationSuite extends FunSuite with ShouldMatchers with BeforeAndAf // Add a listener to release the semaphore once any tasks are launched. val sem = new Semaphore(0) - sc.dagScheduler.addSparkListener(new SparkListener { + sc.addSparkListener(new SparkListener { override def onTaskStart(taskStart: SparkListenerTaskStart) { sem.release() } @@ -161,7 +161,7 @@ class JobCancellationSuite extends FunSuite with ShouldMatchers with BeforeAndAf { // Add a listener to release the semaphore once any tasks are launched. val sem = new Semaphore(0) - sc.dagScheduler.addSparkListener(new SparkListener { + sc.addSparkListener(new SparkListener { override def onTaskStart(taskStart: SparkListenerTaskStart) { sem.release() } @@ -191,7 +191,7 @@ class JobCancellationSuite extends FunSuite with ShouldMatchers with BeforeAndAf { // Add a listener to release the semaphore once any tasks are launched. val sem = new Semaphore(0) - sc.dagScheduler.addSparkListener(new SparkListener { + sc.addSparkListener(new SparkListener { override def onTaskStart(taskStart: SparkListenerTaskStart) { sem.release() } diff --git a/core/src/test/scala/org/apache/spark/MapOutputTrackerSuite.scala b/core/src/test/scala/org/apache/spark/MapOutputTrackerSuite.scala index 8efa072a97911..6b2571cd9295e 100644 --- a/core/src/test/scala/org/apache/spark/MapOutputTrackerSuite.scala +++ b/core/src/test/scala/org/apache/spark/MapOutputTrackerSuite.scala @@ -20,6 +20,7 @@ package org.apache.spark import scala.concurrent.Await import akka.actor._ +import akka.testkit.TestActorRef import org.scalatest.FunSuite import org.apache.spark.scheduler.MapStatus @@ -51,15 +52,18 @@ class MapOutputTrackerSuite extends FunSuite with LocalSparkContext { test("master start and stop") { val actorSystem = ActorSystem("test") val tracker = new MapOutputTrackerMaster(conf) - tracker.trackerActor = actorSystem.actorOf(Props(new MapOutputTrackerMasterActor(tracker))) + tracker.trackerActor = + actorSystem.actorOf(Props(new MapOutputTrackerMasterActor(tracker, conf))) tracker.stop() } - test("master register and fetch") { + test("master register shuffle and fetch") { val actorSystem = ActorSystem("test") val tracker = new MapOutputTrackerMaster(conf) - tracker.trackerActor = actorSystem.actorOf(Props(new MapOutputTrackerMasterActor(tracker))) + tracker.trackerActor = + actorSystem.actorOf(Props(new MapOutputTrackerMasterActor(tracker, conf))) tracker.registerShuffle(10, 2) + assert(tracker.containsShuffle(10)) val compressedSize1000 = MapOutputTracker.compressSize(1000L) val compressedSize10000 = MapOutputTracker.compressSize(10000L) val size1000 = MapOutputTracker.decompressSize(compressedSize1000) @@ -74,10 +78,29 @@ class MapOutputTrackerSuite extends FunSuite with LocalSparkContext { tracker.stop() } - test("master register and unregister and fetch") { + test("master register and unregister shuffle") { val actorSystem = ActorSystem("test") val tracker = new MapOutputTrackerMaster(conf) - tracker.trackerActor = actorSystem.actorOf(Props(new MapOutputTrackerMasterActor(tracker))) + tracker.trackerActor = actorSystem.actorOf(Props(new MapOutputTrackerMasterActor(tracker, conf))) + tracker.registerShuffle(10, 2) + val compressedSize1000 = MapOutputTracker.compressSize(1000L) + val compressedSize10000 = MapOutputTracker.compressSize(10000L) + tracker.registerMapOutput(10, 0, new MapStatus(BlockManagerId("a", "hostA", 1000, 0), + Array(compressedSize1000, compressedSize10000))) + tracker.registerMapOutput(10, 1, new MapStatus(BlockManagerId("b", "hostB", 1000, 0), + Array(compressedSize10000, compressedSize1000))) + assert(tracker.containsShuffle(10)) + assert(tracker.getServerStatuses(10, 0).nonEmpty) + tracker.unregisterShuffle(10) + assert(!tracker.containsShuffle(10)) + assert(tracker.getServerStatuses(10, 0).isEmpty) + } + + test("master register shuffle and unregister map output and fetch") { + val actorSystem = ActorSystem("test") + val tracker = new MapOutputTrackerMaster(conf) + tracker.trackerActor = + actorSystem.actorOf(Props(new MapOutputTrackerMasterActor(tracker, conf))) tracker.registerShuffle(10, 2) val compressedSize1000 = MapOutputTracker.compressSize(1000L) val compressedSize10000 = MapOutputTracker.compressSize(10000L) @@ -100,15 +123,17 @@ class MapOutputTrackerSuite extends FunSuite with LocalSparkContext { val hostname = "localhost" val (actorSystem, boundPort) = AkkaUtils.createActorSystem("spark", hostname, 0, conf = conf, securityManager = new SecurityManager(conf)) - System.setProperty("spark.driver.port", boundPort.toString) // Will be cleared by LocalSparkContext + + // Will be cleared by LocalSparkContext + System.setProperty("spark.driver.port", boundPort.toString) val masterTracker = new MapOutputTrackerMaster(conf) masterTracker.trackerActor = actorSystem.actorOf( - Props(new MapOutputTrackerMasterActor(masterTracker)), "MapOutputTracker") + Props(new MapOutputTrackerMasterActor(masterTracker, conf)), "MapOutputTracker") val (slaveSystem, _) = AkkaUtils.createActorSystem("spark-slave", hostname, 0, conf = conf, securityManager = new SecurityManager(conf)) - val slaveTracker = new MapOutputTracker(conf) + val slaveTracker = new MapOutputTrackerWorker(conf) val selection = slaveSystem.actorSelection( s"akka.tcp://spark@localhost:$boundPort/user/MapOutputTracker") val timeout = AkkaUtils.lookupTimeout(conf) @@ -126,7 +151,7 @@ class MapOutputTrackerSuite extends FunSuite with LocalSparkContext { masterTracker.incrementEpoch() slaveTracker.updateEpoch(masterTracker.getEpoch) assert(slaveTracker.getServerStatuses(10, 0).toSeq === - Seq((BlockManagerId("a", "hostA", 1000, 0), size1000))) + Seq((BlockManagerId("a", "hostA", 1000, 0), size1000))) masterTracker.unregisterMapOutput(10, 0, BlockManagerId("a", "hostA", 1000, 0)) masterTracker.incrementEpoch() @@ -136,4 +161,44 @@ class MapOutputTrackerSuite extends FunSuite with LocalSparkContext { // failure should be cached intercept[FetchFailedException] { slaveTracker.getServerStatuses(10, 0) } } + + test("remote fetch below akka frame size") { + val newConf = new SparkConf + newConf.set("spark.akka.frameSize", "1") + newConf.set("spark.akka.askTimeout", "1") // Fail fast + + val masterTracker = new MapOutputTrackerMaster(conf) + val actorSystem = ActorSystem("test") + val actorRef = TestActorRef[MapOutputTrackerMasterActor]( + new MapOutputTrackerMasterActor(masterTracker, newConf))(actorSystem) + val masterActor = actorRef.underlyingActor + + // Frame size should be ~123B, and no exception should be thrown + masterTracker.registerShuffle(10, 1) + masterTracker.registerMapOutput(10, 0, new MapStatus( + BlockManagerId("88", "mph", 1000, 0), Array.fill[Byte](10)(0))) + masterActor.receive(GetMapOutputStatuses(10)) + } + + test("remote fetch exceeds akka frame size") { + val newConf = new SparkConf + newConf.set("spark.akka.frameSize", "1") + newConf.set("spark.akka.askTimeout", "1") // Fail fast + + val masterTracker = new MapOutputTrackerMaster(conf) + val actorSystem = ActorSystem("test") + val actorRef = TestActorRef[MapOutputTrackerMasterActor]( + new MapOutputTrackerMasterActor(masterTracker, newConf))(actorSystem) + val masterActor = actorRef.underlyingActor + + // Frame size should be ~1.1MB, and MapOutputTrackerMasterActor should throw exception. + // Note that the size is hand-selected here because map output statuses are compressed before + // being sent. + masterTracker.registerShuffle(20, 100) + (0 until 100).foreach { i => + masterTracker.registerMapOutput(20, i, new MapStatus( + BlockManagerId("999", "mps", 1000, 0), Array.fill[Byte](4000000)(0))) + } + intercept[SparkException] { masterActor.receive(GetMapOutputStatuses(20)) } + } } diff --git a/core/src/test/scala/org/apache/spark/PartitioningSuite.scala b/core/src/test/scala/org/apache/spark/PartitioningSuite.scala index 4305686d3a6d5..7c30626a0c421 100644 --- a/core/src/test/scala/org/apache/spark/PartitioningSuite.scala +++ b/core/src/test/scala/org/apache/spark/PartitioningSuite.scala @@ -146,7 +146,7 @@ class PartitioningSuite extends FunSuite with SharedSparkContext with PrivateMet assert(intercept[SparkException]{ arrs.distinct() }.getMessage.contains("array")) // We can't catch all usages of arrays, since they might occur inside other collections: - //assert(fails { arrPairs.distinct() }) + // assert(fails { arrPairs.distinct() }) assert(intercept[SparkException]{ arrPairs.partitionBy(new HashPartitioner(2)) }.getMessage.contains("array")) assert(intercept[SparkException]{ arrPairs.join(arrPairs) }.getMessage.contains("array")) assert(intercept[SparkException]{ arrPairs.leftOuterJoin(arrPairs) }.getMessage.contains("array")) @@ -171,6 +171,8 @@ class PartitioningSuite extends FunSuite with SharedSparkContext with PrivateMet assert(abs(6.0/2 - rdd.mean) < 0.01) assert(abs(1.0 - rdd.variance) < 0.01) assert(abs(1.0 - rdd.stdev) < 0.01) + assert(stats.max === 4.0) + assert(stats.min === 2.0) // Add other tests here for classes that should be able to handle empty partitions correctly } diff --git a/core/src/test/scala/org/apache/spark/PipedRDDSuite.scala b/core/src/test/scala/org/apache/spark/PipedRDDSuite.scala index 0bac78d8a6bdf..867b28cc0d971 100644 --- a/core/src/test/scala/org/apache/spark/PipedRDDSuite.scala +++ b/core/src/test/scala/org/apache/spark/PipedRDDSuite.scala @@ -17,8 +17,11 @@ package org.apache.spark -import org.scalatest.FunSuite +import java.io.File + +import com.google.common.io.Files +import org.scalatest.FunSuite import org.apache.spark.rdd.{HadoopRDD, PipedRDD, HadoopPartition} import org.apache.hadoop.mapred.{JobConf, TextInputFormat, FileSplit} @@ -27,8 +30,11 @@ import org.apache.hadoop.fs.Path import scala.collection.Map import scala.sys.process._ import scala.util.Try + import org.apache.hadoop.io.{Text, LongWritable} +import org.apache.spark.executor.TaskMetrics + class PipedRDDSuite extends FunSuite with SharedSparkContext { test("basic pipe") { @@ -79,7 +85,7 @@ class PipedRDDSuite extends FunSuite with SharedSparkContext { (f: String => Unit) => { bl.value.map(f(_)); f("\u0001") }, - (i: Tuple2[String, Seq[String]], f: String => Unit) => { + (i: Tuple2[String, Iterable[String]], f: String => Unit) => { for (e <- i._2) { f(e + "_") } @@ -123,6 +129,29 @@ class PipedRDDSuite extends FunSuite with SharedSparkContext { } } + test("basic pipe with separate working directory") { + if (testCommandAvailable("cat")) { + val nums = sc.makeRDD(Array(1, 2, 3, 4), 2) + val piped = nums.pipe(Seq("cat"), separateWorkingDir = true) + val c = piped.collect() + assert(c.size === 4) + assert(c(0) === "1") + assert(c(1) === "2") + assert(c(2) === "3") + assert(c(3) === "4") + val pipedPwd = nums.pipe(Seq("pwd"), separateWorkingDir = true) + val collectPwd = pipedPwd.collect() + assert(collectPwd(0).contains("tasks/")) + val pipedLs = nums.pipe(Seq("ls"), separateWorkingDir = true).collect() + // make sure symlinks were created + assert(pipedLs.length > 0) + // clean up top level tasks directory + new File("tasks").delete() + } else { + assert(true) + } + } + test("test pipe exports map_input_file") { testExportInputFile("map_input_file") } @@ -151,7 +180,7 @@ class PipedRDDSuite extends FunSuite with SharedSparkContext { val hadoopPart1 = generateFakeHadoopPartition() val pipedRdd = new PipedRDD(nums, "printenv " + varName) val tContext = new TaskContext(0, 0, 0, interrupted = false, runningLocally = false, - taskMetrics = null) + taskMetrics = TaskMetrics.empty()) val rddIter = pipedRdd.compute(hadoopPart1, tContext) val arr = rddIter.toArray assert(arr(0) == "/some/path") diff --git a/core/src/test/scala/org/apache/spark/ShuffleSuite.scala b/core/src/test/scala/org/apache/spark/ShuffleSuite.scala index abea36f7c83df..be6508a40ea61 100644 --- a/core/src/test/scala/org/apache/spark/ShuffleSuite.scala +++ b/core/src/test/scala/org/apache/spark/ShuffleSuite.scala @@ -27,6 +27,9 @@ import org.apache.spark.serializer.KryoSerializer import org.apache.spark.util.MutablePair class ShuffleSuite extends FunSuite with ShouldMatchers with LocalSparkContext { + + val conf = new SparkConf(loadDefaults = false) + test("groupByKey without compression") { try { System.setProperty("spark.shuffle.compress", "false") @@ -54,7 +57,7 @@ class ShuffleSuite extends FunSuite with ShouldMatchers with LocalSparkContext { // If the Kryo serializer is not used correctly, the shuffle would fail because the // default Java serializer cannot handle the non serializable class. val c = new ShuffledRDD[Int, NonJavaSerializableClass, (Int, NonJavaSerializableClass)]( - b, new HashPartitioner(NUM_BLOCKS)).setSerializer(classOf[KryoSerializer].getName) + b, new HashPartitioner(NUM_BLOCKS)).setSerializer(new KryoSerializer(conf)) val shuffleId = c.dependencies.head.asInstanceOf[ShuffleDependency[Int, Int]].shuffleId assert(c.count === 10) @@ -76,7 +79,7 @@ class ShuffleSuite extends FunSuite with ShouldMatchers with LocalSparkContext { // If the Kryo serializer is not used correctly, the shuffle would fail because the // default Java serializer cannot handle the non serializable class. val c = new ShuffledRDD[Int, NonJavaSerializableClass, (Int, NonJavaSerializableClass)]( - b, new HashPartitioner(3)).setSerializer(classOf[KryoSerializer].getName) + b, new HashPartitioner(3)).setSerializer(new KryoSerializer(conf)) assert(c.count === 10) } @@ -92,7 +95,7 @@ class ShuffleSuite extends FunSuite with ShouldMatchers with LocalSparkContext { // NOTE: The default Java serializer doesn't create zero-sized blocks. // So, use Kryo val c = new ShuffledRDD[Int, Int, (Int, Int)](b, new HashPartitioner(10)) - .setSerializer(classOf[KryoSerializer].getName) + .setSerializer(new KryoSerializer(conf)) val shuffleId = c.dependencies.head.asInstanceOf[ShuffleDependency[Int, Int]].shuffleId assert(c.count === 4) diff --git a/core/src/test/scala/org/apache/spark/SparkContextInfoSuite.scala b/core/src/test/scala/org/apache/spark/SparkContextInfoSuite.scala index 5cb49d9a7fce1..cd3887dcc7371 100644 --- a/core/src/test/scala/org/apache/spark/SparkContextInfoSuite.scala +++ b/core/src/test/scala/org/apache/spark/SparkContextInfoSuite.scala @@ -17,7 +17,7 @@ package org.apache.spark -import org.scalatest.FunSuite +import org.scalatest.{Assertions, FunSuite} class SparkContextInfoSuite extends FunSuite with LocalSparkContext { test("getPersistentRDDs only returns RDDs that are marked as cached") { @@ -56,4 +56,38 @@ class SparkContextInfoSuite extends FunSuite with LocalSparkContext { rdd.collect() assert(sc.getRDDStorageInfo.size === 1) } + + test("call sites report correct locations") { + sc = new SparkContext("local", "test") + testPackage.runCallSiteTest(sc) + } +} + +/** Call site must be outside of usual org.apache.spark packages (see Utils#SPARK_CLASS_REGEX). */ +package object testPackage extends Assertions { + private val CALL_SITE_REGEX = "(.+) at (.+):([0-9]+)".r + + def runCallSiteTest(sc: SparkContext) { + val rdd = sc.makeRDD(Array(1, 2, 3, 4), 2) + val rddCreationSite = rdd.getCreationSite + val curCallSite = sc.getCallSite() // note: 2 lines after definition of "rdd" + + val rddCreationLine = rddCreationSite match { + case CALL_SITE_REGEX(func, file, line) => { + assert(func === "makeRDD") + assert(file === "SparkContextInfoSuite.scala") + line.toInt + } + case _ => fail("Did not match expected call site format") + } + + curCallSite match { + case CALL_SITE_REGEX(func, file, line) => { + assert(func === "getCallSite") // this is correct because we called it from outside of Spark + assert(file === "SparkContextInfoSuite.scala") + assert(line.toInt === rddCreationLine.toInt + 2) + } + case _ => fail("Did not match expected call site format") + } + } } diff --git a/core/src/test/scala/org/apache/spark/SparkContextSchedulerCreationSuite.scala b/core/src/test/scala/org/apache/spark/SparkContextSchedulerCreationSuite.scala index 3bb936790d506..94fba102865b3 100644 --- a/core/src/test/scala/org/apache/spark/SparkContextSchedulerCreationSuite.scala +++ b/core/src/test/scala/org/apache/spark/SparkContextSchedulerCreationSuite.scala @@ -19,7 +19,7 @@ package org.apache.spark import org.scalatest.{FunSuite, PrivateMethodTester} -import org.apache.spark.scheduler.{TaskSchedulerImpl, TaskScheduler} +import org.apache.spark.scheduler.{TaskScheduler, TaskSchedulerImpl} import org.apache.spark.scheduler.cluster.{SimrSchedulerBackend, SparkDeploySchedulerBackend} import org.apache.spark.scheduler.cluster.mesos.{CoarseMesosSchedulerBackend, MesosSchedulerBackend} import org.apache.spark.scheduler.local.LocalBackend @@ -32,7 +32,7 @@ class SparkContextSchedulerCreationSuite // real schedulers, so we don't want to create a full SparkContext with the desired scheduler. sc = new SparkContext("local", "test") val createTaskSchedulerMethod = PrivateMethod[TaskScheduler]('createTaskScheduler) - val sched = SparkContext invokePrivate createTaskSchedulerMethod(sc, master, "test") + val sched = SparkContext invokePrivate createTaskSchedulerMethod(sc, master) sched.asInstanceOf[TaskSchedulerImpl] } @@ -51,6 +51,14 @@ class SparkContextSchedulerCreationSuite } } + test("local-*") { + val sched = createTaskScheduler("local[*]") + sched.backend match { + case s: LocalBackend => assert(s.totalCores === Runtime.getRuntime.availableProcessors()) + case _ => fail() + } + } + test("local-n") { val sched = createTaskScheduler("local[5]") assert(sched.maxTaskFailures === 1) diff --git a/core/src/test/scala/org/apache/spark/deploy/JsonProtocolSuite.scala b/core/src/test/scala/org/apache/spark/deploy/JsonProtocolSuite.scala index bae3b37e267d5..9f2924c23b73c 100644 --- a/core/src/test/scala/org/apache/spark/deploy/JsonProtocolSuite.scala +++ b/core/src/test/scala/org/apache/spark/deploy/JsonProtocolSuite.scala @@ -20,12 +20,9 @@ package org.apache.spark.deploy import java.io.File import java.util.Date +import com.fasterxml.jackson.core.JsonParseException import org.json4s._ - -import org.json4s.JValue import org.json4s.jackson.JsonMethods -import com.fasterxml.jackson.core.JsonParseException - import org.scalatest.FunSuite import org.apache.spark.deploy.DeployMessages.{MasterStateResponse, WorkerStateResponse} @@ -96,7 +93,7 @@ class JsonProtocolSuite extends FunSuite { def createAppInfo() : ApplicationInfo = { val appInfo = new ApplicationInfo(JsonConstants.appInfoStartTime, - "id", createAppDesc(), JsonConstants.submitDate, null, "appUriStr", Int.MaxValue) + "id", createAppDesc(), JsonConstants.submitDate, null, Int.MaxValue) appInfo.endTime = JsonConstants.currTimeInMillis appInfo } @@ -148,12 +145,12 @@ object JsonConstants { val submitDate = new Date(123456789) val appInfoJsonStr = """ - |{"starttime":3,"id":"id","name":"name","appuiurl":"appUriStr", + |{"starttime":3,"id":"id","name":"name", |"cores":4,"user":"%s", |"memoryperslave":1234,"submitdate":"%s", |"state":"WAITING","duration":%d} """.format(System.getProperty("user.name", ""), - submitDate.toString, (currTimeInMillis - appInfoStartTime)).stripMargin + submitDate.toString, currTimeInMillis - appInfoStartTime).stripMargin val workerInfoJsonStr = """ diff --git a/core/src/test/scala/org/apache/spark/deploy/SparkSubmitSuite.scala b/core/src/test/scala/org/apache/spark/deploy/SparkSubmitSuite.scala new file mode 100644 index 0000000000000..4e489cd9b66a6 --- /dev/null +++ b/core/src/test/scala/org/apache/spark/deploy/SparkSubmitSuite.scala @@ -0,0 +1,178 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy + +import java.io.{OutputStream, PrintStream} + +import scala.collection.mutable.ArrayBuffer + +import org.scalatest.FunSuite +import org.scalatest.matchers.ShouldMatchers + +import org.apache.spark.deploy.SparkSubmit._ + + +class SparkSubmitSuite extends FunSuite with ShouldMatchers { + + val noOpOutputStream = new OutputStream { + def write(b: Int) = {} + } + + /** Simple PrintStream that reads data into a buffer */ + class BufferPrintStream extends PrintStream(noOpOutputStream) { + var lineBuffer = ArrayBuffer[String]() + override def println(line: String) { + lineBuffer += line + } + } + + /** Returns true if the script exits and the given search string is printed. */ + def testPrematureExit(input: Array[String], searchString: String): Boolean = { + val printStream = new BufferPrintStream() + SparkSubmit.printStream = printStream + + @volatile var exitedCleanly = false + SparkSubmit.exitFn = () => exitedCleanly = true + + val thread = new Thread { + override def run() = try { + SparkSubmit.main(input) + } catch { + // If exceptions occur after the "exit" has happened, fine to ignore them. + // These represent code paths not reachable during normal execution. + case e: Exception => if (!exitedCleanly) throw e + } + } + thread.start() + thread.join() + printStream.lineBuffer.find(s => s.contains(searchString)).size > 0 + } + + test("prints usage on empty input") { + testPrematureExit(Array[String](), "Usage: spark-submit") should be (true) + } + + test("prints usage with only --help") { + testPrematureExit(Array("--help"), "Usage: spark-submit") should be (true) + } + + test("handles multiple binary definitions") { + val adjacentJars = Array("foo.jar", "bar.jar") + testPrematureExit(adjacentJars, "error: Found two conflicting resources") should be (true) + + val nonAdjacentJars = + Array("foo.jar", "--master", "123", "--class", "abc", "bar.jar") + testPrematureExit(nonAdjacentJars, "error: Found two conflicting resources") should be (true) + } + + test("handle binary specified but not class") { + testPrematureExit(Array("foo.jar"), "must specify a main class") + } + + test("handles YARN cluster mode") { + val clArgs = Array("thejar.jar", "--deploy-mode", "cluster", + "--master", "yarn", "--executor-memory", "5g", "--executor-cores", "5", + "--class", "org.SomeClass", "--jars", "one.jar,two.jar,three.jar", + "--arg", "arg1", "--arg", "arg2", "--driver-memory", "4g", + "--queue", "thequeue", "--files", "file1.txt,file2.txt", + "--archives", "archive1.txt,archive2.txt", "--num-executors", "6") + val appArgs = new SparkSubmitArguments(clArgs) + val (childArgs, classpath, sysProps, mainClass) = createLaunchEnv(appArgs) + val childArgsStr = childArgs.mkString(" ") + childArgsStr should include ("--jar thejar.jar") + childArgsStr should include ("--class org.SomeClass") + childArgsStr should include ("--addJars one.jar,two.jar,three.jar") + childArgsStr should include ("--executor-memory 5g") + childArgsStr should include ("--driver-memory 4g") + childArgsStr should include ("--executor-cores 5") + childArgsStr should include ("--args arg1 --args arg2") + childArgsStr should include ("--queue thequeue") + childArgsStr should include ("--files file1.txt,file2.txt") + childArgsStr should include ("--archives archive1.txt,archive2.txt") + childArgsStr should include ("--num-executors 6") + mainClass should be ("org.apache.spark.deploy.yarn.Client") + classpath should have length (0) + sysProps should have size (0) + } + + test("handles YARN client mode") { + val clArgs = Array("thejar.jar", "--deploy-mode", "client", + "--master", "yarn", "--executor-memory", "5g", "--executor-cores", "5", + "--class", "org.SomeClass", "--jars", "one.jar,two.jar,three.jar", + "--arg", "arg1", "--arg", "arg2", "--driver-memory", "4g", + "--queue", "thequeue", "--files", "file1.txt,file2.txt", + "--archives", "archive1.txt,archive2.txt", "--num-executors", "6") + val appArgs = new SparkSubmitArguments(clArgs) + val (childArgs, classpath, sysProps, mainClass) = createLaunchEnv(appArgs) + childArgs.mkString(" ") should be ("arg1 arg2") + mainClass should be ("org.SomeClass") + classpath should contain ("thejar.jar") + classpath should contain ("one.jar") + classpath should contain ("two.jar") + classpath should contain ("three.jar") + sysProps("spark.executor.memory") should be ("5g") + sysProps("spark.executor.cores") should be ("5") + sysProps("spark.yarn.queue") should be ("thequeue") + sysProps("spark.yarn.dist.files") should be ("file1.txt,file2.txt") + sysProps("spark.yarn.dist.archives") should be ("archive1.txt,archive2.txt") + sysProps("spark.executor.instances") should be ("6") + } + + test("handles standalone cluster mode") { + val clArgs = Array("thejar.jar", "--deploy-mode", "cluster", + "--master", "spark://h:p", "--class", "org.SomeClass", "--arg", "arg1", "--arg", "arg2", + "--supervise", "--driver-memory", "4g", "--driver-cores", "5") + val appArgs = new SparkSubmitArguments(clArgs) + val (childArgs, classpath, sysProps, mainClass) = createLaunchEnv(appArgs) + val childArgsStr = childArgs.mkString(" ") + print("child args: " + childArgsStr) + childArgsStr.startsWith("--memory 4g --cores 5 --supervise") should be (true) + childArgsStr should include ("launch spark://h:p thejar.jar org.SomeClass arg1 arg2") + mainClass should be ("org.apache.spark.deploy.Client") + classpath should have length (0) + sysProps should have size (0) + } + + test("handles standalone client mode") { + val clArgs = Array("thejar.jar", "--deploy-mode", "client", + "--master", "spark://h:p", "--executor-memory", "5g", "--total-executor-cores", "5", + "--class", "org.SomeClass", "--arg", "arg1", "--arg", "arg2", + "--driver-memory", "4g") + val appArgs = new SparkSubmitArguments(clArgs) + val (childArgs, classpath, sysProps, mainClass) = createLaunchEnv(appArgs) + childArgs.mkString(" ") should be ("arg1 arg2") + mainClass should be ("org.SomeClass") + classpath should contain ("thejar.jar") + sysProps("spark.executor.memory") should be ("5g") + sysProps("spark.cores.max") should be ("5") + } + + test("handles mesos client mode") { + val clArgs = Array("thejar.jar", "--deploy-mode", "client", + "--master", "mesos://h:p", "--executor-memory", "5g", "--total-executor-cores", "5", + "--class", "org.SomeClass", "--arg", "arg1", "--arg", "arg2", + "--driver-memory", "4g") + val appArgs = new SparkSubmitArguments(clArgs) + val (childArgs, classpath, sysProps, mainClass) = createLaunchEnv(appArgs) + childArgs.mkString(" ") should be ("arg1 arg2") + mainClass should be ("org.SomeClass") + classpath should contain ("thejar.jar") + sysProps("spark.executor.memory") should be ("5g") + sysProps("spark.cores.max") should be ("5") + } +} diff --git a/core/src/test/scala/org/apache/spark/executor/ExecutorURLClassLoaderSuite.scala b/core/src/test/scala/org/apache/spark/executor/ExecutorURLClassLoaderSuite.scala new file mode 100644 index 0000000000000..c40cfc0696fce --- /dev/null +++ b/core/src/test/scala/org/apache/spark/executor/ExecutorURLClassLoaderSuite.scala @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.executor + +import java.io.File +import java.net.URLClassLoader + +import org.scalatest.FunSuite + +import org.apache.spark.TestUtils + +class ExecutorURLClassLoaderSuite extends FunSuite { + + val childClassNames = List("FakeClass1", "FakeClass2") + val parentClassNames = List("FakeClass1", "FakeClass2", "FakeClass3") + val urls = List(TestUtils.createJarWithClasses(childClassNames, "1")).toArray + val urls2 = List(TestUtils.createJarWithClasses(parentClassNames, "2")).toArray + + test("child first") { + val parentLoader = new URLClassLoader(urls2, null) + val classLoader = new ChildExecutorURLClassLoader(urls, parentLoader) + val fakeClass = classLoader.loadClass("FakeClass2").newInstance() + val fakeClassVersion = fakeClass.toString + assert(fakeClassVersion === "1") + } + + test("parent first") { + val parentLoader = new URLClassLoader(urls2, null) + val classLoader = new ExecutorURLClassLoader(urls, parentLoader) + val fakeClass = classLoader.loadClass("FakeClass1").newInstance() + val fakeClassVersion = fakeClass.toString + assert(fakeClassVersion === "2") + } + + test("child first can fall back") { + val parentLoader = new URLClassLoader(urls2, null) + val classLoader = new ChildExecutorURLClassLoader(urls, parentLoader) + val fakeClass = classLoader.loadClass("FakeClass3").newInstance() + val fakeClassVersion = fakeClass.toString + assert(fakeClassVersion === "2") + } + + test("child first can fail") { + val parentLoader = new URLClassLoader(urls2, null) + val classLoader = new ChildExecutorURLClassLoader(urls, parentLoader) + intercept[java.lang.ClassNotFoundException] { + classLoader.loadClass("FakeClassDoesNotExist").newInstance() + } + } + + +} diff --git a/core/src/test/scala/org/apache/spark/input/WholeTextFileRecordReaderSuite.scala b/core/src/test/scala/org/apache/spark/input/WholeTextFileRecordReaderSuite.scala new file mode 100644 index 0000000000000..09e35bfc8f85f --- /dev/null +++ b/core/src/test/scala/org/apache/spark/input/WholeTextFileRecordReaderSuite.scala @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.input + +import java.io.DataOutputStream +import java.io.File +import java.io.FileOutputStream + +import scala.collection.immutable.IndexedSeq + +import com.google.common.io.Files + +import org.scalatest.BeforeAndAfterAll +import org.scalatest.FunSuite + +import org.apache.hadoop.io.Text + +import org.apache.spark.SparkContext + +/** + * Tests the correctness of + * [[org.apache.spark.input.WholeTextFileRecordReader WholeTextFileRecordReader]]. A temporary + * directory is created as fake input. Temporal storage would be deleted in the end. + */ +class WholeTextFileRecordReaderSuite extends FunSuite with BeforeAndAfterAll { + private var sc: SparkContext = _ + + override def beforeAll() { + sc = new SparkContext("local", "test") + + // Set the block size of local file system to test whether files are split right or not. + sc.hadoopConfiguration.setLong("fs.local.block.size", 32) + } + + override def afterAll() { + sc.stop() + } + + private def createNativeFile(inputDir: File, fileName: String, contents: Array[Byte]) = { + val out = new DataOutputStream(new FileOutputStream(s"${inputDir.toString}/$fileName")) + out.write(contents, 0, contents.length) + out.close() + } + + /** + * This code will test the behaviors of WholeTextFileRecordReader based on local disk. There are + * three aspects to check: + * 1) Whether all files are read; + * 2) Whether paths are read correctly; + * 3) Does the contents be the same. + */ + test("Correctness of WholeTextFileRecordReader.") { + + val dir = Files.createTempDir() + println(s"Local disk address is ${dir.toString}.") + + WholeTextFileRecordReaderSuite.files.foreach { case (filename, contents) => + createNativeFile(dir, filename, contents) + } + + val res = sc.wholeTextFiles(dir.toString).collect() + + assert(res.size === WholeTextFileRecordReaderSuite.fileNames.size, + "Number of files read out does not fit with the actual value.") + + for ((filename, contents) <- res) { + val shortName = filename.split('/').last + assert(WholeTextFileRecordReaderSuite.fileNames.contains(shortName), + s"Missing file name $filename.") + assert(contents === new Text(WholeTextFileRecordReaderSuite.files(shortName)).toString, + s"file $filename contents can not match.") + } + + dir.delete() + } +} + +/** + * Files to be tested are defined here. + */ +object WholeTextFileRecordReaderSuite { + private val testWords: IndexedSeq[Byte] = "Spark is easy to use.\n".map(_.toByte) + + private val fileNames = Array("part-00000", "part-00001", "part-00002") + private val fileLengths = Array(10, 100, 1000) + + private val files = fileLengths.zip(fileNames).map { case (upperBound, filename) => + filename -> Stream.continually(testWords.toList.toStream).flatten.take(upperBound).toArray + }.toMap +} diff --git a/core/src/test/scala/org/apache/spark/rdd/PairRDDFunctionsSuite.scala b/core/src/test/scala/org/apache/spark/rdd/PairRDDFunctionsSuite.scala index 85e8eb5dc3a1e..8f3e6bd21b752 100644 --- a/core/src/test/scala/org/apache/spark/rdd/PairRDDFunctionsSuite.scala +++ b/core/src/test/scala/org/apache/spark/rdd/PairRDDFunctionsSuite.scala @@ -225,11 +225,12 @@ class PairRDDFunctionsSuite extends FunSuite with SharedSparkContext { val rdd2 = sc.parallelize(Array((1, 'x'), (2, 'y'), (2, 'z'), (4, 'w'))) val joined = rdd1.groupWith(rdd2).collect() assert(joined.size === 4) - assert(joined.toSet === Set( - (1, (ArrayBuffer(1, 2), ArrayBuffer('x'))), - (2, (ArrayBuffer(1), ArrayBuffer('y', 'z'))), - (3, (ArrayBuffer(1), ArrayBuffer())), - (4, (ArrayBuffer(), ArrayBuffer('w'))) + val joinedSet = joined.map(x => (x._1, (x._2._1.toList, x._2._2.toList))).toSet + assert(joinedSet === Set( + (1, (List(1, 2), List('x'))), + (2, (List(1), List('y', 'z'))), + (3, (List(1), List())), + (4, (List(), List('w'))) )) } @@ -373,6 +374,22 @@ class PairRDDFunctionsSuite extends FunSuite with SharedSparkContext { assert(shuffled.lookup(5) === Seq(6,7)) assert(shuffled.lookup(-1) === Seq()) } + + test("lookup with bad partitioner") { + val pairs = sc.parallelize(Array((1,2), (3,4), (5,6), (5,7))) + + val p = new Partitioner { + def numPartitions: Int = 2 + + def getPartition(key: Any): Int = key.hashCode() % 2 + } + val shuffled = pairs.partitionBy(p) + + assert(shuffled.partitioner === Some(p)) + assert(shuffled.lookup(1) === Seq(2)) + intercept[IllegalArgumentException] {shuffled.lookup(-1)} + } + } /* @@ -431,4 +448,3 @@ class ConfigTestFormat() extends FakeFormat() with Configurable { super.getRecordWriter(p1) } } - diff --git a/core/src/test/scala/org/apache/spark/rdd/RDDSuite.scala b/core/src/test/scala/org/apache/spark/rdd/RDDSuite.scala index 60bcada55245b..25973348a7837 100644 --- a/core/src/test/scala/org/apache/spark/rdd/RDDSuite.scala +++ b/core/src/test/scala/org/apache/spark/rdd/RDDSuite.scala @@ -33,6 +33,7 @@ class RDDSuite extends FunSuite with SharedSparkContext { test("basic operations") { val nums = sc.makeRDD(Array(1, 2, 3, 4), 2) assert(nums.collect().toList === List(1, 2, 3, 4)) + assert(nums.toLocalIterator.toList === List(1, 2, 3, 4)) val dups = sc.makeRDD(Array(1, 1, 2, 2, 3, 3, 4, 4), 2) assert(dups.distinct().count() === 4) assert(dups.distinct.count === 4) // Can distinct and count be called without parentheses? @@ -47,6 +48,8 @@ class RDDSuite extends FunSuite with SharedSparkContext { assert(nums.glom().map(_.toList).collect().toList === List(List(1, 2), List(3, 4))) assert(nums.collect({ case i if i >= 3 => i.toString }).collect().toList === List("3", "4")) assert(nums.keyBy(_.toString).collect().toList === List(("1", 1), ("2", 2), ("3", 3), ("4", 4))) + assert(nums.max() === 4) + assert(nums.min() === 1) val partitionSums = nums.mapPartitions(iter => Iterator(iter.reduceLeft(_ + _))) assert(partitionSums.collect().toList === List(3, 7)) @@ -457,6 +460,7 @@ class RDDSuite extends FunSuite with SharedSparkContext { test("takeSample") { val data = sc.parallelize(1 to 100, 2) + for (seed <- 1 to 5) { val sample = data.takeSample(withReplacement=false, 20, seed) assert(sample.size === 20) // Got exactly 20 elements @@ -488,6 +492,12 @@ class RDDSuite extends FunSuite with SharedSparkContext { } } + test("takeSample from an empty rdd") { + val emptySet = sc.parallelize(Seq.empty[Int], 2) + val sample = emptySet.takeSample(false, 20, 1) + assert(sample.length === 0) + } + test("randomSplit") { val n = 600 val data = sc.parallelize(1 to n, 2) diff --git a/core/src/test/scala/org/apache/spark/scheduler/DAGSchedulerSuite.scala b/core/src/test/scala/org/apache/spark/scheduler/DAGSchedulerSuite.scala index ad890b4e4d08e..a74724d785ad3 100644 --- a/core/src/test/scala/org/apache/spark/scheduler/DAGSchedulerSuite.scala +++ b/core/src/test/scala/org/apache/spark/scheduler/DAGSchedulerSuite.scala @@ -18,7 +18,7 @@ package org.apache.spark.scheduler import scala.Tuple2 -import scala.collection.mutable.{HashMap, Map} +import scala.collection.mutable.{HashSet, HashMap, Map} import org.scalatest.{BeforeAndAfter, FunSuite} @@ -43,6 +43,10 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont val conf = new SparkConf /** Set of TaskSets the DAGScheduler has requested executed. */ val taskSets = scala.collection.mutable.Buffer[TaskSet]() + + /** Stages for which the DAGScheduler has called TaskScheduler.cancelTasks(). */ + val cancelledStages = new HashSet[Int]() + val taskScheduler = new TaskScheduler() { override def rootPool: Pool = null override def schedulingMode: SchedulingMode = SchedulingMode.NONE @@ -53,11 +57,28 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont taskSet.tasks.foreach(_.epoch = mapOutputTracker.getEpoch) taskSets += taskSet } - override def cancelTasks(stageId: Int) {} + override def cancelTasks(stageId: Int) { + cancelledStages += stageId + } override def setDAGScheduler(dagScheduler: DAGScheduler) = {} override def defaultParallelism() = 2 } + /** Length of time to wait while draining listener events. */ + val WAIT_TIMEOUT_MILLIS = 10000 + val sparkListener = new SparkListener() { + val successfulStages = new HashSet[Int]() + val failedStages = new HashSet[Int]() + override def onStageCompleted(stageCompleted: SparkListenerStageCompleted) { + val stageInfo = stageCompleted.stageInfo + if (stageInfo.failureReason.isEmpty) { + successfulStages += stageInfo.stageId + } else { + failedStages += stageInfo.stageId + } + } + } + var mapOutputTracker: MapOutputTrackerMaster = null var scheduler: DAGScheduler = null @@ -83,18 +104,27 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont /** The list of results that DAGScheduler has collected. */ val results = new HashMap[Int, Any]() var failure: Exception = _ - val listener = new JobListener() { + val jobListener = new JobListener() { override def taskSucceeded(index: Int, result: Any) = results.put(index, result) override def jobFailed(exception: Exception) = { failure = exception } } before { sc = new SparkContext("local", "DAGSchedulerSuite") + sparkListener.successfulStages.clear() + sparkListener.failedStages.clear() + sc.addSparkListener(sparkListener) taskSets.clear() + cancelledStages.clear() cacheLocations.clear() results.clear() mapOutputTracker = new MapOutputTrackerMaster(conf) - scheduler = new DAGScheduler(taskScheduler, mapOutputTracker, blockManagerMaster, sc.env) { + scheduler = new DAGScheduler( + taskScheduler, + sc.listenerBus, + mapOutputTracker, + blockManagerMaster, + sc.env) { override def runLocally(job: ActiveJob) { // don't bother with the thread while unit testing runLocallyWithinThread(job) @@ -169,15 +199,16 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont } } - /** Sends the rdd to the scheduler for scheduling. */ + /** Sends the rdd to the scheduler for scheduling and returns the job id. */ private def submit( rdd: RDD[_], partitions: Array[Int], func: (TaskContext, Iterator[_]) => _ = jobComputeFunc, allowLocal: Boolean = false, - listener: JobListener = listener) { + listener: JobListener = jobListener): Int = { val jobId = scheduler.nextJobId.getAndIncrement() runEvent(JobSubmitted(jobId, rdd, func, partitions, allowLocal, null, listener)) + return jobId } /** Sends TaskSetFailed to the scheduler. */ @@ -185,6 +216,11 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont runEvent(TaskSetFailed(taskSet, message)) } + /** Sends JobCancelled to the DAG scheduler. */ + private def cancel(jobId: Int) { + runEvent(JobCancelled(jobId)) + } + test("zero split job") { val rdd = makeRdd(0, Nil) var numResults = 0 @@ -213,7 +249,7 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont override def toString = "DAGSchedulerSuite Local RDD" } val jobId = scheduler.nextJobId.getAndIncrement() - runEvent(JobSubmitted(jobId, rdd, jobComputeFunc, Array(0), true, null, listener)) + runEvent(JobSubmitted(jobId, rdd, jobComputeFunc, Array(0), true, null, jobListener)) assert(results === Map(0 -> 42)) assertDataStructuresEmpty } @@ -243,7 +279,21 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont test("trivial job failure") { submit(makeRdd(1, Nil), Array(0)) failed(taskSets(0), "some failure") - assert(failure.getMessage === "Job aborted: some failure") + assert(failure.getMessage === "Job aborted due to stage failure: some failure") + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sparkListener.failedStages.contains(0)) + assert(sparkListener.failedStages.size === 1) + assertDataStructuresEmpty + } + + test("trivial job cancellation") { + val rdd = makeRdd(1, Nil) + val jobId = submit(rdd, Array(0)) + cancel(jobId) + assert(failure.getMessage === s"Job $jobId cancelled") + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sparkListener.failedStages.contains(0)) + assert(sparkListener.failedStages.size === 1) assertDataStructuresEmpty } @@ -318,6 +368,82 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont assertDataStructuresEmpty } + test("run shuffle with map stage failure") { + val shuffleMapRdd = makeRdd(2, Nil) + val shuffleDep = new ShuffleDependency(shuffleMapRdd, null) + val reduceRdd = makeRdd(2, List(shuffleDep)) + submit(reduceRdd, Array(0, 1)) + + // Fail the map stage. This should cause the entire job to fail. + val stageFailureMessage = "Exception failure in map stage" + failed(taskSets(0), stageFailureMessage) + assert(failure.getMessage === s"Job aborted due to stage failure: $stageFailureMessage") + + // Listener bus should get told about the map stage failing, but not the reduce stage + // (since the reduce stage hasn't been started yet). + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sparkListener.failedStages.contains(1)) + assert(sparkListener.failedStages.size === 1) + + assertDataStructuresEmpty + } + + /** + * Makes sure that failures of stage used by multiple jobs are correctly handled. + * + * This test creates the following dependency graph: + * + * shuffleMapRdd1 shuffleMapRDD2 + * | \ | + * | \ | + * | \ | + * | \ | + * reduceRdd1 reduceRdd2 + * + * We start both shuffleMapRdds and then fail shuffleMapRdd1. As a result, the job listeners for + * reduceRdd1 and reduceRdd2 should both be informed that the job failed. shuffleMapRDD2 should + * also be cancelled, because it is only used by reduceRdd2 and reduceRdd2 cannot complete + * without shuffleMapRdd1. + */ + test("failure of stage used by two jobs") { + val shuffleMapRdd1 = makeRdd(2, Nil) + val shuffleDep1 = new ShuffleDependency(shuffleMapRdd1, null) + val shuffleMapRdd2 = makeRdd(2, Nil) + val shuffleDep2 = new ShuffleDependency(shuffleMapRdd2, null) + + val reduceRdd1 = makeRdd(2, List(shuffleDep1)) + val reduceRdd2 = makeRdd(2, List(shuffleDep1, shuffleDep2)) + + // We need to make our own listeners for this test, since by default submit uses the same + // listener for all jobs, and here we want to capture the failure for each job separately. + class FailureRecordingJobListener() extends JobListener { + var failureMessage: String = _ + override def taskSucceeded(index: Int, result: Any) {} + override def jobFailed(exception: Exception) = { failureMessage = exception.getMessage } + } + val listener1 = new FailureRecordingJobListener() + val listener2 = new FailureRecordingJobListener() + + submit(reduceRdd1, Array(0, 1), listener=listener1) + submit(reduceRdd2, Array(0, 1), listener=listener2) + + val stageFailureMessage = "Exception failure in map stage" + failed(taskSets(0), stageFailureMessage) + + assert(cancelledStages.contains(1)) + + // Make sure the listeners got told about both failed stages. + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sparkListener.successfulStages.isEmpty) + assert(sparkListener.failedStages.contains(1)) + assert(sparkListener.failedStages.contains(3)) + assert(sparkListener.failedStages.size === 2) + + assert(listener1.failureMessage === s"Job aborted due to stage failure: $stageFailureMessage") + assert(listener2.failureMessage === s"Job aborted due to stage failure: $stageFailureMessage") + assertDataStructuresEmpty + } + test("run trivial shuffle with out-of-band failure and retry") { val shuffleMapRdd = makeRdd(2, Nil) val shuffleDep = new ShuffleDependency(shuffleMapRdd, null) @@ -422,15 +548,15 @@ class DAGSchedulerSuite extends FunSuite with BeforeAndAfter with LocalSparkCont private def assertDataStructuresEmpty = { assert(scheduler.pendingTasks.isEmpty) assert(scheduler.activeJobs.isEmpty) - assert(scheduler.failed.isEmpty) - assert(scheduler.idToActiveJob.isEmpty) + assert(scheduler.failedStages.isEmpty) + assert(scheduler.jobIdToActiveJob.isEmpty) assert(scheduler.jobIdToStageIds.isEmpty) assert(scheduler.stageIdToJobIds.isEmpty) assert(scheduler.stageIdToStage.isEmpty) assert(scheduler.stageToInfos.isEmpty) assert(scheduler.resultStageToJob.isEmpty) - assert(scheduler.running.isEmpty) + assert(scheduler.runningStages.isEmpty) assert(scheduler.shuffleToMapStage.isEmpty) - assert(scheduler.waiting.isEmpty) + assert(scheduler.waitingStages.isEmpty) } } diff --git a/core/src/test/scala/org/apache/spark/scheduler/JobLoggerSuite.scala b/core/src/test/scala/org/apache/spark/scheduler/JobLoggerSuite.scala deleted file mode 100644 index 25fe63c2655a8..0000000000000 --- a/core/src/test/scala/org/apache/spark/scheduler/JobLoggerSuite.scala +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.scheduler - -import org.scalatest.FunSuite -import org.scalatest.matchers.ShouldMatchers - -import org.apache.spark._ -import org.apache.spark.SparkContext._ -import org.apache.spark.rdd.RDD - -class JobLoggerSuite extends FunSuite with LocalSparkContext with ShouldMatchers { - val WAIT_TIMEOUT_MILLIS = 10000 - - test("inner method") { - sc = new SparkContext("local", "joblogger") - val joblogger = new JobLogger { - def createLogWriterTest(jobID: Int) = createLogWriter(jobID) - def closeLogWriterTest(jobID: Int) = closeLogWriter(jobID) - def getRddNameTest(rdd: RDD[_]) = getRddName(rdd) - def buildJobDepTest(jobID: Int, stage: Stage) = buildJobDep(jobID, stage) - } - type MyRDD = RDD[(Int, Int)] - def makeRdd(numPartitions: Int, dependencies: List[Dependency[_]]): MyRDD = { - val maxPartition = numPartitions - 1 - new MyRDD(sc, dependencies) { - override def compute(split: Partition, context: TaskContext): Iterator[(Int, Int)] = - throw new RuntimeException("should not be reached") - override def getPartitions = (0 to maxPartition).map(i => new Partition { - override def index = i - }).toArray - } - } - val jobID = 5 - val parentRdd = makeRdd(4, Nil) - val shuffleDep = new ShuffleDependency(parentRdd, null) - val rootRdd = makeRdd(4, List(shuffleDep)) - val shuffleMapStage = - new Stage(1, parentRdd, parentRdd.partitions.size, Some(shuffleDep), Nil, jobID, None) - val rootStage = - new Stage(0, rootRdd, rootRdd.partitions.size, None, List(shuffleMapStage), jobID, None) - val rootStageInfo = new StageInfo(rootStage) - - joblogger.onStageSubmitted(SparkListenerStageSubmitted(rootStageInfo, null)) - joblogger.getRddNameTest(parentRdd) should be (parentRdd.getClass.getSimpleName) - parentRdd.setName("MyRDD") - joblogger.getRddNameTest(parentRdd) should be ("MyRDD") - joblogger.createLogWriterTest(jobID) - joblogger.getJobIDtoPrintWriter.size should be (1) - joblogger.buildJobDepTest(jobID, rootStage) - joblogger.getJobIDToStages.get(jobID).get.size should be (2) - joblogger.getStageIDToJobID.get(0) should be (Some(jobID)) - joblogger.getStageIDToJobID.get(1) should be (Some(jobID)) - joblogger.closeLogWriterTest(jobID) - joblogger.getStageIDToJobID.size should be (0) - joblogger.getJobIDToStages.size should be (0) - joblogger.getJobIDtoPrintWriter.size should be (0) - } - - test("inner variables") { - sc = new SparkContext("local[4]", "joblogger") - val joblogger = new JobLogger { - override protected def closeLogWriter(jobID: Int) = - getJobIDtoPrintWriter.get(jobID).foreach { fileWriter => - fileWriter.close() - } - } - sc.addSparkListener(joblogger) - val rdd = sc.parallelize(1 to 1e2.toInt, 4).map{ i => (i % 12, 2 * i) } - rdd.reduceByKey(_+_).collect() - - assert(sc.dagScheduler.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) - - val user = System.getProperty("user.name", SparkContext.SPARK_UNKNOWN_USER) - - joblogger.getLogDir should be ("/tmp/spark-%s".format(user)) - joblogger.getJobIDtoPrintWriter.size should be (1) - joblogger.getStageIDToJobID.size should be (2) - joblogger.getStageIDToJobID.get(0) should be (Some(0)) - joblogger.getStageIDToJobID.get(1) should be (Some(0)) - joblogger.getJobIDToStages.size should be (1) - } - - - test("interface functions") { - sc = new SparkContext("local[4]", "joblogger") - val joblogger = new JobLogger { - var onTaskEndCount = 0 - var onJobEndCount = 0 - var onJobStartCount = 0 - var onStageCompletedCount = 0 - var onStageSubmittedCount = 0 - override def onTaskEnd(taskEnd: SparkListenerTaskEnd) = onTaskEndCount += 1 - override def onJobEnd(jobEnd: SparkListenerJobEnd) = onJobEndCount += 1 - override def onJobStart(jobStart: SparkListenerJobStart) = onJobStartCount += 1 - override def onStageCompleted(stageCompleted: SparkListenerStageCompleted) = onStageCompletedCount += 1 - override def onStageSubmitted(stageSubmitted: SparkListenerStageSubmitted) = onStageSubmittedCount += 1 - } - sc.addSparkListener(joblogger) - val rdd = sc.parallelize(1 to 1e2.toInt, 4).map{ i => (i % 12, 2 * i) } - rdd.reduceByKey(_+_).collect() - - assert(sc.dagScheduler.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) - - joblogger.onJobStartCount should be (1) - joblogger.onJobEndCount should be (1) - joblogger.onTaskEndCount should be (8) - joblogger.onStageSubmittedCount should be (2) - joblogger.onStageCompletedCount should be (2) - } -} diff --git a/core/src/test/scala/org/apache/spark/scheduler/SparkListenerSuite.scala b/core/src/test/scala/org/apache/spark/scheduler/SparkListenerSuite.scala index 7c4f2b4361892..dc704e07a81de 100644 --- a/core/src/test/scala/org/apache/spark/scheduler/SparkListenerSuite.scala +++ b/core/src/test/scala/org/apache/spark/scheduler/SparkListenerSuite.scala @@ -17,13 +17,16 @@ package org.apache.spark.scheduler -import scala.collection.mutable.{Buffer, HashSet} +import java.util.concurrent.Semaphore + +import scala.collection.mutable import org.scalatest.{BeforeAndAfter, BeforeAndAfterAll, FunSuite} import org.scalatest.matchers.ShouldMatchers import org.apache.spark.{LocalSparkContext, SparkContext} import org.apache.spark.SparkContext._ +import org.apache.spark.executor.TaskMetrics class SparkListenerSuite extends FunSuite with LocalSparkContext with ShouldMatchers with BeforeAndAfter with BeforeAndAfterAll { @@ -38,91 +41,167 @@ class SparkListenerSuite extends FunSuite with LocalSparkContext with ShouldMatc System.clearProperty("spark.akka.frameSize") } + test("basic creation and shutdown of LiveListenerBus") { + val counter = new BasicJobCounter + val bus = new LiveListenerBus + bus.addListener(counter) + + // Listener bus hasn't started yet, so posting events should not increment counter + (1 to 5).foreach { _ => bus.post(SparkListenerJobEnd(0, JobSucceeded)) } + assert(counter.count === 0) + + // Starting listener bus should flush all buffered events (asynchronously, hence the sleep) + bus.start() + Thread.sleep(1000) + assert(counter.count === 5) + + // After listener bus has stopped, posting events should not increment counter + bus.stop() + (1 to 5).foreach { _ => bus.post(SparkListenerJobEnd(0, JobSucceeded)) } + assert(counter.count === 5) + + // Listener bus must not be started twice + intercept[IllegalStateException] { + val bus = new LiveListenerBus + bus.start() + bus.start() + } + + // ... or stopped before starting + intercept[IllegalStateException] { + val bus = new LiveListenerBus + bus.stop() + } + } + + test("bus.stop() waits for the event queue to completely drain") { + @volatile var drained = false + + // Tells the listener to stop blocking + val listenerWait = new Semaphore(1) + + // When stop has returned + val stopReturned = new Semaphore(1) + + class BlockingListener extends SparkListener { + override def onJobEnd(jobEnd: SparkListenerJobEnd) = { + listenerWait.acquire() + drained = true + } + } + + val bus = new LiveListenerBus + val blockingListener = new BlockingListener + + bus.addListener(blockingListener) + bus.start() + bus.post(SparkListenerJobEnd(0, JobSucceeded)) + + // the queue should not drain immediately + assert(!drained) + + new Thread("ListenerBusStopper") { + override def run() { + // stop() will block until notify() is called below + bus.stop() + stopReturned.release(1) + } + }.start() + + while (!bus.stopCalled) { + Thread.sleep(10) + } + + listenerWait.release() + stopReturned.acquire() + assert(drained) + } + test("basic creation of StageInfo") { - val listener = new SaveStageInfo + val listener = new SaveStageAndTaskInfo sc.addSparkListener(listener) val rdd1 = sc.parallelize(1 to 100, 4) - val rdd2 = rdd1.map(x => x.toString) + val rdd2 = rdd1.map(_.toString) rdd2.setName("Target RDD") rdd2.count - assert(sc.dagScheduler.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) listener.stageInfos.size should be {1} - val first = listener.stageInfos.head - first.rddName should be {"Target RDD"} - first.numTasks should be {4} - first.numPartitions should be {4} - first.submissionTime should be ('defined) - first.completionTime should be ('defined) - first.taskInfos.length should be {4} + val (stageInfo, taskInfoMetrics) = listener.stageInfos.head + stageInfo.rddInfo.name should be {"Target RDD"} + stageInfo.numTasks should be {4} + stageInfo.rddInfo.numPartitions should be {4} + stageInfo.submissionTime should be ('defined) + stageInfo.completionTime should be ('defined) + taskInfoMetrics.length should be {4} } test("StageInfo with fewer tasks than partitions") { - val listener = new SaveStageInfo + val listener = new SaveStageAndTaskInfo sc.addSparkListener(listener) val rdd1 = sc.parallelize(1 to 100, 4) - val rdd2 = rdd1.map(x => x.toString) + val rdd2 = rdd1.map(_.toString) sc.runJob(rdd2, (items: Iterator[String]) => items.size, Seq(0, 1), true) - assert(sc.dagScheduler.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) listener.stageInfos.size should be {1} - val first = listener.stageInfos.head - first.numTasks should be {2} - first.numPartitions should be {4} + val (stageInfo, _) = listener.stageInfos.head + stageInfo.numTasks should be {2} + stageInfo.rddInfo.numPartitions should be {4} } test("local metrics") { - val listener = new SaveStageInfo + val listener = new SaveStageAndTaskInfo sc.addSparkListener(listener) sc.addSparkListener(new StatsReportListener) - //just to make sure some of the tasks take a noticeable amount of time + // just to make sure some of the tasks take a noticeable amount of time val w = {i:Int => if (i == 0) Thread.sleep(100) i } - val d = sc.parallelize(0 to 1e4.toInt, 64).map{i => w(i)} + val d = sc.parallelize(0 to 1e4.toInt, 64).map(w) d.count() - assert(sc.dagScheduler.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) listener.stageInfos.size should be (1) - val d2 = d.map{i => w(i) -> i * 2}.setName("shuffle input 1") - - val d3 = d.map{i => w(i) -> (0 to (i % 5))}.setName("shuffle input 2") - - val d4 = d2.cogroup(d3, 64).map{case(k,(v1,v2)) => w(k) -> (v1.size, v2.size)} + val d2 = d.map { i => w(i) -> i * 2 }.setName("shuffle input 1") + val d3 = d.map { i => w(i) -> (0 to (i % 5)) }.setName("shuffle input 2") + val d4 = d2.cogroup(d3, 64).map { case (k, (v1, v2)) => + w(k) -> (v1.size, v2.size) + } d4.setName("A Cogroup") - d4.collectAsMap() - assert(sc.dagScheduler.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) listener.stageInfos.size should be (4) - listener.stageInfos.foreach { stageInfo => - /* small test, so some tasks might take less than 1 millisecond, but average should be greater - * than 0 ms. */ - checkNonZeroAvg(stageInfo.taskInfos.map{_._1.duration}, stageInfo + " duration") + listener.stageInfos.foreach { case (stageInfo, taskInfoMetrics) => + /** + * Small test, so some tasks might take less than 1 millisecond, but average should be greater + * than 0 ms. + */ checkNonZeroAvg( - stageInfo.taskInfos.map{_._2.executorRunTime.toLong}, + taskInfoMetrics.map(_._2.executorRunTime), stageInfo + " executorRunTime") checkNonZeroAvg( - stageInfo.taskInfos.map{_._2.executorDeserializeTime.toLong}, + taskInfoMetrics.map(_._2.executorDeserializeTime), stageInfo + " executorDeserializeTime") - if (stageInfo.rddName == d4.name) { + if (stageInfo.rddInfo.name == d4.name) { checkNonZeroAvg( - stageInfo.taskInfos.map{_._2.shuffleReadMetrics.get.fetchWaitTime}, + taskInfoMetrics.map(_._2.shuffleReadMetrics.get.fetchWaitTime), stageInfo + " fetchWaitTime") } - stageInfo.taskInfos.foreach { case (taskInfo, taskMetrics) => + taskInfoMetrics.foreach { case (taskInfo, taskMetrics) => taskMetrics.resultSize should be > (0l) - if (stageInfo.rddName == d2.name || stageInfo.rddName == d3.name) { + if (stageInfo.rddInfo.name == d2.name || stageInfo.rddInfo.name == d3.name) { taskMetrics.shuffleWriteMetrics should be ('defined) taskMetrics.shuffleWriteMetrics.get.shuffleBytesWritten should be > (0l) } - if (stageInfo.rddName == d4.name) { + if (stageInfo.rddInfo.name == d4.name) { taskMetrics.shuffleReadMetrics should be ('defined) val sm = taskMetrics.shuffleReadMetrics.get sm.totalBlocksFetched should be > (0) @@ -142,10 +221,12 @@ class SparkListenerSuite extends FunSuite with LocalSparkContext with ShouldMatc System.setProperty("spark.akka.frameSize", "1") val akkaFrameSize = sc.env.actorSystem.settings.config.getBytes("akka.remote.netty.tcp.maximum-frame-size").toInt - val result = sc.parallelize(Seq(1), 1).map(x => 1.to(akkaFrameSize).toArray).reduce((x,y) => x) + val result = sc.parallelize(Seq(1), 1) + .map { x => 1.to(akkaFrameSize).toArray } + .reduce { case (x, y) => x } assert(result === 1.to(akkaFrameSize).toArray) - assert(sc.dagScheduler.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) val TASK_INDEX = 0 assert(listener.startedTasks.contains(TASK_INDEX)) assert(listener.startedGettingResultTasks.contains(TASK_INDEX)) @@ -157,13 +238,13 @@ class SparkListenerSuite extends FunSuite with LocalSparkContext with ShouldMatc sc.addSparkListener(listener) // Make a task whose result is larger than the akka frame size - val result = sc.parallelize(Seq(1), 1).map(x => 2 * x).reduce((x, y) => x) + val result = sc.parallelize(Seq(1), 1).map(2 * _).reduce { case (x, y) => x } assert(result === 2) - assert(sc.dagScheduler.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) + assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS)) val TASK_INDEX = 0 assert(listener.startedTasks.contains(TASK_INDEX)) - assert(listener.startedGettingResultTasks.isEmpty == true) + assert(listener.startedGettingResultTasks.isEmpty) assert(listener.endedTasks.contains(TASK_INDEX)) } @@ -204,17 +285,33 @@ class SparkListenerSuite extends FunSuite with LocalSparkContext with ShouldMatc assert(m.sum / m.size.toDouble > 0.0, msg) } - class SaveStageInfo extends SparkListener { - val stageInfos = Buffer[StageInfo]() + class BasicJobCounter extends SparkListener { + var count = 0 + override def onJobEnd(job: SparkListenerJobEnd) = count += 1 + } + + class SaveStageAndTaskInfo extends SparkListener { + val stageInfos = mutable.Map[StageInfo, Seq[(TaskInfo, TaskMetrics)]]() + var taskInfoMetrics = mutable.Buffer[(TaskInfo, TaskMetrics)]() + + override def onTaskEnd(task: SparkListenerTaskEnd) { + val info = task.taskInfo + val metrics = task.taskMetrics + if (info != null && metrics != null) { + taskInfoMetrics += ((info, metrics)) + } + } + override def onStageCompleted(stage: SparkListenerStageCompleted) { - stageInfos += stage.stage + stageInfos(stage.stageInfo) = taskInfoMetrics + taskInfoMetrics = mutable.Buffer.empty } } class SaveTaskEvents extends SparkListener { - val startedTasks = new HashSet[Int]() - val startedGettingResultTasks = new HashSet[Int]() - val endedTasks = new HashSet[Int]() + val startedTasks = new mutable.HashSet[Int]() + val startedGettingResultTasks = new mutable.HashSet[Int]() + val endedTasks = new mutable.HashSet[Int]() override def onTaskStart(taskStart: SparkListenerTaskStart) = synchronized { startedTasks += taskStart.taskInfo.index diff --git a/core/src/test/scala/org/apache/spark/scheduler/TaskSchedulerImplSuite.scala b/core/src/test/scala/org/apache/spark/scheduler/TaskSchedulerImplSuite.scala index 6b0800af9c6d0..356e28dd19bc5 100644 --- a/core/src/test/scala/org/apache/spark/scheduler/TaskSchedulerImplSuite.scala +++ b/core/src/test/scala/org/apache/spark/scheduler/TaskSchedulerImplSuite.scala @@ -19,8 +19,6 @@ package org.apache.spark.scheduler import java.util.Properties -import scala.collection.mutable.ArrayBuffer - import org.scalatest.FunSuite import org.apache.spark._ @@ -82,7 +80,6 @@ class FakeTaskSetManager( override def resourceOffer( execId: String, host: String, - availableCpus: Int, maxLocality: TaskLocality.TaskLocality) : Option[TaskDescription] = { @@ -127,7 +124,7 @@ class TaskSchedulerImplSuite extends FunSuite with LocalSparkContext with Loggin manager.parent.name, manager.parent.runningTasks, manager.name, manager.runningTasks)) } for (taskSet <- taskSetQueue) { - taskSet.resourceOffer("execId_1", "hostname_1", 1, TaskLocality.ANY) match { + taskSet.resourceOffer("execId_1", "hostname_1", TaskLocality.ANY) match { case Some(task) => return taskSet.stageId case None => {} @@ -270,9 +267,9 @@ class TaskSchedulerImplSuite extends FunSuite with LocalSparkContext with Loggin val taskScheduler = new TaskSchedulerImpl(sc) taskScheduler.initialize(new FakeSchedulerBackend) // Need to initialize a DAGScheduler for the taskScheduler to use for callbacks. - var dagScheduler = new DAGScheduler(taskScheduler) { + val dagScheduler = new DAGScheduler(sc, taskScheduler) { override def taskStarted(task: Task[_], taskInfo: TaskInfo) {} - override def executorGained(execId: String, host: String) {} + override def executorAdded(execId: String, host: String) {} } val numFreeCores = 1 @@ -291,8 +288,47 @@ class TaskSchedulerImplSuite extends FunSuite with LocalSparkContext with Loggin assert(1 === taskDescriptions.length) taskDescriptions(0).executorId } - var count = selectedExecutorIds.count(_ == workerOffers(0).executorId) + val count = selectedExecutorIds.count(_ == workerOffers(0).executorId) assert(count > 0) assert(count < numTrials) } + + test("Scheduler correctly accounts for multiple CPUs per task") { + sc = new SparkContext("local", "TaskSchedulerImplSuite") + val taskCpus = 2 + + sc.conf.set("spark.task.cpus", taskCpus.toString) + val taskScheduler = new TaskSchedulerImpl(sc) + taskScheduler.initialize(new FakeSchedulerBackend) + // Need to initialize a DAGScheduler for the taskScheduler to use for callbacks. + val dagScheduler = new DAGScheduler(sc, taskScheduler) { + override def taskStarted(task: Task[_], taskInfo: TaskInfo) {} + override def executorAdded(execId: String, host: String) {} + } + + // Give zero core offers. Should not generate any tasks + val zeroCoreWorkerOffers = Seq(new WorkerOffer("executor0", "host0", 0), + new WorkerOffer("executor1", "host1", 0)) + val taskSet = FakeTask.createTaskSet(1) + taskScheduler.submitTasks(taskSet) + var taskDescriptions = taskScheduler.resourceOffers(zeroCoreWorkerOffers).flatten + assert(0 === taskDescriptions.length) + + // No tasks should run as we only have 1 core free. + val numFreeCores = 1 + val singleCoreWorkerOffers = Seq(new WorkerOffer("executor0", "host0", numFreeCores), + new WorkerOffer("executor1", "host1", numFreeCores)) + taskScheduler.submitTasks(taskSet) + taskDescriptions = taskScheduler.resourceOffers(singleCoreWorkerOffers).flatten + assert(0 === taskDescriptions.length) + + // Now change the offers to have 2 cores in one executor and verify if it + // is chosen. + val multiCoreWorkerOffers = Seq(new WorkerOffer("executor0", "host0", taskCpus), + new WorkerOffer("executor1", "host1", numFreeCores)) + taskScheduler.submitTasks(taskSet) + taskDescriptions = taskScheduler.resourceOffers(multiCoreWorkerOffers).flatten + assert(1 === taskDescriptions.length) + assert("executor0" === taskDescriptions(0).executorId) + } } diff --git a/core/src/test/scala/org/apache/spark/scheduler/TaskSetManagerSuite.scala b/core/src/test/scala/org/apache/spark/scheduler/TaskSetManagerSuite.scala index 33cc7588b919c..c92b6dc96c8eb 100644 --- a/core/src/test/scala/org/apache/spark/scheduler/TaskSetManagerSuite.scala +++ b/core/src/test/scala/org/apache/spark/scheduler/TaskSetManagerSuite.scala @@ -26,7 +26,9 @@ import org.apache.spark._ import org.apache.spark.executor.TaskMetrics import org.apache.spark.util.FakeClock -class FakeDAGScheduler(taskScheduler: FakeTaskScheduler) extends DAGScheduler(taskScheduler) { +class FakeDAGScheduler(sc: SparkContext, taskScheduler: FakeTaskScheduler) + extends DAGScheduler(sc) { + override def taskStarted(task: Task[_], taskInfo: TaskInfo) { taskScheduler.startedTasks += taskInfo.index } @@ -41,7 +43,7 @@ class FakeDAGScheduler(taskScheduler: FakeTaskScheduler) extends DAGScheduler(ta taskScheduler.endedTasks(taskInfo.index) = reason } - override def executorGained(execId: String, host: String) {} + override def executorAdded(execId: String, host: String) {} override def executorLost(execId: String) {} @@ -66,7 +68,7 @@ class FakeTaskScheduler(sc: SparkContext, liveExecutors: (String, String)* /* ex val executors = new mutable.HashMap[String, String] ++ liveExecutors - dagScheduler = new FakeDAGScheduler(this) + dagScheduler = new FakeDAGScheduler(sc, this) def removeExecutor(execId: String): Unit = executors -= execId @@ -91,19 +93,16 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { val taskSet = FakeTask.createTaskSet(1) val manager = new TaskSetManager(sched, taskSet, MAX_TASK_FAILURES) - // Offer a host with no CPUs - assert(manager.resourceOffer("exec1", "host1", 0, ANY) === None) - // Offer a host with process-local as the constraint; this should work because the TaskSet // above won't have any locality preferences - val taskOption = manager.resourceOffer("exec1", "host1", 2, TaskLocality.PROCESS_LOCAL) + val taskOption = manager.resourceOffer("exec1", "host1", TaskLocality.PROCESS_LOCAL) assert(taskOption.isDefined) val task = taskOption.get assert(task.executorId === "exec1") assert(sched.startedTasks.contains(0)) // Re-offer the host -- now we should get no more tasks - assert(manager.resourceOffer("exec1", "host1", 2, PROCESS_LOCAL) === None) + assert(manager.resourceOffer("exec1", "host1", PROCESS_LOCAL) === None) // Tell it the task has finished manager.handleSuccessfulTask(0, createTaskResult(0)) @@ -119,7 +118,7 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { // First three offers should all find tasks for (i <- 0 until 3) { - val taskOption = manager.resourceOffer("exec1", "host1", 1, PROCESS_LOCAL) + val taskOption = manager.resourceOffer("exec1", "host1", PROCESS_LOCAL) assert(taskOption.isDefined) val task = taskOption.get assert(task.executorId === "exec1") @@ -127,7 +126,7 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { assert(sched.startedTasks.toSet === Set(0, 1, 2)) // Re-offer the host -- now we should get no more tasks - assert(manager.resourceOffer("exec1", "host1", 1, PROCESS_LOCAL) === None) + assert(manager.resourceOffer("exec1", "host1", PROCESS_LOCAL) === None) // Finish the first two tasks manager.handleSuccessfulTask(0, createTaskResult(0)) @@ -155,35 +154,35 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { val manager = new TaskSetManager(sched, taskSet, MAX_TASK_FAILURES, clock) // First offer host1, exec1: first task should be chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 0) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 0) // Offer host1, exec1 again: the last task, which has no prefs, should be chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 3) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 3) // Offer host1, exec1 again, at PROCESS_LOCAL level: nothing should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, PROCESS_LOCAL) === None) + assert(manager.resourceOffer("exec1", "host1", PROCESS_LOCAL) === None) clock.advance(LOCALITY_WAIT) // Offer host1, exec1 again, at PROCESS_LOCAL level: nothing should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, PROCESS_LOCAL) === None) + assert(manager.resourceOffer("exec1", "host1", PROCESS_LOCAL) === None) // Offer host1, exec1 again, at NODE_LOCAL level: we should choose task 2 - assert(manager.resourceOffer("exec1", "host1", 1, NODE_LOCAL).get.index == 2) + assert(manager.resourceOffer("exec1", "host1", NODE_LOCAL).get.index == 2) // Offer host1, exec1 again, at NODE_LOCAL level: nothing should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, NODE_LOCAL) === None) + assert(manager.resourceOffer("exec1", "host1", NODE_LOCAL) === None) // Offer host1, exec1 again, at ANY level: nothing should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY) === None) + assert(manager.resourceOffer("exec1", "host1", ANY) === None) clock.advance(LOCALITY_WAIT) // Offer host1, exec1 again, at ANY level: task 1 should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 1) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 1) // Offer host1, exec1 again, at ANY level: nothing should be chosen as we've launched all tasks - assert(manager.resourceOffer("exec1", "host1", 1, ANY) === None) + assert(manager.resourceOffer("exec1", "host1", ANY) === None) } test("delay scheduling with fallback") { @@ -201,29 +200,29 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { val manager = new TaskSetManager(sched, taskSet, MAX_TASK_FAILURES, clock) // First offer host1: first task should be chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 0) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 0) // Offer host1 again: nothing should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY) === None) + assert(manager.resourceOffer("exec1", "host1", ANY) === None) clock.advance(LOCALITY_WAIT) // Offer host1 again: second task (on host2) should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 1) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 1) // Offer host1 again: third task (on host2) should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 2) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 2) // Offer host2: fifth task (also on host2) should get chosen - assert(manager.resourceOffer("exec2", "host2", 1, ANY).get.index === 4) + assert(manager.resourceOffer("exec2", "host2", ANY).get.index === 4) // Now that we've launched a local task, we should no longer launch the task for host3 - assert(manager.resourceOffer("exec2", "host2", 1, ANY) === None) + assert(manager.resourceOffer("exec2", "host2", ANY) === None) clock.advance(LOCALITY_WAIT) // After another delay, we can go ahead and launch that task non-locally - assert(manager.resourceOffer("exec2", "host2", 1, ANY).get.index === 3) + assert(manager.resourceOffer("exec2", "host2", ANY).get.index === 3) } test("delay scheduling with failed hosts") { @@ -238,24 +237,24 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { val manager = new TaskSetManager(sched, taskSet, MAX_TASK_FAILURES, clock) // First offer host1: first task should be chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 0) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 0) // Offer host1 again: third task should be chosen immediately because host3 is not up - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 2) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 2) // After this, nothing should get chosen - assert(manager.resourceOffer("exec1", "host1", 1, ANY) === None) + assert(manager.resourceOffer("exec1", "host1", ANY) === None) // Now mark host2 as dead sched.removeExecutor("exec2") manager.executorLost("exec2", "host2") // Task 1 should immediately be launched on host1 because its original host is gone - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 1) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 1) // Now that all tasks have launched, nothing new should be launched anywhere else - assert(manager.resourceOffer("exec1", "host1", 1, ANY) === None) - assert(manager.resourceOffer("exec2", "host2", 1, ANY) === None) + assert(manager.resourceOffer("exec1", "host1", ANY) === None) + assert(manager.resourceOffer("exec2", "host2", ANY) === None) } test("task result lost") { @@ -265,14 +264,14 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { val clock = new FakeClock val manager = new TaskSetManager(sched, taskSet, MAX_TASK_FAILURES, clock) - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 0) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 0) // Tell it the task has finished but the result was lost. manager.handleFailedTask(0, TaskState.FINISHED, TaskResultLost) assert(sched.endedTasks(0) === TaskResultLost) // Re-offer the host -- now we should get task 0 again. - assert(manager.resourceOffer("exec1", "host1", 1, ANY).get.index === 0) + assert(manager.resourceOffer("exec1", "host1", ANY).get.index === 0) } test("repeated failures lead to task set abortion") { @@ -285,7 +284,7 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { // Fail the task MAX_TASK_FAILURES times, and check that the task set is aborted // after the last failure. (1 to manager.maxTaskFailures).foreach { index => - val offerResult = manager.resourceOffer("exec1", "host1", 1, ANY) + val offerResult = manager.resourceOffer("exec1", "host1", ANY) assert(offerResult.isDefined, "Expect resource offer on iteration %s to return a task".format(index)) assert(offerResult.get.index === 0) @@ -298,6 +297,93 @@ class TaskSetManagerSuite extends FunSuite with LocalSparkContext with Logging { } } + test("executors should be blacklisted after task failure, in spite of locality preferences") { + val rescheduleDelay = 300L + val conf = new SparkConf(). + set("spark.scheduler.executorTaskBlacklistTime", rescheduleDelay.toString). + // dont wait to jump locality levels in this test + set("spark.locality.wait", "0") + + sc = new SparkContext("local", "test", conf) + // two executors on same host, one on different. + val sched = new FakeTaskScheduler(sc, ("exec1", "host1"), + ("exec1.1", "host1"), ("exec2", "host2")) + // affinity to exec1 on host1 - which we will fail. + val taskSet = FakeTask.createTaskSet(1, Seq(TaskLocation("host1", "exec1"))) + val clock = new FakeClock + val manager = new TaskSetManager(sched, taskSet, 4, clock) + + { + val offerResult = manager.resourceOffer("exec1", "host1", TaskLocality.PROCESS_LOCAL) + assert(offerResult.isDefined, "Expect resource offer to return a task") + + assert(offerResult.get.index === 0) + assert(offerResult.get.executorId === "exec1") + + // Cause exec1 to fail : failure 1 + manager.handleFailedTask(offerResult.get.taskId, TaskState.FINISHED, TaskResultLost) + assert(!sched.taskSetsFailed.contains(taskSet.id)) + + // Ensure scheduling on exec1 fails after failure 1 due to blacklist + assert(manager.resourceOffer("exec1", "host1", TaskLocality.PROCESS_LOCAL).isEmpty) + assert(manager.resourceOffer("exec1", "host1", TaskLocality.NODE_LOCAL).isEmpty) + assert(manager.resourceOffer("exec1", "host1", TaskLocality.RACK_LOCAL).isEmpty) + assert(manager.resourceOffer("exec1", "host1", TaskLocality.ANY).isEmpty) + } + + // Run the task on exec1.1 - should work, and then fail it on exec1.1 + { + val offerResult = manager.resourceOffer("exec1.1", "host1", TaskLocality.NODE_LOCAL) + assert(offerResult.isDefined, + "Expect resource offer to return a task for exec1.1, offerResult = " + offerResult) + + assert(offerResult.get.index === 0) + assert(offerResult.get.executorId === "exec1.1") + + // Cause exec1.1 to fail : failure 2 + manager.handleFailedTask(offerResult.get.taskId, TaskState.FINISHED, TaskResultLost) + assert(!sched.taskSetsFailed.contains(taskSet.id)) + + // Ensure scheduling on exec1.1 fails after failure 2 due to blacklist + assert(manager.resourceOffer("exec1.1", "host1", TaskLocality.NODE_LOCAL).isEmpty) + } + + // Run the task on exec2 - should work, and then fail it on exec2 + { + val offerResult = manager.resourceOffer("exec2", "host2", TaskLocality.ANY) + assert(offerResult.isDefined, "Expect resource offer to return a task") + + assert(offerResult.get.index === 0) + assert(offerResult.get.executorId === "exec2") + + // Cause exec2 to fail : failure 3 + manager.handleFailedTask(offerResult.get.taskId, TaskState.FINISHED, TaskResultLost) + assert(!sched.taskSetsFailed.contains(taskSet.id)) + + // Ensure scheduling on exec2 fails after failure 3 due to blacklist + assert(manager.resourceOffer("exec2", "host2", TaskLocality.ANY).isEmpty) + } + + // After reschedule delay, scheduling on exec1 should be possible. + clock.advance(rescheduleDelay) + + { + val offerResult = manager.resourceOffer("exec1", "host1", TaskLocality.PROCESS_LOCAL) + assert(offerResult.isDefined, "Expect resource offer to return a task") + + assert(offerResult.get.index === 0) + assert(offerResult.get.executorId === "exec1") + + assert(manager.resourceOffer("exec1", "host1", TaskLocality.PROCESS_LOCAL).isEmpty) + + // Cause exec1 to fail : failure 4 + manager.handleFailedTask(offerResult.get.taskId, TaskState.FINISHED, TaskResultLost) + } + + // we have failed the same task 4 times now : task id should now be in taskSetsFailed + assert(sched.taskSetsFailed.contains(taskSet.id)) + } + def createTaskResult(id: Int): DirectTaskResult[Int] = { val valueSer = SparkEnv.get.serializer.newInstance() new DirectTaskResult[Int](valueSer.serialize(id), mutable.Map.empty, new TaskMetrics) diff --git a/core/src/test/scala/org/apache/spark/storage/BlockManagerSuite.scala b/core/src/test/scala/org/apache/spark/storage/BlockManagerSuite.scala index 1036b9f34e9dd..e10ec7d2624a0 100644 --- a/core/src/test/scala/org/apache/spark/storage/BlockManagerSuite.scala +++ b/core/src/test/scala/org/apache/spark/storage/BlockManagerSuite.scala @@ -28,7 +28,8 @@ import org.scalatest.concurrent.Timeouts._ import org.scalatest.matchers.ShouldMatchers._ import org.scalatest.time.SpanSugar._ -import org.apache.spark.{SecurityManager, SparkConf, SparkContext} +import org.apache.spark.{MapOutputTrackerMaster, SecurityManager, SparkConf} +import org.apache.spark.scheduler.LiveListenerBus import org.apache.spark.serializer.{JavaSerializer, KryoSerializer} import org.apache.spark.util.{AkkaUtils, ByteBufferInputStream, SizeEstimator, Utils} @@ -41,6 +42,7 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT var oldArch: String = null conf.set("spark.authenticate", "false") val securityMgr = new SecurityManager(conf) + val mapOutputTracker = new MapOutputTrackerMaster(conf) // Reuse a serializer across tests to avoid creating a new thread-local buffer on each test conf.set("spark.kryoserializer.buffer.mb", "1") @@ -57,7 +59,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT conf.set("spark.driver.port", boundPort.toString) master = new BlockManagerMaster( - actorSystem.actorOf(Props(new BlockManagerMasterActor(true, conf))), conf) + actorSystem.actorOf(Props(new BlockManagerMasterActor(true, conf, new LiveListenerBus))), + conf) // Set the arch to 64-bit and compressedOops to true to get a deterministic test-case oldArch = System.setProperty("os.arch", "amd64") @@ -94,9 +97,9 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("StorageLevel object caching") { - val level1 = StorageLevel(false, false, false, 3) - val level2 = StorageLevel(false, false, false, 3) // this should return the same object as level1 - val level3 = StorageLevel(false, false, false, 2) // this should return a different object + val level1 = StorageLevel(false, false, false, false, 3) + val level2 = StorageLevel(false, false, false, false, 3) // this should return the same object as level1 + val level3 = StorageLevel(false, false, false, false, 2) // this should return a different object assert(level2 === level1, "level2 is not same as level1") assert(level2.eq(level1), "level2 is not the same object as level1") assert(level3 != level1, "level3 is same as level1") @@ -128,7 +131,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("master + 1 manager interaction") { - store = new BlockManager("", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -158,9 +162,10 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("master + 2 managers interaction") { - store = new BlockManager("exec1", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("exec1", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) store2 = new BlockManager("exec2", actorSystem, master, new KryoSerializer(conf), 2000, conf, - securityMgr) + securityMgr, mapOutputTracker) val peers = master.getPeers(store.blockManagerId, 1) assert(peers.size === 1, "master did not return the other manager as a peer") @@ -175,7 +180,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("removing block") { - store = new BlockManager("", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -223,7 +229,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("removing rdd") { - store = new BlockManager("", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -255,9 +262,82 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT master.getLocations(rdd(0, 1)) should have size 0 } + test("removing broadcast") { + store = new BlockManager("", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) + val driverStore = store + val executorStore = new BlockManager("executor", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) + val a1 = new Array[Byte](400) + val a2 = new Array[Byte](400) + val a3 = new Array[Byte](400) + val a4 = new Array[Byte](400) + + val broadcast0BlockId = BroadcastBlockId(0) + val broadcast1BlockId = BroadcastBlockId(1) + val broadcast2BlockId = BroadcastBlockId(2) + val broadcast2BlockId2 = BroadcastBlockId(2, "_") + + // insert broadcast blocks in both the stores + Seq(driverStore, executorStore).foreach { case s => + s.putSingle(broadcast0BlockId, a1, StorageLevel.DISK_ONLY) + s.putSingle(broadcast1BlockId, a2, StorageLevel.DISK_ONLY) + s.putSingle(broadcast2BlockId, a3, StorageLevel.DISK_ONLY) + s.putSingle(broadcast2BlockId2, a4, StorageLevel.DISK_ONLY) + } + + // verify whether the blocks exist in both the stores + Seq(driverStore, executorStore).foreach { case s => + s.getLocal(broadcast0BlockId) should not be (None) + s.getLocal(broadcast1BlockId) should not be (None) + s.getLocal(broadcast2BlockId) should not be (None) + s.getLocal(broadcast2BlockId2) should not be (None) + } + + // remove broadcast 0 block only from executors + master.removeBroadcast(0, removeFromMaster = false, blocking = true) + + // only broadcast 0 block should be removed from the executor store + executorStore.getLocal(broadcast0BlockId) should be (None) + executorStore.getLocal(broadcast1BlockId) should not be (None) + executorStore.getLocal(broadcast2BlockId) should not be (None) + + // nothing should be removed from the driver store + driverStore.getLocal(broadcast0BlockId) should not be (None) + driverStore.getLocal(broadcast1BlockId) should not be (None) + driverStore.getLocal(broadcast2BlockId) should not be (None) + + // remove broadcast 0 block from the driver as well + master.removeBroadcast(0, removeFromMaster = true, blocking = true) + driverStore.getLocal(broadcast0BlockId) should be (None) + driverStore.getLocal(broadcast1BlockId) should not be (None) + + // remove broadcast 1 block from both the stores asynchronously + // and verify all broadcast 1 blocks have been removed + master.removeBroadcast(1, removeFromMaster = true, blocking = false) + eventually(timeout(1000 milliseconds), interval(10 milliseconds)) { + driverStore.getLocal(broadcast1BlockId) should be (None) + executorStore.getLocal(broadcast1BlockId) should be (None) + } + + // remove broadcast 2 from both the stores asynchronously + // and verify all broadcast 2 blocks have been removed + master.removeBroadcast(2, removeFromMaster = true, blocking = false) + eventually(timeout(1000 milliseconds), interval(10 milliseconds)) { + driverStore.getLocal(broadcast2BlockId) should be (None) + driverStore.getLocal(broadcast2BlockId2) should be (None) + executorStore.getLocal(broadcast2BlockId) should be (None) + executorStore.getLocal(broadcast2BlockId2) should be (None) + } + executorStore.stop() + driverStore.stop() + store = null + } + test("reregistration on heart beat") { val heartBeat = PrivateMethod[Unit]('heartBeat) - store = new BlockManager("", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) store.putSingle("a1", a1, StorageLevel.MEMORY_ONLY) @@ -273,7 +353,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("reregistration on block update") { - store = new BlockManager("", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) @@ -292,7 +373,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT test("reregistration doesn't dead lock") { val heartBeat = PrivateMethod[Unit]('heartBeat) - store = new BlockManager("", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = List(new Array[Byte](400)) @@ -329,7 +411,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("in-memory LRU storage") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -348,7 +431,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("in-memory LRU storage with serialization") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -367,7 +451,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("in-memory LRU for partitions of same RDD") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -386,7 +471,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("in-memory LRU for partitions of multiple RDDs") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) store.putSingle(rdd(0, 1), new Array[Byte](400), StorageLevel.MEMORY_ONLY) store.putSingle(rdd(0, 2), new Array[Byte](400), StorageLevel.MEMORY_ONLY) store.putSingle(rdd(1, 1), new Array[Byte](400), StorageLevel.MEMORY_ONLY) @@ -408,8 +494,29 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT assert(store.memoryStore.contains(rdd(0, 3)), "rdd_0_3 was not in store") } + test("tachyon storage") { + // TODO Make the spark.test.tachyon.enable true after using tachyon 0.5.0 testing jar. + val tachyonUnitTestEnabled = conf.getBoolean("spark.test.tachyon.enable", false) + if (tachyonUnitTestEnabled) { + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) + val a1 = new Array[Byte](400) + val a2 = new Array[Byte](400) + val a3 = new Array[Byte](400) + store.putSingle("a1", a1, StorageLevel.OFF_HEAP) + store.putSingle("a2", a2, StorageLevel.OFF_HEAP) + store.putSingle("a3", a3, StorageLevel.OFF_HEAP) + assert(store.getSingle("a3").isDefined, "a3 was in store") + assert(store.getSingle("a2").isDefined, "a2 was in store") + assert(store.getSingle("a1").isDefined, "a1 was in store") + } else { + info("tachyon storage test disabled.") + } + } + test("on-disk storage") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -422,7 +529,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("disk and memory storage") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -437,7 +545,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("disk and memory storage with getLocalBytes") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -452,7 +561,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("disk and memory storage with serialization") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -467,7 +577,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("disk and memory storage with serialization and getLocalBytes") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -482,7 +593,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("LRU with mixed storage levels") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val a1 = new Array[Byte](400) val a2 = new Array[Byte](400) val a3 = new Array[Byte](400) @@ -492,12 +604,9 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT store.putSingle("a2", a2, StorageLevel.MEMORY_ONLY_SER) store.putSingle("a3", a3, StorageLevel.DISK_ONLY) // At this point LRU should not kick in because a3 is only on disk - assert(store.getSingle("a1").isDefined, "a2 was not in store") - assert(store.getSingle("a2").isDefined, "a3 was not in store") - assert(store.getSingle("a3").isDefined, "a1 was not in store") - assert(store.getSingle("a1").isDefined, "a2 was not in store") - assert(store.getSingle("a2").isDefined, "a3 was not in store") - assert(store.getSingle("a3").isDefined, "a1 was not in store") + assert(store.getSingle("a1").isDefined, "a1 was not in store") + assert(store.getSingle("a2").isDefined, "a2 was not in store") + assert(store.getSingle("a3").isDefined, "a3 was not in store") // Now let's add in a4, which uses both disk and memory; a1 should drop out store.putSingle("a4", a4, StorageLevel.MEMORY_AND_DISK_SER) assert(store.getSingle("a1") == None, "a1 was in store") @@ -507,7 +616,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("in-memory LRU with streams") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val list1 = List(new Array[Byte](200), new Array[Byte](200)) val list2 = List(new Array[Byte](200), new Array[Byte](200)) val list3 = List(new Array[Byte](200), new Array[Byte](200)) @@ -531,7 +641,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("LRU with mixed storage levels and streams") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) val list1 = List(new Array[Byte](200), new Array[Byte](200)) val list2 = List(new Array[Byte](200), new Array[Byte](200)) val list3 = List(new Array[Byte](200), new Array[Byte](200)) @@ -577,7 +688,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } test("overly large block") { - store = new BlockManager("", actorSystem, master, serializer, 500, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 500, conf, + securityMgr, mapOutputTracker) store.putSingle("a1", new Array[Byte](1000), StorageLevel.MEMORY_ONLY) assert(store.getSingle("a1") === None, "a1 was in store") store.putSingle("a2", new Array[Byte](1000), StorageLevel.MEMORY_AND_DISK) @@ -588,7 +700,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT test("block compression") { try { conf.set("spark.shuffle.compress", "true") - store = new BlockManager("exec1", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("exec1", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) store.putSingle(ShuffleBlockId(0, 0, 0), new Array[Byte](1000), StorageLevel.MEMORY_ONLY_SER) assert(store.memoryStore.getSize(ShuffleBlockId(0, 0, 0)) <= 100, "shuffle_0_0_0 was not compressed") @@ -596,7 +709,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT store = null conf.set("spark.shuffle.compress", "false") - store = new BlockManager("exec2", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("exec2", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) store.putSingle(ShuffleBlockId(0, 0, 0), new Array[Byte](1000), StorageLevel.MEMORY_ONLY_SER) assert(store.memoryStore.getSize(ShuffleBlockId(0, 0, 0)) >= 1000, "shuffle_0_0_0 was compressed") @@ -604,7 +718,8 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT store = null conf.set("spark.broadcast.compress", "true") - store = new BlockManager("exec3", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("exec3", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) store.putSingle(BroadcastBlockId(0), new Array[Byte](1000), StorageLevel.MEMORY_ONLY_SER) assert(store.memoryStore.getSize(BroadcastBlockId(0)) <= 100, "broadcast_0 was not compressed") @@ -612,28 +727,32 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT store = null conf.set("spark.broadcast.compress", "false") - store = new BlockManager("exec4", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("exec4", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) store.putSingle(BroadcastBlockId(0), new Array[Byte](1000), StorageLevel.MEMORY_ONLY_SER) assert(store.memoryStore.getSize(BroadcastBlockId(0)) >= 1000, "broadcast_0 was compressed") store.stop() store = null conf.set("spark.rdd.compress", "true") - store = new BlockManager("exec5", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("exec5", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) store.putSingle(rdd(0, 0), new Array[Byte](1000), StorageLevel.MEMORY_ONLY_SER) assert(store.memoryStore.getSize(rdd(0, 0)) <= 100, "rdd_0_0 was not compressed") store.stop() store = null conf.set("spark.rdd.compress", "false") - store = new BlockManager("exec6", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("exec6", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) store.putSingle(rdd(0, 0), new Array[Byte](1000), StorageLevel.MEMORY_ONLY_SER) assert(store.memoryStore.getSize(rdd(0, 0)) >= 1000, "rdd_0_0 was compressed") store.stop() store = null // Check that any other block types are also kept uncompressed - store = new BlockManager("exec7", actorSystem, master, serializer, 2000, conf, securityMgr) + store = new BlockManager("exec7", actorSystem, master, serializer, 2000, conf, + securityMgr, mapOutputTracker) store.putSingle("other_block", new Array[Byte](1000), StorageLevel.MEMORY_ONLY) assert(store.memoryStore.getSize("other_block") >= 1000, "other_block was compressed") store.stop() @@ -648,7 +767,7 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT test("block store put failure") { // Use Java serializer so we can create an unserializable error. store = new BlockManager("", actorSystem, master, new JavaSerializer(conf), 1200, conf, - securityMgr) + securityMgr, mapOutputTracker) // The put should fail since a1 is not serializable. class UnserializableClass @@ -663,8 +782,138 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter with PrivateMethodT } } + test("updated block statuses") { + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) + val list = List.fill(2)(new Array[Byte](200)) + val bigList = List.fill(8)(new Array[Byte](200)) + + // 1 updated block (i.e. list1) + val updatedBlocks1 = + store.put("list1", list.iterator, StorageLevel.MEMORY_ONLY, tellMaster = true) + assert(updatedBlocks1.size === 1) + assert(updatedBlocks1.head._1 === TestBlockId("list1")) + assert(updatedBlocks1.head._2.storageLevel === StorageLevel.MEMORY_ONLY) + + // 1 updated block (i.e. list2) + val updatedBlocks2 = + store.put("list2", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = true) + assert(updatedBlocks2.size === 1) + assert(updatedBlocks2.head._1 === TestBlockId("list2")) + assert(updatedBlocks2.head._2.storageLevel === StorageLevel.MEMORY_ONLY) + + // 2 updated blocks - list1 is kicked out of memory while list3 is added + val updatedBlocks3 = + store.put("list3", list.iterator, StorageLevel.MEMORY_ONLY, tellMaster = true) + assert(updatedBlocks3.size === 2) + updatedBlocks3.foreach { case (id, status) => + id match { + case TestBlockId("list1") => assert(status.storageLevel === StorageLevel.NONE) + case TestBlockId("list3") => assert(status.storageLevel === StorageLevel.MEMORY_ONLY) + case _ => fail("Updated block is neither list1 nor list3") + } + } + assert(store.get("list3").isDefined, "list3 was not in store") + + // 2 updated blocks - list2 is kicked out of memory (but put on disk) while list4 is added + val updatedBlocks4 = + store.put("list4", list.iterator, StorageLevel.MEMORY_ONLY, tellMaster = true) + assert(updatedBlocks4.size === 2) + updatedBlocks4.foreach { case (id, status) => + id match { + case TestBlockId("list2") => assert(status.storageLevel === StorageLevel.DISK_ONLY) + case TestBlockId("list4") => assert(status.storageLevel === StorageLevel.MEMORY_ONLY) + case _ => fail("Updated block is neither list2 nor list4") + } + } + assert(store.get("list4").isDefined, "list4 was not in store") + + // No updated blocks - nothing is kicked out of memory because list5 is too big to be added + val updatedBlocks5 = + store.put("list5", bigList.iterator, StorageLevel.MEMORY_ONLY, tellMaster = true) + assert(updatedBlocks5.size === 0) + assert(store.get("list2").isDefined, "list2 was not in store") + assert(store.get("list4").isDefined, "list4 was not in store") + assert(!store.get("list5").isDefined, "list5 was in store") + } + + test("query block statuses") { + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) + val list = List.fill(2)(new Array[Byte](200)) + + // Tell master. By LRU, only list2 and list3 remains. + store.put("list1", list.iterator, StorageLevel.MEMORY_ONLY, tellMaster = true) + store.put("list2", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = true) + store.put("list3", list.iterator, StorageLevel.MEMORY_ONLY, tellMaster = true) + + // getLocations and getBlockStatus should yield the same locations + assert(store.master.getLocations("list1").size === 0) + assert(store.master.getLocations("list2").size === 1) + assert(store.master.getLocations("list3").size === 1) + assert(store.master.getBlockStatus("list1", askSlaves = false).size === 0) + assert(store.master.getBlockStatus("list2", askSlaves = false).size === 1) + assert(store.master.getBlockStatus("list3", askSlaves = false).size === 1) + assert(store.master.getBlockStatus("list1", askSlaves = true).size === 0) + assert(store.master.getBlockStatus("list2", askSlaves = true).size === 1) + assert(store.master.getBlockStatus("list3", askSlaves = true).size === 1) + + // This time don't tell master and see what happens. By LRU, only list5 and list6 remains. + store.put("list4", list.iterator, StorageLevel.MEMORY_ONLY, tellMaster = false) + store.put("list5", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = false) + store.put("list6", list.iterator, StorageLevel.MEMORY_ONLY, tellMaster = false) + + // getLocations should return nothing because the master is not informed + // getBlockStatus without asking slaves should have the same result + // getBlockStatus with asking slaves, however, should return the actual block statuses + assert(store.master.getLocations("list4").size === 0) + assert(store.master.getLocations("list5").size === 0) + assert(store.master.getLocations("list6").size === 0) + assert(store.master.getBlockStatus("list4", askSlaves = false).size === 0) + assert(store.master.getBlockStatus("list5", askSlaves = false).size === 0) + assert(store.master.getBlockStatus("list6", askSlaves = false).size === 0) + assert(store.master.getBlockStatus("list4", askSlaves = true).size === 0) + assert(store.master.getBlockStatus("list5", askSlaves = true).size === 1) + assert(store.master.getBlockStatus("list6", askSlaves = true).size === 1) + } + + test("get matching blocks") { + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) + val list = List.fill(2)(new Array[Byte](10)) + + // insert some blocks + store.put("list1", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = true) + store.put("list2", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = true) + store.put("list3", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = true) + + // getLocations and getBlockStatus should yield the same locations + assert(store.master.getMatchingBlockIds(_.toString.contains("list"), askSlaves = false).size === 3) + assert(store.master.getMatchingBlockIds(_.toString.contains("list1"), askSlaves = false).size === 1) + + // insert some more blocks + store.put("newlist1", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = true) + store.put("newlist2", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = false) + store.put("newlist3", list.iterator, StorageLevel.MEMORY_AND_DISK, tellMaster = false) + + // getLocations and getBlockStatus should yield the same locations + assert(store.master.getMatchingBlockIds(_.toString.contains("newlist"), askSlaves = false).size === 1) + assert(store.master.getMatchingBlockIds(_.toString.contains("newlist"), askSlaves = true).size === 3) + + val blockIds = Seq(RDDBlockId(1, 0), RDDBlockId(1, 1), RDDBlockId(2, 0)) + blockIds.foreach { blockId => + store.put(blockId, list.iterator, StorageLevel.MEMORY_ONLY, tellMaster = true) + } + val matchedBlockIds = store.master.getMatchingBlockIds(_ match { + case RDDBlockId(1, _) => true + case _ => false + }, askSlaves = true) + assert(matchedBlockIds.toSet === Set(RDDBlockId(1, 0), RDDBlockId(1, 1))) + } + test("SPARK-1194 regression: fix the same-RDD rule for cache replacement") { - store = new BlockManager("", actorSystem, master, serializer, 1200, conf, securityMgr) + store = new BlockManager("", actorSystem, master, serializer, 1200, conf, + securityMgr, mapOutputTracker) store.putSingle(rdd(0, 0), new Array[Byte](400), StorageLevel.MEMORY_ONLY) store.putSingle(rdd(1, 0), new Array[Byte](400), StorageLevel.MEMORY_ONLY) // Access rdd_1_0 to ensure it's not least recently used. diff --git a/core/src/test/scala/org/apache/spark/storage/DiskBlockManagerSuite.scala b/core/src/test/scala/org/apache/spark/storage/DiskBlockManagerSuite.scala index 62f9b3cc7b2c1..808ddfdcf45d8 100644 --- a/core/src/test/scala/org/apache/spark/storage/DiskBlockManagerSuite.scala +++ b/core/src/test/scala/org/apache/spark/storage/DiskBlockManagerSuite.scala @@ -59,8 +59,16 @@ class DiskBlockManagerSuite extends FunSuite with BeforeAndAfterEach { val newFile = diskBlockManager.getFile(blockId) writeToFile(newFile, 10) assertSegmentEquals(blockId, blockId.name, 0, 10) - + assert(diskBlockManager.containsBlock(blockId)) newFile.delete() + assert(!diskBlockManager.containsBlock(blockId)) + } + + test("enumerating blocks") { + val ids = (1 to 100).map(i => TestBlockId("test_" + i)) + val files = ids.map(id => diskBlockManager.getFile(id)) + files.foreach(file => writeToFile(file, 10)) + assert(diskBlockManager.getAllBlocks.toSet === ids.toSet) } test("block appending") { diff --git a/core/src/test/scala/org/apache/spark/ui/UISuite.scala b/core/src/test/scala/org/apache/spark/ui/UISuite.scala index 30415814adbba..0332a2a0539ee 100644 --- a/core/src/test/scala/org/apache/spark/ui/UISuite.scala +++ b/core/src/test/scala/org/apache/spark/ui/UISuite.scala @@ -18,15 +18,81 @@ package org.apache.spark.ui import java.net.ServerSocket +import javax.servlet.http.HttpServletRequest +import scala.io.Source import scala.util.{Failure, Success, Try} import org.eclipse.jetty.server.Server +import org.eclipse.jetty.servlet.ServletContextHandler import org.scalatest.FunSuite +import org.scalatest.concurrent.Eventually._ +import org.scalatest.time.SpanSugar._ -import org.apache.spark.SparkConf +import org.apache.spark.{SparkContext, SparkConf} +import org.apache.spark.LocalSparkContext._ +import scala.xml.Node class UISuite extends FunSuite { + + test("basic ui visibility") { + withSpark(new SparkContext("local", "test")) { sc => + // test if the ui is visible, and all the expected tabs are visible + eventually(timeout(10 seconds), interval(50 milliseconds)) { + val html = Source.fromURL(sc.ui.appUIAddress).mkString + assert(!html.contains("random data that should not be present")) + assert(html.toLowerCase.contains("stages")) + assert(html.toLowerCase.contains("storage")) + assert(html.toLowerCase.contains("environment")) + assert(html.toLowerCase.contains("executors")) + } + } + } + + test("visibility at localhost:4040") { + withSpark(new SparkContext("local", "test")) { sc => + // test if visible from http://localhost:4040 + eventually(timeout(10 seconds), interval(50 milliseconds)) { + val html = Source.fromURL("http://localhost:4040").mkString + assert(html.toLowerCase.contains("stages")) + } + } + } + + test("attaching a new tab") { + withSpark(new SparkContext("local", "test")) { sc => + val sparkUI = sc.ui + + val newTab = new WebUITab(sparkUI, "foo") { + attachPage(new WebUIPage("") { + def render(request: HttpServletRequest): Seq[Node] = { + "html magic" + } + }) + } + sparkUI.attachTab(newTab) + eventually(timeout(10 seconds), interval(50 milliseconds)) { + val html = Source.fromURL(sc.ui.appUIAddress).mkString + assert(!html.contains("random data that should not be present")) + + // check whether new page exists + assert(html.toLowerCase.contains("foo")) + + // check whether other pages still exist + assert(html.toLowerCase.contains("stages")) + assert(html.toLowerCase.contains("storage")) + assert(html.toLowerCase.contains("environment")) + assert(html.toLowerCase.contains("executors")) + } + + eventually(timeout(10 seconds), interval(50 milliseconds)) { + val html = Source.fromURL(sc.ui.appUIAddress.stripSuffix("/") + "/foo").mkString + // check whether new page exists + assert(html.contains("magic")) + } + } + } + test("jetty port increases under contention") { val startPort = 4040 val server = new Server(startPort) @@ -36,22 +102,27 @@ class UISuite extends FunSuite { case Failure(e) => // Either case server port is busy hence setup for test complete } - val (jettyServer1, boundPort1) = JettyUtils.startJettyServer("0.0.0.0", startPort, Seq(), - new SparkConf) - val (jettyServer2, boundPort2) = JettyUtils.startJettyServer("0.0.0.0", startPort, Seq(), - new SparkConf) + val serverInfo1 = JettyUtils.startJettyServer( + "0.0.0.0", startPort, Seq[ServletContextHandler](), new SparkConf) + val serverInfo2 = JettyUtils.startJettyServer( + "0.0.0.0", startPort, Seq[ServletContextHandler](), new SparkConf) // Allow some wiggle room in case ports on the machine are under contention + val boundPort1 = serverInfo1.boundPort + val boundPort2 = serverInfo2.boundPort assert(boundPort1 > startPort && boundPort1 < startPort + 10) assert(boundPort2 > boundPort1 && boundPort2 < boundPort1 + 10) } test("jetty binds to port 0 correctly") { - val (jettyServer, boundPort) = JettyUtils.startJettyServer("0.0.0.0", 0, Seq(), new SparkConf) - assert(jettyServer.getState === "STARTED") + val serverInfo = JettyUtils.startJettyServer( + "0.0.0.0", 0, Seq[ServletContextHandler](), new SparkConf) + val server = serverInfo.server + val boundPort = serverInfo.boundPort + assert(server.getState === "STARTED") assert(boundPort != 0) - Try {new ServerSocket(boundPort)} match { + Try { new ServerSocket(boundPort) } match { case Success(s) => fail("Port %s doesn't seem used by jetty server".format(boundPort)) - case Failure (e) => + case Failure(e) => } } } diff --git a/core/src/test/scala/org/apache/spark/ui/jobs/JobProgressListenerSuite.scala b/core/src/test/scala/org/apache/spark/ui/jobs/JobProgressListenerSuite.scala index 8ca863e8b3667..8c06a2d9aa4ab 100644 --- a/core/src/test/scala/org/apache/spark/ui/jobs/JobProgressListenerSuite.scala +++ b/core/src/test/scala/org/apache/spark/ui/jobs/JobProgressListenerSuite.scala @@ -18,15 +18,45 @@ package org.apache.spark.ui.jobs import org.scalatest.FunSuite +import org.scalatest.matchers.ShouldMatchers -import org.apache.spark.{LocalSparkContext, SparkContext, Success} +import org.apache.spark.{LocalSparkContext, SparkConf, Success} import org.apache.spark.executor.{ShuffleReadMetrics, TaskMetrics} import org.apache.spark.scheduler._ +import org.apache.spark.util.Utils + +class JobProgressListenerSuite extends FunSuite with LocalSparkContext with ShouldMatchers { + test("test LRU eviction of stages") { + val conf = new SparkConf() + conf.set("spark.ui.retainedStages", 5.toString) + val listener = new JobProgressListener(conf) + + def createStageStartEvent(stageId: Int) = { + val stageInfo = new StageInfo(stageId, stageId.toString, 0, null) + SparkListenerStageSubmitted(stageInfo) + } + + def createStageEndEvent(stageId: Int) = { + val stageInfo = new StageInfo(stageId, stageId.toString, 0, null) + SparkListenerStageCompleted(stageInfo) + } + + for (i <- 1 to 50) { + listener.onStageSubmitted(createStageStartEvent(i)) + listener.onStageCompleted(createStageEndEvent(i)) + } + + listener.completedStages.size should be (5) + listener.completedStages.filter(_.stageId == 50).size should be (1) + listener.completedStages.filter(_.stageId == 49).size should be (1) + listener.completedStages.filter(_.stageId == 48).size should be (1) + listener.completedStages.filter(_.stageId == 47).size should be (1) + listener.completedStages.filter(_.stageId == 46).size should be (1) + } -class JobProgressListenerSuite extends FunSuite with LocalSparkContext { test("test executor id to summary") { - val sc = new SparkContext("local", "test") - val listener = new JobProgressListener(sc) + val conf = new SparkConf() + val listener = new JobProgressListener(conf) val taskMetrics = new TaskMetrics() val shuffleReadMetrics = new ShuffleReadMetrics() @@ -38,16 +68,17 @@ class JobProgressListenerSuite extends FunSuite with LocalSparkContext { taskMetrics.shuffleReadMetrics = Some(shuffleReadMetrics) var taskInfo = new TaskInfo(1234L, 0, 0L, "exe-1", "host1", TaskLocality.NODE_LOCAL) taskInfo.finishTime = 1 - listener.onTaskEnd(new SparkListenerTaskEnd( - new ShuffleMapTask(0, null, null, 0, null), Success, taskInfo, taskMetrics)) + var task = new ShuffleMapTask(0, null, null, 0, null) + val taskType = Utils.getFormattedClassName(task) + listener.onTaskEnd(SparkListenerTaskEnd(task.stageId, taskType, Success, taskInfo, taskMetrics)) assert(listener.stageIdToExecutorSummaries.getOrElse(0, fail()).getOrElse("exe-1", fail()) .shuffleRead == 1000) // finish a task with unknown executor-id, nothing should happen taskInfo = new TaskInfo(1234L, 0, 1000L, "exe-unknown", "host1", TaskLocality.NODE_LOCAL) taskInfo.finishTime = 1 - listener.onTaskEnd(new SparkListenerTaskEnd( - new ShuffleMapTask(0, null, null, 0, null), Success, taskInfo, taskMetrics)) + task = new ShuffleMapTask(0, null, null, 0, null) + listener.onTaskEnd(SparkListenerTaskEnd(task.stageId, taskType, Success, taskInfo, taskMetrics)) assert(listener.stageIdToExecutorSummaries.size == 1) // finish this task, should get updated duration @@ -55,8 +86,8 @@ class JobProgressListenerSuite extends FunSuite with LocalSparkContext { taskMetrics.shuffleReadMetrics = Some(shuffleReadMetrics) taskInfo = new TaskInfo(1235L, 0, 0L, "exe-1", "host1", TaskLocality.NODE_LOCAL) taskInfo.finishTime = 1 - listener.onTaskEnd(new SparkListenerTaskEnd( - new ShuffleMapTask(0, null, null, 0, null), Success, taskInfo, taskMetrics)) + task = new ShuffleMapTask(0, null, null, 0, null) + listener.onTaskEnd(SparkListenerTaskEnd(task.stageId, taskType, Success, taskInfo, taskMetrics)) assert(listener.stageIdToExecutorSummaries.getOrElse(0, fail()).getOrElse("exe-1", fail()) .shuffleRead == 2000) @@ -65,8 +96,8 @@ class JobProgressListenerSuite extends FunSuite with LocalSparkContext { taskMetrics.shuffleReadMetrics = Some(shuffleReadMetrics) taskInfo = new TaskInfo(1236L, 0, 0L, "exe-2", "host1", TaskLocality.NODE_LOCAL) taskInfo.finishTime = 1 - listener.onTaskEnd(new SparkListenerTaskEnd( - new ShuffleMapTask(0, null, null, 0, null), Success, taskInfo, taskMetrics)) + task = new ShuffleMapTask(0, null, null, 0, null) + listener.onTaskEnd(SparkListenerTaskEnd(task.stageId, taskType, Success, taskInfo, taskMetrics)) assert(listener.stageIdToExecutorSummaries.getOrElse(0, fail()).getOrElse("exe-2", fail()) .shuffleRead == 1000) } diff --git a/core/src/test/scala/org/apache/spark/util/JsonProtocolSuite.scala b/core/src/test/scala/org/apache/spark/util/JsonProtocolSuite.scala new file mode 100644 index 0000000000000..f75297a02dc8b --- /dev/null +++ b/core/src/test/scala/org/apache/spark/util/JsonProtocolSuite.scala @@ -0,0 +1,576 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.util + +import java.util.Properties + +import scala.collection.Map + +import org.json4s.jackson.JsonMethods._ +import org.scalatest.FunSuite + +import org.apache.spark._ +import org.apache.spark.executor._ +import org.apache.spark.scheduler._ +import org.apache.spark.storage._ + +class JsonProtocolSuite extends FunSuite { + + test("SparkListenerEvent") { + val stageSubmitted = + SparkListenerStageSubmitted(makeStageInfo(100, 200, 300, 400L, 500L), properties) + val stageCompleted = SparkListenerStageCompleted(makeStageInfo(101, 201, 301, 401L, 501L)) + val taskStart = SparkListenerTaskStart(111, makeTaskInfo(222L, 333, 444L)) + val taskGettingResult = SparkListenerTaskGettingResult(makeTaskInfo(1000L, 2000, 3000L)) + val taskEnd = SparkListenerTaskEnd(1, "ShuffleMapTask", Success, + makeTaskInfo(123L, 234, 345L), makeTaskMetrics(300L, 400L, 500L, 600L, 700, 800)) + val jobStart = SparkListenerJobStart(10, Seq[Int](1, 2, 3, 4), properties) + val jobEnd = SparkListenerJobEnd(20, JobSucceeded) + val environmentUpdate = SparkListenerEnvironmentUpdate(Map[String, Seq[(String, String)]]( + "JVM Information" -> Seq(("GC speed", "9999 objects/s"), ("Java home", "Land of coffee")), + "Spark Properties" -> Seq(("Job throughput", "80000 jobs/s, regardless of job type")), + "System Properties" -> Seq(("Username", "guest"), ("Password", "guest")), + "Classpath Entries" -> Seq(("Super library", "/tmp/super_library")) + )) + val blockManagerAdded = SparkListenerBlockManagerAdded( + BlockManagerId("Stars", "In your multitude...", 300, 400), 500) + val blockManagerRemoved = SparkListenerBlockManagerRemoved( + BlockManagerId("Scarce", "to be counted...", 100, 200)) + val unpersistRdd = SparkListenerUnpersistRDD(12345) + val applicationStart = SparkListenerApplicationStart("The winner of all", 42L, "Garfield") + val applicationEnd = SparkListenerApplicationEnd(42L) + + testEvent(stageSubmitted, stageSubmittedJsonString) + testEvent(stageCompleted, stageCompletedJsonString) + testEvent(taskStart, taskStartJsonString) + testEvent(taskGettingResult, taskGettingResultJsonString) + testEvent(taskEnd, taskEndJsonString) + testEvent(jobStart, jobStartJsonString) + testEvent(jobEnd, jobEndJsonString) + testEvent(environmentUpdate, environmentUpdateJsonString) + testEvent(blockManagerAdded, blockManagerAddedJsonString) + testEvent(blockManagerRemoved, blockManagerRemovedJsonString) + testEvent(unpersistRdd, unpersistRDDJsonString) + testEvent(applicationStart, applicationStartJsonString) + testEvent(applicationEnd, applicationEndJsonString) + } + + test("Dependent Classes") { + testRDDInfo(makeRddInfo(2, 3, 4, 5L, 6L)) + testStageInfo(makeStageInfo(10, 20, 30, 40L, 50L)) + testTaskInfo(makeTaskInfo(999L, 888, 777L)) + testTaskMetrics(makeTaskMetrics(33333L, 44444L, 55555L, 66666L, 7, 8)) + testBlockManagerId(BlockManagerId("Hong", "Kong", 500, 1000)) + + // StorageLevel + testStorageLevel(StorageLevel.NONE) + testStorageLevel(StorageLevel.DISK_ONLY) + testStorageLevel(StorageLevel.DISK_ONLY_2) + testStorageLevel(StorageLevel.MEMORY_ONLY) + testStorageLevel(StorageLevel.MEMORY_ONLY_2) + testStorageLevel(StorageLevel.MEMORY_ONLY_SER) + testStorageLevel(StorageLevel.MEMORY_ONLY_SER_2) + testStorageLevel(StorageLevel.MEMORY_AND_DISK) + testStorageLevel(StorageLevel.MEMORY_AND_DISK_2) + testStorageLevel(StorageLevel.MEMORY_AND_DISK_SER) + testStorageLevel(StorageLevel.MEMORY_AND_DISK_SER_2) + + // JobResult + val exception = new Exception("Out of Memory! Please restock film.") + exception.setStackTrace(stackTrace) + val jobFailed = JobFailed(exception) + testJobResult(JobSucceeded) + testJobResult(jobFailed) + + // TaskEndReason + val fetchFailed = FetchFailed(BlockManagerId("With or", "without you", 15, 16), 17, 18, 19) + val exceptionFailure = ExceptionFailure("To be", "or not to be", stackTrace, None) + testTaskEndReason(Success) + testTaskEndReason(Resubmitted) + testTaskEndReason(fetchFailed) + testTaskEndReason(exceptionFailure) + testTaskEndReason(TaskResultLost) + testTaskEndReason(TaskKilled) + testTaskEndReason(ExecutorLostFailure) + testTaskEndReason(UnknownReason) + + // BlockId + testBlockId(RDDBlockId(1, 2)) + testBlockId(ShuffleBlockId(1, 2, 3)) + testBlockId(BroadcastBlockId(1L, "insert_words_of_wisdom_here")) + testBlockId(TaskResultBlockId(1L)) + testBlockId(StreamBlockId(1, 2L)) + } + + + /** -------------------------- * + | Helper test running methods | + * --------------------------- */ + + private def testEvent(event: SparkListenerEvent, jsonString: String) { + val actualJsonString = compact(render(JsonProtocol.sparkEventToJson(event))) + val newEvent = JsonProtocol.sparkEventFromJson(parse(actualJsonString)) + assertJsonStringEquals(jsonString, actualJsonString) + assertEquals(event, newEvent) + } + + private def testRDDInfo(info: RDDInfo) { + val newInfo = JsonProtocol.rddInfoFromJson(JsonProtocol.rddInfoToJson(info)) + assertEquals(info, newInfo) + } + + private def testStageInfo(info: StageInfo) { + val newInfo = JsonProtocol.stageInfoFromJson(JsonProtocol.stageInfoToJson(info)) + assertEquals(info, newInfo) + } + + private def testStorageLevel(level: StorageLevel) { + val newLevel = JsonProtocol.storageLevelFromJson(JsonProtocol.storageLevelToJson(level)) + assertEquals(level, newLevel) + } + + private def testTaskMetrics(metrics: TaskMetrics) { + val newMetrics = JsonProtocol.taskMetricsFromJson(JsonProtocol.taskMetricsToJson(metrics)) + assertEquals(metrics, newMetrics) + } + + private def testBlockManagerId(id: BlockManagerId) { + val newId = JsonProtocol.blockManagerIdFromJson(JsonProtocol.blockManagerIdToJson(id)) + assertEquals(id, newId) + } + + private def testTaskInfo(info: TaskInfo) { + val newInfo = JsonProtocol.taskInfoFromJson(JsonProtocol.taskInfoToJson(info)) + assertEquals(info, newInfo) + } + + private def testJobResult(result: JobResult) { + val newResult = JsonProtocol.jobResultFromJson(JsonProtocol.jobResultToJson(result)) + assertEquals(result, newResult) + } + + private def testTaskEndReason(reason: TaskEndReason) { + val newReason = JsonProtocol.taskEndReasonFromJson(JsonProtocol.taskEndReasonToJson(reason)) + assertEquals(reason, newReason) + } + + private def testBlockId(blockId: BlockId) { + val newBlockId = BlockId(blockId.toString) + assert(blockId === newBlockId) + } + + + /** -------------------------------- * + | Util methods for comparing events | + * --------------------------------- */ + + private def assertEquals(event1: SparkListenerEvent, event2: SparkListenerEvent) { + (event1, event2) match { + case (e1: SparkListenerStageSubmitted, e2: SparkListenerStageSubmitted) => + assert(e1.properties === e2.properties) + assertEquals(e1.stageInfo, e2.stageInfo) + case (e1: SparkListenerStageCompleted, e2: SparkListenerStageCompleted) => + assertEquals(e1.stageInfo, e2.stageInfo) + case (e1: SparkListenerTaskStart, e2: SparkListenerTaskStart) => + assert(e1.stageId === e2.stageId) + assertEquals(e1.taskInfo, e2.taskInfo) + case (e1: SparkListenerTaskGettingResult, e2: SparkListenerTaskGettingResult) => + assertEquals(e1.taskInfo, e2.taskInfo) + case (e1: SparkListenerTaskEnd, e2: SparkListenerTaskEnd) => + assert(e1.stageId === e2.stageId) + assert(e1.taskType === e2.taskType) + assertEquals(e1.reason, e2.reason) + assertEquals(e1.taskInfo, e2.taskInfo) + assertEquals(e1.taskMetrics, e2.taskMetrics) + case (e1: SparkListenerJobStart, e2: SparkListenerJobStart) => + assert(e1.jobId === e2.jobId) + assert(e1.properties === e2.properties) + assertSeqEquals(e1.stageIds, e2.stageIds, (i1: Int, i2: Int) => assert(i1 === i2)) + case (e1: SparkListenerJobEnd, e2: SparkListenerJobEnd) => + assert(e1.jobId === e2.jobId) + assertEquals(e1.jobResult, e2.jobResult) + case (e1: SparkListenerEnvironmentUpdate, e2: SparkListenerEnvironmentUpdate) => + assertEquals(e1.environmentDetails, e2.environmentDetails) + case (e1: SparkListenerBlockManagerAdded, e2: SparkListenerBlockManagerAdded) => + assert(e1.maxMem === e2.maxMem) + assertEquals(e1.blockManagerId, e2.blockManagerId) + case (e1: SparkListenerBlockManagerRemoved, e2: SparkListenerBlockManagerRemoved) => + assertEquals(e1.blockManagerId, e2.blockManagerId) + case (e1: SparkListenerUnpersistRDD, e2: SparkListenerUnpersistRDD) => + assert(e1.rddId == e2.rddId) + case (e1: SparkListenerApplicationStart, e2: SparkListenerApplicationStart) => + assert(e1.appName == e2.appName) + assert(e1.time == e2.time) + assert(e1.sparkUser == e2.sparkUser) + case (e1: SparkListenerApplicationEnd, e2: SparkListenerApplicationEnd) => + assert(e1.time == e2.time) + case (SparkListenerShutdown, SparkListenerShutdown) => + case _ => fail("Events don't match in types!") + } + } + + private def assertEquals(info1: StageInfo, info2: StageInfo) { + assert(info1.stageId === info2.stageId) + assert(info1.name === info2.name) + assert(info1.numTasks === info2.numTasks) + assert(info1.submissionTime === info2.submissionTime) + assert(info1.completionTime === info2.completionTime) + assert(info1.emittedTaskSizeWarning === info2.emittedTaskSizeWarning) + assertEquals(info1.rddInfo, info2.rddInfo) + } + + private def assertEquals(info1: RDDInfo, info2: RDDInfo) { + assert(info1.id === info2.id) + assert(info1.name === info2.name) + assert(info1.numPartitions === info2.numPartitions) + assert(info1.numCachedPartitions === info2.numCachedPartitions) + assert(info1.memSize === info2.memSize) + assert(info1.diskSize === info2.diskSize) + assertEquals(info1.storageLevel, info2.storageLevel) + } + + private def assertEquals(level1: StorageLevel, level2: StorageLevel) { + assert(level1.useDisk === level2.useDisk) + assert(level1.useMemory === level2.useMemory) + assert(level1.deserialized === level2.deserialized) + assert(level1.replication === level2.replication) + } + + private def assertEquals(info1: TaskInfo, info2: TaskInfo) { + assert(info1.taskId === info2.taskId) + assert(info1.index === info2.index) + assert(info1.launchTime === info2.launchTime) + assert(info1.executorId === info2.executorId) + assert(info1.host === info2.host) + assert(info1.taskLocality === info2.taskLocality) + assert(info1.gettingResultTime === info2.gettingResultTime) + assert(info1.finishTime === info2.finishTime) + assert(info1.failed === info2.failed) + assert(info1.serializedSize === info2.serializedSize) + } + + private def assertEquals(metrics1: TaskMetrics, metrics2: TaskMetrics) { + assert(metrics1.hostname === metrics2.hostname) + assert(metrics1.executorDeserializeTime === metrics2.executorDeserializeTime) + assert(metrics1.resultSize === metrics2.resultSize) + assert(metrics1.jvmGCTime === metrics2.jvmGCTime) + assert(metrics1.resultSerializationTime === metrics2.resultSerializationTime) + assert(metrics1.memoryBytesSpilled === metrics2.memoryBytesSpilled) + assert(metrics1.diskBytesSpilled === metrics2.diskBytesSpilled) + assertOptionEquals( + metrics1.shuffleReadMetrics, metrics2.shuffleReadMetrics, assertShuffleReadEquals) + assertOptionEquals( + metrics1.shuffleWriteMetrics, metrics2.shuffleWriteMetrics, assertShuffleWriteEquals) + assertOptionEquals(metrics1.updatedBlocks, metrics2.updatedBlocks, assertBlocksEquals) + } + + private def assertEquals(metrics1: ShuffleReadMetrics, metrics2: ShuffleReadMetrics) { + assert(metrics1.shuffleFinishTime === metrics2.shuffleFinishTime) + assert(metrics1.totalBlocksFetched === metrics2.totalBlocksFetched) + assert(metrics1.remoteBlocksFetched === metrics2.remoteBlocksFetched) + assert(metrics1.localBlocksFetched === metrics2.localBlocksFetched) + assert(metrics1.fetchWaitTime === metrics2.fetchWaitTime) + assert(metrics1.remoteBytesRead === metrics2.remoteBytesRead) + } + + private def assertEquals(metrics1: ShuffleWriteMetrics, metrics2: ShuffleWriteMetrics) { + assert(metrics1.shuffleBytesWritten === metrics2.shuffleBytesWritten) + assert(metrics1.shuffleWriteTime === metrics2.shuffleWriteTime) + } + + private def assertEquals(bm1: BlockManagerId, bm2: BlockManagerId) { + assert(bm1.executorId === bm2.executorId) + assert(bm1.host === bm2.host) + assert(bm1.port === bm2.port) + assert(bm1.nettyPort === bm2.nettyPort) + } + + private def assertEquals(result1: JobResult, result2: JobResult) { + (result1, result2) match { + case (JobSucceeded, JobSucceeded) => + case (r1: JobFailed, r2: JobFailed) => + assertEquals(r1.exception, r2.exception) + case _ => fail("Job results don't match in types!") + } + } + + private def assertEquals(reason1: TaskEndReason, reason2: TaskEndReason) { + (reason1, reason2) match { + case (Success, Success) => + case (Resubmitted, Resubmitted) => + case (r1: FetchFailed, r2: FetchFailed) => + assert(r1.shuffleId === r2.shuffleId) + assert(r1.mapId === r2.mapId) + assert(r1.reduceId === r2.reduceId) + assertEquals(r1.bmAddress, r2.bmAddress) + case (r1: ExceptionFailure, r2: ExceptionFailure) => + assert(r1.className === r2.className) + assert(r1.description === r2.description) + assertSeqEquals(r1.stackTrace, r2.stackTrace, assertStackTraceElementEquals) + assertOptionEquals(r1.metrics, r2.metrics, assertTaskMetricsEquals) + case (TaskResultLost, TaskResultLost) => + case (TaskKilled, TaskKilled) => + case (ExecutorLostFailure, ExecutorLostFailure) => + case (UnknownReason, UnknownReason) => + case _ => fail("Task end reasons don't match in types!") + } + } + + private def assertEquals( + details1: Map[String, Seq[(String, String)]], + details2: Map[String, Seq[(String, String)]]) { + details1.zip(details2).foreach { + case ((key1, values1: Seq[(String, String)]), (key2, values2: Seq[(String, String)])) => + assert(key1 === key2) + values1.zip(values2).foreach { case (v1, v2) => assert(v1 === v2) } + } + } + + private def assertEquals(exception1: Exception, exception2: Exception) { + assert(exception1.getMessage === exception2.getMessage) + assertSeqEquals( + exception1.getStackTrace, + exception2.getStackTrace, + assertStackTraceElementEquals) + } + + private def assertJsonStringEquals(json1: String, json2: String) { + val formatJsonString = (json: String) => json.replaceAll("[\\s|]", "") + formatJsonString(json1) === formatJsonString(json2) + } + + private def assertSeqEquals[T](seq1: Seq[T], seq2: Seq[T], assertEquals: (T, T) => Unit) { + assert(seq1.length === seq2.length) + seq1.zip(seq2).foreach { case (t1, t2) => + assertEquals(t1, t2) + } + } + + private def assertOptionEquals[T]( + opt1: Option[T], + opt2: Option[T], + assertEquals: (T, T) => Unit) { + if (opt1.isDefined) { + assert(opt2.isDefined) + assertEquals(opt1.get, opt2.get) + } else { + assert(!opt2.isDefined) + } + } + + /** + * Use different names for methods we pass in to assertSeqEquals or assertOptionEquals + */ + + private def assertShuffleReadEquals(r1: ShuffleReadMetrics, r2: ShuffleReadMetrics) { + assertEquals(r1, r2) + } + + private def assertShuffleWriteEquals(w1: ShuffleWriteMetrics, w2: ShuffleWriteMetrics) { + assertEquals(w1, w2) + } + + private def assertTaskMetricsEquals(t1: TaskMetrics, t2: TaskMetrics) { + assertEquals(t1, t2) + } + + private def assertBlocksEquals( + blocks1: Seq[(BlockId, BlockStatus)], + blocks2: Seq[(BlockId, BlockStatus)]) = { + assertSeqEquals(blocks1, blocks2, assertBlockEquals) + } + + private def assertBlockEquals(b1: (BlockId, BlockStatus), b2: (BlockId, BlockStatus)) { + assert(b1 === b2) + } + + private def assertStackTraceElementEquals(ste1: StackTraceElement, ste2: StackTraceElement) { + assert(ste1 === ste2) + } + + + /** ----------------------------------- * + | Util methods for constructing events | + * ------------------------------------ */ + + private val properties = { + val p = new Properties + p.setProperty("Ukraine", "Kiev") + p.setProperty("Russia", "Moscow") + p.setProperty("France", "Paris") + p.setProperty("Germany", "Berlin") + p + } + + private val stackTrace = { + Array[StackTraceElement]( + new StackTraceElement("Apollo", "Venus", "Mercury", 42), + new StackTraceElement("Afollo", "Vemus", "Mercurry", 420), + new StackTraceElement("Ayollo", "Vesus", "Blackberry", 4200) + ) + } + + private def makeRddInfo(a: Int, b: Int, c: Int, d: Long, e: Long) = { + val r = new RDDInfo(a, "mayor", b, StorageLevel.MEMORY_AND_DISK) + r.numCachedPartitions = c + r.memSize = d + r.diskSize = e + r + } + + private def makeStageInfo(a: Int, b: Int, c: Int, d: Long, e: Long) = { + new StageInfo(a, "greetings", b, makeRddInfo(a, b, c, d, e)) + } + + private def makeTaskInfo(a: Long, b: Int, c: Long) = { + new TaskInfo(a, b, c, "executor", "your kind sir", TaskLocality.NODE_LOCAL) + } + + private def makeTaskMetrics(a: Long, b: Long, c: Long, d: Long, e: Int, f: Int) = { + val t = new TaskMetrics + val sr = new ShuffleReadMetrics + val sw = new ShuffleWriteMetrics + t.hostname = "localhost" + t.executorDeserializeTime = a + t.executorRunTime = b + t.resultSize = c + t.jvmGCTime = d + t.resultSerializationTime = a + b + t.memoryBytesSpilled = a + c + sr.shuffleFinishTime = b + c + sr.totalBlocksFetched = e + f + sr.remoteBytesRead = b + d + sr.localBlocksFetched = e + sr.fetchWaitTime = a + d + sr.remoteBlocksFetched = f + sw.shuffleBytesWritten = a + b + c + sw.shuffleWriteTime = b + c + d + t.shuffleReadMetrics = Some(sr) + t.shuffleWriteMetrics = Some(sw) + // Make at most 6 blocks + t.updatedBlocks = Some((1 to (e % 5 + 1)).map { i => + (RDDBlockId(e % i, f % i), BlockStatus(StorageLevel.MEMORY_AND_DISK_SER_2, a % i, b % i, c%i)) + }.toSeq) + t + } + + + /** --------------------------------------- * + | JSON string representation of each event | + * ---------------------------------------- */ + + private val stageSubmittedJsonString = + """ + {"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":100,"Stage Name": + "greetings","Number of Tasks":200,"RDD Info":{"RDD ID":100,"Name":"mayor","Storage + Level":{"Use Disk":true,"Use Memory":true,"Use Tachyon":false,"Deserialized":true, + "Replication":1},"Number of Partitions":200,"Number of Cached Partitions":300, + "Memory Size":400,"Disk Size":500,"Tachyon Size":0},"Emitted Task Size Warning":false}, + "Properties":{"France":"Paris","Germany":"Berlin","Russia":"Moscow","Ukraine":"Kiev"}} + """ + + private val stageCompletedJsonString = + """ + {"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":101,"Stage Name": + "greetings","Number of Tasks":201,"RDD Info":{"RDD ID":101,"Name":"mayor","Storage + Level":{"Use Disk":true,"Use Memory":true,"Use Tachyon":false,"Deserialized":true, + "Replication":1},"Number of Partitions":201,"Number of Cached Partitions":301, + "Memory Size":401,"Disk Size":501,"Tachyon Size":0},"Emitted Task Size Warning":false}} + """ + + private val taskStartJsonString = + """ + {"Event":"SparkListenerTaskStart","Stage ID":111,"Task Info":{"Task ID":222, + "Index":333,"Launch Time":444,"Executor ID":"executor","Host":"your kind sir", + "Locality":"NODE_LOCAL","Getting Result Time":0,"Finish Time":0,"Failed":false, + "Serialized Size":0}} + """ + + private val taskGettingResultJsonString = + """ + {"Event":"SparkListenerTaskGettingResult","Task Info":{"Task ID":1000,"Index": + 2000,"Launch Time":3000,"Executor ID":"executor","Host":"your kind sir", + "Locality":"NODE_LOCAL","Getting Result Time":0,"Finish Time":0,"Failed":false, + "Serialized Size":0}} + """ + + private val taskEndJsonString = + """ + {"Event":"SparkListenerTaskEnd","Stage ID":1,"Task Type":"ShuffleMapTask", + "Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":123,"Index": + 234,"Launch Time":345,"Executor ID":"executor","Host":"your kind sir", + "Locality":"NODE_LOCAL","Getting Result Time":0,"Finish Time":0,"Failed": + false,"Serialized Size":0},"Task Metrics":{"Host Name":"localhost", + "Executor Deserialize Time":300,"Executor Run Time":400,"Result Size":500, + "JVM GC Time":600,"Result Serialization Time":700,"Memory Bytes Spilled": + 800,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Shuffle Finish Time": + 900,"Total Blocks Fetched":1500,"Remote Blocks Fetched":800,"Local Blocks Fetched": + 700,"Fetch Wait Time":900,"Remote Bytes Read":1000},"Shuffle Write Metrics": + {"Shuffle Bytes Written":1200,"Shuffle Write Time":1500},"Updated Blocks": + [{"Block ID":{"Type":"RDDBlockId","RDD ID":0,"Split Index":0},"Status": + {"Storage Level":{"Use Disk":true,"Use Memory":true,"Use Tachyon":false,"Deserialized":false, + "Replication":2},"Memory Size":0,"Disk Size":0,"Tachyon Size":0}}]}} + """ + + private val jobStartJsonString = + """ + {"Event":"SparkListenerJobStart","Job ID":10,"Stage IDs":[1,2,3,4],"Properties": + {"France":"Paris","Germany":"Berlin","Russia":"Moscow","Ukraine":"Kiev"}} + """ + + private val jobEndJsonString = + """ + {"Event":"SparkListenerJobEnd","Job ID":20,"Job Result":{"Result":"JobSucceeded"}} + """ + + private val environmentUpdateJsonString = + """ + {"Event":"SparkListenerEnvironmentUpdate","JVM Information":{"GC speed":"9999 objects/s", + "Java home":"Land of coffee"},"Spark Properties":{"Job throughput":"80000 jobs/s, + regardless of job type"},"System Properties":{"Username":"guest","Password":"guest"}, + "Classpath Entries":{"Super library":"/tmp/super_library"}} + """ + + private val blockManagerAddedJsonString = + """ + {"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"Stars", + "Host":"In your multitude...","Port":300,"Netty Port":400},"Maximum Memory":500} + """ + + private val blockManagerRemovedJsonString = + """ + {"Event":"SparkListenerBlockManagerRemoved","Block Manager ID":{"Executor ID":"Scarce", + "Host":"to be counted...","Port":100,"Netty Port":200}} + """ + + private val unpersistRDDJsonString = + """ + {"Event":"SparkListenerUnpersistRDD","RDD ID":12345} + """ + + private val applicationStartJsonString = + """ + {"Event":"SparkListenerApplicationStart","App Name":"The winner of all","Timestamp":42, + "User":"Garfield"} + """ + + private val applicationEndJsonString = + """ + {"Event":"SparkListenerApplicationEnd","Timestamp":42} + """ +} diff --git a/core/src/test/scala/org/apache/spark/util/TimeStampedHashMapSuite.scala b/core/src/test/scala/org/apache/spark/util/TimeStampedHashMapSuite.scala new file mode 100644 index 0000000000000..6a5653ed2fb54 --- /dev/null +++ b/core/src/test/scala/org/apache/spark/util/TimeStampedHashMapSuite.scala @@ -0,0 +1,264 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.util + +import java.lang.ref.WeakReference + +import scala.collection.mutable +import scala.collection.mutable.ArrayBuffer +import scala.util.Random + +import org.scalatest.FunSuite + +class TimeStampedHashMapSuite extends FunSuite { + + // Test the testMap function - a Scala HashMap should obviously pass + testMap(new mutable.HashMap[String, String]()) + + // Test TimeStampedHashMap basic functionality + testMap(new TimeStampedHashMap[String, String]()) + testMapThreadSafety(new TimeStampedHashMap[String, String]()) + + // Test TimeStampedWeakValueHashMap basic functionality + testMap(new TimeStampedWeakValueHashMap[String, String]()) + testMapThreadSafety(new TimeStampedWeakValueHashMap[String, String]()) + + test("TimeStampedHashMap - clearing by timestamp") { + // clearing by insertion time + val map = new TimeStampedHashMap[String, String](updateTimeStampOnGet = false) + map("k1") = "v1" + assert(map("k1") === "v1") + Thread.sleep(10) + val threshTime = System.currentTimeMillis + assert(map.getTimestamp("k1").isDefined) + assert(map.getTimestamp("k1").get < threshTime) + map.clearOldValues(threshTime) + assert(map.get("k1") === None) + + // clearing by modification time + val map1 = new TimeStampedHashMap[String, String](updateTimeStampOnGet = true) + map1("k1") = "v1" + map1("k2") = "v2" + assert(map1("k1") === "v1") + Thread.sleep(10) + val threshTime1 = System.currentTimeMillis + Thread.sleep(10) + assert(map1("k2") === "v2") // access k2 to update its access time to > threshTime + assert(map1.getTimestamp("k1").isDefined) + assert(map1.getTimestamp("k1").get < threshTime1) + assert(map1.getTimestamp("k2").isDefined) + assert(map1.getTimestamp("k2").get >= threshTime1) + map1.clearOldValues(threshTime1) //should only clear k1 + assert(map1.get("k1") === None) + assert(map1.get("k2").isDefined) + } + + test("TimeStampedWeakValueHashMap - clearing by timestamp") { + // clearing by insertion time + val map = new TimeStampedWeakValueHashMap[String, String](updateTimeStampOnGet = false) + map("k1") = "v1" + assert(map("k1") === "v1") + Thread.sleep(10) + val threshTime = System.currentTimeMillis + assert(map.getTimestamp("k1").isDefined) + assert(map.getTimestamp("k1").get < threshTime) + map.clearOldValues(threshTime) + assert(map.get("k1") === None) + + // clearing by modification time + val map1 = new TimeStampedWeakValueHashMap[String, String](updateTimeStampOnGet = true) + map1("k1") = "v1" + map1("k2") = "v2" + assert(map1("k1") === "v1") + Thread.sleep(10) + val threshTime1 = System.currentTimeMillis + Thread.sleep(10) + assert(map1("k2") === "v2") // access k2 to update its access time to > threshTime + assert(map1.getTimestamp("k1").isDefined) + assert(map1.getTimestamp("k1").get < threshTime1) + assert(map1.getTimestamp("k2").isDefined) + assert(map1.getTimestamp("k2").get >= threshTime1) + map1.clearOldValues(threshTime1) //should only clear k1 + assert(map1.get("k1") === None) + assert(map1.get("k2").isDefined) + } + + test("TimeStampedWeakValueHashMap - clearing weak references") { + var strongRef = new Object + val weakRef = new WeakReference(strongRef) + val map = new TimeStampedWeakValueHashMap[String, Object] + map("k1") = strongRef + map("k2") = "v2" + map("k3") = "v3" + assert(map("k1") === strongRef) + + // clear strong reference to "k1" + strongRef = null + val startTime = System.currentTimeMillis + System.gc() // Make a best effort to run the garbage collection. It *usually* runs GC. + System.runFinalization() // Make a best effort to call finalizer on all cleaned objects. + while(System.currentTimeMillis - startTime < 10000 && weakRef.get != null) { + System.gc() + System.runFinalization() + Thread.sleep(100) + } + assert(map.getReference("k1").isDefined) + val ref = map.getReference("k1").get + assert(ref.get === null) + assert(map.get("k1") === None) + + // operations should only display non-null entries + assert(map.iterator.forall { case (k, v) => k != "k1" }) + assert(map.filter { case (k, v) => k != "k2" }.size === 1) + assert(map.filter { case (k, v) => k != "k2" }.head._1 === "k3") + assert(map.toMap.size === 2) + assert(map.toMap.forall { case (k, v) => k != "k1" }) + val buffer = new ArrayBuffer[String] + map.foreach { case (k, v) => buffer += v.toString } + assert(buffer.size === 2) + assert(buffer.forall(_ != "k1")) + val plusMap = map + (("k4", "v4")) + assert(plusMap.size === 3) + assert(plusMap.forall { case (k, v) => k != "k1" }) + val minusMap = map - "k2" + assert(minusMap.size === 1) + assert(minusMap.head._1 == "k3") + + // clear null values - should only clear k1 + map.clearNullValues() + assert(map.getReference("k1") === None) + assert(map.get("k1") === None) + assert(map.get("k2").isDefined) + assert(map.get("k2").get === "v2") + } + + /** Test basic operations of a Scala mutable Map. */ + def testMap(hashMapConstructor: => mutable.Map[String, String]) { + def newMap() = hashMapConstructor + val testMap1 = newMap() + val testMap2 = newMap() + val name = testMap1.getClass.getSimpleName + + test(name + " - basic test") { + // put, get, and apply + testMap1 += (("k1", "v1")) + assert(testMap1.get("k1").isDefined) + assert(testMap1.get("k1").get === "v1") + testMap1("k2") = "v2" + assert(testMap1.get("k2").isDefined) + assert(testMap1.get("k2").get === "v2") + assert(testMap1("k2") === "v2") + testMap1.update("k3", "v3") + assert(testMap1.get("k3").isDefined) + assert(testMap1.get("k3").get === "v3") + + // remove + testMap1.remove("k1") + assert(testMap1.get("k1").isEmpty) + testMap1.remove("k2") + intercept[NoSuchElementException] { + testMap1("k2") // Map.apply() causes exception + } + testMap1 -= "k3" + assert(testMap1.get("k3").isEmpty) + + // multi put + val keys = (1 to 100).map(_.toString) + val pairs = keys.map(x => (x, x * 2)) + assert((testMap2 ++ pairs).iterator.toSet === pairs.toSet) + testMap2 ++= pairs + + // iterator + assert(testMap2.iterator.toSet === pairs.toSet) + + // filter + val filtered = testMap2.filter { case (_, v) => v.toInt % 2 == 0 } + val evenPairs = pairs.filter { case (_, v) => v.toInt % 2 == 0 } + assert(filtered.iterator.toSet === evenPairs.toSet) + + // foreach + val buffer = new ArrayBuffer[(String, String)] + testMap2.foreach(x => buffer += x) + assert(testMap2.toSet === buffer.toSet) + + // multi remove + testMap2("k1") = "v1" + testMap2 --= keys + assert(testMap2.size === 1) + assert(testMap2.iterator.toSeq.head === ("k1", "v1")) + + // + + val testMap3 = testMap2 + (("k0", "v0")) + assert(testMap3.size === 2) + assert(testMap3.get("k1").isDefined) + assert(testMap3.get("k1").get === "v1") + assert(testMap3.get("k0").isDefined) + assert(testMap3.get("k0").get === "v0") + + // - + val testMap4 = testMap3 - "k0" + assert(testMap4.size === 1) + assert(testMap4.get("k1").isDefined) + assert(testMap4.get("k1").get === "v1") + } + } + + /** Test thread safety of a Scala mutable map. */ + def testMapThreadSafety(hashMapConstructor: => mutable.Map[String, String]) { + def newMap() = hashMapConstructor + val name = newMap().getClass.getSimpleName + val testMap = newMap() + @volatile var error = false + + def getRandomKey(m: mutable.Map[String, String]): Option[String] = { + val keys = testMap.keysIterator.toSeq + if (keys.nonEmpty) { + Some(keys(Random.nextInt(keys.size))) + } else { + None + } + } + + val threads = (1 to 25).map(i => new Thread() { + override def run() { + try { + for (j <- 1 to 1000) { + Random.nextInt(3) match { + case 0 => + testMap(Random.nextString(10)) = Random.nextDouble().toString // put + case 1 => + getRandomKey(testMap).map(testMap.get) // get + case 2 => + getRandomKey(testMap).map(testMap.remove) // remove + } + } + } catch { + case t: Throwable => + error = true + throw t + } + } + }) + + test(name + " - threading safety test") { + threads.map(_.start) + threads.map(_.join) + assert(!error) + } + } +} diff --git a/core/src/test/scala/org/apache/spark/util/UtilsSuite.scala b/core/src/test/scala/org/apache/spark/util/UtilsSuite.scala index 8f55b2372c9f1..eb7fb6318262b 100644 --- a/core/src/test/scala/org/apache/spark/util/UtilsSuite.scala +++ b/core/src/test/scala/org/apache/spark/util/UtilsSuite.scala @@ -19,12 +19,11 @@ package org.apache.spark.util import scala.util.Random -import java.io.{ByteArrayOutputStream, ByteArrayInputStream, FileOutputStream} +import java.io.{File, ByteArrayOutputStream, ByteArrayInputStream, FileOutputStream} import java.nio.{ByteBuffer, ByteOrder} import com.google.common.base.Charsets import com.google.common.io.Files -import org.apache.commons.io.FileUtils import org.scalatest.FunSuite class UtilsSuite extends FunSuite { @@ -40,7 +39,7 @@ class UtilsSuite extends FunSuite { } test("copyStream") { - //input array initialization + // input array initialization val bytes = Array.ofDim[Byte](9000) Random.nextBytes(bytes) @@ -136,7 +135,7 @@ class UtilsSuite extends FunSuite { // Read some nonexistent bytes on both ends assert(Utils.offsetBytes(f1Path, -3, 25) === "1\n2\n3\n4\n5\n6\n7\n8\n9\n") - FileUtils.deleteDirectory(tmpDir2) + Utils.deleteRecursively(tmpDir2) } test("deserialize long value") { @@ -155,5 +154,18 @@ class UtilsSuite extends FunSuite { val iterator = Iterator.range(0, 5) assert(Utils.getIteratorSize(iterator) === 5L) } + + test("findOldFiles") { + // create some temporary directories and files + val parent: File = Utils.createTempDir() + val child1: File = Utils.createTempDir(parent.getCanonicalPath) // The parent directory has two child directories + val child2: File = Utils.createTempDir(parent.getCanonicalPath) + // set the last modified time of child1 to 10 secs old + child1.setLastModified(System.currentTimeMillis() - (1000 * 10)) + + val result = Utils.findOldFiles(parent, 5) // find files older than 5 secs + assert(result.size.equals(1)) + assert(result(0).getCanonicalPath.equals(child1.getCanonicalPath)) + } } diff --git a/core/src/test/scala/org/apache/spark/util/collection/BitSetSuite.scala b/core/src/test/scala/org/apache/spark/util/collection/BitSetSuite.scala index c32183c134f9c..b85a409a4b2e9 100644 --- a/core/src/test/scala/org/apache/spark/util/collection/BitSetSuite.scala +++ b/core/src/test/scala/org/apache/spark/util/collection/BitSetSuite.scala @@ -69,4 +69,87 @@ class BitSetSuite extends FunSuite { assert(bitset.nextSetBit(96) === 96) assert(bitset.nextSetBit(97) === -1) } + + test( "xor len(bitsetX) < len(bitsetY)" ) { + val setBitsX = Seq( 0, 2, 3, 37, 41 ) + val setBitsY = Seq( 0, 1, 3, 37, 38, 41, 85) + val bitsetX = new BitSet(60) + setBitsX.foreach( i => bitsetX.set(i)) + val bitsetY = new BitSet(100) + setBitsY.foreach( i => bitsetY.set(i)) + + val bitsetXor = bitsetX ^ bitsetY + + assert(bitsetXor.nextSetBit(0) === 1) + assert(bitsetXor.nextSetBit(1) === 1) + assert(bitsetXor.nextSetBit(2) === 2) + assert(bitsetXor.nextSetBit(3) === 38) + assert(bitsetXor.nextSetBit(38) === 38) + assert(bitsetXor.nextSetBit(39) === 85) + assert(bitsetXor.nextSetBit(42) === 85) + assert(bitsetXor.nextSetBit(85) === 85) + assert(bitsetXor.nextSetBit(86) === -1) + + } + + test( "xor len(bitsetX) > len(bitsetY)" ) { + val setBitsX = Seq( 0, 1, 3, 37, 38, 41, 85) + val setBitsY = Seq( 0, 2, 3, 37, 41 ) + val bitsetX = new BitSet(100) + setBitsX.foreach( i => bitsetX.set(i)) + val bitsetY = new BitSet(60) + setBitsY.foreach( i => bitsetY.set(i)) + + val bitsetXor = bitsetX ^ bitsetY + + assert(bitsetXor.nextSetBit(0) === 1) + assert(bitsetXor.nextSetBit(1) === 1) + assert(bitsetXor.nextSetBit(2) === 2) + assert(bitsetXor.nextSetBit(3) === 38) + assert(bitsetXor.nextSetBit(38) === 38) + assert(bitsetXor.nextSetBit(39) === 85) + assert(bitsetXor.nextSetBit(42) === 85) + assert(bitsetXor.nextSetBit(85) === 85) + assert(bitsetXor.nextSetBit(86) === -1) + + } + + test( "andNot len(bitsetX) < len(bitsetY)" ) { + val setBitsX = Seq( 0, 2, 3, 37, 41, 48 ) + val setBitsY = Seq( 0, 1, 3, 37, 38, 41, 85) + val bitsetX = new BitSet(60) + setBitsX.foreach( i => bitsetX.set(i)) + val bitsetY = new BitSet(100) + setBitsY.foreach( i => bitsetY.set(i)) + + val bitsetDiff = bitsetX.andNot( bitsetY ) + + assert(bitsetDiff.nextSetBit(0) === 2) + assert(bitsetDiff.nextSetBit(1) === 2) + assert(bitsetDiff.nextSetBit(2) === 2) + assert(bitsetDiff.nextSetBit(3) === 48) + assert(bitsetDiff.nextSetBit(48) === 48) + assert(bitsetDiff.nextSetBit(49) === -1) + assert(bitsetDiff.nextSetBit(65) === -1) + } + + test( "andNot len(bitsetX) > len(bitsetY)" ) { + val setBitsX = Seq( 0, 1, 3, 37, 38, 41, 85) + val setBitsY = Seq( 0, 2, 3, 37, 41, 48 ) + val bitsetX = new BitSet(100) + setBitsX.foreach( i => bitsetX.set(i)) + val bitsetY = new BitSet(60) + setBitsY.foreach( i => bitsetY.set(i)) + + val bitsetDiff = bitsetX.andNot( bitsetY ) + + assert(bitsetDiff.nextSetBit(0) === 1) + assert(bitsetDiff.nextSetBit(1) === 1) + assert(bitsetDiff.nextSetBit(2) === 38) + assert(bitsetDiff.nextSetBit(3) === 38) + assert(bitsetDiff.nextSetBit(38) === 38) + assert(bitsetDiff.nextSetBit(39) === 85) + assert(bitsetDiff.nextSetBit(85) === 85) + assert(bitsetDiff.nextSetBit(86) === -1) + } } diff --git a/core/src/test/scala/org/apache/spark/util/collection/ExternalAppendOnlyMapSuite.scala b/core/src/test/scala/org/apache/spark/util/collection/ExternalAppendOnlyMapSuite.scala index fce1184d46364..cdebefb67510c 100644 --- a/core/src/test/scala/org/apache/spark/util/collection/ExternalAppendOnlyMapSuite.scala +++ b/core/src/test/scala/org/apache/spark/util/collection/ExternalAppendOnlyMapSuite.scala @@ -174,9 +174,9 @@ class ExternalAppendOnlyMapSuite extends FunSuite with LocalSparkContext { assert(result1.toSet == Set[(Int, Int)]((0, 5), (1, 5))) // groupByKey - val result2 = rdd.groupByKey().collect() + val result2 = rdd.groupByKey().collect().map(x => (x._1, x._2.toList)).toSet assert(result2.toSet == Set[(Int, Seq[Int])] - ((0, ArrayBuffer[Int](1, 1, 1, 1, 1)), (1, ArrayBuffer[Int](1, 1, 1, 1, 1)))) + ((0, List[Int](1, 1, 1, 1, 1)), (1, List[Int](1, 1, 1, 1, 1)))) } test("simple cogroup") { diff --git a/dev/audit-release/README.md b/dev/audit-release/README.md new file mode 100644 index 0000000000000..38becda0eae92 --- /dev/null +++ b/dev/audit-release/README.md @@ -0,0 +1,11 @@ +# Test Application Builds +This directory includes test applications which are built when auditing releases. You can +run them locally by setting appropriate environment variables. + +``` +$ cd sbt_app_core +$ SCALA_VERSION=2.10.4 \ + SPARK_VERSION=1.0.0-SNAPSHOT \ + SPARK_RELEASE_REPOSITORY=file:///home/patrick/.ivy2/local \ + sbt run +``` diff --git a/dev/audit-release/audit_release.py b/dev/audit-release/audit_release.py index 52c367d9b030d..fa2f02dfecc75 100755 --- a/dev/audit-release/audit_release.py +++ b/dev/audit-release/audit_release.py @@ -35,7 +35,7 @@ RELEASE_KEY = "9E4FE3AF" RELEASE_REPOSITORY = "https://repository.apache.org/content/repositories/orgapachespark-1006/" RELEASE_VERSION = "1.0.0" -SCALA_VERSION = "2.10.3" +SCALA_VERSION = "2.10.4" SCALA_BINARY_VERSION = "2.10" ## diff --git a/dev/audit-release/maven_app_core/pom.xml b/dev/audit-release/maven_app_core/pom.xml index 0b837c01751fe..76a381f8e17e0 100644 --- a/dev/audit-release/maven_app_core/pom.xml +++ b/dev/audit-release/maven_app_core/pom.xml @@ -49,7 +49,7 @@ maven-compiler-plugin - 2.3.2 + 3.1 diff --git a/dev/audit-release/sbt_app_core/src/main/scala/SparkApp.scala b/dev/audit-release/sbt_app_core/src/main/scala/SparkApp.scala index d49de8b73a856..53fe43215e40e 100644 --- a/dev/audit-release/sbt_app_core/src/main/scala/SparkApp.scala +++ b/dev/audit-release/sbt_app_core/src/main/scala/SparkApp.scala @@ -17,6 +17,8 @@ package main.scala +import scala.util.Try + import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ @@ -31,6 +33,17 @@ object SimpleApp { println("Failed to parse log files with Spark") System.exit(-1) } - println("Test succeeded") + + // Regression test for SPARK-1167: Remove metrics-ganglia from default build due to LGPL issue + val foundConsole = Try(Class.forName("org.apache.spark.metrics.sink.ConsoleSink")).isSuccess + val foundGanglia = Try(Class.forName("org.apache.spark.metrics.sink.GangliaSink")).isSuccess + if (!foundConsole) { + println("Console sink not loaded via spark-core") + System.exit(-1) + } + if (foundGanglia) { + println("Ganglia sink was loaded via spark-core") + System.exit(-1) + } } } diff --git a/dev/audit-release/sbt_app_ganglia/build.sbt b/dev/audit-release/sbt_app_ganglia/build.sbt new file mode 100644 index 0000000000000..55db675c722d1 --- /dev/null +++ b/dev/audit-release/sbt_app_ganglia/build.sbt @@ -0,0 +1,31 @@ +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +name := "Ganglia Test" + +version := "1.0" + +scalaVersion := System.getenv.get("SCALA_VERSION") + +libraryDependencies += "org.apache.spark" %% "spark-core" % System.getenv.get("SPARK_VERSION") + +libraryDependencies += "org.apache.spark" %% "spark-ganglia-lgpl" % System.getenv.get("SPARK_VERSION") + +resolvers ++= Seq( + "Spark Release Repository" at System.getenv.get("SPARK_RELEASE_REPOSITORY"), + "Akka Repository" at "http://repo.akka.io/releases/", + "Spray Repository" at "http://repo.spray.cc/") diff --git a/dev/audit-release/sbt_app_ganglia/src/main/scala/SparkApp.scala b/dev/audit-release/sbt_app_ganglia/src/main/scala/SparkApp.scala new file mode 100644 index 0000000000000..0be8e64fbfabd --- /dev/null +++ b/dev/audit-release/sbt_app_ganglia/src/main/scala/SparkApp.scala @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main.scala + +import scala.util.Try + +import org.apache.spark.SparkContext +import org.apache.spark.SparkContext._ + +object SimpleApp { + def main(args: Array[String]) { + // Regression test for SPARK-1167: Remove metrics-ganglia from default build due to LGPL issue + val foundConsole = Try(Class.forName("org.apache.spark.metrics.sink.ConsoleSink")).isSuccess + val foundGanglia = Try(Class.forName("org.apache.spark.metrics.sink.GangliaSink")).isSuccess + if (!foundConsole) { + println("Console sink not loaded via spark-core") + System.exit(-1) + } + if (!foundGanglia) { + println("Ganglia sink not loaded via spark-ganglia-lgpl") + System.exit(-1) + } + } +} diff --git a/dev/check-license b/dev/check-license new file mode 100755 index 0000000000000..fbd2dd465bb18 --- /dev/null +++ b/dev/check-license @@ -0,0 +1,81 @@ +#!/usr/bin/env bash + +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + +acquire_rat_jar () { + + URL1="http://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar" + URL2="http://repo1.maven.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar" + + JAR=$rat_jar + + if [[ ! -f "$rat_jar" ]]; then + # Download rat launch jar if it hasn't been downloaded yet + if [ ! -f ${JAR} ]; then + # Download + printf "Attempting to fetch rat\n" + JAR_DL=${JAR}.part + if hash curl 2>/dev/null; then + (curl --progress-bar ${URL1} > ${JAR_DL} || curl --progress-bar ${URL2} > ${JAR_DL}) && mv ${JAR_DL} ${JAR} + elif hash wget 2>/dev/null; then + (wget --progress=bar ${URL1} -O ${JAR_DL} || wget --progress=bar ${URL2} -O ${JAR_DL}) && mv ${JAR_DL} ${JAR} + else + printf "You do not have curl or wget installed, please install rat manually.\n" + exit -1 + fi + fi + if [ ! -f ${JAR} ]; then + # We failed to download + printf "Our attempt to download rat locally to ${JAR} failed. Please install rat manually.\n" + exit -1 + fi + printf "Launching rat from ${JAR}\n" + fi +} + +# Go to the Spark project root directory +FWDIR="$(cd `dirname $0`/..; pwd)" +cd $FWDIR + +if test -x "$JAVA_HOME/bin/java"; then + declare java_cmd="$JAVA_HOME/bin/java" +else + declare java_cmd=java +fi + +export RAT_VERSION=0.10 +export rat_jar=$FWDIR/lib/apache-rat-${RAT_VERSION}.jar +mkdir -p $FWDIR/lib + +[[ -f "$rat_jar" ]] || acquire_rat_jar || { + echo "Download failed. Obtain the rat jar manually and place it at $rat_jar" + exit 1 +} + +$java_cmd -jar $rat_jar -E $FWDIR/.rat-excludes -d $FWDIR > rat-results.txt + +ERRORS=$(cat rat-results.txt | grep -e "??") + +if test ! -z "$ERRORS"; then + echo "Could not find Apache license headers in the following files:" + echo "$ERRORS" + exit 1 +else + echo -e "RAT checks passed." +fi diff --git a/dev/create-release/create-release.sh b/dev/create-release/create-release.sh index b9088eac376a2..bf1c5d7953bd2 100755 --- a/dev/create-release/create-release.sh +++ b/dev/create-release/create-release.sh @@ -49,14 +49,14 @@ mvn -DskipTests \ -Darguments="-DskipTests=true -Dhadoop.version=2.2.0 -Dyarn.version=2.2.0 -Dgpg.passphrase=${GPG_PASSPHRASE}" \ -Dusername=$GIT_USERNAME -Dpassword=$GIT_PASSWORD \ -Dhadoop.version=2.2.0 -Dyarn.version=2.2.0 \ - -Pyarn \ + -Pyarn -Phive -Pspark-ganglia-lgpl\ -Dtag=$GIT_TAG -DautoVersionSubmodules=true \ --batch-mode release:prepare mvn -DskipTests \ -Darguments="-DskipTests=true -Dhadoop.version=2.2.0 -Dyarn.version=2.2.0 -Dgpg.passphrase=${GPG_PASSPHRASE}" \ -Dhadoop.version=2.2.0 -Dyarn.version=2.2.0 \ - -Pyarn \ + -Pyarn -Phive -Pspark-ganglia-lgpl\ release:perform rm -rf spark diff --git a/dev/merge_spark_pr.py b/dev/merge_spark_pr.py index e8f78fc5f231a..7a61943e94814 100755 --- a/dev/merge_spark_pr.py +++ b/dev/merge_spark_pr.py @@ -87,11 +87,20 @@ def merge_pr(pr_num, target_ref): run_cmd("git fetch %s %s:%s" % (PUSH_REMOTE_NAME, target_ref, target_branch_name)) run_cmd("git checkout %s" % target_branch_name) - run_cmd(['git', 'merge', pr_branch_name, '--squash']) + had_conflicts = False + try: + run_cmd(['git', 'merge', pr_branch_name, '--squash']) + except Exception as e: + msg = "Error merging: %s\nWould you like to manually fix-up this merge?" % e + continue_maybe(msg) + msg = "Okay, please fix any conflicts and 'git add' conflicting files... Finished?" + continue_maybe(msg) + had_conflicts = True commit_authors = run_cmd(['git', 'log', 'HEAD..%s' % pr_branch_name, '--pretty=format:%an <%ae>']).split("\n") - distinct_authors = sorted(set(commit_authors), key=lambda x: commit_authors.count(x), reverse=True) + distinct_authors = sorted(set(commit_authors), key=lambda x: commit_authors.count(x), + reverse=True) primary_author = distinct_authors[0] commits = run_cmd(['git', 'log', 'HEAD..%s' % pr_branch_name, '--pretty=format:%h [%an] %s']).split("\n\n") @@ -105,6 +114,13 @@ def merge_pr(pr_num, target_ref): merge_message_flags += ["-m", authors] + if had_conflicts: + committer_name = run_cmd("git config --get user.name").strip() + committer_email = run_cmd("git config --get user.email").strip() + message = "This patch had conflicts when merged, resolved by\nCommitter: %s <%s>" % ( + committer_name, committer_email) + merge_message_flags += ["-m", message] + # The string "Closes #%s" string is required for GitHub to correctly close the PR merge_message_flags += ["-m", "Closes #%s from %s and squashes the following commits:" % (pr_num, pr_repo_desc)] @@ -186,8 +202,10 @@ def maybe_cherry_pick(pr_num, merge_hash, default_branch): maybe_cherry_pick(pr_num, merge_hash, latest_branch) sys.exit(0) -if bool(pr["mergeable"]) == False: - fail("Pull request %s is not mergeable in its current form" % pr_num) +if not bool(pr["mergeable"]): + msg = "Pull request %s is not mergeable in its current form.\n" % pr_num + \ + "Continue? (experts only!)" + continue_maybe(msg) print ("\n=== Pull Request #%s ===" % pr_num) print("title\t%s\nsource\t%s\ntarget\t%s\nurl\t%s" % ( diff --git a/dev/run-tests b/dev/run-tests index cf0b940c09a81..6ad674a2ba127 100755 --- a/dev/run-tests +++ b/dev/run-tests @@ -26,26 +26,31 @@ rm -rf ./work # Fail fast set -e - +set -o pipefail if test -x "$JAVA_HOME/bin/java"; then declare java_cmd="$JAVA_HOME/bin/java" else declare java_cmd=java fi - JAVA_VERSION=$($java_cmd -version 2>&1 | sed 's/java version "\(.*\)\.\(.*\)\..*"/\1\2/; 1q') -[ "$JAVA_VERSION" -ge 18 ] && echo "" || echo "[Warn] Java 8 tests will not run, because JDK version is < 1.8." +[ "$JAVA_VERSION" -ge 18 ] && echo "" || echo "[Warn] Java 8 tests will not run because JDK version is < 1.8." +echo "=========================================================================" +echo "Running Apache RAT checks" +echo "=========================================================================" +dev/check-license echo "=========================================================================" echo "Running Scala style checks" echo "=========================================================================" -sbt/sbt clean scalastyle +dev/scalastyle echo "=========================================================================" echo "Running Spark unit tests" echo "=========================================================================" -sbt/sbt assembly test +# echo "q" is needed because sbt on encountering a build file with failure (either resolution or compilation) +# prompts the user for input either q, r, etc to quit or retry. This echo is there to make it not block. +echo -e "q\n" | sbt/sbt assembly test | grep -v -e "info.*Resolving" -e "warn.*Merging" -e "info.*Including" echo "=========================================================================" echo "Running PySpark tests" @@ -54,3 +59,9 @@ if [ -z "$PYSPARK_PYTHON" ]; then export PYSPARK_PYTHON=/usr/local/bin/python2.7 fi ./python/run-tests + +echo "=========================================================================" +echo "Detecting binary incompatibilites with MiMa" +echo "=========================================================================" +./bin/spark-class org.apache.spark.tools.GenerateMIMAIgnore +echo -e "q\n" | sbt/sbt mima-report-binary-issues | grep -v -e "info.*Resolving" diff --git a/dev/scalastyle b/dev/scalastyle new file mode 100755 index 0000000000000..19955b9aaaad3 --- /dev/null +++ b/dev/scalastyle @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +echo -e "q\n" | sbt/sbt clean scalastyle > scalastyle.txt +ERRORS=$(cat scalastyle.txt | grep -e "\") +if test ! -z "$ERRORS"; then + echo -e "Scalastyle checks failed at following occurrences:\n$ERRORS" + exit 1 +else + echo -e "Scalastyle checks passed.\n" +fi diff --git a/docker/spark-test/base/Dockerfile b/docker/spark-test/base/Dockerfile index e543db6143e4d..5956d59130fbf 100644 --- a/docker/spark-test/base/Dockerfile +++ b/docker/spark-test/base/Dockerfile @@ -25,7 +25,7 @@ RUN apt-get update # install a few other useful packages plus Open Jdk 7 RUN apt-get install -y less openjdk-7-jre-headless net-tools vim-tiny sudo openssh-server -ENV SCALA_VERSION 2.10.3 +ENV SCALA_VERSION 2.10.4 ENV CDH_VERSION cdh4 ENV SCALA_HOME /opt/scala-$SCALA_VERSION ENV SPARK_HOME /opt/spark diff --git a/docs/_config.yml b/docs/_config.yml index aa5a5adbc1743..bd5ed6c9220d2 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -6,7 +6,7 @@ markdown: kramdown SPARK_VERSION: 1.0.0-SNAPSHOT SPARK_VERSION_SHORT: 1.0.0 SCALA_BINARY_VERSION: "2.10" -SCALA_VERSION: "2.10.3" -MESOS_VERSION: 0.13.0 +SCALA_VERSION: "2.10.4" +MESOS_VERSION: 0.17.0 SPARK_ISSUE_TRACKER_URL: https://spark-project.atlassian.net SPARK_GITHUB_URL: https://github.com/apache/spark diff --git a/docs/_layouts/global.html b/docs/_layouts/global.html index 49fd78ca98655..5d4dbb7a9c3a9 100755 --- a/docs/_layouts/global.html +++ b/docs/_layouts/global.html @@ -66,6 +66,7 @@
    • Spark in Python
    • Spark Streaming
    • +
    • Spark SQL
    • MLlib (Machine Learning)
    • Bagel (Pregel on Spark)
    • GraphX (Graph Processing)
    • @@ -79,6 +80,14 @@
    • Spark Core for Python
    • Spark Streaming
    • +
    • MLlib (Machine Learning)
    • Bagel (Pregel on Spark)
    • GraphX (Graph Processing)
    • diff --git a/docs/_plugins/copy_api_dirs.rb b/docs/_plugins/copy_api_dirs.rb index 44d64057f4fb3..bbd56d2fd13bb 100644 --- a/docs/_plugins/copy_api_dirs.rb +++ b/docs/_plugins/copy_api_dirs.rb @@ -22,8 +22,11 @@ # Build Scaladoc for Java/Scala core_projects = ["core", "examples", "repl", "bagel", "graphx", "streaming", "mllib"] external_projects = ["flume", "kafka", "mqtt", "twitter", "zeromq"] + sql_projects = ["catalyst", "core", "hive"] - projects = core_projects + external_projects.map { |project_name| "external/" + project_name } + projects = core_projects + projects = projects + external_projects.map { |project_name| "external/" + project_name } + projects = projects + sql_projects.map { |project_name| "sql/" + project_name } puts "Moving to project root and building scaladoc." curr_dir = pwd @@ -41,12 +44,22 @@ source = "../" + project_name + "/target/scala-2.10/api" dest = "api/" + project_name - puts "echo making directory " + dest + puts "making directory " + dest mkdir_p dest # From the rubydoc: cp_r('src', 'dest') makes src/dest, but this doesn't. puts "cp -r " + source + "/. " + dest cp_r(source + "/.", dest) + + # Append custom JavaScript + js = File.readlines("./js/api-docs.js") + js_file = dest + "/lib/template.js" + File.open(js_file, 'a') { |f| f.write("\n" + js.join()) } + + # Append custom CSS + css = File.readlines("./css/api-docs.css") + css_file = dest + "/lib/template.css" + File.open(css_file, 'a') { |f| f.write("\n" + css.join()) } end # Build Epydoc for Python diff --git a/docs/building-with-maven.md b/docs/building-with-maven.md index d3bc34e68b240..9cebaf12283fc 100644 --- a/docs/building-with-maven.md +++ b/docs/building-with-maven.md @@ -6,7 +6,7 @@ title: Building Spark with Maven * This will become a table of contents (this text will be scraped). {:toc} -Building Spark using Maven Requires Maven 3 (the build process is tested with Maven 3.0.4) and Java 1.6 or newer. +Building Spark using Maven requires Maven 3.0.4 or newer and Java 1.6 or newer. ## Setting up Maven's Memory Usage ## @@ -88,3 +88,9 @@ Running only java 8 tests and nothing else. Java 8 tests are run when -Pjava8-tests profile is enabled, they will run in spite of -DskipTests. For these tests to run your system must have a JDK 8 installation. If you have JDK 8 installed but it is not the system default, you can set JAVA_HOME to point to JDK 8 before running the tests. + +## Packaging without Hadoop dependencies for deployment on YARN ## + +The assembly jar produced by "mvn package" will, by default, include all of Spark's dependencies, including Hadoop and some of its ecosystem projects. On YARN deployments, this causes multiple versions of these to appear on executor classpaths: the version packaged in the Spark assembly and the version on each node, included with yarn.application.classpath. The "hadoop-provided" profile builds the assembly without including Hadoop-ecosystem projects, like ZooKeeper and Hadoop itself. + + diff --git a/docs/cluster-overview.md b/docs/cluster-overview.md index e16703292cc22..7f75ea44e4cea 100644 --- a/docs/cluster-overview.md +++ b/docs/cluster-overview.md @@ -13,7 +13,7 @@ object in your main program (called the _driver program_). Specifically, to run on a cluster, the SparkContext can connect to several types of _cluster managers_ (either Spark's own standalone cluster manager or Mesos/YARN), which allocate resources across applications. Once connected, Spark acquires *executors* on nodes in the cluster, which are -worker processes that run computations and store data for your application. +processes that run computations and store data for your application. Next, it sends your application code (defined by JAR or Python files passed to SparkContext) to the executors. Finally, SparkContext sends *tasks* for the executors to run. @@ -50,6 +50,50 @@ The system currently supports three cluster managers: In addition, Spark's [EC2 launch scripts](ec2-scripts.html) make it easy to launch a standalone cluster on Amazon EC2. +# Launching Applications + +The recommended way to launch a compiled Spark application is through the spark-submit script (located in the +bin directory), which takes care of setting up the classpath with Spark and its dependencies, as well as +provides a layer over the different cluster managers and deploy modes that Spark supports. It's usage is + + spark-submit `` `` + +Where options are any of: + +- **\--class** - The main class to run. +- **\--master** - The URL of the cluster manager master, e.g. spark://host:port, mesos://host:port, yarn, + or local. +- **\--deploy-mode** - "client" to run the driver in the client process or "cluster" to run the driver in + a process on the cluster. For Mesos, only "client" is supported. +- **\--executor-memory** - Memory per executor (e.g. 1000M, 2G). +- **\--executor-cores** - Number of cores per executor. (Default: 2) +- **\--driver-memory** - Memory for driver (e.g. 1000M, 2G) +- **\--name** - Name of the application. +- **\--arg** - Argument to be passed to the application's main class. This option can be specified + multiple times to pass multiple arguments. +- **\--jars** - A comma-separated list of local jars to include on the driver classpath and that + SparkContext.addJar will work with. Doesn't work on standalone with 'cluster' deploy mode. + +The following currently only work for Spark standalone with cluster deploy mode: + +- **\--driver-cores** - Cores for driver (Default: 1). +- **\--supervise** - If given, restarts the driver on failure. + +The following only works for Spark standalone and Mesos only: + +- **\--total-executor-cores** - Total cores for all executors. + +The following currently only work for YARN: + +- **\--queue** - The YARN queue to place the application in. +- **\--files** - Comma separated list of files to be placed in the working dir of each executor. +- **\--archives** - Comma separated list of archives to be extracted into the working dir of each + executor. +- **\--num-executors** - Number of executors (Default: 2). + +The master and deploy mode can also be set with the MASTER and DEPLOY_MODE environment variables. +Values for these options passed via command line will override the environment variables. + # Shipping Code to the Cluster The recommended way to ship your code to the cluster is to pass it through SparkContext's constructor, @@ -102,6 +146,12 @@ The following table summarizes terms you'll see used to refer to cluster concept
      + + + + diff --git a/docs/configuration.md b/docs/configuration.md index a006224d5080c..9c602402f0635 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -122,6 +122,21 @@ Apart from these, the following properties are also available, and may be useful spark.storage.memoryFraction. + + + + + + + + + + @@ -161,13 +176,13 @@ Apart from these, the following properties are also available, and may be useful - + @@ -333,6 +348,32 @@ Apart from these, the following properties are also available, and may be useful receives no heartbeats. + + + + + + + + + + + + + + + @@ -375,7 +416,7 @@ Apart from these, the following properties are also available, and may be useful @@ -430,7 +471,7 @@ Apart from these, the following properties are also available, and may be useful @@ -490,7 +531,30 @@ Apart from these, the following properties are also available, and may be useful + + + + + + + + + + + + + + + @@ -532,7 +596,16 @@ Apart from these, the following properties are also available, and may be useful the driver. - + + + + + + - + - + + + + + +
      {s.stageId} - {poolName.get} + + {poolName.get} + + {description} {submissionTime} - {duration.map(d => parent.formatDuration(d)).getOrElse("Unknown")} - {formattedDuration} {makeProgressBar(startedTasks, completedTasks, failedTasks, totalTasks)}
      - - {rdd.name} - - {rdd.storageLevel.description} - {rdd.numCachedPartitions}{"%.0f%%".format(rdd.numCachedPartitions * 100.0 / rdd.numPartitions)}{Utils.bytesToString(rdd.memSize)}{Utils.bytesToString(rdd.diskSize)}
      {status.blockManagerId.host + ":" + status.blockManagerId.port} + {Utils.bytesToString(status.memUsedByRDD(rddId))} + ({Utils.bytesToString(status.memRemaining)} Remaining) + {Utils.bytesToString(status.diskUsedByRDD(rddId))}
      {id}
      {status.blockManagerId.host + ":" + status.blockManagerId.port} - {Utils.bytesToString(status.memUsedByRDD(rddId))} - ({Utils.bytesToString(status.memRemaining)} Remaining) - {Utils.bytesToString(status.diskUsedByRDD(rddId))}
      + + {rdd.name} + + {rdd.storageLevel.description} + {rdd.numCachedPartitions}{"%.0f%%".format(rdd.numCachedPartitions * 100.0 / rdd.numPartitions)}{Utils.bytesToString(rdd.memSize)}{Utils.bytesToString(rdd.tachyonSize)}{Utils.bytesToString(rdd.diskSize)}
      Cluster manager An external service for acquiring resources on the cluster (e.g. standalone manager, Mesos, YARN)
      Deploy modeDistinguishes where the driver process runs. In "cluster" mode, the framework launches + the driver inside of the cluster. In "client" mode, the submitter launches the driver + outside of the cluster.
      Worker node Any node that can run application code in the cluster
      spark.tachyonStore.baseDirSystem.getProperty("java.io.tmpdir") + Directories of the Tachyon File System that store RDDs. The Tachyon file system's URL is set by spark.tachyonStore.url. + It can also be a comma-separated list of multiple directories on Tachyon file system. +
      spark.tachyonStore.urltachyon://localhost:19998 + The URL of the underlying Tachyon file system in the TachyonStore. +
      spark.mesos.coarse falsespark.ui.acls.enable false - Whether spark web ui acls should are enabled. If enabled, this checks to see if the user has + Whether spark web ui acls should are enabled. If enabled, this checks to see if the user has access permissions to view the web ui. See spark.ui.view.acls for more details. Also note this requires the user to be known, if the user comes across as null no checks are done. Filters can be used to authenticate and set the user.
      spark.ui.view.acls Empty @@ -276,10 +291,10 @@ Apart from these, the following properties are also available, and may be useful spark.serializer.objectStreamReset 10000 - When serializing using org.apache.spark.serializer.JavaSerializer, the serializer caches - objects to prevent writing redundant data, however that stops garbage collection of those - objects. By calling 'reset' you flush that info from the serializer, and allow old - objects to be collected. To turn off this periodic reset set it to a value of <= 0. + When serializing using org.apache.spark.serializer.JavaSerializer, the serializer caches + objects to prevent writing redundant data, however that stops garbage collection of those + objects. By calling 'reset' you flush that info from the serializer, and allow old + objects to be collected. To turn off this periodic reset set it to a value of <= 0. By default it will reset the serializer every 10,000 objects.
      spark.worker.cleanup.enabledtrue + Enable periodic cleanup of worker / application directories. Note that this only affects standalone + mode, as YARN works differently. +
      spark.worker.cleanup.interval1800 (30 minutes) + Controls the interval, in seconds, at which the worker cleans up old application work dirs + on the local machine. +
      spark.worker.cleanup.appDataTtl7 * 24 * 3600 (7 days) + The number of seconds to retain application work directories on each worker. This is a Time To Live + and should depend on the amount of available disk space you have. Application logs and jars are + downloaded to each application work dir. Over time, the work dirs can quickly fill up disk space, + especially if you run jobs very frequently. +
      spark.akka.frameSize 10spark.akka.heartbeat.interval 1000 - This is set to a larger value to disable failure detector that comes inbuilt akka. It can be enabled again, if you plan to use this feature (Not recommended). A larger interval value in seconds reduces network overhead and a smaller value ( ~ 1 s) might be more informative for akka's failure detector. Tune this in combination of `spark.akka.heartbeat.pauses` and `spark.akka.failure-detector.threshold` if you need to. Only positive use case for using failure detector can be, a sensistive failure detector can help evict rogue executors really quick. However this is usually not the case as gc pauses and network lags are expected in a real spark cluster. Apart from that enabling this leads to a lot of exchanges of heart beats between nodes leading to flooding the network with those. + This is set to a larger value to disable failure detector that comes inbuilt akka. It can be enabled again, if you plan to use this feature (Not recommended). A larger interval value in seconds reduces network overhead and a smaller value ( ~ 1 s) might be more informative for akka's failure detector. Tune this in combination of `spark.akka.heartbeat.pauses` and `spark.akka.failure-detector.threshold` if you need to. Only positive use case for using failure detector can be, a sensistive failure detector can help evict rogue executors really quick. However this is usually not the case as gc pauses and network lags are expected in a real spark cluster. Apart from that enabling this leads to a lot of exchanges of heart beats between nodes leading to flooding the network with those.
      spark.broadcast.blockSize 4096 - Size of each piece of a block in kilobytes for TorrentBroadcastFactory. + Size of each piece of a block in kilobytes for TorrentBroadcastFactory. Too large a value decreases parallelism during broadcast (makes it slower); however, if it is too small, BlockManager might take a performance hit.
      spark.logConf false - Log the supplied SparkConf as INFO at start of spark context. + Whether to log the supplied SparkConf as INFO at start of spark context. +
      spark.eventLog.enabledfalse + Whether to log spark events, useful for reconstructing the Web UI after the application has finished. +
      spark.eventLog.compressfalse + Whether to compress logged events, if spark.eventLog.enabled is true. +
      spark.eventLog.dirfile:///tmp/spark-events + Base directory in which spark events are logged, if spark.eventLog.enabled is true. + Within this base directory, Spark creates a sub-directory for each application, and logs the events + specific to the application in this directory.
      spark.files.userClassPathFirstfalse + (Experimental) Whether to give user-added jars precedence over Spark's own jars when + loading classes in Executors. This feature can be used to mitigate conflicts between + Spark's dependencies and user dependencies. It is currently an experimental feature. +
      spark.authenticate false @@ -540,7 +613,7 @@ Apart from these, the following properties are also available, and may be useful running on Yarn.
      spark.authenticate.secret None @@ -548,12 +621,19 @@ Apart from these, the following properties are also available, and may be useful not running on Yarn and authentication is enabled.
      spark.core.connection.auth.wait.timeout 30 Number of seconds for the connection to wait for authentication to occur before timing - out and giving up. + out and giving up. +
      spark.task.cpus1 + Number of cores to allocate for each task.
      diff --git a/docs/css/api-docs.css b/docs/css/api-docs.css new file mode 100644 index 0000000000000..b2d1d7f869790 --- /dev/null +++ b/docs/css/api-docs.css @@ -0,0 +1,18 @@ +/* Dynamically injected style for the API docs */ + +.developer { + background-color: #44751E; +} + +.experimental { + background-color: #257080; +} + +.alphaComponent { + background-color: #bb0000; +} + +.badge { + font-family: Arial, san-serif; + float: right; +} diff --git a/docs/graphx-programming-guide.md b/docs/graphx-programming-guide.md index 3dfed7bea9ea8..1238e3e0a4e7d 100644 --- a/docs/graphx-programming-guide.md +++ b/docs/graphx-programming-guide.md @@ -135,7 +135,7 @@ Like RDDs, property graphs are immutable, distributed, and fault-tolerant. Chan structure of the graph are accomplished by producing a new graph with the desired changes. Note that substantial parts of the original graph (i.e., unaffected structure, attributes, and indicies) are reused in the new graph reducing the cost of this inherently functional data-structure. The -graph is partitioned across the workers using a range of vertex-partitioning heuristics. As with +graph is partitioned across the executors using a range of vertex-partitioning heuristics. As with RDDs, each partition of the graph can be recreated on a different machine in the event of a failure. Logically the property graph corresponds to a pair of typed collections (RDDs) encoding the diff --git a/docs/index.md b/docs/index.md index c4f4d79edbc6c..7a13fa9a9a2b6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,10 +23,12 @@ For its Scala API, Spark {{site.SPARK_VERSION}} depends on Scala {{site.SCALA_BI # Running the Examples and Shell -Spark comes with several sample programs in the `examples` directory. -To run one of the samples, use `./bin/run-example ` in the top-level Spark directory +Spark comes with several sample programs. Scala and Java examples are in the `examples` directory, and Python examples are in `python/examples`. +To run one of the Java or Scala sample programs, use `./bin/run-example ` in the top-level Spark directory (the `bin/run-example` script sets up the appropriate paths and launches that program). For example, try `./bin/run-example org.apache.spark.examples.SparkPi local`. +To run a Python sample program, use `./bin/pyspark `. For example, try `./bin/pyspark ./python/examples/pi.py local`. + Each example prints usage help when run with no parameters. Note that all of the sample programs take a `` parameter specifying the cluster URL @@ -76,6 +78,7 @@ For this version of Spark (0.8.1) Hadoop 2.2.x (or newer) users will have to bui * [Java Programming Guide](java-programming-guide.html): using Spark from Java * [Python Programming Guide](python-programming-guide.html): using Spark from Python * [Spark Streaming](streaming-programming-guide.html): Spark's API for processing data streams +* [Spark SQL](sql-programming-guide.html): Support for running relational queries on Spark * [MLlib (Machine Learning)](mllib-guide.html): Spark's built-in machine learning library * [Bagel (Pregel on Spark)](bagel-programming-guide.html): simple graph processing model * [GraphX (Graphs on Spark)](graphx-programming-guide.html): Spark's new API for graphs diff --git a/docs/job-scheduling.md b/docs/job-scheduling.md index df2faa5e41b18..94604f301dd46 100644 --- a/docs/job-scheduling.md +++ b/docs/job-scheduling.md @@ -39,8 +39,8 @@ Resource allocation can be configured as follows, based on the cluster type: * **Mesos:** To use static partitioning on Mesos, set the `spark.mesos.coarse` configuration property to `true`, and optionally set `spark.cores.max` to limit each application's resource share as in the standalone mode. You should also set `spark.executor.memory` to control the executor memory. -* **YARN:** The `--num-workers` option to the Spark YARN client controls how many workers it will allocate - on the cluster, while `--worker-memory` and `--worker-cores` control the resources per worker. +* **YARN:** The `--num-executors` option to the Spark YARN client controls how many executors it will allocate + on the cluster, while `--executor-memory` and `--executor-cores` control the resources per executor. A second option available on Mesos is _dynamic sharing_ of CPU cores. In this mode, each Spark application still has a fixed and independent memory allocation (set by `spark.executor.memory`), but when the diff --git a/docs/js/api-docs.js b/docs/js/api-docs.js new file mode 100644 index 0000000000000..1414b6d0b81a1 --- /dev/null +++ b/docs/js/api-docs.js @@ -0,0 +1,26 @@ +/* Dynamically injected post-processing code for the API docs */ + +$(document).ready(function() { + var annotations = $("dt:contains('Annotations')").next("dd").children("span.name"); + addBadges(annotations, "AlphaComponent", ":: AlphaComponent ::", "Alpha Component"); + addBadges(annotations, "DeveloperApi", ":: DeveloperApi ::", "Developer API"); + addBadges(annotations, "Experimental", ":: Experimental ::", "Experimental"); +}); + +function addBadges(allAnnotations, name, tag, html) { + var annotations = allAnnotations.filter(":contains('" + name + "')") + var tags = $(".cmt:contains(" + tag + ")") + + // Remove identifier tags from comments + tags.each(function(index) { + var oldHTML = $(this).html(); + var newHTML = oldHTML.replace(tag, ""); + $(this).html(newHTML); + }); + + // Add badges to all containers + tags.prevAll("h4.signature") + .add(annotations.closest("div.fullcommenttop")) + .add(annotations.closest("div.fullcomment").prevAll("h4.signature")) + .prepend(html); +} diff --git a/docs/mllib-classification-regression.md b/docs/mllib-classification-regression.md index 18a3e8e075086..d5bd8042ca2ec 100644 --- a/docs/mllib-classification-regression.md +++ b/docs/mllib-classification-regression.md @@ -77,8 +77,8 @@ between the two goals of small loss and small model complexity. **Distributed Datasets.** For all currently implemented optimization methods for classification, the data must be -distributed between the worker machines *by examples*. Every machine holds a consecutive block of -the `$n$` example/label pairs `$(\x_i,y_i)$`. +distributed between processes on the worker machines *by examples*. Machines hold consecutive +blocks of the `$n$` example/label pairs `$(\x_i,y_i)$`. In other words, the input distributed dataset ([RDD](scala-programming-guide.html#resilient-distributed-datasets-rdds)) must be the set of vectors `$\x_i\in\R^d$`. diff --git a/docs/mllib-guide.md b/docs/mllib-guide.md index 76308ec9c0821..a5e0cc50809cf 100644 --- a/docs/mllib-guide.md +++ b/docs/mllib-guide.md @@ -29,6 +29,7 @@ The following links provide a detailed explanation of the methods and usage exam * Gradient Descent and Stochastic Gradient Descent * Linear Algebra * Singular Value Decomposition + * Principal Component Analysis # Dependencies MLlib uses the [jblas](https://github.com/mikiobraun/jblas) linear algebra library, which itself @@ -37,6 +38,5 @@ depends on native Fortran routines. You may need to install the if it is not already present on your nodes. MLlib will throw a linking error if it cannot detect these libraries automatically. -To use MLlib in Python, you will need [NumPy](http://www.numpy.org) version 1.7 or newer -and Python 2.7. +To use MLlib in Python, you will need [NumPy](http://www.numpy.org) version 1.7 or newer. diff --git a/docs/mllib-linear-algebra.md b/docs/mllib-linear-algebra.md index cc203d833d344..09598be7903ac 100644 --- a/docs/mllib-linear-algebra.md +++ b/docs/mllib-linear-algebra.md @@ -59,3 +59,16 @@ val = decomposed.S.data println("singular values = " + s.toArray.mkString) {% endhighlight %} + + +# Principal Component Analysis + +Computes the top k principal component coefficients for the m-by-n data matrix X. +Rows of X correspond to observations and columns correspond to variables. +The coefficient matrix is n-by-k. Each column of the return matrix contains coefficients +for one principal component, and the columns are in descending +order of component variance. This function centers the data and uses the +singular value decomposition (SVD) algorithm. + +All input and output is expected in DenseMatrix matrix format. See the examples directory +under "SparkPCA.scala" for example usage. diff --git a/docs/monitoring.md b/docs/monitoring.md index e9b1d2b2f4ffb..4c91c3a5929bf 100644 --- a/docs/monitoring.md +++ b/docs/monitoring.md @@ -12,17 +12,77 @@ displays useful information about the application. This includes: * A list of scheduler stages and tasks * A summary of RDD sizes and memory usage -* Information about the running executors * Environmental information. +* Information about the running executors You can access this interface by simply opening `http://:4040` in a web browser. -If multiple SparkContexts are running on the same host, they will bind to succesive ports +If multiple SparkContexts are running on the same host, they will bind to successive ports beginning with 4040 (4041, 4042, etc). -Spark's Standalone Mode cluster manager also has its own -[web UI](spark-standalone.html#monitoring-and-logging). +Note that this information is only available for the duration of the application by default. +To view the web UI after the fact, set `spark.eventLog.enabled` to true before starting the +application. This configures Spark to log Spark events that encode the information displayed +in the UI to persisted storage. -Note that in both of these UIs, the tables are sortable by clicking their headers, +## Viewing After the Fact + +Spark's Standalone Mode cluster manager also has its own +[web UI](spark-standalone.html#monitoring-and-logging). If an application has logged events over +the course of its lifetime, then the Standalone master's web UI will automatically re-render the +application's UI after the application has finished. + +If Spark is run on Mesos or YARN, it is still possible to reconstruct the UI of a finished +application through Spark's history server, provided that the application's event logs exist. +You can start a the history server by executing: + + ./sbin/start-history-server.sh + +The base logging directory must be supplied, and should contain sub-directories that each +represents an application's event logs. This creates a web interface at +`http://:18080` by default. The history server depends on the following variables: + + + + + + + + + + + +
      Environment VariableMeaning
      SPARK_DAEMON_MEMORYMemory to allocate to the history server. (default: 512m).
      SPARK_DAEMON_JAVA_OPTSJVM options for the history server (default: none).
      + +Further, the history server can be configured as follows: + + + + + + + + + + + + + + + + + + +
      Property NameDefaultMeaning
      spark.history.updateInterval10 + The period, in seconds, at which information displayed by this history server is updated. + Each update checks for any changes made to the event logs in persisted storage. +
      spark.history.retainedApplications250 + The number of application UIs to retain. If this cap is exceeded, then the oldest + applications will be removed. +
      spark.history.ui.port18080 + The port to which the web interface of the history server binds. +
      + +Note that in all of these UIs, the tables are sortable by clicking their headers, making it easy to identify slow tasks, data skew, etc. # Metrics @@ -48,11 +108,22 @@ Each instance can report to zero or more _sinks_. Sinks are contained in the * `ConsoleSink`: Logs metrics information to the console. * `CSVSink`: Exports metrics data to CSV files at regular intervals. -* `GangliaSink`: Sends metrics to a Ganglia node or multicast group. * `JmxSink`: Registers metrics for viewing in a JXM console. * `MetricsServlet`: Adds a servlet within the existing Spark UI to serve metrics data as JSON data. * `GraphiteSink`: Sends metrics to a Graphite node. +Spark also supports a Ganglia sink which is not included in the default build due to +licensing restrictions: + +* `GangliaSink`: Sends metrics to a Ganglia node or multicast group. + +To install the `GangliaSink` you'll need to perform a custom build of Spark. _**Note that +by embedding this library you will include [LGPL](http://www.gnu.org/copyleft/lesser.html)-licensed +code in your Spark package**_. For sbt users, set the +`SPARK_GANGLIA_LGPL` environment variable before building. For Maven users, enable +the `-Pspark-ganglia-lgpl` profile. In addition to modifying the cluster's Spark build +user applications will need to link to the `spark-ganglia-lgpl` artifact. + The syntax of the metrics configuration file is defined in an example configuration file, `$SPARK_HOME/conf/metrics.properties.template`. diff --git a/docs/python-programming-guide.md b/docs/python-programming-guide.md index 57ed54c9cf4c0..888631e7025b0 100644 --- a/docs/python-programming-guide.md +++ b/docs/python-programming-guide.md @@ -43,9 +43,9 @@ def is_error(line): errors = logData.filter(is_error) {% endhighlight %} -PySpark will automatically ship these functions to workers, along with any objects that they reference. -Instances of classes will be serialized and shipped to workers by PySpark, but classes themselves cannot be automatically distributed to workers. -The [Standalone Use](#standalone-use) section describes how to ship code dependencies to workers. +PySpark will automatically ship these functions to executors, along with any objects that they reference. +Instances of classes will be serialized and shipped to executors by PySpark, but classes themselves cannot be automatically distributed to executors. +The [Standalone Use](#standalone-use) section describes how to ship code dependencies to executors. In addition, PySpark fully supports interactive use---simply run `./bin/pyspark` to launch an interactive shell. @@ -82,15 +82,16 @@ The Python shell can be used explore data interactively and is a simple way to l >>> help(pyspark) # Show all pyspark functions {% endhighlight %} -By default, the `bin/pyspark` shell creates SparkContext that runs applications locally on a single core. -To connect to a non-local cluster, or use multiple cores, set the `MASTER` environment variable. +By default, the `bin/pyspark` shell creates SparkContext that runs applications locally on all of +your machine's logical cores. +To connect to a non-local cluster, or to specify a number of cores, set the `MASTER` environment variable. For example, to use the `bin/pyspark` shell with a [standalone Spark cluster](spark-standalone.html): {% highlight bash %} $ MASTER=spark://IP:PORT ./bin/pyspark {% endhighlight %} -Or, to use four cores on the local machine: +Or, to use exactly four cores on the local machine: {% highlight bash %} $ MASTER=local[4] ./bin/pyspark @@ -152,7 +153,7 @@ Many of the methods also contain [doctests](http://docs.python.org/2/library/doc # Libraries [MLlib](mllib-guide.html) is also available in PySpark. To use it, you'll need -[NumPy](http://www.numpy.org) version 1.7 or newer, and Python 2.7. The [MLlib guide](mllib-guide.html) contains +[NumPy](http://www.numpy.org) version 1.7 or newer. The [MLlib guide](mllib-guide.html) contains some example applications. # Where to Go from Here diff --git a/docs/quick-start.md b/docs/quick-start.md index 13df6beea16e8..60e8b1ba0eb46 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -124,7 +124,7 @@ object SimpleApp { } {% endhighlight %} -This program just counts the number of lines containing 'a' and the number containing 'b' in the Spark README. Note that you'll need to replace $YOUR_SPARK_HOME with the location where Spark is installed. Unlike the earlier examples with the Spark shell, which initializes its own SparkContext, we initialize a SparkContext as part of the proogram. We pass the SparkContext constructor four arguments, the type of scheduler we want to use (in this case, a local scheduler), a name for the application, the directory where Spark is installed, and a name for the jar file containing the application's code. The final two arguments are needed in a distributed setting, where Spark is running across several nodes, so we include them for completeness. Spark will automatically ship the jar files you list to slave nodes. +This program just counts the number of lines containing 'a' and the number containing 'b' in the Spark README. Note that you'll need to replace $YOUR_SPARK_HOME with the location where Spark is installed. Unlike the earlier examples with the Spark shell, which initializes its own SparkContext, we initialize a SparkContext as part of the program. We pass the SparkContext constructor four arguments, the type of scheduler we want to use (in this case, a local scheduler), a name for the application, the directory where Spark is installed, and a name for the jar file containing the application's code. The final two arguments are needed in a distributed setting, where Spark is running across several nodes, so we include them for completeness. Spark will automatically ship the jar files you list to slave nodes. This file depends on the Spark API, so we'll also include an sbt configuration file, `simple.sbt` which explains that Spark is a dependency. This file also adds a repository that Spark depends on: diff --git a/docs/running-on-yarn.md b/docs/running-on-yarn.md index b17929542c531..982514391ac00 100644 --- a/docs/running-on-yarn.md +++ b/docs/running-on-yarn.md @@ -41,17 +41,19 @@ System Properties: * `spark.yarn.submit.file.replication`, the HDFS replication level for the files uploaded into HDFS for the application. These include things like the spark jar, the app jar, and any distributed cache files/archives. * `spark.yarn.preserve.staging.files`, set to true to preserve the staged files(spark jar, app jar, distributed cache files) at the end of the job rather then delete them. * `spark.yarn.scheduler.heartbeat.interval-ms`, the interval in ms in which the Spark application master heartbeats into the YARN ResourceManager. Default is 5 seconds. -* `spark.yarn.max.worker.failures`, the maximum number of executor failures before failing the application. Default is the number of executors requested times 2 with minimum of 3. +* `spark.yarn.max.executor.failures`, the maximum number of executor failures before failing the application. Default is the number of executors requested times 2 with minimum of 3. # Launching Spark on YARN Ensure that HADOOP_CONF_DIR or YARN_CONF_DIR points to the directory which contains the (client side) configuration files for the Hadoop cluster. These configs are used to connect to the cluster, write to the dfs, and connect to the YARN ResourceManager. -There are two scheduler modes that can be used to launch Spark applications on YARN. In yarn-cluster mode, the Spark driver runs inside an application master process which is managed by YARN on the cluster, and the client can go away after initiating the application. In yarn-client mode, the driver runs in the client process, and the application master is only used for requesting resources from YARN. +There are two deploy modes that can be used to launch Spark applications on YARN. In yarn-cluster mode, the Spark driver runs inside an application master process which is managed by YARN on the cluster, and the client can go away after initiating the application. In yarn-client mode, the driver runs in the client process, and the application master is only used for requesting resources from YARN. Unlike in Spark standalone and Mesos mode, in which the master's address is specified in the "master" parameter, in YARN mode the ResourceManager's address is picked up from the Hadoop configuration. Thus, the master parameter is simply "yarn-client" or "yarn-cluster". +The spark-submit script described in the [cluster mode overview](cluster-overview.html) provides the most straightforward way to submit a compiled Spark application to YARN in either deploy mode. For info on the lower-level invocations it uses, read ahead. For running spark-shell against YARN, skip down to the yarn-client section. + ## Launching a Spark application with yarn-cluster mode. The command to launch the Spark application on the cluster is as follows: @@ -59,19 +61,18 @@ The command to launch the Spark application on the cluster is as follows: SPARK_JAR= ./bin/spark-class org.apache.spark.deploy.yarn.Client \ --jar \ --class \ - --args \ - --num-workers \ - --master-class - --master-memory \ - --worker-memory \ - --worker-cores \ + --arg \ + --num-executors \ + --driver-memory \ + --executor-memory \ + --executor-cores \ --name \ --queue \ --addJars \ --files \ --archives -For example: +To pass multiple arguments the "arg" option can be specified multiple times. For example: # Build the Spark assembly JAR and the Spark examples JAR $ SPARK_HADOOP_VERSION=2.0.5-alpha SPARK_YARN=true sbt/sbt assembly @@ -84,11 +85,12 @@ For example: ./bin/spark-class org.apache.spark.deploy.yarn.Client \ --jar examples/target/scala-{{site.SCALA_BINARY_VERSION}}/spark-examples-assembly-{{site.SPARK_VERSION}}.jar \ --class org.apache.spark.examples.SparkPi \ - --args yarn-cluster \ - --num-workers 3 \ - --master-memory 4g \ - --worker-memory 2g \ - --worker-cores 1 + --arg yarn-cluster \ + --arg 5 \ + --num-executors 3 \ + --driver-memory 4g \ + --executor-memory 2g \ + --executor-cores 1 The above starts a YARN client program which starts the default Application Master. Then SparkPi will be run as a child thread of Application Master. The client will periodically poll the Application Master for status updates and display them in the console. The client will exit once your application has finished running. Refer to the "Viewing Logs" section below for how to see driver and executor logs. @@ -100,12 +102,12 @@ With yarn-client mode, the application will be launched locally, just like runni Configuration in yarn-client mode: -In order to tune worker cores/number/memory etc., you need to export environment variables or add them to the spark configuration file (./conf/spark_env.sh). The following are the list of options. +In order to tune executor cores/number/memory etc., you need to export environment variables or add them to the spark configuration file (./conf/spark_env.sh). The following are the list of options. -* `SPARK_WORKER_INSTANCES`, Number of executors to start (Default: 2) -* `SPARK_WORKER_CORES`, Number of cores per executor (Default: 1). -* `SPARK_WORKER_MEMORY`, Memory per executor (e.g. 1000M, 2G) (Default: 1G) -* `SPARK_MASTER_MEMORY`, Memory for Master (e.g. 1000M, 2G) (Default: 512 Mb) +* `SPARK_EXECUTOR_INSTANCES`, Number of executors to start (Default: 2) +* `SPARK_EXECUTOR_CORES`, Number of cores per executor (Default: 1). +* `SPARK_EXECUTOR_MEMORY`, Memory per executor (e.g. 1000M, 2G) (Default: 1G) +* `SPARK_DRIVER_MEMORY`, Memory for driver (e.g. 1000M, 2G) (Default: 512 Mb) * `SPARK_YARN_APP_NAME`, The name of your application (Default: Spark) * `SPARK_YARN_QUEUE`, The YARN queue to use for allocation requests (Default: 'default') * `SPARK_YARN_DIST_FILES`, Comma separated list of files to be distributed with the job. @@ -122,7 +124,7 @@ or MASTER=yarn-client ./bin/spark-shell -## Viewing logs +# Viewing logs In YARN terminology, executors and application masters run inside "containers". YARN has two modes for handling container logs after an application has completed. If log aggregation is turned on (with the yarn.log-aggregation-enable config), container logs are copied to HDFS and deleted on the local machine. These logs can be viewed from anywhere on the cluster with the "yarn logs" command. diff --git a/docs/scala-programming-guide.md b/docs/scala-programming-guide.md index 99412733d4268..a07cd2e0a32a2 100644 --- a/docs/scala-programming-guide.md +++ b/docs/scala-programming-guide.md @@ -23,7 +23,7 @@ To write a Spark application, you need to add a dependency on Spark. If you use groupId = org.apache.spark artifactId = spark-core_{{site.SCALA_BINARY_VERSION}} - version = {{site.SPARK_VERSION}} + version = {{site.SPARK_VERSION}} In addition, if you wish to access an HDFS cluster, you need to add a dependency on `hadoop-client` for your version of HDFS: @@ -54,7 +54,7 @@ object for more advanced configuration. The `master` parameter is a string specifying a [Spark or Mesos cluster URL](#master-urls) to connect to, or a special "local" string to run in local mode, as described below. `appName` is a name for your application, which will be shown in the cluster web UI. Finally, the last two parameters are needed to deploy your code to a cluster if running in distributed mode, as described later. -In the Spark shell, a special interpreter-aware SparkContext is already created for you, in the variable called `sc`. Making your own SparkContext will not work. You can set which master the context connects to using the `MASTER` environment variable, and you can add JARs to the classpath with the `ADD_JARS` variable. For example, to run `bin/spark-shell` on four cores, use +In the Spark shell, a special interpreter-aware SparkContext is already created for you, in the variable called `sc`. Making your own SparkContext will not work. You can set which master the context connects to using the `MASTER` environment variable, and you can add JARs to the classpath with the `ADD_JARS` variable. For example, to run `bin/spark-shell` on exactly four cores, use {% highlight bash %} $ MASTER=local[4] ./bin/spark-shell @@ -73,18 +73,19 @@ The master URL passed to Spark can be in one of the following formats: - - -
      Master URLMeaning
      local Run Spark locally with one worker thread (i.e. no parallelism at all).
      local[K] Run Spark locally with K worker threads (ideally, set this to the number of cores on your machine). +
      local[K] Run Spark locally with K worker threads (ideally, set this to the number of cores on your machine). +
      local[*] Run Spark locally with as many worker threads as logical cores on your machine.
      spark://HOST:PORT Connect to the given Spark standalone - cluster master. The port must be whichever one your master is configured to use, which is 7077 by default. +
      spark://HOST:PORT Connect to the given Spark standalone + cluster master. The port must be whichever one your master is configured to use, which is 7077 by default.
      mesos://HOST:PORT Connect to the given Mesos cluster. - The host parameter is the hostname of the Mesos master. The port must be whichever one the master is configured to use, - which is 5050 by default. +
      mesos://HOST:PORT Connect to the given Mesos cluster. + The host parameter is the hostname of the Mesos master. The port must be whichever one the master is configured to use, + which is 5050 by default.
      -If no master URL is specified, the spark shell defaults to "local". +If no master URL is specified, the spark shell defaults to "local[*]". For running on YARN, Spark launches an instance of the standalone deploy cluster within YARN; see [running on YARN](running-on-yarn.html) for details. @@ -265,11 +266,25 @@ A complete list of actions is available in the [RDD API doc](api/core/index.html ## RDD Persistence -One of the most important capabilities in Spark is *persisting* (or *caching*) a dataset in memory across operations. When you persist an RDD, each node stores any slices of it that it computes in memory and reuses them in other actions on that dataset (or datasets derived from it). This allows future actions to be much faster (often by more than 10x). Caching is a key tool for building iterative algorithms with Spark and for interactive use from the interpreter. - -You can mark an RDD to be persisted using the `persist()` or `cache()` methods on it. The first time it is computed in an action, it will be kept in memory on the nodes. The cache is fault-tolerant -- if any partition of an RDD is lost, it will automatically be recomputed using the transformations that originally created it. - -In addition, each RDD can be stored using a different *storage level*, allowing you, for example, to persist the dataset on disk, or persist it in memory but as serialized Java objects (to save space), or even replicate it across nodes. These levels are chosen by passing a [`org.apache.spark.storage.StorageLevel`](api/core/index.html#org.apache.spark.storage.StorageLevel) object to `persist()`. The `cache()` method is a shorthand for using the default storage level, which is `StorageLevel.MEMORY_ONLY` (store deserialized objects in memory). The complete set of available storage levels is: +One of the most important capabilities in Spark is *persisting* (or *caching*) a dataset in memory +across operations. When you persist an RDD, each node stores any slices of it that it computes in +memory and reuses them in other actions on that dataset (or datasets derived from it). This allows +future actions to be much faster (often by more than 10x). Caching is a key tool for building +iterative algorithms with Spark and for interactive use from the interpreter. + +You can mark an RDD to be persisted using the `persist()` or `cache()` methods on it. The first time +it is computed in an action, it will be kept in memory on the nodes. The cache is fault-tolerant -- +if any partition of an RDD is lost, it will automatically be recomputed using the transformations +that originally created it. + +In addition, each RDD can be stored using a different *storage level*, allowing you, for example, to +persist the dataset on disk, or persist it in memory but as serialized Java objects (to save space), +or replicate it across nodes, or store the data in off-heap memory in [Tachyon](http://tachyon-project.org/). +These levels are chosen by passing a +[`org.apache.spark.storage.StorageLevel`](api/core/index.html#org.apache.spark.storage.StorageLevel) +object to `persist()`. The `cache()` method is a shorthand for using the default storage level, +which is `StorageLevel.MEMORY_ONLY` (store deserialized objects in memory). The complete set of +available storage levels is: @@ -292,8 +307,16 @@ In addition, each RDD can be stored using a different *storage level*, allowing - + + + + + @@ -307,30 +330,59 @@ In addition, each RDD can be stored using a different *storage level*, allowing ### Which Storage Level to Choose? -Spark's storage levels are meant to provide different tradeoffs between memory usage and CPU efficiency. -We recommend going through the following process to select one: - -* If your RDDs fit comfortably with the default storage level (`MEMORY_ONLY`), leave them that way. This is the most - CPU-efficient option, allowing operations on the RDDs to run as fast as possible. -* If not, try using `MEMORY_ONLY_SER` and [selecting a fast serialization library](tuning.html) to make the objects - much more space-efficient, but still reasonably fast to access. -* Don't spill to disk unless the functions that computed your datasets are expensive, or they filter a large - amount of the data. Otherwise, recomputing a partition is about as fast as reading it from disk. -* Use the replicated storage levels if you want fast fault recovery (e.g. if using Spark to serve requests from a web - application). *All* the storage levels provide full fault tolerance by recomputing lost data, but the replicated ones - let you continue running tasks on the RDD without waiting to recompute a lost partition. - -If you want to define your own storage level (say, with replication factor of 3 instead of 2), then use the function factor method `apply()` of the [`StorageLevel`](api/core/index.html#org.apache.spark.storage.StorageLevel$) singleton object. +Spark's storage levels are meant to provide different trade-offs between memory usage and CPU +efficiency. It allows uses to choose memory, disk, or Tachyon for storing data. We recommend going +through the following process to select one: + +* If your RDDs fit comfortably with the default storage level (`MEMORY_ONLY`), leave them that way. + This is the most CPU-efficient option, allowing operations on the RDDs to run as fast as possible. + +* If not, try using `MEMORY_ONLY_SER` and [selecting a fast serialization library](tuning.html) to +make the objects much more space-efficient, but still reasonably fast to access. You can also use +`OFF_HEAP` mode to store the data off the heap in [Tachyon](http://tachyon-project.org/). This will +significantly reduce JVM GC overhead. + +* Don't spill to disk unless the functions that computed your datasets are expensive, or they filter +a large amount of the data. Otherwise, recomputing a partition is about as fast as reading it from +disk. + +* Use the replicated storage levels if you want fast fault recovery (e.g. if using Spark to serve +requests from a web application). *All* the storage levels provide full fault tolerance by +recomputing lost data, but the replicated ones let you continue running tasks on the RDD without +waiting to recompute a lost partition. + +If you want to define your own storage level (say, with replication factor of 3 instead of 2), then +use the function factor method `apply()` of the +[`StorageLevel`](api/core/index.html#org.apache.spark.storage.StorageLevel$) singleton object. + +Spark has a block manager inside the Executors that let you chose memory, disk, or off-heap. The +latter is for storing RDDs off-heap outside the Executor JVM on top of the memory management system +[Tachyon](http://tachyon-project.org/). This mode has the following advantages: + +* Cached data will not be lost if individual executors crash. +* Executors can have a smaller memory footprint, allowing you to run more executors on the same +machine as the bulk of the memory will be inside Tachyon. +* Reduced GC overhead since data is stored in Tachyon. # Shared Variables -Normally, when a function passed to a Spark operation (such as `map` or `reduce`) is executed on a remote cluster node, it works on separate copies of all the variables used in the function. These variables are copied to each machine, and no updates to the variables on the remote machine are propagated back to the driver program. Supporting general, read-write shared variables across tasks would be inefficient. However, Spark does provide two limited types of *shared variables* for two common usage patterns: broadcast variables and accumulators. +Normally, when a function passed to a Spark operation (such as `map` or `reduce`) is executed on a +remote cluster node, it works on separate copies of all the variables used in the function. These +variables are copied to each machine, and no updates to the variables on the remote machine are +propagated back to the driver program. Supporting general, read-write shared variables across tasks +would be inefficient. However, Spark does provide two limited types of *shared variables* for two +common usage patterns: broadcast variables and accumulators. ## Broadcast Variables -Broadcast variables allow the programmer to keep a read-only variable cached on each machine rather than shipping a copy of it with tasks. They can be used, for example, to give every node a copy of a large input dataset in an efficient manner. Spark also attempts to distribute broadcast variables using efficient broadcast algorithms to reduce communication cost. +Broadcast variables allow the programmer to keep a read-only variable cached on each machine rather +than shipping a copy of it with tasks. They can be used, for example, to give every node a copy of a +large input dataset in an efficient manner. Spark also attempts to distribute broadcast variables +using efficient broadcast algorithms to reduce communication cost. -Broadcast variables are created from a variable `v` by calling `SparkContext.broadcast(v)`. The broadcast variable is a wrapper around `v`, and its value can be accessed by calling the `value` method. The interpreter session below shows this: +Broadcast variables are created from a variable `v` by calling `SparkContext.broadcast(v)`. The +broadcast variable is a wrapper around `v`, and its value can be accessed by calling the `value` +method. The interpreter session below shows this: {% highlight scala %} scala> val broadcastVar = sc.broadcast(Array(1, 2, 3)) @@ -340,13 +392,21 @@ scala> broadcastVar.value res0: Array[Int] = Array(1, 2, 3) {% endhighlight %} -After the broadcast variable is created, it should be used instead of the value `v` in any functions run on the cluster so that `v` is not shipped to the nodes more than once. In addition, the object `v` should not be modified after it is broadcast in order to ensure that all nodes get the same value of the broadcast variable (e.g. if the variable is shipped to a new node later). +After the broadcast variable is created, it should be used instead of the value `v` in any functions +run on the cluster so that `v` is not shipped to the nodes more than once. In addition, the object +`v` should not be modified after it is broadcast in order to ensure that all nodes get the same +value of the broadcast variable (e.g. if the variable is shipped to a new node later). ## Accumulators -Accumulators are variables that are only "added" to through an associative operation and can therefore be efficiently supported in parallel. They can be used to implement counters (as in MapReduce) or sums. Spark natively supports accumulators of numeric value types and standard mutable collections, and programmers can add support for new types. +Accumulators are variables that are only "added" to through an associative operation and can +therefore be efficiently supported in parallel. They can be used to implement counters (as in +MapReduce) or sums. Spark natively supports accumulators of numeric value types and standard mutable +collections, and programmers can add support for new types. -An accumulator is created from an initial value `v` by calling `SparkContext.accumulator(v)`. Tasks running on the cluster can then add to it using the `+=` operator. However, they cannot read its value. Only the driver program can read the accumulator's value, using its `value` method. +An accumulator is created from an initial value `v` by calling `SparkContext.accumulator(v)`. Tasks +running on the cluster can then add to it using the `+=` operator. However, they cannot read its +value. Only the driver program can read the accumulator's value, using its `value` method. The interpreter session below shows an accumulator being used to add up the elements of an array: diff --git a/docs/spark-standalone.md b/docs/spark-standalone.md index 51fb3a4f7f8c5..7e4eea323aa63 100644 --- a/docs/spark-standalone.md +++ b/docs/spark-standalone.md @@ -146,10 +146,13 @@ automatically set MASTER from the `SPARK_MASTER_IP` and `SPARK_MASTER_PORT` vari You can also pass an option `-c ` to control the number of cores that spark-shell uses on the cluster. -# Launching Applications Inside the Cluster +# Launching Compiled Spark Applications -You may also run your application entirely inside of the cluster by submitting your application driver using the submission client. The syntax for submitting applications is as follows: +Spark supports two deploy modes. Spark applications may run with the driver inside the client process or entirely inside the cluster. +The spark-submit script described in the [cluster mode overview](cluster-overview.html) provides the most straightforward way to submit a compiled Spark application to the cluster in either deploy mode. For info on the lower-level invocations used to launch an app inside the cluster, read ahead. + +## Launching Applications Inside the Cluster ./bin/spark-class org.apache.spark.deploy.Client launch [client-options] \ diff --git a/docs/sql-programming-guide.md b/docs/sql-programming-guide.md new file mode 100644 index 0000000000000..a59393e1424de --- /dev/null +++ b/docs/sql-programming-guide.md @@ -0,0 +1,321 @@ +--- +layout: global +title: Spark SQL Programming Guide +--- +**Spark SQL is currently an Alpha component. Therefore, the APIs may be changed in future releases.** + +* This will become a table of contents (this text will be scraped). +{:toc} + +# Overview + +
      +
      + +Spark SQL allows relational queries expressed in SQL, HiveQL, or Scala to be executed using +Spark. At the core of this component is a new type of RDD, +[SchemaRDD](api/sql/core/index.html#org.apache.spark.sql.SchemaRDD). SchemaRDDs are composed +[Row](api/sql/catalyst/index.html#org.apache.spark.sql.catalyst.expressions.Row) objects along with +a schema that describes the data types of each column in the row. A SchemaRDD is similar to a table +in a traditional relational database. A SchemaRDD can be created from an existing RDD, parquet +file, or by running HiveQL against data stored in [Apache Hive](http://hive.apache.org/). + +**All of the examples on this page use sample data included in the Spark distribution and can be run in the spark-shell.** + +
      + +
      +Spark SQL allows relational queries expressed in SQL, HiveQL, or Scala to be executed using +Spark. At the core of this component is a new type of RDD, +[JavaSchemaRDD](api/sql/core/index.html#org.apache.spark.sql.api.java.JavaSchemaRDD). JavaSchemaRDDs are composed +[Row](api/sql/catalyst/index.html#org.apache.spark.sql.api.java.Row) objects along with +a schema that describes the data types of each column in the row. A JavaSchemaRDD is similar to a table +in a traditional relational database. A JavaSchemaRDD can be created from an existing RDD, parquet +file, or by running HiveQL against data stored in [Apache Hive](http://hive.apache.org/). +
      +
      + +*************************************************************************************************** + +# Getting Started + +
      +
      + +The entry point into all relational functionality in Spark is the +[SQLContext](api/sql/core/index.html#org.apache.spark.sql.SQLContext) class, or one of its +decendents. To create a basic SQLContext, all you need is a SparkContext. + +{% highlight scala %} +val sc: SparkContext // An existing SparkContext. +val sqlContext = new org.apache.spark.sql.SQLContext(sc) + +// Importing the SQL context gives access to all the public SQL functions and implicit conversions. +import sqlContext._ +{% endhighlight %} + +
      + +
      + +The entry point into all relational functionality in Spark is the +[JavaSQLContext](api/sql/core/index.html#org.apache.spark.sql.api.java.JavaSQLContext) class, or one +of its decendents. To create a basic JavaSQLContext, all you need is a JavaSparkContext. + +{% highlight java %} +JavaSparkContext ctx = ...; // An existing JavaSparkContext. +JavaSQLContext sqlCtx = new org.apache.spark.sql.api.java.JavaSQLContext(ctx); +{% endhighlight %} + +
      + +
      + +## Running SQL on RDDs + +
      + +
      + +One type of table that is supported by Spark SQL is an RDD of Scala case classes. The case class +defines the schema of the table. The names of the arguments to the case class are read using +reflection and become the names of the columns. Case classes can also be nested or contain complex +types such as Sequences or Arrays. This RDD can be implicitly converted to a SchemaRDD and then be +registered as a table. Tables can used in subsequent SQL statements. + +{% highlight scala %} +val sqlContext = new org.apache.spark.sql.SQLContext(sc) +import sqlContext._ + +// Define the schema using a case class. +case class Person(name: String, age: Int) + +// Create an RDD of Person objects and register it as a table. +val people = sc.textFile("examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)) +people.registerAsTable("people") + +// SQL statements can be run by using the sql methods provided by sqlContext. +val teenagers = sql("SELECT name FROM people WHERE age >= 13 AND age <= 19") + +// The results of SQL queries are SchemaRDDs and support all the normal RDD operations. +// The columns of a row in the result can be accessed by ordinal. +teenagers.map(t => "Name: " + t(0)).collect().foreach(println) +{% endhighlight %} + +
      + +
      + +One type of table that is supported by Spark SQL is an RDD of [JavaBeans](http://stackoverflow.com/questions/3295496/what-is-a-javabean-exactly). The BeanInfo +defines the schema of the table. Currently, Spark SQL does not support JavaBeans that contain +nested or contain complex types such as Lists or Arrays. You can create a JavaBean by creating a +class that implements Serializable and has getters and setters for all of its fields. + +{% highlight java %} + +public static class Person implements Serializable { + private String name; + private int age; + + String getName() { + return name; + } + + void setName(String name) { + this.name = name; + } + + int getAge() { + return age; + } + + void setAge(int age) { + this.age = age; + } +} + +{% endhighlight %} + + +A schema can be applied to an existing RDD by calling `applySchema` and providing the Class object +for the JavaBean. + +{% highlight java %} +JavaSQLContext ctx = new org.apache.spark.sql.api.java.JavaSQLContext(sc) + +// Load a text file and convert each line to a JavaBean. +JavaRDD people = ctx.textFile("examples/src/main/resources/people.txt").map( + new Function() { + public Person call(String line) throws Exception { + String[] parts = line.split(","); + + Person person = new Person(); + person.setName(parts[0]); + person.setAge(Integer.parseInt(parts[1].trim())); + + return person; + } + }); + +// Apply a schema to an RDD of JavaBeans and register it as a table. +JavaSchemaRDD schemaPeople = sqlCtx.applySchema(people, Person.class); +schemaPeople.registerAsTable("people"); + +// SQL can be run over RDDs that have been registered as tables. +JavaSchemaRDD teenagers = sqlCtx.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19") + +// The results of SQL queries are SchemaRDDs and support all the normal RDD operations. +// The columns of a row in the result can be accessed by ordinal. +List teenagerNames = teenagers.map(new Function() { + public String call(Row row) { + return "Name: " + row.getString(0); + } +}).collect(); + +{% endhighlight %} + +
      + +
      + +**Note that Spark SQL currently uses a very basic SQL parser.** +Users that want a more complete dialect of SQL should look at the HiveQL support provided by +`HiveContext`. + +## Using Parquet + +Parquet is a columnar format that is supported by many other data processing systems. Spark SQL +provides support for both reading and writing parquet files that automatically preserves the schema +of the original data. Using the data from the above example: + +
      + +
      + +{% highlight scala %} +val sqlContext = new org.apache.spark.sql.SQLContext(sc) +import sqlContext._ + +val people: RDD[Person] = ... // An RDD of case class objects, from the previous example. + +// The RDD is implicitly converted to a SchemaRDD, allowing it to be stored using parquet. +people.saveAsParquetFile("people.parquet") + +// Read in the parquet file created above. Parquet files are self-describing so the schema is preserved. +// The result of loading a parquet file is also a JavaSchemaRDD. +val parquetFile = sqlContext.parquetFile("people.parquet") + +//Parquet files can also be registered as tables and then used in SQL statements. +parquetFile.registerAsTable("parquetFile") +val teenagers = sql("SELECT name FROM parquetFile WHERE age >= 13 AND age <= 19") +teenagers.collect().foreach(println) +{% endhighlight %} + +
      + +
      + +{% highlight java %} + +JavaSchemaRDD schemaPeople = ... // The JavaSchemaRDD from the previous example. + +// JavaSchemaRDDs can be saved as parquet files, maintaining the schema information. +schemaPeople.saveAsParquetFile("people.parquet"); + +// Read in the parquet file created above. Parquet files are self-describing so the schema is preserved. +// The result of loading a parquet file is also a JavaSchemaRDD. +JavaSchemaRDD parquetFile = sqlCtx.parquetFile("people.parquet"); + +//Parquet files can also be registered as tables and then used in SQL statements. +parquetFile.registerAsTable("parquetFile"); +JavaSchemaRDD teenagers = sqlCtx.sql("SELECT name FROM parquetFile WHERE age >= 13 AND age <= 19"); + + +{% endhighlight %} + +
      + +
      + +## Writing Language-Integrated Relational Queries + +**Language-Integrated queries are currently only supported in Scala.** + +Spark SQL also supports a domain specific language for writing queries. Once again, +using the data from the above examples: + +{% highlight scala %} +val sqlContext = new org.apache.spark.sql.SQLContext(sc) +import sqlContext._ +val people: RDD[Person] = ... // An RDD of case class objects, from the first example. + +// The following is the same as 'SELECT name FROM people WHERE age >= 10 AND age <= 19' +val teenagers = people.where('age >= 10).where('age <= 19).select('name) +{% endhighlight %} + +The DSL uses Scala symbols to represent columns in the underlying table, which are identifiers +prefixed with a tick (`'`). Implicit conversions turn these symbols into expressions that are +evaluated by the SQL execution engine. A full list of the functions supported can be found in the +[ScalaDoc](api/sql/core/index.html#org.apache.spark.sql.SchemaRDD). + + + +# Hive Support + +Spark SQL also supports reading and writing data stored in [Apache Hive](http://hive.apache.org/). +However, since Hive has a large number of dependencies, it is not included in the default Spark assembly. +In order to use Hive you must first run '`SPARK_HIVE=true sbt/sbt assembly/assembly`' (or use `-Phive` for maven). +This command builds a new assembly jar that includes Hive. Note that this Hive assembly jar must also be present +on all of the worker nodes, as they will need access to the Hive serialization and deserialization libraries +(SerDes) in order to acccess data stored in Hive. + +Configuration of Hive is done by placing your `hive-site.xml` file in `conf/`. + +
      + +
      + +When working with Hive one must construct a `HiveContext`, which inherits from `SQLContext`, and +adds support for finding tables in in the MetaStore and writing queries using HiveQL. Users who do +not have an existing Hive deployment can also experiment with the `LocalHiveContext`, +which is similar to `HiveContext`, but creates a local copy of the `metastore` and `warehouse` +automatically. + +{% highlight scala %} +val sc: SparkContext // An existing SparkContext. +val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc) + +// Importing the SQL context gives access to all the public SQL functions and implicit conversions. +import hiveContext._ + +hql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)") +hql("LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src") + +// Queries are expressed in HiveQL +hql("FROM src SELECT key, value").collect().foreach(println) +{% endhighlight %} + +
      + +
      + +When working with Hive one must construct a `JavaHiveContext`, which inherits from `JavaSQLContext`, and +adds support for finding tables in in the MetaStore and writing queries using HiveQL. In addition to +the `sql` method a `JavaHiveContext` also provides an `hql` methods, which allows queries to be +expressed in HiveQL. + +{% highlight java %} +JavaSparkContext ctx = ...; // An existing JavaSparkContext. +JavaHiveContext hiveCtx = new org.apache.spark.sql.hive.api.java.HiveContext(ctx); + +hiveCtx.hql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)"); +hiveCtx.hql("LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src"); + +// Queries are expressed in HiveQL. +Row[] results = hiveCtx.hql("FROM src SELECT key, value").collect(); + +{% endhighlight %} + +
      + +
      diff --git a/examples/pom.xml b/examples/pom.xml index 9f0e2d0b875b8..0b6212b5d1549 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -45,21 +45,6 @@ - - - apache-repo - Apache Repository - https://repository.apache.org/content/repositories/releases - - true - - - false - - - - - org.apache.spark @@ -85,6 +70,12 @@ ${project.version} provided + + org.apache.spark + spark-hive_${scala.binary.version} + ${project.version} + provided + org.apache.spark spark-graphx_${scala.binary.version} @@ -119,7 +110,7 @@ org.apache.hbase hbase - 0.94.6 + ${hbase.version} asm diff --git a/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java b/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java index 6b49244ba459d..bd96274021756 100644 --- a/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java +++ b/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java @@ -138,6 +138,6 @@ public static void main(String[] args) { System.out.print("Final w: "); printWeights(w); - System.exit(0); + sc.stop(); } } diff --git a/examples/src/main/java/org/apache/spark/examples/JavaKMeans.java b/examples/src/main/java/org/apache/spark/examples/JavaKMeans.java deleted file mode 100644 index 2d797279d5bcc..0000000000000 --- a/examples/src/main/java/org/apache/spark/examples/JavaKMeans.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.examples; - -import scala.Tuple2; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.api.java.function.Function; -import org.apache.spark.api.java.function.PairFunction; -import org.apache.spark.util.Vector; - -import java.util.List; -import java.util.Map; -import java.util.regex.Pattern; - -/** - * K-means clustering using Java API. - */ -public final class JavaKMeans { - - private static final Pattern SPACE = Pattern.compile(" "); - - /** Parses numbers split by whitespace to a vector */ - static Vector parseVector(String line) { - String[] splits = SPACE.split(line); - double[] data = new double[splits.length]; - int i = 0; - for (String s : splits) { - data[i] = Double.parseDouble(s); - i++; - } - return new Vector(data); - } - - /** Computes the vector to which the input vector is closest using squared distance */ - static int closestPoint(Vector p, List centers) { - int bestIndex = 0; - double closest = Double.POSITIVE_INFINITY; - for (int i = 0; i < centers.size(); i++) { - double tempDist = p.squaredDist(centers.get(i)); - if (tempDist < closest) { - closest = tempDist; - bestIndex = i; - } - } - return bestIndex; - } - - /** Computes the mean across all vectors in the input set of vectors */ - static Vector average(List ps) { - int numVectors = ps.size(); - Vector out = new Vector(ps.get(0).elements()); - // start from i = 1 since we already copied index 0 above - for (int i = 1; i < numVectors; i++) { - out.addInPlace(ps.get(i)); - } - return out.divide(numVectors); - } - - public static void main(String[] args) throws Exception { - if (args.length < 4) { - System.err.println("Usage: JavaKMeans "); - System.exit(1); - } - JavaSparkContext sc = new JavaSparkContext(args[0], "JavaKMeans", - System.getenv("SPARK_HOME"), JavaSparkContext.jarOfClass(JavaKMeans.class)); - String path = args[1]; - int K = Integer.parseInt(args[2]); - double convergeDist = Double.parseDouble(args[3]); - - JavaRDD data = sc.textFile(path).map( - new Function() { - @Override - public Vector call(String line) { - return parseVector(line); - } - } - ).cache(); - - final List centroids = data.takeSample(false, K, 42); - - double tempDist; - do { - // allocate each vector to closest centroid - JavaPairRDD closest = data.mapToPair( - new PairFunction() { - @Override - public Tuple2 call(Vector vector) { - return new Tuple2( - closestPoint(vector, centroids), vector); - } - } - ); - - // group by cluster id and average the vectors within each cluster to compute centroids - JavaPairRDD> pointsGroup = closest.groupByKey(); - Map newCentroids = pointsGroup.mapValues( - new Function, Vector>() { - @Override - public Vector call(List ps) { - return average(ps); - } - }).collectAsMap(); - tempDist = 0.0; - for (int i = 0; i < K; i++) { - tempDist += centroids.get(i).squaredDist(newCentroids.get(i)); - } - for (Map.Entry t: newCentroids.entrySet()) { - centroids.set(t.getKey(), t.getValue()); - } - System.out.println("Finished iteration (delta = " + tempDist + ")"); - } while (tempDist > convergeDist); - - System.out.println("Final centers:"); - for (Vector c : centroids) { - System.out.println(c); - } - - System.exit(0); - - } -} diff --git a/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java b/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java index a518fe2f27eb0..2a4278d3c30e5 100644 --- a/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java +++ b/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java @@ -124,8 +124,8 @@ public Stats call(Stats stats, Stats stats2) { List, Stats>> output = counts.collect(); for (Tuple2 t : output) { - System.out.println(t._1 + "\t" + t._2); + System.out.println(t._1() + "\t" + t._2()); } - System.exit(0); + jsc.stop(); } } diff --git a/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java b/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java index e53925b50c2ce..e31f676f5fd4c 100644 --- a/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java +++ b/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java @@ -17,7 +17,10 @@ package org.apache.spark.examples; + import scala.Tuple2; + +import com.google.common.collect.Iterables; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; @@ -26,8 +29,9 @@ import org.apache.spark.api.java.function.PairFlatMapFunction; import org.apache.spark.api.java.function.PairFunction; -import java.util.List; import java.util.ArrayList; +import java.util.List; +import java.util.Iterator; import java.util.regex.Pattern; /** @@ -66,7 +70,7 @@ public static void main(String[] args) throws Exception { JavaRDD lines = ctx.textFile(args[1], 1); // Loads all URLs from input file and initialize their neighbors. - JavaPairRDD> links = lines.mapToPair(new PairFunction() { + JavaPairRDD> links = lines.mapToPair(new PairFunction() { @Override public Tuple2 call(String s) { String[] parts = SPACES.split(s); @@ -75,9 +79,9 @@ public Tuple2 call(String s) { }).distinct().groupByKey().cache(); // Loads all URLs with other URL(s) link to from input file and initialize ranks of them to one. - JavaPairRDD ranks = links.mapValues(new Function, Double>() { + JavaPairRDD ranks = links.mapValues(new Function, Double>() { @Override - public Double call(List rs) { + public Double call(Iterable rs) { return 1.0; } }); @@ -86,12 +90,13 @@ public Double call(List rs) { for (int current = 0; current < Integer.parseInt(args[2]); current++) { // Calculates URL contributions to the rank of other URLs. JavaPairRDD contribs = links.join(ranks).values() - .flatMapToPair(new PairFlatMapFunction, Double>, String, Double>() { + .flatMapToPair(new PairFlatMapFunction, Double>, String, Double>() { @Override - public Iterable> call(Tuple2, Double> s) { + public Iterable> call(Tuple2, Double> s) { + int urlCount = Iterables.size(s._1); List> results = new ArrayList>(); for (String n : s._1) { - results.add(new Tuple2(n, s._2 / s._1.size())); + results.add(new Tuple2(n, s._2() / urlCount)); } return results; } @@ -109,9 +114,9 @@ public Double call(Double sum) { // Collects all URL ranks and dump them to console. List> output = ranks.collect(); for (Tuple2 tuple : output) { - System.out.println(tuple._1 + " has rank: " + tuple._2 + "."); + System.out.println(tuple._1() + " has rank: " + tuple._2() + "."); } - System.exit(0); + ctx.stop(); } } diff --git a/examples/src/main/java/org/apache/spark/examples/JavaTC.java b/examples/src/main/java/org/apache/spark/examples/JavaTC.java index 6cfe25c80ecc6..1d776940f06c6 100644 --- a/examples/src/main/java/org/apache/spark/examples/JavaTC.java +++ b/examples/src/main/java/org/apache/spark/examples/JavaTC.java @@ -96,6 +96,6 @@ public Tuple2 call(Tuple2 e) { } while (nextCount != oldCount); System.out.println("TC has " + tc.count() + " edges."); - System.exit(0); + sc.stop(); } } diff --git a/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java b/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java index fa1b977ab19f1..87c1b80981961 100644 --- a/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java +++ b/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java @@ -48,14 +48,14 @@ public Iterable call(String s) { return Arrays.asList(SPACE.split(s)); } }); - + JavaPairRDD ones = words.mapToPair(new PairFunction() { @Override public Tuple2 call(String s) { return new Tuple2(s, 1); } }); - + JavaPairRDD counts = ones.reduceByKey(new Function2() { @Override public Integer call(Integer i1, Integer i2) { @@ -65,8 +65,8 @@ public Integer call(Integer i1, Integer i2) { List> output = counts.collect(); for (Tuple2 tuple : output) { - System.out.println(tuple._1 + ": " + tuple._2); + System.out.println(tuple._1() + ": " + tuple._2()); } - System.exit(0); + ctx.stop(); } } diff --git a/examples/src/main/java/org/apache/spark/examples/sql/JavaSparkSQL.java b/examples/src/main/java/org/apache/spark/examples/sql/JavaSparkSQL.java new file mode 100644 index 0000000000000..e8e63d2745692 --- /dev/null +++ b/examples/src/main/java/org/apache/spark/examples/sql/JavaSparkSQL.java @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.examples.sql; + +import java.io.Serializable; +import java.util.List; + +import org.apache.spark.api.java.JavaRDD; +import org.apache.spark.api.java.JavaSparkContext; +import org.apache.spark.api.java.function.Function; +import org.apache.spark.api.java.function.VoidFunction; + +import org.apache.spark.sql.api.java.JavaSQLContext; +import org.apache.spark.sql.api.java.JavaSchemaRDD; +import org.apache.spark.sql.api.java.Row; + +public class JavaSparkSQL { + public static class Person implements Serializable { + private String name; + private int age; + + String getName() { + return name; + } + + void setName(String name) { + this.name = name; + } + + int getAge() { + return age; + } + + void setAge(int age) { + this.age = age; + } + } + + public static void main(String[] args) throws Exception { + JavaSparkContext ctx = new JavaSparkContext("local", "JavaSparkSQL", + System.getenv("SPARK_HOME"), JavaSparkContext.jarOfClass(JavaSparkSQL.class)); + JavaSQLContext sqlCtx = new JavaSQLContext(ctx); + + // Load a text file and convert each line to a Java Bean. + JavaRDD people = ctx.textFile("examples/src/main/resources/people.txt").map( + new Function() { + public Person call(String line) throws Exception { + String[] parts = line.split(","); + + Person person = new Person(); + person.setName(parts[0]); + person.setAge(Integer.parseInt(parts[1].trim())); + + return person; + } + }); + + // Apply a schema to an RDD of Java Beans and register it as a table. + JavaSchemaRDD schemaPeople = sqlCtx.applySchema(people, Person.class); + schemaPeople.registerAsTable("people"); + + // SQL can be run over RDDs that have been registered as tables. + JavaSchemaRDD teenagers = sqlCtx.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19"); + + // The results of SQL queries are SchemaRDDs and support all the normal RDD operations. + // The columns of a row in the result can be accessed by ordinal. + List teenagerNames = teenagers.map(new Function() { + public String call(Row row) { + return "Name: " + row.getString(0); + } + }).collect(); + + // JavaSchemaRDDs can be saved as parquet files, maintaining the schema information. + schemaPeople.saveAsParquetFile("people.parquet"); + + // Read in the parquet file created above. Parquet files are self-describing so the schema is preserved. + // The result of loading a parquet file is also a JavaSchemaRDD. + JavaSchemaRDD parquetFile = sqlCtx.parquetFile("people.parquet"); + + //Parquet files can also be registered as tables and then used in SQL statements. + parquetFile.registerAsTable("parquetFile"); + JavaSchemaRDD teenagers2 = sqlCtx.sql("SELECT name FROM parquetFile WHERE age >= 13 AND age <= 19"); + } +} diff --git a/examples/src/main/java/org/apache/spark/mllib/examples/JavaALS.java b/examples/src/main/java/org/apache/spark/mllib/examples/JavaALS.java index 64a3a04fb7296..c516199d61c72 100644 --- a/examples/src/main/java/org/apache/spark/mllib/examples/JavaALS.java +++ b/examples/src/main/java/org/apache/spark/mllib/examples/JavaALS.java @@ -85,6 +85,6 @@ public static void main(String[] args) { outputDir + "/productFeatures"); System.out.println("Final user/product features written to " + outputDir); - System.exit(0); + sc.stop(); } } diff --git a/examples/src/main/java/org/apache/spark/mllib/examples/JavaKMeans.java b/examples/src/main/java/org/apache/spark/mllib/examples/JavaKMeans.java index 76ebdccfd6b67..7461609ab9e8f 100644 --- a/examples/src/main/java/org/apache/spark/mllib/examples/JavaKMeans.java +++ b/examples/src/main/java/org/apache/spark/mllib/examples/JavaKMeans.java @@ -17,32 +17,33 @@ package org.apache.spark.mllib.examples; +import java.util.regex.Pattern; + import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.Function; import org.apache.spark.mllib.clustering.KMeans; import org.apache.spark.mllib.clustering.KMeansModel; - -import java.util.Arrays; -import java.util.regex.Pattern; +import org.apache.spark.mllib.linalg.Vector; +import org.apache.spark.mllib.linalg.Vectors; /** * Example using MLLib KMeans from Java. */ public final class JavaKMeans { - static class ParsePoint implements Function { + private static class ParsePoint implements Function { private static final Pattern SPACE = Pattern.compile(" "); @Override - public double[] call(String line) { + public Vector call(String line) { String[] tok = SPACE.split(line); double[] point = new double[tok.length]; for (int i = 0; i < tok.length; ++i) { point[i] = Double.parseDouble(tok[i]); } - return point; + return Vectors.dense(point); } } @@ -65,19 +66,19 @@ public static void main(String[] args) { JavaSparkContext sc = new JavaSparkContext(args[0], "JavaKMeans", System.getenv("SPARK_HOME"), JavaSparkContext.jarOfClass(JavaKMeans.class)); - JavaRDD lines = sc.textFile(args[1]); + JavaRDD lines = sc.textFile(inputFile); - JavaRDD points = lines.map(new ParsePoint()); + JavaRDD points = lines.map(new ParsePoint()); - KMeansModel model = KMeans.train(points.rdd(), k, iterations, runs); + KMeansModel model = KMeans.train(points.rdd(), k, iterations, runs, KMeans.K_MEANS_PARALLEL()); System.out.println("Cluster centers:"); - for (double[] center : model.clusterCenters()) { - System.out.println(" " + Arrays.toString(center)); + for (Vector center : model.clusterCenters()) { + System.out.println(" " + center); } double cost = model.computeCost(points.rdd()); System.out.println("Cost: " + cost); - System.exit(0); + sc.stop(); } } diff --git a/examples/src/main/java/org/apache/spark/mllib/examples/JavaLR.java b/examples/src/main/java/org/apache/spark/mllib/examples/JavaLR.java index 667c72f379e71..e3ab87cc722f3 100644 --- a/examples/src/main/java/org/apache/spark/mllib/examples/JavaLR.java +++ b/examples/src/main/java/org/apache/spark/mllib/examples/JavaLR.java @@ -17,6 +17,7 @@ package org.apache.spark.mllib.examples; +import java.util.regex.Pattern; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; @@ -24,11 +25,9 @@ import org.apache.spark.mllib.classification.LogisticRegressionWithSGD; import org.apache.spark.mllib.classification.LogisticRegressionModel; +import org.apache.spark.mllib.linalg.Vectors; import org.apache.spark.mllib.regression.LabeledPoint; -import java.util.Arrays; -import java.util.regex.Pattern; - /** * Logistic regression based classification using ML Lib. */ @@ -47,14 +46,10 @@ public LabeledPoint call(String line) { for (int i = 0; i < tok.length; ++i) { x[i] = Double.parseDouble(tok[i]); } - return new LabeledPoint(y, x); + return new LabeledPoint(y, Vectors.dense(x)); } } - public static void printWeights(double[] a) { - System.out.println(Arrays.toString(a)); - } - public static void main(String[] args) { if (args.length != 4) { System.err.println("Usage: JavaLR "); @@ -80,9 +75,8 @@ public static void main(String[] args) { LogisticRegressionModel model = LogisticRegressionWithSGD.train(points.rdd(), iterations, stepSize); - System.out.print("Final w: "); - printWeights(model.weights()); + System.out.print("Final w: " + model.weights()); - System.exit(0); + sc.stop(); } } diff --git a/examples/src/main/resources/kv1.txt b/examples/src/main/resources/kv1.txt new file mode 100644 index 0000000000000..9825414ecf8f2 --- /dev/null +++ b/examples/src/main/resources/kv1.txt @@ -0,0 +1,500 @@ +238val_238 +86val_86 +311val_311 +27val_27 +165val_165 +409val_409 +255val_255 +278val_278 +98val_98 +484val_484 +265val_265 +193val_193 +401val_401 +150val_150 +273val_273 +224val_224 +369val_369 +66val_66 +128val_128 +213val_213 +146val_146 +406val_406 +429val_429 +374val_374 +152val_152 +469val_469 +145val_145 +495val_495 +37val_37 +327val_327 +281val_281 +277val_277 +209val_209 +15val_15 +82val_82 +403val_403 +166val_166 +417val_417 +430val_430 +252val_252 +292val_292 +219val_219 +287val_287 +153val_153 +193val_193 +338val_338 +446val_446 +459val_459 +394val_394 +237val_237 +482val_482 +174val_174 +413val_413 +494val_494 +207val_207 +199val_199 +466val_466 +208val_208 +174val_174 +399val_399 +396val_396 +247val_247 +417val_417 +489val_489 +162val_162 +377val_377 +397val_397 +309val_309 +365val_365 +266val_266 +439val_439 +342val_342 +367val_367 +325val_325 +167val_167 +195val_195 +475val_475 +17val_17 +113val_113 +155val_155 +203val_203 +339val_339 +0val_0 +455val_455 +128val_128 +311val_311 +316val_316 +57val_57 +302val_302 +205val_205 +149val_149 +438val_438 +345val_345 +129val_129 +170val_170 +20val_20 +489val_489 +157val_157 +378val_378 +221val_221 +92val_92 +111val_111 +47val_47 +72val_72 +4val_4 +280val_280 +35val_35 +427val_427 +277val_277 +208val_208 +356val_356 +399val_399 +169val_169 +382val_382 +498val_498 +125val_125 +386val_386 +437val_437 +469val_469 +192val_192 +286val_286 +187val_187 +176val_176 +54val_54 +459val_459 +51val_51 +138val_138 +103val_103 +239val_239 +213val_213 +216val_216 +430val_430 +278val_278 +176val_176 +289val_289 +221val_221 +65val_65 +318val_318 +332val_332 +311val_311 +275val_275 +137val_137 +241val_241 +83val_83 +333val_333 +180val_180 +284val_284 +12val_12 +230val_230 +181val_181 +67val_67 +260val_260 +404val_404 +384val_384 +489val_489 +353val_353 +373val_373 +272val_272 +138val_138 +217val_217 +84val_84 +348val_348 +466val_466 +58val_58 +8val_8 +411val_411 +230val_230 +208val_208 +348val_348 +24val_24 +463val_463 +431val_431 +179val_179 +172val_172 +42val_42 +129val_129 +158val_158 +119val_119 +496val_496 +0val_0 +322val_322 +197val_197 +468val_468 +393val_393 +454val_454 +100val_100 +298val_298 +199val_199 +191val_191 +418val_418 +96val_96 +26val_26 +165val_165 +327val_327 +230val_230 +205val_205 +120val_120 +131val_131 +51val_51 +404val_404 +43val_43 +436val_436 +156val_156 +469val_469 +468val_468 +308val_308 +95val_95 +196val_196 +288val_288 +481val_481 +457val_457 +98val_98 +282val_282 +197val_197 +187val_187 +318val_318 +318val_318 +409val_409 +470val_470 +137val_137 +369val_369 +316val_316 +169val_169 +413val_413 +85val_85 +77val_77 +0val_0 +490val_490 +87val_87 +364val_364 +179val_179 +118val_118 +134val_134 +395val_395 +282val_282 +138val_138 +238val_238 +419val_419 +15val_15 +118val_118 +72val_72 +90val_90 +307val_307 +19val_19 +435val_435 +10val_10 +277val_277 +273val_273 +306val_306 +224val_224 +309val_309 +389val_389 +327val_327 +242val_242 +369val_369 +392val_392 +272val_272 +331val_331 +401val_401 +242val_242 +452val_452 +177val_177 +226val_226 +5val_5 +497val_497 +402val_402 +396val_396 +317val_317 +395val_395 +58val_58 +35val_35 +336val_336 +95val_95 +11val_11 +168val_168 +34val_34 +229val_229 +233val_233 +143val_143 +472val_472 +322val_322 +498val_498 +160val_160 +195val_195 +42val_42 +321val_321 +430val_430 +119val_119 +489val_489 +458val_458 +78val_78 +76val_76 +41val_41 +223val_223 +492val_492 +149val_149 +449val_449 +218val_218 +228val_228 +138val_138 +453val_453 +30val_30 +209val_209 +64val_64 +468val_468 +76val_76 +74val_74 +342val_342 +69val_69 +230val_230 +33val_33 +368val_368 +103val_103 +296val_296 +113val_113 +216val_216 +367val_367 +344val_344 +167val_167 +274val_274 +219val_219 +239val_239 +485val_485 +116val_116 +223val_223 +256val_256 +263val_263 +70val_70 +487val_487 +480val_480 +401val_401 +288val_288 +191val_191 +5val_5 +244val_244 +438val_438 +128val_128 +467val_467 +432val_432 +202val_202 +316val_316 +229val_229 +469val_469 +463val_463 +280val_280 +2val_2 +35val_35 +283val_283 +331val_331 +235val_235 +80val_80 +44val_44 +193val_193 +321val_321 +335val_335 +104val_104 +466val_466 +366val_366 +175val_175 +403val_403 +483val_483 +53val_53 +105val_105 +257val_257 +406val_406 +409val_409 +190val_190 +406val_406 +401val_401 +114val_114 +258val_258 +90val_90 +203val_203 +262val_262 +348val_348 +424val_424 +12val_12 +396val_396 +201val_201 +217val_217 +164val_164 +431val_431 +454val_454 +478val_478 +298val_298 +125val_125 +431val_431 +164val_164 +424val_424 +187val_187 +382val_382 +5val_5 +70val_70 +397val_397 +480val_480 +291val_291 +24val_24 +351val_351 +255val_255 +104val_104 +70val_70 +163val_163 +438val_438 +119val_119 +414val_414 +200val_200 +491val_491 +237val_237 +439val_439 +360val_360 +248val_248 +479val_479 +305val_305 +417val_417 +199val_199 +444val_444 +120val_120 +429val_429 +169val_169 +443val_443 +323val_323 +325val_325 +277val_277 +230val_230 +478val_478 +178val_178 +468val_468 +310val_310 +317val_317 +333val_333 +493val_493 +460val_460 +207val_207 +249val_249 +265val_265 +480val_480 +83val_83 +136val_136 +353val_353 +172val_172 +214val_214 +462val_462 +233val_233 +406val_406 +133val_133 +175val_175 +189val_189 +454val_454 +375val_375 +401val_401 +421val_421 +407val_407 +384val_384 +256val_256 +26val_26 +134val_134 +67val_67 +384val_384 +379val_379 +18val_18 +462val_462 +492val_492 +100val_100 +298val_298 +9val_9 +341val_341 +498val_498 +146val_146 +458val_458 +362val_362 +186val_186 +285val_285 +348val_348 +167val_167 +18val_18 +273val_273 +183val_183 +281val_281 +344val_344 +97val_97 +469val_469 +315val_315 +84val_84 +28val_28 +37val_37 +448val_448 +152val_152 +348val_348 +307val_307 +194val_194 +414val_414 +477val_477 +222val_222 +126val_126 +90val_90 +169val_169 +403val_403 +400val_400 +200val_200 +97val_97 diff --git a/examples/src/main/resources/people.txt b/examples/src/main/resources/people.txt new file mode 100644 index 0000000000000..3bcace4a44c23 --- /dev/null +++ b/examples/src/main/resources/people.txt @@ -0,0 +1,3 @@ +Michael, 29 +Andy, 30 +Justin, 19 diff --git a/examples/src/main/scala/org/apache/spark/examples/BroadcastTest.scala b/examples/src/main/scala/org/apache/spark/examples/BroadcastTest.scala index 4d2f45df85fc6..c8c916bb45e00 100644 --- a/examples/src/main/scala/org/apache/spark/examples/BroadcastTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/BroadcastTest.scala @@ -56,6 +56,6 @@ object BroadcastTest { println("Iteration %d took %.0f milliseconds".format(i, (System.nanoTime - startTime) / 1E6)) } - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/CassandraCQLTest.scala b/examples/src/main/scala/org/apache/spark/examples/CassandraCQLTest.scala index ee283ce6abac2..1f8d7cb5995b8 100644 --- a/examples/src/main/scala/org/apache/spark/examples/CassandraCQLTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/CassandraCQLTest.scala @@ -58,7 +58,7 @@ import org.apache.spark.SparkContext._ prod_id, quantity) VALUES ('charlie', 1385983649000, 'iphone', 2); */ - + /** * This example demonstrates how to read and write to cassandra column family created using CQL3 * using Spark. diff --git a/examples/src/main/scala/org/apache/spark/examples/ExceptionHandlingTest.scala b/examples/src/main/scala/org/apache/spark/examples/ExceptionHandlingTest.scala index fdb976dfc6aba..be7d39549a28d 100644 --- a/examples/src/main/scala/org/apache/spark/examples/ExceptionHandlingTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/ExceptionHandlingTest.scala @@ -34,6 +34,6 @@ object ExceptionHandlingTest { } } - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/GroupByTest.scala b/examples/src/main/scala/org/apache/spark/examples/GroupByTest.scala index 36534e59353cd..29114c6dabcdb 100644 --- a/examples/src/main/scala/org/apache/spark/examples/GroupByTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/GroupByTest.scala @@ -28,7 +28,7 @@ object GroupByTest { "Usage: GroupByTest [numMappers] [numKVPairs] [KeySize] [numReducers]") System.exit(1) } - + var numMappers = if (args.length > 1) args(1).toInt else 2 var numKVPairs = if (args.length > 2) args(2).toInt else 1000 var valSize = if (args.length > 3) args(3).toInt else 1000 @@ -52,7 +52,6 @@ object GroupByTest { println(pairs1.groupByKey(numReducers).count) - System.exit(0) + sc.stop() } } - diff --git a/examples/src/main/scala/org/apache/spark/examples/HBaseTest.scala b/examples/src/main/scala/org/apache/spark/examples/HBaseTest.scala index 65d67356be2f6..700121d16dd60 100644 --- a/examples/src/main/scala/org/apache/spark/examples/HBaseTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/HBaseTest.scala @@ -30,7 +30,7 @@ object HBaseTest { val conf = HBaseConfiguration.create() - // Other options for configuring scan behavior are available. More information available at + // Other options for configuring scan behavior are available. More information available at // http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html conf.set(TableInputFormat.INPUT_TABLE, args(1)) @@ -41,12 +41,12 @@ object HBaseTest { admin.createTable(tableDesc) } - val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], + val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable], classOf[org.apache.hadoop.hbase.client.Result]) hBaseRDD.count() - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/HdfsTest.scala b/examples/src/main/scala/org/apache/spark/examples/HdfsTest.scala index c3597d94a224e..dd6d5205133be 100644 --- a/examples/src/main/scala/org/apache/spark/examples/HdfsTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/HdfsTest.scala @@ -32,6 +32,6 @@ object HdfsTest { val end = System.currentTimeMillis() println("Iteration " + iter + " took " + (end-start) + " ms") } - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/LocalALS.scala b/examples/src/main/scala/org/apache/spark/examples/LocalALS.scala index c8ecbb8e41a86..37ad4bd0999bd 100644 --- a/examples/src/main/scala/org/apache/spark/examples/LocalALS.scala +++ b/examples/src/main/scala/org/apache/spark/examples/LocalALS.scala @@ -53,7 +53,6 @@ object LocalALS { for (i <- 0 until M; j <- 0 until U) { r.set(i, j, blas.ddot(ms(i), us(j))) } - //println("R: " + r) blas.daxpy(-1, targetR, r) val sumSqs = r.aggregate(Functions.plus, Functions.square) sqrt(sumSqs / (M * U)) @@ -121,7 +120,7 @@ object LocalALS { } } printf("Running with M=%d, U=%d, F=%d, iters=%d\n", M, U, F, ITERATIONS) - + val R = generateR() // Initialize m and u randomly diff --git a/examples/src/main/scala/org/apache/spark/examples/MultiBroadcastTest.scala b/examples/src/main/scala/org/apache/spark/examples/MultiBroadcastTest.scala index 4aef04fc060b6..97321ab8f41db 100644 --- a/examples/src/main/scala/org/apache/spark/examples/MultiBroadcastTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/MultiBroadcastTest.scala @@ -51,6 +51,6 @@ object MultiBroadcastTest { // Collect the small RDD so we can print the observed sizes locally. observedSizes.collect().foreach(i => println(i)) - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/SimpleSkewedGroupByTest.scala b/examples/src/main/scala/org/apache/spark/examples/SimpleSkewedGroupByTest.scala index 73b0e216cac98..d05eedd31caa0 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SimpleSkewedGroupByTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SimpleSkewedGroupByTest.scala @@ -27,7 +27,7 @@ object SimpleSkewedGroupByTest { System.err.println("Usage: SimpleSkewedGroupByTest " + "[numMappers] [numKVPairs] [valSize] [numReducers] [ratio]") System.exit(1) - } + } var numMappers = if (args.length > 1) args(1).toInt else 2 var numKVPairs = if (args.length > 2) args(2).toInt else 1000 @@ -58,14 +58,13 @@ object SimpleSkewedGroupByTest { }.cache // Enforce that everything has been calculated and in cache pairs1.count - + println("RESULT: " + pairs1.groupByKey(numReducers).count) // Print how many keys each reducer got (for debugging) - //println("RESULT: " + pairs1.groupByKey(numReducers) + // println("RESULT: " + pairs1.groupByKey(numReducers) // .map{case (k,v) => (k, v.size)} // .collectAsMap) - System.exit(0) + sc.stop() } } - diff --git a/examples/src/main/scala/org/apache/spark/examples/SkewedGroupByTest.scala b/examples/src/main/scala/org/apache/spark/examples/SkewedGroupByTest.scala index 966478fe4a258..fd9f043247d18 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SkewedGroupByTest.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SkewedGroupByTest.scala @@ -27,7 +27,7 @@ object SkewedGroupByTest { System.err.println( "Usage: GroupByTest [numMappers] [numKVPairs] [KeySize] [numReducers]") System.exit(1) - } + } var numMappers = if (args.length > 1) args(1).toInt else 2 var numKVPairs = if (args.length > 2) args(2).toInt else 1000 @@ -53,10 +53,9 @@ object SkewedGroupByTest { }.cache() // Enforce that everything has been calculated and in cache pairs1.count() - + println(pairs1.groupByKey(numReducers).count()) - System.exit(0) + sc.stop() } } - diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkALS.scala b/examples/src/main/scala/org/apache/spark/examples/SparkALS.scala index 17bafc2218a31..68f151a2c47fe 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkALS.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkALS.scala @@ -54,7 +54,6 @@ object SparkALS { for (i <- 0 until M; j <- 0 until U) { r.set(i, j, blas.ddot(ms(i), us(j))) } - //println("R: " + r) blas.daxpy(-1, targetR, r) val sumSqs = r.aggregate(Functions.plus, Functions.square) sqrt(sumSqs / (M * U)) @@ -113,7 +112,7 @@ object SparkALS { val sc = new SparkContext(host, "SparkALS", System.getenv("SPARK_HOME"), SparkContext.jarOfClass(this.getClass)) - + val R = generateR() // Initialize m and u randomly @@ -128,16 +127,16 @@ object SparkALS { println("Iteration " + iter + ":") ms = sc.parallelize(0 until M, slices) .map(i => update(i, msb.value(i), usb.value, Rc.value)) - .toArray + .collect() msb = sc.broadcast(ms) // Re-broadcast ms because it was updated us = sc.parallelize(0 until U, slices) .map(i => update(i, usb.value(i), msb.value, algebra.transpose(Rc.value))) - .toArray + .collect() usb = sc.broadcast(us) // Re-broadcast us because it was updated println("RMSE = " + rmse(R, ms, us)) println() } - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkHdfsLR.scala b/examples/src/main/scala/org/apache/spark/examples/SparkHdfsLR.scala index cf1fc3e808c76..d8de8745c15d9 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkHdfsLR.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkHdfsLR.scala @@ -34,8 +34,6 @@ object SparkHdfsLR { case class DataPoint(x: Vector, y: Double) def parsePoint(line: String): DataPoint = { - //val nums = line.split(' ').map(_.toDouble) - //return DataPoint(new Vector(nums.slice(1, D+1)), nums(0)) val tok = new java.util.StringTokenizer(line, " ") var y = tok.nextToken.toDouble var x = new Array[Double](D) @@ -54,7 +52,7 @@ object SparkHdfsLR { val inputPath = args(1) val conf = SparkHadoopUtil.get.newConfiguration() val sc = new SparkContext(args(0), "SparkHdfsLR", - System.getenv("SPARK_HOME"), SparkContext.jarOfClass(this.getClass), Map(), + System.getenv("SPARK_HOME"), SparkContext.jarOfClass(this.getClass), Map(), InputFormatInfo.computePreferredLocations( Seq(new InputFormatInfo(conf, classOf[org.apache.hadoop.mapred.TextInputFormat], inputPath)) )) @@ -75,6 +73,6 @@ object SparkHdfsLR { } println("Final w: " + w) - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkKMeans.scala b/examples/src/main/scala/org/apache/spark/examples/SparkKMeans.scala index 9fe24652358f3..1a8b21618e23a 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkKMeans.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkKMeans.scala @@ -28,16 +28,16 @@ import org.apache.spark.SparkContext._ object SparkKMeans { val R = 1000 // Scaling factor val rand = new Random(42) - + def parseVector(line: String): Vector = { new Vector(line.split(' ').map(_.toDouble)) } - + def closestPoint(p: Vector, centers: Array[Vector]): Int = { var index = 0 var bestIndex = 0 var closest = Double.PositiveInfinity - + for (i <- 0 until centers.length) { val tempDist = p.squaredDist(centers(i)) if (tempDist < closest) { @@ -45,7 +45,7 @@ object SparkKMeans { bestIndex = i } } - + bestIndex } @@ -60,22 +60,22 @@ object SparkKMeans { val data = lines.map(parseVector _).cache() val K = args(2).toInt val convergeDist = args(3).toDouble - + val kPoints = data.takeSample(withReplacement = false, K, 42).toArray var tempDist = 1.0 while(tempDist > convergeDist) { val closest = data.map (p => (closestPoint(p, kPoints), (p, 1))) - + val pointStats = closest.reduceByKey{case ((x1, y1), (x2, y2)) => (x1 + x2, y1 + y2)} - + val newPoints = pointStats.map {pair => (pair._1, pair._2._1 / pair._2._2)}.collectAsMap() - + tempDist = 0.0 for (i <- 0 until K) { tempDist += kPoints(i).squaredDist(newPoints(i)) } - + for (newP <- newPoints) { kPoints(newP._1) = newP._2 } @@ -84,6 +84,6 @@ object SparkKMeans { println("Final centers:") kPoints.foreach(println) - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkLR.scala b/examples/src/main/scala/org/apache/spark/examples/SparkLR.scala index c54a55bdb4a11..3a2699d4d996b 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkLR.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkLR.scala @@ -66,6 +66,6 @@ object SparkLR { } println("Final w: " + w) - System.exit(0) + sc.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkPageRank.scala b/examples/src/main/scala/org/apache/spark/examples/SparkPageRank.scala index d203f4d20e15f..45b6e10f3ea9e 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkPageRank.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkPageRank.scala @@ -57,7 +57,6 @@ object SparkPageRank { val output = ranks.collect() output.foreach(tup => println(tup._1 + " has rank: " + tup._2 + ".")) - System.exit(0) + ctx.stop() } } - diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala b/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala index e5a09ecec006f..d3babc3ed12c8 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala @@ -18,8 +18,8 @@ package org.apache.spark.examples import scala.math.random + import org.apache.spark._ -import SparkContext._ /** Computes an approximation to pi */ object SparkPi { diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkTC.scala b/examples/src/main/scala/org/apache/spark/examples/SparkTC.scala index 24e8afa26bc5f..eb47cf027cb10 100644 --- a/examples/src/main/scala/org/apache/spark/examples/SparkTC.scala +++ b/examples/src/main/scala/org/apache/spark/examples/SparkTC.scala @@ -70,6 +70,6 @@ object SparkTC { } while (nextCount != oldCount) println("TC has " + tc.count() + " edges.") - System.exit(0) + spark.stop() } } diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkTachyonHdfsLR.scala b/examples/src/main/scala/org/apache/spark/examples/SparkTachyonHdfsLR.scala new file mode 100644 index 0000000000000..5698d4746495d --- /dev/null +++ b/examples/src/main/scala/org/apache/spark/examples/SparkTachyonHdfsLR.scala @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.examples + +import java.util.Random +import scala.math.exp +import org.apache.spark.util.Vector +import org.apache.spark._ +import org.apache.spark.deploy.SparkHadoopUtil +import org.apache.spark.scheduler.InputFormatInfo +import org.apache.spark.storage.StorageLevel + +/** + * Logistic regression based classification. + * This example uses Tachyon to persist rdds during computation. + */ +object SparkTachyonHdfsLR { + val D = 10 // Numer of dimensions + val rand = new Random(42) + + case class DataPoint(x: Vector, y: Double) + + def parsePoint(line: String): DataPoint = { + val tok = new java.util.StringTokenizer(line, " ") + var y = tok.nextToken.toDouble + var x = new Array[Double](D) + var i = 0 + while (i < D) { + x(i) = tok.nextToken.toDouble; i += 1 + } + DataPoint(new Vector(x), y) + } + + def main(args: Array[String]) { + if (args.length < 3) { + System.err.println("Usage: SparkTachyonHdfsLR ") + System.exit(1) + } + val inputPath = args(1) + val conf = SparkHadoopUtil.get.newConfiguration() + val sc = new SparkContext(args(0), "SparkTachyonHdfsLR", + System.getenv("SPARK_HOME"), SparkContext.jarOfClass(this.getClass), Map(), + InputFormatInfo.computePreferredLocations( + Seq(new InputFormatInfo(conf, classOf[org.apache.hadoop.mapred.TextInputFormat], inputPath)) + )) + val lines = sc.textFile(inputPath) + val points = lines.map(parsePoint _).persist(StorageLevel.OFF_HEAP) + val ITERATIONS = args(2).toInt + + // Initialize w to a random value + var w = Vector(D, _ => 2 * rand.nextDouble - 1) + println("Initial w: " + w) + + for (i <- 1 to ITERATIONS) { + println("On iteration " + i) + val gradient = points.map { p => + (1 / (1 + exp(-p.y * (w dot p.x))) - 1) * p.y * p.x + }.reduce(_ + _) + w -= gradient + } + + println("Final w: " + w) + sc.stop() + } +} diff --git a/examples/src/main/scala/org/apache/spark/examples/SparkTachyonPi.scala b/examples/src/main/scala/org/apache/spark/examples/SparkTachyonPi.scala new file mode 100644 index 0000000000000..2b207fd8d3e16 --- /dev/null +++ b/examples/src/main/scala/org/apache/spark/examples/SparkTachyonPi.scala @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.examples + +import scala.math.random + +import org.apache.spark._ +import org.apache.spark.storage.StorageLevel + +/** + * Computes an approximation to pi + * This example uses Tachyon to persist rdds during computation. + */ +object SparkTachyonPi { + def main(args: Array[String]) { + if (args.length == 0) { + System.err.println("Usage: SparkTachyonPi []") + System.exit(1) + } + val spark = new SparkContext(args(0), "SparkTachyonPi", + System.getenv("SPARK_HOME"), SparkContext.jarOfClass(this.getClass)) + + val slices = if (args.length > 1) args(1).toInt else 2 + val n = 100000 * slices + + val rdd = spark.parallelize(1 to n, slices) + rdd.persist(StorageLevel.OFF_HEAP) + val count = rdd.map { i => + val x = random * 2 - 1 + val y = random * 2 - 1 + if (x * x + y * y < 1) 1 else 0 + }.reduce(_ + _) + println("Pi is roughly " + 4.0 * count / n) + + spark.stop() + } +} diff --git a/examples/src/main/scala/org/apache/spark/examples/bagel/WikipediaPageRankStandalone.scala b/examples/src/main/scala/org/apache/spark/examples/bagel/WikipediaPageRankStandalone.scala index 27afa6b642758..dee3cb6c0abae 100644 --- a/examples/src/main/scala/org/apache/spark/examples/bagel/WikipediaPageRankStandalone.scala +++ b/examples/src/main/scala/org/apache/spark/examples/bagel/WikipediaPageRankStandalone.scala @@ -79,7 +79,7 @@ object WikipediaPageRankStandalone { val time = (System.currentTimeMillis - startTime) / 1000.0 println("Completed %d iterations in %f seconds: %f seconds per iteration" .format(numIterations, time, time / numIterations)) - System.exit(0) + sc.stop() } def parseArticle(line: String): (String, Array[String]) = { @@ -115,12 +115,16 @@ object WikipediaPageRankStandalone { var ranks = links.mapValues { edges => defaultRank } for (i <- 1 to numIterations) { val contribs = links.groupWith(ranks).flatMap { - case (id, (linksWrapper, rankWrapper)) => - if (linksWrapper.length > 0) { - if (rankWrapper.length > 0) { - linksWrapper(0).map(dest => (dest, rankWrapper(0) / linksWrapper(0).size)) + case (id, (linksWrapperIterable, rankWrapperIterable)) => + val linksWrapper = linksWrapperIterable.iterator + val rankWrapper = rankWrapperIterable.iterator + if (linksWrapper.hasNext) { + val linksWrapperHead = linksWrapper.next + if (rankWrapper.hasNext) { + val rankWrapperHead = rankWrapper.next + linksWrapperHead.map(dest => (dest, rankWrapperHead / linksWrapperHead.size)) } else { - linksWrapper(0).map(dest => (dest, defaultRank / linksWrapper(0).size)) + linksWrapperHead.map(dest => (dest, defaultRank / linksWrapperHead.size)) } } else { Array[(String, Double)]() diff --git a/examples/src/main/scala/org/apache/spark/examples/mllib/SparkSVD.scala b/examples/src/main/scala/org/apache/spark/examples/mllib/SparkSVD.scala deleted file mode 100644 index 19676fcc1a2b0..0000000000000 --- a/examples/src/main/scala/org/apache/spark/examples/mllib/SparkSVD.scala +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.examples.mllib - -import org.apache.spark.SparkContext -import org.apache.spark.mllib.linalg.SVD -import org.apache.spark.mllib.linalg.MatrixEntry -import org.apache.spark.mllib.linalg.SparseMatrix - -/** - * Compute SVD of an example matrix - * Input file should be comma separated, 1 indexed of the form - * i,j,value - * Where i is the column, j the row, and value is the matrix entry - * - * For example input file, see: - * mllib/data/als/test.data (example is 4 x 4) - */ -object SparkSVD { - def main(args: Array[String]) { - if (args.length != 4) { - System.err.println("Usage: SparkSVD m n") - System.exit(1) - } - val sc = new SparkContext(args(0), "SVD", - System.getenv("SPARK_HOME"), Seq(System.getenv("SPARK_EXAMPLES_JAR"))) - - // Load and parse the data file - val data = sc.textFile(args(1)).map { line => - val parts = line.split(',') - MatrixEntry(parts(0).toInt - 1, parts(1).toInt - 1, parts(2).toDouble) - } - val m = args(2).toInt - val n = args(3).toInt - - // recover largest singular vector - val decomposed = SVD.sparseSVD(SparseMatrix(data, m, n), 1) - val u = decomposed.U.data - val s = decomposed.S.data - val v = decomposed.V.data - - println("singular values = " + s.toArray.mkString) - } -} diff --git a/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnyPCA.scala b/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnyPCA.scala new file mode 100644 index 0000000000000..61b9655cd3759 --- /dev/null +++ b/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnyPCA.scala @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.examples.mllib + +import org.apache.spark.{SparkConf, SparkContext} +import org.apache.spark.mllib.linalg.distributed.RowMatrix +import org.apache.spark.mllib.linalg.Vectors + +/** + * Compute the principal components of a tall-and-skinny matrix, whose rows are observations. + * + * The input matrix must be stored in row-oriented dense format, one line per row with its entries + * separated by space. For example, + * {{{ + * 0.5 1.0 + * 2.0 3.0 + * 4.0 5.0 + * }}} + * represents a 3-by-2 matrix, whose first row is (0.5, 1.0). + */ +object TallSkinnyPCA { + def main(args: Array[String]) { + if (args.length != 2) { + System.err.println("Usage: TallSkinnyPCA ") + System.exit(1) + } + + val conf = new SparkConf() + .setMaster(args(0)) + .setAppName("TallSkinnyPCA") + .setSparkHome(System.getenv("SPARK_HOME")) + .setJars(SparkContext.jarOfClass(this.getClass)) + val sc = new SparkContext(conf) + + // Load and parse the data file. + val rows = sc.textFile(args(1)).map { line => + val values = line.split(' ').map(_.toDouble) + Vectors.dense(values) + } + val mat = new RowMatrix(rows) + + // Compute principal components. + val pc = mat.computePrincipalComponents(mat.numCols().toInt) + + println("Principal components are:\n" + pc) + + sc.stop() + } +} diff --git a/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnySVD.scala b/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnySVD.scala new file mode 100644 index 0000000000000..9aeebf58eabfb --- /dev/null +++ b/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnySVD.scala @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.examples.mllib + +import org.apache.spark.{SparkConf, SparkContext} +import org.apache.spark.mllib.linalg.distributed.RowMatrix +import org.apache.spark.mllib.linalg.Vectors + +/** + * Compute the singular value decomposition (SVD) of a tall-and-skinny matrix. + * + * The input matrix must be stored in row-oriented dense format, one line per row with its entries + * separated by space. For example, + * {{{ + * 0.5 1.0 + * 2.0 3.0 + * 4.0 5.0 + * }}} + * represents a 3-by-2 matrix, whose first row is (0.5, 1.0). + */ +object TallSkinnySVD { + def main(args: Array[String]) { + if (args.length != 2) { + System.err.println("Usage: TallSkinnySVD ") + System.exit(1) + } + + val conf = new SparkConf() + .setMaster(args(0)) + .setAppName("TallSkinnySVD") + .setSparkHome(System.getenv("SPARK_HOME")) + .setJars(SparkContext.jarOfClass(this.getClass)) + val sc = new SparkContext(conf) + + // Load and parse the data file. + val rows = sc.textFile(args(1)).map { line => + val values = line.split(' ').map(_.toDouble) + Vectors.dense(values) + } + val mat = new RowMatrix(rows) + + // Compute SVD. + val svd = mat.computeSVD(mat.numCols().toInt) + + println("Singular values are " + svd.s) + + sc.stop() + } +} diff --git a/examples/src/main/scala/org/apache/spark/sql/examples/HiveFromSpark.scala b/examples/src/main/scala/org/apache/spark/sql/examples/HiveFromSpark.scala new file mode 100644 index 0000000000000..62329bde84481 --- /dev/null +++ b/examples/src/main/scala/org/apache/spark/sql/examples/HiveFromSpark.scala @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.examples + +import org.apache.spark.SparkContext +import org.apache.spark.sql._ +import org.apache.spark.sql.hive.LocalHiveContext + +object HiveFromSpark { + case class Record(key: Int, value: String) + + def main(args: Array[String]) { + val sc = new SparkContext("local", "HiveFromSpark") + + // A local hive context creates an instance of the Hive Metastore in process, storing the + // the warehouse data in the current directory. This location can be overridden by + // specifying a second parameter to the constructor. + val hiveContext = new LocalHiveContext(sc) + import hiveContext._ + + hql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)") + hql("LOAD DATA LOCAL INPATH 'src/main/resources/kv1.txt' INTO TABLE src") + + // Queries are expressed in HiveQL + println("Result of 'SELECT *': ") + hql("SELECT * FROM src").collect.foreach(println) + + // Aggregation queries are also supported. + val count = hql("SELECT COUNT(*) FROM src").collect().head.getInt(0) + println(s"COUNT(*): $count") + + // The results of SQL queries are themselves RDDs and support all normal RDD functions. The + // items in the RDD are of type Row, which allows you to access each column by ordinal. + val rddFromSql = hql("SELECT key, value FROM src WHERE key < 10 ORDER BY key") + + println("Result of RDD.map:") + val rddAsStrings = rddFromSql.map { + case Row(key: Int, value: String) => s"Key: $key, Value: $value" + } + + // You can also register RDDs as temporary tables within a HiveContext. + val rdd = sc.parallelize((1 to 100).map(i => Record(i, s"val_$i"))) + rdd.registerAsTable("records") + + // Queries can then join RDD data with data stored in Hive. + println("Result of SELECT *:") + hql("SELECT * FROM records r JOIN src s ON r.key = s.key").collect().foreach(println) + } +} diff --git a/examples/src/main/scala/org/apache/spark/sql/examples/RDDRelation.scala b/examples/src/main/scala/org/apache/spark/sql/examples/RDDRelation.scala new file mode 100644 index 0000000000000..8210ad977f066 --- /dev/null +++ b/examples/src/main/scala/org/apache/spark/sql/examples/RDDRelation.scala @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.examples + +import org.apache.spark.SparkContext +import org.apache.spark.sql.SQLContext + +// One method for defining the schema of an RDD is to make a case class with the desired column +// names and types. +case class Record(key: Int, value: String) + +object RDDRelation { + def main(args: Array[String]) { + val sc = new SparkContext("local", "RDDRelation") + val sqlContext = new SQLContext(sc) + + // Importing the SQL context gives access to all the SQL functions and implicit conversions. + import sqlContext._ + + val rdd = sc.parallelize((1 to 100).map(i => Record(i, s"val_$i"))) + // Any RDD containing case classes can be registered as a table. The schema of the table is + // automatically inferred using scala reflection. + rdd.registerAsTable("records") + + // Once tables have been registered, you can run SQL queries over them. + println("Result of SELECT *:") + sql("SELECT * FROM records").collect().foreach(println) + + // Aggregation queries are also supported. + val count = sql("SELECT COUNT(*) FROM records").collect().head.getInt(0) + println(s"COUNT(*): $count") + + // The results of SQL queries are themselves RDDs and support all normal RDD functions. The + // items in the RDD are of type Row, which allows you to access each column by ordinal. + val rddFromSql = sql("SELECT key, value FROM records WHERE key < 10") + + println("Result of RDD.map:") + rddFromSql.map(row => s"Key: ${row(0)}, Value: ${row(1)}").collect.foreach(println) + + // Queries can also be written using a LINQ-like Scala DSL. + rdd.where('key === 1).orderBy('value.asc).select('key).collect().foreach(println) + + // Write out an RDD as a parquet file. + rdd.saveAsParquetFile("pair.parquet") + + // Read in parquet file. Parquet files are self-describing so the schmema is preserved. + val parquetFile = sqlContext.parquetFile("pair.parquet") + + // Queries can be run using the DSL on parequet files just like the original RDD. + parquetFile.where('key === 1).select('value as 'a).collect().foreach(println) + + // These files can also be registered as tables. + parquetFile.registerAsTable("parquetFile") + sql("SELECT * FROM parquetFile").collect().foreach(println) + } +} diff --git a/examples/src/main/scala/org/apache/spark/streaming/examples/ActorWordCount.scala b/examples/src/main/scala/org/apache/spark/streaming/examples/ActorWordCount.scala index 62d3a52615584..a22e64ca3ce45 100644 --- a/examples/src/main/scala/org/apache/spark/streaming/examples/ActorWordCount.scala +++ b/examples/src/main/scala/org/apache/spark/streaming/examples/ActorWordCount.scala @@ -168,7 +168,7 @@ object ActorWordCount { Props(new SampleActorReceiver[String]("akka.tcp://test@%s:%s/user/FeederActor".format( host, port.toInt))), "SampleReceiver") - //compute wordcount + // compute wordcount lines.flatMap(_.split("\\s+")).map(x => (x, 1)).reduceByKey(_ + _).print() ssc.start() diff --git a/examples/src/main/scala/org/apache/spark/streaming/examples/HdfsWordCount.scala b/examples/src/main/scala/org/apache/spark/streaming/examples/HdfsWordCount.scala index 954bcc9b6ef5d..1c0ce3111e290 100644 --- a/examples/src/main/scala/org/apache/spark/streaming/examples/HdfsWordCount.scala +++ b/examples/src/main/scala/org/apache/spark/streaming/examples/HdfsWordCount.scala @@ -53,4 +53,3 @@ object HdfsWordCount { ssc.awaitTermination() } } - diff --git a/examples/src/main/scala/org/apache/spark/streaming/examples/KafkaWordCount.scala b/examples/src/main/scala/org/apache/spark/streaming/examples/KafkaWordCount.scala index 6bccd1d88401a..cca0be2cbb9c9 100644 --- a/examples/src/main/scala/org/apache/spark/streaming/examples/KafkaWordCount.scala +++ b/examples/src/main/scala/org/apache/spark/streaming/examples/KafkaWordCount.scala @@ -61,7 +61,7 @@ object KafkaWordCount { val wordCounts = words.map(x => (x, 1L)) .reduceByKeyAndWindow(add _, subtract _, Minutes(10), Seconds(2), 2) wordCounts.print() - + ssc.start() ssc.awaitTermination() } @@ -83,7 +83,7 @@ object KafkaWordCountProducer { val props = new Properties() props.put("metadata.broker.list", brokers) props.put("serializer.class", "kafka.serializer.StringEncoder") - + val config = new ProducerConfig(props) val producer = new Producer[String, String](config) @@ -102,4 +102,3 @@ object KafkaWordCountProducer { } } - diff --git a/examples/src/main/scala/org/apache/spark/streaming/examples/MQTTWordCount.scala b/examples/src/main/scala/org/apache/spark/streaming/examples/MQTTWordCount.scala index 0a68ac84c2424..656222e0c1b31 100644 --- a/examples/src/main/scala/org/apache/spark/streaming/examples/MQTTWordCount.scala +++ b/examples/src/main/scala/org/apache/spark/streaming/examples/MQTTWordCount.scala @@ -26,7 +26,7 @@ import org.apache.spark.streaming.StreamingContext._ import org.apache.spark.streaming.mqtt._ /** - * A simple Mqtt publisher for demonstration purposes, repeatedly publishes + * A simple Mqtt publisher for demonstration purposes, repeatedly publishes * Space separated String Message "hello mqtt demo for spark streaming" */ object MQTTPublisher { diff --git a/examples/src/main/scala/org/apache/spark/streaming/examples/QueueStream.scala b/examples/src/main/scala/org/apache/spark/streaming/examples/QueueStream.scala index 4d4968ba6ae3e..612ecf7b7821a 100644 --- a/examples/src/main/scala/org/apache/spark/streaming/examples/QueueStream.scala +++ b/examples/src/main/scala/org/apache/spark/streaming/examples/QueueStream.scala @@ -24,7 +24,7 @@ import org.apache.spark.streaming.{Seconds, StreamingContext} import org.apache.spark.streaming.StreamingContext._ object QueueStream { - + def main(args: Array[String]) { if (args.length < 1) { System.err.println("Usage: QueueStream ") @@ -37,23 +37,22 @@ object QueueStream { val ssc = new StreamingContext(args(0), "QueueStream", Seconds(1), System.getenv("SPARK_HOME"), StreamingContext.jarOfClass(this.getClass)) - // Create the queue through which RDDs can be pushed to + // Create the queue through which RDDs can be pushed to // a QueueInputDStream val rddQueue = new SynchronizedQueue[RDD[Int]]() - + // Create the QueueInputDStream and use it do some processing val inputStream = ssc.queueStream(rddQueue) val mappedStream = inputStream.map(x => (x % 10, 1)) val reducedStream = mappedStream.reduceByKey(_ + _) - reducedStream.print() + reducedStream.print() ssc.start() - + // Create and push some RDDs into for (i <- 1 to 30) { rddQueue += ssc.sparkContext.makeRDD(1 to 1000, 10) Thread.sleep(1000) } ssc.stop() - System.exit(0) } } diff --git a/examples/src/main/scala/org/apache/spark/streaming/examples/StatefulNetworkWordCount.scala b/examples/src/main/scala/org/apache/spark/streaming/examples/StatefulNetworkWordCount.scala index c2d84a8e0861e..14f65a2f8d46c 100644 --- a/examples/src/main/scala/org/apache/spark/streaming/examples/StatefulNetworkWordCount.scala +++ b/examples/src/main/scala/org/apache/spark/streaming/examples/StatefulNetworkWordCount.scala @@ -58,7 +58,7 @@ object StatefulNetworkWordCount { ssc.checkpoint(".") // Create a NetworkInputDStream on target ip:port and count the - // words in input stream of \n delimited test (eg. generated by 'nc') + // words in input stream of \n delimited test (eg. generated by 'nc') val lines = ssc.socketTextStream(args(1), args(2).toInt) val words = lines.flatMap(_.split(" ")) val wordDstream = words.map(x => (x, 1)) diff --git a/examples/src/main/scala/org/apache/spark/streaming/examples/ZeroMQWordCount.scala b/examples/src/main/scala/org/apache/spark/streaming/examples/ZeroMQWordCount.scala index 35be7ffa1e872..445d2028582af 100644 --- a/examples/src/main/scala/org/apache/spark/streaming/examples/ZeroMQWordCount.scala +++ b/examples/src/main/scala/org/apache/spark/streaming/examples/ZeroMQWordCount.scala @@ -60,7 +60,7 @@ object SimpleZeroMQPublisher { * To work with zeroMQ, some native libraries have to be installed. * Install zeroMQ (release 2.1) core libraries. [ZeroMQ Install guide] * (http://www.zeromq.org/intro:get-the-software) - * + * * Usage: ZeroMQWordCount * In local mode, should be 'local[n]' with n > 1 * and describe where zeroMq publisher is running. @@ -88,7 +88,7 @@ object ZeroMQWordCount { def bytesToStringIterator(x: Seq[ByteString]) = (x.map(_.utf8String)).iterator - //For this stream, a zeroMQ publisher should be running. + // For this stream, a zeroMQ publisher should be running. val lines = ZeroMQUtils.createStream(ssc, url, Subscribe(topic), bytesToStringIterator _) val words = lines.flatMap(_.split(" ")) val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _) diff --git a/examples/src/main/scala/org/apache/spark/streaming/examples/clickstream/PageViewGenerator.scala b/examples/src/main/scala/org/apache/spark/streaming/examples/clickstream/PageViewGenerator.scala index 0ac46c31c24c8..251f65fe4df9c 100644 --- a/examples/src/main/scala/org/apache/spark/streaming/examples/clickstream/PageViewGenerator.scala +++ b/examples/src/main/scala/org/apache/spark/streaming/examples/clickstream/PageViewGenerator.scala @@ -21,7 +21,7 @@ import java.net.ServerSocket import java.io.PrintWriter import util.Random -/** Represents a page view on a website with associated dimension data.*/ +/** Represents a page view on a website with associated dimension data. */ class PageView(val url : String, val status : Int, val zipCode : Int, val userID : Int) extends Serializable { override def toString() : String = { diff --git a/external/flume/src/main/scala/org/apache/spark/streaming/flume/FlumeInputDStream.scala b/external/flume/src/main/scala/org/apache/spark/streaming/flume/FlumeInputDStream.scala index ce3ef47cfe4bc..34012b846e21e 100644 --- a/external/flume/src/main/scala/org/apache/spark/streaming/flume/FlumeInputDStream.scala +++ b/external/flume/src/main/scala/org/apache/spark/streaming/flume/FlumeInputDStream.scala @@ -127,7 +127,7 @@ class FlumeEventServer(receiver : FlumeReceiver) extends AvroSourceProtocol { } /** A NetworkReceiver which listens for events using the - * Flume Avro interface.*/ + * Flume Avro interface. */ private[streaming] class FlumeReceiver( host: String, diff --git a/external/mqtt/pom.xml b/external/mqtt/pom.xml index 06c751df7f9c8..3710a63541d78 100644 --- a/external/mqtt/pom.xml +++ b/external/mqtt/pom.xml @@ -45,20 +45,6 @@ - - - mqtt-repo - MQTT Repository - https://repo.eclipse.org/content/repositories/paho-releases - - true - - - false - - - - org.apache.spark diff --git a/external/zeromq/src/main/scala/org/apache/spark/streaming/zeromq/ZeroMQReceiver.scala b/external/zeromq/src/main/scala/org/apache/spark/streaming/zeromq/ZeroMQReceiver.scala index 6acba25f44c0a..a538c38dc4d6f 100644 --- a/external/zeromq/src/main/scala/org/apache/spark/streaming/zeromq/ZeroMQReceiver.scala +++ b/external/zeromq/src/main/scala/org/apache/spark/streaming/zeromq/ZeroMQReceiver.scala @@ -44,7 +44,7 @@ private[streaming] class ZeroMQReceiver[T: ClassTag](publisherUrl: String, case m: ZMQMessage => logDebug("Received message for:" + m.frame(0)) - //We ignore first frame for processing as it is the topic + // We ignore first frame for processing as it is the topic val bytes = m.frames.tail pushBlock(bytesToObjects(bytes)) diff --git a/extras/java8-tests/src/test/java/org/apache/spark/Java8APISuite.java b/extras/java8-tests/src/test/java/org/apache/spark/Java8APISuite.java index f67251217ed4a..7eb8b45fc3cf0 100644 --- a/extras/java8-tests/src/test/java/org/apache/spark/Java8APISuite.java +++ b/extras/java8-tests/src/test/java/org/apache/spark/Java8APISuite.java @@ -23,6 +23,7 @@ import scala.Tuple2; +import com.google.common.collections.Iterables; import com.google.common.base.Optional; import com.google.common.io.Files; import org.apache.hadoop.io.IntWritable; @@ -85,15 +86,15 @@ public void foreach() { public void groupBy() { JavaRDD rdd = sc.parallelize(Arrays.asList(1, 1, 2, 3, 5, 8, 13)); Function isOdd = x -> x % 2 == 0; - JavaPairRDD> oddsAndEvens = rdd.groupBy(isOdd); + JavaPairRDD> oddsAndEvens = rdd.groupBy(isOdd); Assert.assertEquals(2, oddsAndEvens.count()); - Assert.assertEquals(2, oddsAndEvens.lookup(true).get(0).size()); // Evens - Assert.assertEquals(5, oddsAndEvens.lookup(false).get(0).size()); // Odds + Assert.assertEquals(2, Iterables.size(oddsAndEvens.lookup(true).get(0))); // Evens + Assert.assertEquals(5, Iterables.size(oddsAndEvens.lookup(false).get(0))); // Odds oddsAndEvens = rdd.groupBy(isOdd, 1); Assert.assertEquals(2, oddsAndEvens.count()); - Assert.assertEquals(2, oddsAndEvens.lookup(true).get(0).size()); // Evens - Assert.assertEquals(5, oddsAndEvens.lookup(false).get(0).size()); // Odds + Assert.assertEquals(2, Iterables.size(oddsAndEvens.lookup(true).get(0))); // Evens + Assert.assertEquals(5, Iterables.size(oddsAndEvens.lookup(false).get(0))); // Odds } @Test diff --git a/extras/spark-ganglia-lgpl/pom.xml b/extras/spark-ganglia-lgpl/pom.xml new file mode 100644 index 0000000000000..11ac827ed54a0 --- /dev/null +++ b/extras/spark-ganglia-lgpl/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.spark + spark-parent + 1.0.0-SNAPSHOT + ../../pom.xml + + + + org.apache.spark + spark-ganglia-lgpl_2.10 + jar + Spark Ganglia Integration + + + + org.apache.spark + spark-core_${scala.binary.version} + ${project.version} + + + + com.codahale.metrics + metrics-ganglia + + + diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/GangliaSink.scala b/extras/spark-ganglia-lgpl/src/main/scala/org/apache/spark/metrics/sink/GangliaSink.scala similarity index 85% rename from core/src/main/scala/org/apache/spark/metrics/sink/GangliaSink.scala rename to extras/spark-ganglia-lgpl/src/main/scala/org/apache/spark/metrics/sink/GangliaSink.scala index cd37317da77de..d03d7774e8c80 100644 --- a/core/src/main/scala/org/apache/spark/metrics/sink/GangliaSink.scala +++ b/extras/spark-ganglia-lgpl/src/main/scala/org/apache/spark/metrics/sink/GangliaSink.scala @@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit import com.codahale.metrics.MetricRegistry import com.codahale.metrics.ganglia.GangliaReporter import info.ganglia.gmetric4j.gmetric.GMetric +import info.ganglia.gmetric4j.gmetric.GMetric.UDPAddressingMode import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem @@ -33,10 +34,10 @@ class GangliaSink(val property: Properties, val registry: MetricRegistry, val GANGLIA_DEFAULT_PERIOD = 10 val GANGLIA_KEY_UNIT = "unit" - val GANGLIA_DEFAULT_UNIT = TimeUnit.SECONDS + val GANGLIA_DEFAULT_UNIT: TimeUnit = TimeUnit.SECONDS val GANGLIA_KEY_MODE = "mode" - val GANGLIA_DEFAULT_MODE = GMetric.UDPAddressingMode.MULTICAST + val GANGLIA_DEFAULT_MODE: UDPAddressingMode = GMetric.UDPAddressingMode.MULTICAST // TTL for multicast messages. If listeners are X hops away in network, must be at least X. val GANGLIA_KEY_TTL = "ttl" @@ -45,7 +46,7 @@ class GangliaSink(val property: Properties, val registry: MetricRegistry, val GANGLIA_KEY_HOST = "host" val GANGLIA_KEY_PORT = "port" - def propertyToOption(prop: String) = Option(property.getProperty(prop)) + def propertyToOption(prop: String): Option[String] = Option(property.getProperty(prop)) if (!propertyToOption(GANGLIA_KEY_HOST).isDefined) { throw new Exception("Ganglia sink requires 'host' property.") @@ -58,11 +59,12 @@ class GangliaSink(val property: Properties, val registry: MetricRegistry, val host = propertyToOption(GANGLIA_KEY_HOST).get val port = propertyToOption(GANGLIA_KEY_PORT).get.toInt val ttl = propertyToOption(GANGLIA_KEY_TTL).map(_.toInt).getOrElse(GANGLIA_DEFAULT_TTL) - val mode = propertyToOption(GANGLIA_KEY_MODE) + val mode: UDPAddressingMode = propertyToOption(GANGLIA_KEY_MODE) .map(u => GMetric.UDPAddressingMode.valueOf(u.toUpperCase)).getOrElse(GANGLIA_DEFAULT_MODE) val pollPeriod = propertyToOption(GANGLIA_KEY_PERIOD).map(_.toInt) .getOrElse(GANGLIA_DEFAULT_PERIOD) - val pollUnit = propertyToOption(GANGLIA_KEY_UNIT).map(u => TimeUnit.valueOf(u.toUpperCase)) + val pollUnit: TimeUnit = propertyToOption(GANGLIA_KEY_UNIT) + .map(u => TimeUnit.valueOf(u.toUpperCase)) .getOrElse(GANGLIA_DEFAULT_UNIT) MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) diff --git a/graphx/pom.xml b/graphx/pom.xml index 894a7c2641e39..b4c67ddcd8ca9 100644 --- a/graphx/pom.xml +++ b/graphx/pom.xml @@ -29,7 +29,7 @@ spark-graphx_2.10 jar Spark Project GraphX - http://spark-project.org/ + http://spark.apache.org/ @@ -54,7 +54,7 @@ org.jblas jblas - 1.2.3 + ${jblas.version} org.eclipse.jetty diff --git a/graphx/src/main/scala/org/apache/spark/graphx/EdgeRDD.scala b/graphx/src/main/scala/org/apache/spark/graphx/EdgeRDD.scala index f2296a865e1b3..6d04bf790e3a5 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/EdgeRDD.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/EdgeRDD.scala @@ -45,7 +45,8 @@ class EdgeRDD[@specialized ED: ClassTag]( partitionsRDD.partitioner.orElse(Some(Partitioner.defaultPartitioner(partitionsRDD))) override def compute(part: Partition, context: TaskContext): Iterator[Edge[ED]] = { - firstParent[(PartitionID, EdgePartition[ED])].iterator(part, context).next._2.iterator + val p = firstParent[(PartitionID, EdgePartition[ED])].iterator(part, context) + p.next._2.iterator.map(_.copy()) } override def collect(): Array[Edge[ED]] = this.map(_.copy()).collect() diff --git a/graphx/src/main/scala/org/apache/spark/graphx/EdgeTriplet.scala b/graphx/src/main/scala/org/apache/spark/graphx/EdgeTriplet.scala index fea43c3b2bbf1..dfc6a801587d2 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/EdgeTriplet.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/EdgeTriplet.scala @@ -27,12 +27,12 @@ class EdgeTriplet[VD, ED] extends Edge[ED] { /** * The source vertex attribute */ - var srcAttr: VD = _ //nullValue[VD] + var srcAttr: VD = _ // nullValue[VD] /** * The destination vertex attribute */ - var dstAttr: VD = _ //nullValue[VD] + var dstAttr: VD = _ // nullValue[VD] /** * Set the edge properties of this triplet. diff --git a/graphx/src/main/scala/org/apache/spark/graphx/Graph.scala b/graphx/src/main/scala/org/apache/spark/graphx/Graph.scala index 65a1a8c68f6d2..ef05623d7a0a1 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/Graph.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/Graph.scala @@ -419,5 +419,6 @@ object Graph { * All the convenience operations are defined in the [[GraphOps]] class which may be * shared across multiple graph implementations. */ - implicit def graphToGraphOps[VD: ClassTag, ED: ClassTag](g: Graph[VD, ED]) = g.ops + implicit def graphToGraphOps[VD: ClassTag, ED: ClassTag] + (g: Graph[VD, ED]): GraphOps[VD, ED] = g.ops } // end of Graph object diff --git a/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgePartition.scala b/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgePartition.scala index 57fa5eefd5e09..2e05f5d4e4969 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgePartition.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgePartition.scala @@ -56,6 +56,9 @@ class EdgePartition[@specialized(Char, Int, Boolean, Byte, Long, Float, Double) * Construct a new edge partition by applying the function f to all * edges in this partition. * + * Be careful not to keep references to the objects passed to `f`. + * To improve GC performance the same object is re-used for each call. + * * @param f a function from an edge to a new attribute * @tparam ED2 the type of the new attribute * @return a new edge partition with the result of the function `f` @@ -84,12 +87,12 @@ class EdgePartition[@specialized(Char, Int, Boolean, Byte, Long, Float, Double) * order of the edges returned by `EdgePartition.iterator` and * should return attributes equal to the number of edges. * - * @param f a function from an edge to a new attribute + * @param iter an iterator for the new attribute values * @tparam ED2 the type of the new attribute - * @return a new edge partition with the result of the function `f` - * applied to each edge + * @return a new edge partition with the attribute values replaced */ def map[ED2: ClassTag](iter: Iterator[ED2]): EdgePartition[ED2] = { + // Faster than iter.toArray, because the expected size is known. val newData = new Array[ED2](data.size) var i = 0 while (iter.hasNext) { @@ -188,6 +191,9 @@ class EdgePartition[@specialized(Char, Int, Boolean, Byte, Long, Float, Double) /** * Get an iterator over the edges in this partition. * + * Be careful not to keep references to the objects from this iterator. + * To improve GC performance the same object is re-used in `next()`. + * * @return an iterator over edges in the partition */ def iterator = new Iterator[Edge[ED]] { @@ -216,6 +222,9 @@ class EdgePartition[@specialized(Char, Int, Boolean, Byte, Long, Float, Double) /** * Get an iterator over the cluster of edges in this partition with source vertex id `srcId`. The * cluster must start at position `index`. + * + * Be careful not to keep references to the objects from this iterator. To improve GC performance + * the same object is re-used in `next()`. */ private def clusterIterator(srcId: VertexId, index: Int) = new Iterator[Edge[ED]] { private[this] val edge = new Edge[ED] diff --git a/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgeTripletIterator.scala b/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgeTripletIterator.scala index 886c250d7cffd..220a89d73d711 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgeTripletIterator.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgeTripletIterator.scala @@ -37,20 +37,15 @@ class EdgeTripletIterator[VD: ClassTag, ED: ClassTag]( // Current position in the array. private var pos = 0 - // A triplet object that this iterator.next() call returns. We reuse this object to avoid - // allocating too many temporary Java objects. - private val triplet = new EdgeTriplet[VD, ED] - private val vmap = new PrimitiveKeyOpenHashMap[VertexId, VD](vidToIndex, vertexArray) override def hasNext: Boolean = pos < edgePartition.size override def next() = { + val triplet = new EdgeTriplet[VD, ED] triplet.srcId = edgePartition.srcIds(pos) - // assert(vmap.containsKey(e.src.id)) triplet.srcAttr = vmap(triplet.srcId) triplet.dstId = edgePartition.dstIds(pos) - // assert(vmap.containsKey(e.dst.id)) triplet.dstAttr = vmap(triplet.dstId) triplet.attr = edgePartition.data(pos) pos += 1 diff --git a/graphx/src/main/scala/org/apache/spark/graphx/impl/GraphImpl.scala b/graphx/src/main/scala/org/apache/spark/graphx/impl/GraphImpl.scala index 1d029bf009e8c..c2b510a31ee3f 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/impl/GraphImpl.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/impl/GraphImpl.scala @@ -190,14 +190,14 @@ class GraphImpl[VD: ClassTag, ED: ClassTag] protected ( new GraphImpl(vertices, newETable, routingTable, replicatedVertexView) } - ////////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// // Lower level transformation methods - ////////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// override def mapReduceTriplets[A: ClassTag]( mapFunc: EdgeTriplet[VD, ED] => Iterator[(VertexId, A)], reduceFunc: (A, A) => A, - activeSetOpt: Option[(VertexRDD[_], EdgeDirection)] = None) = { + activeSetOpt: Option[(VertexRDD[_], EdgeDirection)] = None): VertexRDD[A] = { ClosureCleaner.clean(mapFunc) ClosureCleaner.clean(reduceFunc) @@ -391,6 +391,6 @@ object GraphImpl { // TODO: Consider doing map side distinct before shuffle. new ShuffledRDD[VertexId, Int, (VertexId, Int)]( edges.collectVertexIds.map(vid => (vid, 0)), partitioner) - .setSerializer(classOf[VertexIdMsgSerializer].getName) + .setSerializer(new VertexIdMsgSerializer) } } // end of object GraphImpl diff --git a/graphx/src/main/scala/org/apache/spark/graphx/impl/MessageToPartition.scala b/graphx/src/main/scala/org/apache/spark/graphx/impl/MessageToPartition.scala index e9ee09c3614c1..9d4f3750cb8e4 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/impl/MessageToPartition.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/impl/MessageToPartition.scala @@ -45,7 +45,7 @@ class VertexBroadcastMsg[@specialized(Int, Long, Double, Boolean) T]( * @param data value to send */ private[graphx] -class MessageToPartition[@specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) T]( +class MessageToPartition[@specialized(Int, Long, Double, Char, Boolean/* , AnyRef */) T]( @transient var partition: PartitionID, var data: T) extends Product2[PartitionID, T] with Serializable { @@ -65,11 +65,11 @@ class VertexBroadcastMsgRDDFunctions[T: ClassTag](self: RDD[VertexBroadcastMsg[T // Set a custom serializer if the data is of int or double type. if (classTag[T] == ClassTag.Int) { - rdd.setSerializer(classOf[IntVertexBroadcastMsgSerializer].getName) + rdd.setSerializer(new IntVertexBroadcastMsgSerializer) } else if (classTag[T] == ClassTag.Long) { - rdd.setSerializer(classOf[LongVertexBroadcastMsgSerializer].getName) + rdd.setSerializer(new LongVertexBroadcastMsgSerializer) } else if (classTag[T] == ClassTag.Double) { - rdd.setSerializer(classOf[DoubleVertexBroadcastMsgSerializer].getName) + rdd.setSerializer(new DoubleVertexBroadcastMsgSerializer) } rdd } @@ -104,11 +104,11 @@ object MsgRDDFunctions { // Set a custom serializer if the data is of int or double type. if (classTag[T] == ClassTag.Int) { - rdd.setSerializer(classOf[IntAggMsgSerializer].getName) + rdd.setSerializer(new IntAggMsgSerializer) } else if (classTag[T] == ClassTag.Long) { - rdd.setSerializer(classOf[LongAggMsgSerializer].getName) + rdd.setSerializer(new LongAggMsgSerializer) } else if (classTag[T] == ClassTag.Double) { - rdd.setSerializer(classOf[DoubleAggMsgSerializer].getName) + rdd.setSerializer(new DoubleAggMsgSerializer) } rdd } diff --git a/graphx/src/main/scala/org/apache/spark/graphx/impl/Serializers.scala b/graphx/src/main/scala/org/apache/spark/graphx/impl/Serializers.scala index c74d487e206db..2f2c524df6394 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/impl/Serializers.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/impl/Serializers.scala @@ -25,7 +25,7 @@ import org.apache.spark.graphx._ import org.apache.spark.serializer._ private[graphx] -class VertexIdMsgSerializer(conf: SparkConf) extends Serializer { +class VertexIdMsgSerializer extends Serializer with Serializable { override def newInstance(): SerializerInstance = new ShuffleSerializerInstance { override def serializeStream(s: OutputStream) = new ShuffleSerializationStream(s) { @@ -46,7 +46,7 @@ class VertexIdMsgSerializer(conf: SparkConf) extends Serializer { /** A special shuffle serializer for VertexBroadcastMessage[Int]. */ private[graphx] -class IntVertexBroadcastMsgSerializer(conf: SparkConf) extends Serializer { +class IntVertexBroadcastMsgSerializer extends Serializer with Serializable { override def newInstance(): SerializerInstance = new ShuffleSerializerInstance { override def serializeStream(s: OutputStream) = new ShuffleSerializationStream(s) { @@ -70,7 +70,7 @@ class IntVertexBroadcastMsgSerializer(conf: SparkConf) extends Serializer { /** A special shuffle serializer for VertexBroadcastMessage[Long]. */ private[graphx] -class LongVertexBroadcastMsgSerializer(conf: SparkConf) extends Serializer { +class LongVertexBroadcastMsgSerializer extends Serializer with Serializable { override def newInstance(): SerializerInstance = new ShuffleSerializerInstance { override def serializeStream(s: OutputStream) = new ShuffleSerializationStream(s) { @@ -94,7 +94,7 @@ class LongVertexBroadcastMsgSerializer(conf: SparkConf) extends Serializer { /** A special shuffle serializer for VertexBroadcastMessage[Double]. */ private[graphx] -class DoubleVertexBroadcastMsgSerializer(conf: SparkConf) extends Serializer { +class DoubleVertexBroadcastMsgSerializer extends Serializer with Serializable { override def newInstance(): SerializerInstance = new ShuffleSerializerInstance { override def serializeStream(s: OutputStream) = new ShuffleSerializationStream(s) { @@ -118,7 +118,7 @@ class DoubleVertexBroadcastMsgSerializer(conf: SparkConf) extends Serializer { /** A special shuffle serializer for AggregationMessage[Int]. */ private[graphx] -class IntAggMsgSerializer(conf: SparkConf) extends Serializer { +class IntAggMsgSerializer extends Serializer with Serializable { override def newInstance(): SerializerInstance = new ShuffleSerializerInstance { override def serializeStream(s: OutputStream) = new ShuffleSerializationStream(s) { @@ -142,7 +142,7 @@ class IntAggMsgSerializer(conf: SparkConf) extends Serializer { /** A special shuffle serializer for AggregationMessage[Long]. */ private[graphx] -class LongAggMsgSerializer(conf: SparkConf) extends Serializer { +class LongAggMsgSerializer extends Serializer with Serializable { override def newInstance(): SerializerInstance = new ShuffleSerializerInstance { override def serializeStream(s: OutputStream) = new ShuffleSerializationStream(s) { @@ -166,7 +166,7 @@ class LongAggMsgSerializer(conf: SparkConf) extends Serializer { /** A special shuffle serializer for AggregationMessage[Double]. */ private[graphx] -class DoubleAggMsgSerializer(conf: SparkConf) extends Serializer { +class DoubleAggMsgSerializer extends Serializer with Serializable { override def newInstance(): SerializerInstance = new ShuffleSerializerInstance { override def serializeStream(s: OutputStream) = new ShuffleSerializationStream(s) { @@ -298,7 +298,6 @@ abstract class ShuffleSerializationStream(s: OutputStream) extends Serialization s.write(v.toInt) } - //def writeDouble(v: Double): Unit = writeUnsignedVarLong(java.lang.Double.doubleToLongBits(v)) def writeDouble(v: Double): Unit = writeLong(java.lang.Double.doubleToLongBits(v)) override def flush(): Unit = s.flush() @@ -391,7 +390,6 @@ abstract class ShuffleDeserializationStream(s: InputStream) extends Deserializat (s.read() & 0xFF) } - //def readDouble(): Double = java.lang.Double.longBitsToDouble(readUnsignedVarLong()) def readDouble(): Double = java.lang.Double.longBitsToDouble(readLong()) override def close(): Unit = s.close() diff --git a/graphx/src/main/scala/org/apache/spark/graphx/lib/Analytics.scala b/graphx/src/main/scala/org/apache/spark/graphx/lib/Analytics.scala index 24699dfdd38b0..fa533a512d53b 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/lib/Analytics.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/lib/Analytics.scala @@ -26,7 +26,7 @@ import org.apache.spark.graphx.PartitionStrategy._ */ object Analytics extends Logging { - def main(args: Array[String]) = { + def main(args: Array[String]): Unit = { val host = args(0) val taskType = args(1) val fname = args(2) diff --git a/graphx/src/main/scala/org/apache/spark/graphx/package.scala b/graphx/src/main/scala/org/apache/spark/graphx/package.scala index 425a5164cad24..ff17edeaf8f16 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/package.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/package.scala @@ -19,7 +19,10 @@ package org.apache.spark import org.apache.spark.util.collection.OpenHashSet -/** GraphX is a graph processing framework built on top of Spark. */ +/** + * ALPHA COMPONENT + * GraphX is a graph processing framework built on top of Spark. + */ package object graphx { /** * A 64-bit vertex identifier that uniquely identifies a vertex within a graph. It does not need diff --git a/graphx/src/main/scala/org/apache/spark/graphx/util/BytecodeUtils.scala b/graphx/src/main/scala/org/apache/spark/graphx/util/BytecodeUtils.scala index 014a7335f85cc..087b1156f690b 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/util/BytecodeUtils.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/util/BytecodeUtils.scala @@ -65,7 +65,7 @@ private[graphx] object BytecodeUtils { val finder = new MethodInvocationFinder(c.getName, m) getClassReader(c).accept(finder, 0) for (classMethod <- finder.methodsInvoked) { - //println(classMethod) + // println(classMethod) if (classMethod._1 == targetClass && classMethod._2 == targetMethod) { return true } else if (!seen.contains(classMethod)) { diff --git a/graphx/src/main/scala/org/apache/spark/graphx/util/GraphGenerators.scala b/graphx/src/main/scala/org/apache/spark/graphx/util/GraphGenerators.scala index f841846c0e510..a3c8de3f9068f 100644 --- a/graphx/src/main/scala/org/apache/spark/graphx/util/GraphGenerators.scala +++ b/graphx/src/main/scala/org/apache/spark/graphx/util/GraphGenerators.scala @@ -123,7 +123,7 @@ object GraphGenerators { * the dimensions of the adjacency matrix */ private def addEdge(numVertices: Int): Edge[Int] = { - //val (src, dst) = chooseCell(numVertices/2.0, numVertices/2.0, numVertices/2.0) + // val (src, dst) = chooseCell(numVertices/2.0, numVertices/2.0, numVertices/2.0) val v = math.round(numVertices.toFloat/2.0).toInt val (src, dst) = chooseCell(v, v, v) diff --git a/graphx/src/test/scala/org/apache/spark/graphx/SerializerSuite.scala b/graphx/src/test/scala/org/apache/spark/graphx/SerializerSuite.scala index e5a582b47ba05..73438d9535962 100644 --- a/graphx/src/test/scala/org/apache/spark/graphx/SerializerSuite.scala +++ b/graphx/src/test/scala/org/apache/spark/graphx/SerializerSuite.scala @@ -32,15 +32,14 @@ import org.apache.spark.serializer.SerializationStream class SerializerSuite extends FunSuite with LocalSparkContext { test("IntVertexBroadcastMsgSerializer") { - val conf = new SparkConf(false) val outMsg = new VertexBroadcastMsg[Int](3, 4, 5) val bout = new ByteArrayOutputStream - val outStrm = new IntVertexBroadcastMsgSerializer(conf).newInstance().serializeStream(bout) + val outStrm = new IntVertexBroadcastMsgSerializer().newInstance().serializeStream(bout) outStrm.writeObject(outMsg) outStrm.writeObject(outMsg) bout.flush() val bin = new ByteArrayInputStream(bout.toByteArray) - val inStrm = new IntVertexBroadcastMsgSerializer(conf).newInstance().deserializeStream(bin) + val inStrm = new IntVertexBroadcastMsgSerializer().newInstance().deserializeStream(bin) val inMsg1: VertexBroadcastMsg[Int] = inStrm.readObject() val inMsg2: VertexBroadcastMsg[Int] = inStrm.readObject() assert(outMsg.vid === inMsg1.vid) @@ -54,15 +53,14 @@ class SerializerSuite extends FunSuite with LocalSparkContext { } test("LongVertexBroadcastMsgSerializer") { - val conf = new SparkConf(false) val outMsg = new VertexBroadcastMsg[Long](3, 4, 5) val bout = new ByteArrayOutputStream - val outStrm = new LongVertexBroadcastMsgSerializer(conf).newInstance().serializeStream(bout) + val outStrm = new LongVertexBroadcastMsgSerializer().newInstance().serializeStream(bout) outStrm.writeObject(outMsg) outStrm.writeObject(outMsg) bout.flush() val bin = new ByteArrayInputStream(bout.toByteArray) - val inStrm = new LongVertexBroadcastMsgSerializer(conf).newInstance().deserializeStream(bin) + val inStrm = new LongVertexBroadcastMsgSerializer().newInstance().deserializeStream(bin) val inMsg1: VertexBroadcastMsg[Long] = inStrm.readObject() val inMsg2: VertexBroadcastMsg[Long] = inStrm.readObject() assert(outMsg.vid === inMsg1.vid) @@ -76,15 +74,14 @@ class SerializerSuite extends FunSuite with LocalSparkContext { } test("DoubleVertexBroadcastMsgSerializer") { - val conf = new SparkConf(false) val outMsg = new VertexBroadcastMsg[Double](3, 4, 5.0) val bout = new ByteArrayOutputStream - val outStrm = new DoubleVertexBroadcastMsgSerializer(conf).newInstance().serializeStream(bout) + val outStrm = new DoubleVertexBroadcastMsgSerializer().newInstance().serializeStream(bout) outStrm.writeObject(outMsg) outStrm.writeObject(outMsg) bout.flush() val bin = new ByteArrayInputStream(bout.toByteArray) - val inStrm = new DoubleVertexBroadcastMsgSerializer(conf).newInstance().deserializeStream(bin) + val inStrm = new DoubleVertexBroadcastMsgSerializer().newInstance().deserializeStream(bin) val inMsg1: VertexBroadcastMsg[Double] = inStrm.readObject() val inMsg2: VertexBroadcastMsg[Double] = inStrm.readObject() assert(outMsg.vid === inMsg1.vid) @@ -98,15 +95,14 @@ class SerializerSuite extends FunSuite with LocalSparkContext { } test("IntAggMsgSerializer") { - val conf = new SparkConf(false) val outMsg = (4: VertexId, 5) val bout = new ByteArrayOutputStream - val outStrm = new IntAggMsgSerializer(conf).newInstance().serializeStream(bout) + val outStrm = new IntAggMsgSerializer().newInstance().serializeStream(bout) outStrm.writeObject(outMsg) outStrm.writeObject(outMsg) bout.flush() val bin = new ByteArrayInputStream(bout.toByteArray) - val inStrm = new IntAggMsgSerializer(conf).newInstance().deserializeStream(bin) + val inStrm = new IntAggMsgSerializer().newInstance().deserializeStream(bin) val inMsg1: (VertexId, Int) = inStrm.readObject() val inMsg2: (VertexId, Int) = inStrm.readObject() assert(outMsg === inMsg1) @@ -118,15 +114,14 @@ class SerializerSuite extends FunSuite with LocalSparkContext { } test("LongAggMsgSerializer") { - val conf = new SparkConf(false) val outMsg = (4: VertexId, 1L << 32) val bout = new ByteArrayOutputStream - val outStrm = new LongAggMsgSerializer(conf).newInstance().serializeStream(bout) + val outStrm = new LongAggMsgSerializer().newInstance().serializeStream(bout) outStrm.writeObject(outMsg) outStrm.writeObject(outMsg) bout.flush() val bin = new ByteArrayInputStream(bout.toByteArray) - val inStrm = new LongAggMsgSerializer(conf).newInstance().deserializeStream(bin) + val inStrm = new LongAggMsgSerializer().newInstance().deserializeStream(bin) val inMsg1: (VertexId, Long) = inStrm.readObject() val inMsg2: (VertexId, Long) = inStrm.readObject() assert(outMsg === inMsg1) @@ -138,15 +133,14 @@ class SerializerSuite extends FunSuite with LocalSparkContext { } test("DoubleAggMsgSerializer") { - val conf = new SparkConf(false) val outMsg = (4: VertexId, 5.0) val bout = new ByteArrayOutputStream - val outStrm = new DoubleAggMsgSerializer(conf).newInstance().serializeStream(bout) + val outStrm = new DoubleAggMsgSerializer().newInstance().serializeStream(bout) outStrm.writeObject(outMsg) outStrm.writeObject(outMsg) bout.flush() val bin = new ByteArrayInputStream(bout.toByteArray) - val inStrm = new DoubleAggMsgSerializer(conf).newInstance().deserializeStream(bin) + val inStrm = new DoubleAggMsgSerializer().newInstance().deserializeStream(bin) val inMsg1: (VertexId, Double) = inStrm.readObject() val inMsg2: (VertexId, Double) = inStrm.readObject() assert(outMsg === inMsg1) diff --git a/graphx/src/test/scala/org/apache/spark/graphx/impl/EdgeTripletIteratorSuite.scala b/graphx/src/test/scala/org/apache/spark/graphx/impl/EdgeTripletIteratorSuite.scala new file mode 100644 index 0000000000000..9cbb2d2acdc2d --- /dev/null +++ b/graphx/src/test/scala/org/apache/spark/graphx/impl/EdgeTripletIteratorSuite.scala @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.graphx.impl + +import scala.reflect.ClassTag +import scala.util.Random + +import org.scalatest.FunSuite + +import org.apache.spark.graphx._ + +class EdgeTripletIteratorSuite extends FunSuite { + test("iterator.toList") { + val builder = new EdgePartitionBuilder[Int] + builder.add(1, 2, 0) + builder.add(1, 3, 0) + builder.add(1, 4, 0) + val vidmap = new VertexIdToIndexMap + vidmap.add(1) + vidmap.add(2) + vidmap.add(3) + vidmap.add(4) + val vs = Array.fill(vidmap.capacity)(0) + val iter = new EdgeTripletIterator[Int, Int](vidmap, vs, builder.toEdgePartition) + val result = iter.toList.map(et => (et.srcId, et.dstId)) + assert(result === Seq((1, 2), (1, 3), (1, 4))) + } +} diff --git a/make-distribution.sh b/make-distribution.sh index e6b5956d1e7e2..5c780fcbda863 100755 --- a/make-distribution.sh +++ b/make-distribution.sh @@ -58,6 +58,7 @@ echo "Version is ${VERSION}" # Initialize defaults SPARK_HADOOP_VERSION=1.0.4 SPARK_YARN=false +SPARK_TACHYON=false MAKE_TGZ=false # Parse arguments @@ -70,6 +71,9 @@ while (( "$#" )); do --with-yarn) SPARK_YARN=true ;; + --with-tachyon) + SPARK_TACHYON=true + ;; --tgz) MAKE_TGZ=true ;; @@ -90,6 +94,12 @@ else echo "YARN disabled" fi +if [ "$SPARK_TACHYON" == "true" ]; then + echo "Tachyon Enabled" +else + echo "Tachyon Disabled" +fi + # Build fat JAR export SPARK_HADOOP_VERSION export SPARK_YARN @@ -113,6 +123,34 @@ cp -r "$FWDIR/python" "$DISTDIR" cp -r "$FWDIR/sbin" "$DISTDIR" +# Download and copy in tachyon, if requested +if [ "$SPARK_TACHYON" == "true" ]; then + TACHYON_VERSION="0.4.1" + TACHYON_URL="https://github.com/amplab/tachyon/releases/download/v${TACHYON_VERSION}/tachyon-${TACHYON_VERSION}-bin.tar.gz" + + TMPD=`mktemp -d 2>/dev/null || mktemp -d -t 'disttmp'` + + pushd $TMPD > /dev/null + echo "Fetchting tachyon tgz" + wget "$TACHYON_URL" + + tar xf "tachyon-${TACHYON_VERSION}-bin.tar.gz" + cp "tachyon-${TACHYON_VERSION}/target/tachyon-${TACHYON_VERSION}-jar-with-dependencies.jar" "$DISTDIR/jars" + mkdir -p "$DISTDIR/tachyon/src/main/java/tachyon/web" + cp -r "tachyon-${TACHYON_VERSION}"/{bin,conf,libexec} "$DISTDIR/tachyon" + cp -r "tachyon-${TACHYON_VERSION}"/src/main/java/tachyon/web/resources "$DISTDIR/tachyon/src/main/java/tachyon/web" + + if [[ `uname -a` == Darwin* ]]; then + # need to run sed differently on osx + nl=$'\n'; sed -i "" -e "s|export TACHYON_JAR=\$TACHYON_HOME/target/\(.*\)|# This is set for spark's make-distribution\\$nl export TACHYON_JAR=\$TACHYON_HOME/../jars/\1|" "$DISTDIR/tachyon/libexec/tachyon-config.sh" + else + sed -i "s|export TACHYON_JAR=\$TACHYON_HOME/target/\(.*\)|# This is set for spark's make-distribution\n export TACHYON_JAR=\$TACHYON_HOME/../jars/\1|" "$DISTDIR/tachyon/libexec/tachyon-config.sh" + fi + + popd > /dev/null + rm -rf $TMPD +fi + if [ "$MAKE_TGZ" == "true" ]; then TARDIR="$FWDIR/spark-$VERSION" cp -r "$DISTDIR" "$TARDIR" diff --git a/mllib/pom.xml b/mllib/pom.xml index 9b65cb4b4ce3f..e7ce00efc4af6 100644 --- a/mllib/pom.xml +++ b/mllib/pom.xml @@ -58,7 +58,12 @@ org.jblas jblas - 1.2.3 + ${jblas.version} + + + org.scalanlp + breeze_${scala.binary.version} + 0.7 org.scalatest diff --git a/mllib/src/main/scala/org/apache/spark/mllib/api/python/PythonMLLibAPI.scala b/mllib/src/main/scala/org/apache/spark/mllib/api/python/PythonMLLibAPI.scala index efe99a31beac4..a6c049e517ee0 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/api/python/PythonMLLibAPI.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/api/python/PythonMLLibAPI.scala @@ -16,18 +16,23 @@ */ package org.apache.spark.mllib.api.python + +import java.nio.{ByteBuffer, ByteOrder} + +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.api.java.JavaRDD -import org.apache.spark.mllib.regression._ import org.apache.spark.mllib.classification._ import org.apache.spark.mllib.clustering._ +import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.recommendation._ +import org.apache.spark.mllib.regression._ import org.apache.spark.rdd.RDD -import java.nio.ByteBuffer -import java.nio.ByteOrder /** + * :: DeveloperApi :: * The Java stubs necessary for the Python mllib bindings. */ +@DeveloperApi class PythonMLLibAPI extends Serializable { private def deserializeDoubleVector(bytes: Array[Byte]): Array[Double] = { val packetLength = bytes.length @@ -108,16 +113,16 @@ class PythonMLLibAPI extends Serializable { private def trainRegressionModel( trainFunc: (RDD[LabeledPoint], Array[Double]) => GeneralizedLinearModel, - dataBytesJRDD: JavaRDD[Array[Byte]], initialWeightsBA: Array[Byte]): - java.util.LinkedList[java.lang.Object] = { + dataBytesJRDD: JavaRDD[Array[Byte]], + initialWeightsBA: Array[Byte]): java.util.LinkedList[java.lang.Object] = { val data = dataBytesJRDD.rdd.map(xBytes => { val x = deserializeDoubleVector(xBytes) - LabeledPoint(x(0), x.slice(1, x.length)) + LabeledPoint(x(0), Vectors.dense(x.slice(1, x.length))) }) val initialWeights = deserializeDoubleVector(initialWeightsBA) val model = trainFunc(data, initialWeights) val ret = new java.util.LinkedList[java.lang.Object]() - ret.add(serializeDoubleVector(model.weights)) + ret.add(serializeDoubleVector(model.weights.toArray)) ret.add(model.intercept: java.lang.Double) ret } @@ -125,75 +130,127 @@ class PythonMLLibAPI extends Serializable { /** * Java stub for Python mllib LinearRegressionWithSGD.train() */ - def trainLinearRegressionModelWithSGD(dataBytesJRDD: JavaRDD[Array[Byte]], - numIterations: Int, stepSize: Double, miniBatchFraction: Double, + def trainLinearRegressionModelWithSGD( + dataBytesJRDD: JavaRDD[Array[Byte]], + numIterations: Int, + stepSize: Double, + miniBatchFraction: Double, initialWeightsBA: Array[Byte]): java.util.List[java.lang.Object] = { - trainRegressionModel((data, initialWeights) => - LinearRegressionWithSGD.train(data, numIterations, stepSize, - miniBatchFraction, initialWeights), - dataBytesJRDD, initialWeightsBA) + trainRegressionModel( + (data, initialWeights) => + LinearRegressionWithSGD.train( + data, + numIterations, + stepSize, + miniBatchFraction, + Vectors.dense(initialWeights)), + dataBytesJRDD, + initialWeightsBA) } /** * Java stub for Python mllib LassoWithSGD.train() */ - def trainLassoModelWithSGD(dataBytesJRDD: JavaRDD[Array[Byte]], numIterations: Int, - stepSize: Double, regParam: Double, miniBatchFraction: Double, + def trainLassoModelWithSGD( + dataBytesJRDD: JavaRDD[Array[Byte]], + numIterations: Int, + stepSize: Double, + regParam: Double, + miniBatchFraction: Double, initialWeightsBA: Array[Byte]): java.util.List[java.lang.Object] = { - trainRegressionModel((data, initialWeights) => - LassoWithSGD.train(data, numIterations, stepSize, regParam, - miniBatchFraction, initialWeights), - dataBytesJRDD, initialWeightsBA) + trainRegressionModel( + (data, initialWeights) => + LassoWithSGD.train( + data, + numIterations, + stepSize, + regParam, + miniBatchFraction, + Vectors.dense(initialWeights)), + dataBytesJRDD, + initialWeightsBA) } /** * Java stub for Python mllib RidgeRegressionWithSGD.train() */ - def trainRidgeModelWithSGD(dataBytesJRDD: JavaRDD[Array[Byte]], numIterations: Int, - stepSize: Double, regParam: Double, miniBatchFraction: Double, + def trainRidgeModelWithSGD( + dataBytesJRDD: JavaRDD[Array[Byte]], + numIterations: Int, + stepSize: Double, + regParam: Double, + miniBatchFraction: Double, initialWeightsBA: Array[Byte]): java.util.List[java.lang.Object] = { - trainRegressionModel((data, initialWeights) => - RidgeRegressionWithSGD.train(data, numIterations, stepSize, regParam, - miniBatchFraction, initialWeights), - dataBytesJRDD, initialWeightsBA) + trainRegressionModel( + (data, initialWeights) => + RidgeRegressionWithSGD.train( + data, + numIterations, + stepSize, + regParam, + miniBatchFraction, + Vectors.dense(initialWeights)), + dataBytesJRDD, + initialWeightsBA) } /** * Java stub for Python mllib SVMWithSGD.train() */ - def trainSVMModelWithSGD(dataBytesJRDD: JavaRDD[Array[Byte]], numIterations: Int, - stepSize: Double, regParam: Double, miniBatchFraction: Double, + def trainSVMModelWithSGD( + dataBytesJRDD: JavaRDD[Array[Byte]], + numIterations: Int, + stepSize: Double, + regParam: Double, + miniBatchFraction: Double, initialWeightsBA: Array[Byte]): java.util.List[java.lang.Object] = { - trainRegressionModel((data, initialWeights) => - SVMWithSGD.train(data, numIterations, stepSize, regParam, - miniBatchFraction, initialWeights), - dataBytesJRDD, initialWeightsBA) + trainRegressionModel( + (data, initialWeights) => + SVMWithSGD.train( + data, + numIterations, + stepSize, + regParam, + miniBatchFraction, + Vectors.dense(initialWeights)), + dataBytesJRDD, + initialWeightsBA) } /** * Java stub for Python mllib LogisticRegressionWithSGD.train() */ - def trainLogisticRegressionModelWithSGD(dataBytesJRDD: JavaRDD[Array[Byte]], - numIterations: Int, stepSize: Double, miniBatchFraction: Double, + def trainLogisticRegressionModelWithSGD( + dataBytesJRDD: JavaRDD[Array[Byte]], + numIterations: Int, + stepSize: Double, + miniBatchFraction: Double, initialWeightsBA: Array[Byte]): java.util.List[java.lang.Object] = { - trainRegressionModel((data, initialWeights) => - LogisticRegressionWithSGD.train(data, numIterations, stepSize, - miniBatchFraction, initialWeights), - dataBytesJRDD, initialWeightsBA) + trainRegressionModel( + (data, initialWeights) => + LogisticRegressionWithSGD.train( + data, + numIterations, + stepSize, + miniBatchFraction, + Vectors.dense(initialWeights)), + dataBytesJRDD, + initialWeightsBA) } /** * Java stub for NaiveBayes.train() */ - def trainNaiveBayes(dataBytesJRDD: JavaRDD[Array[Byte]], lambda: Double) - : java.util.List[java.lang.Object] = - { + def trainNaiveBayes( + dataBytesJRDD: JavaRDD[Array[Byte]], + lambda: Double): java.util.List[java.lang.Object] = { val data = dataBytesJRDD.rdd.map(xBytes => { val x = deserializeDoubleVector(xBytes) - LabeledPoint(x(0), x.slice(1, x.length)) + LabeledPoint(x(0), Vectors.dense(x.slice(1, x.length))) }) val model = NaiveBayes.train(data, lambda) val ret = new java.util.LinkedList[java.lang.Object]() + ret.add(serializeDoubleVector(model.labels)) ret.add(serializeDoubleVector(model.pi)) ret.add(serializeDoubleMatrix(model.theta)) ret @@ -202,13 +259,16 @@ class PythonMLLibAPI extends Serializable { /** * Java stub for Python mllib KMeans.train() */ - def trainKMeansModel(dataBytesJRDD: JavaRDD[Array[Byte]], k: Int, - maxIterations: Int, runs: Int, initializationMode: String): - java.util.List[java.lang.Object] = { - val data = dataBytesJRDD.rdd.map(xBytes => deserializeDoubleVector(xBytes)) + def trainKMeansModel( + dataBytesJRDD: JavaRDD[Array[Byte]], + k: Int, + maxIterations: Int, + runs: Int, + initializationMode: String): java.util.List[java.lang.Object] = { + val data = dataBytesJRDD.rdd.map(xBytes => Vectors.dense(deserializeDoubleVector(xBytes))) val model = KMeans.train(data, k, maxIterations, runs, initializationMode) val ret = new java.util.LinkedList[java.lang.Object]() - ret.add(serializeDoubleMatrix(model.clusterCenters)) + ret.add(serializeDoubleMatrix(model.clusterCenters.map(_.toArray))) ret } @@ -257,8 +317,12 @@ class PythonMLLibAPI extends Serializable { * needs to be taken in the Python code to ensure it gets freed on exit; see * the Py4J documentation. */ - def trainALSModel(ratingsBytesJRDD: JavaRDD[Array[Byte]], rank: Int, - iterations: Int, lambda: Double, blocks: Int): MatrixFactorizationModel = { + def trainALSModel( + ratingsBytesJRDD: JavaRDD[Array[Byte]], + rank: Int, + iterations: Int, + lambda: Double, + blocks: Int): MatrixFactorizationModel = { val ratings = ratingsBytesJRDD.rdd.map(unpackRating) ALS.train(ratings, rank, iterations, lambda, blocks) } @@ -269,8 +333,13 @@ class PythonMLLibAPI extends Serializable { * Extra care needs to be taken in the Python code to ensure it gets freed on * exit; see the Py4J documentation. */ - def trainImplicitALSModel(ratingsBytesJRDD: JavaRDD[Array[Byte]], rank: Int, - iterations: Int, lambda: Double, blocks: Int, alpha: Double): MatrixFactorizationModel = { + def trainImplicitALSModel( + ratingsBytesJRDD: JavaRDD[Array[Byte]], + rank: Int, + iterations: Int, + lambda: Double, + blocks: Int, + alpha: Double): MatrixFactorizationModel = { val ratings = ratingsBytesJRDD.rdd.map(unpackRating) ALS.trainImplicit(ratings, rank, iterations, lambda, blocks, alpha) } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/classification/ClassificationModel.scala b/mllib/src/main/scala/org/apache/spark/mllib/classification/ClassificationModel.scala index 391f5b9b7a7de..bd10e2e9e10e2 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/classification/ClassificationModel.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/classification/ClassificationModel.scala @@ -17,22 +17,27 @@ package org.apache.spark.mllib.classification +import org.apache.spark.mllib.linalg.Vector import org.apache.spark.rdd.RDD +/** + * Represents a classification model that predicts to which of a set of categories an example + * belongs. The categories are represented by double values: 0.0, 1.0, 2.0, etc. + */ trait ClassificationModel extends Serializable { /** * Predict values for the given data set using the model trained. * * @param testData RDD representing data points to be predicted - * @return RDD[Int] where each entry contains the corresponding prediction + * @return an RDD[Double] where each entry contains the corresponding prediction */ - def predict(testData: RDD[Array[Double]]): RDD[Double] + def predict(testData: RDD[Vector]): RDD[Double] /** * Predict values for a single data point using the model trained. * * @param testData array representing a single data point - * @return Int prediction from the trained model + * @return predicted category from the trained model */ - def predict(testData: Array[Double]): Double + def predict(testData: Vector): Double } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/classification/LogisticRegression.scala b/mllib/src/main/scala/org/apache/spark/mllib/classification/LogisticRegression.scala index a481f522761e2..4f9eaacf67fe4 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/classification/LogisticRegression.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/classification/LogisticRegression.scala @@ -17,16 +17,12 @@ package org.apache.spark.mllib.classification -import scala.math.round - import org.apache.spark.SparkContext -import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.Vector import org.apache.spark.mllib.optimization._ import org.apache.spark.mllib.regression._ -import org.apache.spark.mllib.util.MLUtils -import org.apache.spark.mllib.util.DataValidators - -import org.jblas.DoubleMatrix +import org.apache.spark.mllib.util.{DataValidators, MLUtils} +import org.apache.spark.rdd.RDD /** * Classification model trained using Logistic Regression. @@ -35,15 +31,38 @@ import org.jblas.DoubleMatrix * @param intercept Intercept computed for this model. */ class LogisticRegressionModel( - override val weights: Array[Double], + override val weights: Vector, override val intercept: Double) - extends GeneralizedLinearModel(weights, intercept) - with ClassificationModel with Serializable { + extends GeneralizedLinearModel(weights, intercept) with ClassificationModel with Serializable { + + private var threshold: Option[Double] = Some(0.5) + + /** + * Sets the threshold that separates positive predictions from negative predictions. An example + * with prediction score greater than or equal to this threshold is identified as an positive, + * and negative otherwise. The default value is 0.5. + */ + def setThreshold(threshold: Double): this.type = { + this.threshold = Some(threshold) + this + } - override def predictPoint(dataMatrix: DoubleMatrix, weightMatrix: DoubleMatrix, + /** + * Clears the threshold so that `predict` will output raw prediction scores. + */ + def clearThreshold(): this.type = { + threshold = None + this + } + + override protected def predictPoint(dataMatrix: Vector, weightMatrix: Vector, intercept: Double) = { - val margin = dataMatrix.mmul(weightMatrix).get(0) + intercept - round(1.0/ (1.0 + math.exp(margin * -1))) + val margin = weightMatrix.toBreeze.dot(dataMatrix.toBreeze) + intercept + val score = 1.0/ (1.0 + math.exp(-margin)) + threshold match { + case Some(t) => if (score < t) 0.0 else 1.0 + case None => score + } } } @@ -52,28 +71,27 @@ class LogisticRegressionModel( * NOTE: Labels used in Logistic Regression should be {0, 1} */ class LogisticRegressionWithSGD private ( - var stepSize: Double, - var numIterations: Int, - var regParam: Double, - var miniBatchFraction: Double) - extends GeneralizedLinearAlgorithm[LogisticRegressionModel] - with Serializable { - - val gradient = new LogisticGradient() - val updater = new SimpleUpdater() + private var stepSize: Double, + private var numIterations: Int, + private var regParam: Double, + private var miniBatchFraction: Double) + extends GeneralizedLinearAlgorithm[LogisticRegressionModel] with Serializable { + + private val gradient = new LogisticGradient() + private val updater = new SimpleUpdater() override val optimizer = new GradientDescent(gradient, updater) - .setStepSize(stepSize) - .setNumIterations(numIterations) - .setRegParam(regParam) - .setMiniBatchFraction(miniBatchFraction) - override val validators = List(DataValidators.classificationLabels) + .setStepSize(stepSize) + .setNumIterations(numIterations) + .setRegParam(regParam) + .setMiniBatchFraction(miniBatchFraction) + override protected val validators = List(DataValidators.binaryLabelValidator) /** * Construct a LogisticRegression object with default parameters */ def this() = this(1.0, 100, 0.0, 1.0) - def createModel(weights: Array[Double], intercept: Double) = { + override protected def createModel(weights: Vector, intercept: Double) = { new LogisticRegressionModel(weights, intercept) } } @@ -105,11 +123,9 @@ object LogisticRegressionWithSGD { numIterations: Int, stepSize: Double, miniBatchFraction: Double, - initialWeights: Array[Double]) - : LogisticRegressionModel = - { - new LogisticRegressionWithSGD(stepSize, numIterations, 0.0, miniBatchFraction).run( - input, initialWeights) + initialWeights: Vector): LogisticRegressionModel = { + new LogisticRegressionWithSGD(stepSize, numIterations, 0.0, miniBatchFraction) + .run(input, initialWeights) } /** @@ -128,11 +144,9 @@ object LogisticRegressionWithSGD { input: RDD[LabeledPoint], numIterations: Int, stepSize: Double, - miniBatchFraction: Double) - : LogisticRegressionModel = - { - new LogisticRegressionWithSGD(stepSize, numIterations, 0.0, miniBatchFraction).run( - input) + miniBatchFraction: Double): LogisticRegressionModel = { + new LogisticRegressionWithSGD(stepSize, numIterations, 0.0, miniBatchFraction) + .run(input) } /** @@ -150,9 +164,7 @@ object LogisticRegressionWithSGD { def train( input: RDD[LabeledPoint], numIterations: Int, - stepSize: Double) - : LogisticRegressionModel = - { + stepSize: Double): LogisticRegressionModel = { train(input, numIterations, stepSize, 1.0) } @@ -168,9 +180,7 @@ object LogisticRegressionWithSGD { */ def train( input: RDD[LabeledPoint], - numIterations: Int) - : LogisticRegressionModel = - { + numIterations: Int): LogisticRegressionModel = { train(input, numIterations, 1.0, 1.0) } @@ -183,7 +193,7 @@ object LogisticRegressionWithSGD { val sc = new SparkContext(args(0), "LogisticRegression") val data = MLUtils.loadLabeledData(sc, args(1)) val model = LogisticRegressionWithSGD.train(data, args(3).toInt, args(2).toDouble) - println("Weights: " + model.weights.mkString("[", ", ", "]")) + println("Weights: " + model.weights) println("Intercept: " + model.intercept) sc.stop() diff --git a/mllib/src/main/scala/org/apache/spark/mllib/classification/NaiveBayes.scala b/mllib/src/main/scala/org/apache/spark/mllib/classification/NaiveBayes.scala index 6539b2f339465..18658850a2f64 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/classification/NaiveBayes.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/classification/NaiveBayes.scala @@ -17,34 +17,51 @@ package org.apache.spark.mllib.classification -import scala.collection.mutable +import breeze.linalg.{DenseMatrix => BDM, DenseVector => BDV, argmax => brzArgmax, sum => brzSum} -import org.jblas.DoubleMatrix - -import org.apache.spark.{SparkContext, Logging} +import org.apache.spark.annotation.Experimental +import org.apache.spark.{Logging, SparkContext} +import org.apache.spark.SparkContext._ +import org.apache.spark.mllib.linalg.Vector import org.apache.spark.mllib.regression.LabeledPoint -import org.apache.spark.rdd.RDD import org.apache.spark.mllib.util.MLUtils +import org.apache.spark.rdd.RDD /** + * :: Experimental :: * Model for Naive Bayes Classifiers. * - * @param pi Log of class priors, whose dimension is C. - * @param theta Log of class conditional probabilities, whose dimension is CxD. + * @param labels list of labels + * @param pi log of class priors, whose dimension is C, number of labels + * @param theta log of class conditional probabilities, whose dimension is C-by-D, + * where D is number of features */ -class NaiveBayesModel(val pi: Array[Double], val theta: Array[Array[Double]]) - extends ClassificationModel with Serializable { - - // Create a column vector that can be used for predictions - private val _pi = new DoubleMatrix(pi.length, 1, pi: _*) - private val _theta = new DoubleMatrix(theta) +@Experimental +class NaiveBayesModel( + val labels: Array[Double], + val pi: Array[Double], + val theta: Array[Array[Double]]) extends ClassificationModel with Serializable { + + private val brzPi = new BDV[Double](pi) + private val brzTheta = new BDM[Double](theta.length, theta(0).length) + + { + // Need to put an extra pair of braces to prevent Scala treating `i` as a member. + var i = 0 + while (i < theta.length) { + var j = 0 + while (j < theta(i).length) { + brzTheta(i, j) = theta(i)(j) + j += 1 + } + i += 1 + } + } - def predict(testData: RDD[Array[Double]]): RDD[Double] = testData.map(predict) + override def predict(testData: RDD[Vector]): RDD[Double] = testData.map(predict) - def predict(testData: Array[Double]): Double = { - val dataMatrix = new DoubleMatrix(testData.length, 1, testData: _*) - val result = _pi.add(_theta.mmul(dataMatrix)) - result.argmax() + override def predict(testData: Vector): Double = { + labels(brzArgmax(brzPi + brzTheta * testData.toBreeze)) } } @@ -56,9 +73,8 @@ class NaiveBayesModel(val pi: Array[Double], val theta: Array[Array[Double]]) * document classification. By making every vector a 0-1 vector, it can also be used as * Bernoulli NB ([[http://tinyurl.com/p7c96j6]]). */ -class NaiveBayes private (var lambda: Double) - extends Serializable with Logging -{ +class NaiveBayes private (private var lambda: Double) extends Serializable with Logging { + def this() = this(1.0) /** Set the smoothing parameter. Default: 1.0. */ @@ -70,45 +86,42 @@ class NaiveBayes private (var lambda: Double) /** * Run the algorithm with the configured parameters on an input RDD of LabeledPoint entries. * - * @param data RDD of (label, array of features) pairs. + * @param data RDD of [[org.apache.spark.mllib.regression.LabeledPoint]]. */ def run(data: RDD[LabeledPoint]) = { - // Aggregates all sample points to driver side to get sample count and summed feature vector - // for each label. The shape of `zeroCombiner` & `aggregated` is: - // - // label: Int -> (count: Int, featuresSum: DoubleMatrix) - val zeroCombiner = mutable.Map.empty[Int, (Int, DoubleMatrix)] - val aggregated = data.aggregate(zeroCombiner)({ (combiner, point) => - point match { - case LabeledPoint(label, features) => - val (count, featuresSum) = combiner.getOrElse(label.toInt, (0, DoubleMatrix.zeros(1))) - val fs = new DoubleMatrix(features.length, 1, features: _*) - combiner += label.toInt -> (count + 1, featuresSum.addi(fs)) - } - }, { (lhs, rhs) => - for ((label, (c, fs)) <- rhs) { - val (count, featuresSum) = lhs.getOrElse(label, (0, DoubleMatrix.zeros(1))) - lhs(label) = (count + c, featuresSum.addi(fs)) + // Aggregates term frequencies per label. + // TODO: Calling combineByKey and collect creates two stages, we can implement something + // TODO: similar to reduceByKeyLocally to save one stage. + val aggregated = data.map(p => (p.label, p.features)).combineByKey[(Long, BDV[Double])]( + createCombiner = (v: Vector) => (1L, v.toBreeze.toDenseVector), + mergeValue = (c: (Long, BDV[Double]), v: Vector) => (c._1 + 1L, c._2 += v.toBreeze), + mergeCombiners = (c1: (Long, BDV[Double]), c2: (Long, BDV[Double])) => + (c1._1 + c2._1, c1._2 += c2._2) + ).collect() + val numLabels = aggregated.length + var numDocuments = 0L + aggregated.foreach { case (_, (n, _)) => + numDocuments += n + } + val numFeatures = aggregated.head match { case (_, (_, v)) => v.size } + val labels = new Array[Double](numLabels) + val pi = new Array[Double](numLabels) + val theta = Array.fill(numLabels)(new Array[Double](numFeatures)) + val piLogDenom = math.log(numDocuments + numLabels * lambda) + var i = 0 + aggregated.foreach { case (label, (n, sumTermFreqs)) => + labels(i) = label + val thetaLogDenom = math.log(brzSum(sumTermFreqs) + numFeatures * lambda) + pi(i) = math.log(n + lambda) - piLogDenom + var j = 0 + while (j < numFeatures) { + theta(i)(j) = math.log(sumTermFreqs(j) + lambda) - thetaLogDenom + j += 1 } - lhs - }) - - // Kinds of label - val C = aggregated.size - // Total sample count - val N = aggregated.values.map(_._1).sum - - val pi = new Array[Double](C) - val theta = new Array[Array[Double]](C) - val piLogDenom = math.log(N + C * lambda) - - for ((label, (count, fs)) <- aggregated) { - val thetaLogDenom = math.log(fs.sum() + fs.length * lambda) - pi(label) = math.log(count + lambda) - piLogDenom - theta(label) = fs.toArray.map(f => math.log(f + lambda) - thetaLogDenom) + i += 1 } - new NaiveBayesModel(pi, theta) + new NaiveBayesModel(labels, pi, theta) } } @@ -158,8 +171,9 @@ object NaiveBayes { } else { NaiveBayes.train(data, args(2).toDouble) } - println("Pi: " + model.pi.mkString("[", ", ", "]")) - println("Theta:\n" + model.theta.map(_.mkString("[", ", ", "]")).mkString("[", "\n ", "]")) + + println("Pi\n: " + model.pi) + println("Theta:\n" + model.theta) sc.stop() } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/classification/SVM.scala b/mllib/src/main/scala/org/apache/spark/mllib/classification/SVM.scala index 6dff29dfb45cc..956654b1fe90a 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/classification/SVM.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/classification/SVM.scala @@ -18,13 +18,11 @@ package org.apache.spark.mllib.classification import org.apache.spark.SparkContext -import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.Vector import org.apache.spark.mllib.optimization._ import org.apache.spark.mllib.regression._ -import org.apache.spark.mllib.util.MLUtils -import org.apache.spark.mllib.util.DataValidators - -import org.jblas.DoubleMatrix +import org.apache.spark.mllib.util.{DataValidators, MLUtils} +import org.apache.spark.rdd.RDD /** * Model for Support Vector Machines (SVMs). @@ -33,15 +31,39 @@ import org.jblas.DoubleMatrix * @param intercept Intercept computed for this model. */ class SVMModel( - override val weights: Array[Double], + override val weights: Vector, override val intercept: Double) - extends GeneralizedLinearModel(weights, intercept) - with ClassificationModel with Serializable { + extends GeneralizedLinearModel(weights, intercept) with ClassificationModel with Serializable { - override def predictPoint(dataMatrix: DoubleMatrix, weightMatrix: DoubleMatrix, + private var threshold: Option[Double] = Some(0.0) + + /** + * Sets the threshold that separates positive predictions from negative predictions. An example + * with prediction score greater than or equal to this threshold is identified as an positive, + * and negative otherwise. The default value is 0.0. + */ + def setThreshold(threshold: Double): this.type = { + this.threshold = Some(threshold) + this + } + + /** + * Clears the threshold so that `predict` will output raw prediction scores. + */ + def clearThreshold(): this.type = { + threshold = None + this + } + + override protected def predictPoint( + dataMatrix: Vector, + weightMatrix: Vector, intercept: Double) = { - val margin = dataMatrix.dot(weightMatrix) + intercept - if (margin < 0) 0.0 else 1.0 + val margin = weightMatrix.toBreeze.dot(dataMatrix.toBreeze) + intercept + threshold match { + case Some(t) => if (margin < 0) 0.0 else 1.0 + case None => margin + } } } @@ -50,28 +72,27 @@ class SVMModel( * NOTE: Labels used in SVM should be {0, 1}. */ class SVMWithSGD private ( - var stepSize: Double, - var numIterations: Int, - var regParam: Double, - var miniBatchFraction: Double) + private var stepSize: Double, + private var numIterations: Int, + private var regParam: Double, + private var miniBatchFraction: Double) extends GeneralizedLinearAlgorithm[SVMModel] with Serializable { - val gradient = new HingeGradient() - val updater = new SquaredL2Updater() + private val gradient = new HingeGradient() + private val updater = new SquaredL2Updater() override val optimizer = new GradientDescent(gradient, updater) .setStepSize(stepSize) .setNumIterations(numIterations) .setRegParam(regParam) .setMiniBatchFraction(miniBatchFraction) - - override val validators = List(DataValidators.classificationLabels) + override protected val validators = List(DataValidators.binaryLabelValidator) /** * Construct a SVM object with default parameters */ def this() = this(1.0, 100, 1.0, 1.0) - def createModel(weights: Array[Double], intercept: Double) = { + override protected def createModel(weights: Vector, intercept: Double) = { new SVMModel(weights, intercept) } } @@ -103,11 +124,9 @@ object SVMWithSGD { stepSize: Double, regParam: Double, miniBatchFraction: Double, - initialWeights: Array[Double]) - : SVMModel = - { - new SVMWithSGD(stepSize, numIterations, regParam, miniBatchFraction).run(input, - initialWeights) + initialWeights: Vector): SVMModel = { + new SVMWithSGD(stepSize, numIterations, regParam, miniBatchFraction) + .run(input, initialWeights) } /** @@ -127,9 +146,7 @@ object SVMWithSGD { numIterations: Int, stepSize: Double, regParam: Double, - miniBatchFraction: Double) - : SVMModel = - { + miniBatchFraction: Double): SVMModel = { new SVMWithSGD(stepSize, numIterations, regParam, miniBatchFraction).run(input) } @@ -149,9 +166,7 @@ object SVMWithSGD { input: RDD[LabeledPoint], numIterations: Int, stepSize: Double, - regParam: Double) - : SVMModel = - { + regParam: Double): SVMModel = { train(input, numIterations, stepSize, regParam, 1.0) } @@ -165,11 +180,7 @@ object SVMWithSGD { * @param numIterations Number of iterations of gradient descent to run. * @return a SVMModel which has the weights and offset from training. */ - def train( - input: RDD[LabeledPoint], - numIterations: Int) - : SVMModel = - { + def train(input: RDD[LabeledPoint], numIterations: Int): SVMModel = { train(input, numIterations, 1.0, 1.0, 1.0) } @@ -181,7 +192,8 @@ object SVMWithSGD { val sc = new SparkContext(args(0), "SVM") val data = MLUtils.loadLabeledData(sc, args(1)) val model = SVMWithSGD.train(data, args(4).toInt, args(2).toDouble, args(3).toDouble) - println("Weights: " + model.weights.mkString("[", ", ", "]")) + + println("Weights: " + model.weights) println("Intercept: " + model.intercept) sc.stop() diff --git a/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeans.scala b/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeans.scala index e508b76c3f8c5..90cf8525df523 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeans.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeans.scala @@ -19,16 +19,16 @@ package org.apache.spark.mllib.clustering import scala.collection.mutable.ArrayBuffer -import org.jblas.DoubleMatrix +import breeze.linalg.{DenseVector => BDV, Vector => BV, norm => breezeNorm} -import org.apache.spark.SparkContext +import org.apache.spark.annotation.Experimental +import org.apache.spark.{Logging, SparkContext} import org.apache.spark.SparkContext._ -import org.apache.spark.rdd.RDD -import org.apache.spark.Logging +import org.apache.spark.mllib.linalg.{Vector, Vectors} import org.apache.spark.mllib.util.MLUtils +import org.apache.spark.rdd.RDD import org.apache.spark.util.random.XORShiftRandom - /** * K-means clustering with support for multiple parallel runs and a k-means++ like initialization * mode (the k-means|| algorithm by Bahmani et al). When multiple concurrent runs are requested, @@ -38,16 +38,17 @@ import org.apache.spark.util.random.XORShiftRandom * to it should be cached by the user. */ class KMeans private ( - var k: Int, - var maxIterations: Int, - var runs: Int, - var initializationMode: String, - var initializationSteps: Int, - var epsilon: Double) - extends Serializable with Logging -{ - private type ClusterCenters = Array[Array[Double]] + private var k: Int, + private var maxIterations: Int, + private var runs: Int, + private var initializationMode: String, + private var initializationSteps: Int, + private var epsilon: Double) extends Serializable with Logging { + /** + * Constructs a KMeans instance with default parameters: {k: 2, maxIterations: 20, runs: 1, + * initializationMode: "k-means||", initializationSteps: 5, epsilon: 1e-4}. + */ def this() = this(2, 20, 1, KMeans.K_MEANS_PARALLEL, 5, 1e-4) /** Set the number of clusters to create (k). Default: 2. */ @@ -76,6 +77,7 @@ class KMeans private ( } /** + * :: Experimental :: * Set the number of runs of the algorithm to execute in parallel. We initialize the algorithm * this many times with random starting conditions (configured by the initialization mode), then * return the best clustering found over any run. Default: 1. @@ -113,28 +115,50 @@ class KMeans private ( * Train a K-means model on the given set of points; `data` should be cached for high * performance, because this is an iterative algorithm. */ - def run(data: RDD[Array[Double]]): KMeansModel = { - // TODO: check whether data is persistent; this needs RDD.storageLevel to be publicly readable + def run(data: RDD[Vector]): KMeansModel = { + // Compute squared norms and cache them. + val norms = data.map(v => breezeNorm(v.toBreeze, 2.0)) + norms.persist() + val breezeData = data.map(_.toBreeze).zip(norms).map { case (v, norm) => + new BreezeVectorWithNorm(v, norm) + } + val model = runBreeze(breezeData) + norms.unpersist() + model + } + + /** + * Implementation of K-Means using breeze. + */ + private def runBreeze(data: RDD[BreezeVectorWithNorm]): KMeansModel = { val sc = data.sparkContext + val initStartTime = System.nanoTime() + val centers = if (initializationMode == KMeans.RANDOM) { initRandom(data) } else { initKMeansParallel(data) } + val initTimeInSeconds = (System.nanoTime() - initStartTime) / 1e9 + logInfo(s"Initialization with $initializationMode took " + "%.3f".format(initTimeInSeconds) + + " seconds.") + val active = Array.fill(runs)(true) val costs = Array.fill(runs)(0.0) var activeRuns = new ArrayBuffer[Int] ++ (0 until runs) var iteration = 0 + val iterationStartTime = System.nanoTime() + // Execute iterations of Lloyd's algorithm until all runs have converged while (iteration < maxIterations && !activeRuns.isEmpty) { - type WeightedPoint = (DoubleMatrix, Long) + type WeightedPoint = (BV[Double], Long) def mergeContribs(p1: WeightedPoint, p2: WeightedPoint): WeightedPoint = { - (p1._1.addi(p2._1), p1._2 + p2._2) + (p1._1 += p2._1, p1._2 + p2._2) } val activeCenters = activeRuns.map(r => centers(r)).toArray @@ -144,16 +168,18 @@ class KMeans private ( val totalContribs = data.mapPartitions { points => val runs = activeCenters.length val k = activeCenters(0).length - val dims = activeCenters(0)(0).length + val dims = activeCenters(0)(0).vector.length - val sums = Array.fill(runs, k)(new DoubleMatrix(dims)) + val sums = Array.fill(runs, k)(BDV.zeros[Double](dims).asInstanceOf[BV[Double]]) val counts = Array.fill(runs, k)(0L) - for (point <- points; (centers, runIndex) <- activeCenters.zipWithIndex) { - val (bestCenter, cost) = KMeans.findClosest(centers, point) - costAccums(runIndex) += cost - sums(runIndex)(bestCenter).addi(new DoubleMatrix(point)) - counts(runIndex)(bestCenter) += 1 + points.foreach { point => + (0 until runs).foreach { i => + val (bestCenter, cost) = KMeans.findClosest(activeCenters(i), point) + costAccums(i) += cost + sums(i)(bestCenter) += point.vector + counts(i)(bestCenter) += 1 + } } val contribs = for (i <- 0 until runs; j <- 0 until k) yield { @@ -165,15 +191,18 @@ class KMeans private ( // Update the cluster centers and costs for each active run for ((run, i) <- activeRuns.zipWithIndex) { var changed = false - for (j <- 0 until k) { + var j = 0 + while (j < k) { val (sum, count) = totalContribs((i, j)) if (count != 0) { - val newCenter = sum.divi(count).data - if (MLUtils.squaredDistance(newCenter, centers(run)(j)) > epsilon * epsilon) { + sum /= count.toDouble + val newCenter = new BreezeVectorWithNorm(sum) + if (KMeans.fastSquaredDistance(newCenter, centers(run)(j)) > epsilon * epsilon) { changed = true } centers(run)(j) = newCenter } + j += 1 } if (!changed) { active(run) = false @@ -186,17 +215,32 @@ class KMeans private ( iteration += 1 } - val bestRun = costs.zipWithIndex.min._2 - new KMeansModel(centers(bestRun)) + val iterationTimeInSeconds = (System.nanoTime() - iterationStartTime) / 1e9 + logInfo(s"Iterations took " + "%.3f".format(iterationTimeInSeconds) + " seconds.") + + if (iteration == maxIterations) { + logInfo(s"KMeans reached the max number of iterations: $maxIterations.") + } else { + logInfo(s"KMeans converged in $iteration iterations.") + } + + val (minCost, bestRun) = costs.zipWithIndex.min + + logInfo(s"The cost for the best run is $minCost.") + + new KMeansModel(centers(bestRun).map(c => Vectors.fromBreeze(c.vector))) } /** * Initialize `runs` sets of cluster centers at random. */ - private def initRandom(data: RDD[Array[Double]]): Array[ClusterCenters] = { + private def initRandom(data: RDD[BreezeVectorWithNorm]) + : Array[Array[BreezeVectorWithNorm]] = { // Sample all the cluster centers in one pass to avoid repeated scans val sample = data.takeSample(true, runs * k, new XORShiftRandom().nextInt()).toSeq - Array.tabulate(runs)(r => sample.slice(r * k, (r + 1) * k).toArray) + Array.tabulate(runs)(r => sample.slice(r * k, (r + 1) * k).map { v => + new BreezeVectorWithNorm(v.vector.toDenseVector, v.norm) + }.toArray) } /** @@ -208,38 +252,43 @@ class KMeans private ( * * The original paper can be found at http://theory.stanford.edu/~sergei/papers/vldb12-kmpar.pdf. */ - private def initKMeansParallel(data: RDD[Array[Double]]): Array[ClusterCenters] = { + private def initKMeansParallel(data: RDD[BreezeVectorWithNorm]) + : Array[Array[BreezeVectorWithNorm]] = { // Initialize each run's center to a random point val seed = new XORShiftRandom().nextInt() val sample = data.takeSample(true, runs, seed).toSeq - val centers = Array.tabulate(runs)(r => ArrayBuffer(sample(r))) + val centers = Array.tabulate(runs)(r => ArrayBuffer(sample(r).toDense)) // On each step, sample 2 * k points on average for each run with probability proportional // to their squared distance from that run's current centers - for (step <- 0 until initializationSteps) { - val centerArrays = centers.map(_.toArray) + var step = 0 + while (step < initializationSteps) { val sumCosts = data.flatMap { point => - for (r <- 0 until runs) yield (r, KMeans.pointCost(centerArrays(r), point)) + (0 until runs).map { r => + (r, KMeans.pointCost(centers(r), point)) + } }.reduceByKey(_ + _).collectAsMap() val chosen = data.mapPartitionsWithIndex { (index, points) => val rand = new XORShiftRandom(seed ^ (step << 16) ^ index) - for { - p <- points - r <- 0 until runs - if rand.nextDouble() < KMeans.pointCost(centerArrays(r), p) * 2 * k / sumCosts(r) - } yield (r, p) + points.flatMap { p => + (0 until runs).filter { r => + rand.nextDouble() < 2.0 * KMeans.pointCost(centers(r), p) * k / sumCosts(r) + }.map((_, p)) + } }.collect() - for ((r, p) <- chosen) { - centers(r) += p + chosen.foreach { case (r, p) => + centers(r) += p.toDense } + step += 1 } // Finally, we might have a set of more than k candidate centers for each run; weigh each // candidate by the number of points in the dataset mapping to it and run a local k-means++ // on the weighted centers to pick just k of them - val centerArrays = centers.map(_.toArray) val weightMap = data.flatMap { p => - for (r <- 0 until runs) yield ((r, KMeans.findClosest(centerArrays(r), p)._1), 1.0) + (0 until runs).map { r => + ((r, KMeans.findClosest(centers(r), p)._1), 1.0) + } }.reduceByKey(_ + _).collectAsMap() val finalCenters = (0 until runs).map { r => val myCenters = centers(r).toArray @@ -256,65 +305,99 @@ class KMeans private ( * Top-level methods for calling K-means clustering. */ object KMeans { + // Initialization mode names val RANDOM = "random" val K_MEANS_PARALLEL = "k-means||" + /** + * Trains a k-means model using the given set of parameters. + * + * @param data training points stored as `RDD[Array[Double]]` + * @param k number of clusters + * @param maxIterations max number of iterations + * @param runs number of parallel runs, defaults to 1. The best model is returned. + * @param initializationMode initialization model, either "random" or "k-means||" (default). + */ def train( - data: RDD[Array[Double]], + data: RDD[Vector], k: Int, maxIterations: Int, runs: Int, - initializationMode: String) - : KMeansModel = - { + initializationMode: String): KMeansModel = { new KMeans().setK(k) - .setMaxIterations(maxIterations) - .setRuns(runs) - .setInitializationMode(initializationMode) - .run(data) + .setMaxIterations(maxIterations) + .setRuns(runs) + .setInitializationMode(initializationMode) + .run(data) } - def train(data: RDD[Array[Double]], k: Int, maxIterations: Int, runs: Int): KMeansModel = { - train(data, k, maxIterations, runs, K_MEANS_PARALLEL) + /** + * Trains a k-means model using specified parameters and the default values for unspecified. + */ + def train( + data: RDD[Vector], + k: Int, + maxIterations: Int): KMeansModel = { + train(data, k, maxIterations, 1, K_MEANS_PARALLEL) } - def train(data: RDD[Array[Double]], k: Int, maxIterations: Int): KMeansModel = { - train(data, k, maxIterations, 1, K_MEANS_PARALLEL) + /** + * Trains a k-means model using specified parameters and the default values for unspecified. + */ + def train( + data: RDD[Vector], + k: Int, + maxIterations: Int, + runs: Int): KMeansModel = { + train(data, k, maxIterations, runs, K_MEANS_PARALLEL) } /** - * Return the index of the closest point in `centers` to `point`, as well as its distance. + * Returns the index of the closest center to the given point, as well as the squared distance. */ - private[mllib] def findClosest(centers: Array[Array[Double]], point: Array[Double]) - : (Int, Double) = - { + private[mllib] def findClosest( + centers: TraversableOnce[BreezeVectorWithNorm], + point: BreezeVectorWithNorm): (Int, Double) = { var bestDistance = Double.PositiveInfinity var bestIndex = 0 - for (i <- 0 until centers.length) { - val distance = MLUtils.squaredDistance(point, centers(i)) - if (distance < bestDistance) { - bestDistance = distance - bestIndex = i + var i = 0 + centers.foreach { center => + // Since `\|a - b\| \geq |\|a\| - \|b\||`, we can use this lower bound to avoid unnecessary + // distance computation. + var lowerBoundOfSqDist = center.norm - point.norm + lowerBoundOfSqDist = lowerBoundOfSqDist * lowerBoundOfSqDist + if (lowerBoundOfSqDist < bestDistance) { + val distance: Double = fastSquaredDistance(center, point) + if (distance < bestDistance) { + bestDistance = distance + bestIndex = i + } } + i += 1 } (bestIndex, bestDistance) } /** - * Return the K-means cost of a given point against the given cluster centers. + * Returns the K-means cost of a given point against the given cluster centers. */ - private[mllib] def pointCost(centers: Array[Array[Double]], point: Array[Double]): Double = { - var bestDistance = Double.PositiveInfinity - for (i <- 0 until centers.length) { - val distance = MLUtils.squaredDistance(point, centers(i)) - if (distance < bestDistance) { - bestDistance = distance - } - } - bestDistance + private[mllib] def pointCost( + centers: TraversableOnce[BreezeVectorWithNorm], + point: BreezeVectorWithNorm): Double = + findClosest(centers, point)._2 + + /** + * Returns the squared Euclidean distance between two vectors computed by + * [[org.apache.spark.mllib.util.MLUtils#fastSquaredDistance]]. + */ + private[clustering] + def fastSquaredDistance(v1: BreezeVectorWithNorm, v2: BreezeVectorWithNorm) + : Double = { + MLUtils.fastSquaredDistance(v1.vector, v1.norm, v2.vector, v2.norm) } + @Experimental def main(args: Array[String]) { if (args.length < 4) { println("Usage: KMeans []") @@ -323,14 +406,34 @@ object KMeans { val (master, inputFile, k, iters) = (args(0), args(1), args(2).toInt, args(3).toInt) val runs = if (args.length >= 5) args(4).toInt else 1 val sc = new SparkContext(master, "KMeans") - val data = sc.textFile(inputFile).map(line => line.split(' ').map(_.toDouble)).cache() + val data = sc.textFile(inputFile) + .map(line => Vectors.dense(line.split(' ').map(_.toDouble))) + .cache() val model = KMeans.train(data, k, iters, runs) val cost = model.computeCost(data) println("Cluster centers:") for (c <- model.clusterCenters) { - println(" " + c.mkString(" ")) + println(" " + c) } println("Cost: " + cost) System.exit(0) } } + +/** + * A breeze vector with its norm for fast distance computation. + * + * @see [[org.apache.spark.mllib.clustering.KMeans#fastSquaredDistance]] + */ +private[clustering] +class BreezeVectorWithNorm(val vector: BV[Double], val norm: Double) extends Serializable { + + def this(vector: BV[Double]) = this(vector, breezeNorm(vector, 2.0)) + + def this(array: Array[Double]) = this(new BDV[Double](array)) + + def this(v: Vector) = this(v.toBreeze) + + /** Converts the vector to a dense vector. */ + def toDense = new BreezeVectorWithNorm(vector.toDenseVector, norm) +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeansModel.scala b/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeansModel.scala index 980be931576dc..18abbf2758b86 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeansModel.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeansModel.scala @@ -19,24 +19,36 @@ package org.apache.spark.mllib.clustering import org.apache.spark.rdd.RDD import org.apache.spark.SparkContext._ +import org.apache.spark.mllib.linalg.Vector /** * A clustering model for K-means. Each point belongs to the cluster with the closest center. */ -class KMeansModel(val clusterCenters: Array[Array[Double]]) extends Serializable { +class KMeansModel(val clusterCenters: Array[Vector]) extends Serializable { + /** Total number of clusters. */ def k: Int = clusterCenters.length - /** Return the cluster index that a given point belongs to. */ - def predict(point: Array[Double]): Int = { - KMeans.findClosest(clusterCenters, point)._1 + /** Returns the cluster index that a given point belongs to. */ + def predict(point: Vector): Int = { + KMeans.findClosest(clusterCentersWithNorm, new BreezeVectorWithNorm(point))._1 + } + + /** Maps given points to their cluster indices. */ + def predict(points: RDD[Vector]): RDD[Int] = { + val centersWithNorm = clusterCentersWithNorm + points.map(p => KMeans.findClosest(centersWithNorm, new BreezeVectorWithNorm(p))._1) } /** * Return the K-means cost (sum of squared distances of points to their nearest center) for this * model on the given data. */ - def computeCost(data: RDD[Array[Double]]): Double = { - data.map(p => KMeans.pointCost(clusterCenters, p)).sum() + def computeCost(data: RDD[Vector]): Double = { + val centersWithNorm = clusterCentersWithNorm + data.map(p => KMeans.pointCost(centersWithNorm, new BreezeVectorWithNorm(p))).sum() } + + private def clusterCentersWithNorm: Iterable[BreezeVectorWithNorm] = + clusterCenters.map(new BreezeVectorWithNorm(_)) } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/clustering/LocalKMeans.scala b/mllib/src/main/scala/org/apache/spark/mllib/clustering/LocalKMeans.scala index baf8251d8fc53..2e3a4ce783de7 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/clustering/LocalKMeans.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/clustering/LocalKMeans.scala @@ -19,35 +19,37 @@ package org.apache.spark.mllib.clustering import scala.util.Random -import org.jblas.{DoubleMatrix, SimpleBlas} +import breeze.linalg.{Vector => BV, DenseVector => BDV, norm => breezeNorm} + +import org.apache.spark.Logging /** * An utility object to run K-means locally. This is private to the ML package because it's used * in the initialization of KMeans but not meant to be publicly exposed. */ -private[mllib] object LocalKMeans { +private[mllib] object LocalKMeans extends Logging { + /** * Run K-means++ on the weighted point set `points`. This first does the K-means++ - * initialization procedure and then roudns of Lloyd's algorithm. + * initialization procedure and then rounds of Lloyd's algorithm. */ def kMeansPlusPlus( seed: Int, - points: Array[Array[Double]], + points: Array[BreezeVectorWithNorm], weights: Array[Double], k: Int, - maxIterations: Int) - : Array[Array[Double]] = - { + maxIterations: Int + ): Array[BreezeVectorWithNorm] = { val rand = new Random(seed) - val dimensions = points(0).length - val centers = new Array[Array[Double]](k) + val dimensions = points(0).vector.length + val centers = new Array[BreezeVectorWithNorm](k) - // Initialize centers by sampling using the k-means++ procedure - centers(0) = pickWeighted(rand, points, weights) + // Initialize centers by sampling using the k-means++ procedure. + centers(0) = pickWeighted(rand, points, weights).toDense for (i <- 1 until k) { // Pick the next center with a probability proportional to cost under current centers - val curCenters = centers.slice(0, i) - val sum = points.zip(weights).map { case (p, w) => + val curCenters = centers.view.take(i) + val sum = points.view.zip(weights).map { case (p, w) => w * KMeans.pointCost(curCenters, p) }.sum val r = rand.nextDouble() * sum @@ -57,7 +59,7 @@ private[mllib] object LocalKMeans { cumulativeScore += weights(j) * KMeans.pointCost(curCenters, points(j)) j += 1 } - centers(i) = points(j-1) + centers(i) = points(j-1).toDense } // Run up to maxIterations iterations of Lloyd's algorithm @@ -66,29 +68,43 @@ private[mllib] object LocalKMeans { var moved = true while (moved && iteration < maxIterations) { moved = false - val sums = Array.fill(k)(new DoubleMatrix(dimensions)) val counts = Array.fill(k)(0.0) - for ((p, i) <- points.zipWithIndex) { + val sums = Array.fill(k)( + BDV.zeros[Double](dimensions).asInstanceOf[BV[Double]] + ) + var i = 0 + while (i < points.length) { + val p = points(i) val index = KMeans.findClosest(centers, p)._1 - SimpleBlas.axpy(weights(i), new DoubleMatrix(p), sums(index)) + breeze.linalg.axpy(weights(i), p.vector, sums(index)) counts(index) += weights(i) if (index != oldClosest(i)) { moved = true oldClosest(i) = index } + i += 1 } // Update centers - for (i <- 0 until k) { - if (counts(i) == 0.0) { + var j = 0 + while (j < k) { + if (counts(j) == 0.0) { // Assign center to a random point - centers(i) = points(rand.nextInt(points.length)) + centers(j) = points(rand.nextInt(points.length)).toDense } else { - centers(i) = sums(i).divi(counts(i)).data + sums(j) /= counts(j) + centers(j) = new BreezeVectorWithNorm(sums(j)) } + j += 1 } iteration += 1 } + if (iteration == maxIterations) { + logInfo(s"Local KMeans++ reached the max number of iterations: $maxIterations.") + } else { + logInfo(s"Local KMeans++ converged in $iteration iterations.") + } + centers } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/Matrices.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/Matrices.scala new file mode 100644 index 0000000000000..b11ba5d30fbd3 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/Matrices.scala @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg + +import breeze.linalg.{Matrix => BM, DenseMatrix => BDM} + +/** + * Trait for a local matrix. + */ +trait Matrix extends Serializable { + + /** Number of rows. */ + def numRows: Int + + /** Number of columns. */ + def numCols: Int + + /** Converts to a dense array in column major. */ + def toArray: Array[Double] + + /** Converts to a breeze matrix. */ + private[mllib] def toBreeze: BM[Double] + + /** Gets the (i, j)-th element. */ + private[mllib] def apply(i: Int, j: Int): Double = toBreeze(i, j) + + override def toString: String = toBreeze.toString() +} + +/** + * Column-majored dense matrix. + * The entry values are stored in a single array of doubles with columns listed in sequence. + * For example, the following matrix + * {{{ + * 1.0 2.0 + * 3.0 4.0 + * 5.0 6.0 + * }}} + * is stored as `[1.0, 3.0, 5.0, 2.0, 4.0, 6.0]`. + * + * @param numRows number of rows + * @param numCols number of columns + * @param values matrix entries in column major + */ +class DenseMatrix(val numRows: Int, val numCols: Int, val values: Array[Double]) extends Matrix { + + require(values.length == numRows * numCols) + + override def toArray: Array[Double] = values + + private[mllib] override def toBreeze: BM[Double] = new BDM[Double](numRows, numCols, values) +} + +/** + * Factory methods for [[org.apache.spark.mllib.linalg.Matrix]]. + */ +object Matrices { + + /** + * Creates a column-majored dense matrix. + * + * @param numRows number of rows + * @param numCols number of columns + * @param values matrix entries in column major + */ + def dense(numRows: Int, numCols: Int, values: Array[Double]): Matrix = { + new DenseMatrix(numRows, numCols, values) + } + + /** + * Creates a Matrix instance from a breeze matrix. + * @param breeze a breeze matrix + * @return a Matrix instance + */ + private[mllib] def fromBreeze(breeze: BM[Double]): Matrix = { + breeze match { + case dm: BDM[Double] => + require(dm.majorStride == dm.rows, + "Do not support stride size different from the number of rows.") + new DenseMatrix(dm.rows, dm.cols, dm.data) + case _ => + throw new UnsupportedOperationException( + s"Do not support conversion from type ${breeze.getClass.getName}.") + } + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/MatrixEntry.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/MatrixEntry.scala deleted file mode 100644 index 416996fcbe760..0000000000000 --- a/mllib/src/main/scala/org/apache/spark/mllib/linalg/MatrixEntry.scala +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.mllib.linalg - -/** - * Class that represents an entry in a sparse matrix of doubles. - * - * @param i row index (0 indexing used) - * @param j column index (0 indexing used) - * @param mval value of entry in matrix - */ -case class MatrixEntry(val i: Int, val j: Int, val mval: Double) diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/MatrixSVD.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/MatrixSVD.scala deleted file mode 100644 index 319f82b449096..0000000000000 --- a/mllib/src/main/scala/org/apache/spark/mllib/linalg/MatrixSVD.scala +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.mllib.linalg - -/** - * Class that represents the SV decomposition of a matrix - * - * @param U such that A = USV^T - * @param S such that A = USV^T - * @param V such that A = USV^T - */ -case class MatrixSVD(val U: SparseMatrix, - val S: SparseMatrix, - val V: SparseMatrix) diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/SVD.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/SVD.scala deleted file mode 100644 index 8803c4c1a07be..0000000000000 --- a/mllib/src/main/scala/org/apache/spark/mllib/linalg/SVD.scala +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.mllib.linalg - -import org.apache.spark.SparkContext -import org.apache.spark.SparkContext._ -import org.apache.spark.rdd.RDD - -import org.jblas.{DoubleMatrix, Singular, MatrixFunctions} - - -/** - * Class used to obtain singular value decompositions - */ -class SVD { - private var k: Int = 1 - - /** - * Set the number of top-k singular vectors to return - */ - def setK(k: Int): SVD = { - this.k = k - this - } - - /** - * Compute SVD using the current set parameters - */ - def compute(matrix: SparseMatrix) : MatrixSVD = { - SVD.sparseSVD(matrix, k) - } -} - - -/** - * Top-level methods for calling Singular Value Decomposition - * NOTE: All matrices are in 0-indexed sparse format RDD[((int, int), value)] - */ -object SVD { -/** - * Singular Value Decomposition for Tall and Skinny matrices. - * Given an m x n matrix A, this will compute matrices U, S, V such that - * A = U * S * V' - * - * There is no restriction on m, but we require n^2 doubles to fit in memory. - * Further, n should be less than m. - * - * The decomposition is computed by first computing A'A = V S^2 V', - * computing svd locally on that (since n x n is small), - * from which we recover S and V. - * Then we compute U via easy matrix multiplication - * as U = A * V * S^-1 - * - * Only the k largest singular values and associated vectors are found. - * If there are k such values, then the dimensions of the return will be: - * - * S is k x k and diagonal, holding the singular values on diagonal - * U is m x k and satisfies U'U = eye(k) - * V is n x k and satisfies V'V = eye(k) - * - * All input and output is expected in sparse matrix format, 0-indexed - * as tuples of the form ((i,j),value) all in RDDs using the - * SparseMatrix class - * - * @param matrix sparse matrix to factorize - * @param k Recover k singular values and vectors - * @return Three sparse matrices: U, S, V such that A = USV^T - */ - def sparseSVD( - matrix: SparseMatrix, - k: Int) - : MatrixSVD = - { - val data = matrix.data - val m = matrix.m - val n = matrix.n - - if (m < n || m <= 0 || n <= 0) { - throw new IllegalArgumentException("Expecting a tall and skinny matrix") - } - - if (k < 1 || k > n) { - throw new IllegalArgumentException("Must request up to n singular values") - } - - // Compute A^T A, assuming rows are sparse enough to fit in memory - val rows = data.map(entry => - (entry.i, (entry.j, entry.mval))).groupByKey() - val emits = rows.flatMap{ case (rowind, cols) => - cols.flatMap{ case (colind1, mval1) => - cols.map{ case (colind2, mval2) => - ((colind1, colind2), mval1*mval2) } } - }.reduceByKey(_ + _) - - // Construct jblas A^T A locally - val ata = DoubleMatrix.zeros(n, n) - for (entry <- emits.toArray) { - ata.put(entry._1._1, entry._1._2, entry._2) - } - - // Since A^T A is small, we can compute its SVD directly - val svd = Singular.sparseSVD(ata) - val V = svd(0) - val sigmas = MatrixFunctions.sqrt(svd(1)).toArray.filter(x => x > 1e-9) - - if (sigmas.size < k) { - throw new Exception("Not enough singular values to return") - } - - val sigma = sigmas.take(k) - - val sc = data.sparkContext - - // prepare V for returning - val retVdata = sc.makeRDD( - Array.tabulate(V.rows, sigma.length){ (i,j) => - MatrixEntry(i, j, V.get(i,j)) }.flatten) - val retV = SparseMatrix(retVdata, V.rows, sigma.length) - - val retSdata = sc.makeRDD(Array.tabulate(sigma.length){ - x => MatrixEntry(x, x, sigma(x))}) - - val retS = SparseMatrix(retSdata, sigma.length, sigma.length) - - // Compute U as U = A V S^-1 - // turn V S^-1 into an RDD as a sparse matrix - val vsirdd = sc.makeRDD(Array.tabulate(V.rows, sigma.length) - { (i,j) => ((i, j), V.get(i,j) / sigma(j)) }.flatten) - - // Multiply A by VS^-1 - val aCols = data.map(entry => (entry.j, (entry.i, entry.mval))) - val bRows = vsirdd.map(entry => (entry._1._1, (entry._1._2, entry._2))) - val retUdata = aCols.join(bRows).map( {case (key, ( (rowInd, rowVal), (colInd, colVal))) - => ((rowInd, colInd), rowVal*colVal)}).reduceByKey(_ + _) - .map{ case ((row, col), mval) => MatrixEntry(row, col, mval)} - val retU = SparseMatrix(retUdata, m, sigma.length) - - MatrixSVD(retU, retS, retV) - } - - - def main(args: Array[String]) { - if (args.length < 8) { - println("Usage: SVD " + - " ") - System.exit(1) - } - - val (master, inputFile, m, n, k, output_u, output_s, output_v) = - (args(0), args(1), args(2).toInt, args(3).toInt, - args(4).toInt, args(5), args(6), args(7)) - - val sc = new SparkContext(master, "SVD") - - val rawdata = sc.textFile(inputFile) - val data = rawdata.map { line => - val parts = line.split(',') - MatrixEntry(parts(0).toInt, parts(1).toInt, parts(2).toDouble) - } - - val decomposed = SVD.sparseSVD(SparseMatrix(data, m, n), k) - val u = decomposed.U.data - val s = decomposed.S.data - val v = decomposed.V.data - - println("Computed " + s.toArray.length + " singular values and vectors") - u.saveAsTextFile(output_u) - s.saveAsTextFile(output_s) - v.saveAsTextFile(output_v) - System.exit(0) - } -} - - diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/SingularValueDecomposition.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/SingularValueDecomposition.scala new file mode 100644 index 0000000000000..46b105457430c --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/SingularValueDecomposition.scala @@ -0,0 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg + +/** Represents singular value decomposition (SVD) factors. */ +case class SingularValueDecomposition[UType, VType](U: UType, s: Vector, V: VType) diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/SparseMatrix.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/SparseMatrix.scala deleted file mode 100644 index cbd1a2a5a4bd8..0000000000000 --- a/mllib/src/main/scala/org/apache/spark/mllib/linalg/SparseMatrix.scala +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.mllib.linalg - -import org.apache.spark.rdd.RDD - - -/** - * Class that represents a sparse matrix - * - * @param data RDD of nonzero entries - * @param m number of rows - * @param n numner of columns - */ -case class SparseMatrix(val data: RDD[MatrixEntry], val m: Int, val n: Int) diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala new file mode 100644 index 0000000000000..99a849f1c66b1 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala @@ -0,0 +1,188 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg + +import java.lang.{Iterable => JavaIterable, Integer => JavaInteger, Double => JavaDouble} +import java.util.Arrays + +import scala.annotation.varargs +import scala.collection.JavaConverters._ + +import breeze.linalg.{Vector => BV, DenseVector => BDV, SparseVector => BSV} + +/** + * Represents a numeric vector, whose index type is Int and value type is Double. + */ +trait Vector extends Serializable { + + /** + * Size of the vector. + */ + def size: Int + + /** + * Converts the instance to a double array. + */ + def toArray: Array[Double] + + override def equals(other: Any): Boolean = { + other match { + case v: Vector => + Arrays.equals(this.toArray, v.toArray) + case _ => false + } + } + + override def hashCode(): Int = Arrays.hashCode(this.toArray) + + /** + * Converts the instance to a breeze vector. + */ + private[mllib] def toBreeze: BV[Double] + + /** + * Gets the value of the ith element. + * @param i index + */ + private[mllib] def apply(i: Int): Double = toBreeze(i) +} + +/** + * Factory methods for [[org.apache.spark.mllib.linalg.Vector]]. + * We don't use the name `Vector` because Scala imports + * [[scala.collection.immutable.Vector]] by default. + */ +object Vectors { + + /** + * Creates a dense vector from its values. + */ + @varargs + def dense(firstValue: Double, otherValues: Double*): Vector = + new DenseVector((firstValue +: otherValues).toArray) + + // A dummy implicit is used to avoid signature collision with the one generated by @varargs. + /** + * Creates a dense vector from a double array. + */ + def dense(values: Array[Double]): Vector = new DenseVector(values) + + /** + * Creates a sparse vector providing its index array and value array. + * + * @param size vector size. + * @param indices index array, must be strictly increasing. + * @param values value array, must have the same length as indices. + */ + def sparse(size: Int, indices: Array[Int], values: Array[Double]): Vector = + new SparseVector(size, indices, values) + + /** + * Creates a sparse vector using unordered (index, value) pairs. + * + * @param size vector size. + * @param elements vector elements in (index, value) pairs. + */ + def sparse(size: Int, elements: Seq[(Int, Double)]): Vector = { + require(size > 0) + + val (indices, values) = elements.sortBy(_._1).unzip + var prev = -1 + indices.foreach { i => + require(prev < i, s"Found duplicate indices: $i.") + prev = i + } + require(prev < size) + + new SparseVector(size, indices.toArray, values.toArray) + } + + /** + * Creates a sparse vector using unordered (index, value) pairs in a Java friendly way. + * + * @param size vector size. + * @param elements vector elements in (index, value) pairs. + */ + def sparse(size: Int, elements: JavaIterable[(JavaInteger, JavaDouble)]): Vector = { + sparse(size, elements.asScala.map { case (i, x) => + (i.intValue(), x.doubleValue()) + }.toSeq) + } + + /** + * Creates a vector instance from a breeze vector. + */ + private[mllib] def fromBreeze(breezeVector: BV[Double]): Vector = { + breezeVector match { + case v: BDV[Double] => + require(v.offset == 0, s"Do not support non-zero offset ${v.offset}.") + require(v.stride == 1, s"Do not support stride other than 1, but got ${v.stride}.") + new DenseVector(v.data) + case v: BSV[Double] => + new SparseVector(v.length, v.index, v.data) + case v: BV[_] => + sys.error("Unsupported Breeze vector type: " + v.getClass.getName) + } + } +} + +/** + * A dense vector represented by a value array. + */ +class DenseVector(val values: Array[Double]) extends Vector { + + override def size: Int = values.length + + override def toString: String = values.mkString("[", ",", "]") + + override def toArray: Array[Double] = values + + private[mllib] override def toBreeze: BV[Double] = new BDV[Double](values) + + override def apply(i: Int) = values(i) +} + +/** + * A sparse vector represented by an index array and an value array. + * + * @param size size of the vector. + * @param indices index array, assume to be strictly increasing. + * @param values value array, must have the same length as the index array. + */ +class SparseVector( + override val size: Int, + val indices: Array[Int], + val values: Array[Double]) extends Vector { + + override def toString: String = { + "(" + size + "," + indices.zip(values).mkString("[", "," ,"]") + ")" + } + + override def toArray: Array[Double] = { + val data = new Array[Double](size) + var i = 0 + val nnz = indices.length + while (i < nnz) { + data(indices(i)) = values(i) + i += 1 + } + data + } + + private[mllib] override def toBreeze: BV[Double] = new BSV[Double](indices, values, size) +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/CoordinateMatrix.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/CoordinateMatrix.scala new file mode 100644 index 0000000000000..56b8fdcda66eb --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/CoordinateMatrix.scala @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg.distributed + +import breeze.linalg.{DenseMatrix => BDM} + +import org.apache.spark.annotation.Experimental +import org.apache.spark.rdd.RDD +import org.apache.spark.SparkContext._ +import org.apache.spark.mllib.linalg.Vectors + +/** + * Represents an entry in an distributed matrix. + * @param i row index + * @param j column index + * @param value value of the entry + */ +case class MatrixEntry(i: Long, j: Long, value: Double) + +/** + * :: Experimental :: + * Represents a matrix in coordinate format. + * + * @param entries matrix entries + * @param nRows number of rows. A non-positive value means unknown, and then the number of rows will + * be determined by the max row index plus one. + * @param nCols number of columns. A non-positive value means unknown, and then the number of + * columns will be determined by the max column index plus one. + */ +@Experimental +class CoordinateMatrix( + val entries: RDD[MatrixEntry], + private var nRows: Long, + private var nCols: Long) extends DistributedMatrix { + + /** Alternative constructor leaving matrix dimensions to be determined automatically. */ + def this(entries: RDD[MatrixEntry]) = this(entries, 0L, 0L) + + /** Gets or computes the number of columns. */ + override def numCols(): Long = { + if (nCols <= 0L) { + computeSize() + } + nCols + } + + /** Gets or computes the number of rows. */ + override def numRows(): Long = { + if (nRows <= 0L) { + computeSize() + } + nRows + } + + /** Converts to IndexedRowMatrix. The number of columns must be within the integer range. */ + def toIndexedRowMatrix(): IndexedRowMatrix = { + val nl = numCols() + if (nl > Int.MaxValue) { + sys.error(s"Cannot convert to a row-oriented format because the number of columns $nl is " + + "too large.") + } + val n = nl.toInt + val indexedRows = entries.map(entry => (entry.i, (entry.j.toInt, entry.value))) + .groupByKey() + .map { case (i, vectorEntries) => + IndexedRow(i, Vectors.sparse(n, vectorEntries.toSeq)) + } + new IndexedRowMatrix(indexedRows, numRows(), n) + } + + /** + * Converts to RowMatrix, dropping row indices after grouping by row index. + * The number of columns must be within the integer range. + */ + def toRowMatrix(): RowMatrix = { + toIndexedRowMatrix().toRowMatrix() + } + + /** Determines the size by computing the max row/column index. */ + private def computeSize() { + // Reduce will throw an exception if `entries` is empty. + val (m1, n1) = entries.map(entry => (entry.i, entry.j)).reduce { case ((i1, j1), (i2, j2)) => + (math.max(i1, i2), math.max(j1, j2)) + } + // There may be empty columns at the very right and empty rows at the very bottom. + nRows = math.max(nRows, m1 + 1L) + nCols = math.max(nCols, n1 + 1L) + } + + /** Collects data and assembles a local matrix. */ + private[mllib] override def toBreeze(): BDM[Double] = { + val m = numRows().toInt + val n = numCols().toInt + val mat = BDM.zeros[Double](m, n) + entries.collect().foreach { case MatrixEntry(i, j, value) => + mat(i.toInt, j.toInt) = value + } + mat + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/DistributedMatrix.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/DistributedMatrix.scala new file mode 100644 index 0000000000000..a0e26ce3bc465 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/DistributedMatrix.scala @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg.distributed + +import breeze.linalg.{DenseMatrix => BDM} + +/** + * Represents a distributively stored matrix backed by one or more RDDs. + */ +trait DistributedMatrix extends Serializable { + + /** Gets or computes the number of rows. */ + def numRows(): Long + + /** Gets or computes the number of columns. */ + def numCols(): Long + + /** Collects data and assembles a local dense breeze matrix (for test only). */ + private[mllib] def toBreeze(): BDM[Double] +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/IndexedRowMatrix.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/IndexedRowMatrix.scala new file mode 100644 index 0000000000000..132b3af72d9ce --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/IndexedRowMatrix.scala @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg.distributed + +import breeze.linalg.{DenseMatrix => BDM} + +import org.apache.spark.annotation.Experimental +import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg._ +import org.apache.spark.mllib.linalg.SingularValueDecomposition + +/** + * :: Experimental :: + * Represents a row of [[org.apache.spark.mllib.linalg.distributed.IndexedRowMatrix]]. + */ +@Experimental +case class IndexedRow(index: Long, vector: Vector) + +/** + * :: Experimental :: + * Represents a row-oriented [[org.apache.spark.mllib.linalg.distributed.DistributedMatrix]] with + * indexed rows. + * + * @param rows indexed rows of this matrix + * @param nRows number of rows. A non-positive value means unknown, and then the number of rows will + * be determined by the max row index plus one. + * @param nCols number of columns. A non-positive value means unknown, and then the number of + * columns will be determined by the size of the first row. + */ +@Experimental +class IndexedRowMatrix( + val rows: RDD[IndexedRow], + private var nRows: Long, + private var nCols: Int) extends DistributedMatrix { + + /** Alternative constructor leaving matrix dimensions to be determined automatically. */ + def this(rows: RDD[IndexedRow]) = this(rows, 0L, 0) + + override def numCols(): Long = { + if (nCols <= 0) { + // Calling `first` will throw an exception if `rows` is empty. + nCols = rows.first().vector.size + } + nCols + } + + override def numRows(): Long = { + if (nRows <= 0L) { + // Reduce will throw an exception if `rows` is empty. + nRows = rows.map(_.index).reduce(math.max) + 1L + } + nRows + } + + /** + * Drops row indices and converts this matrix to a + * [[org.apache.spark.mllib.linalg.distributed.RowMatrix]]. + */ + def toRowMatrix(): RowMatrix = { + new RowMatrix(rows.map(_.vector), 0L, nCols) + } + + /** + * Computes the singular value decomposition of this matrix. + * Denote this matrix by A (m x n), this will compute matrices U, S, V such that A = U * S * V'. + * + * There is no restriction on m, but we require `n^2` doubles to fit in memory. + * Further, n should be less than m. + + * The decomposition is computed by first computing A'A = V S^2 V', + * computing svd locally on that (since n x n is small), from which we recover S and V. + * Then we compute U via easy matrix multiplication as U = A * (V * S^-1). + * Note that this approach requires `O(n^3)` time on the master node. + * + * At most k largest non-zero singular values and associated vectors are returned. + * If there are k such values, then the dimensions of the return will be: + * + * U is an [[org.apache.spark.mllib.linalg.distributed.IndexedRowMatrix]] of size m x k that + * satisfies U'U = eye(k), + * s is a Vector of size k, holding the singular values in descending order, + * and V is a local Matrix of size n x k that satisfies V'V = eye(k). + * + * @param k number of singular values to keep. We might return less than k if there are + * numerically zero singular values. See rCond. + * @param computeU whether to compute U + * @param rCond the reciprocal condition number. All singular values smaller than rCond * sigma(0) + * are treated as zero, where sigma(0) is the largest singular value. + * @return SingularValueDecomposition(U, s, V) + */ + def computeSVD( + k: Int, + computeU: Boolean = false, + rCond: Double = 1e-9): SingularValueDecomposition[IndexedRowMatrix, Matrix] = { + val indices = rows.map(_.index) + val svd = toRowMatrix().computeSVD(k, computeU, rCond) + val U = if (computeU) { + val indexedRows = indices.zip(svd.U.rows).map { case (i, v) => + IndexedRow(i, v) + } + new IndexedRowMatrix(indexedRows, nRows, nCols) + } else { + null + } + SingularValueDecomposition(U, svd.s, svd.V) + } + + /** + * Multiply this matrix by a local matrix on the right. + * + * @param B a local matrix whose number of rows must match the number of columns of this matrix + * @return an IndexedRowMatrix representing the product, which preserves partitioning + */ + def multiply(B: Matrix): IndexedRowMatrix = { + val mat = toRowMatrix().multiply(B) + val indexedRows = rows.map(_.index).zip(mat.rows).map { case (i, v) => + IndexedRow(i, v) + } + new IndexedRowMatrix(indexedRows, nRows, nCols) + } + + /** + * Computes the Gramian matrix `A^T A`. + */ + def computeGramianMatrix(): Matrix = { + toRowMatrix().computeGramianMatrix() + } + + private[mllib] override def toBreeze(): BDM[Double] = { + val m = numRows().toInt + val n = numCols().toInt + val mat = BDM.zeros[Double](m, n) + rows.collect().foreach { case IndexedRow(rowIndex, vector) => + val i = rowIndex.toInt + vector.toBreeze.activeIterator.foreach { case (j, v) => + mat(i, j) = v + } + } + mat + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/RowMatrix.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/RowMatrix.scala new file mode 100644 index 0000000000000..f65f43dd3007b --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/RowMatrix.scala @@ -0,0 +1,347 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg.distributed + +import java.util + +import breeze.linalg.{DenseMatrix => BDM, DenseVector => BDV, svd => brzSvd} +import breeze.numerics.{sqrt => brzSqrt} +import com.github.fommil.netlib.BLAS.{getInstance => blas} + +import org.apache.spark.annotation.Experimental +import org.apache.spark.mllib.linalg._ +import org.apache.spark.rdd.RDD +import org.apache.spark.Logging + +/** + * :: Experimental :: + * Represents a row-oriented distributed Matrix with no meaningful row indices. + * + * @param rows rows stored as an RDD[Vector] + * @param nRows number of rows. A non-positive value means unknown, and then the number of rows will + * be determined by the number of records in the RDD `rows`. + * @param nCols number of columns. A non-positive value means unknown, and then the number of + * columns will be determined by the size of the first row. + */ +@Experimental +class RowMatrix( + val rows: RDD[Vector], + private var nRows: Long, + private var nCols: Int) extends DistributedMatrix with Logging { + + /** Alternative constructor leaving matrix dimensions to be determined automatically. */ + def this(rows: RDD[Vector]) = this(rows, 0L, 0) + + /** Gets or computes the number of columns. */ + override def numCols(): Long = { + if (nCols <= 0) { + // Calling `first` will throw an exception if `rows` is empty. + nCols = rows.first().size + } + nCols + } + + /** Gets or computes the number of rows. */ + override def numRows(): Long = { + if (nRows <= 0L) { + nRows = rows.count() + if (nRows == 0L) { + sys.error("Cannot determine the number of rows because it is not specified in the " + + "constructor and the rows RDD is empty.") + } + } + nRows + } + + /** + * Computes the Gramian matrix `A^T A`. + */ + def computeGramianMatrix(): Matrix = { + val n = numCols().toInt + val nt: Int = n * (n + 1) / 2 + + // Compute the upper triangular part of the gram matrix. + val GU = rows.aggregate(new BDV[Double](new Array[Double](nt)))( + seqOp = (U, v) => { + RowMatrix.dspr(1.0, v, U.data) + U + }, + combOp = (U1, U2) => U1 += U2 + ) + + RowMatrix.triuToFull(n, GU.data) + } + + /** + * Computes the singular value decomposition of this matrix. + * Denote this matrix by A (m x n), this will compute matrices U, S, V such that A = U * S * V'. + * + * There is no restriction on m, but we require `n^2` doubles to fit in memory. + * Further, n should be less than m. + + * The decomposition is computed by first computing A'A = V S^2 V', + * computing svd locally on that (since n x n is small), from which we recover S and V. + * Then we compute U via easy matrix multiplication as U = A * (V * S^-1). + * Note that this approach requires `O(n^3)` time on the master node. + * + * At most k largest non-zero singular values and associated vectors are returned. + * If there are k such values, then the dimensions of the return will be: + * + * U is a RowMatrix of size m x k that satisfies U'U = eye(k), + * s is a Vector of size k, holding the singular values in descending order, + * and V is a Matrix of size n x k that satisfies V'V = eye(k). + * + * @param k number of singular values to keep. We might return less than k if there are + * numerically zero singular values. See rCond. + * @param computeU whether to compute U + * @param rCond the reciprocal condition number. All singular values smaller than rCond * sigma(0) + * are treated as zero, where sigma(0) is the largest singular value. + * @return SingularValueDecomposition(U, s, V) + */ + def computeSVD( + k: Int, + computeU: Boolean = false, + rCond: Double = 1e-9): SingularValueDecomposition[RowMatrix, Matrix] = { + val n = numCols().toInt + require(k > 0 && k <= n, s"Request up to n singular values k=$k n=$n.") + + val G = computeGramianMatrix() + + // TODO: Use sparse SVD instead. + val (u: BDM[Double], sigmaSquares: BDV[Double], v: BDM[Double]) = + brzSvd(G.toBreeze.asInstanceOf[BDM[Double]]) + val sigmas: BDV[Double] = brzSqrt(sigmaSquares) + + // Determine effective rank. + val sigma0 = sigmas(0) + val threshold = rCond * sigma0 + var i = 0 + while (i < k && sigmas(i) >= threshold) { + i += 1 + } + val sk = i + + if (sk < k) { + logWarning(s"Requested $k singular values but only found $sk nonzeros.") + } + + val s = Vectors.dense(util.Arrays.copyOfRange(sigmas.data, 0, sk)) + val V = Matrices.dense(n, sk, util.Arrays.copyOfRange(u.data, 0, n * sk)) + + if (computeU) { + // N = Vk * Sk^{-1} + val N = new BDM[Double](n, sk, util.Arrays.copyOfRange(u.data, 0, n * sk)) + var i = 0 + var j = 0 + while (j < sk) { + i = 0 + val sigma = sigmas(j) + while (i < n) { + N(i, j) /= sigma + i += 1 + } + j += 1 + } + val U = this.multiply(Matrices.fromBreeze(N)) + SingularValueDecomposition(U, s, V) + } else { + SingularValueDecomposition(null, s, V) + } + } + + /** + * Computes the covariance matrix, treating each row as an observation. + * @return a local dense matrix of size n x n + */ + def computeCovariance(): Matrix = { + val n = numCols().toInt + + if (n > 10000) { + val mem = n * n * java.lang.Double.SIZE / java.lang.Byte.SIZE + logWarning(s"The number of columns $n is greater than 10000! " + + s"We need at least $mem bytes of memory.") + } + + val (m, mean) = rows.aggregate[(Long, BDV[Double])]((0L, BDV.zeros[Double](n)))( + seqOp = (s: (Long, BDV[Double]), v: Vector) => (s._1 + 1L, s._2 += v.toBreeze), + combOp = (s1: (Long, BDV[Double]), s2: (Long, BDV[Double])) => (s1._1 + s2._1, s1._2 += s2._2) + ) + + // Update _m if it is not set, or verify its value. + if (nRows <= 0L) { + nRows = m + } else { + require(nRows == m, + s"The number of rows $m is different from what specified or previously computed: ${nRows}.") + } + + mean :/= m.toDouble + + // We use the formula Cov(X, Y) = E[X * Y] - E[X] E[Y], which is not accurate if E[X * Y] is + // large but Cov(X, Y) is small, but it is good for sparse computation. + // TODO: find a fast and stable way for sparse data. + + val G = computeGramianMatrix().toBreeze.asInstanceOf[BDM[Double]] + + var i = 0 + var j = 0 + val m1 = m - 1.0 + var alpha = 0.0 + while (i < n) { + alpha = m / m1 * mean(i) + j = 0 + while (j < n) { + G(i, j) = G(i, j) / m1 - alpha * mean(j) + j += 1 + } + i += 1 + } + + Matrices.fromBreeze(G) + } + + /** + * Computes the top k principal components. + * Rows correspond to observations and columns correspond to variables. + * The principal components are stored a local matrix of size n-by-k. + * Each column corresponds for one principal component, + * and the columns are in descending order of component variance. + * + * @param k number of top principal components. + * @return a matrix of size n-by-k, whose columns are principal components + */ + def computePrincipalComponents(k: Int): Matrix = { + val n = numCols().toInt + require(k > 0 && k <= n, s"k = $k out of range (0, n = $n]") + + val Cov = computeCovariance().toBreeze.asInstanceOf[BDM[Double]] + + val (u: BDM[Double], _, _) = brzSvd(Cov) + + if (k == n) { + Matrices.dense(n, k, u.data) + } else { + Matrices.dense(n, k, util.Arrays.copyOfRange(u.data, 0, n * k)) + } + } + + /** + * Multiply this matrix by a local matrix on the right. + * + * @param B a local matrix whose number of rows must match the number of columns of this matrix + * @return a [[org.apache.spark.mllib.linalg.distributed.RowMatrix]] representing the product, + * which preserves partitioning + */ + def multiply(B: Matrix): RowMatrix = { + val n = numCols().toInt + require(n == B.numRows, s"Dimension mismatch: $n vs ${B.numRows}") + + require(B.isInstanceOf[DenseMatrix], + s"Only support dense matrix at this time but found ${B.getClass.getName}.") + + val Bb = rows.context.broadcast(B) + val AB = rows.mapPartitions({ iter => + val Bi = Bb.value.toBreeze.asInstanceOf[BDM[Double]] + iter.map(v => Vectors.fromBreeze(Bi.t * v.toBreeze)) + }, preservesPartitioning = true) + + new RowMatrix(AB, nRows, B.numCols) + } + + private[mllib] override def toBreeze(): BDM[Double] = { + val m = numRows().toInt + val n = numCols().toInt + val mat = BDM.zeros[Double](m, n) + var i = 0 + rows.collect().foreach { v => + v.toBreeze.activeIterator.foreach { case (j, v) => + mat(i, j) = v + } + i += 1 + } + mat + } +} + +object RowMatrix { + + /** + * Adds alpha * x * x.t to a matrix in-place. This is the same as BLAS's DSPR. + * + * @param U the upper triangular part of the matrix packed in an array (column major) + */ + private def dspr(alpha: Double, v: Vector, U: Array[Double]): Unit = { + // TODO: Find a better home (breeze?) for this method. + val n = v.size + v match { + case dv: DenseVector => + blas.dspr("U", n, 1.0, dv.values, 1, U) + case sv: SparseVector => + val indices = sv.indices + val values = sv.values + val nnz = indices.length + var colStartIdx = 0 + var prevCol = 0 + var col = 0 + var j = 0 + var i = 0 + var av = 0.0 + while (j < nnz) { + col = indices(j) + // Skip empty columns. + colStartIdx += (col - prevCol) * (col + prevCol + 1) / 2 + col = indices(j) + av = alpha * values(j) + i = 0 + while (i <= j) { + U(colStartIdx + indices(i)) += av * values(i) + i += 1 + } + j += 1 + prevCol = col + } + } + } + + /** + * Fills a full square matrix from its upper triangular part. + */ + private def triuToFull(n: Int, U: Array[Double]): Matrix = { + val G = new BDM[Double](n, n) + + var row = 0 + var col = 0 + var idx = 0 + var value = 0.0 + while (col < n) { + row = 0 + while (row < col) { + value = U(idx) + G(row, col) = value + G(col, row) = value + idx += 1 + row += 1 + } + G(col, col) = U(idx) + idx += 1 + col +=1 + } + + Matrices.dense(n, n, G.data) + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/optimization/Gradient.scala b/mllib/src/main/scala/org/apache/spark/mllib/optimization/Gradient.scala index 82124703da6cd..679842f831c2a 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/optimization/Gradient.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/optimization/Gradient.scala @@ -17,39 +17,55 @@ package org.apache.spark.mllib.optimization -import org.jblas.DoubleMatrix +import breeze.linalg.{axpy => brzAxpy} + +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.mllib.linalg.{Vectors, Vector} /** + * :: DeveloperApi :: * Class used to compute the gradient for a loss function, given a single data point. */ +@DeveloperApi abstract class Gradient extends Serializable { /** * Compute the gradient and loss given the features of a single data point. * - * @param data - Feature values for one data point. Column matrix of size dx1 - * where d is the number of features. - * @param label - Label for this data item. - * @param weights - Column matrix containing weights for every feature. + * @param data features for one data point + * @param label label for this data point + * @param weights weights/coefficients corresponding to features * - * @return A tuple of 2 elements. The first element is a column matrix containing the computed - * gradient and the second element is the loss computed at this data point. + * @return (gradient: Vector, loss: Double) + */ + def compute(data: Vector, label: Double, weights: Vector): (Vector, Double) + + /** + * Compute the gradient and loss given the features of a single data point, + * add the gradient to a provided vector to avoid creating new objects, and return loss. * + * @param data features for one data point + * @param label label for this data point + * @param weights weights/coefficients corresponding to features + * @param cumGradient the computed gradient will be added to this vector + * + * @return loss */ - def compute(data: DoubleMatrix, label: Double, weights: DoubleMatrix): - (DoubleMatrix, Double) + def compute(data: Vector, label: Double, weights: Vector, cumGradient: Vector): Double } /** + * :: DeveloperApi :: * Compute gradient and loss for a logistic loss function, as used in binary classification. * See also the documentation for the precise formulation. */ +@DeveloperApi class LogisticGradient extends Gradient { - override def compute(data: DoubleMatrix, label: Double, weights: DoubleMatrix): - (DoubleMatrix, Double) = { - val margin: Double = -1.0 * data.dot(weights) + override def compute(data: Vector, label: Double, weights: Vector): (Vector, Double) = { + val brzData = data.toBreeze + val brzWeights = weights.toBreeze + val margin: Double = -1.0 * brzWeights.dot(brzData) val gradientMultiplier = (1.0 / (1.0 + math.exp(margin))) - label - - val gradient = data.mul(gradientMultiplier) + val gradient = brzData * gradientMultiplier val loss = if (label > 0) { math.log(1 + math.exp(margin)) @@ -57,47 +73,105 @@ class LogisticGradient extends Gradient { math.log(1 + math.exp(margin)) - margin } - (gradient, loss) + (Vectors.fromBreeze(gradient), loss) + } + + override def compute( + data: Vector, + label: Double, + weights: Vector, + cumGradient: Vector): Double = { + val brzData = data.toBreeze + val brzWeights = weights.toBreeze + val margin: Double = -1.0 * brzWeights.dot(brzData) + val gradientMultiplier = (1.0 / (1.0 + math.exp(margin))) - label + + brzAxpy(gradientMultiplier, brzData, cumGradient.toBreeze) + + if (label > 0) { + math.log(1 + math.exp(margin)) + } else { + math.log(1 + math.exp(margin)) - margin + } } } /** + * :: DeveloperApi :: * Compute gradient and loss for a Least-squared loss function, as used in linear regression. * This is correct for the averaged least squares loss function (mean squared error) * L = 1/n ||A weights-y||^2 * See also the documentation for the precise formulation. */ +@DeveloperApi class LeastSquaresGradient extends Gradient { - override def compute(data: DoubleMatrix, label: Double, weights: DoubleMatrix): - (DoubleMatrix, Double) = { - val diff: Double = data.dot(weights) - label - + override def compute(data: Vector, label: Double, weights: Vector): (Vector, Double) = { + val brzData = data.toBreeze + val brzWeights = weights.toBreeze + val diff = brzWeights.dot(brzData) - label val loss = diff * diff - val gradient = data.mul(2.0 * diff) + val gradient = brzData * (2.0 * diff) - (gradient, loss) + (Vectors.fromBreeze(gradient), loss) + } + + override def compute( + data: Vector, + label: Double, + weights: Vector, + cumGradient: Vector): Double = { + val brzData = data.toBreeze + val brzWeights = weights.toBreeze + val diff = brzWeights.dot(brzData) - label + + brzAxpy(2.0 * diff, brzData, cumGradient.toBreeze) + + diff * diff } } /** + * :: DeveloperApi :: * Compute gradient and loss for a Hinge loss function, as used in SVM binary classification. * See also the documentation for the precise formulation. * NOTE: This assumes that the labels are {0,1} */ +@DeveloperApi class HingeGradient extends Gradient { - override def compute(data: DoubleMatrix, label: Double, weights: DoubleMatrix): - (DoubleMatrix, Double) = { + override def compute(data: Vector, label: Double, weights: Vector): (Vector, Double) = { + val brzData = data.toBreeze + val brzWeights = weights.toBreeze + val dotProduct = brzWeights.dot(brzData) + + // Our loss function with {0, 1} labels is max(0, 1 - (2y – 1) (f_w(x))) + // Therefore the gradient is -(2y - 1)*x + val labelScaled = 2 * label - 1.0 + + if (1.0 > labelScaled * dotProduct) { + (Vectors.fromBreeze(brzData * (-labelScaled)), 1.0 - labelScaled * dotProduct) + } else { + (Vectors.dense(new Array[Double](weights.size)), 0.0) + } + } - val dotProduct = data.dot(weights) + override def compute( + data: Vector, + label: Double, + weights: Vector, + cumGradient: Vector): Double = { + val brzData = data.toBreeze + val brzWeights = weights.toBreeze + val dotProduct = brzWeights.dot(brzData) // Our loss function with {0, 1} labels is max(0, 1 - (2y – 1) (f_w(x))) // Therefore the gradient is -(2y - 1)*x val labelScaled = 2 * label - 1.0 if (1.0 > labelScaled * dotProduct) { - (data.mul(-labelScaled), 1.0 - labelScaled * dotProduct) + brzAxpy(-labelScaled, brzData, cumGradient.toBreeze) + 1.0 - labelScaled * dotProduct } else { - (DoubleMatrix.zeros(1, weights.length), 0.0) + 0.0 } } } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/optimization/GradientDescent.scala b/mllib/src/main/scala/org/apache/spark/mllib/optimization/GradientDescent.scala index b967b22e818d3..f60417f21d4b9 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/optimization/GradientDescent.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/optimization/GradientDescent.scala @@ -17,19 +17,23 @@ package org.apache.spark.mllib.optimization -import org.apache.spark.Logging -import org.apache.spark.rdd.RDD +import scala.collection.mutable.ArrayBuffer -import org.jblas.DoubleMatrix +import breeze.linalg.{DenseVector => BDV} -import scala.collection.mutable.ArrayBuffer +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.Logging +import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.{Vectors, Vector} /** + * :: DeveloperApi :: * Class used to solve an optimization problem using Gradient Descent. * @param gradient Gradient function to be used. * @param updater Updater to be used to update weights after every iteration. */ -class GradientDescent(var gradient: Gradient, var updater: Updater) +@DeveloperApi +class GradientDescent(private var gradient: Gradient, private var updater: Updater) extends Optimizer with Logging { private var stepSize: Double = 1.0 @@ -91,24 +95,26 @@ class GradientDescent(var gradient: Gradient, var updater: Updater) this } - def optimize(data: RDD[(Double, Array[Double])], initialWeights: Array[Double]) - : Array[Double] = { - - val (weights, stochasticLossHistory) = GradientDescent.runMiniBatchSGD( - data, - gradient, - updater, - stepSize, - numIterations, - regParam, - miniBatchFraction, - initialWeights) + def optimize(data: RDD[(Double, Vector)], initialWeights: Vector): Vector = { + val (weights, _) = GradientDescent.runMiniBatchSGD( + data, + gradient, + updater, + stepSize, + numIterations, + regParam, + miniBatchFraction, + initialWeights) weights } } -// Top-level method to run gradient descent. +/** + * :: DeveloperApi :: + * Top-level method to run gradient descent. + */ +@DeveloperApi object GradientDescent extends Logging { /** * Run stochastic gradient descent (SGD) in parallel using mini batches. @@ -133,14 +139,14 @@ object GradientDescent extends Logging { * stochastic loss computed for every iteration. */ def runMiniBatchSGD( - data: RDD[(Double, Array[Double])], + data: RDD[(Double, Vector)], gradient: Gradient, updater: Updater, stepSize: Double, numIterations: Int, regParam: Double, miniBatchFraction: Double, - initialWeights: Array[Double]) : (Array[Double], Array[Double]) = { + initialWeights: Vector): (Vector, Array[Double]) = { val stochasticLossHistory = new ArrayBuffer[Double](numIterations) @@ -148,24 +154,27 @@ object GradientDescent extends Logging { val miniBatchSize = nexamples * miniBatchFraction // Initialize weights as a column vector - var weights = new DoubleMatrix(initialWeights.length, 1, initialWeights:_*) + var weights = Vectors.dense(initialWeights.toArray) /** * For the first iteration, the regVal will be initialized as sum of sqrt of * weights if it's L2 update; for L1 update; the same logic is followed. */ var regVal = updater.compute( - weights, new DoubleMatrix(initialWeights.length, 1), 0, 1, regParam)._2 + weights, Vectors.dense(new Array[Double](weights.size)), 0, 1, regParam)._2 for (i <- 1 to numIterations) { // Sample a subset (fraction miniBatchFraction) of the total data // compute and sum up the subgradients on this subset (this is one map-reduce) - val (gradientSum, lossSum) = data.sample(false, miniBatchFraction, 42 + i).map { - case (y, features) => - val featuresCol = new DoubleMatrix(features.length, 1, features:_*) - val (grad, loss) = gradient.compute(featuresCol, y, weights) - (grad, loss) - }.reduce((a, b) => (a._1.addi(b._1), a._2 + b._2)) + val (gradientSum, lossSum) = data.sample(false, miniBatchFraction, 42 + i) + .aggregate((BDV.zeros[Double](weights.size), 0.0))( + seqOp = (c, v) => (c, v) match { case ((grad, loss), (label, features)) => + val l = gradient.compute(features, label, weights, Vectors.fromBreeze(grad)) + (grad, loss + l) + }, + combOp = (c1, c2) => (c1, c2) match { case ((grad1, loss1), (grad2, loss2)) => + (grad1 += grad2, loss1 + loss2) + }) /** * NOTE(Xinghao): lossSum is computed using the weights from the previous iteration @@ -173,7 +182,7 @@ object GradientDescent extends Logging { */ stochasticLossHistory.append(lossSum / miniBatchSize + regVal) val update = updater.compute( - weights, gradientSum.div(miniBatchSize), stepSize, i, regParam) + weights, Vectors.fromBreeze(gradientSum / miniBatchSize), stepSize, i, regParam) weights = update._1 regVal = update._2 } @@ -181,6 +190,6 @@ object GradientDescent extends Logging { logInfo("GradientDescent.runMiniBatchSGD finished. Last 10 stochastic losses %s".format( stochasticLossHistory.takeRight(10).mkString(", "))) - (weights.toArray, stochasticLossHistory.toArray) + (weights, stochasticLossHistory.toArray) } } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/optimization/Optimizer.scala b/mllib/src/main/scala/org/apache/spark/mllib/optimization/Optimizer.scala index 94d30b56f212b..e41d9bbe18c37 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/optimization/Optimizer.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/optimization/Optimizer.scala @@ -19,11 +19,18 @@ package org.apache.spark.mllib.optimization import org.apache.spark.rdd.RDD -trait Optimizer { +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.mllib.linalg.Vector + +/** + * :: DeveloperApi :: + * Trait for optimization problem solvers. + */ +@DeveloperApi +trait Optimizer extends Serializable { /** * Solve the provided convex optimization problem. */ - def optimize(data: RDD[(Double, Array[Double])], initialWeights: Array[Double]): Array[Double] - + def optimize(data: RDD[(Double, Vector)], initialWeights: Vector): Vector } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/optimization/Updater.scala b/mllib/src/main/scala/org/apache/spark/mllib/optimization/Updater.scala index bf8f731459e99..3ed3a5b9b3843 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/optimization/Updater.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/optimization/Updater.scala @@ -18,9 +18,14 @@ package org.apache.spark.mllib.optimization import scala.math._ -import org.jblas.DoubleMatrix + +import breeze.linalg.{norm => brzNorm, axpy => brzAxpy, Vector => BV} + +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.mllib.linalg.{Vectors, Vector} /** + * :: DeveloperApi :: * Class used to perform steps (weight update) using Gradient Descent methods. * * For general minimization problems, or for regularized problems of the form @@ -32,6 +37,7 @@ import org.jblas.DoubleMatrix * The updater is responsible to also perform the update coming from the * regularization term R(w) (if any regularization is used). */ +@DeveloperApi abstract class Updater extends Serializable { /** * Compute an updated value for weights given the gradient, stepSize, iteration number and @@ -47,24 +53,37 @@ abstract class Updater extends Serializable { * @return A tuple of 2 elements. The first element is a column matrix containing updated weights, * and the second element is the regularization value computed using updated weights. */ - def compute(weightsOld: DoubleMatrix, gradient: DoubleMatrix, stepSize: Double, iter: Int, - regParam: Double): (DoubleMatrix, Double) + def compute( + weightsOld: Vector, + gradient: Vector, + stepSize: Double, + iter: Int, + regParam: Double): (Vector, Double) } /** + * :: DeveloperApi :: * A simple updater for gradient descent *without* any regularization. * Uses a step-size decreasing with the square root of the number of iterations. */ +@DeveloperApi class SimpleUpdater extends Updater { - override def compute(weightsOld: DoubleMatrix, gradient: DoubleMatrix, - stepSize: Double, iter: Int, regParam: Double): (DoubleMatrix, Double) = { + override def compute( + weightsOld: Vector, + gradient: Vector, + stepSize: Double, + iter: Int, + regParam: Double): (Vector, Double) = { val thisIterStepSize = stepSize / math.sqrt(iter) - val step = gradient.mul(thisIterStepSize) - (weightsOld.sub(step), 0) + val brzWeights: BV[Double] = weightsOld.toBreeze.toDenseVector + brzAxpy(-thisIterStepSize, gradient.toBreeze, brzWeights) + + (Vectors.fromBreeze(brzWeights), 0) } } /** + * :: DeveloperApi :: * Updater for L1 regularized problems. * R(w) = ||w||_1 * Uses a step-size decreasing with the square root of the number of iterations. @@ -82,39 +101,56 @@ class SimpleUpdater extends Updater { * * Equivalently, set weight component to signum(w) * max(0.0, abs(w) - shrinkageVal) */ +@DeveloperApi class L1Updater extends Updater { - override def compute(weightsOld: DoubleMatrix, gradient: DoubleMatrix, - stepSize: Double, iter: Int, regParam: Double): (DoubleMatrix, Double) = { + override def compute( + weightsOld: Vector, + gradient: Vector, + stepSize: Double, + iter: Int, + regParam: Double): (Vector, Double) = { val thisIterStepSize = stepSize / math.sqrt(iter) - val step = gradient.mul(thisIterStepSize) // Take gradient step - val newWeights = weightsOld.sub(step) + val brzWeights: BV[Double] = weightsOld.toBreeze.toDenseVector + brzAxpy(-thisIterStepSize, gradient.toBreeze, brzWeights) // Apply proximal operator (soft thresholding) val shrinkageVal = regParam * thisIterStepSize - (0 until newWeights.length).foreach { i => - val wi = newWeights.get(i) - newWeights.put(i, signum(wi) * max(0.0, abs(wi) - shrinkageVal)) + var i = 0 + while (i < brzWeights.length) { + val wi = brzWeights(i) + brzWeights(i) = signum(wi) * max(0.0, abs(wi) - shrinkageVal) + i += 1 } - (newWeights, newWeights.norm1 * regParam) + + (Vectors.fromBreeze(brzWeights), brzNorm(brzWeights, 1.0) * regParam) } } /** + * :: DeveloperApi :: * Updater for L2 regularized problems. * R(w) = 1/2 ||w||^2 * Uses a step-size decreasing with the square root of the number of iterations. */ +@DeveloperApi class SquaredL2Updater extends Updater { - override def compute(weightsOld: DoubleMatrix, gradient: DoubleMatrix, - stepSize: Double, iter: Int, regParam: Double): (DoubleMatrix, Double) = { - val thisIterStepSize = stepSize / math.sqrt(iter) - val step = gradient.mul(thisIterStepSize) + override def compute( + weightsOld: Vector, + gradient: Vector, + stepSize: Double, + iter: Int, + regParam: Double): (Vector, Double) = { // add up both updates from the gradient of the loss (= step) as well as // the gradient of the regularizer (= regParam * weightsOld) // w' = w - thisIterStepSize * (gradient + regParam * w) // w' = (1 - thisIterStepSize * regParam) * w - thisIterStepSize * gradient - val newWeights = weightsOld.mul(1.0 - thisIterStepSize * regParam).sub(step) - (newWeights, 0.5 * pow(newWeights.norm2, 2.0) * regParam) + val thisIterStepSize = stepSize / math.sqrt(iter) + val brzWeights: BV[Double] = weightsOld.toBreeze.toDenseVector + brzWeights :*= (1.0 - thisIterStepSize * regParam) + brzAxpy(-thisIterStepSize, gradient.toBreeze, brzWeights) + val norm = brzNorm(brzWeights, 2.0) + + (Vectors.fromBreeze(brzWeights), 0.5 * regParam * norm * norm) } } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/rdd/VectorRDDs.scala b/mllib/src/main/scala/org/apache/spark/mllib/rdd/VectorRDDs.scala new file mode 100644 index 0000000000000..9096d6a1a16d6 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/rdd/VectorRDDs.scala @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.rdd + +import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.{Vectors, Vector} + +/** + * Factory methods for `RDD[Vector]`. + */ +object VectorRDDs { + + /** + * Converts an `RDD[Array[Double]]` to `RDD[Vector]`. + */ + def fromArrayRDD(rdd: RDD[Array[Double]]): RDD[Vector] = rdd.map(v => Vectors.dense(v)) +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/recommendation/ALS.scala b/mllib/src/main/scala/org/apache/spark/mllib/recommendation/ALS.scala index 8958040e36640..5cc47de8ffdfc 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/recommendation/ALS.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/recommendation/ALS.scala @@ -22,6 +22,10 @@ import scala.math.{abs, sqrt} import scala.util.Random import scala.util.Sorting +import com.esotericsoftware.kryo.Kryo +import org.jblas.{DoubleMatrix, SimpleBlas, Solve} + +import org.apache.spark.annotation.Experimental import org.apache.spark.broadcast.Broadcast import org.apache.spark.{Logging, HashPartitioner, Partitioner, SparkContext, SparkConf} import org.apache.spark.storage.StorageLevel @@ -29,10 +33,6 @@ import org.apache.spark.rdd.RDD import org.apache.spark.serializer.KryoRegistrator import org.apache.spark.SparkContext._ -import com.esotericsoftware.kryo.Kryo -import org.jblas.{DoubleMatrix, SimpleBlas, Solve} - - /** * Out-link information for a user or product block. This includes the original user/product IDs * of the elements within this block, and the list of destination blocks that each user or @@ -89,10 +89,20 @@ case class Rating(val user: Int, val product: Int, val rating: Double) * indicated user * preferences rather than explicit ratings given to items. */ -class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var lambda: Double, - var implicitPrefs: Boolean, var alpha: Double) - extends Serializable with Logging -{ +class ALS private ( + private var numBlocks: Int, + private var rank: Int, + private var iterations: Int, + private var lambda: Double, + private var implicitPrefs: Boolean, + private var alpha: Double, + private var seed: Long = System.nanoTime() + ) extends Serializable with Logging { + + /** + * Constructs an ALS instance with default parameters: {numBlocks: -1, rank: 10, iterations: 10, + * lambda: 0.01, implicitPrefs: false, alpha: 1.0}. + */ def this() = this(-1, 10, 10, 0.01, false, 1.0) /** @@ -122,23 +132,37 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l this } + /** Sets whether to use implicit preference. Default: false. */ def setImplicitPrefs(implicitPrefs: Boolean): ALS = { this.implicitPrefs = implicitPrefs this } + /** + * :: Experimental :: + * Sets the constant used in computing confidence in implicit ALS. Default: 1.0. + */ + @Experimental def setAlpha(alpha: Double): ALS = { this.alpha = alpha this } + /** Sets a random seed to have deterministic results. */ + def setSeed(seed: Long): ALS = { + this.seed = seed + this + } + /** * Run ALS with the configured parameters on an input RDD of (user, product, rating) triples. * Returns a MatrixFactorizationModel with feature vectors for each user and product. */ def run(ratings: RDD[Rating]): MatrixFactorizationModel = { + val sc = ratings.context + val numBlocks = if (this.numBlocks == -1) { - math.max(ratings.context.defaultParallelism, ratings.partitions.size / 2) + math.max(sc.defaultParallelism, ratings.partitions.size / 2) } else { this.numBlocks } @@ -155,7 +179,7 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l // Initialize user and product factors randomly, but use a deterministic seed for each // partition so that fault recovery works - val seedGen = new Random() + val seedGen = new Random(seed) val seed1 = seedGen.nextInt() val seed2 = seedGen.nextInt() // Hash an integer to propagate random bits at all positions, similar to java.util.HashTable @@ -176,21 +200,41 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l } } - for (iter <- 1 to iterations) { - // perform ALS update - logInfo("Re-computing I given U (Iteration %d/%d)".format(iter, iterations)) - // YtY / XtX is an Option[DoubleMatrix] and is only required for the implicit feedback model - val YtY = computeYtY(users) - val YtYb = ratings.context.broadcast(YtY) - products = updateFeatures(users, userOutLinks, productInLinks, partitioner, rank, lambda, - alpha, YtYb) - logInfo("Re-computing U given I (Iteration %d/%d)".format(iter, iterations)) - val XtX = computeYtY(products) - val XtXb = ratings.context.broadcast(XtX) - users = updateFeatures(products, productOutLinks, userInLinks, partitioner, rank, lambda, - alpha, XtXb) + if (implicitPrefs) { + for (iter <- 1 to iterations) { + // perform ALS update + logInfo("Re-computing I given U (Iteration %d/%d)".format(iter, iterations)) + // Persist users because it will be called twice. + users.persist() + val YtY = Some(sc.broadcast(computeYtY(users))) + val previousProducts = products + products = updateFeatures(users, userOutLinks, productInLinks, partitioner, rank, lambda, + alpha, YtY) + previousProducts.unpersist() + logInfo("Re-computing U given I (Iteration %d/%d)".format(iter, iterations)) + products.persist() + val XtX = Some(sc.broadcast(computeYtY(products))) + val previousUsers = users + users = updateFeatures(products, productOutLinks, userInLinks, partitioner, rank, lambda, + alpha, XtX) + previousUsers.unpersist() + } + } else { + for (iter <- 1 to iterations) { + // perform ALS update + logInfo("Re-computing I given U (Iteration %d/%d)".format(iter, iterations)) + products = updateFeatures(users, userOutLinks, productInLinks, partitioner, rank, lambda, + alpha, YtY = None) + logInfo("Re-computing U given I (Iteration %d/%d)".format(iter, iterations)) + users = updateFeatures(products, productOutLinks, userInLinks, partitioner, rank, lambda, + alpha, YtY = None) + } } + // The last `products` will be used twice. One to generate the last `users` and the other to + // generate `productsOut`. So we cache it for better performance. + products.persist() + // Flatten and cache the two final RDDs to un-block them val usersOut = unblockFactors(users, userOutLinks) val productsOut = unblockFactors(products, productOutLinks) @@ -198,37 +242,70 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l usersOut.persist() productsOut.persist() + // Materialize usersOut and productsOut. + usersOut.count() + productsOut.count() + + products.unpersist() + + // Clean up. + userInLinks.unpersist() + userOutLinks.unpersist() + productInLinks.unpersist() + productOutLinks.unpersist() + new MatrixFactorizationModel(rank, usersOut, productsOut) } /** * Computes the (`rank x rank`) matrix `YtY`, where `Y` is the (`nui x rank`) matrix of factors - * for each user (or product), in a distributed fashion. Here `reduceByKeyLocally` is used as - * the driver program requires `YtY` to broadcast it to the slaves + * for each user (or product), in a distributed fashion. + * * @param factors the (block-distributed) user or product factor vectors - * @return Option[YtY] - whose value is only used in the implicit preference model + * @return YtY - whose value is only used in the implicit preference model */ - def computeYtY(factors: RDD[(Int, Array[Array[Double]])]) = { - if (implicitPrefs) { - Option( - factors.flatMapValues { case factorArray => - factorArray.view.map { vector => - val x = new DoubleMatrix(vector) - x.mmul(x.transpose()) - } - }.reduceByKeyLocally((a, b) => a.addi(b)) - .values - .reduce((a, b) => a.addi(b)) - ) - } else { - None + private def computeYtY(factors: RDD[(Int, Array[Array[Double]])]) = { + val n = rank * (rank + 1) / 2 + val LYtY = factors.values.aggregate(new DoubleMatrix(n))( seqOp = (L, Y) => { + Y.foreach(y => dspr(1.0, new DoubleMatrix(y), L)) + L + }, combOp = (L1, L2) => { + L1.addi(L2) + }) + val YtY = new DoubleMatrix(rank, rank) + fillFullMatrix(LYtY, YtY) + YtY + } + + /** + * Adds alpha * x * x.t to a matrix in-place. This is the same as BLAS's DSPR. + * + * @param L the lower triangular part of the matrix packed in an array (row major) + */ + private def dspr(alpha: Double, x: DoubleMatrix, L: DoubleMatrix) = { + val n = x.length + var i = 0 + var j = 0 + var idx = 0 + var axi = 0.0 + val xd = x.data + val Ld = L.data + while (i < n) { + axi = alpha * xd(i) + j = 0 + while (j <= i) { + Ld(idx) += axi * xd(j) + j += 1 + idx += 1 + } + i += 1 } } /** * Flatten out blocked user or product factors into an RDD of (id, factor vector) pairs */ - def unblockFactors(blockedFactors: RDD[(Int, Array[Array[Double]])], + private def unblockFactors(blockedFactors: RDD[(Int, Array[Array[Double]])], outLinks: RDD[(Int, OutLinkBlock)]) = { blockedFactors.join(outLinks).flatMap{ case (b, (factors, outLinkBlock)) => for (i <- 0 until factors.length) yield (outLinkBlock.elementIds(i), factors(i)) @@ -296,8 +373,11 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l val outLinkBlock = makeOutLinkBlock(numBlocks, ratings) Iterator.single((blockId, (inLinkBlock, outLinkBlock))) }, true) - links.persist(StorageLevel.MEMORY_AND_DISK) - (links.mapValues(_._1), links.mapValues(_._2)) + val inLinks = links.mapValues(_._1) + val outLinks = links.mapValues(_._2) + inLinks.persist(StorageLevel.MEMORY_AND_DISK) + outLinks.persist(StorageLevel.MEMORY_AND_DISK) + (inLinks, outLinks) } /** @@ -329,7 +409,7 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l rank: Int, lambda: Double, alpha: Double, - YtY: Broadcast[Option[DoubleMatrix]]) + YtY: Option[Broadcast[DoubleMatrix]]) : RDD[(Int, Array[Array[Double]])] = { val numBlocks = products.partitions.size @@ -352,12 +432,12 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l * Compute the new feature vectors for a block of the users matrix given the list of factors * it received from each product and its InLinkBlock. */ - def updateBlock(messages: Seq[(Int, Array[Array[Double]])], inLinkBlock: InLinkBlock, - rank: Int, lambda: Double, alpha: Double, YtY: Broadcast[Option[DoubleMatrix]]) + private def updateBlock(messages: Iterable[(Int, Array[Array[Double]])], inLinkBlock: InLinkBlock, + rank: Int, lambda: Double, alpha: Double, YtY: Option[Broadcast[DoubleMatrix]]) : Array[Array[Double]] = { // Sort the incoming block factor messages by block ID and make them an array - val blockFactors = messages.sortBy(_._1).map(_._2).toArray // Array[Array[Double]] + val blockFactors = messages.toSeq.sortBy(_._1).map(_._2).toArray // Array[Array[Double]] val numBlocks = blockFactors.length val numUsers = inLinkBlock.elementIds.length @@ -376,62 +456,44 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l for (productBlock <- 0 until numBlocks) { for (p <- 0 until blockFactors(productBlock).length) { val x = new DoubleMatrix(blockFactors(productBlock)(p)) - fillXtX(x, tempXtX) + tempXtX.fill(0.0) + dspr(1.0, x, tempXtX) val (us, rs) = inLinkBlock.ratingsForBlock(productBlock)(p) for (i <- 0 until us.length) { - implicitPrefs match { - case false => - userXtX(us(i)).addi(tempXtX) - SimpleBlas.axpy(rs(i), x, userXy(us(i))) - case true => - // Extension to the original paper to handle rs(i) < 0. confidence is a function - // of |rs(i)| instead so that it is never negative: - val confidence = 1 + alpha * abs(rs(i)) - userXtX(us(i)).addi(tempXtX.mul(confidence - 1)) - // For rs(i) < 0, the corresponding entry in P is 0 now, not 1 -- negative rs(i) - // means we try to reconstruct 0. We add terms only where P = 1, so, term below - // is now only added for rs(i) > 0: - if (rs(i) > 0) { - SimpleBlas.axpy(confidence, x, userXy(us(i))) - } + if (implicitPrefs) { + // Extension to the original paper to handle rs(i) < 0. confidence is a function + // of |rs(i)| instead so that it is never negative: + val confidence = 1 + alpha * abs(rs(i)) + SimpleBlas.axpy(confidence - 1.0, tempXtX, userXtX(us(i))) + // For rs(i) < 0, the corresponding entry in P is 0 now, not 1 -- negative rs(i) + // means we try to reconstruct 0. We add terms only where P = 1, so, term below + // is now only added for rs(i) > 0: + if (rs(i) > 0) { + SimpleBlas.axpy(confidence, x, userXy(us(i))) + } + } else { + userXtX(us(i)).addi(tempXtX) + SimpleBlas.axpy(rs(i), x, userXy(us(i))) } } } } // Solve the least-squares problem for each user and return the new feature vectors - userXtX.zipWithIndex.map{ case (triangularXtX, index) => + Array.range(0, numUsers).map { index => // Compute the full XtX matrix from the lower-triangular part we got above - fillFullMatrix(triangularXtX, fullXtX) + fillFullMatrix(userXtX(index), fullXtX) // Add regularization (0 until rank).foreach(i => fullXtX.data(i*rank + i) += lambda) // Solve the resulting matrix, which is symmetric and positive-definite - implicitPrefs match { - case false => Solve.solvePositive(fullXtX, userXy(index)).data - case true => Solve.solvePositive(fullXtX.add(YtY.value.get), userXy(index)).data + if (implicitPrefs) { + Solve.solvePositive(fullXtX.addi(YtY.get.value), userXy(index)).data + } else { + Solve.solvePositive(fullXtX, userXy(index)).data } } } - /** - * Set xtxDest to the lower-triangular part of x transpose * x. For efficiency in summing - * these matrices, we store xtxDest as only rank * (rank+1) / 2 values, namely the values - * at (0,0), (1,0), (1,1), (2,0), (2,1), (2,2), etc in that order. - */ - private def fillXtX(x: DoubleMatrix, xtxDest: DoubleMatrix) { - var i = 0 - var pos = 0 - while (i < x.length) { - var j = 0 - while (j <= i) { - xtxDest.data(pos) = x.data(i) * x.data(j) - pos += 1 - j += 1 - } - i += 1 - } - } - /** * Given a triangular matrix in the order of fillXtX above, compute the full symmetric square * matrix that it represents, storing it into destMatrix. @@ -455,9 +517,10 @@ class ALS private (var numBlocks: Int, var rank: Int, var iterations: Int, var l /** - * Top-level methods for calling Alternating Least Squares (ALS) matrix factorizaton. + * Top-level methods for calling Alternating Least Squares (ALS) matrix factorization. */ object ALS { + /** * Train a matrix factorization model given an RDD of ratings given by users to some products, * in the form of (userID, productID, rating) pairs. We approximate the ratings matrix as the @@ -470,15 +533,39 @@ object ALS { * @param iterations number of iterations of ALS (recommended: 10-20) * @param lambda regularization factor (recommended: 0.01) * @param blocks level of parallelism to split computation into + * @param seed random seed */ def train( ratings: RDD[Rating], rank: Int, iterations: Int, lambda: Double, - blocks: Int) - : MatrixFactorizationModel = - { + blocks: Int, + seed: Long + ): MatrixFactorizationModel = { + new ALS(blocks, rank, iterations, lambda, false, 1.0, seed).run(ratings) + } + + /** + * Train a matrix factorization model given an RDD of ratings given by users to some products, + * in the form of (userID, productID, rating) pairs. We approximate the ratings matrix as the + * product of two lower-rank matrices of a given rank (number of features). To solve for these + * features, we run a given number of iterations of ALS. This is done using a level of + * parallelism given by `blocks`. + * + * @param ratings RDD of (userID, productID, rating) pairs + * @param rank number of features to use + * @param iterations number of iterations of ALS (recommended: 10-20) + * @param lambda regularization factor (recommended: 0.01) + * @param blocks level of parallelism to split computation into + */ + def train( + ratings: RDD[Rating], + rank: Int, + iterations: Int, + lambda: Double, + blocks: Int + ): MatrixFactorizationModel = { new ALS(blocks, rank, iterations, lambda, false, 1.0).run(ratings) } @@ -495,8 +582,7 @@ object ALS { * @param lambda regularization factor (recommended: 0.01) */ def train(ratings: RDD[Rating], rank: Int, iterations: Int, lambda: Double) - : MatrixFactorizationModel = - { + : MatrixFactorizationModel = { train(ratings, rank, iterations, lambda, -1) } @@ -512,8 +598,7 @@ object ALS { * @param iterations number of iterations of ALS (recommended: 10-20) */ def train(ratings: RDD[Rating], rank: Int, iterations: Int) - : MatrixFactorizationModel = - { + : MatrixFactorizationModel = { train(ratings, rank, iterations, 0.01, -1) } @@ -530,6 +615,7 @@ object ALS { * @param lambda regularization factor (recommended: 0.01) * @param blocks level of parallelism to split computation into * @param alpha confidence parameter (only applies when immplicitPrefs = true) + * @param seed random seed */ def trainImplicit( ratings: RDD[Rating], @@ -537,9 +623,34 @@ object ALS { iterations: Int, lambda: Double, blocks: Int, - alpha: Double) - : MatrixFactorizationModel = - { + alpha: Double, + seed: Long + ): MatrixFactorizationModel = { + new ALS(blocks, rank, iterations, lambda, true, alpha, seed).run(ratings) + } + + /** + * Train a matrix factorization model given an RDD of 'implicit preferences' given by users + * to some products, in the form of (userID, productID, preference) pairs. We approximate the + * ratings matrix as the product of two lower-rank matrices of a given rank (number of features). + * To solve for these features, we run a given number of iterations of ALS. This is done using + * a level of parallelism given by `blocks`. + * + * @param ratings RDD of (userID, productID, rating) pairs + * @param rank number of features to use + * @param iterations number of iterations of ALS (recommended: 10-20) + * @param lambda regularization factor (recommended: 0.01) + * @param blocks level of parallelism to split computation into + * @param alpha confidence parameter (only applies when immplicitPrefs = true) + */ + def trainImplicit( + ratings: RDD[Rating], + rank: Int, + iterations: Int, + lambda: Double, + blocks: Int, + alpha: Double + ): MatrixFactorizationModel = { new ALS(blocks, rank, iterations, lambda, true, alpha).run(ratings) } @@ -555,8 +666,8 @@ object ALS { * @param iterations number of iterations of ALS (recommended: 10-20) * @param lambda regularization factor (recommended: 0.01) */ - def trainImplicit(ratings: RDD[Rating], rank: Int, iterations: Int, lambda: Double, - alpha: Double): MatrixFactorizationModel = { + def trainImplicit(ratings: RDD[Rating], rank: Int, iterations: Int, lambda: Double, alpha: Double) + : MatrixFactorizationModel = { trainImplicit(ratings, rank, iterations, lambda, -1, alpha) } @@ -573,8 +684,7 @@ object ALS { * @param iterations number of iterations of ALS (recommended: 10-20) */ def trainImplicit(ratings: RDD[Rating], rank: Int, iterations: Int) - : MatrixFactorizationModel = - { + : MatrixFactorizationModel = { trainImplicit(ratings, rank, iterations, 0.01, -1, 1.0) } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/recommendation/MatrixFactorizationModel.scala b/mllib/src/main/scala/org/apache/spark/mllib/recommendation/MatrixFactorizationModel.scala index 443fc5de5bf04..471546cd82c7d 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/recommendation/MatrixFactorizationModel.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/recommendation/MatrixFactorizationModel.scala @@ -17,13 +17,14 @@ package org.apache.spark.mllib.recommendation +import org.jblas._ + +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.api.java.JavaRDD import org.apache.spark.rdd.RDD import org.apache.spark.SparkContext._ import org.apache.spark.mllib.api.python.PythonMLLibAPI -import org.jblas._ -import org.apache.spark.api.java.JavaRDD - /** * Model representing the result of matrix factorization. @@ -68,6 +69,7 @@ class MatrixFactorizationModel( } /** + * :: DeveloperApi :: * Predict the rating of many users for many products. * This is a Java stub for python predictAll() * diff --git a/mllib/src/main/scala/org/apache/spark/mllib/regression/GeneralizedLinearAlgorithm.scala b/mllib/src/main/scala/org/apache/spark/mllib/regression/GeneralizedLinearAlgorithm.scala index f98b0b536deaa..3bd0017aa196a 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/regression/GeneralizedLinearAlgorithm.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/regression/GeneralizedLinearAlgorithm.scala @@ -17,11 +17,13 @@ package org.apache.spark.mllib.regression +import breeze.linalg.{DenseVector => BDV, SparseVector => BSV} + +import org.apache.spark.annotation.Experimental import org.apache.spark.{Logging, SparkException} import org.apache.spark.rdd.RDD import org.apache.spark.mllib.optimization._ - -import org.jblas.DoubleMatrix +import org.apache.spark.mllib.linalg.{Vectors, Vector} /** * GeneralizedLinearModel (GLM) represents a model trained using @@ -31,12 +33,9 @@ import org.jblas.DoubleMatrix * @param weights Weights computed for every feature. * @param intercept Intercept computed for this model. */ -abstract class GeneralizedLinearModel(val weights: Array[Double], val intercept: Double) +abstract class GeneralizedLinearModel(val weights: Vector, val intercept: Double) extends Serializable { - // Create a column vector that can be used for predictions - private val weightsMatrix = new DoubleMatrix(weights.length, 1, weights:_*) - /** * Predict the result given a data point and the weights learned. * @@ -44,8 +43,7 @@ abstract class GeneralizedLinearModel(val weights: Array[Double], val intercept: * @param weightMatrix Column vector containing the weights of the model * @param intercept Intercept of the model. */ - def predictPoint(dataMatrix: DoubleMatrix, weightMatrix: DoubleMatrix, - intercept: Double): Double + protected def predictPoint(dataMatrix: Vector, weightMatrix: Vector, intercept: Double): Double /** * Predict values for the given data set using the model trained. @@ -53,16 +51,13 @@ abstract class GeneralizedLinearModel(val weights: Array[Double], val intercept: * @param testData RDD representing data points to be predicted * @return RDD[Double] where each entry contains the corresponding prediction */ - def predict(testData: RDD[Array[Double]]): RDD[Double] = { + def predict(testData: RDD[Vector]): RDD[Double] = { // A small optimization to avoid serializing the entire model. Only the weightsMatrix // and intercept is needed. - val localWeights = weightsMatrix + val localWeights = weights val localIntercept = intercept - testData.map { x => - val dataMatrix = new DoubleMatrix(1, x.length, x:_*) - predictPoint(dataMatrix, localWeights, localIntercept) - } + testData.map(v => predictPoint(v, localWeights, localIntercept)) } /** @@ -71,14 +66,13 @@ abstract class GeneralizedLinearModel(val weights: Array[Double], val intercept: * @param testData array representing a single data point * @return Double prediction from the trained model */ - def predict(testData: Array[Double]): Double = { - val dataMat = new DoubleMatrix(1, testData.length, testData:_*) - predictPoint(dataMat, weightsMatrix, intercept) + def predict(testData: Vector): Double = { + predictPoint(testData, weights, intercept) } } /** - * GeneralizedLinearAlgorithm implements methods to train a Genearalized Linear Model (GLM). + * GeneralizedLinearAlgorithm implements methods to train a Generalized Linear Model (GLM). * This class should be extended with an Optimizer to create a new GLM. */ abstract class GeneralizedLinearAlgorithm[M <: GeneralizedLinearModel] @@ -86,8 +80,10 @@ abstract class GeneralizedLinearAlgorithm[M <: GeneralizedLinearModel] protected val validators: Seq[RDD[LabeledPoint] => Boolean] = List() - val optimizer: Optimizer + /** The optimizer to solve the problem. */ + def optimizer: Optimizer + /** Whether to add intercept (default: true). */ protected var addIntercept: Boolean = true protected var validateData: Boolean = true @@ -95,7 +91,7 @@ abstract class GeneralizedLinearAlgorithm[M <: GeneralizedLinearModel] /** * Create a model given the weights and intercept */ - protected def createModel(weights: Array[Double], intercept: Double): M + protected def createModel(weights: Vector, intercept: Double): M /** * Set if the algorithm should add an intercept. Default true. @@ -106,8 +102,10 @@ abstract class GeneralizedLinearAlgorithm[M <: GeneralizedLinearModel] } /** + * :: Experimental :: * Set if the algorithm should validate data before training. Default true. */ + @Experimental def setValidateData(validateData: Boolean): this.type = { this.validateData = validateData this @@ -117,44 +115,56 @@ abstract class GeneralizedLinearAlgorithm[M <: GeneralizedLinearModel] * Run the algorithm with the configured parameters on an input * RDD of LabeledPoint entries. */ - def run(input: RDD[LabeledPoint]) : M = { - val nfeatures: Int = input.first().features.length - val initialWeights = Array.fill(nfeatures)(1.0) + def run(input: RDD[LabeledPoint]): M = { + val numFeatures: Int = input.first().features.size + val initialWeights = Vectors.dense(new Array[Double](numFeatures)) run(input, initialWeights) } + /** Prepends one to the input vector. */ + private def prependOne(vector: Vector): Vector = { + val vector1 = vector.toBreeze match { + case dv: BDV[Double] => BDV.vertcat(BDV.ones[Double](1), dv) + case sv: BSV[Double] => BSV.vertcat(new BSV[Double](Array(0), Array(1.0), 1), sv) + case v: Any => throw new IllegalArgumentException("Do not support vector type " + v.getClass) + } + Vectors.fromBreeze(vector1) + } + /** * Run the algorithm with the configured parameters on an input RDD * of LabeledPoint entries starting from the initial weights provided. */ - def run(input: RDD[LabeledPoint], initialWeights: Array[Double]) : M = { + def run(input: RDD[LabeledPoint], initialWeights: Vector): M = { // Check the data properties before running the optimizer if (validateData && !validators.forall(func => func(input))) { throw new SparkException("Input validation failed.") } - // Add a extra variable consisting of all 1.0's for the intercept. + // Prepend an extra variable consisting of all 1.0's for the intercept. val data = if (addIntercept) { - input.map(labeledPoint => (labeledPoint.label, Array(1.0, labeledPoint.features:_*))) + input.map(labeledPoint => (labeledPoint.label, prependOne(labeledPoint.features))) } else { input.map(labeledPoint => (labeledPoint.label, labeledPoint.features)) } val initialWeightsWithIntercept = if (addIntercept) { - Array(1.0, initialWeights:_*) + prependOne(initialWeights) } else { initialWeights } - val weights = optimizer.optimize(data, initialWeightsWithIntercept) - val intercept = weights(0) - val weightsScaled = weights.tail + val weightsWithIntercept = optimizer.optimize(data, initialWeightsWithIntercept) - val model = createModel(weightsScaled, intercept) + val intercept = if (addIntercept) weightsWithIntercept(0) else 0.0 + val weights = + if (addIntercept) { + Vectors.dense(weightsWithIntercept.toArray.slice(1, weightsWithIntercept.size)) + } else { + weightsWithIntercept + } - logInfo("Final model weights " + model.weights.mkString(",")) - logInfo("Final model intercept " + model.intercept) - model + createModel(weights, intercept) } } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/regression/LabeledPoint.scala b/mllib/src/main/scala/org/apache/spark/mllib/regression/LabeledPoint.scala index 1a18292fe3f3b..3deab1ab785b9 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/regression/LabeledPoint.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/regression/LabeledPoint.scala @@ -17,14 +17,16 @@ package org.apache.spark.mllib.regression +import org.apache.spark.mllib.linalg.Vector + /** * Class that represents the features and labels of a data point. * * @param label Label for this data point. * @param features List of features for this data point. */ -case class LabeledPoint(label: Double, features: Array[Double]) { +case class LabeledPoint(label: Double, features: Vector) { override def toString: String = { - "LabeledPoint(%s, %s)".format(label, features.mkString("[", ", ", "]")) + "LabeledPoint(%s, %s)".format(label, features) } } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/regression/Lasso.scala b/mllib/src/main/scala/org/apache/spark/mllib/regression/Lasso.scala index fb2bc9b92a51c..5f0812fd2e0eb 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/regression/Lasso.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/regression/Lasso.scala @@ -17,12 +17,11 @@ package org.apache.spark.mllib.regression -import org.apache.spark.{Logging, SparkContext} -import org.apache.spark.rdd.RDD +import org.apache.spark.SparkContext +import org.apache.spark.mllib.linalg.Vector import org.apache.spark.mllib.optimization._ import org.apache.spark.mllib.util.MLUtils - -import org.jblas.DoubleMatrix +import org.apache.spark.rdd.RDD /** * Regression model trained using Lasso. @@ -31,14 +30,16 @@ import org.jblas.DoubleMatrix * @param intercept Intercept computed for this model. */ class LassoModel( - override val weights: Array[Double], + override val weights: Vector, override val intercept: Double) extends GeneralizedLinearModel(weights, intercept) with RegressionModel with Serializable { - override def predictPoint(dataMatrix: DoubleMatrix, weightMatrix: DoubleMatrix, - intercept: Double) = { - dataMatrix.dot(weightMatrix) + intercept + override protected def predictPoint( + dataMatrix: Vector, + weightMatrix: Vector, + intercept: Double): Double = { + weightMatrix.toBreeze.dot(dataMatrix.toBreeze) + intercept } } @@ -51,62 +52,37 @@ class LassoModel( * See also the documentation for the precise formulation. */ class LassoWithSGD private ( - var stepSize: Double, - var numIterations: Int, - var regParam: Double, - var miniBatchFraction: Double) - extends GeneralizedLinearAlgorithm[LassoModel] - with Serializable { - - val gradient = new LeastSquaresGradient() - val updater = new L1Updater() - @transient val optimizer = new GradientDescent(gradient, updater).setStepSize(stepSize) + private var stepSize: Double, + private var numIterations: Int, + private var regParam: Double, + private var miniBatchFraction: Double) + extends GeneralizedLinearAlgorithm[LassoModel] with Serializable { + + private val gradient = new LeastSquaresGradient() + private val updater = new L1Updater() + override val optimizer = new GradientDescent(gradient, updater) + .setStepSize(stepSize) .setNumIterations(numIterations) .setRegParam(regParam) .setMiniBatchFraction(miniBatchFraction) // We don't want to penalize the intercept, so set this to false. - setIntercept(false) - - var yMean = 0.0 - var xColMean: DoubleMatrix = _ - var xColSd: DoubleMatrix = _ + super.setIntercept(false) /** - * Construct a Lasso object with default parameters + * Construct a Lasso object with default parameters: {stepSize: 1.0, numIterations: 100, + * regParam: 1.0, miniBatchFraction: 1.0}. */ def this() = this(1.0, 100, 1.0, 1.0) - def createModel(weights: Array[Double], intercept: Double) = { - val weightsMat = new DoubleMatrix(weights.length + 1, 1, (Array(intercept) ++ weights):_*) - val weightsScaled = weightsMat.div(xColSd) - val interceptScaled = yMean - (weightsMat.transpose().mmul(xColMean.div(xColSd)).get(0)) - - new LassoModel(weightsScaled.data, interceptScaled) + override def setIntercept(addIntercept: Boolean): this.type = { + // TODO: Support adding intercept. + if (addIntercept) throw new UnsupportedOperationException("Adding intercept is not supported.") + this } - override def run( - input: RDD[LabeledPoint], - initialWeights: Array[Double]) - : LassoModel = - { - val nfeatures: Int = input.first.features.length - val nexamples: Long = input.count() - - // To avoid penalizing the intercept, we center and scale the data. - val stats = MLUtils.computeStats(input, nfeatures, nexamples) - yMean = stats._1 - xColMean = stats._2 - xColSd = stats._3 - - val normalizedData = input.map { point => - val yNormalized = point.label - yMean - val featuresMat = new DoubleMatrix(nfeatures, 1, point.features:_*) - val featuresNormalized = featuresMat.sub(xColMean).divi(xColSd) - LabeledPoint(yNormalized, featuresNormalized.toArray) - } - - super.run(normalizedData, initialWeights) + override protected def createModel(weights: Vector, intercept: Double) = { + new LassoModel(weights, intercept) } } @@ -136,11 +112,9 @@ object LassoWithSGD { stepSize: Double, regParam: Double, miniBatchFraction: Double, - initialWeights: Array[Double]) - : LassoModel = - { - new LassoWithSGD(stepSize, numIterations, regParam, miniBatchFraction).run(input, - initialWeights) + initialWeights: Vector): LassoModel = { + new LassoWithSGD(stepSize, numIterations, regParam, miniBatchFraction) + .run(input, initialWeights) } /** @@ -160,9 +134,7 @@ object LassoWithSGD { numIterations: Int, stepSize: Double, regParam: Double, - miniBatchFraction: Double) - : LassoModel = - { + miniBatchFraction: Double): LassoModel = { new LassoWithSGD(stepSize, numIterations, regParam, miniBatchFraction).run(input) } @@ -182,9 +154,7 @@ object LassoWithSGD { input: RDD[LabeledPoint], numIterations: Int, stepSize: Double, - regParam: Double) - : LassoModel = - { + regParam: Double): LassoModel = { train(input, numIterations, stepSize, regParam, 1.0) } @@ -200,9 +170,7 @@ object LassoWithSGD { */ def train( input: RDD[LabeledPoint], - numIterations: Int) - : LassoModel = - { + numIterations: Int): LassoModel = { train(input, numIterations, 1.0, 1.0, 1.0) } @@ -214,7 +182,8 @@ object LassoWithSGD { val sc = new SparkContext(args(0), "Lasso") val data = MLUtils.loadLabeledData(sc, args(1)) val model = LassoWithSGD.train(data, args(4).toInt, args(2).toDouble, args(3).toDouble) - println("Weights: " + model.weights.mkString("[", ", ", "]")) + + println("Weights: " + model.weights) println("Intercept: " + model.intercept) sc.stop() diff --git a/mllib/src/main/scala/org/apache/spark/mllib/regression/LinearRegression.scala b/mllib/src/main/scala/org/apache/spark/mllib/regression/LinearRegression.scala index 8ee40addb25d9..228fa8db3e721 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/regression/LinearRegression.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/regression/LinearRegression.scala @@ -19,11 +19,10 @@ package org.apache.spark.mllib.regression import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.Vector import org.apache.spark.mllib.optimization._ import org.apache.spark.mllib.util.MLUtils -import org.jblas.DoubleMatrix - /** * Regression model trained using LinearRegression. * @@ -31,14 +30,15 @@ import org.jblas.DoubleMatrix * @param intercept Intercept computed for this model. */ class LinearRegressionModel( - override val weights: Array[Double], - override val intercept: Double) - extends GeneralizedLinearModel(weights, intercept) - with RegressionModel with Serializable { - - override def predictPoint(dataMatrix: DoubleMatrix, weightMatrix: DoubleMatrix, - intercept: Double) = { - dataMatrix.dot(weightMatrix) + intercept + override val weights: Vector, + override val intercept: Double) + extends GeneralizedLinearModel(weights, intercept) with RegressionModel with Serializable { + + override protected def predictPoint( + dataMatrix: Vector, + weightMatrix: Vector, + intercept: Double): Double = { + weightMatrix.toBreeze.dot(dataMatrix.toBreeze) + intercept } } @@ -52,24 +52,25 @@ class LinearRegressionModel( * See also the documentation for the precise formulation. */ class LinearRegressionWithSGD private ( - var stepSize: Double, - var numIterations: Int, - var miniBatchFraction: Double) - extends GeneralizedLinearAlgorithm[LinearRegressionModel] - with Serializable { - - val gradient = new LeastSquaresGradient() - val updater = new SimpleUpdater() - val optimizer = new GradientDescent(gradient, updater).setStepSize(stepSize) + private var stepSize: Double, + private var numIterations: Int, + private var miniBatchFraction: Double) + extends GeneralizedLinearAlgorithm[LinearRegressionModel] with Serializable { + + private val gradient = new LeastSquaresGradient() + private val updater = new SimpleUpdater() + override val optimizer = new GradientDescent(gradient, updater) + .setStepSize(stepSize) .setNumIterations(numIterations) .setMiniBatchFraction(miniBatchFraction) /** - * Construct a LinearRegression object with default parameters + * Construct a LinearRegression object with default parameters: {stepSize: 1.0, + * numIterations: 100, miniBatchFraction: 1.0}. */ def this() = this(1.0, 100, 1.0) - def createModel(weights: Array[Double], intercept: Double) = { + override protected def createModel(weights: Vector, intercept: Double) = { new LinearRegressionModel(weights, intercept) } } @@ -98,11 +99,9 @@ object LinearRegressionWithSGD { numIterations: Int, stepSize: Double, miniBatchFraction: Double, - initialWeights: Array[Double]) - : LinearRegressionModel = - { - new LinearRegressionWithSGD(stepSize, numIterations, miniBatchFraction).run(input, - initialWeights) + initialWeights: Vector): LinearRegressionModel = { + new LinearRegressionWithSGD(stepSize, numIterations, miniBatchFraction) + .run(input, initialWeights) } /** @@ -120,9 +119,7 @@ object LinearRegressionWithSGD { input: RDD[LabeledPoint], numIterations: Int, stepSize: Double, - miniBatchFraction: Double) - : LinearRegressionModel = - { + miniBatchFraction: Double): LinearRegressionModel = { new LinearRegressionWithSGD(stepSize, numIterations, miniBatchFraction).run(input) } @@ -140,9 +137,7 @@ object LinearRegressionWithSGD { def train( input: RDD[LabeledPoint], numIterations: Int, - stepSize: Double) - : LinearRegressionModel = - { + stepSize: Double): LinearRegressionModel = { train(input, numIterations, stepSize, 1.0) } @@ -158,9 +153,7 @@ object LinearRegressionWithSGD { */ def train( input: RDD[LabeledPoint], - numIterations: Int) - : LinearRegressionModel = - { + numIterations: Int): LinearRegressionModel = { train(input, numIterations, 1.0, 1.0) } @@ -172,7 +165,7 @@ object LinearRegressionWithSGD { val sc = new SparkContext(args(0), "LinearRegression") val data = MLUtils.loadLabeledData(sc, args(1)) val model = LinearRegressionWithSGD.train(data, args(3).toInt, args(2).toDouble) - println("Weights: " + model.weights.mkString("[", ", ", "]")) + println("Weights: " + model.weights) println("Intercept: " + model.intercept) sc.stop() diff --git a/mllib/src/main/scala/org/apache/spark/mllib/regression/RegressionModel.scala b/mllib/src/main/scala/org/apache/spark/mllib/regression/RegressionModel.scala index 423afc32d665c..5e4b8a345b1c5 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/regression/RegressionModel.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/regression/RegressionModel.scala @@ -18,6 +18,7 @@ package org.apache.spark.mllib.regression import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.Vector trait RegressionModel extends Serializable { /** @@ -26,7 +27,7 @@ trait RegressionModel extends Serializable { * @param testData RDD representing data points to be predicted * @return RDD[Double] where each entry contains the corresponding prediction */ - def predict(testData: RDD[Array[Double]]): RDD[Double] + def predict(testData: RDD[Vector]): RDD[Double] /** * Predict values for a single data point using the model trained. @@ -34,5 +35,5 @@ trait RegressionModel extends Serializable { * @param testData array representing a single data point * @return Double prediction from the trained model */ - def predict(testData: Array[Double]): Double + def predict(testData: Vector): Double } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/regression/RidgeRegression.scala b/mllib/src/main/scala/org/apache/spark/mllib/regression/RidgeRegression.scala index c504d3d40c773..e702027c7c170 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/regression/RidgeRegression.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/regression/RidgeRegression.scala @@ -21,8 +21,7 @@ import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.mllib.optimization._ import org.apache.spark.mllib.util.MLUtils - -import org.jblas.DoubleMatrix +import org.apache.spark.mllib.linalg.Vector /** * Regression model trained using RidgeRegression. @@ -31,14 +30,16 @@ import org.jblas.DoubleMatrix * @param intercept Intercept computed for this model. */ class RidgeRegressionModel( - override val weights: Array[Double], + override val weights: Vector, override val intercept: Double) extends GeneralizedLinearModel(weights, intercept) with RegressionModel with Serializable { - override def predictPoint(dataMatrix: DoubleMatrix, weightMatrix: DoubleMatrix, - intercept: Double) = { - dataMatrix.dot(weightMatrix) + intercept + override protected def predictPoint( + dataMatrix: Vector, + weightMatrix: Vector, + intercept: Double): Double = { + weightMatrix.toBreeze.dot(dataMatrix.toBreeze) + intercept } } @@ -51,63 +52,38 @@ class RidgeRegressionModel( * See also the documentation for the precise formulation. */ class RidgeRegressionWithSGD private ( - var stepSize: Double, - var numIterations: Int, - var regParam: Double, - var miniBatchFraction: Double) - extends GeneralizedLinearAlgorithm[RidgeRegressionModel] - with Serializable { + private var stepSize: Double, + private var numIterations: Int, + private var regParam: Double, + private var miniBatchFraction: Double) + extends GeneralizedLinearAlgorithm[RidgeRegressionModel] with Serializable { - val gradient = new LeastSquaresGradient() - val updater = new SquaredL2Updater() + private val gradient = new LeastSquaresGradient() + private val updater = new SquaredL2Updater() - @transient val optimizer = new GradientDescent(gradient, updater).setStepSize(stepSize) + override val optimizer = new GradientDescent(gradient, updater) + .setStepSize(stepSize) .setNumIterations(numIterations) .setRegParam(regParam) .setMiniBatchFraction(miniBatchFraction) // We don't want to penalize the intercept in RidgeRegression, so set this to false. - setIntercept(false) - - var yMean = 0.0 - var xColMean: DoubleMatrix = _ - var xColSd: DoubleMatrix = _ + super.setIntercept(false) /** - * Construct a RidgeRegression object with default parameters + * Construct a RidgeRegression object with default parameters: {stepSize: 1.0, numIterations: 100, + * regParam: 1.0, miniBatchFraction: 1.0}. */ def this() = this(1.0, 100, 1.0, 1.0) - def createModel(weights: Array[Double], intercept: Double) = { - val weightsMat = new DoubleMatrix(weights.length + 1, 1, (Array(intercept) ++ weights):_*) - val weightsScaled = weightsMat.div(xColSd) - val interceptScaled = yMean - weightsMat.transpose().mmul(xColMean.div(xColSd)).get(0) - - new RidgeRegressionModel(weightsScaled.data, interceptScaled) + override def setIntercept(addIntercept: Boolean): this.type = { + // TODO: Support adding intercept. + if (addIntercept) throw new UnsupportedOperationException("Adding intercept is not supported.") + this } - override def run( - input: RDD[LabeledPoint], - initialWeights: Array[Double]) - : RidgeRegressionModel = - { - val nfeatures: Int = input.first().features.length - val nexamples: Long = input.count() - - // To avoid penalizing the intercept, we center and scale the data. - val stats = MLUtils.computeStats(input, nfeatures, nexamples) - yMean = stats._1 - xColMean = stats._2 - xColSd = stats._3 - - val normalizedData = input.map { point => - val yNormalized = point.label - yMean - val featuresMat = new DoubleMatrix(nfeatures, 1, point.features:_*) - val featuresNormalized = featuresMat.sub(xColMean).divi(xColSd) - LabeledPoint(yNormalized, featuresNormalized.toArray) - } - - super.run(normalizedData, initialWeights) + override protected def createModel(weights: Vector, intercept: Double) = { + new RidgeRegressionModel(weights, intercept) } } @@ -136,9 +112,7 @@ object RidgeRegressionWithSGD { stepSize: Double, regParam: Double, miniBatchFraction: Double, - initialWeights: Array[Double]) - : RidgeRegressionModel = - { + initialWeights: Vector): RidgeRegressionModel = { new RidgeRegressionWithSGD(stepSize, numIterations, regParam, miniBatchFraction).run( input, initialWeights) } @@ -159,9 +133,7 @@ object RidgeRegressionWithSGD { numIterations: Int, stepSize: Double, regParam: Double, - miniBatchFraction: Double) - : RidgeRegressionModel = - { + miniBatchFraction: Double): RidgeRegressionModel = { new RidgeRegressionWithSGD(stepSize, numIterations, regParam, miniBatchFraction).run(input) } @@ -180,9 +152,7 @@ object RidgeRegressionWithSGD { input: RDD[LabeledPoint], numIterations: Int, stepSize: Double, - regParam: Double) - : RidgeRegressionModel = - { + regParam: Double): RidgeRegressionModel = { train(input, numIterations, stepSize, regParam, 1.0) } @@ -197,23 +167,22 @@ object RidgeRegressionWithSGD { */ def train( input: RDD[LabeledPoint], - numIterations: Int) - : RidgeRegressionModel = - { + numIterations: Int): RidgeRegressionModel = { train(input, numIterations, 1.0, 1.0, 1.0) } def main(args: Array[String]) { if (args.length != 5) { - println("Usage: RidgeRegression " + - " ") + println("Usage: RidgeRegression " + + " ") System.exit(1) } val sc = new SparkContext(args(0), "RidgeRegression") val data = MLUtils.loadLabeledData(sc, args(1)) val model = RidgeRegressionWithSGD.train(data, args(4).toInt, args(2).toDouble, args(3).toDouble) - println("Weights: " + model.weights.mkString("[", ", ", "]")) + + println("Weights: " + model.weights) println("Intercept: " + model.intercept) sc.stop() diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/DecisionTree.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/DecisionTree.scala new file mode 100644 index 0000000000000..3019447ce4cd9 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/DecisionTree.scala @@ -0,0 +1,1154 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree + +import scala.util.control.Breaks._ + +import org.apache.spark.annotation.Experimental +import org.apache.spark.{Logging, SparkContext} +import org.apache.spark.SparkContext._ +import org.apache.spark.mllib.regression.LabeledPoint +import org.apache.spark.mllib.tree.configuration.Strategy +import org.apache.spark.mllib.tree.configuration.Algo._ +import org.apache.spark.mllib.tree.configuration.FeatureType._ +import org.apache.spark.mllib.tree.configuration.QuantileStrategy._ +import org.apache.spark.mllib.tree.impurity.{Entropy, Gini, Impurity, Variance} +import org.apache.spark.mllib.tree.model._ +import org.apache.spark.rdd.RDD +import org.apache.spark.util.random.XORShiftRandom +import org.apache.spark.mllib.linalg.{Vector, Vectors} + +/** + * :: Experimental :: + * A class that implements a decision tree algorithm for classification and regression. It + * supports both continuous and categorical features. + * @param strategy The configuration parameters for the tree algorithm which specify the type + * of algorithm (classification, regression, etc.), feature type (continuous, + * categorical), depth of the tree, quantile calculation strategy, etc. + */ +@Experimental +class DecisionTree (private val strategy: Strategy) extends Serializable with Logging { + + /** + * Method to train a decision tree model over an RDD + * @param input RDD of [[org.apache.spark.mllib.regression.LabeledPoint]] used as training data + * @return a DecisionTreeModel that can be used for prediction + */ + def train(input: RDD[LabeledPoint]): DecisionTreeModel = { + + // Cache input RDD for speedup during multiple passes. + input.cache() + logDebug("algo = " + strategy.algo) + + // Find the splits and the corresponding bins (interval between the splits) using a sample + // of the input data. + val (splits, bins) = DecisionTree.findSplitsBins(input, strategy) + logDebug("numSplits = " + bins(0).length) + + // depth of the decision tree + val maxDepth = strategy.maxDepth + // the max number of nodes possible given the depth of the tree + val maxNumNodes = scala.math.pow(2, maxDepth).toInt - 1 + // Initialize an array to hold filters applied to points for each node. + val filters = new Array[List[Filter]](maxNumNodes) + // The filter at the top node is an empty list. + filters(0) = List() + // Initialize an array to hold parent impurity calculations for each node. + val parentImpurities = new Array[Double](maxNumNodes) + // dummy value for top node (updated during first split calculation) + val nodes = new Array[Node](maxNumNodes) + + + /* + * The main idea here is to perform level-wise training of the decision tree nodes thus + * reducing the passes over the data from l to log2(l) where l is the total number of nodes. + * Each data sample is checked for validity w.r.t to each node at a given level -- i.e., + * the sample is only used for the split calculation at the node if the sampled would have + * still survived the filters of the parent nodes. + */ + + // TODO: Convert for loop to while loop + breakable { + for (level <- 0 until maxDepth) { + + logDebug("#####################################") + logDebug("level = " + level) + logDebug("#####################################") + + // Find best split for all nodes at a level. + val splitsStatsForLevel = DecisionTree.findBestSplits(input, parentImpurities, strategy, + level, filters, splits, bins) + + for ((nodeSplitStats, index) <- splitsStatsForLevel.view.zipWithIndex) { + // Extract info for nodes at the current level. + extractNodeInfo(nodeSplitStats, level, index, nodes) + // Extract info for nodes at the next lower level. + extractInfoForLowerLevels(level, index, maxDepth, nodeSplitStats, parentImpurities, + filters) + logDebug("final best split = " + nodeSplitStats._1) + } + require(scala.math.pow(2, level) == splitsStatsForLevel.length) + // Check whether all the nodes at the current level at leaves. + val allLeaf = splitsStatsForLevel.forall(_._2.gain <= 0) + logDebug("all leaf = " + allLeaf) + if (allLeaf) break // no more tree construction + } + } + + // Initialize the top or root node of the tree. + val topNode = nodes(0) + // Build the full tree using the node info calculated in the level-wise best split calculations. + topNode.build(nodes) + + new DecisionTreeModel(topNode, strategy.algo) + } + + /** + * Extract the decision tree node information for the given tree level and node index + */ + private def extractNodeInfo( + nodeSplitStats: (Split, InformationGainStats), + level: Int, + index: Int, + nodes: Array[Node]): Unit = { + val split = nodeSplitStats._1 + val stats = nodeSplitStats._2 + val nodeIndex = scala.math.pow(2, level).toInt - 1 + index + val isLeaf = (stats.gain <= 0) || (level == strategy.maxDepth - 1) + val node = new Node(nodeIndex, stats.predict, isLeaf, Some(split), None, None, Some(stats)) + logDebug("Node = " + node) + nodes(nodeIndex) = node + } + + /** + * Extract the decision tree node information for the children of the node + */ + private def extractInfoForLowerLevels( + level: Int, + index: Int, + maxDepth: Int, + nodeSplitStats: (Split, InformationGainStats), + parentImpurities: Array[Double], + filters: Array[List[Filter]]): Unit = { + // 0 corresponds to the left child node and 1 corresponds to the right child node. + // TODO: Convert to while loop + for (i <- 0 to 1) { + // Calculate the index of the node from the node level and the index at the current level. + val nodeIndex = scala.math.pow(2, level + 1).toInt - 1 + 2 * index + i + if (level < maxDepth - 1) { + val impurity = if (i == 0) { + nodeSplitStats._2.leftImpurity + } else { + nodeSplitStats._2.rightImpurity + } + logDebug("nodeIndex = " + nodeIndex + ", impurity = " + impurity) + // noting the parent impurities + parentImpurities(nodeIndex) = impurity + // noting the parents filters for the child nodes + val childFilter = new Filter(nodeSplitStats._1, if (i == 0) -1 else 1) + filters(nodeIndex) = childFilter :: filters((nodeIndex - 1) / 2) + for (filter <- filters(nodeIndex)) { + logDebug("Filter = " + filter) + } + } + } + } +} + +object DecisionTree extends Serializable with Logging { + + /** + * Method to train a decision tree model where the instances are represented as an RDD of + * (label, features) pairs. The method supports binary classification and regression. For the + * binary classification, the label for each instance should either be 0 or 1 to denote the two + * classes. The parameters for the algorithm are specified using the strategy parameter. + * + * @param input RDD of [[org.apache.spark.mllib.regression.LabeledPoint]] used as training data + * for DecisionTree + * @param strategy The configuration parameters for the tree algorithm which specify the type + * of algorithm (classification, regression, etc.), feature type (continuous, + * categorical), depth of the tree, quantile calculation strategy, etc. + * @return a DecisionTreeModel that can be used for prediction + */ + def train(input: RDD[LabeledPoint], strategy: Strategy): DecisionTreeModel = { + new DecisionTree(strategy).train(input: RDD[LabeledPoint]) + } + + /** + * Method to train a decision tree model where the instances are represented as an RDD of + * (label, features) pairs. The method supports binary classification and regression. For the + * binary classification, the label for each instance should either be 0 or 1 to denote the two + * classes. + * + * @param input input RDD of [[org.apache.spark.mllib.regression.LabeledPoint]] used as + * training data + * @param algo algorithm, classification or regression + * @param impurity impurity criterion used for information gain calculation + * @param maxDepth maxDepth maximum depth of the tree + * @return a DecisionTreeModel that can be used for prediction + */ + def train( + input: RDD[LabeledPoint], + algo: Algo, + impurity: Impurity, + maxDepth: Int): DecisionTreeModel = { + val strategy = new Strategy(algo,impurity,maxDepth) + new DecisionTree(strategy).train(input: RDD[LabeledPoint]) + } + + + /** + * Method to train a decision tree model where the instances are represented as an RDD of + * (label, features) pairs. The decision tree method supports binary classification and + * regression. For the binary classification, the label for each instance should either be 0 or + * 1 to denote the two classes. The method also supports categorical features inputs where the + * number of categories can specified using the categoricalFeaturesInfo option. + * + * @param input input RDD of [[org.apache.spark.mllib.regression.LabeledPoint]] used as + * training data for DecisionTree + * @param algo classification or regression + * @param impurity criterion used for information gain calculation + * @param maxDepth maximum depth of the tree + * @param maxBins maximum number of bins used for splitting features + * @param quantileCalculationStrategy algorithm for calculating quantiles + * @param categoricalFeaturesInfo A map storing information about the categorical variables and + * the number of discrete values they take. For example, + * an entry (n -> k) implies the feature n is categorical with k + * categories 0, 1, 2, ... , k-1. It's important to note that + * features are zero-indexed. + * @return a DecisionTreeModel that can be used for prediction + */ + def train( + input: RDD[LabeledPoint], + algo: Algo, + impurity: Impurity, + maxDepth: Int, + maxBins: Int, + quantileCalculationStrategy: QuantileStrategy, + categoricalFeaturesInfo: Map[Int,Int]): DecisionTreeModel = { + val strategy = new Strategy(algo, impurity, maxDepth, maxBins, quantileCalculationStrategy, + categoricalFeaturesInfo) + new DecisionTree(strategy).train(input: RDD[LabeledPoint]) + } + + private val InvalidBinIndex = -1 + + /** + * Returns an array of optimal splits for all nodes at a given level + * + * @param input RDD of [[org.apache.spark.mllib.regression.LabeledPoint]] used as training data + * for DecisionTree + * @param parentImpurities Impurities for all parent nodes for the current level + * @param strategy [[org.apache.spark.mllib.tree.configuration.Strategy]] instance containing + * parameters for construction the DecisionTree + * @param level Level of the tree + * @param filters Filters for all nodes at a given level + * @param splits possible splits for all features + * @param bins possible bins for all features + * @return array of splits with best splits for all nodes at a given level. + */ + protected[tree] def findBestSplits( + input: RDD[LabeledPoint], + parentImpurities: Array[Double], + strategy: Strategy, + level: Int, + filters: Array[List[Filter]], + splits: Array[Array[Split]], + bins: Array[Array[Bin]]): Array[(Split, InformationGainStats)] = { + + /* + * The high-level description for the best split optimizations are noted here. + * + * *Level-wise training* + * We perform bin calculations for all nodes at the given level to avoid making multiple + * passes over the data. Thus, for a slightly increased computation and storage cost we save + * several iterations over the data especially at higher levels of the decision tree. + * + * *Bin-wise computation* + * We use a bin-wise best split computation strategy instead of a straightforward best split + * computation strategy. Instead of analyzing each sample for contribution to the left/right + * child node impurity of every split, we first categorize each feature of a sample into a + * bin. Each bin is an interval between a low and high split. Since each splits, and thus bin, + * is ordered (read ordering for categorical variables in the findSplitsBins method), + * we exploit this structure to calculate aggregates for bins and then use these aggregates + * to calculate information gain for each split. + * + * *Aggregation over partitions* + * Instead of performing a flatMap/reduceByKey operation, we exploit the fact that we know + * the number of splits in advance. Thus, we store the aggregates (at the appropriate + * indices) in a single array for all bins and rely upon the RDD aggregate method to + * drastically reduce the communication overhead. + */ + + // common calculations for multiple nested methods + val numNodes = scala.math.pow(2, level).toInt + logDebug("numNodes = " + numNodes) + // Find the number of features by looking at the first sample. + val numFeatures = input.first().features.size + logDebug("numFeatures = " + numFeatures) + val numBins = bins(0).length + logDebug("numBins = " + numBins) + + /** Find the filters used before reaching the current code. */ + def findParentFilters(nodeIndex: Int): List[Filter] = { + if (level == 0) { + List[Filter]() + } else { + val nodeFilterIndex = scala.math.pow(2, level).toInt - 1 + nodeIndex + filters(nodeFilterIndex) + } + } + + /** + * Find whether the sample is valid input for the current node, i.e., whether it passes through + * all the filters for the current node. + */ + def isSampleValid(parentFilters: List[Filter], labeledPoint: LabeledPoint): Boolean = { + // leaf + if ((level > 0) & (parentFilters.length == 0)) { + return false + } + + // Apply each filter and check sample validity. Return false when invalid condition found. + for (filter <- parentFilters) { + val features = labeledPoint.features + val featureIndex = filter.split.feature + val threshold = filter.split.threshold + val comparison = filter.comparison + val categories = filter.split.categories + val isFeatureContinuous = filter.split.featureType == Continuous + val feature = features(featureIndex) + if (isFeatureContinuous) { + comparison match { + case -1 => if (feature > threshold) return false + case 1 => if (feature <= threshold) return false + } + } else { + val containsFeature = categories.contains(feature) + comparison match { + case -1 => if (!containsFeature) return false + case 1 => if (containsFeature) return false + } + + } + } + + // Return true when the sample is valid for all filters. + true + } + + /** + * Find bin for one feature. + */ + def findBin( + featureIndex: Int, + labeledPoint: LabeledPoint, + isFeatureContinuous: Boolean): Int = { + val binForFeatures = bins(featureIndex) + val feature = labeledPoint.features(featureIndex) + + /** + * Binary search helper method for continuous feature. + */ + def binarySearchForBins(): Int = { + var left = 0 + var right = binForFeatures.length - 1 + while (left <= right) { + val mid = left + (right - left) / 2 + val bin = binForFeatures(mid) + val lowThreshold = bin.lowSplit.threshold + val highThreshold = bin.highSplit.threshold + if ((lowThreshold < feature) & (highThreshold >= feature)){ + return mid + } + else if (lowThreshold >= feature) { + right = mid - 1 + } + else { + left = mid + 1 + } + } + -1 + } + + /** + * Sequential search helper method to find bin for categorical feature. + */ + def sequentialBinSearchForCategoricalFeature(): Int = { + val numCategoricalBins = strategy.categoricalFeaturesInfo(featureIndex) + var binIndex = 0 + while (binIndex < numCategoricalBins) { + val bin = bins(featureIndex)(binIndex) + val category = bin.category + val features = labeledPoint.features + if (category == features(featureIndex)) { + return binIndex + } + binIndex += 1 + } + -1 + } + + if (isFeatureContinuous) { + // Perform binary search for finding bin for continuous features. + val binIndex = binarySearchForBins() + if (binIndex == -1){ + throw new UnknownError("no bin was found for continuous variable.") + } + binIndex + } else { + // Perform sequential search to find bin for categorical features. + val binIndex = sequentialBinSearchForCategoricalFeature() + if (binIndex == -1){ + throw new UnknownError("no bin was found for categorical variable.") + } + binIndex + } + } + + /** + * Finds bins for all nodes (and all features) at a given level. + * For l nodes, k features the storage is as follows: + * label, b_11, b_12, .. , b_1k, b_21, b_22, .. , b_2k, b_l1, b_l2, .. , b_lk, + * where b_ij is an integer between 0 and numBins - 1. + * Invalid sample is denoted by noting bin for feature 1 as -1. + */ + def findBinsForLevel(labeledPoint: LabeledPoint): Array[Double] = { + // Calculate bin index and label per feature per node. + val arr = new Array[Double](1 + (numFeatures * numNodes)) + arr(0) = labeledPoint.label + var nodeIndex = 0 + while (nodeIndex < numNodes) { + val parentFilters = findParentFilters(nodeIndex) + // Find out whether the sample qualifies for the particular node. + val sampleValid = isSampleValid(parentFilters, labeledPoint) + val shift = 1 + numFeatures * nodeIndex + if (!sampleValid) { + // Mark one bin as -1 is sufficient. + arr(shift) = InvalidBinIndex + } else { + var featureIndex = 0 + while (featureIndex < numFeatures) { + val isFeatureContinuous = strategy.categoricalFeaturesInfo.get(featureIndex).isEmpty + arr(shift + featureIndex) = findBin(featureIndex, labeledPoint,isFeatureContinuous) + featureIndex += 1 + } + } + nodeIndex += 1 + } + arr + } + + /** + * Performs a sequential aggregation over a partition for classification. For l nodes, + * k features, either the left count or the right count of one of the p bins is + * incremented based upon whether the feature is classified as 0 or 1. + * + * @param agg Array[Double] storing aggregate calculation of size + * 2 * numSplits * numFeatures*numNodes for classification + * @param arr Array[Double] of size 1 + (numFeatures * numNodes) + * @return Array[Double] storing aggregate calculation of size + * 2 * numSplits * numFeatures * numNodes for classification + */ + def classificationBinSeqOp(arr: Array[Double], agg: Array[Double]) { + // Iterate over all nodes. + var nodeIndex = 0 + while (nodeIndex < numNodes) { + // Check whether the instance was valid for this nodeIndex. + val validSignalIndex = 1 + numFeatures * nodeIndex + val isSampleValidForNode = arr(validSignalIndex) != InvalidBinIndex + if (isSampleValidForNode) { + // actual class label + val label = arr(0) + // Iterate over all features. + var featureIndex = 0 + while (featureIndex < numFeatures) { + // Find the bin index for this feature. + val arrShift = 1 + numFeatures * nodeIndex + val arrIndex = arrShift + featureIndex + // Update the left or right count for one bin. + val aggShift = 2 * numBins * numFeatures * nodeIndex + val aggIndex = aggShift + 2 * featureIndex * numBins + arr(arrIndex).toInt * 2 + label match { + case 0.0 => agg(aggIndex) = agg(aggIndex) + 1 + case 1.0 => agg(aggIndex + 1) = agg(aggIndex + 1) + 1 + } + featureIndex += 1 + } + } + nodeIndex += 1 + } + } + + /** + * Performs a sequential aggregation over a partition for regression. For l nodes, k features, + * the count, sum, sum of squares of one of the p bins is incremented. + * + * @param agg Array[Double] storing aggregate calculation of size + * 3 * numSplits * numFeatures * numNodes for classification + * @param arr Array[Double] of size 1 + (numFeatures * numNodes) + * @return Array[Double] storing aggregate calculation of size + * 3 * numSplits * numFeatures * numNodes for regression + */ + def regressionBinSeqOp(arr: Array[Double], agg: Array[Double]) { + // Iterate over all nodes. + var nodeIndex = 0 + while (nodeIndex < numNodes) { + // Check whether the instance was valid for this nodeIndex. + val validSignalIndex = 1 + numFeatures * nodeIndex + val isSampleValidForNode = arr(validSignalIndex) != InvalidBinIndex + if (isSampleValidForNode) { + // actual class label + val label = arr(0) + // Iterate over all features. + var featureIndex = 0 + while (featureIndex < numFeatures) { + // Find the bin index for this feature. + val arrShift = 1 + numFeatures * nodeIndex + val arrIndex = arrShift + featureIndex + // Update count, sum, and sum^2 for one bin. + val aggShift = 3 * numBins * numFeatures * nodeIndex + val aggIndex = aggShift + 3 * featureIndex * numBins + arr(arrIndex).toInt * 3 + agg(aggIndex) = agg(aggIndex) + 1 + agg(aggIndex + 1) = agg(aggIndex + 1) + label + agg(aggIndex + 2) = agg(aggIndex + 2) + label*label + featureIndex += 1 + } + } + nodeIndex += 1 + } + } + + /** + * Performs a sequential aggregation over a partition. + */ + def binSeqOp(agg: Array[Double], arr: Array[Double]): Array[Double] = { + strategy.algo match { + case Classification => classificationBinSeqOp(arr, agg) + case Regression => regressionBinSeqOp(arr, agg) + } + agg + } + + // Calculate bin aggregate length for classification or regression. + val binAggregateLength = strategy.algo match { + case Classification => 2 * numBins * numFeatures * numNodes + case Regression => 3 * numBins * numFeatures * numNodes + } + logDebug("binAggregateLength = " + binAggregateLength) + + /** + * Combines the aggregates from partitions. + * @param agg1 Array containing aggregates from one or more partitions + * @param agg2 Array containing aggregates from one or more partitions + * @return Combined aggregate from agg1 and agg2 + */ + def binCombOp(agg1: Array[Double], agg2: Array[Double]): Array[Double] = { + var index = 0 + val combinedAggregate = new Array[Double](binAggregateLength) + while (index < binAggregateLength) { + combinedAggregate(index) = agg1(index) + agg2(index) + index += 1 + } + combinedAggregate + } + + // Find feature bins for all nodes at a level. + val binMappedRDD = input.map(x => findBinsForLevel(x)) + + // Calculate bin aggregates. + val binAggregates = { + binMappedRDD.aggregate(Array.fill[Double](binAggregateLength)(0))(binSeqOp,binCombOp) + } + logDebug("binAggregates.length = " + binAggregates.length) + + /** + * Calculates the information gain for all splits based upon left/right split aggregates. + * @param leftNodeAgg left node aggregates + * @param featureIndex feature index + * @param splitIndex split index + * @param rightNodeAgg right node aggregate + * @param topImpurity impurity of the parent node + * @return information gain and statistics for all splits + */ + def calculateGainForSplit( + leftNodeAgg: Array[Array[Double]], + featureIndex: Int, + splitIndex: Int, + rightNodeAgg: Array[Array[Double]], + topImpurity: Double): InformationGainStats = { + strategy.algo match { + case Classification => + val left0Count = leftNodeAgg(featureIndex)(2 * splitIndex) + val left1Count = leftNodeAgg(featureIndex)(2 * splitIndex + 1) + val leftCount = left0Count + left1Count + + val right0Count = rightNodeAgg(featureIndex)(2 * splitIndex) + val right1Count = rightNodeAgg(featureIndex)(2 * splitIndex + 1) + val rightCount = right0Count + right1Count + + val impurity = { + if (level > 0) { + topImpurity + } else { + // Calculate impurity for root node. + strategy.impurity.calculate(left0Count + right0Count, left1Count + right1Count) + } + } + + if (leftCount == 0) { + return new InformationGainStats(0, topImpurity, Double.MinValue, topImpurity,1) + } + if (rightCount == 0) { + return new InformationGainStats(0, topImpurity, topImpurity, Double.MinValue,0) + } + + val leftImpurity = strategy.impurity.calculate(left0Count, left1Count) + val rightImpurity = strategy.impurity.calculate(right0Count, right1Count) + + val leftWeight = leftCount.toDouble / (leftCount + rightCount) + val rightWeight = rightCount.toDouble / (leftCount + rightCount) + + val gain = { + if (level > 0) { + impurity - leftWeight * leftImpurity - rightWeight * rightImpurity + } else { + impurity - leftWeight * leftImpurity - rightWeight * rightImpurity + } + } + + val predict = (left1Count + right1Count) / (leftCount + rightCount) + + new InformationGainStats(gain, impurity, leftImpurity, rightImpurity, predict) + case Regression => + val leftCount = leftNodeAgg(featureIndex)(3 * splitIndex) + val leftSum = leftNodeAgg(featureIndex)(3 * splitIndex + 1) + val leftSumSquares = leftNodeAgg(featureIndex)(3 * splitIndex + 2) + + val rightCount = rightNodeAgg(featureIndex)(3 * splitIndex) + val rightSum = rightNodeAgg(featureIndex)(3 * splitIndex + 1) + val rightSumSquares = rightNodeAgg(featureIndex)(3 * splitIndex + 2) + + val impurity = { + if (level > 0) { + topImpurity + } else { + // Calculate impurity for root node. + val count = leftCount + rightCount + val sum = leftSum + rightSum + val sumSquares = leftSumSquares + rightSumSquares + strategy.impurity.calculate(count, sum, sumSquares) + } + } + + if (leftCount == 0) { + return new InformationGainStats(0, topImpurity, Double.MinValue, topImpurity, + rightSum / rightCount) + } + if (rightCount == 0) { + return new InformationGainStats(0, topImpurity ,topImpurity, + Double.MinValue, leftSum / leftCount) + } + + val leftImpurity = strategy.impurity.calculate(leftCount, leftSum, leftSumSquares) + val rightImpurity = strategy.impurity.calculate(rightCount, rightSum, rightSumSquares) + + val leftWeight = leftCount.toDouble / (leftCount + rightCount) + val rightWeight = rightCount.toDouble / (leftCount + rightCount) + + val gain = { + if (level > 0) { + impurity - leftWeight * leftImpurity - rightWeight * rightImpurity + } else { + impurity - leftWeight * leftImpurity - rightWeight * rightImpurity + } + } + + val predict = (leftSum + rightSum) / (leftCount + rightCount) + new InformationGainStats(gain, impurity, leftImpurity, rightImpurity, predict) + } + } + + /** + * Extracts left and right split aggregates. + * @param binData Array[Double] of size 2*numFeatures*numSplits + * @return (leftNodeAgg, rightNodeAgg) tuple of type (Array[Double], + * Array[Double]) where each array is of size(numFeature,2*(numSplits-1)) + */ + def extractLeftRightNodeAggregates( + binData: Array[Double]): (Array[Array[Double]], Array[Array[Double]]) = { + strategy.algo match { + case Classification => + // Initialize left and right split aggregates. + val leftNodeAgg = Array.ofDim[Double](numFeatures, 2 * (numBins - 1)) + val rightNodeAgg = Array.ofDim[Double](numFeatures, 2 * (numBins - 1)) + // Iterate over all features. + var featureIndex = 0 + while (featureIndex < numFeatures) { + // shift for this featureIndex + val shift = 2 * featureIndex * numBins + + // left node aggregate for the lowest split + leftNodeAgg(featureIndex)(0) = binData(shift + 0) + leftNodeAgg(featureIndex)(1) = binData(shift + 1) + + // right node aggregate for the highest split + rightNodeAgg(featureIndex)(2 * (numBins - 2)) + = binData(shift + (2 * (numBins - 1))) + rightNodeAgg(featureIndex)(2 * (numBins - 2) + 1) + = binData(shift + (2 * (numBins - 1)) + 1) + + // Iterate over all splits. + var splitIndex = 1 + while (splitIndex < numBins - 1) { + // calculating left node aggregate for a split as a sum of left node aggregate of a + // lower split and the left bin aggregate of a bin where the split is a high split + leftNodeAgg(featureIndex)(2 * splitIndex) = binData(shift + 2 * splitIndex) + + leftNodeAgg(featureIndex)(2 * splitIndex - 2) + leftNodeAgg(featureIndex)(2 * splitIndex + 1) = binData(shift + 2 * splitIndex + 1) + + leftNodeAgg(featureIndex)(2 * splitIndex - 2 + 1) + + // calculating right node aggregate for a split as a sum of right node aggregate of a + // higher split and the right bin aggregate of a bin where the split is a low split + rightNodeAgg(featureIndex)(2 * (numBins - 2 - splitIndex)) = + binData(shift + (2 *(numBins - 2 - splitIndex))) + + rightNodeAgg(featureIndex)(2 * (numBins - 1 - splitIndex)) + rightNodeAgg(featureIndex)(2 * (numBins - 2 - splitIndex) + 1) = + binData(shift + (2* (numBins - 2 - splitIndex) + 1)) + + rightNodeAgg(featureIndex)(2 * (numBins - 1 - splitIndex) + 1) + + splitIndex += 1 + } + featureIndex += 1 + } + (leftNodeAgg, rightNodeAgg) + case Regression => + // Initialize left and right split aggregates. + val leftNodeAgg = Array.ofDim[Double](numFeatures, 3 * (numBins - 1)) + val rightNodeAgg = Array.ofDim[Double](numFeatures, 3 * (numBins - 1)) + // Iterate over all features. + var featureIndex = 0 + while (featureIndex < numFeatures) { + // shift for this featureIndex + val shift = 3 * featureIndex * numBins + // left node aggregate for the lowest split + leftNodeAgg(featureIndex)(0) = binData(shift + 0) + leftNodeAgg(featureIndex)(1) = binData(shift + 1) + leftNodeAgg(featureIndex)(2) = binData(shift + 2) + + // right node aggregate for the highest split + rightNodeAgg(featureIndex)(3 * (numBins - 2)) = + binData(shift + (3 * (numBins - 1))) + rightNodeAgg(featureIndex)(3 * (numBins - 2) + 1) = + binData(shift + (3 * (numBins - 1)) + 1) + rightNodeAgg(featureIndex)(3 * (numBins - 2) + 2) = + binData(shift + (3 * (numBins - 1)) + 2) + + // Iterate over all splits. + var splitIndex = 1 + while (splitIndex < numBins - 1) { + // calculating left node aggregate for a split as a sum of left node aggregate of a + // lower split and the left bin aggregate of a bin where the split is a high split + leftNodeAgg(featureIndex)(3 * splitIndex) = binData(shift + 3 * splitIndex) + + leftNodeAgg(featureIndex)(3 * splitIndex - 3) + leftNodeAgg(featureIndex)(3 * splitIndex + 1) = binData(shift + 3 * splitIndex + 1) + + leftNodeAgg(featureIndex)(3 * splitIndex - 3 + 1) + leftNodeAgg(featureIndex)(3 * splitIndex + 2) = binData(shift + 3 * splitIndex + 2) + + leftNodeAgg(featureIndex)(3 * splitIndex - 3 + 2) + + // calculating right node aggregate for a split as a sum of right node aggregate of a + // higher split and the right bin aggregate of a bin where the split is a low split + rightNodeAgg(featureIndex)(3 * (numBins - 2 - splitIndex)) = + binData(shift + (3 * (numBins - 2 - splitIndex))) + + rightNodeAgg(featureIndex)(3 * (numBins - 1 - splitIndex)) + rightNodeAgg(featureIndex)(3 * (numBins - 2 - splitIndex) + 1) = + binData(shift + (3 * (numBins - 2 - splitIndex) + 1)) + + rightNodeAgg(featureIndex)(3 * (numBins - 1 - splitIndex) + 1) + rightNodeAgg(featureIndex)(3 * (numBins - 2 - splitIndex) + 2) = + binData(shift + (3 * (numBins - 2 - splitIndex) + 2)) + + rightNodeAgg(featureIndex)(3 * (numBins - 1 - splitIndex) + 2) + + splitIndex += 1 + } + featureIndex += 1 + } + (leftNodeAgg, rightNodeAgg) + } + } + + /** + * Calculates information gain for all nodes splits. + */ + def calculateGainsForAllNodeSplits( + leftNodeAgg: Array[Array[Double]], + rightNodeAgg: Array[Array[Double]], + nodeImpurity: Double): Array[Array[InformationGainStats]] = { + val gains = Array.ofDim[InformationGainStats](numFeatures, numBins - 1) + + for (featureIndex <- 0 until numFeatures) { + for (splitIndex <- 0 until numBins - 1) { + gains(featureIndex)(splitIndex) = calculateGainForSplit(leftNodeAgg, featureIndex, + splitIndex, rightNodeAgg, nodeImpurity) + } + } + gains + } + + /** + * Find the best split for a node. + * @param binData Array[Double] of size 2 * numSplits * numFeatures + * @param nodeImpurity impurity of the top node + * @return tuple of split and information gain + */ + def binsToBestSplit( + binData: Array[Double], + nodeImpurity: Double): (Split, InformationGainStats) = { + + logDebug("node impurity = " + nodeImpurity) + + // Extract left right node aggregates. + val (leftNodeAgg, rightNodeAgg) = extractLeftRightNodeAggregates(binData) + + // Calculate gains for all splits. + val gains = calculateGainsForAllNodeSplits(leftNodeAgg, rightNodeAgg, nodeImpurity) + + val (bestFeatureIndex,bestSplitIndex, gainStats) = { + // Initialize with infeasible values. + var bestFeatureIndex = Int.MinValue + var bestSplitIndex = Int.MinValue + var bestGainStats = new InformationGainStats(Double.MinValue, -1.0, -1.0, -1.0, -1.0) + // Iterate over features. + var featureIndex = 0 + while (featureIndex < numFeatures) { + // Iterate over all splits. + var splitIndex = 0 + while (splitIndex < numBins - 1) { + val gainStats = gains(featureIndex)(splitIndex) + if (gainStats.gain > bestGainStats.gain) { + bestGainStats = gainStats + bestFeatureIndex = featureIndex + bestSplitIndex = splitIndex + } + splitIndex += 1 + } + featureIndex += 1 + } + (bestFeatureIndex, bestSplitIndex, bestGainStats) + } + + logDebug("best split bin = " + bins(bestFeatureIndex)(bestSplitIndex)) + logDebug("best split bin = " + splits(bestFeatureIndex)(bestSplitIndex)) + + (splits(bestFeatureIndex)(bestSplitIndex), gainStats) + } + + /** + * Get bin data for one node. + */ + def getBinDataForNode(node: Int): Array[Double] = { + strategy.algo match { + case Classification => + val shift = 2 * node * numBins * numFeatures + val binsForNode = binAggregates.slice(shift, shift + 2 * numBins * numFeatures) + binsForNode + case Regression => + val shift = 3 * node * numBins * numFeatures + val binsForNode = binAggregates.slice(shift, shift + 3 * numBins * numFeatures) + binsForNode + } + } + + // Calculate best splits for all nodes at a given level + val bestSplits = new Array[(Split, InformationGainStats)](numNodes) + // Iterating over all nodes at this level + var node = 0 + while (node < numNodes) { + val nodeImpurityIndex = scala.math.pow(2, level).toInt - 1 + node + val binsForNode: Array[Double] = getBinDataForNode(node) + logDebug("nodeImpurityIndex = " + nodeImpurityIndex) + val parentNodeImpurity = parentImpurities(nodeImpurityIndex) + logDebug("node impurity = " + parentNodeImpurity) + bestSplits(node) = binsToBestSplit(binsForNode, parentNodeImpurity) + node += 1 + } + + bestSplits + } + + /** + * Returns split and bins for decision tree calculation. + * @param input RDD of [[org.apache.spark.mllib.regression.LabeledPoint]] used as training data + * for DecisionTree + * @param strategy [[org.apache.spark.mllib.tree.configuration.Strategy]] instance containing + * parameters for construction the DecisionTree + * @return a tuple of (splits,bins) where splits is an Array of [org.apache.spark.mllib.tree + * .model.Split] of size (numFeatures, numSplits-1) and bins is an Array of [org.apache + * .spark.mllib.tree.model.Bin] of size (numFeatures, numSplits1) + */ + protected[tree] def findSplitsBins( + input: RDD[LabeledPoint], + strategy: Strategy): (Array[Array[Split]], Array[Array[Bin]]) = { + val count = input.count() + + // Find the number of features by looking at the first sample + val numFeatures = input.take(1)(0).features.size + + val maxBins = strategy.maxBins + val numBins = if (maxBins <= count) maxBins else count.toInt + logDebug("numBins = " + numBins) + + /* + * TODO: Add a require statement ensuring #bins is always greater than the categories. + * It's a limitation of the current implementation but a reasonable trade-off since features + * with large number of categories get favored over continuous features. + */ + if (strategy.categoricalFeaturesInfo.size > 0) { + val maxCategoriesForFeatures = strategy.categoricalFeaturesInfo.maxBy(_._2)._2 + require(numBins >= maxCategoriesForFeatures) + } + + // Calculate the number of sample for approximate quantile calculation. + val requiredSamples = numBins*numBins + val fraction = if (requiredSamples < count) requiredSamples.toDouble / count else 1.0 + logDebug("fraction of data used for calculating quantiles = " + fraction) + + // sampled input for RDD calculation + val sampledInput = input.sample(false, fraction, new XORShiftRandom().nextInt()).collect() + val numSamples = sampledInput.length + + val stride: Double = numSamples.toDouble / numBins + logDebug("stride = " + stride) + + strategy.quantileCalculationStrategy match { + case Sort => + val splits = Array.ofDim[Split](numFeatures, numBins - 1) + val bins = Array.ofDim[Bin](numFeatures, numBins) + + // Find all splits. + + // Iterate over all features. + var featureIndex = 0 + while (featureIndex < numFeatures){ + // Check whether the feature is continuous. + val isFeatureContinuous = strategy.categoricalFeaturesInfo.get(featureIndex).isEmpty + if (isFeatureContinuous) { + val featureSamples = sampledInput.map(lp => lp.features(featureIndex)).sorted + val stride: Double = numSamples.toDouble / numBins + logDebug("stride = " + stride) + for (index <- 0 until numBins - 1) { + val sampleIndex = (index + 1) * stride.toInt + val split = new Split(featureIndex, featureSamples(sampleIndex), Continuous, List()) + splits(featureIndex)(index) = split + } + } else { + val maxFeatureValue = strategy.categoricalFeaturesInfo(featureIndex) + require(maxFeatureValue < numBins, "number of categories should be less than number " + + "of bins") + + // For categorical variables, each bin is a category. The bins are sorted and they + // are ordered by calculating the centroid of their corresponding labels. + val centroidForCategories = + sampledInput.map(lp => (lp.features(featureIndex),lp.label)) + .groupBy(_._1) + .mapValues(x => x.map(_._2).sum / x.map(_._1).length) + + // Check for missing categorical variables and putting them last in the sorted list. + val fullCentroidForCategories = scala.collection.mutable.Map[Double,Double]() + for (i <- 0 until maxFeatureValue) { + if (centroidForCategories.contains(i)) { + fullCentroidForCategories(i) = centroidForCategories(i) + } else { + fullCentroidForCategories(i) = Double.MaxValue + } + } + + // bins sorted by centroids + val categoriesSortedByCentroid = fullCentroidForCategories.toList.sortBy(_._2) + + logDebug("centriod for categorical variable = " + categoriesSortedByCentroid) + + var categoriesForSplit = List[Double]() + categoriesSortedByCentroid.iterator.zipWithIndex.foreach { + case ((key, value), index) => + categoriesForSplit = key :: categoriesForSplit + splits(featureIndex)(index) = new Split(featureIndex, Double.MinValue, Categorical, + categoriesForSplit) + bins(featureIndex)(index) = { + if (index == 0) { + new Bin(new DummyCategoricalSplit(featureIndex, Categorical), + splits(featureIndex)(0), Categorical, key) + } else { + new Bin(splits(featureIndex)(index-1), splits(featureIndex)(index), + Categorical, key) + } + } + } + } + featureIndex += 1 + } + + // Find all bins. + featureIndex = 0 + while (featureIndex < numFeatures) { + val isFeatureContinuous = strategy.categoricalFeaturesInfo.get(featureIndex).isEmpty + if (isFeatureContinuous) { // Bins for categorical variables are already assigned. + bins(featureIndex)(0) = new Bin(new DummyLowSplit(featureIndex, Continuous), + splits(featureIndex)(0), Continuous, Double.MinValue) + for (index <- 1 until numBins - 1){ + val bin = new Bin(splits(featureIndex)(index-1), splits(featureIndex)(index), + Continuous, Double.MinValue) + bins(featureIndex)(index) = bin + } + bins(featureIndex)(numBins-1) = new Bin(splits(featureIndex)(numBins-2), + new DummyHighSplit(featureIndex, Continuous), Continuous, Double.MinValue) + } + featureIndex += 1 + } + (splits,bins) + case MinMax => + throw new UnsupportedOperationException("minmax not supported yet.") + case ApproxHist => + throw new UnsupportedOperationException("approximate histogram not supported yet.") + } + } + + private val usage = """ + Usage: DecisionTreeRunner [slices] --algo --trainDataDir path --testDataDir path --maxDepth num [--impurity ] [--maxBins num] + """ + + def main(args: Array[String]) { + + if (args.length < 2) { + System.err.println(usage) + System.exit(1) + } + + val sc = new SparkContext(args(0), "DecisionTree") + + val argList = args.toList.drop(1) + type OptionMap = Map[Symbol, Any] + + def nextOption(map : OptionMap, list: List[String]): OptionMap = { + list match { + case Nil => map + case "--algo" :: string :: tail => nextOption(map ++ Map('algo -> string), tail) + case "--impurity" :: string :: tail => nextOption(map ++ Map('impurity -> string), tail) + case "--maxDepth" :: string :: tail => nextOption(map ++ Map('maxDepth -> string), tail) + case "--maxBins" :: string :: tail => nextOption(map ++ Map('maxBins -> string), tail) + case "--trainDataDir" :: string :: tail => nextOption(map ++ Map('trainDataDir -> string) + , tail) + case "--testDataDir" :: string :: tail => nextOption(map ++ Map('testDataDir -> string), + tail) + case string :: Nil => nextOption(map ++ Map('infile -> string), list.tail) + case option :: tail => logError("Unknown option " + option) + sys.exit(1) + } + } + val options = nextOption(Map(), argList) + logDebug(options.toString()) + + // Load training data. + val trainData = loadLabeledData(sc, options.get('trainDataDir).get.toString) + + // Identify the type of algorithm. + val algoStr = options.get('algo).get.toString + val algo = algoStr match { + case "Classification" => Classification + case "Regression" => Regression + } + + // Identify the type of impurity. + val impurityStr = options.getOrElse('impurity, + if (algo == Classification) "Gini" else "Variance").toString + val impurity = impurityStr match { + case "Gini" => Gini + case "Entropy" => Entropy + case "Variance" => Variance + } + + val maxDepth = options.getOrElse('maxDepth, "1").toString.toInt + val maxBins = options.getOrElse('maxBins, "100").toString.toInt + + val strategy = new Strategy(algo, impurity, maxDepth, maxBins) + val model = DecisionTree.train(trainData, strategy) + + // Load test data. + val testData = loadLabeledData(sc, options.get('testDataDir).get.toString) + + // Measure algorithm accuracy + if (algo == Classification) { + val accuracy = accuracyScore(model, testData) + logDebug("accuracy = " + accuracy) + } + + if (algo == Regression) { + val mse = meanSquaredError(model, testData) + logDebug("mean square error = " + mse) + } + + sc.stop() + } + + /** + * Load labeled data from a file. The data format used here is + * , ..., + * where , are feature values in Double and is the corresponding label as Double. + * + * @param sc SparkContext + * @param dir Directory to the input data files. + * @return An RDD of LabeledPoint. Each labeled point has two elements: the first element is + * the label, and the second element represents the feature values (an array of Double). + */ + private def loadLabeledData(sc: SparkContext, dir: String): RDD[LabeledPoint] = { + sc.textFile(dir).map { line => + val parts = line.trim().split(",") + val label = parts(0).toDouble + val features = Vectors.dense(parts.slice(1,parts.length).map(_.toDouble)) + LabeledPoint(label, features) + } + } + + // TODO: Port this method to a generic metrics package. + /** + * Calculates the classifier accuracy. + */ + private def accuracyScore(model: DecisionTreeModel, data: RDD[LabeledPoint], + threshold: Double = 0.5): Double = { + def predictedValue(features: Vector) = { + if (model.predict(features) < threshold) 0.0 else 1.0 + } + val correctCount = data.filter(y => predictedValue(y.features) == y.label).count() + val count = data.count() + logDebug("correct prediction count = " + correctCount) + logDebug("data count = " + count) + correctCount.toDouble / count + } + + // TODO: Port this method to a generic metrics package + /** + * Calculates the mean squared error for regression. + */ + private def meanSquaredError(tree: DecisionTreeModel, data: RDD[LabeledPoint]): Double = { + data.map { y => + val err = tree.predict(y.features) - y.label + err * err + }.mean() + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/README.md b/mllib/src/main/scala/org/apache/spark/mllib/tree/README.md new file mode 100644 index 0000000000000..0fd71aa9735bc --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/README.md @@ -0,0 +1,17 @@ +This package contains the default implementation of the decision tree algorithm. + +The decision tree algorithm supports: ++ Binary classification ++ Regression ++ Information loss calculation with entropy and gini for classification and variance for regression ++ Both continuous and categorical features + +# Tree improvements ++ Node model pruning ++ Printing to dot files + +# Future Ensemble Extensions + ++ Random forests ++ Boosting ++ Extremely randomized trees diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Algo.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Algo.scala new file mode 100644 index 0000000000000..79a01f58319e8 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Algo.scala @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.configuration + +import org.apache.spark.annotation.Experimental + +/** + * :: Experimental :: + * Enum to select the algorithm for the decision tree + */ +@Experimental +object Algo extends Enumeration { + type Algo = Value + val Classification, Regression = Value +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/FeatureType.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/FeatureType.scala new file mode 100644 index 0000000000000..f4c877232750f --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/FeatureType.scala @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.configuration + +import org.apache.spark.annotation.Experimental + +/** + * :: Experimental :: + * Enum to describe whether a feature is "continuous" or "categorical" + */ +@Experimental +object FeatureType extends Enumeration { + type FeatureType = Value + val Continuous, Categorical = Value +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/QuantileStrategy.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/QuantileStrategy.scala new file mode 100644 index 0000000000000..7da976e55a722 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/QuantileStrategy.scala @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.configuration + +import org.apache.spark.annotation.Experimental + +/** + * :: Experimental :: + * Enum for selecting the quantile calculation strategy + */ +@Experimental +object QuantileStrategy extends Enumeration { + type QuantileStrategy = Value + val Sort, MinMax, ApproxHist = Value +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala new file mode 100644 index 0000000000000..8767aca47cd5a --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.configuration + +import org.apache.spark.annotation.Experimental +import org.apache.spark.mllib.tree.impurity.Impurity +import org.apache.spark.mllib.tree.configuration.Algo._ +import org.apache.spark.mllib.tree.configuration.QuantileStrategy._ + +/** + * :: Experimental :: + * Stores all the configuration options for tree construction + * @param algo classification or regression + * @param impurity criterion used for information gain calculation + * @param maxDepth maximum depth of the tree + * @param maxBins maximum number of bins used for splitting features + * @param quantileCalculationStrategy algorithm for calculating quantiles + * @param categoricalFeaturesInfo A map storing information about the categorical variables and the + * number of discrete values they take. For example, an entry (n -> + * k) implies the feature n is categorical with k categories 0, + * 1, 2, ... , k-1. It's important to note that features are + * zero-indexed. + */ +@Experimental +class Strategy ( + val algo: Algo, + val impurity: Impurity, + val maxDepth: Int, + val maxBins: Int = 100, + val quantileCalculationStrategy: QuantileStrategy = Sort, + val categoricalFeaturesInfo: Map[Int, Int] = Map[Int, Int]()) extends Serializable diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Entropy.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Entropy.scala new file mode 100644 index 0000000000000..60f43e9278d2a --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Entropy.scala @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.impurity + +import org.apache.spark.annotation.{DeveloperApi, Experimental} + +/** + * :: Experimental :: + * Class for calculating [[http://en.wikipedia.org/wiki/Binary_entropy_function entropy]] during + * binary classification. + */ +@Experimental +object Entropy extends Impurity { + + private[tree] def log2(x: Double) = scala.math.log(x) / scala.math.log(2) + + /** + * :: DeveloperApi :: + * entropy calculation + * @param c0 count of instances with label 0 + * @param c1 count of instances with label 1 + * @return entropy value + */ + @DeveloperApi + override def calculate(c0: Double, c1: Double): Double = { + if (c0 == 0 || c1 == 0) { + 0 + } else { + val total = c0 + c1 + val f0 = c0 / total + val f1 = c1 / total + -(f0 * log2(f0)) - (f1 * log2(f1)) + } + } + + override def calculate(count: Double, sum: Double, sumSquares: Double): Double = + throw new UnsupportedOperationException("Entropy.calculate") +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Gini.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Gini.scala new file mode 100644 index 0000000000000..c51d76d9b4c5b --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Gini.scala @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.impurity + +import org.apache.spark.annotation.{DeveloperApi, Experimental} + +/** + * :: Experimental :: + * Class for calculating the + * [[http://en.wikipedia.org/wiki/Decision_tree_learning#Gini_impurity Gini impurity]] + * during binary classification. + */ +@Experimental +object Gini extends Impurity { + + /** + * :: DeveloperApi :: + * Gini coefficient calculation + * @param c0 count of instances with label 0 + * @param c1 count of instances with label 1 + * @return Gini coefficient value + */ + @DeveloperApi + override def calculate(c0: Double, c1: Double): Double = { + if (c0 == 0 || c1 == 0) { + 0 + } else { + val total = c0 + c1 + val f0 = c0 / total + val f1 = c1 / total + 1 - f0 * f0 - f1 * f1 + } + } + + override def calculate(count: Double, sum: Double, sumSquares: Double): Double = + throw new UnsupportedOperationException("Gini.calculate") +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Impurity.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Impurity.scala new file mode 100644 index 0000000000000..8eab247cf0932 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Impurity.scala @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.impurity + +import org.apache.spark.annotation.{DeveloperApi, Experimental} + +/** + * :: Experimental :: + * Trait for calculating information gain. + */ +@Experimental +trait Impurity extends Serializable { + + /** + * :: DeveloperApi :: + * information calculation for binary classification + * @param c0 count of instances with label 0 + * @param c1 count of instances with label 1 + * @return information value + */ + @DeveloperApi + def calculate(c0 : Double, c1 : Double): Double + + /** + * :: DeveloperApi :: + * information calculation for regression + * @param count number of instances + * @param sum sum of labels + * @param sumSquares summation of squares of the labels + * @return information value + */ + @DeveloperApi + def calculate(count: Double, sum: Double, sumSquares: Double): Double +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Variance.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Variance.scala new file mode 100644 index 0000000000000..47d07122af30f --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/impurity/Variance.scala @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.impurity + +import org.apache.spark.annotation.{DeveloperApi, Experimental} + +/** + * :: Experimental :: + * Class for calculating variance during regression + */ +@Experimental +object Variance extends Impurity { + override def calculate(c0: Double, c1: Double): Double = + throw new UnsupportedOperationException("Variance.calculate") + + /** + * :: DeveloperApi :: + * variance calculation + * @param count number of instances + * @param sum sum of labels + * @param sumSquares summation of squares of the labels + */ + @DeveloperApi + override def calculate(count: Double, sum: Double, sumSquares: Double): Double = { + val squaredLoss = sumSquares - (sum * sum) / count + squaredLoss / count + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Bin.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Bin.scala new file mode 100644 index 0000000000000..2d71e1e366069 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Bin.scala @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.model + +import org.apache.spark.mllib.tree.configuration.FeatureType._ + +/** + * Used for "binning" the features bins for faster best split calculation. For a continuous + * feature, a bin is determined by a low and a high "split". For a categorical feature, + * the a bin is determined using a single label value (category). + * @param lowSplit signifying the lower threshold for the continuous feature to be + * accepted in the bin + * @param highSplit signifying the upper threshold for the continuous feature to be + * accepted in the bin + * @param featureType type of feature -- categorical or continuous + * @param category categorical label value accepted in the bin + */ +private[tree] +case class Bin(lowSplit: Split, highSplit: Split, featureType: FeatureType, category: Double) diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/model/DecisionTreeModel.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/DecisionTreeModel.scala new file mode 100644 index 0000000000000..bf692ca8c4bd7 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/DecisionTreeModel.scala @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.model + +import org.apache.spark.annotation.Experimental +import org.apache.spark.mllib.tree.configuration.Algo._ +import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.Vector + +/** + * :: Experimental :: + * Model to store the decision tree parameters + * @param topNode root node + * @param algo algorithm type -- classification or regression + */ +@Experimental +class DecisionTreeModel(val topNode: Node, val algo: Algo) extends Serializable { + + /** + * Predict values for a single data point using the model trained. + * + * @param features array representing a single data point + * @return Double prediction from the trained model + */ + def predict(features: Vector): Double = { + topNode.predictIfLeaf(features) + } + + /** + * Predict values for the given data set using the model trained. + * + * @param features RDD representing data points to be predicted + * @return RDD[Int] where each entry contains the corresponding prediction + */ + def predict(features: RDD[Vector]): RDD[Double] = { + features.map(x => predict(x)) + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Filter.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Filter.scala new file mode 100644 index 0000000000000..2deaf4ae8dcab --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Filter.scala @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.model + +/** + * Filter specifying a split and type of comparison to be applied on features + * @param split split specifying the feature index, type and threshold + * @param comparison integer specifying <,=,> + */ +private[tree] case class Filter(split: Split, comparison: Int) { + // Comparison -1,0,1 signifies <.=,> + override def toString = " split = " + split + "comparison = " + comparison +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/model/InformationGainStats.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/InformationGainStats.scala new file mode 100644 index 0000000000000..cc8a24cce9614 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/InformationGainStats.scala @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.model + +import org.apache.spark.annotation.DeveloperApi + +/** + * :: DeveloperApi :: + * Information gain statistics for each split + * @param gain information gain value + * @param impurity current node impurity + * @param leftImpurity left node impurity + * @param rightImpurity right node impurity + * @param predict predicted value + */ +@DeveloperApi +class InformationGainStats( + val gain: Double, + val impurity: Double, + val leftImpurity: Double, + val rightImpurity: Double, + val predict: Double) extends Serializable { + + override def toString = { + "gain = %f, impurity = %f, left impurity = %f, right impurity = %f, predict = %f" + .format(gain, impurity, leftImpurity, rightImpurity, predict) + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Node.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Node.scala new file mode 100644 index 0000000000000..682f213f411a7 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Node.scala @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.model + +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.Logging +import org.apache.spark.mllib.tree.configuration.FeatureType._ +import org.apache.spark.mllib.linalg.Vector + +/** + * :: DeveloperApi :: + * Node in a decision tree + * @param id integer node id + * @param predict predicted value at the node + * @param isLeaf whether the leaf is a node + * @param split split to calculate left and right nodes + * @param leftNode left child + * @param rightNode right child + * @param stats information gain stats + */ +@DeveloperApi +class Node ( + val id: Int, + val predict: Double, + val isLeaf: Boolean, + val split: Option[Split], + var leftNode: Option[Node], + var rightNode: Option[Node], + val stats: Option[InformationGainStats]) extends Serializable with Logging { + + override def toString = "id = " + id + ", isLeaf = " + isLeaf + ", predict = " + predict + ", " + + "split = " + split + ", stats = " + stats + + /** + * build the left node and right nodes if not leaf + * @param nodes array of nodes + */ + def build(nodes: Array[Node]): Unit = { + + logDebug("building node " + id + " at level " + + (scala.math.log(id + 1)/scala.math.log(2)).toInt ) + logDebug("id = " + id + ", split = " + split) + logDebug("stats = " + stats) + logDebug("predict = " + predict) + if (!isLeaf) { + val leftNodeIndex = id * 2 + 1 + val rightNodeIndex = id * 2 + 2 + leftNode = Some(nodes(leftNodeIndex)) + rightNode = Some(nodes(rightNodeIndex)) + leftNode.get.build(nodes) + rightNode.get.build(nodes) + } + } + + /** + * predict value if node is not leaf + * @param feature feature value + * @return predicted value + */ + def predictIfLeaf(feature: Vector) : Double = { + if (isLeaf) { + predict + } else{ + if (split.get.featureType == Continuous) { + if (feature(split.get.feature) <= split.get.threshold) { + leftNode.get.predictIfLeaf(feature) + } else { + rightNode.get.predictIfLeaf(feature) + } + } else { + if (split.get.categories.contains(feature(split.get.feature))) { + leftNode.get.predictIfLeaf(feature) + } else { + rightNode.get.predictIfLeaf(feature) + } + } + } + } +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Split.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Split.scala new file mode 100644 index 0000000000000..d7ffd386c05ee --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/model/Split.scala @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree.model + +import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.mllib.tree.configuration.FeatureType.FeatureType + +/** + * :: DeveloperApi :: + * Split applied to a feature + * @param feature feature index + * @param threshold threshold for continuous feature + * @param featureType type of feature -- categorical or continuous + * @param categories accepted values for categorical variables + */ +@DeveloperApi +case class Split( + feature: Int, + threshold: Double, + featureType: FeatureType, + categories: List[Double]) { + + override def toString = + "Feature = " + feature + ", threshold = " + threshold + ", featureType = " + featureType + + ", categories = " + categories +} + +/** + * Split with minimum threshold for continuous features. Helps with the smallest bin creation. + * @param feature feature index + * @param featureType type of feature -- categorical or continuous + */ +private[tree] class DummyLowSplit(feature: Int, featureType: FeatureType) + extends Split(feature, Double.MinValue, featureType, List()) + +/** + * Split with maximum threshold for continuous features. Helps with the highest bin creation. + * @param feature feature index + * @param featureType type of feature -- categorical or continuous + */ +private[tree] class DummyHighSplit(feature: Int, featureType: FeatureType) + extends Split(feature, Double.MaxValue, featureType, List()) + +/** + * Split with no acceptable feature values for categorical features. Helps with the first bin + * creation. + * @param feature feature index + * @param featureType type of feature -- categorical or continuous + */ +private[tree] class DummyCategoricalSplit(feature: Int, featureType: FeatureType) + extends Split(feature, Double.MaxValue, featureType, List()) + diff --git a/mllib/src/main/scala/org/apache/spark/mllib/util/DataValidators.scala b/mllib/src/main/scala/org/apache/spark/mllib/util/DataValidators.scala index 8b55bce7c4bec..45f95482a1def 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/util/DataValidators.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/util/DataValidators.scala @@ -17,23 +17,24 @@ package org.apache.spark.mllib.util +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.Logging import org.apache.spark.rdd.RDD import org.apache.spark.mllib.regression.LabeledPoint /** + * :: DeveloperApi :: * A collection of methods used to validate data before applying ML algorithms. */ +@DeveloperApi object DataValidators extends Logging { /** * Function to check if labels used for classification are either zero or one. * - * @param data - input data set that needs to be checked - * * @return True if labels are all zero or one, false otherwise. */ - val classificationLabels: RDD[LabeledPoint] => Boolean = { data => + val binaryLabelValidator: RDD[LabeledPoint] => Boolean = { data => val numInvalid = data.filter(x => x.label != 1.0 && x.label != 0.0).count() if (numInvalid != 0) { logError("Classification labels should be 0 or 1. Found " + numInvalid + " invalid labels") diff --git a/mllib/src/main/scala/org/apache/spark/mllib/util/KMeansDataGenerator.scala b/mllib/src/main/scala/org/apache/spark/mllib/util/KMeansDataGenerator.scala index 9109189dff52f..6eaebaf7dba9f 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/util/KMeansDataGenerator.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/util/KMeansDataGenerator.scala @@ -19,15 +19,17 @@ package org.apache.spark.mllib.util import scala.util.Random +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD /** + * :: DeveloperApi :: * Generate test data for KMeans. This class first chooses k cluster centers * from a d-dimensional Gaussian distribution scaled by factor r and then creates a Gaussian * cluster with scale 1 around each center. */ - +@DeveloperApi object KMeansDataGenerator { /** diff --git a/mllib/src/main/scala/org/apache/spark/mllib/util/LabelParsers.scala b/mllib/src/main/scala/org/apache/spark/mllib/util/LabelParsers.scala new file mode 100644 index 0000000000000..f7966d3ebb613 --- /dev/null +++ b/mllib/src/main/scala/org/apache/spark/mllib/util/LabelParsers.scala @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.util + +/** Trait for label parsers. */ +trait LabelParser extends Serializable { + /** Parses a string label into a double label. */ + def parse(labelString: String): Double +} + +/** + * Label parser for binary labels, which outputs 1.0 (positive) if the value is greater than 0.5, + * or 0.0 (negative) otherwise. So it works with +1/-1 labeling and +1/0 labeling. + */ +object BinaryLabelParser extends LabelParser { + /** Gets the default instance of BinaryLabelParser. */ + def getInstance(): LabelParser = this + + /** + * Parses the input label into positive (1.0) if the value is greater than 0.5, + * or negative (0.0) otherwise. + */ + override def parse(labelString: String): Double = if (labelString.toDouble > 0.5) 1.0 else 0.0 +} + +/** + * Label parser for multiclass labels, which converts the input label to double. + */ +object MulticlassLabelParser extends LabelParser { + /** Gets the default instance of MulticlassLabelParser. */ + def getInstance(): LabelParser = this + + override def parse(labelString: String): Double = labelString.toDouble +} diff --git a/mllib/src/main/scala/org/apache/spark/mllib/util/LinearDataGenerator.scala b/mllib/src/main/scala/org/apache/spark/mllib/util/LinearDataGenerator.scala index 2e03684e62861..c8e160d00c2d6 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/util/LinearDataGenerator.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/util/LinearDataGenerator.scala @@ -22,15 +22,19 @@ import scala.util.Random import org.jblas.DoubleMatrix +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LabeledPoint /** + * :: DeveloperApi :: * Generate sample data used for Linear Data. This class generates * uniformly random values for every feature and adds Gaussian noise with mean `eps` to the * response variable `Y`. */ +@DeveloperApi object LinearDataGenerator { /** @@ -74,7 +78,7 @@ object LinearDataGenerator { val y = x.map { xi => new DoubleMatrix(1, xi.length, xi: _*).dot(weightsMat) + intercept + eps * rnd.nextGaussian() } - y.zip(x).map(p => LabeledPoint(p._1, p._2)) + y.zip(x).map(p => LabeledPoint(p._1, Vectors.dense(p._2))) } /** diff --git a/mllib/src/main/scala/org/apache/spark/mllib/util/LogisticRegressionDataGenerator.scala b/mllib/src/main/scala/org/apache/spark/mllib/util/LogisticRegressionDataGenerator.scala index 52c4a71d621a1..c82cd8fd4641c 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/util/LogisticRegressionDataGenerator.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/util/LogisticRegressionDataGenerator.scala @@ -19,15 +19,18 @@ package org.apache.spark.mllib.util import scala.util.Random +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.mllib.regression.LabeledPoint +import org.apache.spark.mllib.linalg.Vectors /** + * :: DeveloperApi :: * Generate test data for LogisticRegression. This class chooses positive labels * with probability `probOne` and scales features for positive examples by `eps`. */ - +@DeveloperApi object LogisticRegressionDataGenerator { /** @@ -54,7 +57,7 @@ object LogisticRegressionDataGenerator { val x = Array.fill[Double](nfeatures) { rnd.nextGaussian() + (y * eps) } - LabeledPoint(y, x) + LabeledPoint(y, Vectors.dense(x)) } data } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/util/MFDataGenerator.scala b/mllib/src/main/scala/org/apache/spark/mllib/util/MFDataGenerator.scala index 348aba1dea5b6..3f413faca6bb4 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/util/MFDataGenerator.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/util/MFDataGenerator.scala @@ -21,35 +21,36 @@ import scala.util.Random import org.jblas.DoubleMatrix +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD /** -* Generate RDD(s) containing data for Matrix Factorization. -* -* This method samples training entries according to the oversampling factor -* 'trainSampFact', which is a multiplicative factor of the number of -* degrees of freedom of the matrix: rank*(m+n-rank). -* -* It optionally samples entries for a testing matrix using -* 'testSampFact', the percentage of the number of training entries -* to use for testing. -* -* This method takes the following inputs: -* sparkMaster (String) The master URL. -* outputPath (String) Directory to save output. -* m (Int) Number of rows in data matrix. -* n (Int) Number of columns in data matrix. -* rank (Int) Underlying rank of data matrix. -* trainSampFact (Double) Oversampling factor. -* noise (Boolean) Whether to add gaussian noise to training data. -* sigma (Double) Standard deviation of added gaussian noise. -* test (Boolean) Whether to create testing RDD. -* testSampFact (Double) Percentage of training data to use as test data. -*/ - -object MFDataGenerator{ - + * :: DeveloperApi :: + * Generate RDD(s) containing data for Matrix Factorization. + * + * This method samples training entries according to the oversampling factor + * 'trainSampFact', which is a multiplicative factor of the number of + * degrees of freedom of the matrix: rank*(m+n-rank). + * + * It optionally samples entries for a testing matrix using + * 'testSampFact', the percentage of the number of training entries + * to use for testing. + * + * This method takes the following inputs: + * sparkMaster (String) The master URL. + * outputPath (String) Directory to save output. + * m (Int) Number of rows in data matrix. + * n (Int) Number of columns in data matrix. + * rank (Int) Underlying rank of data matrix. + * trainSampFact (Double) Oversampling factor. + * noise (Boolean) Whether to add gaussian noise to training data. + * sigma (Double) Standard deviation of added gaussian noise. + * test (Boolean) Whether to create testing RDD. + * testSampFact (Double) Percentage of training data to use as test data. + */ +@DeveloperApi +object MFDataGenerator { def main(args: Array[String]) { if (args.length < 2) { println("Usage: MFDataGenerator " + diff --git a/mllib/src/main/scala/org/apache/spark/mllib/util/MLUtils.scala b/mllib/src/main/scala/org/apache/spark/mllib/util/MLUtils.scala index 64c6136a8b89d..ac2360c429e2b 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/util/MLUtils.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/util/MLUtils.scala @@ -17,19 +17,113 @@ package org.apache.spark.mllib.util +import breeze.linalg.{Vector => BV, DenseVector => BDV, SparseVector => BSV, + squaredDistance => breezeSquaredDistance} + +import org.apache.spark.annotation.Experimental import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD -import org.apache.spark.SparkContext._ - -import org.jblas.DoubleMatrix import org.apache.spark.mllib.regression.LabeledPoint +import org.apache.spark.mllib.linalg.{Vector, Vectors} /** * Helper methods to load, save and pre-process data used in ML Lib. */ object MLUtils { + private[util] lazy val EPSILON = { + var eps = 1.0 + while ((1.0 + (eps / 2.0)) != 1.0) { + eps /= 2.0 + } + eps + } + /** + * Loads labeled data in the LIBSVM format into an RDD[LabeledPoint]. + * The LIBSVM format is a text-based format used by LIBSVM and LIBLINEAR. + * Each line represents a labeled sparse feature vector using the following format: + * {{{label index1:value1 index2:value2 ...}}} + * where the indices are one-based and in ascending order. + * This method parses each line into a [[org.apache.spark.mllib.regression.LabeledPoint]], + * where the feature indices are converted to zero-based. + * + * @param sc Spark context + * @param path file or directory path in any Hadoop-supported file system URI + * @param labelParser parser for labels, default: 1.0 if label > 0.5 or 0.0 otherwise + * @param numFeatures number of features, which will be determined from the input data if a + * negative value is given. The default value is -1. + * @param minSplits min number of partitions, default: sc.defaultMinSplits + * @return labeled data stored as an RDD[LabeledPoint] + */ + def loadLibSVMData( + sc: SparkContext, + path: String, + labelParser: LabelParser, + numFeatures: Int, + minSplits: Int): RDD[LabeledPoint] = { + val parsed = sc.textFile(path, minSplits) + .map(_.trim) + .filter(!_.isEmpty) + .map(_.split(' ')) + // Determine number of features. + val d = if (numFeatures >= 0) { + numFeatures + } else { + parsed.map { items => + if (items.length > 1) { + items.last.split(':')(0).toInt + } else { + 0 + } + }.reduce(math.max) + } + parsed.map { items => + val label = labelParser.parse(items.head) + val (indices, values) = items.tail.map { item => + val indexAndValue = item.split(':') + val index = indexAndValue(0).toInt - 1 + val value = indexAndValue(1).toDouble + (index, value) + }.unzip + LabeledPoint(label, Vectors.sparse(d, indices.toArray, values.toArray)) + } + } + + // Convenient methods for calling from Java. + + /** + * Loads binary labeled data in the LIBSVM format into an RDD[LabeledPoint], + * with number of features determined automatically and the default number of partitions. + */ + def loadLibSVMData(sc: SparkContext, path: String): RDD[LabeledPoint] = + loadLibSVMData(sc, path, BinaryLabelParser, -1, sc.defaultMinSplits) + + /** + * Loads labeled data in the LIBSVM format into an RDD[LabeledPoint], + * with the given label parser, number of features determined automatically, + * and the default number of partitions. + */ + def loadLibSVMData( + sc: SparkContext, + path: String, + labelParser: LabelParser): RDD[LabeledPoint] = + loadLibSVMData(sc, path, labelParser, -1, sc.defaultMinSplits) + + /** + * Loads labeled data in the LIBSVM format into an RDD[LabeledPoint], + * with the given label parser, number of features specified explicitly, + * and the default number of partitions. + */ + def loadLibSVMData( + sc: SparkContext, + path: String, + labelParser: LabelParser, + numFeatures: Int): RDD[LabeledPoint] = + loadLibSVMData(sc, path, labelParser, numFeatures, sc.defaultMinSplits) + + /** + * :: Experimental :: * Load labeled data from a file. The data format used here is * , ... * where , are feature values in Double and is the corresponding label as Double. @@ -39,16 +133,18 @@ object MLUtils { * @return An RDD of LabeledPoint. Each labeled point has two elements: the first element is * the label, and the second element represents the feature values (an array of Double). */ + @Experimental def loadLabeledData(sc: SparkContext, dir: String): RDD[LabeledPoint] = { sc.textFile(dir).map { line => val parts = line.split(',') val label = parts(0).toDouble - val features = parts(1).trim().split(' ').map(_.toDouble) + val features = Vectors.dense(parts(1).trim().split(' ').map(_.toDouble)) LabeledPoint(label, features) } } /** + * :: Experimental :: * Save labeled data to a file. The data format used here is * , ... * where , are feature values in Double and is the corresponding label as Double. @@ -56,8 +152,9 @@ object MLUtils { * @param data An RDD of LabeledPoints containing data to be saved. * @param dir Directory to save the data. */ + @Experimental def saveLabeledData(data: RDD[LabeledPoint], dir: String) { - val dataStr = data.map(x => x.label + "," + x.features.mkString(" ")) + val dataStr = data.map(x => x.label + "," + x.features.toArray.mkString(" ")) dataStr.saveAsTextFile(dir) } @@ -65,59 +162,107 @@ object MLUtils { * Utility function to compute mean and standard deviation on a given dataset. * * @param data - input data set whose statistics are computed - * @param nfeatures - number of features - * @param nexamples - number of examples in input dataset + * @param numFeatures - number of features + * @param numExamples - number of examples in input dataset * * @return (yMean, xColMean, xColSd) - Tuple consisting of * yMean - mean of the labels * xColMean - Row vector with mean for every column (or feature) of the input data * xColSd - Row vector standard deviation for every column (or feature) of the input data. */ - def computeStats(data: RDD[LabeledPoint], nfeatures: Int, nexamples: Long): - (Double, DoubleMatrix, DoubleMatrix) = { - val yMean: Double = data.map { labeledPoint => labeledPoint.label }.reduce(_ + _) / nexamples - - // NOTE: We shuffle X by column here to compute column sum and sum of squares. - val xColSumSq: RDD[(Int, (Double, Double))] = data.flatMap { labeledPoint => - val nCols = labeledPoint.features.length - // Traverse over every column and emit (col, value, value^2) - Iterator.tabulate(nCols) { i => - (i, (labeledPoint.features(i), labeledPoint.features(i)*labeledPoint.features(i))) - } - }.reduceByKey { case(x1, x2) => - (x1._1 + x2._1, x1._2 + x2._2) + private[mllib] def computeStats( + data: RDD[LabeledPoint], + numFeatures: Int, + numExamples: Long): (Double, Vector, Vector) = { + val brzData = data.map { case LabeledPoint(label, features) => + (label, features.toBreeze) } - val xColSumsMap = xColSumSq.collectAsMap() - - val xColMean = DoubleMatrix.zeros(nfeatures, 1) - val xColSd = DoubleMatrix.zeros(nfeatures, 1) - - // Compute mean and unbiased variance using column sums - var col = 0 - while (col < nfeatures) { - xColMean.put(col, xColSumsMap(col)._1 / nexamples) - val variance = - (xColSumsMap(col)._2 - (math.pow(xColSumsMap(col)._1, 2) / nexamples)) / nexamples - xColSd.put(col, math.sqrt(variance)) - col += 1 + val aggStats = brzData.aggregate( + (0L, 0.0, BDV.zeros[Double](numFeatures), BDV.zeros[Double](numFeatures)) + )( + seqOp = (c, v) => (c, v) match { + case ((n, sumLabel, sum, sumSq), (label, features)) => + features.activeIterator.foreach { case (i, x) => + sumSq(i) += x * x + } + (n + 1L, sumLabel + label, sum += features, sumSq) + }, + combOp = (c1, c2) => (c1, c2) match { + case ((n1, sumLabel1, sum1, sumSq1), (n2, sumLabel2, sum2, sumSq2)) => + (n1 + n2, sumLabel1 + sumLabel2, sum1 += sum2, sumSq1 += sumSq2) + } + ) + val (nl, sumLabel, sum, sumSq) = aggStats + + require(nl > 0, "Input data is empty.") + require(nl == numExamples) + + val n = nl.toDouble + val yMean = sumLabel / n + val mean = sum / n + val std = new Array[Double](sum.length) + var i = 0 + while (i < numFeatures) { + std(i) = sumSq(i) / n - mean(i) * mean(i) + i += 1 } - (yMean, xColMean, xColSd) + (yMean, Vectors.fromBreeze(mean), Vectors.dense(std)) } /** - * Return the squared Euclidean distance between two vectors. + * Returns the squared Euclidean distance between two vectors. The following formula will be used + * if it does not introduce too much numerical error: + *
      +   *   \|a - b\|_2^2 = \|a\|_2^2 + \|b\|_2^2 - 2 a^T b.
      +   * 
      + * When both vector norms are given, this is faster than computing the squared distance directly, + * especially when one of the vectors is a sparse vector. + * + * @param v1 the first vector + * @param norm1 the norm of the first vector, non-negative + * @param v2 the second vector + * @param norm2 the norm of the second vector, non-negative + * @param precision desired relative precision for the squared distance + * @return squared distance between v1 and v2 within the specified precision */ - def squaredDistance(v1: Array[Double], v2: Array[Double]): Double = { - if (v1.length != v2.length) { - throw new IllegalArgumentException("Vector sizes don't match") - } - var i = 0 - var sum = 0.0 - while (i < v1.length) { - sum += (v1(i) - v2(i)) * (v1(i) - v2(i)) - i += 1 + private[mllib] def fastSquaredDistance( + v1: BV[Double], + norm1: Double, + v2: BV[Double], + norm2: Double, + precision: Double = 1e-6): Double = { + val n = v1.size + require(v2.size == n) + require(norm1 >= 0.0 && norm2 >= 0.0) + val sumSquaredNorm = norm1 * norm1 + norm2 * norm2 + val normDiff = norm1 - norm2 + var sqDist = 0.0 + /* + * The relative error is + *
      +     * EPSILON * ( \|a\|_2^2 + \|b\\_2^2 + 2 |a^T b|) / ( \|a - b\|_2^2 ),
      +     * 
      + * which is bounded by + *
      +     * 2.0 * EPSILON * ( \|a\|_2^2 + \|b\|_2^2 ) / ( (\|a\|_2 - \|b\|_2)^2 ).
      +     * 
      + * The bound doesn't need the inner product, so we can use it as a sufficient condition to + * check quickly whether the inner product approach is accurate. + */ + val precisionBound1 = 2.0 * EPSILON * sumSquaredNorm / (normDiff * normDiff + EPSILON) + if (precisionBound1 < precision) { + sqDist = sumSquaredNorm - 2.0 * v1.dot(v2) + } else if (v1.isInstanceOf[BSV[Double]] || v2.isInstanceOf[BSV[Double]]) { + val dot = v1.dot(v2) + sqDist = math.max(sumSquaredNorm - 2.0 * dot, 0.0) + val precisionBound2 = EPSILON * (sumSquaredNorm + 2.0 * math.abs(dot)) / (sqDist + EPSILON) + if (precisionBound2 > precision) { + sqDist = breezeSquaredDistance(v1, v2) + } + } else { + sqDist = breezeSquaredDistance(v1, v2) } - sum + sqDist } } diff --git a/mllib/src/main/scala/org/apache/spark/mllib/util/SVMDataGenerator.scala b/mllib/src/main/scala/org/apache/spark/mllib/util/SVMDataGenerator.scala index c96c94f70eef7..ba8190b0e07e8 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/util/SVMDataGenerator.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/util/SVMDataGenerator.scala @@ -21,14 +21,18 @@ import scala.util.Random import org.jblas.DoubleMatrix +import org.apache.spark.annotation.DeveloperApi import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LabeledPoint /** + * :: DeveloperApi :: * Generate sample data used for SVM. This class generates uniform random values * for the features and adds Gaussian noise with weight 0.1 to generate labels. */ +@DeveloperApi object SVMDataGenerator { def main(args: Array[String]) { @@ -58,7 +62,7 @@ object SVMDataGenerator { } val yD = new DoubleMatrix(1, x.length, x: _*).dot(trueWeights) + rnd.nextGaussian() * 0.1 val y = if (yD < 0) 0.0 else 1.0 - LabeledPoint(y, x) + LabeledPoint(y, Vectors.dense(x)) } MLUtils.saveLabeledData(data, outputPath) diff --git a/mllib/src/test/java/org/apache/spark/mllib/classification/JavaNaiveBayesSuite.java b/mllib/src/test/java/org/apache/spark/mllib/classification/JavaNaiveBayesSuite.java index 073ded6f36933..c80b1134ed1b2 100644 --- a/mllib/src/test/java/org/apache/spark/mllib/classification/JavaNaiveBayesSuite.java +++ b/mllib/src/test/java/org/apache/spark/mllib/classification/JavaNaiveBayesSuite.java @@ -19,6 +19,7 @@ import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; +import org.apache.spark.mllib.linalg.Vectors; import org.apache.spark.mllib.regression.LabeledPoint; import org.junit.After; import org.junit.Assert; @@ -45,12 +46,12 @@ public void tearDown() { } private static final List POINTS = Arrays.asList( - new LabeledPoint(0, new double[] {1.0, 0.0, 0.0}), - new LabeledPoint(0, new double[] {2.0, 0.0, 0.0}), - new LabeledPoint(1, new double[] {0.0, 1.0, 0.0}), - new LabeledPoint(1, new double[] {0.0, 2.0, 0.0}), - new LabeledPoint(2, new double[] {0.0, 0.0, 1.0}), - new LabeledPoint(2, new double[] {0.0, 0.0, 2.0}) + new LabeledPoint(0, Vectors.dense(1.0, 0.0, 0.0)), + new LabeledPoint(0, Vectors.dense(2.0, 0.0, 0.0)), + new LabeledPoint(1, Vectors.dense(0.0, 1.0, 0.0)), + new LabeledPoint(1, Vectors.dense(0.0, 2.0, 0.0)), + new LabeledPoint(2, Vectors.dense(0.0, 0.0, 1.0)), + new LabeledPoint(2, Vectors.dense(0.0, 0.0, 2.0)) ); private int validatePrediction(List points, NaiveBayesModel model) { diff --git a/mllib/src/test/java/org/apache/spark/mllib/classification/JavaSVMSuite.java b/mllib/src/test/java/org/apache/spark/mllib/classification/JavaSVMSuite.java index 117e5eaa8b78e..4701a5e545020 100644 --- a/mllib/src/test/java/org/apache/spark/mllib/classification/JavaSVMSuite.java +++ b/mllib/src/test/java/org/apache/spark/mllib/classification/JavaSVMSuite.java @@ -17,7 +17,6 @@ package org.apache.spark.mllib.classification; - import java.io.Serializable; import java.util.List; @@ -28,7 +27,6 @@ import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; - import org.apache.spark.mllib.regression.LabeledPoint; public class JavaSVMSuite implements Serializable { @@ -94,5 +92,4 @@ public void runSVMUsingStaticMethods() { int numAccurate = validatePrediction(validationData, model); Assert.assertTrue(numAccurate > nPoints * 4.0 / 5.0); } - } diff --git a/mllib/src/test/java/org/apache/spark/mllib/clustering/JavaKMeansSuite.java b/mllib/src/test/java/org/apache/spark/mllib/clustering/JavaKMeansSuite.java index 33b99f4bd3bcf..49a614bd90cab 100644 --- a/mllib/src/test/java/org/apache/spark/mllib/clustering/JavaKMeansSuite.java +++ b/mllib/src/test/java/org/apache/spark/mllib/clustering/JavaKMeansSuite.java @@ -18,16 +18,19 @@ package org.apache.spark.mllib.clustering; import java.io.Serializable; -import java.util.ArrayList; import java.util.List; import org.junit.After; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.*; + +import com.google.common.collect.Lists; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; +import org.apache.spark.mllib.linalg.Vector; +import org.apache.spark.mllib.linalg.Vectors; public class JavaKMeansSuite implements Serializable { private transient JavaSparkContext sc; @@ -44,72 +47,45 @@ public void tearDown() { System.clearProperty("spark.driver.port"); } - // L1 distance between two points - double distance1(double[] v1, double[] v2) { - double distance = 0.0; - for (int i = 0; i < v1.length; ++i) { - distance = Math.max(distance, Math.abs(v1[i] - v2[i])); - } - return distance; - } - - // Assert that two sets of points are equal, within EPSILON tolerance - void assertSetsEqual(double[][] v1, double[][] v2) { - double EPSILON = 1e-4; - Assert.assertTrue(v1.length == v2.length); - for (int i = 0; i < v1.length; ++i) { - double minDistance = Double.MAX_VALUE; - for (int j = 0; j < v2.length; ++j) { - minDistance = Math.min(minDistance, distance1(v1[i], v2[j])); - } - Assert.assertTrue(minDistance <= EPSILON); - } - - for (int i = 0; i < v2.length; ++i) { - double minDistance = Double.MAX_VALUE; - for (int j = 0; j < v1.length; ++j) { - minDistance = Math.min(minDistance, distance1(v2[i], v1[j])); - } - Assert.assertTrue(minDistance <= EPSILON); - } - } - - @Test public void runKMeansUsingStaticMethods() { - List points = new ArrayList(); - points.add(new double[]{1.0, 2.0, 6.0}); - points.add(new double[]{1.0, 3.0, 0.0}); - points.add(new double[]{1.0, 4.0, 6.0}); + List points = Lists.newArrayList( + Vectors.dense(1.0, 2.0, 6.0), + Vectors.dense(1.0, 3.0, 0.0), + Vectors.dense(1.0, 4.0, 6.0) + ); - double[][] expectedCenter = { {1.0, 3.0, 4.0} }; + Vector expectedCenter = Vectors.dense(1.0, 3.0, 4.0); - JavaRDD data = sc.parallelize(points, 2); - KMeansModel model = KMeans.train(data.rdd(), 1, 1); - assertSetsEqual(model.clusterCenters(), expectedCenter); + JavaRDD data = sc.parallelize(points, 2); + KMeansModel model = KMeans.train(data.rdd(), 1, 1, 1, KMeans.K_MEANS_PARALLEL()); + assertEquals(1, model.clusterCenters().length); + assertEquals(expectedCenter, model.clusterCenters()[0]); model = KMeans.train(data.rdd(), 1, 1, 1, KMeans.RANDOM()); - assertSetsEqual(model.clusterCenters(), expectedCenter); + assertEquals(expectedCenter, model.clusterCenters()[0]); } @Test public void runKMeansUsingConstructor() { - List points = new ArrayList(); - points.add(new double[]{1.0, 2.0, 6.0}); - points.add(new double[]{1.0, 3.0, 0.0}); - points.add(new double[]{1.0, 4.0, 6.0}); + List points = Lists.newArrayList( + Vectors.dense(1.0, 2.0, 6.0), + Vectors.dense(1.0, 3.0, 0.0), + Vectors.dense(1.0, 4.0, 6.0) + ); - double[][] expectedCenter = { {1.0, 3.0, 4.0} }; + Vector expectedCenter = Vectors.dense(1.0, 3.0, 4.0); - JavaRDD data = sc.parallelize(points, 2); + JavaRDD data = sc.parallelize(points, 2); KMeansModel model = new KMeans().setK(1).setMaxIterations(5).run(data.rdd()); - assertSetsEqual(model.clusterCenters(), expectedCenter); - - model = new KMeans().setK(1) - .setMaxIterations(1) - .setRuns(1) - .setInitializationMode(KMeans.RANDOM()) - .run(data.rdd()); - assertSetsEqual(model.clusterCenters(), expectedCenter); + assertEquals(1, model.clusterCenters().length); + assertEquals(expectedCenter, model.clusterCenters()[0]); + + model = new KMeans() + .setK(1) + .setMaxIterations(1) + .setInitializationMode(KMeans.RANDOM()) + .run(data.rdd()); + assertEquals(expectedCenter, model.clusterCenters()[0]); } } diff --git a/mllib/src/test/java/org/apache/spark/mllib/linalg/JavaVectorsSuite.java b/mllib/src/test/java/org/apache/spark/mllib/linalg/JavaVectorsSuite.java new file mode 100644 index 0000000000000..c6d8425ffc38d --- /dev/null +++ b/mllib/src/test/java/org/apache/spark/mllib/linalg/JavaVectorsSuite.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg; + +import java.io.Serializable; + +import scala.Tuple2; + +import com.google.common.collect.Lists; + +import org.junit.Test; +import static org.junit.Assert.*; + +public class JavaVectorsSuite implements Serializable { + + @Test + public void denseArrayConstruction() { + Vector v = Vectors.dense(1.0, 2.0, 3.0); + assertArrayEquals(new double[]{1.0, 2.0, 3.0}, v.toArray(), 0.0); + } + + @Test + public void sparseArrayConstruction() { + Vector v = Vectors.sparse(3, Lists.>newArrayList( + new Tuple2(0, 2.0), + new Tuple2(2, 3.0))); + assertArrayEquals(new double[]{2.0, 0.0, 3.0}, v.toArray(), 0.0); + } +} diff --git a/mllib/src/test/java/org/apache/spark/mllib/regression/JavaLassoSuite.java b/mllib/src/test/java/org/apache/spark/mllib/regression/JavaLassoSuite.java index f44b25cd44d19..f725924a2d971 100644 --- a/mllib/src/test/java/org/apache/spark/mllib/regression/JavaLassoSuite.java +++ b/mllib/src/test/java/org/apache/spark/mllib/regression/JavaLassoSuite.java @@ -59,7 +59,7 @@ int validatePrediction(List validationData, LassoModel model) { @Test public void runLassoUsingConstructor() { int nPoints = 10000; - double A = 2.0; + double A = 0.0; double[] weights = {-1.5, 1.0e-2}; JavaRDD testRDD = sc.parallelize(LinearDataGenerator.generateLinearInputAsList(A, @@ -80,7 +80,7 @@ public void runLassoUsingConstructor() { @Test public void runLassoUsingStaticMethods() { int nPoints = 10000; - double A = 2.0; + double A = 0.0; double[] weights = {-1.5, 1.0e-2}; JavaRDD testRDD = sc.parallelize(LinearDataGenerator.generateLinearInputAsList(A, diff --git a/mllib/src/test/java/org/apache/spark/mllib/regression/JavaRidgeRegressionSuite.java b/mllib/src/test/java/org/apache/spark/mllib/regression/JavaRidgeRegressionSuite.java index 2fdd5fc8fdca6..03714ae7e4d00 100644 --- a/mllib/src/test/java/org/apache/spark/mllib/regression/JavaRidgeRegressionSuite.java +++ b/mllib/src/test/java/org/apache/spark/mllib/regression/JavaRidgeRegressionSuite.java @@ -55,30 +55,27 @@ public void tearDown() { return errorSum / validationData.size(); } - List generateRidgeData(int numPoints, int nfeatures, double eps) { + List generateRidgeData(int numPoints, int numFeatures, double std) { org.jblas.util.Random.seed(42); // Pick weights as random values distributed uniformly in [-0.5, 0.5] - DoubleMatrix w = DoubleMatrix.rand(nfeatures, 1).subi(0.5); - // Set first two weights to eps - w.put(0, 0, eps); - w.put(1, 0, eps); - return LinearDataGenerator.generateLinearInputAsList(0.0, w.data, numPoints, 42, eps); + DoubleMatrix w = DoubleMatrix.rand(numFeatures, 1).subi(0.5); + return LinearDataGenerator.generateLinearInputAsList(0.0, w.data, numPoints, 42, std); } @Test public void runRidgeRegressionUsingConstructor() { - int nexamples = 200; - int nfeatures = 20; - double eps = 10.0; - List data = generateRidgeData(2*nexamples, nfeatures, eps); + int numExamples = 50; + int numFeatures = 20; + List data = generateRidgeData(2*numExamples, numFeatures, 10.0); - JavaRDD testRDD = sc.parallelize(data.subList(0, nexamples)); - List validationData = data.subList(nexamples, 2*nexamples); + JavaRDD testRDD = sc.parallelize(data.subList(0, numExamples)); + List validationData = data.subList(numExamples, 2 * numExamples); RidgeRegressionWithSGD ridgeSGDImpl = new RidgeRegressionWithSGD(); - ridgeSGDImpl.optimizer().setStepSize(1.0) - .setRegParam(0.0) - .setNumIterations(200); + ridgeSGDImpl.optimizer() + .setStepSize(1.0) + .setRegParam(0.0) + .setNumIterations(200); RidgeRegressionModel model = ridgeSGDImpl.run(testRDD.rdd()); double unRegularizedErr = predictionError(validationData, model); @@ -91,13 +88,12 @@ public void runRidgeRegressionUsingConstructor() { @Test public void runRidgeRegressionUsingStaticMethods() { - int nexamples = 200; - int nfeatures = 20; - double eps = 10.0; - List data = generateRidgeData(2*nexamples, nfeatures, eps); + int numExamples = 50; + int numFeatures = 20; + List data = generateRidgeData(2 * numExamples, numFeatures, 10.0); - JavaRDD testRDD = sc.parallelize(data.subList(0, nexamples)); - List validationData = data.subList(nexamples, 2*nexamples); + JavaRDD testRDD = sc.parallelize(data.subList(0, numExamples)); + List validationData = data.subList(numExamples, 2 * numExamples); RidgeRegressionModel model = RidgeRegressionWithSGD.train(testRDD.rdd(), 200, 1.0, 0.0); double unRegularizedErr = predictionError(validationData, model); diff --git a/mllib/src/test/scala/org/apache/spark/mllib/classification/LogisticRegressionSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/classification/LogisticRegressionSuite.scala index 05322b024d5f6..1e03c9df820b0 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/classification/LogisticRegressionSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/classification/LogisticRegressionSuite.scala @@ -20,11 +20,10 @@ package org.apache.spark.mllib.classification import scala.util.Random import scala.collection.JavaConversions._ -import org.scalatest.BeforeAndAfterAll import org.scalatest.FunSuite import org.scalatest.matchers.ShouldMatchers -import org.apache.spark.SparkContext +import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression._ import org.apache.spark.mllib.util.LocalSparkContext @@ -61,7 +60,7 @@ object LogisticRegressionSuite { if (yVal > 0) 1 else 0 } - val testData = (0 until nPoints).map(i => LabeledPoint(y(i), Array(x1(i)))) + val testData = (0 until nPoints).map(i => LabeledPoint(y(i), Vectors.dense(Array(x1(i))))) testData } @@ -113,7 +112,7 @@ class LogisticRegressionSuite extends FunSuite with LocalSparkContext with Shoul val testData = LogisticRegressionSuite.generateLogisticInput(A, B, nPoints, 42) val initialB = -1.0 - val initialWeights = Array(initialB) + val initialWeights = Vectors.dense(initialB) val testRDD = sc.parallelize(testData, 2) testRDD.cache() diff --git a/mllib/src/test/scala/org/apache/spark/mllib/classification/NaiveBayesSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/classification/NaiveBayesSuite.scala index 9dd6c79ee6ad8..516895d04222d 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/classification/NaiveBayesSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/classification/NaiveBayesSuite.scala @@ -19,9 +19,9 @@ package org.apache.spark.mllib.classification import scala.util.Random -import org.scalatest.BeforeAndAfterAll import org.scalatest.FunSuite +import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.mllib.util.LocalSparkContext @@ -54,7 +54,7 @@ object NaiveBayesSuite { if (rnd.nextDouble() < _theta(y)(j)) 1 else 0 } - LabeledPoint(y, xi) + LabeledPoint(y, Vectors.dense(xi)) } } } diff --git a/mllib/src/test/scala/org/apache/spark/mllib/classification/SVMSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/classification/SVMSuite.scala index bc7abb568a172..dfacbfeee6fb4 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/classification/SVMSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/classification/SVMSuite.scala @@ -20,7 +20,6 @@ package org.apache.spark.mllib.classification import scala.util.Random import scala.collection.JavaConversions._ -import org.scalatest.BeforeAndAfterAll import org.scalatest.FunSuite import org.jblas.DoubleMatrix @@ -28,6 +27,7 @@ import org.jblas.DoubleMatrix import org.apache.spark.SparkException import org.apache.spark.mllib.regression._ import org.apache.spark.mllib.util.LocalSparkContext +import org.apache.spark.mllib.linalg.Vectors object SVMSuite { @@ -54,7 +54,7 @@ object SVMSuite { intercept + 0.01 * rnd.nextGaussian() if (yD < 0) 0.0 else 1.0 } - y.zip(x).map(p => LabeledPoint(p._1, p._2)) + y.zip(x).map(p => LabeledPoint(p._1, Vectors.dense(p._2))) } } @@ -110,7 +110,7 @@ class SVMSuite extends FunSuite with LocalSparkContext { val initialB = -1.0 val initialC = -1.0 - val initialWeights = Array(initialB,initialC) + val initialWeights = Vectors.dense(initialB, initialC) val testRDD = sc.parallelize(testData, 2) testRDD.cache() @@ -150,10 +150,10 @@ class SVMSuite extends FunSuite with LocalSparkContext { } intercept[SparkException] { - val model = SVMWithSGD.train(testRDDInvalid, 100) + SVMWithSGD.train(testRDDInvalid, 100) } // Turning off data validation should not throw an exception - val noValidationModel = new SVMWithSGD().setValidateData(false).run(testRDDInvalid) + new SVMWithSGD().setValidateData(false).run(testRDDInvalid) } } diff --git a/mllib/src/test/scala/org/apache/spark/mllib/clustering/KMeansSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/clustering/KMeansSuite.scala index 4ef1d1f64ff06..560a4ad71a4de 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/clustering/KMeansSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/clustering/KMeansSuite.scala @@ -17,127 +17,139 @@ package org.apache.spark.mllib.clustering - -import org.scalatest.BeforeAndAfterAll import org.scalatest.FunSuite import org.apache.spark.mllib.util.LocalSparkContext +import org.apache.spark.mllib.linalg.Vectors class KMeansSuite extends FunSuite with LocalSparkContext { - val EPSILON = 1e-4 - import KMeans.{RANDOM, K_MEANS_PARALLEL} - def prettyPrint(point: Array[Double]): String = point.mkString("(", ", ", ")") - - def prettyPrint(points: Array[Array[Double]]): String = { - points.map(prettyPrint).mkString("(", "; ", ")") - } - - // L1 distance between two points - def distance1(v1: Array[Double], v2: Array[Double]): Double = { - v1.zip(v2).map{ case (a, b) => math.abs(a-b) }.max - } - - // Assert that two vectors are equal within tolerance EPSILON - def assertEqual(v1: Array[Double], v2: Array[Double]) { - def errorMessage = prettyPrint(v1) + " did not equal " + prettyPrint(v2) - assert(v1.length == v2.length, errorMessage) - assert(distance1(v1, v2) <= EPSILON, errorMessage) - } - - // Assert that two sets of points are equal, within EPSILON tolerance - def assertSetsEqual(set1: Array[Array[Double]], set2: Array[Array[Double]]) { - def errorMessage = prettyPrint(set1) + " did not equal " + prettyPrint(set2) - assert(set1.length == set2.length, errorMessage) - for (v <- set1) { - val closestDistance = set2.map(w => distance1(v, w)).min - if (closestDistance > EPSILON) { - fail(errorMessage) - } - } - for (v <- set2) { - val closestDistance = set1.map(w => distance1(v, w)).min - if (closestDistance > EPSILON) { - fail(errorMessage) - } - } - } - test("single cluster") { val data = sc.parallelize(Array( - Array(1.0, 2.0, 6.0), - Array(1.0, 3.0, 0.0), - Array(1.0, 4.0, 6.0) + Vectors.dense(1.0, 2.0, 6.0), + Vectors.dense(1.0, 3.0, 0.0), + Vectors.dense(1.0, 4.0, 6.0) )) + val center = Vectors.dense(1.0, 3.0, 4.0) + // No matter how many runs or iterations we use, we should get one cluster, // centered at the mean of the points var model = KMeans.train(data, k=1, maxIterations=1) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=2) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=5) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=1, runs=5) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=1, runs=5) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=1, runs=1, initializationMode=RANDOM) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train( data, k=1, maxIterations=1, runs=1, initializationMode=K_MEANS_PARALLEL) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) } test("single cluster with big dataset") { val smallData = Array( - Array(1.0, 2.0, 6.0), - Array(1.0, 3.0, 0.0), - Array(1.0, 4.0, 6.0) + Vectors.dense(1.0, 2.0, 6.0), + Vectors.dense(1.0, 3.0, 0.0), + Vectors.dense(1.0, 4.0, 6.0) ) val data = sc.parallelize((1 to 100).flatMap(_ => smallData), 4) // No matter how many runs or iterations we use, we should get one cluster, // centered at the mean of the points + val center = Vectors.dense(1.0, 3.0, 4.0) + var model = KMeans.train(data, k=1, maxIterations=1) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.size === 1) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=2) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=5) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=1, runs=5) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=1, runs=5) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=1, runs=1, initializationMode=RANDOM) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) model = KMeans.train(data, k=1, maxIterations=1, runs=1, initializationMode=K_MEANS_PARALLEL) - assertSetsEqual(model.clusterCenters, Array(Array(1.0, 3.0, 4.0))) + assert(model.clusterCenters.head === center) + } + + test("single cluster with sparse data") { + + val n = 10000 + val data = sc.parallelize((1 to 100).flatMap { i => + val x = i / 1000.0 + Array( + Vectors.sparse(n, Seq((0, 1.0 + x), (1, 2.0), (2, 6.0))), + Vectors.sparse(n, Seq((0, 1.0 - x), (1, 2.0), (2, 6.0))), + Vectors.sparse(n, Seq((0, 1.0), (1, 3.0 + x))), + Vectors.sparse(n, Seq((0, 1.0), (1, 3.0 - x))), + Vectors.sparse(n, Seq((0, 1.0), (1, 4.0), (2, 6.0 + x))), + Vectors.sparse(n, Seq((0, 1.0), (1, 4.0), (2, 6.0 - x))) + ) + }, 4) + + data.persist() + + // No matter how many runs or iterations we use, we should get one cluster, + // centered at the mean of the points + + val center = Vectors.sparse(n, Seq((0, 1.0), (1, 3.0), (2, 4.0))) + + var model = KMeans.train(data, k=1, maxIterations=1) + assert(model.clusterCenters.head === center) + + model = KMeans.train(data, k=1, maxIterations=2) + assert(model.clusterCenters.head === center) + + model = KMeans.train(data, k=1, maxIterations=5) + assert(model.clusterCenters.head === center) + + model = KMeans.train(data, k=1, maxIterations=1, runs=5) + assert(model.clusterCenters.head === center) + + model = KMeans.train(data, k=1, maxIterations=1, runs=5) + assert(model.clusterCenters.head === center) + + model = KMeans.train(data, k=1, maxIterations=1, runs=1, initializationMode=RANDOM) + assert(model.clusterCenters.head === center) + + model = KMeans.train(data, k=1, maxIterations=1, runs=1, initializationMode=K_MEANS_PARALLEL) + assert(model.clusterCenters.head === center) + + data.unpersist() } test("k-means|| initialization") { - val points = Array( - Array(1.0, 2.0, 6.0), - Array(1.0, 3.0, 0.0), - Array(1.0, 4.0, 6.0), - Array(1.0, 0.0, 1.0), - Array(1.0, 1.0, 1.0) + val points = Seq( + Vectors.dense(1.0, 2.0, 6.0), + Vectors.dense(1.0, 3.0, 0.0), + Vectors.dense(1.0, 4.0, 6.0), + Vectors.dense(1.0, 0.0, 1.0), + Vectors.dense(1.0, 1.0, 1.0) ) val rdd = sc.parallelize(points) @@ -146,14 +158,39 @@ class KMeansSuite extends FunSuite with LocalSparkContext { // unselected point as long as it hasn't yet selected all of them var model = KMeans.train(rdd, k=5, maxIterations=1) - assertSetsEqual(model.clusterCenters, points) + assert(Set(model.clusterCenters: _*) === Set(points: _*)) // Iterations of Lloyd's should not change the answer either model = KMeans.train(rdd, k=5, maxIterations=10) - assertSetsEqual(model.clusterCenters, points) + assert(Set(model.clusterCenters: _*) === Set(points: _*)) // Neither should more runs model = KMeans.train(rdd, k=5, maxIterations=10, runs=5) - assertSetsEqual(model.clusterCenters, points) + assert(Set(model.clusterCenters: _*) === Set(points: _*)) + } + + test("two clusters") { + val points = Seq( + Vectors.dense(0.0, 0.0), + Vectors.dense(0.0, 0.1), + Vectors.dense(0.1, 0.0), + Vectors.dense(9.0, 0.0), + Vectors.dense(9.0, 0.2), + Vectors.dense(9.2, 0.0) + ) + val rdd = sc.parallelize(points, 3) + + for (initMode <- Seq(RANDOM, K_MEANS_PARALLEL)) { + // Two iterations are sufficient no matter where the initial centers are. + val model = KMeans.train(rdd, k = 2, maxIterations = 2, runs = 1, initMode) + + val predicts = model.predict(rdd).collect() + + assert(predicts(0) === predicts(1)) + assert(predicts(0) === predicts(2)) + assert(predicts(3) === predicts(4)) + assert(predicts(3) === predicts(5)) + assert(predicts(0) != predicts(3)) + } } } diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/BreezeMatrixConversionSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/BreezeMatrixConversionSuite.scala new file mode 100644 index 0000000000000..82d49c76ed02b --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/linalg/BreezeMatrixConversionSuite.scala @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg + +import org.scalatest.FunSuite + +import breeze.linalg.{DenseMatrix => BDM} + +class BreezeMatrixConversionSuite extends FunSuite { + test("dense matrix to breeze") { + val mat = Matrices.dense(3, 2, Array(0.0, 1.0, 2.0, 3.0, 4.0, 5.0)) + val breeze = mat.toBreeze.asInstanceOf[BDM[Double]] + assert(breeze.rows === mat.numRows) + assert(breeze.cols === mat.numCols) + assert(breeze.data.eq(mat.asInstanceOf[DenseMatrix].values), "should not copy data") + } + + test("dense breeze matrix to matrix") { + val breeze = new BDM[Double](3, 2, Array(0.0, 1.0, 2.0, 3.0, 4.0, 5.0)) + val mat = Matrices.fromBreeze(breeze).asInstanceOf[DenseMatrix] + assert(mat.numRows === breeze.rows) + assert(mat.numCols === breeze.cols) + assert(mat.values.eq(breeze.data), "should not copy data") + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/BreezeVectorConversionSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/BreezeVectorConversionSuite.scala new file mode 100644 index 0000000000000..aacaa300849aa --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/linalg/BreezeVectorConversionSuite.scala @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg + +import org.scalatest.FunSuite + +import breeze.linalg.{DenseVector => BDV, SparseVector => BSV} + +/** + * Test Breeze vector conversions. + */ +class BreezeVectorConversionSuite extends FunSuite { + + val arr = Array(0.1, 0.2, 0.3, 0.4) + val n = 20 + val indices = Array(0, 3, 5, 10, 13) + val values = Array(0.1, 0.5, 0.3, -0.8, -1.0) + + test("dense to breeze") { + val vec = Vectors.dense(arr) + assert(vec.toBreeze === new BDV[Double](arr)) + } + + test("sparse to breeze") { + val vec = Vectors.sparse(n, indices, values) + assert(vec.toBreeze === new BSV[Double](indices, values, n)) + } + + test("dense breeze to vector") { + val breeze = new BDV[Double](arr) + val vec = Vectors.fromBreeze(breeze).asInstanceOf[DenseVector] + assert(vec.size === arr.length) + assert(vec.values.eq(arr), "should not copy data") + } + + test("sparse breeze to vector") { + val breeze = new BSV[Double](indices, values, n) + val vec = Vectors.fromBreeze(breeze).asInstanceOf[SparseVector] + assert(vec.size === n) + assert(vec.indices.eq(indices), "should not copy data") + assert(vec.values.eq(values), "should not copy data") + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/MatricesSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/MatricesSuite.scala new file mode 100644 index 0000000000000..9c66b4db9f16b --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/linalg/MatricesSuite.scala @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg + +import org.scalatest.FunSuite + +class MatricesSuite extends FunSuite { + test("dense matrix construction") { + val m = 3 + val n = 2 + val values = Array(0.0, 1.0, 2.0, 3.0, 4.0, 5.0) + val mat = Matrices.dense(m, n, values).asInstanceOf[DenseMatrix] + assert(mat.numRows === m) + assert(mat.numCols === n) + assert(mat.values.eq(values), "should not copy data") + assert(mat.toArray.eq(values), "toArray should not copy data") + } + + test("dense matrix construction with wrong dimension") { + intercept[RuntimeException] { + Matrices.dense(3, 2, Array(0.0, 1.0, 2.0)) + } + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/SVDSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/SVDSuite.scala deleted file mode 100644 index 32f3f141cd652..0000000000000 --- a/mllib/src/test/scala/org/apache/spark/mllib/linalg/SVDSuite.scala +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.mllib.linalg - -import scala.util.Random - -import org.scalatest.BeforeAndAfterAll -import org.scalatest.FunSuite - -import org.jblas.{DoubleMatrix, Singular, MatrixFunctions} - -import org.apache.spark.SparkContext -import org.apache.spark.SparkContext._ -import org.apache.spark.rdd.RDD - -import org.jblas._ - -class SVDSuite extends FunSuite with BeforeAndAfterAll { - @transient private var sc: SparkContext = _ - - override def beforeAll() { - sc = new SparkContext("local", "test") - } - - override def afterAll() { - sc.stop() - System.clearProperty("spark.driver.port") - } - - val EPSILON = 1e-4 - - // Return jblas matrix from sparse matrix RDD - def getDenseMatrix(matrix: SparseMatrix) : DoubleMatrix = { - val data = matrix.data - val m = matrix.m - val n = matrix.n - val ret = DoubleMatrix.zeros(m, n) - matrix.data.toArray.map(x => ret.put(x.i, x.j, x.mval)) - ret - } - - def assertMatrixEquals(a: DoubleMatrix, b: DoubleMatrix) { - assert(a.rows == b.rows && a.columns == b.columns, "dimension mismatch") - val diff = DoubleMatrix.zeros(a.rows, a.columns) - Array.tabulate(a.rows, a.columns){(i, j) => - diff.put(i, j, - Math.min(Math.abs(a.get(i, j) - b.get(i, j)), - Math.abs(a.get(i, j) + b.get(i, j)))) } - assert(diff.norm1 < EPSILON, "matrix mismatch: " + diff.norm1) - } - - test("full rank matrix svd") { - val m = 10 - val n = 3 - val data = sc.makeRDD(Array.tabulate(m,n){ (a, b) => - MatrixEntry(a, b, (a + 2).toDouble * (b + 1) / (1 + a + b)) }.flatten ) - - val a = SparseMatrix(data, m, n) - - val decomposed = SVD.sparseSVD(a, n) - val u = decomposed.U - val v = decomposed.V - val s = decomposed.S - - val densea = getDenseMatrix(a) - val svd = Singular.sparseSVD(densea) - - val retu = getDenseMatrix(u) - val rets = getDenseMatrix(s) - val retv = getDenseMatrix(v) - - // check individual decomposition - assertMatrixEquals(retu, svd(0)) - assertMatrixEquals(rets, DoubleMatrix.diag(svd(1))) - assertMatrixEquals(retv, svd(2)) - - // check multiplication guarantee - assertMatrixEquals(retu.mmul(rets).mmul(retv.transpose), densea) - } - - test("rank one matrix svd") { - val m = 10 - val n = 3 - val data = sc.makeRDD(Array.tabulate(m, n){ (a,b) => - MatrixEntry(a, b, 1.0) }.flatten ) - val k = 1 - - val a = SparseMatrix(data, m, n) - - val decomposed = SVD.sparseSVD(a, k) - val u = decomposed.U - val s = decomposed.S - val v = decomposed.V - val retrank = s.data.toArray.length - - assert(retrank == 1, "rank returned not one") - - val densea = getDenseMatrix(a) - val svd = Singular.sparseSVD(densea) - - val retu = getDenseMatrix(u) - val rets = getDenseMatrix(s) - val retv = getDenseMatrix(v) - - // check individual decomposition - assertMatrixEquals(retu, svd(0).getColumn(0)) - assertMatrixEquals(rets, DoubleMatrix.diag(svd(1).getRow(0))) - assertMatrixEquals(retv, svd(2).getColumn(0)) - - // check multiplication guarantee - assertMatrixEquals(retu.mmul(rets).mmul(retv.transpose), densea) - } - - test("truncated with k") { - val m = 10 - val n = 3 - val data = sc.makeRDD(Array.tabulate(m,n){ (a, b) => - MatrixEntry(a, b, (a + 2).toDouble * (b + 1)/(1 + a + b)) }.flatten ) - val a = SparseMatrix(data, m, n) - - val k = 1 // only one svalue above this - - val decomposed = SVD.sparseSVD(a, k) - val u = decomposed.U - val s = decomposed.S - val v = decomposed.V - val retrank = s.data.toArray.length - - val densea = getDenseMatrix(a) - val svd = Singular.sparseSVD(densea) - - val retu = getDenseMatrix(u) - val rets = getDenseMatrix(s) - val retv = getDenseMatrix(v) - - assert(retrank == 1, "rank returned not one") - - // check individual decomposition - assertMatrixEquals(retu, svd(0).getColumn(0)) - assertMatrixEquals(rets, DoubleMatrix.diag(svd(1).getRow(0))) - assertMatrixEquals(retv, svd(2).getColumn(0)) - } -} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/VectorsSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/VectorsSuite.scala new file mode 100644 index 0000000000000..8a200310e0bb1 --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/linalg/VectorsSuite.scala @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg + +import org.scalatest.FunSuite + +class VectorsSuite extends FunSuite { + + val arr = Array(0.1, 0.0, 0.3, 0.4) + val n = 4 + val indices = Array(0, 2, 3) + val values = Array(0.1, 0.3, 0.4) + + test("dense vector construction with varargs") { + val vec = Vectors.dense(arr).asInstanceOf[DenseVector] + assert(vec.size === arr.length) + assert(vec.values.eq(arr)) + } + + test("dense vector construction from a double array") { + val vec = Vectors.dense(arr).asInstanceOf[DenseVector] + assert(vec.size === arr.length) + assert(vec.values.eq(arr)) + } + + test("sparse vector construction") { + val vec = Vectors.sparse(n, indices, values).asInstanceOf[SparseVector] + assert(vec.size === n) + assert(vec.indices.eq(indices)) + assert(vec.values.eq(values)) + } + + test("sparse vector construction with unordered elements") { + val vec = Vectors.sparse(n, indices.zip(values).reverse).asInstanceOf[SparseVector] + assert(vec.size === n) + assert(vec.indices === indices) + assert(vec.values === values) + } + + test("dense to array") { + val vec = Vectors.dense(arr).asInstanceOf[DenseVector] + assert(vec.toArray.eq(arr)) + } + + test("sparse to array") { + val vec = Vectors.sparse(n, indices, values).asInstanceOf[SparseVector] + assert(vec.toArray === arr) + } + + test("vector equals") { + val dv1 = Vectors.dense(arr.clone()) + val dv2 = Vectors.dense(arr.clone()) + val sv1 = Vectors.sparse(n, indices.clone(), values.clone()) + val sv2 = Vectors.sparse(n, indices.clone(), values.clone()) + + val vectors = Seq(dv1, dv2, sv1, sv2) + + for (v <- vectors; u <- vectors) { + assert(v === u) + assert(v.## === u.##) + } + + val another = Vectors.dense(0.1, 0.2, 0.3, 0.4) + + for (v <- vectors) { + assert(v != another) + assert(v.## != another.##) + } + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/CoordinateMatrixSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/CoordinateMatrixSuite.scala new file mode 100644 index 0000000000000..cd45438fb628f --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/CoordinateMatrixSuite.scala @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg.distributed + +import org.scalatest.FunSuite + +import breeze.linalg.{DenseMatrix => BDM} + +import org.apache.spark.mllib.util.LocalSparkContext +import org.apache.spark.mllib.linalg.Vectors + +class CoordinateMatrixSuite extends FunSuite with LocalSparkContext { + + val m = 5 + val n = 4 + var mat: CoordinateMatrix = _ + + override def beforeAll() { + super.beforeAll() + val entries = sc.parallelize(Seq( + (0, 0, 1.0), + (0, 1, 2.0), + (1, 1, 3.0), + (1, 2, 4.0), + (2, 2, 5.0), + (2, 3, 6.0), + (3, 0, 7.0), + (3, 3, 8.0), + (4, 1, 9.0)), 3).map { case (i, j, value) => + MatrixEntry(i, j, value) + } + mat = new CoordinateMatrix(entries) + } + + test("size") { + assert(mat.numRows() === m) + assert(mat.numCols() === n) + } + + test("empty entries") { + val entries = sc.parallelize(Seq[MatrixEntry](), 1) + val emptyMat = new CoordinateMatrix(entries) + intercept[RuntimeException] { + emptyMat.numCols() + } + intercept[RuntimeException] { + emptyMat.numRows() + } + } + + test("toBreeze") { + val expected = BDM( + (1.0, 2.0, 0.0, 0.0), + (0.0, 3.0, 4.0, 0.0), + (0.0, 0.0, 5.0, 6.0), + (7.0, 0.0, 0.0, 8.0), + (0.0, 9.0, 0.0, 0.0)) + assert(mat.toBreeze() === expected) + } + + test("toIndexedRowMatrix") { + val indexedRowMatrix = mat.toIndexedRowMatrix() + val expected = BDM( + (1.0, 2.0, 0.0, 0.0), + (0.0, 3.0, 4.0, 0.0), + (0.0, 0.0, 5.0, 6.0), + (7.0, 0.0, 0.0, 8.0), + (0.0, 9.0, 0.0, 0.0)) + assert(indexedRowMatrix.toBreeze() === expected) + } + + test("toRowMatrix") { + val rowMatrix = mat.toRowMatrix() + val rows = rowMatrix.rows.collect().toSet + val expected = Set( + Vectors.dense(1.0, 2.0, 0.0, 0.0), + Vectors.dense(0.0, 3.0, 4.0, 0.0), + Vectors.dense(0.0, 0.0, 5.0, 6.0), + Vectors.dense(7.0, 0.0, 0.0, 8.0), + Vectors.dense(0.0, 9.0, 0.0, 0.0)) + assert(rows === expected) + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/IndexedRowMatrixSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/IndexedRowMatrixSuite.scala new file mode 100644 index 0000000000000..f7c46f23b746d --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/IndexedRowMatrixSuite.scala @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg.distributed + +import org.scalatest.FunSuite + +import breeze.linalg.{diag => brzDiag, DenseMatrix => BDM, DenseVector => BDV} + +import org.apache.spark.mllib.util.LocalSparkContext +import org.apache.spark.rdd.RDD +import org.apache.spark.mllib.linalg.{Matrices, Vectors} + +class IndexedRowMatrixSuite extends FunSuite with LocalSparkContext { + + val m = 4 + val n = 3 + val data = Seq( + (0L, Vectors.dense(0.0, 1.0, 2.0)), + (1L, Vectors.dense(3.0, 4.0, 5.0)), + (3L, Vectors.dense(9.0, 0.0, 1.0)) + ).map(x => IndexedRow(x._1, x._2)) + var indexedRows: RDD[IndexedRow] = _ + + override def beforeAll() { + super.beforeAll() + indexedRows = sc.parallelize(data, 2) + } + + test("size") { + val mat1 = new IndexedRowMatrix(indexedRows) + assert(mat1.numRows() === m) + assert(mat1.numCols() === n) + + val mat2 = new IndexedRowMatrix(indexedRows, 5, 0) + assert(mat2.numRows() === 5) + assert(mat2.numCols() === n) + } + + test("empty rows") { + val rows = sc.parallelize(Seq[IndexedRow](), 1) + val mat = new IndexedRowMatrix(rows) + intercept[RuntimeException] { + mat.numRows() + } + intercept[RuntimeException] { + mat.numCols() + } + } + + test("toBreeze") { + val mat = new IndexedRowMatrix(indexedRows) + val expected = BDM( + (0.0, 1.0, 2.0), + (3.0, 4.0, 5.0), + (0.0, 0.0, 0.0), + (9.0, 0.0, 1.0)) + assert(mat.toBreeze() === expected) + } + + test("toRowMatrix") { + val idxRowMat = new IndexedRowMatrix(indexedRows) + val rowMat = idxRowMat.toRowMatrix() + assert(rowMat.numCols() === n) + assert(rowMat.numRows() === 3, "should drop empty rows") + assert(rowMat.rows.collect().toSeq === data.map(_.vector).toSeq) + } + + test("multiply a local matrix") { + val A = new IndexedRowMatrix(indexedRows) + val B = Matrices.dense(3, 2, Array(0.0, 1.0, 2.0, 3.0, 4.0, 5.0)) + val C = A.multiply(B) + val localA = A.toBreeze() + val localC = C.toBreeze() + val expected = localA * B.toBreeze.asInstanceOf[BDM[Double]] + assert(localC === expected) + } + + test("gram") { + val A = new IndexedRowMatrix(indexedRows) + val G = A.computeGramianMatrix() + val expected = BDM( + (90.0, 12.0, 24.0), + (12.0, 17.0, 22.0), + (24.0, 22.0, 30.0)) + assert(G.toBreeze === expected) + } + + test("svd") { + val A = new IndexedRowMatrix(indexedRows) + val svd = A.computeSVD(n, computeU = true) + assert(svd.U.isInstanceOf[IndexedRowMatrix]) + val localA = A.toBreeze() + val U = svd.U.toBreeze() + val s = svd.s.toBreeze.asInstanceOf[BDV[Double]] + val V = svd.V.toBreeze.asInstanceOf[BDM[Double]] + assert(closeToZero(U.t * U - BDM.eye[Double](n))) + assert(closeToZero(V.t * V - BDM.eye[Double](n))) + assert(closeToZero(U * brzDiag(s) * V.t - localA)) + } + + def closeToZero(G: BDM[Double]): Boolean = { + G.valuesIterator.map(math.abs).sum < 1e-6 + } +} + diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/RowMatrixSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/RowMatrixSuite.scala new file mode 100644 index 0000000000000..71ee8e8a4f6fd --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/linalg/distributed/RowMatrixSuite.scala @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.linalg.distributed + +import org.scalatest.FunSuite + +import breeze.linalg.{DenseVector => BDV, DenseMatrix => BDM, norm => brzNorm, svd => brzSvd} + +import org.apache.spark.mllib.util.LocalSparkContext +import org.apache.spark.mllib.linalg.{Matrices, Vectors, Vector} + +class RowMatrixSuite extends FunSuite with LocalSparkContext { + + val m = 4 + val n = 3 + val arr = Array(0.0, 3.0, 6.0, 9.0, 1.0, 4.0, 7.0, 0.0, 2.0, 5.0, 8.0, 1.0) + val denseData = Seq( + Vectors.dense(0.0, 1.0, 2.0), + Vectors.dense(3.0, 4.0, 5.0), + Vectors.dense(6.0, 7.0, 8.0), + Vectors.dense(9.0, 0.0, 1.0) + ) + val sparseData = Seq( + Vectors.sparse(3, Seq((1, 1.0), (2, 2.0))), + Vectors.sparse(3, Seq((0, 3.0), (1, 4.0), (2, 5.0))), + Vectors.sparse(3, Seq((0, 6.0), (1, 7.0), (2, 8.0))), + Vectors.sparse(3, Seq((0, 9.0), (2, 1.0))) + ) + + val principalComponents = BDM( + (0.0, 1.0, 0.0), + (math.sqrt(2.0) / 2.0, 0.0, math.sqrt(2.0) / 2.0), + (math.sqrt(2.0) / 2.0, 0.0, - math.sqrt(2.0) / 2.0)) + + var denseMat: RowMatrix = _ + var sparseMat: RowMatrix = _ + + override def beforeAll() { + super.beforeAll() + denseMat = new RowMatrix(sc.parallelize(denseData, 2)) + sparseMat = new RowMatrix(sc.parallelize(sparseData, 2)) + } + + test("size") { + assert(denseMat.numRows() === m) + assert(denseMat.numCols() === n) + assert(sparseMat.numRows() === m) + assert(sparseMat.numCols() === n) + } + + test("empty rows") { + val rows = sc.parallelize(Seq[Vector](), 1) + val emptyMat = new RowMatrix(rows) + intercept[RuntimeException] { + emptyMat.numCols() + } + intercept[RuntimeException] { + emptyMat.numRows() + } + } + + test("toBreeze") { + val expected = BDM( + (0.0, 1.0, 2.0), + (3.0, 4.0, 5.0), + (6.0, 7.0, 8.0), + (9.0, 0.0, 1.0)) + for (mat <- Seq(denseMat, sparseMat)) { + assert(mat.toBreeze() === expected) + } + } + + test("gram") { + val expected = + Matrices.dense(n, n, Array(126.0, 54.0, 72.0, 54.0, 66.0, 78.0, 72.0, 78.0, 94.0)) + for (mat <- Seq(denseMat, sparseMat)) { + val G = mat.computeGramianMatrix() + assert(G.toBreeze === expected.toBreeze) + } + } + + test("svd of a full-rank matrix") { + for (mat <- Seq(denseMat, sparseMat)) { + val localMat = mat.toBreeze() + val (localU, localSigma, localVt) = brzSvd(localMat) + val localV: BDM[Double] = localVt.t.toDenseMatrix + for (k <- 1 to n) { + val svd = mat.computeSVD(k, computeU = true) + val U = svd.U + val s = svd.s + val V = svd.V + assert(U.numRows() === m) + assert(U.numCols() === k) + assert(s.size === k) + assert(V.numRows === n) + assert(V.numCols === k) + assertColumnEqualUpToSign(U.toBreeze(), localU, k) + assertColumnEqualUpToSign(V.toBreeze.asInstanceOf[BDM[Double]], localV, k) + assert(closeToZero(s.toBreeze.asInstanceOf[BDV[Double]] - localSigma(0 until k))) + } + val svdWithoutU = mat.computeSVD(n) + assert(svdWithoutU.U === null) + } + } + + test("svd of a low-rank matrix") { + val rows = sc.parallelize(Array.fill(4)(Vectors.dense(1.0, 1.0)), 2) + val mat = new RowMatrix(rows, 4, 2) + val svd = mat.computeSVD(2, computeU = true) + assert(svd.s.size === 1, "should not return zero singular values") + assert(svd.U.numRows() === 4) + assert(svd.U.numCols() === 1) + assert(svd.V.numRows === 2) + assert(svd.V.numCols === 1) + } + + def closeToZero(G: BDM[Double]): Boolean = { + G.valuesIterator.map(math.abs).sum < 1e-6 + } + + def closeToZero(v: BDV[Double]): Boolean = { + brzNorm(v, 1.0) < 1e-6 + } + + def assertColumnEqualUpToSign(A: BDM[Double], B: BDM[Double], k: Int) { + assert(A.rows === B.rows) + for (j <- 0 until k) { + val aj = A(::, j) + val bj = B(::, j) + assert(closeToZero(aj - bj) || closeToZero(aj + bj), + s"The $j-th columns mismatch: $aj and $bj") + } + } + + test("pca") { + for (mat <- Seq(denseMat, sparseMat); k <- 1 to n) { + val pc = denseMat.computePrincipalComponents(k) + assert(pc.numRows === n) + assert(pc.numCols === k) + assertColumnEqualUpToSign(pc.toBreeze.asInstanceOf[BDM[Double]], principalComponents, k) + } + } + + test("multiply a local matrix") { + val B = Matrices.dense(n, 2, Array(0.0, 1.0, 2.0, 3.0, 4.0, 5.0)) + for (mat <- Seq(denseMat, sparseMat)) { + val AB = mat.multiply(B) + assert(AB.numRows() === m) + assert(AB.numCols() === 2) + assert(AB.rows.collect().toSeq === Seq( + Vectors.dense(5.0, 14.0), + Vectors.dense(14.0, 50.0), + Vectors.dense(23.0, 86.0), + Vectors.dense(2.0, 32.0) + )) + } + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/optimization/GradientDescentSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/optimization/GradientDescentSuite.scala index 631d0e2ad9cdb..c4b433499a091 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/optimization/GradientDescentSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/optimization/GradientDescentSuite.scala @@ -20,13 +20,12 @@ package org.apache.spark.mllib.optimization import scala.util.Random import scala.collection.JavaConversions._ -import org.scalatest.BeforeAndAfterAll import org.scalatest.FunSuite import org.scalatest.matchers.ShouldMatchers -import org.apache.spark.SparkContext import org.apache.spark.mllib.regression._ import org.apache.spark.mllib.util.LocalSparkContext +import org.apache.spark.mllib.linalg.Vectors object GradientDescentSuite { @@ -58,8 +57,7 @@ object GradientDescentSuite { if (yVal > 0) 1 else 0 } - val testData = (0 until nPoints).map(i => LabeledPoint(y(i), Array(x1(i)))) - testData + (0 until nPoints).map(i => LabeledPoint(y(i), Vectors.dense(x1(i)))) } } @@ -83,11 +81,11 @@ class GradientDescentSuite extends FunSuite with LocalSparkContext with ShouldMa // Add a extra variable consisting of all 1.0's for the intercept. val testData = GradientDescentSuite.generateGDInput(A, B, nPoints, 42) val data = testData.map { case LabeledPoint(label, features) => - label -> Array(1.0, features: _*) + label -> Vectors.dense(1.0, features.toArray: _*) } val dataRDD = sc.parallelize(data, 2).cache() - val initialWeightsWithIntercept = Array(1.0, initialWeights: _*) + val initialWeightsWithIntercept = Vectors.dense(1.0, initialWeights: _*) val (_, loss) = GradientDescent.runMiniBatchSGD( dataRDD, @@ -113,13 +111,13 @@ class GradientDescentSuite extends FunSuite with LocalSparkContext with ShouldMa // Add a extra variable consisting of all 1.0's for the intercept. val testData = GradientDescentSuite.generateGDInput(2.0, -1.5, 10000, 42) val data = testData.map { case LabeledPoint(label, features) => - label -> Array(1.0, features: _*) + label -> Vectors.dense(1.0, features.toArray: _*) } val dataRDD = sc.parallelize(data, 2).cache() // Prepare non-zero weights - val initialWeightsWithIntercept = Array(1.0, 0.5) + val initialWeightsWithIntercept = Vectors.dense(1.0, 0.5) val regParam0 = 0 val (newWeights0, loss0) = GradientDescent.runMiniBatchSGD( diff --git a/mllib/src/test/scala/org/apache/spark/mllib/rdd/VectorRDDsSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/rdd/VectorRDDsSuite.scala new file mode 100644 index 0000000000000..692f025e959ae --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/rdd/VectorRDDsSuite.scala @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.rdd + +import org.scalatest.FunSuite + +import org.apache.spark.mllib.linalg.Vectors +import org.apache.spark.mllib.util.LocalSparkContext + +class VectorRDDsSuite extends FunSuite with LocalSparkContext { + + test("from array rdd") { + val data = Seq(Array(1.0, 2.0), Array(3.0, 4.0)) + val arrayRdd = sc.parallelize(data, 2) + val vectorRdd = VectorRDDs.fromArrayRDD(arrayRdd) + assert(arrayRdd.collect().map(v => Vectors.dense(v)) === vectorRdd.collect()) + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/recommendation/ALSSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/recommendation/ALSSuite.scala index 45e7d2db00c42..5aab9aba8f9c0 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/recommendation/ALSSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/recommendation/ALSSuite.scala @@ -23,9 +23,10 @@ import scala.util.Random import org.scalatest.FunSuite -import org.jblas._ +import org.jblas.DoubleMatrix import org.apache.spark.mllib.util.LocalSparkContext +import org.apache.spark.SparkContext._ object ALSSuite { @@ -115,6 +116,18 @@ class ALSSuite extends FunSuite with LocalSparkContext { testALS(100, 200, 2, 15, 0.7, 0.4, true, false, true) } + test("pseudorandomness") { + val ratings = sc.parallelize(ALSSuite.generateRatings(10, 20, 5, 0.5, false, false)._1, 2) + val model11 = ALS.train(ratings, 5, 1, 1.0, 2, 1) + val model12 = ALS.train(ratings, 5, 1, 1.0, 2, 1) + val u11 = model11.userFeatures.values.flatMap(_.toList).collect().toList + val u12 = model12.userFeatures.values.flatMap(_.toList).collect().toList + val model2 = ALS.train(ratings, 5, 1, 1.0, 2, 2) + val u2 = model2.userFeatures.values.flatMap(_.toList).collect().toList + assert(u11 == u12) + assert(u11 != u2) + } + /** * Test if we can correctly factorize R = U * P where U and P are of known rank. * diff --git a/mllib/src/test/scala/org/apache/spark/mllib/regression/LassoSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/regression/LassoSuite.scala index 64e4cbb860f61..6aad9eb84e13c 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/regression/LassoSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/regression/LassoSuite.scala @@ -17,11 +17,9 @@ package org.apache.spark.mllib.regression - -import org.scalatest.BeforeAndAfterAll import org.scalatest.FunSuite -import org.apache.spark.SparkContext +import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.util.{LinearDataGenerator, LocalSparkContext} class LassoSuite extends FunSuite with LocalSparkContext { @@ -36,29 +34,33 @@ class LassoSuite extends FunSuite with LocalSparkContext { } test("Lasso local random SGD") { - val nPoints = 10000 + val nPoints = 1000 val A = 2.0 val B = -1.5 val C = 1.0e-2 - val testData = LinearDataGenerator.generateLinearInput(A, Array[Double](B,C), nPoints, 42) - - val testRDD = sc.parallelize(testData, 2) - testRDD.cache() + val testData = LinearDataGenerator.generateLinearInput(A, Array[Double](B, C), nPoints, 42) + .map { case LabeledPoint(label, features) => + LabeledPoint(label, Vectors.dense(1.0 +: features.toArray)) + } + val testRDD = sc.parallelize(testData, 2).cache() val ls = new LassoWithSGD() - ls.optimizer.setStepSize(1.0).setRegParam(0.01).setNumIterations(20) + ls.optimizer.setStepSize(1.0).setRegParam(0.01).setNumIterations(40) val model = ls.run(testRDD) - val weight0 = model.weights(0) val weight1 = model.weights(1) - assert(model.intercept >= 1.9 && model.intercept <= 2.1, model.intercept + " not in [1.9, 2.1]") - assert(weight0 >= -1.60 && weight0 <= -1.40, weight0 + " not in [-1.6, -1.4]") - assert(weight1 >= -1.0e-3 && weight1 <= 1.0e-3, weight1 + " not in [-0.001, 0.001]") + val weight2 = model.weights(2) + assert(weight0 >= 1.9 && weight0 <= 2.1, weight0 + " not in [1.9, 2.1]") + assert(weight1 >= -1.60 && weight1 <= -1.40, weight1 + " not in [-1.6, -1.4]") + assert(weight2 >= -1.0e-3 && weight2 <= 1.0e-3, weight2 + " not in [-0.001, 0.001]") val validationData = LinearDataGenerator.generateLinearInput(A, Array[Double](B,C), nPoints, 17) + .map { case LabeledPoint(label, features) => + LabeledPoint(label, Vectors.dense(1.0 +: features.toArray)) + } val validationRDD = sc.parallelize(validationData, 2) // Test prediction on RDD. @@ -69,33 +71,39 @@ class LassoSuite extends FunSuite with LocalSparkContext { } test("Lasso local random SGD with initial weights") { - val nPoints = 10000 + val nPoints = 1000 val A = 2.0 val B = -1.5 val C = 1.0e-2 - val testData = LinearDataGenerator.generateLinearInput(A, Array[Double](B,C), nPoints, 42) + val testData = LinearDataGenerator.generateLinearInput(A, Array[Double](B, C), nPoints, 42) + .map { case LabeledPoint(label, features) => + LabeledPoint(label, Vectors.dense(1.0 +: features.toArray)) + } + val initialA = -1.0 val initialB = -1.0 val initialC = -1.0 - val initialWeights = Array(initialB,initialC) + val initialWeights = Vectors.dense(initialA, initialB, initialC) - val testRDD = sc.parallelize(testData, 2) - testRDD.cache() + val testRDD = sc.parallelize(testData, 2).cache() val ls = new LassoWithSGD() - ls.optimizer.setStepSize(1.0).setRegParam(0.01).setNumIterations(20) + ls.optimizer.setStepSize(1.0).setRegParam(0.01).setNumIterations(40) val model = ls.run(testRDD, initialWeights) - val weight0 = model.weights(0) val weight1 = model.weights(1) - assert(model.intercept >= 1.9 && model.intercept <= 2.1, model.intercept + " not in [1.9, 2.1]") - assert(weight0 >= -1.60 && weight0 <= -1.40, weight0 + " not in [-1.6, -1.4]") - assert(weight1 >= -1.0e-3 && weight1 <= 1.0e-3, weight1 + " not in [-0.001, 0.001]") + val weight2 = model.weights(2) + assert(weight0 >= 1.9 && weight0 <= 2.1, weight0 + " not in [1.9, 2.1]") + assert(weight1 >= -1.60 && weight1 <= -1.40, weight1 + " not in [-1.6, -1.4]") + assert(weight2 >= -1.0e-3 && weight2 <= 1.0e-3, weight2 + " not in [-0.001, 0.001]") val validationData = LinearDataGenerator.generateLinearInput(A, Array[Double](B,C), nPoints, 17) + .map { case LabeledPoint(label, features) => + LabeledPoint(label, Vectors.dense(1.0 +: features.toArray)) + } val validationRDD = sc.parallelize(validationData,2) // Test prediction on RDD. @@ -104,4 +112,10 @@ class LassoSuite extends FunSuite with LocalSparkContext { // Test prediction on Array. validatePrediction(validationData.map(row => model.predict(row.features)), validationData) } + + test("do not support intercept") { + intercept[UnsupportedOperationException] { + new LassoWithSGD().setIntercept(true) + } + } } diff --git a/mllib/src/test/scala/org/apache/spark/mllib/regression/LinearRegressionSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/regression/LinearRegressionSuite.scala index 281f9df36ddb3..2f7d30708ce17 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/regression/LinearRegressionSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/regression/LinearRegressionSuite.scala @@ -17,9 +17,9 @@ package org.apache.spark.mllib.regression -import org.scalatest.BeforeAndAfterAll import org.scalatest.FunSuite +import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.util.{LinearDataGenerator, LocalSparkContext} class LinearRegressionSuite extends FunSuite with LocalSparkContext { @@ -41,11 +41,12 @@ class LinearRegressionSuite extends FunSuite with LocalSparkContext { linReg.optimizer.setNumIterations(1000).setStepSize(1.0) val model = linReg.run(testRDD) - assert(model.intercept >= 2.5 && model.intercept <= 3.5) - assert(model.weights.length === 2) - assert(model.weights(0) >= 9.0 && model.weights(0) <= 11.0) - assert(model.weights(1) >= 9.0 && model.weights(1) <= 11.0) + + val weights = model.weights + assert(weights.size === 2) + assert(weights(0) >= 9.0 && weights(0) <= 11.0) + assert(weights(1) >= 9.0 && weights(1) <= 11.0) val validationData = LinearDataGenerator.generateLinearInput( 3.0, Array(10.0, 10.0), 100, 17) @@ -57,4 +58,67 @@ class LinearRegressionSuite extends FunSuite with LocalSparkContext { // Test prediction on Array. validatePrediction(validationData.map(row => model.predict(row.features)), validationData) } + + // Test if we can correctly learn Y = 10*X1 + 10*X2 + test("linear regression without intercept") { + val testRDD = sc.parallelize(LinearDataGenerator.generateLinearInput( + 0.0, Array(10.0, 10.0), 100, 42), 2).cache() + val linReg = new LinearRegressionWithSGD().setIntercept(false) + linReg.optimizer.setNumIterations(1000).setStepSize(1.0) + + val model = linReg.run(testRDD) + + assert(model.intercept === 0.0) + + val weights = model.weights + assert(weights.size === 2) + assert(weights(0) >= 9.0 && weights(0) <= 11.0) + assert(weights(1) >= 9.0 && weights(1) <= 11.0) + + val validationData = LinearDataGenerator.generateLinearInput( + 0.0, Array(10.0, 10.0), 100, 17) + val validationRDD = sc.parallelize(validationData, 2).cache() + + // Test prediction on RDD. + validatePrediction(model.predict(validationRDD.map(_.features)).collect(), validationData) + + // Test prediction on Array. + validatePrediction(validationData.map(row => model.predict(row.features)), validationData) + } + + // Test if we can correctly learn Y = 10*X1 + 10*X10000 + test("sparse linear regression without intercept") { + val denseRDD = sc.parallelize( + LinearDataGenerator.generateLinearInput(0.0, Array(10.0, 10.0), 100, 42), 2) + val sparseRDD = denseRDD.map { case LabeledPoint(label, v) => + val sv = Vectors.sparse(10000, Seq((0, v(0)), (9999, v(1)))) + LabeledPoint(label, sv) + }.cache() + val linReg = new LinearRegressionWithSGD().setIntercept(false) + linReg.optimizer.setNumIterations(1000).setStepSize(1.0) + + val model = linReg.run(sparseRDD) + + assert(model.intercept === 0.0) + + val weights = model.weights + assert(weights.size === 10000) + assert(weights(0) >= 9.0 && weights(0) <= 11.0) + assert(weights(9999) >= 9.0 && weights(9999) <= 11.0) + + val validationData = LinearDataGenerator.generateLinearInput(0.0, Array(10.0, 10.0), 100, 17) + val sparseValidationData = validationData.map { case LabeledPoint(label, v) => + val sv = Vectors.sparse(10000, Seq((0, v(0)), (9999, v(1)))) + LabeledPoint(label, sv) + } + val sparseValidationRDD = sc.parallelize(sparseValidationData, 2) + + // Test prediction on RDD. + validatePrediction( + model.predict(sparseValidationRDD.map(_.features)).collect(), sparseValidationData) + + // Test prediction on Array. + validatePrediction( + sparseValidationData.map(row => model.predict(row.features)), sparseValidationData) + } } diff --git a/mllib/src/test/scala/org/apache/spark/mllib/regression/RidgeRegressionSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/regression/RidgeRegressionSuite.scala index 67dd06cc0f5eb..f66fc6ea6c1ec 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/regression/RidgeRegressionSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/regression/RidgeRegressionSuite.scala @@ -17,14 +17,12 @@ package org.apache.spark.mllib.regression +import org.scalatest.FunSuite import org.jblas.DoubleMatrix -import org.scalatest.BeforeAndAfterAll -import org.scalatest.FunSuite import org.apache.spark.mllib.util.{LinearDataGenerator, LocalSparkContext} - class RidgeRegressionSuite extends FunSuite with LocalSparkContext { def predictionError(predictions: Seq[Double], input: Seq[LabeledPoint]) = { @@ -33,22 +31,22 @@ class RidgeRegressionSuite extends FunSuite with LocalSparkContext { }.reduceLeft(_ + _) / predictions.size } - test("regularization with skewed weights") { - val nexamples = 200 - val nfeatures = 20 - val eps = 10 + test("ridge regression can help avoid overfitting") { + + // For small number of examples and large variance of error distribution, + // ridge regression should give smaller generalization error that linear regression. + + val numExamples = 50 + val numFeatures = 20 org.jblas.util.Random.seed(42) // Pick weights as random values distributed uniformly in [-0.5, 0.5] - val w = DoubleMatrix.rand(nfeatures, 1).subi(0.5) - // Set first two weights to eps - w.put(0, 0, eps) - w.put(1, 0, eps) + val w = DoubleMatrix.rand(numFeatures, 1).subi(0.5) // Use half of data for training and other half for validation - val data = LinearDataGenerator.generateLinearInput(3.0, w.toArray, 2*nexamples, 42, eps) - val testData = data.take(nexamples) - val validationData = data.takeRight(nexamples) + val data = LinearDataGenerator.generateLinearInput(3.0, w.toArray, 2 * numExamples, 42, 10.0) + val testData = data.take(numExamples) + val validationData = data.takeRight(numExamples) val testRDD = sc.parallelize(testData, 2).cache() val validationRDD = sc.parallelize(validationData, 2).cache() @@ -70,8 +68,14 @@ class RidgeRegressionSuite extends FunSuite with LocalSparkContext { val ridgeErr = predictionError( ridgeModel.predict(validationRDD.map(_.features)).collect(), validationData) - // Ridge CV-error should be lower than linear regression + // Ridge validation error should be lower than linear regression. assert(ridgeErr < linearErr, "ridgeError (" + ridgeErr + ") was not less than linearError(" + linearErr + ")") } + + test("do not support intercept") { + intercept[UnsupportedOperationException] { + new RidgeRegressionWithSGD().setIntercept(true) + } + } } diff --git a/mllib/src/test/scala/org/apache/spark/mllib/tree/DecisionTreeSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/tree/DecisionTreeSuite.scala new file mode 100644 index 0000000000000..350130c914f26 --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/tree/DecisionTreeSuite.scala @@ -0,0 +1,426 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.tree + +import org.scalatest.BeforeAndAfterAll +import org.scalatest.FunSuite + +import org.apache.spark.SparkContext +import org.apache.spark.mllib.regression.LabeledPoint +import org.apache.spark.mllib.tree.impurity.{Entropy, Gini, Variance} +import org.apache.spark.mllib.tree.model.Filter +import org.apache.spark.mllib.tree.configuration.Strategy +import org.apache.spark.mllib.tree.configuration.Algo._ +import org.apache.spark.mllib.tree.configuration.FeatureType._ +import org.apache.spark.mllib.linalg.Vectors + +class DecisionTreeSuite extends FunSuite with BeforeAndAfterAll { + + @transient private var sc: SparkContext = _ + + override def beforeAll() { + sc = new SparkContext("local", "test") + } + + override def afterAll() { + sc.stop() + System.clearProperty("spark.driver.port") + } + + test("split and bin calculation") { + val arr = DecisionTreeSuite.generateOrderedLabeledPointsWithLabel1() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy(Classification, Gini, 3, 100) + val (splits, bins) = DecisionTree.findSplitsBins(rdd, strategy) + assert(splits.length === 2) + assert(bins.length === 2) + assert(splits(0).length === 99) + assert(bins(0).length === 100) + } + + test("split and bin calculation for categorical variables") { + val arr = DecisionTreeSuite.generateCategoricalDataPoints() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy( + Classification, + Gini, + maxDepth = 3, + maxBins = 100, + categoricalFeaturesInfo = Map(0 -> 2, 1-> 2)) + val (splits, bins) = DecisionTree.findSplitsBins(rdd, strategy) + assert(splits.length === 2) + assert(bins.length === 2) + assert(splits(0).length === 99) + assert(bins(0).length === 100) + + // Check splits. + + assert(splits(0)(0).feature === 0) + assert(splits(0)(0).threshold === Double.MinValue) + assert(splits(0)(0).featureType === Categorical) + assert(splits(0)(0).categories.length === 1) + assert(splits(0)(0).categories.contains(1.0)) + + assert(splits(0)(1).feature === 0) + assert(splits(0)(1).threshold === Double.MinValue) + assert(splits(0)(1).featureType === Categorical) + assert(splits(0)(1).categories.length === 2) + assert(splits(0)(1).categories.contains(1.0)) + assert(splits(0)(1).categories.contains(0.0)) + + assert(splits(0)(2) === null) + + assert(splits(1)(0).feature === 1) + assert(splits(1)(0).threshold === Double.MinValue) + assert(splits(1)(0).featureType === Categorical) + assert(splits(1)(0).categories.length === 1) + assert(splits(1)(0).categories.contains(0.0)) + + assert(splits(1)(1).feature === 1) + assert(splits(1)(1).threshold === Double.MinValue) + assert(splits(1)(1).featureType === Categorical) + assert(splits(1)(1).categories.length === 2) + assert(splits(1)(1).categories.contains(1.0)) + assert(splits(1)(1).categories.contains(0.0)) + + assert(splits(1)(2) === null) + + // Check bins. + + assert(bins(0)(0).category === 1.0) + assert(bins(0)(0).lowSplit.categories.length === 0) + assert(bins(0)(0).highSplit.categories.length === 1) + assert(bins(0)(0).highSplit.categories.contains(1.0)) + + assert(bins(0)(1).category === 0.0) + assert(bins(0)(1).lowSplit.categories.length === 1) + assert(bins(0)(1).lowSplit.categories.contains(1.0)) + assert(bins(0)(1).highSplit.categories.length === 2) + assert(bins(0)(1).highSplit.categories.contains(1.0)) + assert(bins(0)(1).highSplit.categories.contains(0.0)) + + assert(bins(0)(2) === null) + + assert(bins(1)(0).category === 0.0) + assert(bins(1)(0).lowSplit.categories.length === 0) + assert(bins(1)(0).highSplit.categories.length === 1) + assert(bins(1)(0).highSplit.categories.contains(0.0)) + + assert(bins(1)(1).category === 1.0) + assert(bins(1)(1).lowSplit.categories.length === 1) + assert(bins(1)(1).lowSplit.categories.contains(0.0)) + assert(bins(1)(1).highSplit.categories.length === 2) + assert(bins(1)(1).highSplit.categories.contains(0.0)) + assert(bins(1)(1).highSplit.categories.contains(1.0)) + + assert(bins(1)(2) === null) + } + + test("split and bin calculations for categorical variables with no sample for one category") { + val arr = DecisionTreeSuite.generateCategoricalDataPoints() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy( + Classification, + Gini, + maxDepth = 3, + maxBins = 100, + categoricalFeaturesInfo = Map(0 -> 3, 1-> 3)) + val (splits, bins) = DecisionTree.findSplitsBins(rdd, strategy) + + // Check splits. + + assert(splits(0)(0).feature === 0) + assert(splits(0)(0).threshold === Double.MinValue) + assert(splits(0)(0).featureType === Categorical) + assert(splits(0)(0).categories.length === 1) + assert(splits(0)(0).categories.contains(1.0)) + + assert(splits(0)(1).feature === 0) + assert(splits(0)(1).threshold === Double.MinValue) + assert(splits(0)(1).featureType === Categorical) + assert(splits(0)(1).categories.length === 2) + assert(splits(0)(1).categories.contains(1.0)) + assert(splits(0)(1).categories.contains(0.0)) + + assert(splits(0)(2).feature === 0) + assert(splits(0)(2).threshold === Double.MinValue) + assert(splits(0)(2).featureType === Categorical) + assert(splits(0)(2).categories.length === 3) + assert(splits(0)(2).categories.contains(1.0)) + assert(splits(0)(2).categories.contains(0.0)) + assert(splits(0)(2).categories.contains(2.0)) + + assert(splits(0)(3) === null) + + assert(splits(1)(0).feature === 1) + assert(splits(1)(0).threshold === Double.MinValue) + assert(splits(1)(0).featureType === Categorical) + assert(splits(1)(0).categories.length === 1) + assert(splits(1)(0).categories.contains(0.0)) + + assert(splits(1)(1).feature === 1) + assert(splits(1)(1).threshold === Double.MinValue) + assert(splits(1)(1).featureType === Categorical) + assert(splits(1)(1).categories.length === 2) + assert(splits(1)(1).categories.contains(1.0)) + assert(splits(1)(1).categories.contains(0.0)) + + assert(splits(1)(2).feature === 1) + assert(splits(1)(2).threshold === Double.MinValue) + assert(splits(1)(2).featureType === Categorical) + assert(splits(1)(2).categories.length === 3) + assert(splits(1)(2).categories.contains(1.0)) + assert(splits(1)(2).categories.contains(0.0)) + assert(splits(1)(2).categories.contains(2.0)) + + assert(splits(1)(3) === null) + + // Check bins. + + assert(bins(0)(0).category === 1.0) + assert(bins(0)(0).lowSplit.categories.length === 0) + assert(bins(0)(0).highSplit.categories.length === 1) + assert(bins(0)(0).highSplit.categories.contains(1.0)) + + assert(bins(0)(1).category === 0.0) + assert(bins(0)(1).lowSplit.categories.length === 1) + assert(bins(0)(1).lowSplit.categories.contains(1.0)) + assert(bins(0)(1).highSplit.categories.length === 2) + assert(bins(0)(1).highSplit.categories.contains(1.0)) + assert(bins(0)(1).highSplit.categories.contains(0.0)) + + assert(bins(0)(2).category === 2.0) + assert(bins(0)(2).lowSplit.categories.length === 2) + assert(bins(0)(2).lowSplit.categories.contains(1.0)) + assert(bins(0)(2).lowSplit.categories.contains(0.0)) + assert(bins(0)(2).highSplit.categories.length === 3) + assert(bins(0)(2).highSplit.categories.contains(1.0)) + assert(bins(0)(2).highSplit.categories.contains(0.0)) + assert(bins(0)(2).highSplit.categories.contains(2.0)) + + assert(bins(0)(3) === null) + + assert(bins(1)(0).category === 0.0) + assert(bins(1)(0).lowSplit.categories.length === 0) + assert(bins(1)(0).highSplit.categories.length === 1) + assert(bins(1)(0).highSplit.categories.contains(0.0)) + + assert(bins(1)(1).category === 1.0) + assert(bins(1)(1).lowSplit.categories.length === 1) + assert(bins(1)(1).lowSplit.categories.contains(0.0)) + assert(bins(1)(1).highSplit.categories.length === 2) + assert(bins(1)(1).highSplit.categories.contains(0.0)) + assert(bins(1)(1).highSplit.categories.contains(1.0)) + + assert(bins(1)(2).category === 2.0) + assert(bins(1)(2).lowSplit.categories.length === 2) + assert(bins(1)(2).lowSplit.categories.contains(0.0)) + assert(bins(1)(2).lowSplit.categories.contains(1.0)) + assert(bins(1)(2).highSplit.categories.length === 3) + assert(bins(1)(2).highSplit.categories.contains(0.0)) + assert(bins(1)(2).highSplit.categories.contains(1.0)) + assert(bins(1)(2).highSplit.categories.contains(2.0)) + + assert(bins(1)(3) === null) + } + + test("classification stump with all categorical variables") { + val arr = DecisionTreeSuite.generateCategoricalDataPoints() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy( + Classification, + Gini, + maxDepth = 3, + maxBins = 100, + categoricalFeaturesInfo = Map(0 -> 3, 1-> 3)) + val (splits, bins) = DecisionTree.findSplitsBins(rdd, strategy) + val bestSplits = DecisionTree.findBestSplits(rdd, new Array(7), strategy, 0, + Array[List[Filter]](), splits, bins) + + val split = bestSplits(0)._1 + assert(split.categories.length === 1) + assert(split.categories.contains(1.0)) + assert(split.featureType === Categorical) + assert(split.threshold === Double.MinValue) + + val stats = bestSplits(0)._2 + assert(stats.gain > 0) + assert(stats.predict > 0.4) + assert(stats.predict < 0.5) + assert(stats.impurity > 0.2) + } + + test("regression stump with all categorical variables") { + val arr = DecisionTreeSuite.generateCategoricalDataPoints() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy( + Regression, + Variance, + maxDepth = 3, + maxBins = 100, + categoricalFeaturesInfo = Map(0 -> 3, 1-> 3)) + val (splits, bins) = DecisionTree.findSplitsBins(rdd,strategy) + val bestSplits = DecisionTree.findBestSplits(rdd, new Array(7), strategy, 0, + Array[List[Filter]](), splits, bins) + + val split = bestSplits(0)._1 + assert(split.categories.length === 1) + assert(split.categories.contains(1.0)) + assert(split.featureType === Categorical) + assert(split.threshold === Double.MinValue) + + val stats = bestSplits(0)._2 + assert(stats.gain > 0) + assert(stats.predict > 0.4) + assert(stats.predict < 0.5) + assert(stats.impurity > 0.2) + } + + test("stump with fixed label 0 for Gini") { + val arr = DecisionTreeSuite.generateOrderedLabeledPointsWithLabel0() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy(Classification, Gini, 3, 100) + val (splits, bins) = DecisionTree.findSplitsBins(rdd, strategy) + assert(splits.length === 2) + assert(splits(0).length === 99) + assert(bins.length === 2) + assert(bins(0).length === 100) + assert(splits(0).length === 99) + assert(bins(0).length === 100) + + val bestSplits = DecisionTree.findBestSplits(rdd, new Array(7), strategy, 0, + Array[List[Filter]](), splits, bins) + assert(bestSplits.length === 1) + assert(bestSplits(0)._1.feature === 0) + assert(bestSplits(0)._1.threshold === 10) + assert(bestSplits(0)._2.gain === 0) + assert(bestSplits(0)._2.leftImpurity === 0) + assert(bestSplits(0)._2.rightImpurity === 0) + } + + test("stump with fixed label 1 for Gini") { + val arr = DecisionTreeSuite.generateOrderedLabeledPointsWithLabel1() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy(Classification, Gini, 3, 100) + val (splits, bins) = DecisionTree.findSplitsBins(rdd, strategy) + assert(splits.length === 2) + assert(splits(0).length === 99) + assert(bins.length === 2) + assert(bins(0).length === 100) + assert(splits(0).length === 99) + assert(bins(0).length === 100) + + val bestSplits = DecisionTree.findBestSplits(rdd, Array(0.0), strategy, 0, + Array[List[Filter]](), splits, bins) + assert(bestSplits.length === 1) + assert(bestSplits(0)._1.feature === 0) + assert(bestSplits(0)._1.threshold === 10) + assert(bestSplits(0)._2.gain === 0) + assert(bestSplits(0)._2.leftImpurity === 0) + assert(bestSplits(0)._2.rightImpurity === 0) + assert(bestSplits(0)._2.predict === 1) + } + + test("stump with fixed label 0 for Entropy") { + val arr = DecisionTreeSuite.generateOrderedLabeledPointsWithLabel0() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy(Classification, Entropy, 3, 100) + val (splits, bins) = DecisionTree.findSplitsBins(rdd, strategy) + assert(splits.length === 2) + assert(splits(0).length === 99) + assert(bins.length === 2) + assert(bins(0).length === 100) + assert(splits(0).length === 99) + assert(bins(0).length === 100) + + val bestSplits = DecisionTree.findBestSplits(rdd, Array(0.0), strategy, 0, + Array[List[Filter]](), splits, bins) + assert(bestSplits.length === 1) + assert(bestSplits(0)._1.feature === 0) + assert(bestSplits(0)._1.threshold === 10) + assert(bestSplits(0)._2.gain === 0) + assert(bestSplits(0)._2.leftImpurity === 0) + assert(bestSplits(0)._2.rightImpurity === 0) + assert(bestSplits(0)._2.predict === 0) + } + + test("stump with fixed label 1 for Entropy") { + val arr = DecisionTreeSuite.generateOrderedLabeledPointsWithLabel1() + assert(arr.length === 1000) + val rdd = sc.parallelize(arr) + val strategy = new Strategy(Classification, Entropy, 3, 100) + val (splits, bins) = DecisionTree.findSplitsBins(rdd, strategy) + assert(splits.length === 2) + assert(splits(0).length === 99) + assert(bins.length === 2) + assert(bins(0).length === 100) + assert(splits(0).length === 99) + assert(bins(0).length === 100) + + val bestSplits = DecisionTree.findBestSplits(rdd, Array(0.0), strategy, 0, + Array[List[Filter]](), splits, bins) + assert(bestSplits.length === 1) + assert(bestSplits(0)._1.feature === 0) + assert(bestSplits(0)._1.threshold === 10) + assert(bestSplits(0)._2.gain === 0) + assert(bestSplits(0)._2.leftImpurity === 0) + assert(bestSplits(0)._2.rightImpurity === 0) + assert(bestSplits(0)._2.predict === 1) + } +} + +object DecisionTreeSuite { + + def generateOrderedLabeledPointsWithLabel0(): Array[LabeledPoint] = { + val arr = new Array[LabeledPoint](1000) + for (i <- 0 until 1000){ + val lp = new LabeledPoint(0.0, Vectors.dense(i.toDouble, 1000.0 - i)) + arr(i) = lp + } + arr + } + + def generateOrderedLabeledPointsWithLabel1(): Array[LabeledPoint] = { + val arr = new Array[LabeledPoint](1000) + for (i <- 0 until 1000){ + val lp = new LabeledPoint(1.0, Vectors.dense(i.toDouble, 999.0 - i)) + arr(i) = lp + } + arr + } + + def generateCategoricalDataPoints(): Array[LabeledPoint] = { + val arr = new Array[LabeledPoint](1000) + for (i <- 0 until 1000){ + if (i < 600){ + arr(i) = new LabeledPoint(1.0, Vectors.dense(0.0, 1.0)) + } else { + arr(i) = new LabeledPoint(0.0, Vectors.dense(1.0, 0.0)) + } + } + arr + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/util/LabelParsersSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/util/LabelParsersSuite.scala new file mode 100644 index 0000000000000..ac85677f2f014 --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/util/LabelParsersSuite.scala @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.util + +import org.scalatest.FunSuite + +class LabelParsersSuite extends FunSuite { + test("binary label parser") { + for (parser <- Seq(BinaryLabelParser, BinaryLabelParser.getInstance())) { + assert(parser.parse("+1") === 1.0) + assert(parser.parse("1") === 1.0) + assert(parser.parse("0") === 0.0) + assert(parser.parse("-1") === 0.0) + } + } + + test("multiclass label parser") { + for (parser <- Seq(MulticlassLabelParser, MulticlassLabelParser.getInstance())) { + assert(parser.parse("0") == 0.0) + assert(parser.parse("+1") === 1.0) + assert(parser.parse("1") === 1.0) + assert(parser.parse("2") === 2.0) + assert(parser.parse("3") === 3.0) + } + } +} diff --git a/mllib/src/test/scala/org/apache/spark/mllib/util/LocalSparkContext.scala b/mllib/src/test/scala/org/apache/spark/mllib/util/LocalSparkContext.scala index 7d840043e5c6b..212fbe9288f0d 100644 --- a/mllib/src/test/scala/org/apache/spark/mllib/util/LocalSparkContext.scala +++ b/mllib/src/test/scala/org/apache/spark/mllib/util/LocalSparkContext.scala @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.spark.mllib.util import org.scalatest.Suite diff --git a/mllib/src/test/scala/org/apache/spark/mllib/util/MLUtilsSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/util/MLUtilsSuite.scala new file mode 100644 index 0000000000000..e451c350b8d88 --- /dev/null +++ b/mllib/src/test/scala/org/apache/spark/mllib/util/MLUtilsSuite.scala @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.mllib.util + +import java.io.File + +import org.scalatest.FunSuite + +import breeze.linalg.{DenseVector => BDV, SparseVector => BSV, norm => breezeNorm, + squaredDistance => breezeSquaredDistance} +import com.google.common.base.Charsets +import com.google.common.io.Files + +import org.apache.spark.mllib.linalg.Vectors +import org.apache.spark.mllib.regression.LabeledPoint +import org.apache.spark.mllib.util.MLUtils._ + +class MLUtilsSuite extends FunSuite with LocalSparkContext { + + test("epsilon computation") { + assert(1.0 + EPSILON > 1.0, s"EPSILON is too small: $EPSILON.") + assert(1.0 + EPSILON / 2.0 === 1.0, s"EPSILON is too big: $EPSILON.") + } + + test("fast squared distance") { + val a = (30 to 0 by -1).map(math.pow(2.0, _)).toArray + val n = a.length + val v1 = new BDV[Double](a) + val norm1 = breezeNorm(v1, 2.0) + val precision = 1e-6 + for (m <- 0 until n) { + val indices = (0 to m).toArray + val values = indices.map(i => a(i)) + val v2 = new BSV[Double](indices, values, n) + val norm2 = breezeNorm(v2, 2.0) + val squaredDist = breezeSquaredDistance(v1, v2) + val fastSquaredDist1 = fastSquaredDistance(v1, norm1, v2, norm2, precision) + assert((fastSquaredDist1 - squaredDist) <= precision * squaredDist, s"failed with m = $m") + val fastSquaredDist2 = fastSquaredDistance(v1, norm1, v2.toDenseVector, norm2, precision) + assert((fastSquaredDist2 - squaredDist) <= precision * squaredDist, s"failed with m = $m") + } + } + + test("compute stats") { + val data = Seq.fill(3)(Seq( + LabeledPoint(1.0, Vectors.dense(1.0, 2.0, 3.0)), + LabeledPoint(0.0, Vectors.dense(3.0, 4.0, 5.0)) + )).flatten + val rdd = sc.parallelize(data, 2) + val (meanLabel, mean, std) = MLUtils.computeStats(rdd, 3, 6) + assert(meanLabel === 0.5) + assert(mean === Vectors.dense(2.0, 3.0, 4.0)) + assert(std === Vectors.dense(1.0, 1.0, 1.0)) + } + + test("loadLibSVMData") { + val lines = + """ + |+1 1:1.0 3:2.0 5:3.0 + |-1 + |-1 2:4.0 4:5.0 6:6.0 + """.stripMargin + val tempDir = Files.createTempDir() + val file = new File(tempDir.getPath, "part-00000") + Files.write(lines, file, Charsets.US_ASCII) + val path = tempDir.toURI.toString + + val pointsWithNumFeatures = MLUtils.loadLibSVMData(sc, path, BinaryLabelParser, 6).collect() + val pointsWithoutNumFeatures = MLUtils.loadLibSVMData(sc, path).collect() + + for (points <- Seq(pointsWithNumFeatures, pointsWithoutNumFeatures)) { + assert(points.length === 3) + assert(points(0).label === 1.0) + assert(points(0).features === Vectors.sparse(6, Seq((0, 1.0), (2, 2.0), (4, 3.0)))) + assert(points(1).label == 0.0) + assert(points(1).features == Vectors.sparse(6, Seq())) + assert(points(2).label === 0.0) + assert(points(2).features === Vectors.sparse(6, Seq((1, 4.0), (3, 5.0), (5, 6.0)))) + } + + val multiclassPoints = MLUtils.loadLibSVMData(sc, path, MulticlassLabelParser).collect() + assert(multiclassPoints.length === 3) + assert(multiclassPoints(0).label === 1.0) + assert(multiclassPoints(1).label === -1.0) + assert(multiclassPoints(2).label === -1.0) + + try { + file.delete() + tempDir.delete() + } catch { + case t: Throwable => + } + } +} diff --git a/pom.xml b/pom.xml index f0c877dcfe7b2..11511bcb9da52 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ org.apache apache - 13 + 14 org.apache.spark spark-parent @@ -54,11 +54,11 @@ JIRA - https://spark-project.atlassian.net/browse/SPARK + https://issues.apache.org/jira/browse/SPARK - 3.0.0 + 3.0.4 @@ -91,6 +91,9 @@ mllib tools streaming + sql/catalyst + sql/core + sql/hive repl assembly external/twitter @@ -107,9 +110,9 @@ 1.6 - 2.10.3 + 2.10.4 2.10 - 0.13.0 + 0.17.0 org.spark-project.akka 2.2.3-shaded-protobuf 1.7.5 @@ -118,6 +121,12 @@ 2.4.1 0.23.7 0.94.6 + 0.12.0 + 1.3.2 + 1.2.3 + 8.1.14.v20131031 + 0.3.1 + 3.0.0 64m 512m @@ -127,6 +136,7 @@ maven-repo Maven Repository + http://repo.maven.apache.org/maven2 true @@ -135,10 +145,32 @@ false + + apache-repo + Apache Repository + https://repository.apache.org/content/repositories/releases + + true + + + false + + jboss-repo JBoss Repository - http://repository.jboss.org/nexus/content/repositories/releases + https://repository.jboss.org/nexus/content/repositories/releases + + true + + + false + + + + mqtt-repo + MQTT Repository + https://repo.eclipse.org/content/repositories/paho-releases true @@ -150,6 +182,12 @@ cloudera-repo Cloudera Repository https://repository.cloudera.com/artifactory/cloudera-repos + + true + + + false + @@ -158,22 +196,22 @@ org.eclipse.jetty jetty-util - 7.6.8.v20121106 + ${jetty.version} org.eclipse.jetty jetty-security - 7.6.8.v20121106 + ${jetty.version} org.eclipse.jetty jetty-plus - 7.6.8.v20121106 + ${jetty.version} org.eclipse.jetty jetty-server - 7.6.8.v20121106 + ${jetty.version} com.google.guava @@ -239,7 +277,7 @@ com.twitter chill_${scala.binary.version} - 0.3.1 + ${chill.version} org.ow2.asm @@ -254,7 +292,7 @@ com.twitter chill-java - 0.3.1 + ${chill.version} org.ow2.asm @@ -339,14 +377,13 @@ org.apache.derby derby 10.4.2.0 - test net.liftweb lift-json_${scala.binary.version} 2.5.1 @@ -358,33 +395,38 @@ com.codahale.metrics metrics-core - 3.0.0 + ${codahale.metrics.version} com.codahale.metrics metrics-jvm - 3.0.0 + ${codahale.metrics.version} com.codahale.metrics metrics-json - 3.0.0 + ${codahale.metrics.version} com.codahale.metrics metrics-ganglia - 3.0.0 + ${codahale.metrics.version} com.codahale.metrics metrics-graphite - 3.0.0 + ${codahale.metrics.version} org.scala-lang scala-compiler ${scala.version} + + org.scala-lang + scala-reflect + ${scala.version} + org.scala-lang jline @@ -401,11 +443,6 @@ 1.9.1 test - - commons-io - commons-io - 2.4 - org.easymock easymock @@ -542,6 +579,12 @@ + + + org.codehaus.jackson + jackson-mapper-asl + 1.8.8 +
      @@ -551,7 +594,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 1.1.1 + 1.3.1 enforce-versions @@ -561,7 +604,7 @@ - 3.0.0 + 3.0.4 ${java.version} @@ -574,12 +617,12 @@ org.codehaus.mojo build-helper-maven-plugin - 1.7 + 1.8 net.alchim31.maven scala-maven-plugin - 3.1.5 + 3.1.6 scala-compile-first @@ -612,7 +655,6 @@ -deprecation - -Xms64m -Xms1024m -Xmx1024m -XX:PermSize=${PermGen} @@ -641,7 +683,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.12.4 + 2.17 true @@ -655,7 +697,7 @@ ${project.build.directory}/surefire-reports . ${project.build.directory}/SparkTestSuite.txt - -Xms64m -Xmx3g + -Xmx3g -XX:MaxPermSize=${MaxPermGen} -XX:ReservedCodeCacheSize=512m @@ -680,7 +722,7 @@ org.apache.maven.plugins maven-shade-plugin - 2.0 + 2.2 org.apache.maven.plugins @@ -756,12 +798,19 @@ 0.23.7 - yarn + + + + spark-ganglia-lgpl + + extras/spark-ganglia-lgpl + + java8-tests @@ -770,7 +819,6 @@ org.apache.maven.plugins maven-jar-plugin - 2.4 @@ -800,5 +848,51 @@ + + + + hadoop-provided + + false + + + + org.apache.hadoop + hadoop-client + provided + + + org.apache.hadoop + hadoop-yarn-api + provided + + + org.apache.hadoop + hadoop-yarn-common + provided + + + org.apache.hadoop + hadoop-yarn-client + provided + + + org.apache.avro + avro + provided + + + org.apache.avro + avro-ipc + provided + + + org.apache.zookeeper + zookeeper + provided + + + + diff --git a/project/MimaBuild.scala b/project/MimaBuild.scala new file mode 100644 index 0000000000000..4bfa9bf95ad78 --- /dev/null +++ b/project/MimaBuild.scala @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import com.typesafe.tools.mima.plugin.MimaKeys.{binaryIssueFilters, previousArtifact} +import com.typesafe.tools.mima.plugin.MimaPlugin.mimaDefaultSettings +import sbt._ + +object MimaBuild { + + def ignoredABIProblems(base: File) = { + import com.typesafe.tools.mima.core._ + import com.typesafe.tools.mima.core.ProblemFilters._ + + // Excludes placed here will be used for all Spark versions + val defaultExcludes = Seq() + + // Read package-private excludes from file + val excludeFilePath = (base.getAbsolutePath + "/.mima-excludes") + val excludeFile = file(excludeFilePath) + val packagePrivateList: Seq[String] = + if (!excludeFile.exists()) { + Seq() + } else { + IO.read(excludeFile).split("\n") + } + + def excludeClass(className: String) = { + Seq( + excludePackage(className), + ProblemFilters.exclude[MissingClassProblem](className), + ProblemFilters.exclude[MissingTypesProblem](className), + excludePackage(className + "$"), + ProblemFilters.exclude[MissingClassProblem](className + "$"), + ProblemFilters.exclude[MissingTypesProblem](className + "$") + ) + } + def excludeSparkClass(className: String) = excludeClass("org.apache.spark." + className) + + val packagePrivateExcludes = packagePrivateList.flatMap(excludeClass) + + /* Excludes specific to a given version of Spark. When comparing the given version against + its immediate predecessor, the excludes listed here will be applied. */ + val versionExcludes = + SparkBuild.SPARK_VERSION match { + case v if v.startsWith("1.0") => + Seq( + excludePackage("org.apache.spark.api.java"), + excludePackage("org.apache.spark.streaming.api.java"), + excludePackage("org.apache.spark.streaming.scheduler"), + excludePackage("org.apache.spark.mllib") + ) ++ + excludeSparkClass("rdd.ClassTags") ++ + excludeSparkClass("util.XORShiftRandom") ++ + excludeSparkClass("mllib.recommendation.MFDataGenerator") ++ + excludeSparkClass("mllib.optimization.SquaredGradient") ++ + excludeSparkClass("mllib.regression.RidgeRegressionWithSGD") ++ + excludeSparkClass("mllib.regression.LassoWithSGD") ++ + excludeSparkClass("mllib.regression.LinearRegressionWithSGD") ++ + excludeSparkClass("streaming.dstream.NetworkReceiver") ++ + excludeSparkClass("streaming.dstream.NetworkReceiver#NetworkReceiverActor") ++ + excludeSparkClass("streaming.dstream.NetworkReceiver#BlockGenerator") ++ + excludeSparkClass("streaming.dstream.NetworkReceiver#BlockGenerator#Block") ++ + excludeSparkClass("streaming.dstream.ReportError") ++ + excludeSparkClass("org.apache.spark.streaming.dstream.ReportBlock") ++ + excludeSparkClass("org.apache.spark.streaming.dstream.DStream") + case _ => Seq() + } + + defaultExcludes ++ packagePrivateExcludes ++ versionExcludes + } + + def mimaSettings(sparkHome: File) = mimaDefaultSettings ++ Seq( + previousArtifact := None, + binaryIssueFilters ++= ignoredABIProblems(sparkHome) + ) + +} diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala index 8fa220c413291..694f90a83ab67 100644 --- a/project/SparkBuild.scala +++ b/project/SparkBuild.scala @@ -17,18 +17,21 @@ import sbt._ import sbt.Classpaths.publishTask -import Keys._ +import sbt.Keys._ import sbtassembly.Plugin._ import AssemblyKeys._ import scala.util.Properties import org.scalastyle.sbt.ScalastylePlugin.{Settings => ScalaStyleSettings} +import com.typesafe.tools.mima.plugin.MimaKeys.previousArtifact import scala.collection.JavaConversions._ // For Sonatype publishing -//import com.jsuereth.pgp.sbtplugin.PgpKeys._ +// import com.jsuereth.pgp.sbtplugin.PgpKeys._ object SparkBuild extends Build { + val SPARK_VERSION = "1.0.0-SNAPSHOT" + // Hadoop version to build against. For example, "1.0.4" for Apache releases, or // "2.0.0-mr1-cdh4.2.0" for Cloudera Hadoop. Note that these variables can be set // through the environment variables SPARK_HADOOP_VERSION and SPARK_YARN. @@ -40,6 +43,8 @@ object SparkBuild extends Build { val DEFAULT_YARN = false + val DEFAULT_HIVE = false + // HBase version; set as appropriate. val HBASE_VERSION = "0.94.6" @@ -52,7 +57,7 @@ object SparkBuild extends Build { lazy val core = Project("core", file("core"), settings = coreSettings) lazy val repl = Project("repl", file("repl"), settings = replSettings) - .dependsOn(core, graphx, bagel, mllib) + .dependsOn(core, graphx, bagel, mllib, sql) lazy val tools = Project("tools", file("tools"), settings = toolsSettings) dependsOn(core) dependsOn(streaming) @@ -60,12 +65,21 @@ object SparkBuild extends Build { lazy val graphx = Project("graphx", file("graphx"), settings = graphxSettings) dependsOn(core) + lazy val catalyst = Project("catalyst", file("sql/catalyst"), settings = catalystSettings) dependsOn(core) + + lazy val sql = Project("sql", file("sql/core"), settings = sqlCoreSettings) dependsOn(core, catalyst) + + lazy val hive = Project("hive", file("sql/hive"), settings = hiveSettings) dependsOn(sql) + + lazy val maybeHive: Seq[ClasspathDependency] = if (isHiveEnabled) Seq(hive) else Seq() + lazy val maybeHiveRef: Seq[ProjectReference] = if (isHiveEnabled) Seq(hive) else Seq() + lazy val streaming = Project("streaming", file("streaming"), settings = streamingSettings) dependsOn(core) lazy val mllib = Project("mllib", file("mllib"), settings = mllibSettings) dependsOn(core) lazy val assemblyProj = Project("assembly", file("assembly"), settings = assemblyProjSettings) - .dependsOn(core, graphx, bagel, mllib, repl, streaming) dependsOn(maybeYarn: _*) + .dependsOn(core, graphx, bagel, mllib, streaming, repl, sql) dependsOn(maybeYarn: _*) dependsOn(maybeHive: _*) dependsOn(maybeGanglia: _*) lazy val assembleDeps = TaskKey[Unit]("assemble-deps", "Build assembly of dependencies and packages Spark projects") @@ -91,19 +105,31 @@ object SparkBuild extends Build { lazy val hadoopClient = if (hadoopVersion.startsWith("0.20.") || hadoopVersion == "1.0.0") "hadoop-core" else "hadoop-client" val maybeAvro = if (hadoopVersion.startsWith("0.23.") && isYarnEnabled) Seq("org.apache.avro" % "avro" % "1.7.4") else Seq() - // Conditionally include the java 8 sub-project + lazy val isHiveEnabled = Properties.envOrNone("SPARK_HIVE") match { + case None => DEFAULT_HIVE + case Some(v) => v.toBoolean + } + + // Include Ganglia integration if the user has enabled Ganglia + // This is isolated from the normal build due to LGPL-licensed code in the library + lazy val isGangliaEnabled = Properties.envOrNone("SPARK_GANGLIA_LGPL").isDefined + lazy val gangliaProj = Project("spark-ganglia-lgpl", file("extras/spark-ganglia-lgpl"), settings = gangliaSettings).dependsOn(core) + val maybeGanglia: Seq[ClasspathDependency] = if (isGangliaEnabled) Seq(gangliaProj) else Seq() + val maybeGangliaRef: Seq[ProjectReference] = if (isGangliaEnabled) Seq(gangliaProj) else Seq() + + // Include the Java 8 project if the JVM version is 8+ lazy val javaVersion = System.getProperty("java.specification.version") lazy val isJava8Enabled = javaVersion.toDouble >= "1.8".toDouble val maybeJava8Tests = if (isJava8Enabled) Seq[ProjectReference](java8Tests) else Seq[ProjectReference]() lazy val java8Tests = Project("java8-tests", file("extras/java8-tests"), settings = java8TestsSettings). dependsOn(core) dependsOn(streaming % "compile->compile;test->test") - // Conditionally include the yarn sub-project + // Include the YARN project if the user has enabled YARN lazy val yarnAlpha = Project("yarn-alpha", file("yarn/alpha"), settings = yarnAlphaSettings) dependsOn(core) lazy val yarn = Project("yarn", file("yarn/stable"), settings = yarnSettings) dependsOn(core) - lazy val maybeYarn = if (isYarnEnabled) Seq[ClasspathDependency](if (isNewHadoop) yarn else yarnAlpha) else Seq[ClasspathDependency]() - lazy val maybeYarnRef = if (isYarnEnabled) Seq[ProjectReference](if (isNewHadoop) yarn else yarnAlpha) else Seq[ProjectReference]() + lazy val maybeYarn: Seq[ClasspathDependency] = if (isYarnEnabled) Seq(if (isNewHadoop) yarn else yarnAlpha) else Seq() + lazy val maybeYarnRef: Seq[ProjectReference] = if (isYarnEnabled) Seq(if (isNewHadoop) yarn else yarnAlpha) else Seq() lazy val externalTwitter = Project("external-twitter", file("external/twitter"), settings = twitterSettings) .dependsOn(streaming % "compile->compile;test->test") @@ -124,18 +150,18 @@ object SparkBuild extends Build { lazy val allExternalRefs = Seq[ProjectReference](externalTwitter, externalKafka, externalFlume, externalZeromq, externalMqtt) lazy val examples = Project("examples", file("examples"), settings = examplesSettings) - .dependsOn(core, mllib, graphx, bagel, streaming, externalTwitter) dependsOn(allExternal: _*) + .dependsOn(core, mllib, graphx, bagel, streaming, hive) dependsOn(allExternal: _*) - // Everything except assembly, tools, java8Tests and examples belong to packageProjects - lazy val packageProjects = Seq[ProjectReference](core, repl, bagel, streaming, mllib, graphx) ++ maybeYarnRef + // Everything except assembly, hive, tools, java8Tests and examples belong to packageProjects + lazy val packageProjects = Seq[ProjectReference](core, repl, bagel, streaming, mllib, graphx, catalyst, sql) ++ maybeYarnRef ++ maybeHiveRef ++ maybeGangliaRef lazy val allProjects = packageProjects ++ allExternalRefs ++ Seq[ProjectReference](examples, tools, assemblyProj) ++ maybeJava8Tests - def sharedSettings = Defaults.defaultSettings ++ Seq( + def sharedSettings = Defaults.defaultSettings ++ MimaBuild.mimaSettings(file(sparkHome)) ++ Seq( organization := "org.apache.spark", - version := "1.0.0-SNAPSHOT", - scalaVersion := "2.10.3", + version := SPARK_VERSION, + scalaVersion := "2.10.4", scalacOptions := Seq("-Xmax-classfile-name", "120", "-unchecked", "-deprecation", "-target:" + SCALAC_JVM_VERSION), javacOptions := Seq("-target", JAVAC_JVM_VERSION, "-source", JAVAC_JVM_VERSION), @@ -152,12 +178,13 @@ object SparkBuild extends Build { fork := true, javaOptions in Test += "-Dspark.home=" + sparkHome, javaOptions in Test += "-Dspark.testing=1", + javaOptions in Test += "-Dsun.io.serialization.extendedDebugInfo=true", javaOptions in Test ++= System.getProperties.filter(_._1 startsWith "spark").map { case (k,v) => s"-D$k=$v" }.toSeq, javaOptions += "-Xmx3g", // Show full stack trace and duration in test cases. testOptions in Test += Tests.Argument("-oDF"), // Remove certain packages from Scaladoc - scalacOptions in (Compile,doc) := Seq("-skip-packages", Seq( + scalacOptions in (Compile,doc) := Seq("-groups", "-skip-packages", Seq( "akka", "org.apache.spark.network", "org.apache.spark.deploy", @@ -167,16 +194,23 @@ object SparkBuild extends Build { // Only allow one test at a time, even across projects, since they run in the same JVM concurrentRestrictions in Global += Tags.limit(Tags.Test, 1), - // also check the local Maven repository ~/.m2 - resolvers ++= Seq(Resolver.file("Local Maven Repo", file(Path.userHome + "/.m2/repository"))), - - // For Sonatype publishing - resolvers ++= Seq("sonatype-snapshots" at "https://oss.sonatype.org/content/repositories/snapshots", - "sonatype-staging" at "https://oss.sonatype.org/service/local/staging/deploy/maven2/"), + resolvers ++= Seq( + // HTTPS is unavailable for Maven Central + "Maven Repository" at "http://repo.maven.apache.org/maven2", + "Apache Repository" at "https://repository.apache.org/content/repositories/releases", + "JBoss Repository" at "https://repository.jboss.org/nexus/content/repositories/releases/", + "MQTT Repository" at "https://repo.eclipse.org/content/repositories/paho-releases/", + "Cloudera Repository" at "http://repository.cloudera.com/artifactory/cloudera-repos/", + // For Sonatype publishing + // "sonatype-snapshots" at "https://oss.sonatype.org/content/repositories/snapshots", + // "sonatype-staging" at "https://oss.sonatype.org/service/local/staging/deploy/maven2/", + // also check the local Maven repository ~/.m2 + Resolver.mavenLocal + ), publishMavenStyle := true, - //useGpg in Global := true, + // useGpg in Global := true, pomExtra := ( @@ -224,19 +258,18 @@ object SparkBuild extends Build { */ libraryDependencies ++= Seq( - "io.netty" % "netty-all" % "4.0.17.Final", - "org.eclipse.jetty" % "jetty-server" % "7.6.8.v20121106", - "org.eclipse.jetty" % "jetty-util" % "7.6.8.v20121106", - "org.eclipse.jetty" % "jetty-plus" % "7.6.8.v20121106", - "org.eclipse.jetty" % "jetty-security" % "7.6.8.v20121106", + "io.netty" % "netty-all" % "4.0.17.Final", + "org.eclipse.jetty" % "jetty-server" % jettyVersion, + "org.eclipse.jetty" % "jetty-util" % jettyVersion, + "org.eclipse.jetty" % "jetty-plus" % jettyVersion, + "org.eclipse.jetty" % "jetty-security" % jettyVersion, /** Workaround for SPARK-959. Dependency used by org.eclipse.jetty. Fixed in ivy 2.3.0. */ - "org.eclipse.jetty.orbit" % "javax.servlet" % "2.5.0.v201103041518" artifacts Artifact("javax.servlet", "jar", "jar"), + "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" artifacts Artifact("javax.servlet", "jar", "jar"), "org.scalatest" %% "scalatest" % "1.9.1" % "test", "org.scalacheck" %% "scalacheck" % "1.10.0" % "test", "com.novocode" % "junit-interface" % "0.10" % "test", "org.easymock" % "easymock" % "3.1" % "test", - "org.mockito" % "mockito-all" % "1.8.5" % "test", - "commons-io" % "commons-io" % "2.4" % "test" + "org.mockito" % "mockito-all" % "1.8.5" % "test" ), testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-a"), @@ -254,22 +287,35 @@ object SparkBuild extends Build { publishLocalBoth <<= Seq(publishLocal in MavenCompile, publishLocal).dependOn ) ++ net.virtualvoid.sbt.graph.Plugin.graphSettings ++ ScalaStyleSettings + val akkaVersion = "2.2.3-shaded-protobuf" + val chillVersion = "0.3.1" + val codahaleMetricsVersion = "3.0.0" + val jblasVersion = "1.2.3" + val jettyVersion = "8.1.14.v20131031" + val hiveVersion = "0.12.0" + val parquetVersion = "1.3.2" val slf4jVersion = "1.7.5" val excludeNetty = ExclusionRule(organization = "org.jboss.netty") + val excludeEclipseJetty = ExclusionRule(organization = "org.eclipse.jetty") val excludeAsm = ExclusionRule(organization = "org.ow2.asm") val excludeOldAsm = ExclusionRule(organization = "asm") val excludeCommonsLogging = ExclusionRule(organization = "commons-logging") val excludeSLF4J = ExclusionRule(organization = "org.slf4j") val excludeScalap = ExclusionRule(organization = "org.scala-lang", artifact = "scalap") + val excludeHadoop = ExclusionRule(organization = "org.apache.hadoop") + val excludeCurator = ExclusionRule(organization = "org.apache.curator") + val excludePowermock = ExclusionRule(organization = "org.powermock") + + + def sparkPreviousArtifact(id: String, organization: String = "org.apache.spark", + version: String = "0.9.0-incubating", crossVersion: String = "2.10"): Option[sbt.ModuleID] = { + val fullId = if (crossVersion.isEmpty) id else id + "_" + crossVersion + Some(organization % fullId % version) // the artifact to compare binary compatibility with + } def coreSettings = sharedSettings ++ Seq( name := "spark-core", - resolvers ++= Seq( - "JBoss Repository" at "http://repository.jboss.org/nexus/content/repositories/releases/", - "Cloudera Repository" at "https://repository.cloudera.com/artifactory/cloudera-repos/" - ), - libraryDependencies ++= Seq( "com.google.guava" % "guava" % "14.0.1", "com.google.code.findbugs" % "jsr305" % "1.3.9", @@ -281,25 +327,25 @@ object SparkBuild extends Build { "commons-daemon" % "commons-daemon" % "1.0.10", // workaround for bug HADOOP-9407 "com.ning" % "compress-lzf" % "1.0.0", "org.xerial.snappy" % "snappy-java" % "1.0.5", - "org.spark-project.akka" %% "akka-remote" % "2.2.3-shaded-protobuf" excludeAll(excludeNetty), - "org.spark-project.akka" %% "akka-slf4j" % "2.2.3-shaded-protobuf" excludeAll(excludeNetty), - "org.spark-project.akka" %% "akka-testkit" % "2.2.3-shaded-protobuf" % "test", + "org.spark-project.akka" %% "akka-remote" % akkaVersion excludeAll(excludeNetty), + "org.spark-project.akka" %% "akka-slf4j" % akkaVersion excludeAll(excludeNetty), + "org.spark-project.akka" %% "akka-testkit" % akkaVersion % "test", "org.json4s" %% "json4s-jackson" % "3.2.6" excludeAll(excludeScalap), "it.unimi.dsi" % "fastutil" % "6.4.4", "colt" % "colt" % "1.2.0", - "org.apache.mesos" % "mesos" % "0.13.0", + "org.apache.mesos" % "mesos" % "0.17.0", "commons-net" % "commons-net" % "2.2", "net.java.dev.jets3t" % "jets3t" % "0.7.1" excludeAll(excludeCommonsLogging), "org.apache.derby" % "derby" % "10.4.2.0" % "test", "org.apache.hadoop" % hadoopClient % hadoopVersion excludeAll(excludeNetty, excludeAsm, excludeCommonsLogging, excludeSLF4J, excludeOldAsm), "org.apache.curator" % "curator-recipes" % "2.4.0" excludeAll(excludeNetty), - "com.codahale.metrics" % "metrics-core" % "3.0.0", - "com.codahale.metrics" % "metrics-jvm" % "3.0.0", - "com.codahale.metrics" % "metrics-json" % "3.0.0", - "com.codahale.metrics" % "metrics-ganglia" % "3.0.0", - "com.codahale.metrics" % "metrics-graphite" % "3.0.0", - "com.twitter" %% "chill" % "0.3.1" excludeAll(excludeAsm), - "com.twitter" % "chill-java" % "0.3.1" excludeAll(excludeAsm), + "com.codahale.metrics" % "metrics-core" % codahaleMetricsVersion, + "com.codahale.metrics" % "metrics-jvm" % codahaleMetricsVersion, + "com.codahale.metrics" % "metrics-json" % codahaleMetricsVersion, + "com.codahale.metrics" % "metrics-graphite" % codahaleMetricsVersion, + "com.twitter" %% "chill" % chillVersion excludeAll(excludeAsm), + "com.twitter" % "chill-java" % chillVersion excludeAll(excludeAsm), + "org.tachyonproject" % "tachyon" % "0.4.1-thrift" excludeAll(excludeHadoop, excludeCurator, excludeEclipseJetty, excludePowermock), "com.clearspring.analytics" % "stream" % "2.5.1" ), libraryDependencies ++= maybeAvro @@ -309,7 +355,7 @@ object SparkBuild extends Build { publish := {} ) - def replSettings = sharedSettings ++ Seq( + def replSettings = sharedSettings ++ Seq( name := "spark-repl", libraryDependencies <+= scalaVersion(v => "org.scala-lang" % "scala-compiler" % v ), libraryDependencies <+= scalaVersion(v => "org.scala-lang" % "jline" % v ), @@ -333,34 +379,91 @@ object SparkBuild extends Build { ) ++ assemblySettings ++ extraAssemblySettings def toolsSettings = sharedSettings ++ Seq( - name := "spark-tools" + name := "spark-tools", + libraryDependencies <+= scalaVersion(v => "org.scala-lang" % "scala-compiler" % v ), + libraryDependencies <+= scalaVersion(v => "org.scala-lang" % "scala-reflect" % v ) ) ++ assemblySettings ++ extraAssemblySettings def graphxSettings = sharedSettings ++ Seq( name := "spark-graphx", + previousArtifact := sparkPreviousArtifact("spark-graphx"), libraryDependencies ++= Seq( - "org.jblas" % "jblas" % "1.2.3" + "org.jblas" % "jblas" % jblasVersion ) ) def bagelSettings = sharedSettings ++ Seq( - name := "spark-bagel" + name := "spark-bagel", + previousArtifact := sparkPreviousArtifact("spark-bagel") ) def mllibSettings = sharedSettings ++ Seq( name := "spark-mllib", + previousArtifact := sparkPreviousArtifact("spark-mllib"), libraryDependencies ++= Seq( - "org.jblas" % "jblas" % "1.2.3" + "org.jblas" % "jblas" % jblasVersion, + "org.scalanlp" %% "breeze" % "0.7" ) ) - def streamingSettings = sharedSettings ++ Seq( - name := "spark-streaming", + def catalystSettings = sharedSettings ++ Seq( + name := "catalyst", + // The mechanics of rewriting expression ids to compare trees in some test cases makes + // assumptions about the the expression ids being contiguious. Running tests in parallel breaks + // this non-deterministically. TODO: FIX THIS. + parallelExecution in Test := false, libraryDependencies ++= Seq( - "commons-io" % "commons-io" % "2.4" + "org.scalatest" %% "scalatest" % "1.9.1" % "test", + "com.typesafe" %% "scalalogging-slf4j" % "1.0.1" ) ) + def sqlCoreSettings = sharedSettings ++ Seq( + name := "spark-sql", + libraryDependencies ++= Seq( + "com.twitter" % "parquet-column" % parquetVersion, + "com.twitter" % "parquet-hadoop" % parquetVersion + ) + ) + + // Since we don't include hive in the main assembly this project also acts as an alternative + // assembly jar. + def hiveSettings = sharedSettings ++ Seq( + name := "spark-hive", + javaOptions += "-XX:MaxPermSize=1g", + libraryDependencies ++= Seq( + "org.apache.hive" % "hive-metastore" % hiveVersion, + "org.apache.hive" % "hive-exec" % hiveVersion, + "org.apache.hive" % "hive-serde" % hiveVersion + ), + // Multiple queries rely on the TestHive singleton. See comments there for more details. + parallelExecution in Test := false, + // Supporting all SerDes requires us to depend on deprecated APIs, so we turn off the warnings + // only for this subproject. + scalacOptions <<= scalacOptions map { currentOpts: Seq[String] => + currentOpts.filterNot(_ == "-deprecation") + }, + initialCommands in console := + """ + |import org.apache.spark.sql.catalyst.analysis._ + |import org.apache.spark.sql.catalyst.dsl._ + |import org.apache.spark.sql.catalyst.errors._ + |import org.apache.spark.sql.catalyst.expressions._ + |import org.apache.spark.sql.catalyst.plans.logical._ + |import org.apache.spark.sql.catalyst.rules._ + |import org.apache.spark.sql.catalyst.types._ + |import org.apache.spark.sql.catalyst.util._ + |import org.apache.spark.sql.execution + |import org.apache.spark.sql.hive._ + |import org.apache.spark.sql.hive.TestHive._ + |import org.apache.spark.sql.parquet.ParquetTestData""".stripMargin + ) + + def streamingSettings = sharedSettings ++ Seq( + name := "spark-streaming", + previousArtifact := sparkPreviousArtifact("spark-streaming") + ) + def yarnCommonSettings = sharedSettings ++ Seq( unmanagedSourceDirectories in Compile <++= baseDirectory { base => Seq( @@ -384,6 +487,11 @@ object SparkBuild extends Build { name := "spark-yarn" ) + def gangliaSettings = sharedSettings ++ Seq( + name := "spark-ganglia-lgpl", + libraryDependencies += "com.codahale.metrics" % "metrics-ganglia" % "3.0.0" + ) + def java8TestsSettings = sharedSettings ++ Seq( name := "java8-tests", javacOptions := Seq("-target", "1.8", "-source", "1.8"), @@ -426,6 +534,7 @@ object SparkBuild extends Build { def twitterSettings() = sharedSettings ++ Seq( name := "spark-streaming-twitter", + previousArtifact := sparkPreviousArtifact("spark-streaming-twitter"), libraryDependencies ++= Seq( "org.twitter4j" % "twitter4j-stream" % "3.0.3" excludeAll(excludeNetty) ) @@ -433,6 +542,7 @@ object SparkBuild extends Build { def kafkaSettings() = sharedSettings ++ Seq( name := "spark-streaming-kafka", + previousArtifact := sparkPreviousArtifact("spark-streaming-kafka"), libraryDependencies ++= Seq( "com.github.sgroschupf" % "zkclient" % "0.1" excludeAll(excludeNetty), "org.apache.kafka" %% "kafka" % "0.8.0" @@ -445,6 +555,7 @@ object SparkBuild extends Build { def flumeSettings() = sharedSettings ++ Seq( name := "spark-streaming-flume", + previousArtifact := sparkPreviousArtifact("spark-streaming-flume"), libraryDependencies ++= Seq( "org.apache.flume" % "flume-ng-sdk" % "1.2.0" % "compile" excludeAll(excludeNetty) ) @@ -452,14 +563,15 @@ object SparkBuild extends Build { def zeromqSettings() = sharedSettings ++ Seq( name := "spark-streaming-zeromq", + previousArtifact := sparkPreviousArtifact("spark-streaming-zeromq"), libraryDependencies ++= Seq( - "org.spark-project.akka" %% "akka-zeromq" % "2.2.3-shaded-protobuf" excludeAll(excludeNetty) + "org.spark-project.akka" %% "akka-zeromq" % akkaVersion excludeAll(excludeNetty) ) ) def mqttSettings() = streamingSettings ++ Seq( name := "spark-streaming-mqtt", - resolvers ++= Seq("Eclipse Repo" at "https://repo.eclipse.org/content/repositories/paho-releases/"), + previousArtifact := sparkPreviousArtifact("spark-streaming-mqtt"), libraryDependencies ++= Seq("org.eclipse.paho" % "mqtt-client" % "0.4.0") ) } diff --git a/project/plugins.sbt b/project/plugins.sbt index 32bc044a93221..d787237ddc540 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -scalaVersion := "2.10.3" +scalaVersion := "2.10.4" resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns) @@ -19,4 +19,7 @@ addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.4") addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "0.4.0") +addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.6") + addSbtPlugin("com.alpinenow" % "junit_xml_listener" % "0.5.0") + diff --git a/project/project/SparkPluginBuild.scala b/project/project/SparkPluginBuild.scala new file mode 100644 index 0000000000000..0142256e90fb7 --- /dev/null +++ b/project/project/SparkPluginBuild.scala @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import sbt._ +import sbt.Keys._ + +/** + * This plugin project is there to define new scala style rules for spark. This is + * a plugin project so that this gets compiled first and is put on the classpath and + * becomes available for scalastyle sbt plugin. + */ +object SparkPluginDef extends Build { + lazy val root = Project("plugins", file(".")) dependsOn(sparkStyle) + lazy val sparkStyle = Project("spark-style", file("spark-style"), settings = styleSettings) + val sparkVersion = "1.0.0-SNAPSHOT" + // There is actually no need to publish this artifact. + def styleSettings = Defaults.defaultSettings ++ Seq ( + name := "spark-style", + organization := "org.apache.spark", + version := sparkVersion, + scalaVersion := "2.10.4", + scalacOptions := Seq("-unchecked", "-deprecation"), + libraryDependencies ++= Dependencies.scalaStyle + ) + + object Dependencies { + val scalaStyle = Seq("org.scalastyle" %% "scalastyle" % "0.4.0") + } +} diff --git a/project/spark-style/src/main/scala/org/apache/spark/scalastyle/SparkSpaceAfterCommentStartChecker.scala b/project/spark-style/src/main/scala/org/apache/spark/scalastyle/SparkSpaceAfterCommentStartChecker.scala new file mode 100644 index 0000000000000..80d3faa3fe749 --- /dev/null +++ b/project/spark-style/src/main/scala/org/apache/spark/scalastyle/SparkSpaceAfterCommentStartChecker.scala @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.apache.spark.scalastyle + +import java.util.regex.Pattern + +import org.scalastyle.{PositionError, ScalariformChecker, ScalastyleError} +import scalariform.lexer.{MultiLineComment, ScalaDocComment, SingleLineComment, Token} +import scalariform.parser.CompilationUnit + +class SparkSpaceAfterCommentStartChecker extends ScalariformChecker { + val errorKey: String = "insert.a.single.space.after.comment.start.and.before.end" + + private def multiLineCommentRegex(comment: Token) = + Pattern.compile( """/\*\S+.*""", Pattern.DOTALL).matcher(comment.text.trim).matches() || + Pattern.compile( """/\*.*\S\*/""", Pattern.DOTALL).matcher(comment.text.trim).matches() + + private def scalaDocPatternRegex(comment: Token) = + Pattern.compile( """/\*\*\S+.*""", Pattern.DOTALL).matcher(comment.text.trim).matches() || + Pattern.compile( """/\*\*.*\S\*/""", Pattern.DOTALL).matcher(comment.text.trim).matches() + + private def singleLineCommentRegex(comment: Token): Boolean = + comment.text.trim.matches( """//\S+.*""") && !comment.text.trim.matches( """///+""") + + override def verify(ast: CompilationUnit): List[ScalastyleError] = { + ast.tokens + .filter(hasComment) + .map { + _.associatedWhitespaceAndComments.comments.map { + case x: SingleLineComment if singleLineCommentRegex(x.token) => Some(x.token.offset) + case x: MultiLineComment if multiLineCommentRegex(x.token) => Some(x.token.offset) + case x: ScalaDocComment if scalaDocPatternRegex(x.token) => Some(x.token.offset) + case _ => None + }.flatten + }.flatten.map(PositionError(_)) + } + + + private def hasComment(x: Token) = + x.associatedWhitespaceAndComments != null && !x.associatedWhitespaceAndComments.comments.isEmpty + +} diff --git a/python/pyspark/context.py b/python/pyspark/context.py index c9f42d3aacb58..d8667e84fedff 100644 --- a/python/pyspark/context.py +++ b/python/pyspark/context.py @@ -20,6 +20,7 @@ import sys from threading import Lock from tempfile import NamedTemporaryFile +from collections import namedtuple from pyspark import accumulators from pyspark.accumulators import Accumulator @@ -27,8 +28,10 @@ from pyspark.conf import SparkConf from pyspark.files import SparkFiles from pyspark.java_gateway import launch_gateway -from pyspark.serializers import PickleSerializer, BatchedSerializer, UTF8Deserializer +from pyspark.serializers import PickleSerializer, BatchedSerializer, UTF8Deserializer, \ + PairDeserializer from pyspark.storagelevel import StorageLevel +from pyspark import rdd from pyspark.rdd import RDD from py4j.java_collections import ListConverter @@ -83,6 +86,11 @@ def __init__(self, master=None, appName=None, sparkHome=None, pyFiles=None, ... ValueError:... """ + if rdd._extract_concise_traceback() is not None: + self._callsite = rdd._extract_concise_traceback() + else: + tempNamedTuple = namedtuple("Callsite", "function file linenum") + self._callsite = tempNamedTuple(function=None, file=None, linenum=None) SparkContext._ensure_initialized(self, gateway=gateway) self.environment = environment or {} @@ -169,7 +177,14 @@ def _ensure_initialized(cls, instance=None, gateway=None): if instance: if SparkContext._active_spark_context and SparkContext._active_spark_context != instance: - raise ValueError("Cannot run multiple SparkContexts at once") + currentMaster = SparkContext._active_spark_context.master + currentAppName = SparkContext._active_spark_context.appName + callsite = SparkContext._active_spark_context._callsite + + # Raise error if there is already a running Spark context + raise ValueError("Cannot run multiple SparkContexts at once; existing SparkContext(app=%s, master=%s)" \ + " created by %s at %s:%s " \ + % (currentAppName, currentMaster, callsite.function, callsite.file, callsite.linenum)) else: SparkContext._active_spark_context = instance @@ -243,6 +258,45 @@ def textFile(self, name, minSplits=None): return RDD(self._jsc.textFile(name, minSplits), self, UTF8Deserializer()) + def wholeTextFiles(self, path): + """ + Read a directory of text files from HDFS, a local file system + (available on all nodes), or any Hadoop-supported file system + URI. Each file is read as a single record and returned in a + key-value pair, where the key is the path of each file, the + value is the content of each file. + + For example, if you have the following files:: + + hdfs://a-hdfs-path/part-00000 + hdfs://a-hdfs-path/part-00001 + ... + hdfs://a-hdfs-path/part-nnnnn + + Do C{rdd = sparkContext.wholeTextFiles("hdfs://a-hdfs-path")}, + then C{rdd} contains:: + + (a-hdfs-path/part-00000, its content) + (a-hdfs-path/part-00001, its content) + ... + (a-hdfs-path/part-nnnnn, its content) + + NOTE: Small files are preferred, as each file will be loaded + fully in memory. + + >>> dirPath = os.path.join(tempdir, "files") + >>> os.mkdir(dirPath) + >>> with open(os.path.join(dirPath, "1.txt"), "w") as file1: + ... file1.write("1") + >>> with open(os.path.join(dirPath, "2.txt"), "w") as file2: + ... file2.write("2") + >>> textFiles = sc.wholeTextFiles(dirPath) + >>> sorted(textFiles.collect()) + [(u'.../1.txt', u'1'), (u'.../2.txt', u'2')] + """ + return RDD(self._jsc.wholeTextFiles(path), self, + PairDeserializer(UTF8Deserializer(), UTF8Deserializer())) + def _checkpointFile(self, name, input_deserializer): jrdd = self._jsc.checkpointFile(name) return RDD(jrdd, self, input_deserializer) @@ -369,8 +423,11 @@ def _getJavaStorageLevel(self, storageLevel): raise Exception("storageLevel must be of type pyspark.StorageLevel") newStorageLevel = self._jvm.org.apache.spark.storage.StorageLevel - return newStorageLevel(storageLevel.useDisk, storageLevel.useMemory, - storageLevel.deserialized, storageLevel.replication) + return newStorageLevel(storageLevel.useDisk, + storageLevel.useMemory, + storageLevel.useOffHeap, + storageLevel.deserialized, + storageLevel.replication) def setJobGroup(self, groupId, description): """ @@ -411,7 +468,7 @@ def _test(): globs['sc'] = SparkContext('local[4]', 'PythonTest', batchSize=2) globs['tempdir'] = tempfile.mkdtemp() atexit.register(lambda: shutil.rmtree(globs['tempdir'])) - (failure_count, test_count) = doctest.testmod(globs=globs) + (failure_count, test_count) = doctest.testmod(globs=globs, optionflags=doctest.ELLIPSIS) globs['sc'].stop() if failure_count: exit(-1) diff --git a/python/pyspark/join.py b/python/pyspark/join.py index 5f4294fb1b777..6f94d26ef86a9 100644 --- a/python/pyspark/join.py +++ b/python/pyspark/join.py @@ -31,11 +31,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ +from pyspark.resultiterable import ResultIterable def _do_python_join(rdd, other, numPartitions, dispatch): vs = rdd.map(lambda (k, v): (k, (1, v))) ws = other.map(lambda (k, v): (k, (2, v))) - return vs.union(ws).groupByKey(numPartitions).flatMapValues(dispatch) + return vs.union(ws).groupByKey(numPartitions).flatMapValues(lambda x : dispatch(x.__iter__())) def python_join(rdd, other, numPartitions): @@ -88,5 +89,5 @@ def dispatch(seq): vbuf.append(v) elif n == 2: wbuf.append(v) - return (vbuf, wbuf) + return (ResultIterable(vbuf), ResultIterable(wbuf)) return vs.union(ws).groupByKey(numPartitions).mapValues(dispatch) diff --git a/python/pyspark/mllib/__init__.py b/python/pyspark/mllib/__init__.py index b420d7a7f23ba..538ff26ce7c33 100644 --- a/python/pyspark/mllib/__init__.py +++ b/python/pyspark/mllib/__init__.py @@ -19,11 +19,7 @@ Python bindings for MLlib. """ -# MLlib currently needs Python 2.7+ and NumPy 1.7+, so complain if lower - -import sys -if sys.version_info[0:2] < (2, 7): - raise Exception("MLlib requires Python 2.7+") +# MLlib currently needs and NumPy 1.7+, so complain if lower import numpy if numpy.version.version < '1.7': diff --git a/python/pyspark/mllib/_common.py b/python/pyspark/mllib/_common.py index 20a0e309d1494..7ef251d24c77e 100644 --- a/python/pyspark/mllib/_common.py +++ b/python/pyspark/mllib/_common.py @@ -15,8 +15,9 @@ # limitations under the License. # -from numpy import ndarray, copyto, float64, int64, int32, ones, array_equal, array, dot, shape +from numpy import ndarray, copyto, float64, int64, int32, ones, array_equal, array, dot, shape, complex, issubdtype from pyspark import SparkContext, RDD +import numpy as np from pyspark.serializers import Serializer import struct @@ -47,13 +48,22 @@ def _deserialize_byte_array(shape, ba, offset): return ar.copy() def _serialize_double_vector(v): - """Serialize a double vector into a mutually understood format.""" + """Serialize a double vector into a mutually understood format. + + >>> x = array([1,2,3]) + >>> y = _deserialize_double_vector(_serialize_double_vector(x)) + >>> array_equal(y, array([1.0, 2.0, 3.0])) + True + """ if type(v) != ndarray: raise TypeError("_serialize_double_vector called on a %s; " "wanted ndarray" % type(v)) + """complex is only datatype that can't be converted to float64""" + if issubdtype(v.dtype, complex): + raise TypeError("_serialize_double_vector called on a %s; " + "wanted ndarray" % type(v)) if v.dtype != float64: - raise TypeError("_serialize_double_vector called on an ndarray of %s; " - "wanted ndarray of float64" % v.dtype) + v = v.astype(float64) if v.ndim != 1: raise TypeError("_serialize_double_vector called on a %ddarray; " "wanted a 1darray" % v.ndim) diff --git a/python/pyspark/mllib/classification.py b/python/pyspark/mllib/classification.py index 19b90dfd6e167..d2f9cdb3f4298 100644 --- a/python/pyspark/mllib/classification.py +++ b/python/pyspark/mllib/classification.py @@ -87,18 +87,19 @@ class NaiveBayesModel(object): >>> data = array([0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 1.0, 1.0, 0.0]).reshape(3,3) >>> model = NaiveBayes.train(sc.parallelize(data)) >>> model.predict(array([0.0, 1.0])) - 0 + 0.0 >>> model.predict(array([1.0, 0.0])) - 1 + 1.0 """ - def __init__(self, pi, theta): + def __init__(self, labels, pi, theta): + self.labels = labels self.pi = pi self.theta = theta def predict(self, x): """Return the most likely class for a data vector x""" - return numpy.argmax(self.pi + dot(x, self.theta)) + return self.labels[numpy.argmax(self.pi + dot(x, self.theta))] class NaiveBayes(object): @classmethod @@ -122,7 +123,8 @@ def train(cls, data, lambda_=1.0): ans = sc._jvm.PythonMLLibAPI().trainNaiveBayes(dataBytes._jrdd, lambda_) return NaiveBayesModel( _deserialize_double_vector(ans[0]), - _deserialize_double_matrix(ans[1])) + _deserialize_double_vector(ans[1]), + _deserialize_double_matrix(ans[2])) def _test(): diff --git a/python/pyspark/rdd.py b/python/pyspark/rdd.py index e72f57d9d1ab0..91fc7e637e2c6 100644 --- a/python/pyspark/rdd.py +++ b/python/pyspark/rdd.py @@ -18,6 +18,7 @@ from base64 import standard_b64encode as b64enc import copy from collections import defaultdict +from collections import namedtuple from itertools import chain, ifilter, imap import operator import os @@ -28,26 +29,31 @@ from tempfile import NamedTemporaryFile from threading import Thread import warnings +import heapq from pyspark.serializers import NoOpSerializer, CartesianDeserializer, \ - BatchedSerializer, CloudPickleSerializer, pack_long + BatchedSerializer, CloudPickleSerializer, PairDeserializer, pack_long from pyspark.join import python_join, python_left_outer_join, \ python_right_outer_join, python_cogroup from pyspark.statcounter import StatCounter from pyspark.rddsampler import RDDSampler +from pyspark.storagelevel import StorageLevel +from pyspark.resultiterable import ResultIterable from py4j.java_collections import ListConverter, MapConverter - __all__ = ["RDD"] + def _extract_concise_traceback(): + """ + This function returns the traceback info for a callsite, returns a dict + with function name, file name and line number + """ tb = traceback.extract_stack() + callsite = namedtuple("Callsite", "function file linenum") if len(tb) == 0: - return "I'm lost!" - # HACK: This function is in a file called 'rdd.py' in the top level of - # everything PySpark. Just trim off the directory name and assume - # everything in that tree is PySpark guts. + return None file, line, module, what = tb[len(tb) - 1] sparkpath = os.path.dirname(file) first_spark_frame = len(tb) - 1 @@ -58,16 +64,20 @@ def _extract_concise_traceback(): break if first_spark_frame == 0: file, line, fun, what = tb[0] - return "%s at %s:%d" % (fun, file, line) + return callsite(function=fun, file=file, linenum=line) sfile, sline, sfun, swhat = tb[first_spark_frame] ufile, uline, ufun, uwhat = tb[first_spark_frame-1] - return "%s at %s:%d" % (sfun, ufile, uline) + return callsite(function=sfun, file=ufile, linenum=uline) _spark_stack_depth = 0 class _JavaStackTrace(object): def __init__(self, sc): - self._traceback = _extract_concise_traceback() + tb = _extract_concise_traceback() + if tb is not None: + self._traceback = "%s at %s:%s" % (tb.function, tb.file, tb.linenum) + else: + self._traceback = "Error! Could not extract traceback info" self._context = sc def __enter__(self): @@ -82,6 +92,73 @@ def __exit__(self, type, value, tb): if _spark_stack_depth == 0: self._context._jsc.setCallSite(None) +class MaxHeapQ(object): + """ + An implementation of MaxHeap. + >>> import pyspark.rdd + >>> heap = pyspark.rdd.MaxHeapQ(5) + >>> [heap.insert(i) for i in range(10)] + [None, None, None, None, None, None, None, None, None, None] + >>> sorted(heap.getElements()) + [0, 1, 2, 3, 4] + >>> heap = pyspark.rdd.MaxHeapQ(5) + >>> [heap.insert(i) for i in range(9, -1, -1)] + [None, None, None, None, None, None, None, None, None, None] + >>> sorted(heap.getElements()) + [0, 1, 2, 3, 4] + >>> heap = pyspark.rdd.MaxHeapQ(1) + >>> [heap.insert(i) for i in range(9, -1, -1)] + [None, None, None, None, None, None, None, None, None, None] + >>> heap.getElements() + [0] + """ + + def __init__(self, maxsize): + # we start from q[1], this makes calculating children as trivial as 2 * k + self.q = [0] + self.maxsize = maxsize + + def _swim(self, k): + while (k > 1) and (self.q[k/2] < self.q[k]): + self._swap(k, k/2) + k = k/2 + + def _swap(self, i, j): + t = self.q[i] + self.q[i] = self.q[j] + self.q[j] = t + + def _sink(self, k): + N = self.size() + while 2 * k <= N: + j = 2 * k + # Here we test if both children are greater than parent + # if not swap with larger one. + if j < N and self.q[j] < self.q[j + 1]: + j = j + 1 + if(self.q[k] > self.q[j]): + break + self._swap(k, j) + k = j + + def size(self): + return len(self.q) - 1 + + def insert(self, value): + if (self.size()) < self.maxsize: + self.q.append(value) + self._swim(self.size()) + else: + self._replaceRoot(value) + + def getElements(self): + return self.q[1:] + + def _replaceRoot(self, value): + if(self.q[1] > value): + self.q[1] = value + self._sink(1) + class RDD(object): """ A Resilient Distributed Dataset (RDD), the basic abstraction in Spark. @@ -171,6 +248,10 @@ def getCheckpointFile(self): def map(self, f, preservesPartitioning=False): """ Return a new RDD by applying a function to each element of this RDD. + + >>> rdd = sc.parallelize(["b", "a", "c"]) + >>> sorted(rdd.map(lambda x: (x, 1)).collect()) + [('a', 1), ('b', 1), ('c', 1)] """ def func(split, iterator): return imap(f, iterator) return PipelinedRDD(self, func, preservesPartitioning) @@ -259,6 +340,7 @@ def sample(self, withReplacement, fraction, seed): >>> sc.parallelize(range(0, 100)).sample(False, 0.1, 2).collect() #doctest: +SKIP [2, 3, 20, 21, 24, 41, 42, 66, 67, 89, 90, 98] """ + assert fraction >= 0.0, "Invalid fraction value: %s" % fraction return self.mapPartitionsWithIndex(RDDSampler(withReplacement, fraction, seed).func, True) # this is ported from scala/spark/RDD.scala @@ -279,6 +361,9 @@ def takeSample(self, withReplacement, num, seed): if (num < 0): raise ValueError + if (initialCount == 0): + return list() + if initialCount > sys.maxint - 1: maxSelected = sys.maxint - 1 else: @@ -558,7 +643,26 @@ def func(iterator): return reduce(op, vals, zeroValue) # TODO: aggregate + + def max(self): + """ + Find the maximum item in this RDD. + + >>> sc.parallelize([1.0, 5.0, 43.0, 10.0]).max() + 43.0 + """ + return self.reduce(max) + + def min(self): + """ + Find the maximum item in this RDD. + + >>> sc.parallelize([1.0, 5.0, 43.0, 10.0]).min() + 1.0 + """ + return self.reduce(min) + def sum(self): """ Add up the elements in this RDD. @@ -652,6 +756,60 @@ def mergeMaps(m1, m2): m1[k] += v return m1 return self.mapPartitions(countPartition).reduce(mergeMaps) + + def top(self, num): + """ + Get the top N elements from a RDD. + + Note: It returns the list sorted in descending order. + >>> sc.parallelize([10, 4, 2, 12, 3]).top(1) + [12] + >>> sc.parallelize([2, 3, 4, 5, 6], 2).cache().top(2) + [6, 5] + """ + def topIterator(iterator): + q = [] + for k in iterator: + if len(q) < num: + heapq.heappush(q, k) + else: + heapq.heappushpop(q, k) + yield q + + def merge(a, b): + return next(topIterator(a + b)) + + return sorted(self.mapPartitions(topIterator).reduce(merge), reverse=True) + + def takeOrdered(self, num, key=None): + """ + Get the N elements from a RDD ordered in ascending order or as specified + by the optional key function. + + >>> sc.parallelize([10, 1, 2, 9, 3, 4, 5, 6, 7]).takeOrdered(6) + [1, 2, 3, 4, 5, 6] + >>> sc.parallelize([10, 1, 2, 9, 3, 4, 5, 6, 7], 2).takeOrdered(6, key=lambda x: -x) + [10, 9, 7, 6, 5, 4] + """ + + def topNKeyedElems(iterator, key_=None): + q = MaxHeapQ(num) + for k in iterator: + if key_ != None: + k = (key_(k), k) + q.insert(k) + yield q.getElements() + + def unKey(x, key_=None): + if key_ != None: + x = [i[1] for i in x] + return x + + def merge(a, b): + return next(topNKeyedElems(a + b)) + result = self.mapPartitions(lambda i: topNKeyedElems(i, key)).reduce(merge) + return sorted(unKey(result, key), key=key) + def take(self, num): """ @@ -939,7 +1097,21 @@ def _mergeCombiners(iterator): combiners[k] = mergeCombiners(combiners[k], v) return combiners.iteritems() return shuffled.mapPartitions(_mergeCombiners) + + def foldByKey(self, zeroValue, func, numPartitions=None): + """ + Merge the values for each key using an associative function "func" and a neutral "zeroValue" + which may be added to the result an arbitrary number of times, and must not change + the result (e.g., 0 for addition, or 1 for multiplication.). + >>> rdd = sc.parallelize([("a", 1), ("b", 1), ("a", 1)]) + >>> from operator import add + >>> rdd.foldByKey(0, add).collect() + [('a', 2), ('b', 1)] + """ + return self.combineByKey(lambda v: func(zeroValue, v), func, func, numPartitions) + + # TODO: support variant with custom partitioner def groupByKey(self, numPartitions=None): """ @@ -947,7 +1119,7 @@ def groupByKey(self, numPartitions=None): Hash-partitions the resulting RDD with into numPartitions partitions. >>> x = sc.parallelize([("a", 1), ("b", 1), ("a", 1)]) - >>> sorted(x.groupByKey().collect()) + >>> map((lambda (x,y): (x, list(y))), sorted(x.groupByKey().collect())) [('a', [1, 1]), ('b', [1])] """ @@ -962,7 +1134,7 @@ def mergeCombiners(a, b): return a + b return self.combineByKey(createCombiner, mergeValue, mergeCombiners, - numPartitions) + numPartitions).mapValues(lambda x: ResultIterable(x)) # TODO: add tests def flatMapValues(self, f): @@ -1009,7 +1181,7 @@ def cogroup(self, other, numPartitions=None): >>> x = sc.parallelize([("a", 1), ("b", 4)]) >>> y = sc.parallelize([("a", 2)]) - >>> sorted(x.cogroup(y).collect()) + >>> map((lambda (x,y): (x, (list(y[0]), list(y[1])))), sorted(list(x.cogroup(y).collect()))) [('a', ([1], [2])), ('b', ([4], []))] """ return python_cogroup(self, other, numPartitions) @@ -1046,7 +1218,7 @@ def keyBy(self, f): >>> x = sc.parallelize(range(0,3)).keyBy(lambda x: x*x) >>> y = sc.parallelize(zip(range(0,5), range(0,5))) - >>> sorted(x.cogroup(y).collect()) + >>> map((lambda (x,y): (x, (list(y[0]), (list(y[1]))))), sorted(x.cogroup(y).collect())) [(0, ([0], [0])), (1, ([1], [1])), (2, ([], [2])), (3, ([], [3])), (4, ([2], [4]))] """ return self.map(lambda x: (f(x), x)) @@ -1081,12 +1253,71 @@ def coalesce(self, numPartitions, shuffle=False): jrdd = self._jrdd.coalesce(numPartitions) return RDD(jrdd, self.ctx, self._jrdd_deserializer) + def zip(self, other): + """ + Zips this RDD with another one, returning key-value pairs with the first element in each RDD + second element in each RDD, etc. Assumes that the two RDDs have the same number of + partitions and the same number of elements in each partition (e.g. one was made through + a map on the other). + + >>> x = sc.parallelize(range(0,5)) + >>> y = sc.parallelize(range(1000, 1005)) + >>> x.zip(y).collect() + [(0, 1000), (1, 1001), (2, 1002), (3, 1003), (4, 1004)] + """ + pairRDD = self._jrdd.zip(other._jrdd) + deserializer = PairDeserializer(self._jrdd_deserializer, + other._jrdd_deserializer) + return RDD(pairRDD, self.ctx, deserializer) + + def name(self): + """ + Return the name of this RDD. + """ + name_ = self._jrdd.name() + if not name_: + return None + return name_.encode('utf-8') + + def setName(self, name): + """ + Assign a name to this RDD. + >>> rdd1 = sc.parallelize([1,2]) + >>> rdd1.setName('RDD1') + >>> rdd1.name() + 'RDD1' + """ + self._jrdd.setName(name) + + def toDebugString(self): + """ + A description of this RDD and its recursive dependencies for debugging. + """ + debug_string = self._jrdd.toDebugString() + if not debug_string: + return None + return debug_string.encode('utf-8') + + def getStorageLevel(self): + """ + Get the RDD's current storage level. + >>> rdd1 = sc.parallelize([1,2]) + >>> rdd1.getStorageLevel() + StorageLevel(False, False, False, False, 1) + """ + java_storage_level = self._jrdd.getStorageLevel() + storage_level = StorageLevel(java_storage_level.useDisk(), + java_storage_level.useMemory(), + java_storage_level.useOffHeap(), + java_storage_level.deserialized(), + java_storage_level.replication()) + return storage_level + # TODO: `lookup` is disabled because we can't make direct comparisons based # on the key; we need to compare the hash of the key to the hash of the # keys in the pairs. This could be an expensive operation, since those # hashes aren't retained. - class PipelinedRDD(RDD): """ Pipelined maps: diff --git a/python/pyspark/resultiterable.py b/python/pyspark/resultiterable.py new file mode 100644 index 0000000000000..7f418f8d2e29a --- /dev/null +++ b/python/pyspark/resultiterable.py @@ -0,0 +1,33 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +__all__ = ["ResultIterable"] + +import collections + +class ResultIterable(collections.Iterable): + """ + A special result iterable. This is used because the standard iterator can not be pickled + """ + def __init__(self, data): + self.data = data + self.index = 0 + self.maxindex = len(data) + def __iter__(self): + return iter(self.data) + def __len__(self): + return len(self.data) diff --git a/python/pyspark/serializers.py b/python/pyspark/serializers.py index 8c6ad79059c23..b253807974a2e 100644 --- a/python/pyspark/serializers.py +++ b/python/pyspark/serializers.py @@ -64,6 +64,7 @@ from itertools import chain, izip, product import marshal import struct +import sys from pyspark import cloudpickle @@ -113,6 +114,11 @@ class FramedSerializer(Serializer): where C{length} is a 32-bit integer and data is C{length} bytes. """ + def __init__(self): + # On Python 2.6, we can't write bytearrays to streams, so we need to convert them + # to strings first. Check if the version number is that old. + self._only_write_strings = sys.version_info[0:2] <= (2, 6) + def dump_stream(self, iterator, stream): for obj in iterator: self._write_with_length(obj, stream) @@ -127,7 +133,10 @@ def load_stream(self, stream): def _write_with_length(self, obj, stream): serialized = self.dumps(obj) write_int(len(serialized), stream) - stream.write(serialized) + if self._only_write_strings: + stream.write(str(serialized)) + else: + stream.write(serialized) def _read_with_length(self, stream): length = read_int(stream) @@ -204,7 +213,7 @@ def __init__(self, key_ser, val_ser): self.key_ser = key_ser self.val_ser = val_ser - def load_stream(self, stream): + def prepare_keys_values(self, stream): key_stream = self.key_ser._load_stream_without_unbatching(stream) val_stream = self.val_ser._load_stream_without_unbatching(stream) key_is_batched = isinstance(self.key_ser, BatchedSerializer) @@ -212,6 +221,10 @@ def load_stream(self, stream): for (keys, vals) in izip(key_stream, val_stream): keys = keys if key_is_batched else [keys] vals = vals if val_is_batched else [vals] + yield (keys, vals) + + def load_stream(self, stream): + for (keys, vals) in self.prepare_keys_values(stream): for pair in product(keys, vals): yield pair @@ -224,6 +237,29 @@ def __str__(self): (str(self.key_ser), str(self.val_ser)) +class PairDeserializer(CartesianDeserializer): + """ + Deserializes the JavaRDD zip() of two PythonRDDs. + """ + + def __init__(self, key_ser, val_ser): + self.key_ser = key_ser + self.val_ser = val_ser + + def load_stream(self, stream): + for (keys, vals) in self.prepare_keys_values(stream): + for pair in izip(keys, vals): + yield pair + + def __eq__(self, other): + return isinstance(other, PairDeserializer) and \ + self.key_ser == other.key_ser and self.val_ser == other.val_ser + + def __str__(self): + return "PairDeserializer<%s, %s>" % \ + (str(self.key_ser), str(self.val_ser)) + + class NoOpSerializer(FramedSerializer): def loads(self, obj): return obj @@ -263,7 +299,7 @@ class MarshalSerializer(FramedSerializer): class UTF8Deserializer(Serializer): """ - Deserializes streams written by getBytes. + Deserializes streams written by String.getBytes. """ def loads(self, stream): diff --git a/python/pyspark/shell.py b/python/pyspark/shell.py index 3d779faf1fa44..35e48276e3cb9 100644 --- a/python/pyspark/shell.py +++ b/python/pyspark/shell.py @@ -29,7 +29,7 @@ # this is the equivalent of ADD_JARS add_files = os.environ.get("ADD_FILES").split(',') if os.environ.get("ADD_FILES") != None else None -sc = SparkContext(os.environ.get("MASTER", "local"), "PySparkShell", pyFiles=add_files) +sc = SparkContext(os.environ.get("MASTER", "local[*]"), "PySparkShell", pyFiles=add_files) print """Welcome to ____ __ diff --git a/python/pyspark/statcounter.py b/python/pyspark/statcounter.py index 8e1cbd4ad9856..080325061a697 100644 --- a/python/pyspark/statcounter.py +++ b/python/pyspark/statcounter.py @@ -26,7 +26,9 @@ def __init__(self, values=[]): self.n = 0L # Running count of our values self.mu = 0.0 # Running mean of our values self.m2 = 0.0 # Running variance numerator (sum of (x - mean)^2) - + self.maxValue = float("-inf") + self.minValue = float("inf") + for v in values: self.merge(v) @@ -36,6 +38,11 @@ def merge(self, value): self.n += 1 self.mu += delta / self.n self.m2 += delta * (value - self.mu) + if self.maxValue < value: + self.maxValue = value + if self.minValue > value: + self.minValue = value + return self # Merge another StatCounter into this one, adding up the internal statistics. @@ -49,7 +56,10 @@ def mergeStats(self, other): if self.n == 0: self.mu = other.mu self.m2 = other.m2 - self.n = other.n + self.n = other.n + self.maxValue = other.maxValue + self.minValue = other.minValue + elif other.n != 0: delta = other.mu - self.mu if other.n * 10 < self.n: @@ -58,6 +68,9 @@ def mergeStats(self, other): self.mu = other.mu - (delta * self.n) / (self.n + other.n) else: self.mu = (self.mu * self.n + other.mu * other.n) / (self.n + other.n) + + self.maxValue = max(self.maxValue, other.maxValue) + self.minValue = min(self.minValue, other.minValue) self.m2 += other.m2 + (delta * delta * self.n * other.n) / (self.n + other.n) self.n += other.n @@ -76,6 +89,12 @@ def mean(self): def sum(self): return self.n * self.mu + def min(self): + return self.minValue + + def max(self): + return self.maxValue + # Return the variance of the values. def variance(self): if self.n == 0: @@ -105,5 +124,5 @@ def sampleStdev(self): return math.sqrt(self.sampleVariance()) def __repr__(self): - return "(count: %s, mean: %s, stdev: %s)" % (self.count(), self.mean(), self.stdev()) + return "(count: %s, mean: %s, stdev: %s, max: %s, min: %s)" % (self.count(), self.mean(), self.stdev(), self.max(), self.min()) diff --git a/python/pyspark/storagelevel.py b/python/pyspark/storagelevel.py index b31f4762e69bc..7b6660eab231b 100644 --- a/python/pyspark/storagelevel.py +++ b/python/pyspark/storagelevel.py @@ -25,19 +25,25 @@ class StorageLevel: Also contains static constants for some commonly used storage levels, such as MEMORY_ONLY. """ - def __init__(self, useDisk, useMemory, deserialized, replication = 1): + def __init__(self, useDisk, useMemory, useOffHeap, deserialized, replication = 1): self.useDisk = useDisk self.useMemory = useMemory + self.useOffHeap = useOffHeap self.deserialized = deserialized self.replication = replication -StorageLevel.DISK_ONLY = StorageLevel(True, False, False) -StorageLevel.DISK_ONLY_2 = StorageLevel(True, False, False, 2) -StorageLevel.MEMORY_ONLY = StorageLevel(False, True, True) -StorageLevel.MEMORY_ONLY_2 = StorageLevel(False, True, True, 2) -StorageLevel.MEMORY_ONLY_SER = StorageLevel(False, True, False) -StorageLevel.MEMORY_ONLY_SER_2 = StorageLevel(False, True, False, 2) -StorageLevel.MEMORY_AND_DISK = StorageLevel(True, True, True) -StorageLevel.MEMORY_AND_DISK_2 = StorageLevel(True, True, True, 2) -StorageLevel.MEMORY_AND_DISK_SER = StorageLevel(True, True, False) -StorageLevel.MEMORY_AND_DISK_SER_2 = StorageLevel(True, True, False, 2) + def __repr__(self): + return "StorageLevel(%s, %s, %s, %s, %s)" % ( + self.useDisk, self.useMemory, self.useOffHeap, self.deserialized, self.replication) + +StorageLevel.DISK_ONLY = StorageLevel(True, False, False, False) +StorageLevel.DISK_ONLY_2 = StorageLevel(True, False, False, False, 2) +StorageLevel.MEMORY_ONLY = StorageLevel(False, True, False, True) +StorageLevel.MEMORY_ONLY_2 = StorageLevel(False, True, False, True, 2) +StorageLevel.MEMORY_ONLY_SER = StorageLevel(False, True, False, False) +StorageLevel.MEMORY_ONLY_SER_2 = StorageLevel(False, True, False, False, 2) +StorageLevel.MEMORY_AND_DISK = StorageLevel(True, True, False, True) +StorageLevel.MEMORY_AND_DISK_2 = StorageLevel(True, True, False, True, 2) +StorageLevel.MEMORY_AND_DISK_SER = StorageLevel(True, True, False, False) +StorageLevel.MEMORY_AND_DISK_SER_2 = StorageLevel(True, True, False, False, 2) +StorageLevel.OFF_HEAP = StorageLevel(False, False, True, False, 1) \ No newline at end of file diff --git a/python/run-tests b/python/run-tests index a986ac9380be4..b2b60f08b48e2 100755 --- a/python/run-tests +++ b/python/run-tests @@ -29,8 +29,18 @@ FAILED=0 rm -f unit-tests.log function run_test() { - SPARK_TESTING=0 $FWDIR/bin/pyspark $1 2>&1 | tee -a unit-tests.log + SPARK_TESTING=0 $FWDIR/bin/pyspark $1 2>&1 | tee -a > unit-tests.log FAILED=$((PIPESTATUS[0]||$FAILED)) + + # Fail and exit on the first test failure. + if [[ $FAILED != 0 ]]; then + cat unit-tests.log | grep -v "^[0-9][0-9]*" # filter all lines starting with a number. + echo -en "\033[31m" # Red + echo "Had test failures; see logs." + echo -en "\033[0m" # No color + exit -1 + fi + } run_test "pyspark/rdd.py" @@ -46,12 +56,7 @@ run_test "pyspark/mllib/clustering.py" run_test "pyspark/mllib/recommendation.py" run_test "pyspark/mllib/regression.py" -if [[ $FAILED != 0 ]]; then - echo -en "\033[31m" # Red - echo "Had test failures; see logs." - echo -en "\033[0m" # No color - exit -1 -else +if [[ $FAILED == 0 ]]; then echo -en "\033[32m" # Green echo "Tests passed." echo -en "\033[0m" # No color diff --git a/repl/pom.xml b/repl/pom.xml index fc49c8b811316..78d2fe13c27eb 100644 --- a/repl/pom.xml +++ b/repl/pom.xml @@ -77,6 +77,11 @@ scala-compiler ${scala.version}
      + + org.scala-lang + scala-reflect + ${scala.version} + org.scala-lang jline diff --git a/repl/src/main/scala/org/apache/spark/repl/ExecutorClassLoader.scala b/repl/src/main/scala/org/apache/spark/repl/ExecutorClassLoader.scala index ee972887feda6..a30dcfdcecf27 100644 --- a/repl/src/main/scala/org/apache/spark/repl/ExecutorClassLoader.scala +++ b/repl/src/main/scala/org/apache/spark/repl/ExecutorClassLoader.scala @@ -26,21 +26,23 @@ import org.apache.hadoop.fs.{FileSystem, Path} import org.apache.spark.SparkEnv import org.apache.spark.util.Utils - +import org.apache.spark.util.ParentClassLoader import com.esotericsoftware.reflectasm.shaded.org.objectweb.asm._ import com.esotericsoftware.reflectasm.shaded.org.objectweb.asm.Opcodes._ - /** * A ClassLoader that reads classes from a Hadoop FileSystem or HTTP URI, - * used to load classes defined by the interpreter when the REPL is used - */ -class ExecutorClassLoader(classUri: String, parent: ClassLoader) -extends ClassLoader(parent) { + * used to load classes defined by the interpreter when the REPL is used. + * Allows the user to specify if user class path should be first + */ +class ExecutorClassLoader(classUri: String, parent: ClassLoader, + userClassPathFirst: Boolean) extends ClassLoader { val uri = new URI(classUri) val directory = uri.getPath + val parentLoader = new ParentClassLoader(parent) + // Hadoop FileSystem object for our URI, if it isn't using HTTP var fileSystem: FileSystem = { if (uri.getScheme() == "http") { @@ -49,8 +51,27 @@ extends ClassLoader(parent) { FileSystem.get(uri, new Configuration()) } } - + override def findClass(name: String): Class[_] = { + userClassPathFirst match { + case true => findClassLocally(name).getOrElse(parentLoader.loadClass(name)) + case false => { + try { + parentLoader.loadClass(name) + } catch { + case e: ClassNotFoundException => { + val classOption = findClassLocally(name) + classOption match { + case None => throw new ClassNotFoundException(name, e) + case Some(a) => a + } + } + } + } + } + } + + def findClassLocally(name: String): Option[Class[_]] = { try { val pathInDirectory = name.replace('.', '/') + ".class" val inputStream = { @@ -68,9 +89,9 @@ extends ClassLoader(parent) { } val bytes = readAndTransformClass(name, inputStream) inputStream.close() - return defineClass(name, bytes, 0, bytes.length) + Some(defineClass(name, bytes, 0, bytes.length)) } catch { - case e: Exception => throw new ClassNotFoundException(name, e) + case e: Exception => None } } @@ -124,8 +145,8 @@ extends ClassVisitor(ASM4, cv) { mv.visitVarInsn(ALOAD, 0) // load this mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "", "()V") mv.visitVarInsn(ALOAD, 0) // load this - //val classType = className.replace('.', '/') - //mv.visitFieldInsn(PUTSTATIC, classType, "MODULE$", "L" + classType + ";") + // val classType = className.replace('.', '/') + // mv.visitFieldInsn(PUTSTATIC, classType, "MODULE$", "L" + classType + ";") mv.visitInsn(RETURN) mv.visitMaxs(-1, -1) // stack size and local vars will be auto-computed mv.visitEnd() diff --git a/repl/src/main/scala/org/apache/spark/repl/SparkILoop.scala b/repl/src/main/scala/org/apache/spark/repl/SparkILoop.scala index 9b1da195002c2..5a367b6bb79de 100644 --- a/repl/src/main/scala/org/apache/spark/repl/SparkILoop.scala +++ b/repl/src/main/scala/org/apache/spark/repl/SparkILoop.scala @@ -963,7 +963,7 @@ class SparkILoop(in0: Option[BufferedReader], protected val out: JPrintWriter, case Some(m) => m case None => { val prop = System.getenv("MASTER") - if (prop != null) prop else "local" + if (prop != null) prop else "local[*]" } } master diff --git a/repl/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala b/repl/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala index 3ebf288130fb6..910b31d209e13 100644 --- a/repl/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala +++ b/repl/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala @@ -116,14 +116,14 @@ trait SparkILoopInit { } } - def initializeSpark() { + def initializeSpark() { intp.beQuietDuring { command(""" @transient val sc = org.apache.spark.repl.Main.interp.createSparkContext(); """) command("import org.apache.spark.SparkContext._") } - echo("Spark context available as sc.") + echo("Spark context available as sc.") } // code to be executed only after the interpreter is initialized diff --git a/repl/src/main/scala/org/apache/spark/repl/SparkIMain.scala b/repl/src/main/scala/org/apache/spark/repl/SparkIMain.scala index 90a96ad38381e..fa2f1a88c4eb5 100644 --- a/repl/src/main/scala/org/apache/spark/repl/SparkIMain.scala +++ b/repl/src/main/scala/org/apache/spark/repl/SparkIMain.scala @@ -834,7 +834,7 @@ import org.apache.spark.util.Utils } ((pos, msg)) :: loop(filtered) } - //PRASHANT: This leads to a NoSuchMethodError for _.warnings. Yet to figure out its purpose. + // PRASHANT: This leads to a NoSuchMethodError for _.warnings. Yet to figure out its purpose. // val warnings = loop(run.allConditionalWarnings flatMap (_.warnings)) // if (warnings.nonEmpty) // mostRecentWarnings = warnings diff --git a/repl/src/main/scala/org/apache/spark/repl/SparkJLineReader.scala b/repl/src/main/scala/org/apache/spark/repl/SparkJLineReader.scala index 946e71039088d..0db26c3407dff 100644 --- a/repl/src/main/scala/org/apache/spark/repl/SparkJLineReader.scala +++ b/repl/src/main/scala/org/apache/spark/repl/SparkJLineReader.scala @@ -7,8 +7,10 @@ package org.apache.spark.repl +import scala.reflect.io.{Path, File} import scala.tools.nsc._ import scala.tools.nsc.interpreter._ +import scala.tools.nsc.interpreter.session.JLineHistory.JLineFileHistory import scala.tools.jline.console.ConsoleReader import scala.tools.jline.console.completer._ @@ -25,7 +27,7 @@ class SparkJLineReader(_completion: => Completion) extends InteractiveReader { val consoleReader = new JLineConsoleReader() lazy val completion = _completion - lazy val history: JLineHistory = JLineHistory() + lazy val history: JLineHistory = new SparkJLineHistory private def term = consoleReader.getTerminal() def reset() = term.reset() @@ -78,3 +80,11 @@ class SparkJLineReader(_completion: => Completion) extends InteractiveReader { def readOneLine(prompt: String) = consoleReader readLine prompt def readOneKey(prompt: String) = consoleReader readOneKey prompt } + +/** Changes the default history file to not collide with the scala repl's. */ +class SparkJLineHistory extends JLineFileHistory { + import Properties.userHome + + def defaultFileName = ".spark_history" + override protected lazy val historyFile = File(Path(userHome) / defaultFileName) +} diff --git a/repl/src/test/scala/org/apache/spark/repl/ExecutorClassLoaderSuite.scala b/repl/src/test/scala/org/apache/spark/repl/ExecutorClassLoaderSuite.scala new file mode 100644 index 0000000000000..336df988a1b7f --- /dev/null +++ b/repl/src/test/scala/org/apache/spark/repl/ExecutorClassLoaderSuite.scala @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.repl + +import java.io.File +import java.net.URLClassLoader + +import org.scalatest.BeforeAndAfterAll +import org.scalatest.FunSuite + +import com.google.common.io.Files + +import org.apache.spark.TestUtils + +class ExecutorClassLoaderSuite extends FunSuite with BeforeAndAfterAll { + + val childClassNames = List("ReplFakeClass1", "ReplFakeClass2") + val parentClassNames = List("ReplFakeClass1", "ReplFakeClass2", "ReplFakeClass3") + val tempDir1 = Files.createTempDir() + val tempDir2 = Files.createTempDir() + val url1 = "file://" + tempDir1 + val urls2 = List(tempDir2.toURI.toURL).toArray + + override def beforeAll() { + childClassNames.foreach(TestUtils.createCompiledClass(_, tempDir1, "1")) + parentClassNames.foreach(TestUtils.createCompiledClass(_, tempDir2, "2")) + } + + test("child first") { + val parentLoader = new URLClassLoader(urls2, null) + val classLoader = new ExecutorClassLoader(url1, parentLoader, true) + val fakeClass = classLoader.loadClass("ReplFakeClass2").newInstance() + val fakeClassVersion = fakeClass.toString + assert(fakeClassVersion === "1") + } + + test("parent first") { + val parentLoader = new URLClassLoader(urls2, null) + val classLoader = new ExecutorClassLoader(url1, parentLoader, false) + val fakeClass = classLoader.loadClass("ReplFakeClass1").newInstance() + val fakeClassVersion = fakeClass.toString + assert(fakeClassVersion === "2") + } + + test("child first can fall back") { + val parentLoader = new URLClassLoader(urls2, null) + val classLoader = new ExecutorClassLoader(url1, parentLoader, true) + val fakeClass = classLoader.loadClass("ReplFakeClass3").newInstance() + val fakeClassVersion = fakeClass.toString + assert(fakeClassVersion === "2") + } + + test("child first can fail") { + val parentLoader = new URLClassLoader(urls2, null) + val classLoader = new ExecutorClassLoader(url1, parentLoader, true) + intercept[java.lang.ClassNotFoundException] { + classLoader.loadClass("ReplFakeClassDoesNotExist").newInstance() + } + } + +} diff --git a/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala b/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala index 8203b8f6122e1..4155007c6d337 100644 --- a/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala +++ b/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala @@ -242,4 +242,15 @@ class ReplSuite extends FunSuite { assertContains("res4: Array[Int] = Array(0, 0, 0, 0, 0)", output) } } + + test("collecting objects of class defined in repl") { + val output = runInterpreter("local[2]", + """ + |case class Foo(i: Int) + |val ret = sc.parallelize((1 to 100).map(Foo), 10).collect + """.stripMargin) + assertDoesNotContain("error:", output) + assertDoesNotContain("Exception", output) + assertContains("ret: Array[Foo] = Array(Foo(1),", output) + } } diff --git a/sbin/slaves.sh b/sbin/slaves.sh index a5bc2183d87f3..f89547fef9e46 100755 --- a/sbin/slaves.sh +++ b/sbin/slaves.sh @@ -63,9 +63,7 @@ then shift fi -if [ -f "${SPARK_CONF_DIR}/spark-env.sh" ]; then - . "${SPARK_CONF_DIR}/spark-env.sh" -fi +. "$SPARK_PREFIX/bin/load-spark-env.sh" if [ "$HOSTLIST" = "" ]; then if [ "$SPARK_SLAVES" = "" ]; then diff --git a/sbin/spark-daemon.sh b/sbin/spark-daemon.sh index 2be2b3d7c0933..323f675b17848 100755 --- a/sbin/spark-daemon.sh +++ b/sbin/spark-daemon.sh @@ -86,9 +86,7 @@ spark_rotate_log () fi } -if [ -f "${SPARK_CONF_DIR}/spark-env.sh" ]; then - . "${SPARK_CONF_DIR}/spark-env.sh" -fi +. "$SPARK_PREFIX/bin/load-spark-env.sh" if [ "$SPARK_IDENT_STRING" = "" ]; then export SPARK_IDENT_STRING="$USER" diff --git a/sbin/start-all.sh b/sbin/start-all.sh index 2daf49db359df..5c89ab4d86b3a 100755 --- a/sbin/start-all.sh +++ b/sbin/start-all.sh @@ -24,11 +24,22 @@ sbin=`dirname "$0"` sbin=`cd "$sbin"; pwd` +TACHYON_STR="" + +while (( "$#" )); do +case $1 in + --with-tachyon) + TACHYON_STR="--with-tachyon" + ;; + esac +shift +done + # Load the Spark configuration . "$sbin/spark-config.sh" # Start Master -"$sbin"/start-master.sh +"$sbin"/start-master.sh $TACHYON_STR # Start Workers -"$sbin"/start-slaves.sh +"$sbin"/start-slaves.sh $TACHYON_STR diff --git a/sbin/start-history-server.sh b/sbin/start-history-server.sh new file mode 100755 index 0000000000000..4a90c68763b68 --- /dev/null +++ b/sbin/start-history-server.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Starts the history server on the machine this script is executed on. +# +# Usage: start-history-server.sh [] +# Example: ./start-history-server.sh --dir /tmp/spark-events --port 18080 +# + +sbin=`dirname "$0"` +sbin=`cd "$sbin"; pwd` + +if [ $# -lt 1 ]; then + echo "Usage: ./start-history-server.sh " + echo "Example: ./start-history-server.sh /tmp/spark-events" + exit +fi + +LOG_DIR=$1 + +"$sbin"/spark-daemon.sh start org.apache.spark.deploy.history.HistoryServer 1 --dir "$LOG_DIR" diff --git a/sbin/start-master.sh b/sbin/start-master.sh index ec3dfdb4197ec..c5c02491f78e1 100755 --- a/sbin/start-master.sh +++ b/sbin/start-master.sh @@ -22,11 +22,24 @@ sbin=`dirname "$0"` sbin=`cd "$sbin"; pwd` +START_TACHYON=false + +while (( "$#" )); do +case $1 in + --with-tachyon) + if [ ! -e "$sbin"/../tachyon/bin/tachyon ]; then + echo "Error: --with-tachyon specified, but tachyon not found." + exit -1 + fi + START_TACHYON=true + ;; + esac +shift +done + . "$sbin/spark-config.sh" -if [ -f "${SPARK_CONF_DIR}/spark-env.sh" ]; then - . "${SPARK_CONF_DIR}/spark-env.sh" -fi +. "$SPARK_PREFIX/bin/load-spark-env.sh" if [ "$SPARK_MASTER_PORT" = "" ]; then SPARK_MASTER_PORT=7077 @@ -41,3 +54,9 @@ if [ "$SPARK_MASTER_WEBUI_PORT" = "" ]; then fi "$sbin"/spark-daemon.sh start org.apache.spark.deploy.master.Master 1 --ip $SPARK_MASTER_IP --port $SPARK_MASTER_PORT --webui-port $SPARK_MASTER_WEBUI_PORT + +if [ "$START_TACHYON" == "true" ]; then + "$sbin"/../tachyon/bin/tachyon bootstrap-conf $SPARK_MASTER_IP + "$sbin"/../tachyon/bin/tachyon format -s + "$sbin"/../tachyon/bin/tachyon-start.sh master +fi diff --git a/sbin/start-slaves.sh b/sbin/start-slaves.sh index fd5cdeb1e6788..4912d0c0c7dfd 100755 --- a/sbin/start-slaves.sh +++ b/sbin/start-slaves.sh @@ -20,11 +20,25 @@ sbin=`dirname "$0"` sbin=`cd "$sbin"; pwd` + +START_TACHYON=false + +while (( "$#" )); do +case $1 in + --with-tachyon) + if [ ! -e "$sbin"/../tachyon/bin/tachyon ]; then + echo "Error: --with-tachyon specified, but tachyon not found." + exit -1 + fi + START_TACHYON=true + ;; + esac +shift +done + . "$sbin/spark-config.sh" -if [ -f "${SPARK_CONF_DIR}/spark-env.sh" ]; then - . "${SPARK_CONF_DIR}/spark-env.sh" -fi +. "$SPARK_PREFIX/bin/load-spark-env.sh" # Find the port number for the master if [ "$SPARK_MASTER_PORT" = "" ]; then @@ -35,6 +49,13 @@ if [ "$SPARK_MASTER_IP" = "" ]; then SPARK_MASTER_IP=`hostname` fi +if [ "$START_TACHYON" == "true" ]; then + "$sbin/slaves.sh" cd "$SPARK_HOME" \; "$sbin"/../tachyon/bin/tachyon bootstrap-conf $SPARK_MASTER_IP + + # set -t so we can call sudo + SPARK_SSH_OPTS="-o StrictHostKeyChecking=no -t" "$sbin/slaves.sh" cd "$SPARK_HOME" \; "$sbin/../tachyon/bin/tachyon-start.sh" worker SudoMount \; sleep 1 +fi + # Launch the slaves if [ "$SPARK_WORKER_INSTANCES" = "" ]; then exec "$sbin/slaves.sh" cd "$SPARK_HOME" \; "$sbin/start-slave.sh" 1 spark://$SPARK_MASTER_IP:$SPARK_MASTER_PORT diff --git a/sbin/stop-history-server.sh b/sbin/stop-history-server.sh new file mode 100755 index 0000000000000..c0034ad641cbe --- /dev/null +++ b/sbin/stop-history-server.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Stops the history server on the machine this script is executed on. + +sbin=`dirname "$0"` +sbin=`cd "$sbin"; pwd` + +"$sbin"/spark-daemon.sh stop org.apache.spark.deploy.history.HistoryServer 1 diff --git a/sbin/stop-master.sh b/sbin/stop-master.sh index 2adabd426563c..b6bdaa4db373c 100755 --- a/sbin/stop-master.sh +++ b/sbin/stop-master.sh @@ -25,3 +25,7 @@ sbin=`cd "$sbin"; pwd` . "$sbin/spark-config.sh" "$sbin"/spark-daemon.sh stop org.apache.spark.deploy.master.Master 1 + +if [ -e "$sbin"/../tachyon/bin/tachyon ]; then + "$sbin"/../tachyon/bin/tachyon killAll tachyon.master.Master +fi diff --git a/sbin/stop-slaves.sh b/sbin/stop-slaves.sh index eb803b4900347..7c2201100ef97 100755 --- a/sbin/stop-slaves.sh +++ b/sbin/stop-slaves.sh @@ -22,8 +22,11 @@ sbin=`cd "$sbin"; pwd` . "$sbin/spark-config.sh" -if [ -f "${SPARK_CONF_DIR}/spark-env.sh" ]; then - . "${SPARK_CONF_DIR}/spark-env.sh" +. "$SPARK_PREFIX/bin/load-spark-env.sh" + +# do before the below calls as they exec +if [ -e "$sbin"/../tachyon/bin/tachyon ]; then + "$sbin/slaves.sh" cd "$SPARK_HOME" \; "$sbin"/../tachyon/bin/tachyon killAll tachyon.worker.Worker fi if [ "$SPARK_WORKER_INSTANCES" = "" ]; then diff --git a/sbt/sbt b/sbt/sbt index 3ffa4ed9ab5a7..9de265bd07dcb 100755 --- a/sbt/sbt +++ b/sbt/sbt @@ -1,5 +1,13 @@ #!/usr/bin/env bash +# When creating new tests for Spark SQL Hive, the HADOOP_CLASSPATH must contain the hive jars so +# that we can run Hive to generate the golden answer. This is not required for normal development +# or testing. +for i in $HIVE_HOME/lib/* +do HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$i +done +export HADOOP_CLASSPATH + realpath () { ( TARGET_FILE=$1 diff --git a/scalastyle-config.xml b/scalastyle-config.xml index ee968c53b3e4b..76ba1ecca33ab 100644 --- a/scalastyle-config.xml +++ b/scalastyle-config.xml @@ -140,4 +140,5 @@ + diff --git a/sql/README.md b/sql/README.md new file mode 100644 index 0000000000000..14d5555f0c713 --- /dev/null +++ b/sql/README.md @@ -0,0 +1,80 @@ +Spark SQL +========= + +This module provides support for executing relational queries expressed in either SQL or a LINQ-like Scala DSL. + +Spark SQL is broken up into three subprojects: + - Catalyst (sql/catalyst) - An implementation-agnostic framework for manipulating trees of relational operators and expressions. + - Execution (sql/core) - A query planner / execution engine for translating Catalyst’s logical query plans into Spark RDDs. This component also includes a new public interface, SQLContext, that allows users to execute SQL or LINQ statements against existing RDDs and Parquet files. + - Hive Support (sql/hive) - Includes an extension of SQLContext called HiveContext that allows users to write queries using a subset of HiveQL and access data from a Hive Metastore using Hive SerDes. There are also wrappers that allows users to run queries that include Hive UDFs, UDAFs, and UDTFs. + + +Other dependencies for developers +--------------------------------- +In order to create new hive test cases , you will need to set several environmental variables. + +``` +export HIVE_HOME="/hive/build/dist" +export HIVE_DEV_HOME="/hive/" +export HADOOP_HOME="/hadoop-1.0.4" +``` + +Using the console +================= +An interactive scala console can be invoked by running `sbt/sbt hive/console`. From here you can execute queries and inspect the various stages of query optimization. + +```scala +catalyst$ sbt/sbt hive/console + +[info] Starting scala interpreter... +import org.apache.spark.sql.catalyst.analysis._ +import org.apache.spark.sql.catalyst.dsl._ +import org.apache.spark.sql.catalyst.errors._ +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.rules._ +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.catalyst.util._ +import org.apache.spark.sql.execution +import org.apache.spark.sql.hive._ +import org.apache.spark.sql.hive.TestHive._ +Welcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45). +Type in expressions to have them evaluated. +Type :help for more information. + +scala> val query = sql("SELECT * FROM (SELECT * FROM src) a") +query: org.apache.spark.sql.ExecutedQuery = +SELECT * FROM (SELECT * FROM src) a +=== Query Plan === +Project [key#6:0.0,value#7:0.1] + HiveTableScan [key#6,value#7], (MetastoreRelation default, src, None), None +``` + +Query results are RDDs and can be operated as such. +``` +scala> query.collect() +res8: Array[org.apache.spark.sql.execution.Row] = Array([238,val_238], [86,val_86], [311,val_311]... +``` + +You can also build further queries on top of these RDDs using the query DSL. +``` +scala> query.where('key === 100).toRdd.collect() +res11: Array[org.apache.spark.sql.execution.Row] = Array([100,val_100], [100,val_100]) +``` + +From the console you can even write rules that transform query plans. For example, the above query has redundant project operators that aren't doing anything. This redundancy can be eliminated using the `transform` function that is available on all [`TreeNode`](http://databricks.github.io/catalyst/latest/api/#catalyst.trees.TreeNode) objects. +```scala +scala> query.logicalPlan +res1: catalyst.plans.logical.LogicalPlan = +Project {key#0,value#1} + Project {key#0,value#1} + MetastoreRelation default, src, None + + +scala> query.logicalPlan transform { + | case Project(projectList, child) if projectList == child.output => child + | } +res2: catalyst.plans.logical.LogicalPlan = +Project {key#0,value#1} + MetastoreRelation default, src, None +``` diff --git a/sql/catalyst/pom.xml b/sql/catalyst/pom.xml new file mode 100644 index 0000000000000..9d5c6a857bb00 --- /dev/null +++ b/sql/catalyst/pom.xml @@ -0,0 +1,82 @@ + + + + + 4.0.0 + + org.apache.spark + spark-parent + 1.0.0-SNAPSHOT + ../../pom.xml + + + org.apache.spark + spark-catalyst_2.10 + jar + Spark Project Catalyst + http://spark.apache.org/ + + + + yarn-alpha + + + org.apache.avro + avro + + + + + + + + org.scala-lang + scala-reflect + + + org.apache.spark + spark-core_${scala.binary.version} + ${project.version} + + + com.typesafe + scalalogging-slf4j_${scala.binary.version} + 1.0.1 + + + org.scalatest + scalatest_${scala.binary.version} + test + + + org.scalacheck + scalacheck_${scala.binary.version} + test + + + + target/scala-${scala.binary.version}/classes + target/scala-${scala.binary.version}/test-classes + + + org.scalatest + scalatest-maven-plugin + + + + diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala new file mode 100644 index 0000000000000..446d0e0bd7f54 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +import java.sql.Timestamp + +import org.apache.spark.sql.catalyst.expressions.Attribute +import org.apache.spark.sql.catalyst.expressions.AttributeReference +import org.apache.spark.sql.catalyst.plans.logical.LocalRelation +import org.apache.spark.sql.catalyst.types._ + +/** + * Provides experimental support for generating catalyst schemas for scala objects. + */ +object ScalaReflection { + import scala.reflect.runtime.universe._ + + /** Returns a Sequence of attributes for the given case class type. */ + def attributesFor[T: TypeTag]: Seq[Attribute] = schemaFor[T] match { + case s: StructType => + s.fields.map(f => AttributeReference(f.name, f.dataType, nullable = true)()) + } + + /** Returns a catalyst DataType for the given Scala Type using reflection. */ + def schemaFor[T: TypeTag]: DataType = schemaFor(typeOf[T]) + + /** Returns a catalyst DataType for the given Scala Type using reflection. */ + def schemaFor(tpe: `Type`): DataType = tpe match { + case t if t <:< typeOf[Product] => + val params = t.member("": TermName).asMethod.paramss + StructType( + params.head.map(p => StructField(p.name.toString, schemaFor(p.typeSignature), true))) + // Need to decide if we actually need a special type here. + case t if t <:< typeOf[Array[Byte]] => BinaryType + case t if t <:< typeOf[Array[_]] => + sys.error(s"Only Array[Byte] supported now, use Seq instead of $t") + case t if t <:< typeOf[Seq[_]] => + val TypeRef(_, _, Seq(elementType)) = t + ArrayType(schemaFor(elementType)) + case t if t <:< typeOf[Map[_,_]] => + val TypeRef(_, _, Seq(keyType, valueType)) = t + MapType(schemaFor(keyType), schemaFor(valueType)) + case t if t <:< typeOf[String] => StringType + case t if t <:< typeOf[Timestamp] => TimestampType + case t if t <:< typeOf[BigDecimal] => DecimalType + case t if t <:< definitions.IntTpe => IntegerType + case t if t <:< definitions.LongTpe => LongType + case t if t <:< definitions.DoubleTpe => DoubleType + case t if t <:< definitions.FloatTpe => FloatType + case t if t <:< definitions.ShortTpe => ShortType + case t if t <:< definitions.ByteTpe => ByteType + case t if t <:< definitions.BooleanTpe => BooleanType + } + + implicit class CaseClassRelation[A <: Product : TypeTag](data: Seq[A]) { + + /** + * Implicitly added to Sequences of case class objects. Returns a catalyst logical relation + * for the the data in the sequence. + */ + def asRelation: LocalRelation = { + val output = attributesFor[A] + LocalRelation(output, data) + } + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala new file mode 100644 index 0000000000000..5b6aea81cb7d1 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala @@ -0,0 +1,354 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +import scala.util.parsing.combinator.lexical.StdLexical +import scala.util.parsing.combinator.syntactical.StandardTokenParsers +import scala.util.parsing.input.CharArrayReader.EofCh + +import org.apache.spark.sql.catalyst.analysis._ +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans._ +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.types._ + +/** + * A very simple SQL parser. Based loosely on: + * https://github.com/stephentu/scala-sql-parser/blob/master/src/main/scala/parser.scala + * + * Limitations: + * - Only supports a very limited subset of SQL. + * - Keywords must be capital. + * + * This is currently included mostly for illustrative purposes. Users wanting more complete support + * for a SQL like language should checkout the HiveQL support in the sql/hive sub-project. + */ +class SqlParser extends StandardTokenParsers { + def apply(input: String): LogicalPlan = { + phrase(query)(new lexical.Scanner(input)) match { + case Success(r, x) => r + case x => sys.error(x.toString) + } + } + + protected case class Keyword(str: String) + + protected implicit def asParser(k: Keyword): Parser[String] = + allCaseVersions(k.str).map(x => x : Parser[String]).reduce(_ | _) + + protected class SqlLexical extends StdLexical { + case class FloatLit(chars: String) extends Token { + override def toString = chars + } + override lazy val token: Parser[Token] = ( + identChar ~ rep( identChar | digit ) ^^ + { case first ~ rest => processIdent(first :: rest mkString "") } + | rep1(digit) ~ opt('.' ~> rep(digit)) ^^ { + case i ~ None => NumericLit(i mkString "") + case i ~ Some(d) => FloatLit(i.mkString("") + "." + d.mkString("")) + } + | '\'' ~ rep( chrExcept('\'', '\n', EofCh) ) ~ '\'' ^^ + { case '\'' ~ chars ~ '\'' => StringLit(chars mkString "") } + | '\"' ~ rep( chrExcept('\"', '\n', EofCh) ) ~ '\"' ^^ + { case '\"' ~ chars ~ '\"' => StringLit(chars mkString "") } + | EofCh ^^^ EOF + | '\'' ~> failure("unclosed string literal") + | '\"' ~> failure("unclosed string literal") + | delim + | failure("illegal character") + ) + + override def identChar = letter | elem('.') | elem('_') + + override def whitespace: Parser[Any] = rep( + whitespaceChar + | '/' ~ '*' ~ comment + | '/' ~ '/' ~ rep( chrExcept(EofCh, '\n') ) + | '#' ~ rep( chrExcept(EofCh, '\n') ) + | '-' ~ '-' ~ rep( chrExcept(EofCh, '\n') ) + | '/' ~ '*' ~ failure("unclosed comment") + ) + } + + override val lexical = new SqlLexical + + protected val ALL = Keyword("ALL") + protected val AND = Keyword("AND") + protected val AS = Keyword("AS") + protected val ASC = Keyword("ASC") + protected val AVG = Keyword("AVG") + protected val BY = Keyword("BY") + protected val CAST = Keyword("CAST") + protected val COUNT = Keyword("COUNT") + protected val DESC = Keyword("DESC") + protected val DISTINCT = Keyword("DISTINCT") + protected val FALSE = Keyword("FALSE") + protected val FIRST = Keyword("FIRST") + protected val FROM = Keyword("FROM") + protected val FULL = Keyword("FULL") + protected val GROUP = Keyword("GROUP") + protected val HAVING = Keyword("HAVING") + protected val IF = Keyword("IF") + protected val IN = Keyword("IN") + protected val INNER = Keyword("INNER") + protected val INSERT = Keyword("INSERT") + protected val INTO = Keyword("INTO") + protected val IS = Keyword("IS") + protected val JOIN = Keyword("JOIN") + protected val LEFT = Keyword("LEFT") + protected val LIMIT = Keyword("LIMIT") + protected val NOT = Keyword("NOT") + protected val NULL = Keyword("NULL") + protected val ON = Keyword("ON") + protected val OR = Keyword("OR") + protected val OVERWRITE = Keyword("OVERWRITE") + protected val LIKE = Keyword("LIKE") + protected val RLIKE = Keyword("RLIKE") + protected val REGEXP = Keyword("REGEXP") + protected val ORDER = Keyword("ORDER") + protected val OUTER = Keyword("OUTER") + protected val RIGHT = Keyword("RIGHT") + protected val SELECT = Keyword("SELECT") + protected val STRING = Keyword("STRING") + protected val SUM = Keyword("SUM") + protected val TRUE = Keyword("TRUE") + protected val UNION = Keyword("UNION") + protected val WHERE = Keyword("WHERE") + + // Use reflection to find the reserved words defined in this class. + protected val reservedWords = + this.getClass + .getMethods + .filter(_.getReturnType == classOf[Keyword]) + .map(_.invoke(this).asInstanceOf[Keyword]) + + /** Generate all variations of upper and lower case of a given string */ + private def allCaseVersions(s: String, prefix: String = ""): Stream[String] = { + if (s == "") { + Stream(prefix) + } else { + allCaseVersions(s.tail, prefix + s.head.toLower) ++ + allCaseVersions(s.tail, prefix + s.head.toUpper) + } + } + + lexical.reserved ++= reservedWords.flatMap(w => allCaseVersions(w.str)) + + lexical.delimiters += ( + "@", "*", "+", "-", "<", "=", "<>", "!=", "<=", ">=", ">", "/", "(", ")", + ",", ";", "%", "{", "}", ":" + ) + + protected def assignAliases(exprs: Seq[Expression]): Seq[NamedExpression] = { + exprs.zipWithIndex.map { + case (ne: NamedExpression, _) => ne + case (e, i) => Alias(e, s"c$i")() + } + } + + protected lazy val query: Parser[LogicalPlan] = + select * ( + UNION ~ ALL ^^^ { (q1: LogicalPlan, q2: LogicalPlan) => Union(q1, q2) } | + UNION ~ opt(DISTINCT) ^^^ { (q1: LogicalPlan, q2: LogicalPlan) => Distinct(Union(q1, q2)) } + ) | insert + + protected lazy val select: Parser[LogicalPlan] = + SELECT ~> opt(DISTINCT) ~ projections ~ + opt(from) ~ opt(filter) ~ + opt(grouping) ~ + opt(having) ~ + opt(orderBy) ~ + opt(limit) <~ opt(";") ^^ { + case d ~ p ~ r ~ f ~ g ~ h ~ o ~ l => + val base = r.getOrElse(NoRelation) + val withFilter = f.map(f => Filter(f, base)).getOrElse(base) + val withProjection = + g.map {g => + Aggregate(assignAliases(g), assignAliases(p), withFilter) + }.getOrElse(Project(assignAliases(p), withFilter)) + val withDistinct = d.map(_ => Distinct(withProjection)).getOrElse(withProjection) + val withHaving = h.map(h => Filter(h, withDistinct)).getOrElse(withDistinct) + val withOrder = o.map(o => Sort(o, withHaving)).getOrElse(withHaving) + val withLimit = l.map { l => Limit(l, withOrder) }.getOrElse(withOrder) + withLimit + } + + protected lazy val insert: Parser[LogicalPlan] = + INSERT ~> opt(OVERWRITE) ~ inTo ~ select <~ opt(";") ^^ { + case o ~ r ~ s => + val overwrite: Boolean = o.getOrElse("") == "OVERWRITE" + InsertIntoTable(r, Map[String, Option[String]](), s, overwrite) + } + + protected lazy val projections: Parser[Seq[Expression]] = repsep(projection, ",") + + protected lazy val projection: Parser[Expression] = + expression ~ (opt(AS) ~> opt(ident)) ^^ { + case e ~ None => e + case e ~ Some(a) => Alias(e, a)() + } + + protected lazy val from: Parser[LogicalPlan] = FROM ~> relations + + protected lazy val inTo: Parser[LogicalPlan] = INTO ~> relation + + // Based very loosely on the MySQL Grammar. + // http://dev.mysql.com/doc/refman/5.0/en/join.html + protected lazy val relations: Parser[LogicalPlan] = + relation ~ "," ~ relation ^^ { case r1 ~ _ ~ r2 => Join(r1, r2, Inner, None) } | + relation + + protected lazy val relation: Parser[LogicalPlan] = + joinedRelation | + relationFactor + + protected lazy val relationFactor: Parser[LogicalPlan] = + ident ~ (opt(AS) ~> opt(ident)) ^^ { + case tableName ~ alias => UnresolvedRelation(None, tableName, alias) + } | + "(" ~> query ~ ")" ~ opt(AS) ~ ident ^^ { case s ~ _ ~ _ ~ a => Subquery(a, s) } + + protected lazy val joinedRelation: Parser[LogicalPlan] = + relationFactor ~ opt(joinType) ~ JOIN ~ relationFactor ~ opt(joinConditions) ^^ { + case r1 ~ jt ~ _ ~ r2 ~ cond => + Join(r1, r2, joinType = jt.getOrElse(Inner), cond) + } + + protected lazy val joinConditions: Parser[Expression] = + ON ~> expression + + protected lazy val joinType: Parser[JoinType] = + INNER ^^^ Inner | + LEFT ~ opt(OUTER) ^^^ LeftOuter | + RIGHT ~ opt(OUTER) ^^^ RightOuter | + FULL ~ opt(OUTER) ^^^ FullOuter + + protected lazy val filter: Parser[Expression] = WHERE ~ expression ^^ { case _ ~ e => e } + + protected lazy val orderBy: Parser[Seq[SortOrder]] = + ORDER ~> BY ~> ordering + + protected lazy val ordering: Parser[Seq[SortOrder]] = + rep1sep(singleOrder, ",") | + rep1sep(expression, ",") ~ opt(direction) ^^ { + case exps ~ None => exps.map(SortOrder(_, Ascending)) + case exps ~ Some(d) => exps.map(SortOrder(_, d)) + } + + protected lazy val singleOrder: Parser[SortOrder] = + expression ~ direction ^^ { case e ~ o => SortOrder(e,o) } + + protected lazy val direction: Parser[SortDirection] = + ASC ^^^ Ascending | + DESC ^^^ Descending + + protected lazy val grouping: Parser[Seq[Expression]] = + GROUP ~> BY ~> rep1sep(expression, ",") + + protected lazy val having: Parser[Expression] = + HAVING ~> expression + + protected lazy val limit: Parser[Expression] = + LIMIT ~> expression + + protected lazy val expression: Parser[Expression] = orExpression + + protected lazy val orExpression: Parser[Expression] = + andExpression * (OR ^^^ { (e1: Expression, e2: Expression) => Or(e1,e2) }) + + protected lazy val andExpression: Parser[Expression] = + comparisonExpression * (AND ^^^ { (e1: Expression, e2: Expression) => And(e1,e2) }) + + protected lazy val comparisonExpression: Parser[Expression] = + termExpression ~ "=" ~ termExpression ^^ { case e1 ~ _ ~ e2 => Equals(e1, e2) } | + termExpression ~ "<" ~ termExpression ^^ { case e1 ~ _ ~ e2 => LessThan(e1, e2) } | + termExpression ~ "<=" ~ termExpression ^^ { case e1 ~ _ ~ e2 => LessThanOrEqual(e1, e2) } | + termExpression ~ ">" ~ termExpression ^^ { case e1 ~ _ ~ e2 => GreaterThan(e1, e2) } | + termExpression ~ ">=" ~ termExpression ^^ { case e1 ~ _ ~ e2 => GreaterThanOrEqual(e1, e2) } | + termExpression ~ "!=" ~ termExpression ^^ { case e1 ~ _ ~ e2 => Not(Equals(e1, e2)) } | + termExpression ~ "<>" ~ termExpression ^^ { case e1 ~ _ ~ e2 => Not(Equals(e1, e2)) } | + termExpression ~ RLIKE ~ termExpression ^^ { case e1 ~ _ ~ e2 => RLike(e1, e2) } | + termExpression ~ REGEXP ~ termExpression ^^ { case e1 ~ _ ~ e2 => RLike(e1, e2) } | + termExpression ~ LIKE ~ termExpression ^^ { case e1 ~ _ ~ e2 => Like(e1, e2) } | + termExpression ~ IN ~ "(" ~ rep1sep(termExpression, ",") <~ ")" ^^ { + case e1 ~ _ ~ _ ~ e2 => In(e1, e2) + } | + termExpression ~ NOT ~ IN ~ "(" ~ rep1sep(termExpression, ",") <~ ")" ^^ { + case e1 ~ _ ~ _ ~ _ ~ e2 => Not(In(e1, e2)) + } | + termExpression <~ IS ~ NULL ^^ { case e => IsNull(e) } | + termExpression <~ IS ~ NOT ~ NULL ^^ { case e => IsNotNull(e) } | + NOT ~> termExpression ^^ {e => Not(e)} | + termExpression + + protected lazy val termExpression: Parser[Expression] = + productExpression * ( + "+" ^^^ { (e1: Expression, e2: Expression) => Add(e1,e2) } | + "-" ^^^ { (e1: Expression, e2: Expression) => Subtract(e1,e2) } ) + + protected lazy val productExpression: Parser[Expression] = + baseExpression * ( + "*" ^^^ { (e1: Expression, e2: Expression) => Multiply(e1,e2) } | + "/" ^^^ { (e1: Expression, e2: Expression) => Divide(e1,e2) } | + "%" ^^^ { (e1: Expression, e2: Expression) => Remainder(e1,e2) } + ) + + protected lazy val function: Parser[Expression] = + SUM ~> "(" ~> expression <~ ")" ^^ { case exp => Sum(exp) } | + SUM ~> "(" ~> DISTINCT ~> expression <~ ")" ^^ { case exp => SumDistinct(exp) } | + COUNT ~> "(" ~ "*" <~ ")" ^^ { case _ => Count(Literal(1)) } | + COUNT ~> "(" ~ expression <~ ")" ^^ { case dist ~ exp => Count(exp) } | + COUNT ~> "(" ~> DISTINCT ~> expression <~ ")" ^^ { case exp => CountDistinct(exp :: Nil) } | + FIRST ~> "(" ~> expression <~ ")" ^^ { case exp => First(exp) } | + AVG ~> "(" ~> expression <~ ")" ^^ { case exp => Average(exp) } | + IF ~> "(" ~> expression ~ "," ~ expression ~ "," ~ expression <~ ")" ^^ { + case c ~ "," ~ t ~ "," ~ f => If(c,t,f) + } | + ident ~ "(" ~ repsep(expression, ",") <~ ")" ^^ { + case udfName ~ _ ~ exprs => UnresolvedFunction(udfName, exprs) + } + + protected lazy val cast: Parser[Expression] = + CAST ~> "(" ~> expression ~ AS ~ dataType <~ ")" ^^ { case exp ~ _ ~ t => Cast(exp, t) } + + protected lazy val literal: Parser[Literal] = + numericLit ^^ { + case i if i.toLong > Int.MaxValue => Literal(i.toLong) + case i => Literal(i.toInt) + } | + NULL ^^^ Literal(null, NullType) | + floatLit ^^ {case f => Literal(f.toDouble) } | + stringLit ^^ {case s => Literal(s, StringType) } + + protected lazy val floatLit: Parser[String] = + elem("decimal", _.isInstanceOf[lexical.FloatLit]) ^^ (_.chars) + + protected lazy val baseExpression: Parser[Expression] = + TRUE ^^^ Literal(true, BooleanType) | + FALSE ^^^ Literal(false, BooleanType) | + cast | + "(" ~> expression <~ ")" | + function | + "-" ~> literal ^^ UnaryMinus | + ident ^^ UnresolvedAttribute | + "*" ^^^ Star(None) | + literal + + protected lazy val dataType: Parser[DataType] = + STRING ^^^ StringType +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala new file mode 100644 index 0000000000000..4ebc0e70d946b --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -0,0 +1,202 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.analysis + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.rules._ + + +/** + * A trivial [[Analyzer]] with an [[EmptyCatalog]] and [[EmptyFunctionRegistry]]. Used for testing + * when all relations are already filled in and the analyser needs only to resolve attribute + * references. + */ +object SimpleAnalyzer extends Analyzer(EmptyCatalog, EmptyFunctionRegistry, true) + +/** + * Provides a logical query plan analyzer, which translates [[UnresolvedAttribute]]s and + * [[UnresolvedRelation]]s into fully typed objects using information in a schema [[Catalog]] and + * a [[FunctionRegistry]]. + */ +class Analyzer(catalog: Catalog, registry: FunctionRegistry, caseSensitive: Boolean) + extends RuleExecutor[LogicalPlan] with HiveTypeCoercion { + + // TODO: pass this in as a parameter. + val fixedPoint = FixedPoint(100) + + val batches: Seq[Batch] = Seq( + Batch("MultiInstanceRelations", Once, + NewRelationInstances), + Batch("CaseInsensitiveAttributeReferences", Once, + (if (caseSensitive) Nil else LowercaseAttributeReferences :: Nil) : _*), + Batch("Resolution", fixedPoint, + ResolveReferences :: + ResolveRelations :: + NewRelationInstances :: + ImplicitGenerate :: + StarExpansion :: + ResolveFunctions :: + GlobalAggregates :: + typeCoercionRules :_*), + Batch("AnalysisOperators", fixedPoint, + EliminateAnalysisOperators) + ) + + /** + * Replaces [[UnresolvedRelation]]s with concrete relations from the catalog. + */ + object ResolveRelations extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case UnresolvedRelation(databaseName, name, alias) => + catalog.lookupRelation(databaseName, name, alias) + } + } + + /** + * Makes attribute naming case insensitive by turning all UnresolvedAttributes to lowercase. + */ + object LowercaseAttributeReferences extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case UnresolvedRelation(databaseName, name, alias) => + UnresolvedRelation(databaseName, name, alias.map(_.toLowerCase)) + case Subquery(alias, child) => Subquery(alias.toLowerCase, child) + case q: LogicalPlan => q transformExpressions { + case s: Star => s.copy(table = s.table.map(_.toLowerCase)) + case UnresolvedAttribute(name) => UnresolvedAttribute(name.toLowerCase) + case Alias(c, name) => Alias(c, name.toLowerCase)() + case GetField(c, name) => GetField(c, name.toLowerCase) + } + } + } + + /** + * Replaces [[UnresolvedAttribute]]s with concrete + * [[catalyst.expressions.AttributeReference AttributeReferences]] from a logical plan node's + * children. + */ + object ResolveReferences extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transformUp { + case q: LogicalPlan if q.childrenResolved => + logger.trace(s"Attempting to resolve ${q.simpleString}") + q transformExpressions { + case u @ UnresolvedAttribute(name) => + // Leave unchanged if resolution fails. Hopefully will be resolved next round. + val result = q.resolve(name).getOrElse(u) + logger.debug(s"Resolving $u to $result") + result + } + } + } + + /** + * Replaces [[UnresolvedFunction]]s with concrete [[catalyst.expressions.Expression Expressions]]. + */ + object ResolveFunctions extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case q: LogicalPlan => + q transformExpressions { + case u @ UnresolvedFunction(name, children) if u.childrenResolved => + registry.lookupFunction(name, children) + } + } + } + + /** + * Turns projections that contain aggregate expressions into aggregations. + */ + object GlobalAggregates extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case Project(projectList, child) if containsAggregates(projectList) => + Aggregate(Nil, projectList, child) + } + + def containsAggregates(exprs: Seq[Expression]): Boolean = { + exprs.foreach(_.foreach { + case agg: AggregateExpression => return true + case _ => + }) + false + } + } + + /** + * When a SELECT clause has only a single expression and that expression is a + * [[catalyst.expressions.Generator Generator]] we convert the + * [[catalyst.plans.logical.Project Project]] to a [[catalyst.plans.logical.Generate Generate]]. + */ + object ImplicitGenerate extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case Project(Seq(Alias(g: Generator, _)), child) => + Generate(g, join = false, outer = false, None, child) + } + } + + /** + * Expands any references to [[Star]] (*) in project operators. + */ + object StarExpansion extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + // Wait until children are resolved + case p: LogicalPlan if !p.childrenResolved => p + // If the projection list contains Stars, expand it. + case p @ Project(projectList, child) if containsStar(projectList) => + Project( + projectList.flatMap { + case s: Star => s.expand(child.output) + case o => o :: Nil + }, + child) + case t: ScriptTransformation if containsStar(t.input) => + t.copy( + input = t.input.flatMap { + case s: Star => s.expand(t.child.output) + case o => o :: Nil + } + ) + // If the aggregate function argument contains Stars, expand it. + case a: Aggregate if containsStar(a.aggregateExpressions) => + a.copy( + aggregateExpressions = a.aggregateExpressions.flatMap { + case s: Star => s.expand(a.child.output) + case o => o :: Nil + } + ) + } + + /** + * Returns true if `exprs` contains a [[Star]]. + */ + protected def containsStar(exprs: Seq[Expression]): Boolean = + exprs.collect { case _: Star => true }.nonEmpty + } +} + +/** + * Removes [[catalyst.plans.logical.Subquery Subquery]] operators from the plan. Subqueries are + * only required to provide scoping information for attributes and can be removed once analysis is + * complete. Similarly, this node also removes + * [[catalyst.plans.logical.LowerCaseSchema LowerCaseSchema]] operators. + */ +object EliminateAnalysisOperators extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case Subquery(_, child) => child + case LowerCaseSchema(child) => child + } +} + diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Catalog.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Catalog.scala new file mode 100644 index 0000000000000..f30b5d816703a --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Catalog.scala @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.analysis + +import scala.collection.mutable + +import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, Subquery} + +/** + * An interface for looking up relations by name. Used by an [[Analyzer]]. + */ +trait Catalog { + def lookupRelation( + databaseName: Option[String], + tableName: String, + alias: Option[String] = None): LogicalPlan + + def registerTable(databaseName: Option[String], tableName: String, plan: LogicalPlan): Unit + + def unregisterTable(databaseName: Option[String], tableName: String): Unit + + def unregisterAllTables(): Unit +} + +class SimpleCatalog extends Catalog { + val tables = new mutable.HashMap[String, LogicalPlan]() + + override def registerTable( + databaseName: Option[String], + tableName: String, + plan: LogicalPlan): Unit = { + tables += ((tableName, plan)) + } + + override def unregisterTable( + databaseName: Option[String], + tableName: String) = { + tables -= tableName + } + + override def unregisterAllTables() = { + tables.clear() + } + + override def lookupRelation( + databaseName: Option[String], + tableName: String, + alias: Option[String] = None): LogicalPlan = { + val table = tables.get(tableName).getOrElse(sys.error(s"Table Not Found: $tableName")) + val tableWithQualifiers = Subquery(tableName, table) + + // If an alias was specified by the lookup, wrap the plan in a subquery so that attributes are + // properly qualified with this alias. + alias.map(a => Subquery(a.toLowerCase, tableWithQualifiers)).getOrElse(tableWithQualifiers) + } +} + +/** + * A trait that can be mixed in with other Catalogs allowing specific tables to be overridden with + * new logical plans. This can be used to bind query result to virtual tables, or replace tables + * with in-memory cached versions. Note that the set of overrides is stored in memory and thus + * lost when the JVM exits. + */ +trait OverrideCatalog extends Catalog { + + // TODO: This doesn't work when the database changes... + val overrides = new mutable.HashMap[(Option[String],String), LogicalPlan]() + + abstract override def lookupRelation( + databaseName: Option[String], + tableName: String, + alias: Option[String] = None): LogicalPlan = { + + val overriddenTable = overrides.get((databaseName, tableName)) + + // If an alias was specified by the lookup, wrap the plan in a subquery so that attributes are + // properly qualified with this alias. + val withAlias = + overriddenTable.map(r => alias.map(a => Subquery(a.toLowerCase, r)).getOrElse(r)) + + withAlias.getOrElse(super.lookupRelation(databaseName, tableName, alias)) + } + + override def registerTable( + databaseName: Option[String], + tableName: String, + plan: LogicalPlan): Unit = { + overrides.put((databaseName, tableName), plan) + } + + override def unregisterTable(databaseName: Option[String], tableName: String): Unit = { + overrides.remove((databaseName, tableName)) + } + + override def unregisterAllTables(): Unit = { + overrides.clear() + } +} + +/** + * A trivial catalog that returns an error when a relation is requested. Used for testing when all + * relations are already filled in and the analyser needs only to resolve attribute references. + */ +object EmptyCatalog extends Catalog { + def lookupRelation( + databaseName: Option[String], + tableName: String, + alias: Option[String] = None) = { + throw new UnsupportedOperationException + } + + def registerTable(databaseName: Option[String], tableName: String, plan: LogicalPlan): Unit = { + throw new UnsupportedOperationException + } + + def unregisterTable(databaseName: Option[String], tableName: String): Unit = { + throw new UnsupportedOperationException + } + + override def unregisterAllTables(): Unit = {} +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala new file mode 100644 index 0000000000000..c0255701b7ba5 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.analysis + +import org.apache.spark.sql.catalyst.expressions.Expression + +/** A catalog for looking up user defined functions, used by an [[Analyzer]]. */ +trait FunctionRegistry { + def lookupFunction(name: String, children: Seq[Expression]): Expression +} + +/** + * A trivial catalog that returns an error when a function is requested. Used for testing when all + * functions are already filled in and the analyser needs only to resolve attribute references. + */ +object EmptyFunctionRegistry extends FunctionRegistry { + def lookupFunction(name: String, children: Seq[Expression]): Expression = { + throw new UnsupportedOperationException + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala new file mode 100644 index 0000000000000..4557d77160fad --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala @@ -0,0 +1,273 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.analysis + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, Project, Union} +import org.apache.spark.sql.catalyst.rules.Rule +import org.apache.spark.sql.catalyst.types._ + +/** + * A collection of [[catalyst.rules.Rule Rules]] that can be used to coerce differing types that + * participate in operations into compatible ones. Most of these rules are based on Hive semantics, + * but they do not introduce any dependencies on the hive codebase. For this reason they remain in + * Catalyst until we have a more standard set of coercions. + */ +trait HiveTypeCoercion { + + val typeCoercionRules = + List(PropagateTypes, ConvertNaNs, WidenTypes, PromoteStrings, BooleanComparisons, BooleanCasts, + StringToIntegralCasts, FunctionArgumentConversion) + + /** + * Applies any changes to [[catalyst.expressions.AttributeReference AttributeReference]] data + * types that are made by other rules to instances higher in the query tree. + */ + object PropagateTypes extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + // No propagation required for leaf nodes. + case q: LogicalPlan if q.children.isEmpty => q + + // Don't propagate types from unresolved children. + case q: LogicalPlan if !q.childrenResolved => q + + case q: LogicalPlan => q transformExpressions { + case a: AttributeReference => + q.inputSet.find(_.exprId == a.exprId) match { + // This can happen when a Attribute reference is born in a non-leaf node, for example + // due to a call to an external script like in the Transform operator. + // TODO: Perhaps those should actually be aliases? + case None => a + // Leave the same if the dataTypes match. + case Some(newType) if a.dataType == newType.dataType => a + case Some(newType) => + logger.debug(s"Promoting $a to $newType in ${q.simpleString}}") + newType + } + } + } + } + + /** + * Converts string "NaN"s that are in binary operators with a NaN-able types (Float / Double) to + * the appropriate numeric equivalent. + */ + object ConvertNaNs extends Rule[LogicalPlan] { + val stringNaN = Literal("NaN", StringType) + + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case q: LogicalPlan => q transformExpressions { + // Skip nodes who's children have not been resolved yet. + case e if !e.childrenResolved => e + + /* Double Conversions */ + case b: BinaryExpression if b.left == stringNaN && b.right.dataType == DoubleType => + b.makeCopy(Array(b.right, Literal(Double.NaN))) + case b: BinaryExpression if b.left.dataType == DoubleType && b.right == stringNaN => + b.makeCopy(Array(Literal(Double.NaN), b.left)) + case b: BinaryExpression if b.left == stringNaN && b.right == stringNaN => + b.makeCopy(Array(Literal(Double.NaN), b.left)) + + /* Float Conversions */ + case b: BinaryExpression if b.left == stringNaN && b.right.dataType == FloatType => + b.makeCopy(Array(b.right, Literal(Float.NaN))) + case b: BinaryExpression if b.left.dataType == FloatType && b.right == stringNaN => + b.makeCopy(Array(Literal(Float.NaN), b.left)) + case b: BinaryExpression if b.left == stringNaN && b.right == stringNaN => + b.makeCopy(Array(Literal(Float.NaN), b.left)) + } + } + } + + /** + * Widens numeric types and converts strings to numbers when appropriate. + * + * Loosely based on rules from "Hadoop: The Definitive Guide" 2nd edition, by Tom White + * + * The implicit conversion rules can be summarized as follows: + * - Any integral numeric type can be implicitly converted to a wider type. + * - All the integral numeric types, FLOAT, and (perhaps surprisingly) STRING can be implicitly + * converted to DOUBLE. + * - TINYINT, SMALLINT, and INT can all be converted to FLOAT. + * - BOOLEAN types cannot be converted to any other type. + * + * Additionally, all types when UNION-ed with strings will be promoted to strings. + * Other string conversions are handled by PromoteStrings. + */ + object WidenTypes extends Rule[LogicalPlan] { + // See https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types. + // The conversion for integral and floating point types have a linear widening hierarchy: + val numericPrecedence = + Seq(NullType, ByteType, ShortType, IntegerType, LongType, FloatType, DoubleType, DecimalType) + // Boolean is only wider than Void + val booleanPrecedence = Seq(NullType, BooleanType) + val allPromotions: Seq[Seq[DataType]] = numericPrecedence :: booleanPrecedence :: Nil + + def findTightestCommonType(t1: DataType, t2: DataType): Option[DataType] = { + // Try and find a promotion rule that contains both types in question. + val applicableConversion = allPromotions.find(p => p.contains(t1) && p.contains(t2)) + + // If found return the widest common type, otherwise None + applicableConversion.map(_.filter(t => t == t1 || t == t2).last) + } + + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case u @ Union(left, right) if u.childrenResolved && !u.resolved => + val castedInput = left.output.zip(right.output).map { + // When a string is found on one side, make the other side a string too. + case (l, r) if l.dataType == StringType && r.dataType != StringType => + (l, Alias(Cast(r, StringType), r.name)()) + case (l, r) if l.dataType != StringType && r.dataType == StringType => + (Alias(Cast(l, StringType), l.name)(), r) + + case (l, r) if l.dataType != r.dataType => + logger.debug(s"Resolving mismatched union input ${l.dataType}, ${r.dataType}") + findTightestCommonType(l.dataType, r.dataType).map { widestType => + val newLeft = + if (l.dataType == widestType) l else Alias(Cast(l, widestType), l.name)() + val newRight = + if (r.dataType == widestType) r else Alias(Cast(r, widestType), r.name)() + + (newLeft, newRight) + }.getOrElse((l, r)) // If there is no applicable conversion, leave expression unchanged. + case other => other + } + + val (castedLeft, castedRight) = castedInput.unzip + + val newLeft = + if (castedLeft.map(_.dataType) != left.output.map(_.dataType)) { + logger.debug(s"Widening numeric types in union $castedLeft ${left.output}") + Project(castedLeft, left) + } else { + left + } + + val newRight = + if (castedRight.map(_.dataType) != right.output.map(_.dataType)) { + logger.debug(s"Widening numeric types in union $castedRight ${right.output}") + Project(castedRight, right) + } else { + right + } + + Union(newLeft, newRight) + + // Also widen types for BinaryExpressions. + case q: LogicalPlan => q transformExpressions { + // Skip nodes who's children have not been resolved yet. + case e if !e.childrenResolved => e + + case b: BinaryExpression if b.left.dataType != b.right.dataType => + findTightestCommonType(b.left.dataType, b.right.dataType).map { widestType => + val newLeft = + if (b.left.dataType == widestType) b.left else Cast(b.left, widestType) + val newRight = + if (b.right.dataType == widestType) b.right else Cast(b.right, widestType) + b.makeCopy(Array(newLeft, newRight)) + }.getOrElse(b) // If there is no applicable conversion, leave expression unchanged. + } + } + } + + /** + * Promotes strings that appear in arithmetic expressions. + */ + object PromoteStrings extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transformAllExpressions { + // Skip nodes who's children have not been resolved yet. + case e if !e.childrenResolved => e + + case a: BinaryArithmetic if a.left.dataType == StringType => + a.makeCopy(Array(Cast(a.left, DoubleType), a.right)) + case a: BinaryArithmetic if a.right.dataType == StringType => + a.makeCopy(Array(a.left, Cast(a.right, DoubleType))) + + case p: BinaryPredicate if p.left.dataType == StringType && p.right.dataType != StringType => + p.makeCopy(Array(Cast(p.left, DoubleType), p.right)) + case p: BinaryPredicate if p.left.dataType != StringType && p.right.dataType == StringType => + p.makeCopy(Array(p.left, Cast(p.right, DoubleType))) + + case Sum(e) if e.dataType == StringType => + Sum(Cast(e, DoubleType)) + case Average(e) if e.dataType == StringType => + Average(Cast(e, DoubleType)) + } + } + + /** + * Changes Boolean values to Bytes so that expressions like true < false can be Evaluated. + */ + object BooleanComparisons extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transformAllExpressions { + // Skip nodes who's children have not been resolved yet. + case e if !e.childrenResolved => e + // No need to change Equals operators as that actually makes sense for boolean types. + case e: Equals => e + // Otherwise turn them to Byte types so that there exists and ordering. + case p: BinaryComparison + if p.left.dataType == BooleanType && p.right.dataType == BooleanType => + p.makeCopy(Array(Cast(p.left, ByteType), Cast(p.right, ByteType))) + } + } + + /** + * Casts to/from [[catalyst.types.BooleanType BooleanType]] are transformed into comparisons since + * the JVM does not consider Booleans to be numeric types. + */ + object BooleanCasts extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transformAllExpressions { + // Skip nodes who's children have not been resolved yet. + case e if !e.childrenResolved => e + + case Cast(e, BooleanType) => Not(Equals(e, Literal(0))) + case Cast(e, dataType) if e.dataType == BooleanType => + Cast(If(e, Literal(1), Literal(0)), dataType) + } + } + + /** + * When encountering a cast from a string representing a valid fractional number to an integral + * type the jvm will throw a `java.lang.NumberFormatException`. Hive, in contrast, returns the + * truncated version of this number. + */ + object StringToIntegralCasts extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transformAllExpressions { + // Skip nodes who's children have not been resolved yet. + case e if !e.childrenResolved => e + + case Cast(e @ StringType(), t: IntegralType) => + Cast(Cast(e, DecimalType), t) + } + } + + /** + * This ensure that the types for various functions are as expected. + */ + object FunctionArgumentConversion extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transformAllExpressions { + // Skip nodes who's children have not been resolved yet. + case e if !e.childrenResolved => e + + // Promote SUM to largest types to prevent overflows. + case s @ Sum(e @ DecimalType()) => s // Decimal is already the biggest. + case Sum(e @ IntegralType()) if e.dataType != LongType => Sum(Cast(e, LongType)) + case Sum(e @ FractionalType()) if e.dataType != DoubleType => Sum(Cast(e, DoubleType)) + } + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/MultiInstanceRelation.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/MultiInstanceRelation.scala new file mode 100644 index 0000000000000..a6ce90854dcb4 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/MultiInstanceRelation.scala @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.analysis + +import org.apache.spark.sql.catalyst.rules.Rule +import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan + +/** + * A trait that should be mixed into query operators where an single instance might appear multiple + * times in a logical query plan. It is invalid to have multiple copies of the same attribute + * produced by distinct operators in a query tree as this breaks the guarantee that expression + * ids, which are used to differentiate attributes, are unique. + * + * Before analysis, all operators that include this trait will be asked to produce a new version + * of itself with globally unique expression ids. + */ +trait MultiInstanceRelation { + def newInstance: this.type +} + +/** + * If any MultiInstanceRelation appears more than once in the query plan then the plan is updated so + * that each instance has unique expression ids for the attributes produced. + */ +object NewRelationInstances extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = { + val localRelations = plan collect { case l: MultiInstanceRelation => l} + val multiAppearance = localRelations + .groupBy(identity[MultiInstanceRelation]) + .filter { case (_, ls) => ls.size > 1 } + .map(_._1) + .toSet + + plan transform { + case l: MultiInstanceRelation if multiAppearance contains l => l.newInstance + } + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/package.scala new file mode 100644 index 0000000000000..9f37ca904ffeb --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/package.scala @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +/** + * Provides a logical query plan [[Analyzer]] and supporting classes for performing analysis. + * Analysis consists of translating [[UnresolvedAttribute]]s and [[UnresolvedRelation]]s + * into fully typed objects using information in a schema [[Catalog]]. + */ +package object analysis diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/unresolved.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/unresolved.scala new file mode 100644 index 0000000000000..d629172a7426e --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/unresolved.scala @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.analysis + +import org.apache.spark.sql.catalyst.{errors, trees} +import org.apache.spark.sql.catalyst.errors.TreeNodeException +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical.BaseRelation +import org.apache.spark.sql.catalyst.trees.TreeNode + +/** + * Thrown when an invalid attempt is made to access a property of a tree that has yet to be fully + * resolved. + */ +class UnresolvedException[TreeType <: TreeNode[_]](tree: TreeType, function: String) extends + errors.TreeNodeException(tree, s"Invalid call to $function on unresolved object", null) + +/** + * Holds the name of a relation that has yet to be looked up in a [[Catalog]]. + */ +case class UnresolvedRelation( + databaseName: Option[String], + tableName: String, + alias: Option[String] = None) extends BaseRelation { + override def output = Nil + override lazy val resolved = false +} + +/** + * Holds the name of an attribute that has yet to be resolved. + */ +case class UnresolvedAttribute(name: String) extends Attribute with trees.LeafNode[Expression] { + override def exprId = throw new UnresolvedException(this, "exprId") + override def dataType = throw new UnresolvedException(this, "dataType") + override def nullable = throw new UnresolvedException(this, "nullable") + override def qualifiers = throw new UnresolvedException(this, "qualifiers") + override lazy val resolved = false + + override def newInstance = this + override def withQualifiers(newQualifiers: Seq[String]) = this + + // Unresolved attributes are transient at compile time and don't get evaluated during execution. + override def eval(input: Row = null): EvaluatedType = + throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}") + + override def toString: String = s"'$name" +} + +case class UnresolvedFunction(name: String, children: Seq[Expression]) extends Expression { + override def dataType = throw new UnresolvedException(this, "dataType") + override def foldable = throw new UnresolvedException(this, "foldable") + override def nullable = throw new UnresolvedException(this, "nullable") + override def references = children.flatMap(_.references).toSet + override lazy val resolved = false + + // Unresolved functions are transient at compile time and don't get evaluated during execution. + override def eval(input: Row = null): EvaluatedType = + throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}") + + override def toString = s"'$name(${children.mkString(",")})" +} + +/** + * Represents all of the input attributes to a given relational operator, for example in + * "SELECT * FROM ...". + * + * @param table an optional table that should be the target of the expansion. If omitted all + * tables' columns are produced. + */ +case class Star( + table: Option[String], + mapFunction: Attribute => Expression = identity[Attribute]) + extends Attribute with trees.LeafNode[Expression] { + + override def name = throw new UnresolvedException(this, "exprId") + override def exprId = throw new UnresolvedException(this, "exprId") + override def dataType = throw new UnresolvedException(this, "dataType") + override def nullable = throw new UnresolvedException(this, "nullable") + override def qualifiers = throw new UnresolvedException(this, "qualifiers") + override lazy val resolved = false + + override def newInstance = this + override def withQualifiers(newQualifiers: Seq[String]) = this + + def expand(input: Seq[Attribute]): Seq[NamedExpression] = { + val expandedAttributes: Seq[Attribute] = table match { + // If there is no table specified, use all input attributes. + case None => input + // If there is a table, pick out attributes that are part of this table. + case Some(t) => input.filter(_.qualifiers contains t) + } + val mappedAttributes = expandedAttributes.map(mapFunction).zip(input).map { + case (n: NamedExpression, _) => n + case (e, originalAttribute) => + Alias(e, originalAttribute.name)(qualifiers = originalAttribute.qualifiers) + } + mappedAttributes + } + + // Star gets expanded at runtime so we never evaluate a Star. + override def eval(input: Row = null): EvaluatedType = + throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}") + + override def toString = table.map(_ + ".").getOrElse("") + "*" +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala new file mode 100644 index 0000000000000..987befe8e22ee --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala @@ -0,0 +1,222 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +import java.sql.Timestamp + +import scala.language.implicitConversions + +import org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.plans.{Inner, JoinType} +import org.apache.spark.sql.catalyst.types._ + +/** + * A collection of implicit conversions that create a DSL for constructing catalyst data structures. + * + * {{{ + * scala> import catalyst.dsl._ + * + * // Standard operators are added to expressions. + * scala> Literal(1) + Literal(1) + * res1: catalyst.expressions.Add = (1 + 1) + * + * // There is a conversion from 'symbols to unresolved attributes. + * scala> 'a.attr + * res2: catalyst.analysis.UnresolvedAttribute = 'a + * + * // These unresolved attributes can be used to create more complicated expressions. + * scala> 'a === 'b + * res3: catalyst.expressions.Equals = ('a = 'b) + * + * // SQL verbs can be used to construct logical query plans. + * scala> TestRelation('key.int, 'value.string).where('key === 1).select('value).analyze + * res4: catalyst.plans.logical.LogicalPlan = + * Project {value#1} + * Filter (key#0 = 1) + * TestRelation {key#0,value#1} + * }}} + */ +package object dsl { + trait ImplicitOperators { + def expr: Expression + + def + (other: Expression) = Add(expr, other) + def - (other: Expression) = Subtract(expr, other) + def * (other: Expression) = Multiply(expr, other) + def / (other: Expression) = Divide(expr, other) + + def && (other: Expression) = And(expr, other) + def || (other: Expression) = Or(expr, other) + + def < (other: Expression) = LessThan(expr, other) + def <= (other: Expression) = LessThanOrEqual(expr, other) + def > (other: Expression) = GreaterThan(expr, other) + def >= (other: Expression) = GreaterThanOrEqual(expr, other) + def === (other: Expression) = Equals(expr, other) + def !== (other: Expression) = Not(Equals(expr, other)) + + def like(other: Expression) = Like(expr, other) + def rlike(other: Expression) = RLike(expr, other) + def cast(to: DataType) = Cast(expr, to) + + def asc = SortOrder(expr, Ascending) + def desc = SortOrder(expr, Descending) + + def as(s: Symbol) = Alias(expr, s.name)() + } + + trait ExpressionConversions { + implicit class DslExpression(e: Expression) extends ImplicitOperators { + def expr = e + } + + implicit def booleanToLiteral(b: Boolean) = Literal(b) + implicit def byteToLiteral(b: Byte) = Literal(b) + implicit def shortToLiteral(s: Short) = Literal(s) + implicit def intToLiteral(i: Int) = Literal(i) + implicit def longToLiteral(l: Long) = Literal(l) + implicit def floatToLiteral(f: Float) = Literal(f) + implicit def doubleToLiteral(d: Double) = Literal(d) + implicit def stringToLiteral(s: String) = Literal(s) + implicit def decimalToLiteral(d: BigDecimal) = Literal(d) + implicit def timestampToLiteral(t: Timestamp) = Literal(t) + implicit def binaryToLiteral(a: Array[Byte]) = Literal(a) + + implicit def symbolToUnresolvedAttribute(s: Symbol) = analysis.UnresolvedAttribute(s.name) + + implicit class DslSymbol(sym: Symbol) extends ImplicitAttribute { def s = sym.name } + // TODO more implicit class for literal? + implicit class DslString(val s: String) extends ImplicitOperators { + override def expr: Expression = Literal(s) + def attr = analysis.UnresolvedAttribute(s) + } + + abstract class ImplicitAttribute extends ImplicitOperators { + def s: String + def expr = attr + def attr = analysis.UnresolvedAttribute(s) + + /** Creates a new AttributeReference of type boolean */ + def boolean = AttributeReference(s, BooleanType, nullable = false)() + + /** Creates a new AttributeReference of type byte */ + def byte = AttributeReference(s, ByteType, nullable = false)() + + /** Creates a new AttributeReference of type short */ + def short = AttributeReference(s, ShortType, nullable = false)() + + /** Creates a new AttributeReference of type int */ + def int = AttributeReference(s, IntegerType, nullable = false)() + + /** Creates a new AttributeReference of type long */ + def long = AttributeReference(s, LongType, nullable = false)() + + /** Creates a new AttributeReference of type float */ + def float = AttributeReference(s, FloatType, nullable = false)() + + /** Creates a new AttributeReference of type double */ + def double = AttributeReference(s, DoubleType, nullable = false)() + + /** Creates a new AttributeReference of type string */ + def string = AttributeReference(s, StringType, nullable = false)() + + /** Creates a new AttributeReference of type decimal */ + def decimal = AttributeReference(s, DecimalType, nullable = false)() + + /** Creates a new AttributeReference of type timestamp */ + def timestamp = AttributeReference(s, TimestampType, nullable = false)() + + /** Creates a new AttributeReference of type binary */ + def binary = AttributeReference(s, BinaryType, nullable = false)() + } + + implicit class DslAttribute(a: AttributeReference) { + def notNull = a.withNullability(false) + def nullable = a.withNullability(true) + + // Protobuf terminology + def required = a.withNullability(false) + + def at(ordinal: Int) = BoundReference(ordinal, a) + } + } + + + object expressions extends ExpressionConversions // scalastyle:ignore + + abstract class LogicalPlanFunctions { + def logicalPlan: LogicalPlan + + def select(exprs: NamedExpression*) = Project(exprs, logicalPlan) + + def where(condition: Expression) = Filter(condition, logicalPlan) + + def join( + otherPlan: LogicalPlan, + joinType: JoinType = Inner, + condition: Option[Expression] = None) = + Join(logicalPlan, otherPlan, joinType, condition) + + def orderBy(sortExprs: SortOrder*) = Sort(sortExprs, logicalPlan) + + def groupBy(groupingExprs: Expression*)(aggregateExprs: Expression*) = { + val aliasedExprs = aggregateExprs.map { + case ne: NamedExpression => ne + case e => Alias(e, e.toString)() + } + Aggregate(groupingExprs, aliasedExprs, logicalPlan) + } + + def subquery(alias: Symbol) = Subquery(alias.name, logicalPlan) + + def unionAll(otherPlan: LogicalPlan) = Union(logicalPlan, otherPlan) + + def sfilter[T1](arg1: Symbol)(udf: (T1) => Boolean) = + Filter(ScalaUdf(udf, BooleanType, Seq(UnresolvedAttribute(arg1.name))), logicalPlan) + + def sfilter(dynamicUdf: (DynamicRow) => Boolean) = + Filter(ScalaUdf(dynamicUdf, BooleanType, Seq(WrapDynamic(logicalPlan.output))), logicalPlan) + + def sample( + fraction: Double, + withReplacement: Boolean = true, + seed: Int = (math.random * 1000).toInt) = + Sample(fraction, withReplacement, seed, logicalPlan) + + def generate( + generator: Generator, + join: Boolean = false, + outer: Boolean = false, + alias: Option[String] = None) = + Generate(generator, join, outer, None, logicalPlan) + + def insertInto(tableName: String, overwrite: Boolean = false) = + InsertIntoTable( + analysis.UnresolvedRelation(None, tableName), Map.empty, logicalPlan, overwrite) + + def analyze = analysis.SimpleAnalyzer(logicalPlan) + } + + object plans { // scalastyle:ignore + implicit class DslLogicalPlan(val logicalPlan: LogicalPlan) extends LogicalPlanFunctions { + def writeToFile(path: String) = WriteToFile(path, logicalPlan) + } + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/errors/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/errors/package.scala new file mode 100644 index 0000000000000..bdeb660b1ecb7 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/errors/package.scala @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +import org.apache.spark.sql.catalyst.trees.TreeNode + +/** + * Functions for attaching and retrieving trees that are associated with errors. + */ +package object errors { + + class TreeNodeException[TreeType <: TreeNode[_]]( + tree: TreeType, msg: String, cause: Throwable) + extends Exception(msg, cause) { + + // Yes, this is the same as a default parameter, but... those don't seem to work with SBT + // external project dependencies for some reason. + def this(tree: TreeType, msg: String) = this(tree, msg, null) + + override def getMessage: String = { + val treeString = tree.toString + s"${super.getMessage}, tree:${if (treeString contains "\n") "\n" else " "}$tree" + } + } + + /** + * Wraps any exceptions that are thrown while executing `f` in a + * [[catalyst.errors.TreeNodeException TreeNodeException]], attaching the provided `tree`. + */ + def attachTree[TreeType <: TreeNode[_], A](tree: TreeType, msg: String = "")(f: => A): A = { + try f catch { + case e: Exception => throw new TreeNodeException(tree, msg, e) + } + } + + /** + * Executes `f` which is expected to throw a + * [[catalyst.errors.TreeNodeException TreeNodeException]]. The first tree encountered in + * the stack of exceptions of type `TreeType` is returned. + */ + def getTree[TreeType <: TreeNode[_]](f: => Unit): TreeType = ??? // TODO: Implement +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/BoundAttribute.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/BoundAttribute.scala new file mode 100644 index 0000000000000..4ebf6c4584b94 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/BoundAttribute.scala @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.trees +import org.apache.spark.sql.catalyst.errors.attachTree +import org.apache.spark.sql.catalyst.plans.QueryPlan +import org.apache.spark.sql.catalyst.rules.Rule +import org.apache.spark.sql.Logging + +/** + * A bound reference points to a specific slot in the input tuple, allowing the actual value + * to be retrieved more efficiently. However, since operations like column pruning can change + * the layout of intermediate tuples, BindReferences should be run after all such transformations. + */ +case class BoundReference(ordinal: Int, baseReference: Attribute) + extends Attribute with trees.LeafNode[Expression] { + + type EvaluatedType = Any + + def nullable = baseReference.nullable + def dataType = baseReference.dataType + def exprId = baseReference.exprId + def qualifiers = baseReference.qualifiers + def name = baseReference.name + + def newInstance = BoundReference(ordinal, baseReference.newInstance) + def withQualifiers(newQualifiers: Seq[String]) = + BoundReference(ordinal, baseReference.withQualifiers(newQualifiers)) + + override def toString = s"$baseReference:$ordinal" + + override def eval(input: Row): Any = input(ordinal) +} + +/** + * Used to denote operators that do their own binding of attributes internally. + */ +trait NoBind { self: trees.TreeNode[_] => } + +class BindReferences[TreeNode <: QueryPlan[TreeNode]] extends Rule[TreeNode] { + import BindReferences._ + + def apply(plan: TreeNode): TreeNode = { + plan.transform { + case n: NoBind => n.asInstanceOf[TreeNode] + case leafNode if leafNode.children.isEmpty => leafNode + case unaryNode if unaryNode.children.size == 1 => unaryNode.transformExpressions { case e => + bindReference(e, unaryNode.children.head.output) + } + } + } +} + +object BindReferences extends Logging { + def bindReference(expression: Expression, input: Seq[Attribute]): Expression = { + expression.transform { case a: AttributeReference => + attachTree(a, "Binding attribute") { + val ordinal = input.indexWhere(_.exprId == a.exprId) + if (ordinal == -1) { + // TODO: This fallback is required because some operators (such as ScriptTransform) + // produce new attributes that can't be bound. Likely the right thing to do is remove + // this rule and require all operators to explicitly bind to the input schema that + // they specify. + logger.debug(s"Couldn't find $a in ${input.mkString("[", ",", "]")}") + a + } else { + BoundReference(ordinal, a) + } + } + } + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala new file mode 100644 index 0000000000000..17118499d0c87 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala @@ -0,0 +1,203 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import java.sql.Timestamp + +import org.apache.spark.sql.catalyst.types._ + +/** Cast the child expression to the target data type. */ +case class Cast(child: Expression, dataType: DataType) extends UnaryExpression { + override def foldable = child.foldable + def nullable = child.nullable + override def toString = s"CAST($child, $dataType)" + + type EvaluatedType = Any + + def nullOrCast[T](a: Any, func: T => Any): Any = if(a == null) { + null + } else { + func(a.asInstanceOf[T]) + } + + // UDFToString + def castToString: Any => Any = child.dataType match { + case BinaryType => nullOrCast[Array[Byte]](_, new String(_, "UTF-8")) + case _ => nullOrCast[Any](_, _.toString) + } + + // BinaryConverter + def castToBinary: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, _.getBytes("UTF-8")) + } + + // UDFToBoolean + def castToBoolean: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, _.length() != 0) + case TimestampType => nullOrCast[Timestamp](_, b => {(b.getTime() != 0 || b.getNanos() != 0)}) + case LongType => nullOrCast[Long](_, _ != 0) + case IntegerType => nullOrCast[Int](_, _ != 0) + case ShortType => nullOrCast[Short](_, _ != 0) + case ByteType => nullOrCast[Byte](_, _ != 0) + case DecimalType => nullOrCast[BigDecimal](_, _ != 0) + case DoubleType => nullOrCast[Double](_, _ != 0) + case FloatType => nullOrCast[Float](_, _ != 0) + } + + // TimestampConverter + def castToTimestamp: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, s => { + // Throw away extra if more than 9 decimal places + val periodIdx = s.indexOf("."); + var n = s + if (periodIdx != -1) { + if (n.length() - periodIdx > 9) { + n = n.substring(0, periodIdx + 10) + } + } + try Timestamp.valueOf(n) catch { case _: java.lang.IllegalArgumentException => null} + }) + case BooleanType => nullOrCast[Boolean](_, b => new Timestamp((if(b) 1 else 0) * 1000)) + case LongType => nullOrCast[Long](_, l => new Timestamp(l * 1000)) + case IntegerType => nullOrCast[Int](_, i => new Timestamp(i * 1000)) + case ShortType => nullOrCast[Short](_, s => new Timestamp(s * 1000)) + case ByteType => nullOrCast[Byte](_, b => new Timestamp(b * 1000)) + // TimestampWritable.decimalToTimestamp + case DecimalType => nullOrCast[BigDecimal](_, d => decimalToTimestamp(d)) + // TimestampWritable.doubleToTimestamp + case DoubleType => nullOrCast[Double](_, d => decimalToTimestamp(d)) + // TimestampWritable.floatToTimestamp + case FloatType => nullOrCast[Float](_, f => decimalToTimestamp(f)) + } + + private def decimalToTimestamp(d: BigDecimal) = { + val seconds = d.longValue() + val bd = (d - seconds) * 1000000000 + val nanos = bd.intValue() + + // Convert to millis + val millis = seconds * 1000 + val t = new Timestamp(millis) + + // remaining fractional portion as nanos + t.setNanos(nanos) + t + } + + // Timestamp to long, converting milliseconds to seconds + private def timestampToLong(ts: Timestamp) = ts.getTime / 1000 + + private def timestampToDouble(ts: Timestamp) = { + // First part is the seconds since the beginning of time, followed by nanosecs. + ts.getTime / 1000 + ts.getNanos.toDouble / 1000000000 + } + + def castToLong: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, s => try s.toLong catch { + case _: NumberFormatException => null + }) + case BooleanType => nullOrCast[Boolean](_, b => if(b) 1 else 0) + case TimestampType => nullOrCast[Timestamp](_, t => timestampToLong(t)) + case DecimalType => nullOrCast[BigDecimal](_, _.toLong) + case x: NumericType => b => x.numeric.asInstanceOf[Numeric[Any]].toLong(b) + } + + def castToInt: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, s => try s.toInt catch { + case _: NumberFormatException => null + }) + case BooleanType => nullOrCast[Boolean](_, b => if(b) 1 else 0) + case TimestampType => nullOrCast[Timestamp](_, t => timestampToLong(t).toInt) + case DecimalType => nullOrCast[BigDecimal](_, _.toInt) + case x: NumericType => b => x.numeric.asInstanceOf[Numeric[Any]].toInt(b) + } + + def castToShort: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, s => try s.toShort catch { + case _: NumberFormatException => null + }) + case BooleanType => nullOrCast[Boolean](_, b => if(b) 1 else 0) + case TimestampType => nullOrCast[Timestamp](_, t => timestampToLong(t).toShort) + case DecimalType => nullOrCast[BigDecimal](_, _.toShort) + case x: NumericType => b => x.numeric.asInstanceOf[Numeric[Any]].toInt(b).toShort + } + + def castToByte: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, s => try s.toByte catch { + case _: NumberFormatException => null + }) + case BooleanType => nullOrCast[Boolean](_, b => if(b) 1 else 0) + case TimestampType => nullOrCast[Timestamp](_, t => timestampToLong(t).toByte) + case DecimalType => nullOrCast[BigDecimal](_, _.toByte) + case x: NumericType => b => x.numeric.asInstanceOf[Numeric[Any]].toInt(b).toByte + } + + def castToDecimal: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, s => try BigDecimal(s.toDouble) catch { + case _: NumberFormatException => null + }) + case BooleanType => nullOrCast[Boolean](_, b => if(b) BigDecimal(1) else BigDecimal(0)) + case TimestampType => + // Note that we lose precision here. + nullOrCast[Timestamp](_, t => BigDecimal(timestampToDouble(t))) + case x: NumericType => b => BigDecimal(x.numeric.asInstanceOf[Numeric[Any]].toDouble(b)) + } + + def castToDouble: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, s => try s.toDouble catch { + case _: NumberFormatException => null + }) + case BooleanType => nullOrCast[Boolean](_, b => if(b) 1 else 0) + case TimestampType => nullOrCast[Timestamp](_, t => timestampToDouble(t)) + case DecimalType => nullOrCast[BigDecimal](_, _.toDouble) + case x: NumericType => b => x.numeric.asInstanceOf[Numeric[Any]].toDouble(b) + } + + def castToFloat: Any => Any = child.dataType match { + case StringType => nullOrCast[String](_, s => try s.toFloat catch { + case _: NumberFormatException => null + }) + case BooleanType => nullOrCast[Boolean](_, b => if(b) 1 else 0) + case TimestampType => nullOrCast[Timestamp](_, t => timestampToDouble(t).toFloat) + case DecimalType => nullOrCast[BigDecimal](_, _.toFloat) + case x: NumericType => b => x.numeric.asInstanceOf[Numeric[Any]].toFloat(b) + } + + def cast: Any => Any = dataType match { + case StringType => castToString + case BinaryType => castToBinary + case DecimalType => castToDecimal + case TimestampType => castToTimestamp + case BooleanType => castToBoolean + case ByteType => castToByte + case ShortType => castToShort + case IntegerType => castToInt + case FloatType => castToFloat + case LongType => castToLong + case DoubleType => castToDouble + } + + override def eval(input: Row): Any = { + val evaluated = child.eval(input) + if (evaluated == null) { + null + } else { + cast(evaluated) + } + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala new file mode 100644 index 0000000000000..8a1db8e796816 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala @@ -0,0 +1,246 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.errors.TreeNodeException +import org.apache.spark.sql.catalyst.trees +import org.apache.spark.sql.catalyst.trees.TreeNode +import org.apache.spark.sql.catalyst.types.{DataType, FractionalType, IntegralType, NumericType, NativeType} + +abstract class Expression extends TreeNode[Expression] { + self: Product => + + /** The narrowest possible type that is produced when this expression is evaluated. */ + type EvaluatedType <: Any + + def dataType: DataType + + /** + * Returns true when an expression is a candidate for static evaluation before the query is + * executed. + * + * The following conditions are used to determine suitability for constant folding: + * - A [[expressions.Coalesce Coalesce]] is foldable if all of its children are foldable + * - A [[expressions.BinaryExpression BinaryExpression]] is foldable if its both left and right + * child are foldable + * - A [[expressions.Not Not]], [[expressions.IsNull IsNull]], or + * [[expressions.IsNotNull IsNotNull]] is foldable if its child is foldable. + * - A [[expressions.Literal]] is foldable. + * - A [[expressions.Cast Cast]] or [[expressions.UnaryMinus UnaryMinus]] is foldable if its + * child is foldable. + */ + // TODO: Supporting more foldable expressions. For example, deterministic Hive UDFs. + def foldable: Boolean = false + def nullable: Boolean + def references: Set[Attribute] + + /** Returns the result of evaluating this expression on a given input Row */ + def eval(input: Row = null): EvaluatedType + + /** + * Returns `true` if this expression and all its children have been resolved to a specific schema + * and `false` if it is still contains any unresolved placeholders. Implementations of expressions + * should override this if the resolution of this type of expression involves more than just + * the resolution of its children. + */ + lazy val resolved: Boolean = childrenResolved + + /** + * Returns true if all the children of this expression have been resolved to a specific schema + * and false if any still contains any unresolved placeholders. + */ + def childrenResolved = !children.exists(!_.resolved) + + /** + * A set of helper functions that return the correct descendant of `scala.math.Numeric[T]` type + * and do any casting necessary of child evaluation. + */ + @inline + def n1(e: Expression, i: Row, f: ((Numeric[Any], Any) => Any)): Any = { + val evalE = e.eval(i) + if (evalE == null) { + null + } else { + e.dataType match { + case n: NumericType => + val castedFunction = f.asInstanceOf[(Numeric[n.JvmType], n.JvmType) => n.JvmType] + castedFunction(n.numeric, evalE.asInstanceOf[n.JvmType]) + case other => sys.error(s"Type $other does not support numeric operations") + } + } + } + + /** + * Evaluation helper function for 2 Numeric children expressions. Those expressions are supposed + * to be in the same data type, and also the return type. + * Either one of the expressions result is null, the evaluation result should be null. + */ + @inline + protected final def n2( + i: Row, + e1: Expression, + e2: Expression, + f: ((Numeric[Any], Any, Any) => Any)): Any = { + + if (e1.dataType != e2.dataType) { + throw new TreeNodeException(this, s"Types do not match ${e1.dataType} != ${e2.dataType}") + } + + val evalE1 = e1.eval(i) + if(evalE1 == null) { + null + } else { + val evalE2 = e2.eval(i) + if (evalE2 == null) { + null + } else { + e1.dataType match { + case n: NumericType => + f.asInstanceOf[(Numeric[n.JvmType], n.JvmType, n.JvmType) => Int]( + n.numeric, evalE1.asInstanceOf[n.JvmType], evalE2.asInstanceOf[n.JvmType]) + case other => sys.error(s"Type $other does not support numeric operations") + } + } + } + } + + /** + * Evaluation helper function for 2 Fractional children expressions. Those expressions are + * supposed to be in the same data type, and also the return type. + * Either one of the expressions result is null, the evaluation result should be null. + */ + @inline + protected final def f2( + i: Row, + e1: Expression, + e2: Expression, + f: ((Fractional[Any], Any, Any) => Any)): Any = { + if (e1.dataType != e2.dataType) { + throw new TreeNodeException(this, s"Types do not match ${e1.dataType} != ${e2.dataType}") + } + + val evalE1 = e1.eval(i: Row) + if(evalE1 == null) { + null + } else { + val evalE2 = e2.eval(i: Row) + if (evalE2 == null) { + null + } else { + e1.dataType match { + case ft: FractionalType => + f.asInstanceOf[(Fractional[ft.JvmType], ft.JvmType, ft.JvmType) => ft.JvmType]( + ft.fractional, evalE1.asInstanceOf[ft.JvmType], evalE2.asInstanceOf[ft.JvmType]) + case other => sys.error(s"Type $other does not support fractional operations") + } + } + } + } + + /** + * Evaluation helper function for 2 Integral children expressions. Those expressions are + * supposed to be in the same data type, and also the return type. + * Either one of the expressions result is null, the evaluation result should be null. + */ + @inline + protected final def i2( + i: Row, + e1: Expression, + e2: Expression, + f: ((Integral[Any], Any, Any) => Any)): Any = { + if (e1.dataType != e2.dataType) { + throw new TreeNodeException(this, s"Types do not match ${e1.dataType} != ${e2.dataType}") + } + + val evalE1 = e1.eval(i) + if(evalE1 == null) { + null + } else { + val evalE2 = e2.eval(i) + if (evalE2 == null) { + null + } else { + e1.dataType match { + case i: IntegralType => + f.asInstanceOf[(Integral[i.JvmType], i.JvmType, i.JvmType) => i.JvmType]( + i.integral, evalE1.asInstanceOf[i.JvmType], evalE2.asInstanceOf[i.JvmType]) + case other => sys.error(s"Type $other does not support numeric operations") + } + } + } + } + + /** + * Evaluation helper function for 2 Comparable children expressions. Those expressions are + * supposed to be in the same data type, and the return type should be Integer: + * Negative value: 1st argument less than 2nd argument + * Zero: 1st argument equals 2nd argument + * Positive value: 1st argument greater than 2nd argument + * + * Either one of the expressions result is null, the evaluation result should be null. + */ + @inline + protected final def c2( + i: Row, + e1: Expression, + e2: Expression, + f: ((Ordering[Any], Any, Any) => Any)): Any = { + if (e1.dataType != e2.dataType) { + throw new TreeNodeException(this, s"Types do not match ${e1.dataType} != ${e2.dataType}") + } + + val evalE1 = e1.eval(i) + if(evalE1 == null) { + null + } else { + val evalE2 = e2.eval(i) + if (evalE2 == null) { + null + } else { + e1.dataType match { + case i: NativeType => + f.asInstanceOf[(Ordering[i.JvmType], i.JvmType, i.JvmType) => Boolean]( + i.ordering, evalE1.asInstanceOf[i.JvmType], evalE2.asInstanceOf[i.JvmType]) + case other => sys.error(s"Type $other does not support ordered operations") + } + } + } + } +} + +abstract class BinaryExpression extends Expression with trees.BinaryNode[Expression] { + self: Product => + + def symbol: String + + override def foldable = left.foldable && right.foldable + + override def references = left.references ++ right.references + + override def toString = s"($left $symbol $right)" +} + +abstract class LeafExpression extends Expression with trees.LeafNode[Expression] { + self: Product => +} + +abstract class UnaryExpression extends Expression with trees.UnaryNode[Expression] { + self: Product => + + override def references = child.references +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Projection.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Projection.scala new file mode 100644 index 0000000000000..c9b7cea6a3e5f --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Projection.scala @@ -0,0 +1,127 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +/** + * Converts a [[Row]] to another Row given a sequence of expression that define each column of the + * new row. If the schema of the input row is specified, then the given expression will be bound to + * that schema. + */ +class Projection(expressions: Seq[Expression]) extends (Row => Row) { + def this(expressions: Seq[Expression], inputSchema: Seq[Attribute]) = + this(expressions.map(BindReferences.bindReference(_, inputSchema))) + + protected val exprArray = expressions.toArray + + def apply(input: Row): Row = { + val outputArray = new Array[Any](exprArray.length) + var i = 0 + while (i < exprArray.length) { + outputArray(i) = exprArray(i).eval(input) + i += 1 + } + new GenericRow(outputArray) + } +} + +/** + * Converts a [[Row]] to another Row given a sequence of expression that define each column of th + * new row. If the schema of the input row is specified, then the given expression will be bound to + * that schema. + * + * In contrast to a normal projection, a MutableProjection reuses the same underlying row object + * each time an input row is added. This significatly reduces the cost of calcuating the + * projection, but means that it is not safe + */ +case class MutableProjection(expressions: Seq[Expression]) extends (Row => Row) { + def this(expressions: Seq[Expression], inputSchema: Seq[Attribute]) = + this(expressions.map(BindReferences.bindReference(_, inputSchema))) + + private[this] val exprArray = expressions.toArray + private[this] val mutableRow = new GenericMutableRow(exprArray.size) + def currentValue: Row = mutableRow + + def apply(input: Row): Row = { + var i = 0 + while (i < exprArray.length) { + mutableRow(i) = exprArray(i).eval(input) + i += 1 + } + mutableRow + } +} + +/** + * A mutable wrapper that makes two rows appear appear as a single concatenated row. Designed to + * be instantiated once per thread and reused. + */ +class JoinedRow extends Row { + private[this] var row1: Row = _ + private[this] var row2: Row = _ + + /** Updates this JoinedRow to used point at two new base rows. Returns itself. */ + def apply(r1: Row, r2: Row): Row = { + row1 = r1 + row2 = r2 + this + } + + def iterator = row1.iterator ++ row2.iterator + + def length = row1.length + row2.length + + def apply(i: Int) = + if (i < row1.size) row1(i) else row2(i - row1.size) + + def isNullAt(i: Int) = apply(i) == null + + def getInt(i: Int): Int = + if (i < row1.size) row1.getInt(i) else row2.getInt(i - row1.size) + + def getLong(i: Int): Long = + if (i < row1.size) row1.getLong(i) else row2.getLong(i - row1.size) + + def getDouble(i: Int): Double = + if (i < row1.size) row1.getDouble(i) else row2.getDouble(i - row1.size) + + def getBoolean(i: Int): Boolean = + if (i < row1.size) row1.getBoolean(i) else row2.getBoolean(i - row1.size) + + def getShort(i: Int): Short = + if (i < row1.size) row1.getShort(i) else row2.getShort(i - row1.size) + + def getByte(i: Int): Byte = + if (i < row1.size) row1.getByte(i) else row2.getByte(i - row1.size) + + def getFloat(i: Int): Float = + if (i < row1.size) row1.getFloat(i) else row2.getFloat(i - row1.size) + + def getString(i: Int): String = + if (i < row1.size) row1.getString(i) else row2.getString(i - row1.size) + + def copy() = { + val totalSize = row1.size + row2.size + val copiedValues = new Array[Any](totalSize) + var i = 0 + while(i < totalSize) { + copiedValues(i) = apply(i) + i += 1 + } + new GenericRow(copiedValues) + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Rand.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Rand.scala new file mode 100644 index 0000000000000..38f836f0a1a0e --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Rand.scala @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import java.util.Random +import org.apache.spark.sql.catalyst.types.DoubleType + + +case object Rand extends LeafExpression { + override def dataType = DoubleType + override def nullable = false + override def references = Set.empty + + private[this] lazy val rand = new Random + + override def eval(input: Row = null) = rand.nextDouble().asInstanceOf[EvaluatedType] + + override def toString = "RAND()" +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala new file mode 100644 index 0000000000000..77b5429bad432 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Row.scala @@ -0,0 +1,237 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.types.NativeType + +object Row { + /** + * This method can be used to extract fields from a [[Row]] object in a pattern match. Example: + * {{{ + * import org.apache.spark.sql._ + * + * val pairs = sql("SELECT key, value FROM src").rdd.map { + * case Row(key: Int, value: String) => + * key -> value + * } + * }}} + */ + def unapplySeq(row: Row): Some[Seq[Any]] = Some(row) +} + +/** + * Represents one row of output from a relational operator. Allows both generic access by ordinal, + * which will incur boxing overhead for primitives, as well as native primitive access. + * + * It is invalid to use the native primitive interface to retrieve a value that is null, instead a + * user must check [[isNullAt]] before attempting to retrieve a value that might be null. + */ +trait Row extends Seq[Any] with Serializable { + def apply(i: Int): Any + + def isNullAt(i: Int): Boolean + + def getInt(i: Int): Int + def getLong(i: Int): Long + def getDouble(i: Int): Double + def getFloat(i: Int): Float + def getBoolean(i: Int): Boolean + def getShort(i: Int): Short + def getByte(i: Int): Byte + def getString(i: Int): String + + override def toString() = + s"[${this.mkString(",")}]" + + def copy(): Row + + /** Returns true if there are any NULL values in this row. */ + def anyNull: Boolean = { + var i = 0 + while (i < length) { + if (isNullAt(i)) { return true } + i += 1 + } + false + } +} + +/** + * An extended interface to [[Row]] that allows the values for each column to be updated. Setting + * a value through a primitive function implicitly marks that column as not null. + */ +trait MutableRow extends Row { + def setNullAt(i: Int): Unit + + def update(ordinal: Int, value: Any) + + def setInt(ordinal: Int, value: Int) + def setLong(ordinal: Int, value: Long) + def setDouble(ordinal: Int, value: Double) + def setBoolean(ordinal: Int, value: Boolean) + def setShort(ordinal: Int, value: Short) + def setByte(ordinal: Int, value: Byte) + def setFloat(ordinal: Int, value: Float) + def setString(ordinal: Int, value: String) + + /** + * Experimental + * + * Returns a mutable string builder for the specified column. A given row should return the + * result of any mutations made to the returned buffer next time getString is called for the same + * column. + */ + def getStringBuilder(ordinal: Int): StringBuilder +} + +/** + * A row with no data. Calling any methods will result in an error. Can be used as a placeholder. + */ +object EmptyRow extends Row { + def apply(i: Int): Any = throw new UnsupportedOperationException + + def iterator = Iterator.empty + def length = 0 + def isNullAt(i: Int): Boolean = throw new UnsupportedOperationException + + def getInt(i: Int): Int = throw new UnsupportedOperationException + def getLong(i: Int): Long = throw new UnsupportedOperationException + def getDouble(i: Int): Double = throw new UnsupportedOperationException + def getFloat(i: Int): Float = throw new UnsupportedOperationException + def getBoolean(i: Int): Boolean = throw new UnsupportedOperationException + def getShort(i: Int): Short = throw new UnsupportedOperationException + def getByte(i: Int): Byte = throw new UnsupportedOperationException + def getString(i: Int): String = throw new UnsupportedOperationException + + def copy() = this +} + +/** + * A row implementation that uses an array of objects as the underlying storage. Note that, while + * the array is not copied, and thus could technically be mutated after creation, this is not + * allowed. + */ +class GenericRow(protected[catalyst] val values: Array[Any]) extends Row { + /** No-arg constructor for serialization. */ + def this() = this(null) + + def this(size: Int) = this(new Array[Any](size)) + + def iterator = values.iterator + + def length = values.length + + def apply(i: Int) = values(i) + + def isNullAt(i: Int) = values(i) == null + + def getInt(i: Int): Int = { + if (values(i) == null) sys.error("Failed to check null bit for primitive int value.") + values(i).asInstanceOf[Int] + } + + def getLong(i: Int): Long = { + if (values(i) == null) sys.error("Failed to check null bit for primitive long value.") + values(i).asInstanceOf[Long] + } + + def getDouble(i: Int): Double = { + if (values(i) == null) sys.error("Failed to check null bit for primitive double value.") + values(i).asInstanceOf[Double] + } + + def getFloat(i: Int): Float = { + if (values(i) == null) sys.error("Failed to check null bit for primitive float value.") + values(i).asInstanceOf[Float] + } + + def getBoolean(i: Int): Boolean = { + if (values(i) == null) sys.error("Failed to check null bit for primitive boolean value.") + values(i).asInstanceOf[Boolean] + } + + def getShort(i: Int): Short = { + if (values(i) == null) sys.error("Failed to check null bit for primitive short value.") + values(i).asInstanceOf[Short] + } + + def getByte(i: Int): Byte = { + if (values(i) == null) sys.error("Failed to check null bit for primitive byte value.") + values(i).asInstanceOf[Byte] + } + + def getString(i: Int): String = { + if (values(i) == null) sys.error("Failed to check null bit for primitive String value.") + values(i).asInstanceOf[String] + } + + def copy() = this +} + +class GenericMutableRow(size: Int) extends GenericRow(size) with MutableRow { + /** No-arg constructor for serialization. */ + def this() = this(0) + + def getStringBuilder(ordinal: Int): StringBuilder = ??? + + override def setBoolean(ordinal: Int,value: Boolean): Unit = { values(ordinal) = value } + override def setByte(ordinal: Int,value: Byte): Unit = { values(ordinal) = value } + override def setDouble(ordinal: Int,value: Double): Unit = { values(ordinal) = value } + override def setFloat(ordinal: Int,value: Float): Unit = { values(ordinal) = value } + override def setInt(ordinal: Int,value: Int): Unit = { values(ordinal) = value } + override def setLong(ordinal: Int,value: Long): Unit = { values(ordinal) = value } + override def setString(ordinal: Int,value: String): Unit = { values(ordinal) = value } + + override def setNullAt(i: Int): Unit = { values(i) = null } + + override def setShort(ordinal: Int,value: Short): Unit = { values(ordinal) = value } + + override def update(ordinal: Int,value: Any): Unit = { values(ordinal) = value } + + override def copy() = new GenericRow(values.clone()) +} + + +class RowOrdering(ordering: Seq[SortOrder]) extends Ordering[Row] { + def compare(a: Row, b: Row): Int = { + var i = 0 + while (i < ordering.size) { + val order = ordering(i) + val left = order.child.eval(a) + val right = order.child.eval(b) + + if (left == null && right == null) { + // Both null, continue looking. + } else if (left == null) { + return if (order.direction == Ascending) -1 else 1 + } else if (right == null) { + return if (order.direction == Ascending) 1 else -1 + } else { + val comparison = order.dataType match { + case n: NativeType if order.direction == Ascending => + n.ordering.asInstanceOf[Ordering[Any]].compare(left, right) + case n: NativeType if order.direction == Descending => + n.ordering.asInstanceOf[Ordering[Any]].reverse.compare(left, right) + } + if (comparison != 0) return comparison + } + i += 1 + } + return 0 + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ScalaUdf.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ScalaUdf.scala new file mode 100644 index 0000000000000..5e089f7618e0a --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ScalaUdf.scala @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.types.DataType + +case class ScalaUdf(function: AnyRef, dataType: DataType, children: Seq[Expression]) + extends Expression { + + type EvaluatedType = Any + + def references = children.flatMap(_.references).toSet + def nullable = true + + override def eval(input: Row): Any = { + children.size match { + case 1 => function.asInstanceOf[(Any) => Any](children(0).eval(input)) + case 2 => + function.asInstanceOf[(Any, Any) => Any]( + children(0).eval(input), + children(1).eval(input)) + } + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SortOrder.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SortOrder.scala new file mode 100644 index 0000000000000..08b2f11d20f5e --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SortOrder.scala @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.errors.TreeNodeException + +abstract sealed class SortDirection +case object Ascending extends SortDirection +case object Descending extends SortDirection + +/** + * An expression that can be used to sort a tuple. This class extends expression primarily so that + * transformations over expression will descend into its child. + */ +case class SortOrder(child: Expression, direction: SortDirection) extends UnaryExpression { + override def dataType = child.dataType + override def nullable = child.nullable + + // SortOrder itself is never evaluated. + override def eval(input: Row = null): EvaluatedType = + throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}") + + override def toString = s"$child ${if (direction == Ascending) "ASC" else "DESC"}" +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/WrapDynamic.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/WrapDynamic.scala new file mode 100644 index 0000000000000..e787c59e75723 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/WrapDynamic.scala @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import scala.language.dynamics + +import org.apache.spark.sql.catalyst.types.DataType + +case object DynamicType extends DataType + +case class WrapDynamic(children: Seq[Attribute]) extends Expression { + type EvaluatedType = DynamicRow + + def nullable = false + def references = children.toSet + def dataType = DynamicType + + override def eval(input: Row): DynamicRow = input match { + // Avoid copy for generic rows. + case g: GenericRow => new DynamicRow(children, g.values) + case otherRowType => new DynamicRow(children, otherRowType.toArray) + } +} + +class DynamicRow(val schema: Seq[Attribute], values: Array[Any]) + extends GenericRow(values) with Dynamic { + + def selectDynamic(attributeName: String): String = { + val ordinal = schema.indexWhere(_.name == attributeName) + values(ordinal).toString + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregates.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregates.scala new file mode 100644 index 0000000000000..b152f95f96c70 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregates.scala @@ -0,0 +1,270 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.catalyst.trees +import org.apache.spark.sql.catalyst.errors.TreeNodeException + +abstract class AggregateExpression extends Expression { + self: Product => + + /** + * Creates a new instance that can be used to compute this aggregate expression for a group + * of input rows/ + */ + def newInstance(): AggregateFunction + + /** + * [[AggregateExpression.eval]] should never be invoked because [[AggregateExpression]]'s are + * replaced with a physical aggregate operator at runtime. + */ + override def eval(input: Row = null): EvaluatedType = + throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}") +} + +/** + * Represents an aggregation that has been rewritten to be performed in two steps. + * + * @param finalEvaluation an aggregate expression that evaluates to same final result as the + * original aggregation. + * @param partialEvaluations A sequence of [[NamedExpression]]s that can be computed on partial + * data sets and are required to compute the `finalEvaluation`. + */ +case class SplitEvaluation( + finalEvaluation: Expression, + partialEvaluations: Seq[NamedExpression]) + +/** + * An [[AggregateExpression]] that can be partially computed without seeing all relevant tuples. + * These partial evaluations can then be combined to compute the actual answer. + */ +abstract class PartialAggregate extends AggregateExpression { + self: Product => + + /** + * Returns a [[SplitEvaluation]] that computes this aggregation using partial aggregation. + */ + def asPartial: SplitEvaluation +} + +/** + * A specific implementation of an aggregate function. Used to wrap a generic + * [[AggregateExpression]] with an algorithm that will be used to compute one specific result. + */ +abstract class AggregateFunction + extends AggregateExpression with Serializable with trees.LeafNode[Expression] { + self: Product => + + override type EvaluatedType = Any + + /** Base should return the generic aggregate expression that this function is computing */ + val base: AggregateExpression + override def references = base.references + override def nullable = base.nullable + override def dataType = base.dataType + + def update(input: Row): Unit + override def eval(input: Row): Any + + // Do we really need this? + override def newInstance() = makeCopy(productIterator.map { case a: AnyRef => a }.toArray) +} + +case class Count(child: Expression) extends PartialAggregate with trees.UnaryNode[Expression] { + override def references = child.references + override def nullable = false + override def dataType = IntegerType + override def toString = s"COUNT($child)" + + override def asPartial: SplitEvaluation = { + val partialCount = Alias(Count(child), "PartialCount")() + SplitEvaluation(Sum(partialCount.toAttribute), partialCount :: Nil) + } + + override def newInstance()= new CountFunction(child, this) +} + +case class CountDistinct(expressions: Seq[Expression]) extends AggregateExpression { + override def children = expressions + override def references = expressions.flatMap(_.references).toSet + override def nullable = false + override def dataType = IntegerType + override def toString = s"COUNT(DISTINCT ${expressions.mkString(",")}})" + override def newInstance()= new CountDistinctFunction(expressions, this) +} + +case class Average(child: Expression) extends PartialAggregate with trees.UnaryNode[Expression] { + override def references = child.references + override def nullable = false + override def dataType = DoubleType + override def toString = s"AVG($child)" + + override def asPartial: SplitEvaluation = { + val partialSum = Alias(Sum(child), "PartialSum")() + val partialCount = Alias(Count(child), "PartialCount")() + val castedSum = Cast(Sum(partialSum.toAttribute), dataType) + val castedCount = Cast(Sum(partialCount.toAttribute), dataType) + + SplitEvaluation( + Divide(castedSum, castedCount), + partialCount :: partialSum :: Nil) + } + + override def newInstance()= new AverageFunction(child, this) +} + +case class Sum(child: Expression) extends PartialAggregate with trees.UnaryNode[Expression] { + override def references = child.references + override def nullable = false + override def dataType = child.dataType + override def toString = s"SUM($child)" + + override def asPartial: SplitEvaluation = { + val partialSum = Alias(Sum(child), "PartialSum")() + SplitEvaluation( + Sum(partialSum.toAttribute), + partialSum :: Nil) + } + + override def newInstance()= new SumFunction(child, this) +} + +case class SumDistinct(child: Expression) + extends AggregateExpression with trees.UnaryNode[Expression] { + + override def references = child.references + override def nullable = false + override def dataType = child.dataType + override def toString = s"SUM(DISTINCT $child)" + + override def newInstance()= new SumDistinctFunction(child, this) +} + +case class First(child: Expression) extends PartialAggregate with trees.UnaryNode[Expression] { + override def references = child.references + override def nullable = child.nullable + override def dataType = child.dataType + override def toString = s"FIRST($child)" + + override def asPartial: SplitEvaluation = { + val partialFirst = Alias(First(child), "PartialFirst")() + SplitEvaluation( + First(partialFirst.toAttribute), + partialFirst :: Nil) + } + override def newInstance()= new FirstFunction(child, this) +} + +case class AverageFunction(expr: Expression, base: AggregateExpression) + extends AggregateFunction { + + def this() = this(null, null) // Required for serialization. + + private var count: Long = _ + private val sum = MutableLiteral(Cast(Literal(0), expr.dataType).eval(EmptyRow)) + private val sumAsDouble = Cast(sum, DoubleType) + + private val addFunction = Add(sum, expr) + + override def eval(input: Row): Any = + sumAsDouble.eval(EmptyRow).asInstanceOf[Double] / count.toDouble + + override def update(input: Row): Unit = { + count += 1 + sum.update(addFunction, input) + } +} + +case class CountFunction(expr: Expression, base: AggregateExpression) extends AggregateFunction { + def this() = this(null, null) // Required for serialization. + + var count: Int = _ + + override def update(input: Row): Unit = { + val evaluatedExpr = expr.map(_.eval(input)) + if (evaluatedExpr.map(_ != null).reduceLeft(_ || _)) { + count += 1 + } + } + + override def eval(input: Row): Any = count +} + +case class SumFunction(expr: Expression, base: AggregateExpression) extends AggregateFunction { + def this() = this(null, null) // Required for serialization. + + private val sum = MutableLiteral(Cast(Literal(0), expr.dataType).eval(null)) + + private val addFunction = Add(sum, expr) + + override def update(input: Row): Unit = { + sum.update(addFunction, input) + } + + override def eval(input: Row): Any = sum.eval(null) +} + +case class SumDistinctFunction(expr: Expression, base: AggregateExpression) + extends AggregateFunction { + + def this() = this(null, null) // Required for serialization. + + private val seen = new scala.collection.mutable.HashSet[Any]() + + override def update(input: Row): Unit = { + val evaluatedExpr = expr.eval(input) + if (evaluatedExpr != null) { + seen += evaluatedExpr + } + } + + override def eval(input: Row): Any = + seen.reduceLeft(base.dataType.asInstanceOf[NumericType].numeric.asInstanceOf[Numeric[Any]].plus) +} + +case class CountDistinctFunction(expr: Seq[Expression], base: AggregateExpression) + extends AggregateFunction { + + def this() = this(null, null) // Required for serialization. + + val seen = new scala.collection.mutable.HashSet[Any]() + + override def update(input: Row): Unit = { + val evaluatedExpr = expr.map(_.eval(input)) + if (evaluatedExpr.map(_ != null).reduceLeft(_ && _)) { + seen += evaluatedExpr + } + } + + override def eval(input: Row): Any = seen.size +} + +case class FirstFunction(expr: Expression, base: AggregateExpression) extends AggregateFunction { + def this() = this(null, null) // Required for serialization. + + var result: Any = null + + override def update(input: Row): Unit = { + if (result == null) { + result = expr.eval(input) + } + } + + override def eval(input: Row): Any = result +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala new file mode 100644 index 0000000000000..c79c1847cedf5 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.analysis.UnresolvedException +import org.apache.spark.sql.catalyst.types._ + +case class UnaryMinus(child: Expression) extends UnaryExpression { + type EvaluatedType = Any + + def dataType = child.dataType + override def foldable = child.foldable + def nullable = child.nullable + override def toString = s"-$child" + + override def eval(input: Row): Any = { + n1(child, input, _.negate(_)) + } +} + +abstract class BinaryArithmetic extends BinaryExpression { + self: Product => + + type EvaluatedType = Any + + def nullable = left.nullable || right.nullable + + override lazy val resolved = + left.resolved && right.resolved && left.dataType == right.dataType + + def dataType = { + if (!resolved) { + throw new UnresolvedException(this, + s"datatype. Can not resolve due to differing types ${left.dataType}, ${right.dataType}") + } + left.dataType + } +} + +case class Add(left: Expression, right: Expression) extends BinaryArithmetic { + def symbol = "+" + + override def eval(input: Row): Any = n2(input, left, right, _.plus(_, _)) +} + +case class Subtract(left: Expression, right: Expression) extends BinaryArithmetic { + def symbol = "-" + + override def eval(input: Row): Any = n2(input, left, right, _.minus(_, _)) +} + +case class Multiply(left: Expression, right: Expression) extends BinaryArithmetic { + def symbol = "*" + + override def eval(input: Row): Any = n2(input, left, right, _.times(_, _)) +} + +case class Divide(left: Expression, right: Expression) extends BinaryArithmetic { + def symbol = "/" + + override def eval(input: Row): Any = dataType match { + case _: FractionalType => f2(input, left, right, _.div(_, _)) + case _: IntegralType => i2(input, left , right, _.quot(_, _)) + } + +} + +case class Remainder(left: Expression, right: Expression) extends BinaryArithmetic { + def symbol = "%" + + override def eval(input: Row): Any = i2(input, left, right, _.rem(_, _)) +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypes.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypes.scala new file mode 100644 index 0000000000000..c947155cb701c --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypes.scala @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.types._ + +/** + * Returns the item at `ordinal` in the Array `child` or the Key `ordinal` in Map `child`. + */ +case class GetItem(child: Expression, ordinal: Expression) extends Expression { + type EvaluatedType = Any + + val children = child :: ordinal :: Nil + /** `Null` is returned for invalid ordinals. */ + override def nullable = true + override def references = children.flatMap(_.references).toSet + def dataType = child.dataType match { + case ArrayType(dt) => dt + case MapType(_, vt) => vt + } + override lazy val resolved = + childrenResolved && + (child.dataType.isInstanceOf[ArrayType] || child.dataType.isInstanceOf[MapType]) + + override def toString = s"$child[$ordinal]" + + override def eval(input: Row): Any = { + if (child.dataType.isInstanceOf[ArrayType]) { + val baseValue = child.eval(input).asInstanceOf[Seq[_]] + val o = ordinal.eval(input).asInstanceOf[Int] + if (baseValue == null) { + null + } else if (o >= baseValue.size || o < 0) { + null + } else { + baseValue(o) + } + } else { + val baseValue = child.eval(input).asInstanceOf[Map[Any, _]] + val key = ordinal.eval(input) + if (baseValue == null) { + null + } else { + baseValue.get(key).orNull + } + } + } +} + +/** + * Returns the value of fields in the Struct `child`. + */ +case class GetField(child: Expression, fieldName: String) extends UnaryExpression { + type EvaluatedType = Any + + def dataType = field.dataType + def nullable = field.nullable + + protected def structType = child.dataType match { + case s: StructType => s + case otherType => sys.error(s"GetField is not valid on fields of type $otherType") + } + + lazy val field = + structType.fields + .find(_.name == fieldName) + .getOrElse(sys.error(s"No such field $fieldName in ${child.dataType}")) + + lazy val ordinal = structType.fields.indexOf(field) + + override lazy val resolved = childrenResolved && child.dataType.isInstanceOf[StructType] + + override def eval(input: Row): Any = { + val baseValue = child.eval(input).asInstanceOf[Row] + if (baseValue == null) null else baseValue(ordinal) + } + + override def toString = s"$child.$fieldName" +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/generators.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/generators.scala new file mode 100644 index 0000000000000..dd78614754e12 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/generators.scala @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.trees +import org.apache.spark.sql.catalyst.types._ + +/** + * An expression that produces zero or more rows given a single input row. + * + * Generators produce multiple output rows instead of a single value like other expressions, + * and thus they must have a schema to associate with the rows that are output. + * + * However, unlike row producing relational operators, which are either leaves or determine their + * output schema functionally from their input, generators can contain other expressions that + * might result in their modification by rules. This structure means that they might be copied + * multiple times after first determining their output schema. If a new output schema is created for + * each copy references up the tree might be rendered invalid. As a result generators must + * instead define a function `makeOutput` which is called only once when the schema is first + * requested. The attributes produced by this function will be automatically copied anytime rules + * result in changes to the Generator or its children. + */ +abstract class Generator extends Expression { + self: Product => + + override type EvaluatedType = TraversableOnce[Row] + + override lazy val dataType = + ArrayType(StructType(output.map(a => StructField(a.name, a.dataType, a.nullable)))) + + override def nullable = false + + override def references = children.flatMap(_.references).toSet + + /** + * Should be overridden by specific generators. Called only once for each instance to ensure + * that rule application does not change the output schema of a generator. + */ + protected def makeOutput(): Seq[Attribute] + + private var _output: Seq[Attribute] = null + + def output: Seq[Attribute] = { + if (_output == null) { + _output = makeOutput() + } + _output + } + + /** Should be implemented by child classes to perform specific Generators. */ + override def eval(input: Row): TraversableOnce[Row] + + /** Overridden `makeCopy` also copies the attributes that are produced by this generator. */ + override def makeCopy(newArgs: Array[AnyRef]): this.type = { + val copy = super.makeCopy(newArgs) + copy._output = _output + copy + } +} + +/** + * Given an input array produces a sequence of rows for each value in the array. + */ +case class Explode(attributeNames: Seq[String], child: Expression) + extends Generator with trees.UnaryNode[Expression] { + + override lazy val resolved = + child.resolved && + (child.dataType.isInstanceOf[ArrayType] || child.dataType.isInstanceOf[MapType]) + + private lazy val elementTypes = child.dataType match { + case ArrayType(et) => et :: Nil + case MapType(kt,vt) => kt :: vt :: Nil + } + + // TODO: Move this pattern into Generator. + protected def makeOutput() = + if (attributeNames.size == elementTypes.size) { + attributeNames.zip(elementTypes).map { + case (n, t) => AttributeReference(n, t, nullable = true)() + } + } else { + elementTypes.zipWithIndex.map { + case (t, i) => AttributeReference(s"c_$i", t, nullable = true)() + } + } + + override def eval(input: Row): TraversableOnce[Row] = { + child.dataType match { + case ArrayType(_) => + val inputArray = child.eval(input).asInstanceOf[Seq[Any]] + if (inputArray == null) Nil else inputArray.map(v => new GenericRow(Array(v))) + case MapType(_, _) => + val inputMap = child.eval(input).asInstanceOf[Map[Any,Any]] + if (inputMap == null) Nil else inputMap.map { case (k,v) => new GenericRow(Array(k,v)) } + } + } + + override def toString() = s"explode($child)" +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/literals.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/literals.scala new file mode 100644 index 0000000000000..e15e16d633365 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/literals.scala @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import java.sql.Timestamp + +import org.apache.spark.sql.catalyst.types._ + +object Literal { + def apply(v: Any): Literal = v match { + case i: Int => Literal(i, IntegerType) + case l: Long => Literal(l, LongType) + case d: Double => Literal(d, DoubleType) + case f: Float => Literal(f, FloatType) + case b: Byte => Literal(b, ByteType) + case s: Short => Literal(s, ShortType) + case s: String => Literal(s, StringType) + case b: Boolean => Literal(b, BooleanType) + case d: BigDecimal => Literal(d, DecimalType) + case t: Timestamp => Literal(t, TimestampType) + case a: Array[Byte] => Literal(a, BinaryType) + case null => Literal(null, NullType) + } +} + +/** + * Extractor for retrieving Int literals. + */ +object IntegerLiteral { + def unapply(a: Any): Option[Int] = a match { + case Literal(a: Int, IntegerType) => Some(a) + case _ => None + } +} + +case class Literal(value: Any, dataType: DataType) extends LeafExpression { + + override def foldable = true + def nullable = value == null + def references = Set.empty + + override def toString = if (value != null) value.toString else "null" + + type EvaluatedType = Any + override def eval(input: Row):Any = value +} + +// TODO: Specialize +case class MutableLiteral(var value: Any, nullable: Boolean = true) extends LeafExpression { + type EvaluatedType = Any + + val dataType = Literal(value).dataType + + def references = Set.empty + + def update(expression: Expression, input: Row) = { + value = expression.eval(input) + } + + override def eval(input: Row) = value +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala new file mode 100644 index 0000000000000..a8145c37c20fa --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.trees +import org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute +import org.apache.spark.sql.catalyst.errors.TreeNodeException +import org.apache.spark.sql.catalyst.types._ + +object NamedExpression { + private val curId = new java.util.concurrent.atomic.AtomicLong() + def newExprId = ExprId(curId.getAndIncrement()) +} + +/** + * A globally (within this JVM) id for a given named expression. + * Used to identify with attribute output by a relation is being + * referenced in a subsequent computation. + */ +case class ExprId(id: Long) + +abstract class NamedExpression extends Expression { + self: Product => + + def name: String + def exprId: ExprId + def qualifiers: Seq[String] + + def toAttribute: Attribute + + protected def typeSuffix = + if (resolved) { + dataType match { + case LongType => "L" + case _ => "" + } + } else { + "" + } +} + +abstract class Attribute extends NamedExpression { + self: Product => + + def withQualifiers(newQualifiers: Seq[String]): Attribute + + def toAttribute = this + def newInstance: Attribute + override def references = Set(this) +} + +/** + * Used to assign a new name to a computation. + * For example the SQL expression "1 + 1 AS a" could be represented as follows: + * Alias(Add(Literal(1), Literal(1), "a")() + * + * @param child the computation being performed + * @param name the name to be associated with the result of computing [[child]]. + * @param exprId A globally unique id used to check if an [[AttributeReference]] refers to this + * alias. Auto-assigned if left blank. + */ +case class Alias(child: Expression, name: String) + (val exprId: ExprId = NamedExpression.newExprId, val qualifiers: Seq[String] = Nil) + extends NamedExpression with trees.UnaryNode[Expression] { + + override type EvaluatedType = Any + + override def eval(input: Row) = child.eval(input) + + override def dataType = child.dataType + override def nullable = child.nullable + override def references = child.references + + override def toAttribute = { + if (resolved) { + AttributeReference(name, child.dataType, child.nullable)(exprId, qualifiers) + } else { + UnresolvedAttribute(name) + } + } + + override def toString: String = s"$child AS $name#${exprId.id}$typeSuffix" + + override protected final def otherCopyArgs = exprId :: qualifiers :: Nil +} + +/** + * A reference to an attribute produced by another operator in the tree. + * + * @param name The name of this attribute, should only be used during analysis or for debugging. + * @param dataType The [[types.DataType DataType]] of this attribute. + * @param nullable True if null is a valid value for this attribute. + * @param exprId A globally unique id used to check if different AttributeReferences refer to the + * same attribute. + * @param qualifiers a list of strings that can be used to referred to this attribute in a fully + * qualified way. Consider the examples tableName.name, subQueryAlias.name. + * tableName and subQueryAlias are possible qualifiers. + */ +case class AttributeReference(name: String, dataType: DataType, nullable: Boolean = true) + (val exprId: ExprId = NamedExpression.newExprId, val qualifiers: Seq[String] = Nil) + extends Attribute with trees.LeafNode[Expression] { + + override def equals(other: Any) = other match { + case ar: AttributeReference => exprId == ar.exprId && dataType == ar.dataType + case _ => false + } + + override def hashCode: Int = { + // See http://stackoverflow.com/questions/113511/hash-code-implementation + var h = 17 + h = h * 37 + exprId.hashCode() + h = h * 37 + dataType.hashCode() + h + } + + override def newInstance = AttributeReference(name, dataType, nullable)(qualifiers = qualifiers) + + /** + * Returns a copy of this [[AttributeReference]] with changed nullability. + */ + def withNullability(newNullability: Boolean) = { + if (nullable == newNullability) { + this + } else { + AttributeReference(name, dataType, newNullability)(exprId, qualifiers) + } + } + + /** + * Returns a copy of this [[AttributeReference]] with new qualifiers. + */ + override def withQualifiers(newQualifiers: Seq[String]) = { + if (newQualifiers == qualifiers) { + this + } else { + AttributeReference(name, dataType, nullable)(exprId, newQualifiers) + } + } + + // Unresolved attributes are transient at compile time and don't get evaluated during execution. + override def eval(input: Row = null): EvaluatedType = + throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}") + + override def toString: String = s"$name#${exprId.id}$typeSuffix" +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullFunctions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullFunctions.scala new file mode 100644 index 0000000000000..ce6d99c911ab3 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullFunctions.scala @@ -0,0 +1,74 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.trees +import org.apache.spark.sql.catalyst.analysis.UnresolvedException + +case class Coalesce(children: Seq[Expression]) extends Expression { + type EvaluatedType = Any + + /** Coalesce is nullable if all of its children are nullable, or if it has no children. */ + def nullable = !children.exists(!_.nullable) + + def references = children.flatMap(_.references).toSet + // Coalesce is foldable if all children are foldable. + override def foldable = !children.exists(!_.foldable) + + // Only resolved if all the children are of the same type. + override lazy val resolved = childrenResolved && (children.map(_.dataType).distinct.size == 1) + + override def toString = s"Coalesce(${children.mkString(",")})" + + def dataType = if (resolved) { + children.head.dataType + } else { + throw new UnresolvedException(this, "Coalesce cannot have children of different types.") + } + + override def eval(input: Row): Any = { + var i = 0 + var result: Any = null + while(i < children.size && result == null) { + result = children(i).eval(input) + i += 1 + } + result + } +} + +case class IsNull(child: Expression) extends Predicate with trees.UnaryNode[Expression] { + def references = child.references + override def foldable = child.foldable + def nullable = false + + override def eval(input: Row): Any = { + child.eval(input) == null + } +} + +case class IsNotNull(child: Expression) extends Predicate with trees.UnaryNode[Expression] { + def references = child.references + override def foldable = child.foldable + def nullable = false + override def toString = s"IS NOT NULL $child" + + override def eval(input: Row): Any = { + child.eval(input) != null + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/package.scala new file mode 100644 index 0000000000000..573ec052f4266 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/package.scala @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +/** + * A set of classes that can be used to represent trees of relational expressions. A key goal of + * the expression library is to hide the details of naming and scoping from developers who want to + * manipulate trees of relational operators. As such, the library defines a special type of + * expression, a [[NamedExpression]] in addition to the standard collection of expressions. + * + * ==Standard Expressions== + * A library of standard expressions (e.g., [[Add]], [[Equals]]), aggregates (e.g., SUM, COUNT), + * and other computations (e.g. UDFs). Each expression type is capable of determining its output + * schema as a function of its children's output schema. + * + * ==Named Expressions== + * Some expression are named and thus can be referenced by later operators in the dataflow graph. + * The two types of named expressions are [[AttributeReference]]s and [[Alias]]es. + * [[AttributeReference]]s refer to attributes of the input tuple for a given operator and form + * the leaves of some expression trees. Aliases assign a name to intermediate computations. + * For example, in the SQL statement `SELECT a+b AS c FROM ...`, the expressions `a` and `b` would + * be represented by `AttributeReferences` and `c` would be represented by an `Alias`. + * + * During [[analysis]], all named expressions are assigned a globally unique expression id, which + * can be used for equality comparisons. While the original names are kept around for debugging + * purposes, they should never be used to check if two attributes refer to the same value, as + * plan transformations can result in the introduction of naming ambiguity. For example, consider + * a plan that contains subqueries, both of which are reading from the same table. If an + * optimization removes the subqueries, scoping information would be destroyed, eliminating the + * ability to reason about which subquery produced a given attribute. + * + * ==Evaluation== + * The result of expressions can be evaluated using the `Expression.apply(Row)` method. + */ +package object expressions diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala new file mode 100644 index 0000000000000..da5b2cf5b0362 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala @@ -0,0 +1,171 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import org.apache.spark.sql.catalyst.trees +import org.apache.spark.sql.catalyst.errors.TreeNodeException +import org.apache.spark.sql.catalyst.analysis.UnresolvedException +import org.apache.spark.sql.catalyst.types.{BooleanType, StringType, TimestampType} + +object InterpretedPredicate { + def apply(expression: Expression): (Row => Boolean) = { + (r: Row) => expression.eval(r).asInstanceOf[Boolean] + } +} + +trait Predicate extends Expression { + self: Product => + + def dataType = BooleanType + + type EvaluatedType = Any +} + +trait PredicateHelper { + def splitConjunctivePredicates(condition: Expression): Seq[Expression] = condition match { + case And(cond1, cond2) => splitConjunctivePredicates(cond1) ++ splitConjunctivePredicates(cond2) + case other => other :: Nil + } +} + +abstract class BinaryPredicate extends BinaryExpression with Predicate { + self: Product => + def nullable = left.nullable || right.nullable +} + +case class Not(child: Expression) extends Predicate with trees.UnaryNode[Expression] { + def references = child.references + override def foldable = child.foldable + def nullable = child.nullable + override def toString = s"NOT $child" + + override def eval(input: Row): Any = { + child.eval(input) match { + case null => null + case b: Boolean => !b + } + } +} + +/** + * Evaluates to `true` if `list` contains `value`. + */ +case class In(value: Expression, list: Seq[Expression]) extends Predicate { + def children = value +: list + def references = children.flatMap(_.references).toSet + def nullable = true // TODO: Figure out correct nullability semantics of IN. + override def toString = s"$value IN ${list.mkString("(", ",", ")")}" + + override def eval(input: Row): Any = { + val evaluatedValue = value.eval(input) + list.exists(e => e.eval(input) == evaluatedValue) + } +} + +case class And(left: Expression, right: Expression) extends BinaryPredicate { + def symbol = "&&" + + override def eval(input: Row): Any = { + val l = left.eval(input) + val r = right.eval(input) + if (l == false || r == false) { + false + } else if (l == null || r == null ) { + null + } else { + true + } + } +} + +case class Or(left: Expression, right: Expression) extends BinaryPredicate { + def symbol = "||" + + override def eval(input: Row): Any = { + val l = left.eval(input) + val r = right.eval(input) + if (l == true || r == true) { + true + } else if (l == null || r == null) { + null + } else { + false + } + } +} + +abstract class BinaryComparison extends BinaryPredicate { + self: Product => +} + +case class Equals(left: Expression, right: Expression) extends BinaryComparison { + def symbol = "=" + override def eval(input: Row): Any = { + val l = left.eval(input) + val r = right.eval(input) + if (l == null || r == null) null else l == r + } +} + +case class LessThan(left: Expression, right: Expression) extends BinaryComparison { + def symbol = "<" + override def eval(input: Row): Any = c2(input, left, right, _.lt(_, _)) +} + +case class LessThanOrEqual(left: Expression, right: Expression) extends BinaryComparison { + def symbol = "<=" + override def eval(input: Row): Any = c2(input, left, right, _.lteq(_, _)) +} + +case class GreaterThan(left: Expression, right: Expression) extends BinaryComparison { + def symbol = ">" + override def eval(input: Row): Any = c2(input, left, right, _.gt(_, _)) +} + +case class GreaterThanOrEqual(left: Expression, right: Expression) extends BinaryComparison { + def symbol = ">=" + override def eval(input: Row): Any = c2(input, left, right, _.gteq(_, _)) +} + +case class If(predicate: Expression, trueValue: Expression, falseValue: Expression) + extends Expression { + + def children = predicate :: trueValue :: falseValue :: Nil + def nullable = trueValue.nullable || falseValue.nullable + def references = children.flatMap(_.references).toSet + override lazy val resolved = childrenResolved && trueValue.dataType == falseValue.dataType + def dataType = { + if (!resolved) { + throw new UnresolvedException( + this, + s"Can not resolve due to differing types ${trueValue.dataType}, ${falseValue.dataType}") + } + trueValue.dataType + } + + type EvaluatedType = Any + override def eval(input: Row): Any = { + if (predicate.eval(input).asInstanceOf[Boolean]) { + trueValue.eval(input) + } else { + falseValue.eval(input) + } + } + + override def toString = s"if ($predicate) $trueValue else $falseValue" +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala new file mode 100644 index 0000000000000..a27c71db1b999 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import java.util.regex.Pattern + +import org.apache.spark.sql.catalyst.types.DataType +import org.apache.spark.sql.catalyst.types.StringType +import org.apache.spark.sql.catalyst.types.BooleanType + + +trait StringRegexExpression { + self: BinaryExpression => + + type EvaluatedType = Any + + def escape(v: String): String + def matches(regex: Pattern, str: String): Boolean + + def nullable: Boolean = true + def dataType: DataType = BooleanType + + // try cache the pattern for Literal + private lazy val cache: Pattern = right match { + case x @ Literal(value: String, StringType) => compile(value) + case _ => null + } + + protected def compile(str: String): Pattern = if(str == null) { + null + } else { + // Let it raise exception if couldn't compile the regex string + Pattern.compile(escape(str)) + } + + protected def pattern(str: String) = if(cache == null) compile(str) else cache + + override def eval(input: Row): Any = { + val l = left.eval(input) + if (l == null) { + null + } else { + val r = right.eval(input) + if(r == null) { + null + } else { + val regex = pattern(r.asInstanceOf[String]) + if(regex == null) { + null + } else { + matches(regex, l.asInstanceOf[String]) + } + } + } + } +} + +/** + * Simple RegEx pattern matching function + */ +case class Like(left: Expression, right: Expression) + extends BinaryExpression with StringRegexExpression { + + def symbol = "LIKE" + + // replace the _ with .{1} exactly match 1 time of any character + // replace the % with .*, match 0 or more times with any character + override def escape(v: String) = { + val sb = new StringBuilder() + var i = 0; + while (i < v.length) { + // Make a special case for "\\_" and "\\%" + val n = v.charAt(i); + if (n == '\\' && i + 1 < v.length && (v.charAt(i + 1) == '_' || v.charAt(i + 1) == '%')) { + sb.append(v.charAt(i + 1)) + i += 1 + } else { + if (n == '_') { + sb.append("."); + } else if (n == '%') { + sb.append(".*"); + } else { + sb.append(Pattern.quote(Character.toString(n))); + } + } + + i += 1 + } + + sb.toString() + } + + override def matches(regex: Pattern, str: String): Boolean = regex.matcher(str).matches() +} + +case class RLike(left: Expression, right: Expression) + extends BinaryExpression with StringRegexExpression { + + def symbol = "RLIKE" + override def escape(v: String): String = v + override def matches(regex: Pattern, str: String): Boolean = regex.matcher(str).find(0) +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala new file mode 100644 index 0000000000000..37b23ba58289c --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala @@ -0,0 +1,168 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.optimizer + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.Inner +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.rules._ +import org.apache.spark.sql.catalyst.types._ + +object Optimizer extends RuleExecutor[LogicalPlan] { + val batches = + Batch("ConstantFolding", Once, + ConstantFolding, + BooleanSimplification, + SimplifyFilters, + SimplifyCasts) :: + Batch("Filter Pushdown", Once, + CombineFilters, + PushPredicateThroughProject, + PushPredicateThroughInnerJoin) :: Nil +} + +/** + * Replaces [[catalyst.expressions.Expression Expressions]] that can be statically evaluated with + * equivalent [[catalyst.expressions.Literal Literal]] values. + */ +object ConstantFolding extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case q: LogicalPlan => q transformExpressionsDown { + // Skip redundant folding of literals. + case l: Literal => l + case e if e.foldable => Literal(e.eval(null), e.dataType) + } + } +} + +/** + * Simplifies boolean expressions where the answer can be determined without evaluating both sides. + * Note that this rule can eliminate expressions that might otherwise have been evaluated and thus + * is only safe when evaluations of expressions does not result in side effects. + */ +object BooleanSimplification extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case q: LogicalPlan => q transformExpressionsUp { + case and @ And(left, right) => + (left, right) match { + case (Literal(true, BooleanType), r) => r + case (l, Literal(true, BooleanType)) => l + case (Literal(false, BooleanType), _) => Literal(false) + case (_, Literal(false, BooleanType)) => Literal(false) + case (_, _) => and + } + + case or @ Or(left, right) => + (left, right) match { + case (Literal(true, BooleanType), _) => Literal(true) + case (_, Literal(true, BooleanType)) => Literal(true) + case (Literal(false, BooleanType), r) => r + case (l, Literal(false, BooleanType)) => l + case (_, _) => or + } + } + } +} + +/** + * Combines two adjacent [[catalyst.plans.logical.Filter Filter]] operators into one, merging the + * conditions into one conjunctive predicate. + */ +object CombineFilters extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case ff @ Filter(fc, nf @ Filter(nc, grandChild)) => Filter(And(nc, fc), grandChild) + } +} + +/** + * Removes filters that can be evaluated trivially. This is done either by eliding the filter for + * cases where it will always evaluate to `true`, or substituting a dummy empty relation when the + * filter will always evaluate to `false`. + */ +object SimplifyFilters extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case Filter(Literal(true, BooleanType), child) => + child + case Filter(Literal(null, _), child) => + LocalRelation(child.output) + case Filter(Literal(false, BooleanType), child) => + LocalRelation(child.output) + } +} + +/** + * Pushes [[catalyst.plans.logical.Filter Filter]] operators through + * [[catalyst.plans.logical.Project Project]] operators, in-lining any + * [[catalyst.expressions.Alias Aliases]] that were defined in the projection. + * + * This heuristic is valid assuming the expression evaluation cost is minimal. + */ +object PushPredicateThroughProject extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case filter @ Filter(condition, project @ Project(fields, grandChild)) => + val sourceAliases = fields.collect { case a @ Alias(c, _) => + (a.toAttribute: Attribute) -> c + }.toMap + project.copy(child = filter.copy( + replaceAlias(condition, sourceAliases), + grandChild)) + } + + def replaceAlias(condition: Expression, sourceAliases: Map[Attribute, Expression]): Expression = { + condition transform { + case a: AttributeReference => sourceAliases.getOrElse(a, a) + } + } +} + +/** + * Pushes down [[catalyst.plans.logical.Filter Filter]] operators where the `condition` can be + * evaluated using only the attributes of the left or right side of an inner join. Other + * [[catalyst.plans.logical.Filter Filter]] conditions are moved into the `condition` of the + * [[catalyst.plans.logical.Join Join]]. + */ +object PushPredicateThroughInnerJoin extends Rule[LogicalPlan] with PredicateHelper { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case f @ Filter(filterCondition, Join(left, right, Inner, joinCondition)) => + val allConditions = + splitConjunctivePredicates(filterCondition) ++ + joinCondition.map(splitConjunctivePredicates).getOrElse(Nil) + + // Split the predicates into those that can be evaluated on the left, right, and those that + // must be evaluated after the join. + val (rightConditions, leftOrJoinConditions) = + allConditions.partition(_.references subsetOf right.outputSet) + val (leftConditions, joinConditions) = + leftOrJoinConditions.partition(_.references subsetOf left.outputSet) + + // Build the new left and right side, optionally with the pushed down filters. + val newLeft = leftConditions.reduceLeftOption(And).map(Filter(_, left)).getOrElse(left) + val newRight = rightConditions.reduceLeftOption(And).map(Filter(_, right)).getOrElse(right) + Join(newLeft, newRight, Inner, joinConditions.reduceLeftOption(And)) + } +} + +/** + * Removes [[catalyst.expressions.Cast Casts]] that are unnecessary because the input is already + * the correct type. + */ +object SimplifyCasts extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transformAllExpressions { + case Cast(e, dataType) if e.dataType == dataType => e + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/QueryPlanner.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/QueryPlanner.scala new file mode 100644 index 0000000000000..67833664b35ae --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/QueryPlanner.scala @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.planning + +import org.apache.spark.sql.Logging +import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan +import org.apache.spark.sql.catalyst.trees.TreeNode + +/** + * Abstract class for transforming [[plans.logical.LogicalPlan LogicalPlan]]s into physical plans. + * Child classes are responsible for specifying a list of [[Strategy]] objects that each of which + * can return a list of possible physical plan options. If a given strategy is unable to plan all + * of the remaining operators in the tree, it can call [[planLater]], which returns a placeholder + * object that will be filled in using other available strategies. + * + * TODO: RIGHT NOW ONLY ONE PLAN IS RETURNED EVER... + * PLAN SPACE EXPLORATION WILL BE IMPLEMENTED LATER. + * + * @tparam PhysicalPlan The type of physical plan produced by this [[QueryPlanner]] + */ +abstract class QueryPlanner[PhysicalPlan <: TreeNode[PhysicalPlan]] { + /** A list of execution strategies that can be used by the planner */ + def strategies: Seq[Strategy] + + /** + * Given a [[plans.logical.LogicalPlan LogicalPlan]], returns a list of `PhysicalPlan`s that can + * be used for execution. If this strategy does not apply to the give logical operation then an + * empty list should be returned. + */ + abstract protected class Strategy extends Logging { + def apply(plan: LogicalPlan): Seq[PhysicalPlan] + } + + /** + * Returns a placeholder for a physical plan that executes `plan`. This placeholder will be + * filled in automatically by the QueryPlanner using the other execution strategies that are + * available. + */ + protected def planLater(plan: LogicalPlan) = apply(plan).next() + + def apply(plan: LogicalPlan): Iterator[PhysicalPlan] = { + // Obviously a lot to do here still... + val iter = strategies.view.flatMap(_(plan)).toIterator + assert(iter.hasNext, s"No plan for $plan") + iter + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/package.scala new file mode 100644 index 0000000000000..0a030b6c21f1f --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/package.scala @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +/** + * Contains classes for enumerating possible physical plans for a given logical query plan. + */ +package object planning diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/patterns.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/patterns.scala new file mode 100644 index 0000000000000..6dd816aa91dd1 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/planning/patterns.scala @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.planning + +import scala.annotation.tailrec + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical._ + +/** + * A pattern that matches any number of filter operations on top of another relational operator. + * Adjacent filter operators are collected and their conditions are broken up and returned as a + * sequence of conjunctive predicates. + * + * @return A tuple containing a sequence of conjunctive predicates that should be used to filter the + * output and a relational operator. + */ +object FilteredOperation extends PredicateHelper { + type ReturnType = (Seq[Expression], LogicalPlan) + + def unapply(plan: LogicalPlan): Option[ReturnType] = Some(collectFilters(Nil, plan)) + + @tailrec + private def collectFilters(filters: Seq[Expression], plan: LogicalPlan): ReturnType = plan match { + case Filter(condition, child) => + collectFilters(filters ++ splitConjunctivePredicates(condition), child) + case other => (filters, other) + } +} + +/** + * A pattern that matches any number of project or filter operations on top of another relational + * operator. All filter operators are collected and their conditions are broken up and returned + * together with the top project operator. + * [[org.apache.spark.sql.catalyst.expressions.Alias Aliases]] are in-lined/substituted if + * necessary. + */ +object PhysicalOperation extends PredicateHelper { + type ReturnType = (Seq[NamedExpression], Seq[Expression], LogicalPlan) + + def unapply(plan: LogicalPlan): Option[ReturnType] = { + val (fields, filters, child, _) = collectProjectsAndFilters(plan) + Some((fields.getOrElse(child.output), filters, child)) + } + + /** + * Collects projects and filters, in-lining/substituting aliases if necessary. Here are two + * examples for alias in-lining/substitution. Before: + * {{{ + * SELECT c1 FROM (SELECT key AS c1 FROM t1) t2 WHERE c1 > 10 + * SELECT c1 AS c2 FROM (SELECT key AS c1 FROM t1) t2 WHERE c1 > 10 + * }}} + * After: + * {{{ + * SELECT key AS c1 FROM t1 WHERE key > 10 + * SELECT key AS c2 FROM t1 WHERE key > 10 + * }}} + */ + def collectProjectsAndFilters(plan: LogicalPlan): + (Option[Seq[NamedExpression]], Seq[Expression], LogicalPlan, Map[Attribute, Expression]) = + plan match { + case Project(fields, child) => + val (_, filters, other, aliases) = collectProjectsAndFilters(child) + val substitutedFields = fields.map(substitute(aliases)).asInstanceOf[Seq[NamedExpression]] + (Some(substitutedFields), filters, other, collectAliases(substitutedFields)) + + case Filter(condition, child) => + val (fields, filters, other, aliases) = collectProjectsAndFilters(child) + val substitutedCondition = substitute(aliases)(condition) + (fields, filters ++ splitConjunctivePredicates(substitutedCondition), other, aliases) + + case other => + (None, Nil, other, Map.empty) + } + + def collectAliases(fields: Seq[Expression]) = fields.collect { + case a @ Alias(child, _) => a.toAttribute.asInstanceOf[Attribute] -> child + }.toMap + + def substitute(aliases: Map[Attribute, Expression])(expr: Expression) = expr.transform { + case a @ Alias(ref: AttributeReference, name) => + aliases.get(ref).map(Alias(_, name)(a.exprId, a.qualifiers)).getOrElse(a) + + case a: AttributeReference => + aliases.get(a).map(Alias(_, a.name)(a.exprId, a.qualifiers)).getOrElse(a) + } +} + +/** + * A pattern that collects all adjacent unions and returns their children as a Seq. + */ +object Unions { + def unapply(plan: LogicalPlan): Option[Seq[LogicalPlan]] = plan match { + case u: Union => Some(collectUnionChildren(u)) + case _ => None + } + + private def collectUnionChildren(plan: LogicalPlan): Seq[LogicalPlan] = plan match { + case Union(l, r) => collectUnionChildren(l) ++ collectUnionChildren(r) + case other => other :: Nil + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/QueryPlan.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/QueryPlan.scala new file mode 100644 index 0000000000000..8199a80f5d6bd --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/QueryPlan.scala @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans + +import org.apache.spark.sql.catalyst.expressions.{Attribute, Expression} +import org.apache.spark.sql.catalyst.trees.TreeNode + +abstract class QueryPlan[PlanType <: TreeNode[PlanType]] extends TreeNode[PlanType] { + self: PlanType with Product => + + def output: Seq[Attribute] + + /** + * Returns the set of attributes that are output by this node. + */ + def outputSet: Set[Attribute] = output.toSet + + /** + * Runs [[transform]] with `rule` on all expressions present in this query operator. + * Users should not expect a specific directionality. If a specific directionality is needed, + * transformExpressionsDown or transformExpressionsUp should be used. + * @param rule the rule to be applied to every expression in this operator. + */ + def transformExpressions(rule: PartialFunction[Expression, Expression]): this.type = { + transformExpressionsDown(rule) + } + + /** + * Runs [[transformDown]] with `rule` on all expressions present in this query operator. + * @param rule the rule to be applied to every expression in this operator. + */ + def transformExpressionsDown(rule: PartialFunction[Expression, Expression]): this.type = { + var changed = false + + @inline def transformExpressionDown(e: Expression) = { + val newE = e.transformDown(rule) + if (newE.id != e.id && newE != e) { + changed = true + newE + } else { + e + } + } + + val newArgs = productIterator.map { + case e: Expression => transformExpressionDown(e) + case Some(e: Expression) => Some(transformExpressionDown(e)) + case m: Map[_,_] => m + case seq: Traversable[_] => seq.map { + case e: Expression => transformExpressionDown(e) + case other => other + } + case other: AnyRef => other + }.toArray + + if (changed) makeCopy(newArgs) else this + } + + /** + * Runs [[transformUp]] with `rule` on all expressions present in this query operator. + * @param rule the rule to be applied to every expression in this operator. + * @return + */ + def transformExpressionsUp(rule: PartialFunction[Expression, Expression]): this.type = { + var changed = false + + @inline def transformExpressionUp(e: Expression) = { + val newE = e.transformUp(rule) + if (newE.id != e.id && newE != e) { + changed = true + newE + } else { + e + } + } + + val newArgs = productIterator.map { + case e: Expression => transformExpressionUp(e) + case Some(e: Expression) => Some(transformExpressionUp(e)) + case m: Map[_,_] => m + case seq: Traversable[_] => seq.map { + case e: Expression => transformExpressionUp(e) + case other => other + } + case other: AnyRef => other + }.toArray + + if (changed) makeCopy(newArgs) else this + } + + /** Returns the result of running [[transformExpressions]] on this node + * and all its children. */ + def transformAllExpressions(rule: PartialFunction[Expression, Expression]): this.type = { + transform { + case q: QueryPlan[_] => q.transformExpressions(rule).asInstanceOf[PlanType] + }.asInstanceOf[this.type] + } + + /** Returns all of the expressions present in this query plan operator. */ + def expressions: Seq[Expression] = { + productIterator.flatMap { + case e: Expression => e :: Nil + case Some(e: Expression) => e :: Nil + case seq: Traversable[_] => seq.flatMap { + case e: Expression => e :: Nil + case other => Nil + } + case other => Nil + }.toSeq + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/joinTypes.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/joinTypes.scala new file mode 100644 index 0000000000000..ae8d7d3e4257f --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/joinTypes.scala @@ -0,0 +1,24 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans + +sealed abstract class JoinType +case object Inner extends JoinType +case object LeftOuter extends JoinType +case object RightOuter extends JoinType +case object FullOuter extends JoinType diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/BaseRelation.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/BaseRelation.scala new file mode 100644 index 0000000000000..7c616788a3830 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/BaseRelation.scala @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans.logical + +abstract class BaseRelation extends LeafNode { + self: Product => + + def tableName: String + def isPartitioned: Boolean = false +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala new file mode 100644 index 0000000000000..5eb52d5350f55 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans.logical + +import org.apache.spark.sql.catalyst.errors.TreeNodeException +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.QueryPlan +import org.apache.spark.sql.catalyst.types.StructType +import org.apache.spark.sql.catalyst.trees + +abstract class LogicalPlan extends QueryPlan[LogicalPlan] { + self: Product => + + /** + * Returns the set of attributes that are referenced by this node + * during evaluation. + */ + def references: Set[Attribute] + + /** + * Returns the set of attributes that this node takes as + * input from its children. + */ + lazy val inputSet: Set[Attribute] = children.flatMap(_.output).toSet + + /** + * Returns true if this expression and all its children have been resolved to a specific schema + * and false if it is still contains any unresolved placeholders. Implementations of LogicalPlan + * can override this (e.g. [[catalyst.analysis.UnresolvedRelation UnresolvedRelation]] should + * return `false`). + */ + lazy val resolved: Boolean = !expressions.exists(!_.resolved) && childrenResolved + + /** + * Returns true if all its children of this query plan have been resolved. + */ + def childrenResolved = !children.exists(!_.resolved) + + /** + * Optionally resolves the given string to a + * [[catalyst.expressions.NamedExpression NamedExpression]]. The attribute is expressed as + * as string in the following form: `[scope].AttributeName.[nested].[fields]...`. + */ + def resolve(name: String): Option[NamedExpression] = { + val parts = name.split("\\.") + // Collect all attributes that are output by this nodes children where either the first part + // matches the name or where the first part matches the scope and the second part matches the + // name. Return these matches along with any remaining parts, which represent dotted access to + // struct fields. + val options = children.flatMap(_.output).flatMap { option => + // If the first part of the desired name matches a qualifier for this possible match, drop it. + val remainingParts = if (option.qualifiers contains parts.head) parts.drop(1) else parts + if (option.name == remainingParts.head) (option, remainingParts.tail.toList) :: Nil else Nil + } + + options.distinct match { + case (a, Nil) :: Nil => Some(a) // One match, no nested fields, use it. + // One match, but we also need to extract the requested nested field. + case (a, nestedFields) :: Nil => + a.dataType match { + case StructType(fields) => + Some(Alias(nestedFields.foldLeft(a: Expression)(GetField), nestedFields.last)()) + case _ => None // Don't know how to resolve these field references + } + case Nil => None // No matches. + case ambiguousReferences => + throw new TreeNodeException( + this, s"Ambiguous references to $name: ${ambiguousReferences.mkString(",")}") + } + } +} + +/** + * A logical plan node with no children. + */ +abstract class LeafNode extends LogicalPlan with trees.LeafNode[LogicalPlan] { + self: Product => + + // Leaf nodes by definition cannot reference any input attributes. + def references = Set.empty +} + +/** + * A logical node that represents a non-query command to be executed by the system. For example, + * commands can be used by parsers to represent DDL operations. + */ +abstract class Command extends LeafNode { + self: Product => + def output = Seq.empty +} + +/** + * Returned for commands supported by a given parser, but not catalyst. In general these are DDL + * commands that are passed directly to another system. + */ +case class NativeCommand(cmd: String) extends Command + +/** + * Returned by a parser when the users only wants to see what query plan would be executed, without + * actually performing the execution. + */ +case class ExplainCommand(plan: LogicalPlan) extends Command + +/** + * A logical plan node with single child. + */ +abstract class UnaryNode extends LogicalPlan with trees.UnaryNode[LogicalPlan] { + self: Product => +} + +/** + * A logical plan node with a left and right child. + */ +abstract class BinaryNode extends LogicalPlan with trees.BinaryNode[LogicalPlan] { + self: Product => +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/ScriptTransformation.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/ScriptTransformation.scala new file mode 100644 index 0000000000000..d3f9d0fb93237 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/ScriptTransformation.scala @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans.logical + +import org.apache.spark.sql.catalyst.expressions.{Attribute, Expression} + +/** + * Transforms the input by forking and running the specified script. + * + * @param input the set of expression that should be passed to the script. + * @param script the command that should be executed. + * @param output the attributes that are produced by the script. + */ +case class ScriptTransformation( + input: Seq[Expression], + script: String, + output: Seq[Attribute], + child: LogicalPlan) extends UnaryNode { + def references = input.flatMap(_.references).toSet +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/TestRelation.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/TestRelation.scala new file mode 100644 index 0000000000000..f8fe558511bfd --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/TestRelation.scala @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans.logical + +import org.apache.spark.sql.catalyst.analysis +import org.apache.spark.sql.catalyst.expressions.Attribute + +object LocalRelation { + def apply(output: Attribute*) = + new LocalRelation(output) +} + +case class LocalRelation(output: Seq[Attribute], data: Seq[Product] = Nil) + extends LeafNode with analysis.MultiInstanceRelation { + + // TODO: Validate schema compliance. + def loadData(newData: Seq[Product]) = new LocalRelation(output, data ++ newData) + + /** + * Returns an identical copy of this relation with new exprIds for all attributes. Different + * attributes are required when a relation is going to be included multiple times in the same + * query. + */ + override final def newInstance: this.type = { + LocalRelation(output.map(_.newInstance), data).asInstanceOf[this.type] + } + + override protected def stringArgs = Iterator(output) +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala new file mode 100644 index 0000000000000..cfc0b0c3a8d98 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala @@ -0,0 +1,185 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans.logical + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.JoinType +import org.apache.spark.sql.catalyst.types._ + +case class Project(projectList: Seq[NamedExpression], child: LogicalPlan) extends UnaryNode { + def output = projectList.map(_.toAttribute) + def references = projectList.flatMap(_.references).toSet +} + +/** + * Applies a [[catalyst.expressions.Generator Generator]] to a stream of input rows, combining the + * output of each into a new stream of rows. This operation is similar to a `flatMap` in functional + * programming with one important additional feature, which allows the input rows to be joined with + * their output. + * @param join when true, each output row is implicitly joined with the input tuple that produced + * it. + * @param outer when true, each input row will be output at least once, even if the output of the + * given `generator` is empty. `outer` has no effect when `join` is false. + * @param alias when set, this string is applied to the schema of the output of the transformation + * as a qualifier. + */ +case class Generate( + generator: Generator, + join: Boolean, + outer: Boolean, + alias: Option[String], + child: LogicalPlan) + extends UnaryNode { + + protected def generatorOutput = + alias + .map(a => generator.output.map(_.withQualifiers(a :: Nil))) + .getOrElse(generator.output) + + def output = + if (join) child.output ++ generatorOutput else generatorOutput + + def references = + if (join) child.outputSet else generator.references +} + +case class Filter(condition: Expression, child: LogicalPlan) extends UnaryNode { + def output = child.output + def references = condition.references +} + +case class Union(left: LogicalPlan, right: LogicalPlan) extends BinaryNode { + // TODO: These aren't really the same attributes as nullability etc might change. + def output = left.output + + override lazy val resolved = + childrenResolved && + !left.output.zip(right.output).exists { case (l,r) => l.dataType != r.dataType } + + def references = Set.empty +} + +case class Join( + left: LogicalPlan, + right: LogicalPlan, + joinType: JoinType, + condition: Option[Expression]) extends BinaryNode { + + def references = condition.map(_.references).getOrElse(Set.empty) + def output = left.output ++ right.output +} + +case class InsertIntoTable( + table: LogicalPlan, + partition: Map[String, Option[String]], + child: LogicalPlan, + overwrite: Boolean) + extends LogicalPlan { + // The table being inserted into is a child for the purposes of transformations. + def children = table :: child :: Nil + def references = Set.empty + def output = child.output + + override lazy val resolved = childrenResolved && child.output.zip(table.output).forall { + case (childAttr, tableAttr) => childAttr.dataType == tableAttr.dataType + } +} + +case class InsertIntoCreatedTable( + databaseName: Option[String], + tableName: String, + child: LogicalPlan) extends UnaryNode { + def references = Set.empty + def output = child.output +} + +case class WriteToFile( + path: String, + child: LogicalPlan) extends UnaryNode { + def references = Set.empty + def output = child.output +} + +case class Sort(order: Seq[SortOrder], child: LogicalPlan) extends UnaryNode { + def output = child.output + def references = order.flatMap(_.references).toSet +} + +case class Aggregate( + groupingExpressions: Seq[Expression], + aggregateExpressions: Seq[NamedExpression], + child: LogicalPlan) + extends UnaryNode { + + def output = aggregateExpressions.map(_.toAttribute) + def references = child.references +} + +case class Limit(limit: Expression, child: LogicalPlan) extends UnaryNode { + def output = child.output + def references = limit.references +} + +case class Subquery(alias: String, child: LogicalPlan) extends UnaryNode { + def output = child.output.map(_.withQualifiers(alias :: Nil)) + def references = Set.empty +} + +/** + * Converts the schema of `child` to all lowercase, together with LowercaseAttributeReferences + * this allows for optional case insensitive attribute resolution. This node can be elided after + * analysis. + */ +case class LowerCaseSchema(child: LogicalPlan) extends UnaryNode { + protected def lowerCaseSchema(dataType: DataType): DataType = dataType match { + case StructType(fields) => + StructType(fields.map(f => + StructField(f.name.toLowerCase(), lowerCaseSchema(f.dataType), f.nullable))) + case ArrayType(elemType) => ArrayType(lowerCaseSchema(elemType)) + case otherType => otherType + } + + val output = child.output.map { + case a: AttributeReference => + AttributeReference( + a.name.toLowerCase, + lowerCaseSchema(a.dataType), + a.nullable)( + a.exprId, + a.qualifiers) + case other => other + } + + def references = Set.empty +} + +case class Sample(fraction: Double, withReplacement: Boolean, seed: Int, child: LogicalPlan) + extends UnaryNode { + + def output = child.output + def references = Set.empty +} + +case class Distinct(child: LogicalPlan) extends UnaryNode { + def output = child.output + def references = child.outputSet +} + +case object NoRelation extends LeafNode { + def output = Nil +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/partitioning.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/partitioning.scala new file mode 100644 index 0000000000000..7146fbd540f29 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/partitioning.scala @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans.logical + +import org.apache.spark.sql.catalyst.expressions.{Expression, SortOrder} + +/** + * Performs a physical redistribution of the data. Used when the consumer of the query + * result have expectations about the distribution and ordering of partitioned input data. + */ +abstract class RedistributeData extends UnaryNode { + self: Product => + + def output = child.output +} + +case class SortPartitions(sortExpressions: Seq[SortOrder], child: LogicalPlan) + extends RedistributeData { + + def references = sortExpressions.flatMap(_.references).toSet +} + +case class Repartition(partitionExpressions: Seq[Expression], child: LogicalPlan) + extends RedistributeData { + + def references = partitionExpressions.flatMap(_.references).toSet +} + diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/package.scala new file mode 100644 index 0000000000000..42bdab42b79ff --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/package.scala @@ -0,0 +1,24 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +/** + * A a collection of common abstractions for query plans as well as + * a base logical plan representation. + */ +package object plans diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/physical/partitioning.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/physical/partitioning.scala new file mode 100644 index 0000000000000..ffb3a92f8f340 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/physical/partitioning.scala @@ -0,0 +1,208 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.plans.physical + +import org.apache.spark.sql.catalyst.errors.TreeNodeException +import org.apache.spark.sql.catalyst.expressions.{Expression, Row, SortOrder} +import org.apache.spark.sql.catalyst.types.IntegerType + +/** + * Specifies how tuples that share common expressions will be distributed when a query is executed + * in parallel on many machines. Distribution can be used to refer to two distinct physical + * properties: + * - Inter-node partitioning of data: In this case the distribution describes how tuples are + * partitioned across physical machines in a cluster. Knowing this property allows some + * operators (e.g., Aggregate) to perform partition local operations instead of global ones. + * - Intra-partition ordering of data: In this case the distribution describes guarantees made + * about how tuples are distributed within a single partition. + */ +sealed trait Distribution + +/** + * Represents a distribution where no promises are made about co-location of data. + */ +case object UnspecifiedDistribution extends Distribution + +/** + * Represents a distribution that only has a single partition and all tuples of the dataset + * are co-located. + */ +case object AllTuples extends Distribution + +/** + * Represents data where tuples that share the same values for the `clustering` + * [[catalyst.expressions.Expression Expressions]] will be co-located. Based on the context, this + * can mean such tuples are either co-located in the same partition or they will be contiguous + * within a single partition. + */ +case class ClusteredDistribution(clustering: Seq[Expression]) extends Distribution { + require( + clustering != Nil, + "The clustering expressions of a ClusteredDistribution should not be Nil. " + + "An AllTuples should be used to represent a distribution that only has " + + "a single partition.") +} + +/** + * Represents data where tuples have been ordered according to the `ordering` + * [[catalyst.expressions.Expression Expressions]]. This is a strictly stronger guarantee than + * [[ClusteredDistribution]] as an ordering will ensure that tuples that share the same value for + * the ordering expressions are contiguous and will never be split across partitions. + */ +case class OrderedDistribution(ordering: Seq[SortOrder]) extends Distribution { + require( + ordering != Nil, + "The ordering expressions of a OrderedDistribution should not be Nil. " + + "An AllTuples should be used to represent a distribution that only has " + + "a single partition.") + + def clustering = ordering.map(_.child).toSet +} + +sealed trait Partitioning { + /** Returns the number of partitions that the data is split across */ + val numPartitions: Int + + /** + * Returns true iff the guarantees made by this + * [[catalyst.plans.physical.Partitioning Partitioning]] are sufficient to satisfy + * the partitioning scheme mandated by the `required` + * [[catalyst.plans.physical.Distribution Distribution]], i.e. the current dataset does not + * need to be re-partitioned for the `required` Distribution (it is possible that tuples within + * a partition need to be reorganized). + */ + def satisfies(required: Distribution): Boolean + + /** + * Returns true iff all distribution guarantees made by this partitioning can also be made + * for the `other` specified partitioning. + * For example, two [[catalyst.plans.physical.HashPartitioning HashPartitioning]]s are + * only compatible if the `numPartitions` of them is the same. + */ + def compatibleWith(other: Partitioning): Boolean +} + +case class UnknownPartitioning(numPartitions: Int) extends Partitioning { + override def satisfies(required: Distribution): Boolean = required match { + case UnspecifiedDistribution => true + case _ => false + } + + override def compatibleWith(other: Partitioning): Boolean = other match { + case UnknownPartitioning(_) => true + case _ => false + } +} + +case object SinglePartition extends Partitioning { + val numPartitions = 1 + + override def satisfies(required: Distribution): Boolean = true + + override def compatibleWith(other: Partitioning) = other match { + case SinglePartition => true + case _ => false + } +} + +case object BroadcastPartitioning extends Partitioning { + val numPartitions = 1 + + override def satisfies(required: Distribution): Boolean = true + + override def compatibleWith(other: Partitioning) = other match { + case SinglePartition => true + case _ => false + } +} + +/** + * Represents a partitioning where rows are split up across partitions based on the hash + * of `expressions`. All rows where `expressions` evaluate to the same values are guaranteed to be + * in the same partition. + */ +case class HashPartitioning(expressions: Seq[Expression], numPartitions: Int) + extends Expression + with Partitioning { + + override def children = expressions + override def references = expressions.flatMap(_.references).toSet + override def nullable = false + override def dataType = IntegerType + + private[this] lazy val clusteringSet = expressions.toSet + + override def satisfies(required: Distribution): Boolean = required match { + case UnspecifiedDistribution => true + case ClusteredDistribution(requiredClustering) => + clusteringSet.subsetOf(requiredClustering.toSet) + case _ => false + } + + override def compatibleWith(other: Partitioning) = other match { + case BroadcastPartitioning => true + case h: HashPartitioning if h == this => true + case _ => false + } + + override def eval(input: Row = null): EvaluatedType = + throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}") +} + +/** + * Represents a partitioning where rows are split across partitions based on some total ordering of + * the expressions specified in `ordering`. When data is partitioned in this manner the following + * two conditions are guaranteed to hold: + * - All row where the expressions in `ordering` evaluate to the same values will be in the same + * partition. + * - Each partition will have a `min` and `max` row, relative to the given ordering. All rows + * that are in between `min` and `max` in this `ordering` will reside in this partition. + * + * This class extends expression primarily so that transformations over expression will descend + * into its child. + */ +case class RangePartitioning(ordering: Seq[SortOrder], numPartitions: Int) + extends Expression + with Partitioning { + + override def children = ordering + override def references = ordering.flatMap(_.references).toSet + override def nullable = false + override def dataType = IntegerType + + private[this] lazy val clusteringSet = ordering.map(_.child).toSet + + override def satisfies(required: Distribution): Boolean = required match { + case UnspecifiedDistribution => true + case OrderedDistribution(requiredOrdering) => + val minSize = Seq(requiredOrdering.size, ordering.size).min + requiredOrdering.take(minSize) == ordering.take(minSize) + case ClusteredDistribution(requiredClustering) => + clusteringSet.subsetOf(requiredClustering.toSet) + case _ => false + } + + override def compatibleWith(other: Partitioning) = other match { + case BroadcastPartitioning => true + case r: RangePartitioning if r == this => true + case _ => false + } + + override def eval(input: Row): EvaluatedType = + throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}") +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/Rule.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/Rule.scala new file mode 100644 index 0000000000000..1076537bc7602 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/Rule.scala @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.rules + +import org.apache.spark.sql.Logging +import org.apache.spark.sql.catalyst.trees.TreeNode + +abstract class Rule[TreeType <: TreeNode[_]] extends Logging { + + /** Name for this rule, automatically inferred based on class name. */ + val ruleName: String = { + val className = getClass.getName + if (className endsWith "$") className.dropRight(1) else className + } + + def apply(plan: TreeType): TreeType +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/RuleExecutor.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/RuleExecutor.scala new file mode 100644 index 0000000000000..9db96f89dd03c --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/RuleExecutor.scala @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql +package catalyst +package rules + +import org.apache.spark.sql.catalyst.trees.TreeNode +import org.apache.spark.sql.catalyst.util.sideBySide + +abstract class RuleExecutor[TreeType <: TreeNode[_]] extends Logging { + + /** + * An execution strategy for rules that indicates the maximum number of executions. If the + * execution reaches fix point (i.e. converge) before maxIterations, it will stop. + */ + abstract class Strategy { def maxIterations: Int } + + /** A strategy that only runs once. */ + case object Once extends Strategy { val maxIterations = 1 } + + /** A strategy that runs until fix point or maxIterations times, whichever comes first. */ + case class FixedPoint(maxIterations: Int) extends Strategy + + /** A batch of rules. */ + protected case class Batch(name: String, strategy: Strategy, rules: Rule[TreeType]*) + + /** Defines a sequence of rule batches, to be overridden by the implementation. */ + protected val batches: Seq[Batch] + + /** + * Executes the batches of rules defined by the subclass. The batches are executed serially + * using the defined execution strategy. Within each batch, rules are also executed serially. + */ + def apply(plan: TreeType): TreeType = { + var curPlan = plan + + batches.foreach { batch => + var iteration = 1 + var lastPlan = curPlan + curPlan = batch.rules.foldLeft(curPlan) { case (plan, rule) => rule(plan) } + + // Run until fix point (or the max number of iterations as specified in the strategy. + while (iteration < batch.strategy.maxIterations && !curPlan.fastEquals(lastPlan)) { + lastPlan = curPlan + curPlan = batch.rules.foldLeft(curPlan) { + case (plan, rule) => + val result = rule(plan) + if (!result.fastEquals(plan)) { + logger.debug( + s""" + |=== Applying Rule ${rule.ruleName} === + |${sideBySide(plan.treeString, result.treeString).mkString("\n")} + """.stripMargin) + } + + result + } + iteration += 1 + } + } + + curPlan + } +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/package.scala new file mode 100644 index 0000000000000..ca82c5d93d4cb --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/package.scala @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +/** + * A framework for applying batches rewrite rules to trees, possibly to fixed point. + */ +package object rules diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreeNode.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreeNode.scala new file mode 100644 index 0000000000000..0369129393a08 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreeNode.scala @@ -0,0 +1,377 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.trees + +import org.apache.spark.sql.catalyst.errors._ + +object TreeNode { + private val currentId = new java.util.concurrent.atomic.AtomicLong + protected def nextId() = currentId.getAndIncrement() +} + +/** Used by [[TreeNode.getNodeNumbered]] when traversing the tree for a given number */ +private class MutableInt(var i: Int) + +abstract class TreeNode[BaseType <: TreeNode[BaseType]] { + self: BaseType with Product => + + /** Returns a Seq of the children of this node */ + def children: Seq[BaseType] + + /** + * A globally unique id for this specific instance. Not preserved across copies. + * Unlike `equals`, `id` can be used to differentiate distinct but structurally + * identical branches of a tree. + */ + val id = TreeNode.nextId() + + /** + * Returns true if other is the same [[catalyst.trees.TreeNode TreeNode]] instance. Unlike + * `equals` this function will return false for different instances of structurally identical + * trees. + */ + def sameInstance(other: TreeNode[_]): Boolean = { + this.id == other.id + } + + /** + * Faster version of equality which short-circuits when two treeNodes are the same instance. + * We don't just override Object.Equals, as doing so prevents the scala compiler from from + * generating case class `equals` methods + */ + def fastEquals(other: TreeNode[_]): Boolean = { + sameInstance(other) || this == other + } + + /** + * Runs the given function on this node and then recursively on [[children]]. + * @param f the function to be applied to each node in the tree. + */ + def foreach(f: BaseType => Unit): Unit = { + f(this) + children.foreach(_.foreach(f)) + } + + /** + * Returns a Seq containing the result of applying the given function to each + * node in this tree in a preorder traversal. + * @param f the function to be applied. + */ + def map[A](f: BaseType => A): Seq[A] = { + val ret = new collection.mutable.ArrayBuffer[A]() + foreach(ret += f(_)) + ret + } + + /** + * Returns a Seq by applying a function to all nodes in this tree and using the elements of the + * resulting collections. + */ + def flatMap[A](f: BaseType => TraversableOnce[A]): Seq[A] = { + val ret = new collection.mutable.ArrayBuffer[A]() + foreach(ret ++= f(_)) + ret + } + + /** + * Returns a Seq containing the result of applying a partial function to all elements in this + * tree on which the function is defined. + */ + def collect[B](pf: PartialFunction[BaseType, B]): Seq[B] = { + val ret = new collection.mutable.ArrayBuffer[B]() + val lifted = pf.lift + foreach(node => lifted(node).foreach(ret.+=)) + ret + } + + /** + * Returns a copy of this node where `f` has been applied to all the nodes children. + */ + def mapChildren(f: BaseType => BaseType): this.type = { + var changed = false + val newArgs = productIterator.map { + case arg: TreeNode[_] if children contains arg => + val newChild = f(arg.asInstanceOf[BaseType]) + if (newChild fastEquals arg) { + arg + } else { + changed = true + newChild + } + case nonChild: AnyRef => nonChild + case null => null + }.toArray + if (changed) makeCopy(newArgs) else this + } + + /** + * Returns a copy of this node with the children replaced. + * TODO: Validate somewhere (in debug mode?) that children are ordered correctly. + */ + def withNewChildren(newChildren: Seq[BaseType]): this.type = { + assert(newChildren.size == children.size, "Incorrect number of children") + var changed = false + val remainingNewChildren = newChildren.toBuffer + val remainingOldChildren = children.toBuffer + val newArgs = productIterator.map { + case arg: TreeNode[_] if children contains arg => + val newChild = remainingNewChildren.remove(0) + val oldChild = remainingOldChildren.remove(0) + if (newChild fastEquals oldChild) { + oldChild + } else { + changed = true + newChild + } + case nonChild: AnyRef => nonChild + case null => null + }.toArray + + if (changed) makeCopy(newArgs) else this + } + + /** + * Returns a copy of this node where `rule` has been recursively applied to the tree. + * When `rule` does not apply to a given node it is left unchanged. + * Users should not expect a specific directionality. If a specific directionality is needed, + * transformDown or transformUp should be used. + * @param rule the function use to transform this nodes children + */ + def transform(rule: PartialFunction[BaseType, BaseType]): BaseType = { + transformDown(rule) + } + + /** + * Returns a copy of this node where `rule` has been recursively applied to it and all of its + * children (pre-order). When `rule` does not apply to a given node it is left unchanged. + * @param rule the function used to transform this nodes children + */ + def transformDown(rule: PartialFunction[BaseType, BaseType]): BaseType = { + val afterRule = rule.applyOrElse(this, identity[BaseType]) + // Check if unchanged and then possibly return old copy to avoid gc churn. + if (this fastEquals afterRule) { + transformChildrenDown(rule) + } else { + afterRule.transformChildrenDown(rule) + } + } + + /** + * Returns a copy of this node where `rule` has been recursively applied to all the children of + * this node. When `rule` does not apply to a given node it is left unchanged. + * @param rule the function used to transform this nodes children + */ + def transformChildrenDown(rule: PartialFunction[BaseType, BaseType]): this.type = { + var changed = false + val newArgs = productIterator.map { + case arg: TreeNode[_] if children contains arg => + val newChild = arg.asInstanceOf[BaseType].transformDown(rule) + if (!(newChild fastEquals arg)) { + changed = true + newChild + } else { + arg + } + case m: Map[_,_] => m + case args: Traversable[_] => args.map { + case arg: TreeNode[_] if children contains arg => + val newChild = arg.asInstanceOf[BaseType].transformDown(rule) + if (!(newChild fastEquals arg)) { + changed = true + newChild + } else { + arg + } + case other => other + } + case nonChild: AnyRef => nonChild + case null => null + }.toArray + if (changed) makeCopy(newArgs) else this + } + + /** + * Returns a copy of this node where `rule` has been recursively applied first to all of its + * children and then itself (post-order). When `rule` does not apply to a given node, it is left + * unchanged. + * @param rule the function use to transform this nodes children + */ + def transformUp(rule: PartialFunction[BaseType, BaseType]): BaseType = { + val afterRuleOnChildren = transformChildrenUp(rule); + if (this fastEquals afterRuleOnChildren) { + rule.applyOrElse(this, identity[BaseType]) + } else { + rule.applyOrElse(afterRuleOnChildren, identity[BaseType]) + } + } + + def transformChildrenUp(rule: PartialFunction[BaseType, BaseType]): this.type = { + var changed = false + val newArgs = productIterator.map { + case arg: TreeNode[_] if children contains arg => + val newChild = arg.asInstanceOf[BaseType].transformUp(rule) + if (!(newChild fastEquals arg)) { + changed = true + newChild + } else { + arg + } + case m: Map[_,_] => m + case args: Traversable[_] => args.map { + case arg: TreeNode[_] if children contains arg => + val newChild = arg.asInstanceOf[BaseType].transformUp(rule) + if (!(newChild fastEquals arg)) { + changed = true + newChild + } else { + arg + } + case other => other + } + case nonChild: AnyRef => nonChild + case null => null + }.toArray + if (changed) makeCopy(newArgs) else this + } + + /** + * Args to the constructor that should be copied, but not transformed. + * These are appended to the transformed args automatically by makeCopy + * @return + */ + protected def otherCopyArgs: Seq[AnyRef] = Nil + + /** + * Creates a copy of this type of tree node after a transformation. + * Must be overridden by child classes that have constructor arguments + * that are not present in the productIterator. + * @param newArgs the new product arguments. + */ + def makeCopy(newArgs: Array[AnyRef]): this.type = attachTree(this, "makeCopy") { + try { + val defaultCtor = getClass.getConstructors.head + if (otherCopyArgs.isEmpty) { + defaultCtor.newInstance(newArgs: _*).asInstanceOf[this.type] + } else { + defaultCtor.newInstance((newArgs ++ otherCopyArgs).toArray: _*).asInstanceOf[this.type] + } + } catch { + case e: java.lang.IllegalArgumentException => + throw new TreeNodeException( + this, s"Failed to copy node. Is otherCopyArgs specified correctly for $nodeName?") + } + } + + /** Returns the name of this type of TreeNode. Defaults to the class name. */ + def nodeName = getClass.getSimpleName + + /** + * The arguments that should be included in the arg string. Defaults to the `productIterator`. + */ + protected def stringArgs = productIterator + + /** Returns a string representing the arguments to this node, minus any children */ + def argString: String = productIterator.flatMap { + case tn: TreeNode[_] if children contains tn => Nil + case tn: TreeNode[_] if tn.toString contains "\n" => s"(${tn.simpleString})" :: Nil + case seq: Seq[_] => seq.mkString("[", ",", "]") :: Nil + case set: Set[_] => set.mkString("{", ",", "}") :: Nil + case other => other :: Nil + }.mkString(", ") + + /** String representation of this node without any children */ + def simpleString = s"$nodeName $argString" + + override def toString: String = treeString + + /** Returns a string representation of the nodes in this tree */ + def treeString = generateTreeString(0, new StringBuilder).toString + + /** + * Returns a string representation of the nodes in this tree, where each operator is numbered. + * The numbers can be used with [[trees.TreeNode.apply apply]] to easily access specific subtrees. + */ + def numberedTreeString = + treeString.split("\n").zipWithIndex.map { case (line, i) => f"$i%02d $line" }.mkString("\n") + + /** + * Returns the tree node at the specified number. + * Numbers for each node can be found in the [[numberedTreeString]]. + */ + def apply(number: Int): BaseType = getNodeNumbered(new MutableInt(number)) + + protected def getNodeNumbered(number: MutableInt): BaseType = { + if (number.i < 0) { + null.asInstanceOf[BaseType] + } else if (number.i == 0) { + this + } else { + number.i -= 1 + children.map(_.getNodeNumbered(number)).find(_ != null).getOrElse(null.asInstanceOf[BaseType]) + } + } + + /** Appends the string represent of this node and its children to the given StringBuilder. */ + protected def generateTreeString(depth: Int, builder: StringBuilder): StringBuilder = { + builder.append(" " * depth) + builder.append(simpleString) + builder.append("\n") + children.foreach(_.generateTreeString(depth + 1, builder)) + builder + } + + /** + * Returns a 'scala code' representation of this `TreeNode` and its children. Intended for use + * when debugging where the prettier toString function is obfuscating the actual structure. In the + * case of 'pure' `TreeNodes` that only contain primitives and other TreeNodes, the result can be + * pasted in the REPL to build an equivalent Tree. + */ + def asCode: String = { + val args = productIterator.map { + case tn: TreeNode[_] => tn.asCode + case s: String => "\"" + s + "\"" + case other => other.toString + } + s"$nodeName(${args.mkString(",")})" + } +} + +/** + * A [[TreeNode]] that has two children, [[left]] and [[right]]. + */ +trait BinaryNode[BaseType <: TreeNode[BaseType]] { + def left: BaseType + def right: BaseType + + def children = Seq(left, right) +} + +/** + * A [[TreeNode]] with no children. + */ +trait LeafNode[BaseType <: TreeNode[BaseType]] { + def children = Nil +} + +/** + * A [[TreeNode]] with a single [[child]]. + */ +trait UnaryNode[BaseType <: TreeNode[BaseType]] { + def child: BaseType + def children = child :: Nil +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/package.scala new file mode 100644 index 0000000000000..d159ecdd5d781 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/package.scala @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +import org.apache.spark.sql.Logger + +/** + * A library for easily manipulating trees of operators. Operators that extend TreeNode are + * granted the following interface: + *
        + *
      • Scala collection like methods (foreach, map, flatMap, collect, etc)
      • + *
      • + * transform - accepts a partial function that is used to generate a new tree. When the + * partial function can be applied to a given tree segment, that segment is replaced with the + * result. After attempting to apply the partial function to a given node, the transform + * function recursively attempts to apply the function to that node's children. + *
      • + *
      • debugging support - pretty printing, easy splicing of trees, etc.
      • + *
      + */ +package object trees { + // Since we want tree nodes to be lightweight, we create one logger for all treenode instances. + protected val logger = Logger("catalyst.trees") +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/types/dataTypes.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/types/dataTypes.scala new file mode 100644 index 0000000000000..cdeb01a9656f4 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/types/dataTypes.scala @@ -0,0 +1,159 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.types + +import java.sql.Timestamp + +import scala.reflect.runtime.universe.{typeTag, TypeTag} + +import org.apache.spark.sql.catalyst.expressions.Expression + +abstract class DataType { + /** Matches any expression that evaluates to this DataType */ + def unapply(a: Expression): Boolean = a match { + case e: Expression if e.dataType == this => true + case _ => false + } +} + +case object NullType extends DataType + +abstract class NativeType extends DataType { + type JvmType + @transient val tag: TypeTag[JvmType] + val ordering: Ordering[JvmType] +} + +case object StringType extends NativeType { + type JvmType = String + @transient lazy val tag = typeTag[JvmType] + val ordering = implicitly[Ordering[JvmType]] +} +case object BinaryType extends DataType { + type JvmType = Array[Byte] +} +case object BooleanType extends NativeType { + type JvmType = Boolean + @transient lazy val tag = typeTag[JvmType] + val ordering = implicitly[Ordering[JvmType]] +} + +case object TimestampType extends NativeType { + type JvmType = Timestamp + + @transient lazy val tag = typeTag[JvmType] + + val ordering = new Ordering[JvmType] { + def compare(x: Timestamp, y: Timestamp) = x.compareTo(y) + } +} + +abstract class NumericType extends NativeType { + // Unfortunately we can't get this implicitly as that breaks Spark Serialization. In order for + // implicitly[Numeric[JvmType]] to be valid, we have to change JvmType from a type variable to a + // type parameter and and add a numeric annotation (i.e., [JvmType : Numeric]). This gets + // desugared by the compiler into an argument to the objects constructor. This means there is no + // longer an no argument constructor and thus the JVM cannot serialize the object anymore. + val numeric: Numeric[JvmType] +} + +/** Matcher for any expressions that evaluate to [[IntegralType]]s */ +object IntegralType { + def unapply(a: Expression): Boolean = a match { + case e: Expression if e.dataType.isInstanceOf[IntegralType] => true + case _ => false + } +} + +abstract class IntegralType extends NumericType { + val integral: Integral[JvmType] +} + +case object LongType extends IntegralType { + type JvmType = Long + @transient lazy val tag = typeTag[JvmType] + val numeric = implicitly[Numeric[Long]] + val integral = implicitly[Integral[Long]] + val ordering = implicitly[Ordering[JvmType]] +} + +case object IntegerType extends IntegralType { + type JvmType = Int + @transient lazy val tag = typeTag[JvmType] + val numeric = implicitly[Numeric[Int]] + val integral = implicitly[Integral[Int]] + val ordering = implicitly[Ordering[JvmType]] +} + +case object ShortType extends IntegralType { + type JvmType = Short + @transient lazy val tag = typeTag[JvmType] + val numeric = implicitly[Numeric[Short]] + val integral = implicitly[Integral[Short]] + val ordering = implicitly[Ordering[JvmType]] +} + +case object ByteType extends IntegralType { + type JvmType = Byte + @transient lazy val tag = typeTag[JvmType] + val numeric = implicitly[Numeric[Byte]] + val integral = implicitly[Integral[Byte]] + val ordering = implicitly[Ordering[JvmType]] +} + +/** Matcher for any expressions that evaluate to [[FractionalType]]s */ +object FractionalType { + def unapply(a: Expression): Boolean = a match { + case e: Expression if e.dataType.isInstanceOf[FractionalType] => true + case _ => false + } +} +abstract class FractionalType extends NumericType { + val fractional: Fractional[JvmType] +} + +case object DecimalType extends FractionalType { + type JvmType = BigDecimal + @transient lazy val tag = typeTag[JvmType] + val numeric = implicitly[Numeric[BigDecimal]] + val fractional = implicitly[Fractional[BigDecimal]] + val ordering = implicitly[Ordering[JvmType]] +} + +case object DoubleType extends FractionalType { + type JvmType = Double + @transient lazy val tag = typeTag[JvmType] + val numeric = implicitly[Numeric[Double]] + val fractional = implicitly[Fractional[Double]] + val ordering = implicitly[Ordering[JvmType]] +} + +case object FloatType extends FractionalType { + type JvmType = Float + @transient lazy val tag = typeTag[JvmType] + val numeric = implicitly[Numeric[Float]] + val fractional = implicitly[Fractional[Float]] + val ordering = implicitly[Ordering[JvmType]] +} + +case class ArrayType(elementType: DataType) extends DataType + +case class StructField(name: String, dataType: DataType, nullable: Boolean) +case class StructType(fields: Seq[StructField]) extends DataType + +case class MapType(keyType: DataType, valueType: DataType) extends DataType diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/types/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/types/package.scala new file mode 100644 index 0000000000000..de24449590f9a --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/types/package.scala @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst +/** + * Contains a type system for attributes produced by relations, including complex types like + * structs, arrays and maps. + */ +package object types diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/package.scala new file mode 100644 index 0000000000000..a001d953592db --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/package.scala @@ -0,0 +1,121 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +import java.io.{PrintWriter, ByteArrayOutputStream, FileInputStream, File} + +package object util { + /** + * Returns a path to a temporary file that probably does not exist. + * Note, there is always the race condition that someone created this + * file since the last time we checked. Thus, this shouldn't be used + * for anything security conscious. + */ + def getTempFilePath(prefix: String, suffix: String = ""): File = { + val tempFile = File.createTempFile(prefix, suffix) + tempFile.delete() + tempFile + } + + def fileToString(file: File, encoding: String = "UTF-8") = { + val inStream = new FileInputStream(file) + val outStream = new ByteArrayOutputStream + try { + var reading = true + while ( reading ) { + inStream.read() match { + case -1 => reading = false + case c => outStream.write(c) + } + } + outStream.flush() + } + finally { + inStream.close() + } + new String(outStream.toByteArray, encoding) + } + + def resourceToString( + resource:String, + encoding: String = "UTF-8", + classLoader: ClassLoader = this.getClass.getClassLoader) = { + val inStream = classLoader.getResourceAsStream(resource) + val outStream = new ByteArrayOutputStream + try { + var reading = true + while ( reading ) { + inStream.read() match { + case -1 => reading = false + case c => outStream.write(c) + } + } + outStream.flush() + } + finally { + inStream.close() + } + new String(outStream.toByteArray, encoding) + } + + def stringToFile(file: File, str: String): File = { + val out = new PrintWriter(file) + out.write(str) + out.close() + file + } + + def sideBySide(left: String, right: String): Seq[String] = { + sideBySide(left.split("\n"), right.split("\n")) + } + + def sideBySide(left: Seq[String], right: Seq[String]): Seq[String] = { + val maxLeftSize = left.map(_.size).max + val leftPadded = left ++ Seq.fill(math.max(right.size - left.size, 0))("") + val rightPadded = right ++ Seq.fill(math.max(left.size - right.size, 0))("") + + leftPadded.zip(rightPadded).map { + case (l, r) => (if (l == r) " " else "!") + l + (" " * ((maxLeftSize - l.size) + 3)) + r + } + } + + def stackTraceToString(t: Throwable): String = { + val out = new java.io.ByteArrayOutputStream + val writer = new PrintWriter(out) + t.printStackTrace(writer) + writer.flush() + new String(out.toByteArray) + } + + def stringOrNull(a: AnyRef) = if (a == null) null else a.toString + + def benchmark[A](f: => A): A = { + val startTime = System.nanoTime() + val ret = f + val endTime = System.nanoTime() + println(s"${(endTime - startTime).toDouble / 1000000}ms") + ret + } + + /* FIX ME + implicit class debugLogging(a: AnyRef) { + def debugLogging() { + org.apache.log4j.Logger.getLogger(a.getClass.getName).setLevel(org.apache.log4j.Level.DEBUG) + } + } */ +} diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/package.scala new file mode 100644 index 0000000000000..4589129cd1c90 --- /dev/null +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/package.scala @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark + +/** + * Allows the execution of relational queries, including those expressed in SQL using Spark. + * + * Note that this package is located in catalyst instead of in core so that all subprojects can + * inherit the settings from this package object. + */ +package object sql { + + protected[sql] def Logger(name: String) = + com.typesafe.scalalogging.slf4j.Logger(org.slf4j.LoggerFactory.getLogger(name)) + + protected[sql] type Logging = com.typesafe.scalalogging.slf4j.Logging + + type Row = catalyst.expressions.Row + + val Row = catalyst.expressions.Row +} diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/DistributionSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/DistributionSuite.scala new file mode 100644 index 0000000000000..46b2250aab231 --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/DistributionSuite.scala @@ -0,0 +1,174 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.plans.physical._ + +/* Implicit conversions */ +import org.apache.spark.sql.catalyst.dsl.expressions._ + +class DistributionSuite extends FunSuite { + + protected def checkSatisfied( + inputPartitioning: Partitioning, + requiredDistribution: Distribution, + satisfied: Boolean) { + if (inputPartitioning.satisfies(requiredDistribution) != satisfied) + fail( + s""" + |== Input Partitioning == + |$inputPartitioning + |== Required Distribution == + |$requiredDistribution + |== Does input partitioning satisfy required distribution? == + |Expected $satisfied got ${inputPartitioning.satisfies(requiredDistribution)} + """.stripMargin) + } + + test("HashPartitioning is the output partitioning") { + // Cases which do not need an exchange between two data properties. + checkSatisfied( + HashPartitioning(Seq('a, 'b, 'c), 10), + UnspecifiedDistribution, + true) + + checkSatisfied( + HashPartitioning(Seq('a, 'b, 'c), 10), + ClusteredDistribution(Seq('a, 'b, 'c)), + true) + + checkSatisfied( + HashPartitioning(Seq('b, 'c), 10), + ClusteredDistribution(Seq('a, 'b, 'c)), + true) + + checkSatisfied( + SinglePartition, + ClusteredDistribution(Seq('a, 'b, 'c)), + true) + + checkSatisfied( + SinglePartition, + OrderedDistribution(Seq('a.asc, 'b.asc, 'c.asc)), + true) + + // Cases which need an exchange between two data properties. + checkSatisfied( + HashPartitioning(Seq('a, 'b, 'c), 10), + ClusteredDistribution(Seq('b, 'c)), + false) + + checkSatisfied( + HashPartitioning(Seq('a, 'b, 'c), 10), + ClusteredDistribution(Seq('d, 'e)), + false) + + checkSatisfied( + HashPartitioning(Seq('a, 'b, 'c), 10), + AllTuples, + false) + + checkSatisfied( + HashPartitioning(Seq('a, 'b, 'c), 10), + OrderedDistribution(Seq('a.asc, 'b.asc, 'c.asc)), + false) + + checkSatisfied( + HashPartitioning(Seq('b, 'c), 10), + OrderedDistribution(Seq('a.asc, 'b.asc, 'c.asc)), + false) + + // TODO: We should check functional dependencies + /* + checkSatisfied( + ClusteredDistribution(Seq('b)), + ClusteredDistribution(Seq('b + 1)), + true) + */ + } + + test("RangePartitioning is the output partitioning") { + // Cases which do not need an exchange between two data properties. + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + UnspecifiedDistribution, + true) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + OrderedDistribution(Seq('a.asc, 'b.asc, 'c.asc)), + true) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + OrderedDistribution(Seq('a.asc, 'b.asc)), + true) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + OrderedDistribution(Seq('a.asc, 'b.asc, 'c.asc, 'd.desc)), + true) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + ClusteredDistribution(Seq('a, 'b, 'c)), + true) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + ClusteredDistribution(Seq('c, 'b, 'a)), + true) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + ClusteredDistribution(Seq('b, 'c, 'a, 'd)), + true) + + // Cases which need an exchange between two data properties. + // TODO: We can have an optimization to first sort the dataset + // by a.asc and then sort b, and c in a partition. This optimization + // should tradeoff the benefit of a less number of Exchange operators + // and the parallelism. + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + OrderedDistribution(Seq('a.asc, 'b.desc, 'c.asc)), + false) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + OrderedDistribution(Seq('b.asc, 'a.asc)), + false) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + ClusteredDistribution(Seq('a, 'b)), + false) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + ClusteredDistribution(Seq('c, 'd)), + false) + + checkSatisfied( + RangePartitioning(Seq('a.asc, 'b.asc, 'c.asc), 10), + AllTuples, + false) + } +} diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisSuite.scala new file mode 100644 index 0000000000000..4c313585c6386 --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisSuite.scala @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.analysis + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.plans.logical._ + +/* Implicit conversions */ +import org.apache.spark.sql.catalyst.dsl.expressions._ + +class AnalysisSuite extends FunSuite { + val analyze = SimpleAnalyzer + + val testRelation = LocalRelation('a.int) + + test("analyze project") { + assert( + analyze(Project(Seq(UnresolvedAttribute("a")), testRelation)) === + Project(testRelation.output, testRelation)) + } +} diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala new file mode 100644 index 0000000000000..b9e0f8e9dcc5f --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.analysis + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.types._ + +class HiveTypeCoercionSuite extends FunSuite { + + val rules = new HiveTypeCoercion { } + import rules._ + + test("tightest common bound for numeric and boolean types") { + def widenTest(t1: DataType, t2: DataType, tightestCommon: Option[DataType]) { + var found = WidenTypes.findTightestCommonType(t1, t2) + assert(found == tightestCommon, + s"Expected $tightestCommon as tightest common type for $t1 and $t2, found $found") + // Test both directions to make sure the widening is symmetric. + found = WidenTypes.findTightestCommonType(t2, t1) + assert(found == tightestCommon, + s"Expected $tightestCommon as tightest common type for $t2 and $t1, found $found") + } + + // Boolean + widenTest(NullType, BooleanType, Some(BooleanType)) + widenTest(BooleanType, BooleanType, Some(BooleanType)) + widenTest(IntegerType, BooleanType, None) + widenTest(LongType, BooleanType, None) + + // Integral + widenTest(NullType, ByteType, Some(ByteType)) + widenTest(NullType, IntegerType, Some(IntegerType)) + widenTest(NullType, LongType, Some(LongType)) + widenTest(ShortType, IntegerType, Some(IntegerType)) + widenTest(ShortType, LongType, Some(LongType)) + widenTest(IntegerType, LongType, Some(LongType)) + widenTest(LongType, LongType, Some(LongType)) + + // Floating point + widenTest(NullType, FloatType, Some(FloatType)) + widenTest(NullType, DoubleType, Some(DoubleType)) + widenTest(FloatType, DoubleType, Some(DoubleType)) + widenTest(FloatType, FloatType, Some(FloatType)) + widenTest(DoubleType, DoubleType, Some(DoubleType)) + + // Integral mixed with floating point. + widenTest(NullType, FloatType, Some(FloatType)) + widenTest(NullType, DoubleType, Some(DoubleType)) + widenTest(IntegerType, FloatType, Some(FloatType)) + widenTest(IntegerType, DoubleType, Some(DoubleType)) + widenTest(IntegerType, DoubleType, Some(DoubleType)) + widenTest(LongType, FloatType, Some(FloatType)) + widenTest(LongType, DoubleType, Some(DoubleType)) + } +} diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ExpressionEvaluationSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ExpressionEvaluationSuite.scala new file mode 100644 index 0000000000000..888a19d79f7e4 --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ExpressionEvaluationSuite.scala @@ -0,0 +1,272 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.expressions + +import java.sql.Timestamp + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.types._ + +/* Implicit conversions */ +import org.apache.spark.sql.catalyst.dsl.expressions._ + +class ExpressionEvaluationSuite extends FunSuite { + + test("literals") { + assert((Literal(1) + Literal(1)).eval(null) === 2) + } + + /** + * Checks for three-valued-logic. Based on: + * http://en.wikipedia.org/wiki/Null_(SQL)#Comparisons_with_NULL_and_the_three-valued_logic_.283VL.29 + * + * p q p OR q p AND q p = q + * True True True True True + * True False True False False + * True Unknown True Unknown Unknown + * False True True False False + * False False False False True + * False Unknown Unknown False Unknown + * Unknown True True Unknown Unknown + * Unknown False Unknown False Unknown + * Unknown Unknown Unknown Unknown Unknown + * + * p NOT p + * True False + * False True + * Unknown Unknown + */ + + val notTrueTable = + (true, false) :: + (false, true) :: + (null, null) :: Nil + + test("3VL Not") { + notTrueTable.foreach { + case (v, answer) => + val expr = Not(Literal(v, BooleanType)) + val result = expr.eval(null) + if (result != answer) + fail(s"$expr should not evaluate to $result, expected: $answer") } + } + + booleanLogicTest("AND", _ && _, + (true, true, true) :: + (true, false, false) :: + (true, null, null) :: + (false, true, false) :: + (false, false, false) :: + (false, null, false) :: + (null, true, null) :: + (null, false, false) :: + (null, null, null) :: Nil) + + booleanLogicTest("OR", _ || _, + (true, true, true) :: + (true, false, true) :: + (true, null, true) :: + (false, true, true) :: + (false, false, false) :: + (false, null, null) :: + (null, true, true) :: + (null, false, null) :: + (null, null, null) :: Nil) + + booleanLogicTest("=", _ === _, + (true, true, true) :: + (true, false, false) :: + (true, null, null) :: + (false, true, false) :: + (false, false, true) :: + (false, null, null) :: + (null, true, null) :: + (null, false, null) :: + (null, null, null) :: Nil) + + def booleanLogicTest( + name: String, + op: (Expression, Expression) => Expression, + truthTable: Seq[(Any, Any, Any)]) { + test(s"3VL $name") { + truthTable.foreach { + case (l,r,answer) => + val expr = op(Literal(l, BooleanType), Literal(r, BooleanType)) + val result = expr.eval(null) + if (result != answer) + fail(s"$expr should not evaluate to $result, expected: $answer") + } + } + } + + def evaluate(expression: Expression, inputRow: Row = EmptyRow): Any = { + expression.eval(inputRow) + } + + def checkEvaluation(expression: Expression, expected: Any, inputRow: Row = EmptyRow): Unit = { + val actual = try evaluate(expression, inputRow) catch { + case e: Exception => fail(s"Exception evaluating $expression", e) + } + if(actual != expected) { + val input = if(inputRow == EmptyRow) "" else s", input: $inputRow" + fail(s"Incorrect Evaluation: $expression, actual: $actual, expected: $expected$input") + } + } + + test("LIKE literal Regular Expression") { + checkEvaluation(Literal(null, StringType).like("a"), null) + checkEvaluation(Literal(null, StringType).like(Literal(null, StringType)), null) + checkEvaluation("abdef" like "abdef", true) + checkEvaluation("a_%b" like "a\\__b", true) + checkEvaluation("addb" like "a_%b", true) + checkEvaluation("addb" like "a\\__b", false) + checkEvaluation("addb" like "a%\\%b", false) + checkEvaluation("a_%b" like "a%\\%b", true) + checkEvaluation("addb" like "a%", true) + checkEvaluation("addb" like "**", false) + checkEvaluation("abc" like "a%", true) + checkEvaluation("abc" like "b%", false) + checkEvaluation("abc" like "bc%", false) + } + + test("LIKE Non-literal Regular Expression") { + val regEx = 'a.string.at(0) + checkEvaluation("abcd" like regEx, null, new GenericRow(Array[Any](null))) + checkEvaluation("abdef" like regEx, true, new GenericRow(Array[Any]("abdef"))) + checkEvaluation("a_%b" like regEx, true, new GenericRow(Array[Any]("a\\__b"))) + checkEvaluation("addb" like regEx, true, new GenericRow(Array[Any]("a_%b"))) + checkEvaluation("addb" like regEx, false, new GenericRow(Array[Any]("a\\__b"))) + checkEvaluation("addb" like regEx, false, new GenericRow(Array[Any]("a%\\%b"))) + checkEvaluation("a_%b" like regEx, true, new GenericRow(Array[Any]("a%\\%b"))) + checkEvaluation("addb" like regEx, true, new GenericRow(Array[Any]("a%"))) + checkEvaluation("addb" like regEx, false, new GenericRow(Array[Any]("**"))) + checkEvaluation("abc" like regEx, true, new GenericRow(Array[Any]("a%"))) + checkEvaluation("abc" like regEx, false, new GenericRow(Array[Any]("b%"))) + checkEvaluation("abc" like regEx, false, new GenericRow(Array[Any]("bc%"))) + } + + test("RLIKE literal Regular Expression") { + checkEvaluation("abdef" rlike "abdef", true) + checkEvaluation("abbbbc" rlike "a.*c", true) + + checkEvaluation("fofo" rlike "^fo", true) + checkEvaluation("fo\no" rlike "^fo\no$", true) + checkEvaluation("Bn" rlike "^Ba*n", true) + checkEvaluation("afofo" rlike "fo", true) + checkEvaluation("afofo" rlike "^fo", false) + checkEvaluation("Baan" rlike "^Ba?n", false) + checkEvaluation("axe" rlike "pi|apa", false) + checkEvaluation("pip" rlike "^(pi)*$", false) + + checkEvaluation("abc" rlike "^ab", true) + checkEvaluation("abc" rlike "^bc", false) + checkEvaluation("abc" rlike "^ab", true) + checkEvaluation("abc" rlike "^bc", false) + + intercept[java.util.regex.PatternSyntaxException] { + evaluate("abbbbc" rlike "**") + } + } + + test("RLIKE Non-literal Regular Expression") { + val regEx = 'a.string.at(0) + checkEvaluation("abdef" rlike regEx, true, new GenericRow(Array[Any]("abdef"))) + checkEvaluation("abbbbc" rlike regEx, true, new GenericRow(Array[Any]("a.*c"))) + checkEvaluation("fofo" rlike regEx, true, new GenericRow(Array[Any]("^fo"))) + checkEvaluation("fo\no" rlike regEx, true, new GenericRow(Array[Any]("^fo\no$"))) + checkEvaluation("Bn" rlike regEx, true, new GenericRow(Array[Any]("^Ba*n"))) + + intercept[java.util.regex.PatternSyntaxException] { + evaluate("abbbbc" rlike regEx, new GenericRow(Array[Any]("**"))) + } + } + + test("data type casting") { + + val sts = "1970-01-01 00:00:01.0" + val ts = Timestamp.valueOf(sts) + + checkEvaluation("abdef" cast StringType, "abdef") + checkEvaluation("abdef" cast DecimalType, null) + checkEvaluation("abdef" cast TimestampType, null) + checkEvaluation("12.65" cast DecimalType, BigDecimal(12.65)) + + checkEvaluation(Literal(1) cast LongType, 1) + checkEvaluation(Cast(Literal(1) cast TimestampType, LongType), 1) + checkEvaluation(Cast(Literal(1.toDouble) cast TimestampType, DoubleType), 1.toDouble) + + checkEvaluation(Cast(Literal(sts) cast TimestampType, StringType), sts) + checkEvaluation(Cast(Literal(ts) cast StringType, TimestampType), ts) + + checkEvaluation(Cast("abdef" cast BinaryType, StringType), "abdef") + + checkEvaluation(Cast(Cast(Cast(Cast( + Cast("5" cast ByteType, ShortType), IntegerType), FloatType), DoubleType), LongType), 5) + checkEvaluation(Cast(Cast(Cast(Cast( + Cast("5" cast ByteType, TimestampType), DecimalType), LongType), StringType), ShortType), 5) + checkEvaluation(Cast(Cast(Cast(Cast( + Cast("5" cast TimestampType, ByteType), DecimalType), LongType), StringType), ShortType), null) + checkEvaluation(Cast(Cast(Cast(Cast( + Cast("5" cast DecimalType, ByteType), TimestampType), LongType), StringType), ShortType), 5) + checkEvaluation(Literal(true) cast IntegerType, 1) + checkEvaluation(Literal(false) cast IntegerType, 0) + checkEvaluation(Cast(Literal(1) cast BooleanType, IntegerType), 1) + checkEvaluation(Cast(Literal(0) cast BooleanType, IntegerType), 0) + checkEvaluation("23" cast DoubleType, 23) + checkEvaluation("23" cast IntegerType, 23) + checkEvaluation("23" cast FloatType, 23) + checkEvaluation("23" cast DecimalType, 23) + checkEvaluation("23" cast ByteType, 23) + checkEvaluation("23" cast ShortType, 23) + checkEvaluation("2012-12-11" cast DoubleType, null) + checkEvaluation(Literal(123) cast IntegerType, 123) + + intercept[Exception] {evaluate(Literal(1) cast BinaryType, null)} + } + + test("timestamp") { + val ts1 = new Timestamp(12) + val ts2 = new Timestamp(123) + checkEvaluation(Literal("ab") < Literal("abc"), true) + checkEvaluation(Literal(ts1) < Literal(ts2), true) + } + + test("timestamp casting") { + val millis = 15 * 1000 + 2 + val ts = new Timestamp(millis) + val ts1 = new Timestamp(15 * 1000) // a timestamp without the milliseconds part + checkEvaluation(Cast(ts, ShortType), 15) + checkEvaluation(Cast(ts, IntegerType), 15) + checkEvaluation(Cast(ts, LongType), 15) + checkEvaluation(Cast(ts, FloatType), 15.002f) + checkEvaluation(Cast(ts, DoubleType), 15.002) + checkEvaluation(Cast(Cast(ts, ShortType), TimestampType), ts1) + checkEvaluation(Cast(Cast(ts, IntegerType), TimestampType), ts1) + checkEvaluation(Cast(Cast(ts, LongType), TimestampType), ts1) + checkEvaluation(Cast(Cast(millis.toFloat / 1000, TimestampType), FloatType), + millis.toFloat / 1000) + checkEvaluation(Cast(Cast(millis.toDouble / 1000, TimestampType), DoubleType), + millis.toDouble / 1000) + checkEvaluation(Cast(Literal(BigDecimal(1)) cast TimestampType, DecimalType), 1) + + // A test for higher precision than millis + checkEvaluation(Cast(Cast(0.00000001, TimestampType), DoubleType), 0.00000001) + } +} + diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/ConstantFoldingSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/ConstantFoldingSuite.scala new file mode 100644 index 0000000000000..20dfba847790c --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/ConstantFoldingSuite.scala @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.optimizer + +import org.apache.spark.sql.catalyst.analysis.EliminateAnalysisOperators +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical.{LocalRelation, LogicalPlan} +import org.apache.spark.sql.catalyst.rules.RuleExecutor +import org.apache.spark.sql.catalyst.types.{DoubleType, IntegerType} + +// For implicit conversions +import org.apache.spark.sql.catalyst.dsl.plans._ +import org.apache.spark.sql.catalyst.dsl.expressions._ + +class ConstantFoldingSuite extends OptimizerTest { + + object Optimize extends RuleExecutor[LogicalPlan] { + val batches = + Batch("AnalysisNodes", Once, + EliminateAnalysisOperators) :: + Batch("ConstantFolding", Once, + ConstantFolding, + BooleanSimplification) :: Nil + } + + val testRelation = LocalRelation('a.int, 'b.int, 'c.int) + + test("eliminate subqueries") { + val originalQuery = + testRelation + .subquery('y) + .select('a) + + val optimized = Optimize(originalQuery.analyze) + val correctAnswer = + testRelation + .select('a.attr) + .analyze + + comparePlans(optimized, correctAnswer) + } + + /** + * Unit tests for constant folding in expressions. + */ + test("Constant folding test: expressions only have literals") { + val originalQuery = + testRelation + .select( + Literal(2) + Literal(3) + Literal(4) as Symbol("2+3+4"), + Literal(2) * Literal(3) + Literal(4) as Symbol("2*3+4"), + Literal(2) * (Literal(3) + Literal(4)) as Symbol("2*(3+4)")) + .where( + Literal(1) === Literal(1) && + Literal(2) > Literal(3) || + Literal(3) > Literal(2) ) + .groupBy( + Literal(2) * Literal(3) - Literal(6) / (Literal(4) - Literal(2)) + )(Literal(9) / Literal(3) as Symbol("9/3")) + + val optimized = Optimize(originalQuery.analyze) + + val correctAnswer = + testRelation + .select( + Literal(9) as Symbol("2+3+4"), + Literal(10) as Symbol("2*3+4"), + Literal(14) as Symbol("2*(3+4)")) + .where(Literal(true)) + .groupBy(Literal(3))(Literal(3) as Symbol("9/3")) + .analyze + + comparePlans(optimized, correctAnswer) + } + + test("Constant folding test: expressions have attribute references and literals in " + + "arithmetic operations") { + val originalQuery = + testRelation + .select( + Literal(2) + Literal(3) + 'a as Symbol("c1"), + 'a + Literal(2) + Literal(3) as Symbol("c2"), + Literal(2) * 'a + Literal(4) as Symbol("c3"), + 'a * (Literal(3) + Literal(4)) as Symbol("c4")) + + val optimized = Optimize(originalQuery.analyze) + + val correctAnswer = + testRelation + .select( + Literal(5) + 'a as Symbol("c1"), + 'a + Literal(2) + Literal(3) as Symbol("c2"), + Literal(2) * 'a + Literal(4) as Symbol("c3"), + 'a * Literal(7) as Symbol("c4")) + .analyze + + comparePlans(optimized, correctAnswer) + } + + test("Constant folding test: expressions have attribute references and literals in " + + "predicates") { + val originalQuery = + testRelation + .where( + (('a > 1 && Literal(1) === Literal(1)) || + ('a < 10 && Literal(1) === Literal(2)) || + (Literal(1) === Literal(1) && 'b > 1) || + (Literal(1) === Literal(2) && 'b < 10)) && + (('a > 1 || Literal(1) === Literal(1)) && + ('a < 10 || Literal(1) === Literal(2)) && + (Literal(1) === Literal(1) || 'b > 1) && + (Literal(1) === Literal(2) || 'b < 10))) + + val optimized = Optimize(originalQuery.analyze) + + val correctAnswer = + testRelation + .where(('a > 1 || 'b > 1) && ('a < 10 && 'b < 10)) + .analyze + + comparePlans(optimized, correctAnswer) + } + + test("Constant folding test: expressions have foldable functions") { + val originalQuery = + testRelation + .select( + Cast(Literal("2"), IntegerType) + Literal(3) + 'a as Symbol("c1"), + Coalesce(Seq(Cast(Literal("abc"), IntegerType), Literal(3))) as Symbol("c2")) + + val optimized = Optimize(originalQuery.analyze) + + val correctAnswer = + testRelation + .select( + Literal(5) + 'a as Symbol("c1"), + Literal(3) as Symbol("c2")) + .analyze + + comparePlans(optimized, correctAnswer) + } + + test("Constant folding test: expressions have nonfoldable functions") { + val originalQuery = + testRelation + .select( + Rand + Literal(1) as Symbol("c1"), + Sum('a) as Symbol("c2")) + + val optimized = Optimize(originalQuery.analyze) + + val correctAnswer = + testRelation + .select( + Rand + Literal(1.0) as Symbol("c1"), + Sum('a) as Symbol("c2")) + .analyze + + comparePlans(optimized, correctAnswer) + } +} diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/FilterPushdownSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/FilterPushdownSuite.scala new file mode 100644 index 0000000000000..ef47850455a37 --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/FilterPushdownSuite.scala @@ -0,0 +1,237 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.optimizer + +import org.apache.spark.sql.catalyst.analysis +import org.apache.spark.sql.catalyst.analysis.EliminateAnalysisOperators +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.rules._ + +/* Implicit conversions */ +import org.apache.spark.sql.catalyst.dsl.plans._ +import org.apache.spark.sql.catalyst.dsl.expressions._ + +class FilterPushdownSuite extends OptimizerTest { + + object Optimize extends RuleExecutor[LogicalPlan] { + val batches = + Batch("Subqueries", Once, + EliminateAnalysisOperators) :: + Batch("Filter Pushdown", Once, + CombineFilters, + PushPredicateThroughProject, + PushPredicateThroughInnerJoin) :: Nil + } + + val testRelation = LocalRelation('a.int, 'b.int, 'c.int) + + // This test already passes. + test("eliminate subqueries") { + val originalQuery = + testRelation + .subquery('y) + .select('a) + + val optimized = Optimize(originalQuery.analyze) + val correctAnswer = + testRelation + .select('a.attr) + .analyze + + comparePlans(optimized, correctAnswer) + } + + // After this line is unimplemented. + test("simple push down") { + val originalQuery = + testRelation + .select('a) + .where('a === 1) + + val optimized = Optimize(originalQuery.analyze) + val correctAnswer = + testRelation + .where('a === 1) + .select('a) + .analyze + + comparePlans(optimized, correctAnswer) + } + + test("can't push without rewrite") { + val originalQuery = + testRelation + .select('a + 'b as 'e) + .where('e === 1) + .analyze + + val optimized = Optimize(originalQuery.analyze) + val correctAnswer = + testRelation + .where('a + 'b === 1) + .select('a + 'b as 'e) + .analyze + + comparePlans(optimized, correctAnswer) + } + + test("filters: combines filters") { + val originalQuery = testRelation + .select('a) + .where('a === 1) + .where('a === 2) + + val optimized = Optimize(originalQuery.analyze) + val correctAnswer = + testRelation + .where('a === 1 && 'a === 2) + .select('a).analyze + + + comparePlans(optimized, correctAnswer) + } + + + test("joins: push to either side") { + val x = testRelation.subquery('x) + val y = testRelation.subquery('y) + + val originalQuery = { + x.join(y) + .where("x.b".attr === 1) + .where("y.b".attr === 2) + } + + val optimized = Optimize(originalQuery.analyze) + val left = testRelation.where('b === 1) + val right = testRelation.where('b === 2) + val correctAnswer = + left.join(right).analyze + + comparePlans(optimized, correctAnswer) + } + + test("joins: push to one side") { + val x = testRelation.subquery('x) + val y = testRelation.subquery('y) + + val originalQuery = { + x.join(y) + .where("x.b".attr === 1) + } + + val optimized = Optimize(originalQuery.analyze) + val left = testRelation.where('b === 1) + val right = testRelation + val correctAnswer = + left.join(right).analyze + + comparePlans(optimized, correctAnswer) + } + + test("joins: rewrite filter to push to either side") { + val x = testRelation.subquery('x) + val y = testRelation.subquery('y) + + val originalQuery = { + x.join(y) + .where("x.b".attr === 1 && "y.b".attr === 2) + } + + val optimized = Optimize(originalQuery.analyze) + val left = testRelation.where('b === 1) + val right = testRelation.where('b === 2) + val correctAnswer = + left.join(right).analyze + + comparePlans(optimized, correctAnswer) + } + + test("joins: can't push down") { + val x = testRelation.subquery('x) + val y = testRelation.subquery('y) + + val originalQuery = { + x.join(y, condition = Some("x.b".attr === "y.b".attr)) + } + val optimized = Optimize(originalQuery.analyze) + + comparePlans(analysis.EliminateAnalysisOperators(originalQuery.analyze), optimized) + } + + test("joins: conjunctive predicates") { + val x = testRelation.subquery('x) + val y = testRelation.subquery('y) + + val originalQuery = { + x.join(y) + .where(("x.b".attr === "y.b".attr) && ("x.a".attr === 1) && ("y.a".attr === 1)) + } + + val optimized = Optimize(originalQuery.analyze) + val left = testRelation.where('a === 1).subquery('x) + val right = testRelation.where('a === 1).subquery('y) + val correctAnswer = + left.join(right, condition = Some("x.b".attr === "y.b".attr)) + .analyze + + comparePlans(optimized, analysis.EliminateAnalysisOperators(correctAnswer)) + } + + test("joins: conjunctive predicates #2") { + val x = testRelation.subquery('x) + val y = testRelation.subquery('y) + + val originalQuery = { + x.join(y) + .where(("x.b".attr === "y.b".attr) && ("x.a".attr === 1)) + } + + val optimized = Optimize(originalQuery.analyze) + val left = testRelation.where('a === 1).subquery('x) + val right = testRelation.subquery('y) + val correctAnswer = + left.join(right, condition = Some("x.b".attr === "y.b".attr)) + .analyze + + comparePlans(optimized, analysis.EliminateAnalysisOperators(correctAnswer)) + } + + test("joins: conjunctive predicates #3") { + val x = testRelation.subquery('x) + val y = testRelation.subquery('y) + val z = testRelation.subquery('z) + + val originalQuery = { + z.join(x.join(y)) + .where(("x.b".attr === "y.b".attr) && ("x.a".attr === 1) && ("z.a".attr >= 3) && ("z.a".attr === "x.b".attr)) + } + + val optimized = Optimize(originalQuery.analyze) + val lleft = testRelation.where('a >= 3).subquery('z) + val left = testRelation.where('a === 1).subquery('x) + val right = testRelation.subquery('y) + val correctAnswer = + lleft.join( + left.join(right, condition = Some("x.b".attr === "y.b".attr)), + condition = Some("z.a".attr === "x.b".attr)) + .analyze + + comparePlans(optimized, analysis.EliminateAnalysisOperators(correctAnswer)) + } +} diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/OptimizerTest.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/OptimizerTest.scala new file mode 100644 index 0000000000000..89982d5cd8d74 --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/OptimizerTest.scala @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.optimizer + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan +import org.apache.spark.sql.catalyst.util._ + +/** + * Provides helper methods for comparing plans produced by optimization rules with the expected + * result + */ +class OptimizerTest extends FunSuite { + + /** + * Since attribute references are given globally unique ids during analysis, + * we must normalize them to check if two different queries are identical. + */ + protected def normalizeExprIds(plan: LogicalPlan) = { + val minId = plan.flatMap(_.expressions.flatMap(_.references).map(_.exprId.id)).min + plan transformAllExpressions { + case a: AttributeReference => + AttributeReference(a.name, a.dataType, a.nullable)(exprId = ExprId(a.exprId.id - minId)) + } + } + + /** Fails the test if the two plans do not match */ + protected def comparePlans(plan1: LogicalPlan, plan2: LogicalPlan) { + val normalized1 = normalizeExprIds(plan1) + val normalized2 = normalizeExprIds(plan2) + if (normalized1 != normalized2) + fail( + s""" + |== FAIL: Plans do not match === + |${sideBySide(normalized1.treeString, normalized2.treeString).mkString("\n")} + """.stripMargin) + } +} diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/trees/RuleExecutorSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/trees/RuleExecutorSuite.scala new file mode 100644 index 0000000000000..4b2d45584045f --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/trees/RuleExecutorSuite.scala @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.trees + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.expressions.{Expression, IntegerLiteral, Literal} +import org.apache.spark.sql.catalyst.rules.{Rule, RuleExecutor} + +class RuleExecutorSuite extends FunSuite { + object DecrementLiterals extends Rule[Expression] { + def apply(e: Expression): Expression = e transform { + case IntegerLiteral(i) if i > 0 => Literal(i - 1) + } + } + + test("only once") { + object ApplyOnce extends RuleExecutor[Expression] { + val batches = Batch("once", Once, DecrementLiterals) :: Nil + } + + assert(ApplyOnce(Literal(10)) === Literal(9)) + } + + test("to fixed point") { + object ToFixedPoint extends RuleExecutor[Expression] { + val batches = Batch("fixedPoint", FixedPoint(100), DecrementLiterals) :: Nil + } + + assert(ToFixedPoint(Literal(10)) === Literal(0)) + } + + test("to maxIterations") { + object ToFixedPoint extends RuleExecutor[Expression] { + val batches = Batch("fixedPoint", FixedPoint(10), DecrementLiterals) :: Nil + } + + assert(ToFixedPoint(Literal(100)) === Literal(90)) + } +} diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/trees/TreeNodeSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/trees/TreeNodeSuite.scala new file mode 100644 index 0000000000000..1ddc41a731ff5 --- /dev/null +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/trees/TreeNodeSuite.scala @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.catalyst.trees + +import scala.collection.mutable.ArrayBuffer + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.expressions._ + +class TreeNodeSuite extends FunSuite { + test("top node changed") { + val after = Literal(1) transform { case Literal(1, _) => Literal(2) } + assert(after === Literal(2)) + } + + test("one child changed") { + val before = Add(Literal(1), Literal(2)) + val after = before transform { case Literal(2, _) => Literal(1) } + + assert(after === Add(Literal(1), Literal(1))) + } + + test("no change") { + val before = Add(Literal(1), Add(Literal(2), Add(Literal(3), Literal(4)))) + val after = before transform { case Literal(5, _) => Literal(1)} + + assert(before === after) + assert(before.map(_.id) === after.map(_.id)) + } + + test("collect") { + val tree = Add(Literal(1), Add(Literal(2), Add(Literal(3), Literal(4)))) + val literals = tree collect {case l: Literal => l} + + assert(literals.size === 4) + (1 to 4).foreach(i => assert(literals contains Literal(i))) + } + + test("pre-order transform") { + val actual = new ArrayBuffer[String]() + val expected = Seq("+", "1", "*", "2", "-", "3", "4") + val expression = Add(Literal(1), Multiply(Literal(2), Subtract(Literal(3), Literal(4)))) + expression transformDown { + case b: BinaryExpression => actual.append(b.symbol); b + case l: Literal => actual.append(l.toString); l + } + + assert(expected === actual) + } + + test("post-order transform") { + val actual = new ArrayBuffer[String]() + val expected = Seq("1", "2", "3", "4", "-", "*", "+") + val expression = Add(Literal(1), Multiply(Literal(2), Subtract(Literal(3), Literal(4)))) + expression transformUp { + case b: BinaryExpression => actual.append(b.symbol); b + case l: Literal => actual.append(l.toString); l + } + + assert(expected === actual) + } +} diff --git a/sql/core/pom.xml b/sql/core/pom.xml new file mode 100644 index 0000000000000..85580ed6b822f --- /dev/null +++ b/sql/core/pom.xml @@ -0,0 +1,87 @@ + + + + + 4.0.0 + + org.apache.spark + spark-parent + 1.0.0-SNAPSHOT + ../../pom.xml + + + org.apache.spark + spark-sql_2.10 + jar + Spark Project SQL + http://spark.apache.org/ + + + yarn-alpha + + + org.apache.avro + avro + + + + + + + + org.apache.spark + spark-core_${scala.binary.version} + ${project.version} + + + org.apache.spark + spark-catalyst_${scala.binary.version} + ${project.version} + + + com.twitter + parquet-column + ${parquet.version} + + + com.twitter + parquet-hadoop + ${parquet.version} + + + org.scalatest + scalatest_${scala.binary.version} + test + + + org.scalacheck + scalacheck_${scala.binary.version} + test + + + + target/scala-${scala.binary.version}/classes + target/scala-${scala.binary.version}/test-classes + + + org.scalatest + scalatest-maven-plugin + + + + diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala b/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala new file mode 100644 index 0000000000000..d3d4c56bafe41 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala @@ -0,0 +1,244 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql + +import scala.language.implicitConversions +import scala.reflect.runtime.universe.TypeTag + +import org.apache.spark.SparkContext +import org.apache.spark.annotation.{AlphaComponent, Experimental} +import org.apache.spark.rdd.RDD +import org.apache.spark.sql.catalyst.analysis._ +import org.apache.spark.sql.catalyst.dsl +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.optimizer.Optimizer +import org.apache.spark.sql.catalyst.plans.logical.{Subquery, LogicalPlan} +import org.apache.spark.sql.catalyst.rules.RuleExecutor +import org.apache.spark.sql.columnar.InMemoryColumnarTableScan +import org.apache.spark.sql.execution._ + +/** + * :: AlphaComponent :: + * The entry point for running relational queries using Spark. Allows the creation of [[SchemaRDD]] + * objects and the execution of SQL queries. + * + * @groupname userf Spark SQL Functions + * @groupname Ungrouped Support functions for language integrated queries. + */ +@AlphaComponent +class SQLContext(@transient val sparkContext: SparkContext) + extends Logging + with dsl.ExpressionConversions + with Serializable { + + self => + + @transient + protected[sql] lazy val catalog: Catalog = new SimpleCatalog + @transient + protected[sql] lazy val analyzer: Analyzer = + new Analyzer(catalog, EmptyFunctionRegistry, caseSensitive = true) + @transient + protected[sql] val optimizer = Optimizer + @transient + protected[sql] val parser = new catalyst.SqlParser + + protected[sql] def parseSql(sql: String): LogicalPlan = parser(sql) + protected[sql] def executeSql(sql: String): this.QueryExecution = executePlan(parseSql(sql)) + protected[sql] def executePlan(plan: LogicalPlan): this.QueryExecution = + new this.QueryExecution { val logical = plan } + + /** + * :: Experimental :: + * Allows catalyst LogicalPlans to be executed as a SchemaRDD. Note that the LogicalPlan + * interface is considered internal, and thus not guranteed to be stable. As a result, using + * them directly is not reccomended. + */ + @Experimental + implicit def logicalPlanToSparkQuery(plan: LogicalPlan): SchemaRDD = new SchemaRDD(this, plan) + + /** + * Creates a SchemaRDD from an RDD of case classes. + * + * @group userf + */ + implicit def createSchemaRDD[A <: Product: TypeTag](rdd: RDD[A]) = + new SchemaRDD(this, SparkLogicalPlan(ExistingRdd.fromProductRdd(rdd))) + + /** + * Loads a Parquet file, returning the result as a [[SchemaRDD]]. + * + * @group userf + */ + def parquetFile(path: String): SchemaRDD = + new SchemaRDD(this, parquet.ParquetRelation(path)) + + + /** + * Registers the given RDD as a temporary table in the catalog. Temporary tables exist only + * during the lifetime of this instance of SQLContext. + * + * @group userf + */ + def registerRDDAsTable(rdd: SchemaRDD, tableName: String): Unit = { + catalog.registerTable(None, tableName, rdd.logicalPlan) + } + + /** + * Executes a SQL query using Spark, returning the result as a SchemaRDD. + * + * @group userf + */ + def sql(sqlText: String): SchemaRDD = { + val result = new SchemaRDD(this, parseSql(sqlText)) + // We force query optimization to happen right away instead of letting it happen lazily like + // when using the query DSL. This is so DDL commands behave as expected. This is only + // generates the RDD lineage for DML queries, but do not perform any execution. + result.queryExecution.toRdd + result + } + + /** Returns the specified table as a SchemaRDD */ + def table(tableName: String): SchemaRDD = + new SchemaRDD(this, catalog.lookupRelation(None, tableName)) + + /** Caches the specified table in-memory. */ + def cacheTable(tableName: String): Unit = { + val currentTable = catalog.lookupRelation(None, tableName) + val asInMemoryRelation = + InMemoryColumnarTableScan(currentTable.output, executePlan(currentTable).executedPlan) + + catalog.registerTable(None, tableName, SparkLogicalPlan(asInMemoryRelation)) + } + + /** Removes the specified table from the in-memory cache. */ + def uncacheTable(tableName: String): Unit = { + EliminateAnalysisOperators(catalog.lookupRelation(None, tableName)) match { + // This is kind of a hack to make sure that if this was just an RDD registered as a table, + // we reregister the RDD as a table. + case SparkLogicalPlan(inMem @ InMemoryColumnarTableScan(_, e: ExistingRdd)) => + inMem.cachedColumnBuffers.unpersist() + catalog.unregisterTable(None, tableName) + catalog.registerTable(None, tableName, SparkLogicalPlan(e)) + case SparkLogicalPlan(inMem: InMemoryColumnarTableScan) => + inMem.cachedColumnBuffers.unpersist() + catalog.unregisterTable(None, tableName) + case plan => throw new IllegalArgumentException(s"Table $tableName is not cached: $plan") + } + } + + protected[sql] class SparkPlanner extends SparkStrategies { + val sparkContext = self.sparkContext + + val strategies: Seq[Strategy] = + TakeOrdered :: + PartialAggregation :: + HashJoin :: + ParquetOperations :: + BasicOperators :: + CartesianProduct :: + BroadcastNestedLoopJoin :: Nil + + /** + * Used to build table scan operators where complex projection and filtering are done using + * separate physical operators. This function returns the given scan operator with Project and + * Filter nodes added only when needed. For example, a Project operator is only used when the + * final desired output requires complex expressions to be evaluated or when columns can be + * further eliminated out after filtering has been done. + * + * The required attributes for both filtering and expression evaluation are passed to the + * provided `scanBuilder` function so that it can avoid unnecessary column materialization. + */ + def pruneFilterProject( + projectList: Seq[NamedExpression], + filterPredicates: Seq[Expression], + scanBuilder: Seq[Attribute] => SparkPlan): SparkPlan = { + + val projectSet = projectList.flatMap(_.references).toSet + val filterSet = filterPredicates.flatMap(_.references).toSet + val filterCondition = filterPredicates.reduceLeftOption(And) + + // Right now we still use a projection even if the only evaluation is applying an alias + // to a column. Since this is a no-op, it could be avoided. However, using this + // optimization with the current implementation would change the output schema. + // TODO: Decouple final output schema from expression evaluation so this copy can be + // avoided safely. + + if (projectList.toSet == projectSet && filterSet.subsetOf(projectSet)) { + // When it is possible to just use column pruning to get the right projection and + // when the columns of this projection are enough to evaluate all filter conditions, + // just do a scan followed by a filter, with no extra project. + val scan = scanBuilder(projectList.asInstanceOf[Seq[Attribute]]) + filterCondition.map(Filter(_, scan)).getOrElse(scan) + } else { + val scan = scanBuilder((projectSet ++ filterSet).toSeq) + Project(projectList, filterCondition.map(Filter(_, scan)).getOrElse(scan)) + } + } + } + + @transient + protected[sql] val planner = new SparkPlanner + + /** + * Prepares a planned SparkPlan for execution by binding references to specific ordinals, and + * inserting shuffle operations as needed. + */ + @transient + protected[sql] val prepareForExecution = new RuleExecutor[SparkPlan] { + val batches = + Batch("Add exchange", Once, AddExchange) :: + Batch("Prepare Expressions", Once, new BindReferences[SparkPlan]) :: Nil + } + + /** + * The primary workflow for executing relational queries using Spark. Designed to allow easy + * access to the intermediate phases of query execution for developers. + */ + protected abstract class QueryExecution { + def logical: LogicalPlan + + lazy val analyzed = analyzer(logical) + lazy val optimizedPlan = optimizer(analyzed) + // TODO: Don't just pick the first one... + lazy val sparkPlan = planner(optimizedPlan).next() + lazy val executedPlan: SparkPlan = prepareForExecution(sparkPlan) + + /** Internal version of the RDD. Avoids copies and has no schema */ + lazy val toRdd: RDD[Row] = executedPlan.execute() + + protected def stringOrError[A](f: => A): String = + try f.toString catch { case e: Throwable => e.toString } + + def simpleString: String = stringOrError(executedPlan) + + override def toString: String = + s"""== Logical Plan == + |${stringOrError(analyzed)} + |== Optimized Logical Plan + |${stringOrError(optimizedPlan)} + |== Physical Plan == + |${stringOrError(executedPlan)} + """.stripMargin.trim + + /** + * Runs the query after interposing operators that print the result of each intermediate step. + */ + def debugExec() = DebugQuery(executedPlan).execute().collect() + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDD.scala b/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDD.scala new file mode 100644 index 0000000000000..16da7fd92bffe --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDD.scala @@ -0,0 +1,311 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.apache.spark.sql + +import org.apache.spark.{Dependency, OneToOneDependency, Partition, TaskContext} +import org.apache.spark.annotation.{AlphaComponent, Experimental} +import org.apache.spark.rdd.RDD +import org.apache.spark.sql.catalyst.analysis._ +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.plans.{Inner, JoinType} +import org.apache.spark.sql.catalyst.types.BooleanType + +/** + * :: AlphaComponent :: + * An RDD of [[Row]] objects that has an associated schema. In addition to standard RDD functions, + * SchemaRDDs can be used in relational queries, as shown in the examples below. + * + * Importing a SQLContext brings an implicit into scope that automatically converts a standard RDD + * whose elements are scala case classes into a SchemaRDD. This conversion can also be done + * explicitly using the `createSchemaRDD` function on a [[SQLContext]]. + * + * A `SchemaRDD` can also be created by loading data in from external sources, for example, + * by using the `parquetFile` method on [[SQLContext]]. + * + * == SQL Queries == + * A SchemaRDD can be registered as a table in the [[SQLContext]] that was used to create it. Once + * an RDD has been registered as a table, it can be used in the FROM clause of SQL statements. + * + * {{{ + * // One method for defining the schema of an RDD is to make a case class with the desired column + * // names and types. + * case class Record(key: Int, value: String) + * + * val sc: SparkContext // An existing spark context. + * val sqlContext = new SQLContext(sc) + * + * // Importing the SQL context gives access to all the SQL functions and implicit conversions. + * import sqlContext._ + * + * val rdd = sc.parallelize((1 to 100).map(i => Record(i, s"val_\$i"))) + * // Any RDD containing case classes can be registered as a table. The schema of the table is + * // automatically inferred using scala reflection. + * rdd.registerAsTable("records") + * + * val results: SchemaRDD = sql("SELECT * FROM records") + * }}} + * + * == Language Integrated Queries == + * + * {{{ + * + * case class Record(key: Int, value: String) + * + * val sc: SparkContext // An existing spark context. + * val sqlContext = new SQLContext(sc) + * + * // Importing the SQL context gives access to all the SQL functions and implicit conversions. + * import sqlContext._ + * + * val rdd = sc.parallelize((1 to 100).map(i => Record(i, "val_" + i))) + * + * // Example of language integrated queries. + * rdd.where('key === 1).orderBy('value.asc).select('key).collect() + * }}} + * + * @todo There is currently no support for creating SchemaRDDs from either Java or Python RDDs. + * + * @groupname Query Language Integrated Queries + * @groupdesc Query Functions that create new queries from SchemaRDDs. The + * result of all query functions is also a SchemaRDD, allowing multiple operations to be + * chained using a builder pattern. + * @groupprio Query -2 + * @groupname schema SchemaRDD Functions + * @groupprio schema -1 + * @groupname Ungrouped Base RDD Functions + */ +@AlphaComponent +class SchemaRDD( + @transient val sqlContext: SQLContext, + @transient protected[spark] val logicalPlan: LogicalPlan) + extends RDD[Row](sqlContext.sparkContext, Nil) with SchemaRDDLike { + + def baseSchemaRDD = this + + // ========================================================================================= + // RDD functions: Copy the interal row representation so we present immutable data to users. + // ========================================================================================= + + override def compute(split: Partition, context: TaskContext): Iterator[Row] = + firstParent[Row].compute(split, context).map(_.copy()) + + override def getPartitions: Array[Partition] = firstParent[Row].partitions + + override protected def getDependencies: Seq[Dependency[_]] = + List(new OneToOneDependency(queryExecution.toRdd)) + + + // ======================================================================= + // Query DSL + // ======================================================================= + + /** + * Changes the output of this relation to the given expressions, similar to the `SELECT` clause + * in SQL. + * + * {{{ + * schemaRDD.select('a, 'b + 'c, 'd as 'aliasedName) + * }}} + * + * @param exprs a set of logical expression that will be evaluated for each input row. + * + * @group Query + */ + def select(exprs: NamedExpression*): SchemaRDD = + new SchemaRDD(sqlContext, Project(exprs, logicalPlan)) + + /** + * Filters the ouput, only returning those rows where `condition` evaluates to true. + * + * {{{ + * schemaRDD.where('a === 'b) + * schemaRDD.where('a === 1) + * schemaRDD.where('a + 'b > 10) + * }}} + * + * @group Query + */ + def where(condition: Expression): SchemaRDD = + new SchemaRDD(sqlContext, Filter(condition, logicalPlan)) + + /** + * Performs a relational join on two SchemaRDDs + * + * @param otherPlan the [[SchemaRDD]] that should be joined with this one. + * @param joinType One of `Inner`, `LeftOuter`, `RightOuter`, or `FullOuter`. Defaults to `Inner.` + * @param on An optional condition for the join operation. This is equivilent to the `ON` + * clause in standard SQL. In the case of `Inner` joins, specifying a + * `condition` is equivilent to adding `where` clauses after the `join`. + * + * @group Query + */ + def join( + otherPlan: SchemaRDD, + joinType: JoinType = Inner, + on: Option[Expression] = None): SchemaRDD = + new SchemaRDD(sqlContext, Join(logicalPlan, otherPlan.logicalPlan, joinType, on)) + + /** + * Sorts the results by the given expressions. + * {{{ + * schemaRDD.orderBy('a) + * schemaRDD.orderBy('a, 'b) + * schemaRDD.orderBy('a.asc, 'b.desc) + * }}} + * + * @group Query + */ + def orderBy(sortExprs: SortOrder*): SchemaRDD = + new SchemaRDD(sqlContext, Sort(sortExprs, logicalPlan)) + + /** + * Performs a grouping followed by an aggregation. + * + * {{{ + * schemaRDD.groupBy('year)(Sum('sales) as 'totalSales) + * }}} + * + * @group Query + */ + def groupBy(groupingExprs: Expression*)(aggregateExprs: Expression*): SchemaRDD = { + val aliasedExprs = aggregateExprs.map { + case ne: NamedExpression => ne + case e => Alias(e, e.toString)() + } + new SchemaRDD(sqlContext, Aggregate(groupingExprs, aliasedExprs, logicalPlan)) + } + + /** + * Applies a qualifier to the attributes of this relation. Can be used to disambiguate attributes + * with the same name, for example, when peforming self-joins. + * + * {{{ + * val x = schemaRDD.where('a === 1).as('x) + * val y = schemaRDD.where('a === 2).as('y) + * x.join(y).where("x.a".attr === "y.a".attr), + * }}} + * + * @group Query + */ + def as(alias: Symbol) = + new SchemaRDD(sqlContext, Subquery(alias.name, logicalPlan)) + + /** + * Combines the tuples of two RDDs with the same schema, keeping duplicates. + * + * @group Query + */ + def unionAll(otherPlan: SchemaRDD) = + new SchemaRDD(sqlContext, Union(logicalPlan, otherPlan.logicalPlan)) + + /** + * Filters tuples using a function over the value of the specified column. + * + * {{{ + * schemaRDD.sfilter('a)((a: Int) => ...) + * }}} + * + * @group Query + */ + def where[T1](arg1: Symbol)(udf: (T1) => Boolean) = + new SchemaRDD( + sqlContext, + Filter(ScalaUdf(udf, BooleanType, Seq(UnresolvedAttribute(arg1.name))), logicalPlan)) + + /** + * :: Experimental :: + * Filters tuples using a function over a `Dynamic` version of a given Row. DynamicRows use + * scala's Dynamic trait to emulate an ORM of in a dynamically typed language. Since the type of + * the column is not known at compile time, all attributes are converted to strings before + * being passed to the function. + * + * {{{ + * schemaRDD.where(r => r.firstName == "Bob" && r.lastName == "Smith") + * }}} + * + * @group Query + */ + @Experimental + def where(dynamicUdf: (DynamicRow) => Boolean) = + new SchemaRDD( + sqlContext, + Filter(ScalaUdf(dynamicUdf, BooleanType, Seq(WrapDynamic(logicalPlan.output))), logicalPlan)) + + /** + * :: Experimental :: + * Returns a sampled version of the underlying dataset. + * + * @group Query + */ + @Experimental + def sample( + fraction: Double, + withReplacement: Boolean = true, + seed: Int = (math.random * 1000).toInt) = + new SchemaRDD(sqlContext, Sample(fraction, withReplacement, seed, logicalPlan)) + + /** + * :: Experimental :: + * Applies the given Generator, or table generating function, to this relation. + * + * @param generator A table generating function. The API for such functions is likely to change + * in future releases + * @param join when set to true, each output row of the generator is joined with the input row + * that produced it. + * @param outer when set to true, at least one row will be produced for each input row, similar to + * an `OUTER JOIN` in SQL. When no output rows are produced by the generator for a + * given row, a single row will be output, with `NULL` values for each of the + * generated columns. + * @param alias an optional alias that can be used as qualif for the attributes that are produced + * by this generate operation. + * + * @group Query + */ + @Experimental + def generate( + generator: Generator, + join: Boolean = false, + outer: Boolean = false, + alias: Option[String] = None) = + new SchemaRDD(sqlContext, Generate(generator, join, outer, None, logicalPlan)) + + /** + * :: Experimental :: + * Adds the rows from this RDD to the specified table. Note in a standard [[SQLContext]] there is + * no notion of persistent tables, and thus queries that contain this operator will fail to + * optimize. When working with an extension of a SQLContext that has a persistent catalog, such + * as a `HiveContext`, this operation will result in insertions to the table specified. + * + * @group schema + */ + @Experimental + def insertInto(tableName: String, overwrite: Boolean = false) = + new SchemaRDD( + sqlContext, + InsertIntoTable(UnresolvedRelation(None, tableName), Map.empty, logicalPlan, overwrite)) + + /** + * Returns this RDD as a SchemaRDD. + * @group schema + */ + def toSchemaRDD = this + + /** FOR INTERNAL USE ONLY */ + def analyze = sqlContext.analyzer(logicalPlan) +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDDLike.scala b/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDDLike.scala new file mode 100644 index 0000000000000..3dd9897c0d3b8 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDDLike.scala @@ -0,0 +1,65 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.apache.spark.sql + +import org.apache.spark.sql.catalyst.plans.logical._ + +/** + * Contains functions that are shared between all SchemaRDD types (i.e., Scala, Java) + */ +trait SchemaRDDLike { + @transient val sqlContext: SQLContext + @transient protected[spark] val logicalPlan: LogicalPlan + + private[sql] def baseSchemaRDD: SchemaRDD + + /** + * A lazily computed query execution workflow. All other RDD operations are passed + * through to the RDD that is produced by this workflow. + * + * We want this to be lazy because invoking the whole query optimization pipeline can be + * expensive. + */ + @transient + protected[spark] lazy val queryExecution = sqlContext.executePlan(logicalPlan) + + override def toString = + s"""${super.toString} + |== Query Plan == + |${queryExecution.simpleString}""".stripMargin.trim + + /** + * Saves the contents of this `SchemaRDD` as a parquet file, preserving the schema. Files that + * are written out using this method can be read back in as a SchemaRDD using the ``function + * + * @group schema + */ + def saveAsParquetFile(path: String): Unit = { + sqlContext.executePlan(WriteToFile(path, logicalPlan)).toRdd + } + + /** + * Registers this RDD as a temporary table using the given name. The lifetime of this temporary + * table is tied to the [[SQLContext]] that was used to create this SchemaRDD. + * + * @group schema + */ + def registerAsTable(tableName: String): Unit = { + sqlContext.registerRDDAsTable(baseSchemaRDD, tableName) + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/api/java/JavaSQLContext.scala b/sql/core/src/main/scala/org/apache/spark/sql/api/java/JavaSQLContext.scala new file mode 100644 index 0000000000000..573345e42c43c --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/api/java/JavaSQLContext.scala @@ -0,0 +1,100 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.apache.spark.sql.api.java + +import java.beans.{Introspector, PropertyDescriptor} + +import org.apache.spark.api.java.{JavaRDD, JavaSparkContext} +import org.apache.spark.sql.SQLContext +import org.apache.spark.sql.catalyst.expressions.{AttributeReference, GenericRow, Row => ScalaRow} +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.parquet.ParquetRelation +import org.apache.spark.sql.execution.{ExistingRdd, SparkLogicalPlan} + +/** + * The entry point for executing Spark SQL queries from a Java program. + */ +class JavaSQLContext(sparkContext: JavaSparkContext) { + + val sqlContext = new SQLContext(sparkContext.sc) + + /** + * Executes a query expressed in SQL, returning the result as a JavaSchemaRDD + */ + def sql(sqlQuery: String): JavaSchemaRDD = { + val result = new JavaSchemaRDD(sqlContext, sqlContext.parseSql(sqlQuery)) + // We force query optimization to happen right away instead of letting it happen lazily like + // when using the query DSL. This is so DDL commands behave as expected. This is only + // generates the RDD lineage for DML queries, but do not perform any execution. + result.queryExecution.toRdd + result + } + + /** + * Applies a schema to an RDD of Java Beans. + */ + def applySchema(rdd: JavaRDD[_], beanClass: Class[_]): JavaSchemaRDD = { + // TODO: All of this could probably be moved to Catalyst as it is mostly not Spark specific. + val beanInfo = Introspector.getBeanInfo(beanClass) + + val fields = beanInfo.getPropertyDescriptors.filterNot(_.getName == "class") + val schema = fields.map { property => + val dataType = property.getPropertyType match { + case c: Class[_] if c == classOf[java.lang.String] => StringType + case c: Class[_] if c == java.lang.Short.TYPE => ShortType + case c: Class[_] if c == java.lang.Integer.TYPE => IntegerType + case c: Class[_] if c == java.lang.Long.TYPE => LongType + case c: Class[_] if c == java.lang.Double.TYPE => DoubleType + case c: Class[_] if c == java.lang.Byte.TYPE => ByteType + case c: Class[_] if c == java.lang.Float.TYPE => FloatType + case c: Class[_] if c == java.lang.Boolean.TYPE => BooleanType + } + + AttributeReference(property.getName, dataType, true)() + } + + val className = beanClass.getCanonicalName + val rowRdd = rdd.rdd.mapPartitions { iter => + // BeanInfo is not serializable so we must rediscover it remotely for each partition. + val localBeanInfo = Introspector.getBeanInfo(Class.forName(className)) + val extractors = + localBeanInfo.getPropertyDescriptors.filterNot(_.getName == "class").map(_.getReadMethod) + + iter.map { row => + new GenericRow(extractors.map(e => e.invoke(row)).toArray[Any]): ScalaRow + } + } + new JavaSchemaRDD(sqlContext, SparkLogicalPlan(ExistingRdd(schema, rowRdd))) + } + + + /** + * Loads a parquet file, returning the result as a [[JavaSchemaRDD]]. + */ + def parquetFile(path: String): JavaSchemaRDD = + new JavaSchemaRDD(sqlContext, ParquetRelation(path)) + + + /** + * Registers the given RDD as a temporary table in the catalog. Temporary tables exist only + * during the lifetime of this instance of SQLContext. + */ + def registerRDDAsTable(rdd: JavaSchemaRDD, tableName: String): Unit = { + sqlContext.registerRDDAsTable(rdd.baseSchemaRDD, tableName) + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/api/java/JavaSchemaRDD.scala b/sql/core/src/main/scala/org/apache/spark/sql/api/java/JavaSchemaRDD.scala new file mode 100644 index 0000000000000..d43d672938f51 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/api/java/JavaSchemaRDD.scala @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.api.java + +import org.apache.spark.api.java.{JavaRDDLike, JavaRDD} +import org.apache.spark.sql.{SQLContext, SchemaRDD, SchemaRDDLike} +import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan +import org.apache.spark.rdd.RDD + +/** + * An RDD of [[Row]] objects that is returned as the result of a Spark SQL query. In addition to + * standard RDD operations, a JavaSchemaRDD can also be registered as a table in the JavaSQLContext + * that was used to create. Registering a JavaSchemaRDD allows its contents to be queried in + * future SQL statement. + * + * @groupname schema SchemaRDD Functions + * @groupprio schema -1 + * @groupname Ungrouped Base RDD Functions + */ +class JavaSchemaRDD( + @transient val sqlContext: SQLContext, + @transient protected[spark] val logicalPlan: LogicalPlan) + extends JavaRDDLike[Row, JavaRDD[Row]] + with SchemaRDDLike { + + private[sql] val baseSchemaRDD = new SchemaRDD(sqlContext, logicalPlan) + + override val classTag = scala.reflect.classTag[Row] + + override def wrapRDD(rdd: RDD[Row]): JavaRDD[Row] = JavaRDD.fromRDD(rdd) + + val rdd = baseSchemaRDD.map(new Row(_)) +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/api/java/Row.scala b/sql/core/src/main/scala/org/apache/spark/sql/api/java/Row.scala new file mode 100644 index 0000000000000..362fe769581d7 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/api/java/Row.scala @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.api.java + +import org.apache.spark.sql.catalyst.expressions.{Row => ScalaRow} + +/** + * A result row from a SparkSQL query. + */ +class Row(row: ScalaRow) extends Serializable { + + /** Returns the number of columns present in this Row. */ + def length: Int = row.length + + /** Returns the value of column `i`. */ + def get(i: Int): Any = + row(i) + + /** Returns true if value at column `i` is NULL. */ + def isNullAt(i: Int) = get(i) == null + + /** + * Returns the value of column `i` as an int. This function will throw an exception if the value + * is at `i` is not an integer, or if it is null. + */ + def getInt(i: Int): Int = + row.getInt(i) + + /** + * Returns the value of column `i` as a long. This function will throw an exception if the value + * is at `i` is not a long, or if it is null. + */ + def getLong(i: Int): Long = + row.getLong(i) + + /** + * Returns the value of column `i` as a double. This function will throw an exception if the + * value is at `i` is not a double, or if it is null. + */ + def getDouble(i: Int): Double = + row.getDouble(i) + + /** + * Returns the value of column `i` as a bool. This function will throw an exception if the value + * is at `i` is not a boolean, or if it is null. + */ + def getBoolean(i: Int): Boolean = + row.getBoolean(i) + + /** + * Returns the value of column `i` as a short. This function will throw an exception if the value + * is at `i` is not a short, or if it is null. + */ + def getShort(i: Int): Short = + row.getShort(i) + + /** + * Returns the value of column `i` as a byte. This function will throw an exception if the value + * is at `i` is not a byte, or if it is null. + */ + def getByte(i: Int): Byte = + row.getByte(i) + + /** + * Returns the value of column `i` as a float. This function will throw an exception if the value + * is at `i` is not a float, or if it is null. + */ + def getFloat(i: Int): Float = + row.getFloat(i) + + /** + * Returns the value of column `i` as a String. This function will throw an exception if the + * value is at `i` is not a String. + */ + def getString(i: Int): String = + row.getString(i) +} + diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnAccessor.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnAccessor.scala new file mode 100644 index 0000000000000..3c39e1d350fa8 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnAccessor.scala @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import java.nio.{ByteOrder, ByteBuffer} + +import org.apache.spark.sql.catalyst.types.{BinaryType, NativeType, DataType} +import org.apache.spark.sql.catalyst.expressions.MutableRow +import org.apache.spark.sql.columnar.compression.CompressibleColumnAccessor + +/** + * An `Iterator` like trait used to extract values from columnar byte buffer. When a value is + * extracted from the buffer, instead of directly returning it, the value is set into some field of + * a [[MutableRow]]. In this way, boxing cost can be avoided by leveraging the setter methods + * for primitive values provided by [[MutableRow]]. + */ +private[sql] trait ColumnAccessor { + initialize() + + protected def initialize() + + def hasNext: Boolean + + def extractTo(row: MutableRow, ordinal: Int) + + protected def underlyingBuffer: ByteBuffer +} + +private[sql] abstract class BasicColumnAccessor[T <: DataType, JvmType]( + protected val buffer: ByteBuffer, + protected val columnType: ColumnType[T, JvmType]) + extends ColumnAccessor { + + protected def initialize() {} + + def hasNext = buffer.hasRemaining + + def extractTo(row: MutableRow, ordinal: Int) { + columnType.setField(row, ordinal, extractSingle(buffer)) + } + + def extractSingle(buffer: ByteBuffer): JvmType = columnType.extract(buffer) + + protected def underlyingBuffer = buffer +} + +private[sql] abstract class NativeColumnAccessor[T <: NativeType]( + override protected val buffer: ByteBuffer, + override protected val columnType: NativeColumnType[T]) + extends BasicColumnAccessor(buffer, columnType) + with NullableColumnAccessor + with CompressibleColumnAccessor[T] + +private[sql] class BooleanColumnAccessor(buffer: ByteBuffer) + extends NativeColumnAccessor(buffer, BOOLEAN) + +private[sql] class IntColumnAccessor(buffer: ByteBuffer) + extends NativeColumnAccessor(buffer, INT) + +private[sql] class ShortColumnAccessor(buffer: ByteBuffer) + extends NativeColumnAccessor(buffer, SHORT) + +private[sql] class LongColumnAccessor(buffer: ByteBuffer) + extends NativeColumnAccessor(buffer, LONG) + +private[sql] class ByteColumnAccessor(buffer: ByteBuffer) + extends NativeColumnAccessor(buffer, BYTE) + +private[sql] class DoubleColumnAccessor(buffer: ByteBuffer) + extends NativeColumnAccessor(buffer, DOUBLE) + +private[sql] class FloatColumnAccessor(buffer: ByteBuffer) + extends NativeColumnAccessor(buffer, FLOAT) + +private[sql] class StringColumnAccessor(buffer: ByteBuffer) + extends NativeColumnAccessor(buffer, STRING) + +private[sql] class BinaryColumnAccessor(buffer: ByteBuffer) + extends BasicColumnAccessor[BinaryType.type, Array[Byte]](buffer, BINARY) + with NullableColumnAccessor + +private[sql] class GenericColumnAccessor(buffer: ByteBuffer) + extends BasicColumnAccessor[DataType, Array[Byte]](buffer, GENERIC) + with NullableColumnAccessor + +private[sql] object ColumnAccessor { + def apply(buffer: ByteBuffer): ColumnAccessor = { + val dup = buffer.duplicate().order(ByteOrder.nativeOrder) + // The first 4 bytes in the buffer indicate the column type. + val columnTypeId = dup.getInt() + + columnTypeId match { + case INT.typeId => new IntColumnAccessor(dup) + case LONG.typeId => new LongColumnAccessor(dup) + case FLOAT.typeId => new FloatColumnAccessor(dup) + case DOUBLE.typeId => new DoubleColumnAccessor(dup) + case BOOLEAN.typeId => new BooleanColumnAccessor(dup) + case BYTE.typeId => new ByteColumnAccessor(dup) + case SHORT.typeId => new ShortColumnAccessor(dup) + case STRING.typeId => new StringColumnAccessor(dup) + case BINARY.typeId => new BinaryColumnAccessor(dup) + case GENERIC.typeId => new GenericColumnAccessor(dup) + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnBuilder.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnBuilder.scala new file mode 100644 index 0000000000000..048ee66bff44b --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnBuilder.scala @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import java.nio.{ByteBuffer, ByteOrder} + +import org.apache.spark.sql.Row +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.columnar.ColumnBuilder._ +import org.apache.spark.sql.columnar.compression.{AllCompressionSchemes, CompressibleColumnBuilder} + +private[sql] trait ColumnBuilder { + /** + * Initializes with an approximate lower bound on the expected number of elements in this column. + */ + def initialize(initialSize: Int, columnName: String = "") + + /** + * Appends `row(ordinal)` to the column builder. + */ + def appendFrom(row: Row, ordinal: Int) + + /** + * Column statistics information + */ + def columnStats: ColumnStats[_, _] + + /** + * Returns the final columnar byte buffer. + */ + def build(): ByteBuffer +} + +private[sql] class BasicColumnBuilder[T <: DataType, JvmType]( + val columnStats: ColumnStats[T, JvmType], + val columnType: ColumnType[T, JvmType]) + extends ColumnBuilder { + + protected var columnName: String = _ + + protected var buffer: ByteBuffer = _ + + override def initialize(initialSize: Int, columnName: String = "") = { + val size = if (initialSize == 0) DEFAULT_INITIAL_BUFFER_SIZE else initialSize + this.columnName = columnName + + // Reserves 4 bytes for column type ID + buffer = ByteBuffer.allocate(4 + size * columnType.defaultSize) + buffer.order(ByteOrder.nativeOrder()).putInt(columnType.typeId) + } + + override def appendFrom(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + buffer = ensureFreeSpace(buffer, columnType.actualSize(field)) + columnType.append(field, buffer) + } + + override def build() = { + buffer.limit(buffer.position()).rewind() + buffer + } +} + +private[sql] abstract class ComplexColumnBuilder[T <: DataType, JvmType]( + columnType: ColumnType[T, JvmType]) + extends BasicColumnBuilder[T, JvmType](new NoopColumnStats[T, JvmType], columnType) + with NullableColumnBuilder + +private[sql] abstract class NativeColumnBuilder[T <: NativeType]( + override val columnStats: NativeColumnStats[T], + override val columnType: NativeColumnType[T]) + extends BasicColumnBuilder[T, T#JvmType](columnStats, columnType) + with NullableColumnBuilder + with AllCompressionSchemes + with CompressibleColumnBuilder[T] + +private[sql] class BooleanColumnBuilder extends NativeColumnBuilder(new BooleanColumnStats, BOOLEAN) + +private[sql] class IntColumnBuilder extends NativeColumnBuilder(new IntColumnStats, INT) + +private[sql] class ShortColumnBuilder extends NativeColumnBuilder(new ShortColumnStats, SHORT) + +private[sql] class LongColumnBuilder extends NativeColumnBuilder(new LongColumnStats, LONG) + +private[sql] class ByteColumnBuilder extends NativeColumnBuilder(new ByteColumnStats, BYTE) + +private[sql] class DoubleColumnBuilder extends NativeColumnBuilder(new DoubleColumnStats, DOUBLE) + +private[sql] class FloatColumnBuilder extends NativeColumnBuilder(new FloatColumnStats, FLOAT) + +private[sql] class StringColumnBuilder extends NativeColumnBuilder(new StringColumnStats, STRING) + +private[sql] class BinaryColumnBuilder extends ComplexColumnBuilder(BINARY) + +// TODO (lian) Add support for array, struct and map +private[sql] class GenericColumnBuilder extends ComplexColumnBuilder(GENERIC) + +private[sql] object ColumnBuilder { + val DEFAULT_INITIAL_BUFFER_SIZE = 10 * 1024 * 104 + + private[columnar] def ensureFreeSpace(orig: ByteBuffer, size: Int) = { + if (orig.remaining >= size) { + orig + } else { + // grow in steps of initial size + val capacity = orig.capacity() + val newSize = capacity + size.max(capacity / 8 + 1) + val pos = orig.position() + + orig.clear() + ByteBuffer + .allocate(newSize) + .order(ByteOrder.nativeOrder()) + .put(orig.array(), 0, pos) + } + } + + def apply(typeId: Int, initialSize: Int = 0, columnName: String = ""): ColumnBuilder = { + val builder = (typeId match { + case INT.typeId => new IntColumnBuilder + case LONG.typeId => new LongColumnBuilder + case FLOAT.typeId => new FloatColumnBuilder + case DOUBLE.typeId => new DoubleColumnBuilder + case BOOLEAN.typeId => new BooleanColumnBuilder + case BYTE.typeId => new ByteColumnBuilder + case SHORT.typeId => new ShortColumnBuilder + case STRING.typeId => new StringColumnBuilder + case BINARY.typeId => new BinaryColumnBuilder + case GENERIC.typeId => new GenericColumnBuilder + }).asInstanceOf[ColumnBuilder] + + builder.initialize(initialSize, columnName) + builder + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnStats.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnStats.scala new file mode 100644 index 0000000000000..95602d321dc6f --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnStats.scala @@ -0,0 +1,366 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import org.apache.spark.sql.Row +import org.apache.spark.sql.catalyst.types._ + +/** + * Used to collect statistical information when building in-memory columns. + * + * NOTE: we intentionally avoid using `Ordering[T]` to compare values here because `Ordering[T]` + * brings significant performance penalty. + */ +private[sql] sealed abstract class ColumnStats[T <: DataType, JvmType] extends Serializable { + /** + * Closed lower bound of this column. + */ + def lowerBound: JvmType + + /** + * Closed upper bound of this column. + */ + def upperBound: JvmType + + /** + * Gathers statistics information from `row(ordinal)`. + */ + def gatherStats(row: Row, ordinal: Int) + + /** + * Returns `true` if `lower <= row(ordinal) <= upper`. + */ + def contains(row: Row, ordinal: Int): Boolean + + /** + * Returns `true` if `row(ordinal) < upper` holds. + */ + def isAbove(row: Row, ordinal: Int): Boolean + + /** + * Returns `true` if `lower < row(ordinal)` holds. + */ + def isBelow(row: Row, ordinal: Int): Boolean + + /** + * Returns `true` if `row(ordinal) <= upper` holds. + */ + def isAtOrAbove(row: Row, ordinal: Int): Boolean + + /** + * Returns `true` if `lower <= row(ordinal)` holds. + */ + def isAtOrBelow(row: Row, ordinal: Int): Boolean +} + +private[sql] sealed abstract class NativeColumnStats[T <: NativeType] + extends ColumnStats[T, T#JvmType] { + + type JvmType = T#JvmType + + protected var (_lower, _upper) = initialBounds + + def initialBounds: (JvmType, JvmType) + + protected def columnType: NativeColumnType[T] + + override def lowerBound: T#JvmType = _lower + + override def upperBound: T#JvmType = _upper + + override def isAtOrAbove(row: Row, ordinal: Int) = { + contains(row, ordinal) || isAbove(row, ordinal) + } + + override def isAtOrBelow(row: Row, ordinal: Int) = { + contains(row, ordinal) || isBelow(row, ordinal) + } +} + +private[sql] class NoopColumnStats[T <: DataType, JvmType] extends ColumnStats[T, JvmType] { + override def isAtOrBelow(row: Row, ordinal: Int) = true + + override def isAtOrAbove(row: Row, ordinal: Int) = true + + override def isBelow(row: Row, ordinal: Int) = true + + override def isAbove(row: Row, ordinal: Int) = true + + override def contains(row: Row, ordinal: Int) = true + + override def gatherStats(row: Row, ordinal: Int) {} + + override def upperBound = null.asInstanceOf[JvmType] + + override def lowerBound = null.asInstanceOf[JvmType] +} + +private[sql] abstract class BasicColumnStats[T <: NativeType]( + protected val columnType: NativeColumnType[T]) + extends NativeColumnStats[T] + +private[sql] class BooleanColumnStats extends BasicColumnStats(BOOLEAN) { + override def initialBounds = (true, false) + + override def isBelow(row: Row, ordinal: Int) = { + lowerBound < columnType.getField(row, ordinal) + } + + override def isAbove(row: Row, ordinal: Int) = { + columnType.getField(row, ordinal) < upperBound + } + + override def contains(row: Row, ordinal: Int) = { + val field = columnType.getField(row, ordinal) + lowerBound <= field && field <= upperBound + } + + override def gatherStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + if (field > upperBound) _upper = field + if (field < lowerBound) _lower = field + } +} + +private[sql] class ByteColumnStats extends BasicColumnStats(BYTE) { + override def initialBounds = (Byte.MaxValue, Byte.MinValue) + + override def isBelow(row: Row, ordinal: Int) = { + lowerBound < columnType.getField(row, ordinal) + } + + override def isAbove(row: Row, ordinal: Int) = { + columnType.getField(row, ordinal) < upperBound + } + + override def contains(row: Row, ordinal: Int) = { + val field = columnType.getField(row, ordinal) + lowerBound <= field && field <= upperBound + } + + override def gatherStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + if (field > upperBound) _upper = field + if (field < lowerBound) _lower = field + } +} + +private[sql] class ShortColumnStats extends BasicColumnStats(SHORT) { + override def initialBounds = (Short.MaxValue, Short.MinValue) + + override def isBelow(row: Row, ordinal: Int) = { + lowerBound < columnType.getField(row, ordinal) + } + + override def isAbove(row: Row, ordinal: Int) = { + columnType.getField(row, ordinal) < upperBound + } + + override def contains(row: Row, ordinal: Int) = { + val field = columnType.getField(row, ordinal) + lowerBound <= field && field <= upperBound + } + + override def gatherStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + if (field > upperBound) _upper = field + if (field < lowerBound) _lower = field + } +} + +private[sql] class LongColumnStats extends BasicColumnStats(LONG) { + override def initialBounds = (Long.MaxValue, Long.MinValue) + + override def isBelow(row: Row, ordinal: Int) = { + lowerBound < columnType.getField(row, ordinal) + } + + override def isAbove(row: Row, ordinal: Int) = { + columnType.getField(row, ordinal) < upperBound + } + + override def contains(row: Row, ordinal: Int) = { + val field = columnType.getField(row, ordinal) + lowerBound <= field && field <= upperBound + } + + override def gatherStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + if (field > upperBound) _upper = field + if (field < lowerBound) _lower = field + } +} + +private[sql] class DoubleColumnStats extends BasicColumnStats(DOUBLE) { + override def initialBounds = (Double.MaxValue, Double.MinValue) + + override def isBelow(row: Row, ordinal: Int) = { + lowerBound < columnType.getField(row, ordinal) + } + + override def isAbove(row: Row, ordinal: Int) = { + columnType.getField(row, ordinal) < upperBound + } + + override def contains(row: Row, ordinal: Int) = { + val field = columnType.getField(row, ordinal) + lowerBound <= field && field <= upperBound + } + + override def gatherStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + if (field > upperBound) _upper = field + if (field < lowerBound) _lower = field + } +} + +private[sql] class FloatColumnStats extends BasicColumnStats(FLOAT) { + override def initialBounds = (Float.MaxValue, Float.MinValue) + + override def isBelow(row: Row, ordinal: Int) = { + lowerBound < columnType.getField(row, ordinal) + } + + override def isAbove(row: Row, ordinal: Int) = { + columnType.getField(row, ordinal) < upperBound + } + + override def contains(row: Row, ordinal: Int) = { + val field = columnType.getField(row, ordinal) + lowerBound <= field && field <= upperBound + } + + override def gatherStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + if (field > upperBound) _upper = field + if (field < lowerBound) _lower = field + } +} + +private[sql] object IntColumnStats { + val UNINITIALIZED = 0 + val INITIALIZED = 1 + val ASCENDING = 2 + val DESCENDING = 3 + val UNORDERED = 4 +} + +/** + * Statistical information for `Int` columns. More information is collected since `Int` is + * frequently used. Extra information include: + * + * - Ordering state (ascending/descending/unordered), may be used to decide whether binary search + * is applicable when searching elements. + * - Maximum delta between adjacent elements, may be used to guide the `IntDelta` compression + * scheme. + * + * (This two kinds of information are not used anywhere yet and might be removed later.) + */ +private[sql] class IntColumnStats extends BasicColumnStats(INT) { + import IntColumnStats._ + + private var orderedState = UNINITIALIZED + private var lastValue: Int = _ + private var _maxDelta: Int = _ + + def isAscending = orderedState != DESCENDING && orderedState != UNORDERED + def isDescending = orderedState != ASCENDING && orderedState != UNORDERED + def isOrdered = isAscending || isDescending + def maxDelta = _maxDelta + + override def initialBounds = (Int.MaxValue, Int.MinValue) + + override def isBelow(row: Row, ordinal: Int) = { + lowerBound < columnType.getField(row, ordinal) + } + + override def isAbove(row: Row, ordinal: Int) = { + columnType.getField(row, ordinal) < upperBound + } + + override def contains(row: Row, ordinal: Int) = { + val field = columnType.getField(row, ordinal) + lowerBound <= field && field <= upperBound + } + + override def gatherStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + + if (field > upperBound) _upper = field + if (field < lowerBound) _lower = field + + orderedState = orderedState match { + case UNINITIALIZED => + lastValue = field + INITIALIZED + + case INITIALIZED => + // If all the integers in the column are the same, ordered state is set to Ascending. + // TODO (lian) Confirm whether this is the standard behaviour. + val nextState = if (field >= lastValue) ASCENDING else DESCENDING + _maxDelta = math.abs(field - lastValue) + lastValue = field + nextState + + case ASCENDING if field < lastValue => + UNORDERED + + case DESCENDING if field > lastValue => + UNORDERED + + case state @ (ASCENDING | DESCENDING) => + _maxDelta = _maxDelta.max(field - lastValue) + lastValue = field + state + + case _ => + orderedState + } + } +} + +private[sql] class StringColumnStats extends BasicColumnStats(STRING) { + override def initialBounds = (null, null) + + override def gatherStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + if ((upperBound eq null) || field.compareTo(upperBound) > 0) _upper = field + if ((lowerBound eq null) || field.compareTo(lowerBound) < 0) _lower = field + } + + override def contains(row: Row, ordinal: Int) = { + !(upperBound eq null) && { + val field = columnType.getField(row, ordinal) + lowerBound.compareTo(field) <= 0 && field.compareTo(upperBound) <= 0 + } + } + + override def isAbove(row: Row, ordinal: Int) = { + !(upperBound eq null) && { + val field = columnType.getField(row, ordinal) + field.compareTo(upperBound) < 0 + } + } + + override def isBelow(row: Row, ordinal: Int) = { + !(lowerBound eq null) && { + val field = columnType.getField(row, ordinal) + lowerBound.compareTo(field) < 0 + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnType.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnType.scala new file mode 100644 index 0000000000000..5be76890afe31 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/ColumnType.scala @@ -0,0 +1,277 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import java.nio.ByteBuffer + +import scala.reflect.runtime.universe.TypeTag + +import org.apache.spark.sql.Row +import org.apache.spark.sql.catalyst.expressions.MutableRow +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.execution.SparkSqlSerializer + +/** + * An abstract class that represents type of a column. Used to append/extract Java objects into/from + * the underlying [[ByteBuffer]] of a column. + * + * @param typeId A unique ID representing the type. + * @param defaultSize Default size in bytes for one element of type T (e.g. 4 for `Int`). + * @tparam T Scala data type for the column. + * @tparam JvmType Underlying Java type to represent the elements. + */ +private[sql] sealed abstract class ColumnType[T <: DataType, JvmType]( + val typeId: Int, + val defaultSize: Int) { + + /** + * Extracts a value out of the buffer at the buffer's current position. + */ + def extract(buffer: ByteBuffer): JvmType + + /** + * Appends the given value v of type T into the given ByteBuffer. + */ + def append(v: JvmType, buffer: ByteBuffer) + + /** + * Returns the size of the value. This is used to calculate the size of variable length types + * such as byte arrays and strings. + */ + def actualSize(v: JvmType): Int = defaultSize + + /** + * Returns `row(ordinal)`. Subclasses should override this method to avoid boxing/unboxing costs + * whenever possible. + */ + def getField(row: Row, ordinal: Int): JvmType + + /** + * Sets `row(ordinal)` to `field`. Subclasses should override this method to avoid boxing/unboxing + * costs whenever possible. + */ + def setField(row: MutableRow, ordinal: Int, value: JvmType) + + /** + * Creates a duplicated copy of the value. + */ + def clone(v: JvmType): JvmType = v + + override def toString = getClass.getSimpleName.stripSuffix("$") +} + +private[sql] abstract class NativeColumnType[T <: NativeType]( + val dataType: T, + typeId: Int, + defaultSize: Int) + extends ColumnType[T, T#JvmType](typeId, defaultSize) { + + /** + * Scala TypeTag. Can be used to create primitive arrays and hash tables. + */ + def scalaTag: TypeTag[dataType.JvmType] = dataType.tag +} + +private[sql] object INT extends NativeColumnType(IntegerType, 0, 4) { + def append(v: Int, buffer: ByteBuffer) { + buffer.putInt(v) + } + + def extract(buffer: ByteBuffer) = { + buffer.getInt() + } + + override def setField(row: MutableRow, ordinal: Int, value: Int) { + row.setInt(ordinal, value) + } + + override def getField(row: Row, ordinal: Int) = row.getInt(ordinal) +} + +private[sql] object LONG extends NativeColumnType(LongType, 1, 8) { + override def append(v: Long, buffer: ByteBuffer) { + buffer.putLong(v) + } + + override def extract(buffer: ByteBuffer) = { + buffer.getLong() + } + + override def setField(row: MutableRow, ordinal: Int, value: Long) { + row.setLong(ordinal, value) + } + + override def getField(row: Row, ordinal: Int) = row.getLong(ordinal) +} + +private[sql] object FLOAT extends NativeColumnType(FloatType, 2, 4) { + override def append(v: Float, buffer: ByteBuffer) { + buffer.putFloat(v) + } + + override def extract(buffer: ByteBuffer) = { + buffer.getFloat() + } + + override def setField(row: MutableRow, ordinal: Int, value: Float) { + row.setFloat(ordinal, value) + } + + override def getField(row: Row, ordinal: Int) = row.getFloat(ordinal) +} + +private[sql] object DOUBLE extends NativeColumnType(DoubleType, 3, 8) { + override def append(v: Double, buffer: ByteBuffer) { + buffer.putDouble(v) + } + + override def extract(buffer: ByteBuffer) = { + buffer.getDouble() + } + + override def setField(row: MutableRow, ordinal: Int, value: Double) { + row.setDouble(ordinal, value) + } + + override def getField(row: Row, ordinal: Int) = row.getDouble(ordinal) +} + +private[sql] object BOOLEAN extends NativeColumnType(BooleanType, 4, 1) { + override def append(v: Boolean, buffer: ByteBuffer) { + buffer.put(if (v) 1.toByte else 0.toByte) + } + + override def extract(buffer: ByteBuffer) = { + if (buffer.get() == 1) true else false + } + + override def setField(row: MutableRow, ordinal: Int, value: Boolean) { + row.setBoolean(ordinal, value) + } + + override def getField(row: Row, ordinal: Int) = row.getBoolean(ordinal) +} + +private[sql] object BYTE extends NativeColumnType(ByteType, 5, 1) { + override def append(v: Byte, buffer: ByteBuffer) { + buffer.put(v) + } + + override def extract(buffer: ByteBuffer) = { + buffer.get() + } + + override def setField(row: MutableRow, ordinal: Int, value: Byte) { + row.setByte(ordinal, value) + } + + override def getField(row: Row, ordinal: Int) = row.getByte(ordinal) +} + +private[sql] object SHORT extends NativeColumnType(ShortType, 6, 2) { + override def append(v: Short, buffer: ByteBuffer) { + buffer.putShort(v) + } + + override def extract(buffer: ByteBuffer) = { + buffer.getShort() + } + + override def setField(row: MutableRow, ordinal: Int, value: Short) { + row.setShort(ordinal, value) + } + + override def getField(row: Row, ordinal: Int) = row.getShort(ordinal) +} + +private[sql] object STRING extends NativeColumnType(StringType, 7, 8) { + override def actualSize(v: String): Int = v.getBytes.length + 4 + + override def append(v: String, buffer: ByteBuffer) { + val stringBytes = v.getBytes() + buffer.putInt(stringBytes.length).put(stringBytes, 0, stringBytes.length) + } + + override def extract(buffer: ByteBuffer) = { + val length = buffer.getInt() + val stringBytes = new Array[Byte](length) + buffer.get(stringBytes, 0, length) + new String(stringBytes) + } + + override def setField(row: MutableRow, ordinal: Int, value: String) { + row.setString(ordinal, value) + } + + override def getField(row: Row, ordinal: Int) = row.getString(ordinal) +} + +private[sql] sealed abstract class ByteArrayColumnType[T <: DataType]( + typeId: Int, + defaultSize: Int) + extends ColumnType[T, Array[Byte]](typeId, defaultSize) { + + override def actualSize(v: Array[Byte]) = v.length + 4 + + override def append(v: Array[Byte], buffer: ByteBuffer) { + buffer.putInt(v.length).put(v, 0, v.length) + } + + override def extract(buffer: ByteBuffer) = { + val length = buffer.getInt() + val bytes = new Array[Byte](length) + buffer.get(bytes, 0, length) + bytes + } +} + +private[sql] object BINARY extends ByteArrayColumnType[BinaryType.type](8, 16) { + override def setField(row: MutableRow, ordinal: Int, value: Array[Byte]) { + row(ordinal) = value + } + + override def getField(row: Row, ordinal: Int) = row(ordinal).asInstanceOf[Array[Byte]] +} + +// Used to process generic objects (all types other than those listed above). Objects should be +// serialized first before appending to the column `ByteBuffer`, and is also extracted as serialized +// byte array. +private[sql] object GENERIC extends ByteArrayColumnType[DataType](9, 16) { + override def setField(row: MutableRow, ordinal: Int, value: Array[Byte]) { + row(ordinal) = SparkSqlSerializer.deserialize[Any](value) + } + + override def getField(row: Row, ordinal: Int) = SparkSqlSerializer.serialize(row(ordinal)) +} + +private[sql] object ColumnType { + def apply(dataType: DataType): ColumnType[_, _] = { + dataType match { + case IntegerType => INT + case LongType => LONG + case FloatType => FLOAT + case DoubleType => DOUBLE + case BooleanType => BOOLEAN + case ByteType => BYTE + case ShortType => SHORT + case StringType => STRING + case BinaryType => BINARY + case _ => GENERIC + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/InMemoryColumnarTableScan.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/InMemoryColumnarTableScan.scala new file mode 100644 index 0000000000000..8a24733047423 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/InMemoryColumnarTableScan.scala @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import org.apache.spark.sql.catalyst.expressions.{GenericMutableRow, Attribute} +import org.apache.spark.sql.execution.{SparkPlan, LeafNode} +import org.apache.spark.sql.Row + +private[sql] case class InMemoryColumnarTableScan(attributes: Seq[Attribute], child: SparkPlan) + extends LeafNode { + + override def output: Seq[Attribute] = attributes + + lazy val cachedColumnBuffers = { + val output = child.output + val cached = child.execute().mapPartitions { iterator => + val columnBuilders = output.map { attribute => + ColumnBuilder(ColumnType(attribute.dataType).typeId, 0, attribute.name) + }.toArray + + var row: Row = null + while (iterator.hasNext) { + row = iterator.next() + var i = 0 + while (i < row.length) { + columnBuilders(i).appendFrom(row, i) + i += 1 + } + } + + Iterator.single(columnBuilders.map(_.build())) + }.cache() + + cached.setName(child.toString) + // Force the materialization of the cached RDD. + cached.count() + cached + } + + override def execute() = { + cachedColumnBuffers.mapPartitions { iterator => + val columnBuffers = iterator.next() + assert(!iterator.hasNext) + + new Iterator[Row] { + val columnAccessors = columnBuffers.map(ColumnAccessor(_)) + val nextRow = new GenericMutableRow(columnAccessors.length) + + override def next() = { + var i = 0 + while (i < nextRow.length) { + columnAccessors(i).extractTo(nextRow, i) + i += 1 + } + nextRow + } + + override def hasNext = columnAccessors.head.hasNext + } + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/NullableColumnAccessor.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/NullableColumnAccessor.scala new file mode 100644 index 0000000000000..7d49ab07f7a53 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/NullableColumnAccessor.scala @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import java.nio.{ByteOrder, ByteBuffer} + +import org.apache.spark.sql.catalyst.expressions.MutableRow + +private[sql] trait NullableColumnAccessor extends ColumnAccessor { + private var nullsBuffer: ByteBuffer = _ + private var nullCount: Int = _ + private var seenNulls: Int = 0 + + private var nextNullIndex: Int = _ + private var pos: Int = 0 + + abstract override protected def initialize() { + nullsBuffer = underlyingBuffer.duplicate().order(ByteOrder.nativeOrder()) + nullCount = nullsBuffer.getInt() + nextNullIndex = if (nullCount > 0) nullsBuffer.getInt() else -1 + pos = 0 + + underlyingBuffer.position(underlyingBuffer.position + 4 + nullCount * 4) + super.initialize() + } + + abstract override def extractTo(row: MutableRow, ordinal: Int) { + if (pos == nextNullIndex) { + seenNulls += 1 + + if (seenNulls < nullCount) { + nextNullIndex = nullsBuffer.getInt() + } + + row.setNullAt(ordinal) + } else { + super.extractTo(row, ordinal) + } + + pos += 1 + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/NullableColumnBuilder.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/NullableColumnBuilder.scala new file mode 100644 index 0000000000000..2a3b6fc1e46d3 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/NullableColumnBuilder.scala @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import java.nio.{ByteBuffer, ByteOrder} + +import org.apache.spark.sql.Row + +/** + * A stackable trait used for building byte buffer for a column containing null values. Memory + * layout of the final byte buffer is: + * {{{ + * .----------------------- Column type ID (4 bytes) + * | .------------------- Null count N (4 bytes) + * | | .--------------- Null positions (4 x N bytes, empty if null count is zero) + * | | | .--------- Non-null elements + * V V V V + * +---+---+-----+---------+ + * | | | ... | ... ... | + * +---+---+-----+---------+ + * }}} + */ +private[sql] trait NullableColumnBuilder extends ColumnBuilder { + private var nulls: ByteBuffer = _ + private var pos: Int = _ + private var nullCount: Int = _ + + abstract override def initialize(initialSize: Int, columnName: String) { + nulls = ByteBuffer.allocate(1024) + nulls.order(ByteOrder.nativeOrder()) + pos = 0 + nullCount = 0 + super.initialize(initialSize, columnName) + } + + abstract override def appendFrom(row: Row, ordinal: Int) { + if (row.isNullAt(ordinal)) { + nulls = ColumnBuilder.ensureFreeSpace(nulls, 4) + nulls.putInt(pos) + nullCount += 1 + } else { + super.appendFrom(row, ordinal) + } + pos += 1 + } + + abstract override def build(): ByteBuffer = { + val nonNulls = super.build() + val typeId = nonNulls.getInt() + val nullDataLen = nulls.position() + + nulls.limit(nullDataLen) + nulls.rewind() + + val buffer = ByteBuffer + .allocate(4 + 4 + nullDataLen + nonNulls.remaining()) + .order(ByteOrder.nativeOrder()) + .putInt(typeId) + .putInt(nullCount) + .put(nulls) + .put(nonNulls) + + buffer.rewind() + buffer + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressibleColumnAccessor.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressibleColumnAccessor.scala new file mode 100644 index 0000000000000..878cb84de106f --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressibleColumnAccessor.scala @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import java.nio.ByteBuffer + +import org.apache.spark.sql.catalyst.types.NativeType +import org.apache.spark.sql.columnar.{ColumnAccessor, NativeColumnAccessor} + +private[sql] trait CompressibleColumnAccessor[T <: NativeType] extends ColumnAccessor { + this: NativeColumnAccessor[T] => + + private var decoder: Decoder[T] = _ + + abstract override protected def initialize() = { + super.initialize() + decoder = CompressionScheme(underlyingBuffer.getInt()).decoder(buffer, columnType) + } + + abstract override def extractSingle(buffer: ByteBuffer): T#JvmType = decoder.next() +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressibleColumnBuilder.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressibleColumnBuilder.scala new file mode 100644 index 0000000000000..fd3b1adf9687a --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressibleColumnBuilder.scala @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import java.nio.{ByteBuffer, ByteOrder} + +import org.apache.spark.sql.{Logging, Row} +import org.apache.spark.sql.catalyst.types.NativeType +import org.apache.spark.sql.columnar.{ColumnBuilder, NativeColumnBuilder} + +/** + * A stackable trait that builds optionally compressed byte buffer for a column. Memory layout of + * the final byte buffer is: + * {{{ + * .--------------------------- Column type ID (4 bytes) + * | .----------------------- Null count N (4 bytes) + * | | .------------------- Null positions (4 x N bytes, empty if null count is zero) + * | | | .------------- Compression scheme ID (4 bytes) + * | | | | .--------- Compressed non-null elements + * V V V V V + * +---+---+-----+---+---------+ + * | | | ... | | ... ... | + * +---+---+-----+---+---------+ + * \-----------/ \-----------/ + * header body + * }}} + */ +private[sql] trait CompressibleColumnBuilder[T <: NativeType] + extends ColumnBuilder with Logging { + + this: NativeColumnBuilder[T] with WithCompressionSchemes => + + import CompressionScheme._ + + val compressionEncoders = schemes.filter(_.supports(columnType)).map(_.encoder[T]) + + protected def isWorthCompressing(encoder: Encoder[T]) = { + encoder.compressionRatio < 0.8 + } + + private def gatherCompressibilityStats(row: Row, ordinal: Int) { + val field = columnType.getField(row, ordinal) + + var i = 0 + while (i < compressionEncoders.length) { + compressionEncoders(i).gatherCompressibilityStats(field, columnType) + i += 1 + } + } + + abstract override def appendFrom(row: Row, ordinal: Int) { + super.appendFrom(row, ordinal) + gatherCompressibilityStats(row, ordinal) + } + + abstract override def build() = { + val rawBuffer = super.build() + val encoder: Encoder[T] = { + val candidate = compressionEncoders.minBy(_.compressionRatio) + if (isWorthCompressing(candidate)) candidate else PassThrough.encoder + } + + val headerSize = columnHeaderSize(rawBuffer) + val compressedSize = if (encoder.compressedSize == 0) { + rawBuffer.limit - headerSize + } else { + encoder.compressedSize + } + + // Reserves 4 bytes for compression scheme ID + val compressedBuffer = ByteBuffer + .allocate(headerSize + 4 + compressedSize) + .order(ByteOrder.nativeOrder) + + copyColumnHeader(rawBuffer, compressedBuffer) + + logger.info(s"Compressor for [$columnName]: $encoder, ratio: ${encoder.compressionRatio}") + encoder.compress(rawBuffer, compressedBuffer, columnType) + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressionScheme.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressionScheme.scala new file mode 100644 index 0000000000000..c605a8e4434e3 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/CompressionScheme.scala @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import java.nio.ByteBuffer + +import org.apache.spark.sql.catalyst.types.NativeType +import org.apache.spark.sql.columnar.{ColumnType, NativeColumnType} + +private[sql] trait Encoder[T <: NativeType] { + def gatherCompressibilityStats(value: T#JvmType, columnType: NativeColumnType[T]) {} + + def compressedSize: Int + + def uncompressedSize: Int + + def compressionRatio: Double = { + if (uncompressedSize > 0) compressedSize.toDouble / uncompressedSize else 1.0 + } + + def compress(from: ByteBuffer, to: ByteBuffer, columnType: NativeColumnType[T]): ByteBuffer +} + +private[sql] trait Decoder[T <: NativeType] extends Iterator[T#JvmType] + +private[sql] trait CompressionScheme { + def typeId: Int + + def supports(columnType: ColumnType[_, _]): Boolean + + def encoder[T <: NativeType]: Encoder[T] + + def decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]): Decoder[T] +} + +private[sql] trait WithCompressionSchemes { + def schemes: Seq[CompressionScheme] +} + +private[sql] trait AllCompressionSchemes extends WithCompressionSchemes { + override val schemes: Seq[CompressionScheme] = CompressionScheme.all +} + +private[sql] object CompressionScheme { + val all: Seq[CompressionScheme] = + Seq(PassThrough, RunLengthEncoding, DictionaryEncoding, BooleanBitSet, IntDelta, LongDelta) + + private val typeIdToScheme = all.map(scheme => scheme.typeId -> scheme).toMap + + def apply(typeId: Int): CompressionScheme = { + typeIdToScheme.getOrElse(typeId, throw new UnsupportedOperationException( + s"Unrecognized compression scheme type ID: $typeId")) + } + + def copyColumnHeader(from: ByteBuffer, to: ByteBuffer) { + // Writes column type ID + to.putInt(from.getInt()) + + // Writes null count + val nullCount = from.getInt() + to.putInt(nullCount) + + // Writes null positions + var i = 0 + while (i < nullCount) { + to.putInt(from.getInt()) + i += 1 + } + } + + def columnHeaderSize(columnBuffer: ByteBuffer): Int = { + val header = columnBuffer.duplicate() + val nullCount = header.getInt(4) + // Column type ID + null count + null positions + 4 + 4 + 4 * nullCount + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/compressionSchemes.scala b/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/compressionSchemes.scala new file mode 100644 index 0000000000000..df8220b556edd --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/columnar/compression/compressionSchemes.scala @@ -0,0 +1,482 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import java.nio.ByteBuffer + +import scala.collection.mutable +import scala.reflect.ClassTag +import scala.reflect.runtime.universe.runtimeMirror + +import org.apache.spark.sql.catalyst.expressions.GenericMutableRow +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.columnar._ + +private[sql] case object PassThrough extends CompressionScheme { + override val typeId = 0 + + override def supports(columnType: ColumnType[_, _]) = true + + override def encoder[T <: NativeType] = new this.Encoder[T] + + override def decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]) = { + new this.Decoder(buffer, columnType) + } + + class Encoder[T <: NativeType] extends compression.Encoder[T] { + override def uncompressedSize = 0 + + override def compressedSize = 0 + + override def compress(from: ByteBuffer, to: ByteBuffer, columnType: NativeColumnType[T]) = { + // Writes compression type ID and copies raw contents + to.putInt(PassThrough.typeId).put(from).rewind() + to + } + } + + class Decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]) + extends compression.Decoder[T] { + + override def next() = columnType.extract(buffer) + + override def hasNext = buffer.hasRemaining + } +} + +private[sql] case object RunLengthEncoding extends CompressionScheme { + override val typeId = 1 + + override def encoder[T <: NativeType] = new this.Encoder[T] + + override def decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]) = { + new this.Decoder(buffer, columnType) + } + + override def supports(columnType: ColumnType[_, _]) = columnType match { + case INT | LONG | SHORT | BYTE | STRING | BOOLEAN => true + case _ => false + } + + class Encoder[T <: NativeType] extends compression.Encoder[T] { + private var _uncompressedSize = 0 + private var _compressedSize = 0 + + // Using `MutableRow` to store the last value to avoid boxing/unboxing cost. + private val lastValue = new GenericMutableRow(1) + private var lastRun = 0 + + override def uncompressedSize = _uncompressedSize + + override def compressedSize = _compressedSize + + override def gatherCompressibilityStats(value: T#JvmType, columnType: NativeColumnType[T]) { + val actualSize = columnType.actualSize(value) + _uncompressedSize += actualSize + + if (lastValue.isNullAt(0)) { + columnType.setField(lastValue, 0, value) + lastRun = 1 + _compressedSize += actualSize + 4 + } else { + if (columnType.getField(lastValue, 0) == value) { + lastRun += 1 + } else { + _compressedSize += actualSize + 4 + columnType.setField(lastValue, 0, value) + lastRun = 1 + } + } + } + + override def compress(from: ByteBuffer, to: ByteBuffer, columnType: NativeColumnType[T]) = { + to.putInt(RunLengthEncoding.typeId) + + if (from.hasRemaining) { + var currentValue = columnType.extract(from) + var currentRun = 1 + + while (from.hasRemaining) { + val value = columnType.extract(from) + + if (value == currentValue) { + currentRun += 1 + } else { + // Writes current run + columnType.append(currentValue, to) + to.putInt(currentRun) + + // Resets current run + currentValue = value + currentRun = 1 + } + } + + // Writes the last run + columnType.append(currentValue, to) + to.putInt(currentRun) + } + + to.rewind() + to + } + } + + class Decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]) + extends compression.Decoder[T] { + + private var run = 0 + private var valueCount = 0 + private var currentValue: T#JvmType = _ + + override def next() = { + if (valueCount == run) { + currentValue = columnType.extract(buffer) + run = buffer.getInt() + valueCount = 1 + } else { + valueCount += 1 + } + + currentValue + } + + override def hasNext = buffer.hasRemaining + } +} + +private[sql] case object DictionaryEncoding extends CompressionScheme { + override val typeId = 2 + + // 32K unique values allowed + val MAX_DICT_SIZE = Short.MaxValue + + override def decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]) = { + new this.Decoder(buffer, columnType) + } + + override def encoder[T <: NativeType] = new this.Encoder[T] + + override def supports(columnType: ColumnType[_, _]) = columnType match { + case INT | LONG | STRING => true + case _ => false + } + + class Encoder[T <: NativeType] extends compression.Encoder[T] { + // Size of the input, uncompressed, in bytes. Note that we only count until the dictionary + // overflows. + private var _uncompressedSize = 0 + + // If the number of distinct elements is too large, we discard the use of dictionary encoding + // and set the overflow flag to true. + private var overflow = false + + // Total number of elements. + private var count = 0 + + // The reverse mapping of _dictionary, i.e. mapping encoded integer to the value itself. + private var values = new mutable.ArrayBuffer[T#JvmType](1024) + + // The dictionary that maps a value to the encoded short integer. + private val dictionary = mutable.HashMap.empty[Any, Short] + + // Size of the serialized dictionary in bytes. Initialized to 4 since we need at least an `Int` + // to store dictionary element count. + private var dictionarySize = 4 + + override def gatherCompressibilityStats(value: T#JvmType, columnType: NativeColumnType[T]) { + if (!overflow) { + val actualSize = columnType.actualSize(value) + count += 1 + _uncompressedSize += actualSize + + if (!dictionary.contains(value)) { + if (dictionary.size < MAX_DICT_SIZE) { + val clone = columnType.clone(value) + values += clone + dictionarySize += actualSize + dictionary(clone) = dictionary.size.toShort + } else { + overflow = true + values.clear() + dictionary.clear() + } + } + } + } + + override def compress(from: ByteBuffer, to: ByteBuffer, columnType: NativeColumnType[T]) = { + if (overflow) { + throw new IllegalStateException( + "Dictionary encoding should not be used because of dictionary overflow.") + } + + to.putInt(DictionaryEncoding.typeId) + .putInt(dictionary.size) + + var i = 0 + while (i < values.length) { + columnType.append(values(i), to) + i += 1 + } + + while (from.hasRemaining) { + to.putShort(dictionary(columnType.extract(from))) + } + + to.rewind() + to + } + + override def uncompressedSize = _uncompressedSize + + override def compressedSize = if (overflow) Int.MaxValue else dictionarySize + count * 2 + } + + class Decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]) + extends compression.Decoder[T] { + + private val dictionary = { + // TODO Can we clean up this mess? Maybe move this to `DataType`? + implicit val classTag = { + val mirror = runtimeMirror(getClass.getClassLoader) + ClassTag[T#JvmType](mirror.runtimeClass(columnType.scalaTag.tpe)) + } + + Array.fill(buffer.getInt()) { + columnType.extract(buffer) + } + } + + override def next() = dictionary(buffer.getShort()) + + override def hasNext = buffer.hasRemaining + } +} + +private[sql] case object BooleanBitSet extends CompressionScheme { + override val typeId = 3 + + val BITS_PER_LONG = 64 + + override def decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]) = { + new this.Decoder(buffer).asInstanceOf[compression.Decoder[T]] + } + + override def encoder[T <: NativeType] = (new this.Encoder).asInstanceOf[compression.Encoder[T]] + + override def supports(columnType: ColumnType[_, _]) = columnType == BOOLEAN + + class Encoder extends compression.Encoder[BooleanType.type] { + private var _uncompressedSize = 0 + + override def gatherCompressibilityStats( + value: Boolean, + columnType: NativeColumnType[BooleanType.type]) { + + _uncompressedSize += BOOLEAN.defaultSize + } + + override def compress( + from: ByteBuffer, + to: ByteBuffer, + columnType: NativeColumnType[BooleanType.type]) = { + + to.putInt(BooleanBitSet.typeId) + // Total element count (1 byte per Boolean value) + .putInt(from.remaining) + + while (from.remaining >= BITS_PER_LONG) { + var word = 0: Long + var i = 0 + + while (i < BITS_PER_LONG) { + if (BOOLEAN.extract(from)) { + word |= (1: Long) << i + } + i += 1 + } + + to.putLong(word) + } + + if (from.hasRemaining) { + var word = 0: Long + var i = 0 + + while (from.hasRemaining) { + if (BOOLEAN.extract(from)) { + word |= (1: Long) << i + } + i += 1 + } + + to.putLong(word) + } + + to.rewind() + to + } + + override def uncompressedSize = _uncompressedSize + + override def compressedSize = { + val extra = if (_uncompressedSize % BITS_PER_LONG == 0) 0 else 1 + (_uncompressedSize / BITS_PER_LONG + extra) * 8 + 4 + } + } + + class Decoder(buffer: ByteBuffer) extends compression.Decoder[BooleanType.type] { + private val count = buffer.getInt() + + private var currentWord = 0: Long + + private var visited: Int = 0 + + override def next(): Boolean = { + val bit = visited % BITS_PER_LONG + + visited += 1 + if (bit == 0) { + currentWord = buffer.getLong() + } + + ((currentWord >> bit) & 1) != 0 + } + + override def hasNext: Boolean = visited < count + } +} + +private[sql] sealed abstract class IntegralDelta[I <: IntegralType] extends CompressionScheme { + override def decoder[T <: NativeType](buffer: ByteBuffer, columnType: NativeColumnType[T]) = { + new this.Decoder(buffer, columnType.asInstanceOf[NativeColumnType[I]]) + .asInstanceOf[compression.Decoder[T]] + } + + override def encoder[T <: NativeType] = (new this.Encoder).asInstanceOf[compression.Encoder[T]] + + /** + * Computes `delta = x - y`, returns `(true, delta)` if `delta` can fit into a single byte, or + * `(false, 0: Byte)` otherwise. + */ + protected def byteSizedDelta(x: I#JvmType, y: I#JvmType): (Boolean, Byte) + + /** + * Simply computes `x + delta` + */ + protected def addDelta(x: I#JvmType, delta: Byte): I#JvmType + + class Encoder extends compression.Encoder[I] { + private var _compressedSize: Int = 0 + + private var _uncompressedSize: Int = 0 + + private var prev: I#JvmType = _ + + private var initial = true + + override def gatherCompressibilityStats(value: I#JvmType, columnType: NativeColumnType[I]) { + _uncompressedSize += columnType.defaultSize + + if (initial) { + initial = false + prev = value + _compressedSize += 1 + columnType.defaultSize + } else { + val (smallEnough, _) = byteSizedDelta(value, prev) + _compressedSize += (if (smallEnough) 1 else 1 + columnType.defaultSize) + } + } + + override def compress(from: ByteBuffer, to: ByteBuffer, columnType: NativeColumnType[I]) = { + to.putInt(typeId) + + if (from.hasRemaining) { + val prev = columnType.extract(from) + + to.put(Byte.MinValue) + columnType.append(prev, to) + + while (from.hasRemaining) { + val current = columnType.extract(from) + val (smallEnough, delta) = byteSizedDelta(current, prev) + + if (smallEnough) { + to.put(delta) + } else { + to.put(Byte.MinValue) + columnType.append(current, to) + } + } + } + + to.rewind() + to + } + + override def uncompressedSize = _uncompressedSize + + override def compressedSize = _compressedSize + } + + class Decoder(buffer: ByteBuffer, columnType: NativeColumnType[I]) + extends compression.Decoder[I] { + + private var prev: I#JvmType = _ + + override def next() = { + val delta = buffer.get() + + if (delta > Byte.MinValue) { + addDelta(prev, delta) + } else { + prev = columnType.extract(buffer) + prev + } + } + + override def hasNext = buffer.hasRemaining + } +} + +private[sql] case object IntDelta extends IntegralDelta[IntegerType.type] { + override val typeId = 4 + + override def supports(columnType: ColumnType[_, _]) = columnType == INT + + override protected def addDelta(x: Int, delta: Byte) = x + delta + + override protected def byteSizedDelta(x: Int, y: Int): (Boolean, Byte) = { + val delta = x - y + if (delta < Byte.MaxValue) (true, delta.toByte) else (false, 0: Byte) + } +} + +private[sql] case object LongDelta extends IntegralDelta[LongType.type] { + override val typeId = 5 + + override def supports(columnType: ColumnType[_, _]) = columnType == LONG + + override protected def addDelta(x: Long, delta: Byte) = x + delta + + override protected def byteSizedDelta(x: Long, y: Long): (Boolean, Byte) = { + val delta = x - y + if (delta < Byte.MaxValue) (true, delta.toByte) else (false, 0: Byte) + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/Aggregate.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/Aggregate.scala new file mode 100644 index 0000000000000..3a4f071eebedf --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/Aggregate.scala @@ -0,0 +1,202 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import java.util.HashMap + +import org.apache.spark.SparkContext +import org.apache.spark.sql.catalyst.errors._ +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.physical._ + +/** + * Groups input data by `groupingExpressions` and computes the `aggregateExpressions` for each + * group. + * + * @param partial if true then aggregation is done partially on local data without shuffling to + * ensure all values where `groupingExpressions` are equal are present. + * @param groupingExpressions expressions that are evaluated to determine grouping. + * @param aggregateExpressions expressions that are computed for each group. + * @param child the input data source. + */ +case class Aggregate( + partial: Boolean, + groupingExpressions: Seq[Expression], + aggregateExpressions: Seq[NamedExpression], + child: SparkPlan)(@transient sc: SparkContext) + extends UnaryNode with NoBind { + + override def requiredChildDistribution = + if (partial) { + UnspecifiedDistribution :: Nil + } else { + if (groupingExpressions == Nil) { + AllTuples :: Nil + } else { + ClusteredDistribution(groupingExpressions) :: Nil + } + } + + override def otherCopyArgs = sc :: Nil + + // HACK: Generators don't correctly preserve their output through serializations so we grab + // out child's output attributes statically here. + private[this] val childOutput = child.output + + override def output = aggregateExpressions.map(_.toAttribute) + + /** + * An aggregate that needs to be computed for each row in a group. + * + * @param unbound Unbound version of this aggregate, used for result substitution. + * @param aggregate A bound copy of this aggregate used to create a new aggregation buffer. + * @param resultAttribute An attribute used to refer to the result of this aggregate in the final + * output. + */ + case class ComputedAggregate( + unbound: AggregateExpression, + aggregate: AggregateExpression, + resultAttribute: AttributeReference) + + /** A list of aggregates that need to be computed for each group. */ + @transient + private[this] lazy val computedAggregates = aggregateExpressions.flatMap { agg => + agg.collect { + case a: AggregateExpression => + ComputedAggregate( + a, + BindReferences.bindReference(a, childOutput).asInstanceOf[AggregateExpression], + AttributeReference(s"aggResult:$a", a.dataType, nullable = true)()) + } + }.toArray + + /** The schema of the result of all aggregate evaluations */ + @transient + private[this] lazy val computedSchema = computedAggregates.map(_.resultAttribute) + + /** Creates a new aggregate buffer for a group. */ + private[this] def newAggregateBuffer(): Array[AggregateFunction] = { + val buffer = new Array[AggregateFunction](computedAggregates.length) + var i = 0 + while (i < computedAggregates.length) { + buffer(i) = computedAggregates(i).aggregate.newInstance() + i += 1 + } + buffer + } + + /** Named attributes used to substitute grouping attributes into the final result. */ + @transient + private[this] lazy val namedGroups = groupingExpressions.map { + case ne: NamedExpression => ne -> ne.toAttribute + case e => e -> Alias(e, s"groupingExpr:$e")().toAttribute + } + + /** + * A map of substitutions that are used to insert the aggregate expressions and grouping + * expression into the final result expression. + */ + @transient + private[this] lazy val resultMap = + (computedAggregates.map { agg => agg.unbound -> agg.resultAttribute} ++ namedGroups).toMap + + /** + * Substituted version of aggregateExpressions expressions which are used to compute final + * output rows given a group and the result of all aggregate computations. + */ + @transient + private[this] lazy val resultExpressions = aggregateExpressions.map { agg => + agg.transform { + case e: Expression if resultMap.contains(e) => resultMap(e) + } + } + + override def execute() = attachTree(this, "execute") { + if (groupingExpressions.isEmpty) { + child.execute().mapPartitions { iter => + val buffer = newAggregateBuffer() + var currentRow: Row = null + while (iter.hasNext) { + currentRow = iter.next() + var i = 0 + while (i < buffer.length) { + buffer(i).update(currentRow) + i += 1 + } + } + val resultProjection = new Projection(resultExpressions, computedSchema) + val aggregateResults = new GenericMutableRow(computedAggregates.length) + + var i = 0 + while (i < buffer.length) { + aggregateResults(i) = buffer(i).eval(EmptyRow) + i += 1 + } + + Iterator(resultProjection(aggregateResults)) + } + } else { + child.execute().mapPartitions { iter => + val hashTable = new HashMap[Row, Array[AggregateFunction]] + val groupingProjection = new MutableProjection(groupingExpressions, childOutput) + + var currentRow: Row = null + while (iter.hasNext) { + currentRow = iter.next() + val currentGroup = groupingProjection(currentRow) + var currentBuffer = hashTable.get(currentGroup) + if (currentBuffer == null) { + currentBuffer = newAggregateBuffer() + hashTable.put(currentGroup.copy(), currentBuffer) + } + + var i = 0 + while (i < currentBuffer.length) { + currentBuffer(i).update(currentRow) + i += 1 + } + } + + new Iterator[Row] { + private[this] val hashTableIter = hashTable.entrySet().iterator() + private[this] val aggregateResults = new GenericMutableRow(computedAggregates.length) + private[this] val resultProjection = + new MutableProjection(resultExpressions, computedSchema ++ namedGroups.map(_._2)) + private[this] val joinedRow = new JoinedRow + + override final def hasNext: Boolean = hashTableIter.hasNext + + override final def next(): Row = { + val currentEntry = hashTableIter.next() + val currentGroup = currentEntry.getKey + val currentBuffer = currentEntry.getValue + + var i = 0 + while (i < currentBuffer.length) { + // Evaluating an aggregate buffer returns the result. No row is required since we + // already added all rows in the group using update. + aggregateResults(i) = currentBuffer(i).eval(EmptyRow) + i += 1 + } + resultProjection(joinedRow(aggregateResults, currentGroup)) + } + } + } + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/Exchange.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/Exchange.scala new file mode 100644 index 0000000000000..450c142c0baa4 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/Exchange.scala @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import org.apache.spark.{HashPartitioner, RangePartitioner, SparkConf} +import org.apache.spark.rdd.ShuffledRDD +import org.apache.spark.sql.Row +import org.apache.spark.sql.catalyst.errors.attachTree +import org.apache.spark.sql.catalyst.expressions.{MutableProjection, RowOrdering} +import org.apache.spark.sql.catalyst.plans.physical._ +import org.apache.spark.sql.catalyst.rules.Rule +import org.apache.spark.util.MutablePair + +case class Exchange(newPartitioning: Partitioning, child: SparkPlan) extends UnaryNode { + + override def outputPartitioning = newPartitioning + + def output = child.output + + def execute() = attachTree(this , "execute") { + newPartitioning match { + case HashPartitioning(expressions, numPartitions) => + // TODO: Eliminate redundant expressions in grouping key and value. + val rdd = child.execute().mapPartitions { iter => + val hashExpressions = new MutableProjection(expressions) + val mutablePair = new MutablePair[Row, Row]() + iter.map(r => mutablePair.update(hashExpressions(r), r)) + } + val part = new HashPartitioner(numPartitions) + val shuffled = new ShuffledRDD[Row, Row, MutablePair[Row, Row]](rdd, part) + shuffled.setSerializer(new SparkSqlSerializer(new SparkConf(false))) + shuffled.map(_._2) + + case RangePartitioning(sortingExpressions, numPartitions) => + // TODO: RangePartitioner should take an Ordering. + implicit val ordering = new RowOrdering(sortingExpressions) + + val rdd = child.execute().mapPartitions { iter => + val mutablePair = new MutablePair[Row, Null](null, null) + iter.map(row => mutablePair.update(row, null)) + } + val part = new RangePartitioner(numPartitions, rdd, ascending = true) + val shuffled = new ShuffledRDD[Row, Null, MutablePair[Row, Null]](rdd, part) + shuffled.setSerializer(new SparkSqlSerializer(new SparkConf(false))) + + shuffled.map(_._1) + + case SinglePartition => + child.execute().coalesce(1, shuffle = true) + + case _ => sys.error(s"Exchange not implemented for $newPartitioning") + // TODO: Handle BroadcastPartitioning. + } + } +} + +/** + * Ensures that the [[catalyst.plans.physical.Partitioning Partitioning]] of input data meets the + * [[catalyst.plans.physical.Distribution Distribution]] requirements for each operator by inserting + * [[Exchange]] Operators where required. + */ +object AddExchange extends Rule[SparkPlan] { + // TODO: Determine the number of partitions. + val numPartitions = 150 + + def apply(plan: SparkPlan): SparkPlan = plan.transformUp { + case operator: SparkPlan => + // Check if every child's outputPartitioning satisfies the corresponding + // required data distribution. + def meetsRequirements = + !operator.requiredChildDistribution.zip(operator.children).map { + case (required, child) => + val valid = child.outputPartitioning.satisfies(required) + logger.debug( + s"${if (valid) "Valid" else "Invalid"} distribution," + + s"required: $required current: ${child.outputPartitioning}") + valid + }.exists(!_) + + // Check if outputPartitionings of children are compatible with each other. + // It is possible that every child satisfies its required data distribution + // but two children have incompatible outputPartitionings. For example, + // A dataset is range partitioned by "a.asc" (RangePartitioning) and another + // dataset is hash partitioned by "a" (HashPartitioning). Tuples in these two + // datasets are both clustered by "a", but these two outputPartitionings are not + // compatible. + // TODO: ASSUMES TRANSITIVITY? + def compatible = + !operator.children + .map(_.outputPartitioning) + .sliding(2) + .map { + case Seq(a) => true + case Seq(a,b) => a compatibleWith b + }.exists(!_) + + // Check if the partitioning we want to ensure is the same as the child's output + // partitioning. If so, we do not need to add the Exchange operator. + def addExchangeIfNecessary(partitioning: Partitioning, child: SparkPlan) = + if (child.outputPartitioning != partitioning) Exchange(partitioning, child) else child + + if (meetsRequirements && compatible) { + operator + } else { + // At least one child does not satisfies its required data distribution or + // at least one child's outputPartitioning is not compatible with another child's + // outputPartitioning. In this case, we need to add Exchange operators. + val repartitionedChildren = operator.requiredChildDistribution.zip(operator.children).map { + case (AllTuples, child) => + addExchangeIfNecessary(SinglePartition, child) + case (ClusteredDistribution(clustering), child) => + addExchangeIfNecessary(HashPartitioning(clustering, numPartitions), child) + case (OrderedDistribution(ordering), child) => + addExchangeIfNecessary(RangePartitioning(ordering, numPartitions), child) + case (UnspecifiedDistribution, child) => child + case (dist, _) => sys.error(s"Don't know how to ensure $dist") + } + operator.withNewChildren(repartitionedChildren) + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/Generate.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/Generate.scala new file mode 100644 index 0000000000000..cff4887936ae1 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/Generate.scala @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import org.apache.spark.sql.catalyst.expressions.{Generator, JoinedRow, Literal, Projection} + +/** + * Applies a [[catalyst.expressions.Generator Generator]] to a stream of input rows, combining the + * output of each into a new stream of rows. This operation is similar to a `flatMap` in functional + * programming with one important additional feature, which allows the input rows to be joined with + * their output. + * @param join when true, each output row is implicitly joined with the input tuple that produced + * it. + * @param outer when true, each input row will be output at least once, even if the output of the + * given `generator` is empty. `outer` has no effect when `join` is false. + */ +case class Generate( + generator: Generator, + join: Boolean, + outer: Boolean, + child: SparkPlan) + extends UnaryNode { + + override def output = + if (join) child.output ++ generator.output else generator.output + + override def execute() = { + if (join) { + child.execute().mapPartitions { iter => + val nullValues = Seq.fill(generator.output.size)(Literal(null)) + // Used to produce rows with no matches when outer = true. + val outerProjection = + new Projection(child.output ++ nullValues, child.output) + + val joinProjection = + new Projection(child.output ++ generator.output, child.output ++ generator.output) + val joinedRow = new JoinedRow + + iter.flatMap {row => + val outputRows = generator.eval(row) + if (outer && outputRows.isEmpty) { + outerProjection(row) :: Nil + } else { + outputRows.map(or => joinProjection(joinedRow(row, or))) + } + } + } + } else { + child.execute().mapPartitions(iter => iter.flatMap(row => generator.eval(row))) + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/QueryExecutionException.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/QueryExecutionException.scala new file mode 100644 index 0000000000000..16806c620635f --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/QueryExecutionException.scala @@ -0,0 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +class QueryExecutionException(message: String) extends Exception(message) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala new file mode 100644 index 0000000000000..daa423cb8ea1a --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import org.apache.spark.rdd.RDD +import org.apache.spark.sql.{Logging, Row} +import org.apache.spark.sql.catalyst.trees +import org.apache.spark.sql.catalyst.analysis.MultiInstanceRelation +import org.apache.spark.sql.catalyst.expressions.GenericRow +import org.apache.spark.sql.catalyst.plans.{QueryPlan, logical} +import org.apache.spark.sql.catalyst.plans.physical._ +import org.apache.spark.sql.columnar.InMemoryColumnarTableScan + +abstract class SparkPlan extends QueryPlan[SparkPlan] with Logging { + self: Product => + + // TODO: Move to `DistributedPlan` + /** Specifies how data is partitioned across different nodes in the cluster. */ + def outputPartitioning: Partitioning = UnknownPartitioning(0) // TODO: WRONG WIDTH! + /** Specifies any partition requirements on the input data for this operator. */ + def requiredChildDistribution: Seq[Distribution] = + Seq.fill(children.size)(UnspecifiedDistribution) + + /** + * Runs this query returning the result as an RDD. + */ + def execute(): RDD[Row] + + /** + * Runs this query returning the result as an array. + */ + def executeCollect(): Array[Row] = execute().collect() + + protected def buildRow(values: Seq[Any]): Row = + new GenericRow(values.toArray) +} + +/** + * Allows already planned SparkQueries to be linked into logical query plans. + * + * Note that in general it is not valid to use this class to link multiple copies of the same + * physical operator into the same query plan as this violates the uniqueness of expression ids. + * Special handling exists for ExistingRdd as these are already leaf operators and thus we can just + * replace the output attributes with new copies of themselves without breaking any attribute + * linking. + */ +case class SparkLogicalPlan(alreadyPlanned: SparkPlan) + extends logical.LogicalPlan with MultiInstanceRelation { + + def output = alreadyPlanned.output + def references = Set.empty + def children = Nil + + override final def newInstance: this.type = { + SparkLogicalPlan( + alreadyPlanned match { + case ExistingRdd(output, rdd) => ExistingRdd(output.map(_.newInstance), rdd) + case InMemoryColumnarTableScan(output, child) => + InMemoryColumnarTableScan(output.map(_.newInstance), child) + case _ => sys.error("Multiple instance of the same relation detected.") + }).asInstanceOf[this.type] + } +} + +trait LeafNode extends SparkPlan with trees.LeafNode[SparkPlan] { + self: Product => +} + +trait UnaryNode extends SparkPlan with trees.UnaryNode[SparkPlan] { + self: Product => + override def outputPartitioning: Partitioning = child.outputPartitioning +} + +trait BinaryNode extends SparkPlan with trees.BinaryNode[SparkPlan] { + self: Product => +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlSerializer.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlSerializer.scala new file mode 100644 index 0000000000000..d8e1b970c1d88 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlSerializer.scala @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import java.nio.ByteBuffer + +import com.esotericsoftware.kryo.io.{Input, Output} +import com.esotericsoftware.kryo.{Serializer, Kryo} + +import org.apache.spark.{SparkEnv, SparkConf} +import org.apache.spark.serializer.KryoSerializer +import org.apache.spark.util.MutablePair + +class SparkSqlSerializer(conf: SparkConf) extends KryoSerializer(conf) { + override def newKryo(): Kryo = { + val kryo = new Kryo() + kryo.setRegistrationRequired(false) + kryo.register(classOf[MutablePair[_, _]]) + kryo.register(classOf[Array[Any]]) + // This is kinda hacky... + kryo.register(classOf[scala.collection.immutable.Map$Map1], new MapSerializer) + kryo.register(classOf[scala.collection.immutable.Map$Map2], new MapSerializer) + kryo.register(classOf[scala.collection.immutable.Map$Map3], new MapSerializer) + kryo.register(classOf[scala.collection.immutable.Map$Map4], new MapSerializer) + kryo.register(classOf[scala.collection.immutable.Map[_,_]], new MapSerializer) + kryo.register(classOf[scala.collection.Map[_,_]], new MapSerializer) + kryo.register(classOf[org.apache.spark.sql.catalyst.expressions.GenericRow]) + kryo.register(classOf[org.apache.spark.sql.catalyst.expressions.GenericMutableRow]) + kryo.register(classOf[scala.collection.mutable.ArrayBuffer[_]]) + kryo.register(classOf[scala.math.BigDecimal], new BigDecimalSerializer) + kryo.setReferences(false) + kryo.setClassLoader(this.getClass.getClassLoader) + kryo + } +} + +object SparkSqlSerializer { + // TODO (lian) Using KryoSerializer here is workaround, needs further investigation + // Using SparkSqlSerializer here makes BasicQuerySuite to fail because of Kryo serialization + // related error. + @transient lazy val ser: KryoSerializer = { + val sparkConf = Option(SparkEnv.get).map(_.conf).getOrElse(new SparkConf()) + new KryoSerializer(sparkConf) + } + + def serialize[T](o: T): Array[Byte] = { + ser.newInstance().serialize(o).array() + } + + def deserialize[T](bytes: Array[Byte]): T = { + ser.newInstance().deserialize[T](ByteBuffer.wrap(bytes)) + } +} + +class BigDecimalSerializer extends Serializer[BigDecimal] { + def write(kryo: Kryo, output: Output, bd: math.BigDecimal) { + // TODO: There are probably more efficient representations than strings... + output.writeString(bd.toString()) + } + + def read(kryo: Kryo, input: Input, tpe: Class[BigDecimal]): BigDecimal = { + BigDecimal(input.readString()) + } +} + +/** + * Maps do not have a no arg constructor and so cannot be serialized by default. So, we serialize + * them as `Array[(k,v)]`. + */ +class MapSerializer extends Serializer[Map[_,_]] { + def write(kryo: Kryo, output: Output, map: Map[_,_]) { + kryo.writeObject(output, map.flatMap(e => Seq(e._1, e._2)).toArray) + } + + def read(kryo: Kryo, input: Input, tpe: Class[Map[_,_]]): Map[_,_] = { + kryo.readObject(input, classOf[Array[Any]]) + .sliding(2,2) + .map { case Array(k,v) => (k,v) } + .toMap + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkStrategies.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkStrategies.scala new file mode 100644 index 0000000000000..fe8bd5a508820 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkStrategies.scala @@ -0,0 +1,230 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import org.apache.spark.sql.{SQLContext, execution} +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.planning._ +import org.apache.spark.sql.catalyst.plans._ +import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan +import org.apache.spark.sql.catalyst.plans.physical._ +import org.apache.spark.sql.parquet._ + +abstract class SparkStrategies extends QueryPlanner[SparkPlan] { + self: SQLContext#SparkPlanner => + + object HashJoin extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case FilteredOperation(predicates, logical.Join(left, right, Inner, condition)) => + logger.debug(s"Considering join: ${predicates ++ condition}") + // Find equi-join predicates that can be evaluated before the join, and thus can be used + // as join keys. Note we can only mix in the conditions with other predicates because the + // match above ensures that this is and Inner join. + val (joinPredicates, otherPredicates) = (predicates ++ condition).partition { + case Equals(l, r) if (canEvaluate(l, left) && canEvaluate(r, right)) || + (canEvaluate(l, right) && canEvaluate(r, left)) => true + case _ => false + } + + val joinKeys = joinPredicates.map { + case Equals(l,r) if canEvaluate(l, left) && canEvaluate(r, right) => (l, r) + case Equals(l,r) if canEvaluate(l, right) && canEvaluate(r, left) => (r, l) + } + + // Do not consider this strategy if there are no join keys. + if (joinKeys.nonEmpty) { + val leftKeys = joinKeys.map(_._1) + val rightKeys = joinKeys.map(_._2) + + val joinOp = execution.HashJoin( + leftKeys, rightKeys, BuildRight, planLater(left), planLater(right)) + + // Make sure other conditions are met if present. + if (otherPredicates.nonEmpty) { + execution.Filter(combineConjunctivePredicates(otherPredicates), joinOp) :: Nil + } else { + joinOp :: Nil + } + } else { + logger.debug(s"Avoiding spark join with no join keys.") + Nil + } + case _ => Nil + } + + private def combineConjunctivePredicates(predicates: Seq[Expression]) = + predicates.reduceLeft(And) + + /** Returns true if `expr` can be evaluated using only the output of `plan`. */ + protected def canEvaluate(expr: Expression, plan: LogicalPlan): Boolean = + expr.references subsetOf plan.outputSet + } + + object PartialAggregation extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case logical.Aggregate(groupingExpressions, aggregateExpressions, child) => + // Collect all aggregate expressions. + val allAggregates = + aggregateExpressions.flatMap(_ collect { case a: AggregateExpression => a}) + // Collect all aggregate expressions that can be computed partially. + val partialAggregates = + aggregateExpressions.flatMap(_ collect { case p: PartialAggregate => p}) + + // Only do partial aggregation if supported by all aggregate expressions. + if (allAggregates.size == partialAggregates.size) { + // Create a map of expressions to their partial evaluations for all aggregate expressions. + val partialEvaluations: Map[Long, SplitEvaluation] = + partialAggregates.map(a => (a.id, a.asPartial)).toMap + + // We need to pass all grouping expressions though so the grouping can happen a second + // time. However some of them might be unnamed so we alias them allowing them to be + // referenced in the second aggregation. + val namedGroupingExpressions: Map[Expression, NamedExpression] = groupingExpressions.map { + case n: NamedExpression => (n, n) + case other => (other, Alias(other, "PartialGroup")()) + }.toMap + + // Replace aggregations with a new expression that computes the result from the already + // computed partial evaluations and grouping values. + val rewrittenAggregateExpressions = aggregateExpressions.map(_.transformUp { + case e: Expression if partialEvaluations.contains(e.id) => + partialEvaluations(e.id).finalEvaluation + case e: Expression if namedGroupingExpressions.contains(e) => + namedGroupingExpressions(e).toAttribute + }).asInstanceOf[Seq[NamedExpression]] + + val partialComputation = + (namedGroupingExpressions.values ++ + partialEvaluations.values.flatMap(_.partialEvaluations)).toSeq + + // Construct two phased aggregation. + execution.Aggregate( + partial = false, + namedGroupingExpressions.values.map(_.toAttribute).toSeq, + rewrittenAggregateExpressions, + execution.Aggregate( + partial = true, + groupingExpressions, + partialComputation, + planLater(child))(sparkContext))(sparkContext) :: Nil + } else { + Nil + } + case _ => Nil + } + } + + object BroadcastNestedLoopJoin extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case logical.Join(left, right, joinType, condition) => + execution.BroadcastNestedLoopJoin( + planLater(left), planLater(right), joinType, condition)(sparkContext) :: Nil + case _ => Nil + } + } + + object CartesianProduct extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case logical.Join(left, right, _, None) => + execution.CartesianProduct(planLater(left), planLater(right)) :: Nil + case logical.Join(left, right, Inner, Some(condition)) => + execution.Filter(condition, + execution.CartesianProduct(planLater(left), planLater(right))) :: Nil + case _ => Nil + } + } + + protected lazy val singleRowRdd = + sparkContext.parallelize(Seq(new GenericRow(Array[Any]()): Row), 1) + + def convertToCatalyst(a: Any): Any = a match { + case s: Seq[Any] => s.map(convertToCatalyst) + case p: Product => new GenericRow(p.productIterator.map(convertToCatalyst).toArray) + case other => other + } + + object TakeOrdered extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case logical.Limit(IntegerLiteral(limit), logical.Sort(order, child)) => + execution.TakeOrdered(limit, order, planLater(child))(sparkContext) :: Nil + case _ => Nil + } + } + + object ParquetOperations extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + // TODO: need to support writing to other types of files. Unify the below code paths. + case logical.WriteToFile(path, child) => + val relation = + ParquetRelation.create(path, child, sparkContext.hadoopConfiguration) + InsertIntoParquetTable(relation, planLater(child), overwrite=true)(sparkContext) :: Nil + case logical.InsertIntoTable(table: ParquetRelation, partition, child, overwrite) => + InsertIntoParquetTable(table, planLater(child), overwrite)(sparkContext) :: Nil + case PhysicalOperation(projectList, filters, relation: ParquetRelation) => + // TODO: Should be pushing down filters as well. + pruneFilterProject( + projectList, + filters, + ParquetTableScan(_, relation, None)(sparkContext)) :: Nil + case _ => Nil + } + } + + // Can we automate these 'pass through' operations? + object BasicOperators extends Strategy { + // TODO: Set + val numPartitions = 200 + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case logical.Distinct(child) => + execution.Aggregate( + partial = false, child.output, child.output, planLater(child))(sparkContext) :: Nil + case logical.Sort(sortExprs, child) => + // This sort is a global sort. Its requiredDistribution will be an OrderedDistribution. + execution.Sort(sortExprs, global = true, planLater(child)):: Nil + case logical.SortPartitions(sortExprs, child) => + // This sort only sorts tuples within a partition. Its requiredDistribution will be + // an UnspecifiedDistribution. + execution.Sort(sortExprs, global = false, planLater(child)) :: Nil + case logical.Project(projectList, child) => + execution.Project(projectList, planLater(child)) :: Nil + case logical.Filter(condition, child) => + execution.Filter(condition, planLater(child)) :: Nil + case logical.Aggregate(group, agg, child) => + execution.Aggregate(partial = false, group, agg, planLater(child))(sparkContext) :: Nil + case logical.Sample(fraction, withReplacement, seed, child) => + execution.Sample(fraction, withReplacement, seed, planLater(child)) :: Nil + case logical.LocalRelation(output, data) => + val dataAsRdd = + sparkContext.parallelize(data.map(r => + new GenericRow(r.productIterator.map(convertToCatalyst).toArray): Row)) + execution.ExistingRdd(output, dataAsRdd) :: Nil + case logical.Limit(IntegerLiteral(limit), child) => + execution.Limit(limit, planLater(child))(sparkContext) :: Nil + case Unions(unionChildren) => + execution.Union(unionChildren.map(planLater))(sparkContext) :: Nil + case logical.Generate(generator, join, outer, _, child) => + execution.Generate(generator, join = join, outer = outer, planLater(child)) :: Nil + case logical.NoRelation => + execution.ExistingRdd(Nil, singleRowRdd) :: Nil + case logical.Repartition(expressions, child) => + execution.Exchange(HashPartitioning(expressions, numPartitions), planLater(child)) :: Nil + case SparkLogicalPlan(existingPlan) => existingPlan :: Nil + case _ => Nil + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala new file mode 100644 index 0000000000000..ab2e62463764a --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import scala.reflect.runtime.universe.TypeTag + +import org.apache.spark.{HashPartitioner, SparkConf, SparkContext} +import org.apache.spark.rdd.{RDD, ShuffledRDD} +import org.apache.spark.sql.catalyst.ScalaReflection +import org.apache.spark.sql.catalyst.errors._ +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.physical.{OrderedDistribution, UnspecifiedDistribution} +import org.apache.spark.util.MutablePair + + +case class Project(projectList: Seq[NamedExpression], child: SparkPlan) extends UnaryNode { + override def output = projectList.map(_.toAttribute) + + override def execute() = child.execute().mapPartitions { iter => + @transient val reusableProjection = new MutableProjection(projectList) + iter.map(reusableProjection) + } +} + +case class Filter(condition: Expression, child: SparkPlan) extends UnaryNode { + override def output = child.output + + override def execute() = child.execute().mapPartitions { iter => + iter.filter(condition.eval(_).asInstanceOf[Boolean]) + } +} + +case class Sample(fraction: Double, withReplacement: Boolean, seed: Int, child: SparkPlan) + extends UnaryNode { + + override def output = child.output + + // TODO: How to pick seed? + override def execute() = child.execute().sample(withReplacement, fraction, seed) +} + +case class Union(children: Seq[SparkPlan])(@transient sc: SparkContext) extends SparkPlan { + // TODO: attributes output by union should be distinct for nullability purposes + override def output = children.head.output + override def execute() = sc.union(children.map(_.execute())) + + override def otherCopyArgs = sc :: Nil +} + +/** + * Take the first limit elements. Note that the implementation is different depending on whether + * this is a terminal operator or not. If it is terminal and is invoked using executeCollect, + * this operator uses Spark's take method on the Spark driver. If it is not terminal or is + * invoked using execute, we first take the limit on each partition, and then repartition all the + * data to a single partition to compute the global limit. + */ +case class Limit(limit: Int, child: SparkPlan)(@transient sc: SparkContext) extends UnaryNode { + // TODO: Implement a partition local limit, and use a strategy to generate the proper limit plan: + // partition local limit -> exchange into one partition -> partition local limit again + + override def otherCopyArgs = sc :: Nil + + override def output = child.output + + override def executeCollect() = child.execute().map(_.copy()).take(limit) + + override def execute() = { + val rdd = child.execute().mapPartitions { iter => + val mutablePair = new MutablePair[Boolean, Row]() + iter.take(limit).map(row => mutablePair.update(false, row)) + } + val part = new HashPartitioner(1) + val shuffled = new ShuffledRDD[Boolean, Row, MutablePair[Boolean, Row]](rdd, part) + shuffled.setSerializer(new SparkSqlSerializer(new SparkConf(false))) + shuffled.mapPartitions(_.take(limit).map(_._2)) + } +} + +/** + * Take the first limit elements as defined by the sortOrder. This is logically equivalent to + * having a [[Limit]] operator after a [[Sort]] operator. This could have been named TopK, but + * Spark's top operator does the opposite in ordering so we name it TakeOrdered to avoid confusion. + */ +case class TakeOrdered(limit: Int, sortOrder: Seq[SortOrder], child: SparkPlan) + (@transient sc: SparkContext) extends UnaryNode { + override def otherCopyArgs = sc :: Nil + + override def output = child.output + + @transient + lazy val ordering = new RowOrdering(sortOrder) + + override def executeCollect() = child.execute().map(_.copy()).takeOrdered(limit)(ordering) + + // TODO: Terminal split should be implemented differently from non-terminal split. + // TODO: Pick num splits based on |limit|. + override def execute() = sc.makeRDD(executeCollect(), 1) +} + + +case class Sort( + sortOrder: Seq[SortOrder], + global: Boolean, + child: SparkPlan) + extends UnaryNode { + override def requiredChildDistribution = + if (global) OrderedDistribution(sortOrder) :: Nil else UnspecifiedDistribution :: Nil + + @transient + lazy val ordering = new RowOrdering(sortOrder) + + override def execute() = attachTree(this, "sort") { + // TODO: Optimize sorting operation? + child.execute() + .mapPartitions( + iterator => iterator.map(_.copy()).toArray.sorted(ordering).iterator, + preservesPartitioning = true) + } + + override def output = child.output +} + +object ExistingRdd { + def convertToCatalyst(a: Any): Any = a match { + case s: Seq[Any] => s.map(convertToCatalyst) + case p: Product => new GenericRow(p.productIterator.map(convertToCatalyst).toArray) + case other => other + } + + def productToRowRdd[A <: Product](data: RDD[A]): RDD[Row] = { + // TODO: Reuse the row, don't use map on the product iterator. Maybe code gen? + data.map(r => new GenericRow(r.productIterator.map(convertToCatalyst).toArray): Row) + } + + def fromProductRdd[A <: Product : TypeTag](productRdd: RDD[A]) = { + ExistingRdd(ScalaReflection.attributesFor[A], productToRowRdd(productRdd)) + } +} + +case class ExistingRdd(output: Seq[Attribute], rdd: RDD[Row]) extends LeafNode { + override def execute() = rdd +} + diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/debug.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/debug.scala new file mode 100644 index 0000000000000..40982f1fffbbf --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/debug.scala @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +object DebugQuery { + def apply(plan: SparkPlan): SparkPlan = { + val visited = new collection.mutable.HashSet[Long]() + plan transform { + case s: SparkPlan if !visited.contains(s.id) => + visited += s.id + DebugNode(s) + } + } +} + +case class DebugNode(child: SparkPlan) extends UnaryNode { + def references = Set.empty + def output = child.output + def execute() = { + val childRdd = child.execute() + println( + s""" + |========================= + |${child.simpleString} + |========================= + """.stripMargin) + childRdd.foreach(println(_)) + childRdd + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/joins.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/joins.scala new file mode 100644 index 0000000000000..c89dae9358bf7 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/joins.scala @@ -0,0 +1,220 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import scala.collection.mutable.{ArrayBuffer, BitSet} + +import org.apache.spark.SparkContext + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans._ +import org.apache.spark.sql.catalyst.plans.physical.{ClusteredDistribution, Partitioning} + +sealed abstract class BuildSide +case object BuildLeft extends BuildSide +case object BuildRight extends BuildSide + +case class HashJoin( + leftKeys: Seq[Expression], + rightKeys: Seq[Expression], + buildSide: BuildSide, + left: SparkPlan, + right: SparkPlan) extends BinaryNode { + + override def outputPartitioning: Partitioning = left.outputPartitioning + + override def requiredChildDistribution = + ClusteredDistribution(leftKeys) :: ClusteredDistribution(rightKeys) :: Nil + + val (buildPlan, streamedPlan) = buildSide match { + case BuildLeft => (left, right) + case BuildRight => (right, left) + } + + val (buildKeys, streamedKeys) = buildSide match { + case BuildLeft => (leftKeys, rightKeys) + case BuildRight => (rightKeys, leftKeys) + } + + def output = left.output ++ right.output + + @transient lazy val buildSideKeyGenerator = new Projection(buildKeys, buildPlan.output) + @transient lazy val streamSideKeyGenerator = + () => new MutableProjection(streamedKeys, streamedPlan.output) + + def execute() = { + + buildPlan.execute().zipPartitions(streamedPlan.execute()) { (buildIter, streamIter) => + // TODO: Use Spark's HashMap implementation. + val hashTable = new java.util.HashMap[Row, ArrayBuffer[Row]]() + var currentRow: Row = null + + // Create a mapping of buildKeys -> rows + while (buildIter.hasNext) { + currentRow = buildIter.next() + val rowKey = buildSideKeyGenerator(currentRow) + if(!rowKey.anyNull) { + val existingMatchList = hashTable.get(rowKey) + val matchList = if (existingMatchList == null) { + val newMatchList = new ArrayBuffer[Row]() + hashTable.put(rowKey, newMatchList) + newMatchList + } else { + existingMatchList + } + matchList += currentRow.copy() + } + } + + new Iterator[Row] { + private[this] var currentStreamedRow: Row = _ + private[this] var currentHashMatches: ArrayBuffer[Row] = _ + private[this] var currentMatchPosition: Int = -1 + + // Mutable per row objects. + private[this] val joinRow = new JoinedRow + + private[this] val joinKeys = streamSideKeyGenerator() + + override final def hasNext: Boolean = + (currentMatchPosition != -1 && currentMatchPosition < currentHashMatches.size) || + (streamIter.hasNext && fetchNext()) + + override final def next() = { + val ret = joinRow(currentStreamedRow, currentHashMatches(currentMatchPosition)) + currentMatchPosition += 1 + ret + } + + /** + * Searches the streamed iterator for the next row that has at least one match in hashtable. + * + * @return true if the search is successful, and false the streamed iterator runs out of + * tuples. + */ + private final def fetchNext(): Boolean = { + currentHashMatches = null + currentMatchPosition = -1 + + while (currentHashMatches == null && streamIter.hasNext) { + currentStreamedRow = streamIter.next() + if (!joinKeys(currentStreamedRow).anyNull) { + currentHashMatches = hashTable.get(joinKeys.currentValue) + } + } + + if (currentHashMatches == null) { + false + } else { + currentMatchPosition = 0 + true + } + } + } + } + } +} + +case class CartesianProduct(left: SparkPlan, right: SparkPlan) extends BinaryNode { + def output = left.output ++ right.output + + def execute() = left.execute().map(_.copy()).cartesian(right.execute().map(_.copy())).map { + case (l: Row, r: Row) => buildRow(l ++ r) + } +} + +case class BroadcastNestedLoopJoin( + streamed: SparkPlan, broadcast: SparkPlan, joinType: JoinType, condition: Option[Expression]) + (@transient sc: SparkContext) + extends BinaryNode { + // TODO: Override requiredChildDistribution. + + override def outputPartitioning: Partitioning = streamed.outputPartitioning + + override def otherCopyArgs = sc :: Nil + + def output = left.output ++ right.output + + /** The Streamed Relation */ + def left = streamed + /** The Broadcast relation */ + def right = broadcast + + @transient lazy val boundCondition = + InterpretedPredicate( + condition + .map(c => BindReferences.bindReference(c, left.output ++ right.output)) + .getOrElse(Literal(true))) + + + def execute() = { + val broadcastedRelation = sc.broadcast(broadcast.execute().map(_.copy()).collect().toIndexedSeq) + + val streamedPlusMatches = streamed.execute().mapPartitions { streamedIter => + val matchedRows = new ArrayBuffer[Row] + // TODO: Use Spark's BitSet. + val includedBroadcastTuples = new BitSet(broadcastedRelation.value.size) + val joinedRow = new JoinedRow + + streamedIter.foreach { streamedRow => + var i = 0 + var matched = false + + while (i < broadcastedRelation.value.size) { + // TODO: One bitset per partition instead of per row. + val broadcastedRow = broadcastedRelation.value(i) + if (boundCondition(joinedRow(streamedRow, broadcastedRow))) { + matchedRows += buildRow(streamedRow ++ broadcastedRow) + matched = true + includedBroadcastTuples += i + } + i += 1 + } + + if (!matched && (joinType == LeftOuter || joinType == FullOuter)) { + matchedRows += buildRow(streamedRow ++ Array.fill(right.output.size)(null)) + } + } + Iterator((matchedRows, includedBroadcastTuples)) + } + + val includedBroadcastTuples = streamedPlusMatches.map(_._2) + val allIncludedBroadcastTuples = + if (includedBroadcastTuples.count == 0) { + new scala.collection.mutable.BitSet(broadcastedRelation.value.size) + } else { + streamedPlusMatches.map(_._2).reduce(_ ++ _) + } + + val rightOuterMatches: Seq[Row] = + if (joinType == RightOuter || joinType == FullOuter) { + broadcastedRelation.value.zipWithIndex.filter { + case (row, i) => !allIncludedBroadcastTuples.contains(i) + }.map { + // TODO: Use projection. + case (row, _) => buildRow(Vector.fill(left.output.size)(null) ++ row) + } + } else { + Vector() + } + + // TODO: Breaks lineage. + sc.union( + streamedPlusMatches.flatMap(_._1), sc.makeRDD(rightOuterMatches)) + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/package.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/package.scala new file mode 100644 index 0000000000000..e4a2dec33231d --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/package.scala @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql + +/** + * An execution engine for relational query plans that runs on top Spark and returns RDDs. + * + * Note that the operators in this package are created automatically by a query planner using a + * [[SQLContext]] and are not intended to be used directly by end users of Spark SQL. They are + * documented here in order to make it easier for others to understand the performance + * characteristics of query plans that are generated by Spark SQL. + */ +package object execution diff --git a/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetRelation.scala b/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetRelation.scala new file mode 100644 index 0000000000000..4d7c86a3a4fc7 --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetRelation.scala @@ -0,0 +1,315 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.parquet + +import java.io.IOException + +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.fs.{FileSystem, Path} +import org.apache.hadoop.fs.permission.FsAction +import org.apache.hadoop.mapreduce.Job + +import parquet.hadoop.util.ContextUtil +import parquet.hadoop.{ParquetOutputFormat, Footer, ParquetFileWriter, ParquetFileReader} +import parquet.hadoop.metadata.{CompressionCodecName, FileMetaData, ParquetMetadata} +import parquet.io.api.{Binary, RecordConsumer} +import parquet.schema.{Type => ParquetType, PrimitiveType => ParquetPrimitiveType, MessageType, MessageTypeParser} +import parquet.schema.PrimitiveType.{PrimitiveTypeName => ParquetPrimitiveTypeName} +import parquet.schema.Type.Repetition + +import org.apache.spark.sql.catalyst.analysis.{MultiInstanceRelation, UnresolvedException} +import org.apache.spark.sql.catalyst.expressions.{Attribute, AttributeReference, Row} +import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, LeafNode} +import org.apache.spark.sql.catalyst.types._ + +// Implicits +import scala.collection.JavaConversions._ + +/** + * Relation that consists of data stored in a Parquet columnar format. + * + * Users should interact with parquet files though a SchemaRDD, created by a [[SQLContext]] instead + * of using this class directly. + * + * {{{ + * val parquetRDD = sqlContext.parquetFile("path/to/parquet.file") + * }}} + * + * @param path The path to the Parquet file. + */ +private[sql] case class ParquetRelation(val path: String) + extends LeafNode with MultiInstanceRelation { + self: Product => + + /** Schema derived from ParquetFile */ + def parquetSchema: MessageType = + ParquetTypesConverter + .readMetaData(new Path(path)) + .getFileMetaData + .getSchema + + /** Attributes */ + override val output = + ParquetTypesConverter + .convertToAttributes(parquetSchema) + + override def newInstance = ParquetRelation(path).asInstanceOf[this.type] + + // Equals must also take into account the output attributes so that we can distinguish between + // different instances of the same relation, + override def equals(other: Any) = other match { + case p: ParquetRelation => + p.path == path && p.output == output + case _ => false + } +} + +private[sql] object ParquetRelation { + + def enableLogForwarding() { + // Note: Logger.getLogger("parquet") has a default logger + // that appends to Console which needs to be cleared. + val parquetLogger = java.util.logging.Logger.getLogger("parquet") + parquetLogger.getHandlers.foreach(parquetLogger.removeHandler) + // TODO(witgo): Need to set the log level ? + // if(parquetLogger.getLevel != null) parquetLogger.setLevel(null) + if (!parquetLogger.getUseParentHandlers) parquetLogger.setUseParentHandlers(true) + } + + // The element type for the RDDs that this relation maps to. + type RowType = org.apache.spark.sql.catalyst.expressions.GenericMutableRow + + // The compression type + type CompressionType = parquet.hadoop.metadata.CompressionCodecName + + // The default compression + val defaultCompression = CompressionCodecName.GZIP + + /** + * Creates a new ParquetRelation and underlying Parquetfile for the given LogicalPlan. Note that + * this is used inside [[org.apache.spark.sql.execution.SparkStrategies SparkStrategies]] to + * create a resolved relation as a data sink for writing to a Parquetfile. The relation is empty + * but is initialized with ParquetMetadata and can be inserted into. + * + * @param pathString The directory the Parquetfile will be stored in. + * @param child The child node that will be used for extracting the schema. + * @param conf A configuration to be used. + * @return An empty ParquetRelation with inferred metadata. + */ + def create(pathString: String, + child: LogicalPlan, + conf: Configuration): ParquetRelation = { + if (!child.resolved) { + throw new UnresolvedException[LogicalPlan]( + child, + "Attempt to create Parquet table from unresolved child (when schema is not available)") + } + createEmpty(pathString, child.output, conf) + } + + /** + * Creates an empty ParquetRelation and underlying Parquetfile that only + * consists of the Metadata for the given schema. + * + * @param pathString The directory the Parquetfile will be stored in. + * @param attributes The schema of the relation. + * @param conf A configuration to be used. + * @return An empty ParquetRelation. + */ + def createEmpty(pathString: String, + attributes: Seq[Attribute], + conf: Configuration): ParquetRelation = { + val path = checkPath(pathString, conf) + if (conf.get(ParquetOutputFormat.COMPRESSION) == null) { + conf.set(ParquetOutputFormat.COMPRESSION, ParquetRelation.defaultCompression.name()) + } + ParquetRelation.enableLogForwarding() + ParquetTypesConverter.writeMetaData(attributes, path, conf) + new ParquetRelation(path.toString) + } + + private def checkPath(pathStr: String, conf: Configuration): Path = { + if (pathStr == null) { + throw new IllegalArgumentException("Unable to create ParquetRelation: path is null") + } + val origPath = new Path(pathStr) + val fs = origPath.getFileSystem(conf) + if (fs == null) { + throw new IllegalArgumentException( + s"Unable to create ParquetRelation: incorrectly formatted path $pathStr") + } + val path = origPath.makeQualified(fs) + if (fs.exists(path) && + !fs.getFileStatus(path) + .getPermission + .getUserAction + .implies(FsAction.READ_WRITE)) { + throw new IOException( + s"Unable to create ParquetRelation: path $path not read-writable") + } + path + } +} + +private[parquet] object ParquetTypesConverter { + def toDataType(parquetType : ParquetPrimitiveTypeName): DataType = parquetType match { + // for now map binary to string type + // TODO: figure out how Parquet uses strings or why we can't use them in a MessageType schema + case ParquetPrimitiveTypeName.BINARY => StringType + case ParquetPrimitiveTypeName.BOOLEAN => BooleanType + case ParquetPrimitiveTypeName.DOUBLE => DoubleType + case ParquetPrimitiveTypeName.FIXED_LEN_BYTE_ARRAY => ArrayType(ByteType) + case ParquetPrimitiveTypeName.FLOAT => FloatType + case ParquetPrimitiveTypeName.INT32 => IntegerType + case ParquetPrimitiveTypeName.INT64 => LongType + case ParquetPrimitiveTypeName.INT96 => + // TODO: add BigInteger type? TODO(andre) use DecimalType instead???? + sys.error("Warning: potential loss of precision: converting INT96 to long") + LongType + case _ => sys.error( + s"Unsupported parquet datatype $parquetType") + } + + def fromDataType(ctype: DataType): ParquetPrimitiveTypeName = ctype match { + case StringType => ParquetPrimitiveTypeName.BINARY + case BooleanType => ParquetPrimitiveTypeName.BOOLEAN + case DoubleType => ParquetPrimitiveTypeName.DOUBLE + case ArrayType(ByteType) => ParquetPrimitiveTypeName.FIXED_LEN_BYTE_ARRAY + case FloatType => ParquetPrimitiveTypeName.FLOAT + case IntegerType => ParquetPrimitiveTypeName.INT32 + case LongType => ParquetPrimitiveTypeName.INT64 + case _ => sys.error(s"Unsupported datatype $ctype") + } + + def consumeType(consumer: RecordConsumer, ctype: DataType, record: Row, index: Int): Unit = { + ctype match { + case StringType => consumer.addBinary( + Binary.fromByteArray( + record(index).asInstanceOf[String].getBytes("utf-8") + ) + ) + case IntegerType => consumer.addInteger(record.getInt(index)) + case LongType => consumer.addLong(record.getLong(index)) + case DoubleType => consumer.addDouble(record.getDouble(index)) + case FloatType => consumer.addFloat(record.getFloat(index)) + case BooleanType => consumer.addBoolean(record.getBoolean(index)) + case _ => sys.error(s"Unsupported datatype $ctype, cannot write to consumer") + } + } + + def getSchema(schemaString : String) : MessageType = + MessageTypeParser.parseMessageType(schemaString) + + def convertToAttributes(parquetSchema: MessageType) : Seq[Attribute] = { + parquetSchema.getColumns.map { + case (desc) => + val ctype = toDataType(desc.getType) + val name: String = desc.getPath.mkString(".") + new AttributeReference(name, ctype, false)() + } + } + + // TODO: allow nesting? + def convertFromAttributes(attributes: Seq[Attribute]): MessageType = { + val fields: Seq[ParquetType] = attributes.map { + a => new ParquetPrimitiveType(Repetition.OPTIONAL, fromDataType(a.dataType), a.name) + } + new MessageType("root", fields) + } + + def writeMetaData(attributes: Seq[Attribute], origPath: Path, conf: Configuration) { + if (origPath == null) { + throw new IllegalArgumentException("Unable to write Parquet metadata: path is null") + } + val fs = origPath.getFileSystem(conf) + if (fs == null) { + throw new IllegalArgumentException( + s"Unable to write Parquet metadata: path $origPath is incorrectly formatted") + } + val path = origPath.makeQualified(fs) + if (fs.exists(path) && !fs.getFileStatus(path).isDir) { + throw new IllegalArgumentException(s"Expected to write to directory $path but found file") + } + val metadataPath = new Path(path, ParquetFileWriter.PARQUET_METADATA_FILE) + if (fs.exists(metadataPath)) { + try { + fs.delete(metadataPath, true) + } catch { + case e: IOException => + throw new IOException(s"Unable to delete previous PARQUET_METADATA_FILE at $metadataPath") + } + } + val extraMetadata = new java.util.HashMap[String, String]() + extraMetadata.put("path", path.toString) + // TODO: add extra data, e.g., table name, date, etc.? + + val parquetSchema: MessageType = + ParquetTypesConverter.convertFromAttributes(attributes) + val metaData: FileMetaData = new FileMetaData( + parquetSchema, + extraMetadata, + "Spark") + + ParquetRelation.enableLogForwarding() + ParquetFileWriter.writeMetadataFile( + conf, + path, + new Footer(path, new ParquetMetadata(metaData, Nil)) :: Nil) + } + + /** + * Try to read Parquet metadata at the given Path. We first see if there is a summary file + * in the parent directory. If so, this is used. Else we read the actual footer at the given + * location. + * @param origPath The path at which we expect one (or more) Parquet files. + * @return The `ParquetMetadata` containing among other things the schema. + */ + def readMetaData(origPath: Path): ParquetMetadata = { + if (origPath == null) { + throw new IllegalArgumentException("Unable to read Parquet metadata: path is null") + } + val job = new Job() + // TODO: since this is called from ParquetRelation (LogicalPlan) we don't have access + // to SparkContext's hadoopConfig; in principle the default FileSystem may be different(?!) + val conf = ContextUtil.getConfiguration(job) + val fs: FileSystem = origPath.getFileSystem(conf) + if (fs == null) { + throw new IllegalArgumentException(s"Incorrectly formatted Parquet metadata path $origPath") + } + val path = origPath.makeQualified(fs) + if (!fs.getFileStatus(path).isDir) { + throw new IllegalArgumentException( + s"Expected $path for be a directory with Parquet files/metadata") + } + ParquetRelation.enableLogForwarding() + val metadataPath = new Path(path, ParquetFileWriter.PARQUET_METADATA_FILE) + // if this is a new table that was just created we will find only the metadata file + if (fs.exists(metadataPath) && fs.isFile(metadataPath)) { + ParquetFileReader.readFooter(conf, metadataPath) + } else { + // there may be one or more Parquet files in the given directory + val footers = ParquetFileReader.readFooters(conf, fs.getFileStatus(path)) + // TODO: for now we assume that all footers (if there is more than one) have identical + // metadata; we may want to add a check here at some point + if (footers.size() == 0) { + throw new IllegalArgumentException(s"Could not find Parquet metadata at path $path") + } + footers(0).getParquetMetadata + } + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTableOperations.scala b/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTableOperations.scala new file mode 100644 index 0000000000000..d5846baa72ada --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTableOperations.scala @@ -0,0 +1,297 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.parquet + +import java.io.IOException +import java.text.SimpleDateFormat +import java.util.Date + +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.fs.Path +import org.apache.hadoop.mapreduce._ +import org.apache.hadoop.mapreduce.lib.input.{FileInputFormat => NewFileInputFormat} +import org.apache.hadoop.mapreduce.lib.output.{FileOutputFormat => NewFileOutputFormat, FileOutputCommitter} + +import parquet.hadoop.{ParquetInputFormat, ParquetOutputFormat} +import parquet.hadoop.util.ContextUtil +import parquet.io.InvalidRecordException +import parquet.schema.MessageType + +import org.apache.spark.{SerializableWritable, SparkContext, TaskContext} +import org.apache.spark.rdd.RDD +import org.apache.spark.sql.catalyst.expressions.{Attribute, Expression, Row} +import org.apache.spark.sql.execution.{LeafNode, SparkPlan, UnaryNode} + +/** + * Parquet table scan operator. Imports the file that backs the given + * [[ParquetRelation]] as a RDD[Row]. + */ +case class ParquetTableScan( + // note: output cannot be transient, see + // https://issues.apache.org/jira/browse/SPARK-1367 + output: Seq[Attribute], + relation: ParquetRelation, + columnPruningPred: Option[Expression])( + @transient val sc: SparkContext) + extends LeafNode { + + override def execute(): RDD[Row] = { + val job = new Job(sc.hadoopConfiguration) + ParquetInputFormat.setReadSupportClass( + job, + classOf[org.apache.spark.sql.parquet.RowReadSupport]) + val conf: Configuration = ContextUtil.getConfiguration(job) + val fileList = FileSystemHelper.listFiles(relation.path, conf) + // add all paths in the directory but skip "hidden" ones such + // as "_SUCCESS" and "_metadata" + for (path <- fileList if !path.getName.startsWith("_")) { + NewFileInputFormat.addInputPath(job, path) + } + conf.set( + RowReadSupport.PARQUET_ROW_REQUESTED_SCHEMA, + ParquetTypesConverter.convertFromAttributes(output).toString) + // TODO: think about adding record filters + /* Comments regarding record filters: it would be nice to push down as much filtering + to Parquet as possible. However, currently it seems we cannot pass enough information + to materialize an (arbitrary) Catalyst [[Predicate]] inside Parquet's + ``FilteredRecordReader`` (via Configuration, for example). Simple + filter-rows-by-column-values however should be supported. + */ + sc.newAPIHadoopRDD(conf, classOf[ParquetInputFormat[Row]], classOf[Void], classOf[Row]) + .map(_._2) + } + + override def otherCopyArgs = sc :: Nil + + /** + * Applies a (candidate) projection. + * + * @param prunedAttributes The list of attributes to be used in the projection. + * @return Pruned TableScan. + */ + def pruneColumns(prunedAttributes: Seq[Attribute]): ParquetTableScan = { + val success = validateProjection(prunedAttributes) + if (success) { + ParquetTableScan(prunedAttributes, relation, columnPruningPred)(sc) + } else { + sys.error("Warning: Could not validate Parquet schema projection in pruneColumns") + this + } + } + + /** + * Evaluates a candidate projection by checking whether the candidate is a subtype + * of the original type. + * + * @param projection The candidate projection. + * @return True if the projection is valid, false otherwise. + */ + private def validateProjection(projection: Seq[Attribute]): Boolean = { + val original: MessageType = relation.parquetSchema + val candidate: MessageType = ParquetTypesConverter.convertFromAttributes(projection) + try { + original.checkContains(candidate) + true + } catch { + case e: InvalidRecordException => { + false + } + } + } +} + +/** + * Operator that acts as a sink for queries on RDDs and can be used to + * store the output inside a directory of Parquet files. This operator + * is similar to Hive's INSERT INTO TABLE operation in the sense that + * one can choose to either overwrite or append to a directory. Note + * that consecutive insertions to the same table must have compatible + * (source) schemas. + * + * WARNING: EXPERIMENTAL! InsertIntoParquetTable with overwrite=false may + * cause data corruption in the case that multiple users try to append to + * the same table simultaneously. Inserting into a table that was + * previously generated by other means (e.g., by creating an HDFS + * directory and importing Parquet files generated by other tools) may + * cause unpredicted behaviour and therefore results in a RuntimeException + * (only detected via filename pattern so will not catch all cases). + */ +case class InsertIntoParquetTable( + relation: ParquetRelation, + child: SparkPlan, + overwrite: Boolean = false)( + @transient val sc: SparkContext) + extends UnaryNode with SparkHadoopMapReduceUtil { + + /** + * Inserts all rows into the Parquet file. + */ + override def execute() = { + // TODO: currently we do not check whether the "schema"s are compatible + // That means if one first creates a table and then INSERTs data with + // and incompatible schema the execution will fail. It would be nice + // to catch this early one, maybe having the planner validate the schema + // before calling execute(). + + val childRdd = child.execute() + assert(childRdd != null) + + val job = new Job(sc.hadoopConfiguration) + + ParquetOutputFormat.setWriteSupportClass( + job, + classOf[org.apache.spark.sql.parquet.RowWriteSupport]) + + // TODO: move that to function in object + val conf = ContextUtil.getConfiguration(job) + conf.set(RowWriteSupport.PARQUET_ROW_SCHEMA, relation.parquetSchema.toString) + + val fspath = new Path(relation.path) + val fs = fspath.getFileSystem(conf) + + if (overwrite) { + try { + fs.delete(fspath, true) + } catch { + case e: IOException => + throw new IOException( + s"Unable to clear output directory ${fspath.toString} prior" + + s" to InsertIntoParquetTable:\n${e.toString}") + } + } + saveAsHadoopFile(childRdd, relation.path.toString, conf) + + // We return the child RDD to allow chaining (alternatively, one could return nothing). + childRdd + } + + override def output = child.output + + override def otherCopyArgs = sc :: Nil + + // based on ``saveAsNewAPIHadoopFile`` in [[PairRDDFunctions]] + // TODO: Maybe PairRDDFunctions should use Product2 instead of Tuple2? + // .. then we could use the default one and could use [[MutablePair]] + // instead of ``Tuple2`` + private def saveAsHadoopFile( + rdd: RDD[Row], + path: String, + conf: Configuration) { + val job = new Job(conf) + val keyType = classOf[Void] + job.setOutputKeyClass(keyType) + job.setOutputValueClass(classOf[Row]) + NewFileOutputFormat.setOutputPath(job, new Path(path)) + val wrappedConf = new SerializableWritable(job.getConfiguration) + val formatter = new SimpleDateFormat("yyyyMMddHHmm") + val jobtrackerID = formatter.format(new Date()) + val stageId = sc.newRddId() + + val taskIdOffset = + if (overwrite) 1 + else { + FileSystemHelper + .findMaxTaskId(NewFileOutputFormat.getOutputPath(job).toString, job.getConfiguration) + 1 + } + + def writeShard(context: TaskContext, iter: Iterator[Row]): Int = { + // Hadoop wants a 32-bit task attempt ID, so if ours is bigger than Int.MaxValue, roll it + // around by taking a mod. We expect that no task will be attempted 2 billion times. + val attemptNumber = (context.attemptId % Int.MaxValue).toInt + /* "reduce task" */ + val attemptId = newTaskAttemptID(jobtrackerID, stageId, isMap = false, context.partitionId, + attemptNumber) + val hadoopContext = newTaskAttemptContext(wrappedConf.value, attemptId) + val format = new AppendingParquetOutputFormat(taskIdOffset) + val committer = format.getOutputCommitter(hadoopContext) + committer.setupTask(hadoopContext) + val writer = format.getRecordWriter(hadoopContext) + while (iter.hasNext) { + val row = iter.next() + writer.write(null, row) + } + writer.close(hadoopContext) + committer.commitTask(hadoopContext) + return 1 + } + val jobFormat = new AppendingParquetOutputFormat(taskIdOffset) + /* apparently we need a TaskAttemptID to construct an OutputCommitter; + * however we're only going to use this local OutputCommitter for + * setupJob/commitJob, so we just use a dummy "map" task. + */ + val jobAttemptId = newTaskAttemptID(jobtrackerID, stageId, isMap = true, 0, 0) + val jobTaskContext = newTaskAttemptContext(wrappedConf.value, jobAttemptId) + val jobCommitter = jobFormat.getOutputCommitter(jobTaskContext) + jobCommitter.setupJob(jobTaskContext) + sc.runJob(rdd, writeShard _) + jobCommitter.commitJob(jobTaskContext) + } +} + +// TODO: this will be able to append to directories it created itself, not necessarily +// to imported ones +private[parquet] class AppendingParquetOutputFormat(offset: Int) + extends parquet.hadoop.ParquetOutputFormat[Row] { + // override to accept existing directories as valid output directory + override def checkOutputSpecs(job: JobContext): Unit = {} + + // override to choose output filename so not overwrite existing ones + override def getDefaultWorkFile(context: TaskAttemptContext, extension: String): Path = { + val taskId: TaskID = context.getTaskAttemptID.getTaskID + val partition: Int = taskId.getId + val filename = s"part-r-${partition + offset}.parquet" + val committer: FileOutputCommitter = + getOutputCommitter(context).asInstanceOf[FileOutputCommitter] + new Path(committer.getWorkPath, filename) + } +} + +private[parquet] object FileSystemHelper { + def listFiles(pathStr: String, conf: Configuration): Seq[Path] = { + val origPath = new Path(pathStr) + val fs = origPath.getFileSystem(conf) + if (fs == null) { + throw new IllegalArgumentException( + s"ParquetTableOperations: Path $origPath is incorrectly formatted") + } + val path = origPath.makeQualified(fs) + if (!fs.exists(path) || !fs.getFileStatus(path).isDir) { + throw new IllegalArgumentException( + s"ParquetTableOperations: path $path does not exist or is not a directory") + } + fs.listStatus(path).map(_.getPath) + } + + // finds the maximum taskid in the output file names at the given path + def findMaxTaskId(pathStr: String, conf: Configuration): Int = { + val files = FileSystemHelper.listFiles(pathStr, conf) + // filename pattern is part-r-.parquet + val nameP = new scala.util.matching.Regex("""part-r-(\d{1,}).parquet""", "taskid") + val hiddenFileP = new scala.util.matching.Regex("_.*") + files.map(_.getName).map { + case nameP(taskid) => taskid.toInt + case hiddenFileP() => 0 + case other: String => { + sys.error("ERROR: attempting to append to set of Parquet files and found file" + + s"that does not match name pattern: $other") + 0 + } + case _ => 0 + }.reduceLeft((a, b) => if (a < b) b else a) + } +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTableSupport.scala b/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTableSupport.scala new file mode 100644 index 0000000000000..84b1b4609458b --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTableSupport.scala @@ -0,0 +1,224 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.parquet + +import org.apache.hadoop.conf.Configuration + +import parquet.column.ParquetProperties +import parquet.hadoop.ParquetOutputFormat +import parquet.hadoop.api.ReadSupport.ReadContext +import parquet.hadoop.api.{ReadSupport, WriteSupport} +import parquet.io.api._ +import parquet.schema.{MessageType, MessageTypeParser} + +import org.apache.spark.Logging +import org.apache.spark.sql.catalyst.expressions.{Attribute, Row} +import org.apache.spark.sql.catalyst.types._ + +/** + * A `parquet.io.api.RecordMaterializer` for Rows. + * + *@param root The root group converter for the record. + */ +private[parquet] class RowRecordMaterializer(root: CatalystGroupConverter) + extends RecordMaterializer[Row] { + + def this(parquetSchema: MessageType) = + this(new CatalystGroupConverter(ParquetTypesConverter.convertToAttributes(parquetSchema))) + + override def getCurrentRecord: Row = root.getCurrentRecord + + override def getRootConverter: GroupConverter = root +} + +/** + * A `parquet.hadoop.api.ReadSupport` for Row objects. + */ +private[parquet] class RowReadSupport extends ReadSupport[Row] with Logging { + + override def prepareForRead( + conf: Configuration, + stringMap: java.util.Map[String, String], + fileSchema: MessageType, + readContext: ReadContext): RecordMaterializer[Row] = { + log.debug(s"preparing for read with file schema $fileSchema") + new RowRecordMaterializer(readContext.getRequestedSchema) + } + + override def init( + configuration: Configuration, + keyValueMetaData: java.util.Map[String, String], + fileSchema: MessageType): ReadContext = { + val requested_schema_string = + configuration.get(RowReadSupport.PARQUET_ROW_REQUESTED_SCHEMA, fileSchema.toString) + val requested_schema = + MessageTypeParser.parseMessageType(requested_schema_string) + log.debug(s"read support initialized for requested schema $requested_schema") + ParquetRelation.enableLogForwarding() + new ReadContext(requested_schema, keyValueMetaData) + } +} + +private[parquet] object RowReadSupport { + val PARQUET_ROW_REQUESTED_SCHEMA = "org.apache.spark.sql.parquet.row.requested_schema" +} + +/** + * A `parquet.hadoop.api.WriteSupport` for Row ojects. + */ +private[parquet] class RowWriteSupport extends WriteSupport[Row] with Logging { + def setSchema(schema: MessageType, configuration: Configuration) { + // for testing + this.schema = schema + // TODO: could use Attributes themselves instead of Parquet schema? + configuration.set( + RowWriteSupport.PARQUET_ROW_SCHEMA, + schema.toString) + configuration.set( + ParquetOutputFormat.WRITER_VERSION, + ParquetProperties.WriterVersion.PARQUET_1_0.toString) + } + + def getSchema(configuration: Configuration): MessageType = { + MessageTypeParser.parseMessageType(configuration.get(RowWriteSupport.PARQUET_ROW_SCHEMA)) + } + + private var schema: MessageType = null + private var writer: RecordConsumer = null + private var attributes: Seq[Attribute] = null + + override def init(configuration: Configuration): WriteSupport.WriteContext = { + schema = if (schema == null) getSchema(configuration) else schema + attributes = ParquetTypesConverter.convertToAttributes(schema) + log.debug(s"write support initialized for requested schema $schema") + ParquetRelation.enableLogForwarding() + new WriteSupport.WriteContext( + schema, + new java.util.HashMap[java.lang.String, java.lang.String]()) + } + + override def prepareForWrite(recordConsumer: RecordConsumer): Unit = { + writer = recordConsumer + log.debug(s"preparing for write with schema $schema") + } + + // TODO: add groups (nested fields) + override def write(record: Row): Unit = { + if (attributes.size > record.size) { + throw new IndexOutOfBoundsException( + s"Trying to write more fields than contained in row (${attributes.size}>${record.size})") + } + + var index = 0 + writer.startMessage() + while(index < attributes.size) { + // null values indicate optional fields but we do not check currently + if (record(index) != null && record(index) != Nil) { + writer.startField(attributes(index).name, index) + ParquetTypesConverter.consumeType(writer, attributes(index).dataType, record, index) + writer.endField(attributes(index).name, index) + } + index = index + 1 + } + writer.endMessage() + } +} + +private[parquet] object RowWriteSupport { + val PARQUET_ROW_SCHEMA: String = "org.apache.spark.sql.parquet.row.schema" +} + +/** + * A `parquet.io.api.GroupConverter` that is able to convert a Parquet record to a `Row` object. + * + * @param schema The corresponding Catalyst schema in the form of a list of attributes. + */ +private[parquet] class CatalystGroupConverter( + schema: Seq[Attribute], + protected[parquet] val current: ParquetRelation.RowType) extends GroupConverter { + + def this(schema: Seq[Attribute]) = this(schema, new ParquetRelation.RowType(schema.length)) + + val converters: Array[Converter] = schema.map { + a => a.dataType match { + case ctype: NativeType => + // note: for some reason matching for StringType fails so use this ugly if instead + if (ctype == StringType) new CatalystPrimitiveStringConverter(this, schema.indexOf(a)) + else new CatalystPrimitiveConverter(this, schema.indexOf(a)) + case _ => throw new RuntimeException( + s"unable to convert datatype ${a.dataType.toString} in CatalystGroupConverter") + } + }.toArray + + override def getConverter(fieldIndex: Int): Converter = converters(fieldIndex) + + private[parquet] def getCurrentRecord: ParquetRelation.RowType = current + + override def start(): Unit = { + var i = 0 + while (i < schema.length) { + current.setNullAt(i) + i = i + 1 + } + } + + override def end(): Unit = {} +} + +/** + * A `parquet.io.api.PrimitiveConverter` that converts Parquet types to Catalyst types. + * + * @param parent The parent group converter. + * @param fieldIndex The index inside the record. + */ +private[parquet] class CatalystPrimitiveConverter( + parent: CatalystGroupConverter, + fieldIndex: Int) extends PrimitiveConverter { + // TODO: consider refactoring these together with ParquetTypesConverter + override def addBinary(value: Binary): Unit = + parent.getCurrentRecord.update(fieldIndex, value.getBytes) + + override def addBoolean(value: Boolean): Unit = + parent.getCurrentRecord.setBoolean(fieldIndex, value) + + override def addDouble(value: Double): Unit = + parent.getCurrentRecord.setDouble(fieldIndex, value) + + override def addFloat(value: Float): Unit = + parent.getCurrentRecord.setFloat(fieldIndex, value) + + override def addInt(value: Int): Unit = + parent.getCurrentRecord.setInt(fieldIndex, value) + + override def addLong(value: Long): Unit = + parent.getCurrentRecord.setLong(fieldIndex, value) +} + +/** + * A `parquet.io.api.PrimitiveConverter` that converts Parquet strings (fixed-length byte arrays) + * into Catalyst Strings. + * + * @param parent The parent group converter. + * @param fieldIndex The index inside the record. + */ +private[parquet] class CatalystPrimitiveStringConverter( + parent: CatalystGroupConverter, + fieldIndex: Int) extends CatalystPrimitiveConverter(parent, fieldIndex) { + override def addBinary(value: Binary): Unit = + parent.getCurrentRecord.setString(fieldIndex, value.toStringUsingUTF8) +} diff --git a/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTestData.scala b/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTestData.scala new file mode 100644 index 0000000000000..728e3dd1dc02b --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTestData.scala @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.parquet + +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.fs.Path +import org.apache.hadoop.mapreduce.Job + +import parquet.hadoop.ParquetWriter +import parquet.hadoop.util.ContextUtil +import parquet.schema.{MessageType, MessageTypeParser} + +import org.apache.spark.sql.catalyst.expressions.GenericRow +import org.apache.spark.util.Utils + +object ParquetTestData { + + val testSchema = + """message myrecord { + |optional boolean myboolean; + |optional int32 myint; + |optional binary mystring; + |optional int64 mylong; + |optional float myfloat; + |optional double mydouble; + |}""".stripMargin + + // field names for test assertion error messages + val testSchemaFieldNames = Seq( + "myboolean:Boolean", + "mtint:Int", + "mystring:String", + "mylong:Long", + "myfloat:Float", + "mydouble:Double" + ) + + val subTestSchema = + """ + |message myrecord { + |optional boolean myboolean; + |optional int64 mylong; + |} + """.stripMargin + + // field names for test assertion error messages + val subTestSchemaFieldNames = Seq( + "myboolean:Boolean", + "mylong:Long" + ) + + val testDir = Utils.createTempDir() + + lazy val testData = new ParquetRelation(testDir.toURI.toString) + + def writeFile() = { + testDir.delete + val path: Path = new Path(new Path(testDir.toURI), new Path("part-r-0.parquet")) + val job = new Job() + val configuration: Configuration = ContextUtil.getConfiguration(job) + val schema: MessageType = MessageTypeParser.parseMessageType(testSchema) + + val writeSupport = new RowWriteSupport() + writeSupport.setSchema(schema, configuration) + val writer = new ParquetWriter(path, writeSupport) + for(i <- 0 until 15) { + val data = new Array[Any](6) + if (i % 3 == 0) { + data.update(0, true) + } else { + data.update(0, false) + } + if (i % 5 == 0) { + data.update(1, 5) + } else { + data.update(1, null) // optional + } + data.update(2, "abc") + data.update(3, i.toLong << 33) + data.update(4, 2.5F) + data.update(5, 4.5D) + writer.write(new GenericRow(data.toArray)) + } + writer.close() + } +} + diff --git a/sql/core/src/main/scala/org/apache/spark/sql/test/TestSQLContext.scala b/sql/core/src/main/scala/org/apache/spark/sql/test/TestSQLContext.scala new file mode 100644 index 0000000000000..f2389f8f0591e --- /dev/null +++ b/sql/core/src/main/scala/org/apache/spark/sql/test/TestSQLContext.scala @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.test + +import org.apache.spark.{SparkConf, SparkContext} +import org.apache.spark.sql.SQLContext + +/** A SQLContext that can be used for local testing. */ +object TestSQLContext + extends SQLContext(new SparkContext("local", "TestSQLContext", new SparkConf())) diff --git a/sql/core/src/test/resources/log4j.properties b/sql/core/src/test/resources/log4j.properties new file mode 100644 index 0000000000000..dffd15a61838b --- /dev/null +++ b/sql/core/src/test/resources/log4j.properties @@ -0,0 +1,50 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Set everything to be logged to the file core/target/unit-tests.log +log4j.rootLogger=DEBUG, CA, FA + +#Console Appender +log4j.appender.CA=org.apache.log4j.ConsoleAppender +log4j.appender.CA.layout=org.apache.log4j.PatternLayout +log4j.appender.CA.layout.ConversionPattern=%d{HH:mm:ss.SSS} %p %c: %m%n +log4j.appender.CA.Threshold = WARN + + +#File Appender +log4j.appender.FA=org.apache.log4j.FileAppender +log4j.appender.FA.append=false +log4j.appender.FA.file=target/unit-tests.log +log4j.appender.FA.layout=org.apache.log4j.PatternLayout +log4j.appender.FA.layout.ConversionPattern=%d{HH:mm:ss.SSS} %p %c{1}: %m%n + +# Set the logger level of File Appender to WARN +log4j.appender.FA.Threshold = INFO + +# Some packages are noisy for no good reason. +log4j.additivity.org.apache.hadoop.hive.serde2.lazy.LazyStruct=false +log4j.logger.org.apache.hadoop.hive.serde2.lazy.LazyStruct=OFF + +log4j.additivity.org.apache.hadoop.hive.metastore.RetryingHMSHandler=false +log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=OFF + +log4j.additivity.hive.ql.metadata.Hive=false +log4j.logger.hive.ql.metadata.Hive=OFF + +# Parquet related logging +log4j.logger.parquet.hadoop=WARN +log4j.logger.org.apache.spark.sql.parquet=INFO diff --git a/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala new file mode 100644 index 0000000000000..7c6a642278226 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala @@ -0,0 +1,74 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql + +import org.scalatest.FunSuite +import org.apache.spark.sql.TestData._ +import org.apache.spark.sql.test.TestSQLContext +import org.apache.spark.sql.execution.SparkLogicalPlan +import org.apache.spark.sql.columnar.InMemoryColumnarTableScan + +class CachedTableSuite extends QueryTest { + TestData // Load test tables. + + test("read from cached table and uncache") { + TestSQLContext.cacheTable("testData") + + checkAnswer( + TestSQLContext.table("testData"), + testData.collect().toSeq + ) + + TestSQLContext.table("testData").queryExecution.analyzed match { + case SparkLogicalPlan(_ : InMemoryColumnarTableScan) => // Found evidence of caching + case noCache => fail(s"No cache node found in plan $noCache") + } + + TestSQLContext.uncacheTable("testData") + + checkAnswer( + TestSQLContext.table("testData"), + testData.collect().toSeq + ) + + TestSQLContext.table("testData").queryExecution.analyzed match { + case cachePlan @ SparkLogicalPlan(_ : InMemoryColumnarTableScan) => + fail(s"Table still cached after uncache: $cachePlan") + case noCache => // Table uncached successfully + } + } + + test("correct error on uncache of non-cached table") { + intercept[IllegalArgumentException] { + TestSQLContext.uncacheTable("testData") + } + } + + test("SELECT Star Cached Table") { + TestSQLContext.sql("SELECT * FROM testData").registerAsTable("selectStar") + TestSQLContext.cacheTable("selectStar") + TestSQLContext.sql("SELECT * FROM selectStar") + TestSQLContext.uncacheTable("selectStar") + } + + test("Self-join cached") { + TestSQLContext.cacheTable("testData") + TestSQLContext.sql("SELECT * FROM testData a JOIN testData b ON a.key = b.key") + TestSQLContext.uncacheTable("testData") + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala new file mode 100644 index 0000000000000..be0f4a4c73b36 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql + +import org.apache.spark.sql.catalyst.analysis._ +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans._ +import org.apache.spark.sql.test._ + +/* Implicits */ +import TestSQLContext._ + +class DslQuerySuite extends QueryTest { + import TestData._ + + test("table scan") { + checkAnswer( + testData, + testData.collect().toSeq) + } + + test("agg") { + checkAnswer( + testData2.groupBy('a)('a, Sum('b)), + Seq((1,3),(2,3),(3,3)) + ) + } + + test("select *") { + checkAnswer( + testData.select(Star(None)), + testData.collect().toSeq) + } + + test("simple select") { + checkAnswer( + testData.where('key === 1).select('value), + Seq(Seq("1"))) + } + + test("sorting") { + checkAnswer( + testData2.orderBy('a.asc, 'b.asc), + Seq((1,1), (1,2), (2,1), (2,2), (3,1), (3,2))) + + checkAnswer( + testData2.orderBy('a.asc, 'b.desc), + Seq((1,2), (1,1), (2,2), (2,1), (3,2), (3,1))) + + checkAnswer( + testData2.orderBy('a.desc, 'b.desc), + Seq((3,2), (3,1), (2,2), (2,1), (1,2), (1,1))) + + checkAnswer( + testData2.orderBy('a.desc, 'b.asc), + Seq((3,1), (3,2), (2,1), (2,2), (1,1), (1,2))) + } + + test("average") { + checkAnswer( + testData2.groupBy()(Average('a)), + 2.0) + } + + test("count") { + checkAnswer( + testData2.groupBy()(Count(1)), + testData2.count() + ) + } + + test("null count") { + checkAnswer( + testData3.groupBy('a)('a, Count('b)), + Seq((1,0), (2, 1)) + ) + + checkAnswer( + testData3.groupBy()(Count('a), Count('b), Count(1), CountDistinct('a :: Nil), CountDistinct('b :: Nil)), + (2, 1, 2, 2, 1) :: Nil + ) + } + + test("inner join where, one match per row") { + checkAnswer( + upperCaseData.join(lowerCaseData, Inner).where('n === 'N), + Seq( + (1, "A", 1, "a"), + (2, "B", 2, "b"), + (3, "C", 3, "c"), + (4, "D", 4, "d") + )) + } + + test("inner join ON, one match per row") { + checkAnswer( + upperCaseData.join(lowerCaseData, Inner, Some('n === 'N)), + Seq( + (1, "A", 1, "a"), + (2, "B", 2, "b"), + (3, "C", 3, "c"), + (4, "D", 4, "d") + )) + } + + test("inner join, where, multiple matches") { + val x = testData2.where('a === 1).as('x) + val y = testData2.where('a === 1).as('y) + checkAnswer( + x.join(y).where("x.a".attr === "y.a".attr), + (1,1,1,1) :: + (1,1,1,2) :: + (1,2,1,1) :: + (1,2,1,2) :: Nil + ) + } + + test("inner join, no matches") { + val x = testData2.where('a === 1).as('x) + val y = testData2.where('a === 2).as('y) + checkAnswer( + x.join(y).where("x.a".attr === "y.a".attr), + Nil) + } + + test("big inner join, 4 matches per row") { + val bigData = testData.unionAll(testData).unionAll(testData).unionAll(testData) + val bigDataX = bigData.as('x) + val bigDataY = bigData.as('y) + + checkAnswer( + bigDataX.join(bigDataY).where("x.key".attr === "y.key".attr), + testData.flatMap( + row => Seq.fill(16)((row ++ row).toSeq)).collect().toSeq) + } + + test("cartisian product join") { + checkAnswer( + testData3.join(testData3), + (1, null, 1, null) :: + (1, null, 2, 2) :: + (2, 2, 1, null) :: + (2, 2, 2, 2) :: Nil) + } + + test("left outer join") { + checkAnswer( + upperCaseData.join(lowerCaseData, LeftOuter, Some('n === 'N)), + (1, "A", 1, "a") :: + (2, "B", 2, "b") :: + (3, "C", 3, "c") :: + (4, "D", 4, "d") :: + (5, "E", null, null) :: + (6, "F", null, null) :: Nil) + } + + test("right outer join") { + checkAnswer( + lowerCaseData.join(upperCaseData, RightOuter, Some('n === 'N)), + (1, "a", 1, "A") :: + (2, "b", 2, "B") :: + (3, "c", 3, "C") :: + (4, "d", 4, "D") :: + (null, null, 5, "E") :: + (null, null, 6, "F") :: Nil) + } + + test("full outer join") { + val left = upperCaseData.where('N <= 4).as('left) + val right = upperCaseData.where('N >= 3).as('right) + + checkAnswer( + left.join(right, FullOuter, Some("left.N".attr === "right.N".attr)), + (1, "A", null, null) :: + (2, "B", null, null) :: + (3, "C", 3, "C") :: + (4, "D", 4, "D") :: + (null, null, 5, "E") :: + (null, null, 6, "F") :: Nil) + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/QueryTest.scala b/sql/core/src/test/scala/org/apache/spark/sql/QueryTest.scala new file mode 100644 index 0000000000000..d719ceb827691 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/QueryTest.scala @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.plans._ +import org.apache.spark.sql.catalyst.util._ + +class QueryTest extends FunSuite { + /** + * Runs the plan and makes sure the answer matches the expected result. + * @param rdd the [[SchemaRDD]] to be executed + * @param expectedAnswer the expected result, can either be an Any, Seq[Product], or Seq[ Seq[Any] ]. + */ + protected def checkAnswer(rdd: SchemaRDD, expectedAnswer: Any): Unit = { + val convertedAnswer = expectedAnswer match { + case s: Seq[_] if s.isEmpty => s + case s: Seq[_] if s.head.isInstanceOf[Product] && + !s.head.isInstanceOf[Seq[_]] => s.map(_.asInstanceOf[Product].productIterator.toIndexedSeq) + case s: Seq[_] => s + case singleItem => Seq(Seq(singleItem)) + } + + val isSorted = rdd.logicalPlan.collect { case s: logical.Sort => s}.nonEmpty + def prepareAnswer(answer: Seq[Any]) = if (!isSorted) answer.sortBy(_.toString) else answer + val sparkAnswer = try rdd.collect().toSeq catch { + case e: Exception => + fail( + s""" + |Exception thrown while executing query: + |${rdd.logicalPlan} + |== Exception == + |$e + """.stripMargin) + } + if(prepareAnswer(convertedAnswer) != prepareAnswer(sparkAnswer)) { + fail(s""" + |Results do not match for query: + |${rdd.logicalPlan} + |== Analyzed Plan == + |${rdd.queryExecution.analyzed} + |== RDD == + |$rdd + |== Results == + |${sideBySide( + prepareAnswer(convertedAnswer).map(_.toString), + prepareAnswer(sparkAnswer).map(_.toString)).mkString("\n")} + """.stripMargin) + } + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala new file mode 100644 index 0000000000000..4c4fd6dbbedb4 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala @@ -0,0 +1,246 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.test._ + +/* Implicits */ +import TestSQLContext._ +import TestData._ + +class SQLQuerySuite extends QueryTest { + // Make sure the tables are loaded. + TestData + + test("agg") { + checkAnswer( + sql("SELECT a, SUM(b) FROM testData2 GROUP BY a"), + Seq((1,3),(2,3),(3,3))) + } + + test("select *") { + checkAnswer( + sql("SELECT * FROM testData"), + testData.collect().toSeq) + } + + test("simple select") { + checkAnswer( + sql("SELECT value FROM testData WHERE key = 1"), + Seq(Seq("1"))) + } + + test("sorting") { + checkAnswer( + sql("SELECT * FROM testData2 ORDER BY a ASC, b ASC"), + Seq((1,1), (1,2), (2,1), (2,2), (3,1), (3,2))) + + checkAnswer( + sql("SELECT * FROM testData2 ORDER BY a ASC, b DESC"), + Seq((1,2), (1,1), (2,2), (2,1), (3,2), (3,1))) + + checkAnswer( + sql("SELECT * FROM testData2 ORDER BY a DESC, b DESC"), + Seq((3,2), (3,1), (2,2), (2,1), (1,2), (1,1))) + + checkAnswer( + sql("SELECT * FROM testData2 ORDER BY a DESC, b ASC"), + Seq((3,1), (3,2), (2,1), (2,2), (1,1), (1,2))) + } + + test("average") { + checkAnswer( + sql("SELECT AVG(a) FROM testData2"), + 2.0) + } + + test("count") { + checkAnswer( + sql("SELECT COUNT(*) FROM testData2"), + testData2.count() + ) + } + + // No support for primitive nulls yet. + ignore("null count") { + checkAnswer( + sql("SELECT a, COUNT(b) FROM testData3"), + Seq((1,0), (2, 1))) + + checkAnswer( + testData3.groupBy()(Count('a), Count('b), Count(1), CountDistinct('a :: Nil), CountDistinct('b :: Nil)), + (2, 1, 2, 2, 1) :: Nil) + } + + test("inner join where, one match per row") { + checkAnswer( + sql("SELECT * FROM upperCaseData JOIN lowerCaseData WHERE n = N"), + Seq( + (1, "A", 1, "a"), + (2, "B", 2, "b"), + (3, "C", 3, "c"), + (4, "D", 4, "d"))) + } + + test("inner join ON, one match per row") { + checkAnswer( + sql("SELECT * FROM upperCaseData JOIN lowerCaseData ON n = N"), + Seq( + (1, "A", 1, "a"), + (2, "B", 2, "b"), + (3, "C", 3, "c"), + (4, "D", 4, "d"))) + } + + test("inner join, where, multiple matches") { + checkAnswer( + sql(""" + |SELECT * FROM + | (SELECT * FROM testData2 WHERE a = 1) x JOIN + | (SELECT * FROM testData2 WHERE a = 1) y + |WHERE x.a = y.a""".stripMargin), + (1,1,1,1) :: + (1,1,1,2) :: + (1,2,1,1) :: + (1,2,1,2) :: Nil) + } + + test("inner join, no matches") { + checkAnswer( + sql( + """ + |SELECT * FROM + | (SELECT * FROM testData2 WHERE a = 1) x JOIN + | (SELECT * FROM testData2 WHERE a = 2) y + |WHERE x.a = y.a""".stripMargin), + Nil) + } + + test("big inner join, 4 matches per row") { + + + checkAnswer( + sql( + """ + |SELECT * FROM + | (SELECT * FROM testData UNION ALL + | SELECT * FROM testData UNION ALL + | SELECT * FROM testData UNION ALL + | SELECT * FROM testData) x JOIN + | (SELECT * FROM testData UNION ALL + | SELECT * FROM testData UNION ALL + | SELECT * FROM testData UNION ALL + | SELECT * FROM testData) y + |WHERE x.key = y.key""".stripMargin), + testData.flatMap( + row => Seq.fill(16)((row ++ row).toSeq)).collect().toSeq) + } + + ignore("cartesian product join") { + checkAnswer( + testData3.join(testData3), + (1, null, 1, null) :: + (1, null, 2, 2) :: + (2, 2, 1, null) :: + (2, 2, 2, 2) :: Nil) + } + + test("left outer join") { + checkAnswer( + sql("SELECT * FROM upperCaseData LEFT OUTER JOIN lowerCaseData ON n = N"), + (1, "A", 1, "a") :: + (2, "B", 2, "b") :: + (3, "C", 3, "c") :: + (4, "D", 4, "d") :: + (5, "E", null, null) :: + (6, "F", null, null) :: Nil) + } + + test("right outer join") { + checkAnswer( + sql("SELECT * FROM lowerCaseData RIGHT OUTER JOIN upperCaseData ON n = N"), + (1, "a", 1, "A") :: + (2, "b", 2, "B") :: + (3, "c", 3, "C") :: + (4, "d", 4, "D") :: + (null, null, 5, "E") :: + (null, null, 6, "F") :: Nil) + } + + test("full outer join") { + checkAnswer( + sql( + """ + |SELECT * FROM + | (SELECT * FROM upperCaseData WHERE N <= 4) leftTable FULL OUTER JOIN + | (SELECT * FROM upperCaseData WHERE N >= 3) rightTable + | ON leftTable.N = rightTable.N + """.stripMargin), + (1, "A", null, null) :: + (2, "B", null, null) :: + (3, "C", 3, "C") :: + (4, "D", 4, "D") :: + (null, null, 5, "E") :: + (null, null, 6, "F") :: Nil) + } + + test("mixed-case keywords") { + checkAnswer( + sql( + """ + |SeleCT * from + | (select * from upperCaseData WherE N <= 4) leftTable fuLL OUtER joiN + | (sElEcT * FROM upperCaseData whERe N >= 3) rightTable + | oN leftTable.N = rightTable.N + """.stripMargin), + (1, "A", null, null) :: + (2, "B", null, null) :: + (3, "C", 3, "C") :: + (4, "D", 4, "D") :: + (null, null, 5, "E") :: + (null, null, 6, "F") :: Nil) + } + + test("select with table name as qualifier") { + checkAnswer( + sql("SELECT testData.value FROM testData WHERE testData.key = 1"), + Seq(Seq("1"))) + } + + test("inner join ON with table name as qualifier") { + checkAnswer( + sql("SELECT * FROM upperCaseData JOIN lowerCaseData ON lowerCaseData.n = upperCaseData.N"), + Seq( + (1, "A", 1, "a"), + (2, "B", 2, "b"), + (3, "C", 3, "c"), + (4, "D", 4, "d"))) + } + + test("qualified select with inner join ON with table name as qualifier") { + checkAnswer( + sql("SELECT upperCaseData.N, upperCaseData.L FROM upperCaseData JOIN lowerCaseData " + + "ON lowerCaseData.n = upperCaseData.N"), + Seq( + (1, "A"), + (2, "B"), + (3, "C"), + (4, "D"))) + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/ScalaReflectionRelationSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/ScalaReflectionRelationSuite.scala new file mode 100644 index 0000000000000..65eae3357a21e --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/ScalaReflectionRelationSuite.scala @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql + +import java.sql.Timestamp + +import org.scalatest.FunSuite + +import org.apache.spark.sql.test.TestSQLContext._ + +case class ReflectData( + stringField: String, + intField: Int, + longField: Long, + floatField: Float, + doubleField: Double, + shortField: Short, + byteField: Byte, + booleanField: Boolean, + decimalField: BigDecimal, + timestampField: Timestamp, + seqInt: Seq[Int]) + +case class ReflectBinary(data: Array[Byte]) + +class ScalaReflectionRelationSuite extends FunSuite { + test("query case class RDD") { + val data = ReflectData("a", 1, 1L, 1.toFloat, 1.toDouble, 1.toShort, 1.toByte, true, + BigDecimal(1), new Timestamp(12345), Seq(1,2,3)) + val rdd = sparkContext.parallelize(data :: Nil) + rdd.registerAsTable("reflectData") + + assert(sql("SELECT * FROM reflectData").collect().head === data.productIterator.toSeq) + } + + // Equality is broken for Arrays, so we test that separately. + test("query binary data") { + val rdd = sparkContext.parallelize(ReflectBinary(Array[Byte](1)) :: Nil) + rdd.registerAsTable("reflectBinary") + + val result = sql("SELECT data FROM reflectBinary").collect().head(0).asInstanceOf[Array[Byte]] + assert(result.toSeq === Seq[Byte](1)) + } +} \ No newline at end of file diff --git a/sql/core/src/test/scala/org/apache/spark/sql/TestData.scala b/sql/core/src/test/scala/org/apache/spark/sql/TestData.scala new file mode 100644 index 0000000000000..0bb13cf442b59 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/TestData.scala @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql + +import org.apache.spark.sql.catalyst.plans.logical +import org.apache.spark.sql.test._ + +/* Implicits */ +import TestSQLContext._ + +object TestData { + case class TestData(key: Int, value: String) + val testData: SchemaRDD = TestSQLContext.sparkContext.parallelize( + (1 to 100).map(i => TestData(i, i.toString))) + testData.registerAsTable("testData") + + case class TestData2(a: Int, b: Int) + val testData2: SchemaRDD = + TestSQLContext.sparkContext.parallelize( + TestData2(1, 1) :: + TestData2(1, 2) :: + TestData2(2, 1) :: + TestData2(2, 2) :: + TestData2(3, 1) :: + TestData2(3, 2) :: Nil) + testData2.registerAsTable("testData2") + + // TODO: There is no way to express null primitives as case classes currently... + val testData3 = + logical.LocalRelation('a.int, 'b.int).loadData( + (1, null) :: + (2, 2) :: Nil) + + case class UpperCaseData(N: Int, L: String) + val upperCaseData = + TestSQLContext.sparkContext.parallelize( + UpperCaseData(1, "A") :: + UpperCaseData(2, "B") :: + UpperCaseData(3, "C") :: + UpperCaseData(4, "D") :: + UpperCaseData(5, "E") :: + UpperCaseData(6, "F") :: Nil) + upperCaseData.registerAsTable("upperCaseData") + + case class LowerCaseData(n: Int, l: String) + val lowerCaseData = + TestSQLContext.sparkContext.parallelize( + LowerCaseData(1, "a") :: + LowerCaseData(2, "b") :: + LowerCaseData(3, "c") :: + LowerCaseData(4, "d") :: Nil) + lowerCaseData.registerAsTable("lowerCaseData") +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/api/java/JavaSQLSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/api/java/JavaSQLSuite.scala new file mode 100644 index 0000000000000..def0e046a3831 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/api/java/JavaSQLSuite.scala @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.api.java + +import scala.beans.BeanProperty + +import org.scalatest.FunSuite + +import org.apache.spark.api.java.JavaSparkContext +import org.apache.spark.sql.test.TestSQLContext + +// Implicits +import scala.collection.JavaConversions._ + +class PersonBean extends Serializable { + @BeanProperty + var name: String = _ + + @BeanProperty + var age: Int = _ +} + +class JavaSQLSuite extends FunSuite { + val javaCtx = new JavaSparkContext(TestSQLContext.sparkContext) + val javaSqlCtx = new JavaSQLContext(javaCtx) + + test("schema from JavaBeans") { + val person = new PersonBean + person.setName("Michael") + person.setAge(29) + + val rdd = javaCtx.parallelize(person :: Nil) + val schemaRDD = javaSqlCtx.applySchema(rdd, classOf[PersonBean]) + + schemaRDD.registerAsTable("people") + javaSqlCtx.sql("SELECT * FROM people").collect() + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnStatsSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnStatsSuite.scala new file mode 100644 index 0000000000000..78640b876d4aa --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnStatsSuite.scala @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.types._ + +class ColumnStatsSuite extends FunSuite { + testColumnStats(classOf[BooleanColumnStats], BOOLEAN) + testColumnStats(classOf[ByteColumnStats], BYTE) + testColumnStats(classOf[ShortColumnStats], SHORT) + testColumnStats(classOf[IntColumnStats], INT) + testColumnStats(classOf[LongColumnStats], LONG) + testColumnStats(classOf[FloatColumnStats], FLOAT) + testColumnStats(classOf[DoubleColumnStats], DOUBLE) + testColumnStats(classOf[StringColumnStats], STRING) + + def testColumnStats[T <: NativeType, U <: NativeColumnStats[T]]( + columnStatsClass: Class[U], + columnType: NativeColumnType[T]) { + + val columnStatsName = columnStatsClass.getSimpleName + + test(s"$columnStatsName: empty") { + val columnStats = columnStatsClass.newInstance() + expectResult(columnStats.initialBounds, "Wrong initial bounds") { + (columnStats.lowerBound, columnStats.upperBound) + } + } + + test(s"$columnStatsName: non-empty") { + import ColumnarTestUtils._ + + val columnStats = columnStatsClass.newInstance() + val rows = Seq.fill(10)(makeRandomRow(columnType)) + rows.foreach(columnStats.gatherStats(_, 0)) + + val values = rows.map(_.head.asInstanceOf[T#JvmType]) + val ordering = columnType.dataType.ordering.asInstanceOf[Ordering[T#JvmType]] + + expectResult(values.min(ordering), "Wrong lower bound")(columnStats.lowerBound) + expectResult(values.max(ordering), "Wrong upper bound")(columnStats.upperBound) + } + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnTypeSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnTypeSuite.scala new file mode 100644 index 0000000000000..1d3608ed2d9ab --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnTypeSuite.scala @@ -0,0 +1,182 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import java.nio.ByteBuffer + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.columnar.ColumnarTestUtils._ +import org.apache.spark.sql.execution.SparkSqlSerializer + +class ColumnTypeSuite extends FunSuite { + val DEFAULT_BUFFER_SIZE = 512 + + test("defaultSize") { + val checks = Map( + INT -> 4, SHORT -> 2, LONG -> 8, BYTE -> 1, DOUBLE -> 8, FLOAT -> 4, + BOOLEAN -> 1, STRING -> 8, BINARY -> 16, GENERIC -> 16) + + checks.foreach { case (columnType, expectedSize) => + expectResult(expectedSize, s"Wrong defaultSize for $columnType") { + columnType.defaultSize + } + } + } + + test("actualSize") { + def checkActualSize[T <: DataType, JvmType]( + columnType: ColumnType[T, JvmType], + value: JvmType, + expected: Int) { + + expectResult(expected, s"Wrong actualSize for $columnType") { + columnType.actualSize(value) + } + } + + checkActualSize(INT, Int.MaxValue, 4) + checkActualSize(SHORT, Short.MaxValue, 2) + checkActualSize(LONG, Long.MaxValue, 8) + checkActualSize(BYTE, Byte.MaxValue, 1) + checkActualSize(DOUBLE, Double.MaxValue, 8) + checkActualSize(FLOAT, Float.MaxValue, 4) + checkActualSize(BOOLEAN, true, 1) + checkActualSize(STRING, "hello", 4 + 5) + + val binary = Array.fill[Byte](4)(0: Byte) + checkActualSize(BINARY, binary, 4 + 4) + + val generic = Map(1 -> "a") + checkActualSize(GENERIC, SparkSqlSerializer.serialize(generic), 4 + 11) + } + + testNativeColumnType[BooleanType.type]( + BOOLEAN, + (buffer: ByteBuffer, v: Boolean) => { + buffer.put((if (v) 1 else 0).toByte) + }, + (buffer: ByteBuffer) => { + buffer.get() == 1 + }) + + testNativeColumnType[IntegerType.type](INT, _.putInt(_), _.getInt) + + testNativeColumnType[ShortType.type](SHORT, _.putShort(_), _.getShort) + + testNativeColumnType[LongType.type](LONG, _.putLong(_), _.getLong) + + testNativeColumnType[ByteType.type](BYTE, _.put(_), _.get) + + testNativeColumnType[DoubleType.type](DOUBLE, _.putDouble(_), _.getDouble) + + testNativeColumnType[FloatType.type](FLOAT, _.putFloat(_), _.getFloat) + + testNativeColumnType[StringType.type]( + STRING, + (buffer: ByteBuffer, string: String) => { + val bytes = string.getBytes() + buffer.putInt(bytes.length).put(string.getBytes) + }, + (buffer: ByteBuffer) => { + val length = buffer.getInt() + val bytes = new Array[Byte](length) + buffer.get(bytes, 0, length) + new String(bytes) + }) + + testColumnType[BinaryType.type, Array[Byte]]( + BINARY, + (buffer: ByteBuffer, bytes: Array[Byte]) => { + buffer.putInt(bytes.length).put(bytes) + }, + (buffer: ByteBuffer) => { + val length = buffer.getInt() + val bytes = new Array[Byte](length) + buffer.get(bytes, 0, length) + bytes + }) + + test("GENERIC") { + val buffer = ByteBuffer.allocate(512) + val obj = Map(1 -> "spark", 2 -> "sql") + val serializedObj = SparkSqlSerializer.serialize(obj) + + GENERIC.append(SparkSqlSerializer.serialize(obj), buffer) + buffer.rewind() + + val length = buffer.getInt() + assert(length === serializedObj.length) + + expectResult(obj, "Deserialized object didn't equal to the original object") { + val bytes = new Array[Byte](length) + buffer.get(bytes, 0, length) + SparkSqlSerializer.deserialize(bytes) + } + + buffer.rewind() + buffer.putInt(serializedObj.length).put(serializedObj) + + expectResult(obj, "Deserialized object didn't equal to the original object") { + buffer.rewind() + SparkSqlSerializer.deserialize(GENERIC.extract(buffer)) + } + } + + def testNativeColumnType[T <: NativeType]( + columnType: NativeColumnType[T], + putter: (ByteBuffer, T#JvmType) => Unit, + getter: (ByteBuffer) => T#JvmType) { + + testColumnType[T, T#JvmType](columnType, putter, getter) + } + + def testColumnType[T <: DataType, JvmType]( + columnType: ColumnType[T, JvmType], + putter: (ByteBuffer, JvmType) => Unit, + getter: (ByteBuffer) => JvmType) { + + val buffer = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE) + val seq = (0 until 4).map(_ => makeRandomValue(columnType)) + + test(s"$columnType.extract") { + buffer.rewind() + seq.foreach(putter(buffer, _)) + + buffer.rewind() + seq.foreach { expected => + assert( + expected === columnType.extract(buffer), + "Extracted value didn't equal to the original one") + } + } + + test(s"$columnType.append") { + buffer.rewind() + seq.foreach(columnType.append(_, buffer)) + + buffer.rewind() + seq.foreach { expected => + assert( + expected === getter(buffer), + "Extracted value didn't equal to the original one") + } + } + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnarQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnarQuerySuite.scala new file mode 100644 index 0000000000000..2ed4cf2170f9d --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnarQuerySuite.scala @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import org.apache.spark.sql.{QueryTest, TestData} +import org.apache.spark.sql.execution.SparkLogicalPlan +import org.apache.spark.sql.test.TestSQLContext + +class ColumnarQuerySuite extends QueryTest { + import TestData._ + import TestSQLContext._ + + test("simple columnar query") { + val plan = TestSQLContext.executePlan(testData.logicalPlan).executedPlan + val scan = SparkLogicalPlan(InMemoryColumnarTableScan(plan.output, plan)) + + checkAnswer(scan, testData.collect().toSeq) + } + + test("SPARK-1436 regression: in-memory columns must be able to be accessed multiple times") { + val plan = TestSQLContext.executePlan(testData.logicalPlan).executedPlan + val scan = SparkLogicalPlan(InMemoryColumnarTableScan(plan.output, plan)) + + checkAnswer(scan, testData.collect().toSeq) + checkAnswer(scan, testData.collect().toSeq) + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnarTestUtils.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnarTestUtils.scala new file mode 100644 index 0000000000000..04bdc43d95328 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/ColumnarTestUtils.scala @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import scala.collection.immutable.HashSet +import scala.util.Random + +import org.apache.spark.sql.Row +import org.apache.spark.sql.catalyst.expressions.GenericMutableRow +import org.apache.spark.sql.catalyst.types.{DataType, NativeType} + +object ColumnarTestUtils { + def makeNullRow(length: Int) = { + val row = new GenericMutableRow(length) + (0 until length).foreach(row.setNullAt) + row + } + + def makeRandomValue[T <: DataType, JvmType](columnType: ColumnType[T, JvmType]): JvmType = { + def randomBytes(length: Int) = { + val bytes = new Array[Byte](length) + Random.nextBytes(bytes) + bytes + } + + (columnType match { + case BYTE => (Random.nextInt(Byte.MaxValue * 2) - Byte.MaxValue).toByte + case SHORT => (Random.nextInt(Short.MaxValue * 2) - Short.MaxValue).toShort + case INT => Random.nextInt() + case LONG => Random.nextLong() + case FLOAT => Random.nextFloat() + case DOUBLE => Random.nextDouble() + case STRING => Random.nextString(Random.nextInt(32)) + case BOOLEAN => Random.nextBoolean() + case BINARY => randomBytes(Random.nextInt(32)) + case _ => + // Using a random one-element map instead of an arbitrary object + Map(Random.nextInt() -> Random.nextString(Random.nextInt(32))) + }).asInstanceOf[JvmType] + } + + def makeRandomValues( + head: ColumnType[_ <: DataType, _], + tail: ColumnType[_ <: DataType, _]*): Seq[Any] = makeRandomValues(Seq(head) ++ tail) + + def makeRandomValues(columnTypes: Seq[ColumnType[_ <: DataType, _]]): Seq[Any] = { + columnTypes.map(makeRandomValue(_)) + } + + def makeUniqueRandomValues[T <: DataType, JvmType]( + columnType: ColumnType[T, JvmType], + count: Int): Seq[JvmType] = { + + Iterator.iterate(HashSet.empty[JvmType]) { set => + set + Iterator.continually(makeRandomValue(columnType)).filterNot(set.contains).next() + }.drop(count).next().toSeq + } + + def makeRandomRow( + head: ColumnType[_ <: DataType, _], + tail: ColumnType[_ <: DataType, _]*): Row = makeRandomRow(Seq(head) ++ tail) + + def makeRandomRow(columnTypes: Seq[ColumnType[_ <: DataType, _]]): Row = { + val row = new GenericMutableRow(columnTypes.length) + makeRandomValues(columnTypes).zipWithIndex.foreach { case (value, index) => + row(index) = value + } + row + } + + def makeUniqueValuesAndSingleValueRows[T <: NativeType]( + columnType: NativeColumnType[T], + count: Int) = { + + val values = makeUniqueRandomValues(columnType, count) + val rows = values.map { value => + val row = new GenericMutableRow(1) + row(0) = value + row + } + + (values, rows) + } + +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/NullableColumnAccessorSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/NullableColumnAccessorSuite.scala new file mode 100644 index 0000000000000..4a21eb6201a69 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/NullableColumnAccessorSuite.scala @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import java.nio.ByteBuffer + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.expressions.GenericMutableRow +import org.apache.spark.sql.catalyst.types.DataType + +class TestNullableColumnAccessor[T <: DataType, JvmType]( + buffer: ByteBuffer, + columnType: ColumnType[T, JvmType]) + extends BasicColumnAccessor(buffer, columnType) + with NullableColumnAccessor + +object TestNullableColumnAccessor { + def apply[T <: DataType, JvmType](buffer: ByteBuffer, columnType: ColumnType[T, JvmType]) = { + // Skips the column type ID + buffer.getInt() + new TestNullableColumnAccessor(buffer, columnType) + } +} + +class NullableColumnAccessorSuite extends FunSuite { + import ColumnarTestUtils._ + + Seq(INT, LONG, SHORT, BOOLEAN, BYTE, STRING, DOUBLE, FLOAT, BINARY, GENERIC).foreach { + testNullableColumnAccessor(_) + } + + def testNullableColumnAccessor[T <: DataType, JvmType](columnType: ColumnType[T, JvmType]) { + val typeName = columnType.getClass.getSimpleName.stripSuffix("$") + val nullRow = makeNullRow(1) + + test(s"Nullable $typeName column accessor: empty column") { + val builder = TestNullableColumnBuilder(columnType) + val accessor = TestNullableColumnAccessor(builder.build(), columnType) + assert(!accessor.hasNext) + } + + test(s"Nullable $typeName column accessor: access null values") { + val builder = TestNullableColumnBuilder(columnType) + val randomRow = makeRandomRow(columnType) + + (0 until 4).foreach { _ => + builder.appendFrom(randomRow, 0) + builder.appendFrom(nullRow, 0) + } + + val accessor = TestNullableColumnAccessor(builder.build(), columnType) + val row = new GenericMutableRow(1) + + (0 until 4).foreach { _ => + accessor.extractTo(row, 0) + assert(row(0) === randomRow(0)) + + accessor.extractTo(row, 0) + assert(row.isNullAt(0)) + } + } + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/NullableColumnBuilderSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/NullableColumnBuilderSuite.scala new file mode 100644 index 0000000000000..d9d1e1bfddb75 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/NullableColumnBuilderSuite.scala @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.execution.SparkSqlSerializer + +class TestNullableColumnBuilder[T <: DataType, JvmType](columnType: ColumnType[T, JvmType]) + extends BasicColumnBuilder[T, JvmType](new NoopColumnStats[T, JvmType], columnType) + with NullableColumnBuilder + +object TestNullableColumnBuilder { + def apply[T <: DataType, JvmType](columnType: ColumnType[T, JvmType], initialSize: Int = 0) = { + val builder = new TestNullableColumnBuilder(columnType) + builder.initialize(initialSize) + builder + } +} + +class NullableColumnBuilderSuite extends FunSuite { + import ColumnarTestUtils._ + + Seq(INT, LONG, SHORT, BOOLEAN, BYTE, STRING, DOUBLE, FLOAT, BINARY, GENERIC).foreach { + testNullableColumnBuilder(_) + } + + def testNullableColumnBuilder[T <: DataType, JvmType](columnType: ColumnType[T, JvmType]) { + val typeName = columnType.getClass.getSimpleName.stripSuffix("$") + + test(s"$typeName column builder: empty column") { + val columnBuilder = TestNullableColumnBuilder(columnType) + val buffer = columnBuilder.build() + + expectResult(columnType.typeId, "Wrong column type ID")(buffer.getInt()) + expectResult(0, "Wrong null count")(buffer.getInt()) + assert(!buffer.hasRemaining) + } + + test(s"$typeName column builder: buffer size auto growth") { + val columnBuilder = TestNullableColumnBuilder(columnType) + val randomRow = makeRandomRow(columnType) + + (0 until 4).foreach { _ => + columnBuilder.appendFrom(randomRow, 0) + } + + val buffer = columnBuilder.build() + + expectResult(columnType.typeId, "Wrong column type ID")(buffer.getInt()) + expectResult(0, "Wrong null count")(buffer.getInt()) + } + + test(s"$typeName column builder: null values") { + val columnBuilder = TestNullableColumnBuilder(columnType) + val randomRow = makeRandomRow(columnType) + val nullRow = makeNullRow(1) + + (0 until 4).foreach { _ => + columnBuilder.appendFrom(randomRow, 0) + columnBuilder.appendFrom(nullRow, 0) + } + + val buffer = columnBuilder.build() + + expectResult(columnType.typeId, "Wrong column type ID")(buffer.getInt()) + expectResult(4, "Wrong null count")(buffer.getInt()) + + // For null positions + (1 to 7 by 2).foreach(expectResult(_, "Wrong null position")(buffer.getInt())) + + // For non-null values + (0 until 4).foreach { _ => + val actual = if (columnType == GENERIC) { + SparkSqlSerializer.deserialize[Any](GENERIC.extract(buffer)) + } else { + columnType.extract(buffer) + } + + assert(actual === randomRow(0), "Extracted value didn't equal to the original one") + } + + assert(!buffer.hasRemaining) + } + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/BooleanBitSetSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/BooleanBitSetSuite.scala new file mode 100644 index 0000000000000..a754f98f7fbf1 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/BooleanBitSetSuite.scala @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import org.scalatest.FunSuite + +import org.apache.spark.sql.Row +import org.apache.spark.sql.columnar.{BOOLEAN, BooleanColumnStats} +import org.apache.spark.sql.columnar.ColumnarTestUtils._ + +class BooleanBitSetSuite extends FunSuite { + import BooleanBitSet._ + + def skeleton(count: Int) { + // ------------- + // Tests encoder + // ------------- + + val builder = TestCompressibleColumnBuilder(new BooleanColumnStats, BOOLEAN, BooleanBitSet) + val rows = Seq.fill[Row](count)(makeRandomRow(BOOLEAN)) + val values = rows.map(_.head) + + rows.foreach(builder.appendFrom(_, 0)) + val buffer = builder.build() + + // Column type ID + null count + null positions + val headerSize = CompressionScheme.columnHeaderSize(buffer) + + // Compression scheme ID + element count + bitset words + val compressedSize = 4 + 4 + { + val extra = if (count % BITS_PER_LONG == 0) 0 else 1 + (count / BITS_PER_LONG + extra) * 8 + } + + // 4 extra bytes for compression scheme type ID + expectResult(headerSize + compressedSize, "Wrong buffer capacity")(buffer.capacity) + + // Skips column header + buffer.position(headerSize) + expectResult(BooleanBitSet.typeId, "Wrong compression scheme ID")(buffer.getInt()) + expectResult(count, "Wrong element count")(buffer.getInt()) + + var word = 0: Long + for (i <- 0 until count) { + val bit = i % BITS_PER_LONG + word = if (bit == 0) buffer.getLong() else word + expectResult(values(i), s"Wrong value in compressed buffer, index=$i") { + (word & ((1: Long) << bit)) != 0 + } + } + + // ------------- + // Tests decoder + // ------------- + + // Rewinds, skips column header and 4 more bytes for compression scheme ID + buffer.rewind().position(headerSize + 4) + + val decoder = BooleanBitSet.decoder(buffer, BOOLEAN) + values.foreach(expectResult(_, "Wrong decoded value")(decoder.next())) + assert(!decoder.hasNext) + } + + test(s"$BooleanBitSet: empty") { + skeleton(0) + } + + test(s"$BooleanBitSet: less than 1 word") { + skeleton(BITS_PER_LONG - 1) + } + + test(s"$BooleanBitSet: exactly 1 word") { + skeleton(BITS_PER_LONG) + } + + test(s"$BooleanBitSet: multiple whole words") { + skeleton(BITS_PER_LONG * 2) + } + + test(s"$BooleanBitSet: multiple words and 1 more bit") { + skeleton(BITS_PER_LONG * 2 + 1) + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/DictionaryEncodingSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/DictionaryEncodingSuite.scala new file mode 100644 index 0000000000000..eab27987e08ea --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/DictionaryEncodingSuite.scala @@ -0,0 +1,121 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import java.nio.ByteBuffer + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.types.NativeType +import org.apache.spark.sql.columnar._ +import org.apache.spark.sql.columnar.ColumnarTestUtils._ + +class DictionaryEncodingSuite extends FunSuite { + testDictionaryEncoding(new IntColumnStats, INT) + testDictionaryEncoding(new LongColumnStats, LONG) + testDictionaryEncoding(new StringColumnStats, STRING) + + def testDictionaryEncoding[T <: NativeType]( + columnStats: NativeColumnStats[T], + columnType: NativeColumnType[T]) { + + val typeName = columnType.getClass.getSimpleName.stripSuffix("$") + + def buildDictionary(buffer: ByteBuffer) = { + (0 until buffer.getInt()).map(columnType.extract(buffer) -> _.toShort).toMap + } + + def stableDistinct(seq: Seq[Int]): Seq[Int] = if (seq.isEmpty) { + Seq.empty + } else { + seq.head +: seq.tail.filterNot(_ == seq.head) + } + + def skeleton(uniqueValueCount: Int, inputSeq: Seq[Int]) { + // ------------- + // Tests encoder + // ------------- + + val builder = TestCompressibleColumnBuilder(columnStats, columnType, DictionaryEncoding) + val (values, rows) = makeUniqueValuesAndSingleValueRows(columnType, uniqueValueCount) + val dictValues = stableDistinct(inputSeq) + + inputSeq.foreach(i => builder.appendFrom(rows(i), 0)) + + if (dictValues.length > DictionaryEncoding.MAX_DICT_SIZE) { + withClue("Dictionary overflowed, compression should fail") { + intercept[Throwable] { + builder.build() + } + } + } else { + val buffer = builder.build() + val headerSize = CompressionScheme.columnHeaderSize(buffer) + // 4 extra bytes for dictionary size + val dictionarySize = 4 + values.map(columnType.actualSize).sum + // 2 bytes for each `Short` + val compressedSize = 4 + dictionarySize + 2 * inputSeq.length + // 4 extra bytes for compression scheme type ID + expectResult(headerSize + compressedSize, "Wrong buffer capacity")(buffer.capacity) + + // Skips column header + buffer.position(headerSize) + expectResult(DictionaryEncoding.typeId, "Wrong compression scheme ID")(buffer.getInt()) + + val dictionary = buildDictionary(buffer).toMap + + dictValues.foreach { i => + expectResult(i, "Wrong dictionary entry") { + dictionary(values(i)) + } + } + + inputSeq.foreach { i => + expectResult(i.toShort, "Wrong column element value")(buffer.getShort()) + } + + // ------------- + // Tests decoder + // ------------- + + // Rewinds, skips column header and 4 more bytes for compression scheme ID + buffer.rewind().position(headerSize + 4) + + val decoder = DictionaryEncoding.decoder(buffer, columnType) + + inputSeq.foreach { i => + expectResult(values(i), "Wrong decoded value")(decoder.next()) + } + + assert(!decoder.hasNext) + } + } + + test(s"$DictionaryEncoding with $typeName: empty") { + skeleton(0, Seq.empty) + } + + test(s"$DictionaryEncoding with $typeName: simple case") { + skeleton(2, Seq(0, 1, 0, 1)) + } + + test(s"$DictionaryEncoding with $typeName: dictionary overflow") { + skeleton(DictionaryEncoding.MAX_DICT_SIZE + 1, 0 to DictionaryEncoding.MAX_DICT_SIZE) + } + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/IntegralDeltaSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/IntegralDeltaSuite.scala new file mode 100644 index 0000000000000..1390e5eef6106 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/IntegralDeltaSuite.scala @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.expressions.GenericMutableRow +import org.apache.spark.sql.catalyst.types.IntegralType +import org.apache.spark.sql.columnar._ + +class IntegralDeltaSuite extends FunSuite { + testIntegralDelta(new IntColumnStats, INT, IntDelta) + testIntegralDelta(new LongColumnStats, LONG, LongDelta) + + def testIntegralDelta[I <: IntegralType]( + columnStats: NativeColumnStats[I], + columnType: NativeColumnType[I], + scheme: IntegralDelta[I]) { + + def skeleton(input: Seq[I#JvmType]) { + // ------------- + // Tests encoder + // ------------- + + val builder = TestCompressibleColumnBuilder(columnStats, columnType, scheme) + val deltas = if (input.isEmpty) { + Seq.empty[Long] + } else { + (input.tail, input.init).zipped.map { + case (x: Int, y: Int) => (x - y).toLong + case (x: Long, y: Long) => x - y + } + } + + input.map { value => + val row = new GenericMutableRow(1) + columnType.setField(row, 0, value) + builder.appendFrom(row, 0) + } + + val buffer = builder.build() + // Column type ID + null count + null positions + val headerSize = CompressionScheme.columnHeaderSize(buffer) + + // Compression scheme ID + compressed contents + val compressedSize = 4 + (if (deltas.isEmpty) { + 0 + } else { + val oneBoolean = columnType.defaultSize + 1 + oneBoolean + deltas.map { + d => if (math.abs(d) < Byte.MaxValue) 1 else 1 + oneBoolean + }.sum + }) + + // 4 extra bytes for compression scheme type ID + expectResult(headerSize + compressedSize, "Wrong buffer capacity")(buffer.capacity) + + buffer.position(headerSize) + expectResult(scheme.typeId, "Wrong compression scheme ID")(buffer.getInt()) + + if (input.nonEmpty) { + expectResult(Byte.MinValue, "The first byte should be an escaping mark")(buffer.get()) + expectResult(input.head, "The first value is wrong")(columnType.extract(buffer)) + + (input.tail, deltas).zipped.foreach { (value, delta) => + if (delta < Byte.MaxValue) { + expectResult(delta, "Wrong delta")(buffer.get()) + } else { + expectResult(Byte.MinValue, "Expecting escaping mark here")(buffer.get()) + expectResult(value, "Wrong value")(columnType.extract(buffer)) + } + } + } + + // ------------- + // Tests decoder + // ------------- + + // Rewinds, skips column header and 4 more bytes for compression scheme ID + buffer.rewind().position(headerSize + 4) + + val decoder = scheme.decoder(buffer, columnType) + input.foreach(expectResult(_, "Wrong decoded value")(decoder.next())) + assert(!decoder.hasNext) + } + + test(s"$scheme: empty column") { + skeleton(Seq.empty) + } + + test(s"$scheme: simple case") { + val input = columnType match { + case INT => Seq(1: Int, 2: Int, 130: Int) + case LONG => Seq(1: Long, 2: Long, 130: Long) + } + + skeleton(input.map(_.asInstanceOf[I#JvmType])) + } + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/RunLengthEncodingSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/RunLengthEncodingSuite.scala new file mode 100644 index 0000000000000..89f9b60a4397b --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/RunLengthEncodingSuite.scala @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import org.scalatest.FunSuite + +import org.apache.spark.sql.catalyst.types.NativeType +import org.apache.spark.sql.columnar._ +import org.apache.spark.sql.columnar.ColumnarTestUtils._ + +class RunLengthEncodingSuite extends FunSuite { + testRunLengthEncoding(new BooleanColumnStats, BOOLEAN) + testRunLengthEncoding(new ByteColumnStats, BYTE) + testRunLengthEncoding(new ShortColumnStats, SHORT) + testRunLengthEncoding(new IntColumnStats, INT) + testRunLengthEncoding(new LongColumnStats, LONG) + testRunLengthEncoding(new StringColumnStats, STRING) + + def testRunLengthEncoding[T <: NativeType]( + columnStats: NativeColumnStats[T], + columnType: NativeColumnType[T]) { + + val typeName = columnType.getClass.getSimpleName.stripSuffix("$") + + def skeleton(uniqueValueCount: Int, inputRuns: Seq[(Int, Int)]) { + // ------------- + // Tests encoder + // ------------- + + val builder = TestCompressibleColumnBuilder(columnStats, columnType, RunLengthEncoding) + val (values, rows) = makeUniqueValuesAndSingleValueRows(columnType, uniqueValueCount) + val inputSeq = inputRuns.flatMap { case (index, run) => + Seq.fill(run)(index) + } + + inputSeq.foreach(i => builder.appendFrom(rows(i), 0)) + val buffer = builder.build() + + // Column type ID + null count + null positions + val headerSize = CompressionScheme.columnHeaderSize(buffer) + + // Compression scheme ID + compressed contents + val compressedSize = 4 + inputRuns.map { case (index, _) => + // 4 extra bytes each run for run length + columnType.actualSize(values(index)) + 4 + }.sum + + // 4 extra bytes for compression scheme type ID + expectResult(headerSize + compressedSize, "Wrong buffer capacity")(buffer.capacity) + + // Skips column header + buffer.position(headerSize) + expectResult(RunLengthEncoding.typeId, "Wrong compression scheme ID")(buffer.getInt()) + + inputRuns.foreach { case (index, run) => + expectResult(values(index), "Wrong column element value")(columnType.extract(buffer)) + expectResult(run, "Wrong run length")(buffer.getInt()) + } + + // ------------- + // Tests decoder + // ------------- + + // Rewinds, skips column header and 4 more bytes for compression scheme ID + buffer.rewind().position(headerSize + 4) + + val decoder = RunLengthEncoding.decoder(buffer, columnType) + + inputSeq.foreach { i => + expectResult(values(i), "Wrong decoded value")(decoder.next()) + } + + assert(!decoder.hasNext) + } + + test(s"$RunLengthEncoding with $typeName: empty column") { + skeleton(0, Seq.empty) + } + + test(s"$RunLengthEncoding with $typeName: simple case") { + skeleton(2, Seq(0 -> 2, 1 ->2)) + } + + test(s"$RunLengthEncoding with $typeName: run length == 1") { + skeleton(2, Seq(0 -> 1, 1 ->1)) + } + + test(s"$RunLengthEncoding with $typeName: single long run") { + skeleton(1, Seq(0 -> 1000)) + } + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/TestCompressibleColumnBuilder.scala b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/TestCompressibleColumnBuilder.scala new file mode 100644 index 0000000000000..81bf5e99d19b9 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/columnar/compression/TestCompressibleColumnBuilder.scala @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.columnar.compression + +import org.apache.spark.sql.catalyst.types.NativeType +import org.apache.spark.sql.columnar._ + +class TestCompressibleColumnBuilder[T <: NativeType]( + override val columnStats: NativeColumnStats[T], + override val columnType: NativeColumnType[T], + override val schemes: Seq[CompressionScheme]) + extends NativeColumnBuilder(columnStats, columnType) + with NullableColumnBuilder + with CompressibleColumnBuilder[T] { + + override protected def isWorthCompressing(encoder: Encoder[T]) = true +} + +object TestCompressibleColumnBuilder { + def apply[T <: NativeType]( + columnStats: NativeColumnStats[T], + columnType: NativeColumnType[T], + scheme: CompressionScheme) = { + + val builder = new TestCompressibleColumnBuilder(columnStats, columnType, Seq(scheme)) + builder.initialize(0) + builder + } +} + diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/PlannerSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/PlannerSuite.scala new file mode 100644 index 0000000000000..658ff0927aa85 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/PlannerSuite.scala @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import org.scalatest.FunSuite + +import org.apache.spark.sql.TestData._ +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical +import org.apache.spark.sql.execution +import org.apache.spark.sql.test.TestSQLContext._ +import org.apache.spark.sql.test.TestSQLContext.planner._ + +class PlannerSuite extends FunSuite { + test("unions are collapsed") { + val query = testData.unionAll(testData).unionAll(testData).logicalPlan + val planned = BasicOperators(query).head + val logicalUnions = query collect { case u: logical.Union => u} + val physicalUnions = planned collect { case u: execution.Union => u} + + assert(logicalUnions.size === 2) + assert(physicalUnions.size === 1) + } + + test("count is partially aggregated") { + val query = testData.groupBy('value)(Count('key)).analyze.logicalPlan + val planned = PartialAggregation(query).head + val aggregations = planned.collect { case a: Aggregate => a } + + assert(aggregations.size === 2) + } + + test("count distinct is not partially aggregated") { + val query = testData.groupBy('value)(CountDistinct('key :: Nil)).analyze.logicalPlan + val planned = PartialAggregation(query.logicalPlan) + assert(planned.isEmpty) + } + + test("mixed aggregates are not partially aggregated") { + val query = + testData.groupBy('value)(Count('value), CountDistinct('key :: Nil)).analyze.logicalPlan + val planned = PartialAggregation(query) + assert(planned.isEmpty) + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/TgfSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/TgfSuite.scala new file mode 100644 index 0000000000000..e55648b8ed15a --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/TgfSuite.scala @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.execution + +import org.apache.spark.sql.QueryTest +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans._ + +/* Implicit conversions */ +import org.apache.spark.sql.test.TestSQLContext._ + +/** + * This is an example TGF that uses UnresolvedAttributes 'name and 'age to access specific columns + * from the input data. These will be replaced during analysis with specific AttributeReferences + * and then bound to specific ordinals during query planning. While TGFs could also access specific + * columns using hand-coded ordinals, doing so violates data independence. + * + * Note: this is only a rough example of how TGFs can be expressed, the final version will likely + * involve a lot more sugar for cleaner use in Scala/Java/etc. + */ +case class ExampleTGF(input: Seq[Attribute] = Seq('name, 'age)) extends Generator { + def children = input + protected def makeOutput() = 'nameAndAge.string :: Nil + + val Seq(nameAttr, ageAttr) = input + + override def eval(input: Row): TraversableOnce[Row] = { + val name = nameAttr.eval(input) + val age = ageAttr.eval(input).asInstanceOf[Int] + + Iterator( + new GenericRow(Array[Any](s"$name is $age years old")), + new GenericRow(Array[Any](s"Next year, $name will be ${age + 1} years old"))) + } +} + +class TgfSuite extends QueryTest { + val inputData = + logical.LocalRelation('name.string, 'age.int).loadData( + ("michael", 29) :: Nil + ) + + test("simple tgf example") { + checkAnswer( + inputData.generate(ExampleTGF()), + Seq( + "michael is 29 years old" :: Nil, + "Next year, michael will be 30 years old" :: Nil)) + } +} diff --git a/sql/core/src/test/scala/org/apache/spark/sql/parquet/ParquetQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/parquet/ParquetQuerySuite.scala new file mode 100644 index 0000000000000..fc68d6c5620d3 --- /dev/null +++ b/sql/core/src/test/scala/org/apache/spark/sql/parquet/ParquetQuerySuite.scala @@ -0,0 +1,226 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.parquet + +import org.scalatest.{BeforeAndAfterAll, FunSuite} + +import org.apache.hadoop.fs.{Path, FileSystem} +import org.apache.hadoop.mapreduce.Job + +import parquet.hadoop.ParquetFileWriter +import parquet.schema.MessageTypeParser +import parquet.hadoop.util.ContextUtil + +import org.apache.spark.sql.catalyst.util.getTempFilePath +import org.apache.spark.sql.catalyst.expressions.{AttributeReference, Row} +import org.apache.spark.sql.test.TestSQLContext +import org.apache.spark.util.Utils +import org.apache.spark.sql.catalyst.types.{StringType, IntegerType, DataType} +import org.apache.spark.sql.{parquet, SchemaRDD} +import org.apache.spark.sql.catalyst.expressions.AttributeReference +import scala.Tuple2 + +// Implicits +import org.apache.spark.sql.test.TestSQLContext._ + +case class TestRDDEntry(key: Int, value: String) + +class ParquetQuerySuite extends FunSuite with BeforeAndAfterAll { + + var testRDD: SchemaRDD = null + + override def beforeAll() { + ParquetTestData.writeFile() + testRDD = parquetFile(ParquetTestData.testDir.toString) + testRDD.registerAsTable("testsource") + } + + override def afterAll() { + Utils.deleteRecursively(ParquetTestData.testDir) + // here we should also unregister the table?? + } + + test("self-join parquet files") { + val x = ParquetTestData.testData.as('x) + val y = ParquetTestData.testData.as('y) + val query = x.join(y).where("x.myint".attr === "y.myint".attr) + + // Check to make sure that the attributes from either side of the join have unique expression + // ids. + query.queryExecution.analyzed.output.filter(_.name == "myint") match { + case Seq(i1, i2) if(i1.exprId == i2.exprId) => + fail(s"Duplicate expression IDs found in query plan: $query") + case Seq(_, _) => // All good + } + + val result = query.collect() + assert(result.size === 9, "self-join result has incorrect size") + assert(result(0).size === 12, "result row has incorrect size") + result.zipWithIndex.foreach { + case (row, index) => row.zipWithIndex.foreach { + case (field, column) => assert(field != null, s"self-join contains null value in row $index field $column") + } + } + } + + test("Import of simple Parquet file") { + val result = parquetFile(ParquetTestData.testDir.toString).collect() + assert(result.size === 15) + result.zipWithIndex.foreach { + case (row, index) => { + val checkBoolean = + if (index % 3 == 0) + row(0) == true + else + row(0) == false + assert(checkBoolean === true, s"boolean field value in line $index did not match") + if (index % 5 == 0) assert(row(1) === 5, s"int field value in line $index did not match") + assert(row(2) === "abc", s"string field value in line $index did not match") + assert(row(3) === (index.toLong << 33), s"long value in line $index did not match") + assert(row(4) === 2.5F, s"float field value in line $index did not match") + assert(row(5) === 4.5D, s"double field value in line $index did not match") + } + } + } + + test("Projection of simple Parquet file") { + val scanner = new ParquetTableScan( + ParquetTestData.testData.output, + ParquetTestData.testData, + None)(TestSQLContext.sparkContext) + val projected = scanner.pruneColumns(ParquetTypesConverter + .convertToAttributes(MessageTypeParser + .parseMessageType(ParquetTestData.subTestSchema))) + assert(projected.output.size === 2) + val result = projected + .execute() + .map(_.copy()) + .collect() + result.zipWithIndex.foreach { + case (row, index) => { + if (index % 3 == 0) + assert(row(0) === true, s"boolean field value in line $index did not match (every third row)") + else + assert(row(0) === false, s"boolean field value in line $index did not match") + assert(row(1) === (index.toLong << 33), s"long field value in line $index did not match") + assert(row.size === 2, s"number of columns in projection in line $index is incorrect") + } + } + } + + test("Writing metadata from scratch for table CREATE") { + val job = new Job() + val path = new Path(getTempFilePath("testtable").getCanonicalFile.toURI.toString) + val fs: FileSystem = FileSystem.getLocal(ContextUtil.getConfiguration(job)) + ParquetTypesConverter.writeMetaData( + ParquetTestData.testData.output, + path, + TestSQLContext.sparkContext.hadoopConfiguration) + assert(fs.exists(new Path(path, ParquetFileWriter.PARQUET_METADATA_FILE))) + val metaData = ParquetTypesConverter.readMetaData(path) + assert(metaData != null) + ParquetTestData + .testData + .parquetSchema + .checkContains(metaData.getFileMetaData.getSchema) // throws exception if incompatible + metaData + .getFileMetaData + .getSchema + .checkContains(ParquetTestData.testData.parquetSchema) // throws exception if incompatible + fs.delete(path, true) + } + + test("Creating case class RDD table") { + TestSQLContext.sparkContext.parallelize((1 to 100)) + .map(i => TestRDDEntry(i, s"val_$i")) + .registerAsTable("tmp") + val rdd = sql("SELECT * FROM tmp").collect().sortBy(_.getInt(0)) + var counter = 1 + rdd.foreach { + // '===' does not like string comparison? + row: Row => { + assert(row.getString(1).equals(s"val_$counter"), s"row $counter value ${row.getString(1)} does not match val_$counter") + counter = counter + 1 + } + } + } + + test("Saving case class RDD table to file and reading it back in") { + val file = getTempFilePath("parquet") + val path = file.toString + val rdd = TestSQLContext.sparkContext.parallelize((1 to 100)) + .map(i => TestRDDEntry(i, s"val_$i")) + rdd.saveAsParquetFile(path) + val readFile = parquetFile(path) + readFile.registerAsTable("tmpx") + val rdd_copy = sql("SELECT * FROM tmpx").collect() + val rdd_orig = rdd.collect() + for(i <- 0 to 99) { + assert(rdd_copy(i).apply(0) === rdd_orig(i).key, s"key error in line $i") + assert(rdd_copy(i).apply(1) === rdd_orig(i).value, s"value in line $i") + } + Utils.deleteRecursively(file) + assert(true) + } + + test("insert (overwrite) via Scala API (new SchemaRDD)") { + val dirname = Utils.createTempDir() + val source_rdd = TestSQLContext.sparkContext.parallelize((1 to 100)) + .map(i => TestRDDEntry(i, s"val_$i")) + source_rdd.registerAsTable("source") + val dest_rdd = createParquetFile(dirname.toString, ("key", IntegerType), ("value", StringType)) + dest_rdd.registerAsTable("dest") + sql("INSERT OVERWRITE INTO dest SELECT * FROM source").collect() + val rdd_copy1 = sql("SELECT * FROM dest").collect() + assert(rdd_copy1.size === 100) + assert(rdd_copy1(0).apply(0) === 1) + assert(rdd_copy1(0).apply(1) === "val_1") + sql("INSERT INTO dest SELECT * FROM source").collect() + val rdd_copy2 = sql("SELECT * FROM dest").collect() + assert(rdd_copy2.size === 200) + Utils.deleteRecursively(dirname) + } + + test("insert (appending) to same table via Scala API") { + sql("INSERT INTO testsource SELECT * FROM testsource").collect() + val double_rdd = sql("SELECT * FROM testsource").collect() + assert(double_rdd != null) + assert(double_rdd.size === 30) + for(i <- (0 to 14)) { + assert(double_rdd(i) === double_rdd(i+15), s"error: lines $i and ${i+15} to not match") + } + // let's restore the original test data + Utils.deleteRecursively(ParquetTestData.testDir) + ParquetTestData.writeFile() + } + + /** + * Creates an empty SchemaRDD backed by a ParquetRelation. + * + * TODO: since this is so experimental it is better to have it here and not + * in SQLContext. Also note that when creating new AttributeReferences + * one needs to take care not to create duplicate Attribute ID's. + */ + private def createParquetFile(path: String, schema: (Tuple2[String, DataType])*): SchemaRDD = { + val attributes = schema.map(t => new AttributeReference(t._1, t._2)()) + new SchemaRDD( + TestSQLContext, + parquet.ParquetRelation.createEmpty(path, attributes, sparkContext.hadoopConfiguration)) + } +} + diff --git a/sql/hive/pom.xml b/sql/hive/pom.xml new file mode 100644 index 0000000000000..a662da76ce25a --- /dev/null +++ b/sql/hive/pom.xml @@ -0,0 +1,120 @@ + + + + + 4.0.0 + + org.apache.spark + spark-parent + 1.0.0-SNAPSHOT + ../../pom.xml + + + org.apache.spark + spark-hive_2.10 + jar + Spark Project Hive + http://spark.apache.org/ + + + yarn-alpha + + + org.apache.avro + avro + + + + + + + + org.apache.spark + spark-core_${scala.binary.version} + ${project.version} + + + org.apache.spark + spark-sql_${scala.binary.version} + ${project.version} + + + org.apache.hive + hive-metastore + ${hive.version} + + + org.apache.hive + hive-exec + ${hive.version} + + + org.codehaus.jackson + jackson-mapper-asl + + + org.apache.hive + hive-serde + ${hive.version} + + + org.scalatest + scalatest_${scala.binary.version} + test + + + org.scalacheck + scalacheck_${scala.binary.version} + test + + + + target/scala-${scala.binary.version}/classes + target/scala-${scala.binary.version}/test-classes + + + org.scalatest + scalatest-maven-plugin + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.4 + + + copy-dependencies + package + + copy-dependencies + + + + ${basedir}/../../lib_managed/jars + false + false + true + org.datanucleus + + + + + + + diff --git a/sql/hive/src/main/scala/org/apache/spark/SparkHadoopWriter.scala b/sql/hive/src/main/scala/org/apache/spark/SparkHadoopWriter.scala new file mode 100644 index 0000000000000..7219c030cb0f0 --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/SparkHadoopWriter.scala @@ -0,0 +1,194 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark + +import java.io.IOException +import java.text.NumberFormat +import java.util.Date + +import org.apache.hadoop.fs.Path +import org.apache.hadoop.hive.ql.exec.{FileSinkOperator, Utilities} +import org.apache.hadoop.hive.ql.io.{HiveFileFormatUtils, HiveOutputFormat} +import org.apache.hadoop.hive.ql.plan.FileSinkDesc +import org.apache.hadoop.mapred._ +import org.apache.hadoop.io.Writable + +/** + * Internal helper class that saves an RDD using a Hive OutputFormat. + * It is based on [[SparkHadoopWriter]]. + */ +protected[spark] +class SparkHiveHadoopWriter( + @transient jobConf: JobConf, + fileSinkConf: FileSinkDesc) + extends Logging + with SparkHadoopMapRedUtil + with Serializable { + + private val now = new Date() + private val conf = new SerializableWritable(jobConf) + + private var jobID = 0 + private var splitID = 0 + private var attemptID = 0 + private var jID: SerializableWritable[JobID] = null + private var taID: SerializableWritable[TaskAttemptID] = null + + @transient private var writer: FileSinkOperator.RecordWriter = null + @transient private var format: HiveOutputFormat[AnyRef, Writable] = null + @transient private var committer: OutputCommitter = null + @transient private var jobContext: JobContext = null + @transient private var taskContext: TaskAttemptContext = null + + def preSetup() { + setIDs(0, 0, 0) + setConfParams() + + val jCtxt = getJobContext() + getOutputCommitter().setupJob(jCtxt) + } + + + def setup(jobid: Int, splitid: Int, attemptid: Int) { + setIDs(jobid, splitid, attemptid) + setConfParams() + } + + def open() { + val numfmt = NumberFormat.getInstance() + numfmt.setMinimumIntegerDigits(5) + numfmt.setGroupingUsed(false) + + val extension = Utilities.getFileExtension( + conf.value, + fileSinkConf.getCompressed, + getOutputFormat()) + + val outputName = "part-" + numfmt.format(splitID) + extension + val path = FileOutputFormat.getTaskOutputPath(conf.value, outputName) + + getOutputCommitter().setupTask(getTaskContext()) + writer = HiveFileFormatUtils.getHiveRecordWriter( + conf.value, + fileSinkConf.getTableInfo, + conf.value.getOutputValueClass.asInstanceOf[Class[Writable]], + fileSinkConf, + path, + null) + } + + def write(value: Writable) { + if (writer != null) { + writer.write(value) + } else { + throw new IOException("Writer is null, open() has not been called") + } + } + + def close() { + // Seems the boolean value passed into close does not matter. + writer.close(false) + } + + def commit() { + val taCtxt = getTaskContext() + val cmtr = getOutputCommitter() + if (cmtr.needsTaskCommit(taCtxt)) { + try { + cmtr.commitTask(taCtxt) + logInfo (taID + ": Committed") + } catch { + case e: IOException => + logError("Error committing the output of task: " + taID.value, e) + cmtr.abortTask(taCtxt) + throw e + } + } else { + logWarning ("No need to commit output of task: " + taID.value) + } + } + + def commitJob() { + // always ? Or if cmtr.needsTaskCommit ? + val cmtr = getOutputCommitter() + cmtr.commitJob(getJobContext()) + } + + // ********* Private Functions ********* + + private def getOutputFormat(): HiveOutputFormat[AnyRef,Writable] = { + if (format == null) { + format = conf.value.getOutputFormat() + .asInstanceOf[HiveOutputFormat[AnyRef,Writable]] + } + format + } + + private def getOutputCommitter(): OutputCommitter = { + if (committer == null) { + committer = conf.value.getOutputCommitter + } + committer + } + + private def getJobContext(): JobContext = { + if (jobContext == null) { + jobContext = newJobContext(conf.value, jID.value) + } + jobContext + } + + private def getTaskContext(): TaskAttemptContext = { + if (taskContext == null) { + taskContext = newTaskAttemptContext(conf.value, taID.value) + } + taskContext + } + + private def setIDs(jobId: Int, splitId: Int, attemptId: Int) { + jobID = jobId + splitID = splitId + attemptID = attemptId + + jID = new SerializableWritable[JobID](SparkHadoopWriter.createJobID(now, jobId)) + taID = new SerializableWritable[TaskAttemptID]( + new TaskAttemptID(new TaskID(jID.value, true, splitID), attemptID)) + } + + private def setConfParams() { + conf.value.set("mapred.job.id", jID.value.toString) + conf.value.set("mapred.tip.id", taID.value.getTaskID.toString) + conf.value.set("mapred.task.id", taID.value.toString) + conf.value.setBoolean("mapred.task.is.map", true) + conf.value.setInt("mapred.task.partition", splitID) + } +} + +object SparkHiveHadoopWriter { + def createPathFromString(path: String, conf: JobConf): Path = { + if (path == null) { + throw new IllegalArgumentException("Output path is null") + } + val outputPath = new Path(path) + val fs = outputPath.getFileSystem(conf) + if (outputPath == null || fs == null) { + throw new IllegalArgumentException("Incorrectly formatted output path") + } + outputPath.makeQualified(fs) + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala new file mode 100644 index 0000000000000..353458432b210 --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala @@ -0,0 +1,307 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql +package hive + +import scala.language.implicitConversions + +import java.io.{BufferedReader, File, InputStreamReader, PrintStream} +import java.util.{ArrayList => JArrayList} + +import org.apache.hadoop.hive.conf.HiveConf +import org.apache.hadoop.hive.ql.Driver +import org.apache.hadoop.hive.ql.processors._ +import org.apache.hadoop.hive.ql.session.SessionState + +import org.apache.spark.SparkContext +import org.apache.spark.rdd.RDD +import org.apache.spark.sql.catalyst.analysis.{Analyzer, OverrideCatalog} +import org.apache.spark.sql.catalyst.expressions.GenericRow +import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, LowerCaseSchema} +import org.apache.spark.sql.catalyst.plans.logical.{NativeCommand, ExplainCommand} +import org.apache.spark.sql.catalyst.types._ +import org.apache.spark.sql.execution._ + +/* Implicit conversions */ +import scala.collection.JavaConversions._ + +/** + * Starts up an instance of hive where metadata is stored locally. An in-process metadata data is + * created with data stored in ./metadata. Warehouse data is stored in in ./warehouse. + */ +class LocalHiveContext(sc: SparkContext) extends HiveContext(sc) { + + lazy val metastorePath = new File("metastore").getCanonicalPath + lazy val warehousePath: String = new File("warehouse").getCanonicalPath + + /** Sets up the system initially or after a RESET command */ + protected def configure() { + // TODO: refactor this so we can work with other databases. + runSqlHive( + s"set javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=$metastorePath;create=true") + runSqlHive("set hive.metastore.warehouse.dir=" + warehousePath) + } + + configure() // Must be called before initializing the catalog below. +} + +/** + * An instance of the Spark SQL execution engine that integrates with data stored in Hive. + * Configuration for Hive is read from hive-site.xml on the classpath. + */ +class HiveContext(sc: SparkContext) extends SQLContext(sc) { + self => + + override protected[sql] def executePlan(plan: LogicalPlan): this.QueryExecution = + new this.QueryExecution { val logical = plan } + + /** + * Executes a query expressed in HiveQL using Spark, returning the result as a SchemaRDD. + */ + def hiveql(hqlQuery: String): SchemaRDD = { + val result = new SchemaRDD(this, HiveQl.parseSql(hqlQuery)) + // We force query optimization to happen right away instead of letting it happen lazily like + // when using the query DSL. This is so DDL commands behave as expected. This is only + // generates the RDD lineage for DML queries, but do not perform any execution. + result.queryExecution.toRdd + result + } + + /** An alias for `hiveql`. */ + def hql(hqlQuery: String): SchemaRDD = hiveql(hqlQuery) + + // Circular buffer to hold what hive prints to STDOUT and ERR. Only printed when failures occur. + @transient + protected val outputBuffer = new java.io.OutputStream { + var pos: Int = 0 + var buffer = new Array[Int](10240) + def write(i: Int): Unit = { + buffer(pos) = i + pos = (pos + 1) % buffer.size + } + + override def toString = { + val (end, start) = buffer.splitAt(pos) + val input = new java.io.InputStream { + val iterator = (start ++ end).iterator + + def read(): Int = if (iterator.hasNext) iterator.next() else -1 + } + val reader = new BufferedReader(new InputStreamReader(input)) + val stringBuilder = new StringBuilder + var line = reader.readLine() + while(line != null) { + stringBuilder.append(line) + stringBuilder.append("\n") + line = reader.readLine() + } + stringBuilder.toString() + } + } + + @transient protected[hive] lazy val hiveconf = new HiveConf(classOf[SessionState]) + @transient protected[hive] lazy val sessionState = new SessionState(hiveconf) + + sessionState.err = new PrintStream(outputBuffer, true, "UTF-8") + sessionState.out = new PrintStream(outputBuffer, true, "UTF-8") + + /* A catalyst metadata catalog that points to the Hive Metastore. */ + @transient + override protected[sql] lazy val catalog = new HiveMetastoreCatalog(this) with OverrideCatalog { + override def lookupRelation( + databaseName: Option[String], + tableName: String, + alias: Option[String] = None): LogicalPlan = { + + LowerCaseSchema(super.lookupRelation(databaseName, tableName, alias)) + } + } + + /* An analyzer that uses the Hive metastore. */ + @transient + override protected[sql] lazy val analyzer = + new Analyzer(catalog, HiveFunctionRegistry, caseSensitive = false) + + /** + * Runs the specified SQL query using Hive. + */ + protected def runSqlHive(sql: String): Seq[String] = { + val maxResults = 100000 + val results = runHive(sql, 100000) + // It is very confusing when you only get back some of the results... + if (results.size == maxResults) sys.error("RESULTS POSSIBLY TRUNCATED") + results + } + + SessionState.start(sessionState) + + /** + * Execute the command using Hive and return the results as a sequence. Each element + * in the sequence is one row. + */ + protected def runHive(cmd: String, maxRows: Int = 1000): Seq[String] = { + try { + val cmd_trimmed: String = cmd.trim() + val tokens: Array[String] = cmd_trimmed.split("\\s+") + val cmd_1: String = cmd_trimmed.substring(tokens(0).length()).trim() + val proc: CommandProcessor = CommandProcessorFactory.get(tokens(0), hiveconf) + + SessionState.start(sessionState) + + proc match { + case driver: Driver => + driver.init() + + val results = new JArrayList[String] + val response: CommandProcessorResponse = driver.run(cmd) + // Throw an exception if there is an error in query processing. + if (response.getResponseCode != 0) { + driver.destroy() + throw new QueryExecutionException(response.getErrorMessage) + } + driver.setMaxRows(maxRows) + driver.getResults(results) + driver.destroy() + results + case _ => + sessionState.out.println(tokens(0) + " " + cmd_1) + Seq(proc.run(cmd_1).getResponseCode.toString) + } + } catch { + case e: Exception => + logger.error( + s""" + |====================== + |HIVE FAILURE OUTPUT + |====================== + |${outputBuffer.toString} + |====================== + |END HIVE FAILURE OUTPUT + |====================== + """.stripMargin) + throw e + } + } + + @transient + val hivePlanner = new SparkPlanner with HiveStrategies { + val hiveContext = self + + override val strategies: Seq[Strategy] = Seq( + TakeOrdered, + ParquetOperations, + HiveTableScans, + DataSinks, + Scripts, + PartialAggregation, + HashJoin, + BasicOperators, + CartesianProduct, + BroadcastNestedLoopJoin + ) + } + + @transient + override protected[sql] val planner = hivePlanner + + @transient + protected lazy val emptyResult = + sparkContext.parallelize(Seq(new GenericRow(Array[Any]()): Row), 1) + + /** Extends QueryExecution with hive specific features. */ + protected[sql] abstract class QueryExecution extends super.QueryExecution { + // TODO: Create mixin for the analyzer instead of overriding things here. + override lazy val optimizedPlan = + optimizer(catalog.PreInsertionCasts(catalog.CreateTables(analyzed))) + + override lazy val toRdd: RDD[Row] = + analyzed match { + case NativeCommand(cmd) => + val output = runSqlHive(cmd) + + if (output.size == 0) { + emptyResult + } else { + val asRows = output.map(r => new GenericRow(r.split("\t").asInstanceOf[Array[Any]])) + sparkContext.parallelize(asRows, 1) + } + case _ => + executedPlan.execute().map(_.copy()) + } + + protected val primitiveTypes = + Seq(StringType, IntegerType, LongType, DoubleType, FloatType, BooleanType, ByteType, + ShortType, DecimalType) + + protected def toHiveString(a: (Any, DataType)): String = a match { + case (struct: Row, StructType(fields)) => + struct.zip(fields).map { + case (v, t) => s""""${t.name}":${toHiveStructString(v, t.dataType)}""" + }.mkString("{", ",", "}") + case (seq: Seq[_], ArrayType(typ))=> + seq.map(v => (v, typ)).map(toHiveStructString).mkString("[", ",", "]") + case (map: Map[_,_], MapType(kType, vType)) => + map.map { + case (key, value) => + toHiveStructString((key, kType)) + ":" + toHiveStructString((value, vType)) + }.toSeq.sorted.mkString("{", ",", "}") + case (null, _) => "NULL" + case (other, tpe) if primitiveTypes contains tpe => other.toString + } + + /** Hive outputs fields of structs slightly differently than top level attributes. */ + protected def toHiveStructString(a: (Any, DataType)): String = a match { + case (struct: Row, StructType(fields)) => + struct.zip(fields).map { + case (v, t) => s""""${t.name}":${toHiveStructString(v, t.dataType)}""" + }.mkString("{", ",", "}") + case (seq: Seq[_], ArrayType(typ))=> + seq.map(v => (v, typ)).map(toHiveStructString).mkString("[", ",", "]") + case (map: Map[_,_], MapType(kType, vType)) => + map.map { + case (key, value) => + toHiveStructString((key, kType)) + ":" + toHiveStructString((value, vType)) + }.toSeq.sorted.mkString("{", ",", "}") + case (null, _) => "null" + case (s: String, StringType) => "\"" + s + "\"" + case (other, tpe) if primitiveTypes contains tpe => other.toString + } + + /** + * Returns the result as a hive compatible sequence of strings. For native commands, the + * execution is simply passed back to Hive. + */ + def stringResult(): Seq[String] = analyzed match { + case NativeCommand(cmd) => runSqlHive(cmd) + case ExplainCommand(plan) => new QueryExecution { val logical = plan }.toString.split("\n") + case query => + val result: Seq[Seq[Any]] = toRdd.collect().toSeq + // We need the types so we can output struct field names + val types = analyzed.output.map(_.dataType) + // Reformat to match hive tab delimited output. + val asString = result.map(_.zip(types).map(toHiveString)).map(_.mkString("\t")).toSeq + asString + } + + override def simpleString: String = + logical match { + case _: NativeCommand => "" + case _ => executedPlan.toString + } + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala new file mode 100644 index 0000000000000..fc053c56c052d --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import scala.util.parsing.combinator.RegexParsers + +import org.apache.hadoop.hive.metastore.api.{FieldSchema, StorageDescriptor, SerDeInfo} +import org.apache.hadoop.hive.metastore.api.{Table => TTable, Partition => TPartition} +import org.apache.hadoop.hive.ql.metadata.{Hive, Partition, Table} +import org.apache.hadoop.hive.ql.plan.TableDesc +import org.apache.hadoop.hive.ql.session.SessionState +import org.apache.hadoop.hive.serde2.Deserializer + +import org.apache.spark.sql.Logging +import org.apache.spark.sql.catalyst.analysis.{EliminateAnalysisOperators, Catalog} +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans.logical +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.rules._ +import org.apache.spark.sql.catalyst.types._ + +/* Implicit conversions */ +import scala.collection.JavaConversions._ + +class HiveMetastoreCatalog(hive: HiveContext) extends Catalog with Logging { + import HiveMetastoreTypes._ + + val client = Hive.get(hive.hiveconf) + + def lookupRelation( + db: Option[String], + tableName: String, + alias: Option[String]): LogicalPlan = { + val databaseName = db.getOrElse(hive.sessionState.getCurrentDatabase) + val table = client.getTable(databaseName, tableName) + val partitions: Seq[Partition] = + if (table.isPartitioned) { + client.getPartitions(table) + } else { + Nil + } + + // Since HiveQL is case insensitive for table names we make them all lowercase. + MetastoreRelation( + databaseName.toLowerCase, + tableName.toLowerCase, + alias)(table.getTTable, partitions.map(part => part.getTPartition)) + } + + def createTable(databaseName: String, tableName: String, schema: Seq[Attribute]) { + val table = new Table(databaseName, tableName) + val hiveSchema = + schema.map(attr => new FieldSchema(attr.name, toMetastoreType(attr.dataType), "")) + table.setFields(hiveSchema) + + val sd = new StorageDescriptor() + table.getTTable.setSd(sd) + sd.setCols(hiveSchema) + + // TODO: THESE ARE ALL DEFAULTS, WE NEED TO PARSE / UNDERSTAND the output specs. + sd.setCompressed(false) + sd.setParameters(Map[String, String]()) + sd.setInputFormat("org.apache.hadoop.mapred.TextInputFormat") + sd.setOutputFormat("org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat") + val serDeInfo = new SerDeInfo() + serDeInfo.setName(tableName) + serDeInfo.setSerializationLib("org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe") + serDeInfo.setParameters(Map[String, String]()) + sd.setSerdeInfo(serDeInfo) + client.createTable(table) + } + + /** + * Creates any tables required for query execution. + * For example, because of a CREATE TABLE X AS statement. + */ + object CreateTables extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case InsertIntoCreatedTable(db, tableName, child) => + val databaseName = db.getOrElse(SessionState.get.getCurrentDatabase) + + createTable(databaseName, tableName, child.output) + + InsertIntoTable( + EliminateAnalysisOperators( + lookupRelation(Some(databaseName), tableName, None)), + Map.empty, + child, + overwrite = false) + } + } + + /** + * Casts input data to correct data types according to table definition before inserting into + * that table. + */ + object PreInsertionCasts extends Rule[LogicalPlan] { + def apply(plan: LogicalPlan): LogicalPlan = plan.transform { + // Wait until children are resolved + case p: LogicalPlan if !p.childrenResolved => p + + case p @ InsertIntoTable(table: MetastoreRelation, _, child, _) => + val childOutputDataTypes = child.output.map(_.dataType) + // Only check attributes, not partitionKeys since they are always strings. + // TODO: Fully support inserting into partitioned tables. + val tableOutputDataTypes = table.attributes.map(_.dataType) + + if (childOutputDataTypes == tableOutputDataTypes) { + p + } else { + // Only do the casting when child output data types differ from table output data types. + val castedChildOutput = child.output.zip(table.output).map { + case (input, output) if input.dataType != output.dataType => + Alias(Cast(input, output.dataType), input.name)() + case (input, _) => input + } + + p.copy(child = logical.Project(castedChildOutput, child)) + } + } + } + + /** + * UNIMPLEMENTED: It needs to be decided how we will persist in-memory tables to the metastore. + * For now, if this functionality is desired mix in the in-memory [[OverrideCatalog]]. + */ + override def registerTable( + databaseName: Option[String], tableName: String, plan: LogicalPlan): Unit = ??? + + /** + * UNIMPLEMENTED: It needs to be decided how we will persist in-memory tables to the metastore. + * For now, if this functionality is desired mix in the in-memory [[OverrideCatalog]]. + */ + override def unregisterTable( + databaseName: Option[String], tableName: String): Unit = ??? + + override def unregisterAllTables() = {} +} + +object HiveMetastoreTypes extends RegexParsers { + protected lazy val primitiveType: Parser[DataType] = + "string" ^^^ StringType | + "float" ^^^ FloatType | + "int" ^^^ IntegerType | + "tinyint" ^^^ ShortType | + "double" ^^^ DoubleType | + "bigint" ^^^ LongType | + "binary" ^^^ BinaryType | + "boolean" ^^^ BooleanType | + "decimal" ^^^ DecimalType | + "varchar\\((\\d+)\\)".r ^^^ StringType + + protected lazy val arrayType: Parser[DataType] = + "array" ~> "<" ~> dataType <~ ">" ^^ ArrayType + + protected lazy val mapType: Parser[DataType] = + "map" ~> "<" ~> dataType ~ "," ~ dataType <~ ">" ^^ { + case t1 ~ _ ~ t2 => MapType(t1, t2) + } + + protected lazy val structField: Parser[StructField] = + "[a-zA-Z0-9]*".r ~ ":" ~ dataType ^^ { + case name ~ _ ~ tpe => StructField(name, tpe, nullable = true) + } + + protected lazy val structType: Parser[DataType] = + "struct" ~> "<" ~> repsep(structField,",") <~ ">" ^^ StructType + + protected lazy val dataType: Parser[DataType] = + arrayType | + mapType | + structType | + primitiveType + + def toDataType(metastoreType: String): DataType = parseAll(dataType, metastoreType) match { + case Success(result, _) => result + case failure: NoSuccess => sys.error(s"Unsupported dataType: $metastoreType") + } + + def toMetastoreType(dt: DataType): String = dt match { + case ArrayType(elementType) => s"array<${toMetastoreType(elementType)}>" + case StructType(fields) => + s"struct<${fields.map(f => s"${f.name}:${toMetastoreType(f.dataType)}").mkString(",")}>" + case MapType(keyType, valueType) => + s"map<${toMetastoreType(keyType)},${toMetastoreType(valueType)}>" + case StringType => "string" + case FloatType => "float" + case IntegerType => "int" + case ShortType =>"tinyint" + case DoubleType => "double" + case LongType => "bigint" + case BinaryType => "binary" + case BooleanType => "boolean" + case DecimalType => "decimal" + } +} + +case class MetastoreRelation(databaseName: String, tableName: String, alias: Option[String]) + (val table: TTable, val partitions: Seq[TPartition]) + extends BaseRelation { + // TODO: Can we use org.apache.hadoop.hive.ql.metadata.Table as the type of table and + // use org.apache.hadoop.hive.ql.metadata.Partition as the type of elements of partitions. + // Right now, using org.apache.hadoop.hive.ql.metadata.Table and + // org.apache.hadoop.hive.ql.metadata.Partition will cause a NotSerializableException + // which indicates the SerDe we used is not Serializable. + + def hiveQlTable = new Table(table) + + def hiveQlPartitions = partitions.map { p => + new Partition(hiveQlTable, p) + } + + override def isPartitioned = hiveQlTable.isPartitioned + + val tableDesc = new TableDesc( + Class.forName(hiveQlTable.getSerializationLib).asInstanceOf[Class[Deserializer]], + hiveQlTable.getInputFormatClass, + // The class of table should be org.apache.hadoop.hive.ql.metadata.Table because + // getOutputFormatClass will use HiveFileFormatUtils.getOutputFormatSubstitute to + // substitute some output formats, e.g. substituting SequenceFileOutputFormat to + // HiveSequenceFileOutputFormat. + hiveQlTable.getOutputFormatClass, + hiveQlTable.getMetadata + ) + + implicit class SchemaAttribute(f: FieldSchema) { + def toAttribute = AttributeReference( + f.getName, + HiveMetastoreTypes.toDataType(f.getType), + // Since data can be dumped in randomly with no validation, everything is nullable. + nullable = true + )(qualifiers = tableName +: alias.toSeq) + } + + // Must be a stable value since new attributes are born here. + val partitionKeys = hiveQlTable.getPartitionKeys.map(_.toAttribute) + + /** Non-partitionKey attributes */ + val attributes = table.getSd.getCols.map(_.toAttribute) + + val output = attributes ++ partitionKeys +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala new file mode 100644 index 0000000000000..4dac25b3f60e4 --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala @@ -0,0 +1,968 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import org.apache.hadoop.hive.ql.lib.Node +import org.apache.hadoop.hive.ql.parse._ +import org.apache.hadoop.hive.ql.plan.PlanUtils + +import org.apache.spark.sql.catalyst.analysis._ +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.plans._ +import org.apache.spark.sql.catalyst.plans.logical +import org.apache.spark.sql.catalyst.plans.logical._ +import org.apache.spark.sql.catalyst.types._ + +/* Implicit conversions */ +import scala.collection.JavaConversions._ + +/** + * Used when we need to start parsing the AST before deciding that we are going to pass the command + * back for Hive to execute natively. Will be replaced with a native command that contains the + * cmd string. + */ +case object NativePlaceholder extends Command + +case class DfsCommand(cmd: String) extends Command + +case class ShellCommand(cmd: String) extends Command + +case class SourceCommand(filePath: String) extends Command + +case class AddJar(jarPath: String) extends Command + +case class AddFile(filePath: String) extends Command + +/** Provides a mapping from HiveQL statements to catalyst logical plans and expression trees. */ +object HiveQl { + protected val nativeCommands = Seq( + "TOK_DESCFUNCTION", + "TOK_DESCTABLE", + "TOK_DESCDATABASE", + "TOK_SHOW_TABLESTATUS", + "TOK_SHOWDATABASES", + "TOK_SHOWFUNCTIONS", + "TOK_SHOWINDEXES", + "TOK_SHOWINDEXES", + "TOK_SHOWPARTITIONS", + "TOK_SHOWTABLES", + + "TOK_LOCKTABLE", + "TOK_SHOWLOCKS", + "TOK_UNLOCKTABLE", + + "TOK_CREATEROLE", + "TOK_DROPROLE", + "TOK_GRANT", + "TOK_GRANT_ROLE", + "TOK_REVOKE", + "TOK_SHOW_GRANT", + "TOK_SHOW_ROLE_GRANT", + + "TOK_CREATEFUNCTION", + "TOK_DROPFUNCTION", + + "TOK_ANALYZE", + "TOK_ALTERDATABASE_PROPERTIES", + "TOK_ALTERINDEX_PROPERTIES", + "TOK_ALTERINDEX_REBUILD", + "TOK_ALTERTABLE_ADDCOLS", + "TOK_ALTERTABLE_ADDPARTS", + "TOK_ALTERTABLE_ALTERPARTS", + "TOK_ALTERTABLE_ARCHIVE", + "TOK_ALTERTABLE_CLUSTER_SORT", + "TOK_ALTERTABLE_DROPPARTS", + "TOK_ALTERTABLE_PARTITION", + "TOK_ALTERTABLE_PROPERTIES", + "TOK_ALTERTABLE_RENAME", + "TOK_ALTERTABLE_RENAMECOL", + "TOK_ALTERTABLE_REPLACECOLS", + "TOK_ALTERTABLE_SKEWED", + "TOK_ALTERTABLE_TOUCH", + "TOK_ALTERTABLE_UNARCHIVE", + "TOK_ANALYZE", + "TOK_CREATEDATABASE", + "TOK_CREATEFUNCTION", + "TOK_CREATEINDEX", + "TOK_DROPDATABASE", + "TOK_DROPINDEX", + "TOK_DROPTABLE", + "TOK_MSCK", + + // TODO(marmbrus): Figure out how view are expanded by hive, as we might need to handle this. + "TOK_ALTERVIEW_ADDPARTS", + "TOK_ALTERVIEW_AS", + "TOK_ALTERVIEW_DROPPARTS", + "TOK_ALTERVIEW_PROPERTIES", + "TOK_ALTERVIEW_RENAME", + "TOK_CREATEVIEW", + "TOK_DROPVIEW", + + "TOK_EXPORT", + "TOK_IMPORT", + "TOK_LOAD", + + "TOK_SWITCHDATABASE" + ) + + /** + * A set of implicit transformations that allow Hive ASTNodes to be rewritten by transformations + * similar to [[catalyst.trees.TreeNode]]. + * + * Note that this should be considered very experimental and is not indented as a replacement + * for TreeNode. Primarily it should be noted ASTNodes are not immutable and do not appear to + * have clean copy semantics. Therefore, users of this class should take care when + * copying/modifying trees that might be used elsewhere. + */ + implicit class TransformableNode(n: ASTNode) { + /** + * Returns a copy of this node where `rule` has been recursively applied to it and all of its + * children. When `rule` does not apply to a given node it is left unchanged. + * @param rule the function use to transform this nodes children + */ + def transform(rule: PartialFunction[ASTNode, ASTNode]): ASTNode = { + try { + val afterRule = rule.applyOrElse(n, identity[ASTNode]) + afterRule.withChildren( + nilIfEmpty(afterRule.getChildren) + .asInstanceOf[Seq[ASTNode]] + .map(ast => Option(ast).map(_.transform(rule)).orNull)) + } catch { + case e: Exception => + println(dumpTree(n)) + throw e + } + } + + /** + * Returns a scala.Seq equivalent to [s] or Nil if [s] is null. + */ + private def nilIfEmpty[A](s: java.util.List[A]): Seq[A] = + Option(s).map(_.toSeq).getOrElse(Nil) + + /** + * Returns this ASTNode with the text changed to `newText`. + */ + def withText(newText: String): ASTNode = { + n.token.asInstanceOf[org.antlr.runtime.CommonToken].setText(newText) + n + } + + /** + * Returns this ASTNode with the children changed to `newChildren`. + */ + def withChildren(newChildren: Seq[ASTNode]): ASTNode = { + (1 to n.getChildCount).foreach(_ => n.deleteChild(0)) + n.addChildren(newChildren) + n + } + + /** + * Throws an error if this is not equal to other. + * + * Right now this function only checks the name, type, text and children of the node + * for equality. + */ + def checkEquals(other: ASTNode) { + def check(field: String, f: ASTNode => Any) = if (f(n) != f(other)) { + sys.error(s"$field does not match for trees. " + + s"'${f(n)}' != '${f(other)}' left: ${dumpTree(n)}, right: ${dumpTree(other)}") + } + check("name", _.getName) + check("type", _.getType) + check("text", _.getText) + check("numChildren", n => nilIfEmpty(n.getChildren).size) + + val leftChildren = nilIfEmpty(n.getChildren).asInstanceOf[Seq[ASTNode]] + val rightChildren = nilIfEmpty(other.getChildren).asInstanceOf[Seq[ASTNode]] + leftChildren zip rightChildren foreach { + case (l,r) => l checkEquals r + } + } + } + + class ParseException(sql: String, cause: Throwable) + extends Exception(s"Failed to parse: $sql", cause) + + /** + * Returns the AST for the given SQL string. + */ + def getAst(sql: String): ASTNode = ParseUtils.findRootNonNullToken((new ParseDriver).parse(sql)) + + /** Returns a LogicalPlan for a given HiveQL string. */ + def parseSql(sql: String): LogicalPlan = { + try { + if (sql.toLowerCase.startsWith("set")) { + NativeCommand(sql) + } else if (sql.toLowerCase.startsWith("add jar")) { + AddJar(sql.drop(8)) + } else if (sql.toLowerCase.startsWith("add file")) { + AddFile(sql.drop(9)) + } else if (sql.startsWith("dfs")) { + DfsCommand(sql) + } else if (sql.startsWith("source")) { + SourceCommand(sql.split(" ").toSeq match { case Seq("source", filePath) => filePath }) + } else if (sql.startsWith("!")) { + ShellCommand(sql.drop(1)) + } else { + val tree = getAst(sql) + + if (nativeCommands contains tree.getText) { + NativeCommand(sql) + } else { + nodeToPlan(tree) match { + case NativePlaceholder => NativeCommand(sql) + case other => other + } + } + } + } catch { + case e: Exception => throw new ParseException(sql, e) + } + } + + def parseDdl(ddl: String): Seq[Attribute] = { + val tree = + try { + ParseUtils.findRootNonNullToken( + (new ParseDriver).parse(ddl, null /* no context required for parsing alone */)) + } catch { + case pe: org.apache.hadoop.hive.ql.parse.ParseException => + throw new RuntimeException(s"Failed to parse ddl: '$ddl'", pe) + } + assert(tree.asInstanceOf[ASTNode].getText == "TOK_CREATETABLE", "Only CREATE TABLE supported.") + val tableOps = tree.getChildren + val colList = + tableOps + .find(_.asInstanceOf[ASTNode].getText == "TOK_TABCOLLIST") + .getOrElse(sys.error("No columnList!")).getChildren + + colList.map(nodeToAttribute) + } + + /** Extractor for matching Hive's AST Tokens. */ + object Token { + /** @return matches of the form (tokenName, children). */ + def unapply(t: Any): Option[(String, Seq[ASTNode])] = t match { + case t: ASTNode => + Some((t.getText, + Option(t.getChildren).map(_.toList).getOrElse(Nil).asInstanceOf[Seq[ASTNode]])) + case _ => None + } + } + + protected def getClauses(clauseNames: Seq[String], nodeList: Seq[ASTNode]): Seq[Option[Node]] = { + var remainingNodes = nodeList + val clauses = clauseNames.map { clauseName => + val (matches, nonMatches) = remainingNodes.partition(_.getText.toUpperCase == clauseName) + remainingNodes = nonMatches ++ (if (matches.nonEmpty) matches.tail else Nil) + matches.headOption + } + + assert(remainingNodes.isEmpty, + s"Unhandled clauses: ${remainingNodes.map(dumpTree(_)).mkString("\n")}") + clauses + } + + def getClause(clauseName: String, nodeList: Seq[Node]) = + getClauseOption(clauseName, nodeList).getOrElse(sys.error( + s"Expected clause $clauseName missing from ${nodeList.map(dumpTree(_)).mkString("\n")}")) + + def getClauseOption(clauseName: String, nodeList: Seq[Node]): Option[Node] = { + nodeList.filter { case ast: ASTNode => ast.getText == clauseName } match { + case Seq(oneMatch) => Some(oneMatch) + case Seq() => None + case _ => sys.error(s"Found multiple instances of clause $clauseName") + } + } + + protected def nodeToAttribute(node: Node): Attribute = node match { + case Token("TOK_TABCOL", Token(colName, Nil) :: dataType :: Nil) => + AttributeReference(colName, nodeToDataType(dataType), true)() + + case a: ASTNode => + throw new NotImplementedError(s"No parse rules for:\n ${dumpTree(a).toString} ") + } + + protected def nodeToDataType(node: Node): DataType = node match { + case Token("TOK_DECIMAL", Nil) => DecimalType + case Token("TOK_BIGINT", Nil) => LongType + case Token("TOK_INT", Nil) => IntegerType + case Token("TOK_TINYINT", Nil) => ByteType + case Token("TOK_SMALLINT", Nil) => ShortType + case Token("TOK_BOOLEAN", Nil) => BooleanType + case Token("TOK_STRING", Nil) => StringType + case Token("TOK_FLOAT", Nil) => FloatType + case Token("TOK_DOUBLE", Nil) => DoubleType + case Token("TOK_TIMESTAMP", Nil) => TimestampType + case Token("TOK_BINARY", Nil) => BinaryType + case Token("TOK_LIST", elementType :: Nil) => ArrayType(nodeToDataType(elementType)) + case Token("TOK_STRUCT", + Token("TOK_TABCOLLIST", fields) :: Nil) => + StructType(fields.map(nodeToStructField)) + case Token("TOK_MAP", + keyType :: + valueType :: Nil) => + MapType(nodeToDataType(keyType), nodeToDataType(valueType)) + case a: ASTNode => + throw new NotImplementedError(s"No parse rules for DataType:\n ${dumpTree(a).toString} ") + } + + protected def nodeToStructField(node: Node): StructField = node match { + case Token("TOK_TABCOL", + Token(fieldName, Nil) :: + dataType :: Nil) => + StructField(fieldName, nodeToDataType(dataType), nullable = true) + case Token("TOK_TABCOL", + Token(fieldName, Nil) :: + dataType :: + _ /* comment */:: Nil) => + StructField(fieldName, nodeToDataType(dataType), nullable = true) + case a: ASTNode => + throw new NotImplementedError(s"No parse rules for StructField:\n ${dumpTree(a).toString} ") + } + + protected def nameExpressions(exprs: Seq[Expression]): Seq[NamedExpression] = { + exprs.zipWithIndex.map { + case (ne: NamedExpression, _) => ne + case (e, i) => Alias(e, s"c_$i")() + } + } + + protected def nodeToPlan(node: Node): LogicalPlan = node match { + // Just fake explain for any of the native commands. + case Token("TOK_EXPLAIN", explainArgs) if nativeCommands contains explainArgs.head.getText => + NoRelation + case Token("TOK_EXPLAIN", explainArgs) => + // Ignore FORMATTED if present. + val Some(query) :: _ :: _ :: Nil = + getClauses(Seq("TOK_QUERY", "FORMATTED", "EXTENDED"), explainArgs) + // TODO: support EXTENDED? + ExplainCommand(nodeToPlan(query)) + + case Token("TOK_CREATETABLE", children) + if children.collect { case t@Token("TOK_QUERY", _) => t }.nonEmpty => + // TODO: Parse other clauses. + // Reference: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL + val ( + Some(tableNameParts) :: + _ /* likeTable */ :: + Some(query) +: + notImplemented) = + getClauses( + Seq( + "TOK_TABNAME", + "TOK_LIKETABLE", + "TOK_QUERY", + "TOK_IFNOTEXISTS", + "TOK_TABLECOMMENT", + "TOK_TABCOLLIST", + "TOK_TABLEPARTCOLS", // Partitioned by + "TOK_TABLEBUCKETS", // Clustered by + "TOK_TABLESKEWED", // Skewed by + "TOK_TABLEROWFORMAT", + "TOK_TABLESERIALIZER", + "TOK_FILEFORMAT_GENERIC", // For file formats not natively supported by Hive. + "TOK_TBLSEQUENCEFILE", // Stored as SequenceFile + "TOK_TBLTEXTFILE", // Stored as TextFile + "TOK_TBLRCFILE", // Stored as RCFile + "TOK_TBLORCFILE", // Stored as ORC File + "TOK_TABLEFILEFORMAT", // User-provided InputFormat and OutputFormat + "TOK_STORAGEHANDLER", // Storage handler + "TOK_TABLELOCATION", + "TOK_TABLEPROPERTIES"), + children) + if (notImplemented.exists(token => !token.isEmpty)) { + throw new NotImplementedError( + s"Unhandled clauses: ${notImplemented.flatten.map(dumpTree(_)).mkString("\n")}") + } + + val (db, tableName) = + tableNameParts.getChildren.map{ case Token(part, Nil) => cleanIdentifier(part)} match { + case Seq(tableOnly) => (None, tableOnly) + case Seq(databaseName, table) => (Some(databaseName), table) + } + InsertIntoCreatedTable(db, tableName, nodeToPlan(query)) + + // If its not a "CREATE TABLE AS" like above then just pass it back to hive as a native command. + case Token("TOK_CREATETABLE", _) => NativePlaceholder + + case Token("TOK_QUERY", + Token("TOK_FROM", fromClause :: Nil) :: + insertClauses) => + + // Return one query for each insert clause. + val queries = insertClauses.map { case Token("TOK_INSERT", singleInsert) => + val ( + intoClause :: + destClause :: + selectClause :: + selectDistinctClause :: + whereClause :: + groupByClause :: + orderByClause :: + sortByClause :: + clusterByClause :: + distributeByClause :: + limitClause :: + lateralViewClause :: Nil) = { + getClauses( + Seq( + "TOK_INSERT_INTO", + "TOK_DESTINATION", + "TOK_SELECT", + "TOK_SELECTDI", + "TOK_WHERE", + "TOK_GROUPBY", + "TOK_ORDERBY", + "TOK_SORTBY", + "TOK_CLUSTERBY", + "TOK_DISTRIBUTEBY", + "TOK_LIMIT", + "TOK_LATERAL_VIEW"), + singleInsert) + } + + val relations = nodeToRelation(fromClause) + val withWhere = whereClause.map { whereNode => + val Seq(whereExpr) = whereNode.getChildren.toSeq + Filter(nodeToExpr(whereExpr), relations) + }.getOrElse(relations) + + val select = + (selectClause orElse selectDistinctClause).getOrElse(sys.error("No select clause.")) + + // Script transformations are expressed as a select clause with a single expression of type + // TOK_TRANSFORM + val transformation = select.getChildren.head match { + case Token("TOK_SELEXPR", + Token("TOK_TRANSFORM", + Token("TOK_EXPLIST", inputExprs) :: + Token("TOK_SERDE", Nil) :: + Token("TOK_RECORDWRITER", writerClause) :: + // TODO: Need to support other types of (in/out)put + Token(script, Nil) :: + Token("TOK_SERDE", serdeClause) :: + Token("TOK_RECORDREADER", readerClause) :: + outputClause :: Nil) :: Nil) => + + val output = outputClause match { + case Token("TOK_ALIASLIST", aliases) => + aliases.map { case Token(name, Nil) => AttributeReference(name, StringType)() } + case Token("TOK_TABCOLLIST", attributes) => + attributes.map { case Token("TOK_TABCOL", Token(name, Nil) :: dataType :: Nil) => + AttributeReference(name, nodeToDataType(dataType))() } + } + val unescapedScript = BaseSemanticAnalyzer.unescapeSQLString(script) + + Some( + logical.ScriptTransformation( + inputExprs.map(nodeToExpr), + unescapedScript, + output, + withWhere)) + case _ => None + } + + val withLateralView = lateralViewClause.map { lv => + val Token("TOK_SELECT", + Token("TOK_SELEXPR", clauses) :: Nil) = lv.getChildren.head + + val alias = + getClause("TOK_TABALIAS", clauses).getChildren.head.asInstanceOf[ASTNode].getText + + Generate( + nodesToGenerator(clauses), + join = true, + outer = false, + Some(alias.toLowerCase), + withWhere) + }.getOrElse(withWhere) + + + // The projection of the query can either be a normal projection, an aggregation + // (if there is a group by) or a script transformation. + val withProject = transformation.getOrElse { + // Not a transformation so must be either project or aggregation. + val selectExpressions = nameExpressions(select.getChildren.flatMap(selExprNodeToExpr)) + + groupByClause match { + case Some(groupBy) => + Aggregate(groupBy.getChildren.map(nodeToExpr), selectExpressions, withLateralView) + case None => + Project(selectExpressions, withLateralView) + } + } + + val withDistinct = + if (selectDistinctClause.isDefined) Distinct(withProject) else withProject + + val withSort = + (orderByClause, sortByClause, distributeByClause, clusterByClause) match { + case (Some(totalOrdering), None, None, None) => + Sort(totalOrdering.getChildren.map(nodeToSortOrder), withDistinct) + case (None, Some(perPartitionOrdering), None, None) => + SortPartitions(perPartitionOrdering.getChildren.map(nodeToSortOrder), withDistinct) + case (None, None, Some(partitionExprs), None) => + Repartition(partitionExprs.getChildren.map(nodeToExpr), withDistinct) + case (None, Some(perPartitionOrdering), Some(partitionExprs), None) => + SortPartitions(perPartitionOrdering.getChildren.map(nodeToSortOrder), + Repartition(partitionExprs.getChildren.map(nodeToExpr), withDistinct)) + case (None, None, None, Some(clusterExprs)) => + SortPartitions(clusterExprs.getChildren.map(nodeToExpr).map(SortOrder(_, Ascending)), + Repartition(clusterExprs.getChildren.map(nodeToExpr), withDistinct)) + case (None, None, None, None) => withDistinct + case _ => sys.error("Unsupported set of ordering / distribution clauses.") + } + + val withLimit = + limitClause.map(l => nodeToExpr(l.getChildren.head)) + .map(Limit(_, withSort)) + .getOrElse(withSort) + + // TOK_INSERT_INTO means to add files to the table. + // TOK_DESTINATION means to overwrite the table. + val resultDestination = + (intoClause orElse destClause).getOrElse(sys.error("No destination found.")) + val overwrite = if (intoClause.isEmpty) true else false + nodeToDest( + resultDestination, + withLimit, + overwrite) + } + + // If there are multiple INSERTS just UNION them together into on query. + queries.reduceLeft(Union) + + case Token("TOK_UNION", left :: right :: Nil) => Union(nodeToPlan(left), nodeToPlan(right)) + + case a: ASTNode => + throw new NotImplementedError(s"No parse rules for:\n ${dumpTree(a).toString} ") + } + + val allJoinTokens = "(TOK_.*JOIN)".r + val laterViewToken = "TOK_LATERAL_VIEW(.*)".r + def nodeToRelation(node: Node): LogicalPlan = node match { + case Token("TOK_SUBQUERY", + query :: Token(alias, Nil) :: Nil) => + Subquery(alias, nodeToPlan(query)) + + case Token(laterViewToken(isOuter), selectClause :: relationClause :: Nil) => + val Token("TOK_SELECT", + Token("TOK_SELEXPR", clauses) :: Nil) = selectClause + + val alias = getClause("TOK_TABALIAS", clauses).getChildren.head.asInstanceOf[ASTNode].getText + + Generate( + nodesToGenerator(clauses), + join = true, + outer = isOuter.nonEmpty, + Some(alias.toLowerCase), + nodeToRelation(relationClause)) + + /* All relations, possibly with aliases or sampling clauses. */ + case Token("TOK_TABREF", clauses) => + // If the last clause is not a token then it's the alias of the table. + val (nonAliasClauses, aliasClause) = + if (clauses.last.getText.startsWith("TOK")) { + (clauses, None) + } else { + (clauses.dropRight(1), Some(clauses.last)) + } + + val (Some(tableNameParts) :: + splitSampleClause :: + bucketSampleClause :: Nil) = { + getClauses(Seq("TOK_TABNAME", "TOK_TABLESPLITSAMPLE", "TOK_TABLEBUCKETSAMPLE"), + nonAliasClauses) + } + + val (db, tableName) = + tableNameParts.getChildren.map{ case Token(part, Nil) => cleanIdentifier(part)} match { + case Seq(tableOnly) => (None, tableOnly) + case Seq(databaseName, table) => (Some(databaseName), table) + } + val alias = aliasClause.map { case Token(a, Nil) => cleanIdentifier(a) } + val relation = UnresolvedRelation(db, tableName, alias) + + // Apply sampling if requested. + (bucketSampleClause orElse splitSampleClause).map { + case Token("TOK_TABLESPLITSAMPLE", + Token("TOK_ROWCOUNT", Nil) :: + Token(count, Nil) :: Nil) => + Limit(Literal(count.toInt), relation) + case Token("TOK_TABLESPLITSAMPLE", + Token("TOK_PERCENT", Nil) :: + Token(fraction, Nil) :: Nil) => + Sample(fraction.toDouble, withReplacement = false, (math.random * 1000).toInt, relation) + case Token("TOK_TABLEBUCKETSAMPLE", + Token(numerator, Nil) :: + Token(denominator, Nil) :: Nil) => + val fraction = numerator.toDouble / denominator.toDouble + Sample(fraction, withReplacement = false, (math.random * 1000).toInt, relation) + case a: ASTNode => + throw new NotImplementedError( + s"""No parse rules for sampling clause: ${a.getType}, text: ${a.getText} : + |${dumpTree(a).toString}" + + """.stripMargin) + }.getOrElse(relation) + + case Token("TOK_UNIQUEJOIN", joinArgs) => + val tableOrdinals = + joinArgs.zipWithIndex.filter { + case (arg, i) => arg.getText == "TOK_TABREF" + }.map(_._2) + + val isPreserved = tableOrdinals.map(i => (i - 1 < 0) || joinArgs(i - 1).getText == "PRESERVE") + val tables = tableOrdinals.map(i => nodeToRelation(joinArgs(i))) + val joinExpressions = tableOrdinals.map(i => joinArgs(i + 1).getChildren.map(nodeToExpr)) + + val joinConditions = joinExpressions.sliding(2).map { + case Seq(c1, c2) => + val predicates = (c1, c2).zipped.map { case (e1, e2) => Equals(e1, e2): Expression } + predicates.reduceLeft(And) + }.toBuffer + + val joinType = isPreserved.sliding(2).map { + case Seq(true, true) => FullOuter + case Seq(true, false) => LeftOuter + case Seq(false, true) => RightOuter + case Seq(false, false) => Inner + }.toBuffer + + val joinedTables = tables.reduceLeft(Join(_,_, Inner, None)) + + // Must be transform down. + val joinedResult = joinedTables transform { + case j: Join => + j.copy( + condition = Some(joinConditions.remove(joinConditions.length - 1)), + joinType = joinType.remove(joinType.length - 1)) + } + + val groups = (0 until joinExpressions.head.size).map(i => Coalesce(joinExpressions.map(_(i)))) + + // Unique join is not really the same as an outer join so we must group together results where + // the joinExpressions are the same, taking the First of each value is only okay because the + // user of a unique join is implicitly promising that there is only one result. + // TODO: This doesn't actually work since [[Star]] is not a valid aggregate expression. + // instead we should figure out how important supporting this feature is and whether it is + // worth the number of hacks that will be required to implement it. Namely, we need to add + // some sort of mapped star expansion that would expand all child output row to be similarly + // named output expressions where some aggregate expression has been applied (i.e. First). + ??? // Aggregate(groups, Star(None, First(_)) :: Nil, joinedResult) + + case Token(allJoinTokens(joinToken), + relation1 :: + relation2 :: other) => + assert(other.size <= 1, s"Unhandled join child $other") + val joinType = joinToken match { + case "TOK_JOIN" => Inner + case "TOK_RIGHTOUTERJOIN" => RightOuter + case "TOK_LEFTOUTERJOIN" => LeftOuter + case "TOK_FULLOUTERJOIN" => FullOuter + } + assert(other.size <= 1, "Unhandled join clauses.") + Join(nodeToRelation(relation1), + nodeToRelation(relation2), + joinType, + other.headOption.map(nodeToExpr)) + + case a: ASTNode => + throw new NotImplementedError(s"No parse rules for:\n ${dumpTree(a).toString} ") + } + + def nodeToSortOrder(node: Node): SortOrder = node match { + case Token("TOK_TABSORTCOLNAMEASC", sortExpr :: Nil) => + SortOrder(nodeToExpr(sortExpr), Ascending) + case Token("TOK_TABSORTCOLNAMEDESC", sortExpr :: Nil) => + SortOrder(nodeToExpr(sortExpr), Descending) + + case a: ASTNode => + throw new NotImplementedError(s"No parse rules for:\n ${dumpTree(a).toString} ") + } + + val destinationToken = "TOK_DESTINATION|TOK_INSERT_INTO".r + protected def nodeToDest( + node: Node, + query: LogicalPlan, + overwrite: Boolean): LogicalPlan = node match { + case Token(destinationToken(), + Token("TOK_DIR", + Token("TOK_TMP_FILE", Nil) :: Nil) :: Nil) => + query + + case Token(destinationToken(), + Token("TOK_TAB", + tableArgs) :: Nil) => + val Some(tableNameParts) :: partitionClause :: Nil = + getClauses(Seq("TOK_TABNAME", "TOK_PARTSPEC"), tableArgs) + + val (db, tableName) = + tableNameParts.getChildren.map{ case Token(part, Nil) => cleanIdentifier(part)} match { + case Seq(tableOnly) => (None, tableOnly) + case Seq(databaseName, table) => (Some(databaseName), table) + } + + val partitionKeys = partitionClause.map(_.getChildren.map { + // Parse partitions. We also make keys case insensitive. + case Token("TOK_PARTVAL", Token(key, Nil) :: Token(value, Nil) :: Nil) => + cleanIdentifier(key.toLowerCase) -> Some(PlanUtils.stripQuotes(value)) + case Token("TOK_PARTVAL", Token(key, Nil) :: Nil) => + cleanIdentifier(key.toLowerCase) -> None + }.toMap).getOrElse(Map.empty) + + if (partitionKeys.values.exists(p => p.isEmpty)) { + throw new NotImplementedError(s"Do not support INSERT INTO/OVERWRITE with" + + s"dynamic partitioning.") + } + + InsertIntoTable(UnresolvedRelation(db, tableName, None), partitionKeys, query, overwrite) + + case a: ASTNode => + throw new NotImplementedError(s"No parse rules for:\n ${dumpTree(a).toString} ") + } + + protected def selExprNodeToExpr(node: Node): Option[Expression] = node match { + case Token("TOK_SELEXPR", + e :: Nil) => + Some(nodeToExpr(e)) + + case Token("TOK_SELEXPR", + e :: Token(alias, Nil) :: Nil) => + Some(Alias(nodeToExpr(e), alias)()) + + /* Hints are ignored */ + case Token("TOK_HINTLIST", _) => None + + case a: ASTNode => + throw new NotImplementedError(s"No parse rules for:\n ${dumpTree(a).toString} ") + } + + + protected val escapedIdentifier = "`([^`]+)`".r + /** Strips backticks from ident if present */ + protected def cleanIdentifier(ident: String): String = ident match { + case escapedIdentifier(i) => i + case plainIdent => plainIdent + } + + val numericAstTypes = Seq( + HiveParser.Number, + HiveParser.TinyintLiteral, + HiveParser.SmallintLiteral, + HiveParser.BigintLiteral) + + /* Case insensitive matches */ + val COUNT = "(?i)COUNT".r + val AVG = "(?i)AVG".r + val SUM = "(?i)SUM".r + val RAND = "(?i)RAND".r + val AND = "(?i)AND".r + val OR = "(?i)OR".r + val NOT = "(?i)NOT".r + val TRUE = "(?i)TRUE".r + val FALSE = "(?i)FALSE".r + + protected def nodeToExpr(node: Node): Expression = node match { + /* Attribute References */ + case Token("TOK_TABLE_OR_COL", + Token(name, Nil) :: Nil) => + UnresolvedAttribute(cleanIdentifier(name)) + case Token(".", qualifier :: Token(attr, Nil) :: Nil) => + nodeToExpr(qualifier) match { + case UnresolvedAttribute(qualifierName) => + UnresolvedAttribute(qualifierName + "." + cleanIdentifier(attr)) + // The precidence for . seems to be wrong, so [] binds tighter an we need to go inside to + // find the underlying attribute references. + case GetItem(UnresolvedAttribute(qualifierName), ordinal) => + GetItem(UnresolvedAttribute(qualifierName + "." + cleanIdentifier(attr)), ordinal) + } + + /* Stars (*) */ + case Token("TOK_ALLCOLREF", Nil) => Star(None) + // The format of dbName.tableName.* cannot be parsed by HiveParser. TOK_TABNAME will only + // has a single child which is tableName. + case Token("TOK_ALLCOLREF", Token("TOK_TABNAME", Token(name, Nil) :: Nil) :: Nil) => + Star(Some(name)) + + /* Aggregate Functions */ + case Token("TOK_FUNCTION", Token(AVG(), Nil) :: arg :: Nil) => Average(nodeToExpr(arg)) + case Token("TOK_FUNCTION", Token(COUNT(), Nil) :: arg :: Nil) => Count(nodeToExpr(arg)) + case Token("TOK_FUNCTIONSTAR", Token(COUNT(), Nil) :: Nil) => Count(Literal(1)) + case Token("TOK_FUNCTIONDI", Token(COUNT(), Nil) :: args) => CountDistinct(args.map(nodeToExpr)) + case Token("TOK_FUNCTION", Token(SUM(), Nil) :: arg :: Nil) => Sum(nodeToExpr(arg)) + case Token("TOK_FUNCTIONDI", Token(SUM(), Nil) :: arg :: Nil) => SumDistinct(nodeToExpr(arg)) + + /* Casts */ + case Token("TOK_FUNCTION", Token("TOK_STRING", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), StringType) + case Token("TOK_FUNCTION", Token("TOK_VARCHAR", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), StringType) + case Token("TOK_FUNCTION", Token("TOK_INT", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), IntegerType) + case Token("TOK_FUNCTION", Token("TOK_BIGINT", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), LongType) + case Token("TOK_FUNCTION", Token("TOK_FLOAT", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), FloatType) + case Token("TOK_FUNCTION", Token("TOK_DOUBLE", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), DoubleType) + case Token("TOK_FUNCTION", Token("TOK_SMALLINT", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), ShortType) + case Token("TOK_FUNCTION", Token("TOK_TINYINT", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), ByteType) + case Token("TOK_FUNCTION", Token("TOK_BINARY", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), BinaryType) + case Token("TOK_FUNCTION", Token("TOK_BOOLEAN", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), BooleanType) + case Token("TOK_FUNCTION", Token("TOK_DECIMAL", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), DecimalType) + case Token("TOK_FUNCTION", Token("TOK_TIMESTAMP", Nil) :: arg :: Nil) => + Cast(nodeToExpr(arg), TimestampType) + + /* Arithmetic */ + case Token("-", child :: Nil) => UnaryMinus(nodeToExpr(child)) + case Token("+", left :: right:: Nil) => Add(nodeToExpr(left), nodeToExpr(right)) + case Token("-", left :: right:: Nil) => Subtract(nodeToExpr(left), nodeToExpr(right)) + case Token("*", left :: right:: Nil) => Multiply(nodeToExpr(left), nodeToExpr(right)) + case Token("/", left :: right:: Nil) => Divide(nodeToExpr(left), nodeToExpr(right)) + case Token("DIV", left :: right:: Nil) => Divide(nodeToExpr(left), nodeToExpr(right)) + case Token("%", left :: right:: Nil) => Remainder(nodeToExpr(left), nodeToExpr(right)) + + /* Comparisons */ + case Token("=", left :: right:: Nil) => Equals(nodeToExpr(left), nodeToExpr(right)) + case Token("!=", left :: right:: Nil) => Not(Equals(nodeToExpr(left), nodeToExpr(right))) + case Token("<>", left :: right:: Nil) => Not(Equals(nodeToExpr(left), nodeToExpr(right))) + case Token(">", left :: right:: Nil) => GreaterThan(nodeToExpr(left), nodeToExpr(right)) + case Token(">=", left :: right:: Nil) => GreaterThanOrEqual(nodeToExpr(left), nodeToExpr(right)) + case Token("<", left :: right:: Nil) => LessThan(nodeToExpr(left), nodeToExpr(right)) + case Token("<=", left :: right:: Nil) => LessThanOrEqual(nodeToExpr(left), nodeToExpr(right)) + case Token("LIKE", left :: right:: Nil) => Like(nodeToExpr(left), nodeToExpr(right)) + case Token("RLIKE", left :: right:: Nil) => RLike(nodeToExpr(left), nodeToExpr(right)) + case Token("REGEXP", left :: right:: Nil) => RLike(nodeToExpr(left), nodeToExpr(right)) + case Token("TOK_FUNCTION", Token("TOK_ISNOTNULL", Nil) :: child :: Nil) => + IsNotNull(nodeToExpr(child)) + case Token("TOK_FUNCTION", Token("TOK_ISNULL", Nil) :: child :: Nil) => + IsNull(nodeToExpr(child)) + case Token("TOK_FUNCTION", Token("IN", Nil) :: value :: list) => + In(nodeToExpr(value), list.map(nodeToExpr)) + + /* Boolean Logic */ + case Token(AND(), left :: right:: Nil) => And(nodeToExpr(left), nodeToExpr(right)) + case Token(OR(), left :: right:: Nil) => Or(nodeToExpr(left), nodeToExpr(right)) + case Token(NOT(), child :: Nil) => Not(nodeToExpr(child)) + + /* Complex datatype manipulation */ + case Token("[", child :: ordinal :: Nil) => + GetItem(nodeToExpr(child), nodeToExpr(ordinal)) + + /* Other functions */ + case Token("TOK_FUNCTION", Token(RAND(), Nil) :: Nil) => Rand + + /* UDFs - Must be last otherwise will preempt built in functions */ + case Token("TOK_FUNCTION", Token(name, Nil) :: args) => + UnresolvedFunction(name, args.map(nodeToExpr)) + case Token("TOK_FUNCTIONSTAR", Token(name, Nil) :: args) => + UnresolvedFunction(name, Star(None) :: Nil) + + /* Literals */ + case Token("TOK_NULL", Nil) => Literal(null, NullType) + case Token(TRUE(), Nil) => Literal(true, BooleanType) + case Token(FALSE(), Nil) => Literal(false, BooleanType) + case Token("TOK_STRINGLITERALSEQUENCE", strings) => + Literal(strings.map(s => BaseSemanticAnalyzer.unescapeSQLString(s.getText)).mkString) + + // This code is adapted from + // /ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java#L223 + case ast: ASTNode if numericAstTypes contains ast.getType => + var v: Literal = null + try { + if (ast.getText.endsWith("L")) { + // Literal bigint. + v = Literal(ast.getText.substring(0, ast.getText.length() - 1).toLong, LongType) + } else if (ast.getText.endsWith("S")) { + // Literal smallint. + v = Literal(ast.getText.substring(0, ast.getText.length() - 1).toShort, ShortType) + } else if (ast.getText.endsWith("Y")) { + // Literal tinyint. + v = Literal(ast.getText.substring(0, ast.getText.length() - 1).toByte, ByteType) + } else if (ast.getText.endsWith("BD")) { + // Literal decimal + val strVal = ast.getText.substring(0, ast.getText.length() - 2) + BigDecimal(strVal) + } else { + v = Literal(ast.getText.toDouble, DoubleType) + v = Literal(ast.getText.toLong, LongType) + v = Literal(ast.getText.toInt, IntegerType) + } + } catch { + case nfe: NumberFormatException => // Do nothing + } + + if (v == null) { + sys.error(s"Failed to parse number ${ast.getText}") + } else { + v + } + + case ast: ASTNode if ast.getType == HiveParser.StringLiteral => + Literal(BaseSemanticAnalyzer.unescapeSQLString(ast.getText)) + + case a: ASTNode => + throw new NotImplementedError( + s"""No parse rules for ASTNode type: ${a.getType}, text: ${a.getText} : + |${dumpTree(a).toString}" + + """.stripMargin) + } + + + val explode = "(?i)explode".r + def nodesToGenerator(nodes: Seq[Node]): Generator = { + val function = nodes.head + + val attributes = nodes.flatMap { + case Token(a, Nil) => a.toLowerCase :: Nil + case _ => Nil + } + + function match { + case Token("TOK_FUNCTION", Token(explode(), Nil) :: child :: Nil) => + Explode(attributes, nodeToExpr(child)) + + case Token("TOK_FUNCTION", Token(functionName, Nil) :: children) => + HiveGenericUdtf(functionName, attributes, children.map(nodeToExpr)) + + case a: ASTNode => + throw new NotImplementedError( + s"""No parse rules for ASTNode type: ${a.getType}, text: ${a.getText}, tree: + |${dumpTree(a).toString} + """.stripMargin) + } + } + + def dumpTree(node: Node, builder: StringBuilder = new StringBuilder, indent: Int = 0) + : StringBuilder = { + node match { + case a: ASTNode => builder.append((" " * indent) + a.getText + "\n") + case other => sys.error(s"Non ASTNode encountered: $other") + } + + Option(node.getChildren).map(_.toList).getOrElse(Nil).foreach(dumpTree(_, builder, indent + 1)) + builder + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveStrategies.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveStrategies.scala new file mode 100644 index 0000000000000..3ca1d93c11fa9 --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveStrategies.scala @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import org.apache.spark.sql.SQLContext +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.planning._ +import org.apache.spark.sql.catalyst.plans._ +import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan +import org.apache.spark.sql.execution._ + +trait HiveStrategies { + // Possibly being too clever with types here... or not clever enough. + self: SQLContext#SparkPlanner => + + val hiveContext: HiveContext + + object Scripts extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case logical.ScriptTransformation(input, script, output, child) => + ScriptTransformation(input, script, output, planLater(child))(hiveContext) :: Nil + case _ => Nil + } + } + + object DataSinks extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case logical.InsertIntoTable(table: MetastoreRelation, partition, child, overwrite) => + InsertIntoHiveTable(table, partition, planLater(child), overwrite)(hiveContext) :: Nil + case _ => Nil + } + } + + /** + * Retrieves data using a HiveTableScan. Partition pruning predicates are also detected and + * applied. + */ + object HiveTableScans extends Strategy { + def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { + case PhysicalOperation(projectList, predicates, relation: MetastoreRelation) => + // Filter out all predicates that only deal with partition keys, these are given to the + // hive table scan operator to be used for partition pruning. + val partitionKeyIds = relation.partitionKeys.map(_.exprId).toSet + val (pruningPredicates, otherPredicates) = predicates.partition { + _.references.map(_.exprId).subsetOf(partitionKeyIds) + + } + + pruneFilterProject( + projectList, + otherPredicates, + HiveTableScan(_, relation, pruningPredicates.reduceLeftOption(And))(hiveContext)) :: Nil + case _ => + Nil + } + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/ScriptTransformation.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/ScriptTransformation.scala new file mode 100644 index 0000000000000..2610100043659 --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/ScriptTransformation.scala @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import java.io.{BufferedReader, InputStreamReader} + +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.execution._ + +/* Implicit conversions */ +import scala.collection.JavaConversions._ + +/** + * Transforms the input by forking and running the specified script. + * + * @param input the set of expression that should be passed to the script. + * @param script the command that should be executed. + * @param output the attributes that are produced by the script. + */ +case class ScriptTransformation( + input: Seq[Expression], + script: String, + output: Seq[Attribute], + child: SparkPlan)(@transient sc: HiveContext) + extends UnaryNode { + + override def otherCopyArgs = sc :: Nil + + def execute() = { + child.execute().mapPartitions { iter => + val cmd = List("/bin/bash", "-c", script) + val builder = new ProcessBuilder(cmd) + val proc = builder.start() + val inputStream = proc.getInputStream + val outputStream = proc.getOutputStream + val reader = new BufferedReader(new InputStreamReader(inputStream)) + + // TODO: This should be exposed as an iterator instead of reading in all the data at once. + val outputLines = collection.mutable.ArrayBuffer[Row]() + val readerThread = new Thread("Transform OutputReader") { + override def run() { + var curLine = reader.readLine() + while (curLine != null) { + // TODO: Use SerDe + outputLines += new GenericRow(curLine.split("\t").asInstanceOf[Array[Any]]) + curLine = reader.readLine() + } + } + } + readerThread.start() + val outputProjection = new Projection(input) + iter + .map(outputProjection) + // TODO: Use SerDe + .map(_.mkString("", "\t", "\n").getBytes).foreach(outputStream.write) + outputStream.close() + readerThread.join() + outputLines.toIterator + } + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala new file mode 100644 index 0000000000000..0da5eb754cb3f --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala @@ -0,0 +1,240 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.fs.{Path, PathFilter} +import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants._ +import org.apache.hadoop.hive.ql.exec.Utilities +import org.apache.hadoop.hive.ql.metadata.{Partition => HivePartition, Table => HiveTable} +import org.apache.hadoop.hive.ql.plan.TableDesc +import org.apache.hadoop.hive.serde2.Deserializer +import org.apache.hadoop.io.Writable +import org.apache.hadoop.mapred.{FileInputFormat, InputFormat, JobConf} + +import org.apache.spark.SerializableWritable +import org.apache.spark.broadcast.Broadcast +import org.apache.spark.rdd.{EmptyRDD, HadoopRDD, RDD, UnionRDD} + +/** + * A trait for subclasses that handle table scans. + */ +private[hive] sealed trait TableReader { + def makeRDDForTable(hiveTable: HiveTable): RDD[_] + + def makeRDDForPartitionedTable(partitions: Seq[HivePartition]): RDD[_] +} + + +/** + * Helper class for scanning tables stored in Hadoop - e.g., to read Hive tables that reside in the + * data warehouse directory. + */ +private[hive] +class HadoopTableReader(@transient _tableDesc: TableDesc, @transient sc: HiveContext) + extends TableReader { + + // Choose the minimum number of splits. If mapred.map.tasks is set, then use that unless + // it is smaller than what Spark suggests. + private val _minSplitsPerRDD = math.max( + sc.hiveconf.getInt("mapred.map.tasks", 1), sc.sparkContext.defaultMinSplits) + + // TODO: set aws s3 credentials. + + private val _broadcastedHiveConf = + sc.sparkContext.broadcast(new SerializableWritable(sc.hiveconf)) + + def broadcastedHiveConf = _broadcastedHiveConf + + def hiveConf = _broadcastedHiveConf.value.value + + override def makeRDDForTable(hiveTable: HiveTable): RDD[_] = + makeRDDForTable( + hiveTable, + _tableDesc.getDeserializerClass.asInstanceOf[Class[Deserializer]], + filterOpt = None) + + /** + * Creates a Hadoop RDD to read data from the target table's data directory. Returns a transformed + * RDD that contains deserialized rows. + * + * @param hiveTable Hive metadata for the table being scanned. + * @param deserializerClass Class of the SerDe used to deserialize Writables read from Hadoop. + * @param filterOpt If defined, then the filter is used to reject files contained in the data + * directory being read. If None, then all files are accepted. + */ + def makeRDDForTable( + hiveTable: HiveTable, + deserializerClass: Class[_ <: Deserializer], + filterOpt: Option[PathFilter]): RDD[_] = { + + assert(!hiveTable.isPartitioned, """makeRDDForTable() cannot be called on a partitioned table, + since input formats may differ across partitions. Use makeRDDForTablePartitions() instead.""") + + // Create local references to member variables, so that the entire `this` object won't be + // serialized in the closure below. + val tableDesc = _tableDesc + val broadcastedHiveConf = _broadcastedHiveConf + + val tablePath = hiveTable.getPath + val inputPathStr = applyFilterIfNeeded(tablePath, filterOpt) + + // logDebug("Table input: %s".format(tablePath)) + val ifc = hiveTable.getInputFormatClass + .asInstanceOf[java.lang.Class[InputFormat[Writable, Writable]]] + val hadoopRDD = createHadoopRdd(tableDesc, inputPathStr, ifc) + + val deserializedHadoopRDD = hadoopRDD.mapPartitions { iter => + val hconf = broadcastedHiveConf.value.value + val deserializer = deserializerClass.newInstance() + deserializer.initialize(hconf, tableDesc.getProperties) + + // Deserialize each Writable to get the row value. + iter.map { + case v: Writable => deserializer.deserialize(v) + case value => + sys.error(s"Unable to deserialize non-Writable: $value of ${value.getClass.getName}") + } + } + + deserializedHadoopRDD + } + + override def makeRDDForPartitionedTable(partitions: Seq[HivePartition]): RDD[_] = { + val partitionToDeserializer = partitions.map(part => + (part, part.getDeserializer.getClass.asInstanceOf[Class[Deserializer]])).toMap + makeRDDForPartitionedTable(partitionToDeserializer, filterOpt = None) + } + + /** + * Create a HadoopRDD for every partition key specified in the query. Note that for on-disk Hive + * tables, a data directory is created for each partition corresponding to keys specified using + * 'PARTITION BY'. + * + * @param partitionToDeserializer Mapping from a Hive Partition metadata object to the SerDe + * class to use to deserialize input Writables from the corresponding partition. + * @param filterOpt If defined, then the filter is used to reject files contained in the data + * subdirectory of each partition being read. If None, then all files are accepted. + */ + def makeRDDForPartitionedTable( + partitionToDeserializer: Map[HivePartition, Class[_ <: Deserializer]], + filterOpt: Option[PathFilter]): RDD[_] = { + + val hivePartitionRDDs = partitionToDeserializer.map { case (partition, partDeserializer) => + val partDesc = Utilities.getPartitionDesc(partition) + val partPath = partition.getPartitionPath + val inputPathStr = applyFilterIfNeeded(partPath, filterOpt) + val ifc = partDesc.getInputFileFormatClass + .asInstanceOf[java.lang.Class[InputFormat[Writable, Writable]]] + // Get partition field info + val partSpec = partDesc.getPartSpec + val partProps = partDesc.getProperties + + val partColsDelimited: String = partProps.getProperty(META_TABLE_PARTITION_COLUMNS) + // Partitioning columns are delimited by "/" + val partCols = partColsDelimited.trim().split("/").toSeq + // 'partValues[i]' contains the value for the partitioning column at 'partCols[i]'. + val partValues = if (partSpec == null) { + Array.fill(partCols.size)(new String) + } else { + partCols.map(col => new String(partSpec.get(col))).toArray + } + + // Create local references so that the outer object isn't serialized. + val tableDesc = _tableDesc + val broadcastedHiveConf = _broadcastedHiveConf + val localDeserializer = partDeserializer + + val hivePartitionRDD = createHadoopRdd(tableDesc, inputPathStr, ifc) + hivePartitionRDD.mapPartitions { iter => + val hconf = broadcastedHiveConf.value.value + val rowWithPartArr = new Array[Object](2) + // Map each tuple to a row object + iter.map { value => + val deserializer = localDeserializer.newInstance() + deserializer.initialize(hconf, partProps) + val deserializedRow = deserializer.deserialize(value) + rowWithPartArr.update(0, deserializedRow) + rowWithPartArr.update(1, partValues) + rowWithPartArr.asInstanceOf[Object] + } + } + }.toSeq + + // Even if we don't use any partitions, we still need an empty RDD + if (hivePartitionRDDs.size == 0) { + new EmptyRDD[Object](sc.sparkContext) + } else { + new UnionRDD(hivePartitionRDDs(0).context, hivePartitionRDDs) + } + } + + /** + * If `filterOpt` is defined, then it will be used to filter files from `path`. These files are + * returned in a single, comma-separated string. + */ + private def applyFilterIfNeeded(path: Path, filterOpt: Option[PathFilter]): String = { + filterOpt match { + case Some(filter) => + val fs = path.getFileSystem(sc.hiveconf) + val filteredFiles = fs.listStatus(path, filter).map(_.getPath.toString) + filteredFiles.mkString(",") + case None => path.toString + } + } + + /** + * Creates a HadoopRDD based on the broadcasted HiveConf and other job properties that will be + * applied locally on each slave. + */ + private def createHadoopRdd( + tableDesc: TableDesc, + path: String, + inputFormatClass: Class[InputFormat[Writable, Writable]]): RDD[Writable] = { + + val initializeJobConfFunc = HadoopTableReader.initializeLocalJobConfFunc(path, tableDesc) _ + + val rdd = new HadoopRDD( + sc.sparkContext, + _broadcastedHiveConf.asInstanceOf[Broadcast[SerializableWritable[Configuration]]], + Some(initializeJobConfFunc), + inputFormatClass, + classOf[Writable], + classOf[Writable], + _minSplitsPerRDD) + + // Only take the value (skip the key) because Hive works only with values. + rdd.map(_._2) + } + +} + +private[hive] object HadoopTableReader { + /** + * Curried. After given an argument for 'path', the resulting JobConf => Unit closure is used to + * instantiate a HadoopRDD. + */ + def initializeLocalJobConfFunc(path: String, tableDesc: TableDesc)(jobConf: JobConf) { + FileInputFormat.setInputPaths(jobConf, path) + if (tableDesc != null) { + Utilities.copyTableJobPropertiesToConf(tableDesc, jobConf) + } + val bufferSize = System.getProperty("spark.buffer.size", "65536") + jobConf.set("io.file.buffer.size", bufferSize) + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/TestHive.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/TestHive.scala new file mode 100644 index 0000000000000..2fea9702954d7 --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/TestHive.scala @@ -0,0 +1,341 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import java.io.File +import java.util.{Set => JavaSet} + +import scala.collection.mutable +import scala.language.implicitConversions + +import org.apache.hadoop.hive.ql.exec.FunctionRegistry +import org.apache.hadoop.hive.ql.io.avro.{AvroContainerInputFormat, AvroContainerOutputFormat} +import org.apache.hadoop.hive.ql.metadata.Table +import org.apache.hadoop.hive.serde2.RegexSerDe +import org.apache.hadoop.hive.serde2.`lazy`.LazySimpleSerDe +import org.apache.hadoop.hive.serde2.avro.AvroSerDe + +import org.apache.spark.{SparkConf, SparkContext} +import org.apache.spark.sql.catalyst.analysis._ +import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, NativeCommand} +import org.apache.spark.sql.catalyst.util._ + +/* Implicit conversions */ +import scala.collection.JavaConversions._ + +object TestHive + extends TestHiveContext(new SparkContext("local", "TestSQLContext", new SparkConf())) + +/** + * A locally running test instance of Spark's Hive execution engine. + * + * Data from [[testTables]] will be automatically loaded whenever a query is run over those tables. + * Calling [[reset]] will delete all tables and other state in the database, leaving the database + * in a "clean" state. + * + * TestHive is singleton object version of this class because instantiating multiple copies of the + * hive metastore seems to lead to weird non-deterministic failures. Therefore, the execution of + * test cases that rely on TestHive must be serialized. + */ +class TestHiveContext(sc: SparkContext) extends LocalHiveContext(sc) { + self => + + // By clearing the port we force Spark to pick a new one. This allows us to rerun tests + // without restarting the JVM. + System.clearProperty("spark.driver.port") + System.clearProperty("spark.hostPort") + + override lazy val warehousePath = getTempFilePath("sparkHiveWarehouse").getCanonicalPath + override lazy val metastorePath = getTempFilePath("sparkHiveMetastore").getCanonicalPath + + /** The location of the compiled hive distribution */ + lazy val hiveHome = envVarToFile("HIVE_HOME") + /** The location of the hive source code. */ + lazy val hiveDevHome = envVarToFile("HIVE_DEV_HOME") + + // Override so we can intercept relative paths and rewrite them to point at hive. + override def runSqlHive(sql: String): Seq[String] = super.runSqlHive(rewritePaths(sql)) + + override def executePlan(plan: LogicalPlan): this.QueryExecution = + new this.QueryExecution { val logical = plan } + + /** + * Returns the value of specified environmental variable as a [[java.io.File]] after checking + * to ensure it exists + */ + private def envVarToFile(envVar: String): Option[File] = { + Option(System.getenv(envVar)).map(new File(_)) + } + + /** + * Replaces relative paths to the parent directory "../" with hiveDevHome since this is how the + * hive test cases assume the system is set up. + */ + private def rewritePaths(cmd: String): String = + if (cmd.toUpperCase contains "LOAD DATA") { + val testDataLocation = + hiveDevHome.map(_.getCanonicalPath).getOrElse(inRepoTests.getCanonicalPath) + cmd.replaceAll("\\.\\.", testDataLocation) + } else { + cmd + } + + val hiveFilesTemp = File.createTempFile("catalystHiveFiles", "") + hiveFilesTemp.delete() + hiveFilesTemp.mkdir() + + val inRepoTests = new File("src/test/resources/") + def getHiveFile(path: String): File = { + val stripped = path.replaceAll("""\.\.\/""", "") + hiveDevHome + .map(new File(_, stripped)) + .filter(_.exists) + .getOrElse(new File(inRepoTests, stripped)) + } + + val describedTable = "DESCRIBE (\\w+)".r + + protected[hive] class HiveQLQueryExecution(hql: String) extends this.QueryExecution { + lazy val logical = HiveQl.parseSql(hql) + def hiveExec() = runSqlHive(hql) + override def toString = hql + "\n" + super.toString + } + + /** + * Override QueryExecution with special debug workflow. + */ + abstract class QueryExecution extends super.QueryExecution { + override lazy val analyzed = { + val describedTables = logical match { + case NativeCommand(describedTable(tbl)) => tbl :: Nil + case _ => Nil + } + + // Make sure any test tables referenced are loaded. + val referencedTables = + describedTables ++ + logical.collect { case UnresolvedRelation(databaseName, name, _) => name } + val referencedTestTables = referencedTables.filter(testTables.contains) + logger.debug(s"Query references test tables: ${referencedTestTables.mkString(", ")}") + referencedTestTables.foreach(loadTestTable) + // Proceed with analysis. + analyzer(logical) + } + } + + case class TestTable(name: String, commands: (()=>Unit)*) + + protected[hive] implicit class SqlCmd(sql: String) { + def cmd = () => new HiveQLQueryExecution(sql).stringResult(): Unit + } + + /** + * A list of test tables and the DDL required to initialize them. A test table is loaded on + * demand when a query are run against it. + */ + lazy val testTables = new mutable.HashMap[String, TestTable]() + def registerTestTable(testTable: TestTable) = testTables += (testTable.name -> testTable) + + // The test tables that are defined in the Hive QTestUtil. + // /itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java + val hiveQTestUtilTables = Seq( + TestTable("src", + "CREATE TABLE src (key INT, value STRING)".cmd, + s"LOAD DATA LOCAL INPATH '${getHiveFile("data/files/kv1.txt")}' INTO TABLE src".cmd), + TestTable("src1", + "CREATE TABLE src1 (key INT, value STRING)".cmd, + s"LOAD DATA LOCAL INPATH '${getHiveFile("data/files/kv3.txt")}' INTO TABLE src1".cmd), + TestTable("dest1", + "CREATE TABLE IF NOT EXISTS dest1 (key INT, value STRING)".cmd), + TestTable("dest2", + "CREATE TABLE IF NOT EXISTS dest2 (key INT, value STRING)".cmd), + TestTable("dest3", + "CREATE TABLE IF NOT EXISTS dest3 (key INT, value STRING)".cmd), + TestTable("srcpart", () => { + runSqlHive( + "CREATE TABLE srcpart (key INT, value STRING) PARTITIONED BY (ds STRING, hr STRING)") + for (ds <- Seq("2008-04-08", "2008-04-09"); hr <- Seq("11", "12")) { + runSqlHive( + s"""LOAD DATA LOCAL INPATH '${getHiveFile("data/files/kv1.txt")}' + |OVERWRITE INTO TABLE srcpart PARTITION (ds='$ds',hr='$hr') + """.stripMargin) + } + }), + TestTable("srcpart1", () => { + runSqlHive("CREATE TABLE srcpart1 (key INT, value STRING) PARTITIONED BY (ds STRING, hr INT)") + for (ds <- Seq("2008-04-08", "2008-04-09"); hr <- 11 to 12) { + runSqlHive( + s"""LOAD DATA LOCAL INPATH '${getHiveFile("data/files/kv1.txt")}' + |OVERWRITE INTO TABLE srcpart1 PARTITION (ds='$ds',hr='$hr') + """.stripMargin) + } + }), + TestTable("src_thrift", () => { + import org.apache.thrift.protocol.TBinaryProtocol + import org.apache.hadoop.hive.serde2.thrift.test.Complex + import org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer + import org.apache.hadoop.mapred.SequenceFileInputFormat + import org.apache.hadoop.mapred.SequenceFileOutputFormat + + val srcThrift = new Table("default", "src_thrift") + srcThrift.setFields(Nil) + srcThrift.setInputFormatClass(classOf[SequenceFileInputFormat[_,_]].getName) + // In Hive, SequenceFileOutputFormat will be substituted by HiveSequenceFileOutputFormat. + srcThrift.setOutputFormatClass(classOf[SequenceFileOutputFormat[_,_]].getName) + srcThrift.setSerializationLib(classOf[ThriftDeserializer].getName) + srcThrift.setSerdeParam("serialization.class", classOf[Complex].getName) + srcThrift.setSerdeParam("serialization.format", classOf[TBinaryProtocol].getName) + catalog.client.createTable(srcThrift) + + + runSqlHive( + s"LOAD DATA LOCAL INPATH '${getHiveFile("data/files/complex.seq")}' INTO TABLE src_thrift") + }), + TestTable("serdeins", + s"""CREATE TABLE serdeins (key INT, value STRING) + |ROW FORMAT SERDE '${classOf[LazySimpleSerDe].getCanonicalName}' + |WITH SERDEPROPERTIES ('field.delim'='\\t') + """.stripMargin.cmd, + "INSERT OVERWRITE TABLE serdeins SELECT * FROM src".cmd), + TestTable("sales", + s"""CREATE TABLE IF NOT EXISTS sales (key STRING, value INT) + |ROW FORMAT SERDE '${classOf[RegexSerDe].getCanonicalName}' + |WITH SERDEPROPERTIES ("input.regex" = "([^ ]*)\t([^ ]*)") + """.stripMargin.cmd, + s"LOAD DATA LOCAL INPATH '${getHiveFile("data/files/sales.txt")}' INTO TABLE sales".cmd), + TestTable("episodes", + s"""CREATE TABLE episodes (title STRING, air_date STRING, doctor INT) + |ROW FORMAT SERDE '${classOf[AvroSerDe].getCanonicalName}' + |STORED AS + |INPUTFORMAT '${classOf[AvroContainerInputFormat].getCanonicalName}' + |OUTPUTFORMAT '${classOf[AvroContainerOutputFormat].getCanonicalName}' + |TBLPROPERTIES ( + | 'avro.schema.literal'='{ + | "type": "record", + | "name": "episodes", + | "namespace": "testing.hive.avro.serde", + | "fields": [ + | { + | "name": "title", + | "type": "string", + | "doc": "episode title" + | }, + | { + | "name": "air_date", + | "type": "string", + | "doc": "initial date" + | }, + | { + | "name": "doctor", + | "type": "int", + | "doc": "main actor playing the Doctor in episode" + | } + | ] + | }' + |) + """.stripMargin.cmd, + s"LOAD DATA LOCAL INPATH '${getHiveFile("data/files/episodes.avro")}' INTO TABLE episodes".cmd + ) + ) + + hiveQTestUtilTables.foreach(registerTestTable) + + private val loadedTables = new collection.mutable.HashSet[String] + + def loadTestTable(name: String) { + if (!(loadedTables contains name)) { + // Marks the table as loaded first to prevent infite mutually recursive table loading. + loadedTables += name + logger.info(s"Loading test table $name") + val createCmds = + testTables.get(name).map(_.commands).getOrElse(sys.error(s"Unknown test table $name")) + createCmds.foreach(_()) + } + } + + /** + * Records the UDFs present when the server starts, so we can delete ones that are created by + * tests. + */ + protected val originalUdfs: JavaSet[String] = FunctionRegistry.getFunctionNames + + /** + * Resets the test instance by deleting any tables that have been created. + * TODO: also clear out UDFs, views, etc. + */ + def reset() { + try { + // HACK: Hive is too noisy by default. + org.apache.log4j.LogManager.getCurrentLoggers.foreach { logger => + logger.asInstanceOf[org.apache.log4j.Logger].setLevel(org.apache.log4j.Level.WARN) + } + + // It is important that we RESET first as broken hooks that might have been set could break + // other sql exec here. + runSqlHive("RESET") + // For some reason, RESET does not reset the following variables... + runSqlHive("set datanucleus.cache.collections=true") + runSqlHive("set datanucleus.cache.collections.lazy=true") + // Lots of tests fail if we do not change the partition whitelist from the default. + runSqlHive("set hive.metastore.partition.name.whitelist.pattern=.*") + + loadedTables.clear() + catalog.client.getAllTables("default").foreach { t => + logger.debug(s"Deleting table $t") + val table = catalog.client.getTable("default", t) + + catalog.client.getIndexes("default", t, 255).foreach { index => + catalog.client.dropIndex("default", t, index.getIndexName, true) + } + + if (!table.isIndexTable) { + catalog.client.dropTable("default", t) + } + } + + catalog.client.getAllDatabases.filterNot(_ == "default").foreach { db => + logger.debug(s"Dropping Database: $db") + catalog.client.dropDatabase(db, true, false, true) + } + + catalog.unregisterAllTables() + + FunctionRegistry.getFunctionNames.filterNot(originalUdfs.contains(_)).foreach { udfName => + FunctionRegistry.unregisterTemporaryUDF(udfName) + } + + configure() + + runSqlHive("USE default") + + // Just loading src makes a lot of tests pass. This is because some tests do something like + // drop an index on src at the beginning. Since we just pass DDL to hive this bypasses our + // Analyzer and thus the test table auto-loading mechanism. + // Remove after we handle more DDL operations natively. + loadTestTable("src") + loadTestTable("srcpart") + } catch { + case e: Exception => + logger.error(s"FATAL ERROR: Failed to reset TestDB state. $e") + // At this point there is really no reason to continue, but the test framework traps exits. + // So instead we just pause forever so that at least the developer can see where things + // started to go wrong. + Thread.sleep(100000) + } + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/api/java/JavaHiveContext.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/api/java/JavaHiveContext.scala new file mode 100644 index 0000000000000..6df76fa825101 --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/api/java/JavaHiveContext.scala @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.api.java + +import org.apache.spark.api.java.JavaSparkContext +import org.apache.spark.sql.api.java.{JavaSQLContext, JavaSchemaRDD} +import org.apache.spark.sql.hive.{HiveContext, HiveQl} + +/** + * The entry point for executing Spark SQL queries from a Java program. + */ +class JavaHiveContext(sparkContext: JavaSparkContext) extends JavaSQLContext(sparkContext) { + + override val sqlContext = new HiveContext(sparkContext) + + /** + * Executes a query expressed in HiveQL, returning the result as a JavaSchemaRDD. + */ + def hql(hqlQuery: String): JavaSchemaRDD = { + val result = new JavaSchemaRDD(sqlContext, HiveQl.parseSql(hqlQuery)) + // We force query optimization to happen right away instead of letting it happen lazily like + // when using the query DSL. This is so DDL commands behave as expected. This is only + // generates the RDD lineage for DML queries, but do not perform any execution. + result.queryExecution.toRdd + result + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveOperators.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveOperators.scala new file mode 100644 index 0000000000000..821fb22112f87 --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveOperators.scala @@ -0,0 +1,355 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import org.apache.hadoop.hive.common.`type`.{HiveDecimal, HiveVarchar} +import org.apache.hadoop.hive.metastore.MetaStoreUtils +import org.apache.hadoop.hive.ql.Context +import org.apache.hadoop.hive.ql.metadata.{Partition => HivePartition, Hive} +import org.apache.hadoop.hive.ql.plan.{TableDesc, FileSinkDesc} +import org.apache.hadoop.hive.serde2.Serializer +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.ObjectInspectorCopyOption +import org.apache.hadoop.hive.serde2.objectinspector._ +import org.apache.hadoop.hive.serde2.objectinspector.primitive.JavaHiveDecimalObjectInspector +import org.apache.hadoop.hive.serde2.objectinspector.primitive.JavaHiveVarcharObjectInspector +import org.apache.hadoop.io.Writable +import org.apache.hadoop.mapred._ + +import org.apache.spark.rdd.RDD +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.types.{BooleanType, DataType} +import org.apache.spark.sql.execution._ +import org.apache.spark.{SparkHiveHadoopWriter, TaskContext, SparkException} + +/* Implicits */ +import scala.collection.JavaConversions._ + +/** + * The Hive table scan operator. Column and partition pruning are both handled. + * + * @constructor + * @param attributes Attributes to be fetched from the Hive table. + * @param relation The Hive table be be scanned. + * @param partitionPruningPred An optional partition pruning predicate for partitioned table. + */ +case class HiveTableScan( + attributes: Seq[Attribute], + relation: MetastoreRelation, + partitionPruningPred: Option[Expression])( + @transient val sc: HiveContext) + extends LeafNode + with HiveInspectors { + + require(partitionPruningPred.isEmpty || relation.hiveQlTable.isPartitioned, + "Partition pruning predicates only supported for partitioned tables.") + + // Bind all partition key attribute references in the partition pruning predicate for later + // evaluation. + private val boundPruningPred = partitionPruningPred.map { pred => + require( + pred.dataType == BooleanType, + s"Data type of predicate $pred must be BooleanType rather than ${pred.dataType}.") + + BindReferences.bindReference(pred, relation.partitionKeys) + } + + @transient + val hadoopReader = new HadoopTableReader(relation.tableDesc, sc) + + /** + * The hive object inspector for this table, which can be used to extract values from the + * serialized row representation. + */ + @transient + lazy val objectInspector = + relation.tableDesc.getDeserializer.getObjectInspector.asInstanceOf[StructObjectInspector] + + /** + * Functions that extract the requested attributes from the hive output. Partitioned values are + * casted from string to its declared data type. + */ + @transient + protected lazy val attributeFunctions: Seq[(Any, Array[String]) => Any] = { + attributes.map { a => + val ordinal = relation.partitionKeys.indexOf(a) + if (ordinal >= 0) { + (_: Any, partitionKeys: Array[String]) => { + val value = partitionKeys(ordinal) + val dataType = relation.partitionKeys(ordinal).dataType + castFromString(value, dataType) + } + } else { + val ref = objectInspector.getAllStructFieldRefs + .find(_.getFieldName == a.name) + .getOrElse(sys.error(s"Can't find attribute $a")) + (row: Any, _: Array[String]) => { + val data = objectInspector.getStructFieldData(row, ref) + unwrapData(data, ref.getFieldObjectInspector) + } + } + } + } + + private def castFromString(value: String, dataType: DataType) = { + Cast(Literal(value), dataType).eval(null) + } + + @transient + def inputRdd = if (!relation.hiveQlTable.isPartitioned) { + hadoopReader.makeRDDForTable(relation.hiveQlTable) + } else { + hadoopReader.makeRDDForPartitionedTable(prunePartitions(relation.hiveQlPartitions)) + } + + /** + * Prunes partitions not involve the query plan. + * + * @param partitions All partitions of the relation. + * @return Partitions that are involved in the query plan. + */ + private[hive] def prunePartitions(partitions: Seq[HivePartition]) = { + boundPruningPred match { + case None => partitions + case Some(shouldKeep) => partitions.filter { part => + val dataTypes = relation.partitionKeys.map(_.dataType) + val castedValues = for ((value, dataType) <- part.getValues.zip(dataTypes)) yield { + castFromString(value, dataType) + } + + // Only partitioned values are needed here, since the predicate has already been bound to + // partition key attribute references. + val row = new GenericRow(castedValues.toArray) + shouldKeep.eval(row).asInstanceOf[Boolean] + } + } + } + + def execute() = { + inputRdd.map { row => + val values = row match { + case Array(deserializedRow: AnyRef, partitionKeys: Array[String]) => + attributeFunctions.map(_(deserializedRow, partitionKeys)) + case deserializedRow: AnyRef => + attributeFunctions.map(_(deserializedRow, Array.empty)) + } + buildRow(values.map { + case n: String if n.toLowerCase == "null" => null + case varchar: org.apache.hadoop.hive.common.`type`.HiveVarchar => varchar.getValue + case decimal: org.apache.hadoop.hive.common.`type`.HiveDecimal => + BigDecimal(decimal.bigDecimalValue) + case other => other + }) + } + } + + def output = attributes +} + +case class InsertIntoHiveTable( + table: MetastoreRelation, + partition: Map[String, Option[String]], + child: SparkPlan, + overwrite: Boolean) + (@transient sc: HiveContext) + extends UnaryNode { + + val outputClass = newSerializer(table.tableDesc).getSerializedClass + @transient private val hiveContext = new Context(sc.hiveconf) + @transient private val db = Hive.get(sc.hiveconf) + + private def newSerializer(tableDesc: TableDesc): Serializer = { + val serializer = tableDesc.getDeserializerClass.newInstance().asInstanceOf[Serializer] + serializer.initialize(null, tableDesc.getProperties) + serializer + } + + override def otherCopyArgs = sc :: Nil + + def output = child.output + + /** + * Wraps with Hive types based on object inspector. + * TODO: Consolidate all hive OI/data interface code. + */ + protected def wrap(a: (Any, ObjectInspector)): Any = a match { + case (s: String, oi: JavaHiveVarcharObjectInspector) => + new HiveVarchar(s, s.size) + + case (bd: BigDecimal, oi: JavaHiveDecimalObjectInspector) => + new HiveDecimal(bd.underlying()) + + case (row: Row, oi: StandardStructObjectInspector) => + val struct = oi.create() + row.zip(oi.getAllStructFieldRefs: Seq[StructField]).foreach { + case (data, field) => + oi.setStructFieldData(struct, field, wrap(data, field.getFieldObjectInspector)) + } + struct + + case (s: Seq[_], oi: ListObjectInspector) => + val wrappedSeq = s.map(wrap(_, oi.getListElementObjectInspector)) + seqAsJavaList(wrappedSeq) + + case (obj, _) => + obj + } + + def saveAsHiveFile( + rdd: RDD[Writable], + valueClass: Class[_], + fileSinkConf: FileSinkDesc, + conf: JobConf, + isCompressed: Boolean) { + if (valueClass == null) { + throw new SparkException("Output value class not set") + } + conf.setOutputValueClass(valueClass) + if (fileSinkConf.getTableInfo.getOutputFileFormatClassName == null) { + throw new SparkException("Output format class not set") + } + // Doesn't work in Scala 2.9 due to what may be a generics bug + // TODO: Should we uncomment this for Scala 2.10? + // conf.setOutputFormat(outputFormatClass) + conf.set("mapred.output.format.class", fileSinkConf.getTableInfo.getOutputFileFormatClassName) + if (isCompressed) { + // Please note that isCompressed, "mapred.output.compress", "mapred.output.compression.codec", + // and "mapred.output.compression.type" have no impact on ORC because it uses table properties + // to store compression information. + conf.set("mapred.output.compress", "true") + fileSinkConf.setCompressed(true) + fileSinkConf.setCompressCodec(conf.get("mapred.output.compression.codec")) + fileSinkConf.setCompressType(conf.get("mapred.output.compression.type")) + } + conf.setOutputCommitter(classOf[FileOutputCommitter]) + FileOutputFormat.setOutputPath( + conf, + SparkHiveHadoopWriter.createPathFromString(fileSinkConf.getDirName, conf)) + + logger.debug("Saving as hadoop file of type " + valueClass.getSimpleName) + + val writer = new SparkHiveHadoopWriter(conf, fileSinkConf) + writer.preSetup() + + def writeToFile(context: TaskContext, iter: Iterator[Writable]) { + // Hadoop wants a 32-bit task attempt ID, so if ours is bigger than Int.MaxValue, roll it + // around by taking a mod. We expect that no task will be attempted 2 billion times. + val attemptNumber = (context.attemptId % Int.MaxValue).toInt + + writer.setup(context.stageId, context.partitionId, attemptNumber) + writer.open() + + var count = 0 + while(iter.hasNext) { + val record = iter.next() + count += 1 + writer.write(record) + } + + writer.close() + writer.commit() + } + + sc.sparkContext.runJob(rdd, writeToFile _) + writer.commitJob() + } + + /** + * Inserts all the rows in the table into Hive. Row objects are properly serialized with the + * `org.apache.hadoop.hive.serde2.SerDe` and the + * `org.apache.hadoop.mapred.OutputFormat` provided by the table definition. + */ + def execute() = { + val childRdd = child.execute() + assert(childRdd != null) + + // Have to pass the TableDesc object to RDD.mapPartitions and then instantiate new serializer + // instances within the closure, since Serializer is not serializable while TableDesc is. + val tableDesc = table.tableDesc + val tableLocation = table.hiveQlTable.getDataLocation + val tmpLocation = hiveContext.getExternalTmpFileURI(tableLocation) + val fileSinkConf = new FileSinkDesc(tmpLocation.toString, tableDesc, false) + val rdd = childRdd.mapPartitions { iter => + val serializer = newSerializer(fileSinkConf.getTableInfo) + val standardOI = ObjectInspectorUtils + .getStandardObjectInspector( + fileSinkConf.getTableInfo.getDeserializer.getObjectInspector, + ObjectInspectorCopyOption.JAVA) + .asInstanceOf[StructObjectInspector] + + iter.map { row => + // Casts Strings to HiveVarchars when necessary. + val fieldOIs = standardOI.getAllStructFieldRefs.map(_.getFieldObjectInspector) + val mappedRow = row.zip(fieldOIs).map(wrap) + + serializer.serialize(mappedRow.toArray, standardOI) + } + } + + // ORC stores compression information in table properties. While, there are other formats + // (e.g. RCFile) that rely on hadoop configurations to store compression information. + val jobConf = new JobConf(sc.hiveconf) + saveAsHiveFile( + rdd, + outputClass, + fileSinkConf, + jobConf, + sc.hiveconf.getBoolean("hive.exec.compress.output", false)) + + // TODO: Handle dynamic partitioning. + val outputPath = FileOutputFormat.getOutputPath(jobConf) + // Have to construct the format of dbname.tablename. + val qualifiedTableName = s"${table.databaseName}.${table.tableName}" + // TODO: Correctly set holdDDLTime. + // In most of the time, we should have holdDDLTime = false. + // holdDDLTime will be true when TOK_HOLD_DDLTIME presents in the query as a hint. + val holdDDLTime = false + if (partition.nonEmpty) { + val partitionSpec = partition.map { + case (key, Some(value)) => key -> value + case (key, None) => key -> "" // Should not reach here right now. + } + val partVals = MetaStoreUtils.getPvals(table.hiveQlTable.getPartCols, partitionSpec) + db.validatePartitionNameCharacters(partVals) + // inheritTableSpecs is set to true. It should be set to false for a IMPORT query + // which is currently considered as a Hive native command. + val inheritTableSpecs = true + // TODO: Correctly set isSkewedStoreAsSubdir. + val isSkewedStoreAsSubdir = false + db.loadPartition( + outputPath, + qualifiedTableName, + partitionSpec, + overwrite, + holdDDLTime, + inheritTableSpecs, + isSkewedStoreAsSubdir) + } else { + db.loadTable( + outputPath, + qualifiedTableName, + overwrite, + holdDDLTime) + } + + // It would be nice to just return the childRdd unchanged so insert operations could be chained, + // however for now we return an empty list to simplify compatibility checks with hive, which + // does not return anything for insert operations. + // TODO: implement hive compatibility as rules. + sc.sparkContext.makeRDD(Nil, 1) + } +} diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala new file mode 100644 index 0000000000000..f9b437d435eba --- /dev/null +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala @@ -0,0 +1,472 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import scala.collection.mutable.ArrayBuffer + +import org.apache.hadoop.hive.common.`type`.HiveDecimal +import org.apache.hadoop.hive.ql.exec.UDF +import org.apache.hadoop.hive.ql.exec.{FunctionInfo, FunctionRegistry} +import org.apache.hadoop.hive.ql.udf.generic._ +import org.apache.hadoop.hive.serde2.objectinspector._ +import org.apache.hadoop.hive.serde2.objectinspector.primitive._ +import org.apache.hadoop.hive.serde2.{io => hiveIo} +import org.apache.hadoop.{io => hadoopIo} + +import org.apache.spark.sql.Logging +import org.apache.spark.sql.catalyst.analysis +import org.apache.spark.sql.catalyst.expressions._ +import org.apache.spark.sql.catalyst.types +import org.apache.spark.sql.catalyst.types._ + +/* Implicit conversions */ +import scala.collection.JavaConversions._ + +object HiveFunctionRegistry + extends analysis.FunctionRegistry with HiveFunctionFactory with HiveInspectors { + + def lookupFunction(name: String, children: Seq[Expression]): Expression = { + // We only look it up to see if it exists, but do not include it in the HiveUDF since it is + // not always serializable. + val functionInfo: FunctionInfo = Option(FunctionRegistry.getFunctionInfo(name)).getOrElse( + sys.error(s"Couldn't find function $name")) + + if (classOf[UDF].isAssignableFrom(functionInfo.getFunctionClass)) { + val function = createFunction[UDF](name) + val method = function.getResolver.getEvalMethod(children.map(_.dataType.toTypeInfo)) + + lazy val expectedDataTypes = method.getParameterTypes.map(javaClassToDataType) + + HiveSimpleUdf( + name, + children.zip(expectedDataTypes).map { case (e, t) => Cast(e, t) } + ) + } else if (classOf[GenericUDF].isAssignableFrom(functionInfo.getFunctionClass)) { + HiveGenericUdf(name, children) + } else if ( + classOf[AbstractGenericUDAFResolver].isAssignableFrom(functionInfo.getFunctionClass)) { + HiveGenericUdaf(name, children) + + } else if (classOf[GenericUDTF].isAssignableFrom(functionInfo.getFunctionClass)) { + HiveGenericUdtf(name, Nil, children) + } else { + sys.error(s"No handler for udf ${functionInfo.getFunctionClass}") + } + } + + def javaClassToDataType(clz: Class[_]): DataType = clz match { + case c: Class[_] if c == classOf[hadoopIo.DoubleWritable] => DoubleType + case c: Class[_] if c == classOf[hiveIo.DoubleWritable] => DoubleType + case c: Class[_] if c == classOf[hiveIo.HiveDecimalWritable] => DecimalType + case c: Class[_] if c == classOf[hiveIo.ByteWritable] => ByteType + case c: Class[_] if c == classOf[hiveIo.ShortWritable] => ShortType + case c: Class[_] if c == classOf[hadoopIo.Text] => StringType + case c: Class[_] if c == classOf[hadoopIo.IntWritable] => IntegerType + case c: Class[_] if c == classOf[hadoopIo.LongWritable] => LongType + case c: Class[_] if c == classOf[hadoopIo.FloatWritable] => FloatType + case c: Class[_] if c == classOf[hadoopIo.BooleanWritable] => BooleanType + case c: Class[_] if c == classOf[java.lang.String] => StringType + case c: Class[_] if c == java.lang.Short.TYPE => ShortType + case c: Class[_] if c == java.lang.Integer.TYPE => IntegerType + case c: Class[_] if c == java.lang.Long.TYPE => LongType + case c: Class[_] if c == java.lang.Double.TYPE => DoubleType + case c: Class[_] if c == java.lang.Byte.TYPE => ByteType + case c: Class[_] if c == java.lang.Float.TYPE => FloatType + case c: Class[_] if c == java.lang.Boolean.TYPE => BooleanType + case c: Class[_] if c == classOf[java.lang.Short] => ShortType + case c: Class[_] if c == classOf[java.lang.Integer] => IntegerType + case c: Class[_] if c == classOf[java.lang.Long] => LongType + case c: Class[_] if c == classOf[java.lang.Double] => DoubleType + case c: Class[_] if c == classOf[java.lang.Byte] => ByteType + case c: Class[_] if c == classOf[java.lang.Float] => FloatType + case c: Class[_] if c == classOf[java.lang.Boolean] => BooleanType + case c: Class[_] if c.isArray => ArrayType(javaClassToDataType(c.getComponentType)) + } +} + +trait HiveFunctionFactory { + def getFunctionInfo(name: String) = FunctionRegistry.getFunctionInfo(name) + def getFunctionClass(name: String) = getFunctionInfo(name).getFunctionClass + def createFunction[UDFType](name: String) = + getFunctionClass(name).newInstance.asInstanceOf[UDFType] + + /** Converts hive types to native catalyst types. */ + def unwrap(a: Any): Any = a match { + case null => null + case i: hadoopIo.IntWritable => i.get + case t: hadoopIo.Text => t.toString + case l: hadoopIo.LongWritable => l.get + case d: hadoopIo.DoubleWritable => d.get() + case d: hiveIo.DoubleWritable => d.get + case s: hiveIo.ShortWritable => s.get + case b: hadoopIo.BooleanWritable => b.get() + case b: hiveIo.ByteWritable => b.get + case list: java.util.List[_] => list.map(unwrap) + case map: java.util.Map[_,_] => map.map { case (k, v) => (unwrap(k), unwrap(v)) }.toMap + case array: Array[_] => array.map(unwrap).toSeq + case p: java.lang.Short => p + case p: java.lang.Long => p + case p: java.lang.Float => p + case p: java.lang.Integer => p + case p: java.lang.Double => p + case p: java.lang.Byte => p + case p: java.lang.Boolean => p + case str: String => str + } +} + +abstract class HiveUdf + extends Expression with Logging with HiveFunctionFactory { + self: Product => + + type UDFType + type EvaluatedType = Any + + val name: String + + def nullable = true + def references = children.flatMap(_.references).toSet + + // FunctionInfo is not serializable so we must look it up here again. + lazy val functionInfo = getFunctionInfo(name) + lazy val function = createFunction[UDFType](name) + + override def toString = s"${nodeName}#${functionInfo.getDisplayName}(${children.mkString(",")})" +} + +case class HiveSimpleUdf(name: String, children: Seq[Expression]) extends HiveUdf { + import org.apache.spark.sql.hive.HiveFunctionRegistry._ + type UDFType = UDF + + @transient + protected lazy val method = + function.getResolver.getEvalMethod(children.map(_.dataType.toTypeInfo)) + + @transient + lazy val dataType = javaClassToDataType(method.getReturnType) + + protected lazy val wrappers: Array[(Any) => AnyRef] = method.getParameterTypes.map { argClass => + val primitiveClasses = Seq( + Integer.TYPE, classOf[java.lang.Integer], classOf[java.lang.String], java.lang.Double.TYPE, + classOf[java.lang.Double], java.lang.Long.TYPE, classOf[java.lang.Long], + classOf[HiveDecimal], java.lang.Byte.TYPE, classOf[java.lang.Byte] + ) + val matchingConstructor = argClass.getConstructors.find { c => + c.getParameterTypes.size == 1 && primitiveClasses.contains(c.getParameterTypes.head) + } + + val constructor = matchingConstructor.getOrElse( + sys.error(s"No matching wrapper found, options: ${argClass.getConstructors.toSeq}.")) + + (a: Any) => { + logger.debug( + s"Wrapping $a of type ${if (a == null) "null" else a.getClass.getName} using $constructor.") + // We must make sure that primitives get boxed java style. + if (a == null) { + null + } else { + constructor.newInstance(a match { + case i: Int => i: java.lang.Integer + case bd: BigDecimal => new HiveDecimal(bd.underlying()) + case other: AnyRef => other + }).asInstanceOf[AnyRef] + } + } + } + + // TODO: Finish input output types. + override def eval(input: Row): Any = { + val evaluatedChildren = children.map(_.eval(input)) + // Wrap the function arguments in the expected types. + val args = evaluatedChildren.zip(wrappers).map { + case (arg, wrapper) => wrapper(arg) + } + + // Invoke the udf and unwrap the result. + unwrap(method.invoke(function, args: _*)) + } +} + +case class HiveGenericUdf( + name: String, + children: Seq[Expression]) extends HiveUdf with HiveInspectors { + import org.apache.hadoop.hive.ql.udf.generic.GenericUDF._ + type UDFType = GenericUDF + + @transient + protected lazy val argumentInspectors = children.map(_.dataType).map(toInspector) + + @transient + protected lazy val returnInspector = function.initialize(argumentInspectors.toArray) + + val dataType: DataType = inspectorToDataType(returnInspector) + + override def eval(input: Row): Any = { + returnInspector // Make sure initialized. + val args = children.map { v => + new DeferredObject { + override def prepare(i: Int) = {} + override def get(): AnyRef = wrap(v.eval(input)) + } + }.toArray + unwrap(function.evaluate(args)) + } +} + +trait HiveInspectors { + + def unwrapData(data: Any, oi: ObjectInspector): Any = oi match { + case pi: PrimitiveObjectInspector => pi.getPrimitiveJavaObject(data) + case li: ListObjectInspector => + Option(li.getList(data)) + .map(_.map(unwrapData(_, li.getListElementObjectInspector)).toSeq) + .orNull + case mi: MapObjectInspector => + Option(mi.getMap(data)).map( + _.map { + case (k,v) => + (unwrapData(k, mi.getMapKeyObjectInspector), + unwrapData(v, mi.getMapValueObjectInspector)) + }.toMap).orNull + case si: StructObjectInspector => + val allRefs = si.getAllStructFieldRefs + new GenericRow( + allRefs.map(r => + unwrapData(si.getStructFieldData(data,r), r.getFieldObjectInspector)).toArray) + } + + /** Converts native catalyst types to the types expected by Hive */ + def wrap(a: Any): AnyRef = a match { + case s: String => new hadoopIo.Text(s) + case i: Int => i: java.lang.Integer + case b: Boolean => b: java.lang.Boolean + case d: Double => d: java.lang.Double + case l: Long => l: java.lang.Long + case l: Short => l: java.lang.Short + case l: Byte => l: java.lang.Byte + case s: Seq[_] => seqAsJavaList(s.map(wrap)) + case m: Map[_,_] => + mapAsJavaMap(m.map { case (k, v) => wrap(k) -> wrap(v) }) + case null => null + } + + def toInspector(dataType: DataType): ObjectInspector = dataType match { + case ArrayType(tpe) => ObjectInspectorFactory.getStandardListObjectInspector(toInspector(tpe)) + case MapType(keyType, valueType) => + ObjectInspectorFactory.getStandardMapObjectInspector( + toInspector(keyType), toInspector(valueType)) + case StringType => PrimitiveObjectInspectorFactory.javaStringObjectInspector + case IntegerType => PrimitiveObjectInspectorFactory.javaIntObjectInspector + case DoubleType => PrimitiveObjectInspectorFactory.javaDoubleObjectInspector + case BooleanType => PrimitiveObjectInspectorFactory.javaBooleanObjectInspector + case LongType => PrimitiveObjectInspectorFactory.javaLongObjectInspector + case FloatType => PrimitiveObjectInspectorFactory.javaFloatObjectInspector + case ShortType => PrimitiveObjectInspectorFactory.javaShortObjectInspector + case ByteType => PrimitiveObjectInspectorFactory.javaByteObjectInspector + case NullType => PrimitiveObjectInspectorFactory.javaVoidObjectInspector + case BinaryType => PrimitiveObjectInspectorFactory.javaByteArrayObjectInspector + } + + def inspectorToDataType(inspector: ObjectInspector): DataType = inspector match { + case s: StructObjectInspector => + StructType(s.getAllStructFieldRefs.map(f => { + types.StructField( + f.getFieldName, inspectorToDataType(f.getFieldObjectInspector), nullable = true) + })) + case l: ListObjectInspector => ArrayType(inspectorToDataType(l.getListElementObjectInspector)) + case m: MapObjectInspector => + MapType( + inspectorToDataType(m.getMapKeyObjectInspector), + inspectorToDataType(m.getMapValueObjectInspector)) + case _: WritableStringObjectInspector => StringType + case _: JavaStringObjectInspector => StringType + case _: WritableIntObjectInspector => IntegerType + case _: JavaIntObjectInspector => IntegerType + case _: WritableDoubleObjectInspector => DoubleType + case _: JavaDoubleObjectInspector => DoubleType + case _: WritableBooleanObjectInspector => BooleanType + case _: JavaBooleanObjectInspector => BooleanType + case _: WritableLongObjectInspector => LongType + case _: JavaLongObjectInspector => LongType + case _: WritableShortObjectInspector => ShortType + case _: JavaShortObjectInspector => ShortType + case _: WritableByteObjectInspector => ByteType + case _: JavaByteObjectInspector => ByteType + } + + implicit class typeInfoConversions(dt: DataType) { + import org.apache.hadoop.hive.serde2.typeinfo._ + import TypeInfoFactory._ + + def toTypeInfo: TypeInfo = dt match { + case BinaryType => binaryTypeInfo + case BooleanType => booleanTypeInfo + case ByteType => byteTypeInfo + case DoubleType => doubleTypeInfo + case FloatType => floatTypeInfo + case IntegerType => intTypeInfo + case LongType => longTypeInfo + case ShortType => shortTypeInfo + case StringType => stringTypeInfo + case DecimalType => decimalTypeInfo + case NullType => voidTypeInfo + } + } +} + +case class HiveGenericUdaf( + name: String, + children: Seq[Expression]) extends AggregateExpression + with HiveInspectors + with HiveFunctionFactory { + + type UDFType = AbstractGenericUDAFResolver + + @transient + protected lazy val resolver: AbstractGenericUDAFResolver = createFunction(name) + + @transient + protected lazy val objectInspector = { + resolver.getEvaluator(children.map(_.dataType.toTypeInfo).toArray) + .init(GenericUDAFEvaluator.Mode.COMPLETE, inspectors.toArray) + } + + @transient + protected lazy val inspectors = children.map(_.dataType).map(toInspector) + + def dataType: DataType = inspectorToDataType(objectInspector) + + def nullable: Boolean = true + + def references: Set[Attribute] = children.map(_.references).flatten.toSet + + override def toString = s"$nodeName#$name(${children.mkString(",")})" + + def newInstance = new HiveUdafFunction(name, children, this) +} + +/** + * Converts a Hive Generic User Defined Table Generating Function (UDTF) to a + * [[catalyst.expressions.Generator Generator]]. Note that the semantics of Generators do not allow + * Generators to maintain state in between input rows. Thus UDTFs that rely on partitioning + * dependent operations like calls to `close()` before producing output will not operate the same as + * in Hive. However, in practice this should not affect compatibility for most sane UDTFs + * (e.g. explode or GenericUDTFParseUrlTuple). + * + * Operators that require maintaining state in between input rows should instead be implemented as + * user defined aggregations, which have clean semantics even in a partitioned execution. + */ +case class HiveGenericUdtf( + name: String, + aliasNames: Seq[String], + children: Seq[Expression]) + extends Generator with HiveInspectors with HiveFunctionFactory { + + override def references = children.flatMap(_.references).toSet + + @transient + protected lazy val function: GenericUDTF = createFunction(name) + + protected lazy val inputInspectors = children.map(_.dataType).map(toInspector) + + protected lazy val outputInspectors = { + val structInspector = function.initialize(inputInspectors.toArray) + structInspector.getAllStructFieldRefs.map(_.getFieldObjectInspector) + } + + protected lazy val outputDataTypes = outputInspectors.map(inspectorToDataType) + + override protected def makeOutput() = { + // Use column names when given, otherwise c_1, c_2, ... c_n. + if (aliasNames.size == outputDataTypes.size) { + aliasNames.zip(outputDataTypes).map { + case (attrName, attrDataType) => + AttributeReference(attrName, attrDataType, nullable = true)() + } + } else { + outputDataTypes.zipWithIndex.map { + case (attrDataType, i) => + AttributeReference(s"c_$i", attrDataType, nullable = true)() + } + } + } + + override def eval(input: Row): TraversableOnce[Row] = { + outputInspectors // Make sure initialized. + + val inputProjection = new Projection(children) + val collector = new UDTFCollector + function.setCollector(collector) + + val udtInput = inputProjection(input).map(wrap).toArray + function.process(udtInput) + collector.collectRows() + } + + protected class UDTFCollector extends Collector { + var collected = new ArrayBuffer[Row] + + override def collect(input: java.lang.Object) { + // We need to clone the input here because implementations of + // GenericUDTF reuse the same object. Luckily they are always an array, so + // it is easy to clone. + collected += new GenericRow(input.asInstanceOf[Array[_]].map(unwrap)) + } + + def collectRows() = { + val toCollect = collected + collected = new ArrayBuffer[Row] + toCollect + } + } + + override def toString() = s"$nodeName#$name(${children.mkString(",")})" +} + +case class HiveUdafFunction( + functionName: String, + exprs: Seq[Expression], + base: AggregateExpression) + extends AggregateFunction + with HiveInspectors + with HiveFunctionFactory { + + def this() = this(null, null, null) + + private val resolver = createFunction[AbstractGenericUDAFResolver](functionName) + + private val inspectors = exprs.map(_.dataType).map(toInspector).toArray + + private val function = resolver.getEvaluator(exprs.map(_.dataType.toTypeInfo).toArray) + + private val returnInspector = function.init(GenericUDAFEvaluator.Mode.COMPLETE, inspectors) + + // Cast required to avoid type inference selecting a deprecated Hive API. + private val buffer = + function.getNewAggregationBuffer.asInstanceOf[GenericUDAFEvaluator.AbstractAggregationBuffer] + + override def eval(input: Row): Any = unwrapData(function.evaluate(buffer), returnInspector) + + @transient + val inputProjection = new Projection(exprs) + + def update(input: Row): Unit = { + val inputs = inputProjection(input).asInstanceOf[Seq[AnyRef]].toArray + function.iterate(buffer, inputs) + } +} diff --git a/sql/hive/src/test/resources/data/conf/hive-log4j.properties b/sql/hive/src/test/resources/data/conf/hive-log4j.properties new file mode 100644 index 0000000000000..885c86f2b94f4 --- /dev/null +++ b/sql/hive/src/test/resources/data/conf/hive-log4j.properties @@ -0,0 +1,78 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Define some default values that can be overridden by system properties +hive.root.logger=DEBUG,DRFA +hive.log.dir=${build.dir.hive}/ql/tmp/ +hive.log.file=hive.log + +# Define the root logger to the system property "hadoop.root.logger". +log4j.rootLogger=${hive.root.logger}, EventCounter + +# Logging Threshold +log4j.threshhold=WARN + +# +# Daily Rolling File Appender +# + +log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender +log4j.appender.DRFA.File=${hive.log.dir}/${hive.log.file} + +# Rollver at midnight +log4j.appender.DRFA.DatePattern=.yyyy-MM-dd + +# 30-day backup +#log4j.appender.DRFA.MaxBackupIndex=30 +log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout + +# Pattern format: Date LogLevel LoggerName LogMessage +#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n +# Debugging Pattern format +log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n + + +# +# console +# Add "console" to rootlogger above if you want to use this +# + +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.target=System.err +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n + +#custom logging levels +#log4j.logger.xxx=DEBUG + +# +# Event Counter Appender +# Sends counts of logging messages at different severity levels to Hadoop Metrics. +# +log4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounter + + +log4j.category.DataNucleus=ERROR,DRFA +log4j.category.Datastore=ERROR,DRFA +log4j.category.Datastore.Schema=ERROR,DRFA +log4j.category.JPOX.Datastore=ERROR,DRFA +log4j.category.JPOX.Plugin=ERROR,DRFA +log4j.category.JPOX.MetaData=ERROR,DRFA +log4j.category.JPOX.Query=ERROR,DRFA +log4j.category.JPOX.General=ERROR,DRFA +log4j.category.JPOX.Enhancer=ERROR,DRFA +log4j.logger.org.apache.hadoop.conf.Configuration=ERROR,DRFA + diff --git a/sql/hive/src/test/resources/data/conf/hive-site.xml b/sql/hive/src/test/resources/data/conf/hive-site.xml new file mode 100644 index 0000000000000..4e6ff16135833 --- /dev/null +++ b/sql/hive/src/test/resources/data/conf/hive-site.xml @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + hadoop.tmp.dir + ${build.dir.hive}/test/hadoop-${user.name} + A base for other temporary directories. + + + + + + hive.exec.scratchdir + ${build.dir}/scratchdir + Scratch space for Hive jobs + + + + hive.exec.local.scratchdir + ${build.dir}/localscratchdir/ + Local scratch space for Hive jobs + + + + javax.jdo.option.ConnectionURL + + jdbc:derby:;databaseName=../build/test/junit_metastore_db;create=true + + + + javax.jdo.option.ConnectionDriverName + org.apache.derby.jdbc.EmbeddedDriver + + + + javax.jdo.option.ConnectionUserName + APP + + + + javax.jdo.option.ConnectionPassword + mine + + + + + hive.metastore.warehouse.dir + ${test.warehouse.dir} + + + + + hive.metastore.metadb.dir + file://${build.dir}/test/data/metadb/ + + Required by metastore server or if the uris argument below is not supplied + + + + + test.log.dir + ${build.dir}/test/logs + + + + + test.src.dir + file://${build.dir}/src/test + + + + + test.data.files + ${user.dir}/../data/files + + + + + test.query.file1 + file://${user.dir}/../ql/src/test/org/apache/hadoop/hive/ql/input2.q + + + + + + hive.jar.path + ${build.dir.hive}/ql/hive-exec-${version}.jar + + + + + hive.metastore.rawstore.impl + org.apache.hadoop.hive.metastore.ObjectStore + Name of the class that implements org.apache.hadoop.hive.metastore.rawstore interface. This class is used to store and retrieval of raw metadata objects such as table, database + + + + hive.querylog.location + ${build.dir}/tmp + Location of the structured hive logs + + + + hive.exec.pre.hooks + org.apache.hadoop.hive.ql.hooks.PreExecutePrinter, org.apache.hadoop.hive.ql.hooks.EnforceReadOnlyTables + Pre Execute Hook for Tests + + + + hive.exec.post.hooks + org.apache.hadoop.hive.ql.hooks.PostExecutePrinter + Post Execute Hook for Tests + + + + hive.task.progress + false + Track progress of a task + + + + hive.support.concurrency + true + Whether hive supports concurrency or not. A zookeeper instance must be up and running for the default hive lock manager to support read-write locks. + + + + fs.pfile.impl + org.apache.hadoop.fs.ProxyLocalFileSystem + A proxy for local file system used for cross file system testing + + + + hive.exec.mode.local.auto + false + + Let hive determine whether to run in local mode automatically + Disabling this for tests so that minimr is not affected + + + + + hive.auto.convert.join + false + Whether Hive enable the optimization about converting common join into mapjoin based on the input file size + + + + hive.ignore.mapjoin.hint + false + Whether Hive ignores the mapjoin hint + + + + hive.input.format + org.apache.hadoop.hive.ql.io.CombineHiveInputFormat + The default input format, if it is not specified, the system assigns it. It is set to HiveInputFormat for hadoop versions 17, 18 and 19, whereas it is set to CombineHiveInputFormat for hadoop 20. The user can always overwrite it - if there is a bug in CombineHiveInputFormat, it can always be manually set to HiveInputFormat. + + + + hive.default.rcfile.serde + org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe + The default SerDe hive will use for the rcfile format + + + diff --git a/sql/hive/src/test/resources/data/files/SortCol1Col2.txt b/sql/hive/src/test/resources/data/files/SortCol1Col2.txt new file mode 100644 index 0000000000000..21f11729cc002 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/SortCol1Col2.txt @@ -0,0 +1,4 @@ +110 +111 +210 +211 diff --git a/sql/hive/src/test/resources/data/files/SortCol2Col1.txt b/sql/hive/src/test/resources/data/files/SortCol2Col1.txt new file mode 100644 index 0000000000000..83ad1ea0f89f3 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/SortCol2Col1.txt @@ -0,0 +1,5 @@ +110 +210 +111 +211 + diff --git a/sql/hive/src/test/resources/data/files/SortDescCol1Col2.txt b/sql/hive/src/test/resources/data/files/SortDescCol1Col2.txt new file mode 100644 index 0000000000000..d18cfac40495e --- /dev/null +++ b/sql/hive/src/test/resources/data/files/SortDescCol1Col2.txt @@ -0,0 +1,4 @@ +211 +210 +111 +110 diff --git a/sql/hive/src/test/resources/data/files/SortDescCol2Col1.txt b/sql/hive/src/test/resources/data/files/SortDescCol2Col1.txt new file mode 100644 index 0000000000000..ea929de39006c --- /dev/null +++ b/sql/hive/src/test/resources/data/files/SortDescCol2Col1.txt @@ -0,0 +1,4 @@ +211 +111 +210 +110 diff --git a/sql/hive/src/test/resources/data/files/T1.txt b/sql/hive/src/test/resources/data/files/T1.txt new file mode 100644 index 0000000000000..79158bee62d21 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/T1.txt @@ -0,0 +1,6 @@ +111 +212 +313 +717 +818 +828 diff --git a/sql/hive/src/test/resources/data/files/T2.txt b/sql/hive/src/test/resources/data/files/T2.txt new file mode 100644 index 0000000000000..ebd65dbdb9031 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/T2.txt @@ -0,0 +1,6 @@ +222 +313 +414 +515 +818 +818 diff --git a/sql/hive/src/test/resources/data/files/T3.txt b/sql/hive/src/test/resources/data/files/T3.txt new file mode 100644 index 0000000000000..957d4c8cfc0bb --- /dev/null +++ b/sql/hive/src/test/resources/data/files/T3.txt @@ -0,0 +1,4 @@ +212 +414 +616 +717 diff --git a/sql/hive/src/test/resources/data/files/TestSerDe.jar b/sql/hive/src/test/resources/data/files/TestSerDe.jar new file mode 100644 index 0000000000000..f29def6f8c97e Binary files /dev/null and b/sql/hive/src/test/resources/data/files/TestSerDe.jar differ diff --git a/sql/hive/src/test/resources/data/files/UserVisits.dat b/sql/hive/src/test/resources/data/files/UserVisits.dat new file mode 100644 index 0000000000000..f56c5a1b67b36 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/UserVisits.dat @@ -0,0 +1,55 @@ +170.131.22.2|13rdgckzlcblruc.html|1984-8-7|336.869186722|NuSearch Spider|HUN|HUN-NL|remnants|3 +162.114.4.2|6xpirzjeytxdjsmwtmyeugkesratmpvamliekrijlgmvyyrslqwgw.html|1978-1-9|331.791153595|Superdownloads Spiderma|AUT|AUT-ZR|MHD|8 +177.110.45.18|11zvmoamsyaameokoeylbkivgquksibqbalnpmailbiyfxitbhfdroyxesixbjndkyqzl.html|1986-9-25|411.968497603|Mozilla/4.0|FLK|FLK-GB|apj@as.arizona.edu.|7 +157.111.12.37|44mvdnls.html|2002-7-3|486.660926201|PHP/4.0.|FIN|FIN-CZ|diffuse|3 +161.100.45.22|14ceyigx.html|1978-10-26|399.80234522|NP/0.1|BEN|BEN-CA|region|8 +164.118.48.16|28axfinfqwdcwoorukpwqvqoxxeuivbniclnkytavwdslrj.html|1996-12-8|298.335411612|MSNBOT_Mobile MSMOBOT Mozilla/2.0|USA|USA-IO|medium|1 +153.104.13.11|19aysprojntmnwymfdkaznbqxprxxaissjqkzhzivsvipuvuxfuxsvnqlfnigvby.html|1976-10-6|146.309480768|WebSearch.COM.AU/3.0.1|MCO|MCO-YD|state|5 +150.112.45.27|12hcaewxiswjeezfnlulkenwubaqsitpuarufosogoxls.html|1995-6-19|173.469334335|WinkBot/0.06|PHL|PHL-NN|important|2 +152.108.39.16|36umg.html|1974-3-28|269.969215988|GSiteCrawler/v1.xx rev. xxx|MNG|MNG-HI|...)|6 +174.119.41.16|60yxoboskwpyfin.html|2002-7-17|436.113482675|Infoseek SideWinder/2.0B|NIC|NIC-JP|data|1 +165.116.21.12|70difiadhmrvragggmoaufnuwwbakbjntnwzvxcdjtybufiarwbmcphzmizwkikewh.html|1984-2-6|13.099044572|WWWeasel Robot v1.00|THA|THA-FO|bubbles|6 +155.128.42.14|21brkepinqiwvtmfmebjckkhwevhxaesogkykzgyqpuligrul.html|1986-7-29|347.800952938|Mozilla/4.0 compatible ZyBorg/1.0|IRN|IRN-YS|conduction|1 +156.131.31.12|14nbaaoablhxrlvbfgrwcxktvshtkoqzddbdepegbmesxztdglzjjkc.html|2002-7-30|85.7691140217|Java1.1.xx.|BRA|BRA-BL|circumstellar|9 +159.122.42.18|4xfydvopxveeduudfzodxkbczvdlzou.html|1989-9-20|332.572440865|Metaeuro Web Crawler/0.2|LUX|LUX-SD|kinematics|7 +151.104.39.45|65psclahgvasawczpyicyxkuqzwpbowghmzkxzsdvtwwpzvfydiwbsqrrmhtbezjqyuo.html|2002-1-13|190.528735328|JobSpider_BA/1.|UGA|UGA-PY|pulsars:|7 +159.132.24.22|18vhcbzhhblfbayejcybyibwqsgzlkmswizyjzgrbrw.html|1978-1-2|182.368755789|Piffany_Web_Scraper_v0.|ITA|ITA-NJ|nonthermal|1 +170.101.17.16|40prmxavsjoizdzkgsncesndxebatfwvrmmejnacxol.html|1989-9-1|41.4163486896|Mozilla/4.01 [en]|ZAF|ZAF-AK|Scuti|6 +171.124.38.2|29nripzogexadckoiaoafxvtkrxksdqgveydtxsabpbfsltbmibrfwlqojagmr.html|1979-6-12|192.085693167|IconSurf/2.0 favicon monitor|SVN|SVN-DY|systems|5 +178.128.29.41|24tmrndfialwvkwybuspjyexlkiamebwtvilimqqncnimkgofzepximj.html|2000-7-8|276.89796127|obidos-bot|SLB|SLB-RL|(...|4 +175.101.24.43|70dcfbcotdzhfhuhquyosbcviglrkrakddmifpxzswg.html|1978-3-16|131.775726872|Mozilla/4.0|BMU|BMU-BR|spiral|6 +155.102.37.30|99cyllzbnsowifxdxsdmiseiceeriaaoucmgnlhaewxmbvqynulwmpepujhckhqfjdmxpuyt.html|1975-5-4|311.052004479|WebSearch.COM.AU/3.0.1|NLD|NLD-GX|Herbig-Haro|6 +156.105.11.18|1nczmzpivhbgn.html|1992-9-19|36.9747263531|Search/1.0|GLP|GLP-DJ|observations|3 +164.115.38.23|79bvcojctkaugbcterbzfykwvesklokgilbkalntvoocqqvuixunvekqjcburlbzxckxnyrjm.html|1991-4-20|267.047961774|Journster.com RSS/Atom aggregator 0.5|HKG|HKG-PK|radio|2 +179.133.2.36|12azizhsdhdgdpidjgmdeyzmfhdwsbezbeyjegcioforvxvfehjigiulqyhizmhargkwmmeartsnrosvvbdbkynawvi.html|1999-12-9|481.463770712|LeechGet 200x|SCG|SCG-XF|instruments|8 +178.107.45.18|45mbziaowxegkhzcmbsyrextgqjbyezodmqduqrqnwxydwaqytopxmidcsfbwfparfemvwdjtaiwxjnvcclaotdrmjs.html|1983-4-13|51.6686671965|IlTrovatore/1.2|HND|HND-AN|dynamics|2 +162.117.17.14|17tkabzxynnqswezhqmkvrlfycpmxqowlhgligihuwxmscmasylopwuozjawaotlwaxfggmack.html|2001-12-24|161.048060104|Mozilla/4.5 [en]C-CCK-MCD {TLC;RETAIL}|RWA|RWA-QE|rays|9 +178.119.40.7|48amqtmqxsjgrmjkszztfpegqzapidysnze.html|1987-4-3|492.988714137|Mozilla/4.0|AUT|AUT-ZR|cosmology:|8 +160.119.18.18|15yufqaoxpuqwb.html|1979-7-22|394.694548614|scooter-venus-3.0.vn|MCO|MCO-YD|outflows|1 +162.112.21.25|21boum.html|1991-2-6|165.368136543|LinkProver 2.|TCA|TCA-IS|spots|8 +176.112.31.17|20gblxgjcvpu.html|1991-8-5|78.2740990152|Mozilla/4.0|BMU|BMU-BR|masses|2 +166.130.12.13|9izokfebomgsiifyzrsepbbemutvj.html|2003-12-5|188.600736756|WWW-Mechanize/1.1|TGO|TGO-WB|bursts|5 +171.100.18.39|97sxfsgahjujwzlszmxkahyslcobrrlx.html|1985-11-21|143.277058506|Overture-WebCrawler/3.8/Fresh|SAU|SAU-KL|interferometric|5 +152.122.43.35|85zdszgzonsxkqbrkthtceiuzjsedwvghvkzvqzj.html|1989-12-1|315.628996565|moget/x.x|UMI|UMI-VU|Galaxy:|2 +157.133.36.37|15xnilzhtqjsxhhbzazrflznupllyhvdbsqjeqqyharfiyhhyhzdszrnpcyoktslljvqam.html|1990-3-20|426.498017786|PrivacyFinder/1.|UZB|UZB-ZJ|nebulae|7 +161.134.11.11|96kvrofepctfbesrphjiznjktygntkkubupsjvxyxrdzvwrkeasdobohauvueg.html|1984-6-6|280.039128409|Waypath development crawler - info at waypath dot co|IDN|IDN-BH|supergiants|6 +163.123.23.13|19rkrtwumqwmnnzisxyeesqacwolpypyxhipaejnvfzitzrlwqqbigblcqxrpnqmuybudkiyqhhjgzvdpleysg.html|1977-10-11|86.3390049695|Opera/5.0|LSO|LSO-PW|testing|7 +166.126.40.21|52ejufqiidwioozorbnsjxezfwaucndbihldnblvehdtwchoeuhoslnyioslbwmkdynrzymegpy.html|1990-10-20|125.582281932|Mozilla/4.0|BTN|BTN-HP|catalogs|9 +158.133.10.19|87nzdhsnzhkylakazmkvctgaaxtrafpxscxvjqijxthitrj.html|1982-10-5|481.583542862|larbin|GAB|GAB-CS|angular|8 +173.104.45.8|49sdptdphxjlbiwrbbrsebwqquadx.html|1981-5-2|41.3182727245|LECodeChecker/3.0 libgetdoc/1.|AUS|AUS-AV|bands|6 +160.101.31.43|6lrepnctlanokfhla.html|1973-9-7|133.29867101|sogou develop spide|SWE|SWE-TM|time|5 +150.127.33.8|22oeawpxhqahkvtaecwp.html|1999-3-16|398.882494477|W3C-WebCon/5.x.x libwww/5.x.|ISR|ISR-DY|history|1 +154.114.47.36|2mzzsgievabpkaoqegadbbjxwkutdisnvrmox.html|1981-7-24|332.760102125|mammoth/1.0|AUT|AUT-ZR|FUNCTION|3 +155.108.15.24|22beewtbnpw.html|1996-6-7|393.470347637|Scrubby/3.0|ABW|ABW-NB|horizontal-branch|4 +177.120.40.39|48itvyjulckeddslsuayoguojzhvqvmfgvyctiwflhj.html|1977-8-12|239.601807636|webmeasurement-bot, http://rvs.informatik.uni-leipzig.d|WSM|WSM-UF|are|3 +179.123.41.31|46eppnympstjuhivvpritvotqmivgsfmdkbtxafns.html|2001-11-26|258.55616439|Mozilla/2.0|SYR|SYR-XP|photometric|1 +175.100.9.4|32fjrnrlabonc.html|1988-10-22|344.394849153|Snapbot/1.|GUF|GUF-KP|acceleration|2 +155.126.7.17|72wufwnsdsqncftnvdcunnknzqnaiyflmcgsytkbmbpogicblew.html|1981-12-5|398.334494319|UKWizz/Nutch-0.8.1|NIC|NIC-JP|Kuiper|4 +150.118.20.31|1mbyargbxtnjtivflxzzredcfbtehxbxjcwkucmrwaaqiwvutuulzxnezhi.html|1982-8-27|168.936669894|Mozilla/4.0|IRL|IRL-NN|cataclysmic|5 +177.116.39.36|84maivbmcqggefkjtsde.html|1982-6-11|88.121669797|Mozilla/4.0|ARE|ARE-MX|instruments|1 +168.119.19.26|73vhjursdvxateuvrxsspwwfdbsoqfegeannuegyadzuitparisgfomiqfxhkcnocacxfivfmuzuopvfynmdcyl.html|1991-11-17|397.829289621|webbandit/4.xx.|NIC|NIC-JP|dust|2 +154.100.36.32|57rylepuglpfqvjwkxgrtftvqkjzjwsznjyzontuzizqdimofsfzxzuojeot.html|1999-1-5|334.714055649|RRC|GTM|GTM-VH|blue|7 +153.112.2.11|6pkwxtlgkkxoqtxpgrullqxjauquvmlkcwhzpsgzdeotymieddqpu.html|1975-8-6|348.218411093|Wotbox/alpha0.6|MNP|MNP-UD|supernovae:|6 +150.107.15.22|53gohsgrvrjgfptttlpfipgsnijsrhxsyeggwnysfhykxrdqdsvlicdwkmpcumut.html|1978-8-2|355.771603423|Mozilla/3.0|DEU|DEU-PU|stars|4 +150.126.27.44|0rgxbnwiqebsmszpkvfpxvhkleebngzxxgvzt.html|1989-5-18|467.800755054|Mozilla/3.01|ZWE|ZWE-TS|system|3 +151.101.32.3|34btbqii.html|1998-8-1|131.055972797|Orca Browser|THA|THA-FO|late-type|5 diff --git a/sql/hive/src/test/resources/data/files/apache.access.2.log b/sql/hive/src/test/resources/data/files/apache.access.2.log new file mode 100644 index 0000000000000..cd7fea4e3fb5d --- /dev/null +++ b/sql/hive/src/test/resources/data/files/apache.access.2.log @@ -0,0 +1 @@ +127.0.0.1 - - [26/May/2009:00:00:00 +0000] "GET /someurl/?track=Blabla(Main) HTTP/1.1" 200 5864 - "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.65 Safari/525.19" diff --git a/sql/hive/src/test/resources/data/files/apache.access.log b/sql/hive/src/test/resources/data/files/apache.access.log new file mode 100644 index 0000000000000..14c341efc16ed --- /dev/null +++ b/sql/hive/src/test/resources/data/files/apache.access.log @@ -0,0 +1 @@ +127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 diff --git a/sql/hive/src/test/resources/data/files/archive_corrupt.rc b/sql/hive/src/test/resources/data/files/archive_corrupt.rc new file mode 100644 index 0000000000000..ab1f2ef25f1ad Binary files /dev/null and b/sql/hive/src/test/resources/data/files/archive_corrupt.rc differ diff --git a/sql/hive/src/test/resources/data/files/array_table.txt b/sql/hive/src/test/resources/data/files/array_table.txt new file mode 100644 index 0000000000000..463365f71b81b --- /dev/null +++ b/sql/hive/src/test/resources/data/files/array_table.txt @@ -0,0 +1,2 @@ +a1,a2,a3 b1,b2,b3,b4 +a21,a22,a23 b21,b22,b23,b24 diff --git a/sql/hive/src/test/resources/data/files/binary.txt b/sql/hive/src/test/resources/data/files/binary.txt new file mode 100644 index 0000000000000..c6fbdee959041 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/binary.txt @@ -0,0 +1,10 @@ +the quick brown fox jumped over the lazy little dog +today is nice outside +the quick brown fox jumped over the lazy little dog + +wikipedia is a great source of information +the quick brown fox jumped over the lazy little dog + +estimating the number of distinct values is a hard problem + +the quick brown fox jumped over the lazy little dog diff --git a/sql/hive/src/test/resources/data/files/bool.txt b/sql/hive/src/test/resources/data/files/bool.txt new file mode 100644 index 0000000000000..065359b9f9325 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/bool.txt @@ -0,0 +1,33 @@ +true +false +true +true +true +false +false +false +false +true +true +true +true +false + +false +true +true +false +false +false +false +false +false +false +false +true +false +false +false +true +true +false diff --git a/sql/hive/src/test/resources/data/files/complex.seq b/sql/hive/src/test/resources/data/files/complex.seq new file mode 100644 index 0000000000000..c27d5c09b1da8 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/complex.seq differ diff --git a/sql/hive/src/test/resources/data/files/covar_tab.txt b/sql/hive/src/test/resources/data/files/covar_tab.txt new file mode 100644 index 0000000000000..204a485fba2f7 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/covar_tab.txt @@ -0,0 +1,6 @@ +1 15 +2 3 +3 7 12 +4 4 14 +5 8 17 +6 2 11 diff --git a/sql/hive/src/test/resources/data/files/create_nested_type.txt b/sql/hive/src/test/resources/data/files/create_nested_type.txt new file mode 100644 index 0000000000000..b3b65fb2a4687 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/create_nested_type.txt @@ -0,0 +1,4 @@ +a0b00b01c001C001c002C002c011\Nc012C012d01d011d012d02d021d022 +a1b10c001C001c002C002d01d011d012d02\N +a2c001\Nc002C002c011C011c012C012d01\Nd012d02d021d022 +a3\N\N\N diff --git a/sql/hive/src/test/resources/data/files/csv.txt b/sql/hive/src/test/resources/data/files/csv.txt new file mode 100644 index 0000000000000..be8c0adb730c8 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/csv.txt @@ -0,0 +1,18 @@ +why hello there,42,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +another record,98,4,101,9999999,false,99.89,0.00000009,beta,Earth#101,1134:false:wazzup,RED,\N,,ef +third record,45,5,102,999999999,true,89.99,0.00000000000009,alpha:gamma,Earth#237:Bob#723,102:false:BNL,GREEN,\N,,hi +\N,42,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,\N,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,42,\N,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,42,3,\N,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,42,3,100,\N,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,42,3,100,1412341,\N,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,42,3,100,1412341,true,\N,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,42,3,100,1412341,true,42.43,\N,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,42,3,100,1412341,true,42.43,85.23423424,\N,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,bc +string,42,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,\N,17:true:Abe Linkedin,BLUE,72,,bc +string,42,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,\N,BLUE,72,,bc +string,42,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,\N,72,,bc +string,42,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,\N,,bc +string,42,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,\N,bc +string,42,3,100,1412341,true,42.43,85.23423424,alpha:beta:gamma,Earth#42:Control#86:Bob#31,17:true:Abe Linkedin,BLUE,72,,\N diff --git a/sql/hive/src/test/resources/data/files/datatypes.txt b/sql/hive/src/test/resources/data/files/datatypes.txt new file mode 100644 index 0000000000000..10daa1b11c26b --- /dev/null +++ b/sql/hive/src/test/resources/data/files/datatypes.txt @@ -0,0 +1,3 @@ +\N\N\N\N\N\N\N\N\N\N\N\N\N\N\N\N\N\N\N\N\N +-1false-1.1\N\N\N-1-1-1.0-1\N\N\N\N\N\N\N +1true1.11121x2ykva92.2111.01abcd1111213142212212x1abcd22012-04-22 09:00:00.123456789123456789.0123456YWJjZA==2013-01-01abc123 diff --git a/sql/hive/src/test/resources/data/files/dim-data.txt b/sql/hive/src/test/resources/data/files/dim-data.txt new file mode 100644 index 0000000000000..c90cc480b19d0 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/dim-data.txt @@ -0,0 +1,4 @@ +11 +22 +33 +44 diff --git a/sql/hive/src/test/resources/data/files/doctors.avro b/sql/hive/src/test/resources/data/files/doctors.avro new file mode 100644 index 0000000000000..5840e5f08a39a Binary files /dev/null and b/sql/hive/src/test/resources/data/files/doctors.avro differ diff --git a/sql/hive/src/test/resources/data/files/docurl.txt b/sql/hive/src/test/resources/data/files/docurl.txt new file mode 100644 index 0000000000000..5862d78b4bc53 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/docurl.txt @@ -0,0 +1,8 @@ +bonework Chad bullfrog almighty blubberers cynodictis boilersmith cosmopolitical corrie autoincrements +casings choked colpohysterotomy comedist cradleman annexa agronomical archmockery Cocles adhaka +daekon link anticrochet auricular cheeked Arbon alder-leaved +darlingness breamed company carbureted comediette condensery link +daekon link anticrochet auricular cheeked Arbon alder-leaved +darlingness breamed company carbureted comediette condensery link +daekon link anticrochet auricular cheeked Arbon alder-leaved darlingness breamed company carbureted comediette condensery link +daekon link anticrochet auricular cheeked Arbon alder-leaved darlingness breamed company carbureted comediette condensery link diff --git a/sql/hive/src/test/resources/data/files/double.txt b/sql/hive/src/test/resources/data/files/double.txt new file mode 100644 index 0000000000000..66c030bc47252 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/double.txt @@ -0,0 +1,16 @@ +55.33 +44.2 +435.33 +324.33 +324.33 +44.2 +55.3 +55.3 +0.0 + +66.4 +23.22 +-87.2 + +33.44 +55.3 diff --git a/sql/hive/src/test/resources/data/files/employee.dat b/sql/hive/src/test/resources/data/files/employee.dat new file mode 100644 index 0000000000000..c9d0197539efc --- /dev/null +++ b/sql/hive/src/test/resources/data/files/employee.dat @@ -0,0 +1,13 @@ +16|john +17|robert +18|andrew +19|katty +21|tom +22|tim +23|james +24|paul +27|edward +29|alan +31|kerry +34|terri + diff --git a/sql/hive/src/test/resources/data/files/employee2.dat b/sql/hive/src/test/resources/data/files/employee2.dat new file mode 100644 index 0000000000000..ad2d99a112511 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/employee2.dat @@ -0,0 +1,7 @@ +16|john +17|robert +18|andrew +19|katty +27|edward +29|alan +31|kerry diff --git a/sql/hive/src/test/resources/data/files/employee_part.txt b/sql/hive/src/test/resources/data/files/employee_part.txt new file mode 100644 index 0000000000000..8a10b9ea0298c --- /dev/null +++ b/sql/hive/src/test/resources/data/files/employee_part.txt @@ -0,0 +1,9 @@ +16|john|4000|USA +17|robert|2000|USA +18|andrew|4000|USA +19|katty|2000|USA +27|edward|4000|UK +29|alan|3000|UK +31|kerry|4000|UK +34|tom|3000|UK +35|zack|2000|UK diff --git a/sql/hive/src/test/resources/data/files/empty1.txt b/sql/hive/src/test/resources/data/files/empty1.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/data/files/empty2.txt b/sql/hive/src/test/resources/data/files/empty2.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/data/files/episodes.avro b/sql/hive/src/test/resources/data/files/episodes.avro new file mode 100644 index 0000000000000..58a028ce19e6a Binary files /dev/null and b/sql/hive/src/test/resources/data/files/episodes.avro differ diff --git a/sql/hive/src/test/resources/data/files/escapetest.txt b/sql/hive/src/test/resources/data/files/escapetest.txt new file mode 100644 index 0000000000000..3ff5fb9b14a03 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/escapetest.txt differ diff --git a/sql/hive/src/test/resources/data/files/ext_test/test.dat b/sql/hive/src/test/resources/data/files/ext_test/test.dat new file mode 100644 index 0000000000000..cf0389a5afee1 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/ext_test/test.dat @@ -0,0 +1,6 @@ +1 +2 +3 +4 +5 +6 \ No newline at end of file diff --git a/sql/hive/src/test/resources/data/files/fact-data.txt b/sql/hive/src/test/resources/data/files/fact-data.txt new file mode 100644 index 0000000000000..778ce4052f7e0 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/fact-data.txt @@ -0,0 +1,10 @@ +1212 +111212 +212212 +313212 +414212 +515234 +616234 +717234 +818234 +919234 diff --git a/sql/hive/src/test/resources/data/files/flights_join.txt b/sql/hive/src/test/resources/data/files/flights_join.txt new file mode 100644 index 0000000000000..664a06e9f978e --- /dev/null +++ b/sql/hive/src/test/resources/data/files/flights_join.txt @@ -0,0 +1,20 @@ +BaltimoreNew York2010-10-20-30.01064 +BaltimoreNew York2010-10-2123.01142 +BaltimoreNew York2010-10-226.01599 +ChicagoNew York2010-10-2342.0361 +ChicagoNew York2010-10-2424.0897 +ChicagoNew York2010-10-2515.01531 +ChicagoNew York2010-10-26-6.01610 +ChicagoNew York2010-10-27-2.03198 +BaltimoreNew York2010-10-2817.01064 +BaltimoreNew York2010-10-29105.01142 +BaltimoreNew York2000-11-20-30.01064 +BaltimoreNew York2000-11-2123.01142 +BaltimoreNew York2000-11-226.01599 +ChicagoNew York2000-11-2342.0361 +ChicagoNew York2000-11-2424.0897 +ChicagoNew York2000-11-2515.01531 +ChicagoNew York2000-11-26-6.01610 +ChicagoNew York2000-11-27-2.03198 +BaltimoreNew York2000-11-2817.01064 +BaltimoreNew York2000-11-28105.01142 diff --git a/sql/hive/src/test/resources/data/files/flights_tiny.txt b/sql/hive/src/test/resources/data/files/flights_tiny.txt new file mode 100644 index 0000000000000..4841c920ec3e8 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/flights_tiny.txt @@ -0,0 +1,137 @@ +BaltimoreNew York20101020-30.01064 +BaltimoreNew York2010102023.01142 +BaltimoreNew York201010206.01599 +ChicagoNew York2010102042.0361 +ChicagoNew York2010102024.0897 +ChicagoNew York2010102015.01531 +ChicagoNew York20101020-6.01610 +ChicagoNew York20101020-2.03198 +BaltimoreNew York2010102117.01064 +BaltimoreNew York20101021105.01142 +BaltimoreNew York2010102128.01599 +ChicagoNew York20101021142.0361 +ChicagoNew York2010102177.0897 +ChicagoNew York2010102153.01531 +ChicagoNew York20101021-5.01610 +ChicagoNew York2010102151.03198 +BaltimoreNew York20101022-12.01064 +BaltimoreNew York2010102254.01142 +BaltimoreNew York2010102218.01599 +ChicagoNew York201010222.0361 +ChicagoNew York2010102224.0897 +ChicagoNew York2010102216.01531 +ChicagoNew York20101022-6.01610 +ChicagoNew York20101022-11.03198 +BaltimoreNew York2010102318.0272 +BaltimoreNew York20101023-10.01805 +BaltimoreNew York201010236.03171 +ChicagoNew York201010233.0384 +ChicagoNew York2010102332.0426 +ChicagoNew York201010231.0650 +ChicagoNew York2010102311.03085 +BaltimoreNew York2010102412.01599 +BaltimoreNew York2010102420.02571 +ChicagoNew York2010102410.0361 +ChicagoNew York20101024113.0897 +ChicagoNew York20101024-5.01531 +ChicagoNew York20101024-17.01610 +ChicagoNew York20101024-3.03198 +BaltimoreNew York20101025-25.01064 +BaltimoreNew York2010102592.01142 +BaltimoreNew York20101025106.01599 +ChicagoNew York2010102531.0361 +ChicagoNew York20101025-1.0897 +ChicagoNew York2010102543.01531 +ChicagoNew York201010256.01610 +ChicagoNew York20101025-16.03198 +BaltimoreNew York20101026-22.01064 +BaltimoreNew York20101026123.01142 +BaltimoreNew York2010102690.01599 +ChicagoNew York2010102612.0361 +ChicagoNew York201010260.0897 +ChicagoNew York2010102629.01531 +ChicagoNew York20101026-17.01610 +ChicagoNew York201010266.03198 +BaltimoreNew York20101027-18.01064 +BaltimoreNew York2010102749.01142 +BaltimoreNew York2010102792.01599 +ChicagoNew York20101027148.0361 +ChicagoNew York20101027-11.0897 +ChicagoNew York2010102770.01531 +ChicagoNew York201010278.01610 +ChicagoNew York2010102721.03198 +BaltimoreNew York20101028-4.01064 +BaltimoreNew York20101028-14.01142 +BaltimoreNew York20101028-14.01599 +ChicagoNew York201010282.0361 +ChicagoNew York201010282.0897 +ChicagoNew York20101028-11.01531 +ChicagoNew York201010283.01610 +ChicagoNew York20101028-18.03198 +BaltimoreNew York20101029-24.01064 +BaltimoreNew York2010102921.01142 +BaltimoreNew York20101029-2.01599 +ChicagoNew York20101029-12.0361 +ChicagoNew York20101029-11.0897 +ChicagoNew York2010102915.01531 +ChicagoNew York20101029-18.01610 +ChicagoNew York20101029-4.03198 +BaltimoreNew York2010103014.0272 +BaltimoreNew York20101030-1.01805 +BaltimoreNew York201010305.03171 +ChicagoNew York20101030-6.0384 +ChicagoNew York20101030-10.0426 +ChicagoNew York20101030-5.0650 +ChicagoNew York20101030-5.03085 +BaltimoreNew York20101031-1.01599 +BaltimoreNew York20101031-14.02571 +ChicagoNew York20101031-25.0361 +ChicagoNew York20101031-18.0897 +ChicagoNew York20101031-4.01531 +ChicagoNew York20101031-22.01610 +ChicagoNew York20101031-15.03198 +ClevelandNew York20101030-23.02018 +ClevelandNew York20101030-12.02932 +ClevelandNew York20101029-4.02630 +ClevelandNew York20101029-19.02646 +ClevelandNew York20101029-12.03014 +ClevelandNew York201010283.02630 +ClevelandNew York20101028-6.02646 +ClevelandNew York201010281.03014 +ClevelandNew York2010102716.02630 +ClevelandNew York2010102727.03014 +ClevelandNew York201010264.02630 +ClevelandNew York20101026-27.02646 +ClevelandNew York20101026-11.02662 +ClevelandNew York2010102613.03014 +ClevelandNew York20101025-4.02630 +ClevelandNew York2010102581.02646 +ClevelandNew York2010102542.03014 +ClevelandNew York201010245.02254 +ClevelandNew York20101024-11.02630 +ClevelandNew York20101024-20.02646 +ClevelandNew York20101024-9.03014 +ClevelandNew York20101023-21.02932 +ClevelandNew York201010221.02630 +ClevelandNew York20101022-25.02646 +ClevelandNew York20101022-3.03014 +ClevelandNew York201010213.02630 +ClevelandNew York2010102129.02646 +ClevelandNew York2010102172.03014 +ClevelandNew York20101020-8.02630 +ClevelandNew York20101020-15.03014 +WashingtonNew York20101023-25.05832 +WashingtonNew York20101023-21.05904 +WashingtonNew York20101023-18.05917 +WashingtonNew York20101030-27.05904 +WashingtonNew York20101030-16.05917 +WashingtonNew York20101020-2.07291 +WashingtonNew York2010102122.07291 +WashingtonNew York20101023-16.07274 +WashingtonNew York20101024-26.07282 +WashingtonNew York201010259.07291 +WashingtonNew York201010264.07291 +WashingtonNew York2010102726.07291 +WashingtonNew York2010102845.07291 +WashingtonNew York201010291.07291 +WashingtonNew York20101031-18.07282 diff --git a/sql/hive/src/test/resources/data/files/flights_tiny.txt.1 b/sql/hive/src/test/resources/data/files/flights_tiny.txt.1 new file mode 100644 index 0000000000000..532848ad85ab7 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/flights_tiny.txt.1 @@ -0,0 +1,137 @@ +BaltimoreNew York2010-10-20-30.01064 +BaltimoreNew York2010-10-2023.01142 +BaltimoreNew York2010-10-206.01599 +ChicagoNew York2010-10-2042.0361 +ChicagoNew York2010-10-2024.0897 +ChicagoNew York2010-10-2015.01531 +ChicagoNew York2010-10-20-6.01610 +ChicagoNew York2010-10-20-2.03198 +BaltimoreNew York2010-10-2117.01064 +BaltimoreNew York2010-10-21105.01142 +BaltimoreNew York2010-10-2128.01599 +ChicagoNew York2010-10-21142.0361 +ChicagoNew York2010-10-2177.0897 +ChicagoNew York2010-10-2153.01531 +ChicagoNew York2010-10-21-5.01610 +ChicagoNew York2010-10-2151.03198 +BaltimoreNew York2010-10-22-12.01064 +BaltimoreNew York2010-10-2254.01142 +BaltimoreNew York2010-10-2218.01599 +ChicagoNew York2010-10-222.0361 +ChicagoNew York2010-10-2224.0897 +ChicagoNew York2010-10-2216.01531 +ChicagoNew York2010-10-22-6.01610 +ChicagoNew York2010-10-22-11.03198 +BaltimoreNew York2010-10-2318.0272 +BaltimoreNew York2010-10-23-10.01805 +BaltimoreNew York2010-10-236.03171 +ChicagoNew York2010-10-233.0384 +ChicagoNew York2010-10-2332.0426 +ChicagoNew York2010-10-231.0650 +ChicagoNew York2010-10-2311.03085 +BaltimoreNew York2010-10-2412.01599 +BaltimoreNew York2010-10-2420.02571 +ChicagoNew York2010-10-2410.0361 +ChicagoNew York2010-10-24113.0897 +ChicagoNew York2010-10-24-5.01531 +ChicagoNew York2010-10-24-17.01610 +ChicagoNew York2010-10-24-3.03198 +BaltimoreNew York2010-10-25-25.01064 +BaltimoreNew York2010-10-2592.01142 +BaltimoreNew York2010-10-25106.01599 +ChicagoNew York2010-10-2531.0361 +ChicagoNew York2010-10-25-1.0897 +ChicagoNew York2010-10-2543.01531 +ChicagoNew York2010-10-256.01610 +ChicagoNew York2010-10-25-16.03198 +BaltimoreNew York2010-10-26-22.01064 +BaltimoreNew York2010-10-26123.01142 +BaltimoreNew York2010-10-2690.01599 +ChicagoNew York2010-10-2612.0361 +ChicagoNew York2010-10-260.0897 +ChicagoNew York2010-10-2629.01531 +ChicagoNew York2010-10-26-17.01610 +ChicagoNew York2010-10-266.03198 +BaltimoreNew York2010-10-27-18.01064 +BaltimoreNew York2010-10-2749.01142 +BaltimoreNew York2010-10-2792.01599 +ChicagoNew York2010-10-27148.0361 +ChicagoNew York2010-10-27-11.0897 +ChicagoNew York2010-10-2770.01531 +ChicagoNew York2010-10-278.01610 +ChicagoNew York2010-10-2721.03198 +BaltimoreNew York2010-10-28-4.01064 +BaltimoreNew York2010-10-28-14.01142 +BaltimoreNew York2010-10-28-14.01599 +ChicagoNew York2010-10-282.0361 +ChicagoNew York2010-10-282.0897 +ChicagoNew York2010-10-28-11.01531 +ChicagoNew York2010-10-283.01610 +ChicagoNew York2010-10-28-18.03198 +BaltimoreNew York2010-10-29-24.01064 +BaltimoreNew York2010-10-2921.01142 +BaltimoreNew York2010-10-29-2.01599 +ChicagoNew York2010-10-29-12.0361 +ChicagoNew York2010-10-29-11.0897 +ChicagoNew York2010-10-2915.01531 +ChicagoNew York2010-10-29-18.01610 +ChicagoNew York2010-10-29-4.03198 +BaltimoreNew York2010-10-3014.0272 +BaltimoreNew York2010-10-30-1.01805 +BaltimoreNew York2010-10-305.03171 +ChicagoNew York2010-10-30-6.0384 +ChicagoNew York2010-10-30-10.0426 +ChicagoNew York2010-10-30-5.0650 +ChicagoNew York2010-10-30-5.03085 +BaltimoreNew York2010-10-31-1.01599 +BaltimoreNew York2010-10-31-14.02571 +ChicagoNew York2010-10-31-25.0361 +ChicagoNew York2010-10-31-18.0897 +ChicagoNew York2010-10-31-4.01531 +ChicagoNew York2010-10-31-22.01610 +ChicagoNew York2010-10-31-15.03198 +ClevelandNew York2010-10-30-23.02018 +ClevelandNew York2010-10-30-12.02932 +ClevelandNew York2010-10-29-4.02630 +ClevelandNew York2010-10-29-19.02646 +ClevelandNew York2010-10-29-12.03014 +ClevelandNew York2010-10-283.02630 +ClevelandNew York2010-10-28-6.02646 +ClevelandNew York2010-10-281.03014 +ClevelandNew York2010-10-2716.02630 +ClevelandNew York2010-10-2727.03014 +ClevelandNew York2010-10-264.02630 +ClevelandNew York2010-10-26-27.02646 +ClevelandNew York2010-10-26-11.02662 +ClevelandNew York2010-10-2613.03014 +ClevelandNew York2010-10-25-4.02630 +ClevelandNew York2010-10-2581.02646 +ClevelandNew York2010-10-2542.03014 +ClevelandNew York2010-10-245.02254 +ClevelandNew York2010-10-24-11.02630 +ClevelandNew York2010-10-24-20.02646 +ClevelandNew York2010-10-24-9.03014 +ClevelandNew York2010-10-23-21.02932 +ClevelandNew York2010-10-221.02630 +ClevelandNew York2010-10-22-25.02646 +ClevelandNew York2010-10-22-3.03014 +ClevelandNew York2010-10-213.02630 +ClevelandNew York2010-10-2129.02646 +ClevelandNew York2010-10-2172.03014 +ClevelandNew York2010-10-20-8.02630 +ClevelandNew York2010-10-20-15.03014 +WashingtonNew York2010-10-23-25.05832 +WashingtonNew York2010-10-23-21.05904 +WashingtonNew York2010-10-23-18.05917 +WashingtonNew York2010-10-30-27.05904 +WashingtonNew York2010-10-30-16.05917 +WashingtonNew York2010-10-20-2.07291 +WashingtonNew York2010-10-2122.07291 +WashingtonNew York2010-10-23-16.07274 +WashingtonNew York2010-10-24-26.07282 +WashingtonNew York2010-10-259.07291 +WashingtonNew York2010-10-264.07291 +WashingtonNew York2010-10-2726.07291 +WashingtonNew York2010-10-2845.07291 +WashingtonNew York2010-10-291.07291 +WashingtonNew York2010-10-31-18.07282 diff --git a/sql/hive/src/test/resources/data/files/groupby_groupingid.txt b/sql/hive/src/test/resources/data/files/groupby_groupingid.txt new file mode 100644 index 0000000000000..108d41d9b98fc --- /dev/null +++ b/sql/hive/src/test/resources/data/files/groupby_groupingid.txt @@ -0,0 +1,6 @@ +1NULL +11 +22 +33 +3NULL +45 diff --git a/sql/hive/src/test/resources/data/files/grouping_sets.txt b/sql/hive/src/test/resources/data/files/grouping_sets.txt new file mode 100644 index 0000000000000..8ba5e2d61051d --- /dev/null +++ b/sql/hive/src/test/resources/data/files/grouping_sets.txt @@ -0,0 +1,6 @@ +8 1 1 +5 2 2 +1 1 3 +2 2 4 +2 3 5 +3 2 8 diff --git a/sql/hive/src/test/resources/data/files/grouping_sets1.txt b/sql/hive/src/test/resources/data/files/grouping_sets1.txt new file mode 100644 index 0000000000000..3b6cd99163752 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/grouping_sets1.txt @@ -0,0 +1,6 @@ +8 1 1 +5 1 2 +1 1 3 +2 2 4 +2 3 5 +3 2 8 diff --git a/sql/hive/src/test/resources/data/files/grouping_sets2.txt b/sql/hive/src/test/resources/data/files/grouping_sets2.txt new file mode 100644 index 0000000000000..5b4e032fc5751 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/grouping_sets2.txt @@ -0,0 +1,6 @@ +8 1 1 +1 2 2 +1 1 3 +2 2 4 +2 3 5 +2 2 8 diff --git a/sql/hive/src/test/resources/data/files/hive_626_bar.txt b/sql/hive/src/test/resources/data/files/hive_626_bar.txt new file mode 100644 index 0000000000000..1ac3d25729c89 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/hive_626_bar.txt @@ -0,0 +1 @@ +10,0,1,1,bar10,a,b,c,d diff --git a/sql/hive/src/test/resources/data/files/hive_626_count.txt b/sql/hive/src/test/resources/data/files/hive_626_count.txt new file mode 100644 index 0000000000000..d62e011bba9dc --- /dev/null +++ b/sql/hive/src/test/resources/data/files/hive_626_count.txt @@ -0,0 +1 @@ +10,2 diff --git a/sql/hive/src/test/resources/data/files/hive_626_foo.txt b/sql/hive/src/test/resources/data/files/hive_626_foo.txt new file mode 100644 index 0000000000000..8a63d3a1ed579 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/hive_626_foo.txt @@ -0,0 +1 @@ +1,foo1,a,b,c,d diff --git a/sql/hive/src/test/resources/data/files/in1.txt b/sql/hive/src/test/resources/data/files/in1.txt new file mode 100644 index 0000000000000..1a5949633e65c --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in1.txt @@ -0,0 +1,3 @@ +35 +48 +100100 diff --git a/sql/hive/src/test/resources/data/files/in2.txt b/sql/hive/src/test/resources/data/files/in2.txt new file mode 100644 index 0000000000000..71f7e0963e4f4 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in2.txt @@ -0,0 +1,3 @@ +135 +148 +200200 diff --git a/sql/hive/src/test/resources/data/files/in3.txt b/sql/hive/src/test/resources/data/files/in3.txt new file mode 100644 index 0000000000000..333dd32ab27d5 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in3.txt @@ -0,0 +1,4 @@ +1235 +40 +48 +100100 diff --git a/sql/hive/src/test/resources/data/files/in4.txt b/sql/hive/src/test/resources/data/files/in4.txt new file mode 100644 index 0000000000000..63cf2f6c145f8 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in4.txt @@ -0,0 +1,7 @@ +35236 +101000501 +100100103 +12802 +101005 +10100454 +12100757 diff --git a/sql/hive/src/test/resources/data/files/in5.txt b/sql/hive/src/test/resources/data/files/in5.txt new file mode 100644 index 0000000000000..8da5dcfcd60a6 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in5.txt @@ -0,0 +1,19 @@ +51000566 +151001566 +201002066 +251002588 +301003066 +351003588 +401004066 +401004088 +501005088 +501005066 +501005088 +601004066 +601004066 +701004066 +701004066 +801004088 +801004088 +1005066 +66 diff --git a/sql/hive/src/test/resources/data/files/in6.txt b/sql/hive/src/test/resources/data/files/in6.txt new file mode 100644 index 0000000000000..f96b7a40c5d94 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in6.txt @@ -0,0 +1,19 @@ +51000566 +101001066 +201002066 +251002566 +301003088 +351003588 +401004066 +401004088 +501005066 +501005088 +501005066 +601004066 +601004066 +701004088 +701004088 +801004066 +801004066 +1005066 +66 diff --git a/sql/hive/src/test/resources/data/files/in7.txt b/sql/hive/src/test/resources/data/files/in7.txt new file mode 100644 index 0000000000000..424a2fee06987 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in7.txt @@ -0,0 +1,3 @@ +35 40 +48 32 +100100 40 diff --git a/sql/hive/src/test/resources/data/files/in8.txt b/sql/hive/src/test/resources/data/files/in8.txt new file mode 100644 index 0000000000000..54b8a5bb75395 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in8.txt @@ -0,0 +1,6 @@ + +10 +10 +35 +48 +100100 diff --git a/sql/hive/src/test/resources/data/files/in9.txt b/sql/hive/src/test/resources/data/files/in9.txt new file mode 100644 index 0000000000000..b38f3c191ee57 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/in9.txt @@ -0,0 +1,6 @@ + +110 +110 +135 +148 +200200 diff --git a/sql/hive/src/test/resources/data/files/infer_const_type.txt b/sql/hive/src/test/resources/data/files/infer_const_type.txt new file mode 100644 index 0000000000000..05c43c1264f79 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/infer_const_type.txt @@ -0,0 +1,3 @@ +1273276712345-12345906-307.01234 +1263276712345-12345906-307.01234 +1263276712345-12345906-307.01.57 diff --git a/sql/hive/src/test/resources/data/files/int.txt b/sql/hive/src/test/resources/data/files/int.txt new file mode 100644 index 0000000000000..9553ed297f77e --- /dev/null +++ b/sql/hive/src/test/resources/data/files/int.txt @@ -0,0 +1,12 @@ +4 +252 +233 + +343 +43 +45 +344 +22 +54 +8 +13 diff --git a/sql/hive/src/test/resources/data/files/json.txt b/sql/hive/src/test/resources/data/files/json.txt new file mode 100644 index 0000000000000..1dcda4315a14d --- /dev/null +++ b/sql/hive/src/test/resources/data/files/json.txt @@ -0,0 +1 @@ +{"store":{"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],"basket":[[1,2,{"b":"y","a":"x"}],[3,4],[5,6]],"book":[{"author":"Nigel Rees","title":"Sayings of the Century","category":"reference","price":8.95},{"author":"Herman Melville","title":"Moby Dick","category":"fiction","price":8.99,"isbn":"0-553-21311-3"},{"author":"J. R. R. Tolkien","title":"The Lord of the Rings","category":"fiction","reader":[{"age":25,"name":"bob"},{"age":26,"name":"jack"}],"price":22.99,"isbn":"0-395-19395-8"}],"bicycle":{"price":19.95,"color":"red"}},"email":"amy@only_for_json_udf_test.net","owner":"amy","zip code":"94025","fb:testid":"1234"} diff --git a/sql/hive/src/test/resources/data/files/kv1.seq b/sql/hive/src/test/resources/data/files/kv1.seq new file mode 100644 index 0000000000000..8da0a7751cf12 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/kv1.seq differ diff --git a/sql/hive/src/test/resources/data/files/kv1.string-sorted.txt b/sql/hive/src/test/resources/data/files/kv1.string-sorted.txt new file mode 100644 index 0000000000000..5c1575d34285e --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv1.string-sorted.txt @@ -0,0 +1,500 @@ +0val_0 +0val_0 +0val_0 +10val_10 +100val_100 +100val_100 +103val_103 +103val_103 +104val_104 +104val_104 +105val_105 +11val_11 +111val_111 +113val_113 +113val_113 +114val_114 +116val_116 +118val_118 +118val_118 +119val_119 +119val_119 +119val_119 +12val_12 +12val_12 +120val_120 +120val_120 +125val_125 +125val_125 +126val_126 +128val_128 +128val_128 +128val_128 +129val_129 +129val_129 +131val_131 +133val_133 +134val_134 +134val_134 +136val_136 +137val_137 +137val_137 +138val_138 +138val_138 +138val_138 +138val_138 +143val_143 +145val_145 +146val_146 +146val_146 +149val_149 +149val_149 +15val_15 +15val_15 +150val_150 +152val_152 +152val_152 +153val_153 +155val_155 +156val_156 +157val_157 +158val_158 +160val_160 +162val_162 +163val_163 +164val_164 +164val_164 +165val_165 +165val_165 +166val_166 +167val_167 +167val_167 +167val_167 +168val_168 +169val_169 +169val_169 +169val_169 +169val_169 +17val_17 +170val_170 +172val_172 +172val_172 +174val_174 +174val_174 +175val_175 +175val_175 +176val_176 +176val_176 +177val_177 +178val_178 +179val_179 +179val_179 +18val_18 +18val_18 +180val_180 +181val_181 +183val_183 +186val_186 +187val_187 +187val_187 +187val_187 +189val_189 +19val_19 +190val_190 +191val_191 +191val_191 +192val_192 +193val_193 +193val_193 +193val_193 +194val_194 +195val_195 +195val_195 +196val_196 +197val_197 +197val_197 +199val_199 +199val_199 +199val_199 +2val_2 +20val_20 +200val_200 +200val_200 +201val_201 +202val_202 +203val_203 +203val_203 +205val_205 +205val_205 +207val_207 +207val_207 +208val_208 +208val_208 +208val_208 +209val_209 +209val_209 +213val_213 +213val_213 +214val_214 +216val_216 +216val_216 +217val_217 +217val_217 +218val_218 +219val_219 +219val_219 +221val_221 +221val_221 +222val_222 +223val_223 +223val_223 +224val_224 +224val_224 +226val_226 +228val_228 +229val_229 +229val_229 +230val_230 +230val_230 +230val_230 +230val_230 +230val_230 +233val_233 +233val_233 +235val_235 +237val_237 +237val_237 +238val_238 +238val_238 +239val_239 +239val_239 +24val_24 +24val_24 +241val_241 +242val_242 +242val_242 +244val_244 +247val_247 +248val_248 +249val_249 +252val_252 +255val_255 +255val_255 +256val_256 +256val_256 +257val_257 +258val_258 +26val_26 +26val_26 +260val_260 +262val_262 +263val_263 +265val_265 +265val_265 +266val_266 +27val_27 +272val_272 +272val_272 +273val_273 +273val_273 +273val_273 +274val_274 +275val_275 +277val_277 +277val_277 +277val_277 +277val_277 +278val_278 +278val_278 +28val_28 +280val_280 +280val_280 +281val_281 +281val_281 +282val_282 +282val_282 +283val_283 +284val_284 +285val_285 +286val_286 +287val_287 +288val_288 +288val_288 +289val_289 +291val_291 +292val_292 +296val_296 +298val_298 +298val_298 +298val_298 +30val_30 +302val_302 +305val_305 +306val_306 +307val_307 +307val_307 +308val_308 +309val_309 +309val_309 +310val_310 +311val_311 +311val_311 +311val_311 +315val_315 +316val_316 +316val_316 +316val_316 +317val_317 +317val_317 +318val_318 +318val_318 +318val_318 +321val_321 +321val_321 +322val_322 +322val_322 +323val_323 +325val_325 +325val_325 +327val_327 +327val_327 +327val_327 +33val_33 +331val_331 +331val_331 +332val_332 +333val_333 +333val_333 +335val_335 +336val_336 +338val_338 +339val_339 +34val_34 +341val_341 +342val_342 +342val_342 +344val_344 +344val_344 +345val_345 +348val_348 +348val_348 +348val_348 +348val_348 +348val_348 +35val_35 +35val_35 +35val_35 +351val_351 +353val_353 +353val_353 +356val_356 +360val_360 +362val_362 +364val_364 +365val_365 +366val_366 +367val_367 +367val_367 +368val_368 +369val_369 +369val_369 +369val_369 +37val_37 +37val_37 +373val_373 +374val_374 +375val_375 +377val_377 +378val_378 +379val_379 +382val_382 +382val_382 +384val_384 +384val_384 +384val_384 +386val_386 +389val_389 +392val_392 +393val_393 +394val_394 +395val_395 +395val_395 +396val_396 +396val_396 +396val_396 +397val_397 +397val_397 +399val_399 +399val_399 +4val_4 +400val_400 +401val_401 +401val_401 +401val_401 +401val_401 +401val_401 +402val_402 +403val_403 +403val_403 +403val_403 +404val_404 +404val_404 +406val_406 +406val_406 +406val_406 +406val_406 +407val_407 +409val_409 +409val_409 +409val_409 +41val_41 +411val_411 +413val_413 +413val_413 +414val_414 +414val_414 +417val_417 +417val_417 +417val_417 +418val_418 +419val_419 +42val_42 +42val_42 +421val_421 +424val_424 +424val_424 +427val_427 +429val_429 +429val_429 +43val_43 +430val_430 +430val_430 +430val_430 +431val_431 +431val_431 +431val_431 +432val_432 +435val_435 +436val_436 +437val_437 +438val_438 +438val_438 +438val_438 +439val_439 +439val_439 +44val_44 +443val_443 +444val_444 +446val_446 +448val_448 +449val_449 +452val_452 +453val_453 +454val_454 +454val_454 +454val_454 +455val_455 +457val_457 +458val_458 +458val_458 +459val_459 +459val_459 +460val_460 +462val_462 +462val_462 +463val_463 +463val_463 +466val_466 +466val_466 +466val_466 +467val_467 +468val_468 +468val_468 +468val_468 +468val_468 +469val_469 +469val_469 +469val_469 +469val_469 +469val_469 +47val_47 +470val_470 +472val_472 +475val_475 +477val_477 +478val_478 +478val_478 +479val_479 +480val_480 +480val_480 +480val_480 +481val_481 +482val_482 +483val_483 +484val_484 +485val_485 +487val_487 +489val_489 +489val_489 +489val_489 +489val_489 +490val_490 +491val_491 +492val_492 +492val_492 +493val_493 +494val_494 +495val_495 +496val_496 +497val_497 +498val_498 +498val_498 +498val_498 +5val_5 +5val_5 +5val_5 +51val_51 +51val_51 +53val_53 +54val_54 +57val_57 +58val_58 +58val_58 +64val_64 +65val_65 +66val_66 +67val_67 +67val_67 +69val_69 +70val_70 +70val_70 +70val_70 +72val_72 +72val_72 +74val_74 +76val_76 +76val_76 +77val_77 +78val_78 +8val_8 +80val_80 +82val_82 +83val_83 +83val_83 +84val_84 +84val_84 +85val_85 +86val_86 +87val_87 +9val_9 +90val_90 +90val_90 +90val_90 +92val_92 +95val_95 +95val_95 +96val_96 +97val_97 +97val_97 +98val_98 +98val_98 diff --git a/sql/hive/src/test/resources/data/files/kv1.txt b/sql/hive/src/test/resources/data/files/kv1.txt new file mode 100644 index 0000000000000..9825414ecf8f2 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv1.txt @@ -0,0 +1,500 @@ +238val_238 +86val_86 +311val_311 +27val_27 +165val_165 +409val_409 +255val_255 +278val_278 +98val_98 +484val_484 +265val_265 +193val_193 +401val_401 +150val_150 +273val_273 +224val_224 +369val_369 +66val_66 +128val_128 +213val_213 +146val_146 +406val_406 +429val_429 +374val_374 +152val_152 +469val_469 +145val_145 +495val_495 +37val_37 +327val_327 +281val_281 +277val_277 +209val_209 +15val_15 +82val_82 +403val_403 +166val_166 +417val_417 +430val_430 +252val_252 +292val_292 +219val_219 +287val_287 +153val_153 +193val_193 +338val_338 +446val_446 +459val_459 +394val_394 +237val_237 +482val_482 +174val_174 +413val_413 +494val_494 +207val_207 +199val_199 +466val_466 +208val_208 +174val_174 +399val_399 +396val_396 +247val_247 +417val_417 +489val_489 +162val_162 +377val_377 +397val_397 +309val_309 +365val_365 +266val_266 +439val_439 +342val_342 +367val_367 +325val_325 +167val_167 +195val_195 +475val_475 +17val_17 +113val_113 +155val_155 +203val_203 +339val_339 +0val_0 +455val_455 +128val_128 +311val_311 +316val_316 +57val_57 +302val_302 +205val_205 +149val_149 +438val_438 +345val_345 +129val_129 +170val_170 +20val_20 +489val_489 +157val_157 +378val_378 +221val_221 +92val_92 +111val_111 +47val_47 +72val_72 +4val_4 +280val_280 +35val_35 +427val_427 +277val_277 +208val_208 +356val_356 +399val_399 +169val_169 +382val_382 +498val_498 +125val_125 +386val_386 +437val_437 +469val_469 +192val_192 +286val_286 +187val_187 +176val_176 +54val_54 +459val_459 +51val_51 +138val_138 +103val_103 +239val_239 +213val_213 +216val_216 +430val_430 +278val_278 +176val_176 +289val_289 +221val_221 +65val_65 +318val_318 +332val_332 +311val_311 +275val_275 +137val_137 +241val_241 +83val_83 +333val_333 +180val_180 +284val_284 +12val_12 +230val_230 +181val_181 +67val_67 +260val_260 +404val_404 +384val_384 +489val_489 +353val_353 +373val_373 +272val_272 +138val_138 +217val_217 +84val_84 +348val_348 +466val_466 +58val_58 +8val_8 +411val_411 +230val_230 +208val_208 +348val_348 +24val_24 +463val_463 +431val_431 +179val_179 +172val_172 +42val_42 +129val_129 +158val_158 +119val_119 +496val_496 +0val_0 +322val_322 +197val_197 +468val_468 +393val_393 +454val_454 +100val_100 +298val_298 +199val_199 +191val_191 +418val_418 +96val_96 +26val_26 +165val_165 +327val_327 +230val_230 +205val_205 +120val_120 +131val_131 +51val_51 +404val_404 +43val_43 +436val_436 +156val_156 +469val_469 +468val_468 +308val_308 +95val_95 +196val_196 +288val_288 +481val_481 +457val_457 +98val_98 +282val_282 +197val_197 +187val_187 +318val_318 +318val_318 +409val_409 +470val_470 +137val_137 +369val_369 +316val_316 +169val_169 +413val_413 +85val_85 +77val_77 +0val_0 +490val_490 +87val_87 +364val_364 +179val_179 +118val_118 +134val_134 +395val_395 +282val_282 +138val_138 +238val_238 +419val_419 +15val_15 +118val_118 +72val_72 +90val_90 +307val_307 +19val_19 +435val_435 +10val_10 +277val_277 +273val_273 +306val_306 +224val_224 +309val_309 +389val_389 +327val_327 +242val_242 +369val_369 +392val_392 +272val_272 +331val_331 +401val_401 +242val_242 +452val_452 +177val_177 +226val_226 +5val_5 +497val_497 +402val_402 +396val_396 +317val_317 +395val_395 +58val_58 +35val_35 +336val_336 +95val_95 +11val_11 +168val_168 +34val_34 +229val_229 +233val_233 +143val_143 +472val_472 +322val_322 +498val_498 +160val_160 +195val_195 +42val_42 +321val_321 +430val_430 +119val_119 +489val_489 +458val_458 +78val_78 +76val_76 +41val_41 +223val_223 +492val_492 +149val_149 +449val_449 +218val_218 +228val_228 +138val_138 +453val_453 +30val_30 +209val_209 +64val_64 +468val_468 +76val_76 +74val_74 +342val_342 +69val_69 +230val_230 +33val_33 +368val_368 +103val_103 +296val_296 +113val_113 +216val_216 +367val_367 +344val_344 +167val_167 +274val_274 +219val_219 +239val_239 +485val_485 +116val_116 +223val_223 +256val_256 +263val_263 +70val_70 +487val_487 +480val_480 +401val_401 +288val_288 +191val_191 +5val_5 +244val_244 +438val_438 +128val_128 +467val_467 +432val_432 +202val_202 +316val_316 +229val_229 +469val_469 +463val_463 +280val_280 +2val_2 +35val_35 +283val_283 +331val_331 +235val_235 +80val_80 +44val_44 +193val_193 +321val_321 +335val_335 +104val_104 +466val_466 +366val_366 +175val_175 +403val_403 +483val_483 +53val_53 +105val_105 +257val_257 +406val_406 +409val_409 +190val_190 +406val_406 +401val_401 +114val_114 +258val_258 +90val_90 +203val_203 +262val_262 +348val_348 +424val_424 +12val_12 +396val_396 +201val_201 +217val_217 +164val_164 +431val_431 +454val_454 +478val_478 +298val_298 +125val_125 +431val_431 +164val_164 +424val_424 +187val_187 +382val_382 +5val_5 +70val_70 +397val_397 +480val_480 +291val_291 +24val_24 +351val_351 +255val_255 +104val_104 +70val_70 +163val_163 +438val_438 +119val_119 +414val_414 +200val_200 +491val_491 +237val_237 +439val_439 +360val_360 +248val_248 +479val_479 +305val_305 +417val_417 +199val_199 +444val_444 +120val_120 +429val_429 +169val_169 +443val_443 +323val_323 +325val_325 +277val_277 +230val_230 +478val_478 +178val_178 +468val_468 +310val_310 +317val_317 +333val_333 +493val_493 +460val_460 +207val_207 +249val_249 +265val_265 +480val_480 +83val_83 +136val_136 +353val_353 +172val_172 +214val_214 +462val_462 +233val_233 +406val_406 +133val_133 +175val_175 +189val_189 +454val_454 +375val_375 +401val_401 +421val_421 +407val_407 +384val_384 +256val_256 +26val_26 +134val_134 +67val_67 +384val_384 +379val_379 +18val_18 +462val_462 +492val_492 +100val_100 +298val_298 +9val_9 +341val_341 +498val_498 +146val_146 +458val_458 +362val_362 +186val_186 +285val_285 +348val_348 +167val_167 +18val_18 +273val_273 +183val_183 +281val_281 +344val_344 +97val_97 +469val_469 +315val_315 +84val_84 +28val_28 +37val_37 +448val_448 +152val_152 +348val_348 +307val_307 +194val_194 +414val_414 +477val_477 +222val_222 +126val_126 +90val_90 +169val_169 +403val_403 +400val_400 +200val_200 +97val_97 diff --git a/sql/hive/src/test/resources/data/files/kv1.val.sorted.txt b/sql/hive/src/test/resources/data/files/kv1.val.sorted.txt new file mode 100644 index 0000000000000..916a0f13c70f6 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv1.val.sorted.txt @@ -0,0 +1,500 @@ +val_0 +val_0 +val_0 +val_10 +val_100 +val_100 +val_103 +val_103 +val_104 +val_104 +val_105 +val_11 +val_111 +val_113 +val_113 +val_114 +val_116 +val_118 +val_118 +val_119 +val_119 +val_119 +val_12 +val_12 +val_120 +val_120 +val_125 +val_125 +val_126 +val_128 +val_128 +val_128 +val_129 +val_129 +val_131 +val_133 +val_134 +val_134 +val_136 +val_137 +val_137 +val_138 +val_138 +val_138 +val_138 +val_143 +val_145 +val_146 +val_146 +val_149 +val_149 +val_15 +val_15 +val_150 +val_152 +val_152 +val_153 +val_155 +val_156 +val_157 +val_158 +val_160 +val_162 +val_163 +val_164 +val_164 +val_165 +val_165 +val_166 +val_167 +val_167 +val_167 +val_168 +val_169 +val_169 +val_169 +val_169 +val_17 +val_170 +val_172 +val_172 +val_174 +val_174 +val_175 +val_175 +val_176 +val_176 +val_177 +val_178 +val_179 +val_179 +val_18 +val_18 +val_180 +val_181 +val_183 +val_186 +val_187 +val_187 +val_187 +val_189 +val_19 +val_190 +val_191 +val_191 +val_192 +val_193 +val_193 +val_193 +val_194 +val_195 +val_195 +val_196 +val_197 +val_197 +val_199 +val_199 +val_199 +val_2 +val_20 +val_200 +val_200 +val_201 +val_202 +val_203 +val_203 +val_205 +val_205 +val_207 +val_207 +val_208 +val_208 +val_208 +val_209 +val_209 +val_213 +val_213 +val_214 +val_216 +val_216 +val_217 +val_217 +val_218 +val_219 +val_219 +val_221 +val_221 +val_222 +val_223 +val_223 +val_224 +val_224 +val_226 +val_228 +val_229 +val_229 +val_230 +val_230 +val_230 +val_230 +val_230 +val_233 +val_233 +val_235 +val_237 +val_237 +val_238 +val_238 +val_239 +val_239 +val_24 +val_24 +val_241 +val_242 +val_242 +val_244 +val_247 +val_248 +val_249 +val_252 +val_255 +val_255 +val_256 +val_256 +val_257 +val_258 +val_26 +val_26 +val_260 +val_262 +val_263 +val_265 +val_265 +val_266 +val_27 +val_272 +val_272 +val_273 +val_273 +val_273 +val_274 +val_275 +val_277 +val_277 +val_277 +val_277 +val_278 +val_278 +val_28 +val_280 +val_280 +val_281 +val_281 +val_282 +val_282 +val_283 +val_284 +val_285 +val_286 +val_287 +val_288 +val_288 +val_289 +val_291 +val_292 +val_296 +val_298 +val_298 +val_298 +val_30 +val_302 +val_305 +val_306 +val_307 +val_307 +val_308 +val_309 +val_309 +val_310 +val_311 +val_311 +val_311 +val_315 +val_316 +val_316 +val_316 +val_317 +val_317 +val_318 +val_318 +val_318 +val_321 +val_321 +val_322 +val_322 +val_323 +val_325 +val_325 +val_327 +val_327 +val_327 +val_33 +val_331 +val_331 +val_332 +val_333 +val_333 +val_335 +val_336 +val_338 +val_339 +val_34 +val_341 +val_342 +val_342 +val_344 +val_344 +val_345 +val_348 +val_348 +val_348 +val_348 +val_348 +val_35 +val_35 +val_35 +val_351 +val_353 +val_353 +val_356 +val_360 +val_362 +val_364 +val_365 +val_366 +val_367 +val_367 +val_368 +val_369 +val_369 +val_369 +val_37 +val_37 +val_373 +val_374 +val_375 +val_377 +val_378 +val_379 +val_382 +val_382 +val_384 +val_384 +val_384 +val_386 +val_389 +val_392 +val_393 +val_394 +val_395 +val_395 +val_396 +val_396 +val_396 +val_397 +val_397 +val_399 +val_399 +val_4 +val_400 +val_401 +val_401 +val_401 +val_401 +val_401 +val_402 +val_403 +val_403 +val_403 +val_404 +val_404 +val_406 +val_406 +val_406 +val_406 +val_407 +val_409 +val_409 +val_409 +val_41 +val_411 +val_413 +val_413 +val_414 +val_414 +val_417 +val_417 +val_417 +val_418 +val_419 +val_42 +val_42 +val_421 +val_424 +val_424 +val_427 +val_429 +val_429 +val_43 +val_430 +val_430 +val_430 +val_431 +val_431 +val_431 +val_432 +val_435 +val_436 +val_437 +val_438 +val_438 +val_438 +val_439 +val_439 +val_44 +val_443 +val_444 +val_446 +val_448 +val_449 +val_452 +val_453 +val_454 +val_454 +val_454 +val_455 +val_457 +val_458 +val_458 +val_459 +val_459 +val_460 +val_462 +val_462 +val_463 +val_463 +val_466 +val_466 +val_466 +val_467 +val_468 +val_468 +val_468 +val_468 +val_469 +val_469 +val_469 +val_469 +val_469 +val_47 +val_470 +val_472 +val_475 +val_477 +val_478 +val_478 +val_479 +val_480 +val_480 +val_480 +val_481 +val_482 +val_483 +val_484 +val_485 +val_487 +val_489 +val_489 +val_489 +val_489 +val_490 +val_491 +val_492 +val_492 +val_493 +val_494 +val_495 +val_496 +val_497 +val_498 +val_498 +val_498 +val_5 +val_5 +val_5 +val_51 +val_51 +val_53 +val_54 +val_57 +val_58 +val_58 +val_64 +val_65 +val_66 +val_67 +val_67 +val_69 +val_70 +val_70 +val_70 +val_72 +val_72 +val_74 +val_76 +val_76 +val_77 +val_78 +val_8 +val_80 +val_82 +val_83 +val_83 +val_84 +val_84 +val_85 +val_86 +val_87 +val_9 +val_90 +val_90 +val_90 +val_92 +val_95 +val_95 +val_96 +val_97 +val_97 +val_98 +val_98 diff --git a/sql/hive/src/test/resources/data/files/kv1_broken.seq b/sql/hive/src/test/resources/data/files/kv1_broken.seq new file mode 100644 index 0000000000000..49bddeb805061 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/kv1_broken.seq differ diff --git a/sql/hive/src/test/resources/data/files/kv1_cb.txt b/sql/hive/src/test/resources/data/files/kv1_cb.txt new file mode 100644 index 0000000000000..12b51587c92eb --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv1_cb.txt @@ -0,0 +1,500 @@ +238val_238 +86val_86 +311val_311 +27val_27 +165val_165 +409val_409 +255val_255 +278val_278 +98val_98 +484val_484 +265val_265 +193val_193 +401val_401 +150val_150 +273val_273 +224val_224 +369val_369 +66val_66 +128val_128 +213val_213 +146val_146 +406val_406 +429val_429 +374val_374 +152val_152 +469val_469 +145val_145 +495val_495 +37val_37 +327val_327 +281val_281 +277val_277 +209val_209 +15val_15 +82val_82 +403val_403 +166val_166 +417val_417 +430val_430 +252val_252 +292val_292 +219val_219 +287val_287 +153val_153 +193val_193 +338val_338 +446val_446 +459val_459 +394val_394 +237val_237 +482val_482 +174val_174 +413val_413 +494val_494 +207val_207 +199val_199 +466val_466 +208val_208 +174val_174 +399val_399 +396val_396 +247val_247 +417val_417 +489val_489 +162val_162 +377val_377 +397val_397 +309val_309 +365val_365 +266val_266 +439val_439 +342val_342 +367val_367 +325val_325 +167val_167 +195val_195 +475val_475 +17val_17 +113val_113 +155val_155 +203val_203 +339val_339 +0val_0 +455val_455 +128val_128 +311val_311 +316val_316 +57val_57 +302val_302 +205val_205 +149val_149 +438val_438 +345val_345 +129val_129 +170val_170 +20val_20 +489val_489 +157val_157 +378val_378 +221val_221 +92val_92 +111val_111 +47val_47 +72val_72 +4val_4 +280val_280 +35val_35 +427val_427 +277val_277 +208val_208 +356val_356 +399val_399 +169val_169 +382val_382 +498val_498 +125val_125 +386val_386 +437val_437 +469val_469 +192val_192 +286val_286 +187val_187 +176val_176 +54val_54 +459val_459 +51val_51 +138val_138 +103val_103 +239val_239 +213val_213 +216val_216 +430val_430 +278val_278 +176val_176 +289val_289 +221val_221 +65val_65 +318val_318 +332val_332 +311val_311 +275val_275 +137val_137 +241val_241 +83val_83 +333val_333 +180val_180 +284val_284 +12val_12 +230val_230 +181val_181 +67val_67 +260val_260 +404val_404 +384val_384 +489val_489 +353val_353 +373val_373 +272val_272 +138val_138 +217val_217 +84val_84 +348val_348 +466val_466 +58val_58 +8val_8 +411val_411 +230val_230 +208val_208 +348val_348 +24val_24 +463val_463 +431val_431 +179val_179 +172val_172 +42val_42 +129val_129 +158val_158 +119val_119 +496val_496 +0val_0 +322val_322 +197val_197 +468val_468 +393val_393 +454val_454 +100val_100 +298val_298 +199val_199 +191val_191 +418val_418 +96val_96 +26val_26 +165val_165 +327val_327 +230val_230 +205val_205 +120val_120 +131val_131 +51val_51 +404val_404 +43val_43 +436val_436 +156val_156 +469val_469 +468val_468 +308val_308 +95val_95 +196val_196 +288val_288 +481val_481 +457val_457 +98val_98 +282val_282 +197val_197 +187val_187 +318val_318 +318val_318 +409val_409 +470val_470 +137val_137 +369val_369 +316val_316 +169val_169 +413val_413 +85val_85 +77val_77 +0val_0 +490val_490 +87val_87 +364val_364 +179val_179 +118val_118 +134val_134 +395val_395 +282val_282 +138val_138 +238val_238 +419val_419 +15val_15 +118val_118 +72val_72 +90val_90 +307val_307 +19val_19 +435val_435 +10val_10 +277val_277 +273val_273 +306val_306 +224val_224 +309val_309 +389val_389 +327val_327 +242val_242 +369val_369 +392val_392 +272val_272 +331val_331 +401val_401 +242val_242 +452val_452 +177val_177 +226val_226 +5val_5 +497val_497 +402val_402 +396val_396 +317val_317 +395val_395 +58val_58 +35val_35 +336val_336 +95val_95 +11val_11 +168val_168 +34val_34 +229val_229 +233val_233 +143val_143 +472val_472 +322val_322 +498val_498 +160val_160 +195val_195 +42val_42 +321val_321 +430val_430 +119val_119 +489val_489 +458val_458 +78val_78 +76val_76 +41val_41 +223val_223 +492val_492 +149val_149 +449val_449 +218val_218 +228val_228 +138val_138 +453val_453 +30val_30 +209val_209 +64val_64 +468val_468 +76val_76 +74val_74 +342val_342 +69val_69 +230val_230 +33val_33 +368val_368 +103val_103 +296val_296 +113val_113 +216val_216 +367val_367 +344val_344 +167val_167 +274val_274 +219val_219 +239val_239 +485val_485 +116val_116 +223val_223 +256val_256 +263val_263 +70val_70 +487val_487 +480val_480 +401val_401 +288val_288 +191val_191 +5val_5 +244val_244 +438val_438 +128val_128 +467val_467 +432val_432 +202val_202 +316val_316 +229val_229 +469val_469 +463val_463 +280val_280 +2val_2 +35val_35 +283val_283 +331val_331 +235val_235 +80val_80 +44val_44 +193val_193 +321val_321 +335val_335 +104val_104 +466val_466 +366val_366 +175val_175 +403val_403 +483val_483 +53val_53 +105val_105 +257val_257 +406val_406 +409val_409 +190val_190 +406val_406 +401val_401 +114val_114 +258val_258 +90val_90 +203val_203 +262val_262 +348val_348 +424val_424 +12val_12 +396val_396 +201val_201 +217val_217 +164val_164 +431val_431 +454val_454 +478val_478 +298val_298 +125val_125 +431val_431 +164val_164 +424val_424 +187val_187 +382val_382 +5val_5 +70val_70 +397val_397 +480val_480 +291val_291 +24val_24 +351val_351 +255val_255 +104val_104 +70val_70 +163val_163 +438val_438 +119val_119 +414val_414 +200val_200 +491val_491 +237val_237 +439val_439 +360val_360 +248val_248 +479val_479 +305val_305 +417val_417 +199val_199 +444val_444 +120val_120 +429val_429 +169val_169 +443val_443 +323val_323 +325val_325 +277val_277 +230val_230 +478val_478 +178val_178 +468val_468 +310val_310 +317val_317 +333val_333 +493val_493 +460val_460 +207val_207 +249val_249 +265val_265 +480val_480 +83val_83 +136val_136 +353val_353 +172val_172 +214val_214 +462val_462 +233val_233 +406val_406 +133val_133 +175val_175 +189val_189 +454val_454 +375val_375 +401val_401 +421val_421 +407val_407 +384val_384 +256val_256 +26val_26 +134val_134 +67val_67 +384val_384 +379val_379 +18val_18 +462val_462 +492val_492 +100val_100 +298val_298 +9val_9 +341val_341 +498val_498 +146val_146 +458val_458 +362val_362 +186val_186 +285val_285 +348val_348 +167val_167 +18val_18 +273val_273 +183val_183 +281val_281 +344val_344 +97val_97 +469val_469 +315val_315 +84val_84 +28val_28 +37val_37 +448val_448 +152val_152 +348val_348 +307val_307 +194val_194 +414val_414 +477val_477 +222val_222 +126val_126 +90val_90 +169val_169 +403val_403 +400val_400 +200val_200 +97val_97 diff --git a/sql/hive/src/test/resources/data/files/kv1_cc.txt b/sql/hive/src/test/resources/data/files/kv1_cc.txt new file mode 100644 index 0000000000000..f300770523eab --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv1_cc.txt @@ -0,0 +1,500 @@ +238val_238 +86val_86 +311val_311 +27val_27 +165val_165 +409val_409 +255val_255 +278val_278 +98val_98 +484val_484 +265val_265 +193val_193 +401val_401 +150val_150 +273val_273 +224val_224 +369val_369 +66val_66 +128val_128 +213val_213 +146val_146 +406val_406 +429val_429 +374val_374 +152val_152 +469val_469 +145val_145 +495val_495 +37val_37 +327val_327 +281val_281 +277val_277 +209val_209 +15val_15 +82val_82 +403val_403 +166val_166 +417val_417 +430val_430 +252val_252 +292val_292 +219val_219 +287val_287 +153val_153 +193val_193 +338val_338 +446val_446 +459val_459 +394val_394 +237val_237 +482val_482 +174val_174 +413val_413 +494val_494 +207val_207 +199val_199 +466val_466 +208val_208 +174val_174 +399val_399 +396val_396 +247val_247 +417val_417 +489val_489 +162val_162 +377val_377 +397val_397 +309val_309 +365val_365 +266val_266 +439val_439 +342val_342 +367val_367 +325val_325 +167val_167 +195val_195 +475val_475 +17val_17 +113val_113 +155val_155 +203val_203 +339val_339 +0val_0 +455val_455 +128val_128 +311val_311 +316val_316 +57val_57 +302val_302 +205val_205 +149val_149 +438val_438 +345val_345 +129val_129 +170val_170 +20val_20 +489val_489 +157val_157 +378val_378 +221val_221 +92val_92 +111val_111 +47val_47 +72val_72 +4val_4 +280val_280 +35val_35 +427val_427 +277val_277 +208val_208 +356val_356 +399val_399 +169val_169 +382val_382 +498val_498 +125val_125 +386val_386 +437val_437 +469val_469 +192val_192 +286val_286 +187val_187 +176val_176 +54val_54 +459val_459 +51val_51 +138val_138 +103val_103 +239val_239 +213val_213 +216val_216 +430val_430 +278val_278 +176val_176 +289val_289 +221val_221 +65val_65 +318val_318 +332val_332 +311val_311 +275val_275 +137val_137 +241val_241 +83val_83 +333val_333 +180val_180 +284val_284 +12val_12 +230val_230 +181val_181 +67val_67 +260val_260 +404val_404 +384val_384 +489val_489 +353val_353 +373val_373 +272val_272 +138val_138 +217val_217 +84val_84 +348val_348 +466val_466 +58val_58 +8val_8 +411val_411 +230val_230 +208val_208 +348val_348 +24val_24 +463val_463 +431val_431 +179val_179 +172val_172 +42val_42 +129val_129 +158val_158 +119val_119 +496val_496 +0val_0 +322val_322 +197val_197 +468val_468 +393val_393 +454val_454 +100val_100 +298val_298 +199val_199 +191val_191 +418val_418 +96val_96 +26val_26 +165val_165 +327val_327 +230val_230 +205val_205 +120val_120 +131val_131 +51val_51 +404val_404 +43val_43 +436val_436 +156val_156 +469val_469 +468val_468 +308val_308 +95val_95 +196val_196 +288val_288 +481val_481 +457val_457 +98val_98 +282val_282 +197val_197 +187val_187 +318val_318 +318val_318 +409val_409 +470val_470 +137val_137 +369val_369 +316val_316 +169val_169 +413val_413 +85val_85 +77val_77 +0val_0 +490val_490 +87val_87 +364val_364 +179val_179 +118val_118 +134val_134 +395val_395 +282val_282 +138val_138 +238val_238 +419val_419 +15val_15 +118val_118 +72val_72 +90val_90 +307val_307 +19val_19 +435val_435 +10val_10 +277val_277 +273val_273 +306val_306 +224val_224 +309val_309 +389val_389 +327val_327 +242val_242 +369val_369 +392val_392 +272val_272 +331val_331 +401val_401 +242val_242 +452val_452 +177val_177 +226val_226 +5val_5 +497val_497 +402val_402 +396val_396 +317val_317 +395val_395 +58val_58 +35val_35 +336val_336 +95val_95 +11val_11 +168val_168 +34val_34 +229val_229 +233val_233 +143val_143 +472val_472 +322val_322 +498val_498 +160val_160 +195val_195 +42val_42 +321val_321 +430val_430 +119val_119 +489val_489 +458val_458 +78val_78 +76val_76 +41val_41 +223val_223 +492val_492 +149val_149 +449val_449 +218val_218 +228val_228 +138val_138 +453val_453 +30val_30 +209val_209 +64val_64 +468val_468 +76val_76 +74val_74 +342val_342 +69val_69 +230val_230 +33val_33 +368val_368 +103val_103 +296val_296 +113val_113 +216val_216 +367val_367 +344val_344 +167val_167 +274val_274 +219val_219 +239val_239 +485val_485 +116val_116 +223val_223 +256val_256 +263val_263 +70val_70 +487val_487 +480val_480 +401val_401 +288val_288 +191val_191 +5val_5 +244val_244 +438val_438 +128val_128 +467val_467 +432val_432 +202val_202 +316val_316 +229val_229 +469val_469 +463val_463 +280val_280 +2val_2 +35val_35 +283val_283 +331val_331 +235val_235 +80val_80 +44val_44 +193val_193 +321val_321 +335val_335 +104val_104 +466val_466 +366val_366 +175val_175 +403val_403 +483val_483 +53val_53 +105val_105 +257val_257 +406val_406 +409val_409 +190val_190 +406val_406 +401val_401 +114val_114 +258val_258 +90val_90 +203val_203 +262val_262 +348val_348 +424val_424 +12val_12 +396val_396 +201val_201 +217val_217 +164val_164 +431val_431 +454val_454 +478val_478 +298val_298 +125val_125 +431val_431 +164val_164 +424val_424 +187val_187 +382val_382 +5val_5 +70val_70 +397val_397 +480val_480 +291val_291 +24val_24 +351val_351 +255val_255 +104val_104 +70val_70 +163val_163 +438val_438 +119val_119 +414val_414 +200val_200 +491val_491 +237val_237 +439val_439 +360val_360 +248val_248 +479val_479 +305val_305 +417val_417 +199val_199 +444val_444 +120val_120 +429val_429 +169val_169 +443val_443 +323val_323 +325val_325 +277val_277 +230val_230 +478val_478 +178val_178 +468val_468 +310val_310 +317val_317 +333val_333 +493val_493 +460val_460 +207val_207 +249val_249 +265val_265 +480val_480 +83val_83 +136val_136 +353val_353 +172val_172 +214val_214 +462val_462 +233val_233 +406val_406 +133val_133 +175val_175 +189val_189 +454val_454 +375val_375 +401val_401 +421val_421 +407val_407 +384val_384 +256val_256 +26val_26 +134val_134 +67val_67 +384val_384 +379val_379 +18val_18 +462val_462 +492val_492 +100val_100 +298val_298 +9val_9 +341val_341 +498val_498 +146val_146 +458val_458 +362val_362 +186val_186 +285val_285 +348val_348 +167val_167 +18val_18 +273val_273 +183val_183 +281val_281 +344val_344 +97val_97 +469val_469 +315val_315 +84val_84 +28val_28 +37val_37 +448val_448 +152val_152 +348val_348 +307val_307 +194val_194 +414val_414 +477val_477 +222val_222 +126val_126 +90val_90 +169val_169 +403val_403 +400val_400 +200val_200 +97val_97 diff --git a/sql/hive/src/test/resources/data/files/kv1kv2.cogroup.txt b/sql/hive/src/test/resources/data/files/kv1kv2.cogroup.txt new file mode 100644 index 0000000000000..8a98be384998b --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv1kv2.cogroup.txt @@ -0,0 +1,1000 @@ +val_0 +val_0 +val_0 +0 +0 +1 +val_10 +10 +val_100 +val_100 +100 +100 +101 +102 +val_103 +val_103 +val_104 +val_104 +104 +104 +104 +val_105 +105 +105 +106 +val_11 +11 +11 +11 +110 +val_111 +val_113 +val_113 +val_114 +114 +114 +114 +val_116 +116 +117 +117 +val_118 +val_118 +118 +118 +118 +val_119 +val_119 +val_119 +119 +119 +119 +val_12 +val_12 +12 +val_120 +val_120 +120 +121 +121 +122 +122 +122 +123 +123 +val_125 +val_125 +125 +val_126 +126 +126 +val_128 +val_128 +val_128 +128 +128 +val_129 +val_129 +129 +129 +val_131 +132 +132 +val_133 +133 +val_134 +val_134 +134 +135 +135 +135 +val_136 +136 +val_137 +val_137 +137 +val_138 +val_138 +val_138 +val_138 +138 +138 +140 +val_143 +143 +144 +val_145 +val_146 +val_146 +147 +147 +val_149 +val_149 +149 +val_15 +val_15 +15 +15 +val_150 +151 +151 +val_152 +val_152 +152 +152 +152 +val_153 +153 +153 +val_155 +val_156 +156 +156 +val_157 +157 +157 +val_158 +16 +16 +val_160 +160 +161 +161 +161 +161 +val_162 +162 +val_163 +val_164 +val_164 +164 +164 +val_165 +val_165 +165 +val_166 +val_167 +val_167 +val_167 +167 +val_168 +168 +val_169 +val_169 +val_169 +val_169 +val_17 +val_170 +170 +val_172 +val_172 +172 +val_174 +val_174 +174 +174 +val_175 +val_175 +175 +175 +val_176 +val_176 +val_177 +177 +177 +val_178 +178 +178 +val_179 +val_179 +179 +val_18 +val_18 +val_180 +val_181 +182 +val_183 +183 +184 +185 +val_186 +val_187 +val_187 +val_187 +val_189 +189 +val_19 +19 +val_190 +val_191 +val_191 +191 +val_192 +192 +val_193 +val_193 +val_193 +val_194 +val_195 +val_195 +val_196 +196 +196 +196 +val_197 +val_197 +197 +val_199 +val_199 +val_199 +199 +val_2 +2 +val_20 +20 +20 +val_200 +val_200 +val_201 +val_202 +val_203 +val_203 +204 +val_205 +val_205 +205 +206 +206 +206 +val_207 +val_207 +val_208 +val_208 +val_208 +val_209 +val_209 +209 +209 +21 +21 +21 +21 +212 +val_213 +val_213 +213 +val_214 +215 +val_216 +val_216 +216 +val_217 +val_217 +217 +217 +val_218 +val_219 +val_219 +22 +val_221 +val_221 +val_222 +222 +val_223 +val_223 +val_224 +val_224 +224 +val_226 +226 +226 +226 +226 +227 +val_228 +228 +val_229 +val_229 +23 +val_230 +val_230 +val_230 +val_230 +val_230 +231 +val_233 +val_233 +val_235 +235 +val_237 +val_237 +val_238 +val_238 +238 +val_239 +val_239 +239 +239 +val_24 +val_24 +240 +val_241 +241 +241 +241 +241 +val_242 +val_242 +242 +243 +243 +val_244 +244 +244 +244 +245 +245 +246 +246 +val_247 +val_248 +248 +val_249 +249 +249 +val_252 +252 +254 +val_255 +val_255 +val_256 +val_256 +256 +val_257 +257 +257 +val_258 +258 +259 +259 +val_26 +val_26 +val_260 +260 +260 +261 +val_262 +262 +262 +val_263 +264 +264 +val_265 +val_265 +265 +val_266 +267 +268 +val_27 +271 +val_272 +val_272 +272 +val_273 +val_273 +val_273 +273 +val_274 +274 +val_275 +275 +275 +276 +val_277 +val_277 +val_277 +val_277 +277 +277 +val_278 +val_278 +278 +val_28 +val_280 +val_280 +val_281 +val_281 +281 +281 +281 +val_282 +val_282 +val_283 +val_284 +284 +284 +val_285 +285 +val_286 +286 +val_287 +287 +287 +val_288 +val_288 +val_289 +289 +29 +29 +val_291 +291 +291 +val_292 +292 +292 +293 +293 +295 +295 +val_296 +296 +val_298 +val_298 +val_298 +3 +val_30 +30 +300 +300 +val_302 +302 +303 +303 +304 +val_305 +305 +val_306 +306 +val_307 +val_307 +val_308 +308 +308 +val_309 +val_309 +309 +31 +val_310 +310 +310 +310 +val_311 +val_311 +val_311 +313 +314 +val_315 +val_316 +val_316 +val_316 +val_317 +val_317 +317 +val_318 +val_318 +val_318 +318 +32 +val_321 +val_321 +val_322 +val_322 +322 +val_323 +323 +324 +val_325 +val_325 +326 +val_327 +val_327 +val_327 +328 +328 +val_33 +33 +330 +val_331 +val_331 +331 +331 +val_332 +val_333 +val_333 +333 +334 +val_335 +335 +335 +val_336 +336 +337 +val_338 +338 +val_339 +val_34 +340 +val_341 +341 +341 +341 +val_342 +val_342 +342 +343 +val_344 +val_344 +344 +val_345 +347 +347 +val_348 +val_348 +val_348 +val_348 +val_348 +348 +349 +349 +349 +349 +val_35 +val_35 +val_35 +35 +35 +35 +val_351 +351 +351 +352 +352 +val_353 +val_353 +353 +355 +355 +val_356 +356 +356 +358 +val_360 +360 +val_362 +363 +363 +363 +val_364 +364 +val_365 +val_366 +val_367 +val_367 +367 +367 +val_368 +val_369 +val_369 +val_369 +369 +val_37 +val_37 +371 +371 +371 +371 +val_373 +373 +val_374 +374 +val_375 +375 +375 +375 +375 +375 +376 +val_377 +val_378 +378 +val_379 +379 +381 +val_382 +val_382 +382 +382 +val_384 +val_384 +val_384 +384 +384 +384 +385 +385 +val_386 +386 +386 +388 +val_389 +389 +389 +390 +390 +390 +391 +391 +val_392 +392 +392 +val_393 +393 +393 +val_394 +val_395 +val_395 +395 +395 +val_396 +val_396 +val_396 +val_397 +val_397 +398 +val_399 +val_399 +399 +399 +val_4 +4 +40 +40 +val_400 +val_401 +val_401 +val_401 +val_401 +val_401 +401 +val_402 +402 +402 +402 +val_403 +val_403 +val_403 +val_404 +val_404 +404 +404 +404 +405 +val_406 +val_406 +val_406 +val_406 +406 +val_407 +407 +407 +407 +408 +408 +val_409 +val_409 +val_409 +409 +409 +val_41 +410 +val_411 +411 +412 +412 +val_413 +val_413 +413 +val_414 +val_414 +414 +415 +416 +val_417 +val_417 +val_417 +val_418 +val_419 +val_42 +val_42 +42 +42 +42 +val_421 +421 +421 +423 +val_424 +val_424 +424 +425 +426 +val_427 +427 +427 +428 +val_429 +val_429 +429 +429 +val_43 +val_430 +val_430 +val_430 +430 +val_431 +val_431 +val_431 +431 +val_432 +432 +val_435 +435 +val_436 +436 +val_437 +437 +val_438 +val_438 +val_438 +438 +438 +val_439 +val_439 +439 +439 +val_44 +440 +440 +441 +442 +val_443 +443 +443 +443 +val_444 +val_446 +446 +446 +447 +val_448 +448 +val_449 +450 +450 +451 +val_452 +val_453 +453 +val_454 +val_454 +val_454 +454 +454 +val_455 +455 +455 +val_457 +457 +457 +val_458 +val_458 +val_459 +val_459 +459 +46 +val_460 +461 +val_462 +val_462 +462 +val_463 +val_463 +463 +val_466 +val_466 +val_466 +val_467 +467 +val_468 +val_468 +val_468 +val_468 +468 +468 +468 +val_469 +val_469 +val_469 +val_469 +val_469 +469 +val_47 +47 +val_470 +470 +val_472 +473 +474 +474 +val_475 +475 +476 +476 +val_477 +477 +val_478 +val_478 +478 +478 +val_479 +48 +48 +val_480 +val_480 +val_480 +480 +480 +val_481 +481 +val_482 +482 +val_483 +val_484 +484 +val_485 +485 +485 +486 +val_487 +487 +488 +val_489 +val_489 +val_489 +val_489 +489 +49 +49 +val_490 +490 +val_491 +491 +491 +val_492 +val_492 +492 +492 +val_493 +val_494 +494 +494 +val_495 +495 +val_496 +496 +val_497 +497 +497 +val_498 +val_498 +val_498 +val_5 +val_5 +val_5 +5 +50 +val_51 +val_51 +51 +52 +52 +52 +52 +val_53 +53 +val_54 +56 +val_57 +val_58 +val_58 +58 +58 +59 +6 +6 +60 +61 +62 +62 +63 +val_64 +val_65 +65 +65 +val_66 +val_67 +val_67 +68 +val_69 +69 +val_70 +val_70 +val_70 +70 +71 +val_72 +val_72 +val_74 +75 +val_76 +val_76 +76 +76 +76 +val_77 +77 +77 +val_78 +78 +val_8 +8 +val_80 +80 +val_82 +82 +82 +val_83 +val_83 +val_84 +val_84 +val_85 +85 +val_86 +86 +val_87 +87 +87 +89 +89 +89 +val_9 +val_90 +val_90 +val_90 +91 +val_92 +93 +93 +93 +94 +val_95 +val_95 +val_96 +val_97 +val_97 +97 +97 +val_98 +val_98 +99 diff --git a/sql/hive/src/test/resources/data/files/kv2.txt b/sql/hive/src/test/resources/data/files/kv2.txt new file mode 100644 index 0000000000000..e58f7e32ddeb4 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv2.txt @@ -0,0 +1,500 @@ +474val_475 +281val_282 +179val_180 +291val_292 +62val_63 +271val_272 +217val_218 +135val_136 +167val_168 +468val_469 +423val_424 +413val_414 +245val_246 +455val_456 +425val_426 +241val_242 +177val_178 +272val_273 +231val_232 +448val_449 +287val_288 +246val_247 +440val_441 +31val_32 +373val_374 +447val_448 +443val_444 +175val_176 +278val_279 +296val_297 +147val_148 +428val_429 +126val_127 +249val_250 +21val_22 +273val_274 +441val_442 +106val_107 +371val_372 +153val_154 +356val_357 +217val_218 +490val_491 +33val_34 +35val_36 +421val_422 +243val_244 +402val_403 +128val_129 +10val_11 +226val_227 +133val_134 +333val_334 +15val_16 +110val_111 +391val_392 +343val_344 +275val_276 +0val_1 +485val_486 +293val_294 +240val_241 +241val_242 +286val_287 +85val_86 +408val_409 +477val_478 +455val_456 +99val_100 +335val_336 +476val_477 +482val_483 +367val_368 +59val_60 +48val_49 +424val_425 +226val_227 +494val_495 +488val_489 +94val_95 +485val_486 +393val_394 +349val_350 +11val_12 +161val_162 +123val_124 +409val_410 +50val_51 +265val_266 +402val_403 +128val_129 +468val_469 +314val_315 +497val_498 +224val_225 +63val_64 +344val_345 +4val_5 +277val_278 +135val_136 +3val_4 +206val_207 +101val_102 +331val_332 +114val_115 +209val_210 +281val_282 +56val_57 +239val_240 +389val_390 +114val_115 +254val_255 +235val_236 +390val_391 +165val_166 +304val_305 +264val_265 +196val_197 +238val_239 +20val_21 +11val_12 +492val_493 +129val_130 +257val_258 +71val_72 +289val_290 +453val_454 +421val_422 +82val_83 +58val_59 +5val_6 +86val_87 +249val_250 +438val_439 +360val_361 +323val_324 +222val_223 +42val_43 +467val_468 +411val_412 +175val_176 +429val_430 +338val_339 +281val_282 +68val_69 +185val_186 +16val_17 +147val_148 +119val_120 +492val_493 +473val_474 +376val_377 +347val_348 +120val_121 +213val_214 +306val_307 +393val_394 +427val_428 +291val_292 +426val_427 +132val_133 +446val_447 +386val_387 +65val_66 +121val_122 +388val_389 +184val_185 +375val_376 +284val_285 +191val_192 +129val_130 +246val_247 +197val_198 +491val_492 +369val_370 +262val_263 +122val_123 +438val_439 +351val_352 +390val_391 +352val_353 +23val_24 +226val_227 +328val_329 +382val_383 +342val_343 +349val_350 +480val_481 +102val_103 +497val_498 +487val_488 +480val_481 +331val_332 +409val_410 +475val_476 +463val_464 +183val_184 +177val_178 +399val_400 +15val_16 +318val_319 +149val_150 +392val_393 +77val_78 +275val_276 +476val_477 +258val_259 +174val_175 +252val_253 +114val_115 +87val_88 +161val_162 +75val_76 +264val_265 +48val_49 +336val_337 +340val_341 +390val_391 +443val_444 +484val_485 +407val_408 +189val_190 +305val_306 +367val_368 +6val_7 +260val_261 +2val_3 +349val_350 +170val_171 +51val_52 +355val_356 +363val_364 +164val_165 +118val_119 +310val_311 +104val_105 +19val_20 +80val_81 +117val_118 +326val_327 +47val_48 +121val_122 +241val_242 +450val_451 +140val_141 +212val_213 +308val_309 +30val_31 +405val_406 +239val_240 +119val_120 +358val_359 +11val_12 +49val_50 +143val_144 +153val_154 +341val_342 +21val_22 +105val_106 +157val_158 +416val_417 +199val_200 +375val_376 +42val_43 +89val_90 +363val_364 +395val_396 +347val_348 +386val_387 +77val_78 +454val_455 +293val_294 +364val_365 +20val_21 +89val_90 +461val_462 +52val_53 +40val_41 +8val_9 +168val_169 +384val_385 +313val_314 +324val_325 +310val_311 +206val_207 +381val_382 +404val_405 +206val_207 +385val_386 +259val_260 +226val_227 +262val_263 +69val_70 +303val_304 +245val_246 +260val_261 +328val_329 +322val_323 +122val_123 +241val_242 +469val_470 +404val_405 +384val_385 +76val_77 +116val_117 +42val_43 +104val_105 +481val_482 +303val_304 +93val_94 +277val_278 +406val_407 +451val_452 +53val_54 +32val_33 +132val_133 +192val_193 +58val_59 +351val_352 +70val_71 +443val_444 +356val_357 +399val_400 +205val_206 +352val_353 +52val_53 +21val_22 +317val_318 +330val_331 +209val_210 +138val_139 +429val_430 +160val_161 +267val_268 +454val_455 +257val_258 +76val_77 +174val_175 +412val_413 +16val_17 +375val_376 +489val_490 +295val_296 +105val_106 +204val_205 +126val_127 +274val_275 +439val_440 +374val_375 +494val_495 +216val_217 +457val_458 +93val_94 +470val_471 +196val_197 +302val_303 +119val_120 +375val_376 +391val_392 +287val_288 +450val_451 +375val_376 +437val_438 +12val_13 +398val_399 +35val_36 +334val_335 +384val_385 +435val_436 +60val_61 +29val_30 +442val_443 +151val_152 +52val_53 +404val_405 +446val_447 +300val_301 +0val_1 +268val_269 +491val_492 +392val_393 +21val_22 +295val_296 +93val_94 +104val_105 +436val_437 +61val_62 +407val_408 +439val_440 +156val_157 +341val_342 +118val_119 +335val_336 +172val_173 +244val_245 +6val_7 +284val_285 +164val_165 +136val_137 +349val_350 +371val_372 +462val_463 +123val_124 +432val_433 +496val_497 +355val_356 +144val_145 +87val_88 +408val_409 +152val_153 +382val_383 +348val_349 +122val_123 +427val_428 +292val_293 +182val_183 +474val_475 +353val_354 +310val_311 +52val_53 +486val_487 +152val_153 +378val_379 +414val_415 +261val_262 +65val_66 +371val_372 +256val_257 +292val_293 +412val_413 +97val_98 +495val_496 +385val_386 +40val_41 +49val_50 +389val_390 +259val_260 +97val_98 +478val_479 +125val_126 +243val_244 +151val_152 +178val_179 +100val_101 +415val_416 +401val_402 +156val_157 +228val_229 +363val_364 +117val_118 +22val_23 +248val_249 +459val_460 +402val_403 +62val_63 +137val_138 +162val_163 +244val_245 +276val_277 +46val_47 +341val_342 +78val_79 +379val_380 +215val_216 +134val_135 +196val_197 +410val_411 +157val_158 +431val_432 +82val_83 +440val_441 +100val_101 +407val_408 +371val_372 +308val_309 +430val_431 +309val_310 +135val_136 +161val_162 +468val_469 +152val_153 +138val_139 +76val_77 +161val_162 +300val_301 +337val_338 +91val_92 +478val_479 +118val_119 +1val_2 +89val_90 +178val_179 +457val_458 +29val_30 +242val_243 +285val_286 +35val_36 +227val_228 +395val_396 +244val_245 diff --git a/sql/hive/src/test/resources/data/files/kv3.txt b/sql/hive/src/test/resources/data/files/kv3.txt new file mode 100644 index 0000000000000..ca4804703c97d --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv3.txt @@ -0,0 +1,25 @@ +238val_238 + +311val_311 +val_27 +val_165 +val_409 +255val_255 +278val_278 +98val_98 +val_484 +val_265 +val_193 +401val_401 +150val_150 +273val_273 +224 +369 +66val_66 +128 +213val_213 +146val_146 +406val_406 + + + diff --git a/sql/hive/src/test/resources/data/files/kv4.txt b/sql/hive/src/test/resources/data/files/kv4.txt new file mode 100644 index 0000000000000..f969221c1460c --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv4.txt @@ -0,0 +1 @@ +邵铮 \ No newline at end of file diff --git a/sql/hive/src/test/resources/data/files/kv5.txt b/sql/hive/src/test/resources/data/files/kv5.txt new file mode 100644 index 0000000000000..a6d2b79fa35dd --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv5.txt @@ -0,0 +1,24 @@ +238val_238 +238val_239 +86val_86 +238val_240 +311val_311 +27val_27 +165val_165 +213val_213 +409val_409 +255val_255 +278val_278 +98val_98 +484val_484 +265val_265 +213val_214 +193val_193 +401val_401 +150val_150 +273val_273 +224val_224 +369val_369 +66val_66 +128val_128 +213val_213 diff --git a/sql/hive/src/test/resources/data/files/kv6.txt b/sql/hive/src/test/resources/data/files/kv6.txt new file mode 100644 index 0000000000000..63de5c5057ed6 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv6.txt @@ -0,0 +1,100 @@ +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +010 +011 +012 +013 +014 +015 +016 +017 +018 +019 +020 +021 +022 +023 +024 +025 +026 +027 +028 +029 +030 +031 +032 +033 +034 +035 +036 +037 +038 +039 +040 +041 +042 +043 +044 +045 +046 +047 +048 +049 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 diff --git a/sql/hive/src/test/resources/data/files/kv7.txt b/sql/hive/src/test/resources/data/files/kv7.txt new file mode 100644 index 0000000000000..b83c46099bbd7 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv7.txt @@ -0,0 +1,38 @@ +-4400 4400 +1E+99 0 +1E-99 0 +0 0 +100 100 +10 10 +1 1 +0.1 0 +0.01 0 +200 200 +20 20 +2 2 +0 0 +0.2 0 +0.02 0 +0.3 0 +0.33 0 +0.333 0 +-0.3 0 +-0.33 0 +-0.333 0 +1.0 1 +2 2 +3.14 3 +-1.12 -1 +-1.12 -1 +-1.122 -11 +1.12 1 +1.122 1 +124.00 124 +125.2 125 +-1255.49 -1255 +3.14 3 +3.14 3 +3.140 4 +0.9999999999999999999999999 1 +-1234567890.1234567890 -1234567890 +1234567890.1234567800 1234567890 diff --git a/sql/hive/src/test/resources/data/files/kv8.txt b/sql/hive/src/test/resources/data/files/kv8.txt new file mode 100644 index 0000000000000..29a28ac302e90 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/kv8.txt @@ -0,0 +1,75 @@ +123456789012345678901234567890123456789 +1.23456789012345678901234567890123456789 +12.3456789012345678901234567890123456789 +123.456789012345678901234567890123456789 +1234.56789012345678901234567890123456789 +12345678901234567890123456789012345678 +0.1234567890123456789012345678901234578 +1.2345678901234567890123456789012345678 +12.345678901234567890123456789012345678 +123.45678901234567890123456789012345678 +1234.5678901234567890123456789012345678 +12345.678901234567890123456789012345678 +123456.78901234567890123456789012345678 +1234567.8901234567890123456789012345678 +12345678.901234567890123456789012345678 +123456789.01234567890123456789012345678 +1234567890.1234567890123456789012345678 +12345678901.234567890123456789012345678 +123456789012.34567890123456789012345678 +1234567890123.4567890123456789012345678 +12345678901234.567890123456789012345678 +123456789012345.67890123456789012345678 +1234567890123456.7890123456789012345678 +12345678901234567.890123456789012345678 +123456789012345678.90123456789012345678 +1234567890123456789.0123456789012345678 +12345678901234567890.123456789012345678 +123456789012345678901.23456789012345678 +1234567890123456789012.3456789012345678 +12345678901234567890123.456789012345678 +123456789012345678901234.56789012345678 +1234567890123456789012345.6789012345678 +12345678901234567890123456.789012345678 +123456789012345678901234567.89012345678 +1234567890123456789012345678.9012345678 +12345678901234567890123456789.012345678 +123456789012345678901234567890.12345678 +1234567890123456789012345678901.2345678 +12345678901234567890123456789012.345678 +123456789012345678901234567890123.45678 +1234567890123456789012345678901234.5678 +12345678901234567890123456789012345.678 +123456789012345678901234567890123456.78 +12345678901234567890123456789012345.67.8 +12345678901234567890123456789012345678.0 +12345678901234567890123456789012345678.00 +12345678901234567890123456789012345678.000 +00012345678901234567890123456789012345678.000 +99999999999999999999999999999999999999 +999999999999999999999999999999999999 +99999999999999999999999999999999999 +-99999999999999999999999999999999999999 +-999999999999999999999999999999999999 +-99999999999999999999999999999999999 +000000000000000000000000000000000000000000000 +0.0000000000000000000000000000000000001 +-0.0000000000000000000000000000000000001 +0.00000000000000000000000000000000000001 +-0.00000000000000000000000000000000000001 +0.123456789012345 +1.234567890123456 +12.34567890123456 +123.4567890123456 +1234.567890123456 +12345.67890123456 +123456.7890123456 +1234567.890123456 +12345678.90123456 +123456789.0123456 +1234567890.123456 +12345678901.23456 +123456789012.3456 +1234567890123.456 +12345678901234.56 +123456789012345.6 diff --git a/sql/hive/src/test/resources/data/files/leftsemijoin_mr_t1.txt b/sql/hive/src/test/resources/data/files/leftsemijoin_mr_t1.txt new file mode 100644 index 0000000000000..6ed281c757a96 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/leftsemijoin_mr_t1.txt @@ -0,0 +1,2 @@ +1 +1 diff --git a/sql/hive/src/test/resources/data/files/leftsemijoin_mr_t2.txt b/sql/hive/src/test/resources/data/files/leftsemijoin_mr_t2.txt new file mode 100644 index 0000000000000..179ef0e0209e9 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/leftsemijoin_mr_t2.txt @@ -0,0 +1,20 @@ +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/sql/hive/src/test/resources/data/files/lineitem.txt b/sql/hive/src/test/resources/data/files/lineitem.txt new file mode 100644 index 0000000000000..1e11d95f5e882 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/lineitem.txt @@ -0,0 +1,100 @@ +1|155190|7706|1|17|21168.23|0.04|0.02|N|O|1996-03-13|1996-02-12|1996-03-22|DELIVER IN PERSON|TRUCK|egular courts above the| +1|67310|7311|2|36|45983.16|0.09|0.06|N|O|1996-04-12|1996-02-28|1996-04-20|TAKE BACK RETURN|MAIL|ly final dependencies: slyly bold | +1|63700|3701|3|8|13309.60|0.10|0.02|N|O|1996-01-29|1996-03-05|1996-01-31|TAKE BACK RETURN|REG AIR|riously. regular, express dep| +1|2132|4633|4|28|28955.64|0.09|0.06|N|O|1996-04-21|1996-03-30|1996-05-16|NONE|AIR|lites. fluffily even de| +1|24027|1534|5|24|22824.48|0.10|0.04|N|O|1996-03-30|1996-03-14|1996-04-01|NONE|FOB| pending foxes. slyly re| +1|15635|638|6|32|49620.16|0.07|0.02|N|O|1996-01-30|1996-02-07|1996-02-03|DELIVER IN PERSON|MAIL|arefully slyly ex| +2|106170|1191|1|38|44694.46|0.00|0.05|N|O|1997-01-28|1997-01-14|1997-02-02|TAKE BACK RETURN|RAIL|ven requests. deposits breach a| +3|4297|1798|1|45|54058.05|0.06|0.00|R|F|1994-02-02|1994-01-04|1994-02-23|NONE|AIR|ongside of the furiously brave acco| +3|19036|6540|2|49|46796.47|0.10|0.00|R|F|1993-11-09|1993-12-20|1993-11-24|TAKE BACK RETURN|RAIL| unusual accounts. eve| +3|128449|3474|3|27|39890.88|0.06|0.07|A|F|1994-01-16|1993-11-22|1994-01-23|DELIVER IN PERSON|SHIP|nal foxes wake. | +3|29380|1883|4|2|2618.76|0.01|0.06|A|F|1993-12-04|1994-01-07|1994-01-01|NONE|TRUCK|y. fluffily pending d| +3|183095|650|5|28|32986.52|0.04|0.00|R|F|1993-12-14|1994-01-10|1994-01-01|TAKE BACK RETURN|FOB|ages nag slyly pending| +3|62143|9662|6|26|28733.64|0.10|0.02|A|F|1993-10-29|1993-12-18|1993-11-04|TAKE BACK RETURN|RAIL|ges sleep after the caref| +4|88035|5560|1|30|30690.90|0.03|0.08|N|O|1996-01-10|1995-12-14|1996-01-18|DELIVER IN PERSON|REG AIR|- quickly regular packages sleep. idly| +5|108570|8571|1|15|23678.55|0.02|0.04|R|F|1994-10-31|1994-08-31|1994-11-20|NONE|AIR|ts wake furiously | +5|123927|3928|2|26|50723.92|0.07|0.08|R|F|1994-10-16|1994-09-25|1994-10-19|NONE|FOB|sts use slyly quickly special instruc| +5|37531|35|3|50|73426.50|0.08|0.03|A|F|1994-08-08|1994-10-13|1994-08-26|DELIVER IN PERSON|AIR|eodolites. fluffily unusual| +6|139636|2150|1|37|61998.31|0.08|0.03|A|F|1992-04-27|1992-05-15|1992-05-02|TAKE BACK RETURN|TRUCK|p furiously special foxes| +7|182052|9607|1|12|13608.60|0.07|0.03|N|O|1996-05-07|1996-03-13|1996-06-03|TAKE BACK RETURN|FOB|ss pinto beans wake against th| +7|145243|7758|2|9|11594.16|0.08|0.08|N|O|1996-02-01|1996-03-02|1996-02-19|TAKE BACK RETURN|SHIP|es. instructions| +7|94780|9799|3|46|81639.88|0.10|0.07|N|O|1996-01-15|1996-03-27|1996-02-03|COLLECT COD|MAIL| unusual reques| +7|163073|3074|4|28|31809.96|0.03|0.04|N|O|1996-03-21|1996-04-08|1996-04-20|NONE|FOB|. slyly special requests haggl| +7|151894|9440|5|38|73943.82|0.08|0.01|N|O|1996-02-11|1996-02-24|1996-02-18|DELIVER IN PERSON|TRUCK|ns haggle carefully ironic deposits. bl| +7|79251|1759|6|35|43058.75|0.06|0.03|N|O|1996-01-16|1996-02-23|1996-01-22|TAKE BACK RETURN|FOB|jole. excuses wake carefully alongside of | +7|157238|2269|7|5|6476.15|0.04|0.02|N|O|1996-02-10|1996-03-26|1996-02-13|NONE|FOB|ithely regula| +32|82704|7721|1|28|47227.60|0.05|0.08|N|O|1995-10-23|1995-08-27|1995-10-26|TAKE BACK RETURN|TRUCK|sleep quickly. req| +32|197921|441|2|32|64605.44|0.02|0.00|N|O|1995-08-14|1995-10-07|1995-08-27|COLLECT COD|AIR|lithely regular deposits. fluffily | +32|44161|6666|3|2|2210.32|0.09|0.02|N|O|1995-08-07|1995-10-07|1995-08-23|DELIVER IN PERSON|AIR| express accounts wake according to the| +32|2743|7744|4|4|6582.96|0.09|0.03|N|O|1995-08-04|1995-10-01|1995-09-03|NONE|REG AIR|e slyly final pac| +32|85811|8320|5|44|79059.64|0.05|0.06|N|O|1995-08-28|1995-08-20|1995-09-14|DELIVER IN PERSON|AIR|symptotes nag according to the ironic depo| +32|11615|4117|6|6|9159.66|0.04|0.03|N|O|1995-07-21|1995-09-23|1995-07-25|COLLECT COD|RAIL| gifts cajole carefully.| +33|61336|8855|1|31|40217.23|0.09|0.04|A|F|1993-10-29|1993-12-19|1993-11-08|COLLECT COD|TRUCK|ng to the furiously ironic package| +33|60519|5532|2|32|47344.32|0.02|0.05|A|F|1993-12-09|1994-01-04|1993-12-28|COLLECT COD|MAIL|gular theodolites| +33|137469|9983|3|5|7532.30|0.05|0.03|A|F|1993-12-09|1993-12-25|1993-12-23|TAKE BACK RETURN|AIR|. stealthily bold exc| +33|33918|3919|4|41|75928.31|0.09|0.00|R|F|1993-11-09|1994-01-24|1993-11-11|TAKE BACK RETURN|MAIL|unusual packages doubt caref| +34|88362|871|1|13|17554.68|0.00|0.07|N|O|1998-10-23|1998-09-14|1998-11-06|NONE|REG AIR|nic accounts. deposits are alon| +34|89414|1923|2|22|30875.02|0.08|0.06|N|O|1998-10-09|1998-10-16|1998-10-12|NONE|FOB|thely slyly p| +34|169544|4577|3|6|9681.24|0.02|0.06|N|O|1998-10-30|1998-09-20|1998-11-05|NONE|FOB|ar foxes sleep | +35|450|2951|1|24|32410.80|0.02|0.00|N|O|1996-02-21|1996-01-03|1996-03-18|TAKE BACK RETURN|FOB|, regular tithe| +35|161940|4457|2|34|68065.96|0.06|0.08|N|O|1996-01-22|1996-01-06|1996-01-27|DELIVER IN PERSON|RAIL|s are carefully against the f| +35|120896|8433|3|7|13418.23|0.06|0.04|N|O|1996-01-19|1995-12-22|1996-01-29|NONE|MAIL| the carefully regular | +35|85175|7684|4|25|29004.25|0.06|0.05|N|O|1995-11-26|1995-12-25|1995-12-21|DELIVER IN PERSON|SHIP| quickly unti| +35|119917|4940|5|34|65854.94|0.08|0.06|N|O|1995-11-08|1996-01-15|1995-11-26|COLLECT COD|MAIL|. silent, unusual deposits boost| +35|30762|3266|6|28|47397.28|0.03|0.02|N|O|1996-02-01|1995-12-24|1996-02-28|COLLECT COD|RAIL|ly alongside of | +36|119767|9768|1|42|75043.92|0.09|0.00|N|O|1996-02-03|1996-01-21|1996-02-23|COLLECT COD|SHIP| careful courts. special | +37|22630|5133|1|40|62105.20|0.09|0.03|A|F|1992-07-21|1992-08-01|1992-08-15|NONE|REG AIR|luffily regular requests. slyly final acco| +37|126782|1807|2|39|70542.42|0.05|0.02|A|F|1992-07-02|1992-08-18|1992-07-28|TAKE BACK RETURN|RAIL|the final requests. ca| +37|12903|5405|3|43|78083.70|0.05|0.08|A|F|1992-07-10|1992-07-06|1992-08-02|DELIVER IN PERSON|TRUCK|iously ste| +38|175839|874|1|44|84252.52|0.04|0.02|N|O|1996-09-29|1996-11-17|1996-09-30|COLLECT COD|MAIL|s. blithely unusual theodolites am| +39|2320|9821|1|44|53782.08|0.09|0.06|N|O|1996-11-14|1996-12-15|1996-12-12|COLLECT COD|RAIL|eodolites. careful| +39|186582|4137|2|26|43383.08|0.08|0.04|N|O|1996-11-04|1996-10-20|1996-11-20|NONE|FOB|ckages across the slyly silent| +39|67831|5350|3|46|82746.18|0.06|0.08|N|O|1996-09-26|1996-12-19|1996-10-26|DELIVER IN PERSON|AIR|he carefully e| +39|20590|3093|4|32|48338.88|0.07|0.05|N|O|1996-10-02|1996-12-19|1996-10-14|COLLECT COD|MAIL|heodolites sleep silently pending foxes. ac| +39|54519|9530|5|43|63360.93|0.01|0.01|N|O|1996-10-17|1996-11-14|1996-10-26|COLLECT COD|MAIL|yly regular i| +39|94368|6878|6|40|54494.40|0.06|0.05|N|O|1996-12-08|1996-10-22|1997-01-01|COLLECT COD|AIR|quickly ironic fox| +64|85951|5952|1|21|40675.95|0.05|0.02|R|F|1994-09-30|1994-09-18|1994-10-26|DELIVER IN PERSON|REG AIR|ch slyly final, thin platelets.| +65|59694|4705|1|26|42995.94|0.03|0.03|A|F|1995-04-20|1995-04-25|1995-05-13|NONE|TRUCK|pending deposits nag even packages. ca| +65|73815|8830|2|22|39353.82|0.00|0.05|N|O|1995-07-17|1995-06-04|1995-07-19|COLLECT COD|FOB| ideas. special, r| +65|1388|3889|3|21|27076.98|0.09|0.07|N|O|1995-07-06|1995-05-14|1995-07-31|DELIVER IN PERSON|RAIL|bove the even packages. accounts nag carefu| +66|115118|7630|1|31|35126.41|0.00|0.08|R|F|1994-02-19|1994-03-11|1994-02-20|TAKE BACK RETURN|RAIL|ut the unusual accounts sleep at the bo| +66|173489|3490|2|41|64061.68|0.04|0.07|A|F|1994-02-21|1994-03-01|1994-03-18|COLLECT COD|AIR| regular de| +67|21636|9143|1|4|6230.52|0.09|0.04|N|O|1997-04-17|1997-01-31|1997-04-20|NONE|SHIP| cajole thinly expres| +67|20193|5198|2|12|13358.28|0.09|0.05|N|O|1997-01-27|1997-02-21|1997-02-22|NONE|REG AIR| even packages cajole| +67|173600|6118|3|5|8368.00|0.03|0.07|N|O|1997-02-20|1997-02-12|1997-02-21|DELIVER IN PERSON|TRUCK|y unusual packages thrash pinto | +67|87514|7515|4|44|66066.44|0.08|0.06|N|O|1997-03-18|1997-01-29|1997-04-13|DELIVER IN PERSON|RAIL|se quickly above the even, express reques| +67|40613|8126|5|23|35733.03|0.05|0.07|N|O|1997-04-19|1997-02-14|1997-05-06|DELIVER IN PERSON|REG AIR|ly regular deposit| +67|178306|824|6|29|40144.70|0.02|0.05|N|O|1997-01-25|1997-01-27|1997-01-27|DELIVER IN PERSON|FOB|ultipliers | +68|7068|9569|1|3|2925.18|0.05|0.02|N|O|1998-07-04|1998-06-05|1998-07-21|NONE|RAIL|fully special instructions cajole. furious| +68|175180|2732|2|46|57738.28|0.02|0.05|N|O|1998-06-26|1998-06-07|1998-07-05|NONE|MAIL| requests are unusual, regular pinto | +68|34980|7484|3|46|88089.08|0.04|0.05|N|O|1998-08-13|1998-07-08|1998-08-29|NONE|RAIL|egular dependencies affix ironically along | +68|94728|2256|4|20|34454.40|0.07|0.01|N|O|1998-06-27|1998-05-23|1998-07-02|NONE|REG AIR| excuses integrate fluffily | +68|82758|5267|5|27|47000.25|0.03|0.06|N|O|1998-06-19|1998-06-25|1998-06-29|DELIVER IN PERSON|SHIP|ccounts. deposits use. furiously| +68|102561|5072|6|30|46906.80|0.05|0.06|N|O|1998-08-11|1998-07-11|1998-08-14|NONE|RAIL|oxes are slyly blithely fin| +68|139247|1761|7|41|52735.84|0.09|0.08|N|O|1998-06-24|1998-06-27|1998-07-06|NONE|SHIP|eposits nag special ideas. furiousl| +69|115209|7721|1|48|58761.60|0.01|0.07|A|F|1994-08-17|1994-08-11|1994-09-08|NONE|TRUCK|regular epitaphs. carefully even ideas hag| +69|104180|9201|2|32|37893.76|0.08|0.06|A|F|1994-08-24|1994-08-17|1994-08-31|NONE|REG AIR|s sleep carefully bold, | +69|137267|4807|3|17|22172.42|0.09|0.00|A|F|1994-07-02|1994-07-07|1994-07-03|TAKE BACK RETURN|AIR|final, pending instr| +69|37502|2509|4|3|4318.50|0.09|0.04|R|F|1994-06-06|1994-07-27|1994-06-15|NONE|MAIL| blithely final d| +69|92070|7089|5|42|44606.94|0.07|0.04|R|F|1994-07-31|1994-07-26|1994-08-28|DELIVER IN PERSON|REG AIR|tect regular, speci| +69|18504|1006|6|23|32717.50|0.05|0.00|A|F|1994-10-03|1994-08-06|1994-10-24|NONE|SHIP|nding accounts ca| +70|64128|9141|1|8|8736.96|0.03|0.08|R|F|1994-01-12|1994-02-27|1994-01-14|TAKE BACK RETURN|FOB|ggle. carefully pending dependenc| +70|196156|1195|2|13|16277.95|0.06|0.06|A|F|1994-03-03|1994-02-13|1994-03-26|COLLECT COD|AIR|lyly special packag| +70|179809|7361|3|1|1888.80|0.03|0.05|R|F|1994-01-26|1994-03-05|1994-01-28|TAKE BACK RETURN|RAIL|quickly. fluffily unusual theodolites c| +70|45734|743|4|11|18477.03|0.01|0.05|A|F|1994-03-17|1994-03-17|1994-03-27|NONE|MAIL|alongside of the deposits. fur| +70|37131|2138|5|37|39520.81|0.09|0.04|R|F|1994-02-13|1994-03-16|1994-02-21|COLLECT COD|MAIL|n accounts are. q| +70|55655|3171|6|19|30602.35|0.06|0.03|A|F|1994-01-26|1994-02-17|1994-02-06|TAKE BACK RETURN|SHIP| packages wake pending accounts.| +71|61931|1932|1|25|47323.25|0.09|0.07|N|O|1998-04-10|1998-04-22|1998-04-11|COLLECT COD|FOB|ckly. slyly| +71|65916|3435|2|3|5645.73|0.09|0.07|N|O|1998-05-23|1998-04-03|1998-06-02|COLLECT COD|SHIP|y. pinto beans haggle after the| +71|34432|1942|3|45|61489.35|0.00|0.07|N|O|1998-02-23|1998-03-20|1998-03-24|DELIVER IN PERSON|SHIP| ironic packages believe blithely a| +71|96645|9155|4|33|54174.12|0.00|0.01|N|O|1998-04-12|1998-03-20|1998-04-15|NONE|FOB| serve quickly fluffily bold deposi| +71|103255|5766|5|39|49071.75|0.08|0.06|N|O|1998-01-29|1998-04-07|1998-02-18|DELIVER IN PERSON|RAIL|l accounts sleep across the pack| +71|195635|674|6|34|58841.42|0.04|0.01|N|O|1998-03-05|1998-04-22|1998-03-30|DELIVER IN PERSON|TRUCK|s cajole. | +96|123076|613|1|23|25278.61|0.10|0.06|A|F|1994-07-19|1994-06-29|1994-07-25|DELIVER IN PERSON|TRUCK|ep-- carefully reg| +96|135390|5391|2|30|42761.70|0.01|0.06|R|F|1994-06-03|1994-05-29|1994-06-22|DELIVER IN PERSON|TRUCK|e quickly even ideas. furiou| +97|119477|1989|1|13|19454.11|0.00|0.02|R|F|1993-04-01|1993-04-04|1993-04-08|NONE|TRUCK|ayers cajole against the furiously| +97|49568|2073|2|37|56149.72|0.02|0.06|A|F|1993-04-13|1993-03-30|1993-04-14|DELIVER IN PERSON|SHIP|ic requests boost carefully quic| +97|77699|5221|3|19|31857.11|0.06|0.08|R|F|1993-05-14|1993-03-05|1993-05-25|TAKE BACK RETURN|RAIL|gifts. furiously ironic packages cajole. | +98|40216|217|1|28|32373.88|0.06|0.07|A|F|1994-12-24|1994-10-25|1995-01-16|COLLECT COD|REG AIR| pending, regular accounts s| +98|109743|7274|2|1|1752.74|0.00|0.00|A|F|1994-12-01|1994-12-12|1994-12-15|DELIVER IN PERSON|TRUCK|. unusual instructions against| +98|44706|4707|3|14|23109.80|0.05|0.02|A|F|1994-12-30|1994-11-22|1995-01-27|COLLECT COD|AIR| cajole furiously. blithely ironic ideas | diff --git a/sql/hive/src/test/resources/data/files/lt100.sorted.txt b/sql/hive/src/test/resources/data/files/lt100.sorted.txt new file mode 100644 index 0000000000000..0935135496a6d --- /dev/null +++ b/sql/hive/src/test/resources/data/files/lt100.sorted.txt @@ -0,0 +1,84 @@ +0val_0 +0val_0 +0val_0 +10val_10 +11val_11 +12val_12 +12val_12 +15val_15 +15val_15 +17val_17 +18val_18 +18val_18 +19val_19 +2val_2 +20val_20 +24val_24 +24val_24 +26val_26 +26val_26 +27val_27 +28val_28 +30val_30 +33val_33 +34val_34 +35val_35 +35val_35 +35val_35 +37val_37 +37val_37 +4val_4 +41val_41 +42val_42 +42val_42 +43val_43 +44val_44 +47val_47 +5val_5 +5val_5 +5val_5 +51val_51 +51val_51 +53val_53 +54val_54 +57val_57 +58val_58 +58val_58 +64val_64 +65val_65 +66val_66 +67val_67 +67val_67 +69val_69 +70val_70 +70val_70 +70val_70 +72val_72 +72val_72 +74val_74 +76val_76 +76val_76 +77val_77 +78val_78 +8val_8 +80val_80 +82val_82 +83val_83 +83val_83 +84val_84 +84val_84 +85val_85 +86val_86 +87val_87 +9val_9 +90val_90 +90val_90 +90val_90 +92val_92 +95val_95 +95val_95 +96val_96 +97val_97 +97val_97 +98val_98 +98val_98 diff --git a/sql/hive/src/test/resources/data/files/lt100.txt b/sql/hive/src/test/resources/data/files/lt100.txt new file mode 100644 index 0000000000000..3f36729612173 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/lt100.txt @@ -0,0 +1,84 @@ +86val_86 +27val_27 +98val_98 +66val_66 +37val_37 +15val_15 +82val_82 +17val_17 +0val_0 +57val_57 +20val_20 +92val_92 +47val_47 +72val_72 +4val_4 +35val_35 +54val_54 +51val_51 +65val_65 +83val_83 +12val_12 +67val_67 +84val_84 +58val_58 +8val_8 +24val_24 +42val_42 +0val_0 +96val_96 +26val_26 +51val_51 +43val_43 +95val_95 +98val_98 +85val_85 +77val_77 +0val_0 +87val_87 +15val_15 +72val_72 +90val_90 +19val_19 +10val_10 +5val_5 +58val_58 +35val_35 +95val_95 +11val_11 +34val_34 +42val_42 +78val_78 +76val_76 +41val_41 +30val_30 +64val_64 +76val_76 +74val_74 +69val_69 +33val_33 +70val_70 +5val_5 +2val_2 +35val_35 +80val_80 +44val_44 +53val_53 +90val_90 +12val_12 +5val_5 +70val_70 +24val_24 +70val_70 +83val_83 +26val_26 +67val_67 +18val_18 +9val_9 +18val_18 +97val_97 +84val_84 +28val_28 +37val_37 +90val_90 +97val_97 diff --git a/sql/hive/src/test/resources/data/files/lt100.txt.deflate b/sql/hive/src/test/resources/data/files/lt100.txt.deflate new file mode 100644 index 0000000000000..7ad780adf9c2c --- /dev/null +++ b/sql/hive/src/test/resources/data/files/lt100.txt.deflate @@ -0,0 +1,3 @@ +x�MR;nDASZ�f� ��D�S��=�.�!��*��~~�+��D��z�.�0f-!��d��\�0+�� ��N(!]hַ™�D˃���mlB۱�� ��3�8� �!�`�H�u�t� +ʜ:�L׏��>�`�qMw�tCSG�k[E�6�:r�QD���xo���4� !&g�9���J���/��B�W� ? β� 7��Kb����qfHrstr�^*�5��3���ö����^�}�6���\k~@�Y +��7ª�?E�պ�}� �?��� \ No newline at end of file diff --git a/sql/hive/src/test/resources/data/files/map_table.txt b/sql/hive/src/test/resources/data/files/map_table.txt new file mode 100644 index 0000000000000..f3a01d8f180be --- /dev/null +++ b/sql/hive/src/test/resources/data/files/map_table.txt @@ -0,0 +1,2 @@ +foo1 k1:v1,k2:v2,k3:v3 +foo2 k21:v21,k22:v22,k31:v31 diff --git a/sql/hive/src/test/resources/data/files/nested_complex.txt b/sql/hive/src/test/resources/data/files/nested_complex.txt new file mode 100644 index 0000000000000..fee462c44e349 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/nested_complex.txt @@ -0,0 +1,2 @@ +3012k1v1k2v2a102 +2032k1v1k3v3b102 diff --git a/sql/hive/src/test/resources/data/files/null.txt b/sql/hive/src/test/resources/data/files/null.txt new file mode 100644 index 0000000000000..7014a64126de4 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/null.txt @@ -0,0 +1,10 @@ +1.01same0 +1.01same1 +1.01same2 +1.01same3 +1.01same4 +\N1same5 +\N\Nsame6 +1.0\Nsame7 +1.01same8 +1.01same9 diff --git a/sql/hive/src/test/resources/data/files/nullfile.txt b/sql/hive/src/test/resources/data/files/nullfile.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/data/files/nulls.txt b/sql/hive/src/test/resources/data/files/nulls.txt new file mode 100644 index 0000000000000..21cb1b5627c62 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/nulls.txt @@ -0,0 +1,1002 @@ +1 +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N diff --git a/sql/hive/src/test/resources/data/files/orc_create.txt b/sql/hive/src/test/resources/data/files/orc_create.txt new file mode 100644 index 0000000000000..211e047346309 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/orc_create.txt @@ -0,0 +1,3 @@ +line1|key11:value11,key12:value12,key13:value13|a,b,c|one,two +line2|key21:value21,key22:value22,key23:value23|d,e,f|three,four +line3|key31:value31,key32:value32,key33:value33|g,h,i|five,six diff --git a/sql/hive/src/test/resources/data/files/orc_create_people.txt b/sql/hive/src/test/resources/data/files/orc_create_people.txt new file mode 100644 index 0000000000000..884598981a13c --- /dev/null +++ b/sql/hive/src/test/resources/data/files/orc_create_people.txt @@ -0,0 +1,100 @@ +1CelesteBrowning959-3763 Nec, Av.Ca +2RisaYangP.O. Box 292, 8229 Porttitor RoadOr +3VenusSuttonAp #962-8021 Egestas Rd.Ca +4GretchenHarrisonP.O. Box 636, 8734 Magna AvenueOr +5LaniIrwinAp #441-5911 Iaculis, AveCa +6VeraGeorge409-1555 Vel, AveOr +7JessicaMalone286-9779 Aliquam RoadCa +8AnnChapmanAp #504-3915 Placerat RoadOr +9NigelBartlettAp #185-385 Diam StreetCa +10AzaliaJennings5772 Diam St.Or +11PrestonCannonAp #527-8769 Nunc AvenueCa +12AllistairVasquez2562 Odio. St.Or +13ReedHayes5190 Elit StreetCa +14ElaineBarronP.O. Box 840, 8860 Sodales Av.Or +15LydiaHoodP.O. Box 698, 5666 Semper RoadCa +16VanceMaxwell298-3313 Malesuada RoadOr +17KeikoDeleonP.O. Box 732, 5921 Massa. Av.Ca +18DolanKaneAp #906-3606 Ut Rd.Or +19MerrittPerkinsP.O. Box 228, 7090 Egestas StreetCa +20CaseySalazar506-5065 Ut St.Or +21SamsonNoel1370 Ultrices, RoadCa +22ByronWalkerP.O. Box 386, 8324 Tellus AveOr +23PiperSingletonAp #500-3561 Primis St.Ca +24RiaMckinney3080 Dui Rd.Or +25RahimStanley559-9016 Nascetur StreetCa +26ChloeSteeleP.O. Box 766, 1628 Elit StreetOr +27PalomaWardAp #390-3042 Ipsum Rd.Ca +28RoaryShermanAp #409-6549 Metus St.Or +29CalvinBuckner6378 Diam AvenueCa +30CamilleGoodAp #113-8659 Suspendisse St.Or +31SteelAyala5518 Justo St.Ca +32JosiahGilbertAp #149-6651 At, Av.Or +33HamiltonCruz4620 Tellus. AveCa +34ScarletSantos586-1785 Velit. Av.Or +35LewisMcintyre629-6419 Ac Rd.Ca +36ArsenioMejiaP.O. Box 767, 8625 Justo Rd.Or +37VelmaHaley1377 At Rd.Ca +38TatumJennings829-7432 Posuere, RoadOr +39BritanniEaton8811 Morbi StreetCa +40AileenJacobsonP.O. Box 469, 2266 Dui, Rd.Or +41KareemAyala2706 Ridiculus StreetCa +42MaiteRush7592 Neque RoadOr +43SigneVelasquezAp #868-3039 Eget St.Ca +44ZoritaCamachoP.O. Box 651, 3340 Quis Av.Or +45GlennaCurtis953-7965 Enim AveCa +46QuinCortez4898 Ridiculus St.Or +47TalonDaltonP.O. Box 408, 7597 Integer Rd.Ca +48DarrylBlankenshipP.O. Box 771, 1471 Non Rd.Or +49VernonReyesP.O. Box 971, 7009 Vulputate StreetCa +50TallulahHeathP.O. Box 865, 3697 Dis AveOr +51CiaranOlson2721 Et St.Ca +52OrlandoWittP.O. Box 717, 1102 Nulla. Rd.Or +53QuinnRiceAp #647-6627 Tristique AvenueCa +54WyattPickettAp #128-3130 Vel, Rd.Or +55EmeraldCopeland857-5119 Turpis Rd.Ca +56JonasQuinnAp #441-7183 Ligula. StreetOr +57WillaBerg6672 Velit AveCa +58MalikLee998-9208 In StreetOr +59CallieMedina1620 Dui. Rd.Ca +60LukeMasonP.O. Box 143, 2070 Augue Rd.Or +61ShafiraEstrada8824 Ante StreetCa +62ElizabethRutledge315-6510 Sit St.Or +63PandoraLevine357-3596 Nibh. AveCa +64HilelPrince845-1229 Sociosqu Rd.Or +65RinahTorresAp #492-9328 At St.Ca +66YaelHobbsP.O. Box 477, 3896 In StreetOr +67NevadaNashP.O. Box 251, 1914 Tincidunt RoadCa +68MarnyHuffP.O. Box 818, 6086 Ultricies St.Or +69KimberleyMilesAp #893-3685 In RoadCa +70DuncanFullerAp #197-5216 Iaculis StreetOr +71YardleyLeblancP.O. Box 938, 1278 Sit AveCa +72HamishBrewerAp #854-781 Quisque St.Or +73PetraMoon453-6609 Curabitur StreetCa +74ReeseEstradaAp #382-3313 Malesuada St.Or +75GageHiggins7443 Eu StreetCa +76ZacheryCamachoAp #795-4143 Quam. St.Or +77KellyGarnerP.O. Box 895, 2843 Cras Rd.Ca +78HanaeCarr9440 Amet St.Or +79AnnAlston884-7948 Dictum RoadCa +80ChancellorCobbP.O. Box 889, 5978 Ac AvenueOr +81DorothyHarrell6974 Tristique AveCa +82VaughanLeon1610 Luctus Av.Or +83WynneJimenez321-9171 Felis. AvenueCa +84WillaMendoza489-182 Sed Av.Or +85CamdenGoodwin4579 Ante St.Ca +86IfeomaFrenchP.O. Box 160, 8769 Integer RoadOr +87RamonaStrong1666 Ridiculus AvenueCa +88BrettRamosAp #579-9879 Et, RoadOr +89UllaGray595-7066 Malesuada RoadCa +90KevynMccallP.O. Box 968, 1420 Aenean AvenueOr +91GenevieveWilkins908 Turpis. StreetCa +92ThaneOneil6766 Lectus St.Or +93MarikoClineP.O. Box 329, 5375 Ac St.Ca +94LaelMclean500-7010 Sit St.Or +95WinifredHopperAp #140-8982 Velit AvenueCa +96RafaelEnglandP.O. Box 405, 7857 Eget Av.Or +97DanaCarter814-601 Purus. Av.Ca +98JulietBattleAp #535-1965 Cursus St.Or +99WynterVincent626-8492 Mollis AvenueCa +100WangMitchell4023 Lacinia. AveOr diff --git a/sql/hive/src/test/resources/data/files/over10k b/sql/hive/src/test/resources/data/files/over10k new file mode 100644 index 0000000000000..adc75519ee3e4 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/over10k @@ -0,0 +1,9999 @@ +124|336|65664|4294967435|74.72|42.47|true|bob davidson|2013-03-01 09:11:58.703302|45.40|yard duty +19|442|65553|4294967380|26.43|37.77|true|alice zipper|2013-03-01 09:11:58.703217|29.62|history +35|387|65619|4294967459|96.91|18.86|false|katie davidson|2013-03-01 09:11:58.703079|27.32|history +111|372|65656|4294967312|13.01|34.95|false|xavier quirinius|2013-03-01 09:11:58.703310|23.91|topology +54|317|65547|4294967409|60.71|2.09|false|nick robinson|2013-03-01 09:11:58.703103|90.21|geology +-3|467|65575|4294967437|81.64|23.53|true|tom hernandez|2013-03-01 09:11:58.703188|32.85|study skills +53|317|65702|4294967398|35.17|30.87|false|ulysses hernandez|2013-03-01 09:11:58.703164|79.50|industrial engineering +122|356|65759|4294967379|92.61|18.82|true|priscilla ichabod|2013-03-01 09:11:58.703175|92.81|nap time +18|407|65725|4294967362|82.52|5.30|true|quinn van buren|2013-03-01 09:11:58.703282|35.86|kindergarten +66|484|65685|4294967387|45.99|6.81|false|luke laertes|2013-03-01 09:11:58.703317|63.27|mathematics +122|444|65675|4294967500|72.62|34.15|false|xavier polk|2013-03-01 09:11:58.703222|99.79|american history +115|269|65627|4294967362|91.42|1.61|false|zach falkner|2013-03-01 09:11:58.703252|49.85|american history +109|438|65779|4294967371|67.18|40.76|false|quinn davidson|2013-03-01 09:11:58.703318|92.06|quiet hour +102|436|65749|4294967542|68.89|39.01|false|priscilla van buren|2013-03-01 09:11:58.703305|82.99|mathematics +92|490|65745|4294967420|10.22|49.45|true|fred king|2013-03-01 09:11:58.703277|80.12|education +34|439|65667|4294967480|26.49|18.47|true|calvin ellison|2013-03-01 09:11:58.703135|97.87|joggying +72|383|65638|4294967398|23.60|46.73|false|sarah garcia|2013-03-01 09:11:58.703192|11.20|topology +11|505|65576|4294967297|71.32|18.19|false|zach young|2013-03-01 09:11:58.703221|92.47|chemistry +69|376|65751|4294967384|88.77|27.02|false|david underhill|2013-03-01 09:11:58.703244|9.02|mathematics +36|309|65769|4294967317|91.16|38.05|false|yuri carson|2013-03-01 09:11:58.703178|68.33|debate +51|258|65781|4294967391|1.92|39.05|false|ulysses laertes|2013-03-01 09:11:58.703248|95.52|nap time +1|482|65675|4294967314|38.33|21.67|false|jessica thompson|2013-03-01 09:11:58.703110|83.09|forestry +51|295|65716|4294967433|16.24|48.96|false|sarah johnson|2013-03-01 09:11:58.703299|9.00|linguistics +68|439|65703|4294967469|92.55|23.30|true|zach ovid|2013-03-01 09:11:58.703316|65.91|religion +104|299|65791|4294967424|34.03|27.14|false|victor nixon|2013-03-01 09:11:58.703173|48.17|topology +14|337|65611|4294967542|16.99|16.36|true|sarah ellison|2013-03-01 09:11:58.703187|64.89|biology +21|305|65664|4294967361|82.41|49.69|true|xavier davidson|2013-03-01 09:11:58.703287|75.43|mathematics +79|419|65755|4294967329|91.05|39.04|false|fred steinbeck|2013-03-01 09:11:58.703216|11.23|values clariffication +109|427|65626|4294967308|98.72|31.23|true|tom robinson|2013-03-01 09:11:58.703273|64.61|kindergarten +2|379|65707|4294967450|44.27|37.93|false|victor allen|2013-03-01 09:11:58.703076|96.97|american history +7|508|65681|4294967345|66.61|23.73|false|luke allen|2013-03-01 09:11:58.703104|75.85|history +66|300|65553|4294967447|29.02|3.69|false|fred zipper|2013-03-01 09:11:58.703307|72.16|nap time +15|347|65604|4294967484|79.83|26.24|false|alice nixon|2013-03-01 09:11:58.703124|85.91|zync studies +104|454|65579|4294967467|54.44|42.57|true|irene van buren|2013-03-01 09:11:58.703225|73.48|values clariffication +6|409|65669|4294967519|69.53|2.80|true|alice laertes|2013-03-01 09:11:58.703250|93.79|industrial engineering +121|449|65776|4294967327|60.60|45.14|true|quinn davidson|2013-03-01 09:11:58.703175|98.87|industrial engineering +51|445|65761|4294967423|10.60|0.52|false|rachel ellison|2013-03-01 09:11:58.703196|60.30|education +63|268|65652|4294967374|40.78|47.60|false|tom van buren|2013-03-01 09:11:58.703279|42.78|education +10|439|65641|4294967353|24.83|46.33|true|luke zipper|2013-03-01 09:11:58.703257|26.02|topology +17|384|65700|4294967457|20.07|33.19|true|mike carson|2013-03-01 09:11:58.703140|2.83|religion +38|351|65567|4294967316|22.78|30.04|true|jessica ellison|2013-03-01 09:11:58.703113|84.56|forestry +61|419|65783|4294967427|70.93|39.46|false|bob brown|2013-03-01 09:11:58.703207|62.58|education +95|511|65636|4294967325|71.50|2.52|false|zach thompson|2013-03-01 09:11:58.703198|67.23|quiet hour +83|316|65749|4294967342|90.51|23.55|true|holly ichabod|2013-03-01 09:11:58.703091|45.00|nap time +38|318|65560|4294967354|43.73|30.98|false|david polk|2013-03-01 09:11:58.703318|21.81|mathematics +63|473|65720|4294967324|80.74|40.60|false|holly falkner|2013-03-01 09:11:58.703111|18.80|mathematics +82|272|65699|4294967488|92.82|8.98|true|wendy van buren|2013-03-01 09:11:58.703314|41.13|mathematics +35|475|65574|4294967455|60.13|10.85|false|tom falkner|2013-03-01 09:11:58.703217|23.57|wind surfing +2|375|65608|4294967444|9.93|16.47|false|xavier thompson|2013-03-01 09:11:58.703154|16.93|topology +62|428|65758|4294967373|96.09|38.60|true|fred johnson|2013-03-01 09:11:58.703307|60.88|geology +100|391|65661|4294967317|52.72|15.01|true|victor steinbeck|2013-03-01 09:11:58.703232|61.96|debate +10|264|65688|4294967479|78.30|0.63|true|irene thompson|2013-03-01 09:11:58.703156|76.21|undecided +87|469|65580|4294967411|90.20|45.49|true|calvin brown|2013-03-01 09:11:58.703278|56.33|nap time +27|262|65787|4294967371|57.35|44.12|false|irene underhill|2013-03-01 09:11:58.703289|31.19|quiet hour +89|466|65541|4294967468|85.51|19.79|true|calvin davidson|2013-03-01 09:11:58.703113|35.38|philosophy +15|379|65597|4294967382|48.28|22.73|true|luke xylophone|2013-03-01 09:11:58.703309|37.41|topology +1|284|65572|4294967342|37.07|14.51|true|fred ichabod|2013-03-01 09:11:58.703254|43.49|quiet hour +89|444|65579|4294967419|46.02|6.06|false|victor davidson|2013-03-01 09:11:58.703077|91.42|xylophone band +-2|427|65666|4294967465|19.69|33.24|true|bob xylophone|2013-03-01 09:11:58.703219|32.73|joggying +58|360|65564|4294967402|19.00|21.16|false|oscar white|2013-03-01 09:11:58.703161|15.82|forestry +9|274|65710|4294967481|9.57|4.97|true|irene laertes|2013-03-01 09:11:58.703138|86.70|yard duty +107|271|65652|4294967329|38.30|25.36|false|tom polk|2013-03-01 09:11:58.703131|73.61|kindergarten +79|399|65664|4294967492|41.85|29.00|false|calvin garcia|2013-03-01 09:11:58.703074|97.64|religion +58|448|65591|4294967451|62.74|17.69|true|mike king|2013-03-01 09:11:58.703312|82.08|nap time +98|430|65616|4294967451|35.89|12.15|true|ulysses underhill|2013-03-01 09:11:58.703083|20.52|zync studies +83|382|65550|4294967451|35.00|21.02|true|katie hernandez|2013-03-01 09:11:58.703145|8.46|xylophone band +23|381|65661|4294967425|31.40|21.26|false|katie miller|2013-03-01 09:11:58.703251|68.98|topology +62|358|65552|4294967533|50.96|9.42|false|luke allen|2013-03-01 09:11:58.703117|82.21|kindergarten +7|487|65740|4294967416|9.22|43.64|false|nick laertes|2013-03-01 09:11:58.703272|7.49|american history +5|285|65654|4294967436|42.55|14.69|false|holly underhill|2013-03-01 09:11:58.703185|8.91|study skills +104|472|65620|4294967548|22.08|9.94|true|irene falkner|2013-03-01 09:11:58.703135|29.14|opthamology +65|374|65560|4294967516|65.43|22.48|true|oscar quirinius|2013-03-01 09:11:58.703316|16.86|mathematics +8|273|65641|4294967507|35.08|37.80|false|nick allen|2013-03-01 09:11:58.703186|91.46|biology +20|449|65663|4294967439|4.72|12.34|true|xavier ichabod|2013-03-01 09:11:58.703259|11.37|geology +85|313|65780|4294967303|71.01|0.78|false|zach xylophone|2013-03-01 09:11:58.703203|11.63|biology +27|329|65778|4294967451|6.63|7.03|true|jessica zipper|2013-03-01 09:11:58.703130|51.64|philosophy +79|451|65662|4294967487|73.63|15.46|true|alice allen|2013-03-01 09:11:58.703161|99.18|wind surfing +69|440|65720|4294967373|9.56|24.42|true|jessica johnson|2013-03-01 09:11:58.703132|2.72|mathematics +119|390|65544|4294967411|41.31|20.02|false|fred steinbeck|2013-03-01 09:11:58.703267|26.94|nap time +85|468|65643|4294967430|86.63|21.00|true|wendy ovid|2013-03-01 09:11:58.703124|48.81|forestry +-2|429|65664|4294967441|45.19|40.43|false|wendy king|2013-03-01 09:11:58.703265|11.46|industrial engineering +100|481|65750|4294967308|21.19|28.14|false|holly hernandez|2013-03-01 09:11:58.703203|85.44|chemistry +-1|417|65685|4294967492|28.89|5.19|true|mike white|2013-03-01 09:11:58.703275|90.69|forestry +77|385|65681|4294967535|18.56|12.43|true|priscilla johnson|2013-03-01 09:11:58.703176|35.45|study skills +89|478|65583|4294967522|92.40|26.71|true|gabriella ovid|2013-03-01 09:11:58.703092|50.57|biology +43|333|65549|4294967331|11.22|38.00|true|victor xylophone|2013-03-01 09:11:58.703257|58.96|nap time +11|387|65718|4294967457|89.53|16.54|true|alice laertes|2013-03-01 09:11:58.703130|63.06|industrial engineering +105|438|65623|4294967501|39.69|22.95|false|ulysses xylophone|2013-03-01 09:11:58.703148|48.51|kindergarten +111|349|65740|4294967400|17.37|43.34|true|yuri nixon|2013-03-01 09:11:58.703280|55.16|quiet hour +85|461|65654|4294967507|89.10|13.44|true|xavier johnson|2013-03-01 09:11:58.703127|19.64|zync studies +71|409|65536|4294967490|46.97|25.92|false|fred miller|2013-03-01 09:11:58.703116|33.45|history +51|398|65687|4294967304|30.37|47.31|false|luke garcia|2013-03-01 09:11:58.703156|21.79|industrial engineering +47|291|65615|4294967402|37.14|29.63|false|oscar ovid|2013-03-01 09:11:58.703231|39.40|geology +-1|268|65778|4294967418|56.33|44.73|true|calvin falkner|2013-03-01 09:11:58.703220|7.37|history +86|422|65582|4294967353|87.83|2.34|false|luke ellison|2013-03-01 09:11:58.703313|9.35|joggying +76|400|65661|4294967379|15.81|46.57|true|rachel allen|2013-03-01 09:11:58.703211|5.24|wind surfing +81|448|65550|4294967533|25.88|46.54|true|oscar king|2013-03-01 09:11:58.703161|57.63|american history +22|288|65578|4294967341|33.87|20.76|true|calvin hernandez|2013-03-01 09:11:58.703173|51.36|biology +59|410|65572|4294967370|74.42|26.22|false|nick ichabod|2013-03-01 09:11:58.703221|93.48|xylophone band +86|349|65686|4294967512|62.85|24.61|true|bob ovid|2013-03-01 09:11:58.703106|31.75|religion +27|335|65636|4294967505|37.14|2.29|false|alice quirinius|2013-03-01 09:11:58.703287|21.15|education +74|422|65682|4294967316|37.60|45.06|false|rachel carson|2013-03-01 09:11:58.703140|92.95|joggying +24|269|65644|4294967349|31.01|26.44|true|katie young|2013-03-01 09:11:58.703149|58.05|xylophone band +12|411|65560|4294967346|8.91|40.79|false|calvin thompson|2013-03-01 09:11:58.703227|71.59|religion +8|379|65574|4294967410|24.49|2.74|true|calvin young|2013-03-01 09:11:58.703283|38.54|study skills +123|477|65699|4294967340|1.21|28.71|true|quinn ovid|2013-03-01 09:11:58.703278|88.09|undecided +28|349|65711|4294967458|84.69|47.30|true|holly ichabod|2013-03-01 09:11:58.703109|50.26|zync studies +83|420|65563|4294967400|85.10|43.40|true|mike king|2013-03-01 09:11:58.703169|39.96|xylophone band +51|434|65549|4294967449|3.96|39.57|false|mike miller|2013-03-01 09:11:58.703141|76.06|kindergarten +91|346|65696|4294967355|71.31|1.29|true|alice brown|2013-03-01 09:11:58.703245|17.35|zync studies +82|393|65763|4294967452|66.51|14.44|false|quinn steinbeck|2013-03-01 09:11:58.703187|87.99|joggying +85|439|65759|4294967530|20.64|21.57|true|david quirinius|2013-03-01 09:11:58.703083|47.54|philosophy +66|475|65633|4294967498|26.64|42.03|false|gabriella ichabod|2013-03-01 09:11:58.703302|59.56|chemistry +117|311|65691|4294967335|24.28|43.67|false|quinn brown|2013-03-01 09:11:58.703295|56.02|geology +92|352|65559|4294967353|3.82|31.84|false|bob zipper|2013-03-01 09:11:58.703316|29.55|topology +31|432|65607|4294967497|40.80|35.49|false|jessica johnson|2013-03-01 09:11:58.703218|9.67|study skills +114|279|65657|4294967339|54.73|30.17|true|quinn allen|2013-03-01 09:11:58.703297|64.39|debate +28|485|65694|4294967534|79.48|8.84|false|quinn underhill|2013-03-01 09:11:58.703275|82.24|history +2|399|65571|4294967410|59.68|3.92|false|luke underhill|2013-03-01 09:11:58.703221|26.64|topology +17|395|65589|4294967464|95.33|47.46|false|wendy ovid|2013-03-01 09:11:58.703118|54.01|zync studies +71|363|65787|4294967465|59.50|20.17|true|oscar king|2013-03-01 09:11:58.703285|64.88|history +48|511|65561|4294967547|8.45|9.39|false|xavier zipper|2013-03-01 09:11:58.703297|25.67|chemistry +1|424|65712|4294967484|0.13|39.92|true|yuri johnson|2013-03-01 09:11:58.703144|94.43|zync studies +109|306|65643|4294967323|79.54|38.74|true|ulysses carson|2013-03-01 09:11:58.703263|92.24|undecided +49|349|65747|4294967306|84.40|44.93|true|katie garcia|2013-03-01 09:11:58.703226|39.77|chemistry +114|454|65542|4294967443|64.67|13.02|true|katie allen|2013-03-01 09:11:58.703275|84.63|philosophy +28|307|65606|4294967389|95.34|9.62|true|jessica davidson|2013-03-01 09:11:58.703181|57.69|american history +-1|348|65556|4294967413|35.17|9.51|false|bob young|2013-03-01 09:11:58.703280|45.81|quiet hour +1|485|65625|4294967309|41.81|15.46|false|david van buren|2013-03-01 09:11:58.703207|55.06|debate +38|291|65634|4294967438|83.57|49.63|false|david van buren|2013-03-01 09:11:58.703174|64.36|debate +50|338|65634|4294967463|85.23|32.33|false|david ellison|2013-03-01 09:11:58.703247|57.09|values clariffication +113|383|65578|4294967358|43.16|22.22|true|alice xylophone|2013-03-01 09:11:58.703250|41.10|philosophy +43|305|65572|4294967511|36.70|11.12|true|ethan van buren|2013-03-01 09:11:58.703110|70.91|study skills +110|344|65759|4294967464|27.31|46.31|true|mike davidson|2013-03-01 09:11:58.703106|14.10|philosophy +23|424|65731|4294967416|65.72|43.58|true|calvin polk|2013-03-01 09:11:58.703160|24.48|philosophy +16|281|65605|4294967493|45.34|10.36|true|bob white|2013-03-01 09:11:58.703140|14.12|american history +120|285|65649|4294967355|35.56|49.34|true|victor ovid|2013-03-01 09:11:58.703205|43.92|opthamology +98|452|65544|4294967309|73.93|18.86|true|jessica white|2013-03-01 09:11:58.703175|65.77|philosophy +41|360|65643|4294967488|76.28|46.18|false|quinn thompson|2013-03-01 09:11:58.703203|61.29|philosophy +66|462|65697|4294967452|57.29|38.07|true|ethan ovid|2013-03-01 09:11:58.703138|90.16|philosophy +99|373|65579|4294967465|24.02|47.95|true|irene polk|2013-03-01 09:11:58.703231|21.36|mathematics +15|334|65576|4294967542|75.66|11.12|true|jessica robinson|2013-03-01 09:11:58.703104|2.04|chemistry +53|466|65545|4294967514|94.66|15.12|true|wendy ellison|2013-03-01 09:11:58.703236|79.00|xylophone band +64|295|65622|4294967521|59.34|7.62|false|victor brown|2013-03-01 09:11:58.703157|28.37|undecided +8|323|65774|4294967503|21.49|5.55|false|priscilla xylophone|2013-03-01 09:11:58.703213|48.80|religion +42|368|65701|4294967410|35.68|35.84|true|gabriella polk|2013-03-01 09:11:58.703235|6.35|xylophone band +72|389|65724|4294967300|69.74|38.04|false|calvin nixon|2013-03-01 09:11:58.703161|85.52|education +23|493|65555|4294967455|77.89|25.11|true|victor brown|2013-03-01 09:11:58.703125|46.72|education +26|465|65700|4294967346|46.10|38.22|true|bob quirinius|2013-03-01 09:11:58.703177|37.61|kindergarten +77|507|65721|4294967488|78.31|33.11|true|fred davidson|2013-03-01 09:11:58.703187|72.82|biology +88|346|65654|4294967369|48.23|35.72|false|mike brown|2013-03-01 09:11:58.703197|26.73|chemistry +45|357|65755|4294967485|94.25|46.52|true|gabriella thompson|2013-03-01 09:11:58.703202|67.54|religion +11|286|65667|4294967382|48.45|22.94|true|rachel underhill|2013-03-01 09:11:58.703115|63.90|values clariffication +95|489|65711|4294967493|11.89|25.36|false|ulysses laertes|2013-03-01 09:11:58.703249|78.69|history +23|448|65637|4294967435|76.28|19.32|false|ulysses miller|2013-03-01 09:11:58.703290|16.89|mathematics +42|498|65687|4294967352|42.85|39.27|false|oscar robinson|2013-03-01 09:11:58.703139|48.73|undecided +27|490|65680|4294967347|57.46|11.02|true|wendy van buren|2013-03-01 09:11:58.703291|95.26|xylophone band +53|257|65790|4294967425|9.26|9.93|false|oscar laertes|2013-03-01 09:11:58.703113|46.91|forestry +27|457|65570|4294967464|81.58|3.78|false|ulysses underhill|2013-03-01 09:11:58.703088|17.09|quiet hour +46|480|65649|4294967458|86.23|6.76|false|quinn king|2013-03-01 09:11:58.703099|91.03|debate +57|419|65786|4294967300|6.57|36.93|false|nick allen|2013-03-01 09:11:58.703290|66.89|nap time +72|267|65537|4294967460|55.20|42.89|false|oscar carson|2013-03-01 09:11:58.703153|51.91|topology +110|346|65693|4294967505|67.12|9.14|true|luke white|2013-03-01 09:11:58.703199|45.69|quiet hour +117|346|65619|4294967321|78.73|35.68|false|holly brown|2013-03-01 09:11:58.703245|36.59|xylophone band +35|451|65763|4294967498|33.83|10.70|true|sarah robinson|2013-03-01 09:11:58.703126|53.52|nap time +87|466|65562|4294967446|35.62|30.58|true|jessica quirinius|2013-03-01 09:11:58.703246|45.94|values clariffication +116|307|65785|4294967434|72.18|44.24|false|rachel zipper|2013-03-01 09:11:58.703144|29.61|debate +36|460|65541|4294967365|55.99|38.73|false|fred hernandez|2013-03-01 09:11:58.703256|98.87|zync studies +2|383|65649|4294967537|74.19|44.57|true|ulysses king|2013-03-01 09:11:58.703118|8.69|quiet hour +11|331|65659|4294967432|68.01|7.24|true|quinn nixon|2013-03-01 09:11:58.703184|8.95|xylophone band +122|449|65751|4294967548|81.66|29.49|true|mike carson|2013-03-01 09:11:58.703258|30.68|wind surfing +9|308|65715|4294967297|12.54|27.61|false|bob king|2013-03-01 09:11:58.703309|89.40|geology +26|457|65590|4294967302|87.22|26.79|true|xavier king|2013-03-01 09:11:58.703176|67.80|forestry +59|390|65776|4294967421|97.81|40.22|false|katie king|2013-03-01 09:11:58.703132|49.73|zync studies +22|489|65717|4294967422|89.38|28.13|false|mike quirinius|2013-03-01 09:11:58.703262|5.81|chemistry +82|303|65764|4294967480|54.34|13.84|false|david xylophone|2013-03-01 09:11:58.703202|31.41|religion +27|261|65619|4294967401|88.78|18.28|false|bob ovid|2013-03-01 09:11:58.703207|36.48|wind surfing +24|333|65617|4294967370|10.26|16.29|false|yuri quirinius|2013-03-01 09:11:58.703179|10.82|geology +115|334|65653|4294967435|46.45|17.86|false|gabriella steinbeck|2013-03-01 09:11:58.703085|85.09|joggying +77|435|65578|4294967474|38.62|47.15|false|alice steinbeck|2013-03-01 09:11:58.703073|75.62|study skills +101|259|65759|4294967383|79.96|10.23|false|holly underhill|2013-03-01 09:11:58.703087|10.63|nap time +45|401|65680|4294967303|32.41|25.43|true|ulysses steinbeck|2013-03-01 09:11:58.703143|55.30|education +100|430|65570|4294967431|50.31|46.98|false|calvin laertes|2013-03-01 09:11:58.703154|76.80|yard duty +106|456|65548|4294967484|37.90|14.24|true|mike hernandez|2013-03-01 09:11:58.703294|58.51|chemistry +3|260|65659|4294967508|91.53|43.18|false|oscar ovid|2013-03-01 09:11:58.703281|99.87|chemistry +60|275|65654|4294967405|24.80|20.64|true|nick young|2013-03-01 09:11:58.703074|37.80|geology +50|346|65673|4294967549|55.51|32.20|true|alice steinbeck|2013-03-01 09:11:58.703198|33.27|yard duty +85|448|65784|4294967299|90.56|32.56|false|alice hernandez|2013-03-01 09:11:58.703278|68.18|opthamology +10|498|65549|4294967361|87.48|0.66|true|oscar carson|2013-03-01 09:11:58.703150|50.60|chemistry +16|466|65673|4294967318|87.57|45.11|true|bob garcia|2013-03-01 09:11:58.703173|87.78|history +33|508|65600|4294967372|12.02|17.08|true|jessica zipper|2013-03-01 09:11:58.703302|36.57|values clariffication +31|426|65602|4294967543|24.79|36.72|true|holly hernandez|2013-03-01 09:11:58.703306|8.13|quiet hour +61|266|65564|4294967461|95.81|3.07|false|priscilla nixon|2013-03-01 09:11:58.703269|90.34|study skills +41|329|65717|4294967463|30.36|30.37|false|rachel robinson|2013-03-01 09:11:58.703214|57.61|yard duty +114|271|65581|4294967520|61.88|23.27|false|oscar van buren|2013-03-01 09:11:58.703071|88.09|industrial engineering +22|267|65651|4294967449|68.25|17.52|false|ulysses hernandez|2013-03-01 09:11:58.703097|74.13|industrial engineering +120|406|65610|4294967538|59.99|39.78|true|quinn garcia|2013-03-01 09:11:58.703299|39.74|linguistics +5|372|65699|4294967375|80.97|31.76|false|katie ellison|2013-03-01 09:11:58.703112|13.29|american history +40|465|65713|4294967408|50.09|38.66|true|bob carson|2013-03-01 09:11:58.703273|10.94|wind surfing +115|281|65651|4294967434|80.46|35.90|true|gabriella king|2013-03-01 09:11:58.703156|84.42|joggying +5|395|65741|4294967521|29.54|40.04|true|calvin quirinius|2013-03-01 09:11:58.703131|63.81|religion +45|292|65769|4294967336|32.01|29.73|false|mike white|2013-03-01 09:11:58.703310|70.52|chemistry +116|396|65778|4294967515|30.65|49.38|true|quinn ellison|2013-03-01 09:11:58.703131|99.08|opthamology +68|264|65623|4294967481|69.97|47.03|true|zach garcia|2013-03-01 09:11:58.703235|28.60|education +18|280|65536|4294967320|32.92|45.94|false|holly white|2013-03-01 09:11:58.703086|58.86|topology +28|302|65653|4294967388|50.40|38.37|false|holly miller|2013-03-01 09:11:58.703195|3.81|philosophy +114|385|65541|4294967458|73.48|34.97|true|oscar quirinius|2013-03-01 09:11:58.703143|72.33|xylophone band +4|279|65745|4294967431|83.58|31.66|true|fred van buren|2013-03-01 09:11:58.703087|25.19|study skills +51|377|65626|4294967479|1.27|12.73|false|wendy miller|2013-03-01 09:11:58.703072|96.47|values clariffication +78|351|65755|4294967337|99.29|24.84|true|holly zipper|2013-03-01 09:11:58.703236|81.44|forestry +75|461|65760|4294967326|3.21|8.52|false|david brown|2013-03-01 09:11:58.703144|21.14|xylophone band +124|371|65687|4294967489|79.55|45.10|false|priscilla carson|2013-03-01 09:11:58.703277|3.37|philosophy +95|424|65643|4294967442|36.22|24.86|false|rachel king|2013-03-01 09:11:58.703261|71.29|yard duty +88|348|65645|4294967328|46.88|5.74|false|luke polk|2013-03-01 09:11:58.703306|3.95|yard duty +27|278|65622|4294967516|25.67|46.19|true|priscilla zipper|2013-03-01 09:11:58.703302|50.08|chemistry +23|302|65595|4294967497|22.01|5.84|true|wendy falkner|2013-03-01 09:11:58.703164|48.92|biology +30|441|65721|4294967456|40.17|28.17|false|sarah steinbeck|2013-03-01 09:11:58.703256|23.78|wind surfing +31|461|65608|4294967349|61.92|49.45|true|bob miller|2013-03-01 09:11:58.703255|48.90|biology +13|477|65680|4294967505|22.85|12.85|true|calvin steinbeck|2013-03-01 09:11:58.703277|54.11|zync studies +29|449|65596|4294967490|58.67|9.22|true|victor robinson|2013-03-01 09:11:58.703177|79.75|zync studies +13|503|65664|4294967406|52.50|41.37|true|holly laertes|2013-03-01 09:11:58.703196|34.71|yard duty +63|368|65714|4294967420|20.38|25.32|true|yuri xylophone|2013-03-01 09:11:58.703189|49.69|debate +44|437|65721|4294967376|22.27|3.27|true|yuri king|2013-03-01 09:11:58.703269|86.59|topology +35|500|65641|4294967469|68.85|13.20|true|victor ellison|2013-03-01 09:11:58.703245|41.16|undecided +49|271|65735|4294967454|59.83|22.33|false|oscar white|2013-03-01 09:11:58.703139|12.67|nap time +0|264|65670|4294967479|72.98|3.67|true|david xylophone|2013-03-01 09:11:58.703269|61.06|philosophy +47|463|65751|4294967525|71.68|30.61|true|jessica ovid|2013-03-01 09:11:58.703072|2.96|education +120|273|65724|4294967477|94.15|6.54|true|david ellison|2013-03-01 09:11:58.703091|36.05|education +6|486|65611|4294967485|74.00|27.42|false|ulysses steinbeck|2013-03-01 09:11:58.703258|21.21|education +53|311|65650|4294967299|48.11|22.64|true|wendy hernandez|2013-03-01 09:11:58.703146|89.12|kindergarten +117|396|65541|4294967434|74.78|6.62|true|katie miller|2013-03-01 09:11:58.703243|89.14|yard duty +24|454|65628|4294967337|88.55|31.61|false|victor young|2013-03-01 09:11:58.703296|30.43|undecided +116|485|65575|4294967296|95.84|14.26|true|irene polk|2013-03-01 09:11:58.703128|17.00|kindergarten +11|438|65622|4294967368|89.81|0.73|true|sarah white|2013-03-01 09:11:58.703287|88.60|biology +65|263|65671|4294967519|68.95|20.34|true|alice laertes|2013-03-01 09:11:58.703103|8.65|history +31|278|65634|4294967511|50.41|46.87|true|holly underhill|2013-03-01 09:11:58.703244|99.34|debate +98|466|65602|4294967470|8.32|1.17|false|david underhill|2013-03-01 09:11:58.703275|95.58|debate +114|384|65549|4294967361|55.39|36.12|true|holly king|2013-03-01 09:11:58.703077|55.04|forestry +35|463|65646|4294967363|50.83|34.68|true|gabriella miller|2013-03-01 09:11:58.703133|27.34|nap time +37|317|65684|4294967499|23.13|26.55|false|calvin laertes|2013-03-01 09:11:58.703162|3.51|study skills +80|390|65766|4294967360|67.26|8.82|true|xavier hernandez|2013-03-01 09:11:58.703288|66.13|biology +111|486|65620|4294967357|22.36|46.67|true|ulysses underhill|2013-03-01 09:11:58.703172|64.65|zync studies +88|322|65733|4294967316|80.58|32.61|false|quinn brown|2013-03-01 09:11:58.703272|99.80|yard duty +20|372|65587|4294967462|76.92|7.37|true|gabriella hernandez|2013-03-01 09:11:58.703182|11.86|mathematics +107|278|65550|4294967432|83.08|22.15|false|sarah zipper|2013-03-01 09:11:58.703131|1.75|forestry +50|405|65715|4294967538|79.12|16.49|false|calvin ovid|2013-03-01 09:11:58.703297|39.62|chemistry +100|310|65657|4294967393|20.67|7.45|false|gabriella king|2013-03-01 09:11:58.703290|26.40|xylophone band +66|477|65674|4294967313|8.45|4.83|false|wendy young|2013-03-01 09:11:58.703180|10.28|xylophone band +73|318|65610|4294967401|11.91|23.15|false|nick thompson|2013-03-01 09:11:58.703097|36.77|religion +-2|269|65681|4294967544|99.24|28.19|false|rachel falkner|2013-03-01 09:11:58.703089|41.57|quiet hour +85|495|65656|4294967507|90.12|3.99|true|fred polk|2013-03-01 09:11:58.703257|14.96|quiet hour +20|288|65758|4294967547|20.79|34.05|false|xavier carson|2013-03-01 09:11:58.703092|61.69|chemistry +123|299|65606|4294967525|99.36|7.66|false|sarah falkner|2013-03-01 09:11:58.703300|7.51|wind surfing +10|273|65750|4294967499|23.77|21.66|false|yuri underhill|2013-03-01 09:11:58.703177|20.91|religion +75|393|65726|4294967467|39.98|29.78|false|katie ichabod|2013-03-01 09:11:58.703238|6.00|industrial engineering +47|375|65775|4294967465|70.56|32.56|false|david robinson|2013-03-01 09:11:58.703238|7.88|linguistics +106|482|65624|4294967446|45.45|11.66|true|rachel laertes|2013-03-01 09:11:58.703119|58.02|debate +36|273|65739|4294967416|1.25|33.36|true|bob zipper|2013-03-01 09:11:58.703248|74.77|industrial engineering +92|335|65603|4294967296|80.96|18.48|false|ulysses nixon|2013-03-01 09:11:58.703198|45.63|opthamology +68|301|65579|4294967497|94.43|45.02|false|zach zipper|2013-03-01 09:11:58.703230|28.02|wind surfing +106|502|65695|4294967501|83.92|35.24|true|mike zipper|2013-03-01 09:11:58.703157|57.33|opthamology +122|396|65550|4294967350|60.02|32.13|true|sarah ovid|2013-03-01 09:11:58.703099|91.38|wind surfing +67|436|65541|4294967471|19.06|39.60|true|oscar king|2013-03-01 09:11:58.703125|14.94|opthamology +56|463|65587|4294967307|52.17|42.41|true|rachel brown|2013-03-01 09:11:58.703182|94.47|joggying +46|319|65683|4294967549|94.33|14.75|true|irene steinbeck|2013-03-01 09:11:58.703108|99.56|kindergarten +18|503|65750|4294967467|12.50|30.41|false|ulysses davidson|2013-03-01 09:11:58.703310|83.44|yard duty +43|473|65697|4294967457|79.97|11.35|false|david quirinius|2013-03-01 09:11:58.703206|50.01|undecided +120|413|65650|4294967543|48.25|10.47|false|sarah king|2013-03-01 09:11:58.703122|90.77|zync studies +91|448|65559|4294967320|90.35|6.28|true|gabriella ichabod|2013-03-01 09:11:58.703320|83.50|nap time +24|419|65755|4294967444|15.92|11.90|false|xavier davidson|2013-03-01 09:11:58.703208|38.39|yard duty +63|481|65591|4294967382|28.31|36.11|true|irene underhill|2013-03-01 09:11:58.703177|11.43|history +118|497|65738|4294967546|19.14|5.09|true|alice king|2013-03-01 09:11:58.703197|82.32|industrial engineering +25|507|65643|4294967312|52.53|6.06|false|katie van buren|2013-03-01 09:11:58.703323|93.11|opthamology +79|422|65691|4294967299|39.21|29.52|true|zach quirinius|2013-03-01 09:11:58.703136|38.23|philosophy +27|367|65675|4294967518|12.32|40.26|true|tom brown|2013-03-01 09:11:58.703104|87.36|mathematics +96|421|65692|4294967526|98.48|34.41|true|oscar falkner|2013-03-01 09:11:58.703214|54.76|zync studies +27|340|65677|4294967461|98.96|45.78|true|rachel carson|2013-03-01 09:11:58.703208|25.37|zync studies +3|469|65743|4294967428|10.66|39.84|false|victor zipper|2013-03-01 09:11:58.703181|26.60|mathematics +122|288|65695|4294967469|90.05|12.70|false|zach steinbeck|2013-03-01 09:11:58.703314|39.12|education +81|449|65726|4294967395|97.09|40.15|false|bob ovid|2013-03-01 09:11:58.703250|60.46|kindergarten +77|337|65766|4294967334|12.16|13.49|true|wendy quirinius|2013-03-01 09:11:58.703282|37.06|history +5|319|65611|4294967494|45.92|2.61|true|wendy nixon|2013-03-01 09:11:58.703209|25.92|nap time +8|469|65592|4294967535|17.79|48.89|false|yuri steinbeck|2013-03-01 09:11:58.703299|23.19|kindergarten +74|487|65563|4294967305|60.06|13.22|true|ulysses polk|2013-03-01 09:11:58.703222|38.23|yard duty +85|454|65620|4294967520|65.55|13.20|false|victor quirinius|2013-03-01 09:11:58.703152|6.85|history +104|448|65693|4294967459|80.92|36.70|false|rachel falkner|2013-03-01 09:11:58.703140|32.33|zync studies +114|279|65544|4294967383|6.67|19.87|false|xavier hernandez|2013-03-01 09:11:58.703324|48.84|geology +120|331|65539|4294967324|88.02|40.94|true|holly nixon|2013-03-01 09:11:58.703262|96.64|yard duty +84|326|65782|4294967362|17.87|38.67|true|victor ellison|2013-03-01 09:11:58.703226|34.31|joggying +45|408|65577|4294967461|59.43|36.13|false|ethan falkner|2013-03-01 09:11:58.703317|41.01|values clariffication +88|504|65652|4294967419|78.28|47.86|false|priscilla white|2013-03-01 09:11:58.703324|55.04|history +73|306|65659|4294967341|34.58|45.90|false|yuri white|2013-03-01 09:11:58.703201|75.91|nap time +97|360|65590|4294967324|68.96|49.52|false|alice miller|2013-03-01 09:11:58.703247|22.13|philosophy +89|300|65675|4294967384|49.77|12.43|true|jessica davidson|2013-03-01 09:11:58.703276|79.90|values clariffication +118|309|65578|4294967357|75.10|33.02|false|tom ellison|2013-03-01 09:11:58.703197|16.01|zync studies +34|324|65549|4294967307|17.16|38.94|false|quinn underhill|2013-03-01 09:11:58.703111|28.93|forestry +93|441|65549|4294967389|95.11|0.27|true|quinn davidson|2013-03-01 09:11:58.703278|13.30|joggying +117|323|65669|4294967316|90.25|41.90|false|alice falkner|2013-03-01 09:11:58.703221|54.25|study skills +118|374|65541|4294967528|6.72|38.04|false|priscilla ovid|2013-03-01 09:11:58.703304|9.04|undecided +120|298|65763|4294967513|3.33|21.11|false|oscar ichabod|2013-03-01 09:11:58.703094|86.43|education +100|354|65649|4294967358|7.54|35.36|true|zach zipper|2013-03-01 09:11:58.703174|79.51|history +37|379|65737|4294967314|88.17|9.21|true|alice hernandez|2013-03-01 09:11:58.703089|29.92|opthamology +115|502|65773|4294967522|37.59|0.02|true|yuri laertes|2013-03-01 09:11:58.703260|3.81|american history +73|324|65582|4294967330|59.68|32.25|false|jessica ovid|2013-03-01 09:11:58.703109|96.60|religion +51|484|65635|4294967500|2.18|25.75|true|oscar van buren|2013-03-01 09:11:58.703255|82.29|yard duty +16|445|65620|4294967517|21.61|0.86|true|mike van buren|2013-03-01 09:11:58.703110|8.16|opthamology +102|501|65710|4294967332|47.27|1.31|false|xavier underhill|2013-03-01 09:11:58.703094|57.11|geology +28|372|65578|4294967374|75.42|5.93|true|holly thompson|2013-03-01 09:11:58.703205|54.35|debate +12|372|65573|4294967345|94.31|35.23|false|calvin falkner|2013-03-01 09:11:58.703122|53.56|debate +19|492|65588|4294967445|19.06|14.83|false|tom ichabod|2013-03-01 09:11:58.703171|69.48|nap time +70|430|65539|4294967534|18.89|43.84|true|tom carson|2013-03-01 09:11:58.703182|21.93|joggying +33|321|65594|4294967495|97.71|3.40|false|fred young|2013-03-01 09:11:58.703288|60.57|zync studies +44|452|65645|4294967345|56.15|16.90|true|oscar johnson|2013-03-01 09:11:58.703257|66.76|industrial engineering +53|293|65778|4294967418|16.09|14.99|true|oscar johnson|2013-03-01 09:11:58.703235|89.51|geology +73|451|65599|4294967373|36.89|33.64|true|zach ichabod|2013-03-01 09:11:58.703315|4.93|opthamology +104|474|65773|4294967473|40.98|11.43|false|quinn garcia|2013-03-01 09:11:58.703167|76.46|values clariffication +31|356|65721|4294967481|1.08|3.03|true|rachel ovid|2013-03-01 09:11:58.703120|95.38|zync studies +23|306|65777|4294967489|13.99|21.69|true|oscar zipper|2013-03-01 09:11:58.703280|54.39|zync studies +93|342|65623|4294967405|99.67|44.90|true|ulysses underhill|2013-03-01 09:11:58.703083|31.22|biology +18|440|65773|4294967318|57.23|1.42|false|oscar xylophone|2013-03-01 09:11:58.703165|63.26|zync studies +72|489|65549|4294967424|82.56|13.88|false|bob ichabod|2013-03-01 09:11:58.703112|80.09|quiet hour +12|284|65666|4294967470|89.80|42.04|false|ulysses garcia|2013-03-01 09:11:58.703073|28.69|opthamology +0|312|65599|4294967519|78.21|45.53|false|alice xylophone|2013-03-01 09:11:58.703289|0.56|nap time +24|483|65572|4294967499|79.42|9.96|false|xavier xylophone|2013-03-01 09:11:58.703101|22.64|quiet hour +34|405|65719|4294967306|1.31|23.48|false|katie white|2013-03-01 09:11:58.703198|51.13|nap time +99|497|65656|4294967390|32.37|6.21|true|wendy polk|2013-03-01 09:11:58.703212|53.27|mathematics +83|493|65742|4294967352|76.33|28.36|true|ethan carson|2013-03-01 09:11:58.703269|43.84|philosophy +106|282|65688|4294967433|75.19|13.08|true|yuri brown|2013-03-01 09:11:58.703118|77.88|debate +81|305|65783|4294967443|39.01|33.02|true|bob king|2013-03-01 09:11:58.703114|77.40|chemistry +74|309|65662|4294967518|4.17|38.43|false|rachel thompson|2013-03-01 09:11:58.703243|76.11|undecided +63|364|65705|4294967490|73.68|4.96|true|wendy white|2013-03-01 09:11:58.703186|13.81|forestry +46|363|65735|4294967537|72.79|29.22|true|ulysses brown|2013-03-01 09:11:58.703271|61.16|joggying +84|323|65685|4294967477|61.86|14.91|false|ethan brown|2013-03-01 09:11:58.703256|38.71|biology +4|392|65665|4294967391|53.27|3.86|true|zach miller|2013-03-01 09:11:58.703296|43.66|undecided +94|474|65759|4294967317|57.08|31.36|false|zach brown|2013-03-01 09:11:58.703239|69.24|xylophone band +26|491|65683|4294967420|46.62|48.52|false|wendy laertes|2013-03-01 09:11:58.703178|97.21|values clariffication +35|488|65737|4294967502|62.52|3.15|true|xavier quirinius|2013-03-01 09:11:58.703096|42.64|linguistics +59|382|65762|4294967468|25.28|35.10|true|david robinson|2013-03-01 09:11:58.703126|5.49|mathematics +58|427|65597|4294967511|71.19|47.55|false|xavier ichabod|2013-03-01 09:11:58.703323|36.22|chemistry +18|428|65775|4294967436|74.19|48.08|true|irene xylophone|2013-03-01 09:11:58.703122|98.43|geology +69|489|65536|4294967404|33.52|17.99|false|oscar ichabod|2013-03-01 09:11:58.703247|32.68|topology +71|439|65618|4294967349|49.78|4.57|false|ethan hernandez|2013-03-01 09:11:58.703075|10.06|yard duty +60|475|65664|4294967299|44.43|25.02|false|irene laertes|2013-03-01 09:11:58.703172|55.82|quiet hour +35|280|65779|4294967322|1.87|16.04|false|luke ellison|2013-03-01 09:11:58.703180|11.87|religion +122|473|65629|4294967387|90.77|25.59|true|fred underhill|2013-03-01 09:11:58.703316|58.81|undecided +-1|423|65663|4294967380|0.79|21.33|false|bob laertes|2013-03-01 09:11:58.703278|94.16|debate +68|314|65770|4294967398|70.85|29.24|true|mike garcia|2013-03-01 09:11:58.703312|51.90|american history +77|328|65789|4294967489|81.32|19.12|false|fred ichabod|2013-03-01 09:11:58.703160|83.18|debate +60|342|65550|4294967306|90.38|45.69|false|victor brown|2013-03-01 09:11:58.703311|7.38|biology +53|422|65784|4294967450|56.04|43.76|true|calvin falkner|2013-03-01 09:11:58.703193|93.95|zync studies +103|504|65768|4294967354|53.93|16.42|true|bob davidson|2013-03-01 09:11:58.703141|78.25|kindergarten +8|272|65541|4294967325|63.90|11.20|true|oscar polk|2013-03-01 09:11:58.703136|27.89|debate +108|446|65733|4294967403|7.11|32.85|false|ethan brown|2013-03-01 09:11:58.703170|11.44|american history +42|315|65782|4294967369|4.46|11.63|false|bob garcia|2013-03-01 09:11:58.703292|30.24|industrial engineering +16|482|65736|4294967310|43.19|46.30|true|ethan garcia|2013-03-01 09:11:58.703243|28.90|wind surfing +28|454|65612|4294967480|65.02|43.00|false|ulysses polk|2013-03-01 09:11:58.703140|25.10|philosophy +58|482|65775|4294967417|68.04|19.41|false|wendy underhill|2013-03-01 09:11:58.703212|88.25|yard duty +88|437|65762|4294967385|76.71|13.83|false|david laertes|2013-03-01 09:11:58.703169|45.70|religion +83|265|65705|4294967392|19.28|5.42|true|quinn ellison|2013-03-01 09:11:58.703275|20.57|education +2|266|65551|4294967296|35.65|45.12|true|david young|2013-03-01 09:11:58.703184|73.93|education +91|415|65672|4294967316|59.45|20.80|true|mike hernandez|2013-03-01 09:11:58.703241|75.27|study skills +34|379|65750|4294967441|98.18|20.58|true|alice underhill|2013-03-01 09:11:58.703170|96.85|mathematics +86|451|65580|4294967451|8.71|47.68|true|ulysses polk|2013-03-01 09:11:58.703165|81.42|geology +46|266|65762|4294967305|2.97|19.56|false|calvin falkner|2013-03-01 09:11:58.703103|77.96|chemistry +81|338|65681|4294967519|50.66|16.10|false|katie ovid|2013-03-01 09:11:58.703259|61.30|wind surfing +17|441|65633|4294967460|89.15|21.11|true|priscilla johnson|2013-03-01 09:11:58.703139|28.49|education +112|312|65685|4294967395|33.76|21.38|true|wendy young|2013-03-01 09:11:58.703182|4.88|religion +44|270|65751|4294967301|67.48|37.12|false|oscar garcia|2013-03-01 09:11:58.703239|47.81|religion +37|411|65680|4294967353|2.92|29.66|true|ethan zipper|2013-03-01 09:11:58.703132|34.08|american history +95|329|65628|4294967396|61.70|20.75|true|david ovid|2013-03-01 09:11:58.703223|83.26|nap time +33|497|65612|4294967375|28.69|14.84|true|fred nixon|2013-03-01 09:11:58.703070|52.64|values clariffication +55|328|65703|4294967492|68.41|0.63|true|ulysses carson|2013-03-01 09:11:58.703282|37.18|geology +17|483|65713|4294967458|56.81|1.69|false|calvin xylophone|2013-03-01 09:11:58.703250|90.91|mathematics +61|510|65675|4294967391|88.07|13.44|false|ulysses young|2013-03-01 09:11:58.703281|24.19|joggying +53|279|65541|4294967441|77.97|14.72|false|xavier ellison|2013-03-01 09:11:58.703091|15.85|american history +114|304|65643|4294967457|54.75|46.53|false|ethan laertes|2013-03-01 09:11:58.703250|52.56|mathematics +61|405|65609|4294967301|16.48|48.50|false|mike falkner|2013-03-01 09:11:58.703159|83.82|wind surfing +93|433|65629|4294967439|39.83|8.56|false|katie king|2013-03-01 09:11:58.703125|72.90|values clariffication +6|348|65785|4294967326|57.37|33.90|true|ulysses underhill|2013-03-01 09:11:58.703226|68.30|opthamology +39|492|65701|4294967458|23.96|19.65|true|fred polk|2013-03-01 09:11:58.703262|1.81|xylophone band +74|256|65778|4294967487|74.15|25.49|true|david davidson|2013-03-01 09:11:58.703151|95.69|yard duty +99|435|65546|4294967535|22.85|3.12|false|tom young|2013-03-01 09:11:58.703111|91.13|history +106|441|65771|4294967386|83.93|28.44|false|xavier allen|2013-03-01 09:11:58.703226|70.88|xylophone band +124|392|65711|4294967498|15.37|18.83|false|irene garcia|2013-03-01 09:11:58.703158|71.89|industrial engineering +9|336|65658|4294967412|43.17|18.38|false|katie ichabod|2013-03-01 09:11:58.703091|68.85|mathematics +3|395|65747|4294967313|57.25|3.17|true|wendy garcia|2013-03-01 09:11:58.703074|58.47|xylophone band +123|381|65780|4294967388|5.44|35.16|true|tom carson|2013-03-01 09:11:58.703220|10.95|quiet hour +58|256|65733|4294967501|70.53|23.07|true|zach white|2013-03-01 09:11:58.703090|50.99|history +106|284|65619|4294967527|92.96|0.86|true|mike nixon|2013-03-01 09:11:58.703084|32.64|xylophone band +58|289|65604|4294967313|77.36|10.49|false|wendy falkner|2013-03-01 09:11:58.703075|23.89|kindergarten +6|342|65602|4294967365|85.49|24.46|false|zach steinbeck|2013-03-01 09:11:58.703111|85.94|study skills +89|354|65593|4294967462|97.51|21.01|true|ethan zipper|2013-03-01 09:11:58.703201|35.15|forestry +44|364|65614|4294967413|4.35|9.19|false|ethan king|2013-03-01 09:11:58.703219|1.42|nap time +43|436|65678|4294967424|50.92|3.40|true|luke van buren|2013-03-01 09:11:58.703093|33.90|values clariffication +27|335|65617|4294967381|64.87|25.03|false|david allen|2013-03-01 09:11:58.703140|64.90|nap time +44|390|65693|4294967504|1.29|28.40|false|bob davidson|2013-03-01 09:11:58.703127|84.88|history +42|315|65713|4294967544|88.48|46.90|true|ulysses underhill|2013-03-01 09:11:58.703259|39.47|education +54|327|65657|4294967334|42.42|2.89|true|jessica zipper|2013-03-01 09:11:58.703182|65.01|linguistics +68|501|65606|4294967445|5.08|39.85|true|alice robinson|2013-03-01 09:11:58.703206|87.16|topology +37|293|65762|4294967316|67.38|41.20|true|zach brown|2013-03-01 09:11:58.703155|21.70|forestry +10|471|65563|4294967316|37.72|45.06|false|tom quirinius|2013-03-01 09:11:58.703248|14.36|quiet hour +42|353|65672|4294967465|70.04|27.62|false|xavier garcia|2013-03-01 09:11:58.703153|13.28|forestry +15|271|65647|4294967392|45.06|35.36|true|quinn young|2013-03-01 09:11:58.703209|81.95|kindergarten +71|332|65717|4294967337|10.73|34.17|true|gabriella ichabod|2013-03-01 09:11:58.703288|80.05|linguistics +92|418|65706|4294967367|2.07|16.35|false|yuri hernandez|2013-03-01 09:11:58.703205|85.13|joggying +101|326|65586|4294967435|30.81|4.27|true|rachel brown|2013-03-01 09:11:58.703179|18.65|undecided +76|422|65552|4294967325|26.73|48.00|false|mike zipper|2013-03-01 09:11:58.703137|18.11|industrial engineering +119|373|65704|4294967459|27.07|27.54|false|mike polk|2013-03-01 09:11:58.703202|54.76|biology +70|283|65620|4294967355|9.13|3.42|false|zach falkner|2013-03-01 09:11:58.703252|96.95|debate +117|267|65637|4294967544|93.64|11.69|false|david brown|2013-03-01 09:11:58.703224|26.78|topology +88|328|65547|4294967517|70.35|15.13|true|alice davidson|2013-03-01 09:11:58.703262|17.71|undecided +22|447|65757|4294967539|8.79|6.52|true|bob king|2013-03-01 09:11:58.703325|9.24|joggying +-1|300|65663|4294967343|71.26|34.62|true|calvin ovid|2013-03-01 09:11:58.703262|78.56|study skills +92|297|65704|4294967403|84.83|0.21|false|gabriella brown|2013-03-01 09:11:58.703089|16.22|wind surfing +25|446|65789|4294967501|5.54|49.56|false|jessica garcia|2013-03-01 09:11:58.703286|92.74|linguistics +65|274|65619|4294967389|12.45|41.33|true|mike polk|2013-03-01 09:11:58.703219|34.72|nap time +111|287|65587|4294967421|48.22|12.74|false|yuri johnson|2013-03-01 09:11:58.703227|64.06|values clariffication +64|371|65685|4294967320|15.63|39.84|false|ethan brown|2013-03-01 09:11:58.703132|43.48|opthamology +72|421|65764|4294967458|88.80|39.49|true|rachel falkner|2013-03-01 09:11:58.703227|88.69|topology +108|301|65536|4294967357|90.05|17.59|true|ethan johnson|2013-03-01 09:11:58.703271|75.70|undecided +-2|461|65648|4294967425|58.52|24.85|false|rachel thompson|2013-03-01 09:11:58.703318|85.62|zync studies +113|395|65666|4294967447|26.49|13.44|true|tom steinbeck|2013-03-01 09:11:58.703247|83.95|industrial engineering +106|415|65644|4294967399|63.35|18.38|false|xavier davidson|2013-03-01 09:11:58.703234|44.10|study skills +117|483|65627|4294967547|21.18|49.46|true|priscilla ichabod|2013-03-01 09:11:58.703184|61.89|philosophy +44|460|65693|4294967423|58.00|23.77|false|quinn zipper|2013-03-01 09:11:58.703165|8.38|kindergarten +71|324|65681|4294967388|47.59|33.67|false|nick ichabod|2013-03-01 09:11:58.703106|71.17|xylophone band +90|269|65648|4294967392|42.31|11.27|true|holly king|2013-03-01 09:11:58.703196|0.08|american history +22|264|65537|4294967419|8.07|10.71|false|david xylophone|2013-03-01 09:11:58.703136|11.87|undecided +51|447|65791|4294967354|28.95|44.27|false|luke davidson|2013-03-01 09:11:58.703292|4.24|chemistry +6|397|65660|4294967512|0.27|24.95|false|nick young|2013-03-01 09:11:58.703156|62.42|industrial engineering +122|392|65619|4294967527|20.81|27.27|false|nick underhill|2013-03-01 09:11:58.703305|18.68|education +43|461|65686|4294967544|20.82|30.99|false|holly hernandez|2013-03-01 09:11:58.703286|98.68|history +21|280|65716|4294967393|48.08|29.62|true|gabriella ellison|2013-03-01 09:11:58.703264|85.93|american history +10|453|65745|4294967397|89.01|24.03|true|nick ellison|2013-03-01 09:11:58.703108|83.13|topology +56|392|65586|4294967410|48.15|29.76|true|alice nixon|2013-03-01 09:11:58.703223|94.25|american history +95|415|65560|4294967444|4.71|17.29|false|quinn laertes|2013-03-01 09:11:58.703267|92.59|xylophone band +13|465|65713|4294967306|26.76|6.56|true|yuri polk|2013-03-01 09:11:58.703169|47.77|american history +34|425|65660|4294967371|58.43|15.54|true|irene garcia|2013-03-01 09:11:58.703172|28.05|forestry +59|496|65576|4294967331|15.75|28.68|false|tom king|2013-03-01 09:11:58.703215|66.55|opthamology +-1|433|65581|4294967299|86.92|23.15|false|yuri ellison|2013-03-01 09:11:58.703098|21.29|history +13|260|65699|4294967496|41.87|9.26|false|sarah king|2013-03-01 09:11:58.703128|84.79|study skills +45|298|65747|4294967434|15.15|31.01|false|priscilla polk|2013-03-01 09:11:58.703113|21.80|yard duty +31|366|65557|4294967458|41.71|1.98|false|sarah miller|2013-03-01 09:11:58.703216|69.92|linguistics +63|464|65596|4294967327|44.57|0.47|true|holly allen|2013-03-01 09:11:58.703200|12.72|nap time +5|357|65736|4294967351|0.60|15.38|false|rachel ovid|2013-03-01 09:11:58.703246|86.51|xylophone band +16|483|65658|4294967350|38.88|2.89|false|oscar robinson|2013-03-01 09:11:58.703225|66.53|topology +90|487|65695|4294967313|57.93|15.18|false|yuri quirinius|2013-03-01 09:11:58.703320|77.09|education +117|302|65615|4294967382|21.32|31.46|false|ethan polk|2013-03-01 09:11:58.703274|10.79|kindergarten +75|504|65564|4294967534|7.56|19.79|false|mike steinbeck|2013-03-01 09:11:58.703148|26.97|xylophone band +86|257|65748|4294967427|32.52|26.87|true|ulysses young|2013-03-01 09:11:58.703192|29.49|values clariffication +112|348|65643|4294967388|30.61|21.27|false|oscar polk|2013-03-01 09:11:58.703076|22.05|yard duty +91|307|65544|4294967344|4.57|0.60|false|rachel robinson|2013-03-01 09:11:58.703227|79.21|undecided +49|407|65639|4294967362|27.66|34.06|true|yuri garcia|2013-03-01 09:11:58.703163|97.48|mathematics +95|459|65760|4294967524|85.74|49.16|false|mike ellison|2013-03-01 09:11:58.703074|48.20|nap time +76|258|65724|4294967365|70.00|34.95|false|irene quirinius|2013-03-01 09:11:58.703212|10.52|geology +17|406|65585|4294967401|0.43|29.19|true|priscilla young|2013-03-01 09:11:58.703235|33.69|religion +90|273|65548|4294967366|62.90|12.30|true|alice polk|2013-03-01 09:11:58.703074|53.52|study skills +41|301|65706|4294967501|51.84|7.02|true|ethan quirinius|2013-03-01 09:11:58.703265|55.94|study skills +38|376|65783|4294967507|10.19|38.28|false|tom quirinius|2013-03-01 09:11:58.703185|52.43|kindergarten +50|317|65709|4294967379|68.50|7.36|true|victor nixon|2013-03-01 09:11:58.703162|67.69|forestry +33|265|65713|4294967529|86.69|16.40|true|holly thompson|2013-03-01 09:11:58.703189|72.37|history +89|476|65728|4294967549|62.30|14.07|false|alice quirinius|2013-03-01 09:11:58.703195|55.37|zync studies +24|339|65724|4294967328|64.95|37.02|false|rachel robinson|2013-03-01 09:11:58.703182|75.06|wind surfing +124|421|65743|4294967434|3.62|21.02|true|holly polk|2013-03-01 09:11:58.703173|62.00|education +85|463|65542|4294967348|3.86|46.36|true|ethan quirinius|2013-03-01 09:11:58.703287|42.85|biology +66|264|65600|4294967388|28.71|43.96|false|priscilla nixon|2013-03-01 09:11:58.703169|92.92|yard duty +112|373|65680|4294967449|90.28|49.34|false|sarah falkner|2013-03-01 09:11:58.703085|1.01|geology +28|480|65637|4294967328|76.69|33.76|false|oscar ichabod|2013-03-01 09:11:58.703323|93.41|kindergarten +101|476|65631|4294967538|29.78|23.61|false|irene nixon|2013-03-01 09:11:58.703270|33.72|values clariffication +96|435|65658|4294967523|6.74|28.52|false|yuri falkner|2013-03-01 09:11:58.703099|11.69|joggying +54|478|65615|4294967344|9.74|21.52|false|jessica van buren|2013-03-01 09:11:58.703284|99.88|philosophy +89|354|65777|4294967509|71.68|46.03|true|ulysses polk|2013-03-01 09:11:58.703324|82.62|wind surfing +16|436|65757|4294967379|7.06|28.15|true|rachel zipper|2013-03-01 09:11:58.703267|12.22|forestry +78|275|65596|4294967299|21.70|49.32|true|calvin xylophone|2013-03-01 09:11:58.703166|85.74|kindergarten +53|489|65752|4294967329|83.27|27.20|true|holly ichabod|2013-03-01 09:11:58.703079|47.82|industrial engineering +111|288|65770|4294967544|80.84|16.79|true|mike van buren|2013-03-01 09:11:58.703220|46.71|topology +85|334|65610|4294967373|2.96|2.36|false|ulysses miller|2013-03-01 09:11:58.703310|9.24|xylophone band +71|418|65598|4294967439|80.30|13.66|true|bob garcia|2013-03-01 09:11:58.703104|63.30|values clariffication +40|299|65712|4294967352|25.37|19.72|false|ethan miller|2013-03-01 09:11:58.703207|53.65|opthamology +32|458|65783|4294967309|45.42|44.83|false|jessica underhill|2013-03-01 09:11:58.703206|46.34|undecided +5|329|65789|4294967502|56.10|47.22|true|alice robinson|2013-03-01 09:11:58.703264|52.49|quiet hour +34|450|65607|4294967328|18.20|18.79|true|victor johnson|2013-03-01 09:11:58.703233|71.75|topology +58|359|65675|4294967486|3.61|19.20|true|katie ellison|2013-03-01 09:11:58.703243|35.78|values clariffication +-2|288|65658|4294967383|53.78|19.92|false|holly nixon|2013-03-01 09:11:58.703224|42.93|industrial engineering +0|392|65634|4294967299|65.70|48.98|true|luke robinson|2013-03-01 09:11:58.703263|14.40|geology +3|277|65788|4294967403|58.08|20.55|false|xavier ovid|2013-03-01 09:11:58.703281|62.11|zync studies +29|331|65539|4294967420|73.18|28.96|true|ethan brown|2013-03-01 09:11:58.703094|58.85|zync studies +57|420|65771|4294967508|34.21|16.12|false|calvin van buren|2013-03-01 09:11:58.703243|6.15|joggying +41|266|65774|4294967365|41.68|36.86|false|victor van buren|2013-03-01 09:11:58.703163|45.97|industrial engineering +116|487|65659|4294967309|77.66|35.15|true|sarah johnson|2013-03-01 09:11:58.703294|95.71|opthamology +54|481|65755|4294967429|28.50|37.76|false|victor xylophone|2013-03-01 09:11:58.703318|64.00|xylophone band +60|301|65746|4294967381|4.41|12.30|true|wendy garcia|2013-03-01 09:11:58.703183|36.74|education +104|266|65704|4294967413|59.16|34.84|true|jessica ichabod|2013-03-01 09:11:58.703172|93.21|forestry +105|345|65582|4294967478|12.42|15.27|false|wendy miller|2013-03-01 09:11:58.703287|0.89|philosophy +97|503|65690|4294967463|77.57|27.54|true|priscilla brown|2013-03-01 09:11:58.703110|51.82|study skills +18|286|65621|4294967494|64.77|37.32|true|mike ichabod|2013-03-01 09:11:58.703285|95.14|forestry +1|446|65683|4294967500|85.49|33.18|true|oscar hernandez|2013-03-01 09:11:58.703283|17.62|undecided +12|298|65653|4294967501|42.56|4.25|true|irene nixon|2013-03-01 09:11:58.703265|52.23|nap time +5|475|65644|4294967470|70.06|18.29|true|gabriella van buren|2013-03-01 09:11:58.703088|1.97|american history +54|321|65724|4294967486|47.69|49.73|true|david ellison|2013-03-01 09:11:58.703235|50.96|religion +88|331|65682|4294967412|73.32|17.76|true|gabriella thompson|2013-03-01 09:11:58.703283|67.17|values clariffication +56|310|65556|4294967518|38.85|34.53|false|irene allen|2013-03-01 09:11:58.703217|50.42|education +71|306|65664|4294967541|34.97|44.40|false|victor van buren|2013-03-01 09:11:58.703185|38.42|religion +114|402|65622|4294967542|59.87|24.61|true|ethan polk|2013-03-01 09:11:58.703265|93.70|yard duty +43|440|65693|4294967409|38.05|7.71|true|luke ovid|2013-03-01 09:11:58.703133|69.32|xylophone band +26|296|65677|4294967419|66.89|49.04|true|sarah robinson|2013-03-01 09:11:58.703277|5.06|wind surfing +68|472|65628|4294967512|8.67|19.47|false|tom ovid|2013-03-01 09:11:58.703116|74.31|linguistics +53|373|65691|4294967371|79.75|32.39|false|irene ovid|2013-03-01 09:11:58.703124|69.80|nap time +18|509|65638|4294967455|62.92|14.62|false|victor laertes|2013-03-01 09:11:58.703075|42.47|values clariffication +53|482|65736|4294967394|74.59|36.84|true|mike young|2013-03-01 09:11:58.703301|48.54|joggying +103|494|65760|4294967301|59.21|8.72|false|ethan laertes|2013-03-01 09:11:58.703312|95.45|nap time +80|277|65671|4294967370|97.26|7.14|false|sarah ichabod|2013-03-01 09:11:58.703297|36.34|industrial engineering +28|380|65714|4294967514|0.28|48.71|false|ethan ellison|2013-03-01 09:11:58.703118|47.42|chemistry +1|414|65716|4294967551|12.19|36.57|true|nick polk|2013-03-01 09:11:58.703188|33.40|xylophone band +18|417|65766|4294967499|37.78|40.96|false|ethan nixon|2013-03-01 09:11:58.703157|66.34|american history +52|511|65658|4294967432|7.96|14.33|false|priscilla carson|2013-03-01 09:11:58.703188|46.61|geology +13|374|65553|4294967448|62.20|10.15|false|jessica carson|2013-03-01 09:11:58.703185|25.31|debate +19|462|65732|4294967478|59.70|24.13|false|calvin underhill|2013-03-01 09:11:58.703074|91.15|debate +87|325|65730|4294967516|13.15|4.44|false|wendy ichabod|2013-03-01 09:11:58.703242|67.81|joggying +99|303|65566|4294967353|98.57|40.50|true|ulysses ichabod|2013-03-01 09:11:58.703104|7.80|wind surfing +87|341|65733|4294967412|18.93|16.13|true|katie zipper|2013-03-01 09:11:58.703190|93.45|american history +83|311|65653|4294967419|61.21|13.04|false|xavier polk|2013-03-01 09:11:58.703310|55.12|study skills +65|458|65554|4294967329|69.96|33.38|false|calvin ovid|2013-03-01 09:11:58.703237|0.24|nap time +123|278|65573|4294967496|86.22|39.74|true|zach underhill|2013-03-01 09:11:58.703078|75.99|history +19|463|65767|4294967437|48.52|26.71|true|quinn underhill|2013-03-01 09:11:58.703177|95.57|forestry +108|466|65600|4294967458|90.73|8.95|false|xavier brown|2013-03-01 09:11:58.703235|75.18|biology +53|435|65687|4294967451|76.70|4.58|false|wendy xylophone|2013-03-01 09:11:58.703243|11.26|nap time +54|346|65751|4294967398|98.31|34.54|false|holly polk|2013-03-01 09:11:58.703195|78.75|history +88|334|65583|4294967468|5.88|45.10|false|irene johnson|2013-03-01 09:11:58.703166|28.07|kindergarten +52|365|65691|4294967551|99.15|21.81|false|tom robinson|2013-03-01 09:11:58.703135|76.98|values clariffication +28|259|65544|4294967398|54.31|25.80|false|yuri quirinius|2013-03-01 09:11:58.703168|32.03|values clariffication +26|347|65734|4294967499|5.24|30.92|true|irene ovid|2013-03-01 09:11:58.703192|80.48|debate +108|280|65765|4294967434|4.79|30.35|false|irene brown|2013-03-01 09:11:58.703229|88.52|american history +2|291|65789|4294967464|16.99|2.07|false|bob falkner|2013-03-01 09:11:58.703139|43.53|industrial engineering +43|476|65570|4294967398|1.12|10.52|true|yuri ellison|2013-03-01 09:11:58.703244|30.98|forestry +114|433|65572|4294967463|43.02|20.30|false|zach carson|2013-03-01 09:11:58.703316|30.86|opthamology +119|278|65773|4294967488|31.15|23.18|true|wendy xylophone|2013-03-01 09:11:58.703312|18.20|xylophone band +108|263|65787|4294967297|12.44|29.46|true|rachel quirinius|2013-03-01 09:11:58.703073|21.76|industrial engineering +37|434|65638|4294967335|55.18|45.54|false|gabriella white|2013-03-01 09:11:58.703196|19.13|zync studies +124|311|65670|4294967420|87.94|3.07|false|wendy king|2013-03-01 09:11:58.703308|61.54|values clariffication +104|331|65757|4294967330|30.71|47.91|false|katie ichabod|2013-03-01 09:11:58.703197|34.84|study skills +25|438|65782|4294967525|29.40|45.71|true|fred quirinius|2013-03-01 09:11:58.703283|81.90|nap time +71|347|65584|4294967549|99.65|21.14|false|jessica falkner|2013-03-01 09:11:58.703286|65.78|philosophy +51|345|65566|4294967519|70.38|31.33|true|wendy laertes|2013-03-01 09:11:58.703163|21.34|chemistry +2|333|65697|4294967456|39.90|16.15|false|yuri johnson|2013-03-01 09:11:58.703272|77.35|study skills +114|425|65772|4294967307|55.10|34.83|true|luke robinson|2013-03-01 09:11:58.703166|82.33|religion +109|344|65595|4294967409|42.24|5.35|false|irene polk|2013-03-01 09:11:58.703089|8.76|education +95|432|65711|4294967378|39.87|30.78|false|wendy allen|2013-03-01 09:11:58.703172|65.17|american history +121|342|65565|4294967528|52.85|20.30|true|yuri allen|2013-03-01 09:11:58.703298|8.80|undecided +22|361|65648|4294967546|91.88|17.19|false|mike white|2013-03-01 09:11:58.703167|17.66|quiet hour +81|283|65702|4294967424|24.52|6.81|false|zach king|2013-03-01 09:11:58.703136|68.04|religion +15|297|65728|4294967362|18.50|24.18|false|katie falkner|2013-03-01 09:11:58.703189|36.96|education +77|441|65727|4294967391|43.13|17.47|false|rachel young|2013-03-01 09:11:58.703313|49.19|education +24|266|65747|4294967351|32.75|36.09|true|ethan allen|2013-03-01 09:11:58.703273|52.77|zync studies +89|313|65550|4294967361|41.89|33.02|true|david thompson|2013-03-01 09:11:58.703121|96.90|biology +101|317|65756|4294967505|4.80|41.36|true|luke laertes|2013-03-01 09:11:58.703106|11.81|industrial engineering +37|472|65545|4294967351|83.54|16.90|true|mike young|2013-03-01 09:11:58.703196|34.65|nap time +50|402|65781|4294967410|65.38|28.10|false|gabriella laertes|2013-03-01 09:11:58.703126|70.59|philosophy +105|435|65637|4294967534|80.23|13.30|true|calvin carson|2013-03-01 09:11:58.703203|29.34|forestry +33|258|65762|4294967417|15.22|13.23|false|calvin steinbeck|2013-03-01 09:11:58.703322|87.50|nap time +118|486|65651|4294967472|32.23|46.39|false|fred steinbeck|2013-03-01 09:11:58.703142|24.25|mathematics +47|306|65636|4294967524|54.10|30.78|false|ulysses xylophone|2013-03-01 09:11:58.703309|86.29|mathematics +13|469|65661|4294967404|99.92|18.34|true|irene falkner|2013-03-01 09:11:58.703244|8.06|undecided +8|267|65703|4294967473|75.29|9.81|false|xavier white|2013-03-01 09:11:58.703233|40.81|nap time +18|263|65582|4294967500|78.64|36.05|false|gabriella steinbeck|2013-03-01 09:11:58.703208|1.23|industrial engineering +122|354|65709|4294967334|74.45|44.04|false|rachel allen|2013-03-01 09:11:58.703075|5.64|yard duty +43|340|65669|4294967500|23.19|20.58|true|katie nixon|2013-03-01 09:11:58.703080|1.76|biology +87|361|65662|4294967331|97.56|44.66|false|david underhill|2013-03-01 09:11:58.703303|88.64|opthamology +36|429|65723|4294967296|67.45|19.63|false|nick quirinius|2013-03-01 09:11:58.703297|39.90|biology +83|353|65538|4294967339|0.08|23.91|true|holly thompson|2013-03-01 09:11:58.703157|30.27|quiet hour +60|421|65774|4294967400|5.62|2.43|true|quinn thompson|2013-03-01 09:11:58.703128|45.74|study skills +42|323|65629|4294967324|8.45|30.67|true|luke ichabod|2013-03-01 09:11:58.703241|19.33|undecided +103|310|65603|4294967475|44.10|16.79|false|wendy ellison|2013-03-01 09:11:58.703154|34.79|mathematics +90|414|65702|4294967337|66.36|49.79|false|gabriella ichabod|2013-03-01 09:11:58.703171|37.60|biology +28|443|65635|4294967426|97.68|31.45|false|wendy falkner|2013-03-01 09:11:58.703186|64.99|yard duty +53|467|65718|4294967355|11.15|34.81|false|luke johnson|2013-03-01 09:11:58.703252|84.35|forestry +120|294|65590|4294967443|90.07|21.77|false|jessica nixon|2013-03-01 09:11:58.703086|13.51|education +44|260|65727|4294967453|60.53|19.03|true|oscar thompson|2013-03-01 09:11:58.703150|88.11|xylophone band +28|418|65756|4294967451|27.12|34.49|false|oscar laertes|2013-03-01 09:11:58.703206|63.51|biology +5|450|65594|4294967449|96.62|41.56|true|jessica white|2013-03-01 09:11:58.703323|65.61|biology +60|400|65698|4294967299|41.34|36.56|false|oscar thompson|2013-03-01 09:11:58.703073|79.91|xylophone band +0|314|65654|4294967473|12.85|35.01|false|xavier ellison|2013-03-01 09:11:58.703189|37.74|topology +31|426|65789|4294967526|58.13|15.09|false|tom zipper|2013-03-01 09:11:58.703258|89.00|american history +95|300|65568|4294967520|39.82|47.72|true|oscar zipper|2013-03-01 09:11:58.703285|58.66|quiet hour +122|384|65578|4294967358|8.45|49.21|true|quinn steinbeck|2013-03-01 09:11:58.703148|58.78|education +86|330|65676|4294967480|88.47|17.33|false|nick falkner|2013-03-01 09:11:58.703202|58.12|linguistics +71|276|65584|4294967431|8.07|20.91|true|bob brown|2013-03-01 09:11:58.703265|6.88|joggying +54|463|65701|4294967313|43.31|23.45|false|tom laertes|2013-03-01 09:11:58.703092|36.84|geology +112|372|65722|4294967529|41.44|20.22|false|irene ichabod|2013-03-01 09:11:58.703111|38.82|linguistics +65|323|65739|4294967424|4.47|25.51|false|alice johnson|2013-03-01 09:11:58.703294|92.40|forestry +39|368|65590|4294967420|27.72|30.55|false|katie brown|2013-03-01 09:11:58.703182|42.53|zync studies +25|284|65753|4294967543|15.26|36.93|false|gabriella brown|2013-03-01 09:11:58.703107|86.97|wind surfing +55|325|65594|4294967337|7.98|2.82|true|bob polk|2013-03-01 09:11:58.703283|35.28|zync studies +63|458|65537|4294967463|21.94|49.71|true|fred van buren|2013-03-01 09:11:58.703278|99.34|wind surfing +61|300|65588|4294967412|75.73|41.75|true|zach brown|2013-03-01 09:11:58.703310|75.87|religion +47|328|65784|4294967411|94.08|2.79|false|nick johnson|2013-03-01 09:11:58.703214|31.35|linguistics +4|509|65776|4294967432|78.26|35.02|false|mike king|2013-03-01 09:11:58.703231|18.70|undecided +86|425|65626|4294967374|87.40|34.90|true|oscar underhill|2013-03-01 09:11:58.703276|63.54|education +123|499|65623|4294967521|43.37|4.98|true|jessica young|2013-03-01 09:11:58.703227|97.20|mathematics +16|380|65755|4294967349|56.68|26.55|false|priscilla carson|2013-03-01 09:11:58.703217|76.75|undecided +86|391|65620|4294967337|34.73|4.16|false|katie white|2013-03-01 09:11:58.703109|81.28|history +46|463|65622|4294967479|23.44|16.92|true|ethan polk|2013-03-01 09:11:58.703273|74.31|chemistry +79|486|65694|4294967305|10.25|9.64|false|david young|2013-03-01 09:11:58.703266|58.23|topology +57|456|65606|4294967422|72.56|30.28|true|victor johnson|2013-03-01 09:11:58.703222|55.31|kindergarten +92|306|65657|4294967337|50.26|46.88|false|wendy brown|2013-03-01 09:11:58.703124|37.39|history +36|350|65717|4294967481|92.98|11.91|true|gabriella hernandez|2013-03-01 09:11:58.703182|1.23|yard duty +60|459|65655|4294967535|36.95|41.86|true|holly johnson|2013-03-01 09:11:58.703301|77.41|linguistics +26|393|65561|4294967304|90.69|6.61|true|calvin white|2013-03-01 09:11:58.703266|47.71|geology +106|370|65625|4294967333|3.00|10.38|true|victor polk|2013-03-01 09:11:58.703112|79.65|undecided +62|427|65787|4294967323|86.93|12.64|false|irene garcia|2013-03-01 09:11:58.703215|18.78|religion +48|438|65575|4294967376|25.42|46.03|false|calvin xylophone|2013-03-01 09:11:58.703158|83.40|topology +101|327|65706|4294967340|71.54|11.48|false|gabriella ellison|2013-03-01 09:11:58.703321|3.91|nap time +9|350|65704|4294967355|21.23|12.66|true|tom miller|2013-03-01 09:11:58.703210|37.12|industrial engineering +83|336|65672|4294967347|9.71|8.05|false|priscilla quirinius|2013-03-01 09:11:58.703174|58.10|debate +108|476|65587|4294967306|2.96|34.11|false|rachel brown|2013-03-01 09:11:58.703130|5.83|quiet hour +54|341|65756|4294967522|1.08|17.63|true|david davidson|2013-03-01 09:11:58.703317|1.45|religion +48|459|65777|4294967312|76.72|2.75|false|wendy garcia|2013-03-01 09:11:58.703144|7.04|kindergarten +-3|438|65618|4294967398|62.39|4.62|false|victor xylophone|2013-03-01 09:11:58.703135|88.38|values clariffication +105|376|65602|4294967472|10.67|49.84|true|bob laertes|2013-03-01 09:11:58.703142|47.16|education +15|433|65691|4294967353|49.12|14.17|false|zach brown|2013-03-01 09:11:58.703155|6.93|kindergarten +117|276|65581|4294967457|69.80|33.64|true|gabriella van buren|2013-03-01 09:11:58.703290|56.59|industrial engineering +112|444|65721|4294967401|47.88|40.91|true|victor king|2013-03-01 09:11:58.703253|55.75|industrial engineering +71|260|65589|4294967329|2.35|6.98|true|ethan polk|2013-03-01 09:11:58.703268|94.73|geology +7|486|65773|4294967390|58.86|49.46|false|irene quirinius|2013-03-01 09:11:58.703273|30.49|quiet hour +14|474|65558|4294967538|74.62|23.78|true|quinn king|2013-03-01 09:11:58.703107|16.26|linguistics +7|343|65559|4294967371|48.01|48.80|true|zach brown|2013-03-01 09:11:58.703245|32.30|study skills +-2|304|65629|4294967386|84.38|33.49|false|zach garcia|2013-03-01 09:11:58.703264|56.99|chemistry +72|503|65727|4294967376|79.99|27.39|false|wendy laertes|2013-03-01 09:11:58.703274|88.83|zync studies +32|348|65747|4294967514|37.85|45.09|true|sarah white|2013-03-01 09:11:58.703309|11.16|mathematics +103|343|65773|4294967485|46.80|27.89|false|fred young|2013-03-01 09:11:58.703230|53.09|undecided +24|329|65561|4294967526|52.87|15.98|false|fred van buren|2013-03-01 09:11:58.703178|32.86|kindergarten +27|405|65536|4294967508|82.24|29.41|true|oscar ovid|2013-03-01 09:11:58.703166|16.85|biology +3|308|65757|4294967430|49.28|38.04|false|nick zipper|2013-03-01 09:11:58.703132|1.86|kindergarten +72|430|65763|4294967324|99.91|11.46|false|david hernandez|2013-03-01 09:11:58.703294|43.80|biology +107|271|65601|4294967456|8.57|1.30|false|xavier king|2013-03-01 09:11:58.703315|48.16|values clariffication +85|283|65746|4294967384|11.68|47.37|false|katie polk|2013-03-01 09:11:58.703311|93.21|xylophone band +49|388|65574|4294967407|27.63|17.03|false|bob xylophone|2013-03-01 09:11:58.703307|31.28|joggying +1|472|65775|4294967340|74.52|15.51|false|victor hernandez|2013-03-01 09:11:58.703077|66.68|values clariffication +89|278|65570|4294967466|55.63|24.53|true|ethan underhill|2013-03-01 09:11:58.703218|18.20|values clariffication +28|294|65756|4294967487|76.74|24.59|true|tom ellison|2013-03-01 09:11:58.703147|70.00|debate +74|504|65766|4294967520|89.93|41.54|false|alice zipper|2013-03-01 09:11:58.703134|98.90|history +42|342|65628|4294967436|9.48|24.35|false|victor davidson|2013-03-01 09:11:58.703236|37.80|religion +82|324|65789|4294967492|14.92|45.29|false|tom johnson|2013-03-01 09:11:58.703179|20.44|study skills +24|434|65788|4294967389|76.05|15.09|false|ulysses thompson|2013-03-01 09:11:58.703117|21.81|topology +33|285|65689|4294967355|97.83|41.08|true|nick steinbeck|2013-03-01 09:11:58.703178|9.12|biology +51|334|65670|4294967369|70.24|29.11|false|priscilla brown|2013-03-01 09:11:58.703269|92.97|geology +90|509|65602|4294967415|7.96|36.62|false|holly white|2013-03-01 09:11:58.703195|86.23|values clariffication +83|279|65754|4294967435|5.40|33.52|false|bob garcia|2013-03-01 09:11:58.703311|54.35|forestry +124|495|65549|4294967471|99.21|44.80|true|jessica davidson|2013-03-01 09:11:58.703130|64.91|history +120|445|65670|4294967344|98.23|47.82|false|tom ellison|2013-03-01 09:11:58.703085|5.37|education +14|273|65779|4294967474|92.05|33.36|false|calvin steinbeck|2013-03-01 09:11:58.703287|45.61|linguistics +15|351|65601|4294967459|5.67|30.66|true|victor white|2013-03-01 09:11:58.703162|37.93|kindergarten +63|422|65690|4294967550|8.42|28.42|true|oscar laertes|2013-03-01 09:11:58.703144|3.43|values clariffication +2|477|65571|4294967463|79.21|18.20|true|mike garcia|2013-03-01 09:11:58.703195|82.50|mathematics +46|386|65790|4294967507|52.73|9.27|true|priscilla ovid|2013-03-01 09:11:58.703274|84.10|undecided +28|427|65559|4294967370|39.03|42.02|true|alice carson|2013-03-01 09:11:58.703226|56.06|chemistry +101|282|65738|4294967432|93.61|4.53|true|calvin falkner|2013-03-01 09:11:58.703198|95.10|xylophone band +46|410|65721|4294967362|80.30|17.03|false|bob ellison|2013-03-01 09:11:58.703319|95.12|values clariffication +103|430|65642|4294967347|84.23|14.83|true|mike king|2013-03-01 09:11:58.703255|95.61|opthamology +51|459|65641|4294967380|5.45|19.47|true|ulysses underhill|2013-03-01 09:11:58.703289|84.27|geology +70|342|65569|4294967492|64.30|43.95|true|luke ovid|2013-03-01 09:11:58.703281|52.50|values clariffication +48|329|65788|4294967378|30.25|22.19|true|holly hernandez|2013-03-01 09:11:58.703157|16.10|quiet hour +29|374|65696|4294967481|13.87|19.93|false|xavier polk|2013-03-01 09:11:58.703258|40.30|geology +30|294|65779|4294967482|36.58|18.35|false|jessica white|2013-03-01 09:11:58.703085|39.48|kindergarten +74|289|65733|4294967495|77.84|28.96|false|jessica miller|2013-03-01 09:11:58.703177|20.72|linguistics +114|499|65724|4294967334|42.51|46.09|true|nick brown|2013-03-01 09:11:58.703176|71.66|nap time +53|371|65603|4294967303|51.29|18.41|true|nick van buren|2013-03-01 09:11:58.703186|41.44|history +121|401|65779|4294967375|29.24|25.08|true|david quirinius|2013-03-01 09:11:58.703295|65.24|religion +72|408|65581|4294967453|7.82|1.50|false|mike young|2013-03-01 09:11:58.703242|45.48|geology +116|482|65550|4294967489|5.85|31.75|true|mike steinbeck|2013-03-01 09:11:58.703150|33.01|religion +94|335|65603|4294967357|68.25|13.72|true|tom miller|2013-03-01 09:11:58.703192|80.24|undecided +4|460|65625|4294967360|5.51|22.60|true|oscar laertes|2013-03-01 09:11:58.703293|42.86|nap time +110|306|65571|4294967419|43.01|31.74|true|gabriella garcia|2013-03-01 09:11:58.703280|40.68|chemistry +0|330|65673|4294967343|91.97|15.22|false|victor brown|2013-03-01 09:11:58.703097|0.90|xylophone band +31|459|65595|4294967413|40.00|17.51|false|alice nixon|2013-03-01 09:11:58.703159|72.70|topology +45|423|65673|4294967447|11.55|3.83|true|jessica white|2013-03-01 09:11:58.703140|43.81|chemistry +55|427|65722|4294967331|10.09|45.28|true|ethan brown|2013-03-01 09:11:58.703084|1.76|joggying +9|321|65658|4294967501|54.83|20.55|false|mike davidson|2013-03-01 09:11:58.703179|60.94|debate +88|277|65585|4294967398|3.97|5.58|true|nick johnson|2013-03-01 09:11:58.703111|37.34|chemistry +110|279|65604|4294967344|92.33|5.31|true|quinn garcia|2013-03-01 09:11:58.703102|63.65|linguistics +9|456|65541|4294967531|38.57|9.56|true|xavier hernandez|2013-03-01 09:11:58.703174|36.33|linguistics +73|340|65584|4294967330|21.28|15.97|false|zach miller|2013-03-01 09:11:58.703265|12.38|philosophy +76|368|65608|4294967506|16.69|37.94|true|luke laertes|2013-03-01 09:11:58.703075|87.90|history +113|445|65658|4294967530|4.32|46.28|true|priscilla young|2013-03-01 09:11:58.703192|2.63|quiet hour +61|491|65711|4294967382|11.19|42.37|false|jessica young|2013-03-01 09:11:58.703261|8.66|wind surfing +70|361|65746|4294967332|97.57|22.61|false|katie young|2013-03-01 09:11:58.703182|98.10|undecided +38|336|65556|4294967482|14.84|12.30|true|gabriella ovid|2013-03-01 09:11:58.703086|9.96|xylophone band +100|413|65547|4294967303|53.18|20.42|true|luke allen|2013-03-01 09:11:58.703319|83.21|debate +117|474|65729|4294967333|68.22|18.36|false|priscilla underhill|2013-03-01 09:11:58.703249|19.42|education +118|467|65632|4294967296|41.36|29.36|false|tom hernandez|2013-03-01 09:11:58.703216|88.51|philosophy +50|367|65663|4294967405|11.18|33.00|true|jessica ellison|2013-03-01 09:11:58.703255|5.42|opthamology +19|276|65727|4294967539|68.81|0.37|false|holly van buren|2013-03-01 09:11:58.703084|19.81|biology +48|328|65594|4294967366|59.07|11.35|true|tom miller|2013-03-01 09:11:58.703162|67.22|nap time +5|435|65731|4294967493|73.88|30.12|false|sarah johnson|2013-03-01 09:11:58.703198|97.18|nap time +38|384|65667|4294967539|81.32|39.41|false|sarah ichabod|2013-03-01 09:11:58.703184|13.96|industrial engineering +9|316|65786|4294967546|54.47|27.40|false|ulysses hernandez|2013-03-01 09:11:58.703206|80.94|xylophone band +84|496|65604|4294967329|59.45|23.18|true|rachel king|2013-03-01 09:11:58.703077|63.36|quiet hour +34|264|65564|4294967437|31.77|12.14|false|calvin davidson|2013-03-01 09:11:58.703180|30.78|study skills +79|377|65570|4294967410|22.12|0.98|true|victor miller|2013-03-01 09:11:58.703088|45.23|joggying +7|342|65786|4294967449|72.53|21.30|false|ulysses quirinius|2013-03-01 09:11:58.703157|8.99|linguistics +85|349|65573|4294967308|97.46|12.13|false|mike steinbeck|2013-03-01 09:11:58.703179|96.32|undecided +27|287|65708|4294967542|83.33|36.73|false|quinn allen|2013-03-01 09:11:58.703157|1.29|mathematics +78|421|65633|4294967410|87.67|47.98|false|irene brown|2013-03-01 09:11:58.703207|81.02|zync studies +75|499|65696|4294967405|53.59|7.71|false|zach thompson|2013-03-01 09:11:58.703234|87.89|kindergarten +107|421|65595|4294967543|57.11|46.59|true|ethan xylophone|2013-03-01 09:11:58.703085|67.56|linguistics +124|310|65548|4294967319|58.66|15.94|false|victor thompson|2013-03-01 09:11:58.703168|52.94|forestry +5|501|65585|4294967363|33.58|19.98|true|alice xylophone|2013-03-01 09:11:58.703242|31.23|geology +65|476|65542|4294967547|41.29|23.25|true|quinn laertes|2013-03-01 09:11:58.703240|73.93|forestry +70|443|65700|4294967448|52.44|21.86|true|quinn brown|2013-03-01 09:11:58.703257|44.88|xylophone band +28|378|65678|4294967355|68.32|1.45|false|sarah xylophone|2013-03-01 09:11:58.703155|81.87|values clariffication +3|322|65672|4294967508|25.55|26.28|true|jessica carson|2013-03-01 09:11:58.703120|52.60|education +82|257|65654|4294967497|9.80|20.44|true|priscilla thompson|2013-03-01 09:11:58.703308|29.85|geology +115|276|65632|4294967457|90.69|40.89|true|tom robinson|2013-03-01 09:11:58.703157|5.09|study skills +33|459|65783|4294967300|10.29|14.51|true|fred falkner|2013-03-01 09:11:58.703270|51.08|philosophy +102|359|65560|4294967482|93.03|25.17|false|fred nixon|2013-03-01 09:11:58.703120|64.38|education +40|500|65664|4294967428|16.25|7.80|true|luke ellison|2013-03-01 09:11:58.703248|27.60|topology +32|467|65547|4294967502|67.94|21.95|true|ethan robinson|2013-03-01 09:11:58.703188|62.31|values clariffication +44|475|65776|4294967510|89.55|7.92|true|luke allen|2013-03-01 09:11:58.703105|28.47|study skills +60|381|65627|4294967365|33.85|41.36|true|quinn robinson|2013-03-01 09:11:58.703258|19.65|linguistics +103|430|65591|4294967344|75.03|22.27|false|bob ellison|2013-03-01 09:11:58.703277|9.85|values clariffication +35|423|65667|4294967507|65.43|8.76|true|zach allen|2013-03-01 09:11:58.703172|3.44|wind surfing +90|406|65763|4294967450|0.15|13.95|true|priscilla xylophone|2013-03-01 09:11:58.703245|0.72|nap time +25|403|65782|4294967516|0.61|3.40|false|wendy allen|2013-03-01 09:11:58.703152|16.51|quiet hour +104|415|65758|4294967454|66.17|44.12|false|tom robinson|2013-03-01 09:11:58.703161|25.62|kindergarten +81|272|65548|4294967413|40.04|21.30|false|tom white|2013-03-01 09:11:58.703231|77.24|study skills +37|503|65562|4294967358|44.22|44.32|false|rachel laertes|2013-03-01 09:11:58.703126|40.62|linguistics +40|432|65691|4294967547|24.86|45.46|false|ulysses laertes|2013-03-01 09:11:58.703171|58.01|topology +42|345|65676|4294967447|14.92|26.67|false|yuri thompson|2013-03-01 09:11:58.703250|80.13|history +44|465|65744|4294967391|27.30|47.71|false|xavier johnson|2013-03-01 09:11:58.703295|8.58|philosophy +14|413|65623|4294967434|87.61|20.93|false|gabriella falkner|2013-03-01 09:11:58.703318|30.83|religion +48|498|65774|4294967431|59.71|30.22|true|gabriella young|2013-03-01 09:11:58.703098|94.77|zync studies +105|326|65673|4294967440|4.59|25.92|true|victor robinson|2013-03-01 09:11:58.703290|64.23|forestry +61|407|65750|4294967412|0.10|40.59|true|zach ovid|2013-03-01 09:11:58.703137|34.29|joggying +69|473|65599|4294967325|76.72|28.69|true|zach robinson|2013-03-01 09:11:58.703305|71.51|religion +26|283|65564|4294967400|46.86|12.35|true|bob ovid|2013-03-01 09:11:58.703322|9.47|forestry +50|316|65654|4294967488|9.81|27.36|true|calvin nixon|2013-03-01 09:11:58.703133|53.55|topology +112|316|65719|4294967473|51.79|43.04|false|luke brown|2013-03-01 09:11:58.703116|82.10|history +32|264|65606|4294967487|66.17|43.92|true|holly young|2013-03-01 09:11:58.703239|24.80|zync studies +31|493|65562|4294967428|38.94|24.25|true|alice van buren|2013-03-01 09:11:58.703143|26.86|geology +32|490|65658|4294967541|62.23|30.16|false|rachel johnson|2013-03-01 09:11:58.703155|92.67|wind surfing +113|302|65721|4294967526|96.68|32.74|true|holly underhill|2013-03-01 09:11:58.703306|39.19|values clariffication +44|357|65542|4294967373|31.91|4.81|true|oscar thompson|2013-03-01 09:11:58.703182|73.72|debate +0|268|65740|4294967449|32.89|28.52|false|oscar zipper|2013-03-01 09:11:58.703113|58.65|industrial engineering +121|355|65537|4294967437|85.90|10.99|true|calvin brown|2013-03-01 09:11:58.703254|4.49|yard duty +45|459|65565|4294967507|6.55|34.52|true|gabriella davidson|2013-03-01 09:11:58.703117|81.72|kindergarten +1|428|65564|4294967532|69.32|2.43|false|holly robinson|2013-03-01 09:11:58.703324|98.36|yard duty +31|351|65669|4294967441|95.38|43.95|true|calvin zipper|2013-03-01 09:11:58.703308|16.95|xylophone band +121|330|65755|4294967380|64.36|2.53|false|holly johnson|2013-03-01 09:11:58.703210|90.08|joggying +53|464|65720|4294967413|26.39|14.52|true|nick garcia|2013-03-01 09:11:58.703315|62.04|opthamology +106|318|65789|4294967381|1.02|33.60|false|fred van buren|2013-03-01 09:11:58.703156|96.90|joggying +31|281|65681|4294967368|86.00|14.29|false|yuri falkner|2013-03-01 09:11:58.703310|55.44|xylophone band +71|356|65715|4294967364|26.47|34.14|true|wendy robinson|2013-03-01 09:11:58.703178|9.18|zync studies +97|283|65589|4294967434|37.80|31.64|true|fred white|2013-03-01 09:11:58.703188|74.83|mathematics +43|418|65646|4294967385|43.92|19.31|true|priscilla king|2013-03-01 09:11:58.703244|4.47|zync studies +46|485|65739|4294967519|9.19|1.79|true|calvin zipper|2013-03-01 09:11:58.703089|22.23|nap time +45|394|65586|4294967391|63.33|44.63|true|wendy king|2013-03-01 09:11:58.703124|56.73|education +51|362|65677|4294967445|63.42|34.20|true|ethan white|2013-03-01 09:11:58.703092|48.79|chemistry +91|384|65644|4294967533|10.09|4.95|true|victor xylophone|2013-03-01 09:11:58.703320|87.31|opthamology +77|485|65651|4294967326|50.70|49.72|false|victor quirinius|2013-03-01 09:11:58.703256|33.24|opthamology +80|333|65614|4294967331|13.10|39.55|true|oscar brown|2013-03-01 09:11:58.703154|75.45|industrial engineering +31|474|65682|4294967551|30.63|2.53|false|yuri allen|2013-03-01 09:11:58.703212|35.36|forestry +71|391|65749|4294967412|41.20|20.94|true|calvin nixon|2013-03-01 09:11:58.703311|15.14|wind surfing +0|372|65720|4294967416|79.48|20.76|true|oscar quirinius|2013-03-01 09:11:58.703254|0.32|education +41|453|65677|4294967371|76.10|28.02|false|victor xylophone|2013-03-01 09:11:58.703179|69.86|religion +111|317|65703|4294967297|38.05|0.48|true|fred nixon|2013-03-01 09:11:58.703256|90.89|values clariffication +18|468|65551|4294967546|0.98|45.14|false|irene polk|2013-03-01 09:11:58.703186|39.43|wind surfing +0|486|65706|4294967466|20.82|30.55|false|mike allen|2013-03-01 09:11:58.703246|72.87|mathematics +92|329|65610|4294967521|47.08|36.57|false|irene polk|2013-03-01 09:11:58.703231|11.99|debate +35|409|65777|4294967422|93.09|11.50|false|bob brown|2013-03-01 09:11:58.703269|73.79|religion +80|455|65644|4294967460|75.35|20.56|false|nick xylophone|2013-03-01 09:11:58.703249|30.25|quiet hour +17|435|65684|4294967326|31.61|8.33|false|victor allen|2013-03-01 09:11:58.703264|77.18|mathematics +91|295|65587|4294967506|76.93|9.88|true|xavier polk|2013-03-01 09:11:58.703243|53.84|linguistics +92|363|65697|4294967310|13.89|47.40|true|katie robinson|2013-03-01 09:11:58.703237|3.18|xylophone band +17|351|65589|4294967439|54.99|44.75|false|irene van buren|2013-03-01 09:11:58.703196|49.49|american history +88|445|65778|4294967422|33.67|28.86|false|bob van buren|2013-03-01 09:11:58.703230|62.17|forestry +44|386|65692|4294967434|0.84|20.94|true|wendy polk|2013-03-01 09:11:58.703226|87.05|values clariffication +84|373|65585|4294967486|14.13|30.21|true|katie xylophone|2013-03-01 09:11:58.703084|50.38|forestry +83|395|65645|4294967509|99.62|9.50|true|irene ichabod|2013-03-01 09:11:58.703212|63.22|zync studies +28|428|65650|4294967320|85.76|22.68|false|wendy thompson|2013-03-01 09:11:58.703145|85.89|wind surfing +27|503|65628|4294967371|95.07|25.58|true|ethan laertes|2013-03-01 09:11:58.703310|14.83|topology +69|304|65695|4294967384|13.94|10.51|true|nick garcia|2013-03-01 09:11:58.703167|59.96|mathematics +15|264|65737|4294967412|9.04|32.04|false|alice ovid|2013-03-01 09:11:58.703279|20.85|kindergarten +118|399|65730|4294967309|0.52|33.72|false|luke laertes|2013-03-01 09:11:58.703098|1.35|quiet hour +84|437|65601|4294967357|49.44|8.79|false|nick davidson|2013-03-01 09:11:58.703161|26.54|undecided +1|313|65543|4294967362|45.35|47.49|true|bob white|2013-03-01 09:11:58.703144|21.59|linguistics +40|442|65659|4294967379|50.08|31.50|false|irene ellison|2013-03-01 09:11:58.703306|53.80|philosophy +60|308|65564|4294967405|36.79|6.46|true|quinn ichabod|2013-03-01 09:11:58.703298|26.06|geology +118|282|65644|4294967407|67.59|32.89|true|victor laertes|2013-03-01 09:11:58.703177|89.95|study skills +77|320|65585|4294967344|45.59|39.11|true|bob garcia|2013-03-01 09:11:58.703301|39.32|american history +17|407|65716|4294967460|14.44|16.87|false|luke johnson|2013-03-01 09:11:58.703200|71.53|linguistics +84|492|65737|4294967467|23.45|46.69|false|nick ichabod|2013-03-01 09:11:58.703127|3.98|values clariffication +97|266|65544|4294967373|32.20|9.87|true|zach garcia|2013-03-01 09:11:58.703289|1.67|quiet hour +21|348|65765|4294967366|56.62|2.75|false|nick zipper|2013-03-01 09:11:58.703269|69.76|zync studies +88|404|65548|4294967382|6.87|15.00|false|oscar carson|2013-03-01 09:11:58.703318|57.61|wind surfing +119|427|65553|4294967319|95.53|12.82|true|luke underhill|2013-03-01 09:11:58.703130|93.95|wind surfing +16|405|65591|4294967351|97.24|33.01|false|ethan quirinius|2013-03-01 09:11:58.703156|60.78|xylophone band +65|460|65570|4294967399|74.30|19.59|false|jessica white|2013-03-01 09:11:58.703111|25.57|study skills +11|300|65583|4294967382|88.22|30.13|false|tom falkner|2013-03-01 09:11:58.703275|93.49|joggying +106|446|65613|4294967369|48.45|7.18|true|alice garcia|2013-03-01 09:11:58.703193|43.72|chemistry +114|410|65578|4294967363|94.34|15.10|true|zach ovid|2013-03-01 09:11:58.703299|55.97|history +-1|372|65680|4294967490|15.45|18.09|false|ethan laertes|2013-03-01 09:11:58.703110|65.88|opthamology +113|361|65660|4294967516|23.17|38.39|true|alice king|2013-03-01 09:11:58.703246|62.82|geology +98|381|65563|4294967458|41.29|48.85|false|sarah garcia|2013-03-01 09:11:58.703243|33.29|mathematics +108|385|65730|4294967387|65.44|43.34|false|irene miller|2013-03-01 09:11:58.703157|81.44|philosophy +10|441|65723|4294967528|96.23|34.98|false|xavier brown|2013-03-01 09:11:58.703281|19.95|nap time +84|403|65656|4294967550|7.05|33.66|true|luke davidson|2013-03-01 09:11:58.703300|14.00|kindergarten +84|447|65755|4294967387|4.92|22.75|false|rachel davidson|2013-03-01 09:11:58.703178|96.80|biology +25|309|65568|4294967354|58.75|23.31|true|katie zipper|2013-03-01 09:11:58.703156|21.79|quiet hour +17|388|65784|4294967542|40.24|3.98|true|katie polk|2013-03-01 09:11:58.703163|15.70|kindergarten +5|486|65602|4294967358|71.55|3.40|true|ulysses carson|2013-03-01 09:11:58.703266|83.67|mathematics +59|494|65786|4294967483|35.80|11.44|true|zach garcia|2013-03-01 09:11:58.703125|56.82|yard duty +80|509|65553|4294967544|50.28|47.00|false|calvin white|2013-03-01 09:11:58.703071|71.07|debate +109|376|65538|4294967453|59.61|35.62|true|priscilla xylophone|2013-03-01 09:11:58.703286|9.53|study skills +40|496|65640|4294967513|93.73|25.71|true|calvin thompson|2013-03-01 09:11:58.703124|8.93|mathematics +65|508|65732|4294967409|81.47|29.25|false|ethan ellison|2013-03-01 09:11:58.703154|30.06|religion +50|478|65599|4294967338|77.81|32.31|true|holly brown|2013-03-01 09:11:58.703128|76.29|kindergarten +26|451|65716|4294967312|77.42|13.60|true|ulysses carson|2013-03-01 09:11:58.703116|38.93|history +31|382|65737|4294967301|58.09|41.34|true|wendy thompson|2013-03-01 09:11:58.703231|80.97|biology +33|430|65694|4294967346|48.37|40.46|false|fred king|2013-03-01 09:11:58.703167|88.50|forestry +6|408|65658|4294967503|99.68|44.11|false|mike polk|2013-03-01 09:11:58.703313|20.69|industrial engineering +100|264|65637|4294967340|85.00|45.86|false|fred falkner|2013-03-01 09:11:58.703148|44.32|joggying +119|316|65646|4294967405|46.27|16.82|false|gabriella allen|2013-03-01 09:11:58.703224|17.92|wind surfing +105|478|65790|4294967302|88.05|5.82|true|gabriella polk|2013-03-01 09:11:58.703236|84.87|topology +124|384|65697|4294967426|15.30|19.15|true|fred quirinius|2013-03-01 09:11:58.703139|86.79|education +109|319|65734|4294967387|52.23|20.82|false|alice king|2013-03-01 09:11:58.703262|31.71|american history +93|356|65650|4294967428|53.94|27.46|true|irene brown|2013-03-01 09:11:58.703130|59.55|religion +51|444|65662|4294967539|42.48|14.39|false|alice zipper|2013-03-01 09:11:58.703202|76.51|geology +61|432|65778|4294967469|9.57|29.88|false|mike white|2013-03-01 09:11:58.703074|64.69|wind surfing +78|419|65633|4294967299|34.35|32.06|true|bob zipper|2013-03-01 09:11:58.703081|72.54|history +67|295|65654|4294967449|59.55|1.37|true|ulysses white|2013-03-01 09:11:58.703096|11.64|topology +70|312|65742|4294967540|54.43|19.85|false|tom polk|2013-03-01 09:11:58.703206|6.61|values clariffication +56|351|65732|4294967479|8.37|34.68|true|xavier white|2013-03-01 09:11:58.703103|95.68|quiet hour +42|495|65536|4294967431|43.57|46.81|false|tom johnson|2013-03-01 09:11:58.703245|62.25|american history +0|428|65590|4294967473|94.54|28.29|true|irene carson|2013-03-01 09:11:58.703089|92.71|education +91|262|65661|4294967391|73.65|13.30|false|sarah garcia|2013-03-01 09:11:58.703325|26.80|topology +73|337|65775|4294967406|57.12|24.35|true|oscar xylophone|2013-03-01 09:11:58.703091|66.56|topology +58|404|65693|4294967345|78.89|6.57|true|sarah carson|2013-03-01 09:11:58.703218|84.12|undecided +77|461|65581|4294967449|89.55|49.44|true|jessica thompson|2013-03-01 09:11:58.703216|60.88|quiet hour +89|492|65736|4294967336|14.93|26.74|false|ulysses young|2013-03-01 09:11:58.703089|69.96|undecided +116|444|65659|4294967329|59.62|37.37|true|victor hernandez|2013-03-01 09:11:58.703093|94.69|kindergarten +114|427|65712|4294967419|32.47|10.24|true|jessica quirinius|2013-03-01 09:11:58.703116|49.69|values clariffication +43|503|65650|4294967482|96.38|6.96|true|nick nixon|2013-03-01 09:11:58.703302|23.55|american history +116|351|65771|4294967470|48.59|24.17|false|fred ellison|2013-03-01 09:11:58.703282|7.50|values clariffication +-2|261|65603|4294967332|39.18|28.98|false|fred polk|2013-03-01 09:11:58.703310|69.26|opthamology +123|439|65781|4294967448|15.86|42.96|true|ulysses xylophone|2013-03-01 09:11:58.703272|12.45|geology +83|451|65583|4294967443|10.13|44.36|true|nick falkner|2013-03-01 09:11:58.703293|57.67|values clariffication +51|390|65709|4294967548|29.59|49.59|true|oscar steinbeck|2013-03-01 09:11:58.703243|49.79|education +107|313|65699|4294967493|9.25|41.34|false|gabriella young|2013-03-01 09:11:58.703213|38.71|mathematics +93|403|65782|4294967355|74.53|26.21|true|oscar robinson|2013-03-01 09:11:58.703239|76.14|topology +7|320|65624|4294967530|41.34|11.54|true|bob ellison|2013-03-01 09:11:58.703249|93.30|nap time +38|308|65559|4294967465|95.81|13.71|true|david davidson|2013-03-01 09:11:58.703114|73.94|forestry +112|295|65662|4294967517|65.62|34.97|true|holly johnson|2013-03-01 09:11:58.703274|59.92|zync studies +101|283|65538|4294967527|84.03|27.29|true|yuri brown|2013-03-01 09:11:58.703306|44.24|biology +20|509|65686|4294967330|12.46|40.63|false|victor steinbeck|2013-03-01 09:11:58.703323|38.27|linguistics +0|367|65685|4294967491|91.61|13.80|false|priscilla van buren|2013-03-01 09:11:58.703096|87.84|topology +18|371|65552|4294967424|37.24|3.71|false|fred davidson|2013-03-01 09:11:58.703308|48.96|undecided +92|344|65618|4294967390|46.09|28.69|true|victor steinbeck|2013-03-01 09:11:58.703193|81.99|biology +34|322|65659|4294967353|78.62|21.42|false|ethan robinson|2013-03-01 09:11:58.703153|46.57|religion +27|401|65779|4294967402|97.39|43.42|false|mike zipper|2013-03-01 09:11:58.703145|64.41|quiet hour +74|290|65630|4294967436|57.89|8.33|false|oscar ellison|2013-03-01 09:11:58.703296|99.05|biology +81|344|65677|4294967530|28.11|20.56|false|calvin brown|2013-03-01 09:11:58.703159|87.67|quiet hour +109|275|65651|4294967393|96.94|17.44|false|luke underhill|2013-03-01 09:11:58.703228|58.25|opthamology +97|290|65774|4294967311|71.07|11.44|false|wendy robinson|2013-03-01 09:11:58.703240|5.10|undecided +41|338|65618|4294967304|45.68|26.17|true|xavier allen|2013-03-01 09:11:58.703138|55.68|biology +88|496|65767|4294967448|14.30|41.69|true|wendy quirinius|2013-03-01 09:11:58.703106|94.32|kindergarten +51|495|65554|4294967347|94.27|26.65|true|irene robinson|2013-03-01 09:11:58.703179|63.61|quiet hour +97|491|65618|4294967423|32.25|2.13|false|luke falkner|2013-03-01 09:11:58.703166|16.60|study skills +9|311|65719|4294967442|2.60|26.73|true|zach miller|2013-03-01 09:11:58.703223|64.21|undecided +62|262|65668|4294967468|61.94|7.31|false|priscilla johnson|2013-03-01 09:11:58.703228|48.68|topology +63|341|65704|4294967546|7.79|2.63|false|xavier brown|2013-03-01 09:11:58.703261|69.36|debate +69|492|65751|4294967324|45.10|20.65|true|sarah johnson|2013-03-01 09:11:58.703095|9.77|chemistry +17|404|65712|4294967388|71.13|45.81|false|gabriella ichabod|2013-03-01 09:11:58.703164|30.27|undecided +72|310|65780|4294967507|80.99|24.03|true|tom davidson|2013-03-01 09:11:58.703212|38.58|forestry +18|397|65611|4294967439|98.22|15.32|true|xavier allen|2013-03-01 09:11:58.703089|69.46|undecided +50|307|65596|4294967300|80.60|30.89|true|calvin falkner|2013-03-01 09:11:58.703275|54.75|values clariffication +84|305|65637|4294967402|10.16|43.04|true|yuri laertes|2013-03-01 09:11:58.703283|58.05|linguistics +75|479|65749|4294967528|80.52|5.31|false|priscilla brown|2013-03-01 09:11:58.703148|65.49|undecided +97|323|65704|4294967477|60.12|42.22|true|mike nixon|2013-03-01 09:11:58.703249|48.48|wind surfing +14|437|65612|4294967539|64.25|4.82|false|zach ichabod|2013-03-01 09:11:58.703215|51.14|forestry +22|280|65774|4294967311|77.10|40.24|false|jessica nixon|2013-03-01 09:11:58.703238|56.84|xylophone band +118|497|65536|4294967381|50.32|12.72|false|david nixon|2013-03-01 09:11:58.703285|83.48|values clariffication +27|482|65624|4294967313|78.98|43.96|true|oscar carson|2013-03-01 09:11:58.703217|70.08|joggying +99|436|65746|4294967342|39.81|15.28|false|calvin young|2013-03-01 09:11:58.703145|97.52|quiet hour +50|409|65738|4294967535|28.56|0.74|true|mike ellison|2013-03-01 09:11:58.703282|30.94|values clariffication +66|267|65738|4294967371|70.89|11.40|true|oscar thompson|2013-03-01 09:11:58.703104|51.33|undecided +107|466|65691|4294967302|9.68|40.39|false|nick ellison|2013-03-01 09:11:58.703108|28.47|american history +55|335|65699|4294967487|5.28|16.66|true|david ichabod|2013-03-01 09:11:58.703161|68.94|nap time +-2|340|65627|4294967533|76.52|21.91|true|quinn laertes|2013-03-01 09:11:58.703178|93.29|xylophone band +68|448|65597|4294967422|70.39|40.01|true|ethan laertes|2013-03-01 09:11:58.703109|69.05|quiet hour +65|505|65679|4294967338|75.88|15.87|true|yuri steinbeck|2013-03-01 09:11:58.703085|65.46|yard duty +53|315|65607|4294967496|1.58|20.02|true|victor johnson|2013-03-01 09:11:58.703202|36.58|undecided +94|475|65606|4294967503|62.14|26.00|false|mike ellison|2013-03-01 09:11:58.703115|67.94|biology +-3|275|65622|4294967302|71.78|8.49|false|wendy robinson|2013-03-01 09:11:58.703294|95.39|undecided +-1|281|65643|4294967323|15.10|45.00|false|irene nixon|2013-03-01 09:11:58.703223|80.96|undecided +72|469|65765|4294967500|60.22|32.25|false|holly young|2013-03-01 09:11:58.703253|88.56|wind surfing +23|401|65693|4294967439|34.41|46.73|false|rachel brown|2013-03-01 09:11:58.703306|71.72|geology +36|377|65697|4294967444|98.51|49.05|false|oscar carson|2013-03-01 09:11:58.703081|67.90|joggying +18|264|65595|4294967512|18.86|42.56|false|fred davidson|2013-03-01 09:11:58.703137|89.60|history +82|257|65655|4294967320|40.42|41.02|true|luke quirinius|2013-03-01 09:11:58.703205|35.80|zync studies +120|497|65595|4294967442|45.56|21.53|true|sarah young|2013-03-01 09:11:58.703167|90.24|quiet hour +94|256|65747|4294967347|32.18|8.61|true|quinn quirinius|2013-03-01 09:11:58.703217|71.87|history +112|453|65586|4294967540|42.76|3.66|true|gabriella carson|2013-03-01 09:11:58.703291|1.15|wind surfing +73|394|65657|4294967486|11.82|39.80|false|luke laertes|2013-03-01 09:11:58.703160|11.93|nap time +-3|344|65733|4294967363|0.56|11.96|true|rachel thompson|2013-03-01 09:11:58.703276|88.46|wind surfing +0|356|65581|4294967326|40.44|33.18|false|calvin robinson|2013-03-01 09:11:58.703294|29.74|zync studies +101|487|65676|4294967367|85.87|13.14|true|zach zipper|2013-03-01 09:11:58.703077|27.58|zync studies +48|491|65669|4294967492|63.51|49.85|true|tom van buren|2013-03-01 09:11:58.703247|1.29|forestry +93|504|65557|4294967500|22.68|37.23|true|bob hernandez|2013-03-01 09:11:58.703207|21.14|zync studies +35|290|65726|4294967434|18.63|7.24|true|priscilla zipper|2013-03-01 09:11:58.703195|7.42|education +114|503|65677|4294967534|64.22|15.16|true|gabriella allen|2013-03-01 09:11:58.703324|44.47|wind surfing +-3|458|65696|4294967418|45.24|8.49|false|irene ellison|2013-03-01 09:11:58.703092|54.02|american history +103|411|65579|4294967521|22.25|18.31|true|quinn zipper|2013-03-01 09:11:58.703175|33.37|forestry +100|492|65778|4294967379|13.35|23.88|false|luke garcia|2013-03-01 09:11:58.703260|59.03|undecided +119|421|65580|4294967480|27.87|46.74|true|wendy brown|2013-03-01 09:11:58.703085|59.43|study skills +20|385|65562|4294967324|71.80|5.51|false|oscar ichabod|2013-03-01 09:11:58.703194|72.04|mathematics +81|331|65745|4294967531|80.71|42.55|true|ethan laertes|2013-03-01 09:11:58.703226|66.36|yard duty +78|509|65758|4294967531|21.45|23.59|false|alice allen|2013-03-01 09:11:58.703171|56.56|geology +17|496|65624|4294967389|96.25|1.62|true|nick laertes|2013-03-01 09:11:58.703113|65.31|mathematics +43|379|65616|4294967348|46.15|12.02|true|rachel falkner|2013-03-01 09:11:58.703120|75.20|geology +43|281|65676|4294967540|87.14|21.33|true|jessica garcia|2013-03-01 09:11:58.703173|8.77|debate +22|304|65607|4294967318|82.72|2.34|false|priscilla van buren|2013-03-01 09:11:58.703185|75.86|forestry +59|431|65537|4294967326|11.34|2.90|true|oscar robinson|2013-03-01 09:11:58.703161|81.04|zync studies +6|322|65715|4294967385|82.55|8.62|false|david ichabod|2013-03-01 09:11:58.703248|81.28|topology +79|396|65686|4294967335|89.28|25.63|true|rachel polk|2013-03-01 09:11:58.703277|58.87|geology +95|482|65637|4294967342|9.70|2.16|true|bob steinbeck|2013-03-01 09:11:58.703225|35.51|undecided +71|280|65610|4294967451|33.36|25.95|true|rachel brown|2013-03-01 09:11:58.703097|7.59|opthamology +32|400|65753|4294967360|35.13|32.17|true|irene ovid|2013-03-01 09:11:58.703294|59.13|mathematics +70|373|65773|4294967502|46.18|47.06|false|zach king|2013-03-01 09:11:58.703132|87.66|mathematics +105|509|65716|4294967308|22.94|9.61|true|jessica quirinius|2013-03-01 09:11:58.703073|10.07|zync studies +20|286|65671|4294967307|28.45|25.01|true|oscar white|2013-03-01 09:11:58.703299|52.05|undecided +98|432|65669|4294967373|63.12|23.03|false|calvin allen|2013-03-01 09:11:58.703214|38.60|industrial engineering +57|304|65731|4294967315|94.68|44.22|false|xavier carson|2013-03-01 09:11:58.703208|18.20|study skills +45|433|65672|4294967506|85.03|0.37|false|tom nixon|2013-03-01 09:11:58.703154|64.09|mathematics +77|483|65784|4294967330|23.07|29.96|true|zach ovid|2013-03-01 09:11:58.703168|97.37|education +70|268|65766|4294967299|88.36|17.15|true|gabriella thompson|2013-03-01 09:11:58.703169|86.53|opthamology +34|398|65731|4294967546|66.61|46.93|true|calvin johnson|2013-03-01 09:11:58.703078|61.52|quiet hour +2|443|65552|4294967349|51.85|30.49|false|oscar white|2013-03-01 09:11:58.703125|78.52|philosophy +65|393|65625|4294967374|24.73|41.75|false|katie garcia|2013-03-01 09:11:58.703083|20.61|opthamology +83|432|65656|4294967303|26.08|39.73|true|jessica underhill|2013-03-01 09:11:58.703147|82.67|geology +32|506|65551|4294967375|19.13|3.29|true|ulysses ichabod|2013-03-01 09:11:58.703195|74.13|zync studies +13|324|65544|4294967539|84.31|37.34|true|tom young|2013-03-01 09:11:58.703271|65.85|education +11|267|65727|4294967325|33.55|17.89|true|jessica davidson|2013-03-01 09:11:58.703144|87.37|kindergarten +119|280|65615|4294967457|94.72|19.90|false|rachel white|2013-03-01 09:11:58.703163|54.47|biology +85|392|65760|4294967436|65.02|16.91|false|bob ellison|2013-03-01 09:11:58.703115|27.52|history +89|436|65623|4294967461|89.03|25.97|true|fred robinson|2013-03-01 09:11:58.703239|95.58|linguistics +51|265|65626|4294967521|94.38|1.53|true|luke thompson|2013-03-01 09:11:58.703120|75.15|yard duty +122|428|65715|4294967520|35.72|8.21|false|priscilla underhill|2013-03-01 09:11:58.703212|54.79|opthamology +114|507|65576|4294967517|15.18|34.48|true|luke allen|2013-03-01 09:11:58.703140|4.88|religion +22|257|65588|4294967316|81.17|28.77|false|nick quirinius|2013-03-01 09:11:58.703224|76.44|forestry +78|417|65552|4294967300|64.00|10.49|true|calvin van buren|2013-03-01 09:11:58.703223|3.43|debate +88|409|65607|4294967509|99.13|41.24|false|holly zipper|2013-03-01 09:11:58.703267|91.52|nap time +36|274|65705|4294967514|70.52|5.93|true|fred nixon|2013-03-01 09:11:58.703179|65.13|topology +42|338|65719|4294967488|87.99|39.29|false|nick ovid|2013-03-01 09:11:58.703302|66.85|education +18|446|65544|4294967435|93.11|14.90|true|holly xylophone|2013-03-01 09:11:58.703085|73.08|history +110|261|65600|4294967428|75.83|10.22|false|mike garcia|2013-03-01 09:11:58.703132|43.03|education +61|382|65623|4294967443|25.11|2.26|false|david ovid|2013-03-01 09:11:58.703125|39.74|education +57|277|65754|4294967357|36.26|32.98|true|gabriella zipper|2013-03-01 09:11:58.703077|10.16|topology +12|379|65698|4294967477|47.57|44.60|false|mike carson|2013-03-01 09:11:58.703291|42.98|religion +3|464|65617|4294967424|82.30|2.92|false|ethan brown|2013-03-01 09:11:58.703076|18.51|wind surfing +5|360|65543|4294967305|67.98|38.53|false|priscilla johnson|2013-03-01 09:11:58.703259|52.28|geology +37|445|65612|4294967444|92.11|0.74|true|wendy steinbeck|2013-03-01 09:11:58.703096|16.05|study skills +58|382|65644|4294967500|18.63|30.09|true|oscar allen|2013-03-01 09:11:58.703144|96.45|linguistics +115|327|65607|4294967391|28.79|0.80|false|yuri polk|2013-03-01 09:11:58.703153|47.12|study skills +93|373|65707|4294967343|95.48|11.83|false|oscar hernandez|2013-03-01 09:11:58.703245|76.20|undecided +108|478|65712|4294967522|46.43|33.12|false|nick garcia|2013-03-01 09:11:58.703166|34.70|kindergarten +-3|376|65548|4294967431|96.78|43.23|false|fred ellison|2013-03-01 09:11:58.703233|75.39|education +44|398|65691|4294967393|26.71|25.51|false|fred ellison|2013-03-01 09:11:58.703270|5.01|undecided +91|392|65708|4294967305|71.35|26.84|false|victor hernandez|2013-03-01 09:11:58.703198|70.89|philosophy +14|355|65556|4294967482|64.46|5.96|true|oscar davidson|2013-03-01 09:11:58.703239|95.12|linguistics +89|278|65593|4294967432|8.61|16.38|false|tom brown|2013-03-01 09:11:58.703266|84.60|quiet hour +11|425|65624|4294967305|16.08|41.83|true|tom carson|2013-03-01 09:11:58.703324|14.08|forestry +61|478|65575|4294967442|96.73|43.85|true|ulysses ellison|2013-03-01 09:11:58.703218|61.41|history +54|501|65722|4294967336|42.67|30.41|true|irene laertes|2013-03-01 09:11:58.703153|4.11|undecided +58|290|65596|4294967532|41.62|31.16|false|oscar nixon|2013-03-01 09:11:58.703123|94.35|chemistry +17|350|65571|4294967428|19.03|36.22|false|victor hernandez|2013-03-01 09:11:58.703295|71.57|debate +49|291|65548|4294967403|77.02|46.73|true|victor white|2013-03-01 09:11:58.703221|51.90|zync studies +17|495|65689|4294967373|41.45|42.96|true|oscar quirinius|2013-03-01 09:11:58.703197|27.51|chemistry +1|418|65670|4294967534|6.29|30.62|true|yuri carson|2013-03-01 09:11:58.703089|93.66|linguistics +49|345|65614|4294967318|50.02|2.89|false|ethan falkner|2013-03-01 09:11:58.703255|94.47|linguistics +123|419|65654|4294967442|97.87|40.84|true|luke ichabod|2013-03-01 09:11:58.703159|88.23|linguistics +66|359|65556|4294967532|86.93|23.63|true|zach king|2013-03-01 09:11:58.703181|99.94|study skills +50|290|65630|4294967304|10.20|21.01|false|oscar ellison|2013-03-01 09:11:58.703139|72.13|opthamology +118|334|65586|4294967525|38.79|31.63|true|mike king|2013-03-01 09:11:58.703307|87.57|philosophy +60|454|65706|4294967443|47.32|3.27|true|fred polk|2013-03-01 09:11:58.703278|9.74|joggying +25|291|65746|4294967407|60.26|42.76|false|wendy nixon|2013-03-01 09:11:58.703137|34.75|american history +108|391|65717|4294967336|43.71|41.73|false|rachel white|2013-03-01 09:11:58.703272|33.13|wind surfing +0|267|65608|4294967523|46.87|4.48|true|jessica quirinius|2013-03-01 09:11:58.703278|69.42|geology +46|360|65702|4294967541|46.21|20.42|false|jessica underhill|2013-03-01 09:11:58.703117|55.68|linguistics +88|404|65730|4294967335|17.74|49.67|false|katie van buren|2013-03-01 09:11:58.703198|30.60|biology +41|275|65694|4294967503|1.91|44.92|true|sarah carson|2013-03-01 09:11:58.703096|65.86|debate +93|426|65714|4294967478|83.40|20.19|false|quinn davidson|2013-03-01 09:11:58.703093|14.85|debate +78|448|65568|4294967513|74.02|10.41|true|quinn garcia|2013-03-01 09:11:58.703107|16.26|quiet hour +77|283|65711|4294967523|10.17|28.61|false|gabriella falkner|2013-03-01 09:11:58.703106|96.10|topology +45|377|65786|4294967364|92.37|38.14|false|alice steinbeck|2013-03-01 09:11:58.703299|29.32|wind surfing +117|341|65588|4294967496|51.29|28.71|true|jessica brown|2013-03-01 09:11:58.703262|98.33|philosophy +5|485|65635|4294967306|2.20|40.21|false|yuri nixon|2013-03-01 09:11:58.703256|43.80|history +96|315|65769|4294967323|94.68|10.21|true|mike king|2013-03-01 09:11:58.703109|38.98|linguistics +5|295|65621|4294967329|3.28|6.58|true|tom van buren|2013-03-01 09:11:58.703244|25.67|joggying +79|340|65744|4294967531|79.49|19.72|false|ulysses robinson|2013-03-01 09:11:58.703197|46.98|wind surfing +18|312|65648|4294967547|72.04|9.99|true|fred falkner|2013-03-01 09:11:58.703159|64.06|industrial engineering +17|382|65769|4294967351|57.64|38.92|false|fred laertes|2013-03-01 09:11:58.703242|91.49|biology +9|293|65545|4294967527|31.67|43.30|false|luke johnson|2013-03-01 09:11:58.703325|65.81|joggying +39|340|65650|4294967365|22.12|22.27|false|xavier quirinius|2013-03-01 09:11:58.703082|37.25|nap time +5|292|65598|4294967394|79.38|39.63|true|mike ellison|2013-03-01 09:11:58.703315|53.04|mathematics +71|298|65540|4294967510|91.63|9.60|false|gabriella zipper|2013-03-01 09:11:58.703140|68.14|geology +46|303|65562|4294967402|96.29|28.91|false|ethan laertes|2013-03-01 09:11:58.703147|54.94|debate +99|282|65659|4294967394|30.62|34.72|true|wendy garcia|2013-03-01 09:11:58.703283|94.30|mathematics +67|265|65562|4294967421|53.06|4.92|false|jessica xylophone|2013-03-01 09:11:58.703182|69.41|quiet hour +53|274|65658|4294967545|95.28|48.78|false|luke polk|2013-03-01 09:11:58.703095|77.66|topology +71|496|65643|4294967349|84.72|14.22|true|calvin ovid|2013-03-01 09:11:58.703252|50.79|chemistry +19|281|65542|4294967452|29.41|16.87|false|zach xylophone|2013-03-01 09:11:58.703318|78.01|quiet hour +44|330|65647|4294967339|39.34|33.30|true|katie king|2013-03-01 09:11:58.703224|58.03|education +109|283|65675|4294967429|88.91|28.77|true|ulysses white|2013-03-01 09:11:58.703244|35.33|yard duty +59|373|65589|4294967359|9.35|22.19|true|luke falkner|2013-03-01 09:11:58.703112|72.30|xylophone band +80|407|65588|4294967371|51.25|38.62|false|david allen|2013-03-01 09:11:58.703215|64.63|kindergarten +31|457|65656|4294967394|29.36|31.68|true|ulysses ovid|2013-03-01 09:11:58.703192|64.44|nap time +33|319|65617|4294967431|64.65|15.09|true|tom laertes|2013-03-01 09:11:58.703269|47.45|kindergarten +41|334|65776|4294967432|71.89|47.91|false|ulysses johnson|2013-03-01 09:11:58.703272|61.41|american history +97|349|65769|4294967386|12.90|42.00|false|irene quirinius|2013-03-01 09:11:58.703239|58.05|xylophone band +40|331|65705|4294967470|91.78|31.30|false|oscar van buren|2013-03-01 09:11:58.703250|25.89|zync studies +119|310|65679|4294967319|14.21|10.38|true|sarah carson|2013-03-01 09:11:58.703221|64.15|industrial engineering +38|493|65788|4294967427|60.85|47.66|true|ethan white|2013-03-01 09:11:58.703173|25.77|zync studies +70|285|65718|4294967353|37.10|35.85|false|mike ellison|2013-03-01 09:11:58.703167|89.67|kindergarten +93|403|65752|4294967497|97.65|47.03|false|luke miller|2013-03-01 09:11:58.703133|28.92|biology +48|501|65720|4294967525|2.79|20.39|true|alice allen|2013-03-01 09:11:58.703093|22.34|wind surfing +88|307|65747|4294967389|31.86|20.97|true|jessica carson|2013-03-01 09:11:58.703194|15.07|joggying +66|259|65767|4294967378|51.72|5.11|true|gabriella falkner|2013-03-01 09:11:58.703119|90.88|xylophone band +118|292|65637|4294967403|49.68|11.16|false|jessica polk|2013-03-01 09:11:58.703262|48.88|education +49|448|65742|4294967470|82.34|30.04|true|yuri polk|2013-03-01 09:11:58.703171|24.94|forestry +93|326|65678|4294967428|45.19|1.71|true|david white|2013-03-01 09:11:58.703101|8.72|industrial engineering +74|298|65773|4294967400|21.80|28.85|false|oscar xylophone|2013-03-01 09:11:58.703124|47.09|religion +96|263|65769|4294967532|53.02|4.04|false|calvin quirinius|2013-03-01 09:11:58.703128|11.45|forestry +11|382|65779|4294967345|62.72|40.27|false|david davidson|2013-03-01 09:11:58.703176|28.20|geology +123|284|65783|4294967301|60.26|37.08|true|victor davidson|2013-03-01 09:11:58.703227|17.65|forestry +58|478|65684|4294967439|95.53|14.16|true|ulysses van buren|2013-03-01 09:11:58.703076|67.34|values clariffication +27|256|65599|4294967383|89.55|16.61|true|xavier quirinius|2013-03-01 09:11:58.703304|41.61|linguistics +66|372|65718|4294967401|83.87|28.64|false|yuri underhill|2013-03-01 09:11:58.703117|33.35|education +82|337|65662|4294967453|11.57|45.53|false|wendy underhill|2013-03-01 09:11:58.703299|27.89|wind surfing +94|485|65735|4294967472|69.88|14.92|false|victor hernandez|2013-03-01 09:11:58.703193|28.42|topology +101|259|65757|4294967550|82.97|42.30|false|nick miller|2013-03-01 09:11:58.703190|90.09|study skills +48|443|65675|4294967322|57.67|9.40|true|nick robinson|2013-03-01 09:11:58.703228|4.19|biology +60|309|65743|4294967450|15.90|7.53|true|xavier laertes|2013-03-01 09:11:58.703289|38.73|wind surfing +16|323|65748|4294967471|6.84|17.55|true|zach ellison|2013-03-01 09:11:58.703164|77.52|religion +59|484|65743|4294967483|66.67|8.09|true|victor king|2013-03-01 09:11:58.703297|52.65|debate +2|507|65764|4294967544|72.51|30.90|false|katie young|2013-03-01 09:11:58.703223|57.10|opthamology +101|315|65749|4294967519|85.14|5.23|true|mike steinbeck|2013-03-01 09:11:58.703131|73.24|topology +38|290|65628|4294967473|56.07|37.96|false|wendy allen|2013-03-01 09:11:58.703322|2.48|philosophy +117|400|65755|4294967399|91.48|17.46|true|priscilla johnson|2013-03-01 09:11:58.703267|22.44|history +120|325|65758|4294967540|79.19|11.26|true|wendy underhill|2013-03-01 09:11:58.703226|94.90|debate +-1|274|65641|4294967476|44.56|39.79|true|fred underhill|2013-03-01 09:11:58.703265|63.70|study skills +39|482|65664|4294967343|64.82|36.45|false|mike white|2013-03-01 09:11:58.703317|3.37|xylophone band +79|326|65674|4294967348|35.52|39.97|true|sarah falkner|2013-03-01 09:11:58.703280|40.58|yard duty +26|283|65680|4294967426|1.38|24.97|false|victor quirinius|2013-03-01 09:11:58.703175|81.03|quiet hour +88|301|65540|4294967343|80.93|17.59|true|tom hernandez|2013-03-01 09:11:58.703207|39.89|nap time +96|369|65764|4294967460|81.00|20.14|true|katie falkner|2013-03-01 09:11:58.703309|24.70|topology +82|404|65585|4294967532|3.17|44.99|false|ulysses brown|2013-03-01 09:11:58.703258|35.23|yard duty +78|509|65614|4294967508|39.03|16.44|true|nick xylophone|2013-03-01 09:11:58.703165|75.70|religion +5|388|65570|4294967386|70.37|9.03|false|zach thompson|2013-03-01 09:11:58.703073|72.86|topology +118|364|65686|4294967344|80.31|14.47|false|mike steinbeck|2013-03-01 09:11:58.703269|32.01|biology +62|299|65577|4294967382|25.24|39.64|true|oscar laertes|2013-03-01 09:11:58.703286|64.52|history +69|263|65658|4294967393|58.09|28.20|true|priscilla falkner|2013-03-01 09:11:58.703189|80.24|wind surfing +17|441|65593|4294967406|60.22|46.14|false|quinn garcia|2013-03-01 09:11:58.703320|51.89|geology +88|438|65543|4294967400|73.13|48.39|true|rachel allen|2013-03-01 09:11:58.703239|41.97|nap time +36|433|65744|4294967339|97.59|33.21|false|priscilla allen|2013-03-01 09:11:58.703111|3.29|yard duty +99|384|65725|4294967362|84.90|44.61|true|wendy ichabod|2013-03-01 09:11:58.703097|61.31|american history +60|265|65654|4294967484|4.80|37.68|false|mike laertes|2013-03-01 09:11:58.703165|97.49|wind surfing +112|378|65669|4294967335|72.23|9.78|false|sarah king|2013-03-01 09:11:58.703087|39.82|forestry +13|307|65555|4294967403|20.14|13.23|false|xavier zipper|2013-03-01 09:11:58.703250|39.16|wind surfing +98|344|65725|4294967335|48.64|14.04|false|priscilla ovid|2013-03-01 09:11:58.703152|51.48|opthamology +105|420|65682|4294967330|79.54|42.95|false|alice nixon|2013-03-01 09:11:58.703306|38.04|joggying +42|458|65538|4294967351|27.04|40.79|false|holly hernandez|2013-03-01 09:11:58.703191|43.33|history +34|481|65668|4294967550|23.52|30.53|true|nick ichabod|2013-03-01 09:11:58.703140|68.00|joggying +14|260|65703|4294967547|40.07|25.09|true|mike xylophone|2013-03-01 09:11:58.703286|47.48|opthamology +5|338|65664|4294967335|23.13|8.04|false|tom white|2013-03-01 09:11:58.703292|2.87|nap time +9|329|65544|4294967549|55.30|4.55|false|xavier allen|2013-03-01 09:11:58.703180|97.10|geology +113|293|65613|4294967515|95.36|3.19|true|quinn quirinius|2013-03-01 09:11:58.703324|4.09|forestry +26|303|65571|4294967419|80.17|25.06|false|sarah quirinius|2013-03-01 09:11:58.703133|52.79|quiet hour +81|396|65728|4294967319|82.26|30.74|true|wendy robinson|2013-03-01 09:11:58.703140|9.59|opthamology +4|419|65568|4294967448|28.11|17.89|false|sarah xylophone|2013-03-01 09:11:58.703121|6.26|topology +-3|337|65658|4294967361|43.40|12.05|false|victor allen|2013-03-01 09:11:58.703155|45.20|topology +45|293|65671|4294967366|16.72|31.07|true|holly garcia|2013-03-01 09:11:58.703103|35.97|opthamology +27|354|65687|4294967485|58.63|32.78|false|bob garcia|2013-03-01 09:11:58.703253|48.20|history +45|433|65565|4294967330|89.07|6.79|false|irene davidson|2013-03-01 09:11:58.703120|43.55|undecided +2|366|65648|4294967464|57.52|22.54|false|priscilla van buren|2013-03-01 09:11:58.703188|57.79|biology +101|261|65641|4294967363|92.51|47.13|false|sarah brown|2013-03-01 09:11:58.703318|1.25|mathematics +124|482|65667|4294967439|82.74|30.64|false|nick zipper|2013-03-01 09:11:58.703152|89.94|geology +49|393|65541|4294967538|13.45|3.82|false|holly laertes|2013-03-01 09:11:58.703289|88.75|linguistics +74|488|65672|4294967413|57.77|30.34|true|yuri polk|2013-03-01 09:11:58.703082|72.59|debate +55|271|65756|4294967378|53.22|12.50|true|oscar carson|2013-03-01 09:11:58.703128|92.74|religion +120|458|65684|4294967409|64.20|8.60|false|alice white|2013-03-01 09:11:58.703184|73.51|undecided +80|496|65675|4294967317|38.29|19.61|false|quinn xylophone|2013-03-01 09:11:58.703262|84.42|education +73|287|65571|4294967454|40.52|40.95|true|mike ichabod|2013-03-01 09:11:58.703312|5.88|american history +30|414|65783|4294967458|88.59|19.69|false|victor carson|2013-03-01 09:11:58.703252|79.02|yard duty +92|450|65688|4294967397|93.03|10.35|true|nick thompson|2013-03-01 09:11:58.703201|46.29|nap time +47|464|65620|4294967392|19.18|32.39|false|luke ichabod|2013-03-01 09:11:58.703324|17.02|biology +34|279|65719|4294967497|59.87|5.46|false|mike zipper|2013-03-01 09:11:58.703163|46.48|zync studies +70|416|65653|4294967346|25.13|2.51|true|quinn allen|2013-03-01 09:11:58.703165|89.23|values clariffication +93|373|65595|4294967486|91.67|27.74|true|alice van buren|2013-03-01 09:11:58.703259|63.57|opthamology +110|443|65664|4294967507|94.65|2.81|false|david davidson|2013-03-01 09:11:58.703145|57.30|debate +111|479|65689|4294967440|6.39|47.56|false|irene zipper|2013-03-01 09:11:58.703171|73.97|american history +110|424|65681|4294967364|13.64|7.22|false|bob davidson|2013-03-01 09:11:58.703073|97.52|zync studies +48|288|65665|4294967484|42.23|27.91|false|rachel polk|2013-03-01 09:11:58.703268|73.20|debate +5|411|65573|4294967336|64.06|32.98|true|wendy garcia|2013-03-01 09:11:58.703124|18.98|chemistry +79|339|65686|4294967544|70.29|29.32|false|ethan allen|2013-03-01 09:11:58.703096|98.10|biology +88|482|65639|4294967515|80.14|22.60|false|victor ichabod|2013-03-01 09:11:58.703210|76.98|study skills +77|409|65609|4294967458|38.64|22.64|false|luke hernandez|2013-03-01 09:11:58.703208|38.67|biology +48|275|65732|4294967491|9.75|1.89|false|alice xylophone|2013-03-01 09:11:58.703190|19.73|education +69|347|65684|4294967362|1.20|15.53|true|zach underhill|2013-03-01 09:11:58.703192|34.87|topology +85|386|65658|4294967418|33.25|6.75|true|zach underhill|2013-03-01 09:11:58.703286|69.87|values clariffication +91|463|65718|4294967463|38.33|45.89|true|fred nixon|2013-03-01 09:11:58.703257|78.16|geology +34|302|65748|4294967406|19.42|21.36|false|tom hernandez|2013-03-01 09:11:58.703153|53.37|linguistics +40|467|65745|4294967453|1.63|9.23|false|gabriella xylophone|2013-03-01 09:11:58.703310|59.30|values clariffication +3|382|65592|4294967490|46.74|11.36|true|zach quirinius|2013-03-01 09:11:58.703143|45.36|geology +55|314|65707|4294967387|12.91|18.52|false|jessica white|2013-03-01 09:11:58.703279|22.40|chemistry +119|364|65791|4294967432|89.50|19.42|true|bob davidson|2013-03-01 09:11:58.703180|7.39|education +115|426|65651|4294967412|16.11|43.34|true|alice zipper|2013-03-01 09:11:58.703144|0.30|linguistics +-2|428|65673|4294967471|60.25|16.57|true|fred robinson|2013-03-01 09:11:58.703200|41.47|yard duty +79|481|65726|4294967383|22.70|41.13|true|tom garcia|2013-03-01 09:11:58.703183|19.06|history +2|321|65697|4294967442|15.45|20.43|true|xavier davidson|2013-03-01 09:11:58.703241|84.61|american history +120|510|65674|4294967376|3.38|25.74|true|sarah ovid|2013-03-01 09:11:58.703124|67.74|opthamology +100|396|65736|4294967425|66.81|1.85|true|xavier brown|2013-03-01 09:11:58.703082|12.53|geology +14|451|65617|4294967394|64.46|18.99|false|tom ichabod|2013-03-01 09:11:58.703226|36.36|yard duty +9|404|65689|4294967372|99.80|3.82|false|luke ichabod|2013-03-01 09:11:58.703278|13.10|debate +1|300|65719|4294967430|3.41|47.94|false|tom zipper|2013-03-01 09:11:58.703248|27.04|biology +50|353|65724|4294967458|80.41|41.10|true|sarah hernandez|2013-03-01 09:11:58.703276|28.81|study skills +65|483|65704|4294967370|67.13|35.00|false|calvin johnson|2013-03-01 09:11:58.703092|43.67|history +94|478|65701|4294967489|33.79|35.73|false|bob carson|2013-03-01 09:11:58.703098|53.34|linguistics +30|286|65791|4294967351|36.71|29.69|false|alice robinson|2013-03-01 09:11:58.703100|61.50|kindergarten +5|342|65638|4294967308|1.93|22.60|false|sarah miller|2013-03-01 09:11:58.703216|99.63|quiet hour +11|320|65586|4294967341|35.06|49.67|false|luke hernandez|2013-03-01 09:11:58.703269|71.86|topology +44|489|65701|4294967545|33.53|30.45|true|zach nixon|2013-03-01 09:11:58.703094|36.45|mathematics +122|355|65697|4294967369|97.70|34.52|false|wendy brown|2013-03-01 09:11:58.703251|87.52|debate +32|474|65721|4294967548|26.95|6.76|true|holly falkner|2013-03-01 09:11:58.703071|16.55|philosophy +112|366|65643|4294967541|63.44|19.11|true|oscar laertes|2013-03-01 09:11:58.703111|81.04|philosophy +25|337|65699|4294967349|36.45|10.93|false|yuri brown|2013-03-01 09:11:58.703116|92.72|zync studies +39|446|65767|4294967406|29.50|3.62|true|wendy zipper|2013-03-01 09:11:58.703254|13.15|education +114|375|65692|4294967298|63.61|47.33|false|jessica quirinius|2013-03-01 09:11:58.703281|38.13|yard duty +103|427|65772|4294967338|75.43|34.83|false|katie miller|2013-03-01 09:11:58.703312|88.55|kindergarten +96|342|65645|4294967522|88.94|0.22|false|mike nixon|2013-03-01 09:11:58.703303|54.16|quiet hour +121|326|65600|4294967393|92.14|18.16|false|tom ichabod|2013-03-01 09:11:58.703200|54.89|biology +57|440|65730|4294967472|53.97|14.17|false|bob van buren|2013-03-01 09:11:58.703097|62.66|kindergarten +55|402|65710|4294967415|55.70|1.61|true|rachel king|2013-03-01 09:11:58.703218|34.83|yard duty +60|401|65572|4294967466|81.08|38.20|true|quinn miller|2013-03-01 09:11:58.703296|40.33|geology +50|331|65573|4294967508|61.31|12.31|true|holly xylophone|2013-03-01 09:11:58.703152|53.31|philosophy +78|500|65588|4294967425|17.31|18.15|true|irene miller|2013-03-01 09:11:58.703311|60.41|opthamology +59|470|65673|4294967422|79.95|32.02|true|ulysses allen|2013-03-01 09:11:58.703124|89.97|zync studies +10|409|65548|4294967389|9.25|30.43|false|jessica davidson|2013-03-01 09:11:58.703256|61.15|religion +72|392|65686|4294967515|19.77|22.15|false|ulysses robinson|2013-03-01 09:11:58.703211|52.51|yard duty +100|280|65703|4294967471|58.55|1.27|false|oscar underhill|2013-03-01 09:11:58.703289|61.90|wind surfing +50|411|65646|4294967498|64.98|48.95|true|bob king|2013-03-01 09:11:58.703151|28.64|american history +56|447|65650|4294967424|72.52|48.41|false|oscar ellison|2013-03-01 09:11:58.703238|95.89|industrial engineering +72|360|65586|4294967478|28.52|17.69|true|rachel miller|2013-03-01 09:11:58.703245|33.64|xylophone band +24|431|65773|4294967319|10.30|17.53|true|zach falkner|2013-03-01 09:11:58.703254|23.55|yard duty +83|359|65777|4294967309|89.01|49.71|true|luke davidson|2013-03-01 09:11:58.703083|26.13|study skills +54|338|65690|4294967506|33.70|13.11|true|nick quirinius|2013-03-01 09:11:58.703189|32.28|religion +102|347|65587|4294967378|89.89|28.15|false|jessica allen|2013-03-01 09:11:58.703139|17.93|study skills +75|467|65572|4294967402|1.84|42.76|false|holly van buren|2013-03-01 09:11:58.703091|17.42|american history +44|430|65555|4294967538|56.73|48.09|true|quinn ellison|2013-03-01 09:11:58.703324|53.27|debate +39|298|65756|4294967310|0.79|6.22|true|bob carson|2013-03-01 09:11:58.703072|74.59|nap time +118|386|65747|4294967516|39.52|32.91|true|holly white|2013-03-01 09:11:58.703220|79.22|joggying +108|456|65640|4294967354|73.34|13.84|false|irene garcia|2013-03-01 09:11:58.703106|16.27|zync studies +44|377|65656|4294967345|8.87|22.92|false|alice underhill|2013-03-01 09:11:58.703314|72.95|wind surfing +82|348|65658|4294967477|9.88|15.67|false|oscar ovid|2013-03-01 09:11:58.703201|54.86|yard duty +39|306|65762|4294967362|29.56|3.01|false|mike johnson|2013-03-01 09:11:58.703292|31.32|debate +118|352|65592|4294967468|78.85|10.55|false|xavier davidson|2013-03-01 09:11:58.703273|70.62|history +34|447|65631|4294967470|0.69|14.39|true|luke davidson|2013-03-01 09:11:58.703305|65.93|quiet hour +92|346|65756|4294967468|15.22|35.12|true|ethan brown|2013-03-01 09:11:58.703145|6.16|philosophy +106|278|65683|4294967420|89.96|40.77|false|ulysses zipper|2013-03-01 09:11:58.703131|80.52|mathematics +114|365|65737|4294967516|46.18|5.50|true|ulysses robinson|2013-03-01 09:11:58.703184|99.16|values clariffication +100|331|65558|4294967495|99.17|21.94|true|priscilla white|2013-03-01 09:11:58.703146|38.76|yard duty +123|490|65581|4294967542|17.34|48.96|true|fred johnson|2013-03-01 09:11:58.703240|81.80|education +54|495|65744|4294967542|80.14|27.43|false|irene king|2013-03-01 09:11:58.703257|58.29|american history +10|488|65779|4294967357|87.19|20.37|false|irene nixon|2013-03-01 09:11:58.703217|39.14|kindergarten +12|356|65735|4294967345|73.43|19.80|false|calvin johnson|2013-03-01 09:11:58.703105|91.43|industrial engineering +116|422|65673|4294967524|85.11|47.28|false|ethan garcia|2013-03-01 09:11:58.703114|29.66|yard duty +69|306|65667|4294967427|68.09|1.30|true|calvin steinbeck|2013-03-01 09:11:58.703082|74.67|debate +75|394|65676|4294967426|76.89|38.85|true|victor white|2013-03-01 09:11:58.703123|28.04|forestry +86|395|65731|4294967534|77.96|18.94|true|bob miller|2013-03-01 09:11:58.703300|47.64|yard duty +71|505|65603|4294967393|52.61|27.72|false|xavier robinson|2013-03-01 09:11:58.703182|55.45|education +51|276|65729|4294967447|98.94|1.35|true|ulysses underhill|2013-03-01 09:11:58.703303|57.25|yard duty +81|508|65589|4294967512|44.49|39.58|true|alice xylophone|2013-03-01 09:11:58.703264|13.16|topology +60|504|65719|4294967377|53.40|16.70|false|luke zipper|2013-03-01 09:11:58.703308|75.26|philosophy +50|466|65761|4294967390|96.60|3.30|true|sarah white|2013-03-01 09:11:58.703121|33.95|philosophy +116|434|65721|4294967500|40.22|23.70|true|calvin hernandez|2013-03-01 09:11:58.703123|66.32|biology +55|485|65554|4294967419|45.05|24.54|false|nick robinson|2013-03-01 09:11:58.703321|10.54|kindergarten +39|443|65654|4294967308|94.31|37.67|true|priscilla miller|2013-03-01 09:11:58.703285|49.81|nap time +31|377|65762|4294967401|25.51|48.40|true|victor falkner|2013-03-01 09:11:58.703160|52.24|kindergarten +47|364|65733|4294967519|15.89|1.07|true|david van buren|2013-03-01 09:11:58.703127|1.17|undecided +97|372|65761|4294967543|4.80|31.00|true|holly garcia|2013-03-01 09:11:58.703298|59.76|opthamology +10|416|65585|4294967487|58.65|32.20|true|victor zipper|2013-03-01 09:11:58.703145|38.70|religion +94|312|65641|4294967542|35.85|26.86|false|zach polk|2013-03-01 09:11:58.703099|93.86|study skills +68|432|65565|4294967470|66.17|27.45|true|bob davidson|2013-03-01 09:11:58.703245|37.86|quiet hour +35|297|65632|4294967451|58.75|27.65|true|xavier quirinius|2013-03-01 09:11:58.703317|45.92|american history +-1|309|65615|4294967443|18.57|11.13|false|oscar garcia|2013-03-01 09:11:58.703325|8.90|quiet hour +19|467|65628|4294967536|16.76|9.37|true|victor johnson|2013-03-01 09:11:58.703215|97.91|values clariffication +73|426|65776|4294967529|95.39|13.18|true|david carson|2013-03-01 09:11:58.703183|63.80|history +24|256|65549|4294967529|23.72|7.97|false|zach nixon|2013-03-01 09:11:58.703318|85.63|undecided +9|421|65618|4294967485|77.04|7.96|false|yuri king|2013-03-01 09:11:58.703296|85.85|kindergarten +107|504|65694|4294967432|8.68|49.24|false|bob young|2013-03-01 09:11:58.703131|52.08|philosophy +118|438|65779|4294967409|94.88|17.74|true|xavier carson|2013-03-01 09:11:58.703322|99.13|yard duty +0|334|65686|4294967313|75.36|6.40|false|jessica king|2013-03-01 09:11:58.703120|98.04|chemistry +51|312|65628|4294967308|0.09|22.27|false|victor steinbeck|2013-03-01 09:11:58.703265|16.24|forestry +70|295|65632|4294967410|46.97|48.52|true|fred quirinius|2013-03-01 09:11:58.703186|3.53|wind surfing +39|384|65695|4294967462|53.10|20.23|true|ulysses johnson|2013-03-01 09:11:58.703092|20.39|philosophy +42|468|65693|4294967486|22.36|25.48|true|calvin nixon|2013-03-01 09:11:58.703323|7.89|study skills +20|423|65609|4294967509|39.05|10.47|true|bob polk|2013-03-01 09:11:58.703310|12.58|mathematics +37|434|65731|4294967527|46.35|8.75|false|bob polk|2013-03-01 09:11:58.703222|96.74|nap time +14|288|65714|4294967325|90.04|0.13|false|quinn zipper|2013-03-01 09:11:58.703154|26.56|xylophone band +3|501|65685|4294967496|96.24|24.46|false|quinn brown|2013-03-01 09:11:58.703275|51.58|wind surfing +25|418|65676|4294967516|42.63|2.70|false|tom quirinius|2013-03-01 09:11:58.703211|82.04|study skills +74|477|65597|4294967343|6.94|23.21|false|bob king|2013-03-01 09:11:58.703220|72.15|religion +16|436|65719|4294967408|77.98|13.10|true|holly king|2013-03-01 09:11:58.703146|12.75|xylophone band +14|264|65754|4294967428|0.20|32.48|false|luke zipper|2013-03-01 09:11:58.703132|83.15|american history +96|298|65567|4294967314|83.24|36.95|true|nick xylophone|2013-03-01 09:11:58.703245|67.50|religion +34|325|65658|4294967435|47.86|29.98|false|jessica robinson|2013-03-01 09:11:58.703104|84.71|study skills +36|314|65685|4294967349|35.87|9.47|true|david johnson|2013-03-01 09:11:58.703234|41.80|wind surfing +35|298|65633|4294967514|85.19|11.97|true|yuri zipper|2013-03-01 09:11:58.703262|1.40|mathematics +80|431|65605|4294967371|47.31|14.36|false|alice zipper|2013-03-01 09:11:58.703189|53.53|debate +28|509|65719|4294967480|99.25|7.63|true|luke white|2013-03-01 09:11:58.703228|26.22|biology +99|427|65653|4294967361|9.23|5.24|false|oscar ellison|2013-03-01 09:11:58.703158|28.93|xylophone band +119|286|65660|4294967374|46.73|10.28|false|rachel polk|2013-03-01 09:11:58.703309|44.74|yard duty +101|506|65781|4294967353|64.17|41.61|true|katie davidson|2013-03-01 09:11:58.703247|14.83|zync studies +66|289|65722|4294967404|8.42|7.98|false|alice underhill|2013-03-01 09:11:58.703235|60.56|joggying +115|412|65663|4294967496|72.87|28.10|true|calvin garcia|2013-03-01 09:11:58.703300|79.81|joggying +7|266|65717|4294967448|60.76|0.14|true|yuri miller|2013-03-01 09:11:58.703244|25.21|study skills +51|357|65563|4294967379|73.06|39.29|true|jessica white|2013-03-01 09:11:58.703258|10.15|yard duty +11|459|65785|4294967419|41.25|32.57|true|irene young|2013-03-01 09:11:58.703223|5.65|forestry +43|491|65594|4294967301|18.42|23.54|false|gabriella steinbeck|2013-03-01 09:11:58.703118|47.17|philosophy +44|301|65702|4294967445|1.88|22.12|true|katie brown|2013-03-01 09:11:58.703215|98.20|topology +75|491|65563|4294967426|52.98|7.52|true|ulysses falkner|2013-03-01 09:11:58.703256|49.23|topology +104|407|65683|4294967443|84.37|22.37|false|sarah johnson|2013-03-01 09:11:58.703281|21.29|topology +101|310|65686|4294967402|13.78|18.26|false|calvin carson|2013-03-01 09:11:58.703150|96.30|education +50|472|65614|4294967450|12.37|4.49|false|mike polk|2013-03-01 09:11:58.703126|89.32|values clariffication +61|263|65583|4294967461|64.81|2.29|false|quinn johnson|2013-03-01 09:11:58.703156|85.54|joggying +69|310|65558|4294967475|79.32|42.49|true|katie steinbeck|2013-03-01 09:11:58.703112|86.66|geology +20|285|65759|4294967447|46.70|1.09|true|calvin underhill|2013-03-01 09:11:58.703239|94.46|opthamology +117|319|65629|4294967401|15.34|48.84|true|ethan hernandez|2013-03-01 09:11:58.703224|24.90|chemistry +51|368|65687|4294967383|80.54|38.99|true|zach ovid|2013-03-01 09:11:58.703212|12.61|geology +72|439|65616|4294967506|44.30|6.18|false|holly miller|2013-03-01 09:11:58.703074|76.72|history +94|413|65581|4294967434|89.48|43.78|false|xavier miller|2013-03-01 09:11:58.703298|64.77|nap time +32|506|65635|4294967404|90.32|31.72|true|ethan hernandez|2013-03-01 09:11:58.703169|37.66|wind surfing +24|301|65717|4294967420|99.08|1.68|false|sarah thompson|2013-03-01 09:11:58.703164|66.60|industrial engineering +69|388|65694|4294967379|64.47|45.06|true|holly thompson|2013-03-01 09:11:58.703114|71.22|religion +1|507|65548|4294967507|46.99|46.57|false|sarah xylophone|2013-03-01 09:11:58.703263|69.45|values clariffication +88|327|65772|4294967528|54.71|35.71|false|yuri ovid|2013-03-01 09:11:58.703309|43.94|american history +2|396|65671|4294967437|73.17|49.38|false|luke underhill|2013-03-01 09:11:58.703128|62.89|xylophone band +111|313|65638|4294967356|56.66|44.77|false|yuri van buren|2013-03-01 09:11:58.703089|55.56|biology +10|266|65646|4294967469|75.08|6.09|true|zach young|2013-03-01 09:11:58.703276|12.92|philosophy +27|345|65760|4294967361|19.50|35.24|true|fred robinson|2013-03-01 09:11:58.703194|14.04|kindergarten +29|497|65563|4294967457|97.30|23.05|false|wendy zipper|2013-03-01 09:11:58.703232|19.45|history +114|467|65740|4294967387|39.31|28.05|false|yuri robinson|2013-03-01 09:11:58.703129|97.28|linguistics +117|456|65565|4294967381|81.41|15.50|true|yuri brown|2013-03-01 09:11:58.703195|79.85|industrial engineering +118|340|65736|4294967447|12.42|25.39|false|jessica xylophone|2013-03-01 09:11:58.703227|82.19|study skills +3|409|65774|4294967458|30.88|19.52|false|sarah allen|2013-03-01 09:11:58.703159|44.66|linguistics +90|489|65722|4294967485|63.55|29.46|true|katie steinbeck|2013-03-01 09:11:58.703310|7.27|quiet hour +94|412|65612|4294967299|46.04|19.37|true|calvin ellison|2013-03-01 09:11:58.703106|48.48|mathematics +8|439|65735|4294967361|87.11|44.27|false|mike allen|2013-03-01 09:11:58.703084|67.50|zync studies +4|434|65623|4294967361|56.60|10.99|true|luke johnson|2013-03-01 09:11:58.703313|92.36|forestry +25|472|65739|4294967333|86.25|18.58|false|mike brown|2013-03-01 09:11:58.703230|19.68|education +44|436|65787|4294967374|23.59|8.19|false|mike davidson|2013-03-01 09:11:58.703297|44.32|opthamology +57|351|65629|4294967550|61.53|1.97|false|priscilla davidson|2013-03-01 09:11:58.703172|2.56|topology +17|366|65635|4294967423|98.31|1.51|true|wendy quirinius|2013-03-01 09:11:58.703275|11.87|topology +83|291|65727|4294967410|90.90|41.15|false|david robinson|2013-03-01 09:11:58.703152|49.49|xylophone band +37|326|65593|4294967529|14.36|0.06|true|gabriella quirinius|2013-03-01 09:11:58.703192|24.61|zync studies +102|349|65617|4294967516|54.02|41.69|false|ethan king|2013-03-01 09:11:58.703163|90.98|mathematics +-2|502|65752|4294967543|48.26|23.84|true|nick laertes|2013-03-01 09:11:58.703239|45.64|values clariffication +21|367|65667|4294967323|87.17|9.78|true|zach falkner|2013-03-01 09:11:58.703119|11.74|study skills +3|443|65678|4294967299|16.25|19.45|false|bob underhill|2013-03-01 09:11:58.703207|8.71|american history +23|326|65624|4294967325|10.34|21.24|true|priscilla quirinius|2013-03-01 09:11:58.703210|40.50|kindergarten +22|345|65576|4294967344|78.13|43.20|false|ethan ichabod|2013-03-01 09:11:58.703184|52.41|chemistry +75|467|65766|4294967337|45.02|38.79|false|xavier king|2013-03-01 09:11:58.703093|11.34|chemistry +68|256|65563|4294967484|94.87|45.55|true|wendy nixon|2013-03-01 09:11:58.703276|94.61|education +77|449|65602|4294967481|40.09|15.37|true|tom johnson|2013-03-01 09:11:58.703304|43.11|opthamology +0|481|65698|4294967455|33.64|46.45|true|xavier hernandez|2013-03-01 09:11:58.703305|58.45|wind surfing +92|367|65680|4294967396|44.27|29.82|true|xavier nixon|2013-03-01 09:11:58.703213|37.60|biology +8|389|65570|4294967400|33.70|15.10|true|calvin garcia|2013-03-01 09:11:58.703139|26.88|chemistry +51|370|65763|4294967341|5.83|2.02|false|katie ellison|2013-03-01 09:11:58.703177|98.63|forestry +21|370|65571|4294967341|37.10|7.98|false|bob carson|2013-03-01 09:11:58.703150|64.71|quiet hour +8|382|65762|4294967443|45.37|27.71|false|rachel garcia|2013-03-01 09:11:58.703270|22.25|topology +124|430|65556|4294967455|51.58|27.21|true|tom davidson|2013-03-01 09:11:58.703156|6.22|philosophy +21|396|65770|4294967476|33.27|8.25|true|david garcia|2013-03-01 09:11:58.703198|3.27|xylophone band +0|455|65544|4294967396|47.80|35.96|false|rachel steinbeck|2013-03-01 09:11:58.703106|62.60|geology +48|332|65721|4294967296|12.35|28.34|true|david ovid|2013-03-01 09:11:58.703155|45.19|quiet hour +97|436|65630|4294967387|99.55|10.18|false|quinn falkner|2013-03-01 09:11:58.703178|55.89|linguistics +9|419|65625|4294967348|35.92|3.65|true|rachel zipper|2013-03-01 09:11:58.703165|49.65|mathematics +-1|458|65596|4294967444|54.63|15.25|false|katie garcia|2013-03-01 09:11:58.703257|36.18|debate +82|473|65607|4294967466|43.77|32.88|false|fred white|2013-03-01 09:11:58.703278|96.64|religion +110|319|65664|4294967439|74.15|22.62|false|ulysses miller|2013-03-01 09:11:58.703225|85.26|kindergarten +2|397|65639|4294967396|72.51|42.04|true|rachel laertes|2013-03-01 09:11:58.703149|9.78|opthamology +89|338|65676|4294967444|0.62|25.57|true|mike brown|2013-03-01 09:11:58.703123|53.31|debate +59|510|65674|4294967507|92.42|5.24|false|jessica polk|2013-03-01 09:11:58.703241|30.00|religion +91|308|65591|4294967300|9.39|23.99|true|zach white|2013-03-01 09:11:58.703121|15.65|study skills +123|359|65768|4294967536|80.58|14.55|false|bob thompson|2013-03-01 09:11:58.703176|97.41|opthamology +32|499|65702|4294967537|64.03|26.28|true|jessica garcia|2013-03-01 09:11:58.703317|73.77|nap time +101|356|65783|4294967498|79.87|2.02|true|ethan robinson|2013-03-01 09:11:58.703276|64.18|education +28|388|65728|4294967401|34.35|12.02|false|katie laertes|2013-03-01 09:11:58.703185|58.80|education +31|275|65682|4294967486|54.55|39.46|false|victor ellison|2013-03-01 09:11:58.703201|31.37|yard duty +34|457|65643|4294967474|45.53|11.33|true|zach brown|2013-03-01 09:11:58.703298|26.85|yard duty +76|430|65661|4294967337|36.51|6.88|false|holly johnson|2013-03-01 09:11:58.703266|19.46|geology +78|507|65650|4294967511|8.62|36.80|true|luke garcia|2013-03-01 09:11:58.703232|63.07|american history +113|442|65713|4294967428|61.73|27.08|true|ethan ovid|2013-03-01 09:11:58.703112|46.20|philosophy +80|346|65665|4294967549|36.21|0.68|false|bob steinbeck|2013-03-01 09:11:58.703277|36.30|linguistics +109|398|65767|4294967535|22.99|13.58|true|jessica ichabod|2013-03-01 09:11:58.703227|95.87|geology +39|326|65610|4294967367|72.69|14.17|true|quinn allen|2013-03-01 09:11:58.703155|67.74|kindergarten +15|305|65577|4294967365|14.48|20.23|true|bob miller|2013-03-01 09:11:58.703315|21.79|forestry +56|493|65602|4294967370|65.81|46.92|true|nick van buren|2013-03-01 09:11:58.703323|95.24|topology +-2|440|65595|4294967324|14.02|14.62|true|oscar van buren|2013-03-01 09:11:58.703268|28.08|geology +38|462|65565|4294967470|75.33|23.37|false|tom falkner|2013-03-01 09:11:58.703233|30.57|values clariffication +78|332|65750|4294967431|42.02|23.31|false|david garcia|2013-03-01 09:11:58.703221|28.23|biology +56|263|65648|4294967527|56.05|48.23|true|bob ichabod|2013-03-01 09:11:58.703233|18.89|geology +75|487|65720|4294967479|50.24|14.66|false|gabriella brown|2013-03-01 09:11:58.703194|75.74|study skills +17|268|65660|4294967488|65.11|36.26|false|victor hernandez|2013-03-01 09:11:58.703202|18.86|wind surfing +23|365|65702|4294967363|30.17|45.63|false|holly robinson|2013-03-01 09:11:58.703159|7.66|education +41|488|65636|4294967302|28.45|21.45|false|tom laertes|2013-03-01 09:11:58.703250|27.80|philosophy +8|359|65645|4294967419|89.17|0.80|false|rachel brown|2013-03-01 09:11:58.703223|33.29|yard duty +72|372|65692|4294967439|58.23|38.24|false|zach falkner|2013-03-01 09:11:58.703244|79.20|industrial engineering +121|501|65536|4294967513|22.40|47.08|true|yuri ellison|2013-03-01 09:11:58.703079|39.32|american history +105|296|65671|4294967443|41.32|1.41|true|victor steinbeck|2013-03-01 09:11:58.703190|39.27|mathematics +86|468|65705|4294967425|10.98|13.75|false|zach zipper|2013-03-01 09:11:58.703296|68.25|undecided +50|291|65716|4294967433|19.67|13.25|true|ethan nixon|2013-03-01 09:11:58.703219|26.32|philosophy +29|337|65618|4294967457|0.53|36.70|false|luke quirinius|2013-03-01 09:11:58.703190|59.51|history +93|481|65615|4294967428|55.64|45.30|false|bob hernandez|2013-03-01 09:11:58.703254|69.76|education +107|261|65706|4294967450|59.98|27.04|true|ethan robinson|2013-03-01 09:11:58.703099|21.93|xylophone band +17|486|65712|4294967435|19.75|27.77|true|oscar miller|2013-03-01 09:11:58.703201|16.03|forestry +71|462|65755|4294967501|88.51|37.18|true|zach xylophone|2013-03-01 09:11:58.703076|32.79|biology +120|511|65571|4294967400|54.17|33.26|true|sarah johnson|2013-03-01 09:11:58.703188|76.03|religion +114|338|65624|4294967372|27.69|3.36|true|victor garcia|2013-03-01 09:11:58.703198|31.49|debate +58|341|65580|4294967549|53.43|11.40|true|tom miller|2013-03-01 09:11:58.703271|92.64|wind surfing +97|368|65546|4294967492|47.53|41.08|true|sarah garcia|2013-03-01 09:11:58.703313|96.02|topology +38|417|65731|4294967405|63.77|18.88|false|rachel allen|2013-03-01 09:11:58.703202|87.70|nap time +80|429|65775|4294967439|8.41|9.98|true|david zipper|2013-03-01 09:11:58.703154|57.53|values clariffication +66|507|65546|4294967364|34.10|43.88|false|ethan xylophone|2013-03-01 09:11:58.703210|26.11|debate +110|373|65541|4294967330|55.94|46.56|true|yuri allen|2013-03-01 09:11:58.703160|21.59|values clariffication +113|421|65579|4294967314|55.18|45.87|false|calvin quirinius|2013-03-01 09:11:58.703175|8.91|kindergarten +30|318|65756|4294967489|83.02|37.60|true|nick ellison|2013-03-01 09:11:58.703294|25.94|religion +103|486|65569|4294967544|99.34|21.03|false|nick robinson|2013-03-01 09:11:58.703266|79.06|opthamology +38|327|65590|4294967299|92.17|23.49|false|wendy allen|2013-03-01 09:11:58.703091|71.48|history +121|464|65544|4294967372|20.09|9.52|false|gabriella robinson|2013-03-01 09:11:58.703175|92.05|philosophy +71|366|65595|4294967406|11.97|29.38|false|alice polk|2013-03-01 09:11:58.703297|18.21|history +118|264|65755|4294967441|90.49|34.62|false|victor nixon|2013-03-01 09:11:58.703144|68.89|philosophy +89|503|65776|4294967376|64.28|22.80|true|luke steinbeck|2013-03-01 09:11:58.703320|38.54|linguistics +82|292|65585|4294967500|50.06|4.31|false|alice ichabod|2013-03-01 09:11:58.703245|10.93|education +86|425|65717|4294967533|43.31|39.57|false|luke king|2013-03-01 09:11:58.703130|69.06|values clariffication +61|317|65716|4294967459|93.23|13.58|true|victor davidson|2013-03-01 09:11:58.703103|15.42|religion +24|404|65662|4294967336|54.15|4.83|false|irene ellison|2013-03-01 09:11:58.703103|96.44|american history +35|339|65739|4294967464|66.85|11.22|true|victor white|2013-03-01 09:11:58.703276|86.49|mathematics +45|300|65711|4294967524|66.56|3.57|false|oscar carson|2013-03-01 09:11:58.703211|55.36|forestry +9|505|65779|4294967487|51.40|36.50|true|jessica quirinius|2013-03-01 09:11:58.703167|89.00|linguistics +12|490|65600|4294967460|70.03|24.63|true|ethan davidson|2013-03-01 09:11:58.703112|4.89|linguistics +93|368|65782|4294967465|78.85|41.09|false|xavier young|2013-03-01 09:11:58.703118|42.54|zync studies +109|435|65543|4294967343|68.34|13.65|false|alice thompson|2013-03-01 09:11:58.703310|85.50|industrial engineering +-2|463|65565|4294967446|90.86|37.94|true|luke laertes|2013-03-01 09:11:58.703156|99.52|forestry +37|396|65702|4294967431|25.46|24.89|false|bob allen|2013-03-01 09:11:58.703251|41.53|forestry +32|315|65584|4294967519|63.10|12.58|true|quinn king|2013-03-01 09:11:58.703112|94.33|geology +123|470|65743|4294967505|70.65|7.35|false|zach carson|2013-03-01 09:11:58.703082|22.94|biology +17|364|65760|4294967548|15.93|43.48|false|nick ovid|2013-03-01 09:11:58.703265|91.56|linguistics +98|295|65560|4294967467|88.29|49.59|true|yuri quirinius|2013-03-01 09:11:58.703189|56.98|kindergarten +109|436|65754|4294967391|97.71|6.15|false|victor falkner|2013-03-01 09:11:58.703257|97.74|undecided +62|367|65726|4294967509|57.47|37.69|false|zach falkner|2013-03-01 09:11:58.703101|3.09|quiet hour +29|443|65687|4294967520|65.06|30.97|true|tom johnson|2013-03-01 09:11:58.703186|35.78|history +12|385|65585|4294967330|67.75|3.78|true|priscilla miller|2013-03-01 09:11:58.703248|74.57|chemistry +106|464|65658|4294967356|94.03|47.57|true|luke davidson|2013-03-01 09:11:58.703128|11.78|joggying +57|345|65623|4294967374|20.86|7.21|false|priscilla zipper|2013-03-01 09:11:58.703286|27.53|industrial engineering +59|311|65677|4294967388|38.24|27.87|false|holly underhill|2013-03-01 09:11:58.703173|31.94|american history +98|435|65756|4294967412|33.34|47.88|true|zach king|2013-03-01 09:11:58.703305|81.19|nap time +39|376|65708|4294967316|3.37|37.30|false|alice brown|2013-03-01 09:11:58.703182|52.08|joggying +86|339|65776|4294967528|82.07|10.06|false|tom thompson|2013-03-01 09:11:58.703323|44.41|american history +115|429|65692|4294967406|32.96|17.36|true|ethan hernandez|2013-03-01 09:11:58.703143|63.59|linguistics +100|362|65574|4294967394|83.55|26.85|false|quinn brown|2013-03-01 09:11:58.703111|80.80|joggying +108|309|65763|4294967513|97.88|4.42|true|ethan robinson|2013-03-01 09:11:58.703308|38.27|topology +87|489|65564|4294967457|68.79|38.98|false|nick king|2013-03-01 09:11:58.703156|49.12|zync studies +72|500|65775|4294967298|51.04|37.85|false|alice falkner|2013-03-01 09:11:58.703105|69.94|american history +101|335|65769|4294967324|8.01|47.30|false|david white|2013-03-01 09:11:58.703094|7.02|kindergarten +43|293|65633|4294967461|50.02|26.25|false|mike nixon|2013-03-01 09:11:58.703215|62.71|biology +107|426|65572|4294967472|54.27|26.60|true|quinn carson|2013-03-01 09:11:58.703135|64.22|wind surfing +111|356|65755|4294967380|63.29|23.69|false|priscilla brown|2013-03-01 09:11:58.703146|24.87|chemistry +91|474|65687|4294967515|11.30|28.40|true|tom allen|2013-03-01 09:11:58.703288|16.35|zync studies +111|295|65554|4294967480|60.48|17.50|true|nick ellison|2013-03-01 09:11:58.703209|33.65|mathematics +48|261|65678|4294967465|89.19|2.81|false|sarah robinson|2013-03-01 09:11:58.703310|82.53|quiet hour +100|507|65587|4294967526|44.19|46.79|false|oscar king|2013-03-01 09:11:58.703097|38.45|chemistry +91|306|65736|4294967346|91.85|14.28|false|priscilla ichabod|2013-03-01 09:11:58.703171|8.43|biology +32|345|65579|4294967547|8.91|5.05|true|jessica johnson|2013-03-01 09:11:58.703159|70.25|nap time +88|408|65769|4294967395|82.12|12.49|false|irene laertes|2013-03-01 09:11:58.703135|82.47|zync studies +7|395|65661|4294967415|13.73|31.77|true|ethan thompson|2013-03-01 09:11:58.703304|21.26|quiet hour +106|478|65628|4294967466|94.23|48.91|true|tom davidson|2013-03-01 09:11:58.703247|44.91|nap time +46|335|65722|4294967460|27.31|17.14|false|ulysses hernandez|2013-03-01 09:11:58.703210|52.38|forestry +113|464|65609|4294967348|9.50|0.61|true|ethan ellison|2013-03-01 09:11:58.703221|49.55|undecided +30|351|65776|4294967493|48.36|29.42|false|alice young|2013-03-01 09:11:58.703147|76.54|quiet hour +95|363|65611|4294967395|78.23|26.15|false|holly polk|2013-03-01 09:11:58.703102|63.34|forestry +69|416|65666|4294967507|20.44|28.12|false|gabriella brown|2013-03-01 09:11:58.703139|52.80|joggying +95|288|65600|4294967427|60.94|33.88|true|alice xylophone|2013-03-01 09:11:58.703129|63.05|geology +43|305|65574|4294967317|48.39|46.23|false|holly garcia|2013-03-01 09:11:58.703247|10.67|joggying +58|324|65658|4294967513|73.07|40.94|true|irene davidson|2013-03-01 09:11:58.703283|7.59|values clariffication +88|438|65758|4294967370|83.14|12.55|true|jessica hernandez|2013-03-01 09:11:58.703260|4.64|yard duty +38|301|65590|4294967497|50.69|40.79|false|luke garcia|2013-03-01 09:11:58.703110|31.83|study skills +62|346|65758|4294967464|73.76|39.60|true|ethan falkner|2013-03-01 09:11:58.703246|77.01|debate +100|364|65575|4294967298|10.13|29.42|true|wendy nixon|2013-03-01 09:11:58.703302|21.35|philosophy +90|506|65663|4294967439|88.87|24.77|true|victor nixon|2013-03-01 09:11:58.703160|81.70|mathematics +115|440|65631|4294967414|51.16|14.54|false|yuri ichabod|2013-03-01 09:11:58.703132|88.29|topology +106|403|65605|4294967477|85.34|1.41|false|quinn allen|2013-03-01 09:11:58.703272|93.36|xylophone band +11|458|65738|4294967392|52.53|48.68|true|zach falkner|2013-03-01 09:11:58.703257|76.01|history +72|456|65590|4294967329|49.31|32.70|false|zach van buren|2013-03-01 09:11:58.703076|94.44|values clariffication +47|293|65740|4294967398|29.41|35.44|false|nick hernandez|2013-03-01 09:11:58.703139|74.44|yard duty +59|446|65686|4294967438|53.97|14.94|true|xavier quirinius|2013-03-01 09:11:58.703179|98.42|history +62|318|65663|4294967508|64.89|9.31|false|irene white|2013-03-01 09:11:58.703274|29.68|nap time +14|451|65581|4294967434|69.58|47.16|false|david xylophone|2013-03-01 09:11:58.703295|29.39|quiet hour +73|481|65604|4294967495|92.32|32.35|true|priscilla nixon|2013-03-01 09:11:58.703139|79.09|topology +39|391|65565|4294967537|24.19|32.39|true|nick garcia|2013-03-01 09:11:58.703151|37.34|study skills +72|437|65613|4294967339|91.71|36.12|false|jessica davidson|2013-03-01 09:11:58.703269|38.55|kindergarten +35|377|65597|4294967428|48.52|0.20|true|holly hernandez|2013-03-01 09:11:58.703189|84.62|education +89|275|65760|4294967465|71.50|14.86|false|tom miller|2013-03-01 09:11:58.703083|10.11|chemistry +13|465|65745|4294967489|44.87|33.20|true|nick van buren|2013-03-01 09:11:58.703254|91.56|forestry +52|480|65769|4294967487|37.67|45.34|true|holly allen|2013-03-01 09:11:58.703266|67.29|undecided +64|366|65593|4294967397|98.96|38.90|true|victor hernandez|2013-03-01 09:11:58.703098|79.15|geology +106|330|65699|4294967448|3.55|20.60|true|alice thompson|2013-03-01 09:11:58.703317|10.78|undecided +-3|311|65569|4294967460|3.82|35.45|false|luke garcia|2013-03-01 09:11:58.703076|93.38|chemistry +23|345|65725|4294967481|68.23|38.80|false|gabriella ichabod|2013-03-01 09:11:58.703305|69.85|undecided +43|508|65637|4294967448|87.23|13.20|false|bob ellison|2013-03-01 09:11:58.703082|38.88|opthamology +98|290|65670|4294967535|86.82|34.49|true|calvin king|2013-03-01 09:11:58.703136|54.21|american history +29|302|65711|4294967356|28.55|45.40|false|bob falkner|2013-03-01 09:11:58.703257|90.30|joggying +121|333|65632|4294967475|73.85|28.05|false|yuri thompson|2013-03-01 09:11:58.703301|37.22|nap time +82|414|65662|4294967515|16.83|49.01|true|zach polk|2013-03-01 09:11:58.703190|86.86|american history +19|259|65700|4294967501|20.27|49.29|true|irene brown|2013-03-01 09:11:58.703213|74.73|american history +41|382|65542|4294967544|40.11|42.63|true|tom laertes|2013-03-01 09:11:58.703284|49.40|education +25|509|65733|4294967500|66.29|14.30|true|katie nixon|2013-03-01 09:11:58.703294|33.51|undecided +119|407|65770|4294967406|5.63|10.32|true|yuri underhill|2013-03-01 09:11:58.703237|90.68|american history +32|393|65679|4294967520|55.41|49.24|true|wendy king|2013-03-01 09:11:58.703157|20.43|zync studies +25|281|65671|4294967486|72.40|10.66|true|luke ellison|2013-03-01 09:11:58.703095|17.06|forestry +47|423|65718|4294967419|0.18|11.90|false|holly falkner|2013-03-01 09:11:58.703314|67.10|joggying +67|273|65546|4294967443|31.41|16.50|false|yuri ellison|2013-03-01 09:11:58.703252|44.59|nap time +22|296|65783|4294967390|17.26|11.22|false|xavier laertes|2013-03-01 09:11:58.703181|35.58|history +53|406|65575|4294967512|93.79|35.64|false|mike miller|2013-03-01 09:11:58.703260|74.24|kindergarten +41|433|65666|4294967461|38.45|16.29|true|irene johnson|2013-03-01 09:11:58.703158|67.93|kindergarten +105|272|65742|4294967525|45.18|43.54|false|alice davidson|2013-03-01 09:11:58.703267|89.18|history +15|279|65562|4294967535|74.94|30.14|false|ethan falkner|2013-03-01 09:11:58.703300|7.14|topology +96|462|65714|4294967546|93.28|7.90|true|xavier young|2013-03-01 09:11:58.703216|52.52|values clariffication +70|280|65771|4294967501|4.75|29.26|true|wendy robinson|2013-03-01 09:11:58.703226|67.91|wind surfing +93|495|65777|4294967417|76.99|0.40|true|tom polk|2013-03-01 09:11:58.703203|96.30|education +7|425|65729|4294967391|68.08|38.01|true|sarah carson|2013-03-01 09:11:58.703290|34.22|opthamology +26|359|65702|4294967358|18.38|24.02|true|mike allen|2013-03-01 09:11:58.703206|1.07|biology +75|398|65702|4294967380|91.36|17.21|true|alice xylophone|2013-03-01 09:11:58.703263|5.43|opthamology +3|305|65662|4294967506|83.78|34.16|true|mike falkner|2013-03-01 09:11:58.703180|72.04|quiet hour +5|393|65715|4294967371|19.56|48.45|true|irene thompson|2013-03-01 09:11:58.703088|4.49|forestry +79|324|65766|4294967400|76.66|49.19|true|rachel carson|2013-03-01 09:11:58.703125|20.00|study skills +113|457|65550|4294967348|15.90|40.54|false|tom thompson|2013-03-01 09:11:58.703094|0.91|zync studies +45|486|65688|4294967310|14.01|30.31|false|victor miller|2013-03-01 09:11:58.703107|55.37|american history +104|398|65752|4294967355|90.78|21.00|true|yuri miller|2013-03-01 09:11:58.703167|86.52|history +38|292|65748|4294967524|38.18|12.49|true|victor king|2013-03-01 09:11:58.703288|0.05|education +21|472|65756|4294967450|45.21|4.61|false|jessica robinson|2013-03-01 09:11:58.703088|74.53|american history +115|486|65684|4294967522|88.43|36.70|true|irene garcia|2013-03-01 09:11:58.703285|15.28|zync studies +79|287|65679|4294967488|60.01|2.11|true|ulysses hernandez|2013-03-01 09:11:58.703146|72.14|debate +47|499|65678|4294967350|0.94|19.92|true|nick ovid|2013-03-01 09:11:58.703258|34.10|history +113|406|65790|4294967374|29.78|45.51|true|tom ellison|2013-03-01 09:11:58.703207|2.80|xylophone band +17|423|65756|4294967361|21.89|2.49|true|xavier brown|2013-03-01 09:11:58.703189|74.14|joggying +33|327|65752|4294967453|29.95|12.01|false|xavier hernandez|2013-03-01 09:11:58.703163|27.63|values clariffication +95|402|65633|4294967516|6.34|32.67|false|alice hernandez|2013-03-01 09:11:58.703114|90.56|quiet hour +74|397|65756|4294967514|17.04|26.12|true|priscilla thompson|2013-03-01 09:11:58.703097|35.45|topology +13|371|65600|4294967494|35.54|35.84|false|fred ovid|2013-03-01 09:11:58.703140|9.97|debate +113|263|65630|4294967303|95.11|9.55|true|alice garcia|2013-03-01 09:11:58.703079|37.82|opthamology +123|267|65709|4294967518|16.85|20.70|true|irene laertes|2013-03-01 09:11:58.703170|63.94|undecided +118|474|65711|4294967501|36.91|30.63|false|tom zipper|2013-03-01 09:11:58.703231|19.04|undecided +14|312|65689|4294967366|34.28|46.39|false|holly young|2013-03-01 09:11:58.703076|15.40|biology +-2|388|65676|4294967431|25.11|29.00|true|wendy nixon|2013-03-01 09:11:58.703129|52.13|zync studies +34|400|65740|4294967422|93.02|13.92|true|ulysses allen|2013-03-01 09:11:58.703075|42.88|study skills +117|481|65717|4294967450|77.95|8.03|true|priscilla johnson|2013-03-01 09:11:58.703299|98.82|kindergarten +112|326|65759|4294967318|48.78|1.40|false|jessica davidson|2013-03-01 09:11:58.703241|16.00|forestry +81|266|65576|4294967306|44.54|45.97|true|david zipper|2013-03-01 09:11:58.703287|66.43|xylophone band +78|420|65726|4294967509|31.84|36.05|false|jessica brown|2013-03-01 09:11:58.703071|60.77|xylophone band +84|496|65630|4294967517|97.48|27.66|true|wendy robinson|2013-03-01 09:11:58.703088|95.41|chemistry +51|419|65575|4294967534|67.00|36.74|true|katie underhill|2013-03-01 09:11:58.703214|75.80|forestry +115|286|65579|4294967330|15.40|41.60|true|bob ellison|2013-03-01 09:11:58.703275|99.79|religion +73|342|65692|4294967358|53.63|18.59|false|zach xylophone|2013-03-01 09:11:58.703105|19.28|joggying +46|280|65740|4294967325|34.02|22.53|true|david van buren|2013-03-01 09:11:58.703218|77.56|religion +27|478|65575|4294967420|4.54|26.29|true|mike brown|2013-03-01 09:11:58.703178|42.68|american history +3|259|65738|4294967448|52.94|46.89|true|yuri allen|2013-03-01 09:11:58.703180|50.01|history +38|365|65571|4294967526|49.62|4.83|true|yuri ellison|2013-03-01 09:11:58.703215|0.04|history +90|470|65591|4294967368|15.45|8.28|true|nick garcia|2013-03-01 09:11:58.703144|77.77|study skills +83|376|65574|4294967298|88.55|26.17|true|xavier brown|2013-03-01 09:11:58.703203|11.28|american history +99|378|65771|4294967480|30.65|11.56|false|gabriella ellison|2013-03-01 09:11:58.703159|37.06|mathematics +1|491|65755|4294967523|27.15|16.41|true|nick ovid|2013-03-01 09:11:58.703306|4.58|philosophy +94|343|65553|4294967423|81.15|28.58|false|rachel nixon|2013-03-01 09:11:58.703159|21.98|topology +52|336|65670|4294967455|54.92|22.42|false|sarah robinson|2013-03-01 09:11:58.703316|6.40|yard duty +-1|411|65664|4294967308|55.44|4.18|true|gabriella white|2013-03-01 09:11:58.703079|68.26|debate +75|332|65683|4294967460|14.81|17.38|false|jessica hernandez|2013-03-01 09:11:58.703314|87.97|quiet hour +108|379|65786|4294967542|61.59|39.91|false|jessica robinson|2013-03-01 09:11:58.703314|70.01|quiet hour +67|431|65604|4294967323|83.09|23.25|true|quinn miller|2013-03-01 09:11:58.703319|14.35|kindergarten +52|261|65644|4294967395|18.71|13.02|false|bob carson|2013-03-01 09:11:58.703270|84.28|history +46|344|65624|4294967454|14.50|23.17|true|rachel polk|2013-03-01 09:11:58.703269|76.18|education +57|465|65768|4294967538|83.67|11.38|true|oscar king|2013-03-01 09:11:58.703302|88.12|linguistics +56|477|65569|4294967373|18.36|49.75|false|tom hernandez|2013-03-01 09:11:58.703196|15.19|history +1|474|65547|4294967392|54.32|29.39|true|quinn underhill|2013-03-01 09:11:58.703272|69.90|zync studies +18|384|65547|4294967429|12.54|14.51|true|nick white|2013-03-01 09:11:58.703126|82.54|chemistry +71|313|65545|4294967356|95.21|27.64|true|wendy xylophone|2013-03-01 09:11:58.703269|0.22|mathematics +114|348|65622|4294967423|56.13|41.12|false|jessica allen|2013-03-01 09:11:58.703224|93.46|mathematics +101|302|65647|4294967530|59.16|7.74|false|irene steinbeck|2013-03-01 09:11:58.703198|38.56|industrial engineering +2|271|65585|4294967423|87.00|28.70|true|luke xylophone|2013-03-01 09:11:58.703262|63.51|history +41|488|65605|4294967424|26.84|45.52|false|sarah underhill|2013-03-01 09:11:58.703318|89.23|quiet hour +93|299|65781|4294967396|87.79|3.22|false|alice xylophone|2013-03-01 09:11:58.703197|30.23|philosophy +66|497|65766|4294967350|57.25|9.54|true|wendy zipper|2013-03-01 09:11:58.703191|24.63|chemistry +68|434|65737|4294967316|73.26|13.19|false|xavier carson|2013-03-01 09:11:58.703074|78.92|biology +15|499|65650|4294967419|34.83|17.34|false|oscar hernandez|2013-03-01 09:11:58.703093|45.03|opthamology +1|449|65637|4294967421|32.76|41.60|false|priscilla ellison|2013-03-01 09:11:58.703092|4.16|yard duty +106|364|65645|4294967376|13.33|0.11|true|nick robinson|2013-03-01 09:11:58.703175|42.40|values clariffication +28|273|65560|4294967503|74.97|39.03|false|fred allen|2013-03-01 09:11:58.703083|46.99|biology +119|427|65668|4294967527|93.08|6.73|true|fred hernandez|2013-03-01 09:11:58.703149|80.51|chemistry +98|398|65697|4294967301|6.42|32.75|false|wendy king|2013-03-01 09:11:58.703178|54.31|history +108|476|65555|4294967374|26.61|30.25|true|katie robinson|2013-03-01 09:11:58.703105|95.84|opthamology +89|394|65740|4294967505|32.56|33.98|false|wendy hernandez|2013-03-01 09:11:58.703215|9.37|yard duty +121|350|65646|4294967440|27.63|34.77|false|quinn brown|2013-03-01 09:11:58.703253|62.20|religion +59|314|65558|4294967498|98.40|49.78|true|tom white|2013-03-01 09:11:58.703196|82.39|joggying +19|464|65659|4294967449|60.66|47.16|false|bob zipper|2013-03-01 09:11:58.703222|47.97|american history +88|326|65769|4294967500|86.30|7.89|true|nick zipper|2013-03-01 09:11:58.703309|46.36|quiet hour +99|332|65642|4294967550|12.16|7.27|false|bob garcia|2013-03-01 09:11:58.703278|26.99|chemistry +9|498|65621|4294967420|61.01|21.24|true|tom underhill|2013-03-01 09:11:58.703107|97.29|geology +97|321|65787|4294967539|90.31|41.25|true|katie robinson|2013-03-01 09:11:58.703122|84.01|philosophy +91|305|65620|4294967335|96.10|5.28|true|quinn underhill|2013-03-01 09:11:58.703272|7.61|values clariffication +72|501|65748|4294967446|67.72|36.02|false|rachel quirinius|2013-03-01 09:11:58.703230|81.36|topology +12|379|65784|4294967392|32.19|14.20|false|rachel xylophone|2013-03-01 09:11:58.703104|29.54|history +52|410|65543|4294967348|71.35|48.38|true|victor ichabod|2013-03-01 09:11:58.703107|27.12|zync studies +46|405|65787|4294967360|5.17|32.44|true|david underhill|2013-03-01 09:11:58.703166|48.54|chemistry +123|498|65769|4294967345|35.10|29.96|true|luke ichabod|2013-03-01 09:11:58.703099|4.68|values clariffication +12|470|65633|4294967411|42.83|45.56|true|tom thompson|2013-03-01 09:11:58.703222|68.46|mathematics +51|286|65768|4294967504|63.90|39.27|true|mike thompson|2013-03-01 09:11:58.703176|90.84|linguistics +38|345|65769|4294967305|59.57|19.30|true|jessica nixon|2013-03-01 09:11:58.703321|87.61|history +101|276|65791|4294967414|13.25|43.90|true|jessica davidson|2013-03-01 09:11:58.703290|3.01|xylophone band +77|430|65598|4294967390|82.93|37.42|false|irene thompson|2013-03-01 09:11:58.703169|99.66|industrial engineering +88|352|65770|4294967462|65.40|40.41|false|luke ovid|2013-03-01 09:11:58.703239|77.12|zync studies +68|303|65728|4294967422|20.85|38.19|false|bob quirinius|2013-03-01 09:11:58.703111|24.89|chemistry +94|376|65550|4294967434|81.96|35.84|false|calvin miller|2013-03-01 09:11:58.703122|84.90|american history +46|484|65778|4294967518|26.16|45.58|false|victor king|2013-03-01 09:11:58.703109|45.86|education +5|451|65675|4294967486|33.93|43.36|true|mike robinson|2013-03-01 09:11:58.703129|54.04|education +64|303|65646|4294967467|33.80|14.77|false|bob laertes|2013-03-01 09:11:58.703223|86.85|zync studies +72|444|65705|4294967501|52.37|45.57|true|quinn young|2013-03-01 09:11:58.703140|55.68|linguistics +35|487|65623|4294967399|37.63|2.18|true|ethan xylophone|2013-03-01 09:11:58.703073|38.43|biology +55|307|65609|4294967511|7.90|21.70|false|sarah xylophone|2013-03-01 09:11:58.703298|72.04|forestry +2|409|65567|4294967359|36.53|28.29|true|ethan carson|2013-03-01 09:11:58.703264|87.97|kindergarten +65|409|65705|4294967502|13.44|20.46|true|quinn ellison|2013-03-01 09:11:58.703235|51.76|kindergarten +78|425|65643|4294967345|14.29|26.19|true|holly miller|2013-03-01 09:11:58.703132|72.62|study skills +5|395|65569|4294967296|52.76|37.54|false|nick steinbeck|2013-03-01 09:11:58.703103|2.84|forestry +23|470|65708|4294967524|24.86|11.44|false|rachel allen|2013-03-01 09:11:58.703243|24.04|mathematics +-2|383|65600|4294967455|67.97|26.28|false|mike falkner|2013-03-01 09:11:58.703206|61.31|mathematics +35|369|65772|4294967299|32.61|18.07|false|jessica robinson|2013-03-01 09:11:58.703174|24.20|religion +53|342|65752|4294967448|90.76|31.92|true|alice falkner|2013-03-01 09:11:58.703087|9.87|industrial engineering +100|488|65563|4294967520|8.26|22.00|true|quinn johnson|2013-03-01 09:11:58.703223|37.71|values clariffication +95|511|65578|4294967340|76.32|43.80|false|irene young|2013-03-01 09:11:58.703262|2.96|wind surfing +23|467|65768|4294967374|3.23|17.28|false|nick king|2013-03-01 09:11:58.703240|30.11|religion +94|489|65703|4294967407|94.59|5.84|false|katie falkner|2013-03-01 09:11:58.703149|84.25|wind surfing +92|464|65773|4294967465|19.34|21.35|false|priscilla young|2013-03-01 09:11:58.703144|21.28|biology +0|281|65582|4294967387|51.31|14.21|true|irene polk|2013-03-01 09:11:58.703298|58.84|biology +10|375|65735|4294967427|57.14|13.67|false|priscilla polk|2013-03-01 09:11:58.703164|60.98|undecided +38|506|65762|4294967517|50.63|11.40|true|tom allen|2013-03-01 09:11:58.703161|5.37|nap time +76|443|65599|4294967424|64.01|7.43|false|nick brown|2013-03-01 09:11:58.703111|47.07|mathematics +42|449|65586|4294967542|72.69|8.84|true|jessica garcia|2013-03-01 09:11:58.703163|83.64|american history +43|416|65635|4294967478|12.91|16.83|false|holly white|2013-03-01 09:11:58.703100|38.22|joggying +67|311|65700|4294967320|22.88|34.76|true|gabriella miller|2013-03-01 09:11:58.703148|9.92|linguistics +54|481|65558|4294967341|24.60|11.80|false|yuri brown|2013-03-01 09:11:58.703237|40.67|geology +33|301|65677|4294967477|14.40|11.49|false|jessica white|2013-03-01 09:11:58.703150|35.96|geology +69|383|65562|4294967525|99.77|49.20|true|fred davidson|2013-03-01 09:11:58.703278|73.35|zync studies +27|386|65714|4294967323|73.24|15.33|false|sarah quirinius|2013-03-01 09:11:58.703074|78.53|values clariffication +16|368|65606|4294967423|52.71|33.60|true|david allen|2013-03-01 09:11:58.703177|37.11|education +107|451|65623|4294967538|3.10|13.71|true|oscar nixon|2013-03-01 09:11:58.703226|3.60|industrial engineering +119|465|65540|4294967430|35.96|41.95|false|tom quirinius|2013-03-01 09:11:58.703197|32.45|american history +102|464|65544|4294967502|19.10|8.04|true|ethan ovid|2013-03-01 09:11:58.703071|73.80|forestry +32|498|65739|4294967328|14.22|45.12|false|victor zipper|2013-03-01 09:11:58.703146|85.40|values clariffication +87|432|65760|4294967497|51.30|36.32|true|yuri polk|2013-03-01 09:11:58.703144|19.15|values clariffication +3|327|65710|4294967349|87.11|24.71|true|quinn carson|2013-03-01 09:11:58.703315|53.30|chemistry +111|469|65741|4294967400|34.07|7.91|false|mike carson|2013-03-01 09:11:58.703240|88.88|nap time +11|264|65685|4294967521|73.42|16.63|true|victor white|2013-03-01 09:11:58.703103|91.54|zync studies +28|391|65698|4294967483|33.41|2.58|true|zach underhill|2013-03-01 09:11:58.703132|87.56|industrial engineering +119|451|65548|4294967455|54.12|12.88|false|xavier johnson|2013-03-01 09:11:58.703164|68.04|linguistics +21|500|65696|4294967332|22.75|18.92|false|oscar polk|2013-03-01 09:11:58.703227|90.47|nap time +23|355|65552|4294967443|28.38|20.21|false|holly miller|2013-03-01 09:11:58.703290|15.26|history +22|374|65589|4294967318|98.14|1.25|true|david carson|2013-03-01 09:11:58.703075|71.84|philosophy +26|369|65654|4294967543|65.30|8.75|false|yuri johnson|2013-03-01 09:11:58.703195|9.09|religion +102|303|65661|4294967487|25.31|11.37|false|xavier falkner|2013-03-01 09:11:58.703138|65.33|study skills +101|338|65775|4294967308|34.65|35.33|true|nick van buren|2013-03-01 09:11:58.703199|60.75|linguistics +57|479|65597|4294967473|35.55|40.05|true|rachel ichabod|2013-03-01 09:11:58.703323|8.77|topology +40|287|65776|4294967464|72.20|45.10|false|oscar allen|2013-03-01 09:11:58.703115|1.00|religion +64|499|65698|4294967397|32.81|24.68|true|katie van buren|2013-03-01 09:11:58.703317|4.16|forestry +114|352|65787|4294967541|79.47|40.81|true|xavier ichabod|2013-03-01 09:11:58.703313|26.62|xylophone band +2|369|65599|4294967495|42.11|2.56|true|oscar carson|2013-03-01 09:11:58.703152|50.78|joggying +119|403|65544|4294967304|73.95|12.56|false|alice ellison|2013-03-01 09:11:58.703123|66.02|zync studies +5|268|65596|4294967547|19.15|34.88|false|katie davidson|2013-03-01 09:11:58.703123|81.89|opthamology +97|451|65783|4294967407|93.59|40.96|true|alice steinbeck|2013-03-01 09:11:58.703238|5.24|mathematics +66|270|65755|4294967546|52.14|34.28|true|david ovid|2013-03-01 09:11:58.703179|55.70|opthamology +102|411|65552|4294967356|19.55|24.37|false|fred ellison|2013-03-01 09:11:58.703250|96.13|values clariffication +29|291|65737|4294967535|20.38|18.64|false|ulysses laertes|2013-03-01 09:11:58.703278|18.46|forestry +20|422|65755|4294967486|12.67|35.53|false|gabriella robinson|2013-03-01 09:11:58.703235|46.86|forestry +59|273|65766|4294967499|29.10|45.78|false|david thompson|2013-03-01 09:11:58.703293|70.70|undecided +92|282|65658|4294967436|62.77|34.77|false|ulysses underhill|2013-03-01 09:11:58.703232|69.16|education +124|390|65638|4294967550|17.41|8.28|true|oscar king|2013-03-01 09:11:58.703098|28.91|forestry +101|396|65772|4294967425|25.60|6.24|true|david nixon|2013-03-01 09:11:58.703192|28.53|zync studies +61|463|65613|4294967316|34.83|33.68|false|mike underhill|2013-03-01 09:11:58.703305|82.04|debate +-1|352|65690|4294967527|69.28|39.80|true|victor van buren|2013-03-01 09:11:58.703121|11.95|yard duty +62|286|65671|4294967438|2.79|44.44|true|xavier white|2013-03-01 09:11:58.703190|96.82|wind surfing +58|330|65655|4294967338|71.64|4.63|true|luke laertes|2013-03-01 09:11:58.703079|93.26|zync studies +121|340|65740|4294967365|20.36|32.38|true|calvin miller|2013-03-01 09:11:58.703119|27.04|undecided +49|385|65570|4294967375|0.68|1.58|false|bob xylophone|2013-03-01 09:11:58.703091|38.02|history +76|465|65737|4294967444|37.55|45.81|true|luke johnson|2013-03-01 09:11:58.703259|30.20|forestry +3|363|65593|4294967467|73.64|38.72|true|bob hernandez|2013-03-01 09:11:58.703146|49.51|nap time +103|455|65751|4294967421|6.54|22.30|true|xavier king|2013-03-01 09:11:58.703091|89.79|debate +46|382|65547|4294967390|24.87|49.95|false|calvin ellison|2013-03-01 09:11:58.703273|12.67|debate +70|455|65746|4294967350|28.94|27.85|false|bob xylophone|2013-03-01 09:11:58.703174|83.62|yard duty +45|494|65727|4294967462|19.33|18.61|false|sarah robinson|2013-03-01 09:11:58.703180|46.32|undecided +72|501|65608|4294967490|47.81|32.55|true|david young|2013-03-01 09:11:58.703314|27.01|opthamology +33|365|65731|4294967349|27.56|27.50|false|fred hernandez|2013-03-01 09:11:58.703257|23.21|values clariffication +0|305|65673|4294967417|84.87|14.63|false|calvin zipper|2013-03-01 09:11:58.703226|55.73|geology +63|433|65592|4294967431|27.88|33.25|false|xavier ellison|2013-03-01 09:11:58.703308|64.28|forestry +92|478|65712|4294967522|97.55|38.78|false|oscar carson|2013-03-01 09:11:58.703136|95.67|geology +72|257|65756|4294967414|24.44|6.91|false|fred zipper|2013-03-01 09:11:58.703217|56.98|religion +4|414|65789|4294967492|26.00|0.85|true|calvin miller|2013-03-01 09:11:58.703128|96.05|study skills +13|508|65681|4294967376|63.79|43.50|true|luke hernandez|2013-03-01 09:11:58.703222|87.58|yard duty +15|339|65619|4294967500|18.31|19.13|false|nick hernandez|2013-03-01 09:11:58.703080|78.75|nap time +67|278|65680|4294967328|98.56|21.56|true|ulysses brown|2013-03-01 09:11:58.703107|15.01|topology +33|256|65752|4294967318|61.21|33.23|false|victor hernandez|2013-03-01 09:11:58.703259|80.08|zync studies +83|259|65740|4294967309|85.27|38.87|true|wendy hernandez|2013-03-01 09:11:58.703211|47.41|chemistry +122|256|65596|4294967401|5.35|44.00|false|victor davidson|2013-03-01 09:11:58.703214|30.66|industrial engineering +86|285|65742|4294967396|12.66|13.39|false|holly underhill|2013-03-01 09:11:58.703306|13.92|linguistics +59|471|65581|4294967320|57.47|43.12|false|bob davidson|2013-03-01 09:11:58.703215|36.65|religion +0|334|65785|4294967333|39.11|17.92|true|bob robinson|2013-03-01 09:11:58.703235|51.84|geology +57|367|65770|4294967365|16.71|37.66|true|oscar xylophone|2013-03-01 09:11:58.703305|88.79|values clariffication +20|404|65705|4294967517|70.97|14.00|true|xavier johnson|2013-03-01 09:11:58.703267|53.94|topology +53|317|65537|4294967414|59.82|24.76|true|wendy van buren|2013-03-01 09:11:58.703087|36.60|yard duty +52|341|65586|4294967319|39.33|14.81|true|nick laertes|2013-03-01 09:11:58.703305|42.62|industrial engineering +54|462|65660|4294967431|28.38|12.30|false|victor steinbeck|2013-03-01 09:11:58.703311|22.73|zync studies +94|493|65634|4294967475|30.11|37.83|false|katie thompson|2013-03-01 09:11:58.703218|55.64|history +74|442|65758|4294967350|42.48|15.90|false|zach allen|2013-03-01 09:11:58.703175|76.57|american history +122|469|65663|4294967361|91.47|6.90|true|quinn laertes|2013-03-01 09:11:58.703323|43.85|philosophy +42|420|65643|4294967318|57.70|37.60|false|bob white|2013-03-01 09:11:58.703266|17.59|joggying +2|379|65637|4294967442|83.70|28.57|false|holly quirinius|2013-03-01 09:11:58.703305|93.24|xylophone band +7|288|65611|4294967521|96.71|0.23|true|rachel davidson|2013-03-01 09:11:58.703075|17.23|joggying +17|409|65694|4294967498|49.91|0.89|true|victor nixon|2013-03-01 09:11:58.703190|93.01|forestry +42|429|65583|4294967524|23.54|21.40|false|nick young|2013-03-01 09:11:58.703270|12.86|kindergarten +27|342|65771|4294967431|70.32|12.52|true|victor king|2013-03-01 09:11:58.703297|77.10|opthamology +123|466|65539|4294967495|86.55|13.33|true|david white|2013-03-01 09:11:58.703145|59.49|biology +106|445|65776|4294967503|20.14|7.49|true|rachel quirinius|2013-03-01 09:11:58.703301|69.47|biology +82|382|65631|4294967474|36.51|39.62|false|yuri white|2013-03-01 09:11:58.703307|43.44|yard duty +64|341|65560|4294967336|79.34|25.20|true|jessica ellison|2013-03-01 09:11:58.703250|63.30|yard duty +115|317|65586|4294967466|28.15|46.61|false|katie xylophone|2013-03-01 09:11:58.703265|68.10|debate +24|432|65565|4294967395|43.09|27.05|false|sarah ellison|2013-03-01 09:11:58.703254|60.66|wind surfing +24|454|65578|4294967515|37.58|15.89|false|zach carson|2013-03-01 09:11:58.703204|54.16|xylophone band +99|377|65747|4294967445|54.34|39.71|true|oscar thompson|2013-03-01 09:11:58.703277|92.78|zync studies +62|351|65586|4294967446|73.53|5.99|true|gabriella ellison|2013-03-01 09:11:58.703313|76.30|opthamology +124|381|65585|4294967311|23.75|31.09|false|victor ichabod|2013-03-01 09:11:58.703120|31.29|industrial engineering +22|312|65597|4294967526|28.48|14.10|true|bob steinbeck|2013-03-01 09:11:58.703094|84.41|mathematics +44|376|65707|4294967355|18.71|38.31|false|alice miller|2013-03-01 09:11:58.703189|88.11|linguistics +117|425|65645|4294967480|4.71|44.71|false|katie ichabod|2013-03-01 09:11:58.703217|30.74|yard duty +48|266|65592|4294967515|91.09|37.24|true|holly van buren|2013-03-01 09:11:58.703209|85.70|study skills +36|368|65640|4294967548|62.29|19.39|true|gabriella underhill|2013-03-01 09:11:58.703288|44.26|study skills +122|323|65657|4294967399|72.91|30.74|true|mike underhill|2013-03-01 09:11:58.703106|60.29|industrial engineering +5|403|65648|4294967416|69.01|2.01|true|katie quirinius|2013-03-01 09:11:58.703284|60.46|opthamology +67|367|65693|4294967300|1.43|37.53|true|irene ichabod|2013-03-01 09:11:58.703186|38.66|undecided +72|367|65699|4294967417|87.42|45.69|false|victor laertes|2013-03-01 09:11:58.703286|28.61|undecided +4|429|65703|4294967307|38.17|35.54|false|katie thompson|2013-03-01 09:11:58.703112|3.59|american history +70|430|65621|4294967344|11.43|42.13|true|quinn falkner|2013-03-01 09:11:58.703308|79.08|joggying +123|392|65761|4294967545|22.33|2.49|false|bob brown|2013-03-01 09:11:58.703276|34.85|undecided +8|377|65607|4294967342|63.55|20.34|false|luke zipper|2013-03-01 09:11:58.703300|40.88|joggying +25|405|65595|4294967383|46.17|3.17|false|bob xylophone|2013-03-01 09:11:58.703183|80.95|kindergarten +9|279|65545|4294967338|84.92|0.43|false|priscilla thompson|2013-03-01 09:11:58.703091|54.05|industrial engineering +-2|346|65627|4294967357|59.20|45.96|false|sarah white|2013-03-01 09:11:58.703170|82.20|forestry +0|367|65667|4294967331|92.74|9.04|false|rachel thompson|2013-03-01 09:11:58.703299|22.60|yard duty +39|310|65563|4294967531|99.29|21.99|false|yuri garcia|2013-03-01 09:11:58.703129|27.87|zync studies +58|389|65560|4294967520|44.42|5.91|true|david ellison|2013-03-01 09:11:58.703245|2.06|zync studies +78|269|65568|4294967357|11.56|48.27|true|irene nixon|2013-03-01 09:11:58.703275|89.40|mathematics +117|488|65668|4294967509|34.12|6.42|true|bob young|2013-03-01 09:11:58.703319|10.59|industrial engineering +89|388|65568|4294967510|51.02|10.95|false|sarah zipper|2013-03-01 09:11:58.703124|27.34|geology +51|350|65537|4294967448|55.58|12.03|true|holly laertes|2013-03-01 09:11:58.703161|94.52|american history +58|367|65603|4294967366|71.34|47.43|true|ethan nixon|2013-03-01 09:11:58.703283|22.77|linguistics +5|438|65730|4294967374|95.53|30.67|true|rachel falkner|2013-03-01 09:11:58.703248|68.01|nap time +37|430|65774|4294967472|81.26|15.05|true|ethan thompson|2013-03-01 09:11:58.703178|33.63|philosophy +38|408|65603|4294967503|73.83|30.17|false|mike miller|2013-03-01 09:11:58.703322|82.07|religion +110|340|65545|4294967337|0.01|21.13|true|yuri thompson|2013-03-01 09:11:58.703097|22.68|religion +120|404|65638|4294967441|20.41|22.56|false|holly quirinius|2013-03-01 09:11:58.703158|60.85|industrial engineering +91|310|65709|4294967399|65.97|32.53|true|mike carson|2013-03-01 09:11:58.703265|47.77|forestry +113|314|65690|4294967326|75.01|22.49|false|katie carson|2013-03-01 09:11:58.703103|72.22|american history +17|331|65734|4294967345|46.88|44.27|true|alice garcia|2013-03-01 09:11:58.703257|44.90|industrial engineering +12|280|65745|4294967343|13.39|11.97|false|fred brown|2013-03-01 09:11:58.703268|76.40|kindergarten +97|315|65555|4294967463|65.84|14.63|false|gabriella thompson|2013-03-01 09:11:58.703100|72.23|nap time +12|466|65574|4294967426|43.00|23.60|false|gabriella ellison|2013-03-01 09:11:58.703140|18.96|zync studies +71|372|65655|4294967416|95.65|19.58|false|xavier brown|2013-03-01 09:11:58.703120|16.91|topology +6|314|65694|4294967309|72.89|27.67|false|ulysses garcia|2013-03-01 09:11:58.703212|5.09|topology +81|466|65627|4294967528|83.65|42.06|false|sarah hernandez|2013-03-01 09:11:58.703157|97.75|mathematics +40|316|65647|4294967348|45.58|22.92|false|irene ovid|2013-03-01 09:11:58.703288|8.48|linguistics +80|365|65625|4294967500|51.14|41.26|true|zach johnson|2013-03-01 09:11:58.703283|24.62|nap time +18|268|65720|4294967463|24.08|38.27|false|calvin ichabod|2013-03-01 09:11:58.703164|32.25|industrial engineering +123|417|65569|4294967434|64.82|43.98|false|gabriella davidson|2013-03-01 09:11:58.703226|99.94|opthamology +82|370|65667|4294967416|54.10|1.84|false|priscilla thompson|2013-03-01 09:11:58.703072|49.82|linguistics +100|422|65543|4294967463|3.58|14.19|false|rachel zipper|2013-03-01 09:11:58.703198|69.55|geology +16|358|65627|4294967387|70.54|24.95|true|sarah johnson|2013-03-01 09:11:58.703266|11.20|american history +57|269|65586|4294967442|40.84|38.53|true|ulysses robinson|2013-03-01 09:11:58.703311|48.37|industrial engineering +25|353|65695|4294967313|88.01|32.85|true|nick miller|2013-03-01 09:11:58.703210|4.57|biology +49|413|65764|4294967531|32.36|13.47|false|priscilla zipper|2013-03-01 09:11:58.703177|61.81|history +10|425|65557|4294967424|8.06|49.17|true|irene quirinius|2013-03-01 09:11:58.703293|14.26|chemistry +80|426|65745|4294967532|40.15|35.94|false|sarah hernandez|2013-03-01 09:11:58.703287|56.02|yard duty +52|489|65564|4294967370|90.00|9.70|false|mike carson|2013-03-01 09:11:58.703201|14.49|xylophone band +103|442|65756|4294967399|36.42|32.01|true|bob xylophone|2013-03-01 09:11:58.703126|39.12|quiet hour +60|475|65564|4294967398|68.90|40.81|true|oscar allen|2013-03-01 09:11:58.703230|83.05|wind surfing +18|462|65543|4294967359|16.10|7.96|false|xavier polk|2013-03-01 09:11:58.703169|21.63|xylophone band +98|388|65689|4294967476|62.64|40.54|false|zach steinbeck|2013-03-01 09:11:58.703151|11.20|education +122|476|65724|4294967387|3.43|25.90|true|holly carson|2013-03-01 09:11:58.703236|26.98|debate +30|452|65686|4294967409|89.79|44.88|false|oscar quirinius|2013-03-01 09:11:58.703207|24.71|kindergarten +67|356|65765|4294967481|66.58|39.83|false|david ovid|2013-03-01 09:11:58.703115|42.84|zync studies +77|324|65682|4294967307|22.46|48.37|true|mike ellison|2013-03-01 09:11:58.703192|16.70|joggying +59|465|65708|4294967410|54.80|30.20|false|yuri falkner|2013-03-01 09:11:58.703213|80.44|debate +33|461|65703|4294967538|22.16|27.44|false|quinn laertes|2013-03-01 09:11:58.703122|25.31|industrial engineering +44|365|65769|4294967408|44.97|43.57|true|xavier king|2013-03-01 09:11:58.703087|2.77|yard duty +105|282|65773|4294967531|52.12|35.66|true|katie young|2013-03-01 09:11:58.703129|68.88|philosophy +56|319|65689|4294967542|28.67|29.94|true|wendy hernandez|2013-03-01 09:11:58.703073|72.47|zync studies +79|444|65629|4294967417|27.89|3.73|true|wendy underhill|2013-03-01 09:11:58.703317|77.18|values clariffication +23|449|65769|4294967332|86.93|23.67|false|jessica nixon|2013-03-01 09:11:58.703205|57.86|american history +86|410|65558|4294967369|56.78|32.39|true|yuri polk|2013-03-01 09:11:58.703241|30.96|debate +70|452|65671|4294967351|87.97|33.98|true|oscar quirinius|2013-03-01 09:11:58.703266|19.34|debate +54|412|65736|4294967472|28.91|14.10|false|rachel thompson|2013-03-01 09:11:58.703183|41.44|education +117|266|65572|4294967444|2.78|48.98|false|holly white|2013-03-01 09:11:58.703320|79.53|opthamology +114|437|65729|4294967492|55.34|9.42|false|bob laertes|2013-03-01 09:11:58.703112|68.82|yard duty +89|328|65565|4294967381|65.69|11.49|false|gabriella brown|2013-03-01 09:11:58.703159|58.15|quiet hour +34|364|65766|4294967307|4.13|35.89|false|wendy young|2013-03-01 09:11:58.703299|92.35|mathematics +20|262|65640|4294967460|9.92|47.04|false|tom king|2013-03-01 09:11:58.703225|27.64|topology +120|265|65651|4294967378|62.55|1.56|true|sarah johnson|2013-03-01 09:11:58.703129|5.18|xylophone band +94|462|65775|4294967543|84.42|13.72|false|priscilla garcia|2013-03-01 09:11:58.703207|16.79|study skills +51|352|65584|4294967515|51.86|31.86|true|irene falkner|2013-03-01 09:11:58.703228|14.88|wind surfing +112|383|65654|4294967312|5.01|49.41|true|fred polk|2013-03-01 09:11:58.703175|58.31|history +15|471|65617|4294967531|42.72|47.01|true|oscar ellison|2013-03-01 09:11:58.703077|84.70|education +103|316|65616|4294967459|12.34|15.86|true|wendy robinson|2013-03-01 09:11:58.703324|41.54|values clariffication +42|456|65752|4294967428|61.28|48.09|false|priscilla ellison|2013-03-01 09:11:58.703266|52.05|religion +66|410|65787|4294967400|0.52|29.43|true|david hernandez|2013-03-01 09:11:58.703200|93.79|debate +93|437|65773|4294967317|40.98|12.76|false|oscar davidson|2013-03-01 09:11:58.703126|8.90|debate +53|489|65708|4294967472|42.66|26.45|false|ulysses johnson|2013-03-01 09:11:58.703138|72.55|education +47|499|65568|4294967537|61.25|37.16|false|irene quirinius|2013-03-01 09:11:58.703170|23.47|nap time +27|354|65760|4294967432|75.17|35.88|true|mike young|2013-03-01 09:11:58.703305|7.38|geology +73|389|65544|4294967431|22.89|37.48|false|calvin thompson|2013-03-01 09:11:58.703299|24.97|philosophy +27|489|65716|4294967315|8.75|24.50|false|jessica thompson|2013-03-01 09:11:58.703202|82.43|wind surfing +40|419|65616|4294967422|39.70|44.56|true|oscar nixon|2013-03-01 09:11:58.703216|61.56|chemistry +106|425|65725|4294967509|12.99|39.02|false|oscar ovid|2013-03-01 09:11:58.703167|0.80|history +75|341|65654|4294967367|78.35|36.59|false|quinn underhill|2013-03-01 09:11:58.703254|77.33|yard duty +11|357|65770|4294967417|71.97|46.47|false|luke king|2013-03-01 09:11:58.703231|18.21|mathematics +49|472|65587|4294967543|52.19|8.89|false|sarah hernandez|2013-03-01 09:11:58.703290|37.03|xylophone band +0|431|65700|4294967529|30.43|17.43|true|tom robinson|2013-03-01 09:11:58.703317|76.99|geology +31|295|65710|4294967542|70.55|25.96|true|zach white|2013-03-01 09:11:58.703213|56.04|chemistry +21|368|65609|4294967415|44.39|8.39|true|xavier ovid|2013-03-01 09:11:58.703211|11.87|topology +-3|284|65566|4294967400|62.81|39.10|false|jessica white|2013-03-01 09:11:58.703199|69.98|opthamology +43|294|65709|4294967420|16.41|27.09|true|xavier zipper|2013-03-01 09:11:58.703188|35.95|debate +5|457|65710|4294967338|35.92|33.94|false|xavier underhill|2013-03-01 09:11:58.703121|1.01|american history +88|314|65562|4294967479|33.36|10.32|false|priscilla king|2013-03-01 09:11:58.703082|49.70|american history +121|394|65774|4294967502|85.81|44.14|true|yuri thompson|2013-03-01 09:11:58.703104|48.19|nap time +60|383|65760|4294967473|34.61|6.32|true|tom polk|2013-03-01 09:11:58.703282|46.41|joggying +49|309|65578|4294967306|65.85|33.28|false|ethan van buren|2013-03-01 09:11:58.703325|45.98|topology +114|382|65581|4294967414|20.30|33.27|true|rachel miller|2013-03-01 09:11:58.703126|15.70|quiet hour +55|311|65659|4294967543|21.44|3.27|false|ulysses white|2013-03-01 09:11:58.703289|98.99|study skills +90|415|65644|4294967319|62.83|32.79|false|mike garcia|2013-03-01 09:11:58.703119|71.05|industrial engineering +51|308|65609|4294967441|26.13|37.43|false|xavier king|2013-03-01 09:11:58.703190|11.24|linguistics +56|402|65560|4294967475|10.49|0.99|true|priscilla quirinius|2013-03-01 09:11:58.703186|49.28|opthamology +60|446|65657|4294967320|4.19|27.56|true|priscilla johnson|2013-03-01 09:11:58.703319|86.38|chemistry +43|349|65618|4294967296|68.93|11.30|true|katie quirinius|2013-03-01 09:11:58.703123|47.97|joggying +88|292|65625|4294967339|94.91|18.00|true|gabriella carson|2013-03-01 09:11:58.703131|79.11|opthamology +123|386|65577|4294967524|16.30|41.56|false|alice quirinius|2013-03-01 09:11:58.703240|82.48|american history +114|282|65712|4294967523|6.92|25.65|true|quinn white|2013-03-01 09:11:58.703263|29.64|debate +118|367|65763|4294967304|47.97|33.58|false|yuri xylophone|2013-03-01 09:11:58.703254|56.21|kindergarten +10|295|65595|4294967435|25.07|12.72|false|yuri white|2013-03-01 09:11:58.703279|11.15|quiet hour +88|265|65561|4294967317|60.71|46.33|true|ulysses young|2013-03-01 09:11:58.703315|46.95|topology +28|260|65558|4294967346|69.17|49.39|true|oscar zipper|2013-03-01 09:11:58.703316|65.08|undecided +14|432|65732|4294967522|70.22|13.81|false|irene van buren|2013-03-01 09:11:58.703084|18.02|history +90|292|65657|4294967538|61.81|5.77|true|sarah ichabod|2013-03-01 09:11:58.703105|91.11|xylophone band +56|352|65752|4294967485|13.37|36.07|true|calvin van buren|2013-03-01 09:11:58.703112|65.90|history +82|381|65588|4294967420|43.04|7.38|true|calvin white|2013-03-01 09:11:58.703102|97.43|nap time +99|457|65617|4294967506|14.52|16.05|false|priscilla brown|2013-03-01 09:11:58.703176|15.55|kindergarten +10|333|65600|4294967367|71.39|24.73|false|victor ovid|2013-03-01 09:11:58.703280|2.52|quiet hour +26|301|65753|4294967485|96.24|6.82|false|sarah brown|2013-03-01 09:11:58.703276|71.33|industrial engineering +21|340|65737|4294967486|74.97|47.10|true|holly underhill|2013-03-01 09:11:58.703245|12.18|opthamology +81|454|65686|4294967388|86.77|2.26|true|ethan allen|2013-03-01 09:11:58.703105|24.87|history +10|292|65711|4294967474|61.83|11.12|true|katie ellison|2013-03-01 09:11:58.703218|75.00|study skills +32|277|65735|4294967358|21.03|40.48|true|nick allen|2013-03-01 09:11:58.703168|11.63|xylophone band +82|435|65725|4294967429|66.83|18.66|true|yuri polk|2013-03-01 09:11:58.703198|45.60|biology +57|278|65590|4294967322|48.00|42.28|false|david carson|2013-03-01 09:11:58.703290|94.83|biology +109|295|65595|4294967459|1.44|33.71|false|gabriella davidson|2013-03-01 09:11:58.703144|58.28|values clariffication +60|431|65680|4294967419|45.33|27.48|false|tom miller|2013-03-01 09:11:58.703129|39.98|history +26|266|65713|4294967354|84.62|45.68|false|quinn steinbeck|2013-03-01 09:11:58.703189|33.66|debate +78|497|65778|4294967485|1.74|39.24|true|calvin ichabod|2013-03-01 09:11:58.703279|23.67|nap time +15|415|65560|4294967408|66.04|26.59|true|bob robinson|2013-03-01 09:11:58.703214|7.73|religion +38|476|65563|4294967452|59.84|11.57|false|calvin steinbeck|2013-03-01 09:11:58.703109|98.60|values clariffication +38|494|65740|4294967531|8.17|41.54|false|calvin thompson|2013-03-01 09:11:58.703084|86.58|zync studies +94|310|65711|4294967464|15.24|36.79|false|mike johnson|2013-03-01 09:11:58.703275|11.06|zync studies +51|328|65762|4294967536|70.77|46.20|true|luke ichabod|2013-03-01 09:11:58.703300|90.72|mathematics +67|465|65581|4294967343|43.54|29.15|false|wendy thompson|2013-03-01 09:11:58.703233|39.20|nap time +50|447|65694|4294967338|40.25|21.49|true|holly white|2013-03-01 09:11:58.703109|60.35|joggying +54|315|65574|4294967469|74.15|36.82|false|fred garcia|2013-03-01 09:11:58.703211|88.24|biology +18|435|65784|4294967502|67.24|4.27|true|luke nixon|2013-03-01 09:11:58.703257|47.45|biology +104|324|65601|4294967531|49.00|28.17|true|mike underhill|2013-03-01 09:11:58.703177|44.81|topology +-3|286|65573|4294967493|18.27|23.71|false|zach young|2013-03-01 09:11:58.703191|21.69|kindergarten +53|273|65706|4294967521|95.36|18.85|false|calvin ellison|2013-03-01 09:11:58.703215|54.10|study skills +98|424|65608|4294967397|12.02|45.92|true|oscar young|2013-03-01 09:11:58.703316|65.43|study skills +89|400|65626|4294967492|5.11|13.95|true|zach zipper|2013-03-01 09:11:58.703227|43.25|linguistics +71|407|65624|4294967386|97.20|14.88|false|zach laertes|2013-03-01 09:11:58.703171|28.03|biology +105|318|65693|4294967422|47.44|14.80|false|irene laertes|2013-03-01 09:11:58.703228|69.85|industrial engineering +12|507|65657|4294967403|37.19|4.76|true|oscar quirinius|2013-03-01 09:11:58.703268|51.58|kindergarten +53|456|65566|4294967437|48.95|31.95|false|oscar robinson|2013-03-01 09:11:58.703260|27.49|undecided +77|257|65732|4294967339|96.85|18.51|true|nick zipper|2013-03-01 09:11:58.703086|68.97|forestry +16|259|65674|4294967377|53.44|5.42|false|katie zipper|2013-03-01 09:11:58.703190|90.09|nap time +87|367|65717|4294967491|79.00|29.46|false|gabriella steinbeck|2013-03-01 09:11:58.703289|10.86|biology +113|257|65720|4294967437|24.40|10.00|true|mike underhill|2013-03-01 09:11:58.703153|23.05|industrial engineering +104|370|65562|4294967457|31.94|16.31|false|quinn allen|2013-03-01 09:11:58.703071|40.60|debate +1|392|65539|4294967356|75.60|16.98|false|mike steinbeck|2013-03-01 09:11:58.703215|32.95|biology +4|446|65664|4294967340|45.20|38.39|false|zach zipper|2013-03-01 09:11:58.703140|65.50|education +63|342|65608|4294967517|9.12|44.84|true|calvin white|2013-03-01 09:11:58.703305|67.80|joggying +2|472|65728|4294967387|68.34|36.06|true|oscar falkner|2013-03-01 09:11:58.703249|49.31|industrial engineering +60|424|65705|4294967464|6.62|9.55|true|yuri steinbeck|2013-03-01 09:11:58.703246|17.01|forestry +91|471|65624|4294967469|27.25|21.93|false|gabriella allen|2013-03-01 09:11:58.703236|73.70|philosophy +104|360|65776|4294967425|57.41|30.49|true|luke quirinius|2013-03-01 09:11:58.703257|94.30|geology +76|389|65729|4294967497|73.82|1.18|false|ulysses underhill|2013-03-01 09:11:58.703278|66.52|linguistics +70|290|65547|4294967301|16.94|10.48|false|victor zipper|2013-03-01 09:11:58.703296|17.89|xylophone band +107|477|65559|4294967546|88.00|24.00|true|rachel hernandez|2013-03-01 09:11:58.703181|31.96|wind surfing +25|346|65727|4294967398|70.75|38.38|true|yuri davidson|2013-03-01 09:11:58.703119|29.93|zync studies +54|326|65707|4294967468|56.70|30.47|true|jessica thompson|2013-03-01 09:11:58.703072|80.72|xylophone band +87|374|65600|4294967484|32.94|9.31|true|holly white|2013-03-01 09:11:58.703095|22.03|american history +60|399|65609|4294967338|80.82|47.45|true|victor nixon|2013-03-01 09:11:58.703156|69.84|quiet hour +104|400|65790|4294967521|33.36|21.85|false|jessica laertes|2013-03-01 09:11:58.703110|55.10|zync studies +60|476|65592|4294967542|10.68|38.25|true|bob ovid|2013-03-01 09:11:58.703220|18.49|wind surfing +82|425|65628|4294967319|45.33|42.97|false|gabriella thompson|2013-03-01 09:11:58.703170|80.55|xylophone band +104|268|65775|4294967412|81.03|39.90|true|yuri hernandez|2013-03-01 09:11:58.703134|71.24|nap time +103|438|65712|4294967367|74.74|29.66|false|quinn davidson|2013-03-01 09:11:58.703211|84.69|industrial engineering +81|474|65757|4294967515|9.28|48.26|false|calvin van buren|2013-03-01 09:11:58.703161|30.80|biology +49|440|65592|4294967315|72.64|12.17|false|ulysses robinson|2013-03-01 09:11:58.703223|90.90|undecided +49|299|65639|4294967520|35.43|29.52|false|jessica white|2013-03-01 09:11:58.703138|81.16|xylophone band +62|460|65604|4294967476|46.37|26.35|false|tom robinson|2013-03-01 09:11:58.703251|62.99|philosophy +69|335|65676|4294967336|18.26|46.74|true|jessica polk|2013-03-01 09:11:58.703190|66.23|study skills +43|388|65568|4294967335|29.13|33.04|false|irene robinson|2013-03-01 09:11:58.703291|58.94|education +61|471|65649|4294967309|60.93|42.43|true|rachel zipper|2013-03-01 09:11:58.703210|81.93|industrial engineering +93|318|65725|4294967344|24.64|29.12|false|nick davidson|2013-03-01 09:11:58.703236|87.49|yard duty +43|448|65602|4294967324|19.30|12.85|true|quinn ellison|2013-03-01 09:11:58.703105|77.45|joggying +2|352|65628|4294967395|72.07|39.95|false|gabriella hernandez|2013-03-01 09:11:58.703172|19.31|quiet hour +66|284|65668|4294967422|47.94|46.30|false|zach davidson|2013-03-01 09:11:58.703125|47.91|mathematics +0|327|65765|4294967465|77.19|33.83|false|irene robinson|2013-03-01 09:11:58.703085|1.45|opthamology +81|334|65602|4294967377|63.41|27.00|false|mike hernandez|2013-03-01 09:11:58.703189|32.57|biology +123|435|65722|4294967419|27.62|18.45|true|irene johnson|2013-03-01 09:11:58.703162|16.75|topology +33|492|65771|4294967324|49.52|26.71|true|ulysses xylophone|2013-03-01 09:11:58.703192|12.53|study skills +101|296|65602|4294967435|54.67|15.07|true|calvin quirinius|2013-03-01 09:11:58.703273|20.88|debate +23|279|65546|4294967435|97.32|20.20|false|holly quirinius|2013-03-01 09:11:58.703279|27.76|american history +40|304|65649|4294967454|20.23|9.28|true|david zipper|2013-03-01 09:11:58.703268|76.12|forestry +115|431|65640|4294967504|62.15|15.78|false|wendy ichabod|2013-03-01 09:11:58.703235|6.87|forestry +30|500|65760|4294967517|95.08|47.72|true|tom laertes|2013-03-01 09:11:58.703080|85.83|chemistry +0|294|65624|4294967405|31.24|39.90|false|rachel ovid|2013-03-01 09:11:58.703184|22.66|xylophone band +74|436|65569|4294967353|55.02|37.48|false|bob polk|2013-03-01 09:11:58.703274|13.85|mathematics +56|307|65610|4294967394|28.91|4.88|true|alice white|2013-03-01 09:11:58.703293|53.58|values clariffication +33|496|65580|4294967352|52.84|9.98|true|ethan laertes|2013-03-01 09:11:58.703214|51.43|yard duty +121|382|65762|4294967392|41.45|20.62|true|xavier miller|2013-03-01 09:11:58.703144|45.08|undecided +58|446|65716|4294967538|27.78|32.51|false|calvin garcia|2013-03-01 09:11:58.703280|68.60|values clariffication +-2|406|65582|4294967311|20.94|35.74|false|bob van buren|2013-03-01 09:11:58.703218|25.17|opthamology +69|461|65652|4294967544|89.64|40.36|false|rachel white|2013-03-01 09:11:58.703229|58.80|topology +119|295|65668|4294967356|25.93|9.75|true|calvin white|2013-03-01 09:11:58.703121|36.42|geology +88|263|65635|4294967430|62.15|18.26|false|alice miller|2013-03-01 09:11:58.703125|53.75|yard duty +111|298|65776|4294967415|78.12|26.72|false|wendy underhill|2013-03-01 09:11:58.703086|0.70|xylophone band +12|321|65737|4294967414|89.17|33.54|true|yuri ichabod|2013-03-01 09:11:58.703197|51.14|xylophone band +52|309|65555|4294967421|56.44|11.67|false|xavier carson|2013-03-01 09:11:58.703323|34.37|joggying +38|463|65594|4294967384|98.75|14.17|false|sarah underhill|2013-03-01 09:11:58.703234|59.64|philosophy +75|383|65645|4294967512|14.72|3.75|false|wendy miller|2013-03-01 09:11:58.703243|79.83|chemistry +46|446|65609|4294967354|82.88|22.56|false|jessica zipper|2013-03-01 09:11:58.703252|25.18|forestry +93|309|65563|4294967302|95.51|25.91|false|holly steinbeck|2013-03-01 09:11:58.703077|14.24|industrial engineering +105|448|65730|4294967515|85.59|1.05|true|mike carson|2013-03-01 09:11:58.703147|58.03|zync studies +11|268|65566|4294967476|20.94|17.60|false|xavier miller|2013-03-01 09:11:58.703217|38.17|study skills +120|333|65572|4294967399|98.91|7.42|true|ethan nixon|2013-03-01 09:11:58.703170|33.27|debate +54|380|65567|4294967500|71.54|17.17|true|mike nixon|2013-03-01 09:11:58.703154|35.66|xylophone band +27|399|65723|4294967323|44.74|17.95|false|mike young|2013-03-01 09:11:58.703207|86.86|history +117|297|65726|4294967389|16.22|41.92|true|nick davidson|2013-03-01 09:11:58.703313|33.00|undecided +60|462|65750|4294967513|71.20|2.35|false|katie allen|2013-03-01 09:11:58.703152|76.27|industrial engineering +90|322|65598|4294967529|30.43|18.06|true|gabriella xylophone|2013-03-01 09:11:58.703158|65.77|linguistics +73|447|65543|4294967328|14.45|18.64|true|victor hernandez|2013-03-01 09:11:58.703227|17.68|opthamology +15|322|65645|4294967300|35.11|8.86|true|calvin xylophone|2013-03-01 09:11:58.703127|93.28|kindergarten +44|289|65635|4294967475|70.96|36.88|true|calvin polk|2013-03-01 09:11:58.703248|52.62|zync studies +79|393|65611|4294967528|7.23|27.44|false|alice falkner|2013-03-01 09:11:58.703295|75.78|philosophy +5|288|65595|4294967521|91.73|29.13|false|luke laertes|2013-03-01 09:11:58.703238|33.75|debate +14|397|65554|4294967360|51.62|1.58|true|nick nixon|2013-03-01 09:11:58.703234|52.92|mathematics +12|508|65691|4294967374|47.59|8.10|true|quinn miller|2013-03-01 09:11:58.703215|53.61|philosophy +72|303|65711|4294967368|85.89|30.06|false|rachel quirinius|2013-03-01 09:11:58.703289|32.01|education +42|506|65641|4294967303|24.71|9.66|false|quinn steinbeck|2013-03-01 09:11:58.703077|71.42|study skills +85|412|65764|4294967341|72.87|35.54|false|victor miller|2013-03-01 09:11:58.703113|11.40|linguistics +98|369|65709|4294967509|91.23|44.06|true|katie carson|2013-03-01 09:11:58.703201|20.31|biology +40|438|65706|4294967454|40.78|25.56|false|oscar polk|2013-03-01 09:11:58.703292|28.25|study skills +91|510|65564|4294967481|29.49|37.61|true|ulysses thompson|2013-03-01 09:11:58.703231|2.62|quiet hour +116|398|65633|4294967456|57.96|22.85|true|oscar miller|2013-03-01 09:11:58.703265|30.55|education +75|351|65682|4294967544|53.83|0.81|false|ethan thompson|2013-03-01 09:11:58.703077|2.19|nap time +83|412|65756|4294967483|78.10|17.40|false|ulysses polk|2013-03-01 09:11:58.703255|30.58|biology +75|351|65700|4294967336|31.18|39.95|false|zach allen|2013-03-01 09:11:58.703306|60.99|philosophy +3|466|65566|4294967299|42.80|26.54|false|quinn miller|2013-03-01 09:11:58.703149|1.69|mathematics +94|353|65553|4294967421|91.20|28.04|false|ethan robinson|2013-03-01 09:11:58.703240|82.90|forestry +14|335|65550|4294967486|20.64|24.83|false|katie brown|2013-03-01 09:11:58.703180|31.42|nap time +114|449|65559|4294967461|53.52|16.35|true|xavier allen|2013-03-01 09:11:58.703237|39.70|chemistry +99|423|65579|4294967516|76.93|24.09|false|sarah brown|2013-03-01 09:11:58.703278|41.91|values clariffication +5|498|65644|4294967461|12.77|0.70|false|yuri davidson|2013-03-01 09:11:58.703309|63.14|religion +94|280|65706|4294967319|4.30|43.42|true|nick miller|2013-03-01 09:11:58.703149|34.14|quiet hour +116|464|65717|4294967390|6.96|6.90|false|david miller|2013-03-01 09:11:58.703214|13.35|quiet hour +49|464|65543|4294967318|3.01|12.09|false|sarah white|2013-03-01 09:11:58.703240|3.60|quiet hour +108|453|65780|4294967454|51.48|26.71|false|quinn xylophone|2013-03-01 09:11:58.703177|16.14|forestry +78|393|65657|4294967479|79.60|42.37|true|victor miller|2013-03-01 09:11:58.703119|14.74|quiet hour +38|439|65683|4294967337|49.57|20.36|true|ulysses falkner|2013-03-01 09:11:58.703217|62.01|yard duty +17|307|65614|4294967426|34.98|46.24|true|katie falkner|2013-03-01 09:11:58.703097|6.18|religion +58|422|65554|4294967425|90.72|3.05|true|wendy zipper|2013-03-01 09:11:58.703258|55.83|study skills +82|323|65638|4294967309|36.64|49.01|false|victor thompson|2013-03-01 09:11:58.703306|32.11|chemistry +50|447|65712|4294967524|20.56|1.87|false|quinn robinson|2013-03-01 09:11:58.703130|99.86|debate +110|332|65707|4294967363|15.67|23.70|true|david young|2013-03-01 09:11:58.703096|23.99|wind surfing +114|341|65670|4294967446|10.49|5.35|true|zach steinbeck|2013-03-01 09:11:58.703128|82.98|yard duty +113|296|65664|4294967435|96.85|33.77|false|bob johnson|2013-03-01 09:11:58.703218|83.33|linguistics +14|472|65766|4294967385|70.85|31.23|true|rachel ellison|2013-03-01 09:11:58.703179|36.33|history +18|434|65713|4294967536|59.74|26.99|false|nick xylophone|2013-03-01 09:11:58.703154|89.39|geology +103|291|65770|4294967512|39.91|8.29|true|ulysses miller|2013-03-01 09:11:58.703194|99.50|quiet hour +41|337|65652|4294967499|39.87|21.03|false|quinn ovid|2013-03-01 09:11:58.703102|25.51|chemistry +123|468|65611|4294967476|40.53|5.51|false|calvin nixon|2013-03-01 09:11:58.703218|22.44|education +110|286|65696|4294967494|12.83|11.36|false|bob king|2013-03-01 09:11:58.703071|94.97|geology +106|352|65720|4294967544|28.17|46.94|true|david laertes|2013-03-01 09:11:58.703108|6.19|american history +4|329|65572|4294967440|58.87|14.01|true|ethan polk|2013-03-01 09:11:58.703190|10.67|study skills +4|397|65791|4294967529|57.61|22.12|false|bob nixon|2013-03-01 09:11:58.703312|60.01|zync studies +64|411|65608|4294967334|82.76|29.91|true|luke steinbeck|2013-03-01 09:11:58.703246|3.94|study skills +90|453|65633|4294967371|71.02|41.34|true|fred polk|2013-03-01 09:11:58.703219|24.21|opthamology +113|381|65587|4294967358|62.85|34.36|true|gabriella nixon|2013-03-01 09:11:58.703086|5.05|mathematics +-1|318|65663|4294967465|57.73|41.18|true|sarah king|2013-03-01 09:11:58.703238|76.60|xylophone band +31|491|65664|4294967344|23.61|3.30|false|ethan robinson|2013-03-01 09:11:58.703160|2.54|undecided +120|376|65593|4294967419|54.87|19.34|false|irene miller|2013-03-01 09:11:58.703148|5.33|zync studies +65|469|65690|4294967430|69.05|39.37|false|gabriella nixon|2013-03-01 09:11:58.703219|89.53|opthamology +50|472|65769|4294967483|49.51|18.27|false|david young|2013-03-01 09:11:58.703216|93.77|quiet hour +107|310|65769|4294967372|78.62|3.43|false|irene quirinius|2013-03-01 09:11:58.703142|53.73|biology +120|341|65595|4294967508|5.76|35.25|false|luke ovid|2013-03-01 09:11:58.703164|21.42|joggying +0|482|65684|4294967386|53.95|42.55|true|tom young|2013-03-01 09:11:58.703150|62.39|study skills +108|270|65753|4294967515|75.10|11.34|false|xavier underhill|2013-03-01 09:11:58.703130|41.52|religion +97|402|65783|4294967510|12.68|32.92|false|mike carson|2013-03-01 09:11:58.703249|35.76|history +88|404|65784|4294967429|55.14|44.08|true|sarah king|2013-03-01 09:11:58.703319|48.24|american history +73|288|65680|4294967414|56.27|25.57|false|sarah steinbeck|2013-03-01 09:11:58.703120|91.11|industrial engineering +116|339|65728|4294967411|40.44|28.02|true|david allen|2013-03-01 09:11:58.703168|96.53|wind surfing +15|256|65651|4294967395|90.32|44.66|true|victor thompson|2013-03-01 09:11:58.703090|75.03|quiet hour +74|505|65576|4294967354|59.60|4.04|true|tom nixon|2013-03-01 09:11:58.703087|83.86|biology +35|311|65762|4294967545|50.18|42.13|false|david davidson|2013-03-01 09:11:58.703276|84.60|quiet hour +91|305|65770|4294967497|15.10|41.94|false|yuri steinbeck|2013-03-01 09:11:58.703277|47.03|education +45|483|65772|4294967340|80.09|8.32|true|priscilla polk|2013-03-01 09:11:58.703217|6.79|wind surfing +115|299|65711|4294967514|36.81|42.03|false|yuri carson|2013-03-01 09:11:58.703259|66.93|zync studies +48|303|65636|4294967534|32.22|26.99|true|priscilla miller|2013-03-01 09:11:58.703224|82.34|values clariffication +75|384|65667|4294967432|25.96|19.37|true|quinn ellison|2013-03-01 09:11:58.703216|12.03|wind surfing +82|280|65747|4294967471|91.04|43.18|true|sarah underhill|2013-03-01 09:11:58.703092|23.07|mathematics +7|473|65565|4294967387|4.52|29.85|true|alice thompson|2013-03-01 09:11:58.703215|84.95|yard duty +3|260|65609|4294967493|90.22|35.52|false|sarah laertes|2013-03-01 09:11:58.703135|81.91|zync studies +49|391|65631|4294967475|94.67|9.84|true|bob brown|2013-03-01 09:11:58.703282|67.54|history +86|293|65592|4294967442|72.42|49.05|true|nick falkner|2013-03-01 09:11:58.703269|91.51|joggying +80|459|65769|4294967530|34.99|30.77|true|priscilla young|2013-03-01 09:11:58.703148|87.96|geology +42|293|65742|4294967298|47.57|2.08|false|ethan ovid|2013-03-01 09:11:58.703300|51.45|undecided +21|256|65613|4294967386|93.29|16.98|true|nick zipper|2013-03-01 09:11:58.703276|57.61|history +5|309|65623|4294967369|32.17|29.64|true|jessica king|2013-03-01 09:11:58.703115|54.28|topology +91|263|65778|4294967521|61.81|39.30|false|bob young|2013-03-01 09:11:58.703214|47.63|geology +-1|427|65672|4294967484|1.27|17.63|false|victor davidson|2013-03-01 09:11:58.703228|98.52|opthamology +46|396|65595|4294967491|17.76|28.23|false|yuri ichabod|2013-03-01 09:11:58.703234|92.94|mathematics +61|472|65658|4294967319|55.29|15.30|true|sarah hernandez|2013-03-01 09:11:58.703095|40.93|undecided +33|423|65556|4294967365|1.22|48.72|false|tom ellison|2013-03-01 09:11:58.703156|27.26|values clariffication +8|353|65665|4294967461|96.99|39.82|false|luke miller|2013-03-01 09:11:58.703202|91.70|philosophy +95|277|65652|4294967490|3.92|44.73|false|sarah thompson|2013-03-01 09:11:58.703106|64.71|undecided +109|420|65751|4294967401|27.78|4.26|true|jessica allen|2013-03-01 09:11:58.703086|54.29|nap time +41|273|65734|4294967501|75.08|44.16|true|wendy king|2013-03-01 09:11:58.703206|52.66|debate +62|494|65629|4294967483|9.69|11.01|true|bob young|2013-03-01 09:11:58.703101|56.74|zync studies +97|285|65721|4294967411|35.48|15.02|true|xavier king|2013-03-01 09:11:58.703248|26.44|linguistics +36|335|65653|4294967461|97.14|4.50|false|luke falkner|2013-03-01 09:11:58.703310|13.25|american history +47|412|65564|4294967461|47.66|31.02|true|david king|2013-03-01 09:11:58.703306|99.41|zync studies +71|441|65600|4294967506|22.95|22.38|false|ethan van buren|2013-03-01 09:11:58.703089|93.31|topology +122|265|65546|4294967465|18.80|38.79|true|bob xylophone|2013-03-01 09:11:58.703291|21.55|mathematics +22|462|65589|4294967519|25.24|20.25|true|irene steinbeck|2013-03-01 09:11:58.703313|61.59|forestry +21|478|65704|4294967405|13.19|21.21|true|ethan underhill|2013-03-01 09:11:58.703086|36.41|study skills +52|335|65575|4294967458|25.53|24.72|false|sarah miller|2013-03-01 09:11:58.703142|84.26|study skills +90|473|65616|4294967469|23.81|19.35|true|tom young|2013-03-01 09:11:58.703178|59.41|debate +103|394|65679|4294967332|14.37|40.27|true|ethan young|2013-03-01 09:11:58.703158|76.64|wind surfing +105|309|65537|4294967336|96.42|12.22|true|nick carson|2013-03-01 09:11:58.703115|91.35|philosophy +5|361|65772|4294967300|68.42|48.91|true|nick king|2013-03-01 09:11:58.703324|93.58|debate +43|485|65610|4294967330|16.02|6.16|true|nick nixon|2013-03-01 09:11:58.703279|67.60|joggying +104|459|65710|4294967354|12.39|47.05|true|david van buren|2013-03-01 09:11:58.703151|36.93|joggying +4|310|65539|4294967338|53.33|6.44|false|david ellison|2013-03-01 09:11:58.703081|27.99|kindergarten +99|479|65591|4294967428|50.82|11.80|true|sarah robinson|2013-03-01 09:11:58.703198|74.64|mathematics +63|401|65634|4294967353|28.86|30.95|true|yuri nixon|2013-03-01 09:11:58.703164|73.09|topology +97|473|65757|4294967309|27.83|28.76|true|priscilla hernandez|2013-03-01 09:11:58.703316|32.72|study skills +75|289|65785|4294967326|83.89|30.69|true|bob ichabod|2013-03-01 09:11:58.703162|50.60|quiet hour +120|289|65790|4294967424|28.31|45.42|false|gabriella quirinius|2013-03-01 09:11:58.703172|35.29|biology +29|260|65632|4294967421|51.23|3.76|false|sarah steinbeck|2013-03-01 09:11:58.703245|90.08|religion +68|379|65673|4294967334|10.82|38.50|false|zach allen|2013-03-01 09:11:58.703174|28.40|mathematics +93|389|65618|4294967490|94.23|28.45|true|fred ovid|2013-03-01 09:11:58.703112|75.97|study skills +17|507|65632|4294967403|61.71|0.31|false|xavier laertes|2013-03-01 09:11:58.703237|31.04|mathematics +20|352|65542|4294967521|29.76|47.62|false|priscilla laertes|2013-03-01 09:11:58.703080|17.31|study skills +51|462|65606|4294967530|80.59|7.36|true|katie laertes|2013-03-01 09:11:58.703166|10.78|zync studies +105|422|65683|4294967550|70.18|9.74|true|jessica ovid|2013-03-01 09:11:58.703116|37.84|nap time +78|458|65537|4294967540|49.82|35.81|false|victor xylophone|2013-03-01 09:11:58.703281|83.21|undecided +104|259|65567|4294967520|10.43|12.97|false|ulysses falkner|2013-03-01 09:11:58.703270|72.39|quiet hour +104|423|65679|4294967413|5.63|30.91|true|priscilla ichabod|2013-03-01 09:11:58.703280|82.21|religion +74|352|65687|4294967384|49.32|6.10|false|katie laertes|2013-03-01 09:11:58.703152|14.46|yard duty +47|359|65584|4294967339|14.51|23.12|true|tom allen|2013-03-01 09:11:58.703138|43.08|mathematics +109|463|65666|4294967512|69.08|25.69|false|ulysses ovid|2013-03-01 09:11:58.703318|16.15|biology +50|496|65595|4294967374|67.08|10.81|true|xavier white|2013-03-01 09:11:58.703170|82.61|nap time +85|398|65636|4294967550|3.68|40.61|true|rachel polk|2013-03-01 09:11:58.703229|94.03|values clariffication +22|354|65655|4294967518|31.56|49.06|false|sarah xylophone|2013-03-01 09:11:58.703113|48.88|values clariffication +106|387|65558|4294967523|5.54|34.77|false|mike miller|2013-03-01 09:11:58.703273|44.49|yard duty +87|432|65759|4294967386|61.47|45.91|false|calvin ichabod|2013-03-01 09:11:58.703283|49.19|wind surfing +55|312|65560|4294967528|70.13|35.47|true|katie garcia|2013-03-01 09:11:58.703151|18.69|mathematics +62|346|65641|4294967495|25.43|21.23|false|jessica brown|2013-03-01 09:11:58.703241|46.96|wind surfing +90|410|65759|4294967529|0.87|38.49|false|ulysses johnson|2013-03-01 09:11:58.703202|50.59|topology +64|446|65672|4294967476|23.51|29.70|false|gabriella garcia|2013-03-01 09:11:58.703246|48.13|opthamology +35|265|65718|4294967492|90.65|42.09|false|yuri nixon|2013-03-01 09:11:58.703304|71.94|industrial engineering +8|399|65725|4294967373|71.54|37.54|true|ulysses ichabod|2013-03-01 09:11:58.703193|73.54|xylophone band +38|329|65678|4294967463|62.42|30.27|false|tom polk|2013-03-01 09:11:58.703319|85.26|history +15|320|65689|4294967387|74.87|23.35|true|nick carson|2013-03-01 09:11:58.703272|36.96|linguistics +78|462|65758|4294967461|49.58|41.04|false|calvin robinson|2013-03-01 09:11:58.703179|0.01|american history +100|498|65574|4294967526|74.24|45.81|false|wendy nixon|2013-03-01 09:11:58.703258|18.77|xylophone band +47|391|65583|4294967518|6.25|17.81|false|irene hernandez|2013-03-01 09:11:58.703292|68.02|education +66|375|65713|4294967518|29.72|36.34|false|oscar ovid|2013-03-01 09:11:58.703180|41.71|xylophone band +82|266|65718|4294967491|19.86|22.03|true|victor young|2013-03-01 09:11:58.703094|82.16|zync studies +97|344|65625|4294967404|13.95|31.43|true|yuri ellison|2013-03-01 09:11:58.703324|19.30|undecided +120|309|65770|4294967540|51.52|31.88|true|katie davidson|2013-03-01 09:11:58.703162|26.79|education +57|393|65751|4294967406|12.99|8.89|false|priscilla brown|2013-03-01 09:11:58.703137|57.88|nap time +49|471|65664|4294967466|55.53|16.14|false|gabriella robinson|2013-03-01 09:11:58.703153|90.37|linguistics +0|399|65597|4294967516|81.74|33.76|true|holly quirinius|2013-03-01 09:11:58.703228|51.02|industrial engineering +15|477|65770|4294967470|26.57|3.37|true|zach miller|2013-03-01 09:11:58.703271|68.80|topology +8|301|65644|4294967313|72.19|3.01|false|ulysses ichabod|2013-03-01 09:11:58.703134|9.11|kindergarten +72|415|65719|4294967470|92.42|15.49|false|priscilla carson|2013-03-01 09:11:58.703234|3.51|undecided +17|384|65605|4294967397|44.80|4.27|true|rachel johnson|2013-03-01 09:11:58.703314|18.49|opthamology +82|404|65772|4294967509|11.08|49.86|false|katie allen|2013-03-01 09:11:58.703175|10.59|study skills +45|395|65666|4294967493|88.57|21.64|false|david underhill|2013-03-01 09:11:58.703138|22.59|xylophone band +54|360|65706|4294967442|44.30|27.63|true|katie ovid|2013-03-01 09:11:58.703285|66.24|opthamology +106|406|65617|4294967485|11.05|32.03|false|rachel brown|2013-03-01 09:11:58.703081|62.32|study skills +84|498|65787|4294967528|64.19|25.34|true|wendy hernandez|2013-03-01 09:11:58.703216|19.71|xylophone band +81|413|65712|4294967512|18.56|37.58|false|david ellison|2013-03-01 09:11:58.703106|5.21|topology +58|449|65767|4294967446|6.53|24.72|false|fred laertes|2013-03-01 09:11:58.703259|7.97|xylophone band +8|277|65711|4294967312|86.37|24.70|true|yuri nixon|2013-03-01 09:11:58.703264|31.27|study skills +80|325|65636|4294967347|12.93|49.46|false|calvin polk|2013-03-01 09:11:58.703238|45.86|biology +112|486|65655|4294967507|21.33|26.59|false|wendy white|2013-03-01 09:11:58.703126|29.36|industrial engineering +94|393|65776|4294967418|4.28|9.90|false|yuri xylophone|2013-03-01 09:11:58.703091|61.99|industrial engineering +48|291|65558|4294967310|42.71|45.48|false|quinn quirinius|2013-03-01 09:11:58.703233|90.31|wind surfing +50|333|65771|4294967523|0.78|44.80|false|sarah thompson|2013-03-01 09:11:58.703257|44.39|philosophy +63|344|65745|4294967461|53.34|11.56|false|mike ovid|2013-03-01 09:11:58.703274|62.44|undecided +38|280|65557|4294967327|47.48|35.87|false|zach zipper|2013-03-01 09:11:58.703229|50.04|nap time +81|415|65703|4294967538|40.49|19.27|true|david laertes|2013-03-01 09:11:58.703281|61.33|yard duty +83|322|65725|4294967544|20.85|23.56|true|ethan ellison|2013-03-01 09:11:58.703271|19.58|quiet hour +4|431|65666|4294967548|35.65|36.95|false|zach miller|2013-03-01 09:11:58.703323|99.06|study skills +80|397|65635|4294967505|79.65|23.07|true|ethan carson|2013-03-01 09:11:58.703166|22.70|debate +11|283|65622|4294967414|73.65|33.44|false|jessica ellison|2013-03-01 09:11:58.703270|17.79|biology +65|489|65719|4294967339|83.28|27.26|false|yuri laertes|2013-03-01 09:11:58.703299|40.73|religion +105|426|65594|4294967535|25.03|5.48|false|nick hernandez|2013-03-01 09:11:58.703281|79.84|quiet hour +53|320|65789|4294967392|32.58|37.48|false|holly underhill|2013-03-01 09:11:58.703204|70.52|topology +77|380|65611|4294967315|30.66|21.43|true|calvin zipper|2013-03-01 09:11:58.703278|79.93|nap time +105|502|65780|4294967337|91.56|35.76|true|katie garcia|2013-03-01 09:11:58.703263|8.63|study skills +55|469|65713|4294967413|44.54|21.34|false|ulysses zipper|2013-03-01 09:11:58.703243|5.90|joggying +6|417|65642|4294967452|24.15|0.47|false|bob carson|2013-03-01 09:11:58.703219|46.47|undecided +68|302|65562|4294967310|89.95|29.80|false|yuri thompson|2013-03-01 09:11:58.703197|82.02|linguistics +56|265|65731|4294967475|27.32|24.18|false|yuri miller|2013-03-01 09:11:58.703182|75.18|values clariffication +89|473|65593|4294967356|54.54|46.69|true|nick white|2013-03-01 09:11:58.703166|82.92|xylophone band +53|258|65679|4294967514|61.24|15.68|true|priscilla zipper|2013-03-01 09:11:58.703250|64.75|xylophone band +57|484|65759|4294967326|92.98|31.60|false|holly van buren|2013-03-01 09:11:58.703217|8.02|philosophy +78|500|65648|4294967435|68.19|9.06|true|mike zipper|2013-03-01 09:11:58.703147|43.89|industrial engineering +57|392|65659|4294967518|70.00|40.94|true|katie nixon|2013-03-01 09:11:58.703195|53.84|mathematics +10|274|65638|4294967437|34.95|10.36|false|nick van buren|2013-03-01 09:11:58.703136|66.15|zync studies +87|323|65690|4294967482|63.45|11.89|false|xavier allen|2013-03-01 09:11:58.703296|17.27|xylophone band +24|301|65661|4294967362|88.35|37.45|false|bob van buren|2013-03-01 09:11:58.703157|4.05|american history +47|280|65627|4294967451|54.91|14.51|false|victor nixon|2013-03-01 09:11:58.703251|4.14|history +119|264|65730|4294967323|20.16|1.19|true|victor falkner|2013-03-01 09:11:58.703097|65.40|debate +82|279|65636|4294967382|65.91|13.40|true|ethan carson|2013-03-01 09:11:58.703178|6.64|xylophone band +47|389|65604|4294967362|16.42|35.00|false|holly king|2013-03-01 09:11:58.703200|76.19|linguistics +62|305|65589|4294967549|49.68|41.46|false|katie king|2013-03-01 09:11:58.703151|48.68|mathematics +99|458|65680|4294967428|16.59|6.95|true|oscar nixon|2013-03-01 09:11:58.703107|20.51|xylophone band +4|453|65618|4294967321|22.19|42.83|false|nick garcia|2013-03-01 09:11:58.703219|80.55|philosophy +4|409|65559|4294967467|50.25|41.99|true|ethan thompson|2013-03-01 09:11:58.703261|71.73|study skills +42|475|65766|4294967318|12.41|37.81|false|katie nixon|2013-03-01 09:11:58.703103|34.12|nap time +69|391|65649|4294967415|93.50|43.10|true|bob white|2013-03-01 09:11:58.703092|89.54|quiet hour +81|307|65562|4294967518|28.91|1.06|true|rachel polk|2013-03-01 09:11:58.703113|25.52|industrial engineering +6|396|65618|4294967538|53.18|28.30|false|calvin white|2013-03-01 09:11:58.703265|94.34|study skills +93|362|65640|4294967358|79.85|24.97|false|katie polk|2013-03-01 09:11:58.703186|15.89|nap time +5|398|65704|4294967533|24.98|45.65|true|zach steinbeck|2013-03-01 09:11:58.703205|64.88|industrial engineering +31|349|65751|4294967425|44.64|12.64|false|zach davidson|2013-03-01 09:11:58.703265|10.52|quiet hour +5|507|65783|4294967354|81.55|41.19|false|ulysses steinbeck|2013-03-01 09:11:58.703267|35.93|opthamology +89|480|65762|4294967435|78.94|9.91|true|sarah thompson|2013-03-01 09:11:58.703292|93.62|opthamology +61|358|65710|4294967404|28.22|34.33|true|ethan allen|2013-03-01 09:11:58.703264|0.34|philosophy +119|309|65662|4294967500|39.80|42.87|false|quinn miller|2013-03-01 09:11:58.703188|59.83|education +58|328|65747|4294967527|17.85|2.02|false|xavier falkner|2013-03-01 09:11:58.703264|44.98|mathematics +1|389|65653|4294967378|44.76|26.69|false|victor van buren|2013-03-01 09:11:58.703320|14.17|debate +7|361|65761|4294967423|41.51|37.53|false|xavier robinson|2013-03-01 09:11:58.703306|71.28|opthamology +82|414|65757|4294967435|27.84|2.88|true|oscar miller|2013-03-01 09:11:58.703113|69.64|joggying +0|417|65593|4294967531|9.26|30.55|true|sarah carson|2013-03-01 09:11:58.703073|69.76|zync studies +45|398|65591|4294967421|25.77|45.92|false|victor laertes|2013-03-01 09:11:58.703159|76.09|zync studies +71|350|65578|4294967323|4.45|13.91|true|fred miller|2013-03-01 09:11:58.703176|33.07|chemistry +117|414|65595|4294967440|21.04|5.86|true|tom hernandez|2013-03-01 09:11:58.703296|65.18|zync studies +91|361|65737|4294967478|36.16|38.25|false|bob garcia|2013-03-01 09:11:58.703304|4.51|history +21|287|65547|4294967431|82.24|21.64|false|katie brown|2013-03-01 09:11:58.703150|94.60|topology +73|479|65683|4294967517|27.20|18.18|true|victor underhill|2013-03-01 09:11:58.703233|67.93|debate +21|264|65776|4294967480|79.24|0.03|false|nick steinbeck|2013-03-01 09:11:58.703246|19.51|chemistry +30|471|65768|4294967519|60.21|44.13|true|ethan thompson|2013-03-01 09:11:58.703145|90.89|american history +61|275|65633|4294967381|8.59|7.43|false|sarah zipper|2013-03-01 09:11:58.703167|11.04|education +105|396|65559|4294967411|60.97|21.02|false|ulysses hernandez|2013-03-01 09:11:58.703214|35.68|history +104|326|65676|4294967346|44.84|16.48|true|calvin allen|2013-03-01 09:11:58.703165|80.82|history +28|263|65742|4294967522|26.59|29.30|false|ethan thompson|2013-03-01 09:11:58.703276|52.89|linguistics +66|304|65786|4294967382|35.70|36.08|true|bob king|2013-03-01 09:11:58.703173|55.66|opthamology +101|327|65592|4294967448|6.96|5.63|false|nick xylophone|2013-03-01 09:11:58.703235|68.28|forestry +31|259|65637|4294967455|82.54|32.37|true|yuri xylophone|2013-03-01 09:11:58.703310|79.40|industrial engineering +87|459|65615|4294967439|20.04|9.20|false|yuri hernandez|2013-03-01 09:11:58.703104|67.54|geology +99|469|65599|4294967443|93.88|19.59|true|wendy davidson|2013-03-01 09:11:58.703263|98.06|education +62|262|65559|4294967401|25.70|25.74|false|oscar xylophone|2013-03-01 09:11:58.703086|73.75|forestry +43|472|65693|4294967505|67.03|12.61|true|luke falkner|2013-03-01 09:11:58.703166|11.02|study skills +109|487|65741|4294967300|99.34|14.35|false|nick ellison|2013-03-01 09:11:58.703078|99.42|nap time +105|306|65748|4294967448|42.43|38.99|false|jessica king|2013-03-01 09:11:58.703099|43.79|zync studies +26|497|65573|4294967310|33.96|22.71|true|oscar king|2013-03-01 09:11:58.703157|39.42|wind surfing +12|319|65538|4294967342|87.16|5.66|false|mike brown|2013-03-01 09:11:58.703181|18.02|american history +120|413|65779|4294967368|59.72|33.74|true|gabriella thompson|2013-03-01 09:11:58.703177|51.55|undecided +9|421|65639|4294967403|96.67|5.60|true|fred young|2013-03-01 09:11:58.703260|61.56|joggying +66|482|65702|4294967524|1.39|11.59|true|nick van buren|2013-03-01 09:11:58.703284|49.92|xylophone band +66|371|65620|4294967305|59.78|31.50|false|calvin brown|2013-03-01 09:11:58.703159|14.69|debate +83|419|65571|4294967538|97.95|36.66|true|jessica king|2013-03-01 09:11:58.703096|10.48|philosophy +41|455|65768|4294967535|8.23|38.31|false|mike zipper|2013-03-01 09:11:58.703127|49.73|yard duty +114|373|65680|4294967478|83.95|8.55|true|nick ellison|2013-03-01 09:11:58.703227|60.04|values clariffication +119|504|65747|4294967422|71.72|12.29|true|zach white|2013-03-01 09:11:58.703256|28.44|american history +76|503|65721|4294967390|79.65|2.05|true|gabriella robinson|2013-03-01 09:11:58.703283|88.29|nap time +88|317|65702|4294967394|79.55|13.50|true|fred nixon|2013-03-01 09:11:58.703080|76.19|debate +75|314|65685|4294967481|56.24|34.84|true|ethan ellison|2013-03-01 09:11:58.703250|87.79|kindergarten +24|503|65562|4294967444|93.23|8.96|false|fred polk|2013-03-01 09:11:58.703325|53.14|industrial engineering +93|289|65691|4294967399|33.42|46.28|true|holly miller|2013-03-01 09:11:58.703262|89.20|kindergarten +44|364|65550|4294967528|18.37|7.10|false|mike garcia|2013-03-01 09:11:58.703229|50.61|history +110|453|65620|4294967357|29.82|44.41|true|wendy polk|2013-03-01 09:11:58.703274|17.78|nap time +82|425|65724|4294967478|31.23|39.15|false|victor johnson|2013-03-01 09:11:58.703110|36.25|forestry +67|462|65698|4294967463|21.39|3.31|true|yuri falkner|2013-03-01 09:11:58.703189|53.59|linguistics +16|392|65787|4294967367|63.07|10.48|false|ethan king|2013-03-01 09:11:58.703212|13.01|debate +78|420|65536|4294967384|69.72|35.55|true|victor johnson|2013-03-01 09:11:58.703276|30.25|undecided +88|378|65555|4294967502|15.81|14.67|true|ethan zipper|2013-03-01 09:11:58.703275|46.11|forestry +90|495|65756|4294967469|60.93|23.26|true|yuri king|2013-03-01 09:11:58.703133|57.10|philosophy +120|438|65741|4294967359|34.85|14.62|true|irene nixon|2013-03-01 09:11:58.703111|47.65|education +107|372|65536|4294967308|46.13|18.68|true|oscar allen|2013-03-01 09:11:58.703310|95.99|debate +45|421|65598|4294967427|38.17|49.12|false|mike hernandez|2013-03-01 09:11:58.703211|90.93|quiet hour +53|429|65724|4294967478|96.89|18.20|false|wendy nixon|2013-03-01 09:11:58.703116|67.59|zync studies +69|303|65729|4294967343|97.39|19.41|true|wendy johnson|2013-03-01 09:11:58.703243|56.28|philosophy +88|425|65615|4294967436|83.43|25.40|true|quinn allen|2013-03-01 09:11:58.703100|2.25|chemistry +24|360|65611|4294967421|83.53|48.60|true|bob steinbeck|2013-03-01 09:11:58.703166|85.98|debate +44|491|65712|4294967496|49.20|46.36|false|alice underhill|2013-03-01 09:11:58.703115|87.69|joggying +8|406|65613|4294967526|30.07|37.23|false|mike carson|2013-03-01 09:11:58.703238|49.60|values clariffication +3|439|65704|4294967477|93.74|6.26|true|mike steinbeck|2013-03-01 09:11:58.703312|0.06|forestry +55|284|65775|4294967448|27.33|11.22|true|priscilla nixon|2013-03-01 09:11:58.703207|90.40|philosophy +32|290|65710|4294967378|85.35|38.45|true|ethan nixon|2013-03-01 09:11:58.703120|35.59|religion +65|504|65625|4294967515|45.39|22.92|false|priscilla ichabod|2013-03-01 09:11:58.703175|41.06|debate +79|434|65722|4294967525|6.97|27.21|false|sarah young|2013-03-01 09:11:58.703214|88.06|linguistics +29|457|65630|4294967410|87.96|23.54|true|david zipper|2013-03-01 09:11:58.703080|60.17|joggying +89|464|65720|4294967453|92.32|32.28|false|victor robinson|2013-03-01 09:11:58.703115|42.01|philosophy +108|295|65708|4294967338|6.73|24.21|false|nick van buren|2013-03-01 09:11:58.703210|51.91|topology +57|413|65786|4294967475|34.57|37.10|true|ethan van buren|2013-03-01 09:11:58.703082|73.12|forestry +50|260|65574|4294967497|54.58|4.31|false|calvin zipper|2013-03-01 09:11:58.703286|88.75|undecided +17|454|65642|4294967479|47.65|44.47|true|ethan robinson|2013-03-01 09:11:58.703166|65.79|wind surfing +82|354|65779|4294967306|26.96|9.70|true|alice ovid|2013-03-01 09:11:58.703311|61.44|values clariffication +102|493|65743|4294967360|29.03|41.33|true|fred allen|2013-03-01 09:11:58.703131|72.99|biology +117|304|65549|4294967418|33.16|8.86|false|victor davidson|2013-03-01 09:11:58.703132|31.74|study skills +61|274|65537|4294967462|14.24|20.38|true|nick davidson|2013-03-01 09:11:58.703119|56.13|forestry +43|385|65560|4294967451|54.11|43.45|true|xavier young|2013-03-01 09:11:58.703255|61.56|undecided +17|260|65566|4294967321|26.35|29.01|false|tom hernandez|2013-03-01 09:11:58.703104|51.21|philosophy +36|367|65635|4294967346|79.37|19.51|true|katie nixon|2013-03-01 09:11:58.703110|37.24|chemistry +-3|339|65671|4294967311|8.37|15.98|true|bob ellison|2013-03-01 09:11:58.703261|14.01|linguistics +56|275|65772|4294967367|74.69|38.31|true|ulysses underhill|2013-03-01 09:11:58.703093|99.48|religion +97|428|65671|4294967536|83.40|13.65|true|ethan robinson|2013-03-01 09:11:58.703127|99.50|education +39|472|65612|4294967319|11.35|10.27|false|luke allen|2013-03-01 09:11:58.703128|28.22|topology +119|413|65536|4294967449|15.82|27.95|false|rachel brown|2013-03-01 09:11:58.703233|30.60|forestry +51|288|65611|4294967317|90.68|32.05|false|quinn king|2013-03-01 09:11:58.703075|17.64|opthamology +120|453|65744|4294967447|47.52|9.78|true|calvin ichabod|2013-03-01 09:11:58.703178|7.89|biology +122|457|65763|4294967535|21.11|36.20|false|xavier polk|2013-03-01 09:11:58.703324|8.48|religion +68|352|65731|4294967476|55.34|0.60|true|ethan johnson|2013-03-01 09:11:58.703264|5.39|xylophone band +124|396|65600|4294967453|50.94|43.34|true|alice zipper|2013-03-01 09:11:58.703124|24.87|biology +124|448|65615|4294967303|20.19|30.52|true|nick van buren|2013-03-01 09:11:58.703193|87.80|industrial engineering +61|354|65606|4294967450|27.47|10.80|false|ethan ovid|2013-03-01 09:11:58.703198|88.65|industrial engineering +119|479|65649|4294967450|14.43|0.94|true|calvin steinbeck|2013-03-01 09:11:58.703091|71.82|philosophy +12|324|65749|4294967432|43.01|26.76|true|alice polk|2013-03-01 09:11:58.703287|57.58|opthamology +31|405|65610|4294967398|2.17|3.53|false|zach falkner|2013-03-01 09:11:58.703321|38.34|wind surfing +96|384|65774|4294967525|39.38|46.68|false|ethan steinbeck|2013-03-01 09:11:58.703106|53.74|undecided +39|300|65566|4294967464|6.80|15.49|false|victor ichabod|2013-03-01 09:11:58.703260|83.01|kindergarten +113|423|65677|4294967493|76.10|8.86|true|jessica nixon|2013-03-01 09:11:58.703316|15.30|biology +54|326|65704|4294967363|32.02|15.29|false|ulysses quirinius|2013-03-01 09:11:58.703165|70.96|american history +90|453|65748|4294967296|22.52|47.92|false|ethan ellison|2013-03-01 09:11:58.703220|18.73|kindergarten +74|445|65695|4294967398|26.18|35.21|true|tom ovid|2013-03-01 09:11:58.703299|35.48|education +12|489|65723|4294967526|11.06|49.33|false|irene polk|2013-03-01 09:11:58.703202|79.13|religion +26|294|65645|4294967444|55.11|6.26|false|xavier king|2013-03-01 09:11:58.703223|32.88|study skills +19|399|65625|4294967329|87.94|4.46|true|gabriella robinson|2013-03-01 09:11:58.703093|43.59|nap time +109|265|65575|4294967516|96.18|7.01|true|bob quirinius|2013-03-01 09:11:58.703097|33.47|values clariffication +20|345|65585|4294967359|18.35|34.42|false|zach miller|2013-03-01 09:11:58.703201|47.51|opthamology +48|372|65731|4294967321|85.40|1.68|false|bob thompson|2013-03-01 09:11:58.703138|94.34|education +57|476|65768|4294967336|45.77|1.74|true|bob nixon|2013-03-01 09:11:58.703211|4.35|biology +3|463|65675|4294967306|40.66|43.32|false|nick steinbeck|2013-03-01 09:11:58.703158|21.75|mathematics +92|448|65779|4294967497|69.72|21.74|true|luke quirinius|2013-03-01 09:11:58.703246|47.99|industrial engineering +124|511|65713|4294967348|46.91|25.76|false|katie allen|2013-03-01 09:11:58.703196|89.98|religion +106|382|65728|4294967359|92.59|21.15|false|fred quirinius|2013-03-01 09:11:58.703082|41.62|quiet hour +113|475|65767|4294967469|24.37|43.29|false|irene polk|2013-03-01 09:11:58.703259|39.42|kindergarten +28|328|65786|4294967518|94.56|18.30|true|zach hernandez|2013-03-01 09:11:58.703236|9.07|chemistry +116|478|65695|4294967395|7.09|8.92|false|oscar davidson|2013-03-01 09:11:58.703260|29.63|values clariffication +44|300|65649|4294967508|25.74|19.34|true|yuri allen|2013-03-01 09:11:58.703283|33.11|opthamology +103|389|65660|4294967440|38.32|41.78|true|quinn white|2013-03-01 09:11:58.703249|72.67|american history +124|431|65576|4294967367|56.74|36.29|false|tom ellison|2013-03-01 09:11:58.703199|1.22|mathematics +46|390|65625|4294967523|39.15|10.74|true|david young|2013-03-01 09:11:58.703171|18.67|kindergarten +80|320|65773|4294967399|2.85|37.03|true|tom allen|2013-03-01 09:11:58.703310|61.47|debate +100|306|65781|4294967335|29.64|14.99|false|katie miller|2013-03-01 09:11:58.703108|9.07|yard duty +101|411|65772|4294967365|32.71|33.18|false|calvin davidson|2013-03-01 09:11:58.703147|80.82|opthamology +85|428|65587|4294967340|75.56|43.57|false|luke robinson|2013-03-01 09:11:58.703293|53.21|mathematics +6|321|65587|4294967297|90.10|0.33|false|gabriella robinson|2013-03-01 09:11:58.703288|74.23|topology +48|406|65654|4294967345|0.39|33.84|false|zach robinson|2013-03-01 09:11:58.703272|21.26|biology +15|355|65627|4294967414|96.98|5.65|false|quinn johnson|2013-03-01 09:11:58.703296|96.28|quiet hour +78|463|65645|4294967361|39.65|44.14|true|bob quirinius|2013-03-01 09:11:58.703183|80.42|study skills +124|379|65791|4294967390|67.46|40.25|true|ethan brown|2013-03-01 09:11:58.703323|56.97|american history +122|382|65576|4294967434|25.10|18.85|false|holly carson|2013-03-01 09:11:58.703282|32.60|philosophy +15|419|65688|4294967509|45.48|19.20|true|tom brown|2013-03-01 09:11:58.703315|40.07|values clariffication +48|342|65560|4294967329|67.61|3.22|false|gabriella carson|2013-03-01 09:11:58.703108|39.05|xylophone band +13|325|65547|4294967310|84.31|18.42|true|david robinson|2013-03-01 09:11:58.703297|66.54|philosophy +22|344|65552|4294967434|61.42|12.76|true|katie laertes|2013-03-01 09:11:58.703202|42.74|values clariffication +46|355|65758|4294967333|12.98|17.65|true|luke xylophone|2013-03-01 09:11:58.703187|55.82|yard duty +65|411|65785|4294967481|57.84|25.83|false|jessica hernandez|2013-03-01 09:11:58.703183|20.54|debate +24|450|65721|4294967332|83.75|9.61|true|tom hernandez|2013-03-01 09:11:58.703150|95.54|undecided +75|473|65656|4294967431|53.77|49.45|false|fred quirinius|2013-03-01 09:11:58.703156|15.60|linguistics +118|445|65681|4294967439|65.25|19.44|true|wendy robinson|2013-03-01 09:11:58.703203|34.45|american history +75|334|65599|4294967331|9.92|6.82|false|oscar zipper|2013-03-01 09:11:58.703186|15.98|history +73|308|65595|4294967344|39.10|4.17|false|luke falkner|2013-03-01 09:11:58.703265|64.75|wind surfing +113|350|65587|4294967377|54.33|10.65|false|katie van buren|2013-03-01 09:11:58.703295|57.67|undecided +4|301|65558|4294967362|71.84|20.10|false|yuri falkner|2013-03-01 09:11:58.703243|58.15|mathematics +76|272|65549|4294967347|40.14|19.46|true|irene garcia|2013-03-01 09:11:58.703322|38.93|education +38|301|65686|4294967456|70.76|5.99|false|rachel xylophone|2013-03-01 09:11:58.703079|64.81|xylophone band +24|495|65658|4294967502|11.18|23.82|true|sarah steinbeck|2013-03-01 09:11:58.703220|39.36|linguistics +90|269|65641|4294967389|90.42|32.68|false|oscar thompson|2013-03-01 09:11:58.703079|76.49|religion +14|297|65567|4294967412|85.82|26.85|true|luke thompson|2013-03-01 09:11:58.703242|39.56|kindergarten +108|318|65557|4294967485|36.87|13.93|true|mike miller|2013-03-01 09:11:58.703277|93.85|chemistry +32|261|65597|4294967304|98.09|17.73|false|fred johnson|2013-03-01 09:11:58.703314|36.97|study skills +107|481|65694|4294967410|18.45|10.43|false|jessica laertes|2013-03-01 09:11:58.703219|23.38|kindergarten +102|436|65547|4294967339|35.51|38.65|true|quinn steinbeck|2013-03-01 09:11:58.703299|50.32|joggying +85|482|65791|4294967526|16.26|37.52|true|wendy steinbeck|2013-03-01 09:11:58.703192|62.34|joggying +77|378|65548|4294967374|85.60|14.16|false|oscar nixon|2013-03-01 09:11:58.703298|98.23|kindergarten +106|373|65746|4294967389|93.05|8.68|false|ulysses garcia|2013-03-01 09:11:58.703294|8.94|undecided +103|446|65783|4294967308|47.08|48.21|false|zach zipper|2013-03-01 09:11:58.703164|28.20|nap time +8|467|65708|4294967492|26.77|9.82|true|calvin king|2013-03-01 09:11:58.703225|61.79|religion +2|323|65548|4294967351|78.00|47.16|true|zach brown|2013-03-01 09:11:58.703152|58.99|study skills +85|495|65595|4294967388|45.03|5.17|false|ulysses falkner|2013-03-01 09:11:58.703259|45.38|linguistics +15|273|65714|4294967452|41.00|47.34|false|jessica hernandez|2013-03-01 09:11:58.703205|84.03|topology +16|257|65610|4294967430|47.58|23.18|true|yuri brown|2013-03-01 09:11:58.703284|18.70|zync studies +97|472|65687|4294967484|65.82|13.49|true|holly polk|2013-03-01 09:11:58.703119|63.85|chemistry +119|346|65609|4294967432|37.79|10.70|true|david allen|2013-03-01 09:11:58.703271|90.70|philosophy +123|447|65676|4294967433|80.72|28.91|true|luke polk|2013-03-01 09:11:58.703092|13.91|opthamology +98|468|65778|4294967415|38.73|25.87|true|ulysses polk|2013-03-01 09:11:58.703074|80.31|debate +64|357|65640|4294967455|68.45|20.36|true|rachel xylophone|2013-03-01 09:11:58.703200|68.48|chemistry +54|337|65570|4294967331|47.05|14.39|false|fred polk|2013-03-01 09:11:58.703277|19.30|biology +92|417|65644|4294967386|77.40|49.52|true|david brown|2013-03-01 09:11:58.703181|73.08|wind surfing +4|381|65756|4294967406|76.25|30.22|false|sarah johnson|2013-03-01 09:11:58.703311|3.61|undecided +116|317|65671|4294967519|66.49|9.40|true|calvin ichabod|2013-03-01 09:11:58.703084|26.34|mathematics +9|440|65751|4294967390|62.24|20.51|true|bob laertes|2013-03-01 09:11:58.703169|53.51|debate +4|336|65770|4294967370|81.02|37.45|false|victor laertes|2013-03-01 09:11:58.703257|57.42|chemistry +30|369|65740|4294967529|46.28|45.37|false|david nixon|2013-03-01 09:11:58.703325|44.00|religion +34|276|65621|4294967542|48.39|47.83|true|xavier ovid|2013-03-01 09:11:58.703297|87.52|debate +60|462|65563|4294967440|15.41|46.01|true|zach underhill|2013-03-01 09:11:58.703148|14.88|geology +10|361|65647|4294967360|45.01|43.10|false|alice zipper|2013-03-01 09:11:58.703287|82.83|opthamology +88|350|65550|4294967520|66.47|10.14|true|victor van buren|2013-03-01 09:11:58.703201|65.34|geology +82|509|65627|4294967316|21.11|40.73|false|luke carson|2013-03-01 09:11:58.703285|62.49|chemistry +32|495|65645|4294967542|68.51|10.77|true|luke nixon|2013-03-01 09:11:58.703210|79.40|study skills +9|266|65716|4294967323|76.51|42.04|true|zach quirinius|2013-03-01 09:11:58.703211|77.75|opthamology +118|303|65692|4294967445|28.15|14.23|true|alice ichabod|2013-03-01 09:11:58.703251|17.53|undecided +54|318|65742|4294967454|59.27|30.50|false|calvin xylophone|2013-03-01 09:11:58.703204|28.41|opthamology +5|456|65773|4294967411|14.96|14.89|false|wendy thompson|2013-03-01 09:11:58.703071|45.45|philosophy +77|469|65553|4294967502|9.40|13.11|false|holly underhill|2013-03-01 09:11:58.703206|29.01|history +99|491|65598|4294967540|77.43|8.23|true|david johnson|2013-03-01 09:11:58.703191|53.38|opthamology +38|360|65761|4294967451|92.50|12.28|true|fred miller|2013-03-01 09:11:58.703233|80.85|philosophy +91|493|65616|4294967298|76.22|9.70|false|bob ovid|2013-03-01 09:11:58.703117|48.69|forestry +47|261|65648|4294967314|62.08|26.49|false|ulysses johnson|2013-03-01 09:11:58.703127|46.26|forestry +87|403|65728|4294967362|78.80|15.56|true|irene carson|2013-03-01 09:11:58.703172|81.13|history +-3|337|65629|4294967521|55.59|6.54|true|luke king|2013-03-01 09:11:58.703207|58.52|industrial engineering +35|266|65709|4294967467|99.41|32.00|false|mike white|2013-03-01 09:11:58.703199|82.60|kindergarten +28|324|65773|4294967449|67.33|39.17|false|sarah xylophone|2013-03-01 09:11:58.703191|35.25|religion +15|313|65688|4294967347|29.43|21.91|false|zach allen|2013-03-01 09:11:58.703273|74.14|study skills +28|462|65555|4294967329|50.93|42.53|true|irene robinson|2013-03-01 09:11:58.703170|93.83|history +65|273|65563|4294967368|86.73|33.27|false|rachel xylophone|2013-03-01 09:11:58.703324|8.89|biology +112|341|65627|4294967301|86.14|7.93|true|luke robinson|2013-03-01 09:11:58.703205|95.14|forestry +4|509|65669|4294967467|17.66|30.35|true|nick white|2013-03-01 09:11:58.703219|84.23|chemistry +117|346|65568|4294967340|98.08|18.77|true|jessica van buren|2013-03-01 09:11:58.703170|67.05|quiet hour +31|302|65621|4294967399|12.49|48.25|false|irene laertes|2013-03-01 09:11:58.703189|66.61|wind surfing +60|467|65609|4294967332|42.74|42.12|true|sarah hernandez|2013-03-01 09:11:58.703305|80.09|industrial engineering +63|428|65557|4294967479|43.87|32.54|false|katie miller|2013-03-01 09:11:58.703162|30.08|quiet hour +54|265|65564|4294967309|69.78|19.39|true|ethan hernandez|2013-03-01 09:11:58.703268|66.68|american history +115|352|65751|4294967303|8.79|9.65|true|ethan young|2013-03-01 09:11:58.703207|14.09|education +112|382|65601|4294967326|42.92|31.27|false|irene falkner|2013-03-01 09:11:58.703106|90.38|wind surfing +32|294|65551|4294967427|47.30|9.30|true|mike brown|2013-03-01 09:11:58.703320|57.34|values clariffication +36|363|65706|4294967500|39.36|27.45|false|fred robinson|2013-03-01 09:11:58.703252|83.85|quiet hour +76|508|65593|4294967318|25.48|28.39|false|irene falkner|2013-03-01 09:11:58.703321|62.51|geology +73|483|65604|4294967451|62.75|45.03|false|yuri young|2013-03-01 09:11:58.703142|83.33|religion +92|471|65583|4294967398|7.00|35.96|true|gabriella brown|2013-03-01 09:11:58.703172|91.81|industrial engineering +7|308|65791|4294967304|88.80|38.93|false|fred ellison|2013-03-01 09:11:58.703139|93.50|xylophone band +9|381|65704|4294967505|95.46|21.15|true|alice brown|2013-03-01 09:11:58.703149|85.26|quiet hour +40|355|65758|4294967321|19.77|15.37|false|ethan hernandez|2013-03-01 09:11:58.703322|19.13|mathematics +66|460|65721|4294967361|10.36|30.74|true|mike miller|2013-03-01 09:11:58.703268|32.12|zync studies +120|492|65620|4294967464|52.30|43.70|true|mike steinbeck|2013-03-01 09:11:58.703074|0.02|chemistry +22|351|65742|4294967430|61.06|29.65|false|sarah miller|2013-03-01 09:11:58.703234|11.93|forestry +0|464|65602|4294967530|63.82|23.40|true|wendy king|2013-03-01 09:11:58.703160|81.96|opthamology +101|335|65736|4294967485|7.57|46.61|false|yuri young|2013-03-01 09:11:58.703304|53.61|religion +37|488|65640|4294967380|94.93|2.09|false|priscilla underhill|2013-03-01 09:11:58.703319|50.13|nap time +76|498|65676|4294967376|42.37|38.43|true|zach young|2013-03-01 09:11:58.703109|41.08|forestry +60|305|65600|4294967452|49.58|26.04|false|calvin zipper|2013-03-01 09:11:58.703254|41.56|study skills +101|257|65638|4294967365|95.35|19.76|true|ethan underhill|2013-03-01 09:11:58.703234|19.62|study skills +52|318|65644|4294967429|50.82|8.33|true|victor laertes|2013-03-01 09:11:58.703318|40.65|xylophone band +30|347|65604|4294967482|53.48|10.40|true|tom van buren|2013-03-01 09:11:58.703258|30.57|education +8|360|65570|4294967483|77.94|19.62|false|tom garcia|2013-03-01 09:11:58.703172|45.47|linguistics +52|477|65735|4294967463|98.29|0.32|false|nick polk|2013-03-01 09:11:58.703243|21.96|mathematics +1|416|65563|4294967378|70.73|44.49|false|zach miller|2013-03-01 09:11:58.703231|74.06|yard duty +32|311|65715|4294967428|97.31|22.20|true|alice falkner|2013-03-01 09:11:58.703228|49.60|religion +37|446|65707|4294967348|18.29|0.76|false|fred king|2013-03-01 09:11:58.703277|57.22|linguistics +108|423|65607|4294967497|41.24|3.37|false|victor robinson|2013-03-01 09:11:58.703084|96.76|quiet hour +45|303|65734|4294967361|53.38|41.26|true|ethan quirinius|2013-03-01 09:11:58.703212|39.38|linguistics +94|399|65657|4294967524|95.09|43.52|true|oscar xylophone|2013-03-01 09:11:58.703099|1.42|quiet hour +114|410|65727|4294967501|48.91|46.68|false|priscilla carson|2013-03-01 09:11:58.703222|80.64|nap time +49|416|65771|4294967526|31.05|30.75|false|alice robinson|2013-03-01 09:11:58.703131|87.44|history +119|434|65680|4294967509|60.36|24.16|false|ethan carson|2013-03-01 09:11:58.703167|21.27|american history +78|271|65771|4294967534|31.17|17.25|true|oscar thompson|2013-03-01 09:11:58.703255|50.53|zync studies +1|484|65676|4294967405|77.44|0.14|false|wendy zipper|2013-03-01 09:11:58.703244|35.70|biology +2|407|65691|4294967332|90.94|26.92|true|quinn ovid|2013-03-01 09:11:58.703170|51.04|values clariffication +19|471|65595|4294967444|39.01|36.41|false|katie steinbeck|2013-03-01 09:11:58.703272|64.98|xylophone band +13|446|65725|4294967328|19.15|9.87|true|sarah xylophone|2013-03-01 09:11:58.703130|13.68|yard duty +64|474|65573|4294967347|28.69|6.21|true|oscar van buren|2013-03-01 09:11:58.703146|75.77|linguistics +67|408|65616|4294967444|16.08|44.35|false|mike brown|2013-03-01 09:11:58.703196|29.68|geology +66|347|65578|4294967479|3.13|42.30|true|calvin davidson|2013-03-01 09:11:58.703258|49.97|xylophone band +120|415|65695|4294967336|20.15|13.84|true|zach underhill|2013-03-01 09:11:58.703231|98.25|debate +56|340|65767|4294967443|11.81|11.18|true|bob white|2013-03-01 09:11:58.703197|61.94|mathematics +7|491|65759|4294967517|43.51|6.51|true|ethan thompson|2013-03-01 09:11:58.703145|33.36|chemistry +11|320|65670|4294967509|45.88|27.05|false|xavier garcia|2013-03-01 09:11:58.703158|49.83|nap time +14|489|65772|4294967384|69.00|46.40|true|gabriella nixon|2013-03-01 09:11:58.703284|97.38|mathematics +41|450|65568|4294967540|3.88|45.67|false|ethan nixon|2013-03-01 09:11:58.703242|34.34|wind surfing +56|275|65582|4294967338|54.86|19.12|true|yuri laertes|2013-03-01 09:11:58.703132|5.68|study skills +43|366|65695|4294967333|84.68|22.09|false|rachel polk|2013-03-01 09:11:58.703145|81.38|industrial engineering +113|478|65774|4294967416|89.37|1.52|false|ethan robinson|2013-03-01 09:11:58.703252|75.53|forestry +79|353|65744|4294967439|12.19|27.27|true|katie ovid|2013-03-01 09:11:58.703077|45.83|geology +94|504|65780|4294967316|55.29|42.67|true|yuri carson|2013-03-01 09:11:58.703293|69.14|history +85|366|65545|4294967350|62.54|46.76|false|xavier miller|2013-03-01 09:11:58.703244|70.45|kindergarten +39|353|65636|4294967509|3.54|24.38|true|jessica xylophone|2013-03-01 09:11:58.703270|3.68|philosophy +86|364|65661|4294967429|2.17|29.87|false|holly carson|2013-03-01 09:11:58.703113|48.22|values clariffication +96|395|65609|4294967461|96.87|1.87|true|bob thompson|2013-03-01 09:11:58.703160|71.15|forestry +24|275|65786|4294967346|55.65|20.42|false|sarah polk|2013-03-01 09:11:58.703231|87.41|philosophy +63|449|65619|4294967495|67.77|40.31|false|tom ellison|2013-03-01 09:11:58.703215|27.96|philosophy +7|329|65638|4294967398|3.15|29.92|false|ulysses ovid|2013-03-01 09:11:58.703094|46.36|study skills +72|362|65722|4294967476|39.84|20.05|false|bob nixon|2013-03-01 09:11:58.703103|77.61|zync studies +66|320|65782|4294967309|61.62|10.82|true|victor polk|2013-03-01 09:11:58.703105|29.83|philosophy +55|374|65601|4294967305|89.07|32.33|true|calvin robinson|2013-03-01 09:11:58.703221|80.90|education +102|257|65694|4294967469|29.00|1.75|false|luke falkner|2013-03-01 09:11:58.703160|60.20|values clariffication +30|362|65686|4294967340|70.18|29.16|false|fred nixon|2013-03-01 09:11:58.703296|85.21|topology +86|294|65737|4294967346|68.06|47.76|true|bob thompson|2013-03-01 09:11:58.703317|55.30|chemistry +-1|439|65638|4294967447|4.31|24.29|false|bob robinson|2013-03-01 09:11:58.703171|69.06|topology +41|367|65748|4294967514|75.90|47.29|true|victor ellison|2013-03-01 09:11:58.703105|60.18|chemistry +30|268|65701|4294967549|16.65|18.35|true|fred quirinius|2013-03-01 09:11:58.703125|49.26|history +56|421|65629|4294967447|26.21|43.11|true|fred johnson|2013-03-01 09:11:58.703200|91.90|xylophone band +62|291|65661|4294967301|27.42|38.92|true|gabriella steinbeck|2013-03-01 09:11:58.703093|96.26|kindergarten +104|261|65740|4294967361|84.16|7.34|true|nick quirinius|2013-03-01 09:11:58.703212|66.07|kindergarten +51|309|65687|4294967510|35.89|46.88|true|rachel xylophone|2013-03-01 09:11:58.703276|48.20|philosophy +77|426|65773|4294967366|79.08|20.88|true|ulysses hernandez|2013-03-01 09:11:58.703075|79.25|joggying +117|492|65585|4294967391|95.59|12.50|false|tom underhill|2013-03-01 09:11:58.703155|6.14|education +44|274|65751|4294967465|76.32|14.48|false|oscar johnson|2013-03-01 09:11:58.703164|24.62|philosophy +28|446|65725|4294967516|58.76|9.30|false|mike johnson|2013-03-01 09:11:58.703312|31.58|religion +7|434|65696|4294967484|18.77|23.59|true|mike ichabod|2013-03-01 09:11:58.703215|17.77|linguistics +95|320|65630|4294967330|70.42|10.73|true|david young|2013-03-01 09:11:58.703261|53.29|opthamology +23|476|65741|4294967372|8.63|10.12|false|holly steinbeck|2013-03-01 09:11:58.703303|6.11|american history +-2|421|65772|4294967546|16.35|3.49|true|jessica ovid|2013-03-01 09:11:58.703250|22.73|study skills +92|473|65681|4294967480|72.60|23.70|false|ethan young|2013-03-01 09:11:58.703226|28.90|biology +121|468|65688|4294967515|74.68|2.32|true|mike allen|2013-03-01 09:11:58.703110|36.77|quiet hour +114|259|65610|4294967537|97.94|10.53|true|yuri thompson|2013-03-01 09:11:58.703077|85.17|study skills +2|265|65691|4294967441|89.11|14.82|false|oscar thompson|2013-03-01 09:11:58.703096|72.89|kindergarten +73|265|65738|4294967382|42.63|31.19|false|tom ichabod|2013-03-01 09:11:58.703094|54.05|history +52|461|65719|4294967390|70.74|9.94|true|holly falkner|2013-03-01 09:11:58.703111|54.98|yard duty +27|260|65605|4294967308|11.30|19.46|true|holly nixon|2013-03-01 09:11:58.703123|96.04|debate +114|290|65685|4294967437|47.23|41.78|true|alice hernandez|2013-03-01 09:11:58.703087|87.93|industrial engineering +51|327|65730|4294967439|48.19|1.12|false|calvin johnson|2013-03-01 09:11:58.703184|44.92|industrial engineering +26|384|65623|4294967505|11.37|20.15|false|bob nixon|2013-03-01 09:11:58.703307|66.07|wind surfing +115|456|65588|4294967347|30.08|47.18|true|ethan xylophone|2013-03-01 09:11:58.703131|77.44|biology +80|489|65753|4294967344|75.87|1.32|true|ulysses polk|2013-03-01 09:11:58.703082|74.50|philosophy +14|284|65614|4294967417|46.04|7.29|false|fred xylophone|2013-03-01 09:11:58.703288|23.08|wind surfing +30|433|65669|4294967518|18.94|46.79|true|luke polk|2013-03-01 09:11:58.703125|62.59|xylophone band +122|399|65623|4294967382|25.99|8.48|false|ethan ellison|2013-03-01 09:11:58.703098|47.45|kindergarten +1|300|65650|4294967322|3.45|14.42|false|priscilla polk|2013-03-01 09:11:58.703215|76.87|biology +71|422|65586|4294967527|27.73|10.80|true|fred robinson|2013-03-01 09:11:58.703245|11.41|undecided +23|321|65558|4294967492|73.69|4.54|false|jessica johnson|2013-03-01 09:11:58.703076|94.62|linguistics +117|448|65760|4294967414|11.03|34.51|false|ethan garcia|2013-03-01 09:11:58.703313|73.48|study skills +84|306|65655|4294967397|76.41|35.06|true|sarah ichabod|2013-03-01 09:11:58.703091|0.98|zync studies +34|462|65704|4294967355|18.84|14.63|false|irene polk|2013-03-01 09:11:58.703081|65.13|geology +101|404|65624|4294967347|17.04|12.07|true|fred hernandez|2013-03-01 09:11:58.703167|0.21|topology +22|332|65549|4294967519|48.35|46.07|false|sarah polk|2013-03-01 09:11:58.703124|27.63|linguistics +64|303|65644|4294967492|48.85|48.01|false|calvin white|2013-03-01 09:11:58.703303|47.26|quiet hour +75|416|65690|4294967437|29.62|8.01|true|priscilla ichabod|2013-03-01 09:11:58.703241|55.33|geology +7|262|65555|4294967319|0.82|6.63|true|david king|2013-03-01 09:11:58.703097|27.12|chemistry +52|448|65650|4294967311|36.34|48.13|false|wendy van buren|2013-03-01 09:11:58.703192|42.68|history +84|301|65716|4294967317|80.25|23.74|true|luke van buren|2013-03-01 09:11:58.703103|98.64|quiet hour +18|482|65634|4294967421|31.71|16.80|true|david johnson|2013-03-01 09:11:58.703263|82.48|kindergarten +87|311|65563|4294967489|38.20|14.34|false|xavier underhill|2013-03-01 09:11:58.703246|54.98|wind surfing +97|308|65538|4294967517|2.94|18.18|false|katie nixon|2013-03-01 09:11:58.703186|8.91|mathematics +3|311|65756|4294967510|59.82|30.84|true|xavier laertes|2013-03-01 09:11:58.703247|35.26|values clariffication +65|322|65606|4294967379|60.52|38.50|false|xavier allen|2013-03-01 09:11:58.703178|22.86|debate +108|276|65758|4294967326|37.25|33.06|true|nick zipper|2013-03-01 09:11:58.703191|51.68|debate +25|422|65678|4294967426|72.19|23.31|true|mike king|2013-03-01 09:11:58.703112|77.02|forestry +5|464|65756|4294967371|0.75|19.18|false|irene miller|2013-03-01 09:11:58.703111|72.30|values clariffication +76|463|65543|4294967350|67.93|3.23|false|zach xylophone|2013-03-01 09:11:58.703286|35.56|education +49|474|65706|4294967516|22.92|47.19|true|jessica polk|2013-03-01 09:11:58.703292|23.07|wind surfing +20|389|65752|4294967441|90.40|13.44|false|calvin davidson|2013-03-01 09:11:58.703163|57.39|quiet hour +42|280|65699|4294967408|72.64|49.27|true|irene robinson|2013-03-01 09:11:58.703276|42.57|wind surfing +14|399|65602|4294967473|74.74|14.30|true|zach davidson|2013-03-01 09:11:58.703155|82.74|forestry +93|380|65705|4294967469|78.35|6.19|false|holly garcia|2013-03-01 09:11:58.703152|39.94|mathematics +86|356|65650|4294967311|23.75|0.78|true|priscilla ichabod|2013-03-01 09:11:58.703227|30.84|philosophy +37|297|65675|4294967538|65.68|6.09|false|priscilla white|2013-03-01 09:11:58.703315|70.14|forestry +10|357|65645|4294967487|97.81|34.61|false|jessica allen|2013-03-01 09:11:58.703280|41.00|history +18|296|65723|4294967323|61.41|11.23|true|tom ichabod|2013-03-01 09:11:58.703103|51.29|zync studies +29|291|65772|4294967341|64.64|47.89|true|yuri quirinius|2013-03-01 09:11:58.703242|11.21|xylophone band +106|377|65659|4294967484|4.69|47.70|false|mike hernandez|2013-03-01 09:11:58.703298|6.66|opthamology +45|414|65711|4294967325|51.12|47.60|false|nick davidson|2013-03-01 09:11:58.703222|6.50|mathematics +42|476|65715|4294967432|77.18|16.72|false|wendy ellison|2013-03-01 09:11:58.703186|17.77|topology +37|268|65576|4294967382|8.78|49.30|true|priscilla xylophone|2013-03-01 09:11:58.703077|25.00|study skills +97|364|65768|4294967531|56.59|2.05|false|holly carson|2013-03-01 09:11:58.703226|26.81|debate +67|461|65774|4294967453|45.65|33.91|false|katie xylophone|2013-03-01 09:11:58.703121|21.59|debate +41|306|65702|4294967379|12.42|16.09|false|luke carson|2013-03-01 09:11:58.703096|24.45|american history +25|421|65742|4294967451|90.16|4.17|true|irene robinson|2013-03-01 09:11:58.703267|98.18|geology +73|326|65781|4294967344|99.51|37.23|false|yuri ellison|2013-03-01 09:11:58.703145|4.26|joggying +88|475|65722|4294967467|37.55|17.59|false|priscilla laertes|2013-03-01 09:11:58.703287|75.71|yard duty +22|494|65604|4294967371|62.73|43.72|false|yuri carson|2013-03-01 09:11:58.703289|56.72|values clariffication +97|327|65581|4294967458|86.13|39.99|true|irene quirinius|2013-03-01 09:11:58.703108|65.58|values clariffication +85|304|65618|4294967526|47.00|43.58|true|irene quirinius|2013-03-01 09:11:58.703153|14.80|debate +122|358|65541|4294967378|99.25|47.87|false|jessica quirinius|2013-03-01 09:11:58.703278|58.25|opthamology +122|487|65656|4294967499|8.32|37.21|false|ulysses robinson|2013-03-01 09:11:58.703192|48.43|biology +124|419|65546|4294967467|29.40|9.75|false|ethan underhill|2013-03-01 09:11:58.703194|42.94|american history +18|272|65718|4294967407|45.66|27.93|true|fred laertes|2013-03-01 09:11:58.703094|38.01|linguistics +94|475|65725|4294967398|13.07|45.38|false|nick ichabod|2013-03-01 09:11:58.703211|66.16|xylophone band +3|342|65723|4294967368|19.37|17.02|true|gabriella davidson|2013-03-01 09:11:58.703249|36.21|religion +56|469|65579|4294967379|89.47|47.45|false|oscar quirinius|2013-03-01 09:11:58.703143|26.95|quiet hour +102|333|65537|4294967450|89.47|33.33|true|luke nixon|2013-03-01 09:11:58.703079|53.92|religion +15|496|65740|4294967463|12.06|3.97|false|oscar carson|2013-03-01 09:11:58.703227|93.95|industrial engineering +88|420|65760|4294967323|96.52|2.59|true|wendy nixon|2013-03-01 09:11:58.703261|78.93|quiet hour +71|440|65701|4294967323|10.20|29.61|true|irene garcia|2013-03-01 09:11:58.703261|13.49|history +-1|467|65635|4294967340|19.42|9.70|false|xavier robinson|2013-03-01 09:11:58.703232|56.33|topology +107|332|65790|4294967542|17.51|1.81|true|luke garcia|2013-03-01 09:11:58.703215|58.96|biology +61|325|65594|4294967500|77.76|46.99|true|priscilla falkner|2013-03-01 09:11:58.703137|26.35|mathematics +71|379|65577|4294967528|15.99|2.55|true|quinn davidson|2013-03-01 09:11:58.703316|49.30|geology +45|489|65567|4294967491|1.42|23.46|true|oscar nixon|2013-03-01 09:11:58.703135|29.02|american history +100|416|65761|4294967296|47.89|37.99|false|rachel thompson|2013-03-01 09:11:58.703183|39.51|religion +117|321|65648|4294967358|67.22|34.33|true|oscar zipper|2013-03-01 09:11:58.703237|45.90|industrial engineering +113|454|65771|4294967296|23.34|48.03|true|irene nixon|2013-03-01 09:11:58.703216|57.29|american history +89|424|65728|4294967467|1.30|6.87|false|luke ovid|2013-03-01 09:11:58.703098|56.53|topology +117|377|65689|4294967543|98.73|23.40|true|holly falkner|2013-03-01 09:11:58.703195|28.67|undecided +47|349|65627|4294967390|66.96|46.70|false|bob underhill|2013-03-01 09:11:58.703134|41.54|chemistry +76|491|65744|4294967341|20.24|22.10|false|nick hernandez|2013-03-01 09:11:58.703230|0.73|nap time +61|302|65747|4294967413|99.84|10.06|false|holly ichabod|2013-03-01 09:11:58.703257|65.92|industrial engineering +14|383|65588|4294967337|18.13|16.99|true|gabriella ovid|2013-03-01 09:11:58.703133|31.49|philosophy +46|301|65716|4294967385|17.51|20.17|true|calvin davidson|2013-03-01 09:11:58.703268|23.76|joggying +85|485|65538|4294967320|0.15|14.75|false|alice robinson|2013-03-01 09:11:58.703303|76.67|yard duty +84|474|65674|4294967367|16.44|31.32|true|rachel xylophone|2013-03-01 09:11:58.703244|21.01|mathematics +33|499|65548|4294967459|27.44|11.20|false|sarah polk|2013-03-01 09:11:58.703113|58.30|topology +62|350|65669|4294967399|77.98|21.45|true|oscar carson|2013-03-01 09:11:58.703076|14.68|values clariffication +57|300|65573|4294967301|63.03|40.18|false|quinn ovid|2013-03-01 09:11:58.703071|53.61|american history +122|293|65734|4294967364|34.80|13.81|false|ethan white|2013-03-01 09:11:58.703180|15.54|values clariffication +87|426|65583|4294967338|61.69|32.80|false|rachel king|2013-03-01 09:11:58.703154|91.89|debate +97|274|65688|4294967469|1.77|39.79|true|bob robinson|2013-03-01 09:11:58.703268|97.20|education +89|409|65718|4294967413|20.19|30.31|true|rachel polk|2013-03-01 09:11:58.703283|93.84|chemistry +85|491|65667|4294967441|48.73|9.27|true|holly underhill|2013-03-01 09:11:58.703231|36.82|industrial engineering +83|452|65768|4294967342|29.59|37.71|false|zach zipper|2013-03-01 09:11:58.703321|31.29|kindergarten +10|289|65615|4294967507|88.55|0.71|true|quinn falkner|2013-03-01 09:11:58.703136|42.20|opthamology +103|496|65624|4294967391|65.39|16.28|false|quinn carson|2013-03-01 09:11:58.703197|25.58|industrial engineering +78|317|65686|4294967479|71.80|21.70|false|mike ovid|2013-03-01 09:11:58.703125|96.25|opthamology +77|486|65747|4294967445|17.36|41.14|false|holly hernandez|2013-03-01 09:11:58.703323|39.88|industrial engineering +12|386|65711|4294967357|18.45|21.11|true|fred underhill|2013-03-01 09:11:58.703278|72.82|american history +30|438|65564|4294967307|99.01|45.67|false|ethan falkner|2013-03-01 09:11:58.703216|55.22|history +123|511|65588|4294967424|78.85|6.77|true|mike davidson|2013-03-01 09:11:58.703078|48.29|quiet hour +44|450|65578|4294967402|86.36|36.78|false|bob ovid|2013-03-01 09:11:58.703150|50.51|undecided +88|342|65661|4294967323|99.34|37.43|true|nick young|2013-03-01 09:11:58.703191|49.70|chemistry +38|369|65546|4294967482|17.63|45.14|false|calvin hernandez|2013-03-01 09:11:58.703129|34.87|education +110|507|65732|4294967436|72.96|14.89|false|yuri thompson|2013-03-01 09:11:58.703304|44.35|religion +33|275|65578|4294967519|38.85|21.08|true|xavier steinbeck|2013-03-01 09:11:58.703124|5.49|joggying +109|300|65729|4294967460|83.05|1.35|false|jessica young|2013-03-01 09:11:58.703231|86.34|wind surfing +95|390|65641|4294967456|6.00|1.13|false|mike garcia|2013-03-01 09:11:58.703298|25.35|american history +26|300|65759|4294967341|96.11|28.68|false|ulysses ovid|2013-03-01 09:11:58.703196|92.95|philosophy +55|384|65718|4294967341|51.69|1.54|false|sarah hernandez|2013-03-01 09:11:58.703264|34.07|forestry +92|403|65547|4294967368|31.36|49.72|true|gabriella young|2013-03-01 09:11:58.703077|28.31|xylophone band +105|313|65696|4294967521|93.51|43.46|false|jessica davidson|2013-03-01 09:11:58.703110|20.13|undecided +121|339|65681|4294967380|26.98|7.74|true|ulysses davidson|2013-03-01 09:11:58.703090|22.88|quiet hour +15|498|65705|4294967346|2.40|30.10|false|tom robinson|2013-03-01 09:11:58.703273|95.20|joggying +111|280|65596|4294967454|37.62|18.11|false|calvin king|2013-03-01 09:11:58.703263|55.60|debate +94|414|65690|4294967454|62.34|29.42|true|zach laertes|2013-03-01 09:11:58.703156|20.11|quiet hour +106|315|65583|4294967458|34.13|16.45|false|tom johnson|2013-03-01 09:11:58.703171|70.58|topology +4|336|65653|4294967538|37.41|15.33|true|ulysses thompson|2013-03-01 09:11:58.703210|38.25|nap time +50|291|65749|4294967392|34.87|29.92|false|oscar carson|2013-03-01 09:11:58.703316|91.80|industrial engineering +88|362|65561|4294967349|19.37|38.21|true|wendy ellison|2013-03-01 09:11:58.703271|74.73|undecided +44|294|65627|4294967511|78.02|22.92|true|mike brown|2013-03-01 09:11:58.703093|38.49|xylophone band +32|452|65779|4294967360|56.91|29.68|false|katie falkner|2013-03-01 09:11:58.703178|59.55|chemistry +23|371|65772|4294967485|46.40|5.20|true|ulysses white|2013-03-01 09:11:58.703178|29.27|study skills +2|505|65626|4294967364|68.93|48.16|false|oscar thompson|2013-03-01 09:11:58.703278|29.54|topology +48|332|65557|4294967359|80.27|19.41|true|mike garcia|2013-03-01 09:11:58.703121|95.54|quiet hour +116|480|65693|4294967364|15.97|40.58|true|gabriella xylophone|2013-03-01 09:11:58.703253|57.26|wind surfing +55|289|65617|4294967497|59.42|46.10|true|fred xylophone|2013-03-01 09:11:58.703147|4.31|nap time +119|257|65771|4294967327|48.50|31.85|true|zach hernandez|2013-03-01 09:11:58.703323|45.45|opthamology +108|369|65759|4294967505|3.32|27.71|true|ethan ichabod|2013-03-01 09:11:58.703080|16.63|philosophy +107|333|65664|4294967454|66.69|6.33|false|nick hernandez|2013-03-01 09:11:58.703143|12.63|philosophy +58|349|65683|4294967513|27.93|18.43|true|jessica falkner|2013-03-01 09:11:58.703226|81.16|quiet hour +-1|447|65713|4294967479|14.54|16.45|true|jessica laertes|2013-03-01 09:11:58.703070|79.99|quiet hour +28|487|65630|4294967335|9.06|14.71|true|xavier steinbeck|2013-03-01 09:11:58.703133|82.24|geology +111|497|65694|4294967392|90.69|40.84|true|sarah nixon|2013-03-01 09:11:58.703185|50.00|history +13|354|65753|4294967322|35.40|10.85|true|mike garcia|2013-03-01 09:11:58.703136|28.92|study skills +50|399|65631|4294967336|90.46|19.23|true|jessica miller|2013-03-01 09:11:58.703180|45.67|linguistics +106|411|65790|4294967417|89.69|6.41|true|rachel polk|2013-03-01 09:11:58.703289|84.90|linguistics +52|412|65706|4294967320|96.84|13.16|true|jessica falkner|2013-03-01 09:11:58.703220|53.61|religion +64|324|65743|4294967460|73.40|16.31|true|ethan nixon|2013-03-01 09:11:58.703261|0.38|kindergarten +55|332|65781|4294967416|13.93|30.84|false|alice brown|2013-03-01 09:11:58.703104|85.82|mathematics +31|494|65662|4294967366|89.23|0.97|false|irene king|2013-03-01 09:11:58.703239|13.86|nap time +76|427|65581|4294967457|83.65|10.65|false|oscar davidson|2013-03-01 09:11:58.703125|43.75|values clariffication +-1|415|65555|4294967518|16.76|42.50|true|david falkner|2013-03-01 09:11:58.703278|46.73|quiet hour +7|486|65785|4294967337|45.56|31.21|false|katie davidson|2013-03-01 09:11:58.703084|33.04|yard duty +26|375|65648|4294967389|58.86|43.82|true|holly zipper|2013-03-01 09:11:58.703142|14.54|undecided +13|322|65697|4294967433|91.06|6.96|false|calvin robinson|2013-03-01 09:11:58.703220|40.11|history +33|325|65757|4294967544|1.36|20.52|false|xavier van buren|2013-03-01 09:11:58.703225|27.07|xylophone band +22|498|65669|4294967479|26.10|35.50|false|zach davidson|2013-03-01 09:11:58.703233|40.50|education +114|261|65550|4294967395|14.78|40.47|true|fred ellison|2013-03-01 09:11:58.703249|44.21|values clariffication +40|256|65789|4294967333|91.12|38.53|true|sarah brown|2013-03-01 09:11:58.703080|64.88|education +21|367|65766|4294967496|35.20|43.78|false|ethan carson|2013-03-01 09:11:58.703133|96.83|education +10|331|65633|4294967328|94.32|30.17|false|quinn zipper|2013-03-01 09:11:58.703127|1.50|undecided +62|359|65774|4294967313|91.58|45.00|true|wendy underhill|2013-03-01 09:11:58.703089|70.27|forestry +77|335|65730|4294967479|92.23|5.81|true|alice ellison|2013-03-01 09:11:58.703222|63.65|values clariffication +112|281|65702|4294967381|98.79|31.38|true|jessica garcia|2013-03-01 09:11:58.703277|83.93|quiet hour +51|491|65727|4294967305|2.57|21.59|true|calvin xylophone|2013-03-01 09:11:58.703089|97.15|yard duty +29|472|65664|4294967494|9.75|25.02|false|sarah zipper|2013-03-01 09:11:58.703127|82.89|biology +103|434|65684|4294967354|56.58|27.95|false|ulysses zipper|2013-03-01 09:11:58.703222|46.42|education +8|387|65673|4294967514|15.58|22.76|true|quinn ovid|2013-03-01 09:11:58.703086|86.86|yard duty +16|407|65617|4294967338|92.17|32.11|true|alice polk|2013-03-01 09:11:58.703300|37.88|industrial engineering +80|294|65617|4294967337|0.59|15.98|true|wendy ichabod|2013-03-01 09:11:58.703077|18.17|philosophy +21|439|65746|4294967469|55.37|42.14|false|nick underhill|2013-03-01 09:11:58.703176|76.95|chemistry +50|262|65706|4294967309|98.41|23.13|false|nick garcia|2013-03-01 09:11:58.703210|53.40|wind surfing +110|271|65737|4294967298|15.81|41.04|true|gabriella van buren|2013-03-01 09:11:58.703324|88.58|values clariffication +45|462|65673|4294967533|56.85|40.48|false|bob ovid|2013-03-01 09:11:58.703234|13.56|geology +43|366|65744|4294967303|11.33|1.29|false|alice garcia|2013-03-01 09:11:58.703178|62.65|undecided +89|435|65575|4294967542|2.70|31.25|true|nick davidson|2013-03-01 09:11:58.703280|24.30|chemistry +42|467|65548|4294967317|19.02|30.64|false|holly nixon|2013-03-01 09:11:58.703188|92.88|religion +-3|455|65570|4294967304|2.48|30.76|false|alice king|2013-03-01 09:11:58.703140|41.87|forestry +31|390|65695|4294967317|3.36|36.34|true|xavier underhill|2013-03-01 09:11:58.703277|23.24|philosophy +43|357|65595|4294967457|42.41|44.15|true|david robinson|2013-03-01 09:11:58.703304|50.55|yard duty +74|441|65683|4294967332|17.70|9.41|false|katie allen|2013-03-01 09:11:58.703085|36.74|topology +96|422|65727|4294967508|99.93|4.83|true|victor young|2013-03-01 09:11:58.703305|95.46|opthamology +110|380|65668|4294967546|32.65|11.81|false|oscar brown|2013-03-01 09:11:58.703314|40.59|quiet hour +92|334|65682|4294967405|49.44|45.51|true|gabriella quirinius|2013-03-01 09:11:58.703167|18.51|study skills +83|466|65747|4294967325|34.11|47.70|false|calvin allen|2013-03-01 09:11:58.703226|16.49|undecided +113|336|65578|4294967296|38.23|9.36|false|david ovid|2013-03-01 09:11:58.703160|16.94|geology +29|369|65672|4294967317|75.10|15.88|false|wendy ichabod|2013-03-01 09:11:58.703173|17.52|biology +5|285|65682|4294967509|82.49|46.98|true|xavier allen|2013-03-01 09:11:58.703179|41.69|quiet hour +71|367|65697|4294967491|78.06|23.16|false|priscilla ichabod|2013-03-01 09:11:58.703096|1.68|nap time +15|377|65771|4294967369|70.28|4.98|true|holly thompson|2013-03-01 09:11:58.703102|98.12|linguistics +27|402|65735|4294967411|69.54|38.66|true|mike carson|2013-03-01 09:11:58.703248|98.51|linguistics +88|312|65683|4294967533|16.16|14.44|false|ethan xylophone|2013-03-01 09:11:58.703084|3.36|history +105|316|65766|4294967362|85.78|35.95|true|calvin quirinius|2013-03-01 09:11:58.703290|7.90|yard duty +72|390|65641|4294967364|92.73|32.01|false|jessica ovid|2013-03-01 09:11:58.703220|93.40|history +111|318|65639|4294967339|16.34|4.91|false|calvin young|2013-03-01 09:11:58.703210|29.73|opthamology +108|446|65588|4294967531|66.15|23.33|true|calvin hernandez|2013-03-01 09:11:58.703119|58.68|religion +122|442|65569|4294967349|53.28|16.09|true|irene robinson|2013-03-01 09:11:58.703184|19.87|history +8|429|65682|4294967514|86.73|7.17|false|gabriella ellison|2013-03-01 09:11:58.703323|19.30|yard duty +66|309|65628|4294967345|86.10|39.85|true|jessica ichabod|2013-03-01 09:11:58.703114|61.36|topology +29|329|65611|4294967412|31.46|0.08|false|jessica white|2013-03-01 09:11:58.703119|30.70|topology +78|409|65670|4294967491|26.44|8.06|true|fred robinson|2013-03-01 09:11:58.703104|29.88|topology +72|350|65545|4294967333|63.03|14.50|false|gabriella nixon|2013-03-01 09:11:58.703134|36.52|debate +86|395|65634|4294967438|63.01|9.39|false|mike miller|2013-03-01 09:11:58.703251|19.91|xylophone band +1|401|65578|4294967449|59.41|18.86|false|sarah young|2013-03-01 09:11:58.703135|58.90|american history +36|442|65724|4294967537|35.03|30.02|false|alice van buren|2013-03-01 09:11:58.703107|82.08|history +30|328|65588|4294967500|79.62|15.93|true|david allen|2013-03-01 09:11:58.703074|36.06|nap time +76|312|65739|4294967300|72.40|38.30|false|fred carson|2013-03-01 09:11:58.703092|3.11|philosophy +54|382|65574|4294967459|64.33|35.50|true|wendy ichabod|2013-03-01 09:11:58.703230|84.44|linguistics +105|465|65662|4294967354|82.51|17.61|false|katie laertes|2013-03-01 09:11:58.703320|37.55|linguistics +52|407|65740|4294967334|25.47|19.64|true|calvin xylophone|2013-03-01 09:11:58.703318|75.80|religion +9|357|65566|4294967437|67.22|22.75|true|bob falkner|2013-03-01 09:11:58.703267|75.33|history +67|318|65692|4294967337|55.82|2.95|false|david van buren|2013-03-01 09:11:58.703218|81.02|opthamology +9|504|65713|4294967309|29.04|24.84|false|tom laertes|2013-03-01 09:11:58.703204|0.64|quiet hour +52|302|65721|4294967462|88.55|6.81|false|sarah king|2013-03-01 09:11:58.703230|39.15|geology +84|474|65682|4294967355|72.97|15.78|true|irene ichabod|2013-03-01 09:11:58.703118|66.10|mathematics +8|367|65773|4294967307|57.48|25.10|true|ulysses laertes|2013-03-01 09:11:58.703220|65.37|xylophone band +64|423|65708|4294967510|29.52|16.92|false|zach young|2013-03-01 09:11:58.703280|71.65|education +-1|257|65631|4294967395|51.61|29.85|true|jessica laertes|2013-03-01 09:11:58.703322|12.12|education +73|317|65758|4294967405|15.74|26.98|false|bob young|2013-03-01 09:11:58.703287|99.53|religion +76|373|65578|4294967373|21.78|18.27|false|david van buren|2013-03-01 09:11:58.703121|46.36|topology +67|487|65720|4294967444|13.96|2.69|true|bob laertes|2013-03-01 09:11:58.703220|16.17|mathematics +123|465|65694|4294967499|84.01|7.64|false|xavier allen|2013-03-01 09:11:58.703286|0.46|opthamology +110|495|65542|4294967381|82.89|40.00|true|irene davidson|2013-03-01 09:11:58.703167|7.36|joggying +18|395|65630|4294967532|72.17|12.26|false|bob davidson|2013-03-01 09:11:58.703192|96.66|mathematics +117|427|65562|4294967354|22.25|16.41|false|ethan brown|2013-03-01 09:11:58.703301|66.27|biology +8|492|65589|4294967487|22.99|5.92|false|jessica hernandez|2013-03-01 09:11:58.703231|33.14|mathematics +77|441|65789|4294967373|91.12|14.29|true|luke falkner|2013-03-01 09:11:58.703085|3.34|biology +12|291|65715|4294967334|28.18|35.26|false|victor quirinius|2013-03-01 09:11:58.703081|56.04|education +81|425|65570|4294967370|30.30|21.48|true|alice brown|2013-03-01 09:11:58.703266|93.78|religion +43|443|65613|4294967468|62.77|3.44|true|gabriella steinbeck|2013-03-01 09:11:58.703325|23.84|forestry +33|430|65620|4294967411|61.40|49.57|true|ethan nixon|2013-03-01 09:11:58.703206|21.78|xylophone band +24|421|65769|4294967517|94.25|39.43|true|ethan polk|2013-03-01 09:11:58.703094|0.11|religion +94|295|65550|4294967419|29.95|20.99|true|fred polk|2013-03-01 09:11:58.703131|20.97|study skills +57|310|65608|4294967405|94.75|6.85|true|tom falkner|2013-03-01 09:11:58.703234|86.85|philosophy +56|470|65621|4294967431|25.42|4.32|true|mike ellison|2013-03-01 09:11:58.703268|47.83|philosophy +81|428|65755|4294967541|18.43|36.54|true|luke laertes|2013-03-01 09:11:58.703302|33.77|kindergarten +47|389|65732|4294967368|49.43|22.64|false|quinn underhill|2013-03-01 09:11:58.703205|58.71|chemistry +104|396|65583|4294967551|67.22|40.02|true|katie king|2013-03-01 09:11:58.703320|28.92|debate +80|405|65577|4294967306|13.17|22.10|true|gabriella nixon|2013-03-01 09:11:58.703209|92.38|philosophy +115|319|65782|4294967533|51.54|25.51|false|katie brown|2013-03-01 09:11:58.703258|93.03|mathematics +-2|389|65706|4294967488|26.68|17.93|false|alice underhill|2013-03-01 09:11:58.703122|87.47|forestry +48|405|65620|4294967368|58.01|45.84|false|priscilla nixon|2013-03-01 09:11:58.703256|63.41|linguistics +96|489|65543|4294967315|96.37|31.72|true|fred underhill|2013-03-01 09:11:58.703283|89.25|topology +78|435|65782|4294967301|62.77|6.11|true|jessica king|2013-03-01 09:11:58.703090|64.41|undecided +30|408|65574|4294967546|72.68|48.10|true|david young|2013-03-01 09:11:58.703151|21.41|wind surfing +46|481|65780|4294967443|78.34|1.11|false|nick brown|2013-03-01 09:11:58.703200|18.37|chemistry +74|483|65657|4294967386|87.05|0.18|false|nick davidson|2013-03-01 09:11:58.703094|17.39|industrial engineering +72|299|65605|4294967475|92.62|35.72|false|alice xylophone|2013-03-01 09:11:58.703257|55.87|education +27|428|65675|4294967550|86.64|41.73|false|zach nixon|2013-03-01 09:11:58.703129|20.65|linguistics +72|376|65547|4294967413|51.19|7.48|false|david steinbeck|2013-03-01 09:11:58.703312|35.06|topology +33|506|65581|4294967406|16.31|29.38|true|gabriella underhill|2013-03-01 09:11:58.703130|75.88|chemistry +112|489|65729|4294967361|48.89|48.50|true|yuri carson|2013-03-01 09:11:58.703104|78.15|geology +120|323|65655|4294967300|10.53|21.59|false|priscilla underhill|2013-03-01 09:11:58.703158|42.11|joggying +98|411|65677|4294967343|32.73|34.24|false|jessica ichabod|2013-03-01 09:11:58.703321|78.14|linguistics +81|300|65783|4294967327|42.49|0.50|false|victor falkner|2013-03-01 09:11:58.703235|64.40|values clariffication +97|487|65763|4294967498|76.83|18.75|false|alice quirinius|2013-03-01 09:11:58.703295|20.61|philosophy +53|471|65778|4294967391|34.67|40.57|true|oscar young|2013-03-01 09:11:58.703090|44.09|linguistics +56|283|65723|4294967520|70.01|0.92|true|zach hernandez|2013-03-01 09:11:58.703156|4.39|chemistry +0|498|65767|4294967420|63.57|32.10|false|david underhill|2013-03-01 09:11:58.703276|46.90|forestry +51|353|65646|4294967548|58.94|12.81|false|nick zipper|2013-03-01 09:11:58.703174|30.49|kindergarten +57|459|65734|4294967422|91.84|19.18|true|alice miller|2013-03-01 09:11:58.703260|84.80|study skills +104|281|65626|4294967551|13.30|0.17|false|katie brown|2013-03-01 09:11:58.703147|61.05|undecided +74|395|65698|4294967304|33.44|30.82|false|david van buren|2013-03-01 09:11:58.703109|1.36|mathematics +118|335|65587|4294967367|25.71|36.38|false|tom ichabod|2013-03-01 09:11:58.703144|29.68|history +23|360|65771|4294967488|1.76|19.64|true|calvin davidson|2013-03-01 09:11:58.703126|80.11|nap time +1|321|65764|4294967298|26.47|24.35|false|irene nixon|2013-03-01 09:11:58.703162|10.66|industrial engineering +93|294|65624|4294967537|6.44|25.74|false|victor hernandez|2013-03-01 09:11:58.703156|83.10|education +67|501|65674|4294967406|82.79|46.56|true|fred van buren|2013-03-01 09:11:58.703220|27.81|mathematics +9|439|65787|4294967325|53.18|3.99|false|calvin zipper|2013-03-01 09:11:58.703208|10.72|opthamology +100|469|65554|4294967323|63.81|20.97|true|xavier robinson|2013-03-01 09:11:58.703139|3.52|mathematics +96|484|65545|4294967410|59.98|40.13|true|bob miller|2013-03-01 09:11:58.703325|54.64|xylophone band +18|270|65677|4294967448|85.69|10.43|true|luke van buren|2013-03-01 09:11:58.703109|15.79|mathematics +75|299|65536|4294967510|35.69|36.12|true|ethan underhill|2013-03-01 09:11:58.703277|94.09|opthamology +124|280|65611|4294967422|6.52|15.49|false|gabriella miller|2013-03-01 09:11:58.703230|44.47|american history +114|445|65536|4294967478|69.79|16.96|false|mike quirinius|2013-03-01 09:11:58.703247|59.67|linguistics +34|301|65591|4294967386|17.71|4.53|true|yuri steinbeck|2013-03-01 09:11:58.703323|48.76|industrial engineering +8|359|65568|4294967473|58.25|0.31|true|nick white|2013-03-01 09:11:58.703075|61.20|xylophone band +122|493|65756|4294967445|77.35|1.74|true|sarah carson|2013-03-01 09:11:58.703076|25.51|history +82|455|65699|4294967512|37.34|26.64|false|yuri brown|2013-03-01 09:11:58.703237|43.95|chemistry +104|351|65777|4294967382|52.12|12.10|false|bob white|2013-03-01 09:11:58.703297|52.33|zync studies +43|416|65773|4294967408|16.72|21.04|true|ethan carson|2013-03-01 09:11:58.703266|3.46|geology +55|450|65536|4294967307|76.69|13.26|false|gabriella underhill|2013-03-01 09:11:58.703168|20.50|zync studies +96|361|65539|4294967508|94.18|48.41|true|quinn carson|2013-03-01 09:11:58.703173|50.85|yard duty +16|305|65591|4294967403|4.29|37.37|false|jessica miller|2013-03-01 09:11:58.703075|11.28|study skills +22|354|65636|4294967436|97.34|31.85|true|luke thompson|2013-03-01 09:11:58.703296|80.08|industrial engineering +64|274|65567|4294967458|8.51|0.99|true|wendy xylophone|2013-03-01 09:11:58.703322|63.72|religion +46|362|65753|4294967443|32.63|28.93|false|wendy nixon|2013-03-01 09:11:58.703213|44.26|industrial engineering +67|402|65615|4294967437|4.69|18.72|true|irene laertes|2013-03-01 09:11:58.703131|24.49|religion +78|433|65753|4294967392|28.36|2.78|true|ulysses steinbeck|2013-03-01 09:11:58.703184|0.97|mathematics +107|273|65747|4294967344|89.44|5.57|false|tom thompson|2013-03-01 09:11:58.703152|58.54|kindergarten +17|511|65739|4294967388|37.62|34.42|true|tom underhill|2013-03-01 09:11:58.703122|36.58|philosophy +-2|327|65617|4294967492|48.74|35.18|true|ulysses robinson|2013-03-01 09:11:58.703129|35.32|nap time +87|475|65640|4294967370|16.92|49.31|false|bob carson|2013-03-01 09:11:58.703272|25.53|mathematics +42|355|65669|4294967368|59.44|24.61|false|luke underhill|2013-03-01 09:11:58.703287|87.86|history +65|310|65581|4294967378|19.12|24.97|true|ulysses ichabod|2013-03-01 09:11:58.703257|24.65|opthamology +107|478|65765|4294967533|4.09|12.86|false|katie davidson|2013-03-01 09:11:58.703262|71.14|chemistry +24|360|65687|4294967420|33.23|7.39|true|holly white|2013-03-01 09:11:58.703170|42.52|linguistics +78|478|65735|4294967377|37.37|38.27|true|yuri ichabod|2013-03-01 09:11:58.703105|22.68|topology +29|357|65687|4294967505|69.88|42.24|true|yuri thompson|2013-03-01 09:11:58.703087|61.11|mathematics +75|342|65671|4294967350|81.52|0.93|false|alice steinbeck|2013-03-01 09:11:58.703226|51.32|undecided +58|504|65618|4294967411|29.26|22.21|false|irene carson|2013-03-01 09:11:58.703263|21.25|topology +38|435|65715|4294967338|89.78|18.48|true|tom carson|2013-03-01 09:11:58.703102|50.29|kindergarten +111|377|65544|4294967505|98.07|14.29|false|jessica quirinius|2013-03-01 09:11:58.703220|14.18|linguistics +36|502|65584|4294967410|0.05|48.79|false|david davidson|2013-03-01 09:11:58.703113|47.35|mathematics +35|282|65640|4294967372|3.96|10.68|false|yuri polk|2013-03-01 09:11:58.703256|49.35|zync studies +110|405|65779|4294967439|6.33|10.16|true|oscar garcia|2013-03-01 09:11:58.703171|68.74|zync studies +7|344|65643|4294967444|9.35|43.76|true|bob thompson|2013-03-01 09:11:58.703125|93.49|topology +-3|500|65704|4294967480|2.26|28.79|true|mike polk|2013-03-01 09:11:58.703190|4.33|nap time +58|325|65573|4294967429|52.15|19.93|false|alice garcia|2013-03-01 09:11:58.703286|97.26|industrial engineering +53|429|65595|4294967517|0.29|34.74|true|zach hernandez|2013-03-01 09:11:58.703250|18.74|american history +61|419|65714|4294967386|38.15|8.04|false|rachel brown|2013-03-01 09:11:58.703196|44.59|chemistry +27|499|65782|4294967548|0.69|11.42|false|ethan quirinius|2013-03-01 09:11:58.703136|57.64|debate +79|402|65734|4294967498|59.23|17.01|false|irene allen|2013-03-01 09:11:58.703225|74.81|xylophone band +116|356|65628|4294967542|77.23|29.26|false|zach carson|2013-03-01 09:11:58.703117|49.87|debate +3|398|65768|4294967506|52.53|12.73|true|fred johnson|2013-03-01 09:11:58.703220|40.12|wind surfing +75|381|65704|4294967423|61.05|12.27|false|yuri davidson|2013-03-01 09:11:58.703209|3.87|opthamology +35|490|65750|4294967518|28.72|7.05|false|xavier garcia|2013-03-01 09:11:58.703272|70.02|forestry +59|368|65594|4294967374|40.50|46.64|true|holly xylophone|2013-03-01 09:11:58.703313|42.26|history +72|423|65765|4294967425|82.48|2.09|true|yuri miller|2013-03-01 09:11:58.703209|20.08|joggying +114|501|65759|4294967379|53.24|42.52|false|alice johnson|2013-03-01 09:11:58.703197|9.95|zync studies +37|428|65711|4294967506|54.86|39.93|false|jessica thompson|2013-03-01 09:11:58.703140|85.44|education +110|405|65602|4294967419|26.77|5.05|true|ethan quirinius|2013-03-01 09:11:58.703076|30.37|wind surfing +19|432|65670|4294967404|46.06|42.53|true|jessica zipper|2013-03-01 09:11:58.703140|59.19|education +37|431|65634|4294967376|26.00|7.38|true|rachel nixon|2013-03-01 09:11:58.703252|69.49|philosophy +18|279|65715|4294967301|77.28|27.96|true|bob zipper|2013-03-01 09:11:58.703295|12.11|yard duty +60|268|65589|4294967483|89.97|37.13|true|victor laertes|2013-03-01 09:11:58.703281|0.42|mathematics +107|498|65681|4294967455|73.15|8.19|true|jessica hernandez|2013-03-01 09:11:58.703080|63.94|xylophone band +64|287|65577|4294967334|86.00|9.36|false|mike laertes|2013-03-01 09:11:58.703130|40.29|philosophy +99|494|65788|4294967465|79.94|9.45|true|quinn king|2013-03-01 09:11:58.703130|6.61|industrial engineering +122|398|65634|4294967379|76.99|2.01|false|ethan van buren|2013-03-01 09:11:58.703225|57.71|industrial engineering +34|426|65716|4294967406|51.33|9.39|true|oscar laertes|2013-03-01 09:11:58.703186|27.06|religion +12|346|65563|4294967429|87.25|25.52|true|gabriella davidson|2013-03-01 09:11:58.703297|22.02|history +112|295|65672|4294967504|21.31|5.67|false|mike ellison|2013-03-01 09:11:58.703260|61.24|chemistry +93|355|65699|4294967488|63.57|35.92|false|alice ellison|2013-03-01 09:11:58.703222|85.67|geology +84|373|65592|4294967442|43.46|18.09|true|bob ovid|2013-03-01 09:11:58.703130|92.22|opthamology +36|338|65774|4294967408|61.74|40.77|false|fred allen|2013-03-01 09:11:58.703251|58.07|industrial engineering +97|411|65589|4294967336|8.09|31.19|false|jessica nixon|2013-03-01 09:11:58.703073|82.59|nap time +-2|511|65712|4294967313|43.61|29.15|false|fred king|2013-03-01 09:11:58.703268|42.74|chemistry +1|473|65630|4294967413|51.72|6.17|true|ethan johnson|2013-03-01 09:11:58.703141|6.63|study skills +101|395|65641|4294967355|47.12|31.36|true|rachel ellison|2013-03-01 09:11:58.703223|70.51|debate +51|256|65540|4294967543|49.44|29.95|true|wendy garcia|2013-03-01 09:11:58.703191|18.85|mathematics +80|257|65712|4294967533|90.44|30.33|true|ethan polk|2013-03-01 09:11:58.703194|68.90|philosophy +72|338|65660|4294967361|27.58|25.64|true|zach young|2013-03-01 09:11:58.703261|64.29|topology +85|304|65662|4294967508|92.30|5.53|false|sarah miller|2013-03-01 09:11:58.703198|62.20|debate +20|441|65650|4294967304|53.80|22.20|false|priscilla white|2013-03-01 09:11:58.703322|1.00|education +68|437|65538|4294967321|33.21|40.77|true|luke white|2013-03-01 09:11:58.703152|98.11|opthamology +103|397|65622|4294967463|52.34|21.60|true|rachel robinson|2013-03-01 09:11:58.703129|67.66|industrial engineering +31|456|65766|4294967355|46.79|20.56|true|calvin johnson|2013-03-01 09:11:58.703242|44.94|zync studies +28|296|65776|4294967421|55.61|9.63|true|katie robinson|2013-03-01 09:11:58.703222|88.06|biology +-1|335|65717|4294967415|16.91|24.69|true|luke steinbeck|2013-03-01 09:11:58.703319|98.24|zync studies +82|412|65606|4294967383|37.91|31.97|true|bob carson|2013-03-01 09:11:58.703129|60.39|forestry +66|496|65616|4294967403|64.68|8.16|true|katie thompson|2013-03-01 09:11:58.703298|77.83|forestry +116|411|65721|4294967506|83.79|48.64|true|xavier thompson|2013-03-01 09:11:58.703291|31.83|xylophone band +30|408|65582|4294967526|39.29|23.30|false|jessica hernandez|2013-03-01 09:11:58.703084|84.93|biology +60|361|65574|4294967457|22.38|40.07|false|oscar underhill|2013-03-01 09:11:58.703189|9.01|religion +82|471|65594|4294967303|79.14|2.39|true|yuri ichabod|2013-03-01 09:11:58.703235|24.55|american history +42|275|65692|4294967420|9.25|14.31|false|calvin king|2013-03-01 09:11:58.703163|1.11|undecided +39|439|65761|4294967406|83.13|23.36|true|gabriella davidson|2013-03-01 09:11:58.703074|80.99|chemistry +36|428|65565|4294967495|59.97|8.65|true|calvin falkner|2013-03-01 09:11:58.703268|36.10|quiet hour +43|369|65544|4294967425|28.26|27.11|false|calvin nixon|2013-03-01 09:11:58.703235|63.83|linguistics +123|343|65641|4294967530|33.52|40.05|false|rachel van buren|2013-03-01 09:11:58.703128|30.84|debate +105|337|65577|4294967455|87.07|43.30|true|wendy johnson|2013-03-01 09:11:58.703238|17.58|undecided +1|280|65728|4294967528|30.08|36.91|true|ulysses ichabod|2013-03-01 09:11:58.703230|32.89|debate +51|389|65789|4294967463|38.04|12.19|true|yuri davidson|2013-03-01 09:11:58.703138|11.90|geology +27|305|65568|4294967512|5.52|30.15|false|xavier carson|2013-03-01 09:11:58.703311|86.25|debate +44|302|65696|4294967316|23.59|12.46|false|bob carson|2013-03-01 09:11:58.703301|98.89|xylophone band +103|412|65562|4294967441|14.87|43.81|false|ethan young|2013-03-01 09:11:58.703197|3.81|nap time +85|287|65554|4294967488|93.54|20.30|true|nick allen|2013-03-01 09:11:58.703239|40.96|topology +7|446|65568|4294967358|78.72|5.57|true|quinn ellison|2013-03-01 09:11:58.703243|57.39|education +37|280|65675|4294967422|77.19|31.59|true|ulysses falkner|2013-03-01 09:11:58.703280|76.73|industrial engineering +120|477|65692|4294967391|20.21|44.19|false|fred brown|2013-03-01 09:11:58.703227|20.97|opthamology +1|257|65771|4294967451|53.89|28.77|true|yuri nixon|2013-03-01 09:11:58.703253|2.70|religion +31|299|65748|4294967369|45.66|5.05|false|nick hernandez|2013-03-01 09:11:58.703301|24.10|debate +101|425|65578|4294967473|41.47|15.15|true|oscar allen|2013-03-01 09:11:58.703087|6.41|history +55|333|65540|4294967363|39.35|46.32|false|sarah hernandez|2013-03-01 09:11:58.703293|91.07|american history +41|284|65615|4294967377|92.10|23.09|false|nick steinbeck|2013-03-01 09:11:58.703092|90.74|biology +88|330|65716|4294967322|12.04|26.80|false|ulysses polk|2013-03-01 09:11:58.703090|56.83|religion +99|305|65554|4294967428|78.19|28.49|true|gabriella robinson|2013-03-01 09:11:58.703117|80.59|undecided +98|380|65714|4294967357|84.17|11.98|false|victor steinbeck|2013-03-01 09:11:58.703288|62.59|debate +65|311|65774|4294967428|65.52|21.69|true|xavier johnson|2013-03-01 09:11:58.703316|1.20|chemistry +12|479|65687|4294967377|97.43|8.03|true|sarah garcia|2013-03-01 09:11:58.703223|43.43|quiet hour +30|506|65748|4294967437|6.82|45.57|false|zach brown|2013-03-01 09:11:58.703196|62.39|zync studies +15|398|65551|4294967487|33.42|32.99|false|yuri brown|2013-03-01 09:11:58.703148|26.00|kindergarten +122|308|65627|4294967404|47.86|13.57|true|tom ellison|2013-03-01 09:11:58.703149|75.02|kindergarten +108|389|65698|4294967444|74.75|2.41|true|fred young|2013-03-01 09:11:58.703174|57.21|undecided +71|391|65691|4294967302|17.88|15.20|false|oscar ellison|2013-03-01 09:11:58.703204|64.38|values clariffication +9|504|65761|4294967547|72.67|40.19|false|ulysses van buren|2013-03-01 09:11:58.703201|84.73|kindergarten +0|440|65661|4294967548|78.43|3.34|true|bob white|2013-03-01 09:11:58.703264|31.44|education +90|404|65623|4294967437|85.60|27.86|false|oscar young|2013-03-01 09:11:58.703286|6.43|values clariffication +15|403|65677|4294967401|28.50|36.46|false|jessica laertes|2013-03-01 09:11:58.703101|44.85|education +95|474|65734|4294967490|25.57|23.74|true|bob falkner|2013-03-01 09:11:58.703168|99.54|wind surfing +49|276|65766|4294967515|9.79|20.29|false|quinn johnson|2013-03-01 09:11:58.703162|26.27|mathematics +-2|361|65677|4294967330|93.54|19.61|false|quinn ovid|2013-03-01 09:11:58.703246|30.55|religion +103|505|65543|4294967427|23.45|6.37|false|rachel allen|2013-03-01 09:11:58.703268|17.92|education +91|434|65587|4294967508|0.95|5.85|false|ethan steinbeck|2013-03-01 09:11:58.703122|34.13|topology +86|430|65742|4294967327|59.32|11.02|true|priscilla nixon|2013-03-01 09:11:58.703287|94.12|kindergarten +13|488|65630|4294967521|62.52|36.03|true|holly ovid|2013-03-01 09:11:58.703194|33.39|wind surfing +7|441|65554|4294967318|50.07|15.35|false|luke steinbeck|2013-03-01 09:11:58.703272|98.91|chemistry +29|303|65684|4294967467|5.54|19.76|false|wendy van buren|2013-03-01 09:11:58.703169|54.72|geology +26|343|65698|4294967527|95.85|47.34|true|quinn thompson|2013-03-01 09:11:58.703131|58.56|kindergarten +91|312|65598|4294967500|72.38|27.25|false|bob underhill|2013-03-01 09:11:58.703209|68.49|quiet hour +58|464|65694|4294967374|60.48|28.69|true|katie ovid|2013-03-01 09:11:58.703145|31.50|american history +81|347|65678|4294967348|96.64|10.97|false|tom davidson|2013-03-01 09:11:58.703240|61.22|geology +118|335|65635|4294967369|16.99|43.81|false|zach johnson|2013-03-01 09:11:58.703270|19.14|kindergarten +108|499|65764|4294967318|8.78|38.84|true|victor falkner|2013-03-01 09:11:58.703146|16.87|chemistry +22|408|65630|4294967444|19.38|4.39|true|quinn garcia|2013-03-01 09:11:58.703133|68.09|topology +116|380|65647|4294967549|74.69|39.75|false|calvin zipper|2013-03-01 09:11:58.703203|52.89|geology +34|463|65609|4294967359|98.25|41.83|false|luke young|2013-03-01 09:11:58.703236|49.26|topology +96|339|65702|4294967422|89.45|35.77|true|nick underhill|2013-03-01 09:11:58.703279|22.44|religion +95|472|65635|4294967436|20.76|10.72|false|holly johnson|2013-03-01 09:11:58.703310|99.96|xylophone band +99|320|65605|4294967480|40.10|25.82|false|holly carson|2013-03-01 09:11:58.703298|56.07|american history +-2|360|65635|4294967420|19.54|29.40|false|sarah allen|2013-03-01 09:11:58.703304|63.93|chemistry +47|295|65642|4294967367|13.97|43.86|false|zach ichabod|2013-03-01 09:11:58.703256|75.32|education +103|455|65729|4294967369|82.08|18.85|true|xavier miller|2013-03-01 09:11:58.703234|58.62|joggying +109|302|65590|4294967347|63.97|39.13|false|david brown|2013-03-01 09:11:58.703156|66.84|industrial engineering +52|411|65583|4294967373|0.14|28.74|false|ulysses falkner|2013-03-01 09:11:58.703229|41.39|education +77|383|65641|4294967298|49.20|18.87|false|gabriella davidson|2013-03-01 09:11:58.703278|58.19|linguistics +-1|422|65757|4294967550|8.93|8.81|true|ulysses robinson|2013-03-01 09:11:58.703173|34.88|nap time +82|366|65551|4294967328|47.49|2.81|false|david van buren|2013-03-01 09:11:58.703138|86.27|study skills +87|352|65617|4294967298|97.90|45.71|true|jessica johnson|2013-03-01 09:11:58.703089|7.45|wind surfing +111|361|65615|4294967480|87.43|15.60|false|gabriella van buren|2013-03-01 09:11:58.703070|96.13|philosophy +12|431|65595|4294967490|48.94|39.24|true|ethan young|2013-03-01 09:11:58.703099|87.10|wind surfing +66|335|65570|4294967360|69.38|37.19|true|nick carson|2013-03-01 09:11:58.703304|50.97|education +124|397|65783|4294967414|53.50|38.18|false|mike ichabod|2013-03-01 09:11:58.703221|16.77|xylophone band +63|301|65649|4294967313|39.40|41.96|false|katie van buren|2013-03-01 09:11:58.703230|74.89|american history +-2|390|65753|4294967327|77.93|44.13|false|quinn ovid|2013-03-01 09:11:58.703168|35.10|yard duty +117|308|65763|4294967504|46.24|35.80|true|wendy king|2013-03-01 09:11:58.703106|86.79|religion +79|340|65680|4294967477|85.72|22.49|true|quinn polk|2013-03-01 09:11:58.703167|89.84|chemistry +15|478|65594|4294967440|49.22|45.49|false|sarah laertes|2013-03-01 09:11:58.703082|18.14|mathematics +15|353|65665|4294967437|86.95|32.03|false|ethan young|2013-03-01 09:11:58.703290|61.28|forestry +36|449|65769|4294967388|55.12|27.40|false|tom van buren|2013-03-01 09:11:58.703134|38.29|values clariffication +87|331|65746|4294967509|68.46|49.96|false|luke quirinius|2013-03-01 09:11:58.703151|89.77|debate +-1|309|65788|4294967309|43.40|42.32|true|katie king|2013-03-01 09:11:58.703090|38.61|xylophone band +73|406|65686|4294967314|63.33|25.87|false|ethan laertes|2013-03-01 09:11:58.703317|65.33|xylophone band +94|374|65592|4294967365|93.25|39.97|false|tom quirinius|2013-03-01 09:11:58.703174|51.74|education +68|430|65605|4294967427|45.52|47.71|false|katie zipper|2013-03-01 09:11:58.703250|47.85|kindergarten +109|508|65723|4294967533|51.03|10.99|false|bob quirinius|2013-03-01 09:11:58.703277|3.64|quiet hour +107|334|65596|4294967452|84.30|44.03|false|sarah laertes|2013-03-01 09:11:58.703137|44.09|wind surfing +38|274|65537|4294967446|74.24|45.57|true|alice ellison|2013-03-01 09:11:58.703163|14.48|mathematics +34|458|65747|4294967519|63.86|30.65|false|david falkner|2013-03-01 09:11:58.703148|71.82|american history +119|401|65720|4294967512|57.28|36.08|false|david white|2013-03-01 09:11:58.703260|80.21|nap time +119|384|65781|4294967521|66.42|35.56|false|yuri robinson|2013-03-01 09:11:58.703289|93.03|history +14|355|65585|4294967319|85.57|27.16|true|zach robinson|2013-03-01 09:11:58.703205|78.17|education +18|466|65539|4294967450|31.27|3.95|false|mike miller|2013-03-01 09:11:58.703153|95.93|education +7|322|65721|4294967519|77.24|49.14|true|tom johnson|2013-03-01 09:11:58.703165|49.75|topology +66|368|65791|4294967489|39.18|45.41|false|zach davidson|2013-03-01 09:11:58.703217|50.83|american history +32|363|65675|4294967449|56.89|21.12|false|zach xylophone|2013-03-01 09:11:58.703233|18.88|wind surfing +51|385|65762|4294967422|29.27|37.93|true|luke carson|2013-03-01 09:11:58.703080|56.63|topology +5|388|65635|4294967376|62.29|26.91|false|jessica brown|2013-03-01 09:11:58.703214|7.84|opthamology +3|359|65558|4294967440|36.21|47.51|true|mike robinson|2013-03-01 09:11:58.703292|33.50|values clariffication +107|505|65568|4294967540|13.71|1.76|true|quinn allen|2013-03-01 09:11:58.703209|11.69|religion +5|328|65749|4294967498|37.18|9.53|true|alice johnson|2013-03-01 09:11:58.703128|3.04|history +102|319|65569|4294967486|76.06|19.20|true|luke brown|2013-03-01 09:11:58.703183|89.32|chemistry +10|340|65642|4294967475|22.37|46.37|true|ulysses young|2013-03-01 09:11:58.703222|29.62|undecided +63|276|65627|4294967357|16.19|36.33|true|sarah thompson|2013-03-01 09:11:58.703294|22.38|geology +60|498|65721|4294967317|48.14|17.38|false|luke young|2013-03-01 09:11:58.703251|76.06|history +105|457|65641|4294967524|2.18|41.50|true|xavier xylophone|2013-03-01 09:11:58.703218|83.69|forestry +87|381|65764|4294967417|0.17|10.40|true|victor van buren|2013-03-01 09:11:58.703120|53.10|american history +84|491|65788|4294967325|7.51|2.06|false|sarah zipper|2013-03-01 09:11:58.703215|44.21|yard duty +19|505|65564|4294967445|82.93|39.64|true|david xylophone|2013-03-01 09:11:58.703209|15.15|history +4|317|65628|4294967403|70.73|29.67|true|ulysses allen|2013-03-01 09:11:58.703248|31.29|zync studies +111|403|65547|4294967335|63.73|12.34|false|oscar white|2013-03-01 09:11:58.703302|74.98|philosophy +-2|275|65714|4294967384|21.58|18.57|true|ulysses garcia|2013-03-01 09:11:58.703217|32.31|biology +75|503|65659|4294967296|32.51|16.62|false|quinn steinbeck|2013-03-01 09:11:58.703268|76.77|wind surfing +17|308|65553|4294967507|15.76|16.77|true|rachel carson|2013-03-01 09:11:58.703132|15.37|religion +118|436|65573|4294967428|93.88|15.02|false|xavier xylophone|2013-03-01 09:11:58.703322|80.76|geology +124|345|65589|4294967530|24.56|12.16|true|quinn robinson|2013-03-01 09:11:58.703125|13.49|religion +33|493|65723|4294967410|85.12|2.31|false|fred robinson|2013-03-01 09:11:58.703246|73.45|quiet hour +115|309|65546|4294967526|0.77|4.47|true|bob zipper|2013-03-01 09:11:58.703188|90.39|geology +41|306|65646|4294967423|12.44|2.97|true|jessica xylophone|2013-03-01 09:11:58.703108|24.70|xylophone band +81|357|65550|4294967372|89.86|40.57|false|alice polk|2013-03-01 09:11:58.703310|74.28|geology +59|339|65631|4294967547|18.81|41.87|true|oscar miller|2013-03-01 09:11:58.703075|67.50|nap time +11|327|65701|4294967432|74.42|13.87|true|zach king|2013-03-01 09:11:58.703289|11.62|kindergarten +118|303|65649|4294967462|39.43|23.07|true|calvin white|2013-03-01 09:11:58.703242|77.64|xylophone band +83|492|65644|4294967492|31.27|19.34|false|yuri ovid|2013-03-01 09:11:58.703211|54.73|biology +7|280|65568|4294967492|65.17|44.24|false|sarah allen|2013-03-01 09:11:58.703231|78.28|xylophone band +124|373|65665|4294967500|43.39|13.47|true|ethan king|2013-03-01 09:11:58.703128|56.45|education +18|362|65767|4294967429|21.12|9.62|true|rachel ovid|2013-03-01 09:11:58.703280|89.81|religion +65|333|65711|4294967509|43.73|3.70|true|victor van buren|2013-03-01 09:11:58.703095|0.97|american history +71|281|65778|4294967551|75.23|31.82|true|gabriella nixon|2013-03-01 09:11:58.703184|87.11|debate +73|331|65579|4294967445|74.80|33.90|true|luke polk|2013-03-01 09:11:58.703213|52.55|kindergarten +18|452|65703|4294967351|22.71|32.19|false|xavier king|2013-03-01 09:11:58.703229|15.02|biology +61|440|65686|4294967339|26.46|41.95|true|irene falkner|2013-03-01 09:11:58.703322|54.04|opthamology +30|429|65694|4294967545|43.41|11.52|false|katie miller|2013-03-01 09:11:58.703282|48.71|american history +10|381|65682|4294967350|64.89|42.20|true|alice robinson|2013-03-01 09:11:58.703208|53.07|forestry +34|346|65674|4294967475|3.73|16.55|true|alice king|2013-03-01 09:11:58.703099|67.87|biology +51|321|65584|4294967457|87.95|29.23|true|holly carson|2013-03-01 09:11:58.703084|77.85|quiet hour +-2|334|65644|4294967311|70.20|23.98|true|katie ovid|2013-03-01 09:11:58.703223|43.26|religion +19|343|65555|4294967507|36.52|10.40|false|xavier carson|2013-03-01 09:11:58.703187|24.30|wind surfing +20|316|65615|4294967448|19.53|2.05|false|yuri thompson|2013-03-01 09:11:58.703211|10.35|zync studies +93|396|65788|4294967352|57.53|2.83|false|gabriella zipper|2013-03-01 09:11:58.703233|53.96|yard duty +23|378|65693|4294967394|69.63|40.32|false|gabriella white|2013-03-01 09:11:58.703158|27.90|undecided +2|409|65554|4294967415|52.18|25.89|true|rachel carson|2013-03-01 09:11:58.703255|35.75|topology +52|290|65759|4294967446|17.39|10.74|false|sarah davidson|2013-03-01 09:11:58.703142|89.35|opthamology +30|490|65751|4294967327|53.03|32.65|true|luke nixon|2013-03-01 09:11:58.703290|95.90|geology +106|347|65689|4294967417|52.33|38.33|false|oscar ellison|2013-03-01 09:11:58.703283|71.87|values clariffication +71|476|65659|4294967329|54.98|3.65|true|mike brown|2013-03-01 09:11:58.703155|68.15|forestry +83|424|65661|4294967464|20.47|16.60|true|priscilla nixon|2013-03-01 09:11:58.703125|71.57|yard duty +41|271|65706|4294967327|79.23|23.23|true|holly thompson|2013-03-01 09:11:58.703246|60.85|religion +85|461|65567|4294967356|39.88|2.29|false|nick polk|2013-03-01 09:11:58.703220|84.08|forestry +103|436|65703|4294967355|74.40|22.68|false|ethan young|2013-03-01 09:11:58.703312|79.46|forestry +52|486|65737|4294967483|17.93|15.29|true|ethan thompson|2013-03-01 09:11:58.703088|47.29|topology +113|451|65784|4294967314|56.58|5.89|false|mike white|2013-03-01 09:11:58.703198|61.24|biology +16|458|65754|4294967549|91.65|3.41|true|mike johnson|2013-03-01 09:11:58.703312|67.22|xylophone band +69|283|65643|4294967362|59.23|21.64|false|katie davidson|2013-03-01 09:11:58.703184|94.11|study skills +12|373|65690|4294967434|4.72|7.48|true|jessica robinson|2013-03-01 09:11:58.703305|99.57|linguistics +15|309|65718|4294967346|5.00|12.22|false|luke nixon|2013-03-01 09:11:58.703119|4.25|religion +15|357|65563|4294967395|49.59|30.04|true|sarah steinbeck|2013-03-01 09:11:58.703128|57.33|american history +120|479|65631|4294967433|24.54|1.17|false|alice davidson|2013-03-01 09:11:58.703106|5.76|geology +9|317|65564|4294967471|39.29|21.54|false|jessica garcia|2013-03-01 09:11:58.703232|60.16|forestry +101|458|65548|4294967400|32.15|32.70|false|calvin robinson|2013-03-01 09:11:58.703077|11.71|kindergarten +33|455|65718|4294967416|32.16|49.76|true|alice falkner|2013-03-01 09:11:58.703260|32.80|biology +52|290|65694|4294967395|24.96|42.85|false|tom zipper|2013-03-01 09:11:58.703314|8.90|opthamology +74|404|65710|4294967363|12.60|13.47|true|alice carson|2013-03-01 09:11:58.703139|98.90|geology +100|405|65785|4294967532|0.91|26.61|true|irene falkner|2013-03-01 09:11:58.703292|98.25|nap time +117|488|65576|4294967357|33.08|47.34|false|ulysses xylophone|2013-03-01 09:11:58.703276|1.94|industrial engineering +12|284|65671|4294967331|91.26|17.19|true|luke xylophone|2013-03-01 09:11:58.703143|99.24|linguistics +118|389|65652|4294967439|46.80|44.75|false|victor johnson|2013-03-01 09:11:58.703205|17.83|forestry +-1|466|65764|4294967506|75.70|11.92|false|david quirinius|2013-03-01 09:11:58.703167|10.45|zync studies +13|492|65673|4294967404|5.74|45.75|false|alice brown|2013-03-01 09:11:58.703074|2.81|study skills +97|444|65611|4294967479|92.50|15.78|false|gabriella garcia|2013-03-01 09:11:58.703172|8.48|study skills +45|343|65690|4294967451|66.97|1.20|true|victor young|2013-03-01 09:11:58.703263|46.66|zync studies +109|272|65700|4294967407|72.11|26.41|true|wendy davidson|2013-03-01 09:11:58.703164|54.70|chemistry +36|355|65541|4294967380|39.34|29.28|true|alice ovid|2013-03-01 09:11:58.703181|74.61|education +107|466|65606|4294967498|10.65|4.82|false|holly garcia|2013-03-01 09:11:58.703197|63.47|biology +47|417|65717|4294967464|14.22|28.44|false|calvin van buren|2013-03-01 09:11:58.703127|60.93|nap time +5|486|65668|4294967445|59.64|13.77|true|wendy garcia|2013-03-01 09:11:58.703184|66.41|nap time +59|469|65727|4294967301|57.31|0.79|false|mike hernandez|2013-03-01 09:11:58.703177|84.40|religion +7|470|65653|4294967486|39.98|10.25|true|yuri allen|2013-03-01 09:11:58.703280|84.97|undecided +65|377|65735|4294967517|93.52|21.92|true|ethan ichabod|2013-03-01 09:11:58.703216|69.58|philosophy +37|343|65601|4294967318|91.95|0.75|false|holly steinbeck|2013-03-01 09:11:58.703199|98.51|geology +23|341|65648|4294967327|94.17|17.32|false|ethan ovid|2013-03-01 09:11:58.703129|18.23|geology +106|391|65667|4294967521|48.19|6.70|true|priscilla laertes|2013-03-01 09:11:58.703199|66.46|chemistry +101|419|65736|4294967473|74.68|22.36|false|gabriella thompson|2013-03-01 09:11:58.703239|43.16|undecided +22|334|65571|4294967334|64.43|44.23|true|priscilla nixon|2013-03-01 09:11:58.703291|31.76|chemistry +41|258|65573|4294967310|31.45|10.95|false|gabriella young|2013-03-01 09:11:58.703264|70.64|debate +43|486|65602|4294967466|61.49|45.43|true|ulysses king|2013-03-01 09:11:58.703313|97.99|values clariffication +47|450|65738|4294967522|89.76|29.36|true|alice thompson|2013-03-01 09:11:58.703138|79.34|forestry +38|456|65681|4294967410|23.58|39.34|true|holly carson|2013-03-01 09:11:58.703317|34.78|mathematics +99|447|65750|4294967423|98.66|14.20|true|mike brown|2013-03-01 09:11:58.703288|91.47|topology +1|338|65675|4294967538|60.68|18.55|true|wendy davidson|2013-03-01 09:11:58.703318|25.47|philosophy +11|477|65543|4294967301|95.36|9.10|false|gabriella ovid|2013-03-01 09:11:58.703151|27.07|quiet hour +60|418|65744|4294967300|77.78|42.33|true|katie brown|2013-03-01 09:11:58.703073|26.37|wind surfing +53|377|65752|4294967379|70.20|21.91|true|oscar van buren|2013-03-01 09:11:58.703122|74.12|forestry +96|452|65747|4294967392|0.36|19.63|true|holly allen|2013-03-01 09:11:58.703072|60.55|kindergarten +3|482|65662|4294967531|92.99|33.85|false|victor steinbeck|2013-03-01 09:11:58.703232|16.06|debate +75|286|65747|4294967388|84.24|24.46|false|victor xylophone|2013-03-01 09:11:58.703320|18.00|geology +123|453|65618|4294967402|13.92|33.73|false|wendy johnson|2013-03-01 09:11:58.703258|93.97|chemistry +34|379|65788|4294967441|88.36|23.01|true|bob nixon|2013-03-01 09:11:58.703102|81.35|kindergarten +16|472|65765|4294967423|26.09|4.32|true|david young|2013-03-01 09:11:58.703157|62.84|opthamology +40|386|65595|4294967373|11.44|35.52|true|priscilla king|2013-03-01 09:11:58.703263|39.12|biology +75|443|65594|4294967542|72.33|34.34|false|ethan ovid|2013-03-01 09:11:58.703300|31.30|study skills +30|382|65572|4294967458|87.54|16.90|true|alice robinson|2013-03-01 09:11:58.703224|89.31|education +75|497|65558|4294967504|96.93|17.45|false|ethan johnson|2013-03-01 09:11:58.703182|50.03|debate +117|390|65782|4294967420|2.03|18.37|false|yuri polk|2013-03-01 09:11:58.703195|73.06|kindergarten +56|332|65670|4294967369|82.25|30.46|true|rachel laertes|2013-03-01 09:11:58.703186|37.31|zync studies +16|481|65659|4294967338|27.01|37.67|true|irene ellison|2013-03-01 09:11:58.703147|12.30|topology +76|442|65604|4294967390|71.70|5.63|true|ethan davidson|2013-03-01 09:11:58.703121|0.33|zync studies +91|347|65572|4294967454|85.49|27.97|false|wendy miller|2013-03-01 09:11:58.703163|56.22|quiet hour +52|377|65677|4294967350|63.81|26.66|false|mike zipper|2013-03-01 09:11:58.703192|27.57|kindergarten +6|421|65647|4294967509|34.99|15.30|true|wendy laertes|2013-03-01 09:11:58.703124|69.33|history +70|271|65690|4294967547|67.35|35.24|true|xavier laertes|2013-03-01 09:11:58.703167|91.56|quiet hour +12|387|65572|4294967507|15.31|21.34|true|victor ellison|2013-03-01 09:11:58.703139|18.35|geology +101|299|65741|4294967432|34.56|34.26|false|david ovid|2013-03-01 09:11:58.703271|11.66|debate +110|406|65701|4294967327|30.20|2.43|true|holly carson|2013-03-01 09:11:58.703263|37.07|linguistics +107|399|65542|4294967480|38.27|15.08|false|wendy young|2013-03-01 09:11:58.703167|84.40|education +-1|464|65776|4294967468|30.32|46.98|true|rachel laertes|2013-03-01 09:11:58.703130|66.53|quiet hour +87|408|65683|4294967333|29.71|20.14|true|gabriella johnson|2013-03-01 09:11:58.703071|93.01|forestry +53|405|65686|4294967527|34.20|22.01|true|ulysses falkner|2013-03-01 09:11:58.703270|83.29|study skills +114|444|65637|4294967485|6.42|27.85|true|holly ovid|2013-03-01 09:11:58.703294|59.17|kindergarten +31|305|65595|4294967499|64.66|25.11|true|sarah white|2013-03-01 09:11:58.703203|40.76|topology +27|356|65587|4294967509|34.15|14.78|true|david white|2013-03-01 09:11:58.703299|98.11|topology +86|296|65741|4294967512|91.53|31.03|false|alice ellison|2013-03-01 09:11:58.703170|57.69|geology +6|257|65612|4294967305|3.12|10.29|true|sarah hernandez|2013-03-01 09:11:58.703221|83.31|biology +48|309|65761|4294967331|56.13|22.30|false|mike underhill|2013-03-01 09:11:58.703261|93.73|forestry +19|509|65742|4294967505|57.36|11.43|true|bob ovid|2013-03-01 09:11:58.703276|18.79|history +4|307|65553|4294967517|9.81|10.15|false|ulysses ellison|2013-03-01 09:11:58.703305|55.09|quiet hour +44|332|65554|4294967403|15.89|19.95|true|bob robinson|2013-03-01 09:11:58.703099|55.84|industrial engineering +71|347|65705|4294967362|27.42|36.86|false|katie miller|2013-03-01 09:11:58.703183|72.60|kindergarten +23|476|65751|4294967436|6.79|0.72|false|katie robinson|2013-03-01 09:11:58.703121|76.76|zync studies +35|314|65791|4294967336|57.08|1.93|true|alice young|2013-03-01 09:11:58.703277|91.51|mathematics +58|498|65778|4294967363|58.73|39.25|true|ethan underhill|2013-03-01 09:11:58.703082|0.45|biology +112|419|65648|4294967359|39.97|23.51|true|nick hernandez|2013-03-01 09:11:58.703302|5.51|yard duty +12|415|65747|4294967387|40.87|47.45|false|quinn hernandez|2013-03-01 09:11:58.703259|44.37|values clariffication +90|419|65761|4294967416|78.22|32.36|true|katie quirinius|2013-03-01 09:11:58.703111|57.99|american history +36|268|65627|4294967501|9.16|29.98|false|zach falkner|2013-03-01 09:11:58.703295|3.58|history +25|495|65577|4294967321|44.83|48.75|false|ulysses davidson|2013-03-01 09:11:58.703142|20.51|chemistry +94|301|65550|4294967522|7.18|29.11|true|priscilla allen|2013-03-01 09:11:58.703168|80.45|undecided +71|443|65729|4294967453|17.81|13.38|true|jessica steinbeck|2013-03-01 09:11:58.703117|42.85|values clariffication +114|391|65723|4294967297|80.42|13.67|true|zach falkner|2013-03-01 09:11:58.703136|19.14|undecided +14|298|65623|4294967475|80.44|30.44|true|zach van buren|2013-03-01 09:11:58.703116|49.72|mathematics +23|357|65581|4294967428|96.98|17.68|true|wendy polk|2013-03-01 09:11:58.703160|65.37|philosophy +101|383|65542|4294967427|61.36|36.17|false|xavier nixon|2013-03-01 09:11:58.703291|37.16|topology +110|399|65652|4294967396|22.12|16.04|false|gabriella steinbeck|2013-03-01 09:11:58.703249|86.11|joggying +114|330|65773|4294967490|91.69|27.93|false|zach underhill|2013-03-01 09:11:58.703158|96.34|wind surfing +104|497|65768|4294967341|71.66|49.36|true|katie steinbeck|2013-03-01 09:11:58.703093|44.21|quiet hour +85|368|65567|4294967333|32.11|27.80|false|calvin ellison|2013-03-01 09:11:58.703206|64.01|joggying +36|277|65715|4294967355|67.84|26.06|false|yuri king|2013-03-01 09:11:58.703286|30.76|topology +56|408|65716|4294967361|69.93|11.47|true|xavier young|2013-03-01 09:11:58.703087|67.42|wind surfing +11|333|65623|4294967335|42.22|38.78|false|nick underhill|2013-03-01 09:11:58.703185|12.08|philosophy +111|506|65791|4294967358|5.51|6.10|false|irene ovid|2013-03-01 09:11:58.703119|96.66|industrial engineering +101|411|65624|4294967550|72.84|32.79|true|ethan davidson|2013-03-01 09:11:58.703261|49.80|education +66|477|65701|4294967380|38.68|1.98|true|luke ovid|2013-03-01 09:11:58.703194|99.92|history +15|285|65670|4294967535|7.36|7.25|false|mike van buren|2013-03-01 09:11:58.703265|0.46|geology +10|290|65660|4294967455|28.42|30.35|false|victor ichabod|2013-03-01 09:11:58.703269|55.76|biology +77|379|65603|4294967315|10.39|15.38|false|david king|2013-03-01 09:11:58.703305|96.01|zync studies +121|345|65750|4294967457|34.40|35.01|false|nick thompson|2013-03-01 09:11:58.703293|32.95|opthamology +67|345|65619|4294967331|81.41|6.70|true|victor white|2013-03-01 09:11:58.703217|48.75|debate +17|395|65738|4294967405|55.21|7.52|false|sarah carson|2013-03-01 09:11:58.703245|0.97|debate +36|338|65673|4294967317|20.08|24.61|true|wendy nixon|2013-03-01 09:11:58.703077|12.81|industrial engineering +49|425|65772|4294967447|57.19|15.04|true|xavier quirinius|2013-03-01 09:11:58.703216|3.87|industrial engineering +5|490|65732|4294967303|67.54|33.80|false|victor polk|2013-03-01 09:11:58.703102|69.82|mathematics +31|274|65702|4294967495|37.88|26.83|false|katie miller|2013-03-01 09:11:58.703127|57.23|kindergarten +93|353|65668|4294967349|26.34|6.31|false|holly brown|2013-03-01 09:11:58.703194|89.35|opthamology +114|499|65583|4294967325|90.80|38.86|false|katie ichabod|2013-03-01 09:11:58.703129|70.91|zync studies +118|458|65610|4294967355|57.49|41.03|false|rachel brown|2013-03-01 09:11:58.703304|43.60|biology +2|385|65772|4294967428|32.20|7.27|false|calvin laertes|2013-03-01 09:11:58.703309|40.81|xylophone band +88|491|65732|4294967433|70.68|29.84|false|holly laertes|2013-03-01 09:11:58.703165|32.41|history +74|277|65700|4294967453|16.76|29.26|true|zach king|2013-03-01 09:11:58.703177|90.26|geology +14|442|65719|4294967449|63.38|13.99|true|oscar quirinius|2013-03-01 09:11:58.703296|97.76|industrial engineering +9|288|65709|4294967304|7.13|5.80|false|yuri falkner|2013-03-01 09:11:58.703275|75.40|american history +89|489|65593|4294967361|25.89|47.24|true|ulysses polk|2013-03-01 09:11:58.703164|76.77|chemistry +109|407|65771|4294967418|72.05|32.62|false|tom young|2013-03-01 09:11:58.703285|0.08|religion +74|285|65734|4294967393|12.67|46.88|false|victor robinson|2013-03-01 09:11:58.703096|59.40|philosophy +74|287|65789|4294967414|69.51|46.03|false|mike robinson|2013-03-01 09:11:58.703291|13.60|chemistry +39|429|65588|4294967332|85.67|21.12|true|calvin polk|2013-03-01 09:11:58.703247|80.50|chemistry +0|417|65703|4294967376|25.10|46.85|false|tom ellison|2013-03-01 09:11:58.703247|89.35|education +71|403|65670|4294967328|62.02|10.41|false|fred van buren|2013-03-01 09:11:58.703325|86.78|values clariffication +7|301|65543|4294967462|41.16|39.95|true|yuri carson|2013-03-01 09:11:58.703260|3.85|chemistry +122|317|65547|4294967499|47.95|21.80|true|wendy young|2013-03-01 09:11:58.703117|76.58|joggying +50|332|65710|4294967447|69.57|8.11|false|ulysses young|2013-03-01 09:11:58.703303|54.32|industrial engineering +54|347|65542|4294967545|10.92|19.02|false|katie steinbeck|2013-03-01 09:11:58.703177|14.94|chemistry +17|423|65591|4294967464|50.57|37.51|true|tom ovid|2013-03-01 09:11:58.703095|68.21|linguistics +112|385|65675|4294967412|35.31|6.92|false|victor quirinius|2013-03-01 09:11:58.703081|77.39|philosophy +48|490|65641|4294967432|60.66|27.69|false|bob nixon|2013-03-01 09:11:58.703145|70.14|american history +46|413|65553|4294967357|20.99|16.73|true|tom ichabod|2013-03-01 09:11:58.703121|74.46|forestry +37|312|65644|4294967506|26.18|1.77|false|quinn ellison|2013-03-01 09:11:58.703078|81.10|nap time +121|399|65648|4294967405|20.87|9.02|false|holly xylophone|2013-03-01 09:11:58.703290|53.56|history +67|311|65777|4294967382|43.43|32.80|true|david miller|2013-03-01 09:11:58.703285|30.47|education +34|292|65756|4294967428|71.76|13.47|false|ulysses falkner|2013-03-01 09:11:58.703309|67.03|religion +74|481|65679|4294967424|3.44|19.27|false|nick nixon|2013-03-01 09:11:58.703306|64.29|history +28|436|65692|4294967408|52.93|19.17|false|gabriella underhill|2013-03-01 09:11:58.703314|33.68|undecided +7|397|65787|4294967329|47.82|27.29|true|rachel xylophone|2013-03-01 09:11:58.703250|32.97|opthamology +50|294|65775|4294967462|8.88|16.15|true|ulysses king|2013-03-01 09:11:58.703104|7.09|chemistry +1|429|65541|4294967324|82.69|18.41|false|jessica ovid|2013-03-01 09:11:58.703134|38.37|topology +91|509|65739|4294967397|96.88|17.26|true|luke zipper|2013-03-01 09:11:58.703111|96.23|undecided +63|377|65674|4294967356|50.02|1.23|false|katie thompson|2013-03-01 09:11:58.703232|13.08|american history +90|277|65709|4294967366|65.43|11.46|true|priscilla falkner|2013-03-01 09:11:58.703078|63.33|history +0|411|65743|4294967316|0.08|30.43|true|david ovid|2013-03-01 09:11:58.703163|95.94|biology +77|354|65765|4294967409|37.55|12.06|true|sarah ovid|2013-03-01 09:11:58.703209|50.45|biology +99|356|65780|4294967442|24.62|30.41|true|fred brown|2013-03-01 09:11:58.703280|54.10|education +7|439|65606|4294967513|62.45|19.60|true|nick carson|2013-03-01 09:11:58.703233|59.10|nap time +14|374|65622|4294967492|98.51|40.87|true|sarah robinson|2013-03-01 09:11:58.703136|86.75|joggying +111|479|65605|4294967365|10.46|16.57|false|oscar garcia|2013-03-01 09:11:58.703265|27.35|opthamology +65|290|65748|4294967392|37.39|19.49|true|quinn miller|2013-03-01 09:11:58.703198|26.20|debate +55|483|65786|4294967380|19.32|0.79|true|yuri ovid|2013-03-01 09:11:58.703287|15.80|history +-1|423|65587|4294967430|10.75|41.06|false|alice quirinius|2013-03-01 09:11:58.703284|29.95|religion +26|267|65676|4294967298|55.39|46.87|true|rachel thompson|2013-03-01 09:11:58.703310|27.59|forestry +13|406|65726|4294967427|53.09|5.12|true|bob laertes|2013-03-01 09:11:58.703260|32.09|wind surfing +10|426|65775|4294967535|29.99|8.98|true|yuri brown|2013-03-01 09:11:58.703253|48.08|history +22|320|65649|4294967407|91.93|2.42|true|tom king|2013-03-01 09:11:58.703122|93.89|opthamology +63|261|65748|4294967357|10.44|44.85|false|ulysses white|2013-03-01 09:11:58.703167|97.60|religion +102|453|65539|4294967307|58.07|47.60|false|zach ichabod|2013-03-01 09:11:58.703129|62.09|nap time +32|464|65543|4294967451|85.81|49.51|false|calvin carson|2013-03-01 09:11:58.703107|44.93|chemistry +30|453|65556|4294967406|63.39|8.35|true|ulysses thompson|2013-03-01 09:11:58.703308|8.40|chemistry +45|461|65625|4294967539|90.18|38.11|true|katie davidson|2013-03-01 09:11:58.703186|30.37|zync studies +2|260|65732|4294967524|22.15|2.38|true|sarah polk|2013-03-01 09:11:58.703084|86.33|linguistics +93|465|65656|4294967340|50.99|10.12|true|bob carson|2013-03-01 09:11:58.703241|95.63|kindergarten +55|374|65775|4294967484|55.00|41.23|false|victor falkner|2013-03-01 09:11:58.703176|0.10|forestry +63|336|65786|4294967399|16.02|12.54|true|alice hernandez|2013-03-01 09:11:58.703175|12.54|kindergarten +64|286|65559|4294967464|49.52|25.04|true|mike brown|2013-03-01 09:11:58.703259|36.87|wind surfing +62|480|65553|4294967374|21.34|47.06|true|fred thompson|2013-03-01 09:11:58.703084|44.57|debate +102|277|65548|4294967542|58.21|34.53|true|rachel robinson|2013-03-01 09:11:58.703258|65.74|religion +110|457|65561|4294967371|92.33|35.61|true|sarah miller|2013-03-01 09:11:58.703090|64.15|joggying +5|402|65553|4294967307|93.10|26.10|false|nick thompson|2013-03-01 09:11:58.703084|57.37|mathematics +21|411|65650|4294967482|22.26|20.75|false|tom robinson|2013-03-01 09:11:58.703292|83.82|joggying +39|381|65579|4294967352|26.77|12.35|true|holly allen|2013-03-01 09:11:58.703225|23.91|topology +109|318|65723|4294967471|46.56|31.03|false|sarah nixon|2013-03-01 09:11:58.703224|42.62|opthamology +123|343|65779|4294967399|32.16|4.16|false|oscar johnson|2013-03-01 09:11:58.703163|23.14|kindergarten +17|345|65693|4294967379|26.90|37.74|false|irene davidson|2013-03-01 09:11:58.703140|17.58|philosophy +87|376|65576|4294967311|87.28|1.57|false|alice carson|2013-03-01 09:11:58.703155|10.36|study skills +8|307|65537|4294967429|76.83|17.86|false|zach nixon|2013-03-01 09:11:58.703256|7.36|topology +66|448|65734|4294967372|37.66|48.77|true|oscar davidson|2013-03-01 09:11:58.703194|59.28|joggying +43|337|65696|4294967319|0.20|18.30|false|ethan ovid|2013-03-01 09:11:58.703249|57.38|quiet hour +106|421|65604|4294967348|46.75|13.86|true|katie zipper|2013-03-01 09:11:58.703312|7.08|xylophone band +42|482|65605|4294967498|75.19|39.59|true|sarah brown|2013-03-01 09:11:58.703141|66.57|joggying +113|353|65570|4294967341|74.96|16.67|false|fred ichabod|2013-03-01 09:11:58.703171|9.56|values clariffication +40|267|65624|4294967314|99.80|21.59|true|yuri ellison|2013-03-01 09:11:58.703103|32.08|nap time +11|366|65693|4294967365|9.17|7.62|true|zach quirinius|2013-03-01 09:11:58.703280|20.53|study skills +7|395|65666|4294967451|20.12|21.41|false|zach xylophone|2013-03-01 09:11:58.703276|52.67|history +64|292|65789|4294967440|18.62|47.54|false|yuri hernandez|2013-03-01 09:11:58.703124|33.95|study skills +113|459|65644|4294967475|89.58|22.57|true|rachel xylophone|2013-03-01 09:11:58.703112|21.62|geology +84|335|65635|4294967297|38.31|2.34|false|rachel davidson|2013-03-01 09:11:58.703194|49.07|biology +9|440|65742|4294967484|56.34|6.06|true|luke polk|2013-03-01 09:11:58.703224|97.88|philosophy +106|487|65713|4294967359|78.63|48.13|true|quinn davidson|2013-03-01 09:11:58.703143|37.34|nap time +72|485|65554|4294967359|46.78|47.65|true|gabriella van buren|2013-03-01 09:11:58.703094|48.48|mathematics +-3|493|65662|4294967482|28.75|30.21|false|xavier garcia|2013-03-01 09:11:58.703194|4.94|education +69|375|65549|4294967400|5.69|31.51|false|luke laertes|2013-03-01 09:11:58.703204|6.35|study skills +102|319|65681|4294967418|63.05|35.81|true|quinn robinson|2013-03-01 09:11:58.703166|57.32|mathematics +81|317|65598|4294967359|68.49|38.31|false|bob allen|2013-03-01 09:11:58.703237|85.99|industrial engineering +-3|465|65735|4294967298|72.30|22.58|false|bob underhill|2013-03-01 09:11:58.703176|80.99|joggying +81|496|65574|4294967405|76.96|26.05|false|victor nixon|2013-03-01 09:11:58.703157|44.50|history +75|349|65731|4294967338|26.33|45.42|true|gabriella quirinius|2013-03-01 09:11:58.703107|63.73|undecided +50|333|65607|4294967316|8.42|24.57|true|calvin carson|2013-03-01 09:11:58.703115|67.18|geology +37|431|65788|4294967487|31.99|41.19|false|quinn king|2013-03-01 09:11:58.703210|77.48|topology +121|469|65623|4294967513|68.52|8.74|false|yuri brown|2013-03-01 09:11:58.703204|95.81|biology +64|284|65605|4294967421|78.12|15.41|true|zach white|2013-03-01 09:11:58.703212|47.61|yard duty +16|386|65570|4294967342|99.75|2.67|true|rachel davidson|2013-03-01 09:11:58.703159|3.45|wind surfing +-1|405|65558|4294967342|60.59|26.52|true|priscilla davidson|2013-03-01 09:11:58.703242|28.95|quiet hour +-3|408|65667|4294967509|81.68|45.90|true|david hernandez|2013-03-01 09:11:58.703252|51.79|topology +118|423|65591|4294967419|52.07|32.25|false|sarah quirinius|2013-03-01 09:11:58.703296|2.46|education +85|453|65730|4294967414|44.95|23.68|false|ethan ellison|2013-03-01 09:11:58.703260|46.93|chemistry +58|377|65705|4294967437|25.91|48.46|true|alice underhill|2013-03-01 09:11:58.703072|96.69|wind surfing +15|356|65671|4294967401|88.40|26.85|true|oscar brown|2013-03-01 09:11:58.703141|35.40|philosophy +103|349|65756|4294967423|59.40|24.13|false|luke allen|2013-03-01 09:11:58.703159|25.41|religion +91|377|65602|4294967530|78.52|12.55|true|oscar zipper|2013-03-01 09:11:58.703283|55.41|industrial engineering +39|488|65649|4294967394|29.86|6.47|true|calvin ellison|2013-03-01 09:11:58.703171|16.87|debate +109|310|65785|4294967350|21.72|34.15|true|mike robinson|2013-03-01 09:11:58.703254|78.60|history +19|467|65788|4294967459|76.56|7.66|false|ethan carson|2013-03-01 09:11:58.703237|91.09|education +31|345|65749|4294967441|33.29|49.32|true|fred thompson|2013-03-01 09:11:58.703132|44.02|biology +81|480|65598|4294967456|33.55|39.46|true|alice steinbeck|2013-03-01 09:11:58.703091|19.53|forestry +36|424|65758|4294967420|82.01|46.79|true|mike hernandez|2013-03-01 09:11:58.703269|0.35|education +38|272|65668|4294967414|41.90|3.94|false|rachel falkner|2013-03-01 09:11:58.703313|75.88|geology +84|484|65722|4294967343|66.39|6.81|false|oscar quirinius|2013-03-01 09:11:58.703150|32.48|philosophy +113|270|65744|4294967331|25.33|17.62|false|fred zipper|2013-03-01 09:11:58.703263|58.82|undecided +14|325|65585|4294967525|77.72|26.71|false|tom miller|2013-03-01 09:11:58.703213|56.63|chemistry +15|374|65676|4294967469|60.72|2.52|false|david quirinius|2013-03-01 09:11:58.703312|35.38|quiet hour +62|342|65696|4294967395|25.52|1.71|true|nick polk|2013-03-01 09:11:58.703158|22.02|xylophone band +24|256|65643|4294967351|94.05|1.37|false|calvin young|2013-03-01 09:11:58.703265|19.61|education +78|362|65622|4294967544|43.84|1.74|true|priscilla polk|2013-03-01 09:11:58.703073|58.97|philosophy +53|487|65592|4294967434|43.51|14.58|true|ulysses robinson|2013-03-01 09:11:58.703126|62.73|undecided +109|339|65594|4294967333|61.63|28.35|false|oscar robinson|2013-03-01 09:11:58.703078|60.87|philosophy +118|259|65569|4294967351|94.61|14.72|true|irene quirinius|2013-03-01 09:11:58.703217|90.70|quiet hour +55|286|65740|4294967333|6.31|20.67|true|nick ovid|2013-03-01 09:11:58.703212|82.93|opthamology +3|284|65541|4294967344|26.77|19.05|true|xavier laertes|2013-03-01 09:11:58.703316|80.54|undecided +1|453|65780|4294967482|18.58|7.04|false|bob carson|2013-03-01 09:11:58.703321|82.33|chemistry +113|434|65575|4294967401|17.79|43.12|true|ethan king|2013-03-01 09:11:58.703312|19.95|geology +-1|354|65714|4294967492|86.03|18.38|false|gabriella xylophone|2013-03-01 09:11:58.703254|13.03|chemistry +69|323|65662|4294967346|51.19|17.74|false|irene johnson|2013-03-01 09:11:58.703248|44.25|values clariffication +71|405|65540|4294967458|55.91|41.15|false|mike brown|2013-03-01 09:11:58.703153|24.48|philosophy +34|383|65708|4294967461|1.69|28.15|true|fred brown|2013-03-01 09:11:58.703161|91.46|linguistics +4|462|65537|4294967446|60.53|41.72|false|bob carson|2013-03-01 09:11:58.703095|95.64|linguistics +76|335|65645|4294967546|96.82|28.38|false|ulysses carson|2013-03-01 09:11:58.703246|59.49|yard duty +35|310|65610|4294967323|85.38|40.07|true|ethan falkner|2013-03-01 09:11:58.703277|65.37|education +47|435|65543|4294967406|46.63|44.15|true|alice hernandez|2013-03-01 09:11:58.703243|90.13|undecided +63|407|65668|4294967428|26.90|49.22|false|katie thompson|2013-03-01 09:11:58.703308|96.31|industrial engineering +18|410|65543|4294967519|99.58|6.66|true|victor allen|2013-03-01 09:11:58.703096|41.33|industrial engineering +82|314|65723|4294967329|27.26|27.07|true|quinn carson|2013-03-01 09:11:58.703291|32.78|wind surfing +99|427|65596|4294967442|20.89|4.10|true|fred nixon|2013-03-01 09:11:58.703102|43.73|philosophy +94|330|65776|4294967475|34.12|10.18|false|victor davidson|2013-03-01 09:11:58.703112|82.94|xylophone band +19|445|65688|4294967308|99.14|1.02|true|nick zipper|2013-03-01 09:11:58.703112|68.05|religion +54|340|65609|4294967335|17.19|14.06|true|holly ovid|2013-03-01 09:11:58.703217|72.54|religion +41|336|65564|4294967410|69.17|4.86|false|yuri white|2013-03-01 09:11:58.703321|57.88|education +121|467|65707|4294967349|78.39|41.17|false|priscilla steinbeck|2013-03-01 09:11:58.703275|81.42|chemistry +80|443|65725|4294967446|92.31|6.36|true|sarah robinson|2013-03-01 09:11:58.703273|7.28|geology +123|405|65670|4294967524|19.41|37.64|false|sarah davidson|2013-03-01 09:11:58.703202|84.29|zync studies +25|278|65680|4294967425|61.01|34.11|false|calvin nixon|2013-03-01 09:11:58.703228|83.92|linguistics +-1|410|65571|4294967519|79.57|30.73|false|david ovid|2013-03-01 09:11:58.703287|75.14|joggying +1|499|65587|4294967368|91.96|45.46|false|priscilla thompson|2013-03-01 09:11:58.703207|17.07|wind surfing +0|440|65643|4294967527|27.38|13.06|false|irene laertes|2013-03-01 09:11:58.703297|58.82|values clariffication +116|510|65745|4294967458|41.21|23.95|false|david white|2013-03-01 09:11:58.703274|85.19|nap time +37|469|65728|4294967313|82.32|15.08|false|bob white|2013-03-01 09:11:58.703127|44.78|study skills +25|354|65713|4294967323|15.81|19.27|false|jessica white|2013-03-01 09:11:58.703257|49.80|philosophy +31|458|65550|4294967508|57.43|25.69|true|alice ichabod|2013-03-01 09:11:58.703173|75.81|topology +5|351|65677|4294967414|69.47|48.82|false|alice underhill|2013-03-01 09:11:58.703156|91.75|opthamology +44|350|65743|4294967427|50.09|30.70|true|sarah hernandez|2013-03-01 09:11:58.703176|70.06|topology +100|306|65654|4294967396|54.81|29.72|false|ulysses allen|2013-03-01 09:11:58.703140|11.56|forestry +115|401|65580|4294967434|66.48|41.63|true|priscilla ichabod|2013-03-01 09:11:58.703301|46.09|industrial engineering +121|376|65618|4294967489|61.15|27.37|true|holly polk|2013-03-01 09:11:58.703202|58.82|american history +3|411|65791|4294967371|45.48|31.58|false|holly hernandez|2013-03-01 09:11:58.703255|39.76|forestry +48|425|65641|4294967316|95.74|41.42|true|oscar young|2013-03-01 09:11:58.703165|54.75|nap time +-1|362|65737|4294967424|49.66|31.87|true|sarah king|2013-03-01 09:11:58.703224|7.34|religion +116|279|65715|4294967410|66.56|1.05|true|luke white|2013-03-01 09:11:58.703310|69.27|mathematics +99|333|65599|4294967494|15.29|22.04|true|victor underhill|2013-03-01 09:11:58.703178|41.56|chemistry +-3|477|65785|4294967464|97.51|10.84|true|tom hernandez|2013-03-01 09:11:58.703108|6.71|history +18|402|65623|4294967322|98.56|16.91|false|ulysses miller|2013-03-01 09:11:58.703183|7.17|quiet hour +37|455|65785|4294967540|50.55|24.15|false|tom miller|2013-03-01 09:11:58.703223|45.25|quiet hour +42|354|65568|4294967316|23.51|17.91|false|holly robinson|2013-03-01 09:11:58.703108|28.17|chemistry +89|471|65567|4294967469|45.99|24.14|false|irene falkner|2013-03-01 09:11:58.703087|61.94|debate +4|269|65567|4294967516|26.11|1.03|false|victor brown|2013-03-01 09:11:58.703073|32.73|yard duty +106|350|65635|4294967516|59.80|12.99|true|oscar allen|2013-03-01 09:11:58.703190|59.32|study skills +67|268|65791|4294967365|0.80|11.90|true|sarah robinson|2013-03-01 09:11:58.703160|81.29|opthamology +70|511|65583|4294967517|36.70|47.53|false|quinn garcia|2013-03-01 09:11:58.703175|90.90|opthamology +123|415|65762|4294967452|88.94|28.12|true|quinn ovid|2013-03-01 09:11:58.703316|70.57|education +-1|467|65596|4294967326|89.74|13.90|false|zach hernandez|2013-03-01 09:11:58.703277|60.18|nap time +55|452|65704|4294967415|3.65|31.02|true|gabriella allen|2013-03-01 09:11:58.703232|19.77|topology +112|511|65626|4294967366|60.26|6.21|true|zach nixon|2013-03-01 09:11:58.703176|42.85|nap time +-1|385|65764|4294967341|62.98|3.50|false|nick quirinius|2013-03-01 09:11:58.703292|6.02|yard duty +12|444|65623|4294967362|88.29|12.82|true|rachel miller|2013-03-01 09:11:58.703319|53.41|wind surfing +103|505|65583|4294967407|1.67|36.87|true|oscar carson|2013-03-01 09:11:58.703142|23.61|biology +93|366|65544|4294967306|89.95|20.69|true|rachel davidson|2013-03-01 09:11:58.703249|45.69|quiet hour +87|468|65762|4294967330|53.26|38.35|true|fred polk|2013-03-01 09:11:58.703071|95.89|opthamology +84|479|65698|4294967400|58.51|21.14|true|tom falkner|2013-03-01 09:11:58.703207|2.32|kindergarten +74|395|65578|4294967430|36.33|31.68|false|katie garcia|2013-03-01 09:11:58.703161|70.10|study skills +30|511|65651|4294967444|96.19|41.63|false|priscilla carson|2013-03-01 09:11:58.703098|30.35|education +54|505|65699|4294967455|43.70|36.29|false|holly laertes|2013-03-01 09:11:58.703185|73.47|opthamology +7|426|65779|4294967547|47.25|35.49|false|yuri zipper|2013-03-01 09:11:58.703298|39.12|chemistry +123|349|65686|4294967522|19.56|45.81|false|mike allen|2013-03-01 09:11:58.703095|3.78|chemistry +100|511|65582|4294967399|37.44|37.01|true|bob polk|2013-03-01 09:11:58.703115|32.68|joggying +112|327|65558|4294967377|17.83|3.84|false|xavier brown|2013-03-01 09:11:58.703200|69.98|industrial engineering +76|393|65598|4294967397|31.92|31.31|false|katie brown|2013-03-01 09:11:58.703252|1.81|industrial engineering +30|414|65542|4294967381|65.50|44.78|false|priscilla white|2013-03-01 09:11:58.703217|86.51|philosophy +80|340|65655|4294967503|2.11|47.77|false|quinn ellison|2013-03-01 09:11:58.703256|50.30|topology +122|461|65605|4294967317|6.19|29.10|true|ethan carson|2013-03-01 09:11:58.703171|61.26|undecided +58|353|65739|4294967345|42.55|12.72|true|bob white|2013-03-01 09:11:58.703296|36.85|yard duty +68|388|65769|4294967395|73.82|6.35|true|luke van buren|2013-03-01 09:11:58.703260|99.29|linguistics +11|348|65659|4294967328|1.24|40.57|false|tom garcia|2013-03-01 09:11:58.703169|57.41|philosophy +50|282|65665|4294967509|41.36|35.56|true|quinn davidson|2013-03-01 09:11:58.703213|73.80|philosophy +21|442|65580|4294967387|81.11|3.61|false|victor laertes|2013-03-01 09:11:58.703287|32.96|american history +117|423|65555|4294967365|7.91|30.79|true|oscar zipper|2013-03-01 09:11:58.703186|92.30|mathematics +73|330|65788|4294967386|36.34|49.11|true|calvin young|2013-03-01 09:11:58.703074|5.14|linguistics +120|313|65671|4294967464|26.46|30.26|true|sarah brown|2013-03-01 09:11:58.703130|9.02|biology +83|338|65784|4294967495|25.36|27.41|false|oscar garcia|2013-03-01 09:11:58.703181|76.17|american history +97|319|65726|4294967523|36.39|9.99|true|yuri king|2013-03-01 09:11:58.703323|4.44|nap time +11|495|65787|4294967366|92.17|7.41|false|gabriella garcia|2013-03-01 09:11:58.703152|60.18|linguistics +72|339|65692|4294967366|47.94|28.23|false|david ellison|2013-03-01 09:11:58.703075|69.92|religion +108|281|65688|4294967331|29.23|35.57|false|tom quirinius|2013-03-01 09:11:58.703230|41.51|linguistics +25|471|65732|4294967334|31.15|43.30|false|tom xylophone|2013-03-01 09:11:58.703116|99.20|industrial engineering +117|259|65608|4294967408|29.06|41.49|false|ulysses white|2013-03-01 09:11:58.703106|59.49|history +33|431|65732|4294967377|88.57|47.54|false|nick king|2013-03-01 09:11:58.703209|98.90|american history +60|488|65707|4294967452|56.87|7.12|true|ulysses underhill|2013-03-01 09:11:58.703284|61.46|nap time +3|339|65726|4294967319|40.48|0.90|false|quinn nixon|2013-03-01 09:11:58.703134|88.05|debate +81|354|65577|4294967443|74.20|48.14|false|tom laertes|2013-03-01 09:11:58.703128|83.80|geology +47|510|65696|4294967299|21.45|31.70|false|nick falkner|2013-03-01 09:11:58.703222|60.83|kindergarten +76|361|65733|4294967352|12.49|4.35|false|nick steinbeck|2013-03-01 09:11:58.703233|36.34|industrial engineering +60|341|65603|4294967461|80.48|47.69|true|yuri falkner|2013-03-01 09:11:58.703286|37.95|undecided +87|468|65649|4294967377|36.82|1.80|false|alice young|2013-03-01 09:11:58.703177|77.57|joggying +71|299|65692|4294967373|90.91|18.87|true|calvin johnson|2013-03-01 09:11:58.703135|30.45|american history +117|501|65679|4294967483|53.08|31.96|true|nick xylophone|2013-03-01 09:11:58.703076|77.13|linguistics +88|332|65671|4294967324|13.14|3.25|false|wendy garcia|2013-03-01 09:11:58.703312|84.50|yard duty +18|322|65732|4294967392|96.48|43.57|false|xavier brown|2013-03-01 09:11:58.703231|68.30|education +94|282|65636|4294967412|11.20|39.68|true|luke van buren|2013-03-01 09:11:58.703278|67.83|debate +118|368|65691|4294967391|96.19|9.84|true|jessica laertes|2013-03-01 09:11:58.703241|95.59|topology +100|473|65787|4294967434|4.59|26.01|true|fred nixon|2013-03-01 09:11:58.703231|97.11|biology +59|389|65745|4294967406|39.53|18.25|true|priscilla underhill|2013-03-01 09:11:58.703325|62.70|yard duty +80|276|65766|4294967467|38.77|37.89|true|jessica ellison|2013-03-01 09:11:58.703241|91.19|chemistry +58|353|65634|4294967517|59.69|31.66|true|nick van buren|2013-03-01 09:11:58.703257|82.25|nap time +111|313|65732|4294967476|81.62|22.25|true|zach davidson|2013-03-01 09:11:58.703292|67.82|undecided +22|302|65740|4294967403|42.90|38.34|false|ethan ovid|2013-03-01 09:11:58.703089|22.66|industrial engineering +100|458|65606|4294967369|99.00|20.92|true|victor falkner|2013-03-01 09:11:58.703168|80.73|undecided +25|460|65595|4294967407|95.92|44.51|true|wendy brown|2013-03-01 09:11:58.703108|37.28|quiet hour +49|495|65565|4294967374|30.12|42.89|false|rachel steinbeck|2013-03-01 09:11:58.703270|20.09|values clariffication +-1|479|65642|4294967316|30.14|16.11|false|gabriella white|2013-03-01 09:11:58.703077|48.68|industrial engineering +36|292|65665|4294967438|73.30|9.41|true|oscar davidson|2013-03-01 09:11:58.703221|72.83|nap time +29|397|65629|4294967515|7.03|46.88|false|fred white|2013-03-01 09:11:58.703208|44.60|biology +84|471|65788|4294967440|3.56|43.80|true|oscar allen|2013-03-01 09:11:58.703100|59.13|chemistry +102|300|65576|4294967500|49.25|17.49|false|ulysses white|2013-03-01 09:11:58.703094|23.40|study skills +36|341|65724|4294967327|77.42|17.72|false|priscilla allen|2013-03-01 09:11:58.703198|28.18|philosophy +85|321|65558|4294967482|53.81|14.98|true|jessica ellison|2013-03-01 09:11:58.703099|4.36|education +64|353|65686|4294967415|35.00|47.65|false|bob quirinius|2013-03-01 09:11:58.703286|10.35|topology +37|279|65705|4294967333|46.78|3.96|false|alice steinbeck|2013-03-01 09:11:58.703281|93.16|values clariffication +40|476|65647|4294967456|86.74|9.77|false|sarah miller|2013-03-01 09:11:58.703103|83.26|topology +106|497|65762|4294967411|95.10|29.88|false|yuri carson|2013-03-01 09:11:58.703124|64.20|forestry +32|413|65680|4294967334|71.00|7.80|false|quinn xylophone|2013-03-01 09:11:58.703084|17.15|forestry +54|398|65641|4294967486|37.98|41.17|true|bob nixon|2013-03-01 09:11:58.703300|90.15|religion +119|364|65767|4294967327|89.55|36.86|true|ethan zipper|2013-03-01 09:11:58.703206|18.76|topology +100|267|65546|4294967458|19.81|40.41|false|david steinbeck|2013-03-01 09:11:58.703159|14.23|quiet hour +87|333|65789|4294967377|70.65|37.54|false|luke ovid|2013-03-01 09:11:58.703250|94.86|wind surfing +117|405|65555|4294967358|97.55|15.48|true|katie zipper|2013-03-01 09:11:58.703187|22.95|industrial engineering +0|503|65745|4294967348|74.03|27.07|true|quinn garcia|2013-03-01 09:11:58.703240|4.21|linguistics +122|370|65768|4294967545|58.71|9.32|false|yuri ellison|2013-03-01 09:11:58.703311|36.33|joggying +62|311|65656|4294967456|38.28|30.00|false|rachel ovid|2013-03-01 09:11:58.703270|62.02|philosophy +48|499|65595|4294967450|20.51|12.22|false|quinn laertes|2013-03-01 09:11:58.703145|88.23|undecided +122|310|65737|4294967303|79.93|7.85|false|luke garcia|2013-03-01 09:11:58.703232|2.70|topology +27|409|65541|4294967484|88.12|2.59|true|priscilla falkner|2013-03-01 09:11:58.703088|22.68|philosophy +56|351|65781|4294967407|83.01|7.07|true|ethan carson|2013-03-01 09:11:58.703306|95.70|american history +110|400|65617|4294967535|27.93|21.70|true|nick steinbeck|2013-03-01 09:11:58.703159|81.28|zync studies +78|377|65579|4294967454|70.68|6.26|true|holly carson|2013-03-01 09:11:58.703194|44.60|joggying +86|502|65710|4294967397|62.60|44.42|true|wendy ellison|2013-03-01 09:11:58.703301|3.95|biology +45|487|65575|4294967387|23.69|47.63|false|jessica thompson|2013-03-01 09:11:58.703243|82.25|american history +121|482|65782|4294967451|17.09|1.88|false|victor steinbeck|2013-03-01 09:11:58.703149|8.12|yard duty +60|426|65672|4294967338|6.90|33.66|true|ulysses brown|2013-03-01 09:11:58.703267|4.40|nap time +12|335|65707|4294967333|38.67|22.83|true|quinn van buren|2013-03-01 09:11:58.703256|52.32|undecided +59|443|65665|4294967427|82.38|8.52|true|wendy miller|2013-03-01 09:11:58.703278|59.92|chemistry +71|262|65574|4294967401|80.62|38.79|true|rachel hernandez|2013-03-01 09:11:58.703154|26.99|quiet hour +71|432|65676|4294967349|27.07|24.15|false|yuri xylophone|2013-03-01 09:11:58.703213|39.60|linguistics +75|420|65594|4294967357|76.79|43.32|false|gabriella steinbeck|2013-03-01 09:11:58.703237|49.57|wind surfing +111|335|65591|4294967408|34.96|13.51|false|priscilla nixon|2013-03-01 09:11:58.703185|74.95|topology +29|379|65745|4294967523|44.32|8.40|true|ethan nixon|2013-03-01 09:11:58.703086|71.87|joggying +27|433|65606|4294967516|66.28|8.73|false|quinn polk|2013-03-01 09:11:58.703231|75.57|religion +5|439|65667|4294967404|33.64|40.57|true|priscilla allen|2013-03-01 09:11:58.703175|35.46|mathematics +10|266|65747|4294967297|12.06|48.57|false|mike steinbeck|2013-03-01 09:11:58.703291|97.53|religion +59|393|65739|4294967351|98.16|6.32|false|gabriella van buren|2013-03-01 09:11:58.703241|35.75|history +64|468|65787|4294967433|68.96|19.27|false|katie ichabod|2013-03-01 09:11:58.703324|45.46|xylophone band +65|369|65555|4294967529|81.84|20.68|true|jessica polk|2013-03-01 09:11:58.703302|76.65|quiet hour +120|297|65587|4294967510|68.66|13.92|true|ulysses xylophone|2013-03-01 09:11:58.703134|69.14|mathematics +45|456|65604|4294967354|20.19|23.73|false|sarah robinson|2013-03-01 09:11:58.703157|16.54|wind surfing +-3|400|65557|4294967503|76.31|29.44|false|alice allen|2013-03-01 09:11:58.703323|19.11|debate +49|435|65574|4294967464|19.14|18.78|true|irene polk|2013-03-01 09:11:58.703158|21.41|american history +44|309|65544|4294967319|65.91|46.02|true|sarah allen|2013-03-01 09:11:58.703296|77.76|nap time +99|360|65575|4294967404|17.91|11.12|false|calvin allen|2013-03-01 09:11:58.703221|53.14|biology +10|414|65735|4294967376|94.43|1.64|false|fred quirinius|2013-03-01 09:11:58.703232|79.92|philosophy +21|335|65732|4294967523|54.34|19.64|true|bob xylophone|2013-03-01 09:11:58.703107|30.32|yard duty +78|349|65580|4294967440|33.29|35.00|false|ulysses davidson|2013-03-01 09:11:58.703143|82.41|opthamology +75|281|65540|4294967319|36.67|33.20|false|rachel zipper|2013-03-01 09:11:58.703169|4.55|chemistry +54|281|65657|4294967528|73.96|21.95|true|priscilla quirinius|2013-03-01 09:11:58.703310|33.69|american history +19|291|65783|4294967332|81.88|1.11|true|ethan thompson|2013-03-01 09:11:58.703319|98.25|linguistics +44|322|65637|4294967416|4.64|25.71|true|irene allen|2013-03-01 09:11:58.703195|33.53|wind surfing +105|436|65655|4294967518|9.80|31.51|true|quinn johnson|2013-03-01 09:11:58.703258|49.73|study skills +83|369|65568|4294967415|57.07|17.41|false|yuri van buren|2013-03-01 09:11:58.703156|58.41|biology +42|427|65704|4294967367|82.36|22.92|false|calvin davidson|2013-03-01 09:11:58.703212|7.71|zync studies +31|270|65652|4294967407|46.34|2.87|true|yuri quirinius|2013-03-01 09:11:58.703194|60.67|religion +98|268|65576|4294967395|49.97|23.17|true|zach brown|2013-03-01 09:11:58.703186|10.93|geology +88|297|65537|4294967549|72.62|12.36|false|sarah ichabod|2013-03-01 09:11:58.703210|29.01|wind surfing +36|386|65759|4294967348|10.98|45.78|true|alice king|2013-03-01 09:11:58.703110|79.08|education +18|483|65658|4294967411|21.00|23.54|false|rachel hernandez|2013-03-01 09:11:58.703157|24.03|chemistry +53|404|65748|4294967510|6.54|27.17|true|fred hernandez|2013-03-01 09:11:58.703102|28.14|forestry +74|399|65682|4294967538|85.55|43.37|false|irene falkner|2013-03-01 09:11:58.703170|75.95|yard duty +123|403|65654|4294967367|61.07|28.24|true|holly carson|2013-03-01 09:11:58.703287|7.59|mathematics +19|257|65557|4294967524|55.07|22.33|true|oscar young|2013-03-01 09:11:58.703252|51.18|american history +80|413|65785|4294967429|38.30|21.78|true|ethan miller|2013-03-01 09:11:58.703208|37.63|linguistics +29|492|65654|4294967303|31.02|14.34|false|wendy allen|2013-03-01 09:11:58.703184|61.82|education +73|261|65672|4294967462|14.83|11.27|false|xavier ichabod|2013-03-01 09:11:58.703317|2.68|history +116|293|65734|4294967516|3.70|27.62|true|katie steinbeck|2013-03-01 09:11:58.703240|5.63|mathematics +1|382|65570|4294967504|76.46|49.42|false|ulysses davidson|2013-03-01 09:11:58.703089|31.98|wind surfing +79|462|65734|4294967476|89.52|36.38|false|quinn steinbeck|2013-03-01 09:11:58.703224|84.72|linguistics +114|286|65554|4294967550|18.35|13.01|true|fred robinson|2013-03-01 09:11:58.703171|69.58|yard duty +12|511|65657|4294967394|31.17|39.20|false|calvin laertes|2013-03-01 09:11:58.703070|58.68|wind surfing +61|473|65758|4294967330|77.23|47.58|false|wendy van buren|2013-03-01 09:11:58.703288|4.70|quiet hour +70|365|65566|4294967366|83.52|9.07|false|luke johnson|2013-03-01 09:11:58.703274|42.58|joggying +113|424|65703|4294967386|43.04|18.69|true|fred steinbeck|2013-03-01 09:11:58.703213|98.67|joggying +98|465|65609|4294967371|50.32|30.55|true|ethan young|2013-03-01 09:11:58.703220|60.90|history +103|451|65762|4294967468|88.88|47.08|false|ulysses garcia|2013-03-01 09:11:58.703221|6.81|american history +100|347|65576|4294967383|1.77|12.63|false|victor davidson|2013-03-01 09:11:58.703213|17.33|study skills +48|395|65574|4294967332|20.57|13.18|true|rachel quirinius|2013-03-01 09:11:58.703132|52.70|education +36|394|65740|4294967504|89.26|1.28|true|alice miller|2013-03-01 09:11:58.703152|34.90|opthamology +96|421|65775|4294967340|82.62|41.30|true|tom hernandez|2013-03-01 09:11:58.703201|68.45|linguistics +23|490|65686|4294967508|81.79|42.64|false|oscar van buren|2013-03-01 09:11:58.703114|62.86|wind surfing +8|443|65734|4294967410|63.46|16.01|true|alice polk|2013-03-01 09:11:58.703241|67.07|zync studies +94|492|65681|4294967332|78.86|17.84|true|rachel carson|2013-03-01 09:11:58.703256|35.83|study skills +72|497|65638|4294967530|22.13|42.77|false|priscilla brown|2013-03-01 09:11:58.703258|63.01|philosophy +40|263|65746|4294967297|6.81|31.85|true|ulysses garcia|2013-03-01 09:11:58.703201|5.86|kindergarten +34|408|65791|4294967336|8.38|41.52|true|alice davidson|2013-03-01 09:11:58.703182|3.51|chemistry +30|402|65678|4294967443|79.16|43.02|true|xavier garcia|2013-03-01 09:11:58.703167|51.04|chemistry +116|290|65716|4294967468|71.18|5.52|false|luke king|2013-03-01 09:11:58.703317|16.60|biology +60|374|65725|4294967338|97.67|15.75|true|fred nixon|2013-03-01 09:11:58.703295|93.43|quiet hour +15|361|65551|4294967468|44.29|18.95|true|david polk|2013-03-01 09:11:58.703120|22.34|education +56|491|65717|4294967546|88.28|17.48|false|oscar ellison|2013-03-01 09:11:58.703218|35.37|opthamology +67|403|65779|4294967397|64.09|4.78|true|wendy brown|2013-03-01 09:11:58.703192|90.65|quiet hour +25|414|65625|4294967527|5.73|11.33|true|priscilla young|2013-03-01 09:11:58.703188|46.50|geology +11|404|65580|4294967326|12.59|19.98|true|victor white|2013-03-01 09:11:58.703131|63.55|religion +17|383|65758|4294967454|2.05|18.70|true|ethan davidson|2013-03-01 09:11:58.703322|3.69|wind surfing +26|295|65662|4294967495|88.53|27.40|true|irene davidson|2013-03-01 09:11:58.703233|90.28|philosophy +87|355|65590|4294967320|37.55|40.84|false|xavier robinson|2013-03-01 09:11:58.703109|3.04|xylophone band +14|432|65699|4294967383|91.24|3.71|false|oscar quirinius|2013-03-01 09:11:58.703164|51.90|geology +116|262|65739|4294967477|17.77|35.60|true|sarah white|2013-03-01 09:11:58.703120|27.00|religion +111|460|65598|4294967309|55.34|39.43|true|tom young|2013-03-01 09:11:58.703199|76.25|wind surfing +89|445|65770|4294967317|67.36|44.86|true|victor garcia|2013-03-01 09:11:58.703298|59.99|study skills +79|421|65641|4294967329|0.16|1.44|true|mike underhill|2013-03-01 09:11:58.703237|66.36|kindergarten +1|307|65780|4294967324|0.44|9.34|false|sarah falkner|2013-03-01 09:11:58.703173|3.75|debate +105|341|65778|4294967442|54.90|9.43|true|ulysses thompson|2013-03-01 09:11:58.703137|83.12|biology +111|498|65540|4294967467|17.90|41.59|false|ethan white|2013-03-01 09:11:58.703270|47.96|philosophy +41|349|65777|4294967406|89.80|26.39|false|bob young|2013-03-01 09:11:58.703077|39.04|education +13|314|65616|4294967322|54.86|3.33|false|mike ellison|2013-03-01 09:11:58.703234|2.66|philosophy +53|320|65745|4294967333|24.83|28.87|false|yuri ovid|2013-03-01 09:11:58.703195|71.54|philosophy +60|448|65592|4294967513|15.83|1.58|true|tom hernandez|2013-03-01 09:11:58.703230|97.68|topology +63|465|65603|4294967426|0.23|5.61|true|mike steinbeck|2013-03-01 09:11:58.703277|73.88|mathematics +57|363|65627|4294967335|71.92|28.22|false|nick johnson|2013-03-01 09:11:58.703140|98.72|study skills +110|325|65575|4294967321|78.35|33.13|true|calvin steinbeck|2013-03-01 09:11:58.703200|67.18|biology +11|463|65713|4294967425|52.25|19.85|false|priscilla steinbeck|2013-03-01 09:11:58.703231|82.12|industrial engineering +16|372|65689|4294967372|2.59|44.21|false|ulysses steinbeck|2013-03-01 09:11:58.703203|0.35|geology +82|370|65542|4294967317|42.41|9.70|true|calvin ellison|2013-03-01 09:11:58.703255|48.76|study skills +101|485|65755|4294967425|68.23|39.52|false|irene van buren|2013-03-01 09:11:58.703167|64.18|education +95|305|65735|4294967394|4.41|29.66|false|priscilla davidson|2013-03-01 09:11:58.703176|43.37|quiet hour +30|308|65554|4294967401|60.27|44.29|true|katie thompson|2013-03-01 09:11:58.703253|2.35|yard duty +20|271|65619|4294967313|56.82|49.98|true|calvin ichabod|2013-03-01 09:11:58.703216|78.05|linguistics +94|331|65536|4294967341|85.65|30.84|true|priscilla young|2013-03-01 09:11:58.703135|95.88|yard duty +51|470|65681|4294967322|99.41|14.84|true|xavier thompson|2013-03-01 09:11:58.703223|38.09|opthamology +14|416|65606|4294967437|71.74|13.50|false|quinn steinbeck|2013-03-01 09:11:58.703232|87.57|topology +13|347|65732|4294967389|34.37|45.75|false|luke white|2013-03-01 09:11:58.703209|74.49|geology +107|291|65758|4294967360|18.79|25.90|true|sarah xylophone|2013-03-01 09:11:58.703097|0.38|xylophone band +-3|313|65540|4294967316|25.67|39.88|false|ulysses robinson|2013-03-01 09:11:58.703227|60.80|religion +45|503|65704|4294967373|82.24|10.83|false|holly white|2013-03-01 09:11:58.703283|87.60|mathematics +1|488|65775|4294967484|49.66|38.44|true|sarah ichabod|2013-03-01 09:11:58.703085|11.81|nap time +42|344|65557|4294967416|20.64|40.45|true|calvin carson|2013-03-01 09:11:58.703103|33.90|wind surfing +18|414|65690|4294967435|23.13|29.84|false|rachel brown|2013-03-01 09:11:58.703187|28.63|mathematics +122|272|65568|4294967427|76.41|39.38|true|sarah zipper|2013-03-01 09:11:58.703122|3.87|kindergarten +81|347|65731|4294967527|50.40|34.75|false|katie white|2013-03-01 09:11:58.703142|48.28|philosophy +70|460|65731|4294967440|60.74|5.03|true|gabriella brown|2013-03-01 09:11:58.703143|9.52|xylophone band +85|429|65722|4294967308|8.00|44.13|true|katie ellison|2013-03-01 09:11:58.703217|36.86|kindergarten +106|381|65611|4294967501|88.93|8.82|false|gabriella underhill|2013-03-01 09:11:58.703071|39.86|wind surfing +-3|320|65644|4294967434|84.39|48.00|false|sarah robinson|2013-03-01 09:11:58.703288|72.48|wind surfing +82|370|65745|4294967366|60.27|18.15|true|wendy laertes|2013-03-01 09:11:58.703268|64.01|forestry +5|337|65615|4294967340|12.94|1.25|false|rachel van buren|2013-03-01 09:11:58.703098|19.01|linguistics +62|336|65585|4294967509|95.36|2.26|true|sarah polk|2013-03-01 09:11:58.703264|84.63|debate +15|316|65748|4294967462|79.30|23.55|false|zach polk|2013-03-01 09:11:58.703280|92.47|american history +21|372|65749|4294967533|35.37|26.30|false|quinn quirinius|2013-03-01 09:11:58.703178|80.71|wind surfing +79|271|65620|4294967375|48.45|23.71|false|david davidson|2013-03-01 09:11:58.703110|70.52|forestry +90|333|65657|4294967409|70.25|45.15|false|irene johnson|2013-03-01 09:11:58.703130|38.00|joggying +60|490|65585|4294967376|43.50|23.66|false|mike hernandez|2013-03-01 09:11:58.703177|90.01|opthamology +27|321|65577|4294967453|98.10|34.22|true|ethan nixon|2013-03-01 09:11:58.703148|20.84|undecided +76|330|65597|4294967477|16.46|34.95|false|fred hernandez|2013-03-01 09:11:58.703268|20.06|religion +73|415|65629|4294967485|24.58|36.10|true|calvin thompson|2013-03-01 09:11:58.703274|92.63|philosophy +76|498|65560|4294967331|81.30|10.05|true|zach zipper|2013-03-01 09:11:58.703228|86.19|chemistry +110|417|65569|4294967395|89.64|11.89|true|holly brown|2013-03-01 09:11:58.703077|41.32|xylophone band +45|294|65659|4294967348|31.87|2.62|false|victor steinbeck|2013-03-01 09:11:58.703305|57.40|undecided +8|300|65770|4294967492|59.72|12.16|false|calvin garcia|2013-03-01 09:11:58.703283|13.19|quiet hour +87|308|65552|4294967533|40.99|24.70|true|luke robinson|2013-03-01 09:11:58.703252|90.01|xylophone band +120|319|65669|4294967304|45.52|26.79|false|sarah nixon|2013-03-01 09:11:58.703202|1.62|opthamology +38|509|65685|4294967370|32.94|35.14|true|alice laertes|2013-03-01 09:11:58.703210|51.84|linguistics +19|314|65619|4294967394|0.02|33.38|false|luke steinbeck|2013-03-01 09:11:58.703105|77.78|undecided +42|279|65696|4294967393|39.11|31.84|true|katie polk|2013-03-01 09:11:58.703163|26.42|xylophone band +70|328|65723|4294967373|17.31|42.67|false|david thompson|2013-03-01 09:11:58.703135|87.41|values clariffication +123|410|65668|4294967412|86.42|0.66|true|quinn johnson|2013-03-01 09:11:58.703194|20.15|xylophone band +6|507|65625|4294967384|90.98|34.23|false|irene young|2013-03-01 09:11:58.703161|72.07|undecided +33|326|65591|4294967519|29.10|47.00|true|xavier young|2013-03-01 09:11:58.703266|65.20|values clariffication +95|502|65600|4294967472|0.43|38.63|true|zach miller|2013-03-01 09:11:58.703146|3.88|biology +14|426|65619|4294967541|18.19|0.53|true|alice laertes|2013-03-01 09:11:58.703304|28.09|chemistry +9|291|65552|4294967518|75.41|1.85|false|nick brown|2013-03-01 09:11:58.703300|51.13|religion +6|391|65680|4294967441|7.92|40.90|true|jessica ovid|2013-03-01 09:11:58.703314|97.32|values clariffication +40|313|65635|4294967326|42.75|14.60|true|irene carson|2013-03-01 09:11:58.703198|16.19|study skills +14|283|65589|4294967411|25.39|41.39|false|irene carson|2013-03-01 09:11:58.703204|34.42|wind surfing +45|451|65682|4294967326|84.36|3.47|true|tom hernandez|2013-03-01 09:11:58.703316|9.33|opthamology +0|350|65620|4294967415|78.88|18.98|true|quinn quirinius|2013-03-01 09:11:58.703164|30.07|undecided +81|478|65623|4294967339|33.52|11.97|false|victor allen|2013-03-01 09:11:58.703273|40.11|philosophy +99|341|65666|4294967325|50.79|12.87|true|ulysses van buren|2013-03-01 09:11:58.703234|11.37|biology +19|476|65624|4294967384|5.14|48.09|false|luke van buren|2013-03-01 09:11:58.703208|23.53|values clariffication +111|426|65577|4294967325|14.06|39.54|false|oscar zipper|2013-03-01 09:11:58.703124|97.69|education +119|461|65561|4294967457|97.25|40.67|false|tom ichabod|2013-03-01 09:11:58.703188|10.34|debate +67|395|65632|4294967355|25.33|40.09|true|priscilla zipper|2013-03-01 09:11:58.703312|0.64|philosophy +92|391|65609|4294967469|13.55|29.79|false|bob davidson|2013-03-01 09:11:58.703213|59.77|american history +113|386|65648|4294967319|84.65|46.16|true|sarah ichabod|2013-03-01 09:11:58.703131|8.68|biology +72|337|65723|4294967443|42.19|16.25|false|gabriella zipper|2013-03-01 09:11:58.703260|79.33|quiet hour +54|393|65544|4294967392|9.66|42.94|true|rachel brown|2013-03-01 09:11:58.703219|88.83|nap time +117|416|65732|4294967495|82.21|12.72|true|rachel davidson|2013-03-01 09:11:58.703206|58.64|american history +49|486|65619|4294967422|52.64|2.38|false|sarah robinson|2013-03-01 09:11:58.703307|76.64|history +2|381|65549|4294967358|37.97|23.31|false|nick laertes|2013-03-01 09:11:58.703116|24.38|mathematics +74|444|65745|4294967454|90.53|46.44|false|jessica johnson|2013-03-01 09:11:58.703254|11.37|education +114|322|65582|4294967520|2.40|30.12|true|fred nixon|2013-03-01 09:11:58.703156|39.77|joggying +9|280|65536|4294967299|42.20|29.36|true|sarah thompson|2013-03-01 09:11:58.703142|5.72|philosophy +98|284|65730|4294967389|22.02|33.94|true|ulysses zipper|2013-03-01 09:11:58.703219|65.66|kindergarten +120|358|65687|4294967399|12.95|48.86|false|zach carson|2013-03-01 09:11:58.703305|18.80|chemistry +89|403|65735|4294967510|81.26|32.46|false|fred nixon|2013-03-01 09:11:58.703093|90.36|xylophone band +60|439|65558|4294967396|33.97|9.49|true|fred underhill|2013-03-01 09:11:58.703237|27.53|philosophy +37|459|65655|4294967495|59.41|22.35|false|victor davidson|2013-03-01 09:11:58.703209|22.94|topology +50|298|65554|4294967315|53.84|17.23|true|alice davidson|2013-03-01 09:11:58.703291|64.52|wind surfing +76|421|65742|4294967387|1.67|32.01|false|tom falkner|2013-03-01 09:11:58.703100|28.29|xylophone band +47|478|65709|4294967362|50.90|31.57|false|gabriella king|2013-03-01 09:11:58.703154|10.74|biology +103|289|65607|4294967408|5.72|29.41|false|oscar ellison|2013-03-01 09:11:58.703267|63.81|nap time +92|370|65579|4294967332|68.25|41.79|true|oscar ovid|2013-03-01 09:11:58.703139|97.98|yard duty +45|364|65601|4294967396|56.72|3.94|false|fred ovid|2013-03-01 09:11:58.703211|54.82|opthamology +24|499|65673|4294967476|28.72|15.71|true|rachel robinson|2013-03-01 09:11:58.703275|90.02|debate +58|261|65748|4294967349|47.48|43.42|false|ethan robinson|2013-03-01 09:11:58.703274|20.98|study skills +-2|330|65667|4294967489|63.77|43.88|false|sarah steinbeck|2013-03-01 09:11:58.703092|72.13|zync studies +121|271|65715|4294967404|96.02|16.35|true|katie quirinius|2013-03-01 09:11:58.703091|37.25|linguistics +68|472|65609|4294967315|89.57|18.39|false|alice allen|2013-03-01 09:11:58.703312|85.65|quiet hour +17|411|65766|4294967544|19.86|25.66|true|victor falkner|2013-03-01 09:11:58.703272|81.57|wind surfing +16|447|65687|4294967307|84.15|44.07|false|jessica falkner|2013-03-01 09:11:58.703134|99.40|forestry +37|278|65554|4294967340|45.97|24.17|true|calvin underhill|2013-03-01 09:11:58.703277|86.71|forestry +56|440|65719|4294967506|62.08|31.00|true|bob ovid|2013-03-01 09:11:58.703206|10.42|xylophone band +21|355|65548|4294967546|26.18|21.98|true|calvin steinbeck|2013-03-01 09:11:58.703191|75.97|nap time +3|474|65609|4294967354|7.97|9.84|true|victor garcia|2013-03-01 09:11:58.703229|14.91|education +123|312|65614|4294967508|90.93|24.46|true|yuri white|2013-03-01 09:11:58.703151|21.37|values clariffication +8|413|65664|4294967406|16.25|47.13|false|ethan thompson|2013-03-01 09:11:58.703268|85.28|zync studies +52|373|65764|4294967430|8.95|14.24|true|bob white|2013-03-01 09:11:58.703181|19.17|linguistics +39|456|65716|4294967473|93.10|14.67|false|quinn van buren|2013-03-01 09:11:58.703303|31.07|values clariffication +25|460|65592|4294967301|27.63|32.94|true|irene johnson|2013-03-01 09:11:58.703161|30.17|wind surfing +97|384|65785|4294967482|6.58|37.04|true|irene robinson|2013-03-01 09:11:58.703301|10.14|wind surfing +82|505|65780|4294967366|46.81|27.70|false|quinn hernandez|2013-03-01 09:11:58.703156|82.06|quiet hour +72|444|65681|4294967399|23.01|2.89|true|alice nixon|2013-03-01 09:11:58.703240|92.50|chemistry +51|285|65567|4294967528|29.77|4.40|true|bob laertes|2013-03-01 09:11:58.703260|77.53|wind surfing +114|403|65726|4294967322|41.68|29.58|true|xavier polk|2013-03-01 09:11:58.703297|61.34|yard duty +28|317|65590|4294967524|77.29|23.05|false|ulysses hernandez|2013-03-01 09:11:58.703268|95.69|linguistics +104|425|65691|4294967396|35.60|17.06|false|yuri brown|2013-03-01 09:11:58.703228|65.28|nap time +5|300|65768|4294967373|84.93|31.79|false|david allen|2013-03-01 09:11:58.703182|14.04|wind surfing +100|480|65607|4294967409|23.84|14.90|true|wendy underhill|2013-03-01 09:11:58.703282|12.41|opthamology +48|268|65727|4294967503|69.77|14.46|false|yuri nixon|2013-03-01 09:11:58.703272|16.11|forestry +47|477|65705|4294967334|40.51|7.32|true|tom allen|2013-03-01 09:11:58.703079|19.42|yard duty +93|411|65709|4294967450|90.99|21.51|true|priscilla king|2013-03-01 09:11:58.703286|83.52|forestry +71|401|65735|4294967508|26.78|43.35|false|ulysses quirinius|2013-03-01 09:11:58.703248|99.38|history +87|302|65583|4294967349|98.29|17.15|false|quinn xylophone|2013-03-01 09:11:58.703161|2.37|quiet hour +61|276|65658|4294967343|55.76|4.44|true|xavier garcia|2013-03-01 09:11:58.703278|88.69|debate +99|454|65590|4294967535|24.09|4.88|false|fred king|2013-03-01 09:11:58.703272|41.61|quiet hour +118|366|65781|4294967363|5.13|8.81|false|luke miller|2013-03-01 09:11:58.703152|77.25|opthamology +61|304|65737|4294967458|88.97|40.84|false|irene polk|2013-03-01 09:11:58.703131|85.80|opthamology +38|415|65640|4294967319|19.56|1.00|false|nick miller|2013-03-01 09:11:58.703184|16.68|linguistics +66|335|65720|4294967520|15.28|8.24|true|yuri hernandez|2013-03-01 09:11:58.703272|26.22|zync studies +21|362|65667|4294967299|53.79|16.87|true|bob laertes|2013-03-01 09:11:58.703303|39.12|industrial engineering +48|469|65625|4294967500|41.38|7.70|false|jessica miller|2013-03-01 09:11:58.703104|32.85|joggying +20|406|65654|4294967508|58.14|47.42|false|victor brown|2013-03-01 09:11:58.703119|23.07|linguistics +38|417|65727|4294967433|97.89|16.57|true|jessica white|2013-03-01 09:11:58.703193|44.84|industrial engineering +86|338|65650|4294967377|60.72|1.15|true|victor young|2013-03-01 09:11:58.703195|94.47|mathematics +10|467|65622|4294967404|48.78|36.09|false|luke laertes|2013-03-01 09:11:58.703312|29.59|mathematics +25|340|65653|4294967327|15.50|32.33|false|david young|2013-03-01 09:11:58.703316|49.17|geology +103|294|65588|4294967548|12.90|28.23|true|luke brown|2013-03-01 09:11:58.703168|69.33|biology +-3|485|65669|4294967428|21.34|13.07|false|priscilla zipper|2013-03-01 09:11:58.703321|27.89|quiet hour +19|460|65767|4294967371|66.53|43.75|false|ethan ichabod|2013-03-01 09:11:58.703226|40.41|geology +90|415|65583|4294967342|75.91|28.98|false|sarah polk|2013-03-01 09:11:58.703278|66.71|debate +20|315|65747|4294967351|84.20|10.69|false|calvin falkner|2013-03-01 09:11:58.703159|52.98|kindergarten +15|256|65653|4294967536|8.10|23.50|true|calvin johnson|2013-03-01 09:11:58.703291|85.08|xylophone band +54|398|65701|4294967496|3.58|36.62|true|ethan thompson|2013-03-01 09:11:58.703288|18.68|quiet hour +112|315|65757|4294967317|35.02|2.06|true|david falkner|2013-03-01 09:11:58.703096|58.70|geology +1|293|65677|4294967337|1.04|29.66|false|holly ellison|2013-03-01 09:11:58.703161|10.47|education +92|406|65727|4294967550|13.32|36.57|true|bob falkner|2013-03-01 09:11:58.703233|57.28|linguistics +37|275|65623|4294967428|36.34|12.13|true|rachel robinson|2013-03-01 09:11:58.703254|72.17|quiet hour +99|471|65612|4294967443|0.42|31.86|false|mike allen|2013-03-01 09:11:58.703221|6.64|zync studies +61|384|65707|4294967421|69.66|36.72|true|gabriella quirinius|2013-03-01 09:11:58.703206|25.68|industrial engineering +15|411|65562|4294967390|9.00|28.87|false|holly ovid|2013-03-01 09:11:58.703193|60.78|mathematics +-2|475|65782|4294967308|69.87|18.00|false|ethan nixon|2013-03-01 09:11:58.703294|10.91|industrial engineering +83|391|65660|4294967333|27.60|24.98|false|calvin polk|2013-03-01 09:11:58.703102|42.74|education +98|502|65705|4294967329|21.28|12.82|true|katie white|2013-03-01 09:11:58.703202|77.75|values clariffication +59|298|65779|4294967373|91.57|39.66|true|sarah allen|2013-03-01 09:11:58.703303|33.03|geology +74|381|65717|4294967442|95.68|20.36|false|holly steinbeck|2013-03-01 09:11:58.703301|30.20|kindergarten +-3|316|65696|4294967445|22.00|43.41|false|priscilla laertes|2013-03-01 09:11:58.703250|51.43|values clariffication +83|317|65568|4294967504|88.46|27.58|true|ethan underhill|2013-03-01 09:11:58.703224|0.56|history +83|383|65665|4294967361|5.29|0.02|false|holly polk|2013-03-01 09:11:58.703134|91.66|opthamology +41|418|65770|4294967324|20.99|47.46|false|luke davidson|2013-03-01 09:11:58.703111|6.61|study skills +113|500|65728|4294967394|63.24|46.55|false|xavier laertes|2013-03-01 09:11:58.703314|28.91|philosophy +40|413|65590|4294967307|87.12|36.97|false|nick zipper|2013-03-01 09:11:58.703131|15.83|topology +49|402|65618|4294967425|62.41|1.77|true|fred falkner|2013-03-01 09:11:58.703131|28.11|debate +84|440|65791|4294967485|68.94|37.49|false|rachel ichabod|2013-03-01 09:11:58.703308|9.58|topology +94|393|65645|4294967490|32.14|2.65|true|victor van buren|2013-03-01 09:11:58.703182|34.82|chemistry +25|392|65641|4294967368|66.11|4.24|true|oscar xylophone|2013-03-01 09:11:58.703277|5.20|undecided +112|371|65622|4294967420|3.62|18.95|false|nick steinbeck|2013-03-01 09:11:58.703103|32.15|nap time +114|281|65747|4294967479|74.37|31.93|true|rachel white|2013-03-01 09:11:58.703287|56.43|nap time +15|353|65601|4294967308|46.58|39.36|true|calvin quirinius|2013-03-01 09:11:58.703137|95.11|education +101|502|65716|4294967369|11.60|41.49|true|nick davidson|2013-03-01 09:11:58.703279|11.37|linguistics +116|416|65749|4294967523|66.99|7.69|false|david zipper|2013-03-01 09:11:58.703085|68.97|history +43|366|65590|4294967450|24.84|18.01|true|alice ichabod|2013-03-01 09:11:58.703312|63.48|debate +66|354|65579|4294967505|36.98|14.90|true|david zipper|2013-03-01 09:11:58.703299|39.90|linguistics +63|420|65626|4294967525|18.36|32.10|true|holly young|2013-03-01 09:11:58.703295|83.63|joggying +36|268|65748|4294967507|58.95|22.48|false|calvin underhill|2013-03-01 09:11:58.703213|55.14|topology +77|390|65631|4294967497|21.41|36.53|false|katie zipper|2013-03-01 09:11:58.703262|71.08|values clariffication +35|496|65703|4294967551|17.27|4.50|false|holly thompson|2013-03-01 09:11:58.703127|85.43|religion +15|349|65745|4294967459|64.96|6.17|true|bob ellison|2013-03-01 09:11:58.703105|7.99|forestry +108|389|65737|4294967448|45.46|49.33|false|rachel steinbeck|2013-03-01 09:11:58.703190|5.05|chemistry +20|510|65677|4294967532|58.85|33.76|false|oscar allen|2013-03-01 09:11:58.703127|45.13|kindergarten +108|463|65653|4294967483|32.16|8.65|true|calvin zipper|2013-03-01 09:11:58.703110|94.13|forestry +74|480|65711|4294967299|55.17|4.13|false|holly falkner|2013-03-01 09:11:58.703320|87.19|history +82|430|65722|4294967518|6.93|19.06|true|yuri laertes|2013-03-01 09:11:58.703247|44.30|nap time +53|340|65582|4294967359|49.89|48.62|true|victor brown|2013-03-01 09:11:58.703214|83.06|opthamology +40|311|65645|4294967520|86.73|2.77|false|katie steinbeck|2013-03-01 09:11:58.703181|71.66|biology +100|288|65660|4294967382|12.43|25.92|true|bob allen|2013-03-01 09:11:58.703129|60.67|yard duty +119|448|65551|4294967371|25.03|26.17|false|tom young|2013-03-01 09:11:58.703177|11.43|quiet hour +121|340|65600|4294967496|43.10|38.84|false|bob white|2013-03-01 09:11:58.703104|76.75|chemistry +78|378|65662|4294967372|88.94|9.90|false|luke quirinius|2013-03-01 09:11:58.703155|85.02|history +109|487|65749|4294967400|39.78|25.70|true|ethan polk|2013-03-01 09:11:58.703121|79.96|biology +2|448|65723|4294967509|95.02|41.54|true|xavier robinson|2013-03-01 09:11:58.703305|94.63|chemistry +76|256|65738|4294967514|9.00|12.34|true|rachel ellison|2013-03-01 09:11:58.703072|10.32|education +9|501|65782|4294967404|61.23|40.87|true|calvin van buren|2013-03-01 09:11:58.703193|10.63|wind surfing +21|280|65606|4294967429|82.07|24.59|false|tom brown|2013-03-01 09:11:58.703108|79.56|values clariffication +32|494|65682|4294967403|81.72|19.31|true|rachel steinbeck|2013-03-01 09:11:58.703305|74.75|study skills +78|333|65683|4294967417|94.02|42.52|true|oscar garcia|2013-03-01 09:11:58.703297|95.45|opthamology +22|318|65700|4294967458|1.73|8.82|false|rachel young|2013-03-01 09:11:58.703073|46.47|kindergarten +113|275|65725|4294967412|52.82|26.27|true|yuri ichabod|2013-03-01 09:11:58.703123|8.55|kindergarten +65|384|65753|4294967457|62.55|11.27|false|mike brown|2013-03-01 09:11:58.703113|71.21|forestry +3|356|65672|4294967425|66.93|8.66|true|victor ichabod|2013-03-01 09:11:58.703190|71.90|study skills +72|460|65653|4294967429|1.27|37.31|true|david young|2013-03-01 09:11:58.703241|47.12|opthamology +106|266|65671|4294967434|12.66|33.13|true|rachel miller|2013-03-01 09:11:58.703249|13.32|study skills +19|264|65652|4294967425|26.12|14.18|false|xavier ellison|2013-03-01 09:11:58.703275|12.26|zync studies +115|322|65646|4294967459|7.38|15.16|false|yuri white|2013-03-01 09:11:58.703179|26.10|topology +102|373|65683|4294967321|46.83|43.87|true|holly garcia|2013-03-01 09:11:58.703240|65.85|quiet hour +6|306|65585|4294967535|11.54|22.73|true|tom ovid|2013-03-01 09:11:58.703185|86.38|study skills +22|263|65599|4294967494|19.50|38.18|false|xavier ichabod|2013-03-01 09:11:58.703192|76.09|nap time +26|474|65737|4294967449|11.03|5.89|true|oscar king|2013-03-01 09:11:58.703222|5.46|joggying +45|399|65583|4294967400|67.32|43.41|true|rachel robinson|2013-03-01 09:11:58.703175|12.59|undecided +39|310|65732|4294967461|31.78|7.03|false|alice miller|2013-03-01 09:11:58.703205|21.83|geology +6|396|65646|4294967303|62.81|46.87|false|irene quirinius|2013-03-01 09:11:58.703201|74.16|forestry +57|292|65572|4294967339|11.07|2.16|true|tom allen|2013-03-01 09:11:58.703093|31.11|opthamology +108|406|65660|4294967347|2.66|28.22|true|zach xylophone|2013-03-01 09:11:58.703170|61.83|history +45|325|65582|4294967297|94.10|9.61|false|bob johnson|2013-03-01 09:11:58.703190|42.39|undecided +75|498|65545|4294967455|74.18|32.10|true|gabriella underhill|2013-03-01 09:11:58.703170|73.48|joggying +36|433|65567|4294967515|40.55|5.81|true|yuri quirinius|2013-03-01 09:11:58.703164|36.88|industrial engineering +61|399|65673|4294967448|1.85|43.99|false|nick hernandez|2013-03-01 09:11:58.703271|69.52|yard duty +108|424|65756|4294967443|13.78|7.92|true|calvin king|2013-03-01 09:11:58.703077|88.45|religion +83|262|65761|4294967395|73.73|49.10|false|alice ovid|2013-03-01 09:11:58.703184|79.04|american history +93|434|65761|4294967390|85.32|20.87|true|wendy hernandez|2013-03-01 09:11:58.703198|87.19|undecided +35|412|65770|4294967525|81.12|43.60|false|gabriella polk|2013-03-01 09:11:58.703237|82.78|debate +3|444|65735|4294967487|18.91|0.96|true|sarah miller|2013-03-01 09:11:58.703283|84.26|opthamology +83|310|65670|4294967399|59.72|0.09|true|victor davidson|2013-03-01 09:11:58.703219|23.09|study skills +99|392|65763|4294967339|1.97|10.19|false|sarah nixon|2013-03-01 09:11:58.703112|51.66|xylophone band +56|372|65658|4294967542|97.72|13.07|true|wendy steinbeck|2013-03-01 09:11:58.703264|51.54|philosophy +93|442|65664|4294967419|68.02|24.51|false|wendy laertes|2013-03-01 09:11:58.703237|21.60|opthamology +18|398|65574|4294967397|75.31|16.79|false|ethan king|2013-03-01 09:11:58.703144|32.63|biology +49|332|65590|4294967510|0.62|15.58|true|oscar ichabod|2013-03-01 09:11:58.703104|39.06|values clariffication +1|432|65692|4294967513|20.50|26.52|false|calvin steinbeck|2013-03-01 09:11:58.703160|76.04|religion +40|423|65541|4294967526|29.09|49.03|false|wendy ovid|2013-03-01 09:11:58.703099|26.01|wind surfing +124|414|65640|4294967441|9.36|5.08|true|katie steinbeck|2013-03-01 09:11:58.703156|71.66|geology +44|498|65696|4294967536|16.92|32.88|false|ethan ichabod|2013-03-01 09:11:58.703135|18.43|joggying +91|289|65726|4294967439|2.91|49.40|false|david laertes|2013-03-01 09:11:58.703204|49.19|forestry +59|341|65633|4294967499|7.07|7.76|true|yuri van buren|2013-03-01 09:11:58.703325|95.94|forestry +95|418|65674|4294967514|99.44|27.31|false|priscilla falkner|2013-03-01 09:11:58.703309|79.65|wind surfing +44|472|65614|4294967464|23.13|45.45|false|holly davidson|2013-03-01 09:11:58.703112|80.10|undecided +64|420|65543|4294967335|89.49|21.89|true|gabriella underhill|2013-03-01 09:11:58.703290|77.75|geology +8|351|65624|4294967338|32.03|14.69|true|rachel allen|2013-03-01 09:11:58.703206|30.08|yard duty +68|364|65652|4294967544|30.64|10.43|true|bob ovid|2013-03-01 09:11:58.703130|52.72|study skills +28|258|65771|4294967406|52.63|32.42|false|zach zipper|2013-03-01 09:11:58.703151|14.28|topology +44|289|65652|4294967447|11.51|16.86|true|wendy garcia|2013-03-01 09:11:58.703218|91.38|quiet hour +71|361|65718|4294967397|45.04|45.31|false|oscar carson|2013-03-01 09:11:58.703147|82.90|philosophy +30|504|65664|4294967477|48.30|30.35|true|luke xylophone|2013-03-01 09:11:58.703173|38.98|quiet hour +50|327|65612|4294967367|37.71|30.46|false|victor ichabod|2013-03-01 09:11:58.703323|10.00|nap time +22|434|65755|4294967543|52.73|29.00|true|holly hernandez|2013-03-01 09:11:58.703179|73.46|yard duty +65|303|65790|4294967470|43.92|14.62|false|jessica underhill|2013-03-01 09:11:58.703235|13.92|linguistics +118|428|65564|4294967389|28.31|35.83|false|jessica underhill|2013-03-01 09:11:58.703250|44.58|joggying +94|296|65570|4294967455|85.01|40.08|true|jessica ovid|2013-03-01 09:11:58.703169|2.14|kindergarten +10|280|65660|4294967321|91.15|14.80|true|sarah young|2013-03-01 09:11:58.703295|72.67|yard duty +30|284|65657|4294967487|75.93|0.20|false|tom xylophone|2013-03-01 09:11:58.703260|20.69|opthamology +119|425|65680|4294967361|72.98|37.37|false|katie polk|2013-03-01 09:11:58.703150|71.90|american history +72|301|65603|4294967478|38.50|30.42|true|gabriella steinbeck|2013-03-01 09:11:58.703071|19.27|american history +17|258|65579|4294967447|47.52|14.88|true|jessica ichabod|2013-03-01 09:11:58.703207|79.45|debate +101|366|65790|4294967324|89.50|20.23|true|wendy falkner|2013-03-01 09:11:58.703239|70.92|undecided +109|424|65684|4294967473|26.19|49.17|true|ulysses underhill|2013-03-01 09:11:58.703270|36.41|quiet hour +55|486|65675|4294967313|4.28|8.52|false|sarah zipper|2013-03-01 09:11:58.703279|10.03|mathematics +66|452|65594|4294967506|96.62|3.21|false|zach allen|2013-03-01 09:11:58.703253|76.09|forestry +80|307|65772|4294967376|82.16|38.76|false|wendy carson|2013-03-01 09:11:58.703102|73.79|forestry +60|337|65648|4294967528|25.94|34.79|true|irene king|2013-03-01 09:11:58.703168|33.63|xylophone band +112|506|65632|4294967408|37.13|31.93|false|calvin davidson|2013-03-01 09:11:58.703090|50.80|quiet hour +88|387|65699|4294967424|21.96|20.06|false|victor xylophone|2013-03-01 09:11:58.703233|94.69|geology +93|403|65565|4294967518|6.76|33.41|true|priscilla allen|2013-03-01 09:11:58.703280|55.90|debate +34|266|65755|4294967481|37.76|19.63|false|alice miller|2013-03-01 09:11:58.703257|52.69|education +44|484|65629|4294967361|13.17|5.84|false|luke steinbeck|2013-03-01 09:11:58.703238|62.37|mathematics +112|257|65574|4294967490|19.96|7.80|false|zach hernandez|2013-03-01 09:11:58.703253|41.76|history +2|312|65767|4294967538|23.05|22.83|true|fred king|2013-03-01 09:11:58.703166|31.87|nap time +23|406|65752|4294967309|37.31|45.70|true|alice nixon|2013-03-01 09:11:58.703191|58.05|debate +124|321|65711|4294967444|38.43|18.35|false|oscar robinson|2013-03-01 09:11:58.703140|88.35|topology +20|381|65619|4294967509|84.37|31.73|false|priscilla allen|2013-03-01 09:11:58.703277|73.58|study skills +46|458|65630|4294967541|6.81|13.93|true|yuri johnson|2013-03-01 09:11:58.703179|85.01|american history +85|293|65592|4294967417|35.59|6.90|true|quinn van buren|2013-03-01 09:11:58.703295|85.73|topology +110|468|65574|4294967544|67.75|30.25|false|bob ichabod|2013-03-01 09:11:58.703086|13.12|joggying +98|345|65715|4294967533|26.76|29.92|true|mike hernandez|2013-03-01 09:11:58.703203|31.22|values clariffication +64|467|65642|4294967447|53.51|41.28|true|rachel allen|2013-03-01 09:11:58.703174|98.15|geology +32|399|65677|4294967411|65.00|15.28|true|quinn nixon|2013-03-01 09:11:58.703236|25.63|wind surfing +13|417|65545|4294967510|33.80|47.84|false|wendy thompson|2013-03-01 09:11:58.703142|21.92|forestry +66|380|65681|4294967491|14.07|49.22|true|david brown|2013-03-01 09:11:58.703279|69.30|mathematics +83|376|65665|4294967541|38.79|33.72|true|calvin hernandez|2013-03-01 09:11:58.703305|0.03|debate +13|487|65710|4294967547|69.70|11.48|true|rachel davidson|2013-03-01 09:11:58.703143|86.43|quiet hour +88|445|65571|4294967338|10.75|20.18|false|wendy davidson|2013-03-01 09:11:58.703107|30.96|religion +63|416|65546|4294967503|28.87|36.45|true|yuri thompson|2013-03-01 09:11:58.703228|37.39|debate +85|481|65774|4294967524|22.69|5.63|true|xavier carson|2013-03-01 09:11:58.703286|17.25|education +50|418|65562|4294967481|68.65|44.81|false|jessica xylophone|2013-03-01 09:11:58.703275|64.49|kindergarten +-3|454|65705|4294967468|62.12|14.32|true|mike white|2013-03-01 09:11:58.703087|40.18|joggying +37|509|65648|4294967394|83.45|16.94|false|irene nixon|2013-03-01 09:11:58.703095|98.01|study skills +-3|318|65553|4294967452|9.86|32.77|false|holly underhill|2013-03-01 09:11:58.703219|47.25|wind surfing +45|502|65759|4294967518|84.59|11.17|false|luke robinson|2013-03-01 09:11:58.703242|63.28|wind surfing +59|271|65771|4294967508|47.57|34.86|true|quinn van buren|2013-03-01 09:11:58.703273|86.41|undecided +63|272|65565|4294967543|43.36|4.47|false|calvin young|2013-03-01 09:11:58.703285|90.34|joggying +98|446|65538|4294967342|2.80|35.13|true|luke davidson|2013-03-01 09:11:58.703083|92.44|joggying +51|318|65734|4294967391|57.42|49.33|true|mike falkner|2013-03-01 09:11:58.703139|34.80|opthamology +121|507|65762|4294967358|88.18|16.48|false|oscar ellison|2013-03-01 09:11:58.703132|99.77|undecided +37|350|65611|4294967420|41.42|49.64|false|calvin miller|2013-03-01 09:11:58.703104|73.54|study skills +116|497|65645|4294967447|10.26|1.92|false|quinn nixon|2013-03-01 09:11:58.703154|20.68|history +93|368|65777|4294967354|85.25|8.67|true|priscilla carson|2013-03-01 09:11:58.703111|39.52|geology +53|281|65557|4294967391|14.75|30.56|true|rachel brown|2013-03-01 09:11:58.703322|90.85|nap time +29|376|65674|4294967396|87.93|45.89|true|ethan young|2013-03-01 09:11:58.703071|8.64|nap time +114|337|65707|4294967382|97.94|5.92|true|alice brown|2013-03-01 09:11:58.703087|42.43|biology +19|264|65591|4294967531|61.58|13.95|false|ulysses davidson|2013-03-01 09:11:58.703082|46.26|chemistry +15|483|65658|4294967446|48.84|9.84|false|mike thompson|2013-03-01 09:11:58.703248|21.61|joggying +80|421|65765|4294967499|8.13|25.08|false|sarah white|2013-03-01 09:11:58.703266|63.03|linguistics +76|271|65627|4294967508|93.47|17.33|false|david davidson|2013-03-01 09:11:58.703094|19.77|religion +19|479|65751|4294967378|1.86|15.29|true|calvin allen|2013-03-01 09:11:58.703136|18.52|undecided +97|344|65581|4294967551|91.11|7.13|false|luke zipper|2013-03-01 09:11:58.703083|37.56|chemistry +21|494|65753|4294967296|62.50|36.92|false|mike xylophone|2013-03-01 09:11:58.703132|46.54|undecided +74|326|65545|4294967300|83.04|39.55|true|holly miller|2013-03-01 09:11:58.703281|47.49|joggying +65|491|65619|4294967437|77.92|23.75|true|mike ellison|2013-03-01 09:11:58.703319|58.82|biology +98|442|65585|4294967446|16.59|16.76|false|irene thompson|2013-03-01 09:11:58.703293|64.12|kindergarten +70|384|65696|4294967335|31.05|19.10|true|ulysses hernandez|2013-03-01 09:11:58.703297|13.05|zync studies +64|301|65696|4294967304|61.43|1.73|true|jessica davidson|2013-03-01 09:11:58.703155|71.57|kindergarten +102|457|65692|4294967454|3.44|45.84|true|luke steinbeck|2013-03-01 09:11:58.703242|7.36|chemistry +6|288|65695|4294967448|1.42|0.23|true|gabriella white|2013-03-01 09:11:58.703182|94.71|undecided +46|395|65672|4294967520|67.22|27.46|false|priscilla allen|2013-03-01 09:11:58.703189|86.71|nap time +62|266|65725|4294967499|22.91|5.74|true|katie ichabod|2013-03-01 09:11:58.703143|35.14|philosophy +89|404|65741|4294967522|39.05|42.34|false|holly ichabod|2013-03-01 09:11:58.703194|16.66|forestry +83|448|65763|4294967334|30.81|19.44|false|mike underhill|2013-03-01 09:11:58.703161|23.45|zync studies +68|287|65605|4294967328|52.40|8.04|true|jessica king|2013-03-01 09:11:58.703086|96.57|opthamology +111|473|65560|4294967502|4.85|37.40|false|mike steinbeck|2013-03-01 09:11:58.703091|67.37|philosophy +-1|371|65568|4294967454|10.24|49.63|true|zach underhill|2013-03-01 09:11:58.703166|48.59|history +36|276|65788|4294967453|62.66|43.97|false|david steinbeck|2013-03-01 09:11:58.703173|0.21|linguistics +-3|433|65654|4294967455|6.83|5.33|false|bob van buren|2013-03-01 09:11:58.703199|28.85|yard duty +60|510|65691|4294967461|21.29|14.39|true|david allen|2013-03-01 09:11:58.703289|55.25|quiet hour +71|467|65773|4294967360|56.48|14.08|false|calvin king|2013-03-01 09:11:58.703174|65.27|chemistry +84|304|65748|4294967337|46.58|11.00|true|jessica young|2013-03-01 09:11:58.703102|10.56|industrial engineering +34|325|65763|4294967440|37.84|13.55|false|holly laertes|2013-03-01 09:11:58.703211|30.58|yard duty +44|376|65758|4294967520|48.58|5.97|true|ulysses johnson|2013-03-01 09:11:58.703116|63.77|xylophone band +98|327|65732|4294967298|55.00|2.58|false|mike van buren|2013-03-01 09:11:58.703191|10.29|philosophy +3|261|65578|4294967418|22.87|29.07|false|quinn quirinius|2013-03-01 09:11:58.703130|8.64|values clariffication +65|348|65556|4294967425|31.22|40.38|false|luke xylophone|2013-03-01 09:11:58.703169|23.84|chemistry +91|349|65566|4294967380|50.05|21.81|true|xavier thompson|2013-03-01 09:11:58.703250|94.53|quiet hour +28|365|65546|4294967320|87.50|14.85|false|wendy johnson|2013-03-01 09:11:58.703138|1.85|mathematics +46|342|65700|4294967477|51.04|29.52|true|calvin miller|2013-03-01 09:11:58.703079|55.38|kindergarten +103|307|65608|4294967452|16.57|14.80|true|oscar thompson|2013-03-01 09:11:58.703136|14.39|zync studies +55|416|65771|4294967298|52.09|29.94|false|priscilla hernandez|2013-03-01 09:11:58.703071|98.16|education +70|361|65684|4294967456|43.07|35.50|true|nick ichabod|2013-03-01 09:11:58.703160|84.17|yard duty +23|417|65786|4294967541|42.56|31.57|true|ethan polk|2013-03-01 09:11:58.703171|40.07|american history +111|499|65790|4294967473|62.51|33.57|false|alice brown|2013-03-01 09:11:58.703152|3.74|religion +42|357|65563|4294967332|8.43|26.31|false|ethan garcia|2013-03-01 09:11:58.703168|80.61|yard duty +98|459|65595|4294967525|75.96|26.55|false|bob brown|2013-03-01 09:11:58.703235|8.78|geology +110|319|65633|4294967300|97.35|0.09|true|holly falkner|2013-03-01 09:11:58.703081|87.83|opthamology +83|462|65669|4294967459|82.69|3.06|true|quinn steinbeck|2013-03-01 09:11:58.703086|38.70|joggying +17|360|65733|4294967549|15.01|40.91|true|priscilla hernandez|2013-03-01 09:11:58.703170|68.76|industrial engineering +73|493|65631|4294967491|61.23|23.46|false|jessica johnson|2013-03-01 09:11:58.703229|42.02|study skills +116|382|65690|4294967318|68.72|36.96|true|holly thompson|2013-03-01 09:11:58.703114|80.81|opthamology +26|306|65621|4294967363|58.27|45.82|false|ethan xylophone|2013-03-01 09:11:58.703271|57.33|history +120|305|65607|4294967438|62.35|27.91|true|zach carson|2013-03-01 09:11:58.703157|25.41|geology +35|288|65727|4294967343|16.84|10.17|true|holly king|2013-03-01 09:11:58.703090|20.43|study skills +78|381|65606|4294967473|6.24|9.90|false|david zipper|2013-03-01 09:11:58.703234|45.82|geology +6|408|65551|4294967456|7.94|3.67|true|david laertes|2013-03-01 09:11:58.703093|15.29|education +44|300|65709|4294967364|37.70|49.69|false|rachel carson|2013-03-01 09:11:58.703090|29.00|debate +62|317|65606|4294967359|85.51|11.38|false|sarah quirinius|2013-03-01 09:11:58.703151|0.30|religion +10|510|65655|4294967312|51.36|34.95|false|ulysses carson|2013-03-01 09:11:58.703141|86.15|nap time +86|395|65663|4294967385|61.18|31.79|true|sarah underhill|2013-03-01 09:11:58.703151|1.55|forestry +96|461|65776|4294967355|13.87|27.43|true|oscar xylophone|2013-03-01 09:11:58.703260|58.14|geology +96|362|65679|4294967326|94.63|2.52|false|luke nixon|2013-03-01 09:11:58.703317|73.07|linguistics +60|393|65685|4294967465|85.10|41.29|true|alice falkner|2013-03-01 09:11:58.703074|60.24|debate +17|492|65778|4294967422|15.73|40.38|true|mike johnson|2013-03-01 09:11:58.703164|77.51|forestry +61|345|65751|4294967481|87.03|43.01|false|ethan quirinius|2013-03-01 09:11:58.703149|46.43|undecided +71|292|65605|4294967521|37.71|0.62|false|wendy garcia|2013-03-01 09:11:58.703304|42.91|kindergarten +119|393|65536|4294967460|52.70|9.61|true|priscilla xylophone|2013-03-01 09:11:58.703310|35.07|joggying +95|413|65716|4294967297|85.00|3.56|true|holly king|2013-03-01 09:11:58.703180|98.46|wind surfing +77|266|65676|4294967530|50.59|39.78|true|jessica miller|2013-03-01 09:11:58.703112|97.56|biology +75|488|65718|4294967323|45.58|11.56|false|calvin ovid|2013-03-01 09:11:58.703078|88.03|history +91|315|65569|4294967400|14.68|37.80|true|tom zipper|2013-03-01 09:11:58.703179|66.85|biology +43|263|65690|4294967515|66.50|17.06|true|gabriella falkner|2013-03-01 09:11:58.703176|1.37|xylophone band +105|413|65568|4294967315|17.07|32.15|true|priscilla thompson|2013-03-01 09:11:58.703321|76.06|undecided +14|262|65576|4294967463|40.83|21.83|true|mike white|2013-03-01 09:11:58.703230|52.23|geology +33|420|65735|4294967442|98.89|0.09|false|quinn falkner|2013-03-01 09:11:58.703314|86.85|values clariffication +81|304|65756|4294967363|86.84|49.20|true|alice miller|2013-03-01 09:11:58.703131|68.01|religion +69|382|65668|4294967476|25.31|46.49|true|gabriella white|2013-03-01 09:11:58.703229|13.89|history +107|371|65744|4294967305|93.75|35.41|true|nick quirinius|2013-03-01 09:11:58.703284|38.08|industrial engineering +48|476|65782|4294967541|53.36|28.36|false|oscar carson|2013-03-01 09:11:58.703150|95.12|education +84|341|65709|4294967486|4.46|41.88|false|luke robinson|2013-03-01 09:11:58.703125|97.39|nap time +23|292|65744|4294967392|94.99|28.20|false|rachel miller|2013-03-01 09:11:58.703305|98.13|wind surfing +82|441|65659|4294967379|23.23|18.83|true|david polk|2013-03-01 09:11:58.703186|98.32|industrial engineering +97|354|65685|4294967423|24.29|6.89|false|calvin johnson|2013-03-01 09:11:58.703126|89.67|religion +30|310|65613|4294967512|75.77|31.13|false|sarah davidson|2013-03-01 09:11:58.703117|46.48|undecided +43|334|65730|4294967347|15.59|12.56|true|katie allen|2013-03-01 09:11:58.703186|29.99|history +1|319|65605|4294967431|10.86|29.97|false|sarah young|2013-03-01 09:11:58.703271|46.92|topology +57|338|65701|4294967319|9.02|34.27|true|gabriella polk|2013-03-01 09:11:58.703230|84.10|joggying +16|397|65668|4294967486|15.59|18.73|false|calvin carson|2013-03-01 09:11:58.703103|23.19|study skills +25|320|65756|4294967347|81.97|19.15|true|calvin brown|2013-03-01 09:11:58.703264|70.36|joggying +11|403|65775|4294967491|21.73|18.73|false|priscilla davidson|2013-03-01 09:11:58.703218|36.28|zync studies +-1|423|65751|4294967518|58.41|18.52|true|calvin king|2013-03-01 09:11:58.703126|91.16|biology +13|350|65746|4294967330|7.79|39.53|true|jessica nixon|2013-03-01 09:11:58.703189|40.64|zync studies +66|287|65674|4294967307|13.52|42.50|true|holly quirinius|2013-03-01 09:11:58.703211|12.15|quiet hour +91|389|65718|4294967497|50.08|0.16|true|fred nixon|2013-03-01 09:11:58.703121|72.03|linguistics +58|483|65726|4294967382|28.42|34.37|true|irene hernandez|2013-03-01 09:11:58.703291|75.15|philosophy +25|275|65707|4294967319|46.99|31.15|false|david garcia|2013-03-01 09:11:58.703119|66.67|forestry +117|275|65584|4294967524|19.22|23.71|true|jessica king|2013-03-01 09:11:58.703298|44.67|mathematics +99|277|65712|4294967460|33.47|13.07|false|ethan allen|2013-03-01 09:11:58.703191|61.96|wind surfing +58|459|65780|4294967395|5.32|33.75|false|quinn miller|2013-03-01 09:11:58.703074|0.86|forestry +-2|420|65684|4294967492|17.09|25.44|true|tom ellison|2013-03-01 09:11:58.703227|27.57|linguistics +49|463|65558|4294967376|95.47|0.70|true|alice quirinius|2013-03-01 09:11:58.703178|0.23|study skills +99|415|65568|4294967422|3.50|39.80|false|xavier van buren|2013-03-01 09:11:58.703307|20.56|zync studies +115|273|65761|4294967348|54.25|13.17|true|mike thompson|2013-03-01 09:11:58.703162|31.68|quiet hour +45|289|65539|4294967344|37.60|43.55|false|rachel laertes|2013-03-01 09:11:58.703156|50.02|debate +21|426|65663|4294967425|69.05|46.89|false|holly king|2013-03-01 09:11:58.703079|98.28|quiet hour +69|455|65590|4294967536|66.64|25.17|false|mike nixon|2013-03-01 09:11:58.703162|75.65|yard duty +27|275|65545|4294967403|65.73|4.39|false|sarah miller|2013-03-01 09:11:58.703118|54.75|quiet hour +58|374|65609|4294967413|33.62|38.89|false|quinn garcia|2013-03-01 09:11:58.703255|50.25|yard duty +67|349|65654|4294967378|22.03|20.94|false|jessica robinson|2013-03-01 09:11:58.703233|27.27|values clariffication +35|511|65591|4294967373|33.52|45.16|false|quinn ellison|2013-03-01 09:11:58.703316|48.54|debate +4|275|65539|4294967342|99.68|16.89|true|quinn ichabod|2013-03-01 09:11:58.703139|35.82|philosophy +69|316|65775|4294967324|10.18|44.90|true|fred underhill|2013-03-01 09:11:58.703075|4.35|history +5|281|65553|4294967505|61.05|12.33|false|yuri robinson|2013-03-01 09:11:58.703299|29.38|nap time +73|441|65540|4294967492|39.94|38.58|true|fred hernandez|2013-03-01 09:11:58.703173|4.23|biology +97|388|65675|4294967532|51.60|23.49|false|alice garcia|2013-03-01 09:11:58.703134|31.56|geology +2|475|65607|4294967427|37.06|46.86|false|katie van buren|2013-03-01 09:11:58.703287|58.79|quiet hour +37|400|65588|4294967368|17.88|30.34|false|quinn hernandez|2013-03-01 09:11:58.703091|78.59|geology +-1|408|65646|4294967385|28.05|27.06|false|rachel zipper|2013-03-01 09:11:58.703230|93.22|mathematics +68|352|65611|4294967546|90.53|42.68|false|priscilla robinson|2013-03-01 09:11:58.703273|12.05|xylophone band +114|369|65567|4294967418|74.67|9.73|false|irene king|2013-03-01 09:11:58.703265|65.05|biology +33|268|65566|4294967301|93.34|46.43|true|zach white|2013-03-01 09:11:58.703179|67.09|undecided +44|304|65761|4294967549|81.03|11.69|false|victor ichabod|2013-03-01 09:11:58.703130|31.27|forestry +46|398|65608|4294967396|43.33|34.12|false|rachel falkner|2013-03-01 09:11:58.703081|71.20|topology +45|291|65758|4294967426|97.06|6.13|true|mike allen|2013-03-01 09:11:58.703086|47.41|opthamology +98|466|65601|4294967385|81.90|12.38|true|ethan falkner|2013-03-01 09:11:58.703220|40.35|american history +99|303|65599|4294967390|29.57|46.71|false|alice steinbeck|2013-03-01 09:11:58.703266|88.68|american history +69|474|65564|4294967430|25.00|35.70|true|jessica davidson|2013-03-01 09:11:58.703097|27.80|chemistry +37|477|65639|4294967384|92.84|1.55|false|rachel ellison|2013-03-01 09:11:58.703095|37.85|geology +86|332|65582|4294967426|38.85|39.19|true|luke xylophone|2013-03-01 09:11:58.703113|46.09|yard duty +38|504|65544|4294967339|73.67|3.44|false|victor king|2013-03-01 09:11:58.703124|85.55|joggying +79|270|65624|4294967373|39.54|33.65|true|quinn nixon|2013-03-01 09:11:58.703224|45.02|forestry +-1|421|65684|4294967477|49.82|15.95|false|rachel davidson|2013-03-01 09:11:58.703243|37.07|history +99|457|65699|4294967435|77.24|34.28|true|quinn garcia|2013-03-01 09:11:58.703167|87.47|geology +47|274|65566|4294967519|87.91|0.06|true|xavier robinson|2013-03-01 09:11:58.703200|14.56|religion +66|272|65733|4294967355|1.01|19.27|false|tom thompson|2013-03-01 09:11:58.703206|20.95|debate +21|506|65585|4294967417|54.33|43.63|false|zach johnson|2013-03-01 09:11:58.703178|85.59|yard duty +72|458|65781|4294967372|6.75|6.80|true|yuri johnson|2013-03-01 09:11:58.703128|95.48|wind surfing +85|485|65731|4294967388|3.73|35.18|true|rachel ovid|2013-03-01 09:11:58.703071|37.63|kindergarten +71|306|65636|4294967431|49.44|48.48|false|yuri thompson|2013-03-01 09:11:58.703322|28.10|geology +23|508|65709|4294967452|61.00|25.73|true|xavier robinson|2013-03-01 09:11:58.703096|53.89|religion +38|296|65642|4294967311|51.50|13.65|true|sarah hernandez|2013-03-01 09:11:58.703304|61.11|mathematics +18|443|65701|4294967521|86.98|25.93|false|priscilla polk|2013-03-01 09:11:58.703072|28.09|quiet hour +65|274|65613|4294967546|61.09|33.03|false|yuri garcia|2013-03-01 09:11:58.703178|4.36|mathematics +20|311|65539|4294967448|13.92|32.19|false|priscilla polk|2013-03-01 09:11:58.703143|85.68|topology +14|405|65598|4294967446|8.94|31.06|true|gabriella young|2013-03-01 09:11:58.703147|92.23|american history +-1|500|65544|4294967337|54.09|13.65|true|calvin laertes|2013-03-01 09:11:58.703314|54.72|education +116|423|65761|4294967379|77.77|4.37|false|sarah allen|2013-03-01 09:11:58.703220|23.45|nap time +26|349|65674|4294967358|24.96|22.48|true|irene ellison|2013-03-01 09:11:58.703301|53.16|wind surfing +120|308|65640|4294967411|37.01|49.33|true|ulysses van buren|2013-03-01 09:11:58.703208|85.58|religion +29|475|65656|4294967480|95.29|12.62|true|ulysses hernandez|2013-03-01 09:11:58.703274|29.23|values clariffication +34|362|65772|4294967398|4.81|4.12|false|fred laertes|2013-03-01 09:11:58.703138|97.28|linguistics +5|345|65691|4294967312|40.22|16.96|true|alice xylophone|2013-03-01 09:11:58.703208|8.30|american history +89|338|65621|4294967541|81.55|0.48|false|rachel carson|2013-03-01 09:11:58.703158|29.07|wind surfing +103|415|65664|4294967459|98.23|40.12|true|oscar white|2013-03-01 09:11:58.703249|63.66|quiet hour +120|432|65701|4294967358|52.26|17.18|true|gabriella nixon|2013-03-01 09:11:58.703180|88.20|linguistics +98|357|65632|4294967454|50.34|23.20|true|calvin falkner|2013-03-01 09:11:58.703195|39.16|wind surfing +109|391|65585|4294967339|81.18|41.53|false|fred white|2013-03-01 09:11:58.703192|74.63|yard duty +81|333|65624|4294967398|90.26|28.26|true|david johnson|2013-03-01 09:11:58.703092|9.08|forestry +91|423|65705|4294967523|18.89|26.30|false|priscilla robinson|2013-03-01 09:11:58.703205|33.76|religion +60|296|65562|4294967424|25.65|24.11|true|xavier brown|2013-03-01 09:11:58.703315|65.21|joggying +45|428|65657|4294967463|11.65|28.15|true|gabriella underhill|2013-03-01 09:11:58.703150|46.78|american history +122|468|65674|4294967428|42.82|30.66|false|ulysses garcia|2013-03-01 09:11:58.703228|72.22|religion +56|394|65640|4294967454|43.77|29.21|false|katie xylophone|2013-03-01 09:11:58.703302|11.70|philosophy +-3|507|65728|4294967525|81.95|47.14|true|rachel davidson|2013-03-01 09:11:58.703316|30.59|study skills +82|396|65760|4294967306|56.91|26.25|false|gabriella ellison|2013-03-01 09:11:58.703252|77.29|zync studies +93|371|65779|4294967308|6.37|49.74|false|holly underhill|2013-03-01 09:11:58.703247|31.44|american history +36|511|65688|4294967515|74.79|22.16|true|ulysses steinbeck|2013-03-01 09:11:58.703246|98.00|wind surfing +0|477|65738|4294967512|7.75|46.57|true|gabriella zipper|2013-03-01 09:11:58.703253|79.39|american history +3|309|65746|4294967437|18.88|21.44|true|alice garcia|2013-03-01 09:11:58.703195|80.98|religion +24|278|65713|4294967358|68.99|22.48|false|holly johnson|2013-03-01 09:11:58.703204|98.50|joggying +41|431|65702|4294967550|28.96|15.97|false|oscar laertes|2013-03-01 09:11:58.703201|95.61|forestry +42|437|65656|4294967476|8.98|42.94|false|katie thompson|2013-03-01 09:11:58.703235|21.81|kindergarten +106|308|65563|4294967308|3.09|48.89|false|sarah polk|2013-03-01 09:11:58.703116|13.10|kindergarten +88|381|65756|4294967531|57.22|15.33|false|jessica hernandez|2013-03-01 09:11:58.703303|97.66|yard duty +83|399|65600|4294967494|43.93|13.31|true|wendy robinson|2013-03-01 09:11:58.703077|36.66|joggying +122|483|65787|4294967387|51.81|26.77|false|priscilla hernandez|2013-03-01 09:11:58.703146|25.31|american history +1|333|65646|4294967354|42.31|28.36|false|irene allen|2013-03-01 09:11:58.703314|73.35|values clariffication +45|325|65556|4294967374|22.49|41.49|false|gabriella white|2013-03-01 09:11:58.703116|58.60|forestry +34|366|65638|4294967325|45.49|38.51|false|luke nixon|2013-03-01 09:11:58.703079|85.90|history +31|332|65605|4294967350|9.60|45.65|false|xavier brown|2013-03-01 09:11:58.703262|89.66|zync studies +23|349|65766|4294967311|45.20|2.18|false|irene king|2013-03-01 09:11:58.703282|46.84|study skills +46|278|65608|4294967411|81.29|25.84|true|rachel davidson|2013-03-01 09:11:58.703072|44.58|joggying +31|435|65703|4294967408|80.48|23.52|false|irene laertes|2013-03-01 09:11:58.703230|98.07|debate +67|345|65644|4294967313|44.82|6.70|true|bob ellison|2013-03-01 09:11:58.703155|89.87|nap time +22|376|65723|4294967458|82.24|35.73|false|sarah young|2013-03-01 09:11:58.703221|97.31|topology +95|407|65607|4294967403|2.72|5.95|false|katie allen|2013-03-01 09:11:58.703087|62.42|xylophone band +10|357|65643|4294967521|89.89|16.24|false|tom allen|2013-03-01 09:11:58.703263|6.89|topology +88|405|65756|4294967379|81.76|38.64|true|rachel robinson|2013-03-01 09:11:58.703257|96.07|religion +82|382|65713|4294967522|45.91|3.34|true|tom hernandez|2013-03-01 09:11:58.703072|52.65|american history +5|508|65780|4294967529|61.60|19.48|false|xavier nixon|2013-03-01 09:11:58.703244|25.72|history +29|499|65665|4294967296|21.70|39.99|false|calvin allen|2013-03-01 09:11:58.703092|48.51|philosophy +95|483|65745|4294967338|50.82|20.37|true|xavier king|2013-03-01 09:11:58.703279|4.14|forestry +49|431|65554|4294967542|47.22|44.11|true|fred ichabod|2013-03-01 09:11:58.703136|48.17|debate +27|304|65580|4294967551|0.51|41.25|true|calvin ovid|2013-03-01 09:11:58.703313|67.78|study skills +14|325|65602|4294967504|7.95|45.26|false|victor johnson|2013-03-01 09:11:58.703084|47.11|linguistics +43|383|65737|4294967458|10.47|45.37|true|katie ovid|2013-03-01 09:11:58.703264|36.36|forestry +25|257|65584|4294967355|35.88|35.51|true|gabriella ellison|2013-03-01 09:11:58.703256|17.67|topology +88|259|65733|4294967321|69.22|45.38|false|rachel van buren|2013-03-01 09:11:58.703088|25.76|nap time +34|270|65541|4294967363|55.91|7.49|true|priscilla ichabod|2013-03-01 09:11:58.703189|15.31|american history +92|315|65772|4294967506|77.46|3.72|false|alice ichabod|2013-03-01 09:11:58.703132|95.72|opthamology +89|304|65726|4294967316|55.99|44.46|true|fred johnson|2013-03-01 09:11:58.703196|47.69|philosophy +50|486|65586|4294967411|34.76|30.83|true|katie falkner|2013-03-01 09:11:58.703259|42.60|values clariffication +35|380|65723|4294967432|27.68|37.15|true|oscar falkner|2013-03-01 09:11:58.703087|47.25|zync studies +95|422|65696|4294967424|21.32|26.12|false|tom davidson|2013-03-01 09:11:58.703299|83.21|values clariffication +29|480|65660|4294967311|74.53|28.43|false|fred davidson|2013-03-01 09:11:58.703132|35.08|nap time +11|510|65694|4294967452|80.55|10.65|true|jessica nixon|2013-03-01 09:11:58.703291|58.04|nap time +89|414|65766|4294967476|8.00|30.63|true|tom garcia|2013-03-01 09:11:58.703315|6.99|linguistics +86|282|65722|4294967541|3.99|46.79|true|david laertes|2013-03-01 09:11:58.703114|11.82|study skills +102|316|65549|4294967324|44.66|21.59|true|luke johnson|2013-03-01 09:11:58.703163|13.15|topology +74|437|65697|4294967502|37.93|28.24|false|mike white|2013-03-01 09:11:58.703099|85.41|forestry +25|311|65607|4294967485|84.89|3.40|false|xavier hernandez|2013-03-01 09:11:58.703260|39.97|quiet hour +15|480|65545|4294967521|70.33|4.46|true|oscar xylophone|2013-03-01 09:11:58.703173|76.37|american history +109|494|65775|4294967493|90.97|3.35|false|fred allen|2013-03-01 09:11:58.703200|36.66|quiet hour +46|270|65764|4294967339|18.45|26.14|false|nick carson|2013-03-01 09:11:58.703284|95.46|linguistics +67|462|65780|4294967496|92.53|9.03|true|luke underhill|2013-03-01 09:11:58.703268|60.32|joggying +34|473|65587|4294967417|20.53|13.40|false|priscilla polk|2013-03-01 09:11:58.703242|63.11|joggying +13|345|65762|4294967469|28.84|9.35|true|xavier johnson|2013-03-01 09:11:58.703296|40.82|wind surfing +112|337|65601|4294967329|40.31|5.32|true|yuri hernandez|2013-03-01 09:11:58.703189|53.98|american history +2|304|65718|4294967346|91.32|10.19|true|oscar carson|2013-03-01 09:11:58.703310|91.69|study skills +19|354|65558|4294967373|20.14|48.76|true|luke nixon|2013-03-01 09:11:58.703257|8.06|nap time +103|362|65612|4294967504|54.91|7.28|false|quinn white|2013-03-01 09:11:58.703318|14.68|linguistics +66|485|65602|4294967433|67.23|25.83|true|nick ovid|2013-03-01 09:11:58.703199|84.42|values clariffication +109|433|65755|4294967543|84.38|30.58|true|luke ovid|2013-03-01 09:11:58.703266|64.35|american history +100|361|65572|4294967392|28.67|3.12|false|jessica van buren|2013-03-01 09:11:58.703120|38.15|linguistics +29|388|65615|4294967351|70.90|22.57|true|quinn steinbeck|2013-03-01 09:11:58.703211|53.91|yard duty +118|362|65548|4294967368|3.20|11.52|false|mike davidson|2013-03-01 09:11:58.703219|52.20|zync studies +27|487|65759|4294967349|95.36|28.75|true|ulysses xylophone|2013-03-01 09:11:58.703305|96.35|joggying +40|480|65659|4294967440|52.55|33.48|false|luke garcia|2013-03-01 09:11:58.703235|54.04|education +29|314|65709|4294967334|27.76|11.38|false|priscilla king|2013-03-01 09:11:58.703117|83.42|forestry +40|356|65560|4294967418|11.42|34.83|true|oscar zipper|2013-03-01 09:11:58.703142|92.08|linguistics +8|430|65682|4294967310|57.04|47.68|true|alice king|2013-03-01 09:11:58.703131|11.38|forestry +67|264|65693|4294967393|53.41|30.67|false|bob falkner|2013-03-01 09:11:58.703167|38.65|kindergarten +8|487|65714|4294967543|2.35|40.78|false|nick young|2013-03-01 09:11:58.703191|64.98|history +107|273|65607|4294967419|50.79|19.35|true|katie xylophone|2013-03-01 09:11:58.703238|25.13|kindergarten +17|424|65708|4294967325|85.34|6.27|true|victor davidson|2013-03-01 09:11:58.703302|71.12|topology +42|320|65556|4294967452|67.38|5.37|true|irene steinbeck|2013-03-01 09:11:58.703076|0.45|debate +-3|362|65712|4294967325|43.73|48.74|false|oscar garcia|2013-03-01 09:11:58.703282|29.97|chemistry +20|302|65575|4294967371|48.37|11.02|false|calvin nixon|2013-03-01 09:11:58.703245|36.75|debate +61|393|65764|4294967353|38.43|11.48|true|holly nixon|2013-03-01 09:11:58.703205|24.87|xylophone band +13|333|65644|4294967413|16.44|47.68|false|priscilla white|2013-03-01 09:11:58.703120|85.34|study skills +20|377|65753|4294967314|51.18|18.68|true|yuri johnson|2013-03-01 09:11:58.703217|2.76|nap time +108|464|65684|4294967340|51.02|30.95|false|rachel brown|2013-03-01 09:11:58.703084|12.27|quiet hour +74|493|65544|4294967369|85.39|32.26|true|oscar miller|2013-03-01 09:11:58.703077|4.03|kindergarten +9|340|65596|4294967319|17.59|29.55|false|gabriella hernandez|2013-03-01 09:11:58.703284|16.29|study skills +-2|352|65648|4294967329|71.03|16.29|true|tom xylophone|2013-03-01 09:11:58.703203|4.60|mathematics +38|410|65770|4294967403|24.77|35.34|true|ulysses thompson|2013-03-01 09:11:58.703082|51.54|industrial engineering +106|381|65700|4294967381|34.28|39.12|true|nick johnson|2013-03-01 09:11:58.703268|14.35|forestry +120|494|65594|4294967499|20.69|31.86|true|ulysses ellison|2013-03-01 09:11:58.703093|44.58|religion +110|292|65707|4294967373|24.43|48.34|true|oscar ichabod|2013-03-01 09:11:58.703181|53.53|linguistics +10|480|65662|4294967484|95.13|20.85|true|oscar allen|2013-03-01 09:11:58.703168|9.06|philosophy +4|412|65590|4294967328|93.90|25.40|false|jessica ichabod|2013-03-01 09:11:58.703143|3.58|joggying +79|278|65669|4294967327|30.87|40.52|true|fred young|2013-03-01 09:11:58.703256|21.67|yard duty +124|333|65724|4294967506|3.17|16.08|true|gabriella xylophone|2013-03-01 09:11:58.703070|0.50|mathematics +12|407|65577|4294967449|46.83|25.68|false|mike carson|2013-03-01 09:11:58.703150|31.13|undecided +8|503|65541|4294967546|69.18|39.01|true|xavier ichabod|2013-03-01 09:11:58.703178|7.23|linguistics +84|472|65715|4294967481|96.31|18.51|true|gabriella brown|2013-03-01 09:11:58.703192|25.71|opthamology +82|480|65746|4294967534|95.69|48.20|false|victor davidson|2013-03-01 09:11:58.703119|66.78|study skills +1|274|65778|4294967424|26.14|39.77|false|alice ovid|2013-03-01 09:11:58.703157|86.49|opthamology +123|408|65548|4294967438|14.56|15.95|false|luke underhill|2013-03-01 09:11:58.703320|0.31|education +102|506|65593|4294967490|67.38|22.97|false|priscilla brown|2013-03-01 09:11:58.703283|1.66|kindergarten +38|332|65560|4294967298|30.31|10.71|true|quinn laertes|2013-03-01 09:11:58.703112|73.08|religion +75|499|65603|4294967322|14.44|49.43|false|yuri thompson|2013-03-01 09:11:58.703151|11.87|american history +6|359|65689|4294967508|95.09|19.09|true|xavier garcia|2013-03-01 09:11:58.703316|7.59|forestry +89|273|65607|4294967316|57.84|49.47|true|tom robinson|2013-03-01 09:11:58.703110|99.00|education +22|322|65776|4294967347|47.82|3.81|false|luke falkner|2013-03-01 09:11:58.703089|75.51|zync studies +17|472|65583|4294967438|66.08|4.64|true|rachel quirinius|2013-03-01 09:11:58.703285|19.07|forestry +104|305|65679|4294967432|29.91|48.67|true|gabriella zipper|2013-03-01 09:11:58.703097|50.31|yard duty +100|442|65588|4294967449|64.01|47.52|false|rachel king|2013-03-01 09:11:58.703117|15.96|xylophone band +23|458|65538|4294967313|40.67|18.13|false|quinn garcia|2013-03-01 09:11:58.703185|48.61|kindergarten +8|399|65703|4294967437|29.11|9.64|false|tom zipper|2013-03-01 09:11:58.703105|34.94|zync studies +87|423|65644|4294967471|17.51|3.09|false|ethan garcia|2013-03-01 09:11:58.703157|31.92|study skills +98|477|65791|4294967422|22.87|14.38|true|nick carson|2013-03-01 09:11:58.703111|84.41|linguistics +87|269|65748|4294967543|20.61|35.33|false|bob ovid|2013-03-01 09:11:58.703070|80.82|mathematics +36|510|65715|4294967531|92.13|49.70|true|fred zipper|2013-03-01 09:11:58.703310|70.81|quiet hour +2|489|65658|4294967314|67.62|31.20|true|oscar hernandez|2013-03-01 09:11:58.703130|90.69|xylophone band +34|315|65689|4294967336|14.78|36.35|true|ethan van buren|2013-03-01 09:11:58.703156|54.20|opthamology +0|410|65789|4294967338|2.12|20.59|true|zach allen|2013-03-01 09:11:58.703078|72.37|study skills +1|499|65543|4294967492|25.68|29.87|true|rachel hernandez|2013-03-01 09:11:58.703316|42.81|geology +96|389|65749|4294967499|89.20|29.86|true|calvin brown|2013-03-01 09:11:58.703244|71.83|forestry +78|432|65770|4294967332|41.88|9.42|false|fred davidson|2013-03-01 09:11:58.703192|61.03|topology +-2|307|65592|4294967529|13.62|16.78|false|katie carson|2013-03-01 09:11:58.703271|51.09|chemistry +12|393|65679|4294967421|11.51|13.72|true|tom hernandez|2013-03-01 09:11:58.703078|89.58|undecided +88|277|65576|4294967353|9.16|2.96|false|nick miller|2013-03-01 09:11:58.703158|96.98|education +88|489|65747|4294967390|37.74|33.69|false|ulysses xylophone|2013-03-01 09:11:58.703225|86.95|linguistics +-2|329|65755|4294967527|73.67|12.95|false|nick white|2013-03-01 09:11:58.703179|46.23|forestry +3|477|65725|4294967347|77.98|12.57|true|fred ovid|2013-03-01 09:11:58.703324|58.90|religion +35|469|65622|4294967538|21.47|10.61|true|priscilla ellison|2013-03-01 09:11:58.703231|33.66|linguistics +69|361|65687|4294967406|89.50|38.30|false|nick miller|2013-03-01 09:11:58.703124|47.16|education +106|470|65663|4294967541|94.07|22.03|false|zach brown|2013-03-01 09:11:58.703191|85.52|debate +27|319|65727|4294967377|85.24|38.45|false|sarah ovid|2013-03-01 09:11:58.703288|59.59|chemistry +51|469|65631|4294967456|91.18|49.62|true|holly van buren|2013-03-01 09:11:58.703108|92.52|joggying +122|302|65647|4294967500|78.03|6.22|true|tom quirinius|2013-03-01 09:11:58.703201|62.47|xylophone band +-1|294|65748|4294967502|97.23|15.14|false|nick ovid|2013-03-01 09:11:58.703299|5.76|quiet hour +18|290|65767|4294967409|28.16|46.21|false|yuri underhill|2013-03-01 09:11:58.703301|0.38|opthamology +78|431|65592|4294967499|63.07|19.24|true|ethan polk|2013-03-01 09:11:58.703073|5.10|linguistics +37|338|65584|4294967327|67.09|30.80|true|tom brown|2013-03-01 09:11:58.703236|1.13|forestry +112|447|65789|4294967360|59.75|22.61|true|alice young|2013-03-01 09:11:58.703124|92.16|education +79|345|65769|4294967479|50.73|3.06|true|calvin miller|2013-03-01 09:11:58.703257|62.01|zync studies +75|483|65668|4294967298|49.43|37.98|false|ulysses king|2013-03-01 09:11:58.703168|59.79|yard duty +37|357|65612|4294967315|97.43|48.32|true|holly underhill|2013-03-01 09:11:58.703281|99.12|kindergarten +94|392|65758|4294967347|19.32|23.99|true|alice underhill|2013-03-01 09:11:58.703125|86.64|geology +9|396|65717|4294967370|90.00|35.93|true|tom steinbeck|2013-03-01 09:11:58.703149|74.22|values clariffication +2|310|65593|4294967536|96.66|40.64|true|quinn quirinius|2013-03-01 09:11:58.703106|98.76|forestry +85|368|65692|4294967395|66.57|3.52|true|calvin garcia|2013-03-01 09:11:58.703256|92.89|yard duty +3|461|65602|4294967368|7.14|12.21|false|alice zipper|2013-03-01 09:11:58.703141|30.38|biology +85|475|65563|4294967463|93.17|19.84|true|tom young|2013-03-01 09:11:58.703241|93.97|xylophone band +6|449|65720|4294967353|55.25|46.42|true|xavier davidson|2013-03-01 09:11:58.703215|3.65|linguistics +76|475|65696|4294967545|0.14|17.22|false|gabriella robinson|2013-03-01 09:11:58.703283|23.51|xylophone band +120|458|65737|4294967550|92.91|29.21|true|priscilla brown|2013-03-01 09:11:58.703144|30.70|study skills +109|279|65650|4294967518|75.97|32.91|false|victor ichabod|2013-03-01 09:11:58.703270|6.47|nap time +-1|390|65769|4294967365|2.80|2.02|false|ethan zipper|2013-03-01 09:11:58.703172|22.62|undecided +65|407|65604|4294967382|45.70|38.15|true|nick robinson|2013-03-01 09:11:58.703174|96.20|joggying +54|478|65771|4294967470|54.46|33.00|false|tom garcia|2013-03-01 09:11:58.703243|67.81|quiet hour +35|283|65787|4294967296|15.80|15.95|true|zach nixon|2013-03-01 09:11:58.703242|95.56|opthamology +7|444|65613|4294967364|94.63|15.86|true|wendy xylophone|2013-03-01 09:11:58.703257|16.63|yard duty +106|347|65612|4294967475|44.87|23.03|true|rachel carson|2013-03-01 09:11:58.703130|4.30|religion +12|386|65699|4294967496|9.29|18.74|false|ethan nixon|2013-03-01 09:11:58.703099|81.26|biology +63|280|65722|4294967380|98.09|37.36|true|ulysses young|2013-03-01 09:11:58.703299|54.66|quiet hour +7|301|65578|4294967314|41.62|12.20|false|nick young|2013-03-01 09:11:58.703199|27.57|debate +55|455|65764|4294967410|64.57|2.03|false|nick xylophone|2013-03-01 09:11:58.703194|51.56|zync studies +90|435|65652|4294967316|69.88|28.64|true|mike miller|2013-03-01 09:11:58.703282|1.72|undecided +102|490|65771|4294967310|58.93|26.35|true|zach carson|2013-03-01 09:11:58.703296|35.19|american history +81|325|65585|4294967505|39.90|46.21|false|ethan underhill|2013-03-01 09:11:58.703234|96.07|religion +4|445|65552|4294967524|93.35|48.66|true|gabriella davidson|2013-03-01 09:11:58.703120|31.79|chemistry +16|363|65761|4294967529|10.13|48.24|true|alice xylophone|2013-03-01 09:11:58.703223|18.03|history +-3|459|65644|4294967456|92.71|0.08|false|jessica king|2013-03-01 09:11:58.703279|53.48|joggying +40|455|65621|4294967384|1.97|33.97|false|victor garcia|2013-03-01 09:11:58.703080|81.71|mathematics +112|337|65777|4294967415|33.53|36.17|false|quinn king|2013-03-01 09:11:58.703141|49.88|values clariffication +0|329|65684|4294967461|54.83|49.06|false|xavier hernandez|2013-03-01 09:11:58.703296|94.88|forestry +10|491|65698|4294967531|17.85|22.83|true|tom johnson|2013-03-01 09:11:58.703070|3.07|history +47|300|65709|4294967495|63.91|13.31|false|oscar ellison|2013-03-01 09:11:58.703318|63.27|linguistics +36|261|65547|4294967497|45.12|24.62|true|alice zipper|2013-03-01 09:11:58.703086|93.10|mathematics +71|405|65734|4294967507|29.46|49.93|false|bob xylophone|2013-03-01 09:11:58.703249|81.40|opthamology +27|467|65740|4294967512|19.06|47.72|false|irene quirinius|2013-03-01 09:11:58.703307|43.61|education +58|306|65669|4294967534|68.20|14.43|false|ethan nixon|2013-03-01 09:11:58.703236|21.84|nap time +-3|333|65562|4294967359|22.34|35.58|false|ulysses steinbeck|2013-03-01 09:11:58.703259|86.78|xylophone band +20|305|65692|4294967484|32.28|32.11|true|jessica ellison|2013-03-01 09:11:58.703096|75.79|industrial engineering +23|402|65723|4294967339|9.57|4.18|true|sarah polk|2013-03-01 09:11:58.703190|62.93|chemistry +49|295|65559|4294967373|46.88|31.41|false|oscar steinbeck|2013-03-01 09:11:58.703312|34.58|zync studies +40|389|65554|4294967315|8.59|33.70|true|sarah ichabod|2013-03-01 09:11:58.703136|93.18|zync studies +87|316|65691|4294967395|15.87|5.64|false|calvin robinson|2013-03-01 09:11:58.703186|36.24|kindergarten +50|280|65631|4294967446|81.58|6.64|false|victor robinson|2013-03-01 09:11:58.703314|33.82|philosophy +73|470|65665|4294967514|54.52|48.31|false|quinn quirinius|2013-03-01 09:11:58.703206|31.68|xylophone band +92|462|65624|4294967296|80.73|47.04|true|bob steinbeck|2013-03-01 09:11:58.703197|37.71|quiet hour +92|344|65627|4294967336|90.25|36.79|false|priscilla garcia|2013-03-01 09:11:58.703287|53.48|history +37|329|65720|4294967383|38.35|22.55|true|bob falkner|2013-03-01 09:11:58.703319|11.91|opthamology +118|322|65763|4294967514|25.77|36.15|true|alice ovid|2013-03-01 09:11:58.703322|94.46|chemistry +11|396|65629|4294967544|58.54|20.51|true|priscilla king|2013-03-01 09:11:58.703277|71.39|nap time +28|491|65568|4294967425|84.69|9.15|false|tom ichabod|2013-03-01 09:11:58.703149|25.08|linguistics +43|406|65783|4294967537|26.21|0.43|true|holly robinson|2013-03-01 09:11:58.703123|46.19|joggying +45|393|65750|4294967408|56.91|49.36|false|priscilla steinbeck|2013-03-01 09:11:58.703218|97.18|wind surfing +110|359|65559|4294967434|20.23|9.19|false|sarah falkner|2013-03-01 09:11:58.703135|3.60|xylophone band +14|465|65541|4294967445|30.26|3.34|true|victor ellison|2013-03-01 09:11:58.703245|96.71|topology +35|322|65788|4294967489|10.06|20.83|false|jessica underhill|2013-03-01 09:11:58.703249|98.67|nap time +5|409|65686|4294967486|36.23|13.04|true|katie ichabod|2013-03-01 09:11:58.703273|20.44|wind surfing +1|284|65548|4294967539|29.85|30.95|true|tom young|2013-03-01 09:11:58.703085|63.92|wind surfing +121|328|65742|4294967466|50.32|42.73|true|wendy van buren|2013-03-01 09:11:58.703156|60.80|education +23|398|65651|4294967431|60.38|46.02|false|gabriella laertes|2013-03-01 09:11:58.703134|94.58|chemistry +22|399|65676|4294967466|72.63|4.67|false|fred underhill|2013-03-01 09:11:58.703274|88.74|wind surfing +30|372|65776|4294967531|7.41|10.10|true|mike johnson|2013-03-01 09:11:58.703115|77.38|joggying +81|275|65701|4294967450|70.95|15.12|true|katie garcia|2013-03-01 09:11:58.703084|27.55|undecided +61|370|65591|4294967329|45.44|6.26|false|jessica polk|2013-03-01 09:11:58.703300|49.73|opthamology +113|500|65570|4294967472|97.19|46.45|true|yuri ichabod|2013-03-01 09:11:58.703179|10.11|history +13|299|65786|4294967477|97.65|6.54|false|xavier carson|2013-03-01 09:11:58.703073|61.77|values clariffication +107|289|65614|4294967519|88.57|43.02|false|yuri ichabod|2013-03-01 09:11:58.703270|8.76|biology +8|424|65728|4294967313|46.88|23.47|false|david garcia|2013-03-01 09:11:58.703248|46.33|chemistry +59|300|65537|4294967371|37.31|37.09|true|zach ovid|2013-03-01 09:11:58.703174|20.39|industrial engineering +100|430|65661|4294967303|18.31|37.13|true|yuri white|2013-03-01 09:11:58.703224|81.15|undecided +76|303|65676|4294967515|56.72|37.17|false|rachel ovid|2013-03-01 09:11:58.703090|79.57|wind surfing +12|302|65739|4294967433|42.06|35.15|true|yuri steinbeck|2013-03-01 09:11:58.703126|53.98|philosophy +17|443|65576|4294967519|87.92|14.12|true|nick miller|2013-03-01 09:11:58.703285|60.00|philosophy +103|489|65642|4294967492|93.67|8.63|false|wendy miller|2013-03-01 09:11:58.703292|14.57|education +21|308|65738|4294967400|79.15|31.11|false|victor white|2013-03-01 09:11:58.703186|8.39|values clariffication +21|376|65661|4294967315|21.59|44.37|false|yuri xylophone|2013-03-01 09:11:58.703197|17.09|history +3|341|65653|4294967352|29.58|0.57|false|alice hernandez|2013-03-01 09:11:58.703122|35.90|undecided +116|396|65726|4294967461|4.36|44.18|true|nick quirinius|2013-03-01 09:11:58.703258|23.95|history +33|392|65611|4294967515|21.47|6.52|false|sarah falkner|2013-03-01 09:11:58.703306|70.32|study skills +106|509|65698|4294967331|35.26|33.69|true|victor steinbeck|2013-03-01 09:11:58.703158|55.39|linguistics +4|445|65694|4294967548|67.78|2.14|true|katie king|2013-03-01 09:11:58.703175|46.45|mathematics +102|403|65546|4294967374|9.09|47.46|false|david steinbeck|2013-03-01 09:11:58.703121|30.01|forestry +14|297|65644|4294967301|78.17|31.88|true|priscilla ichabod|2013-03-01 09:11:58.703190|84.18|geology +98|491|65762|4294967312|84.97|43.83|false|priscilla brown|2013-03-01 09:11:58.703137|48.90|nap time +90|504|65703|4294967456|93.36|33.56|false|victor brown|2013-03-01 09:11:58.703228|71.91|wind surfing +82|483|65684|4294967399|19.50|11.43|false|holly ellison|2013-03-01 09:11:58.703249|30.42|history +2|373|65712|4294967524|57.45|49.38|false|zach underhill|2013-03-01 09:11:58.703142|38.41|history +16|264|65785|4294967370|7.75|29.95|true|calvin underhill|2013-03-01 09:11:58.703168|3.93|values clariffication +63|345|65621|4294967504|88.45|15.48|false|xavier johnson|2013-03-01 09:11:58.703304|58.39|biology +45|334|65733|4294967472|33.55|41.17|false|mike ichabod|2013-03-01 09:11:58.703144|19.00|undecided +48|330|65718|4294967546|70.75|7.62|true|quinn xylophone|2013-03-01 09:11:58.703289|96.20|topology +82|295|65621|4294967514|17.44|21.23|true|priscilla young|2013-03-01 09:11:58.703103|21.49|quiet hour +107|351|65578|4294967380|27.63|45.41|false|zach ichabod|2013-03-01 09:11:58.703325|47.89|opthamology +14|346|65748|4294967353|58.72|22.31|false|jessica young|2013-03-01 09:11:58.703207|90.01|debate +35|361|65607|4294967446|39.14|49.94|true|ulysses white|2013-03-01 09:11:58.703188|94.90|religion +87|439|65700|4294967401|98.22|21.96|true|david steinbeck|2013-03-01 09:11:58.703219|14.73|chemistry +117|377|65773|4294967500|48.84|9.05|false|rachel nixon|2013-03-01 09:11:58.703198|32.15|zync studies +97|396|65779|4294967334|80.59|29.68|false|oscar garcia|2013-03-01 09:11:58.703105|36.54|wind surfing +28|373|65556|4294967416|53.74|30.92|false|victor robinson|2013-03-01 09:11:58.703192|80.05|topology +52|324|65592|4294967406|68.55|4.43|false|xavier laertes|2013-03-01 09:11:58.703244|46.74|study skills +25|291|65745|4294967536|93.83|10.75|false|sarah miller|2013-03-01 09:11:58.703228|33.21|linguistics +101|289|65640|4294967468|57.83|32.94|true|katie van buren|2013-03-01 09:11:58.703223|76.95|yard duty +72|270|65762|4294967446|52.21|46.01|true|calvin quirinius|2013-03-01 09:11:58.703214|39.27|yard duty +66|506|65605|4294967348|58.62|7.00|true|ethan zipper|2013-03-01 09:11:58.703275|85.37|values clariffication +0|489|65703|4294967320|42.48|14.15|true|wendy steinbeck|2013-03-01 09:11:58.703099|38.14|forestry +39|370|65618|4294967346|49.38|18.38|false|mike ovid|2013-03-01 09:11:58.703227|68.32|xylophone band +75|449|65586|4294967540|98.45|21.74|false|ethan allen|2013-03-01 09:11:58.703279|26.21|wind surfing +45|383|65641|4294967521|69.97|12.76|false|mike ellison|2013-03-01 09:11:58.703159|96.36|philosophy +87|328|65737|4294967354|90.87|46.92|false|ulysses zipper|2013-03-01 09:11:58.703307|41.02|history +7|366|65548|4294967492|4.67|8.97|true|jessica van buren|2013-03-01 09:11:58.703285|90.95|religion +62|475|65701|4294967514|77.61|26.42|true|tom miller|2013-03-01 09:11:58.703129|89.77|education +44|440|65782|4294967467|10.35|46.92|true|wendy underhill|2013-03-01 09:11:58.703143|21.45|undecided +32|390|65692|4294967466|47.54|35.59|true|jessica nixon|2013-03-01 09:11:58.703303|69.53|wind surfing +42|472|65635|4294967350|72.81|26.78|false|katie steinbeck|2013-03-01 09:11:58.703144|12.92|geology +79|352|65698|4294967502|43.53|23.86|true|ethan underhill|2013-03-01 09:11:58.703105|48.91|opthamology +13|328|65784|4294967520|22.38|43.56|false|yuri falkner|2013-03-01 09:11:58.703303|12.79|nap time +56|482|65747|4294967366|47.63|49.39|true|luke falkner|2013-03-01 09:11:58.703194|99.19|quiet hour +72|334|65566|4294967482|11.55|4.75|true|priscilla ellison|2013-03-01 09:11:58.703209|68.54|undecided +96|417|65557|4294967325|80.68|5.10|false|bob ellison|2013-03-01 09:11:58.703209|78.22|industrial engineering +65|484|65770|4294967413|49.29|44.68|true|rachel johnson|2013-03-01 09:11:58.703121|20.30|biology +75|455|65760|4294967514|9.45|44.17|true|holly ichabod|2013-03-01 09:11:58.703105|82.85|opthamology +93|317|65675|4294967478|1.87|17.03|false|david ichabod|2013-03-01 09:11:58.703178|9.88|yard duty +26|317|65590|4294967527|67.83|45.47|true|yuri king|2013-03-01 09:11:58.703182|94.45|debate +98|450|65682|4294967359|6.08|7.38|true|victor xylophone|2013-03-01 09:11:58.703196|53.28|industrial engineering +106|478|65577|4294967519|83.13|10.16|true|ethan garcia|2013-03-01 09:11:58.703110|48.13|opthamology +115|309|65538|4294967334|99.10|9.89|true|calvin allen|2013-03-01 09:11:58.703311|15.17|values clariffication +11|401|65714|4294967532|55.36|47.07|true|calvin johnson|2013-03-01 09:11:58.703194|59.33|geology +20|452|65666|4294967302|49.57|6.97|true|alice brown|2013-03-01 09:11:58.703192|62.93|industrial engineering +66|289|65538|4294967541|66.01|39.78|false|xavier davidson|2013-03-01 09:11:58.703320|40.63|forestry +81|343|65691|4294967508|76.37|27.30|true|victor carson|2013-03-01 09:11:58.703218|63.28|debate +6|461|65713|4294967442|93.48|39.11|false|yuri underhill|2013-03-01 09:11:58.703272|38.88|religion +1|295|65571|4294967321|65.51|36.83|false|zach falkner|2013-03-01 09:11:58.703224|17.17|values clariffication +96|350|65660|4294967462|84.21|44.22|false|ulysses johnson|2013-03-01 09:11:58.703071|15.60|history +5|469|65688|4294967336|41.36|38.25|false|bob carson|2013-03-01 09:11:58.703133|7.97|religion +38|321|65677|4294967518|73.47|21.01|false|alice davidson|2013-03-01 09:11:58.703198|84.37|nap time +12|468|65626|4294967319|16.30|17.98|true|victor polk|2013-03-01 09:11:58.703185|64.20|geology +64|443|65655|4294967383|65.20|9.95|true|alice steinbeck|2013-03-01 09:11:58.703294|5.84|debate +76|415|65565|4294967415|32.02|35.03|true|katie miller|2013-03-01 09:11:58.703187|11.21|values clariffication +85|413|65584|4294967396|68.90|45.79|true|nick falkner|2013-03-01 09:11:58.703204|25.28|philosophy +66|407|65575|4294967300|17.57|44.01|false|priscilla young|2013-03-01 09:11:58.703251|6.42|debate +105|304|65702|4294967423|50.83|48.97|true|luke white|2013-03-01 09:11:58.703177|18.47|religion +20|461|65617|4294967538|22.31|34.26|true|priscilla steinbeck|2013-03-01 09:11:58.703223|19.26|xylophone band +13|289|65646|4294967391|89.11|3.68|true|holly underhill|2013-03-01 09:11:58.703237|89.41|mathematics +99|481|65735|4294967539|37.01|49.34|false|ulysses quirinius|2013-03-01 09:11:58.703257|31.10|industrial engineering +110|264|65633|4294967423|25.46|8.90|false|fred laertes|2013-03-01 09:11:58.703288|38.44|nap time +98|362|65791|4294967465|93.75|25.14|false|jessica miller|2013-03-01 09:11:58.703155|90.79|values clariffication +112|277|65756|4294967404|81.99|28.42|false|zach carson|2013-03-01 09:11:58.703262|90.39|debate +57|467|65594|4294967505|33.78|1.63|false|katie steinbeck|2013-03-01 09:11:58.703288|69.27|undecided +122|480|65653|4294967478|58.91|21.69|false|wendy hernandez|2013-03-01 09:11:58.703316|41.41|topology +13|399|65611|4294967376|53.59|21.64|false|zach van buren|2013-03-01 09:11:58.703180|10.72|philosophy +27|493|65777|4294967468|48.09|11.16|true|xavier nixon|2013-03-01 09:11:58.703303|47.91|debate +-3|448|65610|4294967314|81.97|31.11|true|mike xylophone|2013-03-01 09:11:58.703308|79.37|opthamology +106|432|65610|4294967466|88.61|32.15|false|xavier falkner|2013-03-01 09:11:58.703135|43.78|joggying +90|272|65555|4294967457|5.50|38.03|false|gabriella garcia|2013-03-01 09:11:58.703248|49.00|joggying +45|508|65638|4294967362|53.36|19.51|true|nick hernandez|2013-03-01 09:11:58.703254|30.71|kindergarten +26|346|65618|4294967393|46.24|22.74|true|katie young|2013-03-01 09:11:58.703275|77.16|yard duty +97|477|65570|4294967400|90.81|9.98|false|luke underhill|2013-03-01 09:11:58.703178|42.58|linguistics +46|283|65551|4294967451|3.69|19.52|false|tom hernandez|2013-03-01 09:11:58.703251|48.25|geology +16|412|65592|4294967396|52.43|31.68|false|mike johnson|2013-03-01 09:11:58.703320|37.82|biology +92|310|65660|4294967427|3.33|8.98|true|priscilla polk|2013-03-01 09:11:58.703227|58.23|topology +29|342|65589|4294967403|15.32|11.57|true|katie nixon|2013-03-01 09:11:58.703199|23.01|nap time +28|402|65756|4294967548|46.19|22.49|true|katie polk|2013-03-01 09:11:58.703205|49.15|biology +72|298|65724|4294967427|59.66|8.06|false|priscilla robinson|2013-03-01 09:11:58.703214|58.05|history +34|370|65587|4294967309|27.44|14.06|true|xavier king|2013-03-01 09:11:58.703126|84.83|mathematics +43|320|65772|4294967470|83.33|20.21|false|luke steinbeck|2013-03-01 09:11:58.703233|36.23|religion +83|509|65629|4294967455|88.35|0.91|true|luke ichabod|2013-03-01 09:11:58.703232|87.65|joggying +22|319|65685|4294967359|30.00|35.38|false|mike hernandez|2013-03-01 09:11:58.703140|73.13|opthamology +93|389|65773|4294967468|83.13|12.55|true|jessica carson|2013-03-01 09:11:58.703090|33.29|mathematics +28|440|65691|4294967492|73.18|5.99|true|oscar carson|2013-03-01 09:11:58.703151|75.39|quiet hour +92|341|65599|4294967474|82.13|18.55|true|jessica king|2013-03-01 09:11:58.703258|23.06|zync studies +101|509|65684|4294967330|36.90|40.77|false|mike laertes|2013-03-01 09:11:58.703287|94.60|chemistry +43|416|65695|4294967316|93.92|28.02|false|ulysses quirinius|2013-03-01 09:11:58.703171|23.63|american history +117|419|65620|4294967303|43.30|9.03|true|nick miller|2013-03-01 09:11:58.703193|2.26|biology +120|280|65674|4294967533|72.38|18.59|false|fred ellison|2013-03-01 09:11:58.703123|80.81|xylophone band +38|356|65729|4294967396|59.16|35.72|true|yuri hernandez|2013-03-01 09:11:58.703192|49.84|joggying +27|291|65654|4294967509|80.04|9.80|false|fred hernandez|2013-03-01 09:11:58.703170|77.80|wind surfing +92|418|65744|4294967366|67.33|12.32|false|irene ellison|2013-03-01 09:11:58.703298|2.61|yard duty +84|344|65655|4294967341|5.68|45.14|true|victor hernandez|2013-03-01 09:11:58.703139|19.01|philosophy +68|511|65577|4294967331|14.02|12.47|false|tom carson|2013-03-01 09:11:58.703198|57.34|debate +59|256|65706|4294967467|83.67|38.37|false|quinn hernandez|2013-03-01 09:11:58.703321|78.05|values clariffication +109|405|65665|4294967428|80.74|32.82|false|xavier ovid|2013-03-01 09:11:58.703227|72.73|geology +22|439|65536|4294967336|32.75|23.35|false|calvin thompson|2013-03-01 09:11:58.703131|52.78|nap time +12|358|65555|4294967523|98.55|27.67|true|sarah quirinius|2013-03-01 09:11:58.703114|56.45|topology +28|284|65665|4294967308|25.01|22.62|false|irene falkner|2013-03-01 09:11:58.703127|21.92|undecided +115|326|65603|4294967465|63.69|22.12|true|yuri brown|2013-03-01 09:11:58.703215|65.03|religion +65|386|65772|4294967325|10.29|17.65|false|alice ovid|2013-03-01 09:11:58.703167|95.28|undecided +4|333|65741|4294967347|26.37|20.86|false|irene ovid|2013-03-01 09:11:58.703214|82.00|linguistics +74|265|65750|4294967308|57.51|14.40|false|oscar zipper|2013-03-01 09:11:58.703147|95.37|yard duty +67|300|65609|4294967350|9.68|30.20|false|zach allen|2013-03-01 09:11:58.703182|45.38|chemistry +48|359|65600|4294967479|33.01|49.64|true|fred white|2013-03-01 09:11:58.703133|99.46|study skills +69|321|65596|4294967503|71.92|27.70|true|david falkner|2013-03-01 09:11:58.703098|98.80|mathematics +27|411|65736|4294967504|15.75|28.53|true|nick robinson|2013-03-01 09:11:58.703318|10.36|debate +35|350|65585|4294967401|54.71|48.74|false|nick falkner|2013-03-01 09:11:58.703187|39.89|wind surfing +104|364|65623|4294967415|51.84|20.40|false|katie steinbeck|2013-03-01 09:11:58.703206|9.50|joggying +18|303|65720|4294967458|59.33|10.43|false|luke brown|2013-03-01 09:11:58.703149|36.43|forestry +1|320|65622|4294967335|74.14|18.89|true|alice ichabod|2013-03-01 09:11:58.703236|78.65|study skills +69|291|65635|4294967385|66.40|12.49|false|victor underhill|2013-03-01 09:11:58.703271|74.00|forestry +63|287|65550|4294967410|59.07|43.58|true|jessica carson|2013-03-01 09:11:58.703268|55.96|nap time +0|346|65552|4294967412|58.02|40.47|false|calvin brown|2013-03-01 09:11:58.703212|89.46|undecided +39|283|65546|4294967318|59.98|23.54|true|calvin zipper|2013-03-01 09:11:58.703236|18.08|mathematics +123|435|65581|4294967530|17.80|49.96|false|quinn allen|2013-03-01 09:11:58.703212|31.43|opthamology +94|316|65731|4294967335|46.34|8.99|true|irene ovid|2013-03-01 09:11:58.703198|53.60|topology +40|366|65692|4294967354|72.07|30.70|false|wendy steinbeck|2013-03-01 09:11:58.703121|73.41|zync studies +37|327|65548|4294967382|89.11|4.63|false|oscar miller|2013-03-01 09:11:58.703113|12.83|yard duty +110|288|65585|4294967494|95.43|37.25|true|sarah underhill|2013-03-01 09:11:58.703277|85.86|debate +76|297|65566|4294967484|66.30|8.35|false|yuri king|2013-03-01 09:11:58.703227|85.79|nap time +-2|445|65737|4294967351|35.62|27.31|true|oscar zipper|2013-03-01 09:11:58.703127|51.55|forestry +89|451|65580|4294967322|17.56|21.06|true|bob miller|2013-03-01 09:11:58.703094|74.32|philosophy +65|375|65564|4294967442|16.23|21.07|true|irene quirinius|2013-03-01 09:11:58.703280|83.03|forestry +94|265|65749|4294967538|53.90|17.49|true|sarah hernandez|2013-03-01 09:11:58.703098|84.61|xylophone band +-1|483|65664|4294967426|51.26|33.70|true|mike hernandez|2013-03-01 09:11:58.703119|72.96|nap time +5|485|65725|4294967464|27.59|34.52|true|jessica polk|2013-03-01 09:11:58.703256|74.01|industrial engineering +31|392|65729|4294967330|52.96|39.77|false|tom quirinius|2013-03-01 09:11:58.703231|76.00|mathematics +104|344|65766|4294967436|87.94|42.01|false|ulysses ichabod|2013-03-01 09:11:58.703184|40.58|biology +14|346|65621|4294967439|33.57|1.46|true|mike davidson|2013-03-01 09:11:58.703154|86.94|xylophone band +96|362|65628|4294967426|91.41|12.03|false|calvin robinson|2013-03-01 09:11:58.703307|44.75|opthamology +107|504|65548|4294967401|92.69|33.56|true|rachel young|2013-03-01 09:11:58.703255|41.26|philosophy +89|318|65788|4294967305|99.09|45.55|false|priscilla nixon|2013-03-01 09:11:58.703105|0.97|chemistry +0|443|65633|4294967506|44.99|35.71|false|quinn miller|2013-03-01 09:11:58.703299|24.04|linguistics +24|361|65782|4294967361|80.99|0.45|false|rachel carson|2013-03-01 09:11:58.703162|72.04|joggying +72|370|65636|4294967375|77.97|47.60|true|victor ellison|2013-03-01 09:11:58.703115|28.54|forestry +81|268|65786|4294967528|54.84|42.64|false|wendy zipper|2013-03-01 09:11:58.703169|40.68|wind surfing +100|437|65578|4294967458|35.95|25.05|true|luke brown|2013-03-01 09:11:58.703127|59.02|geology +33|455|65696|4294967380|17.30|11.18|false|ethan robinson|2013-03-01 09:11:58.703276|21.84|nap time +108|305|65651|4294967489|5.36|44.25|true|jessica garcia|2013-03-01 09:11:58.703265|21.89|geology +29|408|65762|4294967505|77.60|0.39|false|zach garcia|2013-03-01 09:11:58.703294|14.74|wind surfing +62|504|65555|4294967514|26.66|18.23|true|irene johnson|2013-03-01 09:11:58.703087|95.80|topology +18|509|65576|4294967363|77.37|15.63|true|calvin quirinius|2013-03-01 09:11:58.703254|76.21|undecided +66|303|65647|4294967453|80.82|3.08|true|bob van buren|2013-03-01 09:11:58.703263|14.92|yard duty +123|371|65669|4294967385|76.54|5.90|false|nick nixon|2013-03-01 09:11:58.703311|26.32|xylophone band +25|408|65562|4294967301|92.29|32.85|false|ethan hernandez|2013-03-01 09:11:58.703104|39.85|chemistry +52|322|65629|4294967351|2.44|14.35|false|rachel laertes|2013-03-01 09:11:58.703195|73.46|kindergarten +6|429|65620|4294967375|56.65|49.95|false|tom garcia|2013-03-01 09:11:58.703193|27.84|yard duty +51|280|65733|4294967378|99.21|18.67|false|david robinson|2013-03-01 09:11:58.703289|69.33|chemistry +93|429|65776|4294967542|39.04|43.25|false|yuri nixon|2013-03-01 09:11:58.703317|48.13|yard duty +52|357|65661|4294967502|75.71|5.72|false|xavier brown|2013-03-01 09:11:58.703093|74.17|joggying +23|494|65705|4294967356|99.53|18.84|false|zach polk|2013-03-01 09:11:58.703288|19.08|topology +65|416|65617|4294967487|33.69|39.96|true|quinn robinson|2013-03-01 09:11:58.703292|29.53|quiet hour +-1|307|65713|4294967322|82.89|7.78|false|david underhill|2013-03-01 09:11:58.703200|71.76|opthamology +112|505|65617|4294967439|62.89|42.01|true|fred johnson|2013-03-01 09:11:58.703104|99.63|biology +118|329|65737|4294967382|64.39|12.59|false|bob robinson|2013-03-01 09:11:58.703177|69.14|values clariffication +77|402|65558|4294967525|17.14|43.24|true|sarah garcia|2013-03-01 09:11:58.703131|53.10|xylophone band +75|361|65729|4294967543|68.33|7.76|true|mike carson|2013-03-01 09:11:58.703084|31.83|values clariffication +6|411|65751|4294967435|34.01|23.50|false|zach young|2013-03-01 09:11:58.703173|14.12|debate +113|505|65740|4294967412|73.52|41.38|true|fred polk|2013-03-01 09:11:58.703238|39.61|mathematics +119|483|65765|4294967335|31.75|22.82|false|katie king|2013-03-01 09:11:58.703188|16.81|opthamology +24|314|65686|4294967443|89.16|33.17|true|zach thompson|2013-03-01 09:11:58.703179|93.43|history +83|356|65670|4294967521|9.82|43.87|true|irene polk|2013-03-01 09:11:58.703183|47.57|american history +33|330|65649|4294967369|25.73|29.97|false|gabriella falkner|2013-03-01 09:11:58.703214|34.77|undecided +116|309|65780|4294967430|93.67|29.76|false|alice xylophone|2013-03-01 09:11:58.703160|58.54|biology +102|360|65653|4294967488|98.34|12.51|true|david quirinius|2013-03-01 09:11:58.703205|28.15|opthamology +90|484|65683|4294967376|1.17|12.17|true|zach ellison|2013-03-01 09:11:58.703279|80.09|biology +4|264|65728|4294967318|85.03|47.63|false|rachel van buren|2013-03-01 09:11:58.703269|18.86|values clariffication +47|491|65599|4294967305|66.10|27.03|true|alice thompson|2013-03-01 09:11:58.703258|52.41|chemistry +110|386|65647|4294967436|19.15|46.78|true|david ellison|2013-03-01 09:11:58.703238|80.43|chemistry +-3|298|65720|4294967305|34.60|39.70|false|ethan steinbeck|2013-03-01 09:11:58.703079|34.82|kindergarten +29|337|65601|4294967406|23.53|26.83|true|victor garcia|2013-03-01 09:11:58.703264|66.47|history +72|421|65787|4294967391|52.13|8.23|true|wendy ichabod|2013-03-01 09:11:58.703298|37.22|undecided +112|498|65561|4294967365|94.74|20.04|true|quinn allen|2013-03-01 09:11:58.703128|77.75|philosophy +54|448|65650|4294967377|82.76|42.31|false|wendy young|2013-03-01 09:11:58.703151|50.54|history +28|305|65771|4294967474|18.08|49.44|true|irene falkner|2013-03-01 09:11:58.703261|48.97|chemistry +83|308|65686|4294967417|48.37|36.70|false|yuri allen|2013-03-01 09:11:58.703074|32.40|quiet hour +3|394|65744|4294967510|38.04|21.56|false|xavier allen|2013-03-01 09:11:58.703267|50.17|joggying +5|408|65708|4294967498|42.70|21.15|false|quinn falkner|2013-03-01 09:11:58.703237|30.67|zync studies +62|420|65599|4294967306|25.35|41.64|true|bob polk|2013-03-01 09:11:58.703223|84.58|philosophy +116|285|65771|4294967296|65.17|24.37|false|holly allen|2013-03-01 09:11:58.703147|0.40|mathematics +113|379|65682|4294967410|69.40|26.95|false|gabriella underhill|2013-03-01 09:11:58.703163|49.18|industrial engineering +124|333|65606|4294967389|30.62|47.51|false|zach davidson|2013-03-01 09:11:58.703291|90.02|quiet hour +31|493|65579|4294967313|84.95|31.24|false|sarah polk|2013-03-01 09:11:58.703240|4.91|kindergarten +118|313|65726|4294967498|44.21|32.08|true|calvin xylophone|2013-03-01 09:11:58.703189|39.37|forestry +36|394|65702|4294967507|53.76|48.23|false|alice white|2013-03-01 09:11:58.703292|81.35|study skills +96|326|65540|4294967329|86.40|39.84|true|holly garcia|2013-03-01 09:11:58.703226|45.77|education +120|338|65694|4294967424|25.06|33.73|true|ulysses laertes|2013-03-01 09:11:58.703143|15.69|education +62|275|65691|4294967500|29.46|35.94|true|bob ellison|2013-03-01 09:11:58.703270|15.38|religion +106|503|65701|4294967406|74.77|25.45|true|quinn allen|2013-03-01 09:11:58.703226|96.80|topology +6|395|65730|4294967478|6.19|33.53|true|holly xylophone|2013-03-01 09:11:58.703210|24.23|opthamology +61|440|65786|4294967402|70.39|45.54|true|sarah laertes|2013-03-01 09:11:58.703234|54.37|quiet hour +0|504|65690|4294967327|72.29|16.30|true|rachel xylophone|2013-03-01 09:11:58.703319|67.87|debate +93|368|65710|4294967422|7.70|44.54|true|ulysses johnson|2013-03-01 09:11:58.703173|97.85|geology +35|356|65791|4294967541|46.42|6.49|true|ulysses davidson|2013-03-01 09:11:58.703086|79.88|xylophone band +78|430|65729|4294967297|76.93|36.01|false|calvin van buren|2013-03-01 09:11:58.703317|72.39|undecided +73|501|65738|4294967315|76.57|38.86|false|mike underhill|2013-03-01 09:11:58.703192|47.55|quiet hour +116|490|65723|4294967484|78.41|29.16|false|xavier king|2013-03-01 09:11:58.703079|58.10|industrial engineering +121|271|65555|4294967537|67.79|36.20|true|fred miller|2013-03-01 09:11:58.703152|48.07|values clariffication +10|462|65584|4294967516|43.20|41.53|true|fred falkner|2013-03-01 09:11:58.703174|94.77|biology +7|305|65571|4294967408|14.70|9.65|false|ulysses xylophone|2013-03-01 09:11:58.703071|70.57|geology +67|352|65651|4294967313|20.48|16.31|false|fred falkner|2013-03-01 09:11:58.703227|67.04|joggying +87|301|65719|4294967443|12.25|26.23|false|david johnson|2013-03-01 09:11:58.703208|77.93|values clariffication +13|422|65698|4294967349|72.43|28.20|false|sarah quirinius|2013-03-01 09:11:58.703076|34.88|topology +108|344|65605|4294967388|70.32|48.28|true|calvin king|2013-03-01 09:11:58.703156|98.10|topology +47|431|65775|4294967492|67.50|38.18|true|fred quirinius|2013-03-01 09:11:58.703173|40.57|geology +17|414|65695|4294967405|31.68|2.89|true|sarah nixon|2013-03-01 09:11:58.703254|17.05|forestry +78|374|65773|4294967464|85.59|1.68|false|alice steinbeck|2013-03-01 09:11:58.703244|67.02|linguistics +12|510|65668|4294967424|88.65|36.20|true|ulysses brown|2013-03-01 09:11:58.703282|75.09|forestry +102|294|65606|4294967495|42.79|45.29|false|irene robinson|2013-03-01 09:11:58.703079|62.59|zync studies +43|264|65614|4294967415|11.39|45.03|true|calvin carson|2013-03-01 09:11:58.703138|44.20|industrial engineering +23|370|65563|4294967390|9.49|5.50|true|mike brown|2013-03-01 09:11:58.703293|84.57|philosophy +77|327|65753|4294967400|40.34|9.50|false|fred xylophone|2013-03-01 09:11:58.703093|87.48|education +29|375|65757|4294967354|33.50|18.35|true|calvin garcia|2013-03-01 09:11:58.703140|47.91|xylophone band +31|301|65660|4294967512|56.91|22.63|true|rachel johnson|2013-03-01 09:11:58.703113|71.84|xylophone band +63|370|65575|4294967466|89.97|11.35|false|quinn thompson|2013-03-01 09:11:58.703257|96.43|xylophone band +94|295|65747|4294967361|29.50|27.79|false|nick nixon|2013-03-01 09:11:58.703243|21.55|linguistics +26|290|65734|4294967366|61.34|28.69|false|bob underhill|2013-03-01 09:11:58.703227|41.71|kindergarten +49|462|65681|4294967537|37.40|32.23|true|yuri falkner|2013-03-01 09:11:58.703269|64.70|nap time +-2|283|65695|4294967436|4.40|17.87|false|ethan polk|2013-03-01 09:11:58.703249|39.60|debate +120|266|65699|4294967389|2.06|13.81|false|wendy hernandez|2013-03-01 09:11:58.703312|34.58|debate +80|390|65723|4294967522|86.89|19.89|false|irene xylophone|2013-03-01 09:11:58.703199|95.79|philosophy +-2|462|65574|4294967366|4.06|29.84|false|wendy ellison|2013-03-01 09:11:58.703139|46.01|industrial engineering +103|259|65632|4294967449|73.42|36.35|false|jessica zipper|2013-03-01 09:11:58.703248|10.40|joggying +101|451|65744|4294967342|35.08|20.39|true|bob robinson|2013-03-01 09:11:58.703143|70.80|american history +100|306|65642|4294967335|9.84|45.50|false|katie king|2013-03-01 09:11:58.703307|86.84|mathematics +123|443|65681|4294967308|26.80|24.29|true|calvin allen|2013-03-01 09:11:58.703153|87.84|linguistics +45|345|65735|4294967364|96.29|4.74|true|victor polk|2013-03-01 09:11:58.703248|42.36|zync studies +78|256|65586|4294967460|12.97|44.15|false|ethan falkner|2013-03-01 09:11:58.703171|81.51|chemistry +4|292|65589|4294967359|51.94|10.19|true|tom zipper|2013-03-01 09:11:58.703217|66.99|mathematics +71|262|65754|4294967385|17.76|6.77|true|david steinbeck|2013-03-01 09:11:58.703243|7.03|industrial engineering +-1|259|65789|4294967424|59.65|33.60|false|david garcia|2013-03-01 09:11:58.703092|83.21|quiet hour +20|427|65606|4294967312|21.45|17.87|false|jessica miller|2013-03-01 09:11:58.703164|33.41|debate +64|268|65676|4294967328|35.12|24.59|false|gabriella falkner|2013-03-01 09:11:58.703322|61.82|linguistics +79|389|65711|4294967384|34.73|4.55|true|bob miller|2013-03-01 09:11:58.703204|13.21|history +92|336|65620|4294967346|94.14|0.24|true|yuri zipper|2013-03-01 09:11:58.703130|48.96|history +106|510|65788|4294967550|15.18|25.69|true|jessica steinbeck|2013-03-01 09:11:58.703249|14.21|xylophone band +2|454|65675|4294967445|91.59|45.89|false|nick hernandez|2013-03-01 09:11:58.703132|56.08|topology +107|265|65585|4294967545|83.09|9.45|false|ethan brown|2013-03-01 09:11:58.703313|80.40|zync studies +114|414|65733|4294967549|78.61|19.71|true|victor quirinius|2013-03-01 09:11:58.703083|57.66|biology +61|293|65663|4294967479|39.83|48.16|false|victor underhill|2013-03-01 09:11:58.703199|69.29|undecided +15|410|65662|4294967370|68.26|39.56|true|mike davidson|2013-03-01 09:11:58.703112|32.45|geology +37|290|65699|4294967539|59.51|44.24|false|irene van buren|2013-03-01 09:11:58.703288|38.60|industrial engineering +25|416|65549|4294967376|16.43|33.95|false|quinn white|2013-03-01 09:11:58.703216|70.58|chemistry +87|438|65710|4294967363|14.42|6.32|true|fred miller|2013-03-01 09:11:58.703211|28.68|debate +1|506|65656|4294967513|12.41|9.26|false|fred polk|2013-03-01 09:11:58.703093|53.41|geology +22|353|65646|4294967325|5.76|42.40|false|fred young|2013-03-01 09:11:58.703075|7.03|kindergarten +84|286|65536|4294967490|33.64|22.65|false|david johnson|2013-03-01 09:11:58.703279|93.68|zync studies +19|357|65601|4294967337|5.00|36.77|true|david brown|2013-03-01 09:11:58.703305|8.06|wind surfing +85|461|65569|4294967314|50.86|5.31|false|nick van buren|2013-03-01 09:11:58.703246|1.59|forestry +79|432|65775|4294967406|66.02|29.56|true|rachel young|2013-03-01 09:11:58.703169|15.23|history +24|339|65539|4294967328|73.35|2.20|false|oscar johnson|2013-03-01 09:11:58.703184|16.87|religion +73|427|65734|4294967379|45.23|41.98|true|yuri johnson|2013-03-01 09:11:58.703161|92.97|linguistics +64|381|65628|4294967547|99.64|33.77|true|priscilla carson|2013-03-01 09:11:58.703164|18.74|american history +123|386|65538|4294967337|66.10|6.89|true|ulysses davidson|2013-03-01 09:11:58.703222|83.82|quiet hour +4|342|65734|4294967504|86.23|41.34|false|david laertes|2013-03-01 09:11:58.703303|93.99|opthamology +10|340|65781|4294967478|84.96|22.70|true|luke falkner|2013-03-01 09:11:58.703243|40.12|joggying +36|351|65666|4294967360|66.34|1.42|true|katie young|2013-03-01 09:11:58.703133|8.65|mathematics +102|268|65614|4294967300|57.82|49.88|false|holly davidson|2013-03-01 09:11:58.703155|61.16|nap time +23|287|65725|4294967377|41.52|34.76|false|irene ellison|2013-03-01 09:11:58.703129|91.22|values clariffication +26|297|65553|4294967484|72.56|11.87|false|victor xylophone|2013-03-01 09:11:58.703256|54.80|american history +35|278|65582|4294967314|32.26|43.95|true|bob quirinius|2013-03-01 09:11:58.703258|94.16|joggying +92|443|65724|4294967383|96.99|47.82|false|calvin king|2013-03-01 09:11:58.703117|37.46|joggying +62|288|65764|4294967551|8.29|38.33|true|ethan zipper|2013-03-01 09:11:58.703209|56.54|joggying +104|286|65614|4294967432|1.90|41.73|true|wendy ovid|2013-03-01 09:11:58.703276|28.40|forestry +91|288|65789|4294967465|26.35|47.27|false|jessica brown|2013-03-01 09:11:58.703122|43.55|religion +84|399|65686|4294967447|48.27|22.15|true|bob thompson|2013-03-01 09:11:58.703290|82.94|forestry +17|387|65735|4294967416|81.41|32.20|true|katie davidson|2013-03-01 09:11:58.703071|88.08|wind surfing +84|458|65647|4294967439|79.73|38.59|false|xavier ellison|2013-03-01 09:11:58.703219|44.96|american history +15|421|65706|4294967532|28.23|34.56|false|sarah thompson|2013-03-01 09:11:58.703147|6.54|geology +9|288|65598|4294967475|35.46|24.35|false|nick laertes|2013-03-01 09:11:58.703100|81.35|quiet hour +90|378|65778|4294967352|52.09|40.45|false|sarah falkner|2013-03-01 09:11:58.703267|4.08|wind surfing +46|265|65556|4294967329|94.56|2.07|true|yuri xylophone|2013-03-01 09:11:58.703275|90.83|yard duty +10|300|65635|4294967544|62.24|3.88|true|mike garcia|2013-03-01 09:11:58.703295|25.13|history +60|368|65675|4294967309|80.28|26.32|true|irene robinson|2013-03-01 09:11:58.703248|55.43|nap time +120|321|65574|4294967362|47.24|48.58|false|bob zipper|2013-03-01 09:11:58.703096|42.13|religion +122|261|65654|4294967522|92.59|38.10|false|ulysses laertes|2013-03-01 09:11:58.703185|26.36|history +64|489|65618|4294967418|69.72|13.88|false|ethan underhill|2013-03-01 09:11:58.703214|9.45|kindergarten +17|461|65560|4294967342|98.28|28.99|true|ulysses miller|2013-03-01 09:11:58.703094|5.83|mathematics +123|439|65545|4294967551|87.70|22.43|false|david king|2013-03-01 09:11:58.703282|40.54|values clariffication +55|280|65660|4294967365|91.85|27.50|true|sarah brown|2013-03-01 09:11:58.703087|3.54|industrial engineering +51|419|65703|4294967329|71.61|27.56|false|jessica young|2013-03-01 09:11:58.703191|94.03|linguistics +105|347|65584|4294967408|45.05|27.03|true|luke johnson|2013-03-01 09:11:58.703074|9.84|joggying +73|426|65584|4294967459|39.49|44.82|true|tom allen|2013-03-01 09:11:58.703241|79.44|nap time +95|317|65641|4294967434|90.16|24.62|true|holly white|2013-03-01 09:11:58.703176|38.81|topology +101|391|65705|4294967456|58.46|36.43|false|holly thompson|2013-03-01 09:11:58.703233|14.47|mathematics +114|290|65568|4294967348|31.22|30.50|true|fred thompson|2013-03-01 09:11:58.703273|51.56|joggying +109|329|65696|4294967474|58.07|48.62|false|wendy ichabod|2013-03-01 09:11:58.703128|84.47|forestry +50|500|65687|4294967517|47.89|42.70|true|ulysses hernandez|2013-03-01 09:11:58.703258|74.68|religion +37|342|65679|4294967536|69.97|0.30|false|priscilla zipper|2013-03-01 09:11:58.703079|70.01|geology +33|419|65541|4294967399|49.51|6.32|false|katie laertes|2013-03-01 09:11:58.703104|79.93|xylophone band +35|328|65612|4294967438|50.00|37.43|false|alice miller|2013-03-01 09:11:58.703232|20.65|topology +58|486|65787|4294967426|51.47|45.38|false|david xylophone|2013-03-01 09:11:58.703124|89.50|industrial engineering +48|449|65589|4294967526|51.19|49.81|true|bob young|2013-03-01 09:11:58.703169|62.00|study skills +117|344|65661|4294967397|82.26|15.27|false|rachel thompson|2013-03-01 09:11:58.703324|16.09|values clariffication +112|429|65546|4294967312|1.64|47.62|true|jessica ovid|2013-03-01 09:11:58.703085|29.36|american history +75|416|65625|4294967364|88.24|26.17|true|ulysses xylophone|2013-03-01 09:11:58.703183|39.05|american history +61|493|65766|4294967353|97.42|11.93|true|irene quirinius|2013-03-01 09:11:58.703090|23.72|philosophy +9|421|65722|4294967427|82.73|32.53|true|xavier nixon|2013-03-01 09:11:58.703183|56.53|opthamology +52|352|65556|4294967465|49.63|17.87|true|gabriella laertes|2013-03-01 09:11:58.703254|85.97|nap time +76|300|65654|4294967426|88.83|20.26|false|wendy brown|2013-03-01 09:11:58.703072|39.18|nap time +46|360|65738|4294967437|25.09|30.84|true|tom ovid|2013-03-01 09:11:58.703292|81.53|nap time +9|270|65767|4294967504|48.60|2.43|false|luke ichabod|2013-03-01 09:11:58.703262|43.66|yard duty +48|480|65564|4294967423|92.55|45.00|true|fred quirinius|2013-03-01 09:11:58.703073|80.97|education +50|371|65710|4294967436|17.60|5.39|true|alice falkner|2013-03-01 09:11:58.703190|23.34|debate +62|267|65726|4294967341|30.45|18.99|true|sarah underhill|2013-03-01 09:11:58.703136|12.92|joggying +93|468|65759|4294967505|31.00|40.35|true|jessica johnson|2013-03-01 09:11:58.703115|0.08|history +51|457|65632|4294967429|68.53|17.31|true|fred ellison|2013-03-01 09:11:58.703295|52.29|debate +67|413|65706|4294967368|17.35|11.31|true|irene thompson|2013-03-01 09:11:58.703153|34.02|linguistics +28|400|65688|4294967419|23.45|36.03|false|katie davidson|2013-03-01 09:11:58.703234|91.31|opthamology +80|307|65695|4294967366|47.42|7.58|true|bob nixon|2013-03-01 09:11:58.703093|48.21|religion +48|509|65658|4294967441|48.41|28.97|false|katie quirinius|2013-03-01 09:11:58.703230|21.56|undecided +79|479|65582|4294967339|38.77|19.41|true|katie polk|2013-03-01 09:11:58.703280|32.13|education +17|483|65578|4294967368|48.79|5.40|false|ethan johnson|2013-03-01 09:11:58.703241|33.18|linguistics +71|491|65791|4294967368|91.87|46.94|true|alice miller|2013-03-01 09:11:58.703183|61.58|opthamology +39|421|65711|4294967508|18.93|41.99|false|mike underhill|2013-03-01 09:11:58.703252|12.07|philosophy +40|364|65590|4294967318|10.85|47.16|false|oscar hernandez|2013-03-01 09:11:58.703228|33.22|nap time +113|363|65659|4294967444|31.24|41.17|true|alice zipper|2013-03-01 09:11:58.703174|87.52|zync studies +34|477|65682|4294967358|60.61|30.09|true|bob davidson|2013-03-01 09:11:58.703261|19.55|chemistry +98|359|65543|4294967375|55.71|24.08|false|luke underhill|2013-03-01 09:11:58.703137|51.09|forestry +88|384|65754|4294967458|32.90|23.85|false|quinn steinbeck|2013-03-01 09:11:58.703248|4.59|opthamology +22|461|65543|4294967404|7.40|19.91|false|victor robinson|2013-03-01 09:11:58.703128|32.99|wind surfing +1|458|65719|4294967429|36.92|29.22|true|ethan king|2013-03-01 09:11:58.703077|61.57|biology +60|362|65660|4294967328|10.55|4.03|true|victor xylophone|2013-03-01 09:11:58.703162|84.35|opthamology +18|430|65704|4294967515|94.05|27.31|false|priscilla ovid|2013-03-01 09:11:58.703077|82.28|opthamology +119|499|65554|4294967532|30.92|45.31|false|victor brown|2013-03-01 09:11:58.703203|72.90|biology +77|400|65601|4294967495|3.16|39.12|true|holly king|2013-03-01 09:11:58.703182|62.80|xylophone band +40|282|65783|4294967487|62.70|47.93|false|wendy steinbeck|2013-03-01 09:11:58.703147|55.42|quiet hour +23|496|65658|4294967437|51.17|13.21|true|quinn van buren|2013-03-01 09:11:58.703296|91.85|chemistry +96|337|65603|4294967441|63.44|15.24|true|quinn white|2013-03-01 09:11:58.703237|43.37|undecided +22|376|65600|4294967382|73.46|37.32|false|sarah ovid|2013-03-01 09:11:58.703198|77.39|kindergarten +107|455|65780|4294967432|8.61|22.76|false|zach allen|2013-03-01 09:11:58.703171|27.62|undecided +98|292|65774|4294967439|21.08|31.32|true|yuri quirinius|2013-03-01 09:11:58.703275|82.02|religion +17|440|65569|4294967391|88.19|13.91|false|oscar king|2013-03-01 09:11:58.703278|74.79|quiet hour +66|353|65742|4294967311|65.55|33.22|false|oscar allen|2013-03-01 09:11:58.703112|20.94|kindergarten +14|388|65544|4294967344|89.96|25.86|false|irene laertes|2013-03-01 09:11:58.703083|51.39|kindergarten +5|489|65543|4294967471|67.72|35.67|false|fred laertes|2013-03-01 09:11:58.703217|5.10|opthamology +11|297|65583|4294967452|8.43|14.02|true|tom underhill|2013-03-01 09:11:58.703213|71.90|study skills +120|473|65770|4294967447|54.94|19.08|true|rachel nixon|2013-03-01 09:11:58.703099|88.67|wind surfing +43|484|65684|4294967543|84.35|21.58|true|rachel davidson|2013-03-01 09:11:58.703104|4.62|american history +66|276|65695|4294967361|90.42|7.81|true|sarah king|2013-03-01 09:11:58.703284|3.22|philosophy +17|376|65708|4294967302|17.92|36.29|true|calvin quirinius|2013-03-01 09:11:58.703151|2.66|philosophy +-1|396|65736|4294967542|79.84|48.56|false|victor king|2013-03-01 09:11:58.703086|30.68|values clariffication +102|389|65640|4294967491|8.47|38.74|true|luke zipper|2013-03-01 09:11:58.703300|58.89|undecided +29|302|65711|4294967391|43.90|25.14|false|alice brown|2013-03-01 09:11:58.703081|84.37|linguistics +109|449|65614|4294967512|55.36|26.51|true|luke ovid|2013-03-01 09:11:58.703102|11.20|industrial engineering +44|381|65557|4294967520|90.28|30.81|true|victor young|2013-03-01 09:11:58.703315|30.96|nap time +113|377|65576|4294967395|8.18|45.29|false|gabriella king|2013-03-01 09:11:58.703318|49.18|study skills +43|423|65688|4294967385|46.01|18.47|true|zach davidson|2013-03-01 09:11:58.703308|97.09|philosophy +56|485|65633|4294967308|80.09|22.33|false|katie brown|2013-03-01 09:11:58.703144|95.06|quiet hour +110|498|65577|4294967351|59.63|40.83|true|irene king|2013-03-01 09:11:58.703142|61.43|history +31|259|65710|4294967480|35.29|28.62|false|wendy zipper|2013-03-01 09:11:58.703111|49.91|philosophy +14|446|65772|4294967543|53.92|25.84|true|sarah brown|2013-03-01 09:11:58.703273|38.05|biology +108|426|65588|4294967438|31.00|45.02|true|luke miller|2013-03-01 09:11:58.703293|11.90|zync studies +71|292|65558|4294967432|2.01|9.03|true|luke brown|2013-03-01 09:11:58.703309|7.61|opthamology +67|319|65715|4294967427|35.42|22.97|false|ethan king|2013-03-01 09:11:58.703106|84.96|biology +54|329|65644|4294967424|14.83|11.82|false|wendy young|2013-03-01 09:11:58.703108|51.29|values clariffication +76|295|65730|4294967405|55.88|13.40|true|irene xylophone|2013-03-01 09:11:58.703092|6.06|kindergarten +122|504|65548|4294967455|63.88|15.72|false|ulysses carson|2013-03-01 09:11:58.703166|87.50|chemistry +2|407|65676|4294967549|96.82|37.50|false|holly van buren|2013-03-01 09:11:58.703115|24.48|geology +15|461|65582|4294967462|21.78|34.12|false|nick underhill|2013-03-01 09:11:58.703219|3.11|chemistry +45|399|65762|4294967354|23.23|40.13|false|sarah hernandez|2013-03-01 09:11:58.703081|70.02|joggying +12|360|65685|4294967406|83.19|28.47|true|jessica quirinius|2013-03-01 09:11:58.703320|9.82|quiet hour +25|311|65721|4294967446|34.53|1.32|true|jessica white|2013-03-01 09:11:58.703200|46.13|mathematics +109|416|65580|4294967497|30.72|1.94|true|david zipper|2013-03-01 09:11:58.703299|41.81|quiet hour +87|411|65686|4294967307|53.74|32.62|false|xavier ichabod|2013-03-01 09:11:58.703180|81.13|opthamology +26|347|65677|4294967510|34.48|33.09|true|david carson|2013-03-01 09:11:58.703270|43.56|industrial engineering +29|462|65687|4294967415|9.62|4.10|true|ulysses nixon|2013-03-01 09:11:58.703098|63.60|opthamology +37|264|65698|4294967358|19.49|32.77|true|sarah young|2013-03-01 09:11:58.703288|75.95|industrial engineering +99|277|65573|4294967531|33.42|33.67|true|oscar thompson|2013-03-01 09:11:58.703090|78.83|wind surfing +90|272|65760|4294967329|3.21|21.15|false|zach ovid|2013-03-01 09:11:58.703098|94.91|nap time +69|336|65649|4294967448|8.06|23.57|true|david zipper|2013-03-01 09:11:58.703271|50.03|chemistry +102|385|65542|4294967420|94.58|27.08|true|xavier brown|2013-03-01 09:11:58.703096|30.42|values clariffication +115|324|65568|4294967465|95.63|49.26|true|priscilla ellison|2013-03-01 09:11:58.703191|72.46|nap time +21|355|65648|4294967351|57.76|9.75|false|priscilla zipper|2013-03-01 09:11:58.703268|13.26|chemistry +38|401|65725|4294967444|28.85|43.56|true|rachel nixon|2013-03-01 09:11:58.703322|9.15|debate +1|422|65666|4294967401|76.72|42.66|true|ulysses white|2013-03-01 09:11:58.703095|64.04|religion +-1|323|65669|4294967356|83.97|23.40|true|nick king|2013-03-01 09:11:58.703242|95.16|philosophy +45|391|65715|4294967505|12.41|31.59|false|luke white|2013-03-01 09:11:58.703257|72.79|american history +48|481|65622|4294967431|56.05|28.82|true|luke brown|2013-03-01 09:11:58.703254|71.80|geology +103|369|65583|4294967325|20.85|13.06|true|quinn nixon|2013-03-01 09:11:58.703097|57.91|forestry +77|381|65687|4294967368|33.29|32.55|true|calvin steinbeck|2013-03-01 09:11:58.703128|43.74|education +56|259|65771|4294967360|99.71|45.84|true|bob hernandez|2013-03-01 09:11:58.703200|0.99|geology +0|275|65756|4294967453|14.22|35.26|true|holly allen|2013-03-01 09:11:58.703180|20.67|linguistics +86|441|65667|4294967514|51.68|16.77|false|priscilla ichabod|2013-03-01 09:11:58.703225|8.25|philosophy +-1|474|65578|4294967404|30.83|34.56|false|david nixon|2013-03-01 09:11:58.703316|70.15|nap time +1|261|65782|4294967438|95.52|33.13|true|yuri laertes|2013-03-01 09:11:58.703256|50.67|zync studies +40|381|65704|4294967330|32.05|46.97|true|irene white|2013-03-01 09:11:58.703272|70.89|undecided +72|305|65711|4294967322|20.36|16.70|true|quinn robinson|2013-03-01 09:11:58.703243|83.00|american history +43|347|65639|4294967394|44.61|19.60|true|sarah johnson|2013-03-01 09:11:58.703288|14.40|values clariffication +72|356|65586|4294967301|65.13|49.89|false|zach johnson|2013-03-01 09:11:58.703211|36.98|industrial engineering +57|491|65788|4294967360|63.57|43.54|false|tom brown|2013-03-01 09:11:58.703241|59.21|linguistics +66|336|65753|4294967522|13.39|1.62|true|tom ellison|2013-03-01 09:11:58.703109|25.83|wind surfing +18|295|65623|4294967331|31.20|23.04|false|victor van buren|2013-03-01 09:11:58.703138|94.47|nap time +63|474|65770|4294967394|23.89|30.48|true|fred johnson|2013-03-01 09:11:58.703289|85.88|history +117|415|65606|4294967465|41.76|14.09|true|sarah ellison|2013-03-01 09:11:58.703289|19.63|biology +104|467|65658|4294967480|69.47|24.01|false|calvin steinbeck|2013-03-01 09:11:58.703249|16.93|mathematics +44|336|65718|4294967436|60.04|22.67|false|ulysses underhill|2013-03-01 09:11:58.703144|93.29|study skills +102|341|65587|4294967366|30.52|37.48|true|nick brown|2013-03-01 09:11:58.703194|65.49|american history +47|440|65717|4294967530|64.03|46.51|true|zach polk|2013-03-01 09:11:58.703121|48.02|values clariffication +48|478|65605|4294967299|85.23|41.07|true|irene king|2013-03-01 09:11:58.703085|24.15|opthamology +103|465|65753|4294967369|16.22|5.41|true|priscilla van buren|2013-03-01 09:11:58.703320|7.98|nap time +7|357|65620|4294967474|56.65|23.27|false|bob johnson|2013-03-01 09:11:58.703300|96.98|religion +3|437|65651|4294967331|34.20|33.34|false|quinn davidson|2013-03-01 09:11:58.703138|83.65|chemistry +91|467|65630|4294967456|15.62|28.31|false|priscilla underhill|2013-03-01 09:11:58.703081|3.83|linguistics +10|387|65706|4294967534|69.13|0.68|true|irene quirinius|2013-03-01 09:11:58.703252|51.83|joggying +44|295|65540|4294967432|0.85|28.56|true|david ellison|2013-03-01 09:11:58.703075|66.25|forestry +40|485|65587|4294967381|10.71|47.80|true|rachel young|2013-03-01 09:11:58.703255|60.25|xylophone band +79|365|65734|4294967533|99.89|47.48|false|bob ichabod|2013-03-01 09:11:58.703120|35.10|industrial engineering +86|284|65542|4294967434|18.78|40.69|true|rachel polk|2013-03-01 09:11:58.703324|23.85|quiet hour +18|307|65561|4294967414|40.56|5.84|false|ethan laertes|2013-03-01 09:11:58.703106|83.08|xylophone band +83|505|65536|4294967451|35.46|6.36|false|oscar steinbeck|2013-03-01 09:11:58.703319|4.34|opthamology +42|447|65610|4294967467|69.06|13.24|false|fred white|2013-03-01 09:11:58.703081|96.68|debate +28|353|65789|4294967335|57.13|19.93|false|tom ichabod|2013-03-01 09:11:58.703163|86.61|nap time +62|368|65674|4294967489|40.18|18.41|true|priscilla van buren|2013-03-01 09:11:58.703113|59.10|industrial engineering +22|263|65636|4294967518|43.05|46.40|false|ethan ichabod|2013-03-01 09:11:58.703275|83.64|industrial engineering +1|277|65620|4294967400|15.55|15.32|false|fred van buren|2013-03-01 09:11:58.703171|20.24|geology +34|298|65729|4294967539|6.41|38.84|false|calvin polk|2013-03-01 09:11:58.703146|17.13|geology +102|457|65737|4294967490|58.84|28.09|false|tom miller|2013-03-01 09:11:58.703220|1.24|yard duty +5|434|65629|4294967533|75.03|10.25|true|holly falkner|2013-03-01 09:11:58.703089|33.18|industrial engineering +82|485|65639|4294967382|31.08|15.64|false|yuri thompson|2013-03-01 09:11:58.703118|79.10|study skills +77|487|65611|4294967309|21.63|29.18|false|fred king|2013-03-01 09:11:58.703130|21.43|chemistry +23|311|65751|4294967329|26.04|47.15|false|gabriella ichabod|2013-03-01 09:11:58.703303|41.83|chemistry +75|336|65732|4294967318|48.65|39.40|false|xavier underhill|2013-03-01 09:11:58.703247|12.03|biology +99|322|65591|4294967483|43.47|2.07|false|katie young|2013-03-01 09:11:58.703259|96.60|religion +35|433|65786|4294967349|69.25|21.02|false|jessica laertes|2013-03-01 09:11:58.703099|27.76|geology +32|401|65707|4294967323|78.67|42.54|true|rachel van buren|2013-03-01 09:11:58.703197|52.24|opthamology +41|316|65541|4294967428|54.78|44.91|false|yuri polk|2013-03-01 09:11:58.703165|68.09|linguistics +78|394|65673|4294967405|8.42|43.32|false|wendy polk|2013-03-01 09:11:58.703184|82.72|linguistics +98|297|65712|4294967503|19.34|23.85|false|gabriella brown|2013-03-01 09:11:58.703087|98.79|opthamology +69|269|65720|4294967384|77.67|43.03|true|tom falkner|2013-03-01 09:11:58.703316|11.19|yard duty +93|415|65625|4294967326|84.74|32.86|false|fred ellison|2013-03-01 09:11:58.703318|14.01|geology +64|317|65647|4294967545|36.88|1.60|false|bob ovid|2013-03-01 09:11:58.703145|33.25|kindergarten +6|426|65599|4294967301|13.07|6.67|false|wendy carson|2013-03-01 09:11:58.703107|28.08|xylophone band +29|377|65717|4294967329|47.67|12.40|true|nick carson|2013-03-01 09:11:58.703245|24.44|undecided +30|377|65759|4294967460|10.37|26.05|true|luke van buren|2013-03-01 09:11:58.703168|41.70|joggying +98|302|65647|4294967397|64.11|22.69|false|rachel van buren|2013-03-01 09:11:58.703260|50.34|forestry +44|395|65568|4294967541|92.90|24.63|true|victor garcia|2013-03-01 09:11:58.703125|10.88|opthamology +96|392|65784|4294967550|8.13|14.17|true|ethan young|2013-03-01 09:11:58.703325|17.21|mathematics +115|419|65609|4294967354|67.24|35.58|true|xavier polk|2013-03-01 09:11:58.703150|28.35|religion +45|390|65715|4294967490|91.17|34.85|false|oscar brown|2013-03-01 09:11:58.703262|68.48|religion +113|380|65735|4294967332|7.38|2.22|true|irene van buren|2013-03-01 09:11:58.703181|4.74|industrial engineering +46|438|65787|4294967307|89.09|5.94|false|rachel xylophone|2013-03-01 09:11:58.703102|45.89|forestry +69|274|65780|4294967472|15.38|48.61|true|david king|2013-03-01 09:11:58.703152|11.58|religion +115|334|65629|4294967524|54.61|1.33|true|nick underhill|2013-03-01 09:11:58.703104|94.78|topology +6|313|65549|4294967494|27.79|45.21|false|luke carson|2013-03-01 09:11:58.703295|19.93|philosophy +119|430|65760|4294967431|50.17|14.12|true|luke falkner|2013-03-01 09:11:58.703321|0.55|yard duty +70|417|65692|4294967337|77.34|10.95|true|jessica young|2013-03-01 09:11:58.703083|36.51|wind surfing +9|362|65669|4294967548|5.47|32.94|true|mike robinson|2013-03-01 09:11:58.703185|97.77|quiet hour +68|285|65674|4294967420|38.66|16.70|true|david nixon|2013-03-01 09:11:58.703151|5.07|kindergarten +44|300|65557|4294967410|45.89|1.84|false|zach quirinius|2013-03-01 09:11:58.703154|94.61|kindergarten +60|278|65557|4294967540|77.96|45.71|false|yuri steinbeck|2013-03-01 09:11:58.703209|2.45|geology +37|320|65678|4294967549|3.21|30.35|true|yuri carson|2013-03-01 09:11:58.703094|3.39|nap time +76|340|65742|4294967440|89.33|24.35|true|gabriella nixon|2013-03-01 09:11:58.703107|18.12|education +54|450|65631|4294967361|5.96|5.91|false|holly johnson|2013-03-01 09:11:58.703321|63.25|mathematics +14|326|65698|4294967487|35.71|11.75|true|zach steinbeck|2013-03-01 09:11:58.703306|62.01|opthamology +35|373|65752|4294967534|55.51|37.65|false|zach nixon|2013-03-01 09:11:58.703159|82.44|american history +54|431|65755|4294967532|18.62|29.02|false|ulysses carson|2013-03-01 09:11:58.703317|97.96|values clariffication +27|263|65782|4294967532|23.63|30.74|false|victor ichabod|2013-03-01 09:11:58.703324|17.09|wind surfing +109|362|65763|4294967405|80.02|18.10|true|priscilla garcia|2013-03-01 09:11:58.703072|50.26|linguistics +119|391|65776|4294967454|59.88|1.75|false|nick ichabod|2013-03-01 09:11:58.703199|38.30|xylophone band +19|349|65611|4294967364|89.72|47.17|false|rachel ichabod|2013-03-01 09:11:58.703173|76.88|geology +123|260|65652|4294967534|70.66|49.82|false|jessica johnson|2013-03-01 09:11:58.703083|22.49|nap time +32|287|65655|4294967359|94.27|23.04|true|quinn zipper|2013-03-01 09:11:58.703210|46.81|history +71|280|65743|4294967389|27.81|44.29|false|quinn white|2013-03-01 09:11:58.703166|28.96|history +21|273|65541|4294967337|97.51|32.01|true|alice thompson|2013-03-01 09:11:58.703077|99.10|philosophy +39|506|65728|4294967544|82.19|27.96|false|bob steinbeck|2013-03-01 09:11:58.703193|5.05|undecided +41|414|65720|4294967316|9.10|9.15|false|jessica davidson|2013-03-01 09:11:58.703108|98.36|education +47|316|65731|4294967470|97.37|15.54|false|victor ichabod|2013-03-01 09:11:58.703264|82.37|geology +89|336|65645|4294967303|35.19|30.77|false|alice underhill|2013-03-01 09:11:58.703222|35.65|nap time +40|461|65603|4294967399|79.80|39.72|true|wendy van buren|2013-03-01 09:11:58.703231|97.74|undecided +117|289|65593|4294967540|95.53|37.94|false|gabriella underhill|2013-03-01 09:11:58.703101|54.65|debate +114|295|65553|4294967311|65.22|11.94|true|katie allen|2013-03-01 09:11:58.703249|89.02|xylophone band +97|495|65648|4294967368|32.62|28.27|true|bob xylophone|2013-03-01 09:11:58.703294|10.76|values clariffication +61|421|65536|4294967489|26.32|22.25|true|priscilla white|2013-03-01 09:11:58.703203|80.26|history +18|398|65785|4294967336|32.69|0.32|false|alice ichabod|2013-03-01 09:11:58.703267|95.46|xylophone band +75|505|65662|4294967384|93.63|1.83|true|ethan ovid|2013-03-01 09:11:58.703219|80.83|forestry +0|260|65753|4294967315|3.23|48.98|true|katie ichabod|2013-03-01 09:11:58.703283|80.09|quiet hour +109|415|65637|4294967508|30.48|13.07|true|rachel miller|2013-03-01 09:11:58.703322|80.93|religion +101|460|65624|4294967440|49.52|41.56|true|ethan ovid|2013-03-01 09:11:58.703292|51.29|mathematics +111|411|65581|4294967361|73.76|16.06|false|xavier steinbeck|2013-03-01 09:11:58.703181|30.25|education +8|456|65740|4294967398|61.74|2.73|false|victor laertes|2013-03-01 09:11:58.703311|25.95|chemistry +109|418|65774|4294967337|45.02|35.81|true|holly polk|2013-03-01 09:11:58.703263|37.73|religion +18|361|65617|4294967549|65.26|2.12|true|fred carson|2013-03-01 09:11:58.703168|45.69|kindergarten +50|467|65689|4294967311|50.61|22.80|true|irene king|2013-03-01 09:11:58.703316|28.63|xylophone band +56|313|65637|4294967427|99.84|21.46|false|sarah white|2013-03-01 09:11:58.703284|59.78|yard duty +62|409|65773|4294967539|26.42|9.61|true|luke van buren|2013-03-01 09:11:58.703115|39.98|industrial engineering +80|364|65678|4294967493|78.28|27.80|true|calvin brown|2013-03-01 09:11:58.703237|11.73|xylophone band +19|284|65688|4294967439|40.85|18.55|false|zach falkner|2013-03-01 09:11:58.703120|27.72|biology +123|363|65723|4294967535|31.75|46.97|false|victor zipper|2013-03-01 09:11:58.703238|47.12|mathematics +114|453|65558|4294967466|49.74|20.26|false|yuri falkner|2013-03-01 09:11:58.703204|97.01|biology +35|389|65604|4294967497|77.75|15.65|true|yuri falkner|2013-03-01 09:11:58.703209|60.52|nap time +115|469|65695|4294967483|99.31|29.48|true|priscilla ichabod|2013-03-01 09:11:58.703265|53.50|mathematics +53|486|65758|4294967419|46.99|42.08|false|victor carson|2013-03-01 09:11:58.703257|95.33|chemistry +79|469|65692|4294967538|96.85|3.55|true|rachel johnson|2013-03-01 09:11:58.703090|5.46|nap time +112|490|65790|4294967464|77.97|24.24|true|nick brown|2013-03-01 09:11:58.703167|4.41|kindergarten +106|470|65728|4294967504|14.78|30.11|true|fred king|2013-03-01 09:11:58.703107|26.06|wind surfing +108|371|65671|4294967309|32.30|10.33|false|mike ichabod|2013-03-01 09:11:58.703194|69.22|wind surfing +1|505|65788|4294967433|61.43|3.98|false|mike white|2013-03-01 09:11:58.703190|11.65|wind surfing +35|405|65719|4294967533|99.72|39.54|true|quinn hernandez|2013-03-01 09:11:58.703229|62.67|quiet hour +73|395|65562|4294967453|41.29|48.50|false|jessica xylophone|2013-03-01 09:11:58.703199|44.72|forestry +90|318|65676|4294967347|49.98|21.45|true|ethan thompson|2013-03-01 09:11:58.703251|24.94|kindergarten +56|301|65744|4294967383|39.15|34.52|true|nick quirinius|2013-03-01 09:11:58.703307|90.42|wind surfing +34|446|65784|4294967371|48.50|0.04|false|tom young|2013-03-01 09:11:58.703216|2.33|opthamology +-2|277|65710|4294967388|95.54|40.00|false|jessica zipper|2013-03-01 09:11:58.703292|22.32|geology +96|307|65626|4294967467|84.54|2.77|false|ulysses zipper|2013-03-01 09:11:58.703214|77.26|wind surfing +62|336|65588|4294967511|96.35|25.32|false|alice laertes|2013-03-01 09:11:58.703176|87.01|xylophone band +122|435|65744|4294967374|64.04|47.50|false|gabriella davidson|2013-03-01 09:11:58.703221|91.98|kindergarten +31|277|65749|4294967391|76.35|23.64|true|david brown|2013-03-01 09:11:58.703270|77.55|kindergarten +44|492|65787|4294967395|95.04|18.83|true|jessica polk|2013-03-01 09:11:58.703070|40.48|american history +25|493|65703|4294967420|35.46|12.09|false|oscar brown|2013-03-01 09:11:58.703296|93.49|nap time +85|375|65757|4294967326|40.80|31.80|false|nick white|2013-03-01 09:11:58.703242|71.15|undecided +19|299|65735|4294967373|87.06|38.25|true|fred zipper|2013-03-01 09:11:58.703254|19.53|american history +98|422|65656|4294967467|34.95|24.43|true|katie white|2013-03-01 09:11:58.703176|8.34|geology +-3|432|65646|4294967492|0.83|27.18|true|oscar davidson|2013-03-01 09:11:58.703071|56.11|linguistics +75|452|65730|4294967326|44.15|11.32|false|bob xylophone|2013-03-01 09:11:58.703134|63.18|religion +102|319|65779|4294967514|66.66|37.38|true|gabriella van buren|2013-03-01 09:11:58.703291|83.39|nap time +55|267|65676|4294967441|26.90|38.20|true|ulysses garcia|2013-03-01 09:11:58.703259|62.93|religion +111|491|65751|4294967323|92.95|18.96|false|nick van buren|2013-03-01 09:11:58.703113|35.17|geology +112|347|65714|4294967444|71.61|2.45|false|calvin underhill|2013-03-01 09:11:58.703230|84.17|wind surfing +124|290|65560|4294967329|60.62|5.16|true|jessica falkner|2013-03-01 09:11:58.703082|0.99|opthamology +29|461|65541|4294967466|4.22|47.04|true|nick van buren|2013-03-01 09:11:58.703147|28.09|zync studies +25|440|65783|4294967492|84.73|37.56|false|ethan king|2013-03-01 09:11:58.703240|63.80|industrial engineering +115|439|65791|4294967470|33.97|44.40|false|fred ovid|2013-03-01 09:11:58.703186|25.71|debate +102|294|65623|4294967305|87.14|37.17|false|victor ichabod|2013-03-01 09:11:58.703313|15.70|education +60|341|65608|4294967481|56.50|13.63|true|victor brown|2013-03-01 09:11:58.703105|7.34|industrial engineering +101|394|65717|4294967401|58.04|37.69|true|priscilla allen|2013-03-01 09:11:58.703123|77.27|chemistry +94|415|65738|4294967422|55.86|8.18|true|david brown|2013-03-01 09:11:58.703092|14.38|philosophy +94|431|65724|4294967395|79.76|43.27|false|yuri ichabod|2013-03-01 09:11:58.703287|75.22|chemistry +5|271|65737|4294967541|41.25|22.04|false|mike xylophone|2013-03-01 09:11:58.703228|71.62|linguistics +45|324|65587|4294967300|3.84|11.32|false|wendy miller|2013-03-01 09:11:58.703156|9.10|religion +28|282|65605|4294967493|20.27|40.77|false|fred xylophone|2013-03-01 09:11:58.703267|75.39|chemistry +93|484|65767|4294967472|12.22|41.75|false|mike polk|2013-03-01 09:11:58.703213|61.50|nap time +91|270|65660|4294967525|48.74|8.96|true|bob nixon|2013-03-01 09:11:58.703203|87.21|opthamology +85|292|65788|4294967367|54.43|26.22|true|alice ichabod|2013-03-01 09:11:58.703148|75.66|history +13|449|65571|4294967476|6.71|48.33|false|victor xylophone|2013-03-01 09:11:58.703310|53.39|linguistics +25|504|65753|4294967472|36.35|26.60|false|priscilla miller|2013-03-01 09:11:58.703147|41.61|forestry +109|270|65663|4294967316|32.19|40.43|false|rachel xylophone|2013-03-01 09:11:58.703313|98.83|mathematics +82|281|65666|4294967473|40.98|8.05|true|gabriella quirinius|2013-03-01 09:11:58.703193|95.67|industrial engineering +22|393|65570|4294967534|97.71|34.63|true|katie brown|2013-03-01 09:11:58.703113|68.09|study skills +33|453|65564|4294967343|88.90|2.21|false|holly ichabod|2013-03-01 09:11:58.703231|48.69|forestry +119|288|65685|4294967314|40.34|6.60|false|mike zipper|2013-03-01 09:11:58.703256|8.35|study skills +66|346|65729|4294967548|94.88|16.88|false|holly underhill|2013-03-01 09:11:58.703168|16.05|religion +31|361|65758|4294967413|53.03|23.31|true|xavier thompson|2013-03-01 09:11:58.703194|7.30|joggying +21|412|65709|4294967480|48.15|42.41|false|ulysses underhill|2013-03-01 09:11:58.703261|26.83|history +55|369|65570|4294967421|14.58|19.41|true|ethan xylophone|2013-03-01 09:11:58.703112|14.27|wind surfing +69|322|65577|4294967437|36.08|31.06|true|katie robinson|2013-03-01 09:11:58.703297|40.63|values clariffication +72|378|65606|4294967377|76.44|5.39|false|priscilla ovid|2013-03-01 09:11:58.703101|85.38|opthamology +10|393|65651|4294967312|46.16|43.08|true|nick ovid|2013-03-01 09:11:58.703258|99.00|education +32|509|65732|4294967307|37.73|10.74|true|holly underhill|2013-03-01 09:11:58.703152|2.17|religion +14|474|65565|4294967307|16.95|14.09|false|gabriella underhill|2013-03-01 09:11:58.703128|83.20|study skills +-1|378|65634|4294967312|24.54|15.51|false|victor xylophone|2013-03-01 09:11:58.703296|19.57|wind surfing +57|387|65586|4294967475|67.56|0.26|true|katie hernandez|2013-03-01 09:11:58.703215|41.89|values clariffication +89|304|65733|4294967521|46.54|40.83|false|gabriella brown|2013-03-01 09:11:58.703109|1.43|debate +22|398|65697|4294967387|14.95|2.55|true|bob garcia|2013-03-01 09:11:58.703266|91.44|mathematics +106|473|65616|4294967427|32.25|3.26|true|luke ovid|2013-03-01 09:11:58.703258|2.10|quiet hour +100|295|65575|4294967479|90.67|8.11|false|rachel davidson|2013-03-01 09:11:58.703319|76.70|linguistics +52|429|65769|4294967443|45.09|39.71|false|mike steinbeck|2013-03-01 09:11:58.703119|48.43|opthamology +29|506|65550|4294967438|92.43|15.71|true|ethan thompson|2013-03-01 09:11:58.703268|13.11|study skills +50|422|65696|4294967363|54.57|28.26|true|bob johnson|2013-03-01 09:11:58.703144|70.80|debate +67|258|65753|4294967483|51.82|33.42|true|mike underhill|2013-03-01 09:11:58.703186|9.92|opthamology +17|466|65647|4294967461|81.11|16.27|true|ethan garcia|2013-03-01 09:11:58.703230|21.43|chemistry +53|445|65764|4294967443|66.98|49.87|false|nick steinbeck|2013-03-01 09:11:58.703223|1.07|mathematics +74|264|65650|4294967523|49.32|20.25|false|ulysses carson|2013-03-01 09:11:58.703144|5.86|values clariffication +34|415|65731|4294967508|38.83|36.15|false|calvin johnson|2013-03-01 09:11:58.703079|82.94|chemistry +4|416|65595|4294967419|72.41|32.67|true|yuri thompson|2013-03-01 09:11:58.703315|37.43|education +54|463|65548|4294967466|60.68|33.01|true|rachel robinson|2013-03-01 09:11:58.703315|78.57|nap time +9|298|65536|4294967530|50.28|7.77|true|nick davidson|2013-03-01 09:11:58.703132|5.53|education +76|439|65752|4294967459|44.39|17.78|true|gabriella ichabod|2013-03-01 09:11:58.703226|14.65|kindergarten +109|296|65658|4294967534|95.54|3.99|true|katie hernandez|2013-03-01 09:11:58.703210|26.20|topology +22|463|65580|4294967539|21.59|27.90|true|fred hernandez|2013-03-01 09:11:58.703152|11.34|joggying +106|430|65662|4294967532|5.54|31.81|true|katie ichabod|2013-03-01 09:11:58.703281|18.55|mathematics +30|341|65554|4294967544|35.20|41.75|true|bob laertes|2013-03-01 09:11:58.703298|45.86|linguistics +51|428|65602|4294967315|73.64|45.49|false|oscar garcia|2013-03-01 09:11:58.703267|21.70|xylophone band +85|291|65749|4294967444|35.81|34.21|true|luke ichabod|2013-03-01 09:11:58.703209|57.87|zync studies +15|285|65646|4294967393|80.54|23.04|false|rachel laertes|2013-03-01 09:11:58.703262|35.89|geology +47|447|65676|4294967478|17.85|33.00|false|mike brown|2013-03-01 09:11:58.703161|19.61|debate +112|507|65785|4294967513|25.81|2.60|true|fred steinbeck|2013-03-01 09:11:58.703230|36.17|undecided +36|263|65707|4294967379|73.58|2.63|false|victor allen|2013-03-01 09:11:58.703131|94.48|topology +32|486|65754|4294967312|50.44|33.84|true|holly robinson|2013-03-01 09:11:58.703104|69.75|religion +26|372|65749|4294967520|7.16|25.70|true|mike van buren|2013-03-01 09:11:58.703248|56.36|xylophone band +24|467|65672|4294967429|64.92|10.95|false|priscilla steinbeck|2013-03-01 09:11:58.703305|7.08|xylophone band +59|466|65766|4294967455|37.62|36.78|true|zach johnson|2013-03-01 09:11:58.703209|36.63|industrial engineering +86|475|65554|4294967344|31.43|28.87|false|calvin ovid|2013-03-01 09:11:58.703227|72.31|kindergarten +26|421|65652|4294967537|27.93|41.19|true|bob garcia|2013-03-01 09:11:58.703237|8.00|biology +30|318|65695|4294967375|56.10|46.50|true|alice carson|2013-03-01 09:11:58.703183|32.27|mathematics +83|266|65710|4294967384|7.24|20.79|false|calvin falkner|2013-03-01 09:11:58.703141|2.86|yard duty +16|325|65751|4294967441|25.63|0.33|true|wendy allen|2013-03-01 09:11:58.703264|72.17|philosophy +77|471|65756|4294967545|5.94|40.46|false|yuri king|2013-03-01 09:11:58.703144|99.64|history +94|313|65687|4294967426|72.92|38.17|false|calvin hernandez|2013-03-01 09:11:58.703273|33.30|nap time +105|280|65593|4294967529|96.43|23.26|true|david falkner|2013-03-01 09:11:58.703236|92.99|kindergarten +4|257|65572|4294967411|79.15|36.77|false|ethan king|2013-03-01 09:11:58.703190|31.10|american history +3|427|65595|4294967329|29.01|7.85|true|rachel polk|2013-03-01 09:11:58.703072|93.30|geology +30|298|65713|4294967547|13.44|28.01|false|victor hernandez|2013-03-01 09:11:58.703236|12.55|debate +4|433|65730|4294967406|69.36|40.67|true|irene ichabod|2013-03-01 09:11:58.703322|76.97|education +45|308|65770|4294967514|77.88|36.41|true|tom underhill|2013-03-01 09:11:58.703190|48.90|nap time +50|510|65770|4294967426|84.04|35.49|false|irene young|2013-03-01 09:11:58.703303|32.32|xylophone band +28|466|65726|4294967520|63.21|26.26|false|victor king|2013-03-01 09:11:58.703256|93.99|values clariffication +95|323|65701|4294967304|81.69|5.77|true|luke white|2013-03-01 09:11:58.703117|15.87|education +63|399|65651|4294967430|30.71|18.97|false|irene van buren|2013-03-01 09:11:58.703084|69.03|opthamology +64|460|65630|4294967421|0.89|40.24|true|bob king|2013-03-01 09:11:58.703152|50.57|undecided +64|482|65658|4294967525|17.33|21.36|false|fred van buren|2013-03-01 09:11:58.703265|63.12|chemistry +-1|256|65604|4294967443|40.97|49.08|true|fred quirinius|2013-03-01 09:11:58.703280|61.56|opthamology +10|303|65618|4294967517|14.75|1.98|false|xavier ellison|2013-03-01 09:11:58.703248|62.81|zync studies +95|399|65779|4294967541|58.89|7.40|false|alice brown|2013-03-01 09:11:58.703208|55.41|biology +52|335|65556|4294967436|98.71|17.32|true|calvin garcia|2013-03-01 09:11:58.703106|46.14|quiet hour +69|334|65665|4294967384|4.49|14.12|true|nick brown|2013-03-01 09:11:58.703100|6.48|topology +81|407|65537|4294967409|82.09|20.41|false|yuri white|2013-03-01 09:11:58.703118|94.87|philosophy +14|273|65760|4294967341|36.91|18.16|true|calvin ichabod|2013-03-01 09:11:58.703105|18.42|values clariffication +33|263|65729|4294967330|34.56|33.40|true|victor king|2013-03-01 09:11:58.703094|93.64|geology +73|451|65771|4294967423|58.02|39.37|false|ulysses falkner|2013-03-01 09:11:58.703133|80.02|quiet hour +61|333|65691|4294967533|52.83|30.82|true|xavier johnson|2013-03-01 09:11:58.703179|97.69|nap time +35|473|65583|4294967313|12.85|30.02|true|mike ichabod|2013-03-01 09:11:58.703177|32.84|education +44|445|65603|4294967400|78.30|13.62|true|ulysses underhill|2013-03-01 09:11:58.703217|59.06|nap time +85|485|65780|4294967375|43.78|32.60|false|ethan brown|2013-03-01 09:11:58.703225|13.04|quiet hour +54|269|65617|4294967444|43.94|3.68|true|zach king|2013-03-01 09:11:58.703323|7.81|study skills +57|429|65688|4294967361|43.35|42.07|true|quinn zipper|2013-03-01 09:11:58.703272|21.73|joggying +40|454|65738|4294967349|88.99|6.01|true|jessica laertes|2013-03-01 09:11:58.703126|87.17|values clariffication +7|349|65732|4294967434|30.83|25.66|false|nick nixon|2013-03-01 09:11:58.703096|16.92|wind surfing +9|432|65675|4294967454|8.49|20.16|false|sarah nixon|2013-03-01 09:11:58.703100|41.55|philosophy +42|483|65664|4294967324|79.61|39.41|true|irene ichabod|2013-03-01 09:11:58.703125|5.82|industrial engineering +72|356|65692|4294967423|5.35|34.05|false|victor carson|2013-03-01 09:11:58.703076|52.70|linguistics +50|342|65666|4294967397|46.57|10.32|false|oscar falkner|2013-03-01 09:11:58.703212|48.71|values clariffication +92|299|65746|4294967319|84.97|2.04|false|quinn van buren|2013-03-01 09:11:58.703275|12.95|philosophy +40|350|65683|4294967451|0.23|23.62|false|calvin white|2013-03-01 09:11:58.703319|65.06|wind surfing +41|481|65626|4294967430|76.51|45.35|true|sarah allen|2013-03-01 09:11:58.703222|14.55|chemistry +65|309|65576|4294967541|12.34|18.18|false|luke robinson|2013-03-01 09:11:58.703260|58.81|linguistics +34|325|65778|4294967327|81.27|15.89|false|mike xylophone|2013-03-01 09:11:58.703075|21.69|zync studies +102|392|65709|4294967506|66.82|48.61|true|david ovid|2013-03-01 09:11:58.703165|52.83|religion +30|347|65768|4294967333|36.53|34.87|false|mike davidson|2013-03-01 09:11:58.703115|75.53|debate +-2|483|65603|4294967313|51.80|20.31|true|yuri hernandez|2013-03-01 09:11:58.703257|42.71|yard duty +78|496|65779|4294967445|42.85|5.43|true|luke hernandez|2013-03-01 09:11:58.703161|63.64|kindergarten +24|414|65546|4294967368|33.37|43.55|false|ulysses king|2013-03-01 09:11:58.703125|46.78|undecided +100|305|65593|4294967419|34.99|2.84|true|zach miller|2013-03-01 09:11:58.703262|63.21|debate +55|341|65569|4294967546|65.23|34.72|true|luke ellison|2013-03-01 09:11:58.703193|43.18|forestry +50|351|65757|4294967454|79.85|18.09|true|calvin ellison|2013-03-01 09:11:58.703207|41.88|religion +5|280|65780|4294967438|65.12|17.43|false|luke garcia|2013-03-01 09:11:58.703091|45.32|education +108|342|65671|4294967406|60.49|19.66|false|irene white|2013-03-01 09:11:58.703312|71.79|history +99|265|65627|4294967378|88.19|42.12|true|tom white|2013-03-01 09:11:58.703300|74.60|yard duty +14|316|65626|4294967440|52.66|4.50|true|xavier steinbeck|2013-03-01 09:11:58.703234|80.83|education +51|276|65643|4294967498|47.86|1.94|false|wendy ichabod|2013-03-01 09:11:58.703266|43.80|topology +28|286|65734|4294967481|19.40|32.87|true|luke laertes|2013-03-01 09:11:58.703215|30.43|mathematics +12|428|65733|4294967342|77.90|23.24|false|victor carson|2013-03-01 09:11:58.703278|65.62|xylophone band +120|428|65715|4294967335|40.54|32.26|false|sarah falkner|2013-03-01 09:11:58.703070|71.35|wind surfing +34|510|65647|4294967317|93.48|2.02|false|luke ellison|2013-03-01 09:11:58.703184|49.13|wind surfing +111|299|65613|4294967438|56.80|13.56|false|victor ovid|2013-03-01 09:11:58.703300|88.23|mathematics +79|287|65564|4294967370|95.76|43.12|false|calvin young|2013-03-01 09:11:58.703203|41.88|mathematics +98|504|65728|4294967327|43.01|17.56|false|priscilla quirinius|2013-03-01 09:11:58.703073|99.35|industrial engineering +87|474|65788|4294967513|72.73|35.96|false|jessica young|2013-03-01 09:11:58.703170|17.19|study skills +27|406|65542|4294967549|31.90|2.28|false|mike brown|2013-03-01 09:11:58.703120|31.03|zync studies +6|381|65548|4294967477|79.19|20.59|false|sarah allen|2013-03-01 09:11:58.703308|95.20|forestry +47|258|65717|4294967429|88.43|40.91|true|nick king|2013-03-01 09:11:58.703187|35.85|quiet hour +7|506|65745|4294967458|30.84|9.36|true|calvin hernandez|2013-03-01 09:11:58.703146|21.61|yard duty +112|401|65702|4294967447|84.84|26.78|true|oscar thompson|2013-03-01 09:11:58.703321|70.32|values clariffication +42|498|65637|4294967404|21.35|33.44|true|jessica garcia|2013-03-01 09:11:58.703182|10.65|kindergarten +74|491|65782|4294967394|49.64|25.68|true|holly thompson|2013-03-01 09:11:58.703071|91.12|forestry +63|510|65682|4294967304|67.11|29.82|true|tom van buren|2013-03-01 09:11:58.703219|88.31|wind surfing +66|502|65721|4294967324|57.13|26.66|false|luke young|2013-03-01 09:11:58.703074|69.54|industrial engineering +46|373|65683|4294967498|1.99|22.40|true|xavier johnson|2013-03-01 09:11:58.703071|48.08|undecided +4|392|65629|4294967457|91.00|20.73|true|katie quirinius|2013-03-01 09:11:58.703308|60.60|study skills +50|346|65778|4294967447|84.11|31.62|false|xavier ovid|2013-03-01 09:11:58.703114|54.42|forestry +91|414|65665|4294967315|52.83|32.33|true|nick king|2013-03-01 09:11:58.703104|97.86|joggying +69|442|65715|4294967482|37.81|19.53|true|tom king|2013-03-01 09:11:58.703107|99.57|study skills +100|404|65672|4294967348|96.67|40.69|false|wendy zipper|2013-03-01 09:11:58.703168|15.42|debate +78|472|65750|4294967531|37.56|42.30|true|bob ovid|2013-03-01 09:11:58.703242|35.80|industrial engineering +9|368|65785|4294967458|52.45|8.29|false|jessica polk|2013-03-01 09:11:58.703132|26.85|debate +120|489|65754|4294967315|45.68|39.07|true|quinn garcia|2013-03-01 09:11:58.703266|69.26|nap time +96|433|65582|4294967534|54.49|30.28|false|david johnson|2013-03-01 09:11:58.703223|15.22|values clariffication +95|448|65720|4294967397|42.51|35.44|false|yuri ellison|2013-03-01 09:11:58.703308|12.08|debate +9|371|65661|4294967305|16.91|33.06|true|katie johnson|2013-03-01 09:11:58.703130|10.11|kindergarten +61|508|65638|4294967442|37.12|31.33|false|nick ovid|2013-03-01 09:11:58.703085|47.02|joggying +6|428|65674|4294967454|95.39|31.23|false|quinn thompson|2013-03-01 09:11:58.703304|45.96|biology +76|418|65706|4294967329|16.88|26.49|true|irene thompson|2013-03-01 09:11:58.703161|63.15|quiet hour +18|361|65755|4294967442|43.38|0.94|false|ulysses white|2013-03-01 09:11:58.703223|11.24|history +77|448|65651|4294967370|87.35|12.85|true|oscar ellison|2013-03-01 09:11:58.703296|72.58|religion +55|408|65628|4294967365|12.63|43.11|true|luke robinson|2013-03-01 09:11:58.703207|10.56|nap time +89|496|65742|4294967331|68.17|31.01|false|oscar king|2013-03-01 09:11:58.703213|16.18|kindergarten +19|425|65759|4294967515|60.36|42.87|true|mike king|2013-03-01 09:11:58.703301|70.29|geology +16|479|65727|4294967440|47.30|48.11|false|irene johnson|2013-03-01 09:11:58.703160|11.40|yard duty +62|437|65546|4294967436|10.65|31.77|false|nick king|2013-03-01 09:11:58.703162|24.99|study skills +62|475|65561|4294967511|54.09|17.04|false|david allen|2013-03-01 09:11:58.703105|87.06|geology +30|337|65682|4294967495|74.01|26.40|false|luke johnson|2013-03-01 09:11:58.703222|23.94|biology +39|386|65704|4294967474|91.91|21.21|false|ulysses van buren|2013-03-01 09:11:58.703220|88.93|xylophone band +45|304|65765|4294967501|58.12|1.50|true|ethan hernandez|2013-03-01 09:11:58.703157|97.59|xylophone band +81|297|65716|4294967385|73.14|46.13|true|priscilla steinbeck|2013-03-01 09:11:58.703235|25.31|industrial engineering +88|501|65735|4294967431|2.78|7.31|false|fred ichabod|2013-03-01 09:11:58.703230|19.64|zync studies +47|344|65545|4294967549|23.15|47.90|true|alice ichabod|2013-03-01 09:11:58.703271|54.68|forestry +4|304|65700|4294967366|44.78|9.75|true|jessica xylophone|2013-03-01 09:11:58.703115|94.39|wind surfing +46|500|65634|4294967348|65.87|9.70|false|luke ovid|2013-03-01 09:11:58.703113|96.45|opthamology +34|371|65694|4294967415|62.58|17.73|true|victor davidson|2013-03-01 09:11:58.703306|89.05|nap time +2|279|65558|4294967524|70.99|41.12|true|david van buren|2013-03-01 09:11:58.703100|72.59|religion +74|463|65669|4294967396|66.63|15.58|false|zach ovid|2013-03-01 09:11:58.703145|18.12|kindergarten +1|389|65699|4294967412|32.70|30.11|true|alice falkner|2013-03-01 09:11:58.703313|60.70|kindergarten +16|389|65584|4294967500|89.47|38.30|true|luke robinson|2013-03-01 09:11:58.703262|70.81|zync studies +71|464|65673|4294967378|60.84|5.61|false|calvin falkner|2013-03-01 09:11:58.703098|59.17|topology +95|476|65726|4294967332|89.19|15.53|true|jessica zipper|2013-03-01 09:11:58.703188|53.65|linguistics +14|452|65688|4294967363|99.26|8.34|false|victor hernandez|2013-03-01 09:11:58.703072|32.20|yard duty +55|318|65657|4294967379|12.08|14.30|true|tom king|2013-03-01 09:11:58.703175|98.06|quiet hour +104|420|65725|4294967401|40.67|49.67|true|oscar van buren|2013-03-01 09:11:58.703187|15.90|opthamology +117|400|65558|4294967299|63.35|33.08|false|victor robinson|2013-03-01 09:11:58.703187|57.58|education +78|483|65734|4294967415|84.95|12.52|false|alice xylophone|2013-03-01 09:11:58.703255|27.53|topology +12|403|65586|4294967468|10.81|38.20|false|luke underhill|2013-03-01 09:11:58.703286|90.83|zync studies +120|425|65677|4294967370|86.28|14.73|true|alice young|2013-03-01 09:11:58.703198|27.43|philosophy +45|409|65766|4294967300|93.42|40.56|true|katie allen|2013-03-01 09:11:58.703228|94.82|debate +16|328|65619|4294967487|55.71|14.23|true|quinn white|2013-03-01 09:11:58.703274|37.60|quiet hour +46|391|65611|4294967504|25.94|33.61|true|wendy miller|2013-03-01 09:11:58.703099|18.64|study skills +81|285|65539|4294967456|28.04|35.69|true|luke davidson|2013-03-01 09:11:58.703275|21.99|education +5|276|65743|4294967466|82.12|4.51|true|oscar ichabod|2013-03-01 09:11:58.703137|49.67|undecided +50|473|65607|4294967378|66.80|41.86|true|xavier young|2013-03-01 09:11:58.703098|81.99|zync studies +8|439|65547|4294967504|1.76|38.10|true|priscilla allen|2013-03-01 09:11:58.703286|23.42|chemistry +78|303|65603|4294967302|67.38|7.70|true|irene thompson|2013-03-01 09:11:58.703195|15.47|linguistics +101|357|65754|4294967304|1.86|8.42|true|priscilla van buren|2013-03-01 09:11:58.703127|64.43|xylophone band +22|296|65785|4294967386|26.46|32.84|false|ulysses ellison|2013-03-01 09:11:58.703152|29.48|forestry +124|325|65578|4294967306|78.82|44.81|false|david thompson|2013-03-01 09:11:58.703322|18.06|linguistics +23|503|65583|4294967427|76.59|47.53|true|irene zipper|2013-03-01 09:11:58.703167|85.83|topology +31|271|65774|4294967363|67.23|18.86|false|yuri brown|2013-03-01 09:11:58.703086|83.00|industrial engineering +49|302|65714|4294967409|36.27|29.15|true|yuri polk|2013-03-01 09:11:58.703138|94.04|quiet hour +41|365|65637|4294967377|71.41|25.37|false|rachel quirinius|2013-03-01 09:11:58.703230|0.83|philosophy +39|369|65721|4294967490|0.07|49.88|false|calvin quirinius|2013-03-01 09:11:58.703323|49.05|industrial engineering +4|486|65710|4294967309|8.02|23.91|true|yuri young|2013-03-01 09:11:58.703236|2.37|opthamology +21|391|65566|4294967538|89.21|22.89|true|priscilla polk|2013-03-01 09:11:58.703201|40.04|debate +74|323|65617|4294967496|92.43|19.03|false|ethan polk|2013-03-01 09:11:58.703232|50.90|joggying +68|392|65752|4294967469|0.48|2.04|true|rachel ichabod|2013-03-01 09:11:58.703072|33.41|mathematics +29|321|65604|4294967316|67.66|34.85|false|wendy young|2013-03-01 09:11:58.703114|59.69|quiet hour +18|355|65582|4294967543|31.06|21.29|true|mike johnson|2013-03-01 09:11:58.703223|55.81|industrial engineering +6|344|65650|4294967386|12.63|35.49|false|victor thompson|2013-03-01 09:11:58.703160|95.11|debate +83|391|65689|4294967450|18.22|32.18|false|katie davidson|2013-03-01 09:11:58.703275|73.28|undecided +99|284|65694|4294967396|76.38|5.14|true|ulysses xylophone|2013-03-01 09:11:58.703291|7.67|topology +21|415|65648|4294967351|16.19|12.90|true|xavier brown|2013-03-01 09:11:58.703284|79.41|xylophone band +96|338|65771|4294967333|66.51|31.44|true|oscar xylophone|2013-03-01 09:11:58.703247|61.36|biology +119|396|65735|4294967355|37.50|29.58|false|rachel garcia|2013-03-01 09:11:58.703319|69.17|opthamology +76|309|65573|4294967334|74.01|32.61|false|ethan van buren|2013-03-01 09:11:58.703287|55.94|linguistics +26|443|65544|4294967343|13.52|29.45|true|tom young|2013-03-01 09:11:58.703246|85.76|geology +107|439|65593|4294967348|41.79|33.12|true|quinn thompson|2013-03-01 09:11:58.703129|58.79|geology +46|443|65557|4294967523|77.35|37.29|true|tom ichabod|2013-03-01 09:11:58.703118|85.34|debate +69|417|65789|4294967378|81.79|23.68|false|tom carson|2013-03-01 09:11:58.703073|81.30|values clariffication +29|415|65734|4294967361|43.49|10.04|false|irene miller|2013-03-01 09:11:58.703097|68.89|industrial engineering +46|361|65750|4294967387|14.78|40.08|false|fred allen|2013-03-01 09:11:58.703146|49.92|linguistics +28|346|65745|4294967547|51.04|30.25|true|ethan thompson|2013-03-01 09:11:58.703235|81.58|study skills +51|356|65600|4294967346|47.94|10.95|false|fred young|2013-03-01 09:11:58.703269|34.45|education +23|344|65558|4294967468|51.94|37.19|true|tom carson|2013-03-01 09:11:58.703162|78.55|industrial engineering +26|412|65718|4294967337|18.53|7.40|false|alice ichabod|2013-03-01 09:11:58.703087|5.12|debate +107|284|65673|4294967440|62.14|4.60|false|gabriella ellison|2013-03-01 09:11:58.703319|0.51|yard duty +76|263|65750|4294967499|16.51|27.60|true|irene king|2013-03-01 09:11:58.703112|95.90|xylophone band +68|345|65718|4294967449|51.75|26.38|false|calvin ellison|2013-03-01 09:11:58.703122|94.92|debate +57|328|65783|4294967334|56.06|16.45|true|katie miller|2013-03-01 09:11:58.703106|54.50|zync studies +62|310|65572|4294967405|30.70|16.17|true|wendy falkner|2013-03-01 09:11:58.703182|57.01|wind surfing +41|306|65752|4294967439|94.23|5.09|true|nick falkner|2013-03-01 09:11:58.703204|58.97|biology +104|468|65648|4294967446|88.11|13.60|true|mike laertes|2013-03-01 09:11:58.703180|50.60|yard duty +75|342|65595|4294967511|95.68|6.58|false|wendy king|2013-03-01 09:11:58.703121|77.63|joggying +86|259|65623|4294967339|67.81|18.71|false|ulysses garcia|2013-03-01 09:11:58.703245|1.25|values clariffication +29|463|65696|4294967534|14.78|22.65|false|sarah polk|2013-03-01 09:11:58.703281|42.42|debate +38|311|65612|4294967346|8.19|47.58|true|victor underhill|2013-03-01 09:11:58.703120|33.72|values clariffication +32|273|65671|4294967379|10.46|2.82|true|ethan king|2013-03-01 09:11:58.703231|96.06|chemistry +43|348|65672|4294967316|41.93|15.01|false|rachel johnson|2013-03-01 09:11:58.703198|51.68|xylophone band +121|314|65767|4294967456|25.38|49.92|false|zach young|2013-03-01 09:11:58.703180|60.62|mathematics +81|495|65783|4294967469|41.27|6.21|false|mike garcia|2013-03-01 09:11:58.703221|31.29|joggying +47|407|65683|4294967375|49.17|36.83|false|luke van buren|2013-03-01 09:11:58.703139|59.24|opthamology +82|496|65649|4294967521|5.37|46.54|true|bob robinson|2013-03-01 09:11:58.703123|19.64|yard duty +122|374|65703|4294967496|44.96|36.37|true|yuri ichabod|2013-03-01 09:11:58.703234|3.79|xylophone band +7|498|65611|4294967507|19.92|18.85|false|sarah xylophone|2013-03-01 09:11:58.703169|96.63|history +2|342|65776|4294967529|50.53|21.36|false|ethan garcia|2013-03-01 09:11:58.703234|38.67|history +56|293|65565|4294967447|74.29|9.52|false|tom xylophone|2013-03-01 09:11:58.703258|71.94|undecided +91|383|65694|4294967365|68.83|13.73|false|alice van buren|2013-03-01 09:11:58.703207|6.29|wind surfing +84|443|65593|4294967424|98.37|38.89|false|fred carson|2013-03-01 09:11:58.703317|49.99|linguistics +39|463|65647|4294967466|38.09|0.37|true|gabriella carson|2013-03-01 09:11:58.703156|70.82|industrial engineering +72|356|65564|4294967323|80.54|48.18|false|holly hernandez|2013-03-01 09:11:58.703199|2.93|quiet hour +0|287|65684|4294967505|19.28|40.19|false|mike falkner|2013-03-01 09:11:58.703288|5.47|nap time +81|418|65675|4294967409|48.65|23.45|false|victor johnson|2013-03-01 09:11:58.703265|46.23|wind surfing +4|294|65703|4294967415|57.70|10.00|false|victor johnson|2013-03-01 09:11:58.703170|13.97|religion +76|477|65789|4294967350|38.71|38.27|true|luke polk|2013-03-01 09:11:58.703218|12.65|study skills +112|494|65752|4294967495|66.74|27.49|false|luke underhill|2013-03-01 09:11:58.703306|18.94|xylophone band +81|477|65577|4294967369|40.64|39.53|true|quinn ichabod|2013-03-01 09:11:58.703283|68.68|education +5|325|65682|4294967409|44.80|47.79|false|victor young|2013-03-01 09:11:58.703288|9.10|mathematics +77|273|65639|4294967338|96.72|36.25|true|gabriella garcia|2013-03-01 09:11:58.703286|12.31|xylophone band +90|339|65685|4294967468|71.19|4.66|false|quinn ellison|2013-03-01 09:11:58.703310|93.00|opthamology +68|386|65771|4294967548|36.65|28.40|true|zach ichabod|2013-03-01 09:11:58.703155|33.03|values clariffication +52|398|65678|4294967550|33.58|10.01|false|gabriella falkner|2013-03-01 09:11:58.703292|60.20|zync studies +18|449|65641|4294967309|63.46|32.52|true|priscilla thompson|2013-03-01 09:11:58.703085|3.84|industrial engineering +22|444|65760|4294967503|18.32|34.64|false|jessica brown|2013-03-01 09:11:58.703082|99.87|education +44|331|65571|4294967303|56.51|22.65|false|mike underhill|2013-03-01 09:11:58.703325|10.33|opthamology +3|358|65609|4294967405|45.09|19.72|true|alice nixon|2013-03-01 09:11:58.703317|74.17|quiet hour +65|258|65752|4294967429|31.58|8.97|true|priscilla zipper|2013-03-01 09:11:58.703093|4.87|wind surfing +34|346|65715|4294967467|50.18|12.49|false|katie young|2013-03-01 09:11:58.703076|86.52|topology +4|273|65619|4294967325|94.09|22.68|true|holly van buren|2013-03-01 09:11:58.703309|3.01|biology +8|279|65630|4294967299|16.49|30.41|true|gabriella zipper|2013-03-01 09:11:58.703171|25.57|debate +118|420|65750|4294967465|39.04|14.21|true|luke polk|2013-03-01 09:11:58.703242|15.54|topology +72|283|65580|4294967508|14.78|36.34|true|sarah thompson|2013-03-01 09:11:58.703217|2.90|american history +56|287|65747|4294967360|90.86|1.94|true|alice davidson|2013-03-01 09:11:58.703155|32.97|history +62|463|65701|4294967380|58.47|2.68|true|fred xylophone|2013-03-01 09:11:58.703246|36.38|values clariffication +35|291|65740|4294967317|37.62|31.85|true|sarah ellison|2013-03-01 09:11:58.703198|48.84|american history +47|431|65736|4294967444|84.34|4.82|true|ulysses zipper|2013-03-01 09:11:58.703192|62.14|undecided +82|494|65617|4294967393|97.71|22.84|false|sarah garcia|2013-03-01 09:11:58.703294|25.71|yard duty +67|444|65678|4294967355|53.00|14.07|false|david brown|2013-03-01 09:11:58.703271|86.14|history +62|451|65664|4294967410|61.82|30.07|true|luke young|2013-03-01 09:11:58.703200|70.78|xylophone band +73|461|65650|4294967442|16.83|7.27|false|mike brown|2013-03-01 09:11:58.703104|10.60|zync studies +45|483|65639|4294967548|80.55|7.58|false|fred davidson|2013-03-01 09:11:58.703317|99.44|values clariffication +110|397|65781|4294967512|28.50|24.21|true|xavier white|2013-03-01 09:11:58.703176|92.61|opthamology +92|436|65549|4294967316|16.50|42.99|true|tom johnson|2013-03-01 09:11:58.703220|21.94|topology +19|270|65689|4294967326|60.33|35.29|true|wendy nixon|2013-03-01 09:11:58.703129|10.41|history +42|262|65734|4294967387|50.79|20.85|false|ethan davidson|2013-03-01 09:11:58.703083|93.19|debate +112|468|65611|4294967389|74.54|30.62|true|katie zipper|2013-03-01 09:11:58.703216|28.15|linguistics +119|309|65765|4294967387|26.56|46.89|true|mike ovid|2013-03-01 09:11:58.703117|16.87|wind surfing +100|265|65705|4294967546|24.81|6.95|true|david xylophone|2013-03-01 09:11:58.703219|62.35|opthamology +96|505|65689|4294967399|26.37|33.53|true|luke davidson|2013-03-01 09:11:58.703236|92.92|debate +25|279|65550|4294967451|83.21|12.26|false|katie falkner|2013-03-01 09:11:58.703135|62.16|chemistry +64|297|65566|4294967550|17.17|7.03|false|fred robinson|2013-03-01 09:11:58.703192|42.93|kindergarten +3|403|65688|4294967485|71.07|7.30|false|holly underhill|2013-03-01 09:11:58.703162|21.62|xylophone band +11|387|65581|4294967348|54.44|49.50|false|jessica ellison|2013-03-01 09:11:58.703305|39.56|quiet hour +63|382|65764|4294967442|29.18|21.08|false|tom young|2013-03-01 09:11:58.703288|44.77|mathematics +122|405|65726|4294967411|17.71|32.90|true|tom white|2013-03-01 09:11:58.703084|4.82|study skills +115|317|65642|4294967341|91.30|11.49|false|oscar white|2013-03-01 09:11:58.703133|84.45|forestry +1|382|65547|4294967471|51.23|39.65|true|sarah davidson|2013-03-01 09:11:58.703266|28.04|wind surfing +11|387|65744|4294967419|25.64|43.85|false|quinn hernandez|2013-03-01 09:11:58.703267|71.94|values clariffication +5|494|65724|4294967314|7.92|42.76|true|xavier van buren|2013-03-01 09:11:58.703158|86.50|study skills +118|382|65739|4294967333|80.92|19.11|true|priscilla ovid|2013-03-01 09:11:58.703154|48.12|nap time +28|265|65779|4294967336|40.28|40.08|false|quinn falkner|2013-03-01 09:11:58.703307|31.24|industrial engineering +3|511|65617|4294967303|18.31|19.29|true|luke davidson|2013-03-01 09:11:58.703135|97.35|philosophy +72|324|65770|4294967477|49.61|0.30|true|ethan miller|2013-03-01 09:11:58.703121|26.96|debate +122|297|65594|4294967532|26.40|40.97|false|ulysses young|2013-03-01 09:11:58.703224|72.16|yard duty +38|314|65665|4294967432|94.70|33.76|false|nick allen|2013-03-01 09:11:58.703199|7.82|history +69|374|65655|4294967500|4.36|7.99|false|katie van buren|2013-03-01 09:11:58.703198|81.18|debate +114|405|65551|4294967521|72.18|49.26|false|david laertes|2013-03-01 09:11:58.703162|31.16|nap time +41|266|65619|4294967310|58.47|42.11|false|nick young|2013-03-01 09:11:58.703202|93.57|values clariffication +3|446|65636|4294967421|14.37|47.47|false|ethan steinbeck|2013-03-01 09:11:58.703283|77.99|wind surfing +11|409|65577|4294967330|88.63|25.03|false|david johnson|2013-03-01 09:11:58.703183|91.10|religion +121|485|65738|4294967485|5.47|33.88|false|wendy brown|2013-03-01 09:11:58.703257|62.84|undecided +16|470|65590|4294967318|45.55|7.19|true|xavier ovid|2013-03-01 09:11:58.703313|73.64|chemistry +86|285|65637|4294967532|93.95|8.49|true|xavier polk|2013-03-01 09:11:58.703253|76.20|opthamology +49|321|65579|4294967525|14.15|7.81|false|oscar polk|2013-03-01 09:11:58.703293|95.62|linguistics +6|494|65562|4294967412|78.14|5.85|true|katie xylophone|2013-03-01 09:11:58.703243|90.51|linguistics +90|470|65568|4294967491|26.87|6.96|false|priscilla king|2013-03-01 09:11:58.703179|79.17|kindergarten +29|405|65713|4294967397|62.53|17.62|false|katie brown|2013-03-01 09:11:58.703177|14.59|quiet hour +25|355|65707|4294967509|29.00|3.98|true|katie thompson|2013-03-01 09:11:58.703267|15.20|linguistics +7|371|65690|4294967480|25.13|30.88|true|priscilla van buren|2013-03-01 09:11:58.703279|83.24|history +82|474|65704|4294967450|9.92|7.06|true|gabriella ellison|2013-03-01 09:11:58.703218|25.91|religion +89|446|65573|4294967426|0.88|8.13|false|jessica ovid|2013-03-01 09:11:58.703297|16.40|values clariffication +84|458|65623|4294967449|76.75|27.01|true|luke ovid|2013-03-01 09:11:58.703315|21.09|industrial engineering +76|396|65748|4294967421|72.28|20.46|true|katie ellison|2013-03-01 09:11:58.703311|77.61|kindergarten +105|373|65603|4294967524|81.85|22.83|true|tom allen|2013-03-01 09:11:58.703102|36.77|wind surfing +90|360|65671|4294967375|66.95|22.37|true|sarah falkner|2013-03-01 09:11:58.703107|3.18|industrial engineering +61|400|65609|4294967443|22.49|39.35|false|gabriella laertes|2013-03-01 09:11:58.703202|97.42|american history +40|391|65590|4294967352|91.79|26.82|true|jessica underhill|2013-03-01 09:11:58.703091|62.43|values clariffication +44|391|65785|4294967415|9.42|36.38|false|xavier davidson|2013-03-01 09:11:58.703289|92.73|wind surfing +26|361|65771|4294967356|85.72|0.26|true|alice king|2013-03-01 09:11:58.703278|44.83|quiet hour +53|413|65609|4294967306|51.64|35.53|true|priscilla laertes|2013-03-01 09:11:58.703211|6.57|education +54|294|65667|4294967328|46.63|1.82|false|priscilla zipper|2013-03-01 09:11:58.703293|52.59|yard duty +50|400|65641|4294967538|27.16|4.58|true|xavier van buren|2013-03-01 09:11:58.703176|79.04|chemistry +4|339|65725|4294967343|84.12|36.75|false|irene underhill|2013-03-01 09:11:58.703120|6.42|opthamology +72|434|65590|4294967396|3.52|10.37|true|mike nixon|2013-03-01 09:11:58.703125|23.14|chemistry +8|332|65758|4294967376|67.40|32.65|true|mike allen|2013-03-01 09:11:58.703251|48.63|philosophy +41|354|65682|4294967344|38.22|49.23|true|quinn polk|2013-03-01 09:11:58.703287|54.48|geology +63|306|65566|4294967464|76.87|27.32|true|holly laertes|2013-03-01 09:11:58.703175|50.84|education +82|444|65679|4294967394|26.97|9.50|false|sarah robinson|2013-03-01 09:11:58.703103|26.74|wind surfing +29|373|65726|4294967491|29.93|30.18|true|sarah quirinius|2013-03-01 09:11:58.703154|3.46|topology +73|282|65785|4294967326|77.70|33.04|true|rachel underhill|2013-03-01 09:11:58.703129|96.50|philosophy +43|482|65685|4294967346|34.18|33.56|true|priscilla robinson|2013-03-01 09:11:58.703183|81.23|biology +30|379|65656|4294967458|69.98|22.44|true|ethan ellison|2013-03-01 09:11:58.703219|68.84|geology +19|396|65637|4294967423|27.01|7.83|false|ethan brown|2013-03-01 09:11:58.703292|42.68|undecided +21|382|65564|4294967371|12.91|37.78|true|zach ellison|2013-03-01 09:11:58.703289|99.86|values clariffication +88|403|65602|4294967401|87.10|13.05|true|gabriella ichabod|2013-03-01 09:11:58.703118|32.10|religion +71|432|65698|4294967527|40.49|40.42|true|oscar laertes|2013-03-01 09:11:58.703103|53.91|xylophone band +71|486|65712|4294967417|52.60|1.67|true|irene quirinius|2013-03-01 09:11:58.703187|10.12|zync studies +111|299|65624|4294967501|80.23|23.16|true|alice nixon|2013-03-01 09:11:58.703259|31.56|biology +119|387|65556|4294967399|51.43|20.38|false|irene miller|2013-03-01 09:11:58.703275|43.33|yard duty +46|369|65540|4294967499|0.52|14.11|false|alice ovid|2013-03-01 09:11:58.703207|0.06|linguistics +21|380|65627|4294967540|41.87|44.75|true|tom miller|2013-03-01 09:11:58.703312|34.88|nap time +47|301|65700|4294967374|83.21|7.69|true|wendy quirinius|2013-03-01 09:11:58.703190|69.76|forestry +68|276|65707|4294967400|76.04|48.78|true|luke young|2013-03-01 09:11:58.703302|75.71|zync studies +121|323|65612|4294967544|80.63|8.63|false|calvin steinbeck|2013-03-01 09:11:58.703095|69.47|mathematics +23|451|65546|4294967416|35.50|21.34|false|zach xylophone|2013-03-01 09:11:58.703158|41.57|philosophy +115|492|65745|4294967404|1.53|25.32|false|jessica quirinius|2013-03-01 09:11:58.703243|79.49|xylophone band +34|445|65775|4294967511|46.36|43.96|true|nick steinbeck|2013-03-01 09:11:58.703208|52.41|mathematics +63|286|65627|4294967550|26.91|15.77|true|mike johnson|2013-03-01 09:11:58.703286|83.79|education +114|413|65710|4294967449|61.41|39.10|true|yuri hernandez|2013-03-01 09:11:58.703071|50.06|biology +39|392|65579|4294967481|85.27|23.94|true|fred young|2013-03-01 09:11:58.703217|2.84|linguistics +47|376|65666|4294967352|99.09|34.71|false|xavier white|2013-03-01 09:11:58.703288|34.98|american history +0|386|65630|4294967396|17.59|46.00|true|holly steinbeck|2013-03-01 09:11:58.703113|64.76|industrial engineering +57|325|65576|4294967331|52.59|19.78|true|mike laertes|2013-03-01 09:11:58.703251|36.33|nap time +58|280|65703|4294967548|34.35|34.54|false|ethan carson|2013-03-01 09:11:58.703176|66.33|geology +85|440|65677|4294967436|28.82|36.99|false|jessica nixon|2013-03-01 09:11:58.703309|68.08|chemistry +97|311|65581|4294967443|11.39|35.10|true|david underhill|2013-03-01 09:11:58.703281|65.32|american history +58|336|65589|4294967417|44.00|21.51|false|zach nixon|2013-03-01 09:11:58.703092|50.86|education +44|338|65551|4294967433|87.52|2.23|true|gabriella polk|2013-03-01 09:11:58.703280|33.27|quiet hour +69|505|65697|4294967332|92.53|0.89|false|holly davidson|2013-03-01 09:11:58.703147|51.95|kindergarten +9|365|65570|4294967462|14.59|12.94|false|jessica thompson|2013-03-01 09:11:58.703172|81.39|education +8|257|65781|4294967331|17.33|18.39|true|alice underhill|2013-03-01 09:11:58.703108|16.06|values clariffication +66|417|65727|4294967517|70.71|32.74|false|ethan young|2013-03-01 09:11:58.703131|53.79|mathematics +48|392|65691|4294967308|42.71|32.25|true|luke carson|2013-03-01 09:11:58.703300|26.41|study skills +61|320|65664|4294967383|79.21|44.34|true|tom johnson|2013-03-01 09:11:58.703241|59.56|topology +73|404|65727|4294967535|86.56|25.24|false|ethan underhill|2013-03-01 09:11:58.703266|49.21|undecided +69|434|65769|4294967476|79.14|20.83|true|victor underhill|2013-03-01 09:11:58.703094|90.30|values clariffication +115|262|65735|4294967411|45.10|33.29|true|sarah laertes|2013-03-01 09:11:58.703238|75.61|forestry +1|490|65560|4294967422|69.09|14.57|false|tom polk|2013-03-01 09:11:58.703186|41.02|biology +98|336|65782|4294967314|43.00|18.33|false|xavier ichabod|2013-03-01 09:11:58.703173|82.39|yard duty +74|485|65666|4294967395|92.98|39.00|false|fred ellison|2013-03-01 09:11:58.703155|21.08|topology +52|452|65722|4294967492|61.82|19.16|false|alice white|2013-03-01 09:11:58.703322|87.30|joggying +-3|289|65757|4294967528|56.20|44.24|true|luke ichabod|2013-03-01 09:11:58.703294|6.79|yard duty +69|362|65550|4294967341|3.01|15.03|false|jessica carson|2013-03-01 09:11:58.703195|75.97|philosophy +62|329|65601|4294967337|51.08|28.02|true|gabriella underhill|2013-03-01 09:11:58.703179|49.82|kindergarten +118|271|65688|4294967385|5.76|29.59|false|xavier van buren|2013-03-01 09:11:58.703250|25.80|opthamology +53|358|65651|4294967411|34.20|31.27|false|david thompson|2013-03-01 09:11:58.703104|14.63|linguistics +60|279|65556|4294967349|26.78|38.01|true|oscar nixon|2013-03-01 09:11:58.703107|46.94|philosophy +106|510|65618|4294967462|32.38|42.81|false|luke young|2013-03-01 09:11:58.703078|73.70|mathematics +90|486|65725|4294967526|97.12|17.66|true|alice garcia|2013-03-01 09:11:58.703147|2.48|education +27|321|65541|4294967476|61.39|29.78|true|quinn laertes|2013-03-01 09:11:58.703131|42.85|debate +50|349|65605|4294967434|1.56|2.09|false|victor ichabod|2013-03-01 09:11:58.703128|58.84|industrial engineering +96|290|65709|4294967507|19.66|19.93|false|gabriella van buren|2013-03-01 09:11:58.703302|87.89|nap time +96|473|65790|4294967328|77.90|9.91|true|fred underhill|2013-03-01 09:11:58.703211|52.84|philosophy +57|442|65759|4294967464|70.11|38.37|true|quinn thompson|2013-03-01 09:11:58.703134|81.14|values clariffication +35|371|65689|4294967500|7.68|24.29|false|fred quirinius|2013-03-01 09:11:58.703286|44.52|values clariffication +94|431|65582|4294967312|45.17|45.39|true|luke xylophone|2013-03-01 09:11:58.703262|29.15|kindergarten +8|496|65791|4294967346|65.31|44.58|true|victor davidson|2013-03-01 09:11:58.703286|54.19|quiet hour +75|393|65699|4294967316|4.77|32.73|false|bob quirinius|2013-03-01 09:11:58.703325|33.84|joggying +89|449|65618|4294967343|10.74|20.21|true|wendy davidson|2013-03-01 09:11:58.703294|58.42|nap time +58|497|65754|4294967326|42.77|14.00|true|luke steinbeck|2013-03-01 09:11:58.703084|86.18|joggying +116|477|65618|4294967546|49.81|7.48|false|quinn robinson|2013-03-01 09:11:58.703263|42.82|geology +66|447|65546|4294967462|75.57|40.18|true|calvin carson|2013-03-01 09:11:58.703161|25.64|opthamology +123|476|65761|4294967406|48.30|12.29|false|katie steinbeck|2013-03-01 09:11:58.703097|79.63|american history +60|357|65787|4294967349|56.31|33.94|true|oscar underhill|2013-03-01 09:11:58.703112|29.65|history +50|481|65616|4294967351|68.76|47.23|true|oscar ellison|2013-03-01 09:11:58.703262|14.69|geology +63|497|65677|4294967307|40.05|15.85|false|tom carson|2013-03-01 09:11:58.703200|25.23|history +71|267|65736|4294967432|4.41|38.03|true|yuri thompson|2013-03-01 09:11:58.703318|12.51|geology +50|316|65778|4294967412|78.61|42.84|false|bob polk|2013-03-01 09:11:58.703107|39.40|industrial engineering +123|294|65770|4294967305|11.50|14.10|true|victor thompson|2013-03-01 09:11:58.703080|18.66|education +75|292|65650|4294967408|49.53|43.24|true|tom ichabod|2013-03-01 09:11:58.703274|26.89|xylophone band +50|291|65598|4294967543|90.44|8.82|false|mike van buren|2013-03-01 09:11:58.703099|56.04|philosophy +88|466|65774|4294967395|20.86|13.95|false|zach laertes|2013-03-01 09:11:58.703095|31.79|american history +97|363|65775|4294967426|36.70|29.54|false|luke hernandez|2013-03-01 09:11:58.703308|76.26|joggying +20|507|65538|4294967339|22.61|43.91|false|victor garcia|2013-03-01 09:11:58.703089|55.41|wind surfing +36|475|65715|4294967307|75.43|32.38|false|quinn thompson|2013-03-01 09:11:58.703114|38.60|history +46|459|65770|4294967366|37.04|43.71|false|yuri polk|2013-03-01 09:11:58.703083|14.69|chemistry +107|329|65643|4294967319|7.86|5.51|true|calvin laertes|2013-03-01 09:11:58.703134|86.82|wind surfing +51|500|65785|4294967437|32.79|43.84|false|yuri polk|2013-03-01 09:11:58.703241|84.46|geology +40|479|65684|4294967433|34.47|24.46|true|xavier quirinius|2013-03-01 09:11:58.703210|39.63|education +22|421|65692|4294967417|52.77|24.47|true|jessica underhill|2013-03-01 09:11:58.703233|23.11|values clariffication +97|378|65574|4294967356|77.82|45.51|true|sarah nixon|2013-03-01 09:11:58.703236|2.15|linguistics +16|424|65647|4294967312|22.38|6.48|false|irene van buren|2013-03-01 09:11:58.703162|83.75|kindergarten +33|306|65751|4294967508|8.30|47.84|true|yuri brown|2013-03-01 09:11:58.703079|44.53|forestry +6|510|65590|4294967314|73.49|18.39|false|tom johnson|2013-03-01 09:11:58.703076|12.92|philosophy +10|470|65657|4294967419|78.12|21.72|false|priscilla davidson|2013-03-01 09:11:58.703303|79.69|philosophy +20|350|65728|4294967396|79.73|4.80|false|holly miller|2013-03-01 09:11:58.703081|35.16|values clariffication +15|455|65580|4294967327|92.64|29.25|true|nick hernandez|2013-03-01 09:11:58.703218|4.47|wind surfing +114|468|65583|4294967422|71.35|11.46|false|calvin davidson|2013-03-01 09:11:58.703320|15.65|linguistics +82|508|65770|4294967486|94.12|34.98|false|mike brown|2013-03-01 09:11:58.703195|48.02|philosophy +11|365|65600|4294967304|41.95|17.46|false|yuri hernandez|2013-03-01 09:11:58.703293|83.03|history +56|326|65778|4294967436|0.54|17.32|true|oscar white|2013-03-01 09:11:58.703216|97.42|american history +2|376|65634|4294967525|75.50|38.65|false|victor zipper|2013-03-01 09:11:58.703311|81.96|philosophy +98|474|65600|4294967480|31.66|27.06|true|gabriella king|2013-03-01 09:11:58.703320|43.81|study skills +36|305|65727|4294967425|10.19|46.47|true|katie miller|2013-03-01 09:11:58.703100|9.01|mathematics +1|364|65589|4294967336|66.09|7.05|false|quinn ovid|2013-03-01 09:11:58.703167|12.04|linguistics +104|263|65606|4294967412|15.38|34.08|true|victor young|2013-03-01 09:11:58.703194|66.49|study skills +99|381|65569|4294967441|6.17|26.91|true|zach carson|2013-03-01 09:11:58.703128|4.21|nap time +47|410|65574|4294967376|89.64|16.33|false|quinn allen|2013-03-01 09:11:58.703089|46.42|biology +7|392|65637|4294967330|82.92|18.94|false|luke steinbeck|2013-03-01 09:11:58.703095|0.75|kindergarten +47|415|65550|4294967527|91.70|22.20|false|zach ichabod|2013-03-01 09:11:58.703216|31.96|religion +48|492|65608|4294967364|10.13|25.33|true|ulysses underhill|2013-03-01 09:11:58.703129|23.60|study skills +74|399|65708|4294967352|91.31|27.08|true|sarah garcia|2013-03-01 09:11:58.703237|74.69|philosophy +13|487|65664|4294967488|95.77|33.48|true|yuri king|2013-03-01 09:11:58.703241|73.66|religion +27|406|65773|4294967539|74.60|29.01|true|bob laertes|2013-03-01 09:11:58.703190|75.14|chemistry +114|507|65779|4294967391|39.61|34.93|true|calvin hernandez|2013-03-01 09:11:58.703104|8.69|opthamology +89|441|65655|4294967422|57.72|46.25|true|mike zipper|2013-03-01 09:11:58.703219|58.83|yard duty +1|338|65759|4294967515|88.55|43.84|false|holly king|2013-03-01 09:11:58.703290|29.65|american history +55|379|65745|4294967393|53.58|4.13|false|xavier van buren|2013-03-01 09:11:58.703134|2.48|mathematics +38|315|65571|4294967299|85.91|4.59|false|wendy nixon|2013-03-01 09:11:58.703285|91.00|mathematics +59|350|65698|4294967338|99.58|37.22|true|rachel young|2013-03-01 09:11:58.703146|24.34|religion +122|480|65776|4294967539|37.19|2.58|true|luke polk|2013-03-01 09:11:58.703273|46.19|biology +92|417|65609|4294967297|89.02|7.81|false|sarah van buren|2013-03-01 09:11:58.703120|8.04|history +83|405|65713|4294967388|23.05|20.36|false|alice ellison|2013-03-01 09:11:58.703115|80.68|forestry +90|367|65790|4294967425|55.67|33.81|false|yuri ellison|2013-03-01 09:11:58.703318|82.74|forestry +49|441|65650|4294967335|20.74|0.30|false|irene falkner|2013-03-01 09:11:58.703312|74.41|biology +21|364|65662|4294967494|39.62|28.84|false|tom falkner|2013-03-01 09:11:58.703220|31.66|opthamology +39|299|65649|4294967542|46.94|37.07|true|ethan garcia|2013-03-01 09:11:58.703216|70.63|xylophone band +73|496|65546|4294967339|12.86|33.70|false|priscilla hernandez|2013-03-01 09:11:58.703133|47.91|quiet hour +3|403|65562|4294967439|8.95|26.97|true|calvin zipper|2013-03-01 09:11:58.703290|10.83|forestry +108|450|65628|4294967469|65.61|12.21|true|yuri laertes|2013-03-01 09:11:58.703231|99.85|zync studies +-1|378|65747|4294967448|47.27|47.55|true|katie white|2013-03-01 09:11:58.703232|24.97|biology +78|333|65764|4294967500|48.54|45.61|false|quinn miller|2013-03-01 09:11:58.703236|8.55|quiet hour +91|270|65698|4294967509|69.77|28.87|true|gabriella brown|2013-03-01 09:11:58.703324|42.22|religion +74|310|65622|4294967361|32.15|37.59|false|yuri underhill|2013-03-01 09:11:58.703223|77.31|education +86|506|65724|4294967447|17.75|8.76|true|holly zipper|2013-03-01 09:11:58.703117|10.77|wind surfing +64|352|65617|4294967301|82.51|37.60|true|quinn quirinius|2013-03-01 09:11:58.703257|46.93|yard duty +66|300|65702|4294967307|65.14|36.79|true|mike quirinius|2013-03-01 09:11:58.703168|85.22|philosophy +34|477|65655|4294967527|62.68|2.52|true|victor miller|2013-03-01 09:11:58.703161|81.78|biology +99|414|65677|4294967493|35.74|6.63|true|luke thompson|2013-03-01 09:11:58.703224|57.03|values clariffication +99|285|65544|4294967320|50.38|46.60|true|priscilla king|2013-03-01 09:11:58.703165|19.24|undecided +45|390|65771|4294967310|28.38|3.69|true|zach quirinius|2013-03-01 09:11:58.703110|67.02|history +105|491|65682|4294967354|16.72|26.38|true|mike hernandez|2013-03-01 09:11:58.703287|39.92|yard duty +29|497|65691|4294967400|66.99|4.04|true|alice hernandez|2013-03-01 09:11:58.703190|50.00|education +114|307|65756|4294967464|35.68|21.55|false|ulysses nixon|2013-03-01 09:11:58.703298|37.69|linguistics +27|274|65749|4294967296|41.54|2.15|false|jessica steinbeck|2013-03-01 09:11:58.703318|18.68|quiet hour +69|380|65741|4294967327|91.81|3.91|false|calvin nixon|2013-03-01 09:11:58.703143|86.92|joggying +33|450|65650|4294967534|76.49|28.65|true|mike nixon|2013-03-01 09:11:58.703315|98.68|study skills +41|296|65654|4294967379|22.74|35.11|true|victor young|2013-03-01 09:11:58.703278|19.63|nap time +74|389|65591|4294967461|56.17|44.97|true|david xylophone|2013-03-01 09:11:58.703302|77.64|debate +50|297|65759|4294967400|74.10|49.50|true|quinn king|2013-03-01 09:11:58.703081|37.70|religion +11|402|65725|4294967347|51.14|20.08|true|gabriella allen|2013-03-01 09:11:58.703181|29.57|quiet hour +79|419|65732|4294967335|57.51|11.39|false|fred quirinius|2013-03-01 09:11:58.703190|93.96|wind surfing +90|419|65735|4294967469|25.68|4.31|true|xavier johnson|2013-03-01 09:11:58.703209|20.68|history +86|337|65709|4294967329|87.33|35.86|false|gabriella van buren|2013-03-01 09:11:58.703208|82.36|education +107|312|65714|4294967456|65.27|18.07|false|victor ichabod|2013-03-01 09:11:58.703114|94.63|joggying +82|504|65607|4294967328|28.26|29.72|true|mike young|2013-03-01 09:11:58.703267|80.00|geology +106|286|65743|4294967350|42.84|17.53|true|victor allen|2013-03-01 09:11:58.703084|74.13|biology +116|310|65588|4294967518|14.74|43.49|false|mike ichabod|2013-03-01 09:11:58.703222|83.52|joggying +43|354|65597|4294967415|44.65|36.18|false|calvin thompson|2013-03-01 09:11:58.703117|1.43|chemistry +50|303|65751|4294967343|3.57|26.92|true|wendy garcia|2013-03-01 09:11:58.703289|79.09|history +66|456|65782|4294967314|0.68|30.38|true|yuri brown|2013-03-01 09:11:58.703230|72.50|forestry +2|332|65756|4294967474|93.43|49.44|false|irene garcia|2013-03-01 09:11:58.703085|78.48|history +78|510|65646|4294967299|10.10|27.68|false|mike falkner|2013-03-01 09:11:58.703217|99.53|values clariffication +7|269|65695|4294967435|89.34|32.85|false|holly white|2013-03-01 09:11:58.703180|44.19|philosophy +81|305|65593|4294967450|20.16|40.49|true|mike carson|2013-03-01 09:11:58.703226|62.26|opthamology +6|367|65690|4294967446|5.99|46.66|false|katie ellison|2013-03-01 09:11:58.703242|13.78|chemistry +39|423|65740|4294967440|6.34|13.02|false|alice davidson|2013-03-01 09:11:58.703306|81.98|topology +47|479|65628|4294967364|92.30|37.05|true|xavier polk|2013-03-01 09:11:58.703323|17.60|debate +92|261|65632|4294967323|12.98|16.82|false|holly brown|2013-03-01 09:11:58.703096|72.10|chemistry +10|456|65691|4294967407|18.80|47.75|true|bob carson|2013-03-01 09:11:58.703191|64.98|religion +30|406|65691|4294967395|47.08|0.84|false|wendy miller|2013-03-01 09:11:58.703205|85.94|xylophone band +31|272|65566|4294967371|1.86|46.07|true|priscilla king|2013-03-01 09:11:58.703139|52.17|opthamology +94|441|65684|4294967336|72.89|33.19|false|alice hernandez|2013-03-01 09:11:58.703302|96.24|study skills +8|410|65607|4294967297|41.74|39.09|false|katie xylophone|2013-03-01 09:11:58.703126|19.32|quiet hour +114|452|65588|4294967301|32.16|46.67|false|xavier allen|2013-03-01 09:11:58.703237|1.55|forestry +38|449|65567|4294967415|27.53|4.16|false|xavier ellison|2013-03-01 09:11:58.703224|56.18|education +53|354|65768|4294967384|13.84|16.39|false|mike johnson|2013-03-01 09:11:58.703089|62.21|study skills +85|339|65743|4294967406|8.87|14.30|false|wendy nixon|2013-03-01 09:11:58.703233|24.05|yard duty +75|305|65791|4294967467|17.58|6.21|true|xavier miller|2013-03-01 09:11:58.703322|22.80|zync studies +113|507|65635|4294967351|54.03|12.26|false|sarah ovid|2013-03-01 09:11:58.703075|27.05|biology +106|446|65762|4294967365|98.41|22.06|false|quinn ovid|2013-03-01 09:11:58.703197|79.65|topology +56|385|65713|4294967324|4.70|28.11|true|calvin ichabod|2013-03-01 09:11:58.703181|28.17|education +59|396|65708|4294967434|44.30|2.66|true|zach young|2013-03-01 09:11:58.703071|99.58|american history +70|289|65601|4294967536|1.10|42.66|true|oscar young|2013-03-01 09:11:58.703147|64.24|wind surfing +86|457|65648|4294967497|24.71|13.83|false|wendy zipper|2013-03-01 09:11:58.703123|91.58|geology +112|400|65740|4294967327|85.64|24.36|false|calvin steinbeck|2013-03-01 09:11:58.703181|70.31|education +92|409|65728|4294967378|56.72|39.71|false|alice johnson|2013-03-01 09:11:58.703320|74.76|yard duty +13|449|65542|4294967370|0.27|9.42|false|wendy polk|2013-03-01 09:11:58.703137|76.52|history +73|372|65738|4294967503|65.31|33.82|false|nick zipper|2013-03-01 09:11:58.703164|74.59|joggying +17|375|65786|4294967420|71.28|4.38|true|nick ellison|2013-03-01 09:11:58.703132|90.38|quiet hour +90|296|65670|4294967354|66.56|4.76|false|fred brown|2013-03-01 09:11:58.703259|15.42|religion +97|503|65609|4294967511|25.54|16.89|false|gabriella hernandez|2013-03-01 09:11:58.703076|23.79|chemistry +49|324|65573|4294967358|76.40|15.20|false|gabriella falkner|2013-03-01 09:11:58.703108|59.49|biology +65|434|65607|4294967531|5.05|14.42|false|ethan allen|2013-03-01 09:11:58.703145|67.90|philosophy +80|363|65547|4294967353|43.21|19.00|true|fred johnson|2013-03-01 09:11:58.703202|72.09|philosophy +7|485|65704|4294967514|40.20|21.36|true|jessica davidson|2013-03-01 09:11:58.703090|58.79|geology +23|256|65615|4294967499|20.66|49.68|true|victor johnson|2013-03-01 09:11:58.703303|68.95|philosophy +123|302|65601|4294967523|8.98|43.39|false|yuri carson|2013-03-01 09:11:58.703128|14.66|debate +22|260|65708|4294967415|36.14|3.80|true|david johnson|2013-03-01 09:11:58.703176|24.98|opthamology +46|272|65539|4294967337|46.84|3.27|true|katie van buren|2013-03-01 09:11:58.703149|58.85|xylophone band +70|425|65662|4294967488|72.09|35.77|false|oscar ovid|2013-03-01 09:11:58.703186|93.41|zync studies +33|269|65774|4294967324|81.99|34.57|true|bob johnson|2013-03-01 09:11:58.703302|74.36|topology +38|282|65615|4294967542|60.51|45.27|false|calvin steinbeck|2013-03-01 09:11:58.703168|1.39|industrial engineering +43|401|65655|4294967392|52.67|10.00|true|katie hernandez|2013-03-01 09:11:58.703160|62.95|debate +33|361|65788|4294967539|96.24|45.70|false|mike xylophone|2013-03-01 09:11:58.703119|52.02|study skills +71|353|65635|4294967507|16.48|27.51|true|luke polk|2013-03-01 09:11:58.703206|7.12|education +100|326|65652|4294967302|1.64|1.22|false|calvin laertes|2013-03-01 09:11:58.703249|72.95|yard duty +82|370|65690|4294967524|87.29|41.62|false|zach falkner|2013-03-01 09:11:58.703312|54.31|philosophy +64|304|65652|4294967444|24.17|11.62|true|katie van buren|2013-03-01 09:11:58.703212|9.88|biology +47|322|65569|4294967419|32.81|8.89|true|holly xylophone|2013-03-01 09:11:58.703246|61.52|linguistics +74|310|65673|4294967317|19.28|7.44|true|tom falkner|2013-03-01 09:11:58.703162|66.98|xylophone band +76|422|65734|4294967405|34.92|14.58|true|gabriella ichabod|2013-03-01 09:11:58.703102|53.77|quiet hour +33|302|65541|4294967428|63.52|44.31|false|priscilla xylophone|2013-03-01 09:11:58.703323|48.17|education +62|482|65681|4294967458|56.14|13.50|true|alice ellison|2013-03-01 09:11:58.703133|61.85|study skills +111|328|65615|4294967505|57.53|2.63|false|ethan underhill|2013-03-01 09:11:58.703292|50.78|american history +104|371|65660|4294967320|68.40|0.87|true|nick robinson|2013-03-01 09:11:58.703184|14.19|industrial engineering +64|363|65643|4294967370|14.94|9.78|false|luke laertes|2013-03-01 09:11:58.703141|8.62|philosophy +7|388|65622|4294967354|85.47|28.95|false|victor brown|2013-03-01 09:11:58.703189|63.40|chemistry +46|386|65580|4294967495|91.25|3.73|true|irene underhill|2013-03-01 09:11:58.703157|72.91|debate +112|320|65564|4294967351|96.78|2.50|true|victor thompson|2013-03-01 09:11:58.703215|31.01|opthamology +22|268|65753|4294967536|87.48|1.97|false|nick ichabod|2013-03-01 09:11:58.703110|58.81|debate +123|376|65623|4294967440|29.22|20.61|false|xavier brown|2013-03-01 09:11:58.703262|53.50|geology +44|421|65729|4294967523|64.84|26.16|true|priscilla davidson|2013-03-01 09:11:58.703306|70.38|chemistry +68|273|65668|4294967386|63.91|33.90|false|bob nixon|2013-03-01 09:11:58.703295|9.43|kindergarten +43|305|65621|4294967386|31.02|12.13|false|rachel ellison|2013-03-01 09:11:58.703166|49.81|undecided +44|378|65695|4294967447|7.25|5.15|false|ethan polk|2013-03-01 09:11:58.703291|0.96|yard duty +63|333|65559|4294967429|4.28|5.60|false|zach davidson|2013-03-01 09:11:58.703294|75.82|chemistry +24|313|65621|4294967376|59.94|47.02|false|sarah ellison|2013-03-01 09:11:58.703079|53.13|forestry +107|353|65715|4294967503|29.29|7.91|false|luke steinbeck|2013-03-01 09:11:58.703254|62.56|values clariffication +84|286|65671|4294967388|43.62|14.13|false|oscar miller|2013-03-01 09:11:58.703213|81.81|nap time +46|327|65595|4294967312|8.19|40.79|true|oscar steinbeck|2013-03-01 09:11:58.703304|83.49|religion +54|507|65769|4294967319|32.86|46.77|false|irene miller|2013-03-01 09:11:58.703208|65.08|mathematics +38|490|65669|4294967514|21.76|47.81|false|oscar carson|2013-03-01 09:11:58.703224|64.60|study skills +101|302|65743|4294967491|0.02|1.24|false|fred zipper|2013-03-01 09:11:58.703312|33.88|values clariffication +14|411|65575|4294967328|48.89|39.13|false|mike underhill|2013-03-01 09:11:58.703225|58.34|forestry +116|290|65600|4294967542|12.35|6.64|true|victor steinbeck|2013-03-01 09:11:58.703263|75.46|study skills +58|453|65684|4294967472|47.79|19.04|false|rachel zipper|2013-03-01 09:11:58.703144|23.53|education +16|271|65665|4294967519|24.19|9.45|false|gabriella garcia|2013-03-01 09:11:58.703092|18.11|mathematics +3|509|65601|4294967505|39.22|9.45|true|katie polk|2013-03-01 09:11:58.703299|96.76|zync studies +10|472|65644|4294967363|82.76|7.04|true|ethan van buren|2013-03-01 09:11:58.703325|36.96|linguistics +8|457|65722|4294967489|31.35|49.36|true|calvin xylophone|2013-03-01 09:11:58.703283|48.77|undecided +61|420|65746|4294967436|13.14|26.73|true|oscar brown|2013-03-01 09:11:58.703210|89.26|kindergarten +81|398|65752|4294967493|46.04|8.71|false|mike davidson|2013-03-01 09:11:58.703101|73.37|philosophy +31|306|65601|4294967429|67.65|31.26|false|calvin ellison|2013-03-01 09:11:58.703216|52.84|topology +102|327|65593|4294967342|49.77|6.02|true|quinn ichabod|2013-03-01 09:11:58.703137|57.95|study skills +47|314|65639|4294967327|15.65|21.63|false|wendy carson|2013-03-01 09:11:58.703315|3.73|quiet hour +88|295|65638|4294967502|56.26|12.09|false|xavier nixon|2013-03-01 09:11:58.703081|32.55|xylophone band +10|326|65618|4294967540|12.78|16.53|true|gabriella ichabod|2013-03-01 09:11:58.703308|27.75|yard duty +10|360|65757|4294967351|54.78|7.40|false|ulysses king|2013-03-01 09:11:58.703248|89.67|quiet hour +1|384|65691|4294967363|23.82|12.34|true|oscar zipper|2013-03-01 09:11:58.703286|17.29|history +25|419|65661|4294967408|26.23|38.15|false|nick quirinius|2013-03-01 09:11:58.703259|8.88|linguistics +82|438|65664|4294967442|79.70|20.16|false|david ovid|2013-03-01 09:11:58.703146|56.74|quiet hour +71|461|65671|4294967522|39.19|35.38|false|jessica young|2013-03-01 09:11:58.703145|8.86|topology +1|388|65719|4294967405|28.05|35.50|true|holly falkner|2013-03-01 09:11:58.703124|50.39|wind surfing +37|472|65699|4294967452|70.38|23.58|true|david ichabod|2013-03-01 09:11:58.703184|85.40|wind surfing +60|274|65698|4294967381|87.13|23.20|false|rachel johnson|2013-03-01 09:11:58.703170|92.59|biology +101|344|65783|4294967420|67.71|49.03|true|ethan quirinius|2013-03-01 09:11:58.703143|76.33|quiet hour +91|328|65601|4294967401|35.25|43.48|false|ulysses falkner|2013-03-01 09:11:58.703238|23.85|philosophy +95|301|65679|4294967380|69.97|4.18|true|yuri johnson|2013-03-01 09:11:58.703238|23.58|zync studies +33|369|65556|4294967325|62.16|6.62|true|victor laertes|2013-03-01 09:11:58.703120|56.74|chemistry +47|294|65768|4294967453|15.07|12.84|false|oscar ichabod|2013-03-01 09:11:58.703209|79.08|linguistics +68|357|65732|4294967549|74.85|21.26|false|luke ovid|2013-03-01 09:11:58.703081|92.57|linguistics +26|270|65661|4294967336|7.77|21.55|false|victor nixon|2013-03-01 09:11:58.703080|24.24|xylophone band +30|295|65572|4294967418|88.39|47.36|false|bob quirinius|2013-03-01 09:11:58.703284|84.05|american history +45|272|65753|4294967519|80.01|14.82|true|zach steinbeck|2013-03-01 09:11:58.703156|42.70|industrial engineering +108|448|65726|4294967447|42.11|26.74|true|bob young|2013-03-01 09:11:58.703314|30.10|history +75|416|65680|4294967468|59.57|37.31|false|holly polk|2013-03-01 09:11:58.703082|3.13|religion +35|380|65722|4294967401|63.18|44.41|false|rachel van buren|2013-03-01 09:11:58.703073|16.57|opthamology +6|323|65564|4294967414|68.32|12.79|false|quinn brown|2013-03-01 09:11:58.703135|72.41|industrial engineering +27|354|65688|4294967426|53.53|20.56|true|priscilla hernandez|2013-03-01 09:11:58.703193|41.75|quiet hour +26|371|65663|4294967385|98.39|49.05|true|holly ovid|2013-03-01 09:11:58.703126|90.31|kindergarten +34|444|65705|4294967453|1.02|47.11|true|sarah steinbeck|2013-03-01 09:11:58.703216|86.65|opthamology +29|458|65785|4294967363|63.33|9.40|true|david robinson|2013-03-01 09:11:58.703202|94.26|american history +8|477|65744|4294967339|13.77|14.30|false|ethan nixon|2013-03-01 09:11:58.703093|8.96|zync studies +74|292|65789|4294967430|92.21|15.09|true|victor polk|2013-03-01 09:11:58.703215|87.24|religion +53|283|65675|4294967541|45.20|20.96|true|nick polk|2013-03-01 09:11:58.703107|54.53|study skills +61|274|65542|4294967339|27.38|18.79|false|wendy young|2013-03-01 09:11:58.703085|92.94|yard duty +10|477|65722|4294967373|18.84|28.11|false|alice falkner|2013-03-01 09:11:58.703213|92.71|philosophy +117|286|65682|4294967389|1.05|7.12|false|rachel garcia|2013-03-01 09:11:58.703221|40.70|religion +41|304|65556|4294967345|74.88|48.05|true|yuri miller|2013-03-01 09:11:58.703323|90.74|forestry +30|455|65543|4294967479|2.31|0.76|true|quinn young|2013-03-01 09:11:58.703116|67.65|education +107|466|65669|4294967349|45.07|11.52|true|alice quirinius|2013-03-01 09:11:58.703141|48.64|joggying +97|495|65764|4294967547|4.42|22.76|false|katie ovid|2013-03-01 09:11:58.703258|17.29|study skills +24|268|65596|4294967314|19.69|22.35|true|sarah thompson|2013-03-01 09:11:58.703165|18.42|undecided +86|397|65769|4294967377|2.66|0.31|true|sarah davidson|2013-03-01 09:11:58.703223|52.63|study skills +73|447|65629|4294967395|98.57|43.81|false|victor carson|2013-03-01 09:11:58.703180|31.70|philosophy +47|486|65695|4294967337|14.72|2.25|true|ethan allen|2013-03-01 09:11:58.703173|87.72|philosophy +56|299|65711|4294967392|18.87|12.22|true|sarah van buren|2013-03-01 09:11:58.703121|55.92|yard duty +67|382|65718|4294967455|19.72|43.16|true|nick steinbeck|2013-03-01 09:11:58.703125|73.64|topology +15|438|65766|4294967335|24.63|42.35|true|jessica zipper|2013-03-01 09:11:58.703263|93.01|study skills +87|490|65658|4294967381|57.81|6.23|true|nick white|2013-03-01 09:11:58.703269|54.76|education +55|463|65633|4294967458|87.18|25.00|false|rachel carson|2013-03-01 09:11:58.703254|24.84|joggying +65|360|65686|4294967508|79.84|0.55|false|holly king|2013-03-01 09:11:58.703312|37.10|values clariffication +30|376|65640|4294967332|1.90|20.38|true|irene carson|2013-03-01 09:11:58.703323|96.62|philosophy +7|443|65546|4294967471|26.21|23.73|false|xavier allen|2013-03-01 09:11:58.703102|83.86|history +50|370|65596|4294967397|74.62|21.35|true|fred king|2013-03-01 09:11:58.703194|13.80|education +120|306|65589|4294967534|25.43|48.58|false|katie carson|2013-03-01 09:11:58.703171|73.21|linguistics +1|325|65614|4294967488|70.74|47.86|false|irene thompson|2013-03-01 09:11:58.703118|9.02|debate +10|284|65628|4294967468|36.17|42.53|false|priscilla ichabod|2013-03-01 09:11:58.703153|20.37|quiet hour +61|363|65588|4294967408|32.14|39.13|false|wendy miller|2013-03-01 09:11:58.703301|13.06|mathematics +83|495|65563|4294967370|11.93|10.44|true|ulysses garcia|2013-03-01 09:11:58.703139|79.58|opthamology +8|477|65780|4294967526|70.42|31.48|false|luke zipper|2013-03-01 09:11:58.703185|39.07|linguistics +12|389|65674|4294967354|44.18|25.85|false|irene hernandez|2013-03-01 09:11:58.703250|2.51|debate +78|499|65617|4294967364|20.30|49.32|false|bob ellison|2013-03-01 09:11:58.703094|60.38|wind surfing +48|371|65765|4294967537|39.16|31.96|false|david allen|2013-03-01 09:11:58.703264|36.91|chemistry +85|307|65754|4294967485|84.89|42.77|true|david ellison|2013-03-01 09:11:58.703280|31.02|kindergarten +48|355|65746|4294967407|3.92|2.56|true|rachel robinson|2013-03-01 09:11:58.703217|3.84|mathematics +88|289|65636|4294967470|23.16|29.03|true|irene xylophone|2013-03-01 09:11:58.703289|63.23|joggying +21|393|65624|4294967447|60.30|3.68|true|katie ellison|2013-03-01 09:11:58.703152|93.09|religion +-2|346|65698|4294967318|21.56|35.32|false|sarah steinbeck|2013-03-01 09:11:58.703169|38.48|chemistry +117|271|65734|4294967430|69.50|39.99|false|gabriella underhill|2013-03-01 09:11:58.703312|64.40|joggying +8|395|65659|4294967403|54.43|48.91|false|david zipper|2013-03-01 09:11:58.703305|87.67|wind surfing +65|262|65726|4294967337|37.09|4.93|true|calvin brown|2013-03-01 09:11:58.703214|37.35|study skills +22|419|65679|4294967500|72.81|4.94|true|priscilla garcia|2013-03-01 09:11:58.703276|32.02|values clariffication +54|496|65716|4294967395|75.81|31.28|false|david garcia|2013-03-01 09:11:58.703152|94.44|history +79|421|65634|4294967311|67.99|35.04|false|quinn zipper|2013-03-01 09:11:58.703296|29.09|undecided +31|359|65557|4294967392|34.34|8.03|true|zach davidson|2013-03-01 09:11:58.703119|10.81|wind surfing +116|259|65627|4294967384|34.79|8.88|false|nick polk|2013-03-01 09:11:58.703269|18.08|opthamology +120|382|65622|4294967300|51.87|41.64|true|alice falkner|2013-03-01 09:11:58.703223|59.68|debate +85|266|65693|4294967470|9.88|27.76|true|david polk|2013-03-01 09:11:58.703190|5.00|undecided +55|438|65774|4294967483|72.31|43.28|false|wendy underhill|2013-03-01 09:11:58.703125|24.98|philosophy +87|301|65685|4294967357|83.13|22.93|false|holly underhill|2013-03-01 09:11:58.703141|71.99|values clariffication +11|275|65632|4294967436|48.01|20.25|false|xavier zipper|2013-03-01 09:11:58.703177|82.20|undecided +67|330|65727|4294967303|73.86|22.28|false|bob falkner|2013-03-01 09:11:58.703303|35.20|religion +89|472|65547|4294967506|80.16|37.65|false|zach van buren|2013-03-01 09:11:58.703286|84.69|undecided +114|504|65777|4294967341|30.22|27.50|true|jessica ovid|2013-03-01 09:11:58.703192|12.87|yard duty +121|457|65679|4294967502|82.82|47.25|false|quinn carson|2013-03-01 09:11:58.703213|15.76|philosophy +83|488|65562|4294967333|47.81|38.68|false|wendy ichabod|2013-03-01 09:11:58.703261|99.55|topology +104|399|65573|4294967530|19.04|2.99|false|zach king|2013-03-01 09:11:58.703275|36.95|nap time +64|258|65568|4294967540|13.57|26.49|true|zach steinbeck|2013-03-01 09:11:58.703241|72.99|joggying +15|456|65599|4294967437|40.55|47.57|true|quinn ellison|2013-03-01 09:11:58.703106|79.80|biology +62|418|65540|4294967470|62.72|31.17|false|rachel robinson|2013-03-01 09:11:58.703143|88.46|linguistics +68|457|65624|4294967349|67.92|11.59|false|quinn carson|2013-03-01 09:11:58.703317|92.18|undecided +124|420|65583|4294967443|89.94|15.06|false|zach quirinius|2013-03-01 09:11:58.703250|39.55|zync studies +45|450|65708|4294967502|75.06|15.97|true|alice laertes|2013-03-01 09:11:58.703269|60.82|values clariffication +59|310|65610|4294967405|81.84|9.09|false|gabriella nixon|2013-03-01 09:11:58.703180|86.51|religion +110|260|65568|4294967338|90.76|9.92|true|jessica polk|2013-03-01 09:11:58.703223|89.32|religion +64|423|65661|4294967323|34.80|25.13|false|yuri ichabod|2013-03-01 09:11:58.703248|71.35|values clariffication +106|402|65643|4294967544|0.99|10.18|false|nick xylophone|2013-03-01 09:11:58.703317|15.27|geology +114|293|65680|4294967480|91.65|4.66|false|gabriella nixon|2013-03-01 09:11:58.703261|54.27|philosophy +37|494|65782|4294967513|28.16|33.43|false|calvin polk|2013-03-01 09:11:58.703210|1.29|education +5|342|65730|4294967339|71.79|39.68|false|jessica falkner|2013-03-01 09:11:58.703320|18.38|chemistry +13|291|65731|4294967448|78.09|31.31|false|zach ovid|2013-03-01 09:11:58.703143|33.04|american history +76|332|65700|4294967495|82.17|34.84|false|wendy allen|2013-03-01 09:11:58.703304|98.64|philosophy +102|379|65762|4294967354|82.09|48.14|false|bob robinson|2013-03-01 09:11:58.703110|2.35|opthamology +48|461|65728|4294967326|81.74|29.69|false|quinn king|2013-03-01 09:11:58.703231|96.77|linguistics +8|290|65759|4294967309|19.55|23.59|true|yuri ichabod|2013-03-01 09:11:58.703136|45.24|biology +71|317|65543|4294967326|28.33|17.32|true|fred zipper|2013-03-01 09:11:58.703308|46.99|geology +63|278|65696|4294967494|86.82|7.05|false|victor zipper|2013-03-01 09:11:58.703279|43.71|opthamology +49|436|65677|4294967389|65.83|29.87|true|calvin ellison|2013-03-01 09:11:58.703078|97.03|nap time +82|294|65560|4294967406|80.20|37.60|true|rachel nixon|2013-03-01 09:11:58.703302|85.55|study skills +120|427|65599|4294967451|9.85|13.20|false|irene miller|2013-03-01 09:11:58.703254|65.21|nap time +31|447|65573|4294967516|84.58|21.91|true|irene hernandez|2013-03-01 09:11:58.703170|9.05|yard duty +37|443|65692|4294967383|62.59|31.85|false|zach van buren|2013-03-01 09:11:58.703132|28.33|religion +-2|318|65730|4294967403|5.43|13.93|true|tom ichabod|2013-03-01 09:11:58.703165|38.98|history +22|354|65714|4294967513|31.54|31.06|false|oscar zipper|2013-03-01 09:11:58.703076|84.97|opthamology +100|286|65705|4294967502|49.20|13.53|true|alice young|2013-03-01 09:11:58.703300|46.25|opthamology +42|388|65764|4294967299|43.29|36.20|true|jessica johnson|2013-03-01 09:11:58.703122|26.32|debate +48|292|65598|4294967550|46.74|6.48|false|katie davidson|2013-03-01 09:11:58.703102|37.02|zync studies +16|410|65547|4294967516|31.12|40.17|false|katie ichabod|2013-03-01 09:11:58.703254|30.49|forestry +-3|485|65661|4294967441|26.21|16.19|false|alice xylophone|2013-03-01 09:11:58.703129|96.95|topology +51|472|65757|4294967310|35.32|16.73|true|irene brown|2013-03-01 09:11:58.703071|77.55|values clariffication +18|376|65604|4294967345|74.60|27.44|false|nick brown|2013-03-01 09:11:58.703235|83.19|chemistry +51|410|65657|4294967374|86.83|2.66|false|priscilla king|2013-03-01 09:11:58.703314|59.93|forestry +37|283|65615|4294967393|82.63|24.16|true|ethan johnson|2013-03-01 09:11:58.703273|70.41|education +58|336|65573|4294967305|48.20|13.55|true|wendy thompson|2013-03-01 09:11:58.703273|37.97|history +29|450|65684|4294967368|44.78|8.08|true|fred young|2013-03-01 09:11:58.703222|18.03|yard duty +44|506|65618|4294967494|61.77|47.01|false|oscar zipper|2013-03-01 09:11:58.703255|61.68|mathematics +89|272|65716|4294967533|84.87|30.97|true|nick falkner|2013-03-01 09:11:58.703144|33.03|philosophy +90|459|65544|4294967339|1.82|33.44|false|tom garcia|2013-03-01 09:11:58.703322|48.33|quiet hour +43|300|65685|4294967315|98.76|32.30|true|calvin zipper|2013-03-01 09:11:58.703283|57.38|zync studies +38|256|65744|4294967497|47.17|18.11|false|tom allen|2013-03-01 09:11:58.703264|70.87|biology +73|293|65791|4294967485|48.12|24.61|false|yuri miller|2013-03-01 09:11:58.703103|10.20|chemistry +-2|353|65598|4294967450|81.49|48.77|false|jessica steinbeck|2013-03-01 09:11:58.703299|74.29|quiet hour +90|289|65676|4294967359|4.08|12.26|false|quinn ellison|2013-03-01 09:11:58.703286|63.08|wind surfing +21|473|65541|4294967434|91.68|1.02|true|nick miller|2013-03-01 09:11:58.703307|96.21|philosophy +20|418|65753|4294967549|25.55|14.03|false|xavier falkner|2013-03-01 09:11:58.703090|21.84|wind surfing +99|431|65694|4294967346|69.53|48.70|false|fred ichabod|2013-03-01 09:11:58.703321|23.84|debate +108|330|65639|4294967518|65.78|37.87|true|sarah allen|2013-03-01 09:11:58.703177|30.02|philosophy +51|445|65591|4294967463|28.75|28.64|true|fred steinbeck|2013-03-01 09:11:58.703188|72.43|mathematics +107|329|65550|4294967523|30.68|25.24|true|victor falkner|2013-03-01 09:11:58.703123|98.13|opthamology +96|407|65682|4294967370|27.75|8.89|true|holly falkner|2013-03-01 09:11:58.703124|19.83|linguistics +7|410|65620|4294967440|64.34|44.61|true|holly robinson|2013-03-01 09:11:58.703227|98.38|xylophone band +105|307|65603|4294967374|39.34|45.63|false|fred laertes|2013-03-01 09:11:58.703246|78.62|american history +29|344|65669|4294967355|11.37|17.47|true|rachel hernandez|2013-03-01 09:11:58.703131|46.93|yard duty +110|492|65673|4294967545|30.78|8.37|true|bob quirinius|2013-03-01 09:11:58.703168|30.41|philosophy +42|351|65683|4294967531|1.39|6.31|true|victor quirinius|2013-03-01 09:11:58.703165|25.40|philosophy +11|510|65716|4294967452|11.83|13.53|false|quinn zipper|2013-03-01 09:11:58.703104|87.62|chemistry +99|301|65638|4294967535|18.57|32.51|true|gabriella falkner|2013-03-01 09:11:58.703279|69.42|wind surfing +37|406|65734|4294967486|74.53|34.86|false|ulysses carson|2013-03-01 09:11:58.703151|84.93|education +-3|386|65611|4294967331|58.81|22.43|true|sarah miller|2013-03-01 09:11:58.703160|75.23|mathematics +66|378|65710|4294967320|86.53|4.67|false|victor ichabod|2013-03-01 09:11:58.703110|36.77|industrial engineering +55|458|65744|4294967441|38.51|2.84|true|oscar white|2013-03-01 09:11:58.703156|45.33|forestry +107|287|65577|4294967465|9.60|32.12|true|calvin falkner|2013-03-01 09:11:58.703135|28.31|philosophy +25|374|65605|4294967302|2.18|31.56|false|sarah king|2013-03-01 09:11:58.703268|11.17|biology +90|354|65756|4294967450|96.65|44.66|true|priscilla hernandez|2013-03-01 09:11:58.703192|35.13|zync studies +75|466|65710|4294967340|81.35|6.55|true|rachel ovid|2013-03-01 09:11:58.703159|34.40|quiet hour +68|459|65777|4294967386|74.21|5.76|true|ethan ichabod|2013-03-01 09:11:58.703307|91.30|yard duty +42|379|65745|4294967497|84.31|45.49|true|ulysses underhill|2013-03-01 09:11:58.703171|99.19|american history +22|331|65536|4294967312|43.00|26.00|true|zach hernandez|2013-03-01 09:11:58.703134|47.60|linguistics +43|472|65670|4294967539|44.92|19.84|false|bob white|2013-03-01 09:11:58.703241|65.37|industrial engineering +67|410|65669|4294967413|26.15|15.96|false|katie brown|2013-03-01 09:11:58.703096|79.60|forestry +76|309|65607|4294967366|29.97|10.72|true|zach ovid|2013-03-01 09:11:58.703298|56.59|study skills +109|346|65751|4294967512|64.45|27.86|false|irene miller|2013-03-01 09:11:58.703213|20.97|philosophy +89|262|65630|4294967434|96.75|29.85|false|victor thompson|2013-03-01 09:11:58.703247|9.14|values clariffication +78|468|65719|4294967401|98.51|48.54|true|oscar carson|2013-03-01 09:11:58.703221|9.49|joggying +56|453|65762|4294967451|7.39|16.74|true|victor ichabod|2013-03-01 09:11:58.703142|4.97|joggying +30|483|65638|4294967473|91.28|39.28|false|david ellison|2013-03-01 09:11:58.703195|42.28|debate +57|383|65539|4294967301|42.83|33.77|true|zach ichabod|2013-03-01 09:11:58.703226|57.58|topology +113|266|65578|4294967449|28.72|17.90|true|oscar zipper|2013-03-01 09:11:58.703312|42.74|joggying +112|459|65756|4294967380|17.53|32.84|true|mike underhill|2013-03-01 09:11:58.703106|11.45|forestry +63|273|65777|4294967420|93.56|45.98|true|wendy van buren|2013-03-01 09:11:58.703101|44.65|yard duty +79|256|65616|4294967514|76.38|12.08|false|alice ovid|2013-03-01 09:11:58.703176|54.26|history +42|431|65726|4294967376|35.48|18.25|false|ulysses davidson|2013-03-01 09:11:58.703181|98.38|american history +59|289|65557|4294967434|57.02|17.92|false|wendy ichabod|2013-03-01 09:11:58.703261|26.94|wind surfing +114|455|65571|4294967369|61.58|3.08|true|irene van buren|2013-03-01 09:11:58.703110|0.84|religion +118|410|65615|4294967382|25.13|26.52|true|victor hernandez|2013-03-01 09:11:58.703072|48.94|forestry +69|419|65571|4294967318|43.32|1.57|true|luke hernandez|2013-03-01 09:11:58.703073|44.36|debate +93|289|65713|4294967460|35.54|10.02|false|katie hernandez|2013-03-01 09:11:58.703186|55.78|debate +31|319|65582|4294967396|80.56|28.75|true|tom laertes|2013-03-01 09:11:58.703320|69.78|industrial engineering +64|414|65600|4294967396|40.26|6.06|false|sarah carson|2013-03-01 09:11:58.703256|71.93|chemistry +84|343|65552|4294967353|79.16|23.81|false|wendy steinbeck|2013-03-01 09:11:58.703142|96.53|debate +31|444|65635|4294967458|53.49|14.97|false|rachel king|2013-03-01 09:11:58.703290|15.38|undecided +42|304|65778|4294967403|86.69|16.26|true|ulysses allen|2013-03-01 09:11:58.703155|86.27|undecided +109|257|65771|4294967463|95.58|46.19|true|zach zipper|2013-03-01 09:11:58.703096|50.17|debate +30|373|65695|4294967475|90.83|12.82|false|rachel allen|2013-03-01 09:11:58.703260|77.86|religion +83|473|65636|4294967328|70.95|25.97|true|victor thompson|2013-03-01 09:11:58.703223|70.16|mathematics +55|378|65631|4294967444|16.54|24.36|false|fred king|2013-03-01 09:11:58.703079|9.13|wind surfing +113|468|65735|4294967362|90.18|9.86|false|ethan thompson|2013-03-01 09:11:58.703256|11.12|quiet hour +114|294|65763|4294967489|61.76|24.26|false|luke brown|2013-03-01 09:11:58.703282|15.58|nap time +37|411|65608|4294967418|23.63|18.42|true|fred quirinius|2013-03-01 09:11:58.703285|48.49|opthamology +60|415|65715|4294967479|87.07|18.50|false|david polk|2013-03-01 09:11:58.703138|68.00|biology +44|417|65747|4294967494|72.85|30.43|true|zach hernandez|2013-03-01 09:11:58.703189|46.35|study skills +71|341|65717|4294967485|21.77|14.37|true|quinn davidson|2013-03-01 09:11:58.703190|78.98|nap time +37|405|65569|4294967488|66.69|26.91|false|david thompson|2013-03-01 09:11:58.703283|76.83|nap time +48|387|65600|4294967486|68.36|47.81|true|luke thompson|2013-03-01 09:11:58.703174|74.10|xylophone band +13|446|65602|4294967325|31.89|29.99|false|bob laertes|2013-03-01 09:11:58.703184|30.99|history +122|417|65601|4294967341|78.43|20.50|false|wendy hernandez|2013-03-01 09:11:58.703131|85.55|history +35|280|65723|4294967388|52.44|23.60|true|rachel ichabod|2013-03-01 09:11:58.703072|89.99|industrial engineering +85|318|65754|4294967433|35.93|5.24|true|mike xylophone|2013-03-01 09:11:58.703215|84.96|education +11|495|65588|4294967420|18.31|28.31|true|holly polk|2013-03-01 09:11:58.703202|20.69|kindergarten +75|471|65752|4294967302|18.57|3.46|true|wendy johnson|2013-03-01 09:11:58.703150|28.33|topology +-2|261|65744|4294967452|72.59|29.88|true|ethan falkner|2013-03-01 09:11:58.703211|1.40|chemistry +51|262|65564|4294967412|15.13|31.03|false|yuri polk|2013-03-01 09:11:58.703093|38.73|topology +106|479|65594|4294967463|96.12|30.80|true|oscar quirinius|2013-03-01 09:11:58.703111|72.56|undecided +31|273|65559|4294967448|54.64|17.60|false|katie robinson|2013-03-01 09:11:58.703261|2.07|mathematics +69|488|65657|4294967443|20.99|5.73|false|tom steinbeck|2013-03-01 09:11:58.703181|42.54|industrial engineering +118|358|65571|4294967300|54.39|31.72|false|victor steinbeck|2013-03-01 09:11:58.703274|97.94|wind surfing +108|334|65624|4294967305|37.79|45.89|true|luke young|2013-03-01 09:11:58.703076|61.50|zync studies +119|495|65632|4294967465|15.49|37.52|false|jessica thompson|2013-03-01 09:11:58.703288|30.93|topology +17|317|65624|4294967523|57.78|23.39|false|bob falkner|2013-03-01 09:11:58.703144|5.35|xylophone band +16|345|65649|4294967409|89.62|49.79|false|nick garcia|2013-03-01 09:11:58.703270|68.12|biology +49|261|65719|4294967418|8.44|44.95|true|ethan nixon|2013-03-01 09:11:58.703200|88.50|industrial engineering +83|379|65579|4294967462|6.11|32.56|false|tom thompson|2013-03-01 09:11:58.703248|25.65|linguistics +33|291|65569|4294967416|80.65|44.95|false|ulysses underhill|2013-03-01 09:11:58.703248|46.77|opthamology +14|497|65547|4294967299|86.80|31.43|false|oscar miller|2013-03-01 09:11:58.703294|81.54|topology +43|472|65609|4294967473|7.03|40.40|true|priscilla johnson|2013-03-01 09:11:58.703115|2.36|study skills +68|419|65735|4294967305|86.09|42.77|false|alice young|2013-03-01 09:11:58.703311|22.59|mathematics +121|476|65666|4294967372|34.30|35.47|false|alice ovid|2013-03-01 09:11:58.703236|39.21|joggying +58|431|65564|4294967436|74.87|2.27|true|mike van buren|2013-03-01 09:11:58.703141|61.23|mathematics +18|347|65547|4294967477|57.89|20.02|false|alice ichabod|2013-03-01 09:11:58.703290|81.21|kindergarten +17|367|65652|4294967353|41.28|22.59|false|alice nixon|2013-03-01 09:11:58.703220|82.79|industrial engineering +68|480|65709|4294967459|13.67|6.15|true|fred underhill|2013-03-01 09:11:58.703161|76.09|history +76|434|65681|4294967399|6.07|23.68|true|jessica white|2013-03-01 09:11:58.703283|5.49|quiet hour +15|271|65702|4294967512|71.04|38.06|false|irene robinson|2013-03-01 09:11:58.703247|45.54|industrial engineering +122|338|65538|4294967451|48.28|30.94|false|alice ichabod|2013-03-01 09:11:58.703154|53.35|philosophy +111|366|65759|4294967411|42.11|44.16|true|quinn brown|2013-03-01 09:11:58.703234|66.39|study skills +102|329|65679|4294967495|5.77|14.48|false|ulysses nixon|2013-03-01 09:11:58.703319|58.27|forestry +80|288|65687|4294967548|14.53|26.29|false|zach robinson|2013-03-01 09:11:58.703204|99.00|geology +62|306|65623|4294967456|56.45|8.93|false|xavier garcia|2013-03-01 09:11:58.703219|19.18|chemistry +13|458|65722|4294967508|30.06|48.77|false|katie white|2013-03-01 09:11:58.703209|77.13|zync studies +123|440|65718|4294967368|99.04|35.55|true|bob xylophone|2013-03-01 09:11:58.703174|55.45|zync studies +101|258|65582|4294967355|67.28|0.51|false|david garcia|2013-03-01 09:11:58.703178|18.57|forestry +53|286|65667|4294967527|36.95|48.93|true|quinn steinbeck|2013-03-01 09:11:58.703181|97.78|topology +49|421|65616|4294967469|45.36|5.30|false|calvin ovid|2013-03-01 09:11:58.703310|7.82|joggying +10|283|65665|4294967551|25.81|47.41|false|wendy hernandez|2013-03-01 09:11:58.703309|62.45|nap time +106|393|65786|4294967352|45.74|0.62|true|gabriella steinbeck|2013-03-01 09:11:58.703115|40.58|zync studies +81|444|65613|4294967510|73.45|21.14|false|ethan carson|2013-03-01 09:11:58.703320|54.67|xylophone band +15|339|65575|4294967308|50.83|41.44|false|irene laertes|2013-03-01 09:11:58.703131|5.93|study skills +19|447|65608|4294967432|82.05|13.00|false|ulysses allen|2013-03-01 09:11:58.703078|43.26|values clariffication +27|328|65663|4294967460|22.65|14.90|false|quinn steinbeck|2013-03-01 09:11:58.703080|14.03|education +36|488|65629|4294967372|94.18|36.49|false|oscar allen|2013-03-01 09:11:58.703297|42.35|history +82|469|65698|4294967493|90.10|22.72|false|ethan king|2013-03-01 09:11:58.703205|57.17|study skills +119|363|65707|4294967489|48.84|30.91|false|priscilla laertes|2013-03-01 09:11:58.703101|26.21|history +18|329|65601|4294967480|81.40|1.47|false|rachel underhill|2013-03-01 09:11:58.703104|17.68|mathematics +10|278|65641|4294967343|69.83|36.92|true|oscar quirinius|2013-03-01 09:11:58.703109|90.40|wind surfing +55|475|65675|4294967383|27.54|6.44|false|luke quirinius|2013-03-01 09:11:58.703245|9.82|joggying +79|345|65646|4294967363|96.49|46.27|true|jessica brown|2013-03-01 09:11:58.703226|56.65|linguistics +14|376|65678|4294967495|74.26|32.61|true|fred falkner|2013-03-01 09:11:58.703129|62.53|linguistics +49|360|65552|4294967309|27.00|16.92|true|tom hernandez|2013-03-01 09:11:58.703141|99.62|religion +36|310|65719|4294967343|73.15|35.88|false|quinn white|2013-03-01 09:11:58.703145|16.87|history +82|493|65546|4294967482|75.95|49.39|true|gabriella robinson|2013-03-01 09:11:58.703108|51.88|study skills +67|329|65669|4294967318|77.84|0.04|true|priscilla quirinius|2013-03-01 09:11:58.703291|25.90|zync studies +0|397|65607|4294967316|51.73|42.40|false|xavier johnson|2013-03-01 09:11:58.703195|17.72|american history +120|367|65785|4294967492|48.17|19.20|true|ethan polk|2013-03-01 09:11:58.703194|5.05|education +120|346|65660|4294967463|34.43|34.59|true|wendy brown|2013-03-01 09:11:58.703242|98.39|zync studies +80|380|65614|4294967454|64.16|31.60|true|xavier miller|2013-03-01 09:11:58.703310|88.94|linguistics +83|475|65658|4294967314|82.79|45.74|false|ethan brown|2013-03-01 09:11:58.703228|99.50|geology +24|372|65744|4294967340|72.48|49.80|false|bob brown|2013-03-01 09:11:58.703318|4.78|topology +50|468|65568|4294967371|17.45|4.19|false|gabriella quirinius|2013-03-01 09:11:58.703118|56.86|topology +34|511|65663|4294967410|30.71|32.61|true|oscar carson|2013-03-01 09:11:58.703153|73.75|history +51|316|65756|4294967356|19.28|38.02|false|priscilla ovid|2013-03-01 09:11:58.703269|79.14|biology +63|394|65699|4294967318|79.36|37.51|true|xavier van buren|2013-03-01 09:11:58.703288|99.98|biology +60|499|65674|4294967459|44.41|15.07|false|ethan van buren|2013-03-01 09:11:58.703167|64.91|religion +29|339|65556|4294967519|57.78|27.36|true|mike allen|2013-03-01 09:11:58.703102|1.78|study skills +91|463|65641|4294967543|92.21|42.43|true|oscar steinbeck|2013-03-01 09:11:58.703079|7.36|geology +56|260|65630|4294967390|88.79|32.44|true|quinn polk|2013-03-01 09:11:58.703088|81.60|chemistry +16|351|65730|4294967491|69.81|27.80|false|wendy king|2013-03-01 09:11:58.703185|53.14|study skills +5|503|65682|4294967429|86.57|38.88|false|ethan miller|2013-03-01 09:11:58.703209|19.93|quiet hour +111|371|65711|4294967523|74.58|14.80|true|jessica ichabod|2013-03-01 09:11:58.703219|31.22|american history +108|351|65737|4294967449|94.88|35.76|false|oscar ellison|2013-03-01 09:11:58.703201|14.16|history +58|263|65614|4294967297|67.18|30.87|true|calvin thompson|2013-03-01 09:11:58.703289|14.35|wind surfing +86|443|65571|4294967299|36.22|7.54|true|luke robinson|2013-03-01 09:11:58.703220|65.82|kindergarten +99|385|65623|4294967506|29.70|30.14|true|holly hernandez|2013-03-01 09:11:58.703125|19.19|religion +13|456|65781|4294967371|48.47|4.42|true|mike white|2013-03-01 09:11:58.703108|48.93|debate +99|345|65765|4294967470|97.85|24.77|false|calvin hernandez|2013-03-01 09:11:58.703265|91.43|xylophone band +63|256|65737|4294967541|3.38|11.59|false|fred hernandez|2013-03-01 09:11:58.703074|68.76|joggying +69|374|65783|4294967428|22.22|26.26|true|luke robinson|2013-03-01 09:11:58.703090|59.41|study skills +22|305|65670|4294967477|40.59|18.92|false|mike brown|2013-03-01 09:11:58.703265|43.00|wind surfing +12|325|65731|4294967386|51.67|13.68|true|holly van buren|2013-03-01 09:11:58.703174|74.08|undecided +33|325|65788|4294967381|12.41|15.21|false|ulysses hernandez|2013-03-01 09:11:58.703144|7.87|american history +49|347|65734|4294967358|41.60|8.38|true|mike laertes|2013-03-01 09:11:58.703070|83.64|kindergarten +45|373|65740|4294967384|17.88|46.15|true|xavier carson|2013-03-01 09:11:58.703080|68.09|forestry +14|281|65779|4294967508|71.86|14.41|false|calvin garcia|2013-03-01 09:11:58.703261|19.55|debate +20|388|65612|4294967433|9.81|32.18|false|wendy van buren|2013-03-01 09:11:58.703167|73.84|kindergarten +72|277|65559|4294967449|12.48|30.70|false|yuri steinbeck|2013-03-01 09:11:58.703290|94.85|american history +79|303|65765|4294967468|85.55|41.54|true|zach laertes|2013-03-01 09:11:58.703125|18.14|mathematics +22|358|65545|4294967409|0.90|5.38|true|ulysses garcia|2013-03-01 09:11:58.703076|37.67|american history +14|332|65755|4294967458|21.07|5.71|true|quinn brown|2013-03-01 09:11:58.703263|5.83|education +74|263|65736|4294967337|91.80|33.80|true|victor robinson|2013-03-01 09:11:58.703272|1.04|quiet hour +42|327|65620|4294967464|78.96|47.36|false|fred brown|2013-03-01 09:11:58.703188|49.62|philosophy +121|378|65569|4294967369|9.88|0.24|false|yuri garcia|2013-03-01 09:11:58.703098|5.45|linguistics +116|391|65737|4294967464|13.36|17.59|false|yuri xylophone|2013-03-01 09:11:58.703292|99.95|zync studies +95|410|65545|4294967505|76.99|29.09|true|oscar garcia|2013-03-01 09:11:58.703130|83.10|joggying +50|345|65754|4294967303|9.58|6.56|false|katie xylophone|2013-03-01 09:11:58.703246|13.59|xylophone band +80|312|65558|4294967400|98.06|44.00|false|fred falkner|2013-03-01 09:11:58.703278|1.34|wind surfing +104|354|65767|4294967529|32.48|2.17|false|wendy quirinius|2013-03-01 09:11:58.703316|10.88|xylophone band +113|412|65571|4294967520|75.05|33.87|false|sarah thompson|2013-03-01 09:11:58.703094|49.39|american history +46|376|65639|4294967420|16.16|23.93|true|sarah garcia|2013-03-01 09:11:58.703210|63.46|philosophy +-2|326|65618|4294967341|75.05|41.20|false|zach underhill|2013-03-01 09:11:58.703198|74.60|linguistics +89|466|65613|4294967463|7.30|3.27|true|fred polk|2013-03-01 09:11:58.703082|93.05|mathematics +101|403|65574|4294967380|7.05|23.43|false|rachel hernandez|2013-03-01 09:11:58.703193|54.85|topology +120|497|65669|4294967353|77.10|18.96|false|oscar ichabod|2013-03-01 09:11:58.703255|47.49|debate +75|472|65699|4294967386|62.59|38.97|true|quinn falkner|2013-03-01 09:11:58.703248|89.79|joggying +1|406|65694|4294967463|40.15|24.67|true|luke davidson|2013-03-01 09:11:58.703149|52.88|forestry +83|357|65699|4294967516|47.71|28.68|false|nick ichabod|2013-03-01 09:11:58.703291|87.29|joggying +120|267|65670|4294967415|64.71|27.20|false|ulysses davidson|2013-03-01 09:11:58.703274|19.89|philosophy +120|418|65780|4294967426|77.99|49.62|true|katie king|2013-03-01 09:11:58.703197|11.81|forestry +114|451|65567|4294967405|26.48|37.18|true|holly brown|2013-03-01 09:11:58.703162|8.60|values clariffication +82|505|65755|4294967418|24.51|20.66|true|tom quirinius|2013-03-01 09:11:58.703219|48.60|study skills +82|501|65616|4294967534|47.33|19.43|false|ulysses thompson|2013-03-01 09:11:58.703155|29.66|xylophone band +58|421|65762|4294967514|86.45|10.51|true|luke thompson|2013-03-01 09:11:58.703074|21.55|zync studies +55|303|65776|4294967347|72.18|17.97|true|xavier allen|2013-03-01 09:11:58.703090|79.04|religion +38|445|65546|4294967507|26.22|35.65|true|quinn brown|2013-03-01 09:11:58.703074|83.78|history +6|339|65712|4294967387|70.19|20.62|false|katie robinson|2013-03-01 09:11:58.703306|71.09|yard duty +55|492|65648|4294967465|34.32|40.91|true|priscilla miller|2013-03-01 09:11:58.703112|77.56|study skills +105|332|65791|4294967523|1.90|10.09|false|wendy ichabod|2013-03-01 09:11:58.703306|48.02|religion +59|291|65719|4294967443|95.17|6.98|false|yuri carson|2013-03-01 09:11:58.703305|35.21|industrial engineering +75|285|65631|4294967441|70.76|22.78|true|katie garcia|2013-03-01 09:11:58.703158|4.79|yard duty +58|365|65658|4294967496|0.35|18.45|false|irene zipper|2013-03-01 09:11:58.703188|63.78|history +106|332|65679|4294967459|76.64|2.98|false|jessica king|2013-03-01 09:11:58.703318|75.69|mathematics +114|394|65576|4294967427|3.08|32.33|false|victor polk|2013-03-01 09:11:58.703242|25.22|undecided +26|458|65616|4294967473|9.50|48.78|true|ulysses underhill|2013-03-01 09:11:58.703095|83.50|opthamology +3|408|65678|4294967548|27.21|10.11|false|priscilla davidson|2013-03-01 09:11:58.703258|88.75|joggying +1|405|65639|4294967479|64.20|46.87|false|bob hernandez|2013-03-01 09:11:58.703101|53.36|xylophone band +94|291|65644|4294967326|34.89|17.76|false|david king|2013-03-01 09:11:58.703188|94.49|xylophone band +110|490|65749|4294967420|21.99|36.30|true|xavier johnson|2013-03-01 09:11:58.703309|41.35|quiet hour +17|343|65607|4294967316|20.13|5.16|true|nick king|2013-03-01 09:11:58.703287|26.46|forestry +47|489|65788|4294967501|30.59|26.75|false|sarah steinbeck|2013-03-01 09:11:58.703106|23.33|biology +77|461|65689|4294967499|30.40|2.12|true|sarah allen|2013-03-01 09:11:58.703237|49.06|linguistics +116|436|65723|4294967528|23.05|23.83|false|mike king|2013-03-01 09:11:58.703109|30.82|industrial engineering +19|385|65644|4294967313|25.05|10.06|false|fred xylophone|2013-03-01 09:11:58.703291|13.93|wind surfing +72|454|65597|4294967539|45.90|34.00|false|victor polk|2013-03-01 09:11:58.703202|10.16|industrial engineering +115|495|65579|4294967316|58.10|27.99|false|holly carson|2013-03-01 09:11:58.703300|93.73|topology +116|309|65648|4294967392|18.93|33.02|false|fred van buren|2013-03-01 09:11:58.703279|16.21|kindergarten +51|257|65626|4294967510|23.18|27.79|true|katie garcia|2013-03-01 09:11:58.703131|46.12|zync studies +110|471|65726|4294967505|23.04|36.17|true|katie nixon|2013-03-01 09:11:58.703150|34.87|debate +65|460|65702|4294967413|21.04|38.09|false|wendy nixon|2013-03-01 09:11:58.703241|54.56|education +103|260|65734|4294967392|8.36|4.27|false|mike ellison|2013-03-01 09:11:58.703104|57.71|philosophy +11|312|65654|4294967311|4.17|6.45|true|irene ellison|2013-03-01 09:11:58.703324|32.94|opthamology +30|391|65656|4294967520|32.50|8.18|true|luke robinson|2013-03-01 09:11:58.703196|8.57|undecided +26|486|65768|4294967457|19.07|38.10|false|bob ovid|2013-03-01 09:11:58.703144|18.15|opthamology +61|463|65784|4294967382|78.25|4.79|true|zach allen|2013-03-01 09:11:58.703225|44.96|philosophy +66|345|65736|4294967378|4.98|4.80|false|zach underhill|2013-03-01 09:11:58.703307|8.98|biology +71|273|65621|4294967481|61.73|0.27|true|priscilla young|2013-03-01 09:11:58.703166|27.04|yard duty +34|339|65739|4294967374|17.37|29.76|true|quinn garcia|2013-03-01 09:11:58.703257|40.52|quiet hour +26|268|65777|4294967530|24.99|41.14|true|sarah underhill|2013-03-01 09:11:58.703276|64.21|zync studies +107|454|65760|4294967477|26.61|34.52|false|ethan brown|2013-03-01 09:11:58.703153|11.02|forestry +86|403|65596|4294967485|12.38|31.08|false|mike white|2013-03-01 09:11:58.703123|12.61|yard duty +16|307|65541|4294967536|95.60|30.44|false|sarah young|2013-03-01 09:11:58.703229|3.29|zync studies +66|422|65542|4294967337|57.20|20.32|false|xavier johnson|2013-03-01 09:11:58.703273|7.92|values clariffication +81|428|65717|4294967378|65.68|1.71|false|sarah miller|2013-03-01 09:11:58.703263|63.52|religion +96|259|65630|4294967462|53.70|6.16|true|luke zipper|2013-03-01 09:11:58.703082|75.04|joggying +22|405|65637|4294967542|77.52|7.86|true|luke miller|2013-03-01 09:11:58.703149|19.87|history +48|378|65700|4294967347|60.72|16.60|true|tom hernandez|2013-03-01 09:11:58.703211|60.89|mathematics +23|363|65572|4294967414|23.07|32.63|false|holly underhill|2013-03-01 09:11:58.703290|37.44|opthamology +43|267|65771|4294967495|75.60|25.22|true|irene ichabod|2013-03-01 09:11:58.703161|87.65|values clariffication +113|390|65758|4294967401|65.42|21.18|true|luke brown|2013-03-01 09:11:58.703304|19.43|topology +98|498|65690|4294967375|31.77|13.03|true|zach underhill|2013-03-01 09:11:58.703315|21.89|chemistry +27|375|65577|4294967406|76.76|31.09|false|quinn carson|2013-03-01 09:11:58.703141|72.54|biology +110|310|65652|4294967310|9.68|3.59|false|calvin johnson|2013-03-01 09:11:58.703093|0.37|education +5|283|65791|4294967546|29.29|22.17|false|quinn xylophone|2013-03-01 09:11:58.703248|61.34|biology +19|281|65541|4294967466|9.15|49.86|true|victor ovid|2013-03-01 09:11:58.703117|44.68|debate +53|471|65552|4294967356|30.81|27.49|false|oscar ellison|2013-03-01 09:11:58.703088|78.45|xylophone band +79|481|65706|4294967310|11.45|45.98|true|katie miller|2013-03-01 09:11:58.703111|36.11|forestry +76|416|65727|4294967545|25.06|32.71|true|yuri falkner|2013-03-01 09:11:58.703127|57.89|american history +34|494|65549|4294967308|61.19|23.83|false|victor white|2013-03-01 09:11:58.703211|7.57|history +7|355|65577|4294967460|77.81|41.90|true|oscar laertes|2013-03-01 09:11:58.703146|54.66|opthamology +57|486|65592|4294967443|22.38|23.19|true|victor white|2013-03-01 09:11:58.703200|41.90|religion +62|340|65740|4294967461|41.62|27.29|false|victor falkner|2013-03-01 09:11:58.703092|7.94|quiet hour +39|478|65765|4294967372|8.58|45.52|true|calvin white|2013-03-01 09:11:58.703113|45.35|religion +56|346|65736|4294967370|36.71|46.23|false|jessica xylophone|2013-03-01 09:11:58.703234|94.80|yard duty +76|501|65758|4294967459|54.85|14.76|true|zach young|2013-03-01 09:11:58.703123|91.37|history +67|325|65722|4294967514|1.36|11.64|true|holly ichabod|2013-03-01 09:11:58.703119|69.30|joggying +59|409|65749|4294967377|88.66|23.78|true|xavier davidson|2013-03-01 09:11:58.703309|2.68|joggying +27|264|65681|4294967524|53.33|22.93|false|holly garcia|2013-03-01 09:11:58.703122|65.28|nap time +74|257|65566|4294967517|68.54|43.27|true|priscilla laertes|2013-03-01 09:11:58.703156|60.05|biology +5|321|65727|4294967320|63.58|1.48|false|bob young|2013-03-01 09:11:58.703299|22.53|industrial engineering +37|445|65590|4294967528|92.22|9.30|true|alice davidson|2013-03-01 09:11:58.703263|92.81|religion +63|393|65628|4294967485|75.42|30.11|true|mike ovid|2013-03-01 09:11:58.703284|73.67|biology +122|341|65559|4294967440|31.60|38.23|true|victor young|2013-03-01 09:11:58.703206|19.84|nap time +-2|503|65764|4294967382|5.59|17.19|true|ethan quirinius|2013-03-01 09:11:58.703197|3.88|philosophy +55|510|65692|4294967490|28.57|41.59|true|zach ellison|2013-03-01 09:11:58.703323|70.79|american history +62|479|65595|4294967535|39.65|45.66|true|nick underhill|2013-03-01 09:11:58.703251|66.98|topology +34|271|65631|4294967314|84.84|30.31|false|ethan davidson|2013-03-01 09:11:58.703180|24.32|zync studies +84|427|65739|4294967333|81.02|23.49|false|gabriella robinson|2013-03-01 09:11:58.703273|10.22|wind surfing +91|455|65703|4294967379|99.75|6.11|true|david johnson|2013-03-01 09:11:58.703202|54.98|xylophone band +19|488|65629|4294967347|32.47|25.17|false|tom van buren|2013-03-01 09:11:58.703307|25.04|industrial engineering +88|304|65785|4294967330|52.46|38.78|false|bob robinson|2013-03-01 09:11:58.703194|81.27|topology +37|283|65658|4294967316|80.01|5.14|true|mike ovid|2013-03-01 09:11:58.703283|3.54|study skills +69|391|65583|4294967414|89.86|21.06|true|fred robinson|2013-03-01 09:11:58.703311|55.90|biology +105|499|65765|4294967323|11.92|21.31|false|jessica hernandez|2013-03-01 09:11:58.703171|39.37|yard duty +19|385|65714|4294967385|67.60|28.05|true|holly brown|2013-03-01 09:11:58.703272|33.89|study skills +9|389|65737|4294967395|40.75|32.37|true|holly davidson|2013-03-01 09:11:58.703316|67.82|education +19|273|65733|4294967305|0.16|35.54|false|david laertes|2013-03-01 09:11:58.703277|96.48|geology +11|508|65778|4294967311|2.66|24.45|false|fred xylophone|2013-03-01 09:11:58.703137|92.53|values clariffication +105|485|65682|4294967303|6.01|21.04|false|alice nixon|2013-03-01 09:11:58.703305|97.25|joggying +50|487|65637|4294967391|87.19|32.34|false|alice thompson|2013-03-01 09:11:58.703284|96.09|philosophy +28|473|65727|4294967520|85.92|33.39|true|priscilla laertes|2013-03-01 09:11:58.703286|32.61|chemistry +32|455|65629|4294967418|1.15|47.09|true|mike hernandez|2013-03-01 09:11:58.703231|78.43|opthamology +36|493|65572|4294967533|46.37|20.27|false|nick thompson|2013-03-01 09:11:58.703313|21.46|opthamology +61|475|65665|4294967309|92.32|45.31|true|wendy van buren|2013-03-01 09:11:58.703086|10.20|religion +96|484|65600|4294967494|75.98|49.73|false|alice allen|2013-03-01 09:11:58.703229|7.97|philosophy +9|360|65788|4294967519|53.29|37.05|false|priscilla zipper|2013-03-01 09:11:58.703170|28.69|nap time +118|450|65710|4294967484|0.39|49.57|true|nick miller|2013-03-01 09:11:58.703102|77.93|undecided +70|440|65705|4294967537|91.77|6.65|true|victor robinson|2013-03-01 09:11:58.703195|41.30|joggying +41|441|65790|4294967406|80.61|19.30|false|irene hernandez|2013-03-01 09:11:58.703115|2.15|chemistry +103|503|65647|4294967521|91.37|16.81|true|calvin young|2013-03-01 09:11:58.703151|35.27|yard duty +23|433|65726|4294967365|81.30|42.08|false|irene quirinius|2013-03-01 09:11:58.703292|90.37|wind surfing +22|474|65624|4294967320|97.32|8.52|false|sarah xylophone|2013-03-01 09:11:58.703187|23.57|history +18|438|65718|4294967432|18.81|38.63|false|rachel ovid|2013-03-01 09:11:58.703166|56.15|joggying +81|371|65719|4294967396|42.70|9.03|false|fred robinson|2013-03-01 09:11:58.703281|84.75|values clariffication +96|497|65684|4294967496|3.84|12.64|false|calvin thompson|2013-03-01 09:11:58.703088|56.90|debate +87|304|65588|4294967484|84.85|7.38|true|oscar steinbeck|2013-03-01 09:11:58.703194|78.97|education +56|378|65668|4294967384|20.74|36.18|true|yuri van buren|2013-03-01 09:11:58.703115|83.95|debate +119|275|65572|4294967377|46.84|20.69|true|priscilla zipper|2013-03-01 09:11:58.703071|44.32|topology +119|380|65609|4294967496|34.35|15.01|false|oscar garcia|2013-03-01 09:11:58.703294|34.80|philosophy +60|375|65572|4294967316|56.39|6.02|true|gabriella carson|2013-03-01 09:11:58.703102|95.81|values clariffication +16|364|65694|4294967433|86.17|7.59|true|mike polk|2013-03-01 09:11:58.703087|4.55|american history +11|403|65637|4294967478|43.69|20.87|false|mike allen|2013-03-01 09:11:58.703289|64.81|education +77|256|65731|4294967375|34.09|47.24|true|gabriella falkner|2013-03-01 09:11:58.703175|84.35|zync studies +104|449|65685|4294967356|0.97|1.34|false|holly white|2013-03-01 09:11:58.703093|28.87|education +107|370|65561|4294967325|4.85|34.95|false|ulysses johnson|2013-03-01 09:11:58.703133|53.04|industrial engineering +107|305|65718|4294967354|19.36|9.45|false|victor quirinius|2013-03-01 09:11:58.703281|91.03|history +84|326|65750|4294967447|64.35|30.57|true|irene falkner|2013-03-01 09:11:58.703105|93.27|xylophone band +63|302|65703|4294967363|3.65|1.58|false|ethan xylophone|2013-03-01 09:11:58.703275|73.65|mathematics +89|360|65734|4294967463|69.66|22.40|true|quinn allen|2013-03-01 09:11:58.703171|55.00|industrial engineering +23|362|65660|4294967318|22.16|36.91|true|nick van buren|2013-03-01 09:11:58.703074|94.50|undecided +99|417|65566|4294967408|46.55|0.08|true|zach white|2013-03-01 09:11:58.703277|28.31|industrial engineering +16|509|65561|4294967487|77.64|29.28|true|tom ovid|2013-03-01 09:11:58.703316|92.75|zync studies +58|505|65605|4294967352|38.31|41.95|true|irene johnson|2013-03-01 09:11:58.703096|73.07|nap time +54|439|65747|4294967339|85.61|47.60|true|zach polk|2013-03-01 09:11:58.703276|69.00|quiet hour +115|302|65653|4294967526|95.83|7.57|false|holly van buren|2013-03-01 09:11:58.703117|85.29|religion +47|338|65577|4294967421|18.81|38.54|false|luke falkner|2013-03-01 09:11:58.703290|96.85|history +109|470|65760|4294967481|24.54|46.70|true|yuri white|2013-03-01 09:11:58.703135|59.72|joggying +5|448|65750|4294967502|20.75|31.36|false|ulysses carson|2013-03-01 09:11:58.703223|54.04|kindergarten +99|266|65551|4294967543|71.35|49.86|true|nick polk|2013-03-01 09:11:58.703074|34.27|american history +12|337|65735|4294967349|7.48|37.92|true|priscilla king|2013-03-01 09:11:58.703182|8.22|philosophy +48|373|65730|4294967421|24.70|20.62|true|irene ichabod|2013-03-01 09:11:58.703074|75.11|education +16|482|65699|4294967388|64.66|31.10|false|mike laertes|2013-03-01 09:11:58.703074|76.54|mathematics +59|445|65698|4294967396|11.77|48.00|false|david young|2013-03-01 09:11:58.703310|81.23|american history +35|385|65726|4294967370|6.84|22.68|false|priscilla davidson|2013-03-01 09:11:58.703170|59.36|biology +87|466|65708|4294967391|10.48|46.72|true|ulysses young|2013-03-01 09:11:58.703106|54.23|linguistics +110|496|65644|4294967492|97.59|16.20|false|katie quirinius|2013-03-01 09:11:58.703272|25.88|quiet hour +85|383|65567|4294967520|49.20|15.56|false|wendy steinbeck|2013-03-01 09:11:58.703135|92.79|undecided +39|391|65738|4294967298|32.88|32.44|false|gabriella garcia|2013-03-01 09:11:58.703275|4.60|mathematics +55|487|65591|4294967471|43.66|38.09|false|luke carson|2013-03-01 09:11:58.703267|32.05|philosophy +31|388|65554|4294967443|65.45|44.19|false|ethan laertes|2013-03-01 09:11:58.703083|2.72|undecided +24|281|65768|4294967351|20.06|16.55|true|ulysses carson|2013-03-01 09:11:58.703276|55.40|undecided +103|425|65708|4294967493|95.18|13.17|true|calvin robinson|2013-03-01 09:11:58.703081|47.35|xylophone band +38|454|65587|4294967481|93.82|38.45|true|quinn underhill|2013-03-01 09:11:58.703322|60.90|zync studies +103|345|65556|4294967329|70.11|45.76|false|quinn nixon|2013-03-01 09:11:58.703301|6.61|biology +12|392|65666|4294967337|16.08|25.98|true|zach van buren|2013-03-01 09:11:58.703163|65.53|forestry +40|436|65721|4294967369|33.33|24.51|true|yuri polk|2013-03-01 09:11:58.703079|10.74|industrial engineering +41|396|65745|4294967487|64.86|11.69|true|gabriella nixon|2013-03-01 09:11:58.703255|78.83|topology +42|376|65759|4294967545|14.40|30.46|true|nick robinson|2013-03-01 09:11:58.703167|52.83|american history +14|414|65590|4294967304|43.93|18.81|false|quinn white|2013-03-01 09:11:58.703140|72.33|values clariffication +33|301|65656|4294967483|98.59|46.37|true|tom falkner|2013-03-01 09:11:58.703077|4.32|nap time +3|416|65684|4294967443|61.01|2.20|false|fred xylophone|2013-03-01 09:11:58.703293|13.20|study skills +83|313|65726|4294967456|13.97|23.09|true|fred brown|2013-03-01 09:11:58.703124|33.50|mathematics +65|334|65561|4294967412|86.76|25.27|false|luke miller|2013-03-01 09:11:58.703136|19.28|forestry +25|496|65605|4294967364|55.24|0.77|true|david polk|2013-03-01 09:11:58.703200|64.77|wind surfing +99|504|65584|4294967366|48.50|10.28|false|xavier robinson|2013-03-01 09:11:58.703221|28.25|mathematics +0|340|65778|4294967363|13.16|3.27|true|gabriella king|2013-03-01 09:11:58.703078|63.35|joggying +71|350|65646|4294967455|86.07|3.05|false|katie robinson|2013-03-01 09:11:58.703223|56.23|history +31|409|65560|4294967438|1.50|17.82|true|david underhill|2013-03-01 09:11:58.703301|73.02|american history +55|325|65774|4294967430|93.45|39.52|false|oscar underhill|2013-03-01 09:11:58.703124|50.71|industrial engineering +86|402|65728|4294967551|66.99|33.10|true|rachel nixon|2013-03-01 09:11:58.703293|75.36|yard duty +5|418|65639|4294967300|87.15|39.72|true|wendy zipper|2013-03-01 09:11:58.703111|18.39|education +15|363|65745|4294967313|34.36|36.94|false|calvin van buren|2013-03-01 09:11:58.703117|75.84|forestry +35|331|65570|4294967464|82.02|35.48|true|ethan garcia|2013-03-01 09:11:58.703152|32.56|study skills +97|467|65651|4294967491|76.30|20.37|true|yuri hernandez|2013-03-01 09:11:58.703106|56.33|philosophy +91|269|65700|4294967439|16.66|10.63|true|david underhill|2013-03-01 09:11:58.703312|93.71|american history +25|379|65736|4294967384|8.06|47.10|true|gabriella young|2013-03-01 09:11:58.703211|64.42|kindergarten +81|467|65751|4294967423|53.65|47.49|true|xavier quirinius|2013-03-01 09:11:58.703265|34.71|linguistics +39|376|65696|4294967304|88.24|27.40|true|nick davidson|2013-03-01 09:11:58.703181|37.95|debate +69|298|65537|4294967419|85.45|30.64|false|zach ichabod|2013-03-01 09:11:58.703097|25.20|biology +77|355|65639|4294967431|60.84|32.27|true|david xylophone|2013-03-01 09:11:58.703266|87.76|topology +107|481|65723|4294967402|3.17|7.86|true|bob white|2013-03-01 09:11:58.703252|40.74|study skills +35|368|65580|4294967508|99.18|47.75|false|zach davidson|2013-03-01 09:11:58.703280|83.22|quiet hour +8|469|65684|4294967419|35.21|0.11|false|xavier steinbeck|2013-03-01 09:11:58.703236|19.60|nap time +24|457|65548|4294967501|9.58|0.75|false|calvin ovid|2013-03-01 09:11:58.703295|3.61|religion +49|302|65773|4294967366|32.72|35.46|false|calvin young|2013-03-01 09:11:58.703099|34.64|study skills +121|355|65764|4294967495|22.14|35.99|true|luke garcia|2013-03-01 09:11:58.703194|33.77|history +44|317|65769|4294967541|72.17|8.33|true|ethan davidson|2013-03-01 09:11:58.703135|58.88|topology +110|358|65688|4294967436|36.78|39.65|true|rachel hernandez|2013-03-01 09:11:58.703154|94.63|debate +44|274|65598|4294967353|59.38|32.87|false|yuri brown|2013-03-01 09:11:58.703093|1.49|industrial engineering +94|459|65704|4294967342|5.89|37.82|true|oscar young|2013-03-01 09:11:58.703300|8.17|yard duty +34|402|65744|4294967389|56.24|19.90|true|quinn polk|2013-03-01 09:11:58.703310|36.13|kindergarten +88|364|65606|4294967395|19.76|48.20|true|fred allen|2013-03-01 09:11:58.703262|2.63|mathematics +67|337|65786|4294967401|9.16|9.05|true|xavier garcia|2013-03-01 09:11:58.703085|35.14|linguistics +79|501|65643|4294967383|17.73|30.61|true|katie ovid|2013-03-01 09:11:58.703287|66.37|topology +19|480|65640|4294967537|38.97|32.24|true|yuri nixon|2013-03-01 09:11:58.703189|62.28|opthamology +96|373|65728|4294967401|76.42|16.13|true|calvin carson|2013-03-01 09:11:58.703304|58.44|religion +114|380|65627|4294967333|53.53|21.76|true|alice ovid|2013-03-01 09:11:58.703263|61.85|mathematics +75|307|65695|4294967449|27.23|46.77|false|calvin nixon|2013-03-01 09:11:58.703071|80.81|religion +-3|505|65565|4294967407|68.73|4.65|true|holly nixon|2013-03-01 09:11:58.703262|15.13|debate +78|344|65671|4294967351|27.35|25.74|false|quinn quirinius|2013-03-01 09:11:58.703234|10.32|quiet hour +21|487|65581|4294967324|69.02|46.67|false|ethan ellison|2013-03-01 09:11:58.703165|13.82|kindergarten +99|442|65732|4294967512|52.88|14.91|true|victor hernandez|2013-03-01 09:11:58.703302|79.03|quiet hour +82|372|65749|4294967431|6.31|22.24|false|priscilla hernandez|2013-03-01 09:11:58.703244|27.14|debate +111|387|65582|4294967456|98.85|19.01|true|quinn quirinius|2013-03-01 09:11:58.703230|78.56|kindergarten +95|335|65607|4294967433|25.98|42.38|false|sarah garcia|2013-03-01 09:11:58.703195|11.65|mathematics +39|505|65572|4294967418|58.80|16.28|false|priscilla carson|2013-03-01 09:11:58.703194|48.42|nap time +12|293|65671|4294967319|19.51|20.14|false|rachel nixon|2013-03-01 09:11:58.703082|33.58|geology +34|458|65778|4294967344|16.43|33.37|true|oscar hernandez|2013-03-01 09:11:58.703200|89.00|american history +30|440|65769|4294967439|37.32|43.33|true|luke nixon|2013-03-01 09:11:58.703200|39.75|debate +113|355|65553|4294967551|13.72|16.39|true|irene underhill|2013-03-01 09:11:58.703204|17.98|study skills +28|392|65754|4294967415|49.92|6.04|true|wendy thompson|2013-03-01 09:11:58.703217|27.39|chemistry +25|450|65712|4294967493|63.40|22.37|true|priscilla falkner|2013-03-01 09:11:58.703236|63.25|geology +40|299|65566|4294967332|22.94|24.80|false|zach allen|2013-03-01 09:11:58.703273|23.55|values clariffication +89|500|65556|4294967500|49.15|44.39|false|irene quirinius|2013-03-01 09:11:58.703247|57.60|joggying +113|273|65712|4294967404|70.34|31.93|false|katie brown|2013-03-01 09:11:58.703117|92.31|geology +84|273|65615|4294967532|4.29|39.86|true|gabriella hernandez|2013-03-01 09:11:58.703169|68.25|education +96|335|65704|4294967345|70.93|46.90|true|sarah underhill|2013-03-01 09:11:58.703252|42.66|education +32|502|65771|4294967499|79.05|5.01|true|yuri zipper|2013-03-01 09:11:58.703081|60.00|xylophone band +57|341|65697|4294967423|76.13|27.69|true|calvin carson|2013-03-01 09:11:58.703071|10.75|linguistics +121|339|65544|4294967507|97.47|29.18|false|bob underhill|2013-03-01 09:11:58.703275|53.07|opthamology +84|257|65575|4294967528|1.21|46.88|false|oscar thompson|2013-03-01 09:11:58.703135|38.84|kindergarten +13|446|65616|4294967537|68.00|20.68|true|priscilla ichabod|2013-03-01 09:11:58.703094|95.40|religion +79|376|65739|4294967500|78.93|22.57|true|gabriella brown|2013-03-01 09:11:58.703273|67.87|philosophy +87|378|65598|4294967528|46.86|20.63|false|alice polk|2013-03-01 09:11:58.703125|25.50|philosophy +60|373|65652|4294967392|62.61|11.64|true|nick miller|2013-03-01 09:11:58.703074|2.82|geology +76|376|65742|4294967513|59.90|13.66|true|sarah davidson|2013-03-01 09:11:58.703302|54.54|zync studies +84|355|65668|4294967437|96.01|42.27|true|calvin laertes|2013-03-01 09:11:58.703254|98.42|quiet hour +120|458|65725|4294967436|67.07|3.88|false|tom underhill|2013-03-01 09:11:58.703325|46.29|debate +11|381|65636|4294967541|19.17|24.65|true|rachel brown|2013-03-01 09:11:58.703218|48.94|linguistics +22|301|65593|4294967532|4.58|0.74|true|zach nixon|2013-03-01 09:11:58.703263|19.84|philosophy +6|413|65746|4294967546|53.73|32.47|true|calvin white|2013-03-01 09:11:58.703255|47.66|joggying +77|467|65683|4294967399|61.76|3.72|false|david allen|2013-03-01 09:11:58.703162|43.72|quiet hour +37|498|65650|4294967312|6.51|44.27|true|ethan allen|2013-03-01 09:11:58.703247|11.62|yard duty +102|408|65665|4294967518|44.08|35.35|false|xavier laertes|2013-03-01 09:11:58.703159|30.26|nap time +34|472|65707|4294967350|48.34|21.72|false|jessica brown|2013-03-01 09:11:58.703297|43.09|history +18|271|65761|4294967370|39.82|0.46|true|gabriella laertes|2013-03-01 09:11:58.703129|76.24|undecided +36|380|65785|4294967363|64.20|32.67|true|alice carson|2013-03-01 09:11:58.703268|22.59|chemistry +71|390|65777|4294967409|46.00|44.78|true|holly zipper|2013-03-01 09:11:58.703235|29.96|zync studies +45|386|65646|4294967389|32.58|49.38|true|zach van buren|2013-03-01 09:11:58.703202|98.22|geology +65|260|65621|4294967456|18.84|48.79|false|calvin xylophone|2013-03-01 09:11:58.703173|95.94|xylophone band +-3|275|65543|4294967522|74.92|17.29|false|mike king|2013-03-01 09:11:58.703214|52.90|opthamology +61|452|65557|4294967483|95.89|22.12|true|holly falkner|2013-03-01 09:11:58.703255|15.99|industrial engineering +28|497|65562|4294967305|21.41|46.71|false|jessica steinbeck|2013-03-01 09:11:58.703298|95.07|study skills +104|274|65577|4294967524|90.64|11.08|true|oscar van buren|2013-03-01 09:11:58.703202|90.55|wind surfing +60|266|65773|4294967432|66.33|29.16|true|katie brown|2013-03-01 09:11:58.703075|28.74|industrial engineering +20|481|65762|4294967397|85.74|45.68|true|irene polk|2013-03-01 09:11:58.703150|25.29|values clariffication +3|511|65559|4294967488|35.17|21.53|true|rachel xylophone|2013-03-01 09:11:58.703298|16.74|zync studies +2|326|65757|4294967463|48.40|34.10|true|nick allen|2013-03-01 09:11:58.703227|6.76|opthamology +86|382|65552|4294967340|56.41|24.77|true|jessica miller|2013-03-01 09:11:58.703265|54.92|opthamology +94|322|65747|4294967476|60.88|10.76|false|irene ovid|2013-03-01 09:11:58.703295|26.19|history +14|286|65728|4294967341|23.65|9.78|true|zach young|2013-03-01 09:11:58.703302|26.65|values clariffication +94|479|65785|4294967300|99.94|10.15|true|yuri garcia|2013-03-01 09:11:58.703143|82.46|linguistics +22|361|65717|4294967487|48.28|11.11|false|zach xylophone|2013-03-01 09:11:58.703241|5.15|philosophy +37|337|65547|4294967344|12.16|21.10|false|calvin davidson|2013-03-01 09:11:58.703171|4.73|xylophone band +16|329|65764|4294967337|39.30|19.37|false|priscilla underhill|2013-03-01 09:11:58.703273|15.81|mathematics +120|361|65700|4294967454|16.94|26.46|true|oscar nixon|2013-03-01 09:11:58.703239|40.87|xylophone band +93|461|65707|4294967404|5.22|5.44|true|ethan white|2013-03-01 09:11:58.703168|63.05|wind surfing +86|452|65731|4294967373|25.69|0.26|true|jessica steinbeck|2013-03-01 09:11:58.703118|60.87|biology +69|336|65779|4294967505|53.06|4.50|true|bob johnson|2013-03-01 09:11:58.703267|64.71|industrial engineering +14|387|65740|4294967430|94.42|18.97|false|ethan zipper|2013-03-01 09:11:58.703269|23.99|zync studies +-3|415|65571|4294967536|61.81|24.24|true|victor robinson|2013-03-01 09:11:58.703305|22.72|american history +51|320|65677|4294967415|27.17|45.00|false|zach allen|2013-03-01 09:11:58.703195|55.00|topology +69|355|65687|4294967370|31.05|20.99|true|gabriella garcia|2013-03-01 09:11:58.703190|91.28|wind surfing +29|452|65582|4294967454|20.47|9.27|true|bob hernandez|2013-03-01 09:11:58.703083|68.43|yard duty +38|370|65563|4294967479|52.06|8.26|true|tom thompson|2013-03-01 09:11:58.703209|83.21|biology +17|487|65576|4294967362|82.94|6.04|false|quinn garcia|2013-03-01 09:11:58.703227|69.91|wind surfing +10|489|65761|4294967533|15.56|25.80|true|ethan ichabod|2013-03-01 09:11:58.703232|81.41|wind surfing +65|340|65670|4294967384|80.43|15.86|true|xavier underhill|2013-03-01 09:11:58.703302|51.08|biology +110|270|65563|4294967453|60.39|2.80|false|alice davidson|2013-03-01 09:11:58.703238|95.46|biology +97|381|65538|4294967485|44.89|43.32|false|nick quirinius|2013-03-01 09:11:58.703284|78.41|quiet hour +75|496|65621|4294967537|78.69|46.15|false|sarah steinbeck|2013-03-01 09:11:58.703087|23.44|philosophy +110|299|65696|4294967530|45.45|43.50|false|zach polk|2013-03-01 09:11:58.703270|57.49|forestry +37|356|65596|4294967440|26.21|25.28|false|david brown|2013-03-01 09:11:58.703164|45.98|history +27|317|65678|4294967329|51.25|15.92|true|luke hernandez|2013-03-01 09:11:58.703179|31.91|american history +59|470|65655|4294967508|41.99|6.49|false|ethan carson|2013-03-01 09:11:58.703300|93.24|mathematics +62|264|65577|4294967383|19.91|16.77|false|quinn robinson|2013-03-01 09:11:58.703087|50.73|study skills +75|408|65705|4294967398|58.21|14.29|true|jessica allen|2013-03-01 09:11:58.703310|86.21|values clariffication +73|403|65562|4294967382|20.47|29.01|true|sarah steinbeck|2013-03-01 09:11:58.703174|10.15|history +76|498|65695|4294967321|80.45|13.88|false|victor hernandez|2013-03-01 09:11:58.703141|61.28|kindergarten +2|397|65649|4294967517|47.26|36.68|false|rachel robinson|2013-03-01 09:11:58.703251|43.29|religion +9|276|65556|4294967474|38.91|16.97|true|mike nixon|2013-03-01 09:11:58.703163|41.37|chemistry +120|323|65744|4294967303|0.28|22.84|true|yuri davidson|2013-03-01 09:11:58.703324|97.38|yard duty +49|343|65602|4294967321|54.17|14.77|false|priscilla robinson|2013-03-01 09:11:58.703314|18.14|industrial engineering +32|298|65648|4294967474|98.97|1.42|true|sarah king|2013-03-01 09:11:58.703188|0.03|biology +82|458|65761|4294967388|25.53|34.13|true|priscilla falkner|2013-03-01 09:11:58.703239|58.06|chemistry +25|455|65782|4294967369|58.92|1.20|false|fred miller|2013-03-01 09:11:58.703271|75.06|forestry +119|507|65778|4294967299|36.17|48.84|true|quinn white|2013-03-01 09:11:58.703203|40.06|forestry +23|418|65743|4294967323|96.24|44.98|false|oscar allen|2013-03-01 09:11:58.703110|24.56|topology +63|303|65771|4294967375|78.09|4.85|true|alice laertes|2013-03-01 09:11:58.703257|74.36|xylophone band +98|467|65713|4294967296|30.90|9.35|true|gabriella steinbeck|2013-03-01 09:11:58.703110|46.53|quiet hour +73|488|65723|4294967361|29.59|38.04|false|gabriella brown|2013-03-01 09:11:58.703109|40.90|linguistics +6|362|65739|4294967368|38.93|9.97|true|tom allen|2013-03-01 09:11:58.703160|7.19|kindergarten +25|395|65570|4294967430|70.31|25.04|true|wendy ellison|2013-03-01 09:11:58.703287|21.49|opthamology +97|350|65746|4294967439|54.06|33.76|true|david zipper|2013-03-01 09:11:58.703180|33.76|xylophone band +108|308|65704|4294967524|92.69|11.23|true|david young|2013-03-01 09:11:58.703109|82.05|education +71|307|65562|4294967426|41.41|33.17|false|katie ichabod|2013-03-01 09:11:58.703134|36.77|kindergarten +91|418|65671|4294967355|64.52|6.55|false|katie underhill|2013-03-01 09:11:58.703086|91.12|nap time +35|405|65648|4294967425|60.41|8.87|true|zach ichabod|2013-03-01 09:11:58.703260|11.38|quiet hour +57|477|65682|4294967498|15.02|27.74|true|sarah hernandez|2013-03-01 09:11:58.703234|36.75|yard duty +65|323|65606|4294967439|0.03|35.17|true|quinn miller|2013-03-01 09:11:58.703281|4.50|opthamology +87|477|65566|4294967318|56.21|46.48|false|alice van buren|2013-03-01 09:11:58.703110|27.13|wind surfing +99|404|65639|4294967340|7.53|28.00|true|sarah ovid|2013-03-01 09:11:58.703267|68.35|wind surfing +115|481|65671|4294967458|13.10|25.30|false|quinn carson|2013-03-01 09:11:58.703126|30.40|debate +50|388|65552|4294967392|41.61|17.70|false|fred ichabod|2013-03-01 09:11:58.703183|52.28|philosophy +39|367|65779|4294967435|19.15|38.25|false|jessica polk|2013-03-01 09:11:58.703313|25.94|joggying +77|477|65763|4294967432|62.86|18.69|true|priscilla king|2013-03-01 09:11:58.703231|12.40|mathematics +1|283|65639|4294967297|38.95|30.35|true|oscar robinson|2013-03-01 09:11:58.703176|3.13|xylophone band +99|374|65748|4294967409|27.72|34.99|true|holly hernandez|2013-03-01 09:11:58.703196|43.26|study skills +43|290|65603|4294967505|6.93|18.91|false|ethan van buren|2013-03-01 09:11:58.703323|54.34|forestry +37|459|65698|4294967475|77.90|4.69|false|fred davidson|2013-03-01 09:11:58.703238|57.48|american history +24|447|65673|4294967333|19.87|31.59|false|david king|2013-03-01 09:11:58.703130|66.36|wind surfing +78|329|65555|4294967395|14.35|17.71|true|rachel ichabod|2013-03-01 09:11:58.703272|57.55|opthamology +29|452|65632|4294967330|91.85|9.50|false|oscar ichabod|2013-03-01 09:11:58.703077|18.83|joggying +14|401|65689|4294967519|14.41|39.72|false|luke laertes|2013-03-01 09:11:58.703308|59.57|wind surfing +48|389|65661|4294967336|72.83|29.50|true|xavier white|2013-03-01 09:11:58.703118|49.67|education +77|488|65657|4294967480|91.45|40.84|true|fred white|2013-03-01 09:11:58.703252|40.62|nap time +48|360|65780|4294967332|46.84|17.84|false|bob king|2013-03-01 09:11:58.703273|45.40|philosophy +-2|378|65553|4294967461|9.81|10.36|true|bob king|2013-03-01 09:11:58.703236|90.88|opthamology +6|468|65619|4294967474|61.75|37.73|true|mike underhill|2013-03-01 09:11:58.703200|59.53|industrial engineering +48|444|65568|4294967504|52.16|39.11|false|zach falkner|2013-03-01 09:11:58.703183|57.19|history +-1|482|65690|4294967476|1.49|35.42|false|quinn miller|2013-03-01 09:11:58.703301|53.85|biology +105|379|65664|4294967545|93.78|18.05|true|bob brown|2013-03-01 09:11:58.703272|67.91|wind surfing +67|393|65757|4294967409|91.16|24.26|false|victor nixon|2013-03-01 09:11:58.703209|96.39|religion +19|339|65760|4294967406|66.12|36.22|false|gabriella ichabod|2013-03-01 09:11:58.703253|28.43|study skills +18|325|65560|4294967407|27.93|22.95|true|katie garcia|2013-03-01 09:11:58.703073|35.45|geology +99|333|65694|4294967348|93.25|12.77|true|jessica thompson|2013-03-01 09:11:58.703241|73.39|topology +86|290|65770|4294967522|54.49|42.92|true|oscar underhill|2013-03-01 09:11:58.703193|1.49|opthamology +124|336|65761|4294967418|56.59|16.62|true|sarah quirinius|2013-03-01 09:11:58.703293|55.03|mathematics +95|323|65679|4294967477|37.34|41.25|true|priscilla laertes|2013-03-01 09:11:58.703196|68.16|zync studies +7|412|65679|4294967544|87.84|13.17|true|holly allen|2013-03-01 09:11:58.703135|37.48|geology +82|353|65650|4294967362|80.38|18.53|true|gabriella carson|2013-03-01 09:11:58.703291|30.11|linguistics +112|330|65746|4294967492|6.06|30.92|true|nick thompson|2013-03-01 09:11:58.703140|54.03|yard duty +112|434|65661|4294967549|93.18|46.90|false|jessica nixon|2013-03-01 09:11:58.703125|28.14|education +45|261|65550|4294967523|2.89|10.76|false|ethan johnson|2013-03-01 09:11:58.703191|68.40|chemistry +23|457|65559|4294967453|45.43|10.98|true|calvin ovid|2013-03-01 09:11:58.703231|72.47|chemistry +66|369|65640|4294967542|39.70|38.83|true|priscilla robinson|2013-03-01 09:11:58.703141|62.11|american history +68|405|65645|4294967483|71.74|34.38|false|katie nixon|2013-03-01 09:11:58.703146|81.74|kindergarten +106|498|65786|4294967374|52.18|18.05|false|irene quirinius|2013-03-01 09:11:58.703261|47.77|undecided +98|367|65687|4294967383|46.62|46.57|true|ulysses van buren|2013-03-01 09:11:58.703212|69.01|joggying +2|295|65555|4294967548|61.61|5.68|false|tom van buren|2013-03-01 09:11:58.703148|82.96|geology +66|377|65683|4294967343|26.11|19.18|false|bob king|2013-03-01 09:11:58.703287|66.91|topology +45|393|65727|4294967438|67.44|33.20|true|mike polk|2013-03-01 09:11:58.703203|30.77|yard duty +74|269|65788|4294967475|51.91|17.09|true|sarah ichabod|2013-03-01 09:11:58.703170|91.35|topology +19|490|65550|4294967445|43.17|31.30|true|luke hernandez|2013-03-01 09:11:58.703270|81.66|debate +61|502|65753|4294967508|34.19|18.62|true|xavier zipper|2013-03-01 09:11:58.703085|97.84|kindergarten +62|317|65633|4294967424|76.81|5.93|false|tom zipper|2013-03-01 09:11:58.703232|16.59|forestry +-3|335|65696|4294967333|72.26|9.66|true|nick nixon|2013-03-01 09:11:58.703083|85.48|philosophy +26|317|65575|4294967504|88.29|2.45|true|bob johnson|2013-03-01 09:11:58.703311|53.63|opthamology +-1|422|65784|4294967384|36.80|49.72|true|ulysses xylophone|2013-03-01 09:11:58.703120|52.10|joggying +39|443|65589|4294967369|19.20|2.39|false|ulysses allen|2013-03-01 09:11:58.703229|79.15|yard duty +18|455|65644|4294967419|23.50|43.14|true|katie xylophone|2013-03-01 09:11:58.703228|98.77|religion +123|346|65787|4294967454|25.05|22.60|true|holly hernandez|2013-03-01 09:11:58.703269|20.99|joggying +27|504|65717|4294967365|96.68|26.00|true|victor laertes|2013-03-01 09:11:58.703158|24.07|forestry +7|315|65678|4294967440|6.96|28.84|false|jessica nixon|2013-03-01 09:11:58.703175|73.46|american history +110|264|65743|4294967327|71.34|48.89|true|jessica steinbeck|2013-03-01 09:11:58.703093|37.06|study skills +91|500|65653|4294967512|98.49|35.06|false|tom underhill|2013-03-01 09:11:58.703224|34.01|xylophone band +85|388|65626|4294967497|34.15|47.49|true|sarah johnson|2013-03-01 09:11:58.703314|53.64|forestry +35|379|65762|4294967468|73.58|36.53|true|oscar nixon|2013-03-01 09:11:58.703325|57.86|history +101|448|65638|4294967308|78.02|46.75|true|mike steinbeck|2013-03-01 09:11:58.703087|23.53|history +44|326|65741|4294967362|63.97|18.45|true|gabriella quirinius|2013-03-01 09:11:58.703084|80.38|study skills +7|503|65789|4294967363|20.45|40.84|false|irene miller|2013-03-01 09:11:58.703204|64.32|biology +112|474|65586|4294967421|68.91|42.95|false|ethan nixon|2013-03-01 09:11:58.703320|97.32|debate +76|492|65604|4294967353|93.74|29.10|false|calvin robinson|2013-03-01 09:11:58.703278|55.69|mathematics +97|309|65624|4294967419|5.83|45.44|true|victor miller|2013-03-01 09:11:58.703199|30.15|religion +29|414|65587|4294967437|34.50|18.86|false|bob falkner|2013-03-01 09:11:58.703324|69.52|undecided +44|361|65722|4294967538|88.74|16.60|false|irene van buren|2013-03-01 09:11:58.703108|38.08|study skills +100|368|65623|4294967423|61.47|28.81|true|sarah brown|2013-03-01 09:11:58.703181|82.10|american history +29|328|65767|4294967520|31.00|8.76|false|xavier van buren|2013-03-01 09:11:58.703102|68.87|education +75|301|65595|4294967319|13.97|41.26|false|luke davidson|2013-03-01 09:11:58.703242|31.24|topology +120|483|65580|4294967406|50.93|35.61|false|gabriella zipper|2013-03-01 09:11:58.703190|68.83|study skills +26|419|65634|4294967377|28.27|8.92|true|victor hernandez|2013-03-01 09:11:58.703094|45.12|kindergarten +62|437|65675|4294967510|12.00|30.37|true|irene miller|2013-03-01 09:11:58.703117|96.81|quiet hour +94|337|65743|4294967386|56.56|21.00|false|tom carson|2013-03-01 09:11:58.703268|79.92|education +85|478|65545|4294967434|55.32|42.36|false|fred steinbeck|2013-03-01 09:11:58.703093|8.65|biology +55|433|65663|4294967497|81.71|24.83|true|xavier quirinius|2013-03-01 09:11:58.703180|61.42|education +78|463|65767|4294967545|79.11|32.79|true|holly hernandez|2013-03-01 09:11:58.703137|97.03|values clariffication +-3|280|65548|4294967350|52.30|33.06|true|calvin white|2013-03-01 09:11:58.703295|29.54|quiet hour +56|424|65742|4294967545|89.27|29.20|true|irene ellison|2013-03-01 09:11:58.703140|87.04|american history +72|469|65573|4294967510|54.52|22.00|true|nick nixon|2013-03-01 09:11:58.703253|36.49|yard duty +0|397|65667|4294967336|86.24|13.67|true|nick thompson|2013-03-01 09:11:58.703186|99.87|chemistry +16|349|65590|4294967345|52.71|44.99|false|rachel quirinius|2013-03-01 09:11:58.703306|47.06|opthamology +60|419|65550|4294967414|66.25|2.76|true|nick young|2013-03-01 09:11:58.703178|6.17|xylophone band +25|459|65564|4294967454|66.03|44.75|true|bob johnson|2013-03-01 09:11:58.703162|34.84|religion +3|507|65722|4294967408|0.12|27.23|true|irene thompson|2013-03-01 09:11:58.703270|96.72|topology +76|417|65600|4294967496|7.80|0.98|false|calvin polk|2013-03-01 09:11:58.703192|59.90|nap time +18|282|65710|4294967308|9.27|36.70|true|tom white|2013-03-01 09:11:58.703208|0.57|zync studies +63|262|65777|4294967372|93.59|44.28|true|luke johnson|2013-03-01 09:11:58.703268|52.19|industrial engineering +11|447|65579|4294967363|87.39|38.99|true|yuri robinson|2013-03-01 09:11:58.703160|80.83|history +105|269|65629|4294967340|26.58|3.96|false|jessica ichabod|2013-03-01 09:11:58.703191|10.77|nap time +74|468|65755|4294967325|16.59|35.47|true|ulysses hernandez|2013-03-01 09:11:58.703265|34.67|opthamology +91|378|65725|4294967535|92.48|36.48|false|nick robinson|2013-03-01 09:11:58.703266|61.30|philosophy +39|281|65759|4294967434|99.32|32.31|false|zach van buren|2013-03-01 09:11:58.703077|17.73|nap time +59|404|65542|4294967332|42.13|2.35|false|tom young|2013-03-01 09:11:58.703235|93.63|history +117|488|65654|4294967544|71.50|44.00|false|wendy carson|2013-03-01 09:11:58.703296|3.16|forestry +72|283|65624|4294967325|7.58|22.53|true|calvin ellison|2013-03-01 09:11:58.703302|27.82|debate +122|510|65662|4294967415|78.52|8.04|false|calvin miller|2013-03-01 09:11:58.703215|73.20|religion +111|344|65586|4294967551|86.97|1.02|true|fred falkner|2013-03-01 09:11:58.703135|29.75|values clariffication +110|399|65789|4294967535|83.53|0.74|true|rachel ichabod|2013-03-01 09:11:58.703325|24.68|linguistics +31|336|65618|4294967411|45.11|48.07|false|xavier robinson|2013-03-01 09:11:58.703225|17.68|biology +38|299|65605|4294967336|37.62|30.97|true|yuri underhill|2013-03-01 09:11:58.703224|51.40|education +122|473|65719|4294967478|9.60|28.10|true|fred nixon|2013-03-01 09:11:58.703318|68.06|quiet hour +5|268|65601|4294967325|73.03|44.06|false|wendy ovid|2013-03-01 09:11:58.703227|43.78|study skills +10|257|65610|4294967355|98.00|38.84|false|alice xylophone|2013-03-01 09:11:58.703273|42.48|quiet hour +86|351|65686|4294967425|84.11|39.33|false|gabriella robinson|2013-03-01 09:11:58.703282|20.88|wind surfing +19|403|65539|4294967472|88.14|2.12|false|alice quirinius|2013-03-01 09:11:58.703310|18.50|topology +34|458|65636|4294967412|36.37|44.50|true|irene allen|2013-03-01 09:11:58.703307|81.74|industrial engineering +7|261|65645|4294967487|42.97|13.47|true|gabriella garcia|2013-03-01 09:11:58.703187|14.41|linguistics +103|276|65625|4294967500|91.30|45.96|true|tom young|2013-03-01 09:11:58.703147|31.27|biology +49|256|65713|4294967515|21.83|6.21|false|rachel ovid|2013-03-01 09:11:58.703166|52.58|biology +94|345|65778|4294967473|53.72|47.73|false|david robinson|2013-03-01 09:11:58.703096|1.10|opthamology +94|261|65609|4294967316|52.94|36.45|false|victor ovid|2013-03-01 09:11:58.703182|7.14|study skills +88|351|65677|4294967296|39.82|22.46|true|quinn miller|2013-03-01 09:11:58.703265|48.41|study skills +14|307|65707|4294967539|6.35|38.77|true|oscar thompson|2013-03-01 09:11:58.703141|30.01|biology +95|493|65554|4294967355|26.67|25.75|true|rachel hernandez|2013-03-01 09:11:58.703253|74.44|education +31|305|65591|4294967410|92.96|36.96|true|gabriella white|2013-03-01 09:11:58.703131|44.20|debate +72|473|65708|4294967509|79.29|19.98|true|priscilla polk|2013-03-01 09:11:58.703141|60.53|american history +103|392|65733|4294967344|23.73|22.43|false|holly steinbeck|2013-03-01 09:11:58.703073|35.40|kindergarten +56|378|65562|4294967348|57.65|46.35|false|ulysses davidson|2013-03-01 09:11:58.703259|72.47|xylophone band +59|334|65542|4294967379|93.08|31.53|false|fred nixon|2013-03-01 09:11:58.703257|61.30|nap time +119|442|65746|4294967522|84.87|42.87|false|zach falkner|2013-03-01 09:11:58.703258|33.31|education +72|263|65571|4294967492|2.80|15.63|false|wendy brown|2013-03-01 09:11:58.703317|34.11|linguistics +94|416|65554|4294967330|8.41|33.12|true|holly hernandez|2013-03-01 09:11:58.703251|11.78|forestry +58|496|65698|4294967540|16.54|1.19|false|oscar davidson|2013-03-01 09:11:58.703073|14.07|undecided +55|376|65735|4294967430|8.11|3.88|false|wendy allen|2013-03-01 09:11:58.703304|16.57|nap time +81|384|65726|4294967499|30.88|33.56|true|quinn van buren|2013-03-01 09:11:58.703193|81.03|mathematics +42|498|65759|4294967547|99.55|1.17|true|david hernandez|2013-03-01 09:11:58.703317|27.33|quiet hour +116|261|65785|4294967546|66.55|36.20|true|katie xylophone|2013-03-01 09:11:58.703282|27.79|undecided +12|423|65626|4294967382|46.96|2.15|false|holly ovid|2013-03-01 09:11:58.703111|30.23|xylophone band +5|395|65760|4294967466|22.86|48.04|false|tom van buren|2013-03-01 09:11:58.703245|41.55|undecided +75|343|65584|4294967432|38.27|15.81|false|zach white|2013-03-01 09:11:58.703093|60.13|yard duty +3|488|65604|4294967365|0.19|23.86|true|priscilla falkner|2013-03-01 09:11:58.703141|10.47|xylophone band +64|479|65701|4294967364|84.31|27.75|true|rachel white|2013-03-01 09:11:58.703313|82.39|debate +80|481|65657|4294967533|78.13|47.90|true|oscar carson|2013-03-01 09:11:58.703084|8.44|biology +71|398|65636|4294967389|86.41|34.43|false|yuri white|2013-03-01 09:11:58.703312|75.09|chemistry +18|423|65648|4294967365|42.57|17.65|true|nick falkner|2013-03-01 09:11:58.703265|75.84|xylophone band +60|487|65596|4294967492|69.80|8.80|false|alice davidson|2013-03-01 09:11:58.703273|97.15|american history +26|444|65673|4294967343|81.65|4.37|false|mike quirinius|2013-03-01 09:11:58.703271|23.79|kindergarten +66|272|65784|4294967516|5.97|3.68|false|xavier king|2013-03-01 09:11:58.703304|49.54|yard duty +12|321|65647|4294967382|19.80|38.05|true|rachel young|2013-03-01 09:11:58.703153|47.72|xylophone band +80|372|65611|4294967455|44.53|30.15|false|ulysses quirinius|2013-03-01 09:11:58.703149|55.02|xylophone band +74|315|65562|4294967452|29.61|48.28|false|sarah miller|2013-03-01 09:11:58.703133|39.94|linguistics +96|471|65600|4294967303|44.08|47.28|false|ulysses miller|2013-03-01 09:11:58.703146|97.42|forestry +1|503|65672|4294967524|54.01|18.40|false|wendy underhill|2013-03-01 09:11:58.703300|42.29|religion +116|298|65581|4294967357|33.15|14.54|false|oscar steinbeck|2013-03-01 09:11:58.703186|73.51|joggying +96|499|65663|4294967303|85.91|28.30|true|wendy garcia|2013-03-01 09:11:58.703112|78.41|religion +64|464|65657|4294967312|44.70|41.64|true|xavier allen|2013-03-01 09:11:58.703308|19.55|joggying +13|510|65790|4294967422|88.82|21.15|true|priscilla davidson|2013-03-01 09:11:58.703098|49.60|quiet hour +91|444|65544|4294967442|53.13|20.24|true|irene ovid|2013-03-01 09:11:58.703106|80.84|zync studies +49|296|65738|4294967481|0.03|32.31|false|calvin van buren|2013-03-01 09:11:58.703148|70.74|values clariffication +31|501|65647|4294967532|98.99|39.42|true|irene van buren|2013-03-01 09:11:58.703183|95.07|xylophone band +84|294|65706|4294967551|38.66|12.70|true|yuri king|2013-03-01 09:11:58.703229|61.05|philosophy +55|340|65637|4294967539|15.56|21.11|true|wendy polk|2013-03-01 09:11:58.703274|60.25|education +61|341|65724|4294967400|42.27|15.92|false|david johnson|2013-03-01 09:11:58.703265|90.36|linguistics +92|341|65613|4294967396|71.61|13.35|true|priscilla carson|2013-03-01 09:11:58.703277|54.43|zync studies +29|329|65620|4294967417|80.22|47.45|true|jessica allen|2013-03-01 09:11:58.703115|14.09|industrial engineering +57|411|65760|4294967434|17.41|47.99|true|quinn ovid|2013-03-01 09:11:58.703226|67.91|joggying +110|265|65684|4294967547|37.32|45.17|false|fred underhill|2013-03-01 09:11:58.703105|9.29|mathematics +66|401|65615|4294967381|64.93|5.48|true|luke falkner|2013-03-01 09:11:58.703081|99.05|forestry +96|408|65777|4294967444|29.43|24.01|false|zach allen|2013-03-01 09:11:58.703286|50.73|debate +116|278|65637|4294967339|49.54|32.57|false|victor young|2013-03-01 09:11:58.703191|51.89|american history +101|313|65672|4294967314|1.75|22.79|true|calvin hernandez|2013-03-01 09:11:58.703134|38.83|quiet hour +117|389|65640|4294967331|8.37|29.06|false|gabriella king|2013-03-01 09:11:58.703119|57.90|nap time +29|281|65551|4294967419|72.36|39.34|true|rachel carson|2013-03-01 09:11:58.703097|11.40|zync studies +108|422|65681|4294967473|70.36|7.36|true|holly polk|2013-03-01 09:11:58.703297|25.21|undecided +116|392|65745|4294967399|16.61|29.62|true|zach miller|2013-03-01 09:11:58.703101|38.16|chemistry +56|304|65568|4294967448|84.91|33.23|false|irene young|2013-03-01 09:11:58.703080|96.34|zync studies +112|476|65549|4294967454|43.32|28.70|true|wendy hernandez|2013-03-01 09:11:58.703272|10.48|mathematics +49|353|65575|4294967357|19.46|28.16|false|irene hernandez|2013-03-01 09:11:58.703154|70.45|biology +38|299|65667|4294967438|90.68|25.84|true|wendy king|2013-03-01 09:11:58.703166|99.78|xylophone band +40|273|65578|4294967467|31.88|2.84|false|nick falkner|2013-03-01 09:11:58.703093|17.27|forestry +33|466|65782|4294967503|68.62|42.19|false|luke king|2013-03-01 09:11:58.703071|65.18|forestry +27|280|65733|4294967537|71.08|47.51|false|xavier young|2013-03-01 09:11:58.703293|78.84|study skills +53|362|65712|4294967469|95.50|18.52|true|irene miller|2013-03-01 09:11:58.703157|45.83|education +89|386|65673|4294967527|78.16|28.45|false|quinn johnson|2013-03-01 09:11:58.703274|20.02|study skills +72|323|65556|4294967441|19.24|20.82|false|holly miller|2013-03-01 09:11:58.703211|74.07|yard duty +63|309|65582|4294967299|51.88|30.57|true|gabriella king|2013-03-01 09:11:58.703078|51.43|american history +1|488|65664|4294967318|77.87|15.14|true|gabriella underhill|2013-03-01 09:11:58.703183|94.30|history +61|470|65589|4294967403|4.94|43.93|false|ethan davidson|2013-03-01 09:11:58.703101|7.06|industrial engineering +9|322|65685|4294967440|40.87|47.79|true|zach xylophone|2013-03-01 09:11:58.703202|66.91|nap time +115|470|65768|4294967359|72.64|16.96|true|mike johnson|2013-03-01 09:11:58.703106|15.20|kindergarten +69|292|65607|4294967296|80.71|44.66|false|ulysses xylophone|2013-03-01 09:11:58.703252|79.02|education +121|305|65697|4294967498|42.06|41.62|false|jessica davidson|2013-03-01 09:11:58.703282|53.86|joggying +73|428|65743|4294967464|54.62|13.01|true|ulysses ellison|2013-03-01 09:11:58.703313|72.11|forestry +62|321|65791|4294967384|48.57|44.83|false|irene ellison|2013-03-01 09:11:58.703252|31.70|education +64|493|65721|4294967474|28.21|40.61|true|gabriella nixon|2013-03-01 09:11:58.703191|32.55|education +86|371|65676|4294967348|37.11|37.50|false|quinn white|2013-03-01 09:11:58.703103|82.06|mathematics +20|396|65553|4294967530|46.78|41.47|true|ethan hernandez|2013-03-01 09:11:58.703300|73.47|american history +62|278|65569|4294967460|7.70|15.89|false|holly quirinius|2013-03-01 09:11:58.703227|1.10|forestry +93|441|65736|4294967517|56.01|43.03|true|nick xylophone|2013-03-01 09:11:58.703210|65.79|quiet hour +37|416|65536|4294967476|59.33|21.37|false|alice robinson|2013-03-01 09:11:58.703231|1.33|forestry +97|492|65783|4294967424|90.96|48.56|false|ethan falkner|2013-03-01 09:11:58.703114|52.51|history +50|488|65658|4294967314|12.10|42.61|true|quinn johnson|2013-03-01 09:11:58.703076|89.29|values clariffication +85|267|65752|4294967303|92.46|38.54|false|mike davidson|2013-03-01 09:11:58.703207|3.48|wind surfing +28|412|65650|4294967408|25.57|39.52|false|bob allen|2013-03-01 09:11:58.703226|9.86|quiet hour +36|376|65718|4294967408|70.99|47.86|true|priscilla zipper|2013-03-01 09:11:58.703223|38.01|nap time +100|279|65774|4294967433|41.50|31.27|false|holly brown|2013-03-01 09:11:58.703182|30.81|american history +7|360|65598|4294967353|21.52|20.41|false|jessica zipper|2013-03-01 09:11:58.703074|59.37|values clariffication +47|302|65618|4294967351|60.17|19.69|true|fred steinbeck|2013-03-01 09:11:58.703101|69.13|religion +26|361|65768|4294967432|98.02|49.61|true|victor laertes|2013-03-01 09:11:58.703246|9.17|zync studies +101|276|65697|4294967546|13.88|17.09|true|ethan ichabod|2013-03-01 09:11:58.703131|85.26|geology +72|388|65617|4294967378|83.50|13.02|false|yuri steinbeck|2013-03-01 09:11:58.703253|60.23|study skills +43|416|65683|4294967484|26.13|11.02|true|zach nixon|2013-03-01 09:11:58.703197|92.79|xylophone band +4|434|65710|4294967302|40.00|0.27|false|katie ovid|2013-03-01 09:11:58.703297|23.91|history +29|373|65773|4294967491|42.63|30.15|true|david white|2013-03-01 09:11:58.703224|50.09|philosophy +49|411|65640|4294967473|94.27|17.40|false|luke steinbeck|2013-03-01 09:11:58.703071|52.59|philosophy +103|360|65774|4294967392|89.50|23.80|true|ulysses underhill|2013-03-01 09:11:58.703107|15.14|debate +123|346|65610|4294967487|7.05|26.46|false|jessica white|2013-03-01 09:11:58.703314|68.80|chemistry +87|362|65591|4294967372|54.98|33.32|false|xavier white|2013-03-01 09:11:58.703262|57.36|biology +94|305|65689|4294967325|88.83|47.32|false|david king|2013-03-01 09:11:58.703135|51.19|yard duty +124|433|65772|4294967390|4.20|16.48|true|zach white|2013-03-01 09:11:58.703278|29.37|american history +85|368|65657|4294967509|61.03|8.67|true|david king|2013-03-01 09:11:58.703075|52.02|xylophone band +18|406|65599|4294967519|21.22|35.88|true|victor van buren|2013-03-01 09:11:58.703269|7.19|linguistics +102|417|65568|4294967323|20.21|37.76|true|tom robinson|2013-03-01 09:11:58.703302|13.16|nap time +41|442|65783|4294967472|29.33|39.95|true|holly ellison|2013-03-01 09:11:58.703231|10.76|wind surfing +-1|301|65585|4294967365|42.68|22.99|false|david laertes|2013-03-01 09:11:58.703179|86.02|nap time +124|334|65747|4294967347|69.36|49.09|true|zach white|2013-03-01 09:11:58.703228|15.81|nap time +78|307|65703|4294967322|69.41|20.01|true|yuri falkner|2013-03-01 09:11:58.703157|46.87|values clariffication +12|345|65536|4294967326|16.02|11.58|false|wendy polk|2013-03-01 09:11:58.703239|65.17|quiet hour +2|508|65684|4294967510|34.61|1.35|true|holly robinson|2013-03-01 09:11:58.703180|31.07|yard duty +37|435|65562|4294967343|84.81|12.36|false|ulysses garcia|2013-03-01 09:11:58.703292|80.73|industrial engineering +107|436|65764|4294967319|47.40|20.27|false|david king|2013-03-01 09:11:58.703277|89.52|nap time +15|279|65661|4294967346|26.16|3.85|false|zach nixon|2013-03-01 09:11:58.703269|67.85|undecided +103|415|65580|4294967355|3.71|23.31|true|jessica johnson|2013-03-01 09:11:58.703149|96.59|values clariffication +8|331|65738|4294967497|19.75|31.29|true|luke ichabod|2013-03-01 09:11:58.703202|90.91|zync studies +63|429|65619|4294967481|94.86|1.13|false|xavier falkner|2013-03-01 09:11:58.703091|12.34|topology +4|438|65737|4294967302|69.77|45.19|true|irene falkner|2013-03-01 09:11:58.703079|83.15|nap time +91|427|65748|4294967401|91.02|15.20|false|david laertes|2013-03-01 09:11:58.703191|21.29|philosophy +54|498|65787|4294967324|61.73|31.27|true|priscilla garcia|2013-03-01 09:11:58.703273|34.61|linguistics +8|455|65767|4294967550|10.67|27.76|true|luke ovid|2013-03-01 09:11:58.703220|37.48|philosophy +124|282|65575|4294967354|73.46|42.88|true|gabriella allen|2013-03-01 09:11:58.703301|79.96|history +27|500|65743|4294967415|42.76|44.41|true|tom white|2013-03-01 09:11:58.703233|78.95|opthamology +14|333|65669|4294967313|36.13|42.80|true|calvin ovid|2013-03-01 09:11:58.703251|82.64|yard duty +70|511|65544|4294967527|64.95|3.08|false|victor miller|2013-03-01 09:11:58.703099|75.50|industrial engineering +30|480|65783|4294967414|16.88|0.53|false|ulysses garcia|2013-03-01 09:11:58.703076|83.44|zync studies +51|449|65788|4294967430|0.58|9.63|false|xavier polk|2013-03-01 09:11:58.703115|81.21|linguistics +7|289|65788|4294967346|42.12|47.35|false|irene xylophone|2013-03-01 09:11:58.703323|49.83|debate +51|411|65597|4294967511|77.48|28.77|true|fred johnson|2013-03-01 09:11:58.703180|17.52|zync studies +75|287|65758|4294967362|99.29|15.07|false|jessica king|2013-03-01 09:11:58.703160|28.11|forestry +106|474|65581|4294967432|94.66|40.05|false|rachel thompson|2013-03-01 09:11:58.703103|73.80|geology +42|306|65729|4294967425|46.71|24.87|false|yuri polk|2013-03-01 09:11:58.703189|62.26|american history +47|283|65607|4294967429|67.43|11.54|true|holly ellison|2013-03-01 09:11:58.703167|40.94|topology +10|280|65772|4294967336|23.44|0.72|true|katie zipper|2013-03-01 09:11:58.703283|2.57|values clariffication +42|439|65537|4294967536|7.75|29.08|false|jessica hernandez|2013-03-01 09:11:58.703216|47.75|xylophone band +26|391|65745|4294967413|86.46|6.69|false|gabriella falkner|2013-03-01 09:11:58.703105|83.29|joggying +98|411|65692|4294967472|5.19|46.37|true|zach falkner|2013-03-01 09:11:58.703135|12.78|study skills +88|474|65536|4294967394|8.86|49.89|false|xavier davidson|2013-03-01 09:11:58.703071|1.05|philosophy +93|377|65743|4294967431|3.76|40.73|true|katie falkner|2013-03-01 09:11:58.703145|12.07|geology +118|317|65575|4294967415|51.57|0.06|true|katie falkner|2013-03-01 09:11:58.703189|75.77|biology +75|333|65666|4294967304|22.20|21.15|false|fred zipper|2013-03-01 09:11:58.703217|99.58|zync studies +13|288|65536|4294967431|71.55|3.51|false|gabriella garcia|2013-03-01 09:11:58.703108|22.15|kindergarten +121|363|65671|4294967305|39.06|39.21|true|quinn king|2013-03-01 09:11:58.703323|99.37|quiet hour +54|332|65772|4294967407|51.76|12.97|false|mike underhill|2013-03-01 09:11:58.703226|3.51|study skills +70|266|65587|4294967526|59.65|49.52|false|rachel garcia|2013-03-01 09:11:58.703207|17.84|industrial engineering +46|480|65686|4294967541|32.34|15.68|true|katie quirinius|2013-03-01 09:11:58.703300|79.85|quiet hour +91|298|65683|4294967359|99.98|4.81|true|oscar king|2013-03-01 09:11:58.703166|0.92|yard duty +21|472|65747|4294967369|88.83|20.56|true|oscar ellison|2013-03-01 09:11:58.703242|99.42|quiet hour +4|290|65744|4294967506|61.82|1.18|true|irene garcia|2013-03-01 09:11:58.703259|84.01|forestry +40|346|65678|4294967540|40.90|10.24|true|sarah zipper|2013-03-01 09:11:58.703170|17.05|study skills +105|448|65555|4294967470|34.85|11.71|true|tom white|2013-03-01 09:11:58.703321|52.56|history +96|510|65602|4294967430|85.23|26.73|true|sarah allen|2013-03-01 09:11:58.703107|53.35|biology +43|495|65554|4294967532|45.09|11.72|false|nick johnson|2013-03-01 09:11:58.703079|48.06|xylophone band +9|427|65553|4294967505|27.62|38.95|true|luke zipper|2013-03-01 09:11:58.703183|37.05|linguistics +108|337|65551|4294967330|73.80|5.75|true|ethan nixon|2013-03-01 09:11:58.703209|18.08|american history +8|310|65599|4294967356|43.42|37.20|false|bob polk|2013-03-01 09:11:58.703112|97.11|yard duty +119|455|65773|4294967482|98.28|15.98|true|tom laertes|2013-03-01 09:11:58.703202|19.47|history +112|278|65601|4294967392|20.35|14.15|false|zach miller|2013-03-01 09:11:58.703136|92.93|forestry +72|284|65648|4294967458|54.91|32.75|false|fred ovid|2013-03-01 09:11:58.703119|41.45|nap time +-1|430|65590|4294967310|35.62|22.75|false|zach laertes|2013-03-01 09:11:58.703128|89.62|xylophone band +58|339|65705|4294967539|95.36|12.10|false|rachel garcia|2013-03-01 09:11:58.703324|19.78|philosophy +3|412|65547|4294967470|88.22|0.38|false|mike brown|2013-03-01 09:11:58.703251|0.27|zync studies +80|493|65757|4294967441|99.92|30.50|false|sarah ichabod|2013-03-01 09:11:58.703298|64.34|forestry +16|330|65551|4294967313|48.42|13.82|true|zach thompson|2013-03-01 09:11:58.703191|29.75|geology +88|377|65557|4294967358|26.20|25.38|false|luke xylophone|2013-03-01 09:11:58.703218|20.61|geology +115|411|65574|4294967505|99.58|12.87|true|calvin van buren|2013-03-01 09:11:58.703110|63.36|kindergarten +19|344|65738|4294967315|7.84|10.01|false|bob garcia|2013-03-01 09:11:58.703280|30.65|opthamology +109|288|65581|4294967455|32.08|30.23|false|priscilla laertes|2013-03-01 09:11:58.703256|49.71|chemistry +108|321|65759|4294967307|76.47|3.86|true|wendy thompson|2013-03-01 09:11:58.703105|51.10|joggying +20|368|65677|4294967329|6.20|32.57|true|quinn ovid|2013-03-01 09:11:58.703162|30.16|yard duty +40|322|65633|4294967540|59.93|14.00|true|oscar laertes|2013-03-01 09:11:58.703247|24.19|topology +101|409|65606|4294967430|28.95|12.18|true|holly ovid|2013-03-01 09:11:58.703290|66.62|industrial engineering +91|381|65589|4294967536|12.25|39.98|false|yuri ellison|2013-03-01 09:11:58.703249|83.89|undecided +78|369|65541|4294967360|90.85|10.22|true|luke carson|2013-03-01 09:11:58.703319|16.26|education +18|407|65536|4294967463|54.33|3.43|false|luke allen|2013-03-01 09:11:58.703094|11.31|industrial engineering +63|414|65598|4294967336|80.64|31.20|true|yuri xylophone|2013-03-01 09:11:58.703124|95.12|study skills +90|275|65594|4294967352|50.51|25.10|false|oscar brown|2013-03-01 09:11:58.703120|33.42|topology +56|433|65626|4294967491|40.28|44.60|false|katie miller|2013-03-01 09:11:58.703233|62.95|quiet hour +-3|314|65670|4294967330|13.67|34.86|false|wendy xylophone|2013-03-01 09:11:58.703191|84.76|mathematics +115|358|65627|4294967391|38.71|22.44|false|fred robinson|2013-03-01 09:11:58.703089|48.61|undecided +93|291|65774|4294967438|21.01|6.27|true|rachel robinson|2013-03-01 09:11:58.703071|25.74|american history +78|345|65664|4294967392|30.86|32.19|true|luke ellison|2013-03-01 09:11:58.703245|19.88|undecided +52|387|65702|4294967457|34.20|4.54|true|jessica xylophone|2013-03-01 09:11:58.703141|30.35|undecided +111|477|65683|4294967372|28.21|41.77|false|rachel miller|2013-03-01 09:11:58.703204|81.98|yard duty +55|392|65692|4294967536|50.84|27.04|false|wendy polk|2013-03-01 09:11:58.703137|23.67|topology +113|413|65725|4294967538|38.88|48.32|true|oscar ellison|2013-03-01 09:11:58.703317|67.30|topology +85|482|65772|4294967455|69.47|47.09|true|oscar ovid|2013-03-01 09:11:58.703162|62.89|xylophone band +108|434|65724|4294967402|39.01|14.10|false|sarah laertes|2013-03-01 09:11:58.703096|53.47|forestry +32|332|65771|4294967374|27.06|46.67|true|quinn young|2013-03-01 09:11:58.703289|16.38|forestry +68|387|65653|4294967484|12.61|32.29|false|katie robinson|2013-03-01 09:11:58.703151|18.23|religion +86|371|65602|4294967441|67.33|39.42|true|bob brown|2013-03-01 09:11:58.703258|2.89|zync studies +64|381|65765|4294967412|44.21|1.50|true|priscilla van buren|2013-03-01 09:11:58.703089|8.48|chemistry +48|289|65561|4294967439|18.66|44.60|true|katie quirinius|2013-03-01 09:11:58.703220|7.28|yard duty +103|268|65632|4294967476|68.35|11.36|false|holly falkner|2013-03-01 09:11:58.703239|65.78|mathematics +39|412|65549|4294967331|3.22|23.05|false|nick underhill|2013-03-01 09:11:58.703122|90.45|mathematics +104|411|65576|4294967308|70.48|32.41|true|david garcia|2013-03-01 09:11:58.703163|12.99|forestry +65|508|65555|4294967510|63.45|29.45|true|zach zipper|2013-03-01 09:11:58.703306|59.35|history +97|382|65573|4294967490|97.40|11.07|false|mike underhill|2013-03-01 09:11:58.703267|65.89|debate +74|257|65594|4294967319|78.39|20.30|false|holly robinson|2013-03-01 09:11:58.703199|57.94|debate +9|418|65698|4294967339|69.78|45.67|false|wendy davidson|2013-03-01 09:11:58.703151|89.34|values clariffication +118|329|65630|4294967356|50.86|34.43|false|quinn hernandez|2013-03-01 09:11:58.703144|81.76|yard duty +107|457|65705|4294967359|96.25|11.94|true|luke polk|2013-03-01 09:11:58.703124|70.63|debate +96|367|65748|4294967544|76.27|32.49|false|priscilla white|2013-03-01 09:11:58.703321|7.83|forestry +77|402|65663|4294967493|67.22|15.39|true|mike nixon|2013-03-01 09:11:58.703300|32.16|kindergarten +61|378|65547|4294967404|56.48|43.52|false|luke ovid|2013-03-01 09:11:58.703300|66.79|debate +73|350|65695|4294967330|56.91|24.91|false|yuri white|2013-03-01 09:11:58.703315|52.38|quiet hour +79|381|65783|4294967358|95.37|20.79|true|sarah white|2013-03-01 09:11:58.703303|67.23|study skills +48|295|65590|4294967349|84.51|35.69|false|gabriella young|2013-03-01 09:11:58.703073|7.11|nap time +38|454|65581|4294967486|9.21|5.20|true|katie robinson|2013-03-01 09:11:58.703188|11.10|history +11|484|65552|4294967452|79.68|20.47|true|irene young|2013-03-01 09:11:58.703246|84.08|geology +61|266|65586|4294967464|2.13|32.70|true|gabriella xylophone|2013-03-01 09:11:58.703073|15.63|debate +78|488|65640|4294967361|63.69|6.24|true|rachel underhill|2013-03-01 09:11:58.703075|60.22|forestry +57|369|65674|4294967506|96.84|3.10|true|calvin falkner|2013-03-01 09:11:58.703166|80.31|american history +43|416|65780|4294967323|95.31|9.12|false|rachel quirinius|2013-03-01 09:11:58.703281|65.85|values clariffication +65|472|65728|4294967513|71.98|49.80|false|yuri laertes|2013-03-01 09:11:58.703261|7.27|kindergarten +24|485|65788|4294967534|40.82|22.42|false|gabriella garcia|2013-03-01 09:11:58.703239|90.51|opthamology +98|493|65651|4294967488|40.95|15.41|false|oscar davidson|2013-03-01 09:11:58.703118|0.77|mathematics +27|389|65550|4294967538|8.74|32.82|false|wendy thompson|2013-03-01 09:11:58.703257|13.09|linguistics +69|490|65562|4294967418|12.05|44.88|true|ulysses king|2013-03-01 09:11:58.703184|34.63|linguistics +52|307|65639|4294967389|44.04|36.36|false|jessica young|2013-03-01 09:11:58.703309|63.72|philosophy +82|414|65548|4294967382|97.03|7.32|true|quinn nixon|2013-03-01 09:11:58.703173|87.71|xylophone band +17|319|65709|4294967327|1.52|40.23|true|rachel white|2013-03-01 09:11:58.703249|46.40|kindergarten +66|360|65736|4294967424|83.86|48.98|true|katie zipper|2013-03-01 09:11:58.703179|4.62|yard duty +55|412|65612|4294967396|15.87|17.48|false|oscar robinson|2013-03-01 09:11:58.703243|69.72|chemistry +70|299|65642|4294967306|60.57|13.48|false|zach white|2013-03-01 09:11:58.703324|43.51|religion +69|428|65790|4294967530|55.00|30.40|false|gabriella xylophone|2013-03-01 09:11:58.703230|48.55|education +13|295|65663|4294967363|69.36|41.50|false|calvin carson|2013-03-01 09:11:58.703201|23.82|kindergarten +54|278|65740|4294967478|84.11|3.81|false|zach carson|2013-03-01 09:11:58.703287|51.54|mathematics +49|394|65613|4294967438|85.13|29.62|false|holly zipper|2013-03-01 09:11:58.703111|85.31|industrial engineering +55|397|65543|4294967387|81.45|12.59|true|ulysses hernandez|2013-03-01 09:11:58.703195|78.66|study skills +21|289|65775|4294967446|48.64|38.87|false|mike nixon|2013-03-01 09:11:58.703259|14.35|chemistry +32|496|65595|4294967473|31.09|47.69|true|jessica brown|2013-03-01 09:11:58.703274|58.58|quiet hour +16|332|65628|4294967338|43.05|45.30|false|alice miller|2013-03-01 09:11:58.703114|85.75|zync studies +8|374|65677|4294967483|75.10|42.03|true|alice ellison|2013-03-01 09:11:58.703074|58.92|undecided +26|371|65729|4294967300|82.71|19.95|false|katie polk|2013-03-01 09:11:58.703095|6.78|opthamology +32|466|65560|4294967351|35.93|22.30|true|calvin white|2013-03-01 09:11:58.703077|1.82|linguistics +40|452|65576|4294967374|84.92|12.10|true|david zipper|2013-03-01 09:11:58.703159|35.97|quiet hour +23|311|65647|4294967459|20.42|4.20|true|alice white|2013-03-01 09:11:58.703129|73.98|debate +113|436|65724|4294967521|19.75|38.70|false|yuri davidson|2013-03-01 09:11:58.703224|81.68|joggying +53|504|65654|4294967327|89.21|17.39|false|yuri carson|2013-03-01 09:11:58.703119|13.77|wind surfing +33|272|65646|4294967305|78.35|4.06|true|sarah xylophone|2013-03-01 09:11:58.703209|64.77|biology +76|334|65584|4294967377|19.45|32.50|false|sarah xylophone|2013-03-01 09:11:58.703241|48.34|mathematics +27|440|65547|4294967516|68.07|37.22|false|david nixon|2013-03-01 09:11:58.703087|56.15|linguistics +7|319|65589|4294967337|4.90|15.73|false|calvin garcia|2013-03-01 09:11:58.703162|40.84|values clariffication +19|300|65596|4294967363|32.28|39.73|true|sarah steinbeck|2013-03-01 09:11:58.703244|72.90|xylophone band +119|273|65742|4294967356|25.61|6.80|false|irene laertes|2013-03-01 09:11:58.703197|91.96|chemistry +14|274|65547|4294967349|4.21|34.75|false|wendy carson|2013-03-01 09:11:58.703157|36.90|study skills +82|503|65728|4294967426|78.97|3.81|true|zach nixon|2013-03-01 09:11:58.703277|20.94|quiet hour +44|391|65547|4294967545|37.26|47.62|true|wendy garcia|2013-03-01 09:11:58.703103|66.58|biology +93|424|65559|4294967327|95.89|42.91|false|mike young|2013-03-01 09:11:58.703290|29.19|zync studies +49|484|65586|4294967501|9.62|30.73|false|ulysses ellison|2013-03-01 09:11:58.703301|86.39|xylophone band +79|402|65568|4294967357|69.44|33.11|false|david underhill|2013-03-01 09:11:58.703287|23.94|debate +68|456|65774|4294967500|77.97|19.46|false|ulysses white|2013-03-01 09:11:58.703092|99.08|opthamology +59|270|65551|4294967302|98.57|45.24|false|gabriella van buren|2013-03-01 09:11:58.703101|51.52|zync studies +36|477|65772|4294967470|54.07|22.43|false|xavier ichabod|2013-03-01 09:11:58.703081|73.41|industrial engineering +25|410|65699|4294967384|97.33|10.51|true|jessica brown|2013-03-01 09:11:58.703182|57.82|debate +77|443|65629|4294967470|98.55|8.08|false|tom falkner|2013-03-01 09:11:58.703121|54.46|topology +123|416|65582|4294967298|38.62|7.82|true|bob garcia|2013-03-01 09:11:58.703291|59.08|study skills +25|353|65659|4294967498|69.42|0.34|false|holly steinbeck|2013-03-01 09:11:58.703097|4.70|forestry +61|390|65648|4294967330|93.28|9.19|false|priscilla miller|2013-03-01 09:11:58.703229|68.25|zync studies +49|408|65603|4294967416|26.72|39.16|true|quinn laertes|2013-03-01 09:11:58.703081|32.43|history +46|506|65651|4294967437|87.85|11.04|false|holly carson|2013-03-01 09:11:58.703277|81.37|undecided +33|325|65596|4294967548|81.81|46.88|true|ulysses xylophone|2013-03-01 09:11:58.703175|59.01|forestry +56|353|65716|4294967341|39.30|3.71|true|sarah falkner|2013-03-01 09:11:58.703072|84.20|zync studies +67|280|65629|4294967467|87.52|18.87|false|tom garcia|2013-03-01 09:11:58.703142|18.24|debate +79|295|65695|4294967509|31.98|24.06|true|yuri davidson|2013-03-01 09:11:58.703076|92.32|quiet hour +97|427|65760|4294967456|95.94|26.41|true|david zipper|2013-03-01 09:11:58.703300|70.12|values clariffication +84|342|65609|4294967315|80.34|45.37|false|oscar allen|2013-03-01 09:11:58.703295|87.52|chemistry +41|257|65542|4294967486|62.59|31.51|true|zach hernandez|2013-03-01 09:11:58.703217|46.70|topology +13|361|65565|4294967407|71.65|35.34|true|yuri laertes|2013-03-01 09:11:58.703086|59.95|industrial engineering +90|451|65651|4294967360|49.50|17.33|true|priscilla garcia|2013-03-01 09:11:58.703237|30.34|philosophy +88|404|65545|4294967483|5.32|6.73|true|fred quirinius|2013-03-01 09:11:58.703219|8.98|nap time +15|301|65788|4294967455|75.74|34.18|false|mike ichabod|2013-03-01 09:11:58.703211|94.23|education +124|281|65621|4294967324|39.53|46.39|false|katie falkner|2013-03-01 09:11:58.703307|95.87|american history +-3|414|65608|4294967338|81.39|49.09|true|tom steinbeck|2013-03-01 09:11:58.703251|10.88|xylophone band +74|280|65580|4294967531|22.13|36.32|false|ulysses ovid|2013-03-01 09:11:58.703156|78.80|geology +82|306|65739|4294967394|10.77|17.72|true|holly van buren|2013-03-01 09:11:58.703179|57.99|religion +16|352|65655|4294967475|20.65|25.96|false|jessica falkner|2013-03-01 09:11:58.703320|94.83|nap time +109|330|65569|4294967545|81.83|20.00|false|victor ellison|2013-03-01 09:11:58.703312|20.65|study skills +122|345|65618|4294967372|76.27|27.41|true|irene johnson|2013-03-01 09:11:58.703225|84.07|philosophy +61|292|65752|4294967346|92.30|15.75|false|yuri johnson|2013-03-01 09:11:58.703099|5.96|biology +17|469|65548|4294967380|88.05|34.88|false|luke young|2013-03-01 09:11:58.703117|79.63|quiet hour +109|482|65581|4294967382|17.93|33.65|true|bob ovid|2013-03-01 09:11:58.703305|49.95|mathematics +66|486|65588|4294967351|87.77|16.95|true|calvin van buren|2013-03-01 09:11:58.703231|11.12|xylophone band +45|288|65602|4294967306|85.63|6.19|true|mike ichabod|2013-03-01 09:11:58.703290|7.10|topology +48|309|65733|4294967411|90.80|43.81|false|rachel king|2013-03-01 09:11:58.703165|91.51|debate +27|342|65703|4294967427|52.94|4.69|false|nick thompson|2013-03-01 09:11:58.703295|70.57|zync studies +7|350|65549|4294967520|5.95|43.47|false|rachel thompson|2013-03-01 09:11:58.703287|75.30|undecided +21|405|65551|4294967493|96.23|12.07|false|holly laertes|2013-03-01 09:11:58.703262|75.48|quiet hour +22|458|65632|4294967395|56.65|29.02|false|tom laertes|2013-03-01 09:11:58.703145|91.34|nap time +57|258|65603|4294967420|2.61|47.01|true|calvin johnson|2013-03-01 09:11:58.703180|88.73|forestry +25|364|65586|4294967500|6.60|5.01|true|wendy brown|2013-03-01 09:11:58.703119|66.11|undecided +94|384|65633|4294967431|75.09|20.98|false|priscilla nixon|2013-03-01 09:11:58.703242|87.41|wind surfing +110|302|65683|4294967408|96.24|43.53|true|ethan polk|2013-03-01 09:11:58.703265|61.81|nap time +92|363|65698|4294967465|97.05|19.93|true|zach xylophone|2013-03-01 09:11:58.703193|72.32|philosophy +72|414|65648|4294967441|81.28|21.00|true|zach carson|2013-03-01 09:11:58.703221|60.26|joggying +107|272|65699|4294967456|60.33|4.95|false|holly miller|2013-03-01 09:11:58.703204|55.49|forestry +120|385|65636|4294967467|21.06|23.65|true|rachel polk|2013-03-01 09:11:58.703099|25.83|wind surfing +10|431|65673|4294967433|41.27|20.39|false|victor garcia|2013-03-01 09:11:58.703198|99.05|yard duty +2|326|65584|4294967388|93.31|14.11|false|ulysses ellison|2013-03-01 09:11:58.703098|80.56|linguistics +123|339|65767|4294967374|11.38|35.21|false|irene van buren|2013-03-01 09:11:58.703274|68.64|xylophone band +91|333|65620|4294967296|12.35|3.38|true|alice zipper|2013-03-01 09:11:58.703254|21.50|wind surfing +99|381|65673|4294967490|93.02|21.87|true|ulysses underhill|2013-03-01 09:11:58.703132|96.89|religion +20|448|65641|4294967481|99.98|40.87|false|alice davidson|2013-03-01 09:11:58.703207|3.14|biology +96|256|65778|4294967319|16.29|48.48|false|ulysses young|2013-03-01 09:11:58.703277|32.09|quiet hour +24|407|65597|4294967351|2.85|21.57|false|sarah allen|2013-03-01 09:11:58.703178|98.70|forestry +17|428|65623|4294967414|1.13|23.04|true|bob brown|2013-03-01 09:11:58.703163|73.27|debate +45|447|65757|4294967436|65.74|12.29|true|katie ichabod|2013-03-01 09:11:58.703182|40.99|quiet hour +37|369|65703|4294967454|78.09|34.35|false|oscar robinson|2013-03-01 09:11:58.703108|66.19|linguistics +18|485|65751|4294967526|58.77|19.40|false|ulysses carson|2013-03-01 09:11:58.703072|27.63|linguistics +96|443|65542|4294967524|72.64|31.69|false|holly falkner|2013-03-01 09:11:58.703251|54.62|study skills +101|398|65607|4294967382|15.84|8.14|true|tom allen|2013-03-01 09:11:58.703302|56.41|forestry +62|335|65733|4294967322|11.19|25.37|false|mike van buren|2013-03-01 09:11:58.703133|48.27|undecided +52|317|65600|4294967444|73.81|38.01|true|rachel garcia|2013-03-01 09:11:58.703095|34.57|biology +8|476|65755|4294967443|62.33|22.18|false|jessica miller|2013-03-01 09:11:58.703101|82.64|mathematics +64|349|65620|4294967307|5.15|1.10|false|irene ichabod|2013-03-01 09:11:58.703203|80.09|mathematics +37|423|65594|4294967521|3.51|34.36|true|fred robinson|2013-03-01 09:11:58.703081|6.24|nap time +3|347|65782|4294967423|12.60|38.86|true|oscar quirinius|2013-03-01 09:11:58.703106|5.07|industrial engineering +51|328|65658|4294967465|2.74|16.75|true|ethan king|2013-03-01 09:11:58.703089|38.84|philosophy +33|260|65683|4294967352|1.61|19.55|false|katie king|2013-03-01 09:11:58.703151|39.61|philosophy +69|336|65654|4294967476|25.28|45.68|false|alice quirinius|2013-03-01 09:11:58.703097|98.13|forestry +107|423|65563|4294967491|65.43|31.74|false|yuri davidson|2013-03-01 09:11:58.703162|19.69|debate +16|261|65679|4294967330|18.22|4.04|false|katie quirinius|2013-03-01 09:11:58.703189|93.84|topology +96|470|65746|4294967339|9.14|40.15|false|holly falkner|2013-03-01 09:11:58.703258|25.15|quiet hour +77|474|65657|4294967471|90.39|29.76|false|priscilla underhill|2013-03-01 09:11:58.703287|36.51|kindergarten +46|423|65548|4294967517|1.61|7.86|false|tom xylophone|2013-03-01 09:11:58.703262|12.72|history +84|350|65604|4294967297|91.25|20.25|false|wendy ellison|2013-03-01 09:11:58.703163|2.83|yard duty +78|376|65656|4294967396|79.41|13.96|true|sarah xylophone|2013-03-01 09:11:58.703282|44.96|yard duty +22|380|65697|4294967304|1.08|12.91|false|katie underhill|2013-03-01 09:11:58.703206|41.70|history +44|503|65659|4294967499|33.37|38.04|true|quinn davidson|2013-03-01 09:11:58.703234|68.99|american history +23|432|65570|4294967491|74.51|31.01|false|calvin garcia|2013-03-01 09:11:58.703229|93.77|biology +1|462|65744|4294967419|87.16|42.25|false|fred johnson|2013-03-01 09:11:58.703134|48.50|history +102|430|65615|4294967315|31.94|46.49|true|ethan garcia|2013-03-01 09:11:58.703137|32.80|philosophy +32|263|65717|4294967352|27.56|8.35|false|rachel falkner|2013-03-01 09:11:58.703143|99.01|yard duty +61|340|65582|4294967447|66.95|14.66|false|xavier ellison|2013-03-01 09:11:58.703213|19.85|yard duty +121|353|65641|4294967362|68.77|30.82|true|zach polk|2013-03-01 09:11:58.703261|19.97|geology +13|364|65787|4294967340|33.88|32.50|true|holly van buren|2013-03-01 09:11:58.703128|90.59|opthamology +55|289|65723|4294967414|27.11|28.35|true|nick young|2013-03-01 09:11:58.703208|57.68|linguistics +36|443|65624|4294967347|97.24|9.94|true|calvin king|2013-03-01 09:11:58.703105|72.46|undecided +74|506|65784|4294967519|48.52|13.93|true|tom laertes|2013-03-01 09:11:58.703130|69.80|american history +93|320|65632|4294967411|64.22|24.77|true|ethan robinson|2013-03-01 09:11:58.703262|51.15|study skills +116|376|65614|4294967367|69.58|9.22|true|victor garcia|2013-03-01 09:11:58.703226|96.92|biology +121|277|65691|4294967366|83.10|3.68|true|alice steinbeck|2013-03-01 09:11:58.703166|76.51|topology +4|299|65622|4294967303|2.26|1.62|true|tom young|2013-03-01 09:11:58.703232|77.06|debate +56|422|65710|4294967432|73.47|37.69|true|calvin miller|2013-03-01 09:11:58.703081|14.28|kindergarten +0|331|65565|4294967458|14.60|21.76|true|david allen|2013-03-01 09:11:58.703167|67.20|zync studies +46|270|65627|4294967512|59.57|46.61|true|holly white|2013-03-01 09:11:58.703304|14.24|industrial engineering +76|278|65677|4294967471|33.07|16.59|true|xavier carson|2013-03-01 09:11:58.703084|60.35|quiet hour +123|350|65548|4294967473|4.83|6.77|false|ethan young|2013-03-01 09:11:58.703235|75.73|opthamology +13|344|65723|4294967544|17.66|6.85|false|tom brown|2013-03-01 09:11:58.703298|8.49|history +56|377|65761|4294967328|94.94|47.86|false|gabriella quirinius|2013-03-01 09:11:58.703317|49.26|chemistry +43|432|65558|4294967516|58.57|49.40|false|victor underhill|2013-03-01 09:11:58.703081|80.01|study skills +60|432|65746|4294967317|87.27|7.82|false|victor young|2013-03-01 09:11:58.703317|17.09|american history +54|288|65790|4294967481|12.03|23.16|false|ulysses nixon|2013-03-01 09:11:58.703289|95.67|education +80|508|65541|4294967456|37.40|11.24|true|priscilla steinbeck|2013-03-01 09:11:58.703081|47.13|mathematics +59|311|65710|4294967377|34.37|23.12|false|katie carson|2013-03-01 09:11:58.703307|99.33|philosophy +101|467|65593|4294967544|27.91|4.19|false|tom xylophone|2013-03-01 09:11:58.703176|12.48|history +76|460|65779|4294967302|86.19|29.73|false|priscilla ellison|2013-03-01 09:11:58.703169|28.71|chemistry +20|266|65633|4294967432|60.96|38.87|true|victor underhill|2013-03-01 09:11:58.703131|14.10|mathematics +114|449|65644|4294967380|63.38|21.23|false|calvin underhill|2013-03-01 09:11:58.703195|57.49|debate +94|487|65655|4294967324|34.76|3.87|true|oscar falkner|2013-03-01 09:11:58.703078|35.90|wind surfing +32|417|65683|4294967506|68.66|13.23|false|jessica young|2013-03-01 09:11:58.703142|82.83|joggying +17|460|65696|4294967478|3.87|40.26|true|priscilla brown|2013-03-01 09:11:58.703308|0.37|mathematics +2|498|65536|4294967509|65.54|44.95|true|zach allen|2013-03-01 09:11:58.703210|32.03|xylophone band +28|308|65662|4294967487|25.50|20.69|false|ethan garcia|2013-03-01 09:11:58.703222|78.36|linguistics +16|348|65744|4294967541|57.55|32.47|true|priscilla nixon|2013-03-01 09:11:58.703208|58.90|undecided +74|436|65738|4294967512|18.01|47.42|true|alice ichabod|2013-03-01 09:11:58.703113|39.48|undecided +67|338|65593|4294967442|7.61|28.67|true|tom xylophone|2013-03-01 09:11:58.703100|93.46|study skills +114|423|65742|4294967513|3.27|46.58|false|zach brown|2013-03-01 09:11:58.703233|8.57|education +32|491|65715|4294967520|56.74|15.12|false|gabriella ichabod|2013-03-01 09:11:58.703313|99.32|values clariffication +3|492|65684|4294967421|72.57|49.09|false|quinn ovid|2013-03-01 09:11:58.703117|20.21|wind surfing +95|479|65603|4294967320|17.57|4.74|false|david garcia|2013-03-01 09:11:58.703126|79.95|biology +75|441|65568|4294967420|5.25|4.23|false|zach ellison|2013-03-01 09:11:58.703287|36.41|industrial engineering +37|327|65702|4294967533|5.89|4.00|false|xavier white|2013-03-01 09:11:58.703312|59.54|chemistry +47|473|65562|4294967324|80.28|19.72|true|ulysses xylophone|2013-03-01 09:11:58.703238|12.48|joggying +122|435|65608|4294967483|33.35|21.33|false|zach falkner|2013-03-01 09:11:58.703227|44.56|quiet hour +110|310|65749|4294967451|55.01|11.81|false|david nixon|2013-03-01 09:11:58.703265|63.01|zync studies +13|379|65560|4294967446|16.48|12.99|true|zach carson|2013-03-01 09:11:58.703086|50.56|philosophy +122|334|65682|4294967397|39.73|31.14|true|ulysses garcia|2013-03-01 09:11:58.703278|93.87|undecided +76|501|65603|4294967519|60.32|29.51|true|david underhill|2013-03-01 09:11:58.703301|52.97|study skills +23|411|65632|4294967426|74.36|4.34|true|quinn xylophone|2013-03-01 09:11:58.703258|26.43|forestry +0|272|65563|4294967540|50.81|15.05|false|gabriella underhill|2013-03-01 09:11:58.703239|92.56|study skills +25|338|65743|4294967388|12.03|47.72|true|irene robinson|2013-03-01 09:11:58.703177|48.05|linguistics +34|361|65613|4294967336|37.37|18.35|false|rachel zipper|2013-03-01 09:11:58.703285|34.42|mathematics +107|504|65578|4294967497|35.57|18.31|true|quinn davidson|2013-03-01 09:11:58.703227|77.03|history +52|360|65710|4294967391|6.17|47.18|false|calvin quirinius|2013-03-01 09:11:58.703271|44.96|quiet hour +21|361|65712|4294967312|75.11|17.90|false|bob ichabod|2013-03-01 09:11:58.703124|31.73|geology +-1|321|65714|4294967417|36.00|39.21|false|oscar carson|2013-03-01 09:11:58.703273|13.36|opthamology +55|391|65697|4294967446|59.97|9.13|false|david ichabod|2013-03-01 09:11:58.703223|41.39|study skills +109|456|65737|4294967307|91.31|29.90|false|priscilla underhill|2013-03-01 09:11:58.703157|3.07|geology +121|473|65740|4294967545|24.22|37.83|false|quinn white|2013-03-01 09:11:58.703178|31.59|debate +28|290|65662|4294967506|42.16|22.91|true|ethan young|2013-03-01 09:11:58.703242|74.97|education +71|373|65641|4294967396|93.59|32.92|true|wendy zipper|2013-03-01 09:11:58.703113|58.83|wind surfing +50|276|65639|4294967547|7.28|11.20|false|rachel carson|2013-03-01 09:11:58.703296|76.65|nap time +96|358|65784|4294967363|11.76|25.14|false|tom xylophone|2013-03-01 09:11:58.703168|57.68|xylophone band +45|365|65644|4294967395|95.33|5.97|true|wendy van buren|2013-03-01 09:11:58.703279|41.81|nap time +16|393|65767|4294967479|15.82|37.36|true|ulysses hernandez|2013-03-01 09:11:58.703104|99.55|history +7|391|65568|4294967468|69.69|7.34|false|ulysses white|2013-03-01 09:11:58.703266|90.55|linguistics +121|346|65656|4294967449|44.95|3.38|true|sarah miller|2013-03-01 09:11:58.703157|44.69|values clariffication +121|316|65621|4294967431|84.59|44.77|false|xavier robinson|2013-03-01 09:11:58.703219|64.70|philosophy +41|411|65696|4294967406|61.90|18.09|true|rachel davidson|2013-03-01 09:11:58.703102|98.24|zync studies +107|474|65551|4294967361|34.69|25.54|false|ethan laertes|2013-03-01 09:11:58.703185|72.65|study skills +84|507|65781|4294967343|84.65|10.33|false|xavier carson|2013-03-01 09:11:58.703075|57.74|study skills +100|430|65684|4294967396|26.17|8.65|true|jessica xylophone|2013-03-01 09:11:58.703240|55.39|nap time +27|270|65567|4294967439|65.19|10.26|false|tom falkner|2013-03-01 09:11:58.703099|62.31|study skills +37|429|65554|4294967338|15.54|15.98|false|ulysses nixon|2013-03-01 09:11:58.703112|19.47|mathematics +66|429|65679|4294967333|13.70|5.68|true|victor ovid|2013-03-01 09:11:58.703212|24.02|values clariffication +62|363|65781|4294967390|72.14|5.81|true|katie polk|2013-03-01 09:11:58.703180|13.78|biology +57|462|65627|4294967500|49.88|46.85|true|gabriella brown|2013-03-01 09:11:58.703268|38.61|philosophy +102|306|65707|4294967417|2.04|13.10|true|priscilla johnson|2013-03-01 09:11:58.703138|54.47|linguistics +92|358|65702|4294967426|68.09|16.13|true|victor quirinius|2013-03-01 09:11:58.703277|36.81|zync studies +49|382|65573|4294967479|24.82|8.10|true|quinn carson|2013-03-01 09:11:58.703256|27.48|nap time +83|359|65742|4294967323|30.27|28.29|false|tom carson|2013-03-01 09:11:58.703267|47.68|opthamology +11|334|65537|4294967405|19.89|38.68|false|priscilla white|2013-03-01 09:11:58.703311|19.44|values clariffication +62|313|65573|4294967383|49.42|18.68|false|oscar johnson|2013-03-01 09:11:58.703120|3.47|xylophone band +93|496|65724|4294967529|56.65|3.56|false|david steinbeck|2013-03-01 09:11:58.703321|46.30|yard duty +48|329|65732|4294967318|97.21|10.08|false|alice miller|2013-03-01 09:11:58.703142|19.46|biology +64|464|65751|4294967518|92.05|1.51|true|katie nixon|2013-03-01 09:11:58.703122|64.19|religion +67|279|65654|4294967509|61.94|24.96|false|xavier brown|2013-03-01 09:11:58.703212|33.67|industrial engineering +82|439|65626|4294967467|59.85|17.75|true|gabriella white|2013-03-01 09:11:58.703212|59.63|wind surfing +96|343|65666|4294967302|97.79|27.79|true|quinn brown|2013-03-01 09:11:58.703159|89.54|zync studies +22|351|65648|4294967446|89.32|41.38|false|yuri nixon|2013-03-01 09:11:58.703119|24.69|chemistry +25|262|65637|4294967388|42.47|42.34|true|ulysses ichabod|2013-03-01 09:11:58.703247|89.55|religion +22|499|65643|4294967464|75.78|7.75|true|oscar allen|2013-03-01 09:11:58.703237|29.27|philosophy +23|314|65620|4294967506|38.94|41.27|true|holly ellison|2013-03-01 09:11:58.703291|39.80|values clariffication +4|317|65711|4294967490|82.04|27.10|false|oscar underhill|2013-03-01 09:11:58.703144|5.00|debate +47|385|65693|4294967517|76.75|49.85|true|gabriella underhill|2013-03-01 09:11:58.703218|44.18|linguistics +61|387|65669|4294967372|78.48|44.86|true|mike garcia|2013-03-01 09:11:58.703139|55.41|american history +87|302|65701|4294967338|70.98|42.47|true|gabriella hernandez|2013-03-01 09:11:58.703143|92.56|industrial engineering +44|278|65790|4294967297|30.27|31.11|false|tom king|2013-03-01 09:11:58.703227|3.12|education +38|429|65662|4294967298|20.33|39.54|true|nick underhill|2013-03-01 09:11:58.703172|19.84|zync studies +7|366|65667|4294967363|11.91|14.90|false|calvin xylophone|2013-03-01 09:11:58.703318|78.75|chemistry +107|307|65698|4294967465|31.85|33.55|true|quinn young|2013-03-01 09:11:58.703169|92.14|topology +30|354|65720|4294967499|74.40|15.72|false|ethan robinson|2013-03-01 09:11:58.703276|46.14|joggying +112|406|65661|4294967548|67.62|36.27|false|zach brown|2013-03-01 09:11:58.703299|2.64|chemistry +45|424|65733|4294967429|5.66|27.15|false|victor laertes|2013-03-01 09:11:58.703186|46.14|american history +48|486|65568|4294967505|57.91|44.81|true|xavier davidson|2013-03-01 09:11:58.703227|32.83|values clariffication +37|271|65572|4294967331|13.32|28.25|true|sarah ichabod|2013-03-01 09:11:58.703130|24.73|study skills +15|440|65611|4294967546|37.19|21.68|true|rachel laertes|2013-03-01 09:11:58.703253|54.82|joggying +49|309|65596|4294967296|18.67|35.81|false|irene van buren|2013-03-01 09:11:58.703136|92.82|linguistics +102|349|65722|4294967306|92.21|24.15|false|ulysses brown|2013-03-01 09:11:58.703297|17.27|mathematics +43|407|65614|4294967515|82.29|15.26|true|sarah van buren|2013-03-01 09:11:58.703076|42.39|quiet hour +109|358|65650|4294967444|66.95|0.19|true|zach carson|2013-03-01 09:11:58.703246|71.43|mathematics +5|427|65574|4294967372|85.55|40.01|false|katie xylophone|2013-03-01 09:11:58.703071|18.68|topology +84|464|65622|4294967324|46.06|42.38|false|ethan garcia|2013-03-01 09:11:58.703312|54.20|quiet hour +114|409|65589|4294967509|67.63|28.10|false|sarah miller|2013-03-01 09:11:58.703201|19.54|xylophone band +106|492|65579|4294967471|37.35|7.92|true|mike xylophone|2013-03-01 09:11:58.703140|52.74|chemistry +37|407|65703|4294967544|65.10|41.23|true|david ichabod|2013-03-01 09:11:58.703083|61.55|quiet hour +49|500|65688|4294967482|94.77|21.32|true|victor miller|2013-03-01 09:11:58.703190|29.64|education +110|418|65568|4294967313|20.27|4.95|false|ethan miller|2013-03-01 09:11:58.703082|17.87|biology +100|369|65683|4294967478|66.04|27.25|false|jessica miller|2013-03-01 09:11:58.703215|88.80|opthamology +60|332|65696|4294967368|15.73|49.23|true|bob robinson|2013-03-01 09:11:58.703191|95.05|yard duty +97|321|65773|4294967326|13.35|3.95|false|mike king|2013-03-01 09:11:58.703245|10.32|philosophy +73|456|65574|4294967408|55.39|26.65|true|mike van buren|2013-03-01 09:11:58.703137|74.93|industrial engineering +19|505|65679|4294967331|42.43|33.01|true|holly robinson|2013-03-01 09:11:58.703233|77.84|religion +33|277|65647|4294967442|47.29|40.35|false|zach falkner|2013-03-01 09:11:58.703254|3.88|chemistry +55|402|65579|4294967511|83.18|48.47|false|priscilla laertes|2013-03-01 09:11:58.703108|63.55|yard duty +26|306|65569|4294967408|50.10|6.39|true|katie miller|2013-03-01 09:11:58.703122|64.46|linguistics +64|279|65777|4294967457|95.40|8.02|true|sarah brown|2013-03-01 09:11:58.703094|24.83|quiet hour +25|475|65663|4294967418|23.93|34.18|true|katie laertes|2013-03-01 09:11:58.703164|14.14|opthamology +1|470|65783|4294967339|25.36|40.58|false|xavier hernandez|2013-03-01 09:11:58.703292|2.36|chemistry +9|447|65694|4294967387|76.43|35.66|true|irene king|2013-03-01 09:11:58.703312|22.48|education +111|276|65731|4294967401|12.48|28.80|true|priscilla davidson|2013-03-01 09:11:58.703086|91.68|philosophy +91|435|65736|4294967486|17.69|17.48|false|gabriella underhill|2013-03-01 09:11:58.703282|81.54|biology +101|447|65652|4294967505|41.67|30.85|false|calvin laertes|2013-03-01 09:11:58.703089|89.95|values clariffication +67|343|65678|4294967460|31.59|21.41|false|gabriella white|2013-03-01 09:11:58.703220|4.55|opthamology +67|442|65728|4294967431|54.07|34.46|false|oscar ovid|2013-03-01 09:11:58.703101|95.69|industrial engineering +3|487|65714|4294967399|37.31|6.52|false|priscilla carson|2013-03-01 09:11:58.703308|65.23|mathematics +0|431|65764|4294967507|69.00|16.51|false|ulysses ovid|2013-03-01 09:11:58.703111|62.48|kindergarten +32|429|65730|4294967404|52.80|11.96|true|nick davidson|2013-03-01 09:11:58.703271|64.23|religion +114|503|65633|4294967337|30.80|4.33|true|luke ichabod|2013-03-01 09:11:58.703263|77.66|zync studies +63|360|65784|4294967406|81.93|1.55|true|oscar white|2013-03-01 09:11:58.703252|39.82|chemistry +17|324|65594|4294967504|78.08|49.50|false|quinn xylophone|2013-03-01 09:11:58.703248|54.03|biology +42|362|65647|4294967402|28.53|21.56|true|katie young|2013-03-01 09:11:58.703112|68.26|wind surfing +80|261|65536|4294967349|37.60|32.47|true|bob robinson|2013-03-01 09:11:58.703172|86.04|linguistics +21|455|65656|4294967366|94.35|49.48|true|ulysses polk|2013-03-01 09:11:58.703298|23.59|nap time +109|325|65748|4294967313|72.42|15.03|false|katie falkner|2013-03-01 09:11:58.703204|32.96|linguistics +44|266|65617|4294967474|43.54|26.02|false|bob carson|2013-03-01 09:11:58.703140|88.38|yard duty +18|467|65540|4294967479|62.68|49.61|false|nick ovid|2013-03-01 09:11:58.703121|48.84|chemistry +84|284|65553|4294967506|13.27|43.79|true|gabriella johnson|2013-03-01 09:11:58.703269|25.36|wind surfing +60|471|65742|4294967302|68.22|37.67|true|sarah johnson|2013-03-01 09:11:58.703148|83.42|quiet hour +39|501|65568|4294967318|19.67|14.51|true|ulysses ichabod|2013-03-01 09:11:58.703323|35.21|wind surfing +-2|474|65553|4294967546|14.93|5.59|true|rachel polk|2013-03-01 09:11:58.703317|29.59|forestry +75|376|65787|4294967468|49.35|2.52|false|ulysses miller|2013-03-01 09:11:58.703246|37.94|wind surfing +124|315|65715|4294967341|61.29|34.11|true|rachel nixon|2013-03-01 09:11:58.703084|91.08|education +34|390|65657|4294967323|39.46|44.80|true|mike carson|2013-03-01 09:11:58.703188|24.47|values clariffication +117|412|65705|4294967355|37.95|37.98|false|ethan nixon|2013-03-01 09:11:58.703072|88.87|quiet hour +24|457|65603|4294967510|34.56|28.31|false|bob miller|2013-03-01 09:11:58.703076|30.85|xylophone band +11|380|65643|4294967421|11.56|44.56|true|quinn van buren|2013-03-01 09:11:58.703202|17.17|chemistry +113|276|65632|4294967487|64.87|12.11|true|ethan ellison|2013-03-01 09:11:58.703076|90.58|values clariffication +76|365|65732|4294967405|4.15|14.82|true|ethan laertes|2013-03-01 09:11:58.703280|97.99|religion +117|343|65606|4294967349|19.44|16.62|true|gabriella thompson|2013-03-01 09:11:58.703240|19.93|zync studies +121|449|65719|4294967497|1.40|37.03|false|yuri ichabod|2013-03-01 09:11:58.703184|69.62|undecided +39|311|65536|4294967428|88.01|3.81|true|ethan ovid|2013-03-01 09:11:58.703241|88.04|debate +23|337|65606|4294967401|7.33|2.17|true|fred van buren|2013-03-01 09:11:58.703275|76.17|mathematics +1|303|65632|4294967392|17.89|40.74|true|luke hernandez|2013-03-01 09:11:58.703142|16.76|philosophy +27|320|65700|4294967498|48.24|41.45|false|alice hernandez|2013-03-01 09:11:58.703102|5.42|zync studies +8|461|65634|4294967433|76.19|25.19|false|gabriella ichabod|2013-03-01 09:11:58.703079|45.77|biology +41|263|65627|4294967420|96.96|19.57|false|jessica steinbeck|2013-03-01 09:11:58.703177|47.81|history +62|309|65578|4294967480|24.19|5.02|true|nick king|2013-03-01 09:11:58.703259|85.50|topology +113|505|65703|4294967461|77.61|32.81|false|oscar underhill|2013-03-01 09:11:58.703239|23.17|wind surfing +120|384|65569|4294967451|98.23|43.46|true|priscilla underhill|2013-03-01 09:11:58.703319|64.65|chemistry +33|409|65562|4294967369|22.65|8.88|false|rachel nixon|2013-03-01 09:11:58.703231|41.28|undecided +118|421|65786|4294967500|51.68|19.82|true|irene carson|2013-03-01 09:11:58.703248|59.91|joggying +-2|436|65644|4294967357|87.39|45.26|false|quinn carson|2013-03-01 09:11:58.703307|29.72|american history +122|477|65640|4294967436|44.19|10.22|true|katie white|2013-03-01 09:11:58.703100|73.45|study skills +13|497|65539|4294967374|82.09|4.76|true|mike underhill|2013-03-01 09:11:58.703167|75.75|philosophy +2|321|65664|4294967411|67.86|14.48|true|victor garcia|2013-03-01 09:11:58.703082|98.29|chemistry +117|493|65659|4294967441|59.05|11.55|true|rachel polk|2013-03-01 09:11:58.703124|90.05|yard duty +-2|297|65724|4294967347|75.78|34.68|true|ulysses steinbeck|2013-03-01 09:11:58.703096|83.47|geology +58|348|65581|4294967448|90.86|7.14|false|nick hernandez|2013-03-01 09:11:58.703182|7.46|linguistics +111|381|65710|4294967345|25.47|17.08|true|zach johnson|2013-03-01 09:11:58.703299|79.09|quiet hour +32|433|65588|4294967544|96.84|34.45|false|sarah brown|2013-03-01 09:11:58.703296|94.13|history +70|394|65630|4294967528|69.22|42.64|true|sarah polk|2013-03-01 09:11:58.703142|7.04|biology +116|261|65599|4294967414|17.45|19.06|false|katie robinson|2013-03-01 09:11:58.703084|32.08|joggying +44|334|65621|4294967486|14.13|42.03|true|rachel ichabod|2013-03-01 09:11:58.703085|64.91|zync studies +17|391|65751|4294967310|0.76|9.71|true|wendy king|2013-03-01 09:11:58.703236|0.01|values clariffication +112|316|65604|4294967401|38.07|18.77|false|yuri steinbeck|2013-03-01 09:11:58.703105|30.21|debate +19|437|65670|4294967341|51.87|25.18|true|calvin ovid|2013-03-01 09:11:58.703080|64.44|forestry +7|393|65551|4294967516|82.21|39.45|false|oscar xylophone|2013-03-01 09:11:58.703179|87.59|kindergarten +83|492|65685|4294967422|4.10|32.29|true|fred ichabod|2013-03-01 09:11:58.703136|36.95|biology +35|477|65787|4294967400|47.81|41.97|false|gabriella quirinius|2013-03-01 09:11:58.703244|54.72|mathematics +96|370|65737|4294967546|1.17|49.23|true|ulysses laertes|2013-03-01 09:11:58.703156|42.28|nap time +104|492|65655|4294967481|3.47|22.25|true|quinn van buren|2013-03-01 09:11:58.703235|32.22|philosophy +90|275|65745|4294967335|31.57|30.15|true|yuri allen|2013-03-01 09:11:58.703243|77.57|chemistry +45|270|65776|4294967352|59.44|36.50|true|nick garcia|2013-03-01 09:11:58.703220|49.62|wind surfing +93|469|65692|4294967545|30.27|40.97|true|mike garcia|2013-03-01 09:11:58.703110|25.42|american history +63|308|65720|4294967448|88.16|49.93|false|ethan brown|2013-03-01 09:11:58.703294|22.67|religion +63|457|65563|4294967341|58.68|32.56|false|nick nixon|2013-03-01 09:11:58.703100|13.20|opthamology +93|486|65771|4294967386|64.19|23.67|true|david garcia|2013-03-01 09:11:58.703295|77.78|industrial engineering +66|283|65643|4294967461|91.45|5.61|true|yuri davidson|2013-03-01 09:11:58.703136|86.86|religion +102|486|65774|4294967425|63.08|10.05|true|katie quirinius|2013-03-01 09:11:58.703242|36.53|history +51|463|65682|4294967540|78.37|42.16|true|rachel underhill|2013-03-01 09:11:58.703182|91.09|quiet hour +19|270|65725|4294967524|96.40|21.54|false|david king|2013-03-01 09:11:58.703145|87.32|history +4|337|65650|4294967317|10.81|1.45|true|victor robinson|2013-03-01 09:11:58.703317|17.26|xylophone band +40|435|65538|4294967339|70.35|1.25|false|quinn laertes|2013-03-01 09:11:58.703129|2.03|yard duty +122|510|65695|4294967340|5.73|42.61|true|jessica brown|2013-03-01 09:11:58.703267|97.81|mathematics +26|365|65657|4294967543|36.78|2.80|true|zach ovid|2013-03-01 09:11:58.703269|83.54|geology +107|300|65611|4294967341|25.19|43.74|false|holly garcia|2013-03-01 09:11:58.703302|89.38|opthamology +99|394|65744|4294967395|59.38|33.97|true|david underhill|2013-03-01 09:11:58.703199|54.80|nap time +37|511|65614|4294967375|76.62|36.32|true|irene laertes|2013-03-01 09:11:58.703188|97.55|kindergarten +21|451|65700|4294967498|43.01|33.01|true|wendy carson|2013-03-01 09:11:58.703246|21.19|zync studies +85|341|65773|4294967391|87.73|15.31|true|luke quirinius|2013-03-01 09:11:58.703252|53.82|kindergarten +67|467|65761|4294967455|71.67|27.53|true|oscar laertes|2013-03-01 09:11:58.703317|57.17|zync studies +9|382|65714|4294967374|21.07|18.80|false|yuri white|2013-03-01 09:11:58.703223|59.48|industrial engineering +53|416|65599|4294967543|69.90|24.40|true|mike quirinius|2013-03-01 09:11:58.703225|82.67|american history +95|335|65574|4294967472|85.56|47.14|false|bob xylophone|2013-03-01 09:11:58.703087|62.70|undecided +70|343|65537|4294967439|43.14|44.95|true|gabriella ichabod|2013-03-01 09:11:58.703075|7.72|linguistics +121|268|65545|4294967360|17.32|9.29|true|rachel ichabod|2013-03-01 09:11:58.703268|33.03|zync studies +86|393|65696|4294967315|66.25|2.47|false|tom laertes|2013-03-01 09:11:58.703303|32.15|debate +99|316|65766|4294967339|37.96|44.43|true|xavier brown|2013-03-01 09:11:58.703282|42.60|education +75|478|65639|4294967492|73.46|18.96|false|jessica robinson|2013-03-01 09:11:58.703155|93.79|wind surfing +-1|299|65701|4294967390|57.44|19.29|true|luke steinbeck|2013-03-01 09:11:58.703278|55.23|opthamology +124|319|65632|4294967489|60.40|45.62|false|ulysses quirinius|2013-03-01 09:11:58.703197|60.94|values clariffication +54|273|65548|4294967539|68.28|46.18|true|jessica garcia|2013-03-01 09:11:58.703123|63.43|undecided +15|379|65624|4294967504|37.11|35.68|false|luke underhill|2013-03-01 09:11:58.703220|64.82|religion +83|299|65722|4294967441|80.19|3.41|false|mike hernandez|2013-03-01 09:11:58.703239|98.88|kindergarten +121|385|65785|4294967491|71.61|19.98|true|luke steinbeck|2013-03-01 09:11:58.703133|64.39|values clariffication +91|284|65633|4294967430|68.09|18.99|true|wendy steinbeck|2013-03-01 09:11:58.703098|74.52|geology +48|279|65635|4294967413|35.72|4.47|true|katie white|2013-03-01 09:11:58.703174|29.04|philosophy +13|467|65698|4294967394|52.21|49.31|false|nick miller|2013-03-01 09:11:58.703227|95.74|topology +12|436|65726|4294967484|9.51|44.64|false|david underhill|2013-03-01 09:11:58.703120|15.43|debate +88|485|65543|4294967301|96.79|48.09|true|ethan thompson|2013-03-01 09:11:58.703125|4.56|xylophone band +74|431|65701|4294967487|16.29|5.34|true|xavier steinbeck|2013-03-01 09:11:58.703202|1.48|philosophy +30|269|65595|4294967322|3.23|26.23|false|katie robinson|2013-03-01 09:11:58.703224|93.60|zync studies +116|323|65616|4294967467|48.56|34.57|false|alice miller|2013-03-01 09:11:58.703186|25.12|mathematics +22|436|65673|4294967425|85.18|1.16|false|victor king|2013-03-01 09:11:58.703171|46.87|topology +1|339|65715|4294967330|4.92|17.44|false|david steinbeck|2013-03-01 09:11:58.703151|55.81|quiet hour +53|500|65626|4294967373|46.26|23.70|false|luke xylophone|2013-03-01 09:11:58.703134|31.27|american history +12|437|65726|4294967366|89.69|31.32|true|calvin allen|2013-03-01 09:11:58.703160|5.28|undecided +78|353|65599|4294967456|36.23|3.14|false|holly white|2013-03-01 09:11:58.703183|76.31|philosophy +93|489|65567|4294967549|30.72|45.00|true|bob ichabod|2013-03-01 09:11:58.703193|57.93|yard duty +119|281|65685|4294967353|38.59|24.96|false|oscar zipper|2013-03-01 09:11:58.703286|40.43|forestry +38|447|65775|4294967490|46.29|43.87|true|zach allen|2013-03-01 09:11:58.703170|73.69|undecided +27|317|65749|4294967324|41.46|22.45|true|yuri ichabod|2013-03-01 09:11:58.703157|69.58|xylophone band +0|296|65710|4294967318|39.34|19.38|true|katie ichabod|2013-03-01 09:11:58.703129|83.92|undecided +93|459|65737|4294967455|64.36|21.89|true|calvin zipper|2013-03-01 09:11:58.703201|8.38|chemistry +5|464|65544|4294967490|16.55|34.62|true|wendy zipper|2013-03-01 09:11:58.703299|66.76|forestry +110|276|65542|4294967534|56.28|31.91|true|zach falkner|2013-03-01 09:11:58.703197|25.18|debate +89|363|65719|4294967532|20.93|18.38|true|rachel ellison|2013-03-01 09:11:58.703176|50.15|values clariffication +96|434|65567|4294967299|44.81|40.69|true|mike underhill|2013-03-01 09:11:58.703113|60.64|philosophy +97|478|65764|4294967379|29.39|48.04|false|mike polk|2013-03-01 09:11:58.703204|50.22|linguistics +90|438|65771|4294967348|2.74|19.71|true|jessica thompson|2013-03-01 09:11:58.703236|4.58|nap time +39|312|65598|4294967296|2.01|6.65|false|sarah miller|2013-03-01 09:11:58.703208|8.28|values clariffication +18|297|65675|4294967423|6.73|10.28|false|mike falkner|2013-03-01 09:11:58.703099|47.34|kindergarten +24|376|65753|4294967378|75.92|41.80|false|quinn allen|2013-03-01 09:11:58.703073|42.87|kindergarten +18|395|65644|4294967308|92.79|38.73|true|bob miller|2013-03-01 09:11:58.703164|41.19|chemistry +34|423|65742|4294967397|75.89|13.24|true|victor laertes|2013-03-01 09:11:58.703166|82.79|biology +124|509|65771|4294967449|65.33|17.63|false|sarah ellison|2013-03-01 09:11:58.703141|42.52|american history +60|345|65629|4294967446|63.71|42.98|true|xavier hernandez|2013-03-01 09:11:58.703267|93.66|study skills +96|260|65716|4294967305|90.77|44.69|true|ulysses carson|2013-03-01 09:11:58.703174|88.39|biology +98|269|65558|4294967358|71.26|25.18|false|rachel steinbeck|2013-03-01 09:11:58.703270|54.00|wind surfing +45|407|65615|4294967482|2.03|6.96|true|luke ichabod|2013-03-01 09:11:58.703197|90.16|linguistics +85|267|65610|4294967470|55.90|14.31|false|rachel laertes|2013-03-01 09:11:58.703135|77.40|zync studies +52|260|65718|4294967534|58.21|36.20|true|sarah robinson|2013-03-01 09:11:58.703147|3.36|joggying +33|381|65746|4294967542|83.57|38.17|false|victor robinson|2013-03-01 09:11:58.703296|14.00|american history +12|440|65556|4294967357|43.36|42.10|true|oscar robinson|2013-03-01 09:11:58.703166|56.06|joggying +93|332|65736|4294967334|82.21|27.73|true|ethan brown|2013-03-01 09:11:58.703121|99.28|study skills +63|394|65570|4294967511|49.37|22.36|false|ulysses falkner|2013-03-01 09:11:58.703306|87.97|american history +41|284|65680|4294967397|18.77|18.16|true|jessica van buren|2013-03-01 09:11:58.703267|48.51|american history +28|316|65748|4294967356|71.60|13.83|false|mike xylophone|2013-03-01 09:11:58.703208|69.45|wind surfing +111|333|65577|4294967444|34.09|5.52|true|nick polk|2013-03-01 09:11:58.703118|23.41|joggying +19|320|65621|4294967305|50.96|5.92|false|yuri davidson|2013-03-01 09:11:58.703319|33.37|biology +70|339|65600|4294967323|24.09|39.99|false|xavier ichabod|2013-03-01 09:11:58.703134|22.22|opthamology +123|409|65624|4294967434|23.09|36.54|false|yuri miller|2013-03-01 09:11:58.703170|63.39|debate +9|506|65593|4294967514|80.95|1.17|false|victor laertes|2013-03-01 09:11:58.703086|65.69|kindergarten +104|420|65584|4294967544|84.35|32.70|false|victor allen|2013-03-01 09:11:58.703219|39.70|study skills +88|339|65718|4294967440|5.31|31.81|true|yuri polk|2013-03-01 09:11:58.703191|70.48|forestry +25|271|65541|4294967416|55.12|41.11|false|calvin laertes|2013-03-01 09:11:58.703242|47.88|kindergarten +15|478|65742|4294967403|69.79|5.16|false|bob ovid|2013-03-01 09:11:58.703121|16.18|study skills +62|263|65742|4294967381|13.52|20.24|true|mike white|2013-03-01 09:11:58.703187|7.39|american history +24|388|65671|4294967546|55.41|16.56|false|quinn carson|2013-03-01 09:11:58.703158|24.92|undecided +39|436|65673|4294967400|87.19|33.25|true|zach brown|2013-03-01 09:11:58.703166|74.80|industrial engineering +42|343|65688|4294967420|95.12|22.99|true|victor davidson|2013-03-01 09:11:58.703246|81.22|industrial engineering +73|395|65685|4294967328|27.35|41.29|false|nick king|2013-03-01 09:11:58.703146|21.60|philosophy +107|456|65764|4294967533|43.91|4.08|true|fred steinbeck|2013-03-01 09:11:58.703092|25.89|yard duty +-3|469|65698|4294967357|47.51|49.22|true|david falkner|2013-03-01 09:11:58.703305|78.40|joggying +2|301|65662|4294967408|51.41|35.52|false|oscar davidson|2013-03-01 09:11:58.703287|60.59|education +33|466|65558|4294967324|89.36|0.30|false|tom robinson|2013-03-01 09:11:58.703184|76.17|yard duty +22|430|65624|4294967333|41.66|0.20|false|jessica quirinius|2013-03-01 09:11:58.703164|99.33|values clariffication +56|359|65624|4294967339|80.66|3.17|false|zach laertes|2013-03-01 09:11:58.703206|0.64|zync studies +24|447|65552|4294967522|5.18|13.93|true|victor polk|2013-03-01 09:11:58.703252|99.82|forestry +78|290|65710|4294967329|73.44|3.41|true|holly miller|2013-03-01 09:11:58.703305|8.74|debate +111|257|65691|4294967305|80.76|11.43|false|david brown|2013-03-01 09:11:58.703286|0.91|mathematics +6|354|65538|4294967425|97.18|33.07|false|oscar white|2013-03-01 09:11:58.703153|35.14|mathematics +15|346|65739|4294967324|48.80|24.44|false|priscilla brown|2013-03-01 09:11:58.703158|83.01|zync studies +-3|280|65769|4294967324|28.78|35.05|true|xavier ovid|2013-03-01 09:11:58.703148|43.31|kindergarten +32|336|65747|4294967505|73.98|36.53|false|david xylophone|2013-03-01 09:11:58.703088|55.07|chemistry +57|345|65771|4294967396|71.02|14.41|true|bob quirinius|2013-03-01 09:11:58.703183|48.77|industrial engineering +98|362|65604|4294967531|23.07|20.16|false|nick falkner|2013-03-01 09:11:58.703112|56.36|history +46|304|65559|4294967498|42.55|16.80|false|mike xylophone|2013-03-01 09:11:58.703130|61.89|study skills +88|335|65778|4294967389|43.60|48.56|true|tom xylophone|2013-03-01 09:11:58.703083|41.78|wind surfing +56|422|65643|4294967451|15.67|23.68|false|irene ovid|2013-03-01 09:11:58.703151|64.99|values clariffication +30|412|65657|4294967317|20.82|29.99|true|yuri ellison|2013-03-01 09:11:58.703231|97.56|joggying +107|463|65676|4294967415|93.46|36.48|true|victor young|2013-03-01 09:11:58.703162|51.71|geology +55|324|65564|4294967325|33.98|33.84|true|tom steinbeck|2013-03-01 09:11:58.703318|8.73|xylophone band +58|501|65746|4294967524|94.82|45.75|false|xavier steinbeck|2013-03-01 09:11:58.703307|17.75|kindergarten +81|286|65739|4294967514|8.48|17.12|true|ethan thompson|2013-03-01 09:11:58.703304|71.45|forestry +27|382|65665|4294967374|14.78|48.12|true|yuri allen|2013-03-01 09:11:58.703070|99.31|mathematics +22|456|65580|4294967461|7.70|16.18|true|wendy xylophone|2013-03-01 09:11:58.703281|11.65|geology +41|263|65659|4294967406|48.52|32.24|false|quinn underhill|2013-03-01 09:11:58.703191|9.99|joggying +11|410|65650|4294967377|27.85|42.01|true|oscar thompson|2013-03-01 09:11:58.703205|36.92|wind surfing +54|398|65678|4294967548|9.96|5.98|false|xavier hernandez|2013-03-01 09:11:58.703073|28.28|biology +69|411|65751|4294967501|49.76|8.02|true|priscilla falkner|2013-03-01 09:11:58.703073|10.51|philosophy +57|506|65741|4294967409|40.46|29.97|true|priscilla brown|2013-03-01 09:11:58.703086|35.83|linguistics +108|403|65646|4294967440|65.18|27.41|false|luke ellison|2013-03-01 09:11:58.703305|95.65|zync studies +54|349|65590|4294967490|89.48|7.96|true|mike thompson|2013-03-01 09:11:58.703188|1.79|geology +5|345|65784|4294967401|29.44|41.77|true|wendy quirinius|2013-03-01 09:11:58.703092|74.38|history +119|378|65578|4294967300|57.55|11.53|false|jessica davidson|2013-03-01 09:11:58.703111|50.26|quiet hour +76|319|65587|4294967505|99.48|35.28|true|ethan xylophone|2013-03-01 09:11:58.703206|97.50|industrial engineering +78|474|65783|4294967346|21.94|36.82|false|xavier ichabod|2013-03-01 09:11:58.703100|36.77|american history +53|322|65543|4294967308|94.53|47.92|false|calvin ichabod|2013-03-01 09:11:58.703131|72.63|undecided +11|396|65765|4294967462|17.35|2.12|true|jessica king|2013-03-01 09:11:58.703302|95.48|kindergarten +61|274|65709|4294967341|67.51|28.10|false|gabriella underhill|2013-03-01 09:11:58.703296|43.18|industrial engineering +116|286|65753|4294967336|18.17|49.49|true|luke allen|2013-03-01 09:11:58.703317|0.87|education +28|365|65743|4294967380|97.43|8.37|true|quinn brown|2013-03-01 09:11:58.703133|55.24|religion +34|498|65759|4294967323|64.43|9.69|false|xavier garcia|2013-03-01 09:11:58.703239|17.74|study skills +61|387|65604|4294967422|7.21|49.58|false|david falkner|2013-03-01 09:11:58.703234|49.12|debate +20|287|65649|4294967496|91.28|27.77|true|alice robinson|2013-03-01 09:11:58.703109|88.92|nap time +29|270|65745|4294967475|77.78|26.30|false|zach carson|2013-03-01 09:11:58.703299|49.88|linguistics +24|336|65627|4294967439|61.42|27.58|false|katie white|2013-03-01 09:11:58.703146|33.76|study skills +14|462|65545|4294967438|66.89|22.19|true|alice allen|2013-03-01 09:11:58.703252|65.02|geology +57|487|65746|4294967439|61.35|15.83|false|alice polk|2013-03-01 09:11:58.703092|0.29|linguistics +124|436|65790|4294967492|51.25|16.35|true|sarah robinson|2013-03-01 09:11:58.703105|28.65|values clariffication +7|395|65564|4294967335|5.58|41.46|true|yuri zipper|2013-03-01 09:11:58.703101|30.65|opthamology +74|436|65588|4294967465|92.26|21.42|false|bob ichabod|2013-03-01 09:11:58.703287|59.12|chemistry +54|457|65760|4294967490|97.99|32.83|false|jessica laertes|2013-03-01 09:11:58.703241|63.65|quiet hour +49|410|65703|4294967430|79.05|31.17|false|victor hernandez|2013-03-01 09:11:58.703205|22.00|study skills +15|274|65777|4294967403|26.90|35.11|false|priscilla van buren|2013-03-01 09:11:58.703174|8.35|values clariffication +109|377|65681|4294967339|28.35|49.39|true|victor xylophone|2013-03-01 09:11:58.703156|11.56|wind surfing +108|378|65784|4294967487|19.03|10.93|false|katie allen|2013-03-01 09:11:58.703267|80.61|xylophone band +64|379|65746|4294967328|17.78|3.21|true|alice garcia|2013-03-01 09:11:58.703235|82.79|opthamology +72|263|65592|4294967353|48.39|1.67|true|ulysses steinbeck|2013-03-01 09:11:58.703323|98.58|undecided +49|434|65690|4294967467|98.47|42.54|true|mike van buren|2013-03-01 09:11:58.703243|80.96|values clariffication +102|277|65782|4294967302|88.96|22.13|true|ulysses steinbeck|2013-03-01 09:11:58.703205|84.65|chemistry +76|381|65620|4294967549|74.27|42.80|false|ulysses underhill|2013-03-01 09:11:58.703213|28.05|quiet hour +107|374|65790|4294967331|14.53|29.73|true|jessica xylophone|2013-03-01 09:11:58.703168|19.24|biology +37|394|65594|4294967512|47.29|11.13|true|david underhill|2013-03-01 09:11:58.703170|34.59|history +61|354|65773|4294967547|85.17|19.17|false|zach xylophone|2013-03-01 09:11:58.703077|37.05|topology +37|291|65635|4294967404|15.00|46.39|false|holly quirinius|2013-03-01 09:11:58.703218|11.23|geology +94|274|65723|4294967400|18.79|46.26|true|yuri white|2013-03-01 09:11:58.703148|48.31|quiet hour +43|422|65692|4294967336|60.24|20.21|false|fred davidson|2013-03-01 09:11:58.703159|57.20|study skills +39|506|65592|4294967474|25.58|28.93|false|xavier ichabod|2013-03-01 09:11:58.703181|5.99|american history +58|351|65650|4294967303|4.66|31.07|true|oscar white|2013-03-01 09:11:58.703277|2.75|chemistry +-3|299|65763|4294967542|85.96|10.45|true|jessica miller|2013-03-01 09:11:58.703245|26.16|mathematics +-1|452|65647|4294967531|96.16|34.84|true|katie underhill|2013-03-01 09:11:58.703128|78.86|geology +108|263|65705|4294967375|75.94|48.56|true|ethan quirinius|2013-03-01 09:11:58.703245|0.56|values clariffication +115|303|65683|4294967453|73.53|24.06|true|zach van buren|2013-03-01 09:11:58.703137|81.44|philosophy +5|459|65729|4294967323|90.17|15.58|false|oscar robinson|2013-03-01 09:11:58.703179|20.35|american history +48|438|65657|4294967406|95.57|14.22|false|fred ichabod|2013-03-01 09:11:58.703078|87.02|chemistry +112|459|65784|4294967493|80.09|7.78|false|fred miller|2013-03-01 09:11:58.703131|56.05|industrial engineering +35|354|65727|4294967378|38.26|48.46|true|yuri steinbeck|2013-03-01 09:11:58.703207|64.75|biology +55|305|65612|4294967504|14.60|17.96|true|luke underhill|2013-03-01 09:11:58.703219|11.76|religion +121|368|65656|4294967349|51.33|2.47|true|wendy underhill|2013-03-01 09:11:58.703268|12.99|geology +55|302|65732|4294967544|81.75|22.59|true|irene hernandez|2013-03-01 09:11:58.703226|92.01|geology +77|363|65696|4294967350|25.62|8.94|true|victor miller|2013-03-01 09:11:58.703159|30.33|american history +91|285|65787|4294967504|83.54|25.10|false|ulysses van buren|2013-03-01 09:11:58.703241|86.20|nap time +21|296|65689|4294967417|54.19|25.71|true|quinn ovid|2013-03-01 09:11:58.703250|8.12|kindergarten +99|499|65731|4294967453|30.85|28.79|false|ethan ovid|2013-03-01 09:11:58.703206|89.61|values clariffication +52|358|65756|4294967441|73.96|43.49|false|katie van buren|2013-03-01 09:11:58.703171|6.85|geology +1|414|65734|4294967511|22.76|37.13|true|holly davidson|2013-03-01 09:11:58.703145|40.39|religion +66|469|65557|4294967409|49.97|18.29|true|xavier thompson|2013-03-01 09:11:58.703265|49.88|xylophone band +75|352|65774|4294967375|93.20|45.67|false|mike thompson|2013-03-01 09:11:58.703085|59.69|undecided +45|428|65770|4294967447|11.78|20.13|false|ulysses davidson|2013-03-01 09:11:58.703158|36.68|values clariffication +92|344|65732|4294967499|29.10|48.53|true|sarah underhill|2013-03-01 09:11:58.703155|36.25|american history +80|393|65699|4294967323|70.76|12.68|true|katie carson|2013-03-01 09:11:58.703091|43.11|geology +99|360|65737|4294967482|6.40|33.05|false|victor young|2013-03-01 09:11:58.703074|98.15|debate +97|420|65777|4294967365|38.21|19.62|true|irene hernandez|2013-03-01 09:11:58.703303|38.22|geology +89|370|65586|4294967457|55.05|29.44|false|holly underhill|2013-03-01 09:11:58.703146|62.65|forestry +48|360|65770|4294967425|27.06|40.94|true|bob robinson|2013-03-01 09:11:58.703266|6.60|mathematics +103|444|65566|4294967505|50.77|17.27|true|yuri ichabod|2013-03-01 09:11:58.703189|49.93|biology +83|422|65618|4294967453|54.95|7.94|true|tom johnson|2013-03-01 09:11:58.703164|20.60|values clariffication +15|415|65732|4294967357|39.15|18.28|false|zach steinbeck|2013-03-01 09:11:58.703242|88.42|chemistry +24|327|65557|4294967482|73.11|7.31|true|nick robinson|2013-03-01 09:11:58.703118|60.36|opthamology +50|316|65717|4294967398|28.34|24.17|true|xavier van buren|2013-03-01 09:11:58.703118|28.35|biology +113|292|65714|4294967430|24.19|14.77|true|calvin garcia|2013-03-01 09:11:58.703301|28.51|xylophone band +111|501|65669|4294967464|38.24|20.27|true|katie falkner|2013-03-01 09:11:58.703151|15.67|opthamology +121|302|65579|4294967317|82.42|4.73|false|rachel laertes|2013-03-01 09:11:58.703231|53.68|religion +117|433|65782|4294967475|68.41|19.64|false|sarah quirinius|2013-03-01 09:11:58.703158|60.97|american history +98|356|65739|4294967546|52.29|46.71|false|victor polk|2013-03-01 09:11:58.703235|19.84|quiet hour +12|400|65717|4294967384|42.23|18.33|true|nick brown|2013-03-01 09:11:58.703135|67.52|nap time +31|324|65764|4294967356|95.63|10.01|true|irene brown|2013-03-01 09:11:58.703319|99.28|wind surfing +119|474|65657|4294967446|3.07|20.94|true|tom garcia|2013-03-01 09:11:58.703269|58.80|undecided +22|397|65610|4294967376|23.65|26.29|true|zach davidson|2013-03-01 09:11:58.703169|3.93|debate +20|281|65633|4294967394|77.33|16.09|false|victor thompson|2013-03-01 09:11:58.703179|69.01|values clariffication +102|484|65546|4294967349|27.88|5.21|false|oscar laertes|2013-03-01 09:11:58.703252|3.87|xylophone band +90|286|65760|4294967433|80.89|4.16|false|yuri ovid|2013-03-01 09:11:58.703242|30.02|american history +107|460|65665|4294967501|34.52|10.71|false|victor polk|2013-03-01 09:11:58.703118|93.11|philosophy +53|452|65710|4294967508|28.67|44.47|false|priscilla allen|2013-03-01 09:11:58.703126|5.31|education +50|484|65698|4294967438|47.68|35.24|false|oscar quirinius|2013-03-01 09:11:58.703219|10.08|geology +72|373|65688|4294967473|12.32|46.18|false|yuri van buren|2013-03-01 09:11:58.703192|84.92|values clariffication +92|459|65712|4294967497|1.29|6.36|false|alice garcia|2013-03-01 09:11:58.703187|45.31|debate +36|357|65537|4294967442|37.99|26.51|false|yuri quirinius|2013-03-01 09:11:58.703289|66.30|debate +70|337|65650|4294967332|64.49|23.98|true|sarah hernandez|2013-03-01 09:11:58.703198|90.38|geology +61|355|65621|4294967419|65.03|1.39|true|bob underhill|2013-03-01 09:11:58.703157|3.49|biology +36|457|65587|4294967300|42.86|7.91|true|yuri underhill|2013-03-01 09:11:58.703129|0.40|mathematics +79|398|65680|4294967401|57.46|6.96|false|alice ichabod|2013-03-01 09:11:58.703320|11.21|debate +111|278|65698|4294967367|87.09|34.08|true|ulysses xylophone|2013-03-01 09:11:58.703244|57.91|religion +30|271|65624|4294967453|52.55|26.65|false|ethan allen|2013-03-01 09:11:58.703190|62.04|opthamology +30|271|65754|4294967315|61.75|3.07|false|irene thompson|2013-03-01 09:11:58.703233|38.11|chemistry +61|499|65787|4294967365|65.35|16.25|false|calvin ovid|2013-03-01 09:11:58.703313|12.65|xylophone band +96|354|65664|4294967340|39.81|17.77|false|nick brown|2013-03-01 09:11:58.703082|84.55|nap time +6|463|65766|4294967435|84.74|29.66|false|alice nixon|2013-03-01 09:11:58.703104|40.50|values clariffication +15|389|65577|4294967537|73.51|46.93|true|irene brown|2013-03-01 09:11:58.703295|10.16|mathematics +68|389|65790|4294967473|74.45|0.49|true|priscilla brown|2013-03-01 09:11:58.703273|63.77|linguistics +102|460|65709|4294967543|48.77|18.60|true|david polk|2013-03-01 09:11:58.703168|41.58|yard duty +76|440|65651|4294967453|73.13|29.16|false|ethan allen|2013-03-01 09:11:58.703130|56.74|mathematics +78|427|65626|4294967317|59.09|21.85|true|sarah falkner|2013-03-01 09:11:58.703116|24.36|values clariffication +124|490|65623|4294967304|89.12|11.92|false|luke polk|2013-03-01 09:11:58.703262|57.65|geology +38|363|65604|4294967494|35.28|46.80|false|zach van buren|2013-03-01 09:11:58.703270|2.97|topology +79|262|65649|4294967413|9.89|27.35|true|fred nixon|2013-03-01 09:11:58.703253|99.51|values clariffication +83|318|65616|4294967470|39.74|11.85|true|victor young|2013-03-01 09:11:58.703192|83.48|industrial engineering +69|346|65650|4294967306|91.81|16.62|false|alice xylophone|2013-03-01 09:11:58.703276|72.84|philosophy +70|379|65711|4294967437|78.36|12.90|true|rachel hernandez|2013-03-01 09:11:58.703152|76.65|chemistry +94|368|65722|4294967428|63.39|7.72|false|xavier zipper|2013-03-01 09:11:58.703104|56.37|education +73|321|65756|4294967503|98.99|32.49|true|rachel xylophone|2013-03-01 09:11:58.703297|6.54|linguistics +-1|262|65659|4294967490|64.95|38.79|true|rachel polk|2013-03-01 09:11:58.703275|24.14|joggying +97|310|65606|4294967462|33.69|17.35|true|yuri quirinius|2013-03-01 09:11:58.703106|54.03|linguistics +13|447|65551|4294967440|59.02|33.80|true|irene johnson|2013-03-01 09:11:58.703125|58.21|geology +-2|312|65536|4294967484|1.55|20.12|false|ulysses polk|2013-03-01 09:11:58.703120|85.25|kindergarten +32|375|65760|4294967511|78.93|23.54|false|victor hernandez|2013-03-01 09:11:58.703303|62.41|zync studies +-3|264|65776|4294967398|20.95|5.97|false|bob polk|2013-03-01 09:11:58.703128|92.91|joggying +-1|303|65577|4294967480|38.46|36.97|true|victor davidson|2013-03-01 09:11:58.703142|86.75|yard duty +-3|465|65551|4294967457|83.39|46.64|true|mike allen|2013-03-01 09:11:58.703292|53.46|values clariffication +112|429|65643|4294967500|2.26|12.34|true|yuri white|2013-03-01 09:11:58.703212|32.66|biology +31|313|65618|4294967332|16.71|13.63|true|david robinson|2013-03-01 09:11:58.703221|74.02|xylophone band +55|379|65593|4294967375|15.82|43.85|false|ethan falkner|2013-03-01 09:11:58.703265|16.59|zync studies +122|322|65762|4294967388|12.93|38.43|true|victor king|2013-03-01 09:11:58.703163|72.19|education +109|478|65653|4294967489|14.54|38.22|true|oscar van buren|2013-03-01 09:11:58.703100|24.16|chemistry +102|435|65621|4294967412|14.96|31.32|true|sarah hernandez|2013-03-01 09:11:58.703252|96.51|kindergarten +69|414|65785|4294967428|73.99|6.55|true|holly zipper|2013-03-01 09:11:58.703127|88.14|debate +24|283|65646|4294967332|47.78|40.82|true|zach young|2013-03-01 09:11:58.703266|58.08|values clariffication +80|265|65762|4294967477|28.27|9.75|true|tom ovid|2013-03-01 09:11:58.703320|71.66|forestry +31|400|65542|4294967437|42.48|43.86|true|mike zipper|2013-03-01 09:11:58.703180|2.55|wind surfing +23|411|65689|4294967495|69.55|10.98|true|holly ovid|2013-03-01 09:11:58.703234|33.20|nap time +108|345|65662|4294967355|36.64|31.60|false|victor underhill|2013-03-01 09:11:58.703321|7.95|philosophy +111|481|65765|4294967394|50.25|15.97|false|nick allen|2013-03-01 09:11:58.703263|91.76|opthamology +97|380|65564|4294967314|40.98|48.33|true|luke polk|2013-03-01 09:11:58.703214|46.32|philosophy +4|495|65566|4294967358|39.65|1.80|true|xavier quirinius|2013-03-01 09:11:58.703289|99.31|education +13|482|65642|4294967542|41.07|49.97|true|holly quirinius|2013-03-01 09:11:58.703323|97.24|topology +81|426|65721|4294967345|38.46|46.27|true|quinn davidson|2013-03-01 09:11:58.703270|63.30|nap time +124|302|65702|4294967499|53.31|25.68|false|nick johnson|2013-03-01 09:11:58.703075|47.53|geology +26|354|65563|4294967509|29.15|24.13|true|jessica polk|2013-03-01 09:11:58.703174|44.66|religion +72|480|65772|4294967495|76.62|19.51|true|victor zipper|2013-03-01 09:11:58.703325|55.04|topology +81|275|65743|4294967518|35.35|32.37|false|katie white|2013-03-01 09:11:58.703105|85.82|american history +-1|379|65705|4294967531|75.75|0.38|false|katie laertes|2013-03-01 09:11:58.703116|94.88|zync studies +3|362|65726|4294967481|81.47|45.45|false|jessica allen|2013-03-01 09:11:58.703117|99.90|industrial engineering +30|378|65672|4294967310|98.02|6.46|false|bob van buren|2013-03-01 09:11:58.703168|43.41|education +114|305|65575|4294967492|83.26|31.45|false|david nixon|2013-03-01 09:11:58.703291|75.07|biology +87|450|65721|4294967547|63.46|35.74|true|katie young|2013-03-01 09:11:58.703271|89.52|linguistics +83|350|65708|4294967360|61.33|33.11|false|ulysses thompson|2013-03-01 09:11:58.703225|18.32|industrial engineering +75|502|65577|4294967519|77.98|16.97|true|ethan garcia|2013-03-01 09:11:58.703273|93.81|nap time +13|270|65724|4294967542|52.97|32.55|false|gabriella carson|2013-03-01 09:11:58.703098|79.55|philosophy +25|441|65742|4294967438|1.27|24.71|true|sarah davidson|2013-03-01 09:11:58.703224|43.81|religion +67|277|65565|4294967438|3.02|25.51|true|david johnson|2013-03-01 09:11:58.703150|60.96|chemistry +65|320|65745|4294967311|54.25|49.60|false|alice ellison|2013-03-01 09:11:58.703296|78.33|chemistry +33|395|65625|4294967446|41.15|30.27|false|priscilla quirinius|2013-03-01 09:11:58.703162|27.04|geology +58|476|65762|4294967379|76.94|48.63|false|jessica robinson|2013-03-01 09:11:58.703230|75.64|mathematics +122|447|65586|4294967426|2.31|47.70|false|victor johnson|2013-03-01 09:11:58.703191|88.13|geology +41|350|65685|4294967339|44.53|31.67|true|mike laertes|2013-03-01 09:11:58.703169|18.35|nap time +64|377|65578|4294967303|17.58|22.91|false|yuri brown|2013-03-01 09:11:58.703071|35.14|topology +121|510|65563|4294967325|18.87|39.07|true|holly thompson|2013-03-01 09:11:58.703227|63.54|xylophone band +30|274|65663|4294967475|95.43|34.28|false|holly quirinius|2013-03-01 09:11:58.703140|53.69|education +3|346|65590|4294967327|53.82|30.76|true|rachel polk|2013-03-01 09:11:58.703239|58.64|topology +37|299|65755|4294967547|28.05|4.14|false|zach garcia|2013-03-01 09:11:58.703294|44.81|kindergarten +4|454|65673|4294967549|85.50|39.96|true|fred ovid|2013-03-01 09:11:58.703103|52.78|zync studies +23|276|65589|4294967441|93.58|35.33|true|ulysses brown|2013-03-01 09:11:58.703120|23.78|opthamology +45|393|65555|4294967497|23.89|45.08|false|bob ovid|2013-03-01 09:11:58.703286|59.29|biology +26|480|65585|4294967412|83.75|30.19|true|quinn falkner|2013-03-01 09:11:58.703205|60.85|chemistry +106|278|65722|4294967451|18.45|30.14|true|fred young|2013-03-01 09:11:58.703193|27.68|education +119|286|65658|4294967523|66.18|43.45|false|rachel van buren|2013-03-01 09:11:58.703092|66.34|nap time +75|354|65616|4294967478|99.39|38.84|true|rachel quirinius|2013-03-01 09:11:58.703125|83.48|geology +14|466|65620|4294967340|93.03|6.81|false|wendy ichabod|2013-03-01 09:11:58.703169|8.27|topology +9|409|65727|4294967362|96.55|28.80|true|ethan carson|2013-03-01 09:11:58.703113|90.45|mathematics +46|492|65728|4294967365|91.34|42.38|true|zach young|2013-03-01 09:11:58.703120|82.95|linguistics +-3|303|65617|4294967473|10.26|1.41|false|ulysses quirinius|2013-03-01 09:11:58.703189|83.66|chemistry +58|457|65600|4294967311|16.36|2.91|false|luke ovid|2013-03-01 09:11:58.703080|38.77|yard duty +97|273|65604|4294967397|52.77|18.64|false|nick van buren|2013-03-01 09:11:58.703265|11.69|religion +74|443|65605|4294967383|16.80|40.43|true|yuri steinbeck|2013-03-01 09:11:58.703234|79.42|philosophy +32|343|65547|4294967550|95.02|21.40|false|david hernandez|2013-03-01 09:11:58.703312|13.97|joggying +109|356|65564|4294967472|50.40|10.13|false|bob thompson|2013-03-01 09:11:58.703143|45.89|mathematics +52|264|65774|4294967452|41.31|34.34|false|wendy carson|2013-03-01 09:11:58.703150|42.89|forestry +29|490|65783|4294967492|99.83|14.20|false|victor miller|2013-03-01 09:11:58.703321|96.79|religion +86|263|65710|4294967386|14.63|29.51|true|wendy allen|2013-03-01 09:11:58.703100|21.60|values clariffication +49|416|65637|4294967525|72.02|30.24|true|tom ellison|2013-03-01 09:11:58.703260|73.32|xylophone band +13|258|65569|4294967358|66.81|26.25|false|oscar van buren|2013-03-01 09:11:58.703253|6.06|debate +76|389|65652|4294967375|19.32|0.73|false|victor ellison|2013-03-01 09:11:58.703292|48.98|quiet hour +64|375|65713|4294967328|31.41|26.19|false|irene quirinius|2013-03-01 09:11:58.703252|94.75|zync studies +15|314|65575|4294967542|98.05|34.69|false|tom steinbeck|2013-03-01 09:11:58.703094|24.86|opthamology +110|359|65740|4294967343|12.91|21.78|true|katie steinbeck|2013-03-01 09:11:58.703228|0.80|xylophone band +109|443|65759|4294967434|78.50|38.66|false|irene polk|2013-03-01 09:11:58.703319|38.70|xylophone band +114|282|65613|4294967331|52.71|22.88|true|sarah polk|2013-03-01 09:11:58.703165|70.10|philosophy +107|483|65721|4294967301|41.85|3.17|false|ethan laertes|2013-03-01 09:11:58.703147|10.43|xylophone band +119|425|65779|4294967431|32.20|19.33|false|nick thompson|2013-03-01 09:11:58.703279|93.98|joggying +97|299|65712|4294967537|41.62|21.48|false|tom davidson|2013-03-01 09:11:58.703235|48.20|philosophy +71|362|65758|4294967333|63.89|38.22|true|bob quirinius|2013-03-01 09:11:58.703283|27.35|geology +2|395|65725|4294967457|72.18|10.41|false|bob allen|2013-03-01 09:11:58.703157|86.85|american history +121|361|65552|4294967322|84.66|12.52|true|tom hernandez|2013-03-01 09:11:58.703129|82.39|yard duty +98|375|65758|4294967419|72.97|38.40|true|david steinbeck|2013-03-01 09:11:58.703310|26.12|geology +93|297|65738|4294967548|0.31|2.57|false|wendy miller|2013-03-01 09:11:58.703272|23.65|xylophone band +59|279|65614|4294967471|5.66|43.19|false|nick ovid|2013-03-01 09:11:58.703156|77.43|kindergarten +18|419|65658|4294967316|36.79|4.28|true|tom young|2013-03-01 09:11:58.703292|43.39|education +46|410|65758|4294967537|71.54|41.11|true|bob young|2013-03-01 09:11:58.703087|17.13|nap time +36|325|65750|4294967497|32.81|37.40|true|tom steinbeck|2013-03-01 09:11:58.703096|45.64|education +30|341|65684|4294967302|88.32|41.89|false|irene nixon|2013-03-01 09:11:58.703091|79.51|zync studies +15|281|65649|4294967340|58.36|33.60|false|katie allen|2013-03-01 09:11:58.703169|14.01|undecided +123|489|65649|4294967430|19.81|36.70|false|quinn underhill|2013-03-01 09:11:58.703170|5.72|opthamology +124|433|65553|4294967504|66.41|38.14|true|calvin white|2013-03-01 09:11:58.703322|81.85|nap time +84|265|65605|4294967425|47.35|23.22|true|fred ellison|2013-03-01 09:11:58.703165|93.65|education +90|398|65669|4294967328|79.19|49.75|true|bob quirinius|2013-03-01 09:11:58.703121|63.55|wind surfing +121|452|65596|4294967440|89.86|20.17|true|alice falkner|2013-03-01 09:11:58.703178|70.66|xylophone band +29|491|65727|4294967514|76.70|1.57|true|mike nixon|2013-03-01 09:11:58.703133|43.13|nap time +85|339|65715|4294967384|18.73|3.79|true|mike falkner|2013-03-01 09:11:58.703227|33.70|wind surfing +1|393|65638|4294967421|92.67|31.37|true|wendy garcia|2013-03-01 09:11:58.703120|50.10|mathematics +41|327|65683|4294967388|75.26|21.92|true|tom xylophone|2013-03-01 09:11:58.703216|71.67|religion +123|258|65761|4294967344|33.73|1.70|false|jessica falkner|2013-03-01 09:11:58.703293|83.96|quiet hour +96|474|65645|4294967300|81.72|6.00|false|priscilla laertes|2013-03-01 09:11:58.703237|1.68|debate +91|421|65638|4294967528|18.51|10.60|false|david falkner|2013-03-01 09:11:58.703194|76.00|chemistry +41|415|65788|4294967405|42.12|8.26|true|holly robinson|2013-03-01 09:11:58.703201|14.66|topology +32|324|65610|4294967441|87.80|30.14|true|tom king|2013-03-01 09:11:58.703161|2.26|xylophone band +15|375|65710|4294967300|56.05|40.95|false|irene king|2013-03-01 09:11:58.703274|36.32|wind surfing +16|443|65581|4294967398|61.59|24.44|true|tom garcia|2013-03-01 09:11:58.703283|82.70|undecided +-3|454|65627|4294967481|17.60|35.72|false|bob underhill|2013-03-01 09:11:58.703188|67.16|religion +114|505|65643|4294967486|16.91|29.82|true|calvin ichabod|2013-03-01 09:11:58.703243|20.46|philosophy +8|331|65786|4294967353|42.55|24.85|false|ethan xylophone|2013-03-01 09:11:58.703173|69.42|opthamology +84|343|65644|4294967391|29.08|28.57|true|nick white|2013-03-01 09:11:58.703230|50.04|linguistics +24|447|65730|4294967456|59.23|22.07|false|david van buren|2013-03-01 09:11:58.703255|20.34|zync studies +33|461|65583|4294967408|60.37|13.17|true|calvin johnson|2013-03-01 09:11:58.703276|75.68|philosophy +64|373|65726|4294967494|13.34|48.53|false|gabriella van buren|2013-03-01 09:11:58.703224|48.95|zync studies +75|329|65686|4294967380|93.00|20.88|true|victor carson|2013-03-01 09:11:58.703209|90.36|debate +17|422|65617|4294967480|73.48|9.74|true|bob carson|2013-03-01 09:11:58.703145|19.11|chemistry +112|457|65694|4294967516|88.27|18.54|false|ethan garcia|2013-03-01 09:11:58.703100|71.51|xylophone band +25|479|65746|4294967441|82.07|31.79|false|ethan underhill|2013-03-01 09:11:58.703320|12.77|values clariffication +55|341|65759|4294967432|10.27|34.77|true|xavier allen|2013-03-01 09:11:58.703141|52.60|joggying +119|291|65708|4294967467|76.89|9.62|true|holly allen|2013-03-01 09:11:58.703170|6.83|wind surfing +78|258|65568|4294967324|81.41|21.02|true|nick falkner|2013-03-01 09:11:58.703102|69.44|kindergarten +18|464|65569|4294967526|10.45|6.89|false|david quirinius|2013-03-01 09:11:58.703137|22.16|topology +32|314|65556|4294967307|37.32|24.70|true|katie zipper|2013-03-01 09:11:58.703071|76.54|chemistry +98|284|65780|4294967486|18.06|26.01|true|calvin miller|2013-03-01 09:11:58.703110|56.08|yard duty +63|352|65684|4294967319|21.15|26.39|true|luke white|2013-03-01 09:11:58.703162|22.35|industrial engineering +20|314|65773|4294967506|31.68|38.08|false|katie ichabod|2013-03-01 09:11:58.703176|88.99|debate +74|413|65540|4294967540|1.47|28.88|false|gabriella hernandez|2013-03-01 09:11:58.703177|62.62|opthamology +16|423|65597|4294967486|3.96|25.57|true|irene garcia|2013-03-01 09:11:58.703318|81.96|chemistry +71|287|65687|4294967489|14.08|39.44|true|tom thompson|2013-03-01 09:11:58.703166|78.11|forestry +77|500|65626|4294967340|96.67|46.47|true|fred ichabod|2013-03-01 09:11:58.703224|55.50|opthamology +123|409|65682|4294967480|16.15|6.57|true|tom ellison|2013-03-01 09:11:58.703205|47.37|chemistry +95|425|65784|4294967411|98.91|26.02|true|katie nixon|2013-03-01 09:11:58.703088|59.42|values clariffication +13|490|65702|4294967511|0.79|10.34|false|xavier allen|2013-03-01 09:11:58.703112|5.71|joggying +102|338|65614|4294967413|74.08|22.11|false|irene nixon|2013-03-01 09:11:58.703309|10.86|wind surfing +35|502|65702|4294967513|52.00|10.10|true|rachel ellison|2013-03-01 09:11:58.703214|99.82|chemistry +31|413|65737|4294967496|89.49|42.69|true|rachel carson|2013-03-01 09:11:58.703185|91.19|industrial engineering +46|444|65544|4294967402|23.62|25.23|true|holly xylophone|2013-03-01 09:11:58.703189|21.94|religion +73|470|65729|4294967548|59.74|17.52|true|bob ovid|2013-03-01 09:11:58.703083|53.22|geology +23|326|65680|4294967409|1.10|13.77|true|tom underhill|2013-03-01 09:11:58.703231|79.03|history +118|350|65721|4294967374|33.83|43.32|true|zach king|2013-03-01 09:11:58.703111|97.56|wind surfing +68|484|65694|4294967505|52.83|19.87|false|holly van buren|2013-03-01 09:11:58.703265|21.13|history +0|480|65549|4294967533|76.67|29.69|true|jessica quirinius|2013-03-01 09:11:58.703278|31.48|wind surfing +70|370|65697|4294967373|96.26|34.93|true|oscar young|2013-03-01 09:11:58.703082|18.02|values clariffication +117|276|65743|4294967511|38.68|24.47|true|mike xylophone|2013-03-01 09:11:58.703222|24.82|undecided +62|454|65537|4294967530|95.89|7.37|true|holly quirinius|2013-03-01 09:11:58.703313|35.86|joggying +36|415|65767|4294967348|71.20|39.67|false|jessica young|2013-03-01 09:11:58.703270|25.66|quiet hour +80|376|65789|4294967441|72.65|44.44|true|xavier ovid|2013-03-01 09:11:58.703178|24.40|quiet hour +82|382|65633|4294967344|32.42|34.84|true|david king|2013-03-01 09:11:58.703149|93.54|study skills +92|338|65693|4294967477|39.41|23.94|false|ethan carson|2013-03-01 09:11:58.703314|81.24|education +31|421|65784|4294967401|36.32|41.73|true|nick king|2013-03-01 09:11:58.703116|49.78|opthamology +32|345|65781|4294967337|83.81|26.62|true|irene allen|2013-03-01 09:11:58.703308|12.77|industrial engineering +67|324|65739|4294967378|27.67|33.85|true|tom underhill|2013-03-01 09:11:58.703183|33.37|geology +53|323|65701|4294967477|98.48|8.66|false|gabriella hernandez|2013-03-01 09:11:58.703277|60.56|forestry +3|482|65620|4294967335|18.02|6.41|true|zach underhill|2013-03-01 09:11:58.703205|86.41|mathematics +60|384|65634|4294967415|9.06|11.08|false|gabriella hernandez|2013-03-01 09:11:58.703165|9.29|philosophy +16|276|65604|4294967438|91.54|35.82|true|david davidson|2013-03-01 09:11:58.703295|75.76|joggying +74|390|65556|4294967457|72.78|46.07|true|bob falkner|2013-03-01 09:11:58.703311|35.03|zync studies +113|494|65604|4294967419|85.41|34.24|false|ethan thompson|2013-03-01 09:11:58.703125|86.72|american history +35|284|65758|4294967298|14.63|11.44|false|mike steinbeck|2013-03-01 09:11:58.703316|93.57|linguistics +46|420|65537|4294967419|67.13|3.07|true|katie robinson|2013-03-01 09:11:58.703224|1.12|study skills +77|385|65553|4294967370|34.37|12.87|true|oscar johnson|2013-03-01 09:11:58.703248|85.39|study skills +20|470|65556|4294967384|70.63|19.50|false|priscilla robinson|2013-03-01 09:11:58.703214|95.08|undecided +54|319|65735|4294967328|55.39|18.32|false|tom miller|2013-03-01 09:11:58.703300|68.09|linguistics +43|494|65777|4294967478|14.53|13.34|true|rachel underhill|2013-03-01 09:11:58.703319|61.88|zync studies +108|259|65648|4294967508|96.50|32.29|true|katie carson|2013-03-01 09:11:58.703162|18.00|xylophone band +104|486|65761|4294967353|9.26|5.85|true|fred quirinius|2013-03-01 09:11:58.703143|82.23|geology +57|435|65645|4294967498|29.43|6.68|false|ethan zipper|2013-03-01 09:11:58.703118|70.49|industrial engineering +2|300|65712|4294967491|64.66|39.70|false|ulysses robinson|2013-03-01 09:11:58.703283|27.95|debate +-3|275|65575|4294967441|38.22|2.43|true|sarah xylophone|2013-03-01 09:11:58.703112|93.32|wind surfing +25|282|65695|4294967390|37.20|28.19|false|zach allen|2013-03-01 09:11:58.703153|95.87|chemistry +47|473|65762|4294967340|22.60|29.87|false|sarah johnson|2013-03-01 09:11:58.703150|68.84|mathematics +96|383|65658|4294967444|4.36|43.54|true|gabriella xylophone|2013-03-01 09:11:58.703248|26.01|quiet hour +28|506|65766|4294967331|84.31|27.28|true|victor king|2013-03-01 09:11:58.703087|79.33|values clariffication +109|304|65741|4294967372|24.85|47.54|false|luke van buren|2013-03-01 09:11:58.703187|62.84|geology +95|260|65583|4294967441|5.02|35.40|false|fred laertes|2013-03-01 09:11:58.703230|5.21|study skills +51|313|65612|4294967416|36.06|43.73|false|alice ellison|2013-03-01 09:11:58.703173|69.28|industrial engineering +85|296|65594|4294967488|65.21|41.59|true|quinn garcia|2013-03-01 09:11:58.703155|57.80|chemistry +61|392|65678|4294967421|54.34|48.34|true|oscar robinson|2013-03-01 09:11:58.703125|1.74|zync studies +-2|291|65548|4294967484|66.75|49.86|true|jessica ichabod|2013-03-01 09:11:58.703233|77.77|biology +70|303|65646|4294967451|80.46|37.43|true|fred allen|2013-03-01 09:11:58.703324|98.99|biology +53|478|65758|4294967467|6.46|33.36|true|jessica ellison|2013-03-01 09:11:58.703098|35.98|religion +65|331|65557|4294967406|70.90|29.90|true|alice ellison|2013-03-01 09:11:58.703311|29.99|zync studies +24|436|65609|4294967522|4.76|42.97|false|jessica garcia|2013-03-01 09:11:58.703210|76.57|geology +1|418|65563|4294967351|15.42|10.86|false|rachel carson|2013-03-01 09:11:58.703259|84.29|biology +24|443|65570|4294967364|22.41|30.08|true|nick hernandez|2013-03-01 09:11:58.703220|41.59|debate +104|394|65712|4294967406|63.99|36.47|true|priscilla allen|2013-03-01 09:11:58.703086|74.39|geology +105|321|65658|4294967476|98.20|43.28|false|victor steinbeck|2013-03-01 09:11:58.703251|13.34|forestry +95|396|65542|4294967343|69.57|40.34|false|zach ichabod|2013-03-01 09:11:58.703196|51.95|history +68|402|65680|4294967369|13.64|27.54|false|rachel ellison|2013-03-01 09:11:58.703186|3.73|linguistics +61|319|65747|4294967520|59.23|32.68|false|nick young|2013-03-01 09:11:58.703306|19.07|topology +2|502|65710|4294967372|34.14|40.33|false|luke johnson|2013-03-01 09:11:58.703287|10.52|religion +98|368|65752|4294967479|13.99|46.90|false|gabriella johnson|2013-03-01 09:11:58.703292|42.30|industrial engineering +117|292|65590|4294967331|92.84|2.31|false|nick garcia|2013-03-01 09:11:58.703246|47.52|opthamology +95|378|65769|4294967513|26.82|43.65|true|xavier steinbeck|2013-03-01 09:11:58.703252|49.88|xylophone band +50|260|65592|4294967518|70.96|20.86|true|zach thompson|2013-03-01 09:11:58.703123|39.67|biology +92|494|65551|4294967340|20.20|30.00|false|calvin white|2013-03-01 09:11:58.703299|13.08|education +39|434|65594|4294967378|88.61|11.65|false|quinn johnson|2013-03-01 09:11:58.703305|55.18|nap time +61|271|65749|4294967365|37.51|41.76|true|victor carson|2013-03-01 09:11:58.703157|79.16|chemistry +70|475|65737|4294967423|51.35|49.03|false|luke robinson|2013-03-01 09:11:58.703079|24.60|education +18|451|65724|4294967396|77.96|18.30|true|luke garcia|2013-03-01 09:11:58.703103|37.38|wind surfing +0|372|65702|4294967398|2.00|47.09|true|quinn carson|2013-03-01 09:11:58.703300|71.25|mathematics +106|399|65645|4294967549|21.78|24.24|false|zach ovid|2013-03-01 09:11:58.703155|59.94|debate +96|388|65645|4294967404|2.12|13.02|false|ulysses nixon|2013-03-01 09:11:58.703319|49.43|biology +92|505|65540|4294967540|91.13|38.30|true|ulysses polk|2013-03-01 09:11:58.703173|67.54|wind surfing +95|367|65667|4294967304|15.20|20.34|true|mike robinson|2013-03-01 09:11:58.703283|54.75|debate +112|376|65611|4294967418|13.26|38.51|false|sarah falkner|2013-03-01 09:11:58.703082|23.44|philosophy +45|399|65583|4294967444|82.99|23.05|true|irene nixon|2013-03-01 09:11:58.703149|36.76|mathematics +114|350|65668|4294967371|95.01|13.77|false|sarah robinson|2013-03-01 09:11:58.703243|61.12|wind surfing +69|310|65728|4294967297|77.06|22.77|false|ulysses allen|2013-03-01 09:11:58.703213|5.93|zync studies +63|458|65741|4294967311|82.11|24.62|true|sarah brown|2013-03-01 09:11:58.703281|99.02|mathematics +8|362|65635|4294967392|71.28|8.25|true|rachel davidson|2013-03-01 09:11:58.703119|86.23|yard duty +94|405|65752|4294967447|63.56|21.59|true|bob laertes|2013-03-01 09:11:58.703243|90.66|linguistics +76|397|65658|4294967380|15.10|12.19|true|priscilla quirinius|2013-03-01 09:11:58.703302|20.51|zync studies +81|378|65555|4294967513|89.28|6.52|false|irene brown|2013-03-01 09:11:58.703294|0.36|opthamology +10|276|65763|4294967536|94.86|22.33|false|gabriella zipper|2013-03-01 09:11:58.703123|88.74|geology +123|346|65775|4294967509|99.68|42.13|true|priscilla van buren|2013-03-01 09:11:58.703140|83.66|undecided +37|259|65686|4294967485|48.55|43.03|true|gabriella white|2013-03-01 09:11:58.703235|48.86|history +116|374|65627|4294967494|17.59|26.69|true|nick davidson|2013-03-01 09:11:58.703310|87.05|geology +81|378|65745|4294967375|50.18|30.58|true|fred polk|2013-03-01 09:11:58.703309|56.44|industrial engineering +45|450|65791|4294967428|27.21|4.71|true|zach underhill|2013-03-01 09:11:58.703282|64.23|education +25|496|65737|4294967362|2.06|18.82|true|wendy young|2013-03-01 09:11:58.703291|63.14|topology +1|295|65554|4294967405|60.30|30.70|true|alice xylophone|2013-03-01 09:11:58.703105|35.46|joggying +74|506|65675|4294967372|67.79|13.05|false|gabriella quirinius|2013-03-01 09:11:58.703172|33.87|industrial engineering +15|394|65575|4294967508|27.63|41.23|true|xavier van buren|2013-03-01 09:11:58.703293|92.90|mathematics +61|369|65674|4294967456|44.68|8.02|false|priscilla young|2013-03-01 09:11:58.703272|60.04|biology +55|429|65634|4294967445|73.20|21.31|true|calvin miller|2013-03-01 09:11:58.703198|77.87|mathematics +122|467|65777|4294967303|12.26|31.46|true|quinn zipper|2013-03-01 09:11:58.703207|80.40|linguistics +123|476|65572|4294967377|90.21|23.59|true|jessica ellison|2013-03-01 09:11:58.703314|26.11|yard duty +22|331|65658|4294967480|3.75|26.95|true|katie polk|2013-03-01 09:11:58.703131|51.68|debate +75|316|65580|4294967450|21.03|13.77|true|rachel ichabod|2013-03-01 09:11:58.703076|93.93|values clariffication +96|391|65592|4294967384|28.60|19.76|false|ethan ellison|2013-03-01 09:11:58.703082|39.25|american history +91|507|65702|4294967394|68.64|22.97|false|ethan xylophone|2013-03-01 09:11:58.703186|41.87|industrial engineering +35|473|65600|4294967385|28.25|6.13|true|sarah young|2013-03-01 09:11:58.703146|22.76|nap time +14|352|65711|4294967326|74.01|36.65|false|nick king|2013-03-01 09:11:58.703162|63.36|opthamology +31|361|65745|4294967449|72.47|20.81|true|holly polk|2013-03-01 09:11:58.703153|33.22|zync studies +-3|458|65563|4294967315|62.77|41.50|false|alice king|2013-03-01 09:11:58.703247|2.98|mathematics +68|352|65778|4294967542|1.24|18.55|true|holly quirinius|2013-03-01 09:11:58.703311|56.32|philosophy +18|258|65606|4294967472|35.52|35.18|false|xavier zipper|2013-03-01 09:11:58.703174|13.86|education +82|483|65584|4294967433|86.06|4.17|true|gabriella hernandez|2013-03-01 09:11:58.703138|52.52|industrial engineering +15|297|65554|4294967312|68.55|29.54|false|ulysses nixon|2013-03-01 09:11:58.703247|54.41|undecided +48|377|65653|4294967346|26.08|11.25|true|david young|2013-03-01 09:11:58.703227|56.10|forestry +94|374|65786|4294967375|6.51|46.30|true|david quirinius|2013-03-01 09:11:58.703182|23.32|nap time +121|310|65651|4294967361|6.98|12.35|true|irene carson|2013-03-01 09:11:58.703119|24.87|joggying +54|398|65663|4294967490|64.78|13.95|false|calvin xylophone|2013-03-01 09:11:58.703156|76.28|philosophy +71|354|65669|4294967376|35.92|43.88|true|irene allen|2013-03-01 09:11:58.703078|18.13|quiet hour +96|507|65766|4294967545|17.84|27.31|false|rachel underhill|2013-03-01 09:11:58.703211|60.17|zync studies +29|434|65595|4294967423|22.02|45.72|false|gabriella king|2013-03-01 09:11:58.703117|82.98|geology +50|345|65670|4294967528|29.89|25.71|false|ethan robinson|2013-03-01 09:11:58.703295|38.91|chemistry +17|365|65591|4294967539|1.09|0.42|true|alice johnson|2013-03-01 09:11:58.703262|29.31|debate +114|356|65686|4294967475|86.14|32.44|true|mike hernandez|2013-03-01 09:11:58.703195|71.01|nap time +94|427|65580|4294967472|3.13|8.18|true|katie king|2013-03-01 09:11:58.703204|69.88|industrial engineering +58|457|65680|4294967350|7.12|27.18|false|david hernandez|2013-03-01 09:11:58.703315|31.41|joggying +17|485|65590|4294967469|34.14|2.71|false|ulysses underhill|2013-03-01 09:11:58.703121|95.71|values clariffication +89|470|65763|4294967468|74.12|44.19|true|katie white|2013-03-01 09:11:58.703136|49.31|undecided +66|433|65781|4294967438|87.55|48.96|true|mike allen|2013-03-01 09:11:58.703098|47.16|biology +71|408|65752|4294967483|61.49|2.33|false|bob xylophone|2013-03-01 09:11:58.703233|60.37|xylophone band +115|259|65545|4294967386|16.90|17.18|true|yuri van buren|2013-03-01 09:11:58.703131|28.30|chemistry +84|473|65536|4294967412|61.28|28.75|true|fred miller|2013-03-01 09:11:58.703319|44.41|joggying +66|460|65737|4294967347|89.32|47.63|false|bob miller|2013-03-01 09:11:58.703318|96.38|industrial engineering +43|409|65721|4294967339|96.90|35.35|false|calvin johnson|2013-03-01 09:11:58.703091|40.06|joggying +118|498|65564|4294967365|99.37|8.34|false|luke hernandez|2013-03-01 09:11:58.703198|38.88|education +98|296|65708|4294967388|55.82|47.44|false|victor ichabod|2013-03-01 09:11:58.703298|94.56|topology +39|449|65704|4294967532|54.19|2.61|true|calvin quirinius|2013-03-01 09:11:58.703144|28.93|religion +9|487|65616|4294967364|26.77|15.88|false|sarah xylophone|2013-03-01 09:11:58.703305|20.63|linguistics +112|482|65639|4294967429|45.01|5.26|true|nick hernandez|2013-03-01 09:11:58.703325|23.95|nap time +33|497|65729|4294967436|3.49|18.27|true|david allen|2013-03-01 09:11:58.703228|93.17|forestry +114|407|65783|4294967364|95.09|45.37|false|priscilla brown|2013-03-01 09:11:58.703213|44.61|yard duty +39|372|65625|4294967525|16.46|21.29|true|fred nixon|2013-03-01 09:11:58.703169|25.84|kindergarten +107|429|65764|4294967330|21.90|9.83|false|mike carson|2013-03-01 09:11:58.703271|39.20|topology +28|379|65697|4294967376|74.49|34.77|true|priscilla king|2013-03-01 09:11:58.703283|22.13|yard duty +34|504|65575|4294967548|70.27|15.45|true|yuri davidson|2013-03-01 09:11:58.703263|3.98|undecided +3|276|65617|4294967455|40.98|39.22|false|mike ovid|2013-03-01 09:11:58.703274|96.76|religion +23|404|65582|4294967524|64.62|37.89|false|xavier polk|2013-03-01 09:11:58.703249|92.42|xylophone band +44|363|65569|4294967468|34.06|11.12|false|david davidson|2013-03-01 09:11:58.703107|11.29|geology +83|277|65658|4294967540|91.19|43.74|false|xavier young|2013-03-01 09:11:58.703241|4.97|topology +110|341|65590|4294967505|26.24|5.91|false|tom allen|2013-03-01 09:11:58.703315|62.99|wind surfing +62|277|65537|4294967521|56.19|47.08|false|mike hernandez|2013-03-01 09:11:58.703164|7.52|american history +20|273|65543|4294967375|27.71|35.70|true|victor polk|2013-03-01 09:11:58.703285|7.93|joggying +84|289|65585|4294967353|72.30|3.90|false|priscilla allen|2013-03-01 09:11:58.703271|78.78|industrial engineering +55|431|65665|4294967433|67.21|48.43|true|oscar nixon|2013-03-01 09:11:58.703207|87.73|study skills +60|479|65647|4294967340|4.94|17.52|false|wendy thompson|2013-03-01 09:11:58.703100|37.41|biology +35|371|65588|4294967373|36.96|27.11|true|fred thompson|2013-03-01 09:11:58.703235|65.46|history +88|425|65690|4294967479|59.79|4.43|true|sarah quirinius|2013-03-01 09:11:58.703158|45.41|chemistry +6|488|65579|4294967498|41.45|31.31|false|sarah brown|2013-03-01 09:11:58.703210|58.41|kindergarten +111|352|65536|4294967348|15.73|14.02|true|priscilla garcia|2013-03-01 09:11:58.703174|28.49|values clariffication +84|265|65547|4294967390|86.42|49.77|true|bob carson|2013-03-01 09:11:58.703278|85.00|chemistry +50|311|65752|4294967368|1.46|6.43|true|katie garcia|2013-03-01 09:11:58.703186|94.01|study skills +33|442|65754|4294967542|61.21|20.83|false|priscilla polk|2013-03-01 09:11:58.703180|19.19|nap time +82|382|65568|4294967493|80.18|21.16|true|david laertes|2013-03-01 09:11:58.703307|64.42|mathematics +121|359|65720|4294967414|8.06|8.23|false|ethan carson|2013-03-01 09:11:58.703095|69.16|topology +0|286|65631|4294967320|44.76|14.30|false|tom laertes|2013-03-01 09:11:58.703184|78.32|mathematics +6|271|65671|4294967395|32.59|42.38|false|irene van buren|2013-03-01 09:11:58.703170|66.83|american history +3|364|65659|4294967459|35.58|4.75|false|tom hernandez|2013-03-01 09:11:58.703201|42.00|american history +26|308|65628|4294967535|93.60|2.11|false|katie ovid|2013-03-01 09:11:58.703189|71.72|american history +100|348|65645|4294967460|75.16|49.64|true|calvin king|2013-03-01 09:11:58.703268|42.40|yard duty +75|366|65592|4294967417|15.08|19.07|false|tom garcia|2013-03-01 09:11:58.703320|56.55|joggying +31|432|65592|4294967361|67.01|16.11|true|zach garcia|2013-03-01 09:11:58.703194|56.85|history +95|307|65612|4294967475|90.73|36.04|true|bob zipper|2013-03-01 09:11:58.703219|52.42|mathematics +8|484|65552|4294967489|31.96|30.52|false|luke polk|2013-03-01 09:11:58.703116|16.89|american history +106|343|65702|4294967495|99.78|42.16|true|gabriella brown|2013-03-01 09:11:58.703088|89.18|religion +0|461|65589|4294967313|52.33|17.70|false|tom steinbeck|2013-03-01 09:11:58.703092|1.56|philosophy +116|328|65758|4294967551|24.23|41.36|false|xavier quirinius|2013-03-01 09:11:58.703181|70.67|joggying +61|455|65648|4294967408|63.63|41.22|false|wendy thompson|2013-03-01 09:11:58.703313|51.08|kindergarten +64|445|65756|4294967546|49.78|36.40|false|nick carson|2013-03-01 09:11:58.703268|76.20|history +119|289|65706|4294967378|74.65|21.33|false|gabriella hernandez|2013-03-01 09:11:58.703095|4.17|history +118|430|65658|4294967487|47.68|28.93|false|quinn falkner|2013-03-01 09:11:58.703233|77.29|study skills +39|268|65655|4294967411|9.73|39.99|true|luke falkner|2013-03-01 09:11:58.703181|70.93|forestry +14|470|65594|4294967463|70.93|45.81|true|gabriella quirinius|2013-03-01 09:11:58.703290|4.18|forestry +90|495|65758|4294967426|51.81|42.82|true|tom hernandez|2013-03-01 09:11:58.703290|59.64|study skills +12|464|65769|4294967460|56.63|4.98|true|holly zipper|2013-03-01 09:11:58.703138|88.19|forestry +34|299|65545|4294967527|21.69|14.53|true|ulysses underhill|2013-03-01 09:11:58.703124|78.36|opthamology +13|493|65627|4294967359|6.44|28.08|false|alice quirinius|2013-03-01 09:11:58.703260|44.94|undecided +67|424|65741|4294967482|57.59|39.14|false|quinn davidson|2013-03-01 09:11:58.703129|31.99|xylophone band +22|382|65554|4294967385|19.23|44.21|true|victor robinson|2013-03-01 09:11:58.703138|49.01|zync studies +-3|381|65640|4294967379|59.34|7.97|false|ulysses ellison|2013-03-01 09:11:58.703197|32.06|undecided +39|496|65739|4294967484|73.71|8.12|false|yuri van buren|2013-03-01 09:11:58.703115|83.16|xylophone band +10|473|65781|4294967457|34.23|6.78|true|jessica miller|2013-03-01 09:11:58.703120|30.01|xylophone band +73|358|65701|4294967441|5.03|27.01|false|tom nixon|2013-03-01 09:11:58.703279|24.69|quiet hour +-3|279|65661|4294967536|25.50|0.02|false|wendy quirinius|2013-03-01 09:11:58.703266|74.92|undecided +29|485|65680|4294967493|86.55|3.84|false|gabriella steinbeck|2013-03-01 09:11:58.703102|57.65|nap time +31|359|65695|4294967494|20.78|32.65|false|david ovid|2013-03-01 09:11:58.703127|84.07|topology +81|269|65635|4294967502|17.85|10.21|true|irene polk|2013-03-01 09:11:58.703102|72.92|joggying +8|478|65552|4294967327|25.59|40.98|false|priscilla underhill|2013-03-01 09:11:58.703226|98.48|industrial engineering +115|389|65775|4294967388|31.43|49.78|false|bob miller|2013-03-01 09:11:58.703200|38.03|history +23|508|65622|4294967428|47.03|1.12|false|mike polk|2013-03-01 09:11:58.703212|76.95|quiet hour +43|443|65787|4294967304|63.63|13.10|true|irene nixon|2013-03-01 09:11:58.703222|85.60|undecided +30|463|65590|4294967373|64.44|48.41|true|holly ovid|2013-03-01 09:11:58.703156|59.52|kindergarten +43|415|65783|4294967401|90.90|6.62|true|mike king|2013-03-01 09:11:58.703265|83.10|religion +62|442|65652|4294967490|67.49|23.47|false|bob quirinius|2013-03-01 09:11:58.703315|6.30|kindergarten +1|258|65728|4294967477|9.05|13.13|false|tom laertes|2013-03-01 09:11:58.703159|7.03|opthamology +86|447|65669|4294967487|17.45|39.00|true|ulysses ichabod|2013-03-01 09:11:58.703289|89.08|history +94|266|65712|4294967447|32.63|7.23|true|holly white|2013-03-01 09:11:58.703177|52.48|philosophy +80|428|65766|4294967350|35.17|18.46|false|katie johnson|2013-03-01 09:11:58.703260|81.50|nap time +-3|485|65684|4294967483|11.83|8.04|false|david garcia|2013-03-01 09:11:58.703190|63.10|wind surfing +47|287|65730|4294967541|38.05|30.61|true|irene ovid|2013-03-01 09:11:58.703272|59.12|debate +8|325|65538|4294967398|7.43|2.29|false|tom polk|2013-03-01 09:11:58.703111|68.02|values clariffication +100|390|65676|4294967541|39.67|35.13|true|jessica ellison|2013-03-01 09:11:58.703325|82.68|undecided +27|448|65760|4294967387|28.56|13.86|false|sarah davidson|2013-03-01 09:11:58.703212|60.29|american history +53|374|65569|4294967484|88.81|11.86|false|fred laertes|2013-03-01 09:11:58.703305|97.07|forestry +87|267|65709|4294967405|24.59|31.09|true|calvin miller|2013-03-01 09:11:58.703083|46.39|joggying +110|419|65771|4294967424|59.16|21.73|false|oscar polk|2013-03-01 09:11:58.703157|34.59|education +52|371|65651|4294967329|30.87|30.55|true|david laertes|2013-03-01 09:11:58.703154|38.47|philosophy +13|422|65629|4294967301|8.06|39.36|false|nick johnson|2013-03-01 09:11:58.703166|63.49|history +-3|376|65766|4294967326|97.88|5.58|true|sarah zipper|2013-03-01 09:11:58.703289|49.38|study skills +39|349|65540|4294967447|1.00|6.83|false|xavier underhill|2013-03-01 09:11:58.703250|73.13|quiet hour +8|373|65680|4294967389|85.89|19.62|false|quinn underhill|2013-03-01 09:11:58.703199|86.60|industrial engineering +32|309|65565|4294967320|49.30|34.91|false|nick ovid|2013-03-01 09:11:58.703116|33.06|industrial engineering +44|401|65648|4294967444|80.63|8.30|false|jessica ichabod|2013-03-01 09:11:58.703251|23.42|undecided +108|292|65669|4294967412|30.49|21.37|false|gabriella johnson|2013-03-01 09:11:58.703295|7.16|undecided +57|465|65698|4294967483|81.77|0.58|false|calvin johnson|2013-03-01 09:11:58.703098|55.19|yard duty +61|283|65669|4294967509|55.47|17.70|true|nick falkner|2013-03-01 09:11:58.703085|44.21|history +123|315|65619|4294967354|33.21|17.18|false|david ovid|2013-03-01 09:11:58.703204|24.78|philosophy +68|508|65718|4294967375|12.37|2.88|false|oscar polk|2013-03-01 09:11:58.703288|3.41|religion +74|304|65596|4294967543|4.19|35.56|true|xavier robinson|2013-03-01 09:11:58.703305|24.53|nap time +43|479|65775|4294967549|55.14|19.00|false|xavier thompson|2013-03-01 09:11:58.703235|7.52|joggying +10|506|65652|4294967374|91.24|32.90|true|yuri ovid|2013-03-01 09:11:58.703303|51.85|history +69|312|65739|4294967350|14.78|35.55|true|david white|2013-03-01 09:11:58.703127|47.23|education +79|368|65655|4294967498|94.65|33.90|false|tom ovid|2013-03-01 09:11:58.703270|12.76|history +64|263|65545|4294967478|92.78|39.17|false|zach white|2013-03-01 09:11:58.703185|88.19|undecided +108|268|65713|4294967446|27.96|46.87|true|alice carson|2013-03-01 09:11:58.703180|31.18|geology +68|422|65660|4294967465|50.08|42.44|false|fred brown|2013-03-01 09:11:58.703110|56.85|values clariffication +30|376|65738|4294967427|46.46|21.15|false|sarah zipper|2013-03-01 09:11:58.703313|32.65|mathematics +52|270|65783|4294967516|30.17|19.65|false|ethan ellison|2013-03-01 09:11:58.703136|2.82|joggying +-3|431|65635|4294967500|29.06|0.34|false|calvin ichabod|2013-03-01 09:11:58.703213|28.54|undecided +103|384|65554|4294967429|52.45|8.38|false|ethan hernandez|2013-03-01 09:11:58.703246|53.94|study skills +107|308|65767|4294967543|19.28|29.12|true|ethan davidson|2013-03-01 09:11:58.703248|31.17|nap time +9|382|65572|4294967489|81.19|14.71|false|jessica thompson|2013-03-01 09:11:58.703282|95.63|history +81|421|65600|4294967429|23.34|47.85|false|ulysses miller|2013-03-01 09:11:58.703230|81.70|xylophone band +36|463|65615|4294967322|16.52|24.97|false|mike ovid|2013-03-01 09:11:58.703157|18.15|debate +108|506|65612|4294967465|78.04|26.54|true|fred laertes|2013-03-01 09:11:58.703280|70.70|kindergarten +5|470|65765|4294967395|66.84|10.51|true|alice nixon|2013-03-01 09:11:58.703076|84.60|forestry +43|334|65551|4294967469|37.63|0.51|false|tom white|2013-03-01 09:11:58.703218|76.19|xylophone band +19|289|65746|4294967441|46.97|11.20|false|holly falkner|2013-03-01 09:11:58.703165|78.48|joggying +39|439|65655|4294967400|87.07|22.04|true|priscilla ellison|2013-03-01 09:11:58.703293|36.11|forestry +72|336|65563|4294967383|2.96|1.42|false|wendy garcia|2013-03-01 09:11:58.703268|92.39|chemistry +122|485|65721|4294967513|69.19|37.22|true|bob carson|2013-03-01 09:11:58.703179|10.74|mathematics +94|427|65757|4294967542|93.46|26.06|false|david miller|2013-03-01 09:11:58.703100|19.04|undecided +60|436|65545|4294967484|15.47|33.75|false|priscilla zipper|2013-03-01 09:11:58.703103|76.35|kindergarten +67|452|65646|4294967511|57.37|46.07|true|mike allen|2013-03-01 09:11:58.703198|2.68|american history +118|438|65681|4294967549|94.07|34.44|true|sarah brown|2013-03-01 09:11:58.703227|23.73|joggying +109|334|65717|4294967423|70.67|1.76|false|mike thompson|2013-03-01 09:11:58.703124|2.07|forestry +38|454|65593|4294967503|34.29|32.47|true|holly davidson|2013-03-01 09:11:58.703250|14.89|debate +94|300|65760|4294967481|38.85|38.02|true|xavier young|2013-03-01 09:11:58.703295|6.84|biology +26|353|65762|4294967372|54.76|27.55|false|jessica underhill|2013-03-01 09:11:58.703256|77.21|values clariffication +109|268|65774|4294967538|87.94|38.79|false|quinn quirinius|2013-03-01 09:11:58.703247|35.94|topology +111|305|65624|4294967503|11.69|27.72|true|tom ichabod|2013-03-01 09:11:58.703149|87.71|chemistry +80|397|65725|4294967372|4.92|38.63|false|luke white|2013-03-01 09:11:58.703101|31.36|wind surfing +104|380|65581|4294967384|95.46|29.48|false|wendy ellison|2013-03-01 09:11:58.703141|19.95|biology +116|483|65614|4294967357|38.19|16.53|true|quinn miller|2013-03-01 09:11:58.703138|40.79|opthamology +24|432|65636|4294967515|36.68|28.36|false|ulysses polk|2013-03-01 09:11:58.703208|93.03|xylophone band +44|325|65592|4294967362|0.55|32.02|false|zach falkner|2013-03-01 09:11:58.703091|61.19|study skills +103|290|65684|4294967471|38.34|44.56|false|irene zipper|2013-03-01 09:11:58.703202|76.02|quiet hour +48|288|65601|4294967459|20.72|35.64|false|holly ellison|2013-03-01 09:11:58.703123|89.60|linguistics +-1|326|65743|4294967544|27.51|22.35|false|sarah king|2013-03-01 09:11:58.703257|61.58|education +117|258|65584|4294967364|64.92|24.54|false|nick xylophone|2013-03-01 09:11:58.703302|99.23|chemistry +5|333|65634|4294967439|19.18|28.29|true|wendy van buren|2013-03-01 09:11:58.703173|30.33|forestry +46|415|65769|4294967314|97.45|20.92|true|priscilla garcia|2013-03-01 09:11:58.703254|27.44|religion +39|479|65538|4294967469|5.38|32.31|true|holly falkner|2013-03-01 09:11:58.703250|81.59|opthamology +124|492|65773|4294967493|68.32|23.80|true|alice robinson|2013-03-01 09:11:58.703088|27.25|study skills +24|261|65718|4294967405|25.69|6.05|false|luke robinson|2013-03-01 09:11:58.703139|7.74|topology +80|389|65604|4294967424|7.29|25.86|true|calvin ellison|2013-03-01 09:11:58.703242|96.60|industrial engineering +9|481|65610|4294967360|39.48|16.29|true|katie white|2013-03-01 09:11:58.703070|37.30|history +3|436|65752|4294967341|66.38|44.66|true|ethan robinson|2013-03-01 09:11:58.703314|58.39|history +93|439|65713|4294967398|6.96|26.35|true|calvin miller|2013-03-01 09:11:58.703287|67.04|industrial engineering +70|371|65549|4294967405|88.19|42.58|true|fred hernandez|2013-03-01 09:11:58.703096|20.33|joggying +7|307|65580|4294967468|94.15|45.55|true|nick robinson|2013-03-01 09:11:58.703176|45.15|linguistics +77|418|65657|4294967432|83.59|2.23|true|irene davidson|2013-03-01 09:11:58.703150|96.61|american history +121|334|65716|4294967520|47.29|36.79|false|mike young|2013-03-01 09:11:58.703212|56.49|philosophy +120|309|65587|4294967519|81.48|33.39|false|victor quirinius|2013-03-01 09:11:58.703289|22.93|industrial engineering +92|345|65609|4294967499|34.02|3.72|true|victor garcia|2013-03-01 09:11:58.703297|96.42|values clariffication +53|464|65595|4294967353|63.36|14.13|true|quinn xylophone|2013-03-01 09:11:58.703157|43.13|american history +18|474|65688|4294967521|22.85|33.11|false|irene davidson|2013-03-01 09:11:58.703157|2.21|kindergarten +79|367|65566|4294967417|18.15|12.65|false|quinn robinson|2013-03-01 09:11:58.703132|88.99|study skills +117|429|65635|4294967383|67.98|14.17|true|nick zipper|2013-03-01 09:11:58.703100|40.57|philosophy +64|292|65732|4294967397|46.69|47.27|true|nick zipper|2013-03-01 09:11:58.703109|15.32|nap time +80|474|65758|4294967542|84.46|44.70|false|sarah young|2013-03-01 09:11:58.703185|26.04|american history +35|464|65563|4294967421|11.66|20.23|true|luke thompson|2013-03-01 09:11:58.703239|89.40|zync studies +73|463|65562|4294967468|37.93|14.91|true|xavier ichabod|2013-03-01 09:11:58.703179|67.99|undecided +17|447|65762|4294967328|66.48|6.35|true|priscilla falkner|2013-03-01 09:11:58.703286|68.09|opthamology +18|385|65605|4294967456|34.94|31.85|true|mike ellison|2013-03-01 09:11:58.703288|14.32|quiet hour +-3|451|65696|4294967532|6.80|40.07|false|luke young|2013-03-01 09:11:58.703182|26.91|biology +81|479|65655|4294967424|82.97|12.85|true|zach thompson|2013-03-01 09:11:58.703256|76.39|industrial engineering +92|499|65627|4294967430|69.69|24.17|false|nick polk|2013-03-01 09:11:58.703208|33.05|forestry +98|383|65611|4294967464|94.27|33.09|false|luke ichabod|2013-03-01 09:11:58.703138|84.03|values clariffication +40|438|65605|4294967548|59.47|30.38|false|quinn young|2013-03-01 09:11:58.703192|79.08|topology +2|271|65634|4294967531|35.19|11.79|false|tom hernandez|2013-03-01 09:11:58.703243|29.60|quiet hour +11|498|65569|4294967363|4.48|26.25|true|nick king|2013-03-01 09:11:58.703072|15.83|biology +76|298|65660|4294967504|71.01|13.05|false|sarah robinson|2013-03-01 09:11:58.703325|17.86|kindergarten +8|346|65702|4294967456|46.60|43.85|false|zach white|2013-03-01 09:11:58.703159|41.14|chemistry +39|421|65674|4294967421|27.57|20.92|true|quinn allen|2013-03-01 09:11:58.703142|42.94|american history +119|461|65714|4294967369|34.25|4.51|true|irene xylophone|2013-03-01 09:11:58.703279|16.58|study skills +69|279|65700|4294967488|83.31|24.00|true|mike nixon|2013-03-01 09:11:58.703075|64.55|debate +103|389|65669|4294967531|31.19|29.28|true|bob ichabod|2013-03-01 09:11:58.703322|96.69|american history +58|385|65653|4294967357|20.15|13.27|true|nick white|2013-03-01 09:11:58.703233|54.07|kindergarten +30|367|65712|4294967461|65.95|47.81|false|quinn young|2013-03-01 09:11:58.703086|63.93|quiet hour +24|368|65585|4294967337|97.87|6.55|true|ethan allen|2013-03-01 09:11:58.703324|26.17|forestry +2|402|65762|4294967398|31.89|18.37|true|rachel underhill|2013-03-01 09:11:58.703097|68.90|values clariffication +93|427|65699|4294967495|75.14|15.80|false|david steinbeck|2013-03-01 09:11:58.703196|63.21|nap time +123|427|65774|4294967484|4.58|38.94|true|yuri zipper|2013-03-01 09:11:58.703109|77.88|linguistics +75|429|65645|4294967410|80.23|17.78|true|zach king|2013-03-01 09:11:58.703124|78.73|history +54|360|65770|4294967498|71.66|13.68|false|nick nixon|2013-03-01 09:11:58.703316|29.89|yard duty +79|415|65544|4294967533|36.93|25.57|false|mike garcia|2013-03-01 09:11:58.703283|51.94|undecided +44|404|65667|4294967380|71.04|40.83|false|tom thompson|2013-03-01 09:11:58.703122|1.43|education +24|354|65624|4294967423|74.66|37.18|true|ulysses underhill|2013-03-01 09:11:58.703228|97.48|education +89|390|65755|4294967449|5.39|6.71|false|nick quirinius|2013-03-01 09:11:58.703111|71.15|chemistry +69|311|65619|4294967435|97.83|8.83|false|ulysses underhill|2013-03-01 09:11:58.703256|14.32|opthamology +73|427|65704|4294967363|45.49|6.73|false|zach young|2013-03-01 09:11:58.703074|66.59|forestry +74|347|65600|4294967367|57.19|13.67|false|david garcia|2013-03-01 09:11:58.703169|83.71|philosophy +102|447|65626|4294967441|50.74|17.13|false|tom falkner|2013-03-01 09:11:58.703205|62.59|joggying +54|378|65711|4294967414|55.31|2.29|false|fred falkner|2013-03-01 09:11:58.703084|59.53|education +87|405|65635|4294967461|23.29|11.95|true|mike steinbeck|2013-03-01 09:11:58.703246|84.80|american history +76|318|65644|4294967397|29.90|29.12|true|victor van buren|2013-03-01 09:11:58.703260|14.14|american history +68|378|65734|4294967546|72.17|6.95|true|oscar underhill|2013-03-01 09:11:58.703158|53.08|zync studies +85|444|65789|4294967471|91.82|48.49|false|bob garcia|2013-03-01 09:11:58.703300|69.81|quiet hour +123|379|65606|4294967517|95.53|17.05|true|mike ovid|2013-03-01 09:11:58.703147|76.93|joggying +115|333|65656|4294967507|50.07|16.61|false|jessica underhill|2013-03-01 09:11:58.703319|59.71|study skills +15|425|65676|4294967352|92.42|35.89|false|ethan van buren|2013-03-01 09:11:58.703170|90.15|kindergarten +113|444|65725|4294967372|32.78|9.52|true|luke van buren|2013-03-01 09:11:58.703261|22.85|zync studies +26|304|65749|4294967519|91.54|34.97|true|mike young|2013-03-01 09:11:58.703149|83.37|chemistry +33|289|65575|4294967393|12.38|33.89|false|katie van buren|2013-03-01 09:11:58.703291|45.08|mathematics +103|469|65672|4294967361|31.33|36.49|true|mike underhill|2013-03-01 09:11:58.703235|61.57|chemistry +74|445|65566|4294967486|63.84|16.02|false|wendy nixon|2013-03-01 09:11:58.703258|12.55|industrial engineering +68|448|65609|4294967425|45.13|37.04|false|katie ovid|2013-03-01 09:11:58.703200|19.08|nap time +0|363|65754|4294967491|27.57|5.19|false|ethan laertes|2013-03-01 09:11:58.703306|45.33|philosophy +115|473|65773|4294967485|96.45|0.41|true|mike allen|2013-03-01 09:11:58.703211|86.60|debate +75|451|65770|4294967384|13.07|20.70|true|gabriella king|2013-03-01 09:11:58.703219|27.07|wind surfing +98|284|65729|4294967482|71.95|45.38|false|ethan ellison|2013-03-01 09:11:58.703252|64.17|debate +51|271|65777|4294967337|65.94|6.95|false|sarah zipper|2013-03-01 09:11:58.703124|41.46|debate +92|319|65624|4294967296|75.12|29.40|true|ethan ichabod|2013-03-01 09:11:58.703126|9.60|study skills +112|369|65600|4294967379|29.07|38.34|true|luke thompson|2013-03-01 09:11:58.703071|68.36|philosophy +51|489|65578|4294967337|69.92|21.56|true|jessica king|2013-03-01 09:11:58.703213|5.03|philosophy +-2|304|65712|4294967483|59.04|35.60|true|priscilla brown|2013-03-01 09:11:58.703227|81.04|kindergarten +39|337|65766|4294967343|2.58|17.29|false|xavier polk|2013-03-01 09:11:58.703322|73.75|values clariffication +27|309|65631|4294967461|10.86|16.44|false|bob davidson|2013-03-01 09:11:58.703244|21.81|biology +101|435|65628|4294967365|79.98|24.14|true|irene quirinius|2013-03-01 09:11:58.703080|66.27|linguistics +6|500|65672|4294967425|77.93|7.89|true|nick garcia|2013-03-01 09:11:58.703285|15.54|quiet hour +115|337|65676|4294967345|5.76|41.72|true|katie steinbeck|2013-03-01 09:11:58.703102|77.62|education +76|435|65775|4294967403|70.29|43.49|false|gabriella polk|2013-03-01 09:11:58.703099|10.40|religion +11|266|65594|4294967545|69.06|19.79|true|yuri zipper|2013-03-01 09:11:58.703242|98.86|joggying +103|296|65746|4294967424|31.27|6.91|true|irene johnson|2013-03-01 09:11:58.703210|10.90|study skills +78|365|65542|4294967354|47.37|6.70|false|jessica thompson|2013-03-01 09:11:58.703271|42.30|mathematics +74|426|65669|4294967486|32.97|14.19|true|sarah van buren|2013-03-01 09:11:58.703317|92.03|study skills +118|334|65756|4294967472|22.62|45.79|false|yuri hernandez|2013-03-01 09:11:58.703183|14.49|linguistics +121|256|65620|4294967322|51.72|49.38|false|xavier ovid|2013-03-01 09:11:58.703148|52.70|nap time +88|351|65543|4294967324|19.79|39.85|false|ulysses ellison|2013-03-01 09:11:58.703139|41.86|biology +111|444|65616|4294967341|8.47|33.32|false|irene xylophone|2013-03-01 09:11:58.703233|84.17|history +4|292|65540|4294967296|58.69|33.54|false|irene garcia|2013-03-01 09:11:58.703294|81.51|wind surfing +86|407|65580|4294967544|63.98|12.32|false|mike ellison|2013-03-01 09:11:58.703160|92.48|values clariffication +39|461|65688|4294967470|63.58|10.43|false|sarah zipper|2013-03-01 09:11:58.703151|74.85|values clariffication +99|471|65591|4294967355|85.76|2.81|true|priscilla laertes|2013-03-01 09:11:58.703132|24.76|philosophy +25|484|65645|4294967410|0.57|15.76|true|priscilla king|2013-03-01 09:11:58.703309|22.69|education +41|505|65782|4294967308|52.79|19.60|true|rachel miller|2013-03-01 09:11:58.703157|6.74|history +113|477|65737|4294967529|9.96|46.90|false|irene white|2013-03-01 09:11:58.703089|79.59|education +54|294|65736|4294967451|34.60|48.64|true|priscilla van buren|2013-03-01 09:11:58.703134|3.31|yard duty +34|369|65717|4294967334|70.39|2.31|true|oscar johnson|2013-03-01 09:11:58.703216|79.94|wind surfing +20|460|65595|4294967416|74.24|1.61|true|xavier nixon|2013-03-01 09:11:58.703206|64.95|philosophy +33|402|65558|4294967441|72.12|45.31|false|bob king|2013-03-01 09:11:58.703269|20.94|philosophy +108|454|65732|4294967297|18.92|7.03|false|oscar quirinius|2013-03-01 09:11:58.703166|21.36|industrial engineering +18|345|65773|4294967375|90.49|21.93|false|irene johnson|2013-03-01 09:11:58.703093|36.38|education +17|493|65681|4294967388|78.85|3.41|true|tom ichabod|2013-03-01 09:11:58.703095|28.31|american history +34|477|65582|4294967430|34.76|22.02|false|mike thompson|2013-03-01 09:11:58.703172|1.38|wind surfing +38|435|65589|4294967492|52.87|1.74|false|zach young|2013-03-01 09:11:58.703215|65.98|undecided +112|287|65551|4294967476|4.83|40.14|false|zach thompson|2013-03-01 09:11:58.703260|10.80|american history +53|405|65779|4294967526|39.65|29.73|true|fred zipper|2013-03-01 09:11:58.703208|25.41|values clariffication +68|381|65540|4294967335|16.62|27.23|true|xavier nixon|2013-03-01 09:11:58.703274|73.99|history +60|404|65602|4294967476|55.55|6.74|false|ethan carson|2013-03-01 09:11:58.703106|5.64|history +57|269|65773|4294967495|57.49|25.47|false|rachel garcia|2013-03-01 09:11:58.703097|64.90|mathematics +28|463|65592|4294967320|3.70|27.12|false|jessica king|2013-03-01 09:11:58.703167|76.61|nap time +68|290|65606|4294967359|5.50|47.78|true|ethan white|2013-03-01 09:11:58.703102|60.24|chemistry +52|359|65604|4294967508|85.18|1.25|true|alice miller|2013-03-01 09:11:58.703172|42.09|philosophy +90|263|65622|4294967546|90.40|49.20|true|katie carson|2013-03-01 09:11:58.703130|88.51|philosophy +16|358|65704|4294967337|10.39|16.53|true|luke ellison|2013-03-01 09:11:58.703223|63.39|mathematics +36|349|65714|4294967428|90.50|40.64|false|ethan quirinius|2013-03-01 09:11:58.703190|0.17|debate +36|314|65728|4294967511|58.60|36.24|false|priscilla carson|2013-03-01 09:11:58.703141|77.59|zync studies +74|284|65655|4294967387|47.45|15.95|true|victor carson|2013-03-01 09:11:58.703241|52.95|education +114|385|65573|4294967419|44.89|1.87|true|katie nixon|2013-03-01 09:11:58.703190|64.24|quiet hour +11|340|65755|4294967452|40.94|0.59|true|quinn underhill|2013-03-01 09:11:58.703080|87.76|history +53|353|65621|4294967458|87.00|44.47|false|katie zipper|2013-03-01 09:11:58.703304|81.11|joggying +92|483|65739|4294967457|96.93|35.13|true|katie thompson|2013-03-01 09:11:58.703233|47.86|quiet hour +76|419|65634|4294967405|20.06|42.54|false|fred brown|2013-03-01 09:11:58.703285|3.59|topology +41|345|65632|4294967323|6.72|28.55|false|quinn nixon|2013-03-01 09:11:58.703165|69.29|topology +18|481|65727|4294967327|83.64|38.29|false|zach quirinius|2013-03-01 09:11:58.703105|62.83|chemistry +109|480|65556|4294967357|9.65|5.69|true|wendy king|2013-03-01 09:11:58.703128|41.67|quiet hour +53|447|65557|4294967469|5.27|40.67|true|calvin van buren|2013-03-01 09:11:58.703309|85.26|joggying +22|449|65689|4294967304|39.59|29.03|false|rachel laertes|2013-03-01 09:11:58.703161|7.21|mathematics +49|257|65654|4294967339|24.54|1.99|true|irene young|2013-03-01 09:11:58.703127|90.64|topology +96|374|65578|4294967313|54.57|49.15|true|luke ellison|2013-03-01 09:11:58.703136|30.97|nap time +69|403|65578|4294967475|45.38|6.00|false|quinn king|2013-03-01 09:11:58.703126|6.82|kindergarten +92|412|65609|4294967501|60.05|28.07|false|bob van buren|2013-03-01 09:11:58.703082|37.60|study skills +6|311|65680|4294967413|67.91|48.15|true|david robinson|2013-03-01 09:11:58.703208|7.80|american history +71|294|65699|4294967514|99.34|38.36|false|quinn young|2013-03-01 09:11:58.703091|69.06|yard duty +122|381|65632|4294967438|38.35|24.09|true|david falkner|2013-03-01 09:11:58.703070|76.50|american history +115|323|65751|4294967465|19.46|15.29|false|tom allen|2013-03-01 09:11:58.703209|73.55|mathematics +91|474|65780|4294967422|63.22|19.74|false|luke quirinius|2013-03-01 09:11:58.703284|35.68|industrial engineering +104|300|65704|4294967425|27.62|31.93|true|alice ichabod|2013-03-01 09:11:58.703250|88.78|joggying +7|383|65743|4294967353|64.72|15.94|true|zach laertes|2013-03-01 09:11:58.703246|79.07|geology +13|457|65553|4294967547|31.90|26.36|false|wendy quirinius|2013-03-01 09:11:58.703192|32.56|education +4|347|65785|4294967342|5.76|32.38|false|alice hernandez|2013-03-01 09:11:58.703142|70.60|xylophone band +64|414|65639|4294967498|10.43|36.85|false|david falkner|2013-03-01 09:11:58.703274|60.01|industrial engineering +55|293|65609|4294967312|87.47|39.53|true|gabriella nixon|2013-03-01 09:11:58.703315|62.03|history +78|443|65678|4294967305|75.51|44.51|true|ethan carson|2013-03-01 09:11:58.703278|90.43|geology +121|488|65537|4294967448|17.54|13.44|true|sarah falkner|2013-03-01 09:11:58.703221|8.63|study skills +104|444|65536|4294967334|93.56|34.20|true|rachel ichabod|2013-03-01 09:11:58.703214|46.97|joggying +28|377|65687|4294967339|65.44|46.45|true|nick garcia|2013-03-01 09:11:58.703123|38.91|zync studies +-2|473|65565|4294967320|87.78|12.26|true|alice carson|2013-03-01 09:11:58.703074|89.54|xylophone band +82|448|65718|4294967533|60.38|7.60|false|mike underhill|2013-03-01 09:11:58.703270|57.58|philosophy +81|259|65764|4294967452|88.25|15.41|true|victor underhill|2013-03-01 09:11:58.703204|55.61|education +104|325|65785|4294967463|48.83|19.16|true|calvin nixon|2013-03-01 09:11:58.703093|30.81|geology +17|415|65772|4294967541|4.56|7.27|true|oscar garcia|2013-03-01 09:11:58.703287|54.15|joggying +100|400|65773|4294967475|12.17|30.37|false|victor xylophone|2013-03-01 09:11:58.703178|19.88|nap time +111|312|65785|4294967296|77.09|39.14|false|victor garcia|2013-03-01 09:11:58.703242|86.29|joggying +119|327|65647|4294967343|50.04|27.00|true|oscar miller|2013-03-01 09:11:58.703321|92.97|yard duty +98|455|65605|4294967359|17.27|48.26|true|luke steinbeck|2013-03-01 09:11:58.703142|90.50|wind surfing +61|426|65618|4294967485|61.88|14.15|false|sarah quirinius|2013-03-01 09:11:58.703174|55.59|mathematics +8|382|65788|4294967302|72.41|31.03|false|katie ovid|2013-03-01 09:11:58.703225|32.02|biology +37|286|65721|4294967369|8.28|1.49|false|oscar young|2013-03-01 09:11:58.703236|97.62|forestry +46|297|65552|4294967329|47.92|9.95|true|yuri ovid|2013-03-01 09:11:58.703143|74.51|religion +-1|493|65654|4294967429|4.51|3.59|true|priscilla ichabod|2013-03-01 09:11:58.703226|59.28|american history +124|289|65786|4294967500|89.22|11.52|true|bob white|2013-03-01 09:11:58.703197|87.43|chemistry +47|258|65546|4294967351|91.19|44.01|true|sarah zipper|2013-03-01 09:11:58.703206|69.72|industrial engineering +108|408|65658|4294967362|66.68|38.05|true|katie allen|2013-03-01 09:11:58.703212|54.61|american history +32|425|65739|4294967508|41.64|19.54|false|zach johnson|2013-03-01 09:11:58.703318|9.99|topology +12|447|65748|4294967545|19.71|49.05|false|oscar van buren|2013-03-01 09:11:58.703091|58.79|education +124|423|65758|4294967416|2.03|41.55|true|gabriella steinbeck|2013-03-01 09:11:58.703162|97.11|topology +93|413|65646|4294967312|1.44|18.16|false|luke quirinius|2013-03-01 09:11:58.703163|22.71|wind surfing +66|481|65709|4294967533|18.45|23.51|false|alice falkner|2013-03-01 09:11:58.703294|78.13|quiet hour +36|486|65569|4294967442|21.57|48.60|false|quinn thompson|2013-03-01 09:11:58.703088|90.26|wind surfing +87|465|65656|4294967340|85.55|28.44|true|zach polk|2013-03-01 09:11:58.703077|61.38|mathematics +37|318|65733|4294967493|14.14|14.62|true|priscilla young|2013-03-01 09:11:58.703100|30.81|quiet hour +115|419|65683|4294967440|53.12|26.89|true|calvin laertes|2013-03-01 09:11:58.703286|98.28|kindergarten +104|339|65785|4294967310|57.14|48.11|false|alice falkner|2013-03-01 09:11:58.703200|46.58|zync studies +47|368|65767|4294967532|51.13|44.77|true|rachel zipper|2013-03-01 09:11:58.703316|61.14|linguistics +6|291|65617|4294967479|43.28|8.20|false|priscilla thompson|2013-03-01 09:11:58.703157|56.12|religion +62|369|65775|4294967451|39.50|1.84|false|wendy brown|2013-03-01 09:11:58.703308|42.02|linguistics +101|364|65627|4294967388|45.57|7.74|false|luke carson|2013-03-01 09:11:58.703097|17.57|topology +36|344|65708|4294967526|56.42|4.58|false|gabriella white|2013-03-01 09:11:58.703171|24.06|history +90|465|65583|4294967506|37.42|23.76|false|ethan hernandez|2013-03-01 09:11:58.703094|42.38|undecided +40|481|65639|4294967326|28.82|13.16|true|david ellison|2013-03-01 09:11:58.703145|49.54|linguistics +72|429|65618|4294967517|14.97|39.28|true|tom quirinius|2013-03-01 09:11:58.703229|34.40|xylophone band +58|493|65616|4294967355|19.81|49.37|false|priscilla robinson|2013-03-01 09:11:58.703142|29.21|religion +25|452|65541|4294967395|29.15|1.49|true|zach garcia|2013-03-01 09:11:58.703102|70.06|industrial engineering +59|492|65650|4294967322|21.31|2.93|true|nick young|2013-03-01 09:11:58.703305|4.29|forestry +76|261|65543|4294967430|66.87|35.89|false|tom garcia|2013-03-01 09:11:58.703230|13.25|forestry +52|327|65667|4294967543|55.24|24.97|true|xavier underhill|2013-03-01 09:11:58.703261|86.13|zync studies +80|422|65553|4294967408|24.18|28.17|true|nick ellison|2013-03-01 09:11:58.703128|33.36|joggying +-1|427|65651|4294967380|23.72|22.34|true|zach brown|2013-03-01 09:11:58.703174|59.44|kindergarten +124|370|65617|4294967468|89.87|24.47|true|jessica thompson|2013-03-01 09:11:58.703170|66.22|topology +65|437|65698|4294967332|47.58|32.51|true|wendy ellison|2013-03-01 09:11:58.703160|42.22|history +20|499|65581|4294967396|5.19|6.98|false|ulysses brown|2013-03-01 09:11:58.703222|26.46|history +62|344|65770|4294967514|53.41|17.50|false|alice white|2013-03-01 09:11:58.703140|50.22|nap time +61|350|65687|4294967344|84.78|25.68|false|xavier underhill|2013-03-01 09:11:58.703256|44.94|linguistics +33|412|65714|4294967496|11.91|16.39|true|irene zipper|2013-03-01 09:11:58.703210|14.78|values clariffication +14|437|65602|4294967484|74.94|7.05|false|tom nixon|2013-03-01 09:11:58.703112|67.04|quiet hour +50|492|65619|4294967359|94.98|38.50|true|bob van buren|2013-03-01 09:11:58.703133|51.12|geology +121|369|65769|4294967304|88.21|19.10|true|tom robinson|2013-03-01 09:11:58.703295|7.10|values clariffication +66|286|65581|4294967516|5.26|15.00|false|mike polk|2013-03-01 09:11:58.703084|69.34|history +121|315|65713|4294967541|88.42|46.68|true|sarah van buren|2013-03-01 09:11:58.703121|9.58|zync studies +62|424|65731|4294967453|40.35|3.75|true|holly underhill|2013-03-01 09:11:58.703191|61.93|linguistics +29|496|65727|4294967387|6.81|23.41|true|xavier young|2013-03-01 09:11:58.703315|21.06|yard duty +52|259|65588|4294967425|83.91|12.10|true|ulysses davidson|2013-03-01 09:11:58.703100|90.71|kindergarten +108|486|65717|4294967298|48.51|26.14|false|jessica miller|2013-03-01 09:11:58.703247|26.33|quiet hour +24|346|65637|4294967518|67.97|13.67|false|sarah polk|2013-03-01 09:11:58.703228|31.60|debate +21|478|65738|4294967480|99.30|14.09|true|wendy johnson|2013-03-01 09:11:58.703186|48.79|wind surfing +50|457|65791|4294967546|24.78|39.66|false|holly young|2013-03-01 09:11:58.703276|18.12|linguistics +117|384|65755|4294967525|64.76|39.04|false|irene quirinius|2013-03-01 09:11:58.703130|58.59|philosophy +51|316|65640|4294967524|42.19|20.83|true|wendy hernandez|2013-03-01 09:11:58.703130|53.94|forestry +23|354|65698|4294967317|68.23|13.68|false|alice ellison|2013-03-01 09:11:58.703264|72.44|undecided +101|486|65701|4294967369|54.27|45.06|false|mike laertes|2013-03-01 09:11:58.703292|41.16|topology +61|425|65774|4294967383|0.07|3.32|false|calvin thompson|2013-03-01 09:11:58.703190|66.08|study skills +27|429|65777|4294967439|38.61|25.66|true|calvin steinbeck|2013-03-01 09:11:58.703070|94.02|undecided +72|322|65638|4294967445|48.82|1.93|false|priscilla van buren|2013-03-01 09:11:58.703291|54.69|quiet hour +85|403|65675|4294967396|52.78|48.32|true|tom allen|2013-03-01 09:11:58.703266|77.79|undecided +109|344|65556|4294967426|54.60|15.52|true|jessica underhill|2013-03-01 09:11:58.703159|27.13|debate +87|302|65582|4294967485|26.19|29.72|true|nick young|2013-03-01 09:11:58.703216|29.49|religion +62|356|65667|4294967383|6.78|5.88|false|irene van buren|2013-03-01 09:11:58.703204|48.21|history +123|423|65562|4294967382|28.40|27.45|false|fred johnson|2013-03-01 09:11:58.703294|81.03|quiet hour +62|370|65766|4294967352|61.81|44.76|true|irene carson|2013-03-01 09:11:58.703245|67.40|religion +46|349|65700|4294967471|62.11|40.76|false|rachel underhill|2013-03-01 09:11:58.703117|15.52|yard duty +35|422|65589|4294967488|82.31|42.27|false|calvin hernandez|2013-03-01 09:11:58.703239|94.35|forestry +18|369|65674|4294967517|78.10|32.46|false|holly falkner|2013-03-01 09:11:58.703094|45.78|biology +68|257|65738|4294967364|96.01|44.95|false|fred brown|2013-03-01 09:11:58.703274|19.87|nap time +67|478|65603|4294967440|80.03|36.49|false|mike ichabod|2013-03-01 09:11:58.703152|7.57|religion +80|393|65666|4294967549|42.43|47.36|false|bob underhill|2013-03-01 09:11:58.703262|76.35|industrial engineering +123|380|65765|4294967367|79.69|41.18|true|alice underhill|2013-03-01 09:11:58.703119|12.23|opthamology +19|391|65748|4294967456|16.15|26.48|true|tom robinson|2013-03-01 09:11:58.703132|43.88|yard duty +7|358|65766|4294967529|77.96|6.32|true|victor ichabod|2013-03-01 09:11:58.703325|0.85|zync studies +77|372|65728|4294967485|28.65|41.49|false|calvin hernandez|2013-03-01 09:11:58.703187|17.38|mathematics +114|440|65674|4294967451|83.07|32.43|true|zach young|2013-03-01 09:11:58.703260|87.43|history +8|366|65783|4294967485|95.46|41.14|false|ethan robinson|2013-03-01 09:11:58.703299|55.93|zync studies +62|339|65603|4294967380|36.15|2.94|false|quinn xylophone|2013-03-01 09:11:58.703203|70.54|undecided +91|403|65753|4294967386|12.19|38.41|false|calvin polk|2013-03-01 09:11:58.703272|38.50|undecided +51|379|65749|4294967387|93.97|14.61|false|ethan davidson|2013-03-01 09:11:58.703190|31.31|forestry +28|425|65619|4294967338|11.50|46.48|true|calvin miller|2013-03-01 09:11:58.703298|49.84|philosophy +103|409|65661|4294967476|21.29|48.16|true|priscilla underhill|2013-03-01 09:11:58.703261|21.65|undecided +57|404|65779|4294967531|93.75|21.77|false|jessica garcia|2013-03-01 09:11:58.703205|16.85|quiet hour +30|326|65721|4294967405|68.64|10.37|false|tom ellison|2013-03-01 09:11:58.703140|78.92|wind surfing +80|491|65744|4294967363|96.20|28.28|true|gabriella hernandez|2013-03-01 09:11:58.703121|9.35|geology +104|475|65744|4294967482|57.56|49.61|true|fred ellison|2013-03-01 09:11:58.703131|82.61|philosophy +121|447|65566|4294967545|10.06|23.94|true|irene carson|2013-03-01 09:11:58.703248|9.37|industrial engineering +23|333|65642|4294967533|62.80|10.38|true|sarah ovid|2013-03-01 09:11:58.703165|95.13|values clariffication +77|282|65655|4294967472|70.67|22.37|false|quinn nixon|2013-03-01 09:11:58.703281|40.42|geology +35|504|65547|4294967434|70.56|47.95|false|fred white|2013-03-01 09:11:58.703276|1.50|education +96|319|65586|4294967518|34.22|4.24|true|priscilla robinson|2013-03-01 09:11:58.703144|32.10|education +18|286|65636|4294967545|3.28|21.76|false|mike johnson|2013-03-01 09:11:58.703126|83.37|chemistry +11|478|65559|4294967524|14.12|39.50|false|luke laertes|2013-03-01 09:11:58.703303|76.45|geology +16|377|65745|4294967492|34.93|26.17|false|mike brown|2013-03-01 09:11:58.703150|28.94|debate +109|386|65546|4294967539|81.99|37.00|true|victor steinbeck|2013-03-01 09:11:58.703239|10.52|industrial engineering +53|261|65657|4294967495|75.57|49.39|true|bob ellison|2013-03-01 09:11:58.703132|94.91|zync studies +93|371|65599|4294967526|41.79|9.49|true|nick ovid|2013-03-01 09:11:58.703137|33.73|values clariffication +54|400|65757|4294967365|81.52|25.42|true|tom miller|2013-03-01 09:11:58.703284|96.60|yard duty +50|271|65715|4294967326|61.15|31.48|true|gabriella ellison|2013-03-01 09:11:58.703093|40.99|biology +69|484|65699|4294967427|45.81|10.52|true|gabriella nixon|2013-03-01 09:11:58.703190|10.16|history +118|285|65682|4294967311|91.26|23.35|false|rachel white|2013-03-01 09:11:58.703073|20.18|religion +115|412|65719|4294967381|44.98|24.24|false|bob hernandez|2013-03-01 09:11:58.703185|25.38|opthamology +100|323|65611|4294967404|25.97|18.98|true|fred robinson|2013-03-01 09:11:58.703218|28.62|xylophone band +6|428|65739|4294967497|60.45|45.89|false|oscar garcia|2013-03-01 09:11:58.703225|88.39|linguistics +-2|479|65779|4294967424|41.86|14.56|false|victor zipper|2013-03-01 09:11:58.703199|24.90|geology +24|362|65684|4294967349|57.61|0.43|true|yuri young|2013-03-01 09:11:58.703128|22.16|nap time +14|451|65695|4294967486|23.99|4.27|false|sarah nixon|2013-03-01 09:11:58.703292|91.72|chemistry +9|453|65735|4294967498|91.99|2.85|true|bob young|2013-03-01 09:11:58.703122|7.49|debate +11|353|65577|4294967435|16.87|33.33|false|irene miller|2013-03-01 09:11:58.703225|41.38|undecided +27|414|65632|4294967334|20.30|7.52|false|xavier ellison|2013-03-01 09:11:58.703150|49.10|history +13|406|65742|4294967475|47.16|41.61|false|priscilla garcia|2013-03-01 09:11:58.703112|48.18|chemistry +76|486|65584|4294967385|24.16|28.70|false|nick thompson|2013-03-01 09:11:58.703299|40.18|joggying +103|289|65757|4294967373|42.85|29.84|true|nick nixon|2013-03-01 09:11:58.703315|2.07|xylophone band +26|510|65563|4294967397|6.56|10.01|true|nick underhill|2013-03-01 09:11:58.703100|74.58|education +116|322|65651|4294967392|24.46|7.55|true|quinn hernandez|2013-03-01 09:11:58.703109|23.93|quiet hour +97|333|65776|4294967415|94.91|24.64|true|xavier quirinius|2013-03-01 09:11:58.703290|38.08|mathematics +24|336|65574|4294967333|66.07|25.42|true|ethan garcia|2013-03-01 09:11:58.703323|27.02|geology +46|396|65549|4294967482|80.31|34.38|true|holly nixon|2013-03-01 09:11:58.703312|39.69|nap time +83|348|65567|4294967421|18.14|5.71|false|xavier ichabod|2013-03-01 09:11:58.703123|48.70|joggying +77|334|65666|4294967337|40.53|23.61|true|zach laertes|2013-03-01 09:11:58.703075|20.35|kindergarten +109|258|65781|4294967519|50.36|12.74|true|holly johnson|2013-03-01 09:11:58.703228|14.39|biology +16|427|65661|4294967440|33.42|5.16|true|fred thompson|2013-03-01 09:11:58.703237|99.22|undecided +50|337|65583|4294967312|10.61|0.73|false|jessica thompson|2013-03-01 09:11:58.703307|29.40|nap time +9|416|65635|4294967448|9.30|17.50|false|holly young|2013-03-01 09:11:58.703229|88.10|undecided +64|412|65567|4294967463|6.07|38.63|true|calvin nixon|2013-03-01 09:11:58.703317|25.43|joggying +86|438|65772|4294967480|73.79|47.76|true|irene laertes|2013-03-01 09:11:58.703110|21.19|undecided +119|372|65598|4294967494|94.20|41.68|true|wendy thompson|2013-03-01 09:11:58.703171|16.27|forestry +31|499|65571|4294967505|38.00|21.84|true|wendy ovid|2013-03-01 09:11:58.703115|11.25|kindergarten +100|396|65762|4294967341|24.90|36.03|true|david ovid|2013-03-01 09:11:58.703213|41.92|geology +118|451|65541|4294967367|19.88|2.66|false|david laertes|2013-03-01 09:11:58.703289|53.92|zync studies +88|391|65726|4294967426|0.84|47.11|false|victor hernandez|2013-03-01 09:11:58.703274|2.10|history +-1|413|65549|4294967470|9.62|28.51|false|wendy hernandez|2013-03-01 09:11:58.703315|59.32|wind surfing +56|454|65536|4294967431|19.94|33.49|true|david laertes|2013-03-01 09:11:58.703284|98.42|xylophone band +32|394|65719|4294967355|82.52|7.50|true|jessica thompson|2013-03-01 09:11:58.703146|94.60|american history +67|336|65665|4294967503|33.72|36.79|true|xavier carson|2013-03-01 09:11:58.703135|19.68|philosophy +85|384|65644|4294967472|35.77|9.69|true|gabriella falkner|2013-03-01 09:11:58.703192|72.45|undecided +25|417|65776|4294967477|95.76|33.52|true|oscar falkner|2013-03-01 09:11:58.703292|17.50|industrial engineering +102|403|65593|4294967497|39.87|16.67|false|quinn hernandez|2013-03-01 09:11:58.703241|18.27|industrial engineering +35|499|65584|4294967352|88.15|7.73|false|ethan thompson|2013-03-01 09:11:58.703086|27.80|linguistics +56|362|65729|4294967505|31.92|48.47|false|yuri nixon|2013-03-01 09:11:58.703247|94.44|yard duty +101|492|65721|4294967518|98.03|13.64|false|irene xylophone|2013-03-01 09:11:58.703241|0.34|values clariffication +113|310|65766|4294967441|36.38|40.04|false|zach garcia|2013-03-01 09:11:58.703309|51.33|biology +37|275|65536|4294967491|73.64|14.18|true|david nixon|2013-03-01 09:11:58.703244|0.93|kindergarten +53|399|65686|4294967466|78.99|34.31|true|nick underhill|2013-03-01 09:11:58.703283|13.95|study skills +16|370|65631|4294967460|17.37|16.16|true|calvin xylophone|2013-03-01 09:11:58.703210|50.60|philosophy +12|257|65578|4294967308|61.60|45.27|false|victor xylophone|2013-03-01 09:11:58.703240|98.48|linguistics +44|262|65580|4294967551|74.34|24.36|false|calvin xylophone|2013-03-01 09:11:58.703097|62.98|linguistics +82|493|65701|4294967389|89.64|23.91|false|sarah johnson|2013-03-01 09:11:58.703097|85.65|linguistics +49|316|65559|4294967329|46.90|5.41|false|alice carson|2013-03-01 09:11:58.703133|34.22|joggying +112|407|65789|4294967536|89.74|30.52|false|yuri laertes|2013-03-01 09:11:58.703314|57.12|debate +91|412|65783|4294967412|9.99|38.63|false|gabriella nixon|2013-03-01 09:11:58.703214|30.18|zync studies +78|420|65680|4294967342|22.57|30.58|true|calvin thompson|2013-03-01 09:11:58.703238|27.58|values clariffication +88|324|65690|4294967418|18.32|33.83|false|alice xylophone|2013-03-01 09:11:58.703307|3.04|quiet hour +107|294|65688|4294967412|85.80|36.83|true|katie xylophone|2013-03-01 09:11:58.703301|78.07|industrial engineering +16|301|65589|4294967380|84.36|16.77|false|yuri hernandez|2013-03-01 09:11:58.703226|53.39|geology +120|423|65624|4294967477|13.17|17.66|true|sarah davidson|2013-03-01 09:11:58.703217|16.34|american history +73|374|65600|4294967313|65.86|20.33|true|quinn falkner|2013-03-01 09:11:58.703132|34.70|study skills +10|492|65639|4294967442|9.16|32.19|true|victor zipper|2013-03-01 09:11:58.703218|56.83|xylophone band +12|274|65724|4294967492|33.51|24.13|true|holly young|2013-03-01 09:11:58.703076|75.21|religion +32|331|65618|4294967314|13.97|34.16|false|ulysses davidson|2013-03-01 09:11:58.703278|26.57|values clariffication +42|280|65752|4294967478|92.96|7.45|false|katie king|2013-03-01 09:11:58.703070|66.80|geology +26|383|65640|4294967490|70.41|11.31|false|calvin johnson|2013-03-01 09:11:58.703190|64.14|quiet hour +91|421|65572|4294967333|10.71|19.30|false|holly polk|2013-03-01 09:11:58.703116|41.87|zync studies +64|385|65614|4294967447|63.21|43.07|true|nick zipper|2013-03-01 09:11:58.703135|86.10|chemistry +14|273|65615|4294967419|41.10|25.73|true|fred miller|2013-03-01 09:11:58.703112|28.00|quiet hour +103|466|65644|4294967501|22.44|18.32|true|irene white|2013-03-01 09:11:58.703268|49.90|wind surfing +116|360|65715|4294967331|70.37|18.13|true|mike ellison|2013-03-01 09:11:58.703255|35.32|joggying +28|491|65569|4294967486|24.77|5.62|true|rachel ichabod|2013-03-01 09:11:58.703168|43.41|mathematics +24|418|65693|4294967544|85.51|6.74|false|sarah thompson|2013-03-01 09:11:58.703140|93.65|american history +87|280|65783|4294967467|91.47|11.40|true|quinn falkner|2013-03-01 09:11:58.703105|79.48|debate +111|268|65654|4294967418|37.92|31.63|false|nick brown|2013-03-01 09:11:58.703260|15.75|yard duty +62|503|65756|4294967420|68.06|46.84|true|ethan falkner|2013-03-01 09:11:58.703137|68.80|study skills +114|370|65691|4294967337|7.34|48.34|true|jessica brown|2013-03-01 09:11:58.703184|18.88|nap time +-2|271|65717|4294967444|79.01|1.40|true|jessica hernandez|2013-03-01 09:11:58.703217|86.40|wind surfing +120|340|65735|4294967482|77.89|37.64|true|ulysses ichabod|2013-03-01 09:11:58.703272|89.62|wind surfing +62|440|65607|4294967334|81.02|40.77|true|victor quirinius|2013-03-01 09:11:58.703250|35.77|religion +8|292|65696|4294967343|16.83|48.40|false|gabriella underhill|2013-03-01 09:11:58.703214|26.78|xylophone band +19|334|65719|4294967465|90.49|8.62|false|david nixon|2013-03-01 09:11:58.703259|50.25|forestry +45|294|65751|4294967415|97.12|8.86|false|ulysses quirinius|2013-03-01 09:11:58.703164|43.65|philosophy +15|309|65663|4294967441|34.64|15.57|true|sarah young|2013-03-01 09:11:58.703314|54.02|forestry +4|445|65567|4294967458|27.17|35.83|true|wendy young|2013-03-01 09:11:58.703155|54.43|xylophone band +20|417|65775|4294967534|71.61|44.76|false|bob carson|2013-03-01 09:11:58.703281|33.99|american history +77|323|65770|4294967468|45.43|32.01|true|quinn polk|2013-03-01 09:11:58.703287|9.84|nap time +117|337|65732|4294967322|42.50|42.07|false|nick ichabod|2013-03-01 09:11:58.703119|50.76|yard duty +64|410|65687|4294967362|3.68|39.84|false|mike brown|2013-03-01 09:11:58.703142|84.44|undecided +79|400|65707|4294967410|58.00|39.20|false|ethan zipper|2013-03-01 09:11:58.703237|39.47|forestry +23|356|65648|4294967362|0.67|15.80|true|xavier garcia|2013-03-01 09:11:58.703290|51.78|joggying +23|410|65749|4294967483|83.39|30.81|true|bob falkner|2013-03-01 09:11:58.703245|21.55|religion +106|449|65676|4294967332|37.82|1.47|false|victor brown|2013-03-01 09:11:58.703309|14.94|yard duty +93|405|65785|4294967514|69.32|41.57|false|david brown|2013-03-01 09:11:58.703282|65.35|biology +11|462|65560|4294967296|50.33|47.48|true|luke robinson|2013-03-01 09:11:58.703229|87.60|topology +39|394|65648|4294967396|80.75|26.19|true|bob falkner|2013-03-01 09:11:58.703183|97.34|quiet hour +66|449|65642|4294967484|20.67|43.38|false|ethan white|2013-03-01 09:11:58.703242|45.45|quiet hour +121|427|65587|4294967471|3.50|44.90|false|xavier xylophone|2013-03-01 09:11:58.703320|76.13|history +50|405|65669|4294967377|6.89|20.55|true|sarah johnson|2013-03-01 09:11:58.703267|89.60|american history +57|290|65736|4294967343|56.94|47.86|false|oscar davidson|2013-03-01 09:11:58.703231|99.18|quiet hour +10|378|65656|4294967387|15.62|26.68|true|gabriella quirinius|2013-03-01 09:11:58.703081|81.67|industrial engineering +12|298|65580|4294967338|11.94|36.19|false|rachel robinson|2013-03-01 09:11:58.703176|16.53|wind surfing +81|277|65631|4294967467|18.87|18.55|true|holly ichabod|2013-03-01 09:11:58.703239|26.05|nap time +16|472|65554|4294967350|5.95|42.73|true|fred thompson|2013-03-01 09:11:58.703108|76.92|wind surfing +50|376|65608|4294967543|54.66|36.02|true|fred steinbeck|2013-03-01 09:11:58.703211|86.70|study skills +18|295|65708|4294967381|61.76|43.73|true|katie ovid|2013-03-01 09:11:58.703287|30.06|xylophone band +111|351|65734|4294967434|64.85|2.36|false|katie johnson|2013-03-01 09:11:58.703121|35.05|zync studies +68|319|65652|4294967318|52.73|23.11|false|nick steinbeck|2013-03-01 09:11:58.703104|53.65|mathematics +36|436|65597|4294967395|8.03|46.67|true|nick brown|2013-03-01 09:11:58.703109|31.54|values clariffication +124|448|65594|4294967492|15.65|12.99|true|wendy robinson|2013-03-01 09:11:58.703296|65.82|geology +87|423|65649|4294967348|42.41|11.05|true|david davidson|2013-03-01 09:11:58.703234|46.09|wind surfing +46|495|65779|4294967402|92.64|28.98|true|nick van buren|2013-03-01 09:11:58.703135|22.14|geology +11|505|65572|4294967370|1.85|39.68|true|luke johnson|2013-03-01 09:11:58.703325|22.60|xylophone band +91|287|65642|4294967351|85.43|5.50|true|wendy brown|2013-03-01 09:11:58.703181|82.48|opthamology +66|489|65786|4294967505|89.25|48.66|false|irene polk|2013-03-01 09:11:58.703320|89.14|chemistry +86|399|65598|4294967498|29.31|15.11|false|priscilla nixon|2013-03-01 09:11:58.703092|64.84|undecided +21|311|65777|4294967430|83.19|44.06|false|calvin king|2013-03-01 09:11:58.703118|8.84|nap time +80|261|65566|4294967523|40.03|27.43|false|bob hernandez|2013-03-01 09:11:58.703172|83.46|kindergarten +10|342|65585|4294967426|98.51|41.94|true|jessica ellison|2013-03-01 09:11:58.703272|56.90|opthamology +7|256|65627|4294967318|54.23|25.97|false|ulysses white|2013-03-01 09:11:58.703310|93.97|forestry +105|366|65555|4294967481|57.38|46.92|true|fred zipper|2013-03-01 09:11:58.703202|96.48|history +70|304|65665|4294967369|73.89|7.30|true|priscilla king|2013-03-01 09:11:58.703091|42.26|religion +73|318|65630|4294967414|15.37|16.45|true|luke nixon|2013-03-01 09:11:58.703249|10.04|quiet hour +120|269|65698|4294967326|36.56|34.19|true|bob allen|2013-03-01 09:11:58.703292|33.11|values clariffication +11|288|65546|4294967351|47.05|25.50|false|xavier van buren|2013-03-01 09:11:58.703197|23.82|philosophy +42|504|65695|4294967484|66.41|4.63|true|mike ellison|2013-03-01 09:11:58.703144|1.97|chemistry +29|393|65747|4294967366|27.20|0.98|false|david allen|2013-03-01 09:11:58.703293|41.05|linguistics +10|297|65676|4294967531|16.36|30.48|false|tom steinbeck|2013-03-01 09:11:58.703288|86.85|xylophone band +25|344|65554|4294967458|47.52|17.21|true|ulysses king|2013-03-01 09:11:58.703116|73.98|history +111|486|65767|4294967314|88.60|43.84|true|mike nixon|2013-03-01 09:11:58.703098|57.89|nap time +36|495|65616|4294967545|84.11|32.88|true|ulysses miller|2013-03-01 09:11:58.703089|36.61|nap time +46|279|65589|4294967353|19.73|15.74|true|sarah brown|2013-03-01 09:11:58.703139|69.89|wind surfing +107|450|65576|4294967509|78.19|6.31|true|luke van buren|2013-03-01 09:11:58.703202|28.33|xylophone band +81|300|65778|4294967321|37.54|30.28|true|oscar underhill|2013-03-01 09:11:58.703253|57.25|undecided +39|391|65777|4294967431|12.29|49.03|true|quinn underhill|2013-03-01 09:11:58.703152|3.98|debate +66|389|65708|4294967531|39.12|8.32|false|tom zipper|2013-03-01 09:11:58.703113|92.17|american history +60|344|65712|4294967535|54.49|18.69|true|irene garcia|2013-03-01 09:11:58.703136|88.30|forestry +94|313|65643|4294967502|4.63|17.67|true|alice white|2013-03-01 09:11:58.703271|75.10|values clariffication +84|355|65729|4294967485|7.06|10.12|true|ethan quirinius|2013-03-01 09:11:58.703107|51.40|study skills +59|495|65626|4294967426|47.27|42.14|true|gabriella steinbeck|2013-03-01 09:11:58.703075|21.44|forestry +34|426|65664|4294967466|30.07|28.12|false|calvin van buren|2013-03-01 09:11:58.703251|18.30|yard duty +-2|472|65765|4294967401|8.56|8.90|false|zach zipper|2013-03-01 09:11:58.703149|50.26|quiet hour +42|313|65584|4294967504|17.77|18.16|true|holly davidson|2013-03-01 09:11:58.703306|37.98|nap time +30|363|65578|4294967531|38.03|43.65|true|tom white|2013-03-01 09:11:58.703298|69.85|debate +59|456|65567|4294967366|83.76|40.48|false|ethan carson|2013-03-01 09:11:58.703269|87.52|zync studies +73|399|65789|4294967493|48.59|34.31|true|sarah king|2013-03-01 09:11:58.703313|90.29|education +83|365|65769|4294967314|61.75|49.49|false|alice laertes|2013-03-01 09:11:58.703293|33.07|debate +101|279|65586|4294967324|12.53|38.30|true|wendy hernandez|2013-03-01 09:11:58.703141|75.87|study skills +35|315|65647|4294967473|50.95|34.51|false|luke xylophone|2013-03-01 09:11:58.703113|13.27|quiet hour +13|303|65572|4294967479|59.37|14.55|true|sarah king|2013-03-01 09:11:58.703114|79.60|zync studies +49|488|65769|4294967422|29.29|38.58|false|xavier ovid|2013-03-01 09:11:58.703229|50.59|geology +21|342|65552|4294967400|53.92|49.51|false|fred steinbeck|2013-03-01 09:11:58.703317|78.24|values clariffication +65|438|65573|4294967486|24.02|0.39|true|oscar nixon|2013-03-01 09:11:58.703227|33.77|linguistics +39|459|65746|4294967375|72.84|27.19|true|bob falkner|2013-03-01 09:11:58.703276|49.54|values clariffication +47|403|65727|4294967334|66.88|9.80|false|oscar falkner|2013-03-01 09:11:58.703201|48.29|linguistics +99|286|65592|4294967412|59.24|15.86|false|fred thompson|2013-03-01 09:11:58.703254|3.27|opthamology +86|345|65712|4294967441|71.35|29.72|true|xavier carson|2013-03-01 09:11:58.703203|62.81|quiet hour +82|387|65562|4294967327|18.25|8.89|true|sarah steinbeck|2013-03-01 09:11:58.703278|94.58|education +83|368|65620|4294967469|50.71|17.23|true|victor xylophone|2013-03-01 09:11:58.703307|7.46|joggying +93|498|65750|4294967347|21.56|14.41|false|holly white|2013-03-01 09:11:58.703240|12.07|mathematics +12|431|65658|4294967437|49.66|23.29|false|ethan johnson|2013-03-01 09:11:58.703196|4.43|values clariffication +60|479|65749|4294967306|16.11|37.60|false|wendy brown|2013-03-01 09:11:58.703162|43.42|yard duty +96|398|65719|4294967380|87.64|15.01|false|yuri nixon|2013-03-01 09:11:58.703175|33.07|linguistics +76|341|65565|4294967393|80.91|40.96|false|victor ovid|2013-03-01 09:11:58.703228|79.13|opthamology +55|448|65716|4294967402|9.11|45.24|false|victor king|2013-03-01 09:11:58.703188|29.92|mathematics +88|425|65752|4294967335|46.88|1.57|true|david garcia|2013-03-01 09:11:58.703196|19.17|quiet hour +80|366|65718|4294967372|5.71|43.14|false|bob quirinius|2013-03-01 09:11:58.703168|39.71|xylophone band +119|468|65560|4294967390|87.23|10.09|false|ethan ichabod|2013-03-01 09:11:58.703268|98.76|undecided +73|492|65536|4294967365|15.92|14.83|true|tom steinbeck|2013-03-01 09:11:58.703200|45.25|american history +118|368|65777|4294967491|0.36|24.39|false|quinn brown|2013-03-01 09:11:58.703077|47.45|quiet hour +33|389|65608|4294967378|21.19|26.14|false|wendy falkner|2013-03-01 09:11:58.703221|13.58|opthamology +55|490|65614|4294967379|43.91|0.75|false|wendy ovid|2013-03-01 09:11:58.703193|40.91|education +96|352|65708|4294967507|42.03|39.55|true|katie robinson|2013-03-01 09:11:58.703218|1.38|values clariffication +76|310|65695|4294967441|36.59|28.12|false|sarah king|2013-03-01 09:11:58.703186|96.52|history +16|492|65562|4294967497|94.55|44.65|false|alice miller|2013-03-01 09:11:58.703251|65.66|geology +85|352|65750|4294967311|24.97|35.42|false|jessica white|2013-03-01 09:11:58.703081|2.80|topology +62|337|65644|4294967297|96.48|5.80|true|fred brown|2013-03-01 09:11:58.703227|25.39|opthamology +79|502|65717|4294967437|14.02|28.63|false|oscar young|2013-03-01 09:11:58.703303|58.28|nap time +-3|386|65716|4294967496|12.12|2.37|false|zach thompson|2013-03-01 09:11:58.703252|16.39|linguistics +81|496|65719|4294967313|84.54|43.42|true|jessica hernandez|2013-03-01 09:11:58.703255|27.86|geology +67|351|65701|4294967461|98.04|5.78|true|calvin allen|2013-03-01 09:11:58.703298|75.04|education +61|496|65655|4294967327|66.05|20.13|false|oscar zipper|2013-03-01 09:11:58.703226|4.28|history +62|507|65550|4294967529|55.83|23.26|true|ulysses ellison|2013-03-01 09:11:58.703308|77.07|american history +85|331|65689|4294967441|1.79|21.43|true|irene miller|2013-03-01 09:11:58.703183|88.46|undecided +4|453|65738|4294967327|13.77|41.91|true|victor johnson|2013-03-01 09:11:58.703210|44.51|religion +110|500|65729|4294967437|31.52|18.15|false|victor steinbeck|2013-03-01 09:11:58.703125|75.58|study skills +108|416|65683|4294967486|48.01|26.50|false|zach zipper|2013-03-01 09:11:58.703293|18.18|debate +46|457|65591|4294967440|29.80|16.92|false|rachel polk|2013-03-01 09:11:58.703287|53.97|debate +82|304|65625|4294967548|13.04|12.38|false|katie davidson|2013-03-01 09:11:58.703216|74.11|geology +25|285|65629|4294967489|70.23|42.83|true|victor steinbeck|2013-03-01 09:11:58.703090|90.56|biology +62|463|65757|4294967352|83.35|39.27|false|rachel ichabod|2013-03-01 09:11:58.703129|39.86|geology +82|344|65555|4294967363|41.65|22.43|true|bob white|2013-03-01 09:11:58.703245|90.56|biology +14|364|65647|4294967545|11.75|44.11|false|ethan falkner|2013-03-01 09:11:58.703266|41.68|education +92|430|65683|4294967536|19.20|36.90|false|zach thompson|2013-03-01 09:11:58.703155|79.60|mathematics +28|364|65704|4294967409|85.16|19.57|true|nick allen|2013-03-01 09:11:58.703264|84.88|industrial engineering +11|389|65612|4294967380|92.09|31.35|false|katie robinson|2013-03-01 09:11:58.703251|64.22|linguistics +88|321|65562|4294967301|6.20|1.85|true|nick ichabod|2013-03-01 09:11:58.703182|38.33|xylophone band +-2|265|65674|4294967480|70.67|25.08|true|fred zipper|2013-03-01 09:11:58.703122|80.63|religion +79|466|65752|4294967451|48.07|24.29|true|gabriella carson|2013-03-01 09:11:58.703272|59.18|kindergarten +12|427|65717|4294967507|38.26|18.34|true|xavier xylophone|2013-03-01 09:11:58.703211|43.58|wind surfing +64|300|65733|4294967322|21.34|14.46|true|sarah underhill|2013-03-01 09:11:58.703286|56.38|education +111|490|65572|4294967454|77.51|34.31|false|alice ellison|2013-03-01 09:11:58.703099|54.51|opthamology +69|264|65656|4294967304|54.24|19.82|false|mike xylophone|2013-03-01 09:11:58.703236|50.31|topology +75|413|65647|4294967519|87.63|19.88|true|sarah allen|2013-03-01 09:11:58.703138|23.93|topology +61|454|65645|4294967301|22.95|22.43|true|gabriella hernandez|2013-03-01 09:11:58.703233|42.14|yard duty +60|354|65607|4294967341|17.12|6.70|true|calvin robinson|2013-03-01 09:11:58.703173|4.31|quiet hour +119|303|65568|4294967435|75.14|45.31|false|yuri polk|2013-03-01 09:11:58.703143|59.03|nap time +38|343|65719|4294967367|66.73|3.09|false|mike garcia|2013-03-01 09:11:58.703193|18.90|opthamology +85|280|65671|4294967419|68.39|12.40|true|nick xylophone|2013-03-01 09:11:58.703284|91.33|religion +74|320|65754|4294967308|69.52|49.39|false|rachel zipper|2013-03-01 09:11:58.703258|7.33|topology +54|385|65573|4294967467|96.15|0.84|false|fred davidson|2013-03-01 09:11:58.703263|84.20|chemistry +105|415|65706|4294967486|28.82|23.39|true|yuri falkner|2013-03-01 09:11:58.703170|91.41|kindergarten +123|282|65725|4294967326|95.49|17.82|false|victor laertes|2013-03-01 09:11:58.703088|89.80|biology +59|473|65755|4294967478|90.51|28.26|false|mike king|2013-03-01 09:11:58.703198|94.03|philosophy +34|339|65652|4294967397|25.96|45.70|true|yuri robinson|2013-03-01 09:11:58.703193|26.31|debate +-2|390|65563|4294967390|44.04|34.14|true|sarah van buren|2013-03-01 09:11:58.703319|20.23|american history +78|300|65757|4294967352|74.24|26.64|false|katie davidson|2013-03-01 09:11:58.703102|27.38|forestry +28|363|65617|4294967508|85.84|24.83|false|rachel davidson|2013-03-01 09:11:58.703278|32.65|mathematics +99|481|65554|4294967413|77.90|4.03|true|luke young|2013-03-01 09:11:58.703173|99.76|values clariffication +31|321|65760|4294967447|40.32|23.71|false|rachel ovid|2013-03-01 09:11:58.703127|23.74|forestry +-2|315|65726|4294967393|70.87|49.91|false|yuri ichabod|2013-03-01 09:11:58.703076|37.48|education +3|388|65551|4294967369|17.17|38.13|false|rachel nixon|2013-03-01 09:11:58.703306|3.69|zync studies +17|495|65670|4294967397|35.41|37.90|false|quinn nixon|2013-03-01 09:11:58.703171|69.29|philosophy +18|466|65561|4294967484|88.35|18.24|true|alice polk|2013-03-01 09:11:58.703134|87.29|education +57|485|65755|4294967379|98.86|17.49|false|holly underhill|2013-03-01 09:11:58.703125|40.28|chemistry +103|296|65656|4294967406|95.75|25.92|true|alice ovid|2013-03-01 09:11:58.703093|73.06|linguistics +47|374|65735|4294967507|38.59|10.28|false|tom van buren|2013-03-01 09:11:58.703225|50.60|study skills +4|350|65615|4294967509|49.09|0.51|true|holly hernandez|2013-03-01 09:11:58.703206|65.77|wind surfing +56|474|65776|4294967448|56.66|29.48|true|rachel laertes|2013-03-01 09:11:58.703207|92.22|industrial engineering +51|411|65734|4294967331|44.52|42.05|false|tom underhill|2013-03-01 09:11:58.703149|98.08|nap time +109|491|65619|4294967485|54.10|22.84|true|gabriella thompson|2013-03-01 09:11:58.703221|40.56|zync studies +74|327|65678|4294967402|27.10|8.18|false|rachel ellison|2013-03-01 09:11:58.703251|57.69|yard duty +-2|305|65767|4294967529|76.54|4.72|true|calvin xylophone|2013-03-01 09:11:58.703083|69.43|quiet hour +12|283|65666|4294967454|34.77|39.37|false|gabriella ellison|2013-03-01 09:11:58.703160|25.17|linguistics +57|472|65694|4294967477|15.43|25.96|false|yuri king|2013-03-01 09:11:58.703175|67.18|debate +100|342|65724|4294967391|98.08|36.79|true|nick xylophone|2013-03-01 09:11:58.703234|72.39|topology +32|399|65734|4294967375|34.25|29.96|false|priscilla allen|2013-03-01 09:11:58.703321|37.97|opthamology +22|487|65575|4294967333|27.92|19.97|false|sarah thompson|2013-03-01 09:11:58.703089|63.17|chemistry +58|470|65536|4294967375|45.66|11.16|false|katie ellison|2013-03-01 09:11:58.703077|74.47|geology +73|395|65751|4294967335|3.98|35.78|true|alice polk|2013-03-01 09:11:58.703245|36.93|values clariffication +-3|315|65671|4294967412|94.22|25.96|true|oscar johnson|2013-03-01 09:11:58.703133|88.55|nap time +99|324|65580|4294967323|78.50|27.04|false|quinn robinson|2013-03-01 09:11:58.703316|41.51|american history +95|290|65717|4294967342|99.88|8.08|false|sarah ovid|2013-03-01 09:11:58.703243|82.69|biology +11|355|65762|4294967517|33.96|48.02|true|xavier zipper|2013-03-01 09:11:58.703164|13.88|chemistry +96|407|65783|4294967463|89.64|9.19|true|zach laertes|2013-03-01 09:11:58.703166|38.46|xylophone band +37|399|65760|4294967318|79.01|35.35|true|luke steinbeck|2013-03-01 09:11:58.703150|86.93|biology +102|336|65727|4294967428|89.22|21.22|true|quinn carson|2013-03-01 09:11:58.703087|88.90|industrial engineering +35|432|65701|4294967304|34.73|5.96|true|jessica falkner|2013-03-01 09:11:58.703313|26.77|linguistics +65|392|65553|4294967431|62.35|40.49|false|wendy thompson|2013-03-01 09:11:58.703281|28.41|opthamology +16|366|65756|4294967513|52.76|9.48|false|katie miller|2013-03-01 09:11:58.703216|77.97|kindergarten +74|488|65694|4294967528|73.85|3.80|false|oscar falkner|2013-03-01 09:11:58.703228|98.35|values clariffication +66|329|65676|4294967319|18.46|9.95|true|david allen|2013-03-01 09:11:58.703200|14.55|topology +110|444|65645|4294967392|11.86|14.13|true|yuri johnson|2013-03-01 09:11:58.703304|67.14|linguistics +45|420|65787|4294967397|25.24|11.80|true|oscar nixon|2013-03-01 09:11:58.703243|61.00|zync studies +54|487|65591|4294967500|36.84|28.73|false|oscar ichabod|2013-03-01 09:11:58.703073|1.65|geology +27|305|65603|4294967530|61.72|26.95|true|irene laertes|2013-03-01 09:11:58.703212|61.59|nap time +115|503|65724|4294967441|28.33|3.74|true|calvin king|2013-03-01 09:11:58.703310|1.36|undecided +107|315|65550|4294967441|30.16|4.43|true|gabriella ellison|2013-03-01 09:11:58.703195|37.02|nap time +48|358|65633|4294967303|76.01|29.13|false|xavier carson|2013-03-01 09:11:58.703269|38.24|undecided +82|508|65765|4294967516|13.73|9.98|true|bob brown|2013-03-01 09:11:58.703162|74.60|geology +93|450|65632|4294967470|8.96|43.67|true|rachel robinson|2013-03-01 09:11:58.703124|13.94|xylophone band +89|498|65739|4294967499|30.83|2.11|false|oscar white|2013-03-01 09:11:58.703227|52.95|forestry +85|502|65776|4294967350|76.12|43.33|true|oscar underhill|2013-03-01 09:11:58.703272|11.14|debate +70|404|65747|4294967351|57.41|1.67|false|zach robinson|2013-03-01 09:11:58.703175|3.16|religion +108|279|65696|4294967320|82.52|37.07|true|katie johnson|2013-03-01 09:11:58.703075|77.92|chemistry +32|294|65695|4294967538|62.87|45.18|false|jessica miller|2013-03-01 09:11:58.703123|56.65|undecided +27|355|65588|4294967521|48.10|11.93|false|fred garcia|2013-03-01 09:11:58.703267|43.47|mathematics +39|418|65670|4294967296|91.41|47.22|true|calvin young|2013-03-01 09:11:58.703265|25.10|industrial engineering +18|258|65551|4294967366|91.56|44.35|true|bob falkner|2013-03-01 09:11:58.703271|19.14|philosophy +101|420|65644|4294967408|29.00|24.68|false|irene johnson|2013-03-01 09:11:58.703215|99.37|linguistics +60|500|65604|4294967472|47.85|36.76|false|tom quirinius|2013-03-01 09:11:58.703126|91.67|philosophy +57|313|65537|4294967419|26.62|5.16|false|mike garcia|2013-03-01 09:11:58.703112|43.45|american history +11|333|65553|4294967550|6.90|18.23|true|fred ichabod|2013-03-01 09:11:58.703312|65.30|zync studies +100|285|65632|4294967302|1.84|3.76|true|tom robinson|2013-03-01 09:11:58.703224|94.95|joggying +105|341|65670|4294967324|11.40|24.18|false|oscar nixon|2013-03-01 09:11:58.703178|55.94|study skills +2|396|65705|4294967527|15.53|6.16|false|xavier miller|2013-03-01 09:11:58.703122|66.23|chemistry +47|399|65703|4294967346|74.05|14.18|true|sarah zipper|2013-03-01 09:11:58.703137|84.02|kindergarten +58|299|65623|4294967536|15.56|42.31|true|alice garcia|2013-03-01 09:11:58.703204|69.48|yard duty +62|453|65624|4294967394|68.71|47.89|false|mike falkner|2013-03-01 09:11:58.703163|53.02|joggying +19|464|65703|4294967364|57.60|23.26|true|katie ovid|2013-03-01 09:11:58.703298|65.75|biology +25|354|65766|4294967364|16.19|17.26|false|alice robinson|2013-03-01 09:11:58.703239|37.84|chemistry +101|281|65677|4294967368|52.23|44.11|false|oscar davidson|2013-03-01 09:11:58.703137|60.48|chemistry +77|311|65732|4294967469|23.22|28.42|false|ethan xylophone|2013-03-01 09:11:58.703264|41.43|kindergarten +75|395|65570|4294967332|49.32|28.96|true|gabriella quirinius|2013-03-01 09:11:58.703179|38.74|education +103|377|65732|4294967523|43.23|39.39|false|ulysses king|2013-03-01 09:11:58.703268|8.64|american history +44|492|65677|4294967519|53.78|8.39|false|rachel white|2013-03-01 09:11:58.703207|49.67|study skills +112|378|65689|4294967474|9.09|39.48|true|holly garcia|2013-03-01 09:11:58.703200|14.64|yard duty +29|504|65772|4294967519|71.99|27.30|true|victor xylophone|2013-03-01 09:11:58.703077|13.94|topology +5|480|65567|4294967498|41.66|2.89|true|bob garcia|2013-03-01 09:11:58.703265|69.47|opthamology +70|327|65681|4294967529|15.29|30.06|false|mike quirinius|2013-03-01 09:11:58.703203|38.23|zync studies +15|410|65642|4294967355|63.52|13.55|true|jessica quirinius|2013-03-01 09:11:58.703148|2.20|chemistry +106|313|65663|4294967464|35.80|11.45|true|victor xylophone|2013-03-01 09:11:58.703095|78.55|wind surfing +4|427|65570|4294967301|44.69|39.27|false|gabriella hernandez|2013-03-01 09:11:58.703103|6.39|education +33|319|65753|4294967349|40.67|5.48|true|ulysses robinson|2013-03-01 09:11:58.703224|98.53|industrial engineering +47|273|65592|4294967391|75.98|31.67|true|david carson|2013-03-01 09:11:58.703119|44.17|history +63|391|65618|4294967387|23.53|10.03|true|sarah underhill|2013-03-01 09:11:58.703100|19.99|yard duty +35|457|65655|4294967447|7.44|44.44|false|zach laertes|2013-03-01 09:11:58.703219|18.04|joggying +100|307|65692|4294967499|66.45|13.19|false|tom xylophone|2013-03-01 09:11:58.703225|61.38|american history +74|372|65748|4294967385|1.60|44.86|false|luke ellison|2013-03-01 09:11:58.703139|29.06|history +76|415|65770|4294967296|2.14|47.61|false|ulysses ichabod|2013-03-01 09:11:58.703325|4.60|industrial engineering +90|476|65768|4294967444|36.62|43.90|false|sarah ellison|2013-03-01 09:11:58.703111|45.70|debate +92|303|65695|4294967343|84.51|1.23|true|priscilla zipper|2013-03-01 09:11:58.703196|22.71|religion +4|433|65590|4294967364|50.90|37.26|true|jessica garcia|2013-03-01 09:11:58.703299|10.50|industrial engineering +15|510|65596|4294967394|95.69|7.58|false|holly allen|2013-03-01 09:11:58.703283|39.61|study skills +67|298|65621|4294967323|49.45|34.30|true|yuri allen|2013-03-01 09:11:58.703122|11.66|linguistics +24|387|65684|4294967461|19.83|25.63|false|rachel van buren|2013-03-01 09:11:58.703192|78.73|zync studies +107|286|65627|4294967341|92.77|3.26|true|zach garcia|2013-03-01 09:11:58.703084|42.88|nap time +103|467|65586|4294967337|37.95|47.86|true|calvin miller|2013-03-01 09:11:58.703133|89.92|joggying +109|290|65573|4294967474|61.32|30.01|true|bob van buren|2013-03-01 09:11:58.703280|68.49|education +51|391|65738|4294967329|43.75|46.72|true|wendy miller|2013-03-01 09:11:58.703315|23.48|nap time +43|465|65642|4294967357|32.98|23.75|false|wendy steinbeck|2013-03-01 09:11:58.703266|1.22|quiet hour +49|415|65642|4294967395|48.03|32.67|false|sarah white|2013-03-01 09:11:58.703272|46.21|biology +77|260|65700|4294967545|26.90|5.84|false|zach young|2013-03-01 09:11:58.703325|87.00|undecided +75|439|65754|4294967519|29.03|2.70|true|xavier quirinius|2013-03-01 09:11:58.703278|67.83|mathematics +37|277|65580|4294967538|55.27|38.84|true|gabriella nixon|2013-03-01 09:11:58.703232|75.48|debate +109|496|65683|4294967404|97.35|5.85|true|ethan xylophone|2013-03-01 09:11:58.703090|65.82|philosophy +123|407|65764|4294967485|84.22|39.79|false|bob king|2013-03-01 09:11:58.703196|35.73|geology +103|422|65609|4294967476|77.21|42.21|true|wendy falkner|2013-03-01 09:11:58.703294|63.90|wind surfing +115|490|65557|4294967461|37.07|27.10|false|ulysses underhill|2013-03-01 09:11:58.703324|54.55|american history +81|436|65767|4294967437|61.46|43.83|false|tom ichabod|2013-03-01 09:11:58.703232|32.92|wind surfing +55|274|65555|4294967501|76.37|21.85|true|yuri miller|2013-03-01 09:11:58.703095|29.49|linguistics +8|368|65633|4294967453|74.29|10.41|false|priscilla allen|2013-03-01 09:11:58.703243|43.80|philosophy +48|494|65649|4294967512|77.11|13.67|false|tom davidson|2013-03-01 09:11:58.703131|40.12|xylophone band +122|259|65714|4294967513|74.85|38.93|false|rachel xylophone|2013-03-01 09:11:58.703230|9.39|geology +62|407|65647|4294967338|50.46|7.69|true|jessica allen|2013-03-01 09:11:58.703075|49.89|xylophone band +101|416|65698|4294967327|55.64|45.18|true|quinn nixon|2013-03-01 09:11:58.703271|6.82|debate +60|276|65651|4294967551|96.88|42.31|true|priscilla quirinius|2013-03-01 09:11:58.703131|55.75|geology +117|376|65774|4294967320|32.31|25.85|true|ulysses ovid|2013-03-01 09:11:58.703308|72.97|undecided +-1|484|65587|4294967410|58.42|8.47|false|bob white|2013-03-01 09:11:58.703161|65.50|debate +88|454|65694|4294967417|85.88|2.93|false|xavier ellison|2013-03-01 09:11:58.703146|13.90|industrial engineering +2|261|65587|4294967501|3.10|8.82|true|zach king|2013-03-01 09:11:58.703314|41.30|history +120|343|65610|4294967491|5.09|27.28|false|bob ovid|2013-03-01 09:11:58.703139|64.12|biology +28|284|65587|4294967448|9.14|20.28|true|irene quirinius|2013-03-01 09:11:58.703319|4.33|biology +46|289|65563|4294967493|84.61|45.85|true|luke johnson|2013-03-01 09:11:58.703155|73.48|forestry +92|290|65754|4294967351|23.34|15.70|true|ulysses garcia|2013-03-01 09:11:58.703248|47.94|religion +95|303|65604|4294967395|65.21|6.32|true|nick brown|2013-03-01 09:11:58.703150|88.11|study skills +121|466|65537|4294967374|46.87|9.72|false|wendy garcia|2013-03-01 09:11:58.703141|56.52|debate +39|288|65737|4294967410|53.95|34.84|true|calvin young|2013-03-01 09:11:58.703214|27.71|education +64|357|65677|4294967458|51.88|20.69|true|nick young|2013-03-01 09:11:58.703222|74.09|philosophy +117|434|65553|4294967514|36.40|26.64|true|fred zipper|2013-03-01 09:11:58.703324|43.77|xylophone band +-1|429|65739|4294967472|55.04|34.07|false|victor brown|2013-03-01 09:11:58.703229|9.71|forestry +33|415|65781|4294967503|88.66|35.06|false|oscar nixon|2013-03-01 09:11:58.703109|72.87|education +24|440|65749|4294967307|67.89|13.96|false|rachel johnson|2013-03-01 09:11:58.703127|7.37|topology +82|486|65672|4294967394|14.82|33.28|true|irene falkner|2013-03-01 09:11:58.703184|75.40|zync studies +41|336|65618|4294967325|10.59|37.40|true|katie polk|2013-03-01 09:11:58.703177|45.21|religion +104|285|65781|4294967429|74.64|3.34|false|alice laertes|2013-03-01 09:11:58.703234|73.16|wind surfing +55|360|65684|4294967310|13.08|21.56|true|calvin young|2013-03-01 09:11:58.703192|62.92|undecided +56|505|65615|4294967374|28.17|29.67|true|mike zipper|2013-03-01 09:11:58.703147|69.41|study skills +35|363|65708|4294967358|37.99|26.35|true|mike carson|2013-03-01 09:11:58.703104|47.25|quiet hour +114|341|65602|4294967344|6.88|39.44|true|ethan king|2013-03-01 09:11:58.703229|51.76|xylophone band +2|470|65735|4294967314|40.93|44.99|true|david polk|2013-03-01 09:11:58.703096|33.22|wind surfing +92|340|65779|4294967513|26.36|39.07|false|gabriella steinbeck|2013-03-01 09:11:58.703135|42.04|chemistry +112|272|65701|4294967481|37.89|41.60|false|nick king|2013-03-01 09:11:58.703267|3.47|philosophy +71|509|65661|4294967425|82.49|45.28|false|katie garcia|2013-03-01 09:11:58.703138|68.10|american history +13|401|65689|4294967321|74.53|9.41|false|alice johnson|2013-03-01 09:11:58.703204|89.77|biology +70|439|65712|4294967431|22.10|0.94|false|luke young|2013-03-01 09:11:58.703107|89.71|american history +12|437|65789|4294967306|89.79|4.07|false|priscilla king|2013-03-01 09:11:58.703199|99.04|mathematics +5|387|65738|4294967450|49.76|49.15|false|wendy king|2013-03-01 09:11:58.703083|15.46|philosophy +116|354|65690|4294967522|35.31|5.45|false|fred ovid|2013-03-01 09:11:58.703289|1.72|values clariffication +6|370|65556|4294967535|25.00|15.26|false|rachel davidson|2013-03-01 09:11:58.703313|98.54|religion +66|390|65750|4294967405|53.47|26.67|true|xavier steinbeck|2013-03-01 09:11:58.703223|32.41|mathematics +30|283|65607|4294967426|19.21|14.15|true|zach underhill|2013-03-01 09:11:58.703123|97.70|yard duty +119|286|65561|4294967397|29.55|22.02|true|priscilla steinbeck|2013-03-01 09:11:58.703123|61.84|chemistry +29|279|65732|4294967531|37.19|10.59|false|irene ellison|2013-03-01 09:11:58.703177|34.38|philosophy +112|485|65546|4294967544|18.71|45.68|true|jessica white|2013-03-01 09:11:58.703251|5.24|nap time +106|375|65673|4294967530|67.32|12.78|true|victor king|2013-03-01 09:11:58.703270|69.28|biology +104|289|65766|4294967516|4.95|30.14|false|rachel falkner|2013-03-01 09:11:58.703251|34.87|religion +19|301|65789|4294967435|4.09|23.71|true|priscilla ichabod|2013-03-01 09:11:58.703151|60.01|geology +44|320|65598|4294967352|77.98|37.71|false|xavier thompson|2013-03-01 09:11:58.703139|64.33|wind surfing +112|490|65627|4294967460|88.85|11.86|false|ethan johnson|2013-03-01 09:11:58.703160|47.46|opthamology +36|471|65543|4294967510|14.34|40.27|false|bob xylophone|2013-03-01 09:11:58.703288|68.72|industrial engineering +106|446|65718|4294967355|38.63|41.60|false|tom johnson|2013-03-01 09:11:58.703181|50.84|zync studies +73|418|65768|4294967526|21.60|1.03|false|zach xylophone|2013-03-01 09:11:58.703213|98.29|opthamology +73|486|65597|4294967422|78.71|24.82|false|xavier davidson|2013-03-01 09:11:58.703245|30.67|study skills +112|438|65576|4294967315|48.49|18.03|false|oscar garcia|2013-03-01 09:11:58.703095|33.51|education +23|462|65635|4294967305|62.15|18.79|false|gabriella falkner|2013-03-01 09:11:58.703283|5.68|quiet hour +106|409|65709|4294967462|80.13|42.58|true|katie thompson|2013-03-01 09:11:58.703211|16.61|nap time +48|258|65611|4294967396|49.13|0.49|true|alice nixon|2013-03-01 09:11:58.703325|82.03|education +47|397|65739|4294967325|25.42|5.79|false|katie young|2013-03-01 09:11:58.703271|78.91|topology +117|277|65728|4294967543|30.52|45.65|true|yuri johnson|2013-03-01 09:11:58.703073|74.08|zync studies +97|344|65715|4294967498|63.50|24.20|true|david nixon|2013-03-01 09:11:58.703277|63.99|forestry +112|262|65681|4294967296|12.99|30.41|true|jessica ellison|2013-03-01 09:11:58.703214|62.09|linguistics +12|268|65659|4294967515|48.00|10.15|true|sarah steinbeck|2013-03-01 09:11:58.703283|24.84|quiet hour +37|388|65593|4294967480|38.73|5.73|true|zach johnson|2013-03-01 09:11:58.703073|46.62|debate +77|323|65751|4294967448|71.42|34.41|true|bob xylophone|2013-03-01 09:11:58.703291|47.54|education +2|426|65786|4294967347|89.27|18.86|false|wendy steinbeck|2013-03-01 09:11:58.703269|19.61|philosophy +75|478|65681|4294967459|67.19|27.74|false|mike johnson|2013-03-01 09:11:58.703279|25.88|industrial engineering +-3|374|65731|4294967388|22.35|22.71|true|bob johnson|2013-03-01 09:11:58.703204|79.77|biology +124|308|65782|4294967440|74.91|14.43|true|bob white|2013-03-01 09:11:58.703315|79.64|quiet hour +66|501|65622|4294967330|11.32|22.52|true|jessica robinson|2013-03-01 09:11:58.703071|74.55|mathematics +32|457|65616|4294967409|12.86|44.19|true|calvin miller|2013-03-01 09:11:58.703147|74.52|mathematics +79|404|65595|4294967474|99.16|10.10|true|bob underhill|2013-03-01 09:11:58.703222|51.69|kindergarten +43|301|65688|4294967450|93.34|29.59|true|ulysses zipper|2013-03-01 09:11:58.703077|64.19|linguistics +82|379|65581|4294967479|44.02|29.03|false|katie steinbeck|2013-03-01 09:11:58.703263|52.12|geology +115|423|65622|4294967383|79.48|3.98|true|jessica underhill|2013-03-01 09:11:58.703223|33.59|religion +82|455|65703|4294967411|19.41|49.17|false|gabriella ichabod|2013-03-01 09:11:58.703203|70.51|wind surfing +2|336|65724|4294967358|16.63|39.98|false|fred white|2013-03-01 09:11:58.703148|79.02|religion +89|486|65619|4294967496|40.45|6.44|true|holly quirinius|2013-03-01 09:11:58.703090|51.91|study skills +70|296|65718|4294967371|78.59|10.85|false|david falkner|2013-03-01 09:11:58.703148|13.04|xylophone band +72|447|65776|4294967420|17.99|33.37|true|quinn ovid|2013-03-01 09:11:58.703317|81.61|zync studies +31|322|65700|4294967343|47.33|36.34|false|victor ellison|2013-03-01 09:11:58.703319|32.10|religion +104|381|65655|4294967364|94.13|17.62|false|gabriella zipper|2013-03-01 09:11:58.703111|61.11|biology +78|437|65595|4294967517|95.30|31.43|false|xavier zipper|2013-03-01 09:11:58.703146|31.34|wind surfing +100|506|65763|4294967461|86.91|29.63|false|ulysses thompson|2013-03-01 09:11:58.703171|45.29|forestry +72|357|65726|4294967509|62.08|20.08|true|priscilla johnson|2013-03-01 09:11:58.703247|94.42|topology +1|412|65577|4294967334|67.57|6.78|false|victor falkner|2013-03-01 09:11:58.703201|45.81|forestry +62|477|65692|4294967430|10.89|36.98|false|calvin brown|2013-03-01 09:11:58.703070|26.68|study skills +77|319|65695|4294967549|11.40|19.73|false|alice van buren|2013-03-01 09:11:58.703175|81.37|joggying +90|379|65569|4294967463|17.12|18.66|false|sarah white|2013-03-01 09:11:58.703309|37.07|industrial engineering +65|343|65787|4294967550|3.03|27.11|false|alice ellison|2013-03-01 09:11:58.703151|79.28|xylophone band +27|303|65700|4294967447|78.58|30.67|false|gabriella davidson|2013-03-01 09:11:58.703110|8.26|nap time +3|507|65724|4294967411|38.05|47.37|true|wendy polk|2013-03-01 09:11:58.703211|2.22|topology +82|420|65594|4294967412|47.36|39.78|false|katie allen|2013-03-01 09:11:58.703197|25.56|industrial engineering +102|427|65746|4294967376|46.41|41.72|false|priscilla xylophone|2013-03-01 09:11:58.703256|91.37|history +68|356|65696|4294967539|64.66|20.44|true|holly underhill|2013-03-01 09:11:58.703172|62.89|topology +52|509|65727|4294967365|68.32|8.89|false|ulysses nixon|2013-03-01 09:11:58.703226|80.69|chemistry +65|467|65687|4294967538|33.81|30.96|true|calvin ichabod|2013-03-01 09:11:58.703220|48.77|philosophy +121|261|65662|4294967343|39.95|41.90|false|bob brown|2013-03-01 09:11:58.703125|47.79|religion +91|310|65679|4294967325|92.00|9.82|false|zach robinson|2013-03-01 09:11:58.703158|57.09|forestry +31|382|65729|4294967468|95.79|38.38|true|jessica underhill|2013-03-01 09:11:58.703230|24.37|topology +66|285|65775|4294967353|38.74|22.91|false|luke brown|2013-03-01 09:11:58.703156|85.52|zync studies +27|256|65580|4294967477|64.81|39.73|false|victor robinson|2013-03-01 09:11:58.703147|93.55|mathematics +117|340|65759|4294967370|48.13|41.76|false|ethan steinbeck|2013-03-01 09:11:58.703325|0.06|values clariffication +66|358|65618|4294967458|30.47|0.12|true|irene king|2013-03-01 09:11:58.703316|52.80|industrial engineering +23|395|65750|4294967539|33.41|48.06|false|ethan laertes|2013-03-01 09:11:58.703247|36.38|religion +109|405|65618|4294967378|39.27|4.36|true|katie young|2013-03-01 09:11:58.703127|19.21|study skills +114|323|65727|4294967428|44.93|42.75|true|alice hernandez|2013-03-01 09:11:58.703253|57.50|debate +52|323|65778|4294967490|78.59|14.07|false|oscar polk|2013-03-01 09:11:58.703137|98.90|quiet hour +46|327|65728|4294967404|67.80|37.97|false|david robinson|2013-03-01 09:11:58.703325|73.52|education +87|307|65567|4294967314|3.43|23.65|false|oscar garcia|2013-03-01 09:11:58.703162|34.23|kindergarten +39|292|65611|4294967545|42.08|27.52|false|priscilla brown|2013-03-01 09:11:58.703071|31.85|debate +39|365|65727|4294967437|71.18|2.39|true|gabriella white|2013-03-01 09:11:58.703106|81.37|biology +123|337|65591|4294967510|57.04|15.73|false|holly ovid|2013-03-01 09:11:58.703250|86.19|forestry +113|365|65686|4294967369|46.27|35.73|true|jessica robinson|2013-03-01 09:11:58.703200|56.20|debate +14|435|65566|4294967320|71.42|36.39|true|xavier ovid|2013-03-01 09:11:58.703296|48.84|wind surfing +55|310|65569|4294967466|59.85|7.63|false|oscar xylophone|2013-03-01 09:11:58.703295|19.30|religion +46|284|65653|4294967390|84.16|12.11|false|xavier brown|2013-03-01 09:11:58.703092|24.79|philosophy +8|298|65752|4294967377|55.97|37.12|false|tom nixon|2013-03-01 09:11:58.703156|49.99|history +76|490|65542|4294967318|24.15|40.52|true|rachel garcia|2013-03-01 09:11:58.703233|15.89|history +68|309|65689|4294967517|23.05|45.64|true|calvin davidson|2013-03-01 09:11:58.703198|85.65|biology +110|437|65728|4294967527|43.67|46.77|false|wendy brown|2013-03-01 09:11:58.703282|71.07|american history +67|415|65609|4294967366|99.21|36.86|true|ulysses robinson|2013-03-01 09:11:58.703214|75.90|joggying +11|287|65776|4294967531|88.29|12.43|true|katie johnson|2013-03-01 09:11:58.703105|42.34|opthamology +48|257|65541|4294967501|51.26|18.91|false|xavier brown|2013-03-01 09:11:58.703073|20.95|history +85|339|65580|4294967444|75.75|28.03|true|fred ovid|2013-03-01 09:11:58.703300|87.29|debate +30|372|65683|4294967520|60.58|38.44|true|alice laertes|2013-03-01 09:11:58.703248|30.59|kindergarten +65|408|65603|4294967541|48.16|21.67|true|alice hernandez|2013-03-01 09:11:58.703087|36.95|quiet hour +14|488|65763|4294967510|4.41|28.17|true|ethan hernandez|2013-03-01 09:11:58.703249|53.83|topology +45|383|65720|4294967401|65.44|37.61|true|tom brown|2013-03-01 09:11:58.703090|22.04|linguistics +11|451|65714|4294967529|97.64|43.88|true|nick van buren|2013-03-01 09:11:58.703181|90.02|nap time +18|471|65601|4294967496|83.28|28.25|false|zach polk|2013-03-01 09:11:58.703260|22.76|kindergarten +80|387|65672|4294967433|59.91|33.12|false|priscilla van buren|2013-03-01 09:11:58.703243|99.76|wind surfing +86|300|65762|4294967472|6.66|28.94|true|jessica brown|2013-03-01 09:11:58.703077|75.44|philosophy +41|256|65668|4294967531|92.71|36.78|true|irene polk|2013-03-01 09:11:58.703073|88.16|joggying +52|296|65576|4294967513|28.60|8.67|false|luke johnson|2013-03-01 09:11:58.703170|34.61|industrial engineering +70|301|65600|4294967426|94.67|25.19|false|holly ichabod|2013-03-01 09:11:58.703114|34.55|kindergarten +24|350|65558|4294967535|55.53|30.31|true|xavier falkner|2013-03-01 09:11:58.703275|51.59|biology +27|469|65693|4294967303|7.18|13.74|true|rachel nixon|2013-03-01 09:11:58.703092|90.62|debate +59|296|65568|4294967305|83.28|12.06|false|ulysses hernandez|2013-03-01 09:11:58.703077|89.53|debate +60|433|65734|4294967497|69.35|37.99|true|luke underhill|2013-03-01 09:11:58.703133|64.09|study skills +25|347|65709|4294967446|22.61|6.52|false|mike laertes|2013-03-01 09:11:58.703112|50.75|values clariffication +49|398|65609|4294967322|69.18|45.82|true|alice nixon|2013-03-01 09:11:58.703325|47.09|education +111|336|65597|4294967370|80.12|6.43|false|alice laertes|2013-03-01 09:11:58.703141|45.30|study skills +71|465|65697|4294967519|8.45|33.50|false|bob king|2013-03-01 09:11:58.703283|36.73|history +99|360|65622|4294967476|78.72|45.24|true|alice johnson|2013-03-01 09:11:58.703109|79.20|nap time +60|420|65779|4294967465|50.50|14.63|false|zach davidson|2013-03-01 09:11:58.703183|31.60|topology +104|463|65561|4294967502|52.64|37.36|false|quinn underhill|2013-03-01 09:11:58.703296|87.28|yard duty +81|352|65597|4294967334|94.30|14.64|true|zach xylophone|2013-03-01 09:11:58.703174|69.90|wind surfing +1|397|65556|4294967384|73.95|46.88|false|luke thompson|2013-03-01 09:11:58.703240|79.45|quiet hour +103|372|65661|4294967341|13.64|29.67|false|fred ovid|2013-03-01 09:11:58.703307|4.62|american history +55|286|65748|4294967437|62.15|34.28|true|victor falkner|2013-03-01 09:11:58.703236|8.89|geology +46|279|65759|4294967384|18.54|27.25|true|ulysses zipper|2013-03-01 09:11:58.703224|87.42|history +93|507|65595|4294967413|94.37|9.08|false|calvin carson|2013-03-01 09:11:58.703094|8.54|zync studies +62|327|65564|4294967482|34.74|46.31|true|irene carson|2013-03-01 09:11:58.703213|55.90|philosophy +39|302|65655|4294967311|71.58|11.61|true|fred van buren|2013-03-01 09:11:58.703090|75.88|topology +25|373|65721|4294967327|59.34|27.10|false|priscilla polk|2013-03-01 09:11:58.703227|88.96|yard duty +31|507|65549|4294967393|6.24|9.55|false|bob xylophone|2013-03-01 09:11:58.703143|17.08|history +0|291|65752|4294967323|33.40|16.33|true|irene ovid|2013-03-01 09:11:58.703319|12.13|biology +24|282|65542|4294967480|78.58|24.87|false|rachel thompson|2013-03-01 09:11:58.703070|89.64|chemistry +15|300|65746|4294967323|77.73|49.95|false|zach ellison|2013-03-01 09:11:58.703120|98.07|nap time +1|375|65769|4294967376|62.09|3.50|true|rachel miller|2013-03-01 09:11:58.703144|6.90|xylophone band +16|281|65727|4294967524|65.15|15.25|false|yuri ichabod|2013-03-01 09:11:58.703200|18.38|nap time +73|434|65740|4294967320|44.62|4.17|false|priscilla ichabod|2013-03-01 09:11:58.703301|89.87|linguistics +58|263|65651|4294967520|51.39|35.41|false|alice steinbeck|2013-03-01 09:11:58.703220|60.46|study skills +16|422|65570|4294967393|68.48|14.41|true|calvin nixon|2013-03-01 09:11:58.703248|69.97|study skills +122|507|65638|4294967312|57.46|3.36|false|victor davidson|2013-03-01 09:11:58.703312|27.18|xylophone band +66|344|65699|4294967533|82.51|49.92|false|xavier robinson|2013-03-01 09:11:58.703271|61.67|xylophone band +15|328|65625|4294967473|89.38|17.46|false|tom davidson|2013-03-01 09:11:58.703251|88.80|industrial engineering +20|331|65779|4294967325|39.96|9.22|false|zach steinbeck|2013-03-01 09:11:58.703213|36.32|education +24|446|65618|4294967329|95.15|39.73|false|wendy young|2013-03-01 09:11:58.703163|54.45|quiet hour +-2|503|65595|4294967521|89.18|38.53|false|sarah falkner|2013-03-01 09:11:58.703252|37.45|philosophy +31|477|65760|4294967317|95.93|7.41|true|jessica miller|2013-03-01 09:11:58.703164|75.66|zync studies +79|416|65591|4294967418|88.81|11.76|false|quinn white|2013-03-01 09:11:58.703115|83.73|forestry +3|485|65620|4294967531|86.02|31.08|true|nick thompson|2013-03-01 09:11:58.703314|86.12|wind surfing +76|270|65717|4294967345|36.09|47.64|false|alice hernandez|2013-03-01 09:11:58.703183|8.84|kindergarten +4|504|65751|4294967410|76.93|7.25|true|gabriella falkner|2013-03-01 09:11:58.703193|21.02|geology +23|479|65727|4294967500|25.30|20.63|true|yuri steinbeck|2013-03-01 09:11:58.703129|86.87|philosophy +33|441|65539|4294967417|62.66|9.80|false|luke ovid|2013-03-01 09:11:58.703296|44.36|kindergarten +47|293|65544|4294967493|54.15|23.75|true|irene brown|2013-03-01 09:11:58.703266|88.79|linguistics +15|481|65727|4294967387|7.20|4.09|false|holly xylophone|2013-03-01 09:11:58.703165|45.84|american history +51|498|65660|4294967340|67.88|10.21|true|ethan ichabod|2013-03-01 09:11:58.703082|8.69|undecided +73|314|65745|4294967463|1.18|48.05|true|oscar davidson|2013-03-01 09:11:58.703191|47.61|forestry +19|277|65539|4294967400|75.43|26.94|true|david polk|2013-03-01 09:11:58.703188|89.14|joggying +123|274|65702|4294967364|2.17|8.68|true|mike robinson|2013-03-01 09:11:58.703265|88.18|industrial engineering +67|471|65755|4294967363|88.08|5.95|true|quinn van buren|2013-03-01 09:11:58.703072|61.77|topology +124|509|65650|4294967416|62.79|27.10|false|katie young|2013-03-01 09:11:58.703159|23.20|philosophy +78|258|65776|4294967329|18.65|0.20|true|wendy king|2013-03-01 09:11:58.703313|3.90|xylophone band +1|500|65747|4294967474|62.09|13.65|false|wendy falkner|2013-03-01 09:11:58.703072|3.40|education +90|414|65788|4294967430|39.71|37.80|true|calvin white|2013-03-01 09:11:58.703155|92.28|industrial engineering +112|363|65670|4294967346|89.07|43.99|true|holly xylophone|2013-03-01 09:11:58.703150|56.64|biology +123|495|65560|4294967534|30.61|23.45|false|rachel young|2013-03-01 09:11:58.703097|13.45|chemistry +75|460|65790|4294967344|82.32|9.53|true|zach white|2013-03-01 09:11:58.703233|14.76|opthamology +82|304|65712|4294967361|46.82|37.82|true|fred hernandez|2013-03-01 09:11:58.703275|64.49|kindergarten +55|274|65733|4294967499|6.82|49.58|false|rachel falkner|2013-03-01 09:11:58.703083|86.60|geology +117|324|65728|4294967371|20.74|24.52|true|tom hernandez|2013-03-01 09:11:58.703279|49.89|education +103|431|65745|4294967438|47.93|9.16|false|nick ellison|2013-03-01 09:11:58.703151|86.19|joggying +69|306|65624|4294967318|50.25|10.89|false|alice xylophone|2013-03-01 09:11:58.703104|48.32|debate +110|508|65566|4294967352|23.27|25.06|true|yuri garcia|2013-03-01 09:11:58.703072|79.38|debate +70|446|65615|4294967381|50.71|32.21|false|ulysses hernandez|2013-03-01 09:11:58.703117|88.83|history +-1|390|65747|4294967363|56.02|43.55|false|alice carson|2013-03-01 09:11:58.703261|13.40|nap time +96|434|65567|4294967481|37.16|19.45|false|calvin young|2013-03-01 09:11:58.703079|37.84|american history +17|321|65672|4294967448|17.58|16.11|true|jessica davidson|2013-03-01 09:11:58.703313|42.17|values clariffication +116|402|65721|4294967410|66.36|18.84|false|priscilla ichabod|2013-03-01 09:11:58.703201|57.73|forestry +41|395|65553|4294967532|34.11|4.82|false|luke xylophone|2013-03-01 09:11:58.703108|55.05|nap time +97|381|65569|4294967320|3.38|36.29|false|irene ellison|2013-03-01 09:11:58.703128|53.37|debate +14|321|65642|4294967394|59.53|6.55|false|victor white|2013-03-01 09:11:58.703100|58.69|joggying +86|443|65639|4294967490|84.00|42.18|false|ulysses thompson|2013-03-01 09:11:58.703187|76.21|topology +91|434|65572|4294967363|48.04|24.22|false|holly white|2013-03-01 09:11:58.703149|50.33|history +13|319|65660|4294967351|22.93|31.30|false|david thompson|2013-03-01 09:11:58.703300|4.95|xylophone band +-3|324|65773|4294967296|11.07|25.95|true|oscar miller|2013-03-01 09:11:58.703320|56.60|opthamology +34|457|65583|4294967513|68.20|9.33|true|calvin white|2013-03-01 09:11:58.703072|68.40|undecided +29|499|65632|4294967303|17.51|35.93|true|priscilla thompson|2013-03-01 09:11:58.703167|94.51|zync studies +65|471|65626|4294967401|24.59|21.20|true|oscar davidson|2013-03-01 09:11:58.703171|19.91|american history +89|358|65683|4294967427|91.88|47.87|false|mike garcia|2013-03-01 09:11:58.703307|40.33|kindergarten +2|414|65559|4294967403|63.15|47.47|false|katie laertes|2013-03-01 09:11:58.703100|12.60|american history +53|365|65606|4294967478|82.93|39.60|false|mike thompson|2013-03-01 09:11:58.703299|68.91|joggying +54|376|65653|4294967488|99.87|23.17|false|rachel johnson|2013-03-01 09:11:58.703102|62.25|linguistics +95|264|65755|4294967383|14.47|48.15|false|irene xylophone|2013-03-01 09:11:58.703204|48.50|joggying +52|497|65782|4294967546|64.75|28.89|false|irene steinbeck|2013-03-01 09:11:58.703124|18.57|opthamology +52|450|65688|4294967311|91.72|37.38|true|tom zipper|2013-03-01 09:11:58.703239|46.75|religion +65|388|65697|4294967484|92.20|16.30|false|holly miller|2013-03-01 09:11:58.703317|96.58|philosophy +39|320|65767|4294967345|20.00|5.07|true|oscar quirinius|2013-03-01 09:11:58.703087|19.90|quiet hour +78|390|65583|4294967476|45.52|10.36|true|david ellison|2013-03-01 09:11:58.703294|47.62|geology +97|318|65691|4294967477|97.42|33.32|false|katie zipper|2013-03-01 09:11:58.703205|21.44|yard duty +-2|318|65629|4294967481|41.85|26.95|false|nick underhill|2013-03-01 09:11:58.703244|74.38|debate +96|491|65618|4294967431|70.43|35.75|false|mike davidson|2013-03-01 09:11:58.703216|76.89|opthamology +72|368|65554|4294967296|69.39|9.20|true|ethan garcia|2013-03-01 09:11:58.703175|15.67|quiet hour +28|415|65635|4294967417|90.17|45.92|false|bob young|2013-03-01 09:11:58.703121|28.72|opthamology +96|435|65657|4294967434|86.15|16.78|true|mike underhill|2013-03-01 09:11:58.703090|45.29|zync studies +19|359|65720|4294967386|77.99|25.58|false|jessica steinbeck|2013-03-01 09:11:58.703206|60.42|joggying +68|470|65715|4294967411|58.57|1.06|true|oscar garcia|2013-03-01 09:11:58.703106|44.67|american history +-2|384|65604|4294967317|1.65|46.75|true|nick falkner|2013-03-01 09:11:58.703206|59.16|kindergarten +94|394|65620|4294967367|39.75|14.70|false|gabriella van buren|2013-03-01 09:11:58.703320|21.10|opthamology +121|274|65699|4294967338|77.78|19.97|false|tom allen|2013-03-01 09:11:58.703319|75.42|xylophone band +113|504|65575|4294967340|99.55|36.95|true|ethan underhill|2013-03-01 09:11:58.703214|52.45|debate +24|467|65718|4294967395|53.05|0.92|true|fred nixon|2013-03-01 09:11:58.703088|82.49|study skills +124|397|65593|4294967368|4.38|46.35|true|mike nixon|2013-03-01 09:11:58.703117|45.34|kindergarten +27|282|65743|4294967362|74.41|10.45|true|fred falkner|2013-03-01 09:11:58.703234|30.72|quiet hour +42|396|65670|4294967502|0.32|39.24|false|katie underhill|2013-03-01 09:11:58.703277|96.39|undecided +73|494|65609|4294967392|39.30|47.23|true|jessica ellison|2013-03-01 09:11:58.703244|30.37|study skills +12|285|65761|4294967481|82.85|27.40|true|alice polk|2013-03-01 09:11:58.703079|46.05|american history +11|315|65540|4294967506|18.44|9.18|false|jessica hernandez|2013-03-01 09:11:58.703180|82.36|geology +10|418|65584|4294967444|35.99|49.42|false|wendy garcia|2013-03-01 09:11:58.703313|10.98|history +81|506|65666|4294967423|68.01|18.85|false|oscar xylophone|2013-03-01 09:11:58.703219|8.78|linguistics +76|489|65575|4294967392|96.79|49.36|false|quinn garcia|2013-03-01 09:11:58.703135|74.48|undecided +32|363|65782|4294967409|93.64|18.93|true|quinn ovid|2013-03-01 09:11:58.703158|14.42|zync studies +81|404|65555|4294967357|44.85|12.27|false|ulysses nixon|2013-03-01 09:11:58.703106|4.67|zync studies +89|485|65713|4294967325|96.44|17.45|false|quinn underhill|2013-03-01 09:11:58.703106|36.92|mathematics +104|399|65640|4294967402|32.84|49.11|false|priscilla davidson|2013-03-01 09:11:58.703099|57.58|mathematics +68|419|65773|4294967298|20.74|17.81|true|holly nixon|2013-03-01 09:11:58.703219|16.17|zync studies +124|470|65541|4294967495|62.06|44.19|true|oscar nixon|2013-03-01 09:11:58.703237|6.09|industrial engineering +92|289|65562|4294967322|34.78|16.38|true|wendy ovid|2013-03-01 09:11:58.703113|33.71|mathematics +61|272|65581|4294967395|66.79|15.83|false|katie hernandez|2013-03-01 09:11:58.703123|16.86|linguistics +18|308|65560|4294967322|8.66|40.43|true|alice davidson|2013-03-01 09:11:58.703205|39.69|religion +75|398|65659|4294967346|2.96|45.32|false|alice ichabod|2013-03-01 09:11:58.703129|75.04|nap time +97|449|65553|4294967531|9.31|31.05|false|quinn underhill|2013-03-01 09:11:58.703245|98.73|study skills +63|300|65541|4294967466|40.39|1.64|false|priscilla young|2013-03-01 09:11:58.703150|31.46|study skills +124|360|65753|4294967386|9.07|0.15|true|zach steinbeck|2013-03-01 09:11:58.703276|46.84|religion +70|342|65555|4294967506|33.20|28.25|false|sarah quirinius|2013-03-01 09:11:58.703173|18.30|history +54|464|65740|4294967465|3.54|7.07|false|priscilla steinbeck|2013-03-01 09:11:58.703145|58.75|xylophone band +0|283|65724|4294967302|90.38|14.52|false|yuri zipper|2013-03-01 09:11:58.703093|48.07|forestry +1|338|65650|4294967402|55.05|8.86|false|nick davidson|2013-03-01 09:11:58.703234|79.66|history +59|399|65741|4294967511|87.84|48.07|false|alice laertes|2013-03-01 09:11:58.703222|75.62|religion +88|492|65558|4294967532|20.89|39.20|true|mike steinbeck|2013-03-01 09:11:58.703247|76.63|geology +22|308|65616|4294967338|54.31|34.81|false|holly garcia|2013-03-01 09:11:58.703245|65.57|history +104|262|65741|4294967410|89.83|13.99|false|holly garcia|2013-03-01 09:11:58.703104|12.98|quiet hour +11|279|65771|4294967328|26.36|31.25|false|bob xylophone|2013-03-01 09:11:58.703136|66.16|nap time +122|379|65583|4294967412|37.16|46.75|true|david white|2013-03-01 09:11:58.703307|43.87|forestry +9|370|65616|4294967382|2.87|9.02|true|mike carson|2013-03-01 09:11:58.703183|46.98|history +81|434|65627|4294967375|16.37|34.35|false|david carson|2013-03-01 09:11:58.703145|73.59|topology +3|354|65729|4294967414|35.87|13.36|true|victor young|2013-03-01 09:11:58.703152|10.40|undecided +37|275|65654|4294967296|36.23|43.45|false|david zipper|2013-03-01 09:11:58.703184|3.36|undecided +76|498|65669|4294967389|73.25|37.10|true|mike white|2013-03-01 09:11:58.703137|36.54|industrial engineering +69|327|65595|4294967523|23.70|39.20|true|mike ellison|2013-03-01 09:11:58.703288|34.50|quiet hour +83|318|65545|4294967493|19.56|8.08|true|tom brown|2013-03-01 09:11:58.703234|68.07|quiet hour +6|474|65706|4294967491|47.24|2.48|true|wendy van buren|2013-03-01 09:11:58.703079|73.89|zync studies +57|471|65561|4294967478|3.14|31.86|false|calvin polk|2013-03-01 09:11:58.703171|84.64|religion +90|412|65572|4294967339|70.86|27.42|false|calvin johnson|2013-03-01 09:11:58.703132|18.69|forestry +21|439|65649|4294967550|32.43|42.42|true|ulysses johnson|2013-03-01 09:11:58.703161|57.03|debate +56|260|65766|4294967383|26.75|29.63|false|sarah young|2013-03-01 09:11:58.703122|72.76|topology +63|296|65680|4294967404|90.05|41.90|true|victor johnson|2013-03-01 09:11:58.703223|8.33|chemistry +87|336|65730|4294967307|34.27|26.10|false|fred allen|2013-03-01 09:11:58.703137|71.07|undecided +81|491|65645|4294967458|51.57|5.67|true|mike thompson|2013-03-01 09:11:58.703127|43.55|study skills +95|429|65705|4294967339|54.04|20.22|false|ethan xylophone|2013-03-01 09:11:58.703226|58.06|american history +-2|407|65612|4294967318|25.48|41.56|true|david laertes|2013-03-01 09:11:58.703076|40.10|forestry +43|462|65673|4294967546|49.48|40.39|true|nick steinbeck|2013-03-01 09:11:58.703143|82.70|study skills +25|464|65699|4294967342|92.88|21.97|true|holly king|2013-03-01 09:11:58.703166|19.11|quiet hour +34|439|65658|4294967495|33.23|37.92|true|quinn underhill|2013-03-01 09:11:58.703213|37.17|zync studies +76|341|65660|4294967324|78.61|4.24|false|katie robinson|2013-03-01 09:11:58.703138|42.78|values clariffication +100|301|65583|4294967541|3.00|48.85|false|holly brown|2013-03-01 09:11:58.703091|76.31|industrial engineering +105|297|65639|4294967531|11.60|19.06|true|calvin ovid|2013-03-01 09:11:58.703104|3.98|yard duty +7|361|65552|4294967390|20.14|16.01|false|irene polk|2013-03-01 09:11:58.703257|12.77|american history +22|329|65684|4294967541|29.03|37.78|false|calvin van buren|2013-03-01 09:11:58.703166|93.16|geology +51|480|65593|4294967403|55.26|1.34|false|david johnson|2013-03-01 09:11:58.703215|87.07|debate +61|301|65553|4294967510|48.51|28.05|true|luke steinbeck|2013-03-01 09:11:58.703256|42.85|opthamology +23|507|65536|4294967429|17.72|44.07|true|mike white|2013-03-01 09:11:58.703220|63.08|nap time +82|346|65740|4294967353|73.32|23.01|false|sarah miller|2013-03-01 09:11:58.703282|62.12|xylophone band +121|357|65642|4294967296|0.44|38.58|false|victor xylophone|2013-03-01 09:11:58.703082|97.57|opthamology +47|427|65598|4294967446|9.10|11.77|false|david king|2013-03-01 09:11:58.703088|82.71|biology +8|329|65627|4294967321|8.00|15.92|true|fred davidson|2013-03-01 09:11:58.703114|77.57|forestry +71|429|65581|4294967445|54.78|9.40|false|ethan king|2013-03-01 09:11:58.703259|44.10|forestry +21|363|65776|4294967398|94.00|15.33|true|tom underhill|2013-03-01 09:11:58.703277|10.99|biology +92|420|65589|4294967497|87.69|31.60|false|xavier zipper|2013-03-01 09:11:58.703074|48.21|linguistics +-3|339|65737|4294967453|14.23|26.66|true|ethan underhill|2013-03-01 09:11:58.703138|94.91|xylophone band +11|497|65589|4294967305|91.19|33.71|true|wendy thompson|2013-03-01 09:11:58.703272|13.41|joggying +60|283|65699|4294967461|3.90|21.50|false|zach ovid|2013-03-01 09:11:58.703099|71.55|topology +40|429|65541|4294967323|73.66|25.32|false|wendy xylophone|2013-03-01 09:11:58.703245|54.75|nap time +123|337|65782|4294967449|11.35|19.53|false|yuri brown|2013-03-01 09:11:58.703078|14.32|education +74|293|65566|4294967298|0.12|40.67|false|luke falkner|2013-03-01 09:11:58.703241|10.37|biology +91|383|65708|4294967430|66.25|8.04|false|fred carson|2013-03-01 09:11:58.703305|66.01|kindergarten +72|383|65562|4294967518|1.97|30.78|true|nick polk|2013-03-01 09:11:58.703263|24.54|undecided +78|374|65649|4294967496|28.27|45.63|false|calvin thompson|2013-03-01 09:11:58.703249|77.07|mathematics +115|381|65598|4294967348|46.36|46.67|false|ethan brown|2013-03-01 09:11:58.703074|84.91|american history +119|310|65640|4294967301|51.31|36.87|false|ethan white|2013-03-01 09:11:58.703296|65.50|history +9|417|65612|4294967335|34.91|3.11|false|holly xylophone|2013-03-01 09:11:58.703295|95.83|quiet hour +64|432|65612|4294967332|10.34|12.10|false|jessica garcia|2013-03-01 09:11:58.703299|39.52|history +26|317|65570|4294967369|61.07|0.30|true|irene carson|2013-03-01 09:11:58.703111|50.22|nap time +88|483|65648|4294967299|70.68|36.82|true|katie laertes|2013-03-01 09:11:58.703209|91.37|forestry +106|264|65725|4294967458|87.38|35.10|true|ulysses ichabod|2013-03-01 09:11:58.703227|40.60|wind surfing +29|506|65557|4294967309|35.20|6.83|false|ulysses robinson|2013-03-01 09:11:58.703229|84.12|xylophone band +119|442|65608|4294967482|7.39|5.86|false|yuri ellison|2013-03-01 09:11:58.703098|24.49|quiet hour +54|278|65788|4294967440|81.53|9.81|true|rachel ovid|2013-03-01 09:11:58.703234|14.23|undecided +55|265|65536|4294967460|32.62|3.55|true|irene johnson|2013-03-01 09:11:58.703179|30.91|chemistry +47|276|65543|4294967337|0.62|0.33|true|luke brown|2013-03-01 09:11:58.703085|39.95|mathematics +123|475|65706|4294967423|91.95|38.64|false|alice johnson|2013-03-01 09:11:58.703230|63.23|philosophy +105|406|65569|4294967436|68.74|44.10|false|zach laertes|2013-03-01 09:11:58.703074|20.12|philosophy +16|280|65629|4294967330|50.70|26.26|false|quinn davidson|2013-03-01 09:11:58.703273|19.10|nap time +100|428|65661|4294967476|27.44|37.76|true|zach steinbeck|2013-03-01 09:11:58.703242|9.25|undecided +61|448|65650|4294967389|47.00|43.11|true|victor davidson|2013-03-01 09:11:58.703148|9.93|topology +36|328|65684|4294967409|10.88|4.05|true|calvin king|2013-03-01 09:11:58.703218|2.75|chemistry +63|272|65571|4294967462|6.73|27.36|true|holly nixon|2013-03-01 09:11:58.703175|22.19|religion +1|351|65545|4294967396|46.16|46.81|false|nick brown|2013-03-01 09:11:58.703137|21.40|opthamology +105|377|65675|4294967548|32.73|17.79|false|calvin nixon|2013-03-01 09:11:58.703080|17.95|education +100|288|65783|4294967444|60.67|28.14|false|nick zipper|2013-03-01 09:11:58.703124|65.85|forestry +6|279|65642|4294967384|70.90|20.75|true|quinn underhill|2013-03-01 09:11:58.703316|25.62|yard duty +112|265|65729|4294967306|60.46|49.42|false|quinn nixon|2013-03-01 09:11:58.703320|60.87|religion +50|478|65775|4294967319|34.41|2.91|false|calvin davidson|2013-03-01 09:11:58.703139|21.15|religion +116|464|65757|4294967326|96.10|29.56|false|rachel ellison|2013-03-01 09:11:58.703242|44.61|wind surfing +17|340|65721|4294967481|17.62|34.24|false|oscar steinbeck|2013-03-01 09:11:58.703088|46.55|forestry +43|333|65687|4294967458|5.94|28.03|false|luke robinson|2013-03-01 09:11:58.703185|40.65|religion +57|259|65748|4294967394|53.91|49.76|false|alice johnson|2013-03-01 09:11:58.703283|56.27|study skills +100|301|65537|4294967440|22.79|6.28|false|yuri garcia|2013-03-01 09:11:58.703278|80.14|biology +97|507|65633|4294967478|65.60|9.27|false|nick hernandez|2013-03-01 09:11:58.703151|22.08|nap time +36|356|65757|4294967416|47.64|9.31|true|oscar van buren|2013-03-01 09:11:58.703196|17.48|debate +39|467|65590|4294967306|20.30|12.68|true|ulysses king|2013-03-01 09:11:58.703182|64.45|american history +11|372|65633|4294967455|33.58|29.97|false|yuri robinson|2013-03-01 09:11:58.703251|6.02|nap time +59|375|65672|4294967312|46.31|23.73|true|holly davidson|2013-03-01 09:11:58.703185|12.43|wind surfing +115|378|65595|4294967435|84.45|41.10|true|priscilla miller|2013-03-01 09:11:58.703096|70.67|values clariffication +39|457|65599|4294967514|69.02|17.65|false|xavier nixon|2013-03-01 09:11:58.703322|24.96|zync studies +69|490|65601|4294967459|56.21|45.43|false|fred quirinius|2013-03-01 09:11:58.703196|30.79|kindergarten +24|441|65600|4294967388|12.59|47.80|true|quinn ovid|2013-03-01 09:11:58.703127|34.55|opthamology +80|315|65727|4294967399|53.97|0.54|false|gabriella van buren|2013-03-01 09:11:58.703239|90.66|american history +67|477|65693|4294967412|64.32|23.54|true|luke young|2013-03-01 09:11:58.703143|98.67|quiet hour +52|396|65592|4294967299|44.91|25.05|false|calvin nixon|2013-03-01 09:11:58.703325|25.58|yard duty +97|475|65556|4294967315|24.83|5.32|true|rachel nixon|2013-03-01 09:11:58.703174|66.15|religion +-3|346|65752|4294967298|56.05|34.03|false|tom polk|2013-03-01 09:11:58.703217|49.02|zync studies +20|267|65743|4294967327|64.62|4.77|false|ethan nixon|2013-03-01 09:11:58.703296|84.02|kindergarten +0|434|65752|4294967357|96.76|35.05|true|fred davidson|2013-03-01 09:11:58.703199|50.63|chemistry +70|440|65778|4294967395|76.54|25.54|false|calvin carson|2013-03-01 09:11:58.703318|85.61|forestry +91|298|65607|4294967415|38.49|42.10|true|yuri robinson|2013-03-01 09:11:58.703279|46.34|yard duty +-2|288|65753|4294967332|55.17|46.64|true|xavier robinson|2013-03-01 09:11:58.703091|13.32|quiet hour +24|491|65681|4294967434|98.77|32.86|false|luke xylophone|2013-03-01 09:11:58.703124|79.80|opthamology +46|285|65631|4294967505|46.67|32.88|false|victor king|2013-03-01 09:11:58.703189|37.78|biology +8|404|65655|4294967443|13.11|34.72|true|yuri ovid|2013-03-01 09:11:58.703321|59.40|opthamology +49|414|65553|4294967483|97.98|6.88|false|jessica davidson|2013-03-01 09:11:58.703158|42.01|philosophy +49|381|65744|4294967343|36.34|27.46|false|wendy steinbeck|2013-03-01 09:11:58.703117|7.13|kindergarten +72|436|65609|4294967503|90.64|34.51|false|calvin thompson|2013-03-01 09:11:58.703096|41.13|debate +12|269|65721|4294967437|95.68|45.24|true|yuri garcia|2013-03-01 09:11:58.703306|34.23|zync studies +105|492|65754|4294967535|73.26|9.94|true|xavier zipper|2013-03-01 09:11:58.703230|8.65|forestry +67|316|65685|4294967549|19.21|46.98|false|alice laertes|2013-03-01 09:11:58.703306|44.22|joggying +13|461|65785|4294967507|7.21|28.28|true|katie robinson|2013-03-01 09:11:58.703079|76.31|forestry +43|327|65609|4294967414|88.01|3.48|false|zach davidson|2013-03-01 09:11:58.703094|96.45|industrial engineering +89|297|65666|4294967317|12.27|2.32|true|david allen|2013-03-01 09:11:58.703175|68.40|geology +4|419|65774|4294967460|5.53|20.55|true|quinn zipper|2013-03-01 09:11:58.703287|42.67|values clariffication +117|419|65780|4294967458|43.40|15.99|false|david van buren|2013-03-01 09:11:58.703294|21.45|nap time +37|461|65582|4294967331|45.58|31.00|true|mike steinbeck|2013-03-01 09:11:58.703083|75.45|mathematics +10|336|65694|4294967463|45.98|10.54|true|irene underhill|2013-03-01 09:11:58.703180|27.68|nap time +100|377|65559|4294967478|30.12|43.48|false|wendy underhill|2013-03-01 09:11:58.703137|0.34|xylophone band +93|468|65733|4294967499|24.37|19.33|false|ethan polk|2013-03-01 09:11:58.703185|24.40|yard duty +63|444|65622|4294967456|99.00|34.30|true|bob carson|2013-03-01 09:11:58.703281|63.78|xylophone band +88|382|65690|4294967472|19.32|5.20|true|alice falkner|2013-03-01 09:11:58.703159|32.80|xylophone band +65|346|65577|4294967453|67.56|7.88|false|ethan white|2013-03-01 09:11:58.703231|35.55|opthamology +60|265|65540|4294967438|20.58|8.66|true|zach allen|2013-03-01 09:11:58.703142|27.12|quiet hour +17|337|65647|4294967418|22.81|33.85|true|rachel davidson|2013-03-01 09:11:58.703110|58.41|chemistry +6|404|65621|4294967312|45.49|37.47|true|gabriella ellison|2013-03-01 09:11:58.703305|90.19|zync studies +30|485|65697|4294967515|86.18|42.84|false|sarah zipper|2013-03-01 09:11:58.703137|38.19|linguistics +91|287|65555|4294967467|89.22|16.90|false|rachel allen|2013-03-01 09:11:58.703166|82.53|opthamology +67|506|65647|4294967397|69.79|29.67|false|gabriella hernandez|2013-03-01 09:11:58.703245|55.13|nap time +103|390|65786|4294967355|0.02|26.65|false|luke king|2013-03-01 09:11:58.703163|21.15|yard duty +76|391|65573|4294967372|73.64|21.13|false|ethan xylophone|2013-03-01 09:11:58.703248|31.63|wind surfing +92|332|65645|4294967500|52.04|23.55|false|yuri robinson|2013-03-01 09:11:58.703121|28.98|wind surfing +109|283|65739|4294967313|14.33|16.49|true|oscar king|2013-03-01 09:11:58.703240|92.82|forestry +80|258|65656|4294967386|79.17|40.06|false|fred king|2013-03-01 09:11:58.703079|78.62|geology +28|264|65612|4294967370|40.05|1.74|false|luke ichabod|2013-03-01 09:11:58.703163|4.60|history +28|510|65651|4294967448|96.72|6.38|false|irene ellison|2013-03-01 09:11:58.703083|12.61|industrial engineering +-2|456|65733|4294967342|73.06|24.06|true|quinn hernandez|2013-03-01 09:11:58.703279|68.79|joggying +10|336|65602|4294967506|72.25|18.97|false|yuri allen|2013-03-01 09:11:58.703209|78.92|study skills +63|343|65617|4294967532|29.52|40.00|false|sarah xylophone|2013-03-01 09:11:58.703169|96.76|history +119|387|65556|4294967438|13.83|20.65|true|tom zipper|2013-03-01 09:11:58.703098|72.80|nap time +43|269|65631|4294967540|96.16|20.77|true|david xylophone|2013-03-01 09:11:58.703149|71.97|biology +55|398|65599|4294967454|22.55|16.74|true|sarah miller|2013-03-01 09:11:58.703303|26.01|chemistry +42|324|65784|4294967478|95.87|9.75|false|katie miller|2013-03-01 09:11:58.703211|47.23|xylophone band +50|439|65745|4294967360|6.57|28.35|true|nick ovid|2013-03-01 09:11:58.703299|31.03|study skills +7|409|65734|4294967481|47.78|31.04|false|nick allen|2013-03-01 09:11:58.703084|5.19|forestry +44|430|65548|4294967311|76.38|27.88|true|ethan underhill|2013-03-01 09:11:58.703205|31.20|wind surfing +111|285|65553|4294967428|23.50|44.37|true|mike steinbeck|2013-03-01 09:11:58.703269|39.84|religion +79|309|65755|4294967445|35.28|12.43|false|luke miller|2013-03-01 09:11:58.703313|48.26|mathematics +-1|474|65626|4294967383|18.78|29.73|true|victor ichabod|2013-03-01 09:11:58.703268|93.17|religion +112|466|65790|4294967505|44.91|49.38|true|yuri garcia|2013-03-01 09:11:58.703300|55.80|biology +19|354|65619|4294967412|99.18|15.85|false|calvin zipper|2013-03-01 09:11:58.703248|4.22|kindergarten +95|474|65628|4294967314|84.04|23.51|true|zach laertes|2013-03-01 09:11:58.703310|41.19|linguistics +22|478|65693|4294967414|40.30|39.01|true|oscar underhill|2013-03-01 09:11:58.703202|97.72|opthamology +26|497|65671|4294967374|28.40|27.73|false|david johnson|2013-03-01 09:11:58.703174|29.75|religion +27|507|65669|4294967328|65.69|34.00|true|sarah laertes|2013-03-01 09:11:58.703102|56.64|zync studies +82|407|65588|4294967403|61.16|18.97|true|luke nixon|2013-03-01 09:11:58.703203|72.50|industrial engineering +113|406|65704|4294967301|91.45|15.81|false|ulysses underhill|2013-03-01 09:11:58.703227|86.44|kindergarten +0|485|65764|4294967493|77.39|8.18|true|fred van buren|2013-03-01 09:11:58.703246|23.63|history +14|433|65587|4294967416|13.09|9.89|false|sarah laertes|2013-03-01 09:11:58.703204|89.62|values clariffication +0|460|65700|4294967505|71.00|16.90|true|jessica ovid|2013-03-01 09:11:58.703230|55.47|geology +61|318|65782|4294967398|19.38|30.57|true|quinn van buren|2013-03-01 09:11:58.703128|26.74|joggying +58|320|65598|4294967486|90.55|14.70|false|katie ovid|2013-03-01 09:11:58.703150|77.07|kindergarten +123|466|65626|4294967541|88.59|40.51|false|wendy hernandez|2013-03-01 09:11:58.703263|44.30|wind surfing +83|454|65725|4294967480|18.95|49.93|false|gabriella van buren|2013-03-01 09:11:58.703079|38.03|yard duty +61|257|65699|4294967328|15.36|0.14|true|priscilla miller|2013-03-01 09:11:58.703317|1.32|geology +38|401|65700|4294967460|73.69|1.98|true|ethan thompson|2013-03-01 09:11:58.703276|11.11|undecided +103|305|65739|4294967304|30.77|33.92|false|jessica white|2013-03-01 09:11:58.703260|24.48|topology +115|262|65678|4294967316|36.91|16.31|false|xavier hernandez|2013-03-01 09:11:58.703181|56.65|nap time +95|320|65649|4294967322|14.90|0.59|true|quinn steinbeck|2013-03-01 09:11:58.703140|66.80|american history +40|511|65665|4294967470|9.63|33.11|true|priscilla allen|2013-03-01 09:11:58.703140|77.34|history +-3|260|65595|4294967545|59.07|6.75|false|bob falkner|2013-03-01 09:11:58.703280|36.50|chemistry +25|370|65631|4294967359|41.18|38.26|false|gabriella miller|2013-03-01 09:11:58.703129|75.14|linguistics +75|488|65580|4294967473|15.56|48.00|true|sarah young|2013-03-01 09:11:58.703205|1.97|study skills +30|340|65662|4294967404|13.43|49.18|false|wendy garcia|2013-03-01 09:11:58.703106|21.50|biology +50|318|65585|4294967449|74.37|48.37|false|zach nixon|2013-03-01 09:11:58.703290|63.66|quiet hour +66|404|65663|4294967320|60.00|0.04|false|katie brown|2013-03-01 09:11:58.703297|48.78|industrial engineering +29|470|65606|4294967349|30.56|47.76|true|david quirinius|2013-03-01 09:11:58.703075|17.03|undecided +3|476|65776|4294967446|72.79|9.58|false|priscilla hernandez|2013-03-01 09:11:58.703265|64.33|xylophone band +95|368|65617|4294967408|51.60|8.57|false|holly falkner|2013-03-01 09:11:58.703201|9.42|zync studies +13|392|65643|4294967541|92.83|0.68|false|katie laertes|2013-03-01 09:11:58.703220|78.76|american history +124|313|65726|4294967433|21.76|25.44|true|mike zipper|2013-03-01 09:11:58.703161|20.44|linguistics +109|456|65587|4294967536|97.95|44.06|true|oscar nixon|2013-03-01 09:11:58.703306|27.35|education +76|329|65719|4294967394|30.12|28.13|true|nick hernandez|2013-03-01 09:11:58.703101|68.30|topology +76|326|65620|4294967426|88.42|18.86|true|jessica johnson|2013-03-01 09:11:58.703164|47.51|study skills +118|342|65703|4294967307|80.25|14.94|true|bob ichabod|2013-03-01 09:11:58.703283|64.79|topology +44|487|65711|4294967403|30.96|20.36|true|ethan young|2013-03-01 09:11:58.703192|56.32|linguistics +121|324|65625|4294967520|32.85|43.99|false|irene garcia|2013-03-01 09:11:58.703108|8.30|geology +76|340|65609|4294967482|53.84|49.87|true|yuri thompson|2013-03-01 09:11:58.703110|49.75|topology +21|321|65782|4294967539|47.92|41.91|true|zach underhill|2013-03-01 09:11:58.703304|18.14|study skills +122|480|65620|4294967508|88.78|43.68|false|nick brown|2013-03-01 09:11:58.703241|20.14|debate +85|285|65698|4294967328|69.90|13.56|true|priscilla miller|2013-03-01 09:11:58.703108|74.09|nap time +37|292|65689|4294967412|31.55|37.19|true|holly steinbeck|2013-03-01 09:11:58.703147|59.89|joggying +97|342|65615|4294967497|98.40|3.03|false|zach xylophone|2013-03-01 09:11:58.703285|32.47|forestry +48|337|65729|4294967470|39.83|16.53|false|irene young|2013-03-01 09:11:58.703286|87.91|linguistics +105|275|65744|4294967297|7.64|14.75|true|rachel young|2013-03-01 09:11:58.703246|44.75|education +79|410|65566|4294967357|6.66|33.49|false|yuri ovid|2013-03-01 09:11:58.703195|0.67|philosophy +118|398|65552|4294967478|20.71|4.23|false|fred allen|2013-03-01 09:11:58.703308|5.50|history +62|374|65665|4294967314|38.69|0.31|false|katie polk|2013-03-01 09:11:58.703229|11.83|philosophy +123|292|65707|4294967430|9.03|41.31|false|zach thompson|2013-03-01 09:11:58.703249|5.13|opthamology +1|397|65678|4294967437|31.39|38.67|true|david nixon|2013-03-01 09:11:58.703122|3.58|forestry +30|506|65738|4294967475|74.01|33.53|false|oscar nixon|2013-03-01 09:11:58.703132|57.55|linguistics +31|310|65790|4294967481|68.42|32.30|true|ethan king|2013-03-01 09:11:58.703261|68.81|biology +98|432|65715|4294967318|76.12|25.16|true|priscilla robinson|2013-03-01 09:11:58.703111|14.81|yard duty +120|297|65542|4294967409|78.94|24.87|false|victor ichabod|2013-03-01 09:11:58.703100|75.99|american history +109|511|65755|4294967535|6.76|6.46|false|calvin garcia|2013-03-01 09:11:58.703202|69.85|education +54|446|65545|4294967415|65.26|14.26|false|rachel polk|2013-03-01 09:11:58.703108|38.35|debate +74|320|65753|4294967526|50.46|30.05|true|fred xylophone|2013-03-01 09:11:58.703102|83.60|chemistry +78|412|65640|4294967367|63.91|20.82|true|calvin thompson|2013-03-01 09:11:58.703076|15.55|quiet hour +118|289|65778|4294967534|58.66|34.71|false|priscilla van buren|2013-03-01 09:11:58.703237|55.77|american history +25|269|65594|4294967510|25.21|1.29|true|gabriella hernandez|2013-03-01 09:11:58.703319|19.58|kindergarten +108|348|65620|4294967358|52.42|23.49|false|ulysses xylophone|2013-03-01 09:11:58.703194|87.63|quiet hour +63|360|65604|4294967343|91.18|40.58|false|zach brown|2013-03-01 09:11:58.703123|36.76|debate +98|373|65689|4294967342|88.78|31.09|false|yuri xylophone|2013-03-01 09:11:58.703098|61.52|biology +114|268|65642|4294967462|17.11|32.33|false|tom johnson|2013-03-01 09:11:58.703222|15.09|study skills +59|422|65590|4294967426|65.23|46.12|true|bob thompson|2013-03-01 09:11:58.703314|85.01|joggying +93|320|65627|4294967350|20.65|4.10|false|luke laertes|2013-03-01 09:11:58.703175|0.23|opthamology +62|258|65565|4294967391|98.19|26.40|false|katie allen|2013-03-01 09:11:58.703319|17.64|linguistics +65|294|65547|4294967440|51.90|5.79|false|priscilla underhill|2013-03-01 09:11:58.703294|34.32|values clariffication +60|434|65735|4294967339|94.52|10.59|false|xavier laertes|2013-03-01 09:11:58.703124|14.91|education +54|347|65537|4294967414|59.62|9.60|false|xavier underhill|2013-03-01 09:11:58.703261|59.70|industrial engineering +18|439|65634|4294967411|40.45|36.25|true|xavier van buren|2013-03-01 09:11:58.703235|88.10|linguistics +98|367|65596|4294967326|82.60|16.72|false|victor davidson|2013-03-01 09:11:58.703109|94.30|quiet hour +84|321|65744|4294967318|59.33|23.99|true|alice polk|2013-03-01 09:11:58.703109|89.28|biology +60|396|65767|4294967460|20.28|30.13|false|priscilla garcia|2013-03-01 09:11:58.703133|67.08|industrial engineering +70|434|65672|4294967323|38.35|28.46|false|irene carson|2013-03-01 09:11:58.703143|88.01|forestry +98|458|65716|4294967492|34.65|34.08|false|gabriella miller|2013-03-01 09:11:58.703270|20.32|quiet hour +1|484|65627|4294967514|95.46|40.98|true|ulysses carson|2013-03-01 09:11:58.703245|10.99|study skills +47|417|65550|4294967495|4.07|19.40|true|yuri ellison|2013-03-01 09:11:58.703288|0.81|forestry +43|507|65647|4294967410|50.21|4.10|false|mike ovid|2013-03-01 09:11:58.703216|66.95|forestry +67|431|65538|4294967486|91.22|9.44|false|sarah ichabod|2013-03-01 09:11:58.703112|74.48|study skills +8|292|65682|4294967310|76.81|16.66|true|xavier davidson|2013-03-01 09:11:58.703213|77.44|study skills +21|451|65776|4294967317|0.27|24.24|true|irene miller|2013-03-01 09:11:58.703092|7.67|geology +1|267|65646|4294967525|54.17|17.82|true|bob laertes|2013-03-01 09:11:58.703152|78.93|philosophy +4|366|65716|4294967547|83.04|20.71|false|luke brown|2013-03-01 09:11:58.703223|64.65|nap time +77|444|65720|4294967466|85.94|41.30|false|katie miller|2013-03-01 09:11:58.703096|53.72|philosophy +70|491|65575|4294967340|10.87|13.69|true|ethan zipper|2013-03-01 09:11:58.703246|73.38|philosophy +114|404|65763|4294967466|43.79|25.37|true|holly ovid|2013-03-01 09:11:58.703098|85.87|nap time +74|284|65625|4294967368|57.50|17.23|false|oscar steinbeck|2013-03-01 09:11:58.703175|11.70|forestry +31|382|65656|4294967533|89.27|0.95|true|jessica robinson|2013-03-01 09:11:58.703311|24.08|linguistics +78|410|65553|4294967337|38.65|47.21|false|luke ovid|2013-03-01 09:11:58.703308|62.16|topology +41|392|65627|4294967360|53.26|9.21|true|xavier quirinius|2013-03-01 09:11:58.703303|65.72|kindergarten +47|385|65663|4294967421|26.44|44.82|false|david carson|2013-03-01 09:11:58.703110|77.72|quiet hour +106|491|65789|4294967411|98.20|21.13|false|nick underhill|2013-03-01 09:11:58.703320|55.97|american history +-1|365|65601|4294967380|0.95|16.92|true|calvin brown|2013-03-01 09:11:58.703188|90.46|education +73|332|65669|4294967508|55.69|44.95|true|yuri allen|2013-03-01 09:11:58.703153|22.01|opthamology +107|439|65557|4294967400|17.47|42.04|false|zach quirinius|2013-03-01 09:11:58.703297|82.87|opthamology +100|416|65675|4294967402|21.66|12.60|false|mike white|2013-03-01 09:11:58.703136|35.43|mathematics +29|313|65726|4294967388|55.82|11.34|true|ethan thompson|2013-03-01 09:11:58.703281|25.24|quiet hour +18|385|65581|4294967439|2.80|34.48|true|tom thompson|2013-03-01 09:11:58.703077|16.15|philosophy +22|337|65752|4294967463|78.12|11.44|true|jessica davidson|2013-03-01 09:11:58.703266|63.78|industrial engineering +84|284|65674|4294967304|41.21|1.24|true|luke davidson|2013-03-01 09:11:58.703204|57.87|values clariffication +77|455|65625|4294967388|52.96|10.62|false|jessica brown|2013-03-01 09:11:58.703077|21.79|quiet hour +74|492|65774|4294967319|99.33|43.72|true|zach carson|2013-03-01 09:11:58.703185|68.95|philosophy +103|311|65719|4294967484|7.79|31.90|true|nick white|2013-03-01 09:11:58.703204|50.98|biology +91|385|65604|4294967481|64.40|36.35|false|irene thompson|2013-03-01 09:11:58.703208|83.27|zync studies +106|361|65698|4294967341|46.47|35.70|false|ethan falkner|2013-03-01 09:11:58.703281|41.58|xylophone band +119|338|65621|4294967499|30.53|45.61|true|gabriella quirinius|2013-03-01 09:11:58.703278|2.97|forestry +-1|401|65613|4294967301|16.80|40.84|false|calvin carson|2013-03-01 09:11:58.703200|68.39|forestry +23|338|65737|4294967462|37.26|34.13|false|xavier miller|2013-03-01 09:11:58.703189|89.73|topology +47|487|65606|4294967471|31.43|36.39|false|holly johnson|2013-03-01 09:11:58.703218|15.19|industrial engineering +52|355|65711|4294967445|86.19|31.46|true|wendy ovid|2013-03-01 09:11:58.703079|22.03|quiet hour +104|360|65752|4294967392|37.35|27.46|false|nick davidson|2013-03-01 09:11:58.703171|82.28|nap time +62|339|65710|4294967429|21.88|25.80|true|irene nixon|2013-03-01 09:11:58.703315|84.40|opthamology +29|397|65741|4294967325|91.57|15.73|false|nick quirinius|2013-03-01 09:11:58.703281|40.66|chemistry +-2|495|65725|4294967363|49.42|16.24|false|mike allen|2013-03-01 09:11:58.703115|49.50|mathematics +7|490|65633|4294967467|35.89|40.83|true|luke thompson|2013-03-01 09:11:58.703258|52.80|linguistics +90|270|65694|4294967515|69.79|42.06|false|holly quirinius|2013-03-01 09:11:58.703251|55.70|values clariffication +50|355|65561|4294967436|70.05|0.75|false|rachel miller|2013-03-01 09:11:58.703316|32.41|geology +115|287|65773|4294967498|43.67|25.85|false|katie laertes|2013-03-01 09:11:58.703161|71.79|linguistics +113|348|65770|4294967407|1.54|28.87|false|bob xylophone|2013-03-01 09:11:58.703304|65.42|philosophy +122|415|65780|4294967326|47.18|28.29|false|david hernandez|2013-03-01 09:11:58.703211|75.92|nap time +62|449|65560|4294967326|0.43|31.97|false|yuri van buren|2013-03-01 09:11:58.703246|61.08|yard duty +49|345|65782|4294967539|56.25|16.98|false|ulysses brown|2013-03-01 09:11:58.703173|58.50|zync studies +38|309|65748|4294967373|10.23|37.12|false|victor miller|2013-03-01 09:11:58.703146|45.36|yard duty +70|453|65759|4294967387|92.60|47.39|true|irene falkner|2013-03-01 09:11:58.703193|88.10|joggying +13|465|65655|4294967468|60.04|6.65|true|yuri xylophone|2013-03-01 09:11:58.703083|49.38|chemistry +-2|266|65769|4294967351|81.79|42.69|true|zach quirinius|2013-03-01 09:11:58.703225|55.76|philosophy +89|506|65766|4294967317|89.04|8.31|true|rachel quirinius|2013-03-01 09:11:58.703191|82.53|education +-2|361|65714|4294967383|13.24|39.48|true|xavier quirinius|2013-03-01 09:11:58.703093|36.18|kindergarten +3|445|65631|4294967503|32.81|23.21|false|fred garcia|2013-03-01 09:11:58.703141|14.33|geology +48|390|65544|4294967530|53.96|39.24|true|gabriella johnson|2013-03-01 09:11:58.703152|74.25|kindergarten +19|447|65680|4294967450|30.47|36.66|true|holly nixon|2013-03-01 09:11:58.703072|19.79|american history +34|272|65644|4294967365|50.42|20.34|true|quinn davidson|2013-03-01 09:11:58.703157|22.47|wind surfing +28|398|65663|4294967437|93.57|36.84|true|alice robinson|2013-03-01 09:11:58.703263|71.00|undecided +70|433|65545|4294967521|58.77|22.22|true|david robinson|2013-03-01 09:11:58.703168|18.31|education +17|363|65630|4294967449|31.20|42.93|true|quinn xylophone|2013-03-01 09:11:58.703088|82.29|mathematics +6|478|65700|4294967443|70.30|12.98|true|bob ichabod|2013-03-01 09:11:58.703232|1.37|debate +40|499|65776|4294967339|51.18|48.74|true|ulysses ichabod|2013-03-01 09:11:58.703273|38.04|study skills +85|297|65672|4294967359|47.92|42.74|true|mike brown|2013-03-01 09:11:58.703192|27.76|quiet hour +100|305|65725|4294967387|54.94|49.01|false|tom white|2013-03-01 09:11:58.703277|50.50|philosophy +71|309|65617|4294967388|60.69|19.10|true|ulysses zipper|2013-03-01 09:11:58.703227|43.32|quiet hour +-2|394|65714|4294967507|12.27|13.91|false|holly thompson|2013-03-01 09:11:58.703094|10.30|topology +7|278|65745|4294967325|95.42|16.52|true|alice king|2013-03-01 09:11:58.703319|28.76|yard duty +2|465|65651|4294967524|44.01|43.33|false|mike ichabod|2013-03-01 09:11:58.703175|4.89|history +49|265|65575|4294967430|39.63|49.78|true|sarah steinbeck|2013-03-01 09:11:58.703124|27.96|american history +61|346|65742|4294967311|53.01|14.99|false|oscar nixon|2013-03-01 09:11:58.703321|88.61|religion +19|489|65620|4294967324|65.95|1.66|false|nick falkner|2013-03-01 09:11:58.703294|15.30|nap time +13|395|65660|4294967499|29.21|40.66|false|luke ellison|2013-03-01 09:11:58.703112|94.74|industrial engineering +67|368|65667|4294967466|6.82|47.36|false|rachel steinbeck|2013-03-01 09:11:58.703260|50.57|joggying +12|390|65636|4294967384|10.81|12.12|true|irene polk|2013-03-01 09:11:58.703300|82.12|philosophy +35|421|65614|4294967351|88.28|13.10|true|holly white|2013-03-01 09:11:58.703297|7.76|nap time +47|489|65582|4294967319|12.66|2.59|true|alice underhill|2013-03-01 09:11:58.703321|9.02|study skills +31|278|65554|4294967333|93.66|42.58|true|jessica johnson|2013-03-01 09:11:58.703122|50.66|yard duty +57|387|65578|4294967333|33.13|41.29|true|alice ovid|2013-03-01 09:11:58.703243|23.35|history +74|381|65681|4294967378|52.14|24.37|false|priscilla van buren|2013-03-01 09:11:58.703256|60.02|religion +31|445|65732|4294967483|23.15|47.45|false|jessica garcia|2013-03-01 09:11:58.703118|51.88|biology +95|391|65718|4294967327|92.68|4.20|true|victor miller|2013-03-01 09:11:58.703075|96.74|opthamology +111|329|65577|4294967377|45.55|46.03|false|wendy steinbeck|2013-03-01 09:11:58.703220|61.18|debate +89|477|65655|4294967389|71.74|19.65|false|yuri garcia|2013-03-01 09:11:58.703124|11.71|wind surfing +109|507|65734|4294967441|68.64|40.74|false|fred king|2013-03-01 09:11:58.703219|50.73|history +81|405|65631|4294967367|72.42|49.99|true|jessica carson|2013-03-01 09:11:58.703288|86.26|industrial engineering +10|339|65710|4294967468|26.16|40.07|false|david ellison|2013-03-01 09:11:58.703122|22.07|topology +80|310|65621|4294967304|84.61|21.87|true|tom robinson|2013-03-01 09:11:58.703262|6.83|industrial engineering +100|338|65764|4294967529|35.57|19.92|false|wendy ellison|2013-03-01 09:11:58.703322|49.43|chemistry +82|295|65727|4294967449|8.42|1.36|false|katie thompson|2013-03-01 09:11:58.703141|44.75|kindergarten +27|342|65746|4294967325|98.33|10.80|false|holly robinson|2013-03-01 09:11:58.703212|54.67|education +22|278|65547|4294967396|78.82|34.82|false|irene ovid|2013-03-01 09:11:58.703130|25.56|yard duty +100|419|65597|4294967302|9.45|19.74|true|calvin robinson|2013-03-01 09:11:58.703290|64.35|geology +21|338|65582|4294967416|86.27|25.62|false|rachel polk|2013-03-01 09:11:58.703183|33.03|quiet hour +93|268|65540|4294967462|79.12|36.10|true|zach allen|2013-03-01 09:11:58.703102|98.11|biology +113|363|65673|4294967536|67.03|49.82|true|luke van buren|2013-03-01 09:11:58.703199|0.47|topology +58|442|65576|4294967337|16.51|26.71|true|david king|2013-03-01 09:11:58.703252|6.21|biology +76|393|65553|4294967517|57.65|22.91|true|zach garcia|2013-03-01 09:11:58.703312|96.55|biology +94|400|65644|4294967342|45.25|49.34|false|katie thompson|2013-03-01 09:11:58.703236|39.22|philosophy +23|503|65624|4294967516|50.91|30.24|true|fred van buren|2013-03-01 09:11:58.703287|13.72|opthamology +39|502|65778|4294967304|10.87|4.07|true|bob hernandez|2013-03-01 09:11:58.703143|95.21|topology +51|300|65690|4294967420|54.99|27.08|true|david laertes|2013-03-01 09:11:58.703233|15.90|mathematics +112|507|65577|4294967525|3.94|0.19|false|gabriella davidson|2013-03-01 09:11:58.703279|48.81|topology +41|341|65667|4294967449|43.93|49.18|false|rachel hernandez|2013-03-01 09:11:58.703131|96.81|forestry +79|428|65581|4294967486|56.99|40.93|true|zach king|2013-03-01 09:11:58.703291|22.34|forestry +59|483|65738|4294967302|95.95|2.30|true|zach ovid|2013-03-01 09:11:58.703077|42.33|chemistry +88|356|65721|4294967450|80.55|21.12|false|bob carson|2013-03-01 09:11:58.703133|12.39|education +34|276|65661|4294967539|46.28|18.62|false|calvin allen|2013-03-01 09:11:58.703133|79.16|industrial engineering +13|387|65675|4294967456|81.82|41.68|false|quinn miller|2013-03-01 09:11:58.703099|34.49|philosophy +35|376|65765|4294967300|33.20|29.83|false|luke johnson|2013-03-01 09:11:58.703196|27.36|chemistry +25|363|65790|4294967413|60.23|22.00|false|zach thompson|2013-03-01 09:11:58.703178|95.45|biology +80|461|65741|4294967368|89.92|10.51|false|nick zipper|2013-03-01 09:11:58.703280|57.29|education +19|283|65612|4294967425|96.46|34.59|false|katie davidson|2013-03-01 09:11:58.703147|46.24|values clariffication +101|288|65760|4294967519|30.70|41.74|true|fred polk|2013-03-01 09:11:58.703203|80.51|joggying +10|481|65728|4294967492|45.65|47.86|false|quinn van buren|2013-03-01 09:11:58.703180|8.59|nap time +27|306|65700|4294967465|97.41|32.95|false|rachel davidson|2013-03-01 09:11:58.703177|80.76|zync studies +38|422|65739|4294967384|11.78|40.56|false|gabriella robinson|2013-03-01 09:11:58.703284|5.88|industrial engineering +14|368|65653|4294967317|72.09|20.90|true|mike carson|2013-03-01 09:11:58.703228|13.97|religion +81|334|65698|4294967535|17.99|47.20|true|luke garcia|2013-03-01 09:11:58.703235|62.68|geology +-2|380|65707|4294967526|22.68|36.95|false|ethan allen|2013-03-01 09:11:58.703107|76.64|chemistry +21|338|65714|4294967361|97.74|5.99|true|nick garcia|2013-03-01 09:11:58.703188|68.57|opthamology +52|352|65748|4294967476|32.21|49.09|false|priscilla hernandez|2013-03-01 09:11:58.703247|58.40|industrial engineering +70|335|65750|4294967473|13.16|10.86|true|oscar ellison|2013-03-01 09:11:58.703267|29.41|zync studies +39|443|65706|4294967514|67.18|41.95|true|calvin hernandez|2013-03-01 09:11:58.703298|58.83|study skills +119|440|65742|4294967383|60.84|15.76|false|priscilla underhill|2013-03-01 09:11:58.703212|54.26|undecided +75|294|65581|4294967451|67.50|47.56|true|zach robinson|2013-03-01 09:11:58.703321|58.67|biology +121|287|65557|4294967336|50.50|3.85|true|luke thompson|2013-03-01 09:11:58.703289|47.30|industrial engineering +102|491|65744|4294967423|89.80|30.72|true|wendy hernandez|2013-03-01 09:11:58.703229|93.74|topology +20|407|65696|4294967529|39.58|15.16|false|luke zipper|2013-03-01 09:11:58.703153|93.13|education +96|450|65669|4294967311|6.22|16.96|false|david nixon|2013-03-01 09:11:58.703279|83.61|education +62|444|65708|4294967409|76.00|25.16|true|rachel zipper|2013-03-01 09:11:58.703115|38.50|quiet hour +43|466|65731|4294967441|53.85|26.51|true|alice xylophone|2013-03-01 09:11:58.703149|18.88|values clariffication +70|410|65569|4294967535|42.24|31.95|true|gabriella allen|2013-03-01 09:11:58.703301|86.34|topology +44|389|65682|4294967475|44.31|45.78|false|calvin carson|2013-03-01 09:11:58.703301|8.76|chemistry +33|379|65684|4294967487|7.18|43.01|true|katie zipper|2013-03-01 09:11:58.703098|26.62|study skills +104|258|65734|4294967506|79.48|28.35|true|yuri johnson|2013-03-01 09:11:58.703116|35.73|philosophy +117|501|65607|4294967521|76.81|2.25|false|david xylophone|2013-03-01 09:11:58.703224|34.72|forestry +74|504|65681|4294967529|77.71|19.37|true|irene brown|2013-03-01 09:11:58.703269|56.07|american history +115|259|65770|4294967352|91.66|15.43|true|rachel brown|2013-03-01 09:11:58.703171|70.78|forestry +100|405|65677|4294967347|94.92|42.33|false|zach young|2013-03-01 09:11:58.703132|23.53|linguistics +53|273|65612|4294967350|47.57|16.47|false|mike young|2013-03-01 09:11:58.703290|13.23|opthamology +78|472|65614|4294967333|27.15|23.66|true|calvin johnson|2013-03-01 09:11:58.703249|99.55|kindergarten +13|502|65609|4294967311|16.67|18.70|false|holly johnson|2013-03-01 09:11:58.703184|56.16|quiet hour +23|362|65683|4294967411|4.95|9.54|false|nick robinson|2013-03-01 09:11:58.703145|45.29|chemistry +114|407|65742|4294967356|18.00|13.99|false|holly falkner|2013-03-01 09:11:58.703226|93.90|undecided +50|291|65749|4294967498|36.02|0.64|false|sarah allen|2013-03-01 09:11:58.703102|70.84|philosophy +62|461|65735|4294967436|31.45|18.61|false|katie steinbeck|2013-03-01 09:11:58.703208|6.21|zync studies +78|264|65562|4294967545|19.77|43.76|true|oscar garcia|2013-03-01 09:11:58.703282|42.66|philosophy +108|392|65588|4294967322|64.52|17.87|true|mike ichabod|2013-03-01 09:11:58.703095|44.94|forestry +46|345|65667|4294967433|47.48|24.68|true|zach zipper|2013-03-01 09:11:58.703194|23.76|biology +56|423|65713|4294967303|69.82|31.98|true|victor underhill|2013-03-01 09:11:58.703091|6.89|history +121|354|65546|4294967548|12.88|4.54|false|ethan young|2013-03-01 09:11:58.703220|41.11|biology +48|322|65536|4294967317|70.79|13.13|false|rachel xylophone|2013-03-01 09:11:58.703178|58.80|study skills +28|374|65651|4294967389|91.36|31.77|false|nick carson|2013-03-01 09:11:58.703070|41.63|debate +60|269|65577|4294967317|84.87|38.36|true|bob quirinius|2013-03-01 09:11:58.703143|57.97|undecided +37|299|65650|4294967352|1.14|43.62|false|holly quirinius|2013-03-01 09:11:58.703241|11.77|joggying +15|411|65775|4294967417|37.16|35.02|false|yuri ichabod|2013-03-01 09:11:58.703141|86.90|xylophone band +73|331|65650|4294967461|36.96|45.85|false|wendy brown|2013-03-01 09:11:58.703231|96.62|kindergarten +20|496|65622|4294967380|32.94|14.45|false|ulysses ellison|2013-03-01 09:11:58.703311|91.87|philosophy +58|370|65624|4294967500|65.46|25.35|true|mike carson|2013-03-01 09:11:58.703177|61.64|topology +5|356|65561|4294967485|4.73|45.86|true|bob underhill|2013-03-01 09:11:58.703251|83.79|philosophy +22|297|65789|4294967536|92.53|9.14|true|wendy johnson|2013-03-01 09:11:58.703199|94.89|religion +85|363|65739|4294967449|69.07|26.17|true|luke miller|2013-03-01 09:11:58.703101|25.06|xylophone band +66|432|65545|4294967547|55.46|34.28|false|xavier ovid|2013-03-01 09:11:58.703204|48.49|forestry +71|268|65647|4294967483|18.90|41.67|false|wendy carson|2013-03-01 09:11:58.703279|88.38|wind surfing +124|287|65787|4294967416|57.16|35.79|true|yuri laertes|2013-03-01 09:11:58.703166|66.62|study skills +74|504|65601|4294967424|40.93|25.84|false|zach hernandez|2013-03-01 09:11:58.703073|32.37|american history +26|396|65599|4294967523|46.42|45.35|true|luke ellison|2013-03-01 09:11:58.703080|41.96|forestry +49|314|65596|4294967331|81.73|42.32|true|katie xylophone|2013-03-01 09:11:58.703271|95.15|yard duty +40|298|65576|4294967404|56.15|20.64|true|calvin thompson|2013-03-01 09:11:58.703314|84.81|linguistics +38|310|65765|4294967435|93.37|14.36|false|yuri white|2013-03-01 09:11:58.703121|59.43|american history +5|488|65698|4294967414|41.98|44.84|true|oscar ichabod|2013-03-01 09:11:58.703143|77.40|opthamology +18|385|65695|4294967404|67.95|31.50|false|tom brown|2013-03-01 09:11:58.703228|92.86|religion +113|285|65647|4294967415|15.58|47.59|false|victor thompson|2013-03-01 09:11:58.703105|22.03|industrial engineering +58|360|65721|4294967391|20.71|41.01|true|luke white|2013-03-01 09:11:58.703091|13.43|undecided +74|282|65681|4294967358|40.81|2.73|false|sarah white|2013-03-01 09:11:58.703271|73.89|chemistry +63|406|65549|4294967549|4.07|25.00|true|fred brown|2013-03-01 09:11:58.703182|73.68|study skills +42|290|65692|4294967349|56.99|4.13|true|david garcia|2013-03-01 09:11:58.703214|78.84|american history +2|326|65759|4294967491|28.86|25.68|true|wendy laertes|2013-03-01 09:11:58.703148|97.49|history +25|331|65590|4294967482|10.75|9.41|true|gabriella robinson|2013-03-01 09:11:58.703262|12.92|opthamology +46|423|65629|4294967376|35.34|8.77|true|bob nixon|2013-03-01 09:11:58.703151|40.39|undecided +77|281|65589|4294967415|18.02|21.68|false|holly johnson|2013-03-01 09:11:58.703308|43.10|mathematics +120|471|65733|4294967405|94.48|1.09|false|alice brown|2013-03-01 09:11:58.703146|78.85|education +11|363|65618|4294967379|38.66|2.46|false|xavier davidson|2013-03-01 09:11:58.703267|99.27|xylophone band +87|441|65773|4294967347|30.00|0.27|true|victor steinbeck|2013-03-01 09:11:58.703305|64.30|undecided +63|314|65620|4294967429|29.85|23.34|false|mike young|2013-03-01 09:11:58.703077|64.00|education +91|345|65666|4294967509|33.07|34.84|true|fred brown|2013-03-01 09:11:58.703172|6.10|debate +84|305|65600|4294967370|49.42|21.54|true|mike hernandez|2013-03-01 09:11:58.703238|50.50|zync studies +65|297|65754|4294967431|95.62|49.40|true|zach van buren|2013-03-01 09:11:58.703183|71.88|philosophy +107|434|65743|4294967504|7.32|23.48|false|yuri king|2013-03-01 09:11:58.703192|49.91|industrial engineering +5|377|65774|4294967424|13.32|3.95|true|alice nixon|2013-03-01 09:11:58.703091|15.70|history +52|276|65562|4294967316|12.42|41.92|true|mike falkner|2013-03-01 09:11:58.703239|86.54|yard duty +68|453|65634|4294967309|6.94|7.80|true|rachel carson|2013-03-01 09:11:58.703241|62.51|linguistics +55|306|65562|4294967473|32.62|36.08|true|gabriella ichabod|2013-03-01 09:11:58.703203|23.90|topology +66|359|65584|4294967433|79.73|6.64|true|sarah underhill|2013-03-01 09:11:58.703143|93.05|industrial engineering +103|310|65547|4294967546|78.86|49.82|true|tom ichabod|2013-03-01 09:11:58.703202|15.99|linguistics +36|511|65764|4294967333|70.02|7.54|true|priscilla allen|2013-03-01 09:11:58.703091|85.36|xylophone band +83|407|65698|4294967340|38.31|10.96|false|rachel ichabod|2013-03-01 09:11:58.703190|96.05|education +11|380|65746|4294967394|70.63|8.92|false|calvin johnson|2013-03-01 09:11:58.703300|78.24|values clariffication +1|434|65577|4294967306|18.26|35.14|true|wendy xylophone|2013-03-01 09:11:58.703314|40.39|debate +92|331|65564|4294967450|72.18|3.11|false|bob ovid|2013-03-01 09:11:58.703151|27.92|joggying +25|310|65677|4294967519|20.69|29.94|false|mike robinson|2013-03-01 09:11:58.703220|36.43|chemistry +73|375|65701|4294967542|43.64|35.98|true|ulysses quirinius|2013-03-01 09:11:58.703287|31.93|values clariffication +37|446|65647|4294967451|47.59|39.56|true|nick brown|2013-03-01 09:11:58.703258|23.18|quiet hour +104|408|65675|4294967502|92.30|42.76|true|holly young|2013-03-01 09:11:58.703205|94.14|mathematics +71|344|65571|4294967427|39.20|7.13|false|oscar xylophone|2013-03-01 09:11:58.703197|57.83|mathematics +84|422|65774|4294967500|45.82|30.71|false|gabriella ellison|2013-03-01 09:11:58.703164|1.27|linguistics +70|408|65707|4294967545|71.20|10.74|false|alice davidson|2013-03-01 09:11:58.703145|94.68|xylophone band +39|371|65573|4294967527|71.27|48.03|false|holly zipper|2013-03-01 09:11:58.703152|74.64|kindergarten +18|263|65609|4294967474|82.80|0.27|true|quinn van buren|2013-03-01 09:11:58.703191|42.13|philosophy +2|352|65720|4294967481|90.51|14.52|false|irene thompson|2013-03-01 09:11:58.703172|51.48|zync studies +34|299|65662|4294967551|75.13|25.62|true|calvin quirinius|2013-03-01 09:11:58.703204|89.60|xylophone band +121|348|65721|4294967512|67.05|42.60|true|nick xylophone|2013-03-01 09:11:58.703165|37.01|linguistics +6|315|65746|4294967507|9.25|2.36|true|holly van buren|2013-03-01 09:11:58.703103|69.36|forestry +66|429|65591|4294967362|27.98|47.66|false|bob laertes|2013-03-01 09:11:58.703124|52.96|values clariffication +103|486|65721|4294967457|44.04|8.41|true|jessica xylophone|2013-03-01 09:11:58.703158|38.61|debate +97|313|65715|4294967396|43.91|34.20|true|oscar steinbeck|2013-03-01 09:11:58.703301|88.69|nap time +8|488|65687|4294967396|88.03|45.56|true|nick zipper|2013-03-01 09:11:58.703162|33.38|undecided +92|273|65699|4294967507|22.03|49.22|true|luke davidson|2013-03-01 09:11:58.703233|39.42|geology +108|310|65718|4294967500|94.06|31.39|false|quinn steinbeck|2013-03-01 09:11:58.703087|60.45|xylophone band +9|265|65569|4294967400|70.70|15.77|false|tom steinbeck|2013-03-01 09:11:58.703223|90.33|philosophy +33|421|65673|4294967550|2.79|11.56|true|wendy garcia|2013-03-01 09:11:58.703236|53.24|education +5|449|65778|4294967371|69.68|49.20|false|holly nixon|2013-03-01 09:11:58.703219|77.16|undecided +61|396|65672|4294967298|40.13|49.07|true|ethan miller|2013-03-01 09:11:58.703242|25.99|religion +63|322|65567|4294967324|27.41|14.60|false|nick ovid|2013-03-01 09:11:58.703239|22.30|debate +29|465|65598|4294967501|94.29|5.29|true|jessica steinbeck|2013-03-01 09:11:58.703318|14.14|joggying +37|454|65617|4294967457|25.91|7.52|false|ethan johnson|2013-03-01 09:11:58.703242|10.70|kindergarten +18|503|65554|4294967454|40.94|28.87|true|mike falkner|2013-03-01 09:11:58.703203|90.82|nap time +8|359|65563|4294967315|45.01|30.71|true|bob king|2013-03-01 09:11:58.703097|32.07|mathematics +15|379|65700|4294967389|49.52|11.37|true|irene laertes|2013-03-01 09:11:58.703318|96.96|debate +76|464|65622|4294967438|20.81|47.60|true|fred thompson|2013-03-01 09:11:58.703119|75.11|topology +56|428|65621|4294967481|90.01|3.72|false|fred thompson|2013-03-01 09:11:58.703113|17.79|debate +19|468|65669|4294967330|27.80|18.05|false|yuri davidson|2013-03-01 09:11:58.703178|15.22|geology +75|366|65759|4294967525|68.03|15.05|false|ethan zipper|2013-03-01 09:11:58.703106|80.47|debate +94|445|65585|4294967425|81.00|14.34|false|irene johnson|2013-03-01 09:11:58.703244|90.17|forestry +75|267|65700|4294967548|46.15|34.94|true|irene garcia|2013-03-01 09:11:58.703132|36.04|yard duty +113|466|65767|4294967424|33.20|24.83|true|priscilla carson|2013-03-01 09:11:58.703139|7.83|nap time +80|286|65658|4294967433|61.20|32.05|true|holly allen|2013-03-01 09:11:58.703118|25.00|quiet hour +59|270|65647|4294967380|92.56|28.98|false|ulysses zipper|2013-03-01 09:11:58.703284|76.63|history +117|498|65658|4294967538|21.79|35.77|true|tom falkner|2013-03-01 09:11:58.703207|7.88|opthamology +35|346|65664|4294967491|8.43|21.74|false|nick garcia|2013-03-01 09:11:58.703281|92.95|xylophone band +112|363|65646|4294967340|65.36|4.08|false|ethan thompson|2013-03-01 09:11:58.703267|71.78|opthamology +56|484|65544|4294967430|67.57|25.86|false|victor garcia|2013-03-01 09:11:58.703231|59.82|wind surfing +107|373|65562|4294967452|72.41|18.69|true|tom brown|2013-03-01 09:11:58.703290|0.25|chemistry +27|296|65738|4294967434|8.63|9.09|false|ulysses white|2013-03-01 09:11:58.703303|48.85|undecided +80|355|65711|4294967501|74.64|29.41|false|quinn polk|2013-03-01 09:11:58.703151|16.72|education +90|295|65735|4294967521|1.36|18.51|true|jessica robinson|2013-03-01 09:11:58.703255|50.80|history +5|333|65607|4294967390|55.47|42.18|false|david allen|2013-03-01 09:11:58.703135|81.93|wind surfing +118|265|65685|4294967545|46.24|6.79|false|xavier steinbeck|2013-03-01 09:11:58.703094|91.93|undecided +-2|387|65593|4294967435|24.40|10.27|true|wendy ichabod|2013-03-01 09:11:58.703244|42.76|geology +111|508|65619|4294967520|32.56|4.98|true|mike steinbeck|2013-03-01 09:11:58.703230|20.35|nap time +117|403|65717|4294967420|52.26|44.93|true|victor robinson|2013-03-01 09:11:58.703218|93.24|values clariffication +101|383|65694|4294967393|46.03|43.21|true|nick miller|2013-03-01 09:11:58.703141|91.85|zync studies +79|282|65750|4294967501|81.01|11.53|false|holly white|2013-03-01 09:11:58.703242|19.78|zync studies +67|433|65624|4294967352|43.05|34.96|false|calvin xylophone|2013-03-01 09:11:58.703117|5.98|xylophone band +56|402|65536|4294967497|70.96|18.11|false|oscar garcia|2013-03-01 09:11:58.703234|59.58|nap time +64|286|65728|4294967457|5.53|21.76|false|holly ichabod|2013-03-01 09:11:58.703220|61.70|topology +18|471|65546|4294967330|19.03|37.39|false|zach falkner|2013-03-01 09:11:58.703301|5.93|history +58|439|65702|4294967382|60.01|23.60|false|gabriella robinson|2013-03-01 09:11:58.703157|17.23|philosophy +2|461|65600|4294967365|74.27|28.82|false|tom ellison|2013-03-01 09:11:58.703152|45.36|topology +104|327|65596|4294967348|85.39|6.30|false|xavier falkner|2013-03-01 09:11:58.703195|50.97|values clariffication +21|412|65774|4294967518|91.46|45.42|false|rachel zipper|2013-03-01 09:11:58.703171|9.47|kindergarten +84|348|65595|4294967481|47.01|9.47|true|fred johnson|2013-03-01 09:11:58.703127|29.43|chemistry +13|392|65695|4294967476|0.04|20.24|false|holly steinbeck|2013-03-01 09:11:58.703175|69.75|undecided +79|302|65696|4294967533|79.34|29.20|false|tom hernandez|2013-03-01 09:11:58.703200|93.98|study skills +48|280|65754|4294967431|23.99|29.86|true|xavier steinbeck|2013-03-01 09:11:58.703289|95.07|industrial engineering +40|339|65679|4294967404|96.49|16.66|true|xavier brown|2013-03-01 09:11:58.703083|81.27|study skills +57|355|65650|4294967430|68.16|26.64|true|sarah robinson|2013-03-01 09:11:58.703094|30.77|education +121|308|65617|4294967505|38.33|38.09|true|bob steinbeck|2013-03-01 09:11:58.703310|91.57|american history +43|482|65582|4294967439|89.15|18.49|false|oscar robinson|2013-03-01 09:11:58.703244|43.56|zync studies +23|334|65697|4294967331|60.43|43.53|false|quinn brown|2013-03-01 09:11:58.703171|16.27|geology +43|481|65729|4294967433|92.12|3.75|false|gabriella xylophone|2013-03-01 09:11:58.703140|9.20|geology +20|280|65743|4294967451|48.42|10.24|true|calvin garcia|2013-03-01 09:11:58.703171|28.74|opthamology +102|492|65690|4294967546|41.20|39.80|false|ethan johnson|2013-03-01 09:11:58.703315|99.14|linguistics +11|291|65670|4294967457|81.66|12.89|true|fred van buren|2013-03-01 09:11:58.703263|33.55|nap time +39|490|65608|4294967360|38.66|37.67|false|xavier falkner|2013-03-01 09:11:58.703120|48.80|zync studies +56|395|65560|4294967502|87.13|25.57|true|priscilla steinbeck|2013-03-01 09:11:58.703119|56.00|forestry +88|423|65707|4294967522|17.52|30.00|true|priscilla garcia|2013-03-01 09:11:58.703105|62.96|values clariffication +49|327|65684|4294967417|12.61|31.31|false|ulysses young|2013-03-01 09:11:58.703210|37.95|history +0|407|65611|4294967517|3.75|7.87|true|yuri king|2013-03-01 09:11:58.703090|34.27|debate +42|269|65760|4294967405|7.75|2.12|true|alice laertes|2013-03-01 09:11:58.703272|87.17|forestry +22|295|65682|4294967299|37.55|11.50|false|priscilla xylophone|2013-03-01 09:11:58.703098|17.12|american history +83|416|65624|4294967380|33.85|17.35|true|katie quirinius|2013-03-01 09:11:58.703301|4.90|zync studies +37|491|65751|4294967353|98.30|42.26|true|priscilla davidson|2013-03-01 09:11:58.703243|13.56|xylophone band +119|327|65650|4294967472|26.29|10.20|true|bob steinbeck|2013-03-01 09:11:58.703288|91.33|quiet hour +39|275|65617|4294967478|54.92|37.32|false|david quirinius|2013-03-01 09:11:58.703275|88.08|topology +6|498|65782|4294967363|9.39|21.20|true|oscar miller|2013-03-01 09:11:58.703305|0.15|philosophy +97|307|65604|4294967360|62.07|15.14|false|xavier johnson|2013-03-01 09:11:58.703324|35.84|mathematics +3|299|65655|4294967391|10.67|43.79|false|irene king|2013-03-01 09:11:58.703237|81.69|undecided +39|329|65751|4294967305|43.87|8.26|false|alice steinbeck|2013-03-01 09:11:58.703231|83.38|debate +121|359|65697|4294967498|40.82|20.75|false|fred laertes|2013-03-01 09:11:58.703129|19.72|forestry +25|310|65552|4294967471|48.94|0.92|false|irene davidson|2013-03-01 09:11:58.703222|1.77|chemistry +33|405|65774|4294967444|96.69|40.63|false|zach xylophone|2013-03-01 09:11:58.703292|29.06|debate +50|362|65711|4294967522|25.57|32.07|false|ulysses miller|2013-03-01 09:11:58.703156|60.81|yard duty +104|502|65611|4294967474|7.63|41.55|false|katie van buren|2013-03-01 09:11:58.703088|40.14|values clariffication +92|382|65639|4294967332|52.04|9.25|false|katie ichabod|2013-03-01 09:11:58.703123|47.45|opthamology +6|315|65560|4294967329|80.55|4.48|false|ethan ellison|2013-03-01 09:11:58.703323|52.81|xylophone band +91|451|65613|4294967377|65.38|6.63|true|yuri nixon|2013-03-01 09:11:58.703091|13.81|american history +77|435|65730|4294967502|5.47|10.48|true|holly ellison|2013-03-01 09:11:58.703113|94.39|linguistics +78|336|65784|4294967503|62.14|39.70|true|gabriella ovid|2013-03-01 09:11:58.703213|8.67|nap time +123|293|65580|4294967509|62.30|45.90|true|xavier underhill|2013-03-01 09:11:58.703294|66.74|industrial engineering +115|327|65562|4294967428|96.85|21.22|true|ethan robinson|2013-03-01 09:11:58.703290|82.31|chemistry +118|316|65732|4294967339|19.78|15.81|false|ulysses ichabod|2013-03-01 09:11:58.703110|13.61|forestry +4|286|65762|4294967375|77.46|6.52|true|katie robinson|2013-03-01 09:11:58.703242|36.69|study skills +88|509|65542|4294967377|40.08|20.26|false|irene underhill|2013-03-01 09:11:58.703126|83.03|debate +13|392|65738|4294967547|53.31|33.02|true|calvin brown|2013-03-01 09:11:58.703199|22.73|geology +105|470|65760|4294967420|96.71|8.42|true|gabriella polk|2013-03-01 09:11:58.703162|99.99|forestry +29|406|65753|4294967428|8.46|46.56|true|tom quirinius|2013-03-01 09:11:58.703079|62.35|yard duty +108|481|65580|4294967355|79.52|4.13|false|david young|2013-03-01 09:11:58.703311|1.56|joggying +95|487|65702|4294967549|12.92|37.95|false|mike ovid|2013-03-01 09:11:58.703317|96.45|industrial engineering +6|497|65552|4294967461|98.50|41.77|false|rachel ichabod|2013-03-01 09:11:58.703090|20.90|values clariffication +109|403|65748|4294967395|45.88|36.01|false|gabriella xylophone|2013-03-01 09:11:58.703169|29.74|undecided +27|412|65754|4294967541|8.11|13.72|true|tom young|2013-03-01 09:11:58.703259|37.65|quiet hour +22|362|65735|4294967391|88.01|17.73|true|fred young|2013-03-01 09:11:58.703214|60.37|topology +123|289|65645|4294967465|55.42|10.50|true|rachel ichabod|2013-03-01 09:11:58.703275|39.61|geology +56|389|65763|4294967318|85.41|3.94|false|ulysses white|2013-03-01 09:11:58.703324|46.06|yard duty +27|364|65789|4294967334|9.03|31.78|false|luke robinson|2013-03-01 09:11:58.703157|65.87|biology +5|496|65653|4294967327|14.66|7.55|false|luke ellison|2013-03-01 09:11:58.703168|68.92|linguistics +72|448|65651|4294967417|51.39|10.17|false|fred ichabod|2013-03-01 09:11:58.703311|22.77|philosophy +40|298|65784|4294967540|27.32|43.30|true|luke polk|2013-03-01 09:11:58.703254|19.10|yard duty +84|425|65588|4294967482|14.08|21.46|false|tom robinson|2013-03-01 09:11:58.703127|82.52|religion +19|436|65575|4294967403|23.25|41.24|true|irene allen|2013-03-01 09:11:58.703096|21.15|nap time +44|462|65705|4294967395|5.40|3.06|false|holly underhill|2013-03-01 09:11:58.703076|89.97|quiet hour +57|421|65735|4294967322|94.43|32.46|false|zach johnson|2013-03-01 09:11:58.703136|78.86|yard duty +19|263|65622|4294967349|20.30|18.39|false|jessica van buren|2013-03-01 09:11:58.703265|14.75|geology +113|330|65748|4294967310|95.94|43.04|false|sarah hernandez|2013-03-01 09:11:58.703275|12.14|values clariffication +101|451|65700|4294967303|35.79|37.53|false|tom polk|2013-03-01 09:11:58.703170|95.51|american history +108|330|65546|4294967472|36.79|42.85|false|victor johnson|2013-03-01 09:11:58.703133|4.64|undecided +69|317|65553|4294967403|80.00|4.80|false|ulysses white|2013-03-01 09:11:58.703108|28.80|quiet hour +91|412|65681|4294967398|41.91|48.08|true|zach ichabod|2013-03-01 09:11:58.703230|72.62|kindergarten +111|349|65721|4294967334|19.53|30.89|true|sarah ovid|2013-03-01 09:11:58.703307|57.66|religion +92|425|65732|4294967341|16.48|20.78|true|david king|2013-03-01 09:11:58.703127|4.44|study skills +60|330|65679|4294967547|38.59|31.78|true|mike laertes|2013-03-01 09:11:58.703201|15.36|philosophy +27|383|65716|4294967374|46.21|45.77|false|sarah thompson|2013-03-01 09:11:58.703160|5.75|american history +99|432|65768|4294967484|83.65|38.22|true|zach carson|2013-03-01 09:11:58.703144|75.64|nap time +58|441|65629|4294967318|90.68|44.05|true|jessica ichabod|2013-03-01 09:11:58.703232|17.68|biology +111|428|65613|4294967348|20.06|18.37|true|wendy ichabod|2013-03-01 09:11:58.703083|54.58|wind surfing +83|500|65767|4294967468|73.04|2.90|true|zach xylophone|2013-03-01 09:11:58.703113|55.12|mathematics +99|494|65715|4294967323|90.86|42.11|false|quinn ichabod|2013-03-01 09:11:58.703245|99.64|biology +2|300|65703|4294967309|36.68|16.48|false|oscar steinbeck|2013-03-01 09:11:58.703146|38.14|biology +98|309|65666|4294967336|84.58|18.84|true|priscilla johnson|2013-03-01 09:11:58.703117|88.45|zync studies +21|292|65784|4294967431|29.45|35.90|false|katie brown|2013-03-01 09:11:58.703138|62.91|quiet hour +-2|446|65790|4294967302|6.49|10.81|false|alice underhill|2013-03-01 09:11:58.703127|43.92|undecided +60|319|65578|4294967361|86.93|25.81|false|xavier white|2013-03-01 09:11:58.703088|78.39|undecided +11|345|65732|4294967327|7.80|11.70|false|irene nixon|2013-03-01 09:11:58.703318|53.57|wind surfing +110|426|65606|4294967512|20.14|14.02|true|holly allen|2013-03-01 09:11:58.703089|2.15|industrial engineering +32|272|65591|4294967307|58.90|34.73|false|irene underhill|2013-03-01 09:11:58.703135|58.40|topology +80|416|65608|4294967414|67.61|3.22|true|yuri falkner|2013-03-01 09:11:58.703239|22.16|geology +5|286|65743|4294967481|56.60|26.76|false|katie carson|2013-03-01 09:11:58.703146|51.62|values clariffication +76|456|65554|4294967416|49.40|37.74|true|ulysses steinbeck|2013-03-01 09:11:58.703113|92.24|biology +80|450|65604|4294967445|30.42|13.69|true|irene carson|2013-03-01 09:11:58.703169|98.93|undecided +13|309|65555|4294967366|59.08|34.92|false|victor polk|2013-03-01 09:11:58.703255|36.37|wind surfing +43|278|65688|4294967381|60.79|38.91|false|katie ichabod|2013-03-01 09:11:58.703237|60.66|kindergarten +16|392|65573|4294967518|50.88|49.35|true|calvin miller|2013-03-01 09:11:58.703126|31.42|chemistry +19|397|65552|4294967399|40.92|30.03|false|tom steinbeck|2013-03-01 09:11:58.703319|61.39|history +30|479|65777|4294967382|21.51|38.96|false|tom nixon|2013-03-01 09:11:58.703276|38.98|kindergarten +60|499|65546|4294967467|5.37|19.81|false|katie davidson|2013-03-01 09:11:58.703176|14.69|history +-1|497|65661|4294967447|51.17|44.94|false|xavier polk|2013-03-01 09:11:58.703211|5.50|religion +96|262|65706|4294967440|11.24|4.90|false|wendy hernandez|2013-03-01 09:11:58.703145|70.02|history +75|386|65623|4294967449|54.12|32.90|true|oscar nixon|2013-03-01 09:11:58.703252|44.44|zync studies +74|430|65570|4294967453|93.01|1.32|false|holly johnson|2013-03-01 09:11:58.703320|4.45|values clariffication +24|458|65542|4294967447|98.05|19.68|false|irene ellison|2013-03-01 09:11:58.703094|56.59|linguistics +72|429|65618|4294967544|18.36|47.69|false|alice white|2013-03-01 09:11:58.703267|35.01|opthamology +11|493|65603|4294967508|81.31|30.27|false|nick polk|2013-03-01 09:11:58.703159|33.00|industrial engineering +105|343|65605|4294967467|51.37|16.62|false|ethan zipper|2013-03-01 09:11:58.703126|76.95|linguistics +75|415|65669|4294967528|9.14|40.66|true|fred ellison|2013-03-01 09:11:58.703297|20.93|mathematics +6|344|65764|4294967326|79.68|21.27|true|mike laertes|2013-03-01 09:11:58.703286|19.78|philosophy +10|375|65600|4294967311|84.15|16.59|true|zach young|2013-03-01 09:11:58.703108|15.57|biology +16|503|65790|4294967454|84.73|48.11|true|priscilla allen|2013-03-01 09:11:58.703084|36.73|religion +84|499|65594|4294967359|21.95|4.33|true|david miller|2013-03-01 09:11:58.703157|69.79|history +75|369|65666|4294967465|28.30|7.63|true|fred polk|2013-03-01 09:11:58.703189|83.04|zync studies +83|345|65548|4294967456|20.46|17.87|false|luke laertes|2013-03-01 09:11:58.703233|90.38|zync studies +116|285|65672|4294967366|94.78|22.93|false|wendy nixon|2013-03-01 09:11:58.703093|76.34|forestry +117|474|65767|4294967428|51.18|47.51|false|priscilla xylophone|2013-03-01 09:11:58.703311|12.36|nap time +65|468|65639|4294967510|66.59|21.79|true|rachel nixon|2013-03-01 09:11:58.703129|85.92|quiet hour +16|288|65604|4294967531|1.93|37.32|false|priscilla brown|2013-03-01 09:11:58.703249|13.13|debate +-3|266|65736|4294967397|19.94|10.01|false|quinn ellison|2013-03-01 09:11:58.703232|88.94|forestry +22|364|65594|4294967394|83.98|44.24|false|zach nixon|2013-03-01 09:11:58.703113|44.76|debate +99|330|65604|4294967546|10.00|33.64|true|zach van buren|2013-03-01 09:11:58.703240|79.46|opthamology +79|463|65683|4294967328|21.62|48.23|true|bob underhill|2013-03-01 09:11:58.703236|27.03|american history +94|400|65705|4294967330|67.98|34.90|false|irene thompson|2013-03-01 09:11:58.703229|40.68|debate +62|451|65735|4294967373|69.25|32.44|true|zach brown|2013-03-01 09:11:58.703247|53.94|study skills +77|486|65698|4294967439|58.33|20.26|true|xavier garcia|2013-03-01 09:11:58.703120|12.59|zync studies +124|371|65627|4294967420|50.17|43.72|true|tom laertes|2013-03-01 09:11:58.703113|24.20|undecided +70|269|65779|4294967462|41.45|40.90|true|ethan zipper|2013-03-01 09:11:58.703106|5.58|chemistry +53|370|65560|4294967482|81.65|27.42|false|quinn underhill|2013-03-01 09:11:58.703123|10.70|undecided +119|454|65545|4294967440|56.56|33.80|true|bob xylophone|2013-03-01 09:11:58.703264|25.86|yard duty +63|337|65749|4294967522|44.13|6.34|true|victor davidson|2013-03-01 09:11:58.703238|34.91|linguistics +87|292|65547|4294967469|80.64|37.90|true|yuri johnson|2013-03-01 09:11:58.703232|90.75|education +124|439|65657|4294967381|66.29|41.53|false|yuri xylophone|2013-03-01 09:11:58.703186|10.62|industrial engineering +58|256|65543|4294967313|32.21|32.15|false|ethan thompson|2013-03-01 09:11:58.703108|21.23|religion +42|496|65547|4294967499|34.73|23.17|false|tom garcia|2013-03-01 09:11:58.703233|66.23|study skills +36|280|65610|4294967360|73.52|42.54|true|priscilla zipper|2013-03-01 09:11:58.703070|4.52|history +48|455|65669|4294967426|94.91|41.74|false|wendy robinson|2013-03-01 09:11:58.703133|46.92|debate +72|438|65606|4294967395|21.62|32.60|true|quinn thompson|2013-03-01 09:11:58.703202|23.09|linguistics +47|409|65601|4294967526|90.40|34.56|false|fred ellison|2013-03-01 09:11:58.703121|36.43|philosophy +45|496|65728|4294967508|7.41|25.85|true|oscar johnson|2013-03-01 09:11:58.703106|45.38|linguistics +58|503|65697|4294967417|89.42|39.57|true|quinn robinson|2013-03-01 09:11:58.703231|24.36|wind surfing +65|406|65616|4294967332|21.94|10.76|false|oscar falkner|2013-03-01 09:11:58.703229|70.76|philosophy +5|292|65702|4294967520|71.60|16.89|false|mike johnson|2013-03-01 09:11:58.703234|76.79|chemistry +75|437|65690|4294967430|62.00|47.25|true|alice davidson|2013-03-01 09:11:58.703241|14.33|american history +56|431|65766|4294967479|93.73|20.13|true|quinn nixon|2013-03-01 09:11:58.703172|48.02|linguistics +75|338|65713|4294967315|31.15|29.85|false|bob zipper|2013-03-01 09:11:58.703269|7.62|debate +50|286|65629|4294967352|21.00|12.70|true|tom brown|2013-03-01 09:11:58.703280|97.10|joggying +69|397|65681|4294967355|68.14|15.95|true|yuri quirinius|2013-03-01 09:11:58.703280|78.46|kindergarten +32|341|65573|4294967466|99.53|29.64|true|jessica nixon|2013-03-01 09:11:58.703239|46.00|wind surfing +21|451|65680|4294967430|63.21|47.66|true|calvin falkner|2013-03-01 09:11:58.703213|57.33|values clariffication +30|411|65600|4294967311|57.73|33.62|true|oscar falkner|2013-03-01 09:11:58.703287|36.56|chemistry +81|371|65785|4294967494|82.22|33.57|false|katie underhill|2013-03-01 09:11:58.703291|38.50|american history +103|434|65543|4294967493|57.15|3.24|false|priscilla king|2013-03-01 09:11:58.703113|9.98|yard duty +104|462|65790|4294967514|50.30|11.34|false|zach laertes|2013-03-01 09:11:58.703258|2.11|wind surfing +53|334|65769|4294967385|68.70|24.14|true|zach garcia|2013-03-01 09:11:58.703097|46.37|debate +96|456|65646|4294967411|50.69|34.08|true|gabriella nixon|2013-03-01 09:11:58.703177|77.95|nap time +95|367|65657|4294967396|27.13|27.49|true|oscar ellison|2013-03-01 09:11:58.703221|62.81|xylophone band +120|308|65664|4294967358|69.41|12.30|true|ulysses falkner|2013-03-01 09:11:58.703320|3.46|opthamology +40|437|65756|4294967520|15.68|37.01|true|rachel king|2013-03-01 09:11:58.703277|75.57|american history +75|281|65589|4294967436|64.25|49.97|true|victor white|2013-03-01 09:11:58.703213|96.71|philosophy +83|432|65756|4294967343|53.50|44.33|true|ulysses robinson|2013-03-01 09:11:58.703309|86.76|philosophy +79|495|65701|4294967459|55.37|36.27|true|ulysses ichabod|2013-03-01 09:11:58.703153|30.60|mathematics +35|360|65777|4294967548|1.24|33.12|false|xavier king|2013-03-01 09:11:58.703198|56.70|study skills +118|432|65725|4294967474|26.39|45.59|true|irene johnson|2013-03-01 09:11:58.703234|56.79|industrial engineering +98|500|65720|4294967521|64.57|15.83|true|calvin white|2013-03-01 09:11:58.703280|71.83|history +70|451|65692|4294967501|87.30|5.99|false|wendy miller|2013-03-01 09:11:58.703187|86.66|biology +57|489|65606|4294967549|62.08|31.59|true|irene hernandez|2013-03-01 09:11:58.703131|12.56|xylophone band +76|494|65771|4294967343|85.91|21.59|true|yuri ichabod|2013-03-01 09:11:58.703109|92.93|chemistry +78|435|65753|4294967459|32.07|31.67|false|jessica davidson|2013-03-01 09:11:58.703153|67.73|joggying +45|279|65581|4294967479|60.82|26.41|false|ulysses zipper|2013-03-01 09:11:58.703126|48.11|study skills +40|383|65626|4294967440|83.01|48.16|false|katie miller|2013-03-01 09:11:58.703172|30.80|study skills +86|375|65555|4294967438|7.96|6.63|false|nick ellison|2013-03-01 09:11:58.703083|65.81|study skills +14|363|65564|4294967404|44.58|3.51|true|nick white|2013-03-01 09:11:58.703205|48.83|joggying +72|337|65660|4294967498|82.85|5.02|true|fred king|2013-03-01 09:11:58.703071|57.47|xylophone band +120|494|65578|4294967483|49.96|22.34|true|david zipper|2013-03-01 09:11:58.703146|77.60|kindergarten +29|413|65730|4294967325|83.27|14.91|false|calvin garcia|2013-03-01 09:11:58.703176|60.58|industrial engineering +15|272|65632|4294967547|76.02|3.27|true|bob robinson|2013-03-01 09:11:58.703082|25.77|religion +10|323|65659|4294967455|51.37|32.04|true|katie ichabod|2013-03-01 09:11:58.703299|34.63|linguistics +68|298|65629|4294967328|85.49|46.61|true|tom zipper|2013-03-01 09:11:58.703083|47.08|philosophy +92|437|65743|4294967350|0.11|11.01|true|ulysses zipper|2013-03-01 09:11:58.703166|58.54|quiet hour +62|269|65603|4294967414|55.12|14.55|true|katie falkner|2013-03-01 09:11:58.703125|63.00|nap time +-3|343|65783|4294967378|7.10|18.16|true|ulysses carson|2013-03-01 09:11:58.703253|96.99|mathematics +9|332|65758|4294967471|34.89|22.99|false|fred van buren|2013-03-01 09:11:58.703186|67.89|debate +95|299|65605|4294967391|28.73|35.47|true|bob ellison|2013-03-01 09:11:58.703222|34.54|joggying +121|338|65731|4294967479|66.71|29.02|false|katie zipper|2013-03-01 09:11:58.703217|86.02|forestry +114|402|65699|4294967441|69.19|49.64|false|luke van buren|2013-03-01 09:11:58.703152|3.65|philosophy +119|350|65661|4294967549|96.58|35.36|false|fred white|2013-03-01 09:11:58.703254|13.33|opthamology +113|382|65566|4294967469|92.65|7.54|true|ethan ovid|2013-03-01 09:11:58.703283|58.03|linguistics +75|285|65740|4294967506|40.62|32.14|false|mike zipper|2013-03-01 09:11:58.703313|87.38|history +41|427|65674|4294967527|92.19|33.31|true|ulysses miller|2013-03-01 09:11:58.703286|63.87|wind surfing +105|475|65631|4294967507|14.89|37.86|false|gabriella underhill|2013-03-01 09:11:58.703162|86.78|religion +90|400|65772|4294967532|26.72|33.65|true|holly allen|2013-03-01 09:11:58.703148|0.25|debate +79|363|65629|4294967395|9.26|35.14|true|quinn quirinius|2013-03-01 09:11:58.703138|65.45|chemistry +83|434|65734|4294967308|6.16|16.37|true|zach hernandez|2013-03-01 09:11:58.703256|75.10|joggying +64|489|65646|4294967490|78.70|22.63|true|alice young|2013-03-01 09:11:58.703234|78.56|zync studies +31|468|65758|4294967432|46.22|12.92|true|mike steinbeck|2013-03-01 09:11:58.703306|75.59|education +90|340|65738|4294967461|39.43|22.38|true|yuri brown|2013-03-01 09:11:58.703264|54.93|philosophy +93|268|65664|4294967327|27.34|28.49|true|gabriella polk|2013-03-01 09:11:58.703244|80.69|topology +3|423|65539|4294967489|94.29|42.38|true|tom nixon|2013-03-01 09:11:58.703135|16.00|topology +64|353|65728|4294967345|76.95|43.36|false|ulysses xylophone|2013-03-01 09:11:58.703224|69.60|joggying +15|431|65596|4294967406|69.52|46.13|true|holly white|2013-03-01 09:11:58.703175|33.00|industrial engineering +37|469|65644|4294967315|51.18|6.22|false|nick underhill|2013-03-01 09:11:58.703325|62.72|industrial engineering +59|288|65654|4294967331|25.76|25.92|false|bob allen|2013-03-01 09:11:58.703139|53.06|values clariffication +106|492|65769|4294967468|20.58|45.03|true|jessica allen|2013-03-01 09:11:58.703118|31.50|opthamology +49|459|65672|4294967428|7.73|13.03|false|priscilla johnson|2013-03-01 09:11:58.703236|10.32|chemistry +63|468|65640|4294967496|65.03|22.02|true|mike garcia|2013-03-01 09:11:58.703271|9.89|undecided +61|443|65634|4294967415|21.32|37.23|false|rachel polk|2013-03-01 09:11:58.703178|71.02|american history +22|281|65581|4294967393|55.22|28.79|true|luke hernandez|2013-03-01 09:11:58.703270|33.92|religion +45|279|65764|4294967538|72.31|19.00|false|xavier falkner|2013-03-01 09:11:58.703238|40.51|nap time +61|407|65768|4294967429|42.60|3.04|true|zach xylophone|2013-03-01 09:11:58.703100|25.98|kindergarten +11|303|65721|4294967308|68.93|41.13|true|gabriella garcia|2013-03-01 09:11:58.703150|86.70|education +66|468|65611|4294967432|95.47|1.90|false|oscar falkner|2013-03-01 09:11:58.703178|27.62|industrial engineering +81|506|65579|4294967368|79.66|2.09|true|nick brown|2013-03-01 09:11:58.703288|7.49|nap time +81|369|65607|4294967515|7.15|37.01|false|holly ichabod|2013-03-01 09:11:58.703090|69.02|biology +59|349|65781|4294967350|49.53|1.15|false|oscar van buren|2013-03-01 09:11:58.703111|89.75|forestry +21|372|65650|4294967301|61.86|14.19|true|alice quirinius|2013-03-01 09:11:58.703180|43.84|nap time +-1|336|65702|4294967539|11.03|44.94|true|yuri robinson|2013-03-01 09:11:58.703167|74.33|zync studies +-2|352|65600|4294967320|75.72|25.21|true|katie thompson|2013-03-01 09:11:58.703138|36.31|biology +97|406|65545|4294967445|81.27|47.73|true|katie laertes|2013-03-01 09:11:58.703077|55.39|debate +62|496|65743|4294967386|34.07|11.01|true|zach quirinius|2013-03-01 09:11:58.703301|22.07|study skills +20|307|65691|4294967315|13.88|21.29|false|rachel young|2013-03-01 09:11:58.703241|2.82|debate +120|278|65555|4294967515|21.33|5.07|false|sarah ellison|2013-03-01 09:11:58.703135|35.63|zync studies +21|297|65765|4294967529|73.12|17.27|false|alice king|2013-03-01 09:11:58.703278|4.28|topology +53|361|65594|4294967368|87.69|21.61|true|sarah steinbeck|2013-03-01 09:11:58.703110|66.09|undecided +2|272|65544|4294967428|18.56|43.34|true|zach polk|2013-03-01 09:11:58.703176|77.62|debate +33|444|65564|4294967413|15.37|27.16|true|alice polk|2013-03-01 09:11:58.703318|7.90|kindergarten +91|329|65692|4294967365|31.16|25.15|false|wendy ovid|2013-03-01 09:11:58.703154|5.73|zync studies +101|457|65663|4294967532|39.03|24.25|true|bob thompson|2013-03-01 09:11:58.703084|55.71|religion +27|305|65616|4294967547|76.34|29.37|true|wendy nixon|2013-03-01 09:11:58.703198|94.05|biology +-1|282|65777|4294967314|37.27|34.32|true|oscar garcia|2013-03-01 09:11:58.703093|91.40|forestry +73|412|65683|4294967458|85.99|48.25|false|jessica steinbeck|2013-03-01 09:11:58.703150|45.98|values clariffication +35|316|65751|4294967436|47.62|41.68|false|fred xylophone|2013-03-01 09:11:58.703219|67.34|values clariffication +83|310|65737|4294967399|49.52|23.24|false|gabriella ellison|2013-03-01 09:11:58.703262|93.39|history +98|307|65588|4294967542|63.52|2.59|false|yuri allen|2013-03-01 09:11:58.703295|42.90|history +113|260|65600|4294967336|34.54|5.22|true|priscilla brown|2013-03-01 09:11:58.703115|7.92|chemistry +69|449|65665|4294967381|51.06|33.25|true|ulysses quirinius|2013-03-01 09:11:58.703094|80.72|chemistry +53|299|65639|4294967546|9.51|10.41|true|mike brown|2013-03-01 09:11:58.703209|54.88|chemistry +87|415|65725|4294967341|73.19|16.63|true|mike ovid|2013-03-01 09:11:58.703083|55.89|american history +31|389|65623|4294967465|14.71|34.87|false|bob white|2013-03-01 09:11:58.703271|33.69|yard duty +107|293|65701|4294967482|31.76|12.35|false|luke zipper|2013-03-01 09:11:58.703079|74.91|industrial engineering +5|305|65780|4294967448|23.84|37.07|false|gabriella steinbeck|2013-03-01 09:11:58.703226|78.18|mathematics +77|273|65738|4294967430|32.03|14.47|false|wendy quirinius|2013-03-01 09:11:58.703228|41.11|linguistics +65|317|65665|4294967344|56.07|35.85|true|david laertes|2013-03-01 09:11:58.703255|66.81|quiet hour +31|276|65757|4294967359|40.15|30.34|true|tom ichabod|2013-03-01 09:11:58.703111|41.01|undecided +26|494|65685|4294967418|37.81|1.87|true|david quirinius|2013-03-01 09:11:58.703233|15.35|education +94|485|65617|4294967484|42.32|49.09|false|ethan davidson|2013-03-01 09:11:58.703266|59.68|wind surfing +68|482|65772|4294967444|75.25|43.37|false|bob laertes|2013-03-01 09:11:58.703236|95.13|religion +17|279|65555|4294967510|24.16|30.74|true|rachel thompson|2013-03-01 09:11:58.703189|64.46|topology +34|306|65676|4294967373|81.70|1.92|false|ulysses polk|2013-03-01 09:11:58.703180|36.50|chemistry +94|426|65703|4294967323|70.46|26.79|true|wendy steinbeck|2013-03-01 09:11:58.703135|24.04|linguistics +112|322|65608|4294967408|9.00|30.71|true|zach xylophone|2013-03-01 09:11:58.703275|41.21|zync studies +90|441|65699|4294967334|39.28|39.93|false|nick ichabod|2013-03-01 09:11:58.703173|54.68|joggying +33|391|65646|4294967329|59.47|27.63|false|rachel allen|2013-03-01 09:11:58.703268|37.78|chemistry +86|482|65557|4294967311|89.55|44.80|true|nick white|2013-03-01 09:11:58.703290|6.92|forestry +97|417|65562|4294967549|3.61|36.42|false|yuri polk|2013-03-01 09:11:58.703272|71.59|history +80|280|65739|4294967377|39.11|22.88|false|luke laertes|2013-03-01 09:11:58.703093|24.65|education +17|420|65612|4294967522|99.69|13.02|true|david thompson|2013-03-01 09:11:58.703139|25.97|forestry +81|413|65559|4294967387|98.95|13.09|false|ulysses xylophone|2013-03-01 09:11:58.703290|23.55|debate +93|263|65638|4294967456|3.91|30.13|false|rachel underhill|2013-03-01 09:11:58.703103|21.39|philosophy +8|414|65788|4294967327|70.78|45.44|false|oscar allen|2013-03-01 09:11:58.703212|48.38|education +68|492|65658|4294967363|74.64|10.88|true|ulysses quirinius|2013-03-01 09:11:58.703265|38.54|geology +107|391|65615|4294967547|8.03|7.88|false|fred van buren|2013-03-01 09:11:58.703226|77.44|kindergarten +97|463|65554|4294967355|10.18|42.62|true|fred carson|2013-03-01 09:11:58.703134|55.76|joggying +85|441|65669|4294967455|25.01|46.53|true|ulysses underhill|2013-03-01 09:11:58.703139|48.73|industrial engineering +35|371|65783|4294967356|18.42|24.74|true|sarah zipper|2013-03-01 09:11:58.703102|83.13|xylophone band +64|395|65653|4294967515|96.15|16.73|true|zach johnson|2013-03-01 09:11:58.703239|84.83|kindergarten +111|273|65693|4294967416|96.37|48.16|false|nick hernandez|2013-03-01 09:11:58.703290|14.71|zync studies +54|436|65695|4294967454|15.29|36.76|true|ethan davidson|2013-03-01 09:11:58.703192|93.62|values clariffication +42|314|65701|4294967444|99.91|41.83|true|yuri ellison|2013-03-01 09:11:58.703214|5.50|opthamology +106|324|65730|4294967544|85.98|47.75|true|oscar young|2013-03-01 09:11:58.703321|18.19|industrial engineering +48|429|65784|4294967481|8.03|49.80|false|yuri hernandez|2013-03-01 09:11:58.703316|12.71|geology +27|288|65785|4294967438|85.86|1.98|true|irene young|2013-03-01 09:11:58.703092|3.07|linguistics +6|405|65735|4294967321|31.43|23.93|true|katie van buren|2013-03-01 09:11:58.703235|19.96|history +107|447|65713|4294967426|92.32|37.88|false|victor laertes|2013-03-01 09:11:58.703144|33.88|quiet hour +55|277|65692|4294967382|83.25|30.65|true|zach ichabod|2013-03-01 09:11:58.703292|89.58|undecided +82|349|65570|4294967482|73.17|3.12|true|bob allen|2013-03-01 09:11:58.703107|95.06|values clariffication +112|495|65670|4294967415|19.07|25.44|true|yuri nixon|2013-03-01 09:11:58.703268|61.12|debate +-2|331|65540|4294967334|33.49|7.64|false|fred allen|2013-03-01 09:11:58.703191|74.25|philosophy +52|300|65585|4294967379|64.96|46.74|false|wendy steinbeck|2013-03-01 09:11:58.703070|34.22|opthamology +61|310|65665|4294967514|70.23|25.88|true|quinn young|2013-03-01 09:11:58.703108|22.72|quiet hour +96|350|65639|4294967505|85.35|20.58|true|calvin johnson|2013-03-01 09:11:58.703267|41.13|geology +89|356|65637|4294967435|17.40|22.36|false|yuri brown|2013-03-01 09:11:58.703235|59.46|opthamology +43|441|65641|4294967483|98.02|49.56|false|priscilla allen|2013-03-01 09:11:58.703161|27.52|industrial engineering +87|431|65728|4294967412|68.66|46.60|false|victor carson|2013-03-01 09:11:58.703242|80.77|yard duty +3|440|65781|4294967439|20.27|33.89|false|calvin carson|2013-03-01 09:11:58.703270|21.28|philosophy +41|509|65574|4294967470|39.42|32.40|false|irene carson|2013-03-01 09:11:58.703158|9.18|religion +56|348|65747|4294967370|29.40|38.78|false|bob quirinius|2013-03-01 09:11:58.703299|76.16|linguistics +120|352|65745|4294967433|77.94|43.03|false|irene ellison|2013-03-01 09:11:58.703108|83.81|biology +76|290|65546|4294967306|41.47|31.00|true|jessica davidson|2013-03-01 09:11:58.703265|31.93|kindergarten +22|411|65764|4294967466|54.20|27.15|false|ulysses white|2013-03-01 09:11:58.703285|59.46|philosophy +52|256|65741|4294967317|54.80|8.40|true|oscar steinbeck|2013-03-01 09:11:58.703132|33.47|zync studies +15|270|65781|4294967429|46.48|41.04|false|holly garcia|2013-03-01 09:11:58.703259|44.33|quiet hour +59|324|65659|4294967545|69.45|39.01|false|rachel thompson|2013-03-01 09:11:58.703090|99.86|study skills +62|287|65560|4294967307|8.41|0.54|false|xavier allen|2013-03-01 09:11:58.703239|64.94|topology +14|308|65759|4294967371|80.15|11.78|false|luke garcia|2013-03-01 09:11:58.703188|29.19|education +20|345|65635|4294967423|34.21|1.25|false|ulysses falkner|2013-03-01 09:11:58.703223|3.00|kindergarten +7|410|65553|4294967516|48.63|28.21|false|katie nixon|2013-03-01 09:11:58.703115|66.91|forestry +87|288|65753|4294967505|46.71|37.70|false|xavier nixon|2013-03-01 09:11:58.703257|1.75|values clariffication +87|482|65575|4294967387|91.24|33.71|false|zach underhill|2013-03-01 09:11:58.703276|54.29|biology +26|421|65672|4294967328|11.09|11.53|false|mike hernandez|2013-03-01 09:11:58.703079|89.09|chemistry +123|411|65554|4294967480|70.16|49.58|true|wendy xylophone|2013-03-01 09:11:58.703126|8.97|topology +18|319|65625|4294967466|27.90|45.55|false|gabriella van buren|2013-03-01 09:11:58.703256|11.16|forestry +44|341|65691|4294967550|49.94|19.99|false|irene thompson|2013-03-01 09:11:58.703239|72.58|education +4|424|65784|4294967516|81.44|14.22|false|gabriella xylophone|2013-03-01 09:11:58.703150|13.81|mathematics +119|405|65735|4294967526|77.39|34.87|true|nick zipper|2013-03-01 09:11:58.703123|89.24|religion +51|471|65764|4294967318|13.43|12.00|false|ethan garcia|2013-03-01 09:11:58.703221|49.44|joggying +47|392|65601|4294967547|60.26|27.80|false|sarah ovid|2013-03-01 09:11:58.703107|55.45|philosophy +15|308|65656|4294967362|58.45|9.34|false|sarah young|2013-03-01 09:11:58.703109|24.14|joggying +28|392|65726|4294967506|59.66|28.53|false|priscilla hernandez|2013-03-01 09:11:58.703316|4.85|nap time +55|472|65638|4294967413|15.34|41.44|false|mike brown|2013-03-01 09:11:58.703149|33.92|chemistry +122|292|65715|4294967471|72.77|22.30|false|victor ichabod|2013-03-01 09:11:58.703075|61.29|kindergarten +110|297|65744|4294967445|38.59|37.28|false|oscar polk|2013-03-01 09:11:58.703101|69.98|xylophone band +98|364|65720|4294967509|65.58|33.49|false|fred thompson|2013-03-01 09:11:58.703318|10.71|debate +66|476|65726|4294967354|15.80|26.36|true|xavier miller|2013-03-01 09:11:58.703154|0.66|geology +3|434|65675|4294967450|20.56|7.54|true|zach ellison|2013-03-01 09:11:58.703305|6.00|religion +100|435|65609|4294967545|50.49|7.44|false|ethan steinbeck|2013-03-01 09:11:58.703194|62.43|joggying +88|388|65661|4294967456|91.34|14.96|false|katie zipper|2013-03-01 09:11:58.703081|29.59|quiet hour +108|420|65647|4294967481|95.32|27.58|true|rachel king|2013-03-01 09:11:58.703139|13.96|biology +24|476|65666|4294967432|5.20|42.35|false|zach robinson|2013-03-01 09:11:58.703083|96.22|mathematics +101|302|65784|4294967505|78.03|1.33|false|quinn steinbeck|2013-03-01 09:11:58.703141|25.71|values clariffication +8|462|65556|4294967512|25.16|19.11|false|mike miller|2013-03-01 09:11:58.703115|82.53|nap time +89|396|65635|4294967379|31.70|48.06|true|holly hernandez|2013-03-01 09:11:58.703284|92.74|undecided +46|460|65631|4294967327|76.06|4.27|true|holly underhill|2013-03-01 09:11:58.703289|21.59|philosophy +100|345|65601|4294967349|81.98|41.46|true|priscilla underhill|2013-03-01 09:11:58.703210|70.75|philosophy +6|427|65540|4294967502|53.54|26.12|false|calvin young|2013-03-01 09:11:58.703110|98.41|values clariffication +15|441|65752|4294967535|56.94|47.78|false|rachel garcia|2013-03-01 09:11:58.703070|44.38|joggying +94|256|65558|4294967506|71.32|27.07|false|alice robinson|2013-03-01 09:11:58.703135|27.67|religion +17|447|65603|4294967429|70.12|29.68|true|ethan miller|2013-03-01 09:11:58.703100|42.88|chemistry +99|320|65709|4294967435|60.39|19.22|false|fred carson|2013-03-01 09:11:58.703260|86.75|undecided +29|511|65724|4294967313|84.06|9.60|false|calvin nixon|2013-03-01 09:11:58.703308|20.85|opthamology +32|290|65698|4294967446|14.05|49.94|true|holly miller|2013-03-01 09:11:58.703214|15.87|industrial engineering +120|368|65788|4294967441|90.15|21.18|true|mike polk|2013-03-01 09:11:58.703150|21.66|xylophone band +79|318|65752|4294967432|74.62|14.22|true|quinn zipper|2013-03-01 09:11:58.703207|82.75|geology +78|459|65779|4294967526|41.15|28.60|false|luke zipper|2013-03-01 09:11:58.703127|37.74|industrial engineering +77|442|65645|4294967505|81.66|29.02|false|ethan ichabod|2013-03-01 09:11:58.703096|42.02|debate +3|369|65642|4294967505|45.26|12.90|true|irene young|2013-03-01 09:11:58.703180|75.25|american history +81|508|65545|4294967503|47.35|6.26|true|alice carson|2013-03-01 09:11:58.703268|98.44|undecided +65|388|65626|4294967340|74.51|9.84|true|zach king|2013-03-01 09:11:58.703168|21.11|topology +56|456|65650|4294967393|92.24|24.26|false|bob laertes|2013-03-01 09:11:58.703101|9.94|nap time +-2|395|65778|4294967460|56.76|37.52|true|luke xylophone|2013-03-01 09:11:58.703071|97.42|chemistry +56|300|65595|4294967392|64.37|3.17|true|calvin zipper|2013-03-01 09:11:58.703259|39.04|xylophone band +87|314|65674|4294967499|8.21|21.99|false|mike young|2013-03-01 09:11:58.703234|72.64|topology +59|418|65626|4294967473|75.88|37.25|false|tom ichabod|2013-03-01 09:11:58.703222|81.58|study skills +124|338|65742|4294967456|23.53|16.75|true|mike ellison|2013-03-01 09:11:58.703082|79.57|yard duty +94|387|65543|4294967316|24.79|27.31|true|irene polk|2013-03-01 09:11:58.703194|68.50|mathematics +26|401|65700|4294967407|72.10|16.84|true|jessica xylophone|2013-03-01 09:11:58.703211|68.15|debate +45|415|65590|4294967357|24.63|38.08|true|irene carson|2013-03-01 09:11:58.703313|50.13|biology +103|400|65624|4294967377|52.82|40.10|true|calvin king|2013-03-01 09:11:58.703291|95.83|industrial engineering +35|289|65643|4294967390|41.80|30.11|true|jessica xylophone|2013-03-01 09:11:58.703089|33.12|debate +69|326|65704|4294967449|35.24|37.10|false|luke robinson|2013-03-01 09:11:58.703308|29.79|zync studies +113|364|65709|4294967548|39.26|31.84|true|rachel laertes|2013-03-01 09:11:58.703286|47.70|american history +94|370|65631|4294967306|61.99|47.99|false|david underhill|2013-03-01 09:11:58.703109|3.68|history +122|398|65693|4294967445|46.28|26.30|true|luke van buren|2013-03-01 09:11:58.703206|77.30|forestry +83|428|65566|4294967522|7.16|47.46|false|gabriella nixon|2013-03-01 09:11:58.703098|37.12|joggying +82|271|65710|4294967437|16.20|27.84|true|ulysses johnson|2013-03-01 09:11:58.703194|83.89|history +113|284|65774|4294967445|75.88|10.17|false|xavier robinson|2013-03-01 09:11:58.703169|88.05|linguistics +39|419|65721|4294967489|99.21|16.98|false|xavier underhill|2013-03-01 09:11:58.703121|10.44|geology +8|270|65575|4294967396|93.77|36.42|true|yuri thompson|2013-03-01 09:11:58.703217|67.41|wind surfing +7|259|65544|4294967333|43.12|37.09|false|irene polk|2013-03-01 09:11:58.703117|36.99|geology +17|389|65577|4294967536|69.41|3.35|false|tom quirinius|2013-03-01 09:11:58.703281|1.52|geology +86|434|65572|4294967297|43.73|33.56|true|katie white|2013-03-01 09:11:58.703130|8.86|topology +1|465|65571|4294967446|20.17|48.74|true|gabriella white|2013-03-01 09:11:58.703169|80.15|debate +117|481|65651|4294967434|96.41|36.20|true|rachel young|2013-03-01 09:11:58.703095|43.93|history +31|450|65579|4294967386|29.86|4.20|false|ulysses robinson|2013-03-01 09:11:58.703207|78.35|joggying +94|437|65779|4294967548|52.62|46.79|true|victor ovid|2013-03-01 09:11:58.703163|61.89|biology +22|443|65673|4294967299|57.50|21.12|false|oscar laertes|2013-03-01 09:11:58.703088|86.28|education +45|394|65773|4294967468|58.95|48.27|false|zach allen|2013-03-01 09:11:58.703153|60.86|xylophone band +14|285|65542|4294967395|38.74|26.38|true|victor steinbeck|2013-03-01 09:11:58.703149|25.14|debate +32|356|65729|4294967323|52.21|47.71|true|irene hernandez|2013-03-01 09:11:58.703127|95.89|chemistry +83|459|65711|4294967450|15.77|5.97|false|gabriella thompson|2013-03-01 09:11:58.703270|67.24|industrial engineering +12|454|65649|4294967468|1.56|3.77|true|holly polk|2013-03-01 09:11:58.703289|90.53|linguistics +82|416|65619|4294967496|97.50|42.89|true|rachel zipper|2013-03-01 09:11:58.703176|15.82|wind surfing +8|385|65702|4294967377|28.45|19.92|false|nick allen|2013-03-01 09:11:58.703280|35.42|opthamology +15|364|65675|4294967460|90.03|30.72|true|david laertes|2013-03-01 09:11:58.703313|34.04|forestry +50|454|65659|4294967364|96.43|7.12|true|calvin underhill|2013-03-01 09:11:58.703079|98.15|religion +96|505|65780|4294967362|47.04|47.38|false|victor nixon|2013-03-01 09:11:58.703191|43.65|industrial engineering +113|431|65630|4294967495|46.08|34.97|false|victor ellison|2013-03-01 09:11:58.703070|85.40|chemistry +38|268|65709|4294967425|71.75|2.67|true|david young|2013-03-01 09:11:58.703269|41.68|biology +-2|262|65741|4294967546|55.95|46.97|true|yuri laertes|2013-03-01 09:11:58.703201|62.11|wind surfing +29|463|65776|4294967451|55.36|20.69|true|oscar xylophone|2013-03-01 09:11:58.703314|8.08|yard duty +43|404|65712|4294967472|36.68|15.20|false|quinn ichabod|2013-03-01 09:11:58.703303|43.26|values clariffication +37|338|65545|4294967482|62.70|31.92|true|alice ichabod|2013-03-01 09:11:58.703114|99.08|study skills +-2|371|65642|4294967444|15.26|0.84|false|tom van buren|2013-03-01 09:11:58.703291|31.06|chemistry +82|503|65683|4294967460|73.06|31.31|false|jessica garcia|2013-03-01 09:11:58.703082|39.09|biology +25|324|65721|4294967307|36.53|20.89|true|calvin ichabod|2013-03-01 09:11:58.703298|75.11|chemistry +45|377|65605|4294967322|53.27|7.12|true|priscilla ovid|2013-03-01 09:11:58.703093|39.81|geology +64|475|65738|4294967454|1.90|47.07|false|ulysses ovid|2013-03-01 09:11:58.703154|83.94|mathematics +58|299|65585|4294967540|81.41|10.89|true|victor van buren|2013-03-01 09:11:58.703070|86.85|history +124|276|65706|4294967352|80.15|30.99|false|victor young|2013-03-01 09:11:58.703139|14.91|quiet hour +6|402|65696|4294967500|52.52|21.78|true|quinn thompson|2013-03-01 09:11:58.703160|43.82|wind surfing +65|257|65711|4294967307|60.88|9.86|false|rachel robinson|2013-03-01 09:11:58.703171|14.21|chemistry +10|278|65602|4294967414|82.34|8.72|false|jessica quirinius|2013-03-01 09:11:58.703077|29.30|industrial engineering +16|335|65547|4294967419|80.31|49.40|false|nick johnson|2013-03-01 09:11:58.703310|70.54|zync studies +7|436|65715|4294967482|81.98|10.83|true|nick underhill|2013-03-01 09:11:58.703163|25.36|geology +12|494|65566|4294967369|28.59|25.29|false|sarah garcia|2013-03-01 09:11:58.703107|85.09|wind surfing +62|502|65707|4294967347|5.22|41.12|true|zach laertes|2013-03-01 09:11:58.703188|75.56|history +81|398|65707|4294967541|50.37|30.98|false|sarah young|2013-03-01 09:11:58.703263|45.86|nap time +122|340|65684|4294967463|70.18|20.12|false|nick zipper|2013-03-01 09:11:58.703158|27.47|topology +32|314|65636|4294967354|73.88|29.09|false|irene ichabod|2013-03-01 09:11:58.703212|26.93|study skills +81|275|65641|4294967527|29.91|14.69|false|holly steinbeck|2013-03-01 09:11:58.703282|67.70|chemistry +88|397|65725|4294967453|49.94|34.26|true|luke polk|2013-03-01 09:11:58.703110|12.73|nap time +98|344|65570|4294967478|10.37|43.65|false|victor young|2013-03-01 09:11:58.703323|88.11|religion +103|389|65594|4294967541|49.66|29.09|true|rachel underhill|2013-03-01 09:11:58.703137|73.56|topology +103|464|65539|4294967367|50.68|14.46|true|katie xylophone|2013-03-01 09:11:58.703287|8.85|philosophy +88|453|65750|4294967365|59.51|20.04|true|priscilla van buren|2013-03-01 09:11:58.703187|91.90|nap time +12|401|65665|4294967410|68.11|26.14|true|zach miller|2013-03-01 09:11:58.703239|68.24|biology +13|334|65622|4294967372|23.39|37.98|true|tom quirinius|2013-03-01 09:11:58.703175|58.78|opthamology +80|289|65633|4294967305|30.64|10.76|false|nick ellison|2013-03-01 09:11:58.703242|70.08|nap time +122|309|65722|4294967481|15.14|27.91|true|fred hernandez|2013-03-01 09:11:58.703263|26.80|debate +12|438|65548|4294967407|51.15|40.72|false|rachel brown|2013-03-01 09:11:58.703205|57.12|yard duty +72|468|65549|4294967399|79.77|4.58|false|xavier thompson|2013-03-01 09:11:58.703221|19.68|education +49|399|65787|4294967308|21.33|0.97|true|zach allen|2013-03-01 09:11:58.703283|54.09|mathematics +82|267|65606|4294967415|58.82|24.82|false|oscar thompson|2013-03-01 09:11:58.703185|59.26|opthamology +101|279|65610|4294967330|78.63|14.39|false|irene king|2013-03-01 09:11:58.703138|94.99|values clariffication +33|461|65748|4294967298|14.18|44.02|false|luke robinson|2013-03-01 09:11:58.703082|78.22|chemistry +113|313|65666|4294967359|47.01|14.86|true|oscar miller|2013-03-01 09:11:58.703242|18.25|forestry +112|294|65745|4294967456|85.63|32.70|false|nick van buren|2013-03-01 09:11:58.703257|41.08|study skills +23|391|65697|4294967435|11.61|36.09|true|fred ellison|2013-03-01 09:11:58.703127|78.36|american history +13|508|65720|4294967311|59.87|30.06|true|irene white|2013-03-01 09:11:58.703223|97.56|education +124|355|65637|4294967326|78.28|24.78|false|ethan nixon|2013-03-01 09:11:58.703142|84.78|industrial engineering +21|418|65743|4294967315|93.32|4.33|true|zach young|2013-03-01 09:11:58.703232|40.39|biology +50|332|65750|4294967500|32.21|44.89|false|katie xylophone|2013-03-01 09:11:58.703115|38.31|quiet hour +36|267|65580|4294967503|17.68|25.04|false|zach steinbeck|2013-03-01 09:11:58.703319|34.54|mathematics +57|387|65758|4294967521|44.64|14.32|false|tom thompson|2013-03-01 09:11:58.703112|90.78|yard duty +53|477|65707|4294967515|65.28|29.47|true|xavier laertes|2013-03-01 09:11:58.703169|27.01|chemistry +98|275|65707|4294967495|83.25|8.20|false|oscar nixon|2013-03-01 09:11:58.703093|6.76|history +9|301|65717|4294967474|81.34|35.65|false|bob miller|2013-03-01 09:11:58.703206|34.95|study skills +4|487|65655|4294967479|60.66|21.72|false|priscilla falkner|2013-03-01 09:11:58.703127|55.94|yard duty +30|428|65544|4294967383|42.82|15.35|true|wendy davidson|2013-03-01 09:11:58.703143|45.43|philosophy +65|290|65542|4294967389|5.77|12.59|false|xavier brown|2013-03-01 09:11:58.703185|11.15|biology +15|355|65630|4294967414|76.78|45.02|false|nick davidson|2013-03-01 09:11:58.703207|42.93|industrial engineering +75|346|65556|4294967466|65.24|36.77|true|mike johnson|2013-03-01 09:11:58.703256|70.53|biology +54|438|65759|4294967506|67.49|48.58|false|oscar thompson|2013-03-01 09:11:58.703134|9.76|philosophy +63|348|65669|4294967536|36.30|2.02|false|quinn ovid|2013-03-01 09:11:58.703108|62.77|xylophone band +106|374|65784|4294967401|58.98|34.17|true|fred miller|2013-03-01 09:11:58.703182|21.11|quiet hour +97|371|65547|4294967302|98.70|42.32|true|quinn brown|2013-03-01 09:11:58.703157|31.48|mathematics +87|284|65597|4294967397|99.34|7.70|false|gabriella nixon|2013-03-01 09:11:58.703263|79.41|philosophy +25|457|65657|4294967345|51.08|11.07|true|david ichabod|2013-03-01 09:11:58.703324|28.78|education +69|496|65673|4294967490|34.44|18.62|true|holly garcia|2013-03-01 09:11:58.703300|2.82|opthamology +91|353|65746|4294967390|67.24|4.16|true|zach ichabod|2013-03-01 09:11:58.703190|79.29|joggying +117|499|65677|4294967395|42.07|8.23|true|oscar underhill|2013-03-01 09:11:58.703303|99.50|zync studies +118|436|65674|4294967414|69.43|3.04|false|xavier robinson|2013-03-01 09:11:58.703126|3.39|zync studies +54|444|65666|4294967406|2.82|37.99|true|nick young|2013-03-01 09:11:58.703185|23.03|quiet hour +90|351|65600|4294967435|69.37|25.50|true|jessica miller|2013-03-01 09:11:58.703170|13.47|religion +118|307|65701|4294967460|30.76|24.51|false|katie falkner|2013-03-01 09:11:58.703272|15.16|debate +93|407|65686|4294967304|53.20|35.46|false|david zipper|2013-03-01 09:11:58.703255|18.28|quiet hour +66|292|65670|4294967502|36.15|49.31|false|victor polk|2013-03-01 09:11:58.703079|99.37|debate +77|317|65657|4294967355|83.98|44.72|false|wendy johnson|2013-03-01 09:11:58.703071|89.25|zync studies +5|274|65561|4294967403|63.25|45.27|true|victor underhill|2013-03-01 09:11:58.703140|93.41|study skills +104|345|65677|4294967339|64.53|37.90|false|alice king|2013-03-01 09:11:58.703276|57.56|topology +26|348|65770|4294967357|38.71|37.16|true|luke young|2013-03-01 09:11:58.703292|59.77|chemistry +70|395|65788|4294967541|44.58|17.63|true|gabriella garcia|2013-03-01 09:11:58.703102|23.37|opthamology +23|265|65655|4294967498|80.82|32.19|false|oscar allen|2013-03-01 09:11:58.703091|11.91|xylophone band +31|429|65617|4294967520|69.05|49.63|false|nick ellison|2013-03-01 09:11:58.703225|67.46|study skills +1|466|65593|4294967388|56.26|16.09|false|gabriella johnson|2013-03-01 09:11:58.703142|38.20|quiet hour +69|352|65637|4294967459|49.42|37.94|true|wendy polk|2013-03-01 09:11:58.703241|61.50|joggying +52|484|65656|4294967478|29.18|13.28|true|david van buren|2013-03-01 09:11:58.703251|98.35|opthamology +19|385|65756|4294967443|96.50|26.94|false|priscilla hernandez|2013-03-01 09:11:58.703230|76.07|values clariffication +84|498|65625|4294967425|27.78|13.58|false|zach ovid|2013-03-01 09:11:58.703210|85.01|debate +57|460|65759|4294967551|81.97|12.16|false|luke allen|2013-03-01 09:11:58.703113|85.27|joggying +97|414|65614|4294967331|55.54|5.45|false|wendy steinbeck|2013-03-01 09:11:58.703177|29.57|values clariffication +-2|467|65601|4294967345|96.04|42.73|false|zach johnson|2013-03-01 09:11:58.703321|63.24|quiet hour +84|279|65569|4294967484|98.09|33.93|true|ethan king|2013-03-01 09:11:58.703296|63.29|biology +104|365|65627|4294967433|41.51|17.59|false|priscilla johnson|2013-03-01 09:11:58.703182|61.44|joggying +29|500|65679|4294967538|22.68|23.13|true|priscilla underhill|2013-03-01 09:11:58.703225|24.33|kindergarten +44|356|65597|4294967399|48.20|13.32|true|rachel miller|2013-03-01 09:11:58.703119|45.96|mathematics +114|461|65664|4294967385|34.78|16.35|true|ethan steinbeck|2013-03-01 09:11:58.703076|27.83|values clariffication +67|432|65545|4294967500|8.30|34.74|false|calvin zipper|2013-03-01 09:11:58.703165|61.04|yard duty +114|492|65642|4294967421|45.84|42.14|false|holly thompson|2013-03-01 09:11:58.703079|88.78|mathematics +56|267|65650|4294967299|20.75|49.80|true|quinn xylophone|2013-03-01 09:11:58.703274|69.47|nap time +122|434|65675|4294967498|17.82|12.74|false|victor falkner|2013-03-01 09:11:58.703105|8.09|biology +5|444|65690|4294967330|93.08|7.70|false|luke johnson|2013-03-01 09:11:58.703097|1.19|topology +92|434|65580|4294967298|83.31|0.88|true|xavier falkner|2013-03-01 09:11:58.703295|98.56|nap time +34|442|65660|4294967467|80.43|44.07|true|jessica nixon|2013-03-01 09:11:58.703071|19.26|religion +38|392|65789|4294967399|95.11|23.23|true|david carson|2013-03-01 09:11:58.703320|41.69|values clariffication +122|278|65624|4294967368|45.39|48.87|true|mike johnson|2013-03-01 09:11:58.703109|87.38|religion +75|400|65595|4294967373|36.56|32.92|true|jessica garcia|2013-03-01 09:11:58.703218|26.57|religion +4|351|65667|4294967407|97.75|11.85|true|wendy hernandez|2013-03-01 09:11:58.703112|94.23|yard duty +39|327|65549|4294967410|22.36|40.10|true|rachel nixon|2013-03-01 09:11:58.703199|29.90|values clariffication +115|363|65558|4294967383|20.36|16.58|true|holly quirinius|2013-03-01 09:11:58.703106|58.86|education +43|490|65550|4294967372|40.80|38.04|true|quinn white|2013-03-01 09:11:58.703282|50.30|biology +56|315|65779|4294967530|6.98|27.78|true|david miller|2013-03-01 09:11:58.703288|6.29|opthamology +118|337|65717|4294967351|30.80|13.23|true|sarah johnson|2013-03-01 09:11:58.703179|11.61|topology +23|291|65663|4294967308|28.64|7.00|true|rachel garcia|2013-03-01 09:11:58.703144|64.95|kindergarten +16|369|65738|4294967427|51.80|10.90|false|irene quirinius|2013-03-01 09:11:58.703146|97.81|zync studies +99|359|65664|4294967541|8.39|0.01|false|calvin miller|2013-03-01 09:11:58.703262|96.54|industrial engineering +66|261|65704|4294967380|90.86|12.50|true|irene white|2013-03-01 09:11:58.703147|77.32|chemistry +86|405|65619|4294967407|18.99|13.84|true|wendy laertes|2013-03-01 09:11:58.703274|24.92|forestry +37|261|65672|4294967413|59.82|9.27|false|victor zipper|2013-03-01 09:11:58.703309|16.32|xylophone band +3|396|65695|4294967319|24.83|44.11|true|oscar white|2013-03-01 09:11:58.703248|83.36|mathematics +121|343|65709|4294967407|65.31|25.38|false|wendy zipper|2013-03-01 09:11:58.703137|69.52|joggying +92|274|65669|4294967351|68.15|22.23|false|luke van buren|2013-03-01 09:11:58.703249|49.34|education +61|500|65652|4294967437|86.58|6.11|true|ulysses ovid|2013-03-01 09:11:58.703282|72.31|quiet hour +50|269|65550|4294967362|49.83|29.08|false|xavier thompson|2013-03-01 09:11:58.703207|82.57|joggying +26|311|65571|4294967530|70.21|40.26|true|wendy underhill|2013-03-01 09:11:58.703177|41.04|zync studies +28|279|65637|4294967431|77.71|15.41|true|irene white|2013-03-01 09:11:58.703310|25.38|opthamology +107|396|65592|4294967309|46.03|32.39|false|ulysses white|2013-03-01 09:11:58.703091|17.20|wind surfing +-2|303|65588|4294967431|49.32|30.03|false|fred young|2013-03-01 09:11:58.703240|64.94|linguistics +116|475|65737|4294967384|87.04|28.54|false|oscar robinson|2013-03-01 09:11:58.703206|67.85|debate +13|345|65577|4294967514|2.39|35.42|false|sarah johnson|2013-03-01 09:11:58.703243|94.06|american history +50|310|65658|4294967312|74.84|29.87|false|wendy hernandez|2013-03-01 09:11:58.703115|77.63|yard duty +61|510|65613|4294967494|3.98|35.29|false|fred young|2013-03-01 09:11:58.703176|41.27|philosophy +86|320|65571|4294967497|94.26|1.12|false|oscar carson|2013-03-01 09:11:58.703212|37.74|topology +99|378|65690|4294967363|59.56|1.58|false|sarah underhill|2013-03-01 09:11:58.703090|71.99|education +-3|384|65613|4294967470|63.49|45.85|false|holly steinbeck|2013-03-01 09:11:58.703242|54.18|chemistry +10|488|65726|4294967441|4.49|17.81|true|jessica white|2013-03-01 09:11:58.703233|90.27|american history +8|373|65550|4294967345|11.84|27.43|false|luke hernandez|2013-03-01 09:11:58.703074|61.36|chemistry +52|423|65708|4294967379|94.45|2.87|true|victor king|2013-03-01 09:11:58.703100|95.43|geology +56|473|65763|4294967496|43.73|14.05|false|victor king|2013-03-01 09:11:58.703163|37.64|mathematics +13|355|65548|4294967482|36.62|43.24|true|victor xylophone|2013-03-01 09:11:58.703107|69.46|linguistics +83|386|65641|4294967409|76.93|17.42|true|zach nixon|2013-03-01 09:11:58.703200|77.22|religion +8|358|65604|4294967362|0.71|43.03|false|zach davidson|2013-03-01 09:11:58.703107|89.40|zync studies +103|492|65767|4294967305|13.39|28.56|true|tom quirinius|2013-03-01 09:11:58.703105|76.81|values clariffication +-3|280|65597|4294967377|18.44|49.80|true|alice falkner|2013-03-01 09:11:58.703304|74.42|zync studies +55|508|65742|4294967513|94.21|29.79|true|wendy ellison|2013-03-01 09:11:58.703222|47.03|opthamology +121|321|65663|4294967353|20.93|29.50|false|sarah nixon|2013-03-01 09:11:58.703126|89.49|forestry +90|457|65594|4294967333|4.28|30.19|true|gabriella hernandez|2013-03-01 09:11:58.703120|56.70|study skills +55|330|65720|4294967551|76.57|47.23|true|david laertes|2013-03-01 09:11:58.703104|36.41|forestry +66|420|65746|4294967335|29.11|31.90|true|irene steinbeck|2013-03-01 09:11:58.703325|62.79|religion +51|317|65578|4294967507|76.79|9.93|true|ethan miller|2013-03-01 09:11:58.703196|69.26|american history +36|337|65552|4294967401|24.13|37.02|true|calvin polk|2013-03-01 09:11:58.703169|71.27|quiet hour +30|408|65742|4294967303|73.81|44.95|false|ethan nixon|2013-03-01 09:11:58.703205|73.86|history +3|402|65613|4294967367|37.40|49.57|true|zach nixon|2013-03-01 09:11:58.703297|12.36|kindergarten +62|300|65622|4294967353|3.30|22.53|false|xavier underhill|2013-03-01 09:11:58.703105|50.79|education +51|412|65690|4294967316|28.38|13.52|false|victor king|2013-03-01 09:11:58.703262|99.60|biology +103|325|65688|4294967390|24.97|31.77|true|sarah polk|2013-03-01 09:11:58.703221|37.79|values clariffication +51|463|65670|4294967406|49.42|7.18|false|oscar laertes|2013-03-01 09:11:58.703202|74.73|xylophone band +5|328|65566|4294967400|86.90|38.91|false|yuri quirinius|2013-03-01 09:11:58.703221|1.25|opthamology +94|330|65727|4294967331|2.68|34.99|true|irene xylophone|2013-03-01 09:11:58.703236|19.44|study skills +51|394|65747|4294967448|63.32|42.11|true|ulysses van buren|2013-03-01 09:11:58.703221|16.39|joggying +94|357|65634|4294967377|52.33|21.39|false|zach polk|2013-03-01 09:11:58.703248|41.68|education +90|446|65568|4294967429|31.92|40.63|true|irene johnson|2013-03-01 09:11:58.703100|43.18|american history +23|493|65682|4294967412|62.04|16.85|true|fred underhill|2013-03-01 09:11:58.703316|17.23|undecided +107|460|65740|4294967466|44.54|6.34|false|priscilla falkner|2013-03-01 09:11:58.703200|89.16|geology +94|326|65758|4294967426|38.77|23.83|true|gabriella brown|2013-03-01 09:11:58.703253|87.12|nap time +53|510|65591|4294967380|5.10|33.20|false|rachel quirinius|2013-03-01 09:11:58.703318|31.12|kindergarten +90|263|65661|4294967414|97.32|40.37|false|victor robinson|2013-03-01 09:11:58.703133|78.55|study skills +118|412|65704|4294967475|0.37|45.00|true|calvin ovid|2013-03-01 09:11:58.703142|45.58|mathematics +54|397|65663|4294967367|15.28|1.05|true|irene davidson|2013-03-01 09:11:58.703258|30.80|study skills +14|256|65640|4294967349|32.64|13.67|false|sarah white|2013-03-01 09:11:58.703229|72.55|study skills +50|328|65633|4294967491|25.09|19.38|false|ethan ellison|2013-03-01 09:11:58.703303|67.87|industrial engineering +-1|467|65672|4294967370|79.05|29.47|true|jessica brown|2013-03-01 09:11:58.703071|8.86|opthamology +96|502|65659|4294967405|88.76|2.12|true|katie ovid|2013-03-01 09:11:58.703281|67.71|xylophone band +102|481|65585|4294967355|49.56|20.67|true|calvin young|2013-03-01 09:11:58.703297|95.61|joggying +69|263|65555|4294967392|21.66|14.63|true|rachel ichabod|2013-03-01 09:11:58.703257|31.71|quiet hour +38|337|65618|4294967316|34.73|44.07|true|jessica davidson|2013-03-01 09:11:58.703310|29.67|xylophone band +85|413|65724|4294967523|74.50|27.18|true|katie white|2013-03-01 09:11:58.703096|59.77|yard duty +28|361|65679|4294967348|25.88|7.89|true|fred carson|2013-03-01 09:11:58.703299|91.51|values clariffication +114|285|65791|4294967419|47.08|15.32|false|fred garcia|2013-03-01 09:11:58.703136|84.23|debate +17|276|65572|4294967443|52.79|46.99|false|quinn allen|2013-03-01 09:11:58.703202|40.40|chemistry +45|349|65560|4294967341|93.91|22.33|true|katie nixon|2013-03-01 09:11:58.703232|11.15|linguistics +96|379|65650|4294967502|19.22|44.93|true|sarah xylophone|2013-03-01 09:11:58.703121|84.37|xylophone band +48|418|65747|4294967523|90.05|19.46|false|fred polk|2013-03-01 09:11:58.703323|58.99|mathematics +116|440|65725|4294967403|23.36|40.03|true|alice ichabod|2013-03-01 09:11:58.703249|84.90|history +84|339|65611|4294967548|55.58|19.06|true|zach white|2013-03-01 09:11:58.703098|73.91|joggying +31|371|65659|4294967331|28.46|11.60|true|oscar garcia|2013-03-01 09:11:58.703207|6.03|undecided +1|312|65666|4294967451|89.58|7.49|true|victor underhill|2013-03-01 09:11:58.703156|36.22|forestry +73|410|65634|4294967450|0.08|19.63|true|nick zipper|2013-03-01 09:11:58.703151|64.22|biology +120|364|65678|4294967398|37.74|18.77|false|katie steinbeck|2013-03-01 09:11:58.703186|55.26|quiet hour +-3|494|65589|4294967369|48.09|14.40|false|jessica johnson|2013-03-01 09:11:58.703319|78.85|nap time +106|471|65786|4294967351|14.23|15.96|false|zach miller|2013-03-01 09:11:58.703255|79.26|quiet hour +18|291|65788|4294967392|6.19|44.14|false|jessica zipper|2013-03-01 09:11:58.703145|63.29|study skills +107|509|65770|4294967453|15.70|35.51|false|zach garcia|2013-03-01 09:11:58.703279|23.01|opthamology +120|396|65569|4294967500|47.81|16.43|true|bob steinbeck|2013-03-01 09:11:58.703200|34.01|biology +118|332|65626|4294967529|4.82|30.69|true|ethan ovid|2013-03-01 09:11:58.703174|39.37|biology +17|258|65669|4294967503|75.01|14.80|false|priscilla underhill|2013-03-01 09:11:58.703300|49.02|zync studies +89|456|65676|4294967335|2.59|22.40|true|yuri steinbeck|2013-03-01 09:11:58.703242|30.67|topology +5|415|65621|4294967334|27.06|34.41|false|zach robinson|2013-03-01 09:11:58.703148|18.10|yard duty +2|487|65691|4294967411|11.43|31.08|false|victor johnson|2013-03-01 09:11:58.703283|12.78|biology +33|338|65543|4294967355|37.12|30.33|true|priscilla miller|2013-03-01 09:11:58.703171|54.90|forestry +86|505|65734|4294967517|96.63|20.01|false|jessica quirinius|2013-03-01 09:11:58.703308|8.73|debate +8|476|65652|4294967432|18.94|19.03|false|nick davidson|2013-03-01 09:11:58.703111|65.85|joggying +21|507|65750|4294967388|80.62|30.07|false|ethan laertes|2013-03-01 09:11:58.703218|59.00|industrial engineering +83|499|65700|4294967309|91.06|37.70|true|victor thompson|2013-03-01 09:11:58.703254|92.41|values clariffication +93|497|65669|4294967365|53.43|27.06|true|david brown|2013-03-01 09:11:58.703150|93.52|values clariffication +52|378|65606|4294967456|43.36|47.32|true|calvin quirinius|2013-03-01 09:11:58.703295|41.52|undecided +55|309|65710|4294967329|73.65|16.52|true|gabriella polk|2013-03-01 09:11:58.703134|14.42|opthamology +55|409|65674|4294967468|19.97|13.96|true|jessica white|2013-03-01 09:11:58.703096|54.49|xylophone band +9|492|65621|4294967311|26.65|6.81|false|ethan van buren|2013-03-01 09:11:58.703176|90.22|history +118|356|65599|4294967337|33.83|18.31|true|victor johnson|2013-03-01 09:11:58.703243|76.93|joggying +90|494|65675|4294967359|21.63|19.29|false|katie hernandez|2013-03-01 09:11:58.703294|60.05|american history +62|338|65732|4294967422|40.96|26.59|false|rachel miller|2013-03-01 09:11:58.703264|1.16|history +88|478|65621|4294967485|45.31|4.37|false|ethan nixon|2013-03-01 09:11:58.703103|91.45|biology +51|336|65705|4294967402|87.56|5.61|true|ulysses falkner|2013-03-01 09:11:58.703258|58.63|xylophone band +3|499|65702|4294967371|48.39|24.99|false|ethan quirinius|2013-03-01 09:11:58.703233|27.59|kindergarten +78|387|65586|4294967349|99.61|32.43|true|sarah laertes|2013-03-01 09:11:58.703323|42.74|history +8|278|65697|4294967493|21.21|13.35|true|luke laertes|2013-03-01 09:11:58.703183|97.94|mathematics +72|507|65627|4294967536|13.53|33.19|false|priscilla johnson|2013-03-01 09:11:58.703210|42.09|topology +-2|373|65548|4294967423|16.98|43.60|true|alice nixon|2013-03-01 09:11:58.703321|52.61|debate +70|429|65598|4294967528|46.53|37.45|true|mike young|2013-03-01 09:11:58.703183|60.75|chemistry +37|373|65559|4294967476|4.77|42.24|true|ethan xylophone|2013-03-01 09:11:58.703260|12.76|yard duty +65|460|65549|4294967347|78.11|3.03|false|jessica van buren|2013-03-01 09:11:58.703263|95.69|industrial engineering +21|276|65575|4294967404|80.65|28.87|false|oscar falkner|2013-03-01 09:11:58.703201|8.95|history +69|357|65789|4294967475|58.11|2.56|true|katie falkner|2013-03-01 09:11:58.703138|31.78|philosophy +7|344|65673|4294967328|32.54|43.65|true|tom xylophone|2013-03-01 09:11:58.703097|5.65|debate +10|414|65749|4294967538|72.77|15.85|true|irene davidson|2013-03-01 09:11:58.703191|1.99|undecided +80|306|65648|4294967471|44.17|22.83|true|tom falkner|2013-03-01 09:11:58.703102|83.26|biology +36|352|65759|4294967509|88.65|42.76|false|david ellison|2013-03-01 09:11:58.703181|44.51|topology +36|374|65714|4294967417|35.04|32.03|false|nick steinbeck|2013-03-01 09:11:58.703149|68.80|joggying +67|384|65614|4294967392|53.58|38.69|false|luke laertes|2013-03-01 09:11:58.703173|69.38|religion +113|268|65610|4294967523|66.30|6.21|true|xavier white|2013-03-01 09:11:58.703150|73.73|quiet hour +77|372|65557|4294967434|65.94|29.62|true|zach polk|2013-03-01 09:11:58.703208|25.27|zync studies +46|350|65665|4294967537|97.92|27.92|false|jessica van buren|2013-03-01 09:11:58.703175|10.69|undecided +60|411|65648|4294967436|27.12|35.45|true|priscilla thompson|2013-03-01 09:11:58.703134|31.49|american history +8|325|65594|4294967351|59.36|49.19|true|victor miller|2013-03-01 09:11:58.703236|21.93|history +17|499|65622|4294967326|67.30|19.63|true|tom brown|2013-03-01 09:11:58.703257|12.11|religion +40|328|65694|4294967332|95.07|29.33|true|gabriella underhill|2013-03-01 09:11:58.703130|59.49|religion +7|402|65571|4294967437|82.31|39.22|true|ulysses nixon|2013-03-01 09:11:58.703107|37.36|topology +113|468|65784|4294967368|66.70|19.16|true|holly ellison|2013-03-01 09:11:58.703278|11.78|debate +104|458|65707|4294967536|38.38|43.24|false|ulysses brown|2013-03-01 09:11:58.703241|42.93|xylophone band +39|370|65588|4294967341|36.92|23.31|true|victor falkner|2013-03-01 09:11:58.703088|72.33|history +90|279|65552|4294967382|92.83|7.47|true|zach carson|2013-03-01 09:11:58.703110|59.95|philosophy +108|396|65545|4294967357|23.91|15.03|false|alice hernandez|2013-03-01 09:11:58.703252|94.63|american history +2|304|65634|4294967388|41.64|2.18|true|nick quirinius|2013-03-01 09:11:58.703233|47.57|history +32|307|65624|4294967364|2.34|13.36|true|jessica nixon|2013-03-01 09:11:58.703175|72.16|study skills +123|376|65602|4294967377|39.78|13.93|false|jessica miller|2013-03-01 09:11:58.703099|75.80|zync studies +110|439|65756|4294967355|34.73|9.74|true|holly zipper|2013-03-01 09:11:58.703200|24.39|quiet hour +79|494|65627|4294967515|46.82|34.99|false|victor falkner|2013-03-01 09:11:58.703125|59.47|industrial engineering +75|380|65709|4294967346|47.43|0.72|true|oscar davidson|2013-03-01 09:11:58.703216|58.46|chemistry +42|362|65672|4294967311|29.12|43.39|true|wendy white|2013-03-01 09:11:58.703138|93.52|study skills +115|356|65702|4294967474|17.34|45.44|false|mike quirinius|2013-03-01 09:11:58.703244|11.80|chemistry +39|372|65606|4294967474|0.23|23.13|false|alice quirinius|2013-03-01 09:11:58.703093|86.69|mathematics +50|386|65552|4294967318|9.61|20.07|false|zach white|2013-03-01 09:11:58.703193|63.50|opthamology +6|341|65724|4294967482|3.50|17.93|true|mike ellison|2013-03-01 09:11:58.703201|33.89|forestry +88|369|65640|4294967324|2.12|38.05|false|sarah van buren|2013-03-01 09:11:58.703164|31.70|mathematics +117|335|65680|4294967312|35.31|22.79|true|yuri robinson|2013-03-01 09:11:58.703325|8.03|forestry +38|424|65643|4294967388|50.45|42.85|false|tom white|2013-03-01 09:11:58.703076|50.40|xylophone band +28|473|65619|4294967313|73.17|46.06|false|wendy king|2013-03-01 09:11:58.703140|89.31|wind surfing +51|373|65764|4294967328|86.52|10.73|true|sarah laertes|2013-03-01 09:11:58.703237|42.36|mathematics +93|437|65540|4294967418|11.26|19.69|false|jessica robinson|2013-03-01 09:11:58.703276|83.95|nap time +18|268|65544|4294967512|5.37|23.74|false|gabriella polk|2013-03-01 09:11:58.703241|74.73|undecided +93|362|65770|4294967318|15.47|48.28|false|yuri thompson|2013-03-01 09:11:58.703120|15.26|opthamology +105|264|65645|4294967363|78.08|37.82|true|xavier laertes|2013-03-01 09:11:58.703203|0.88|values clariffication +100|311|65652|4294967504|92.08|16.99|false|luke falkner|2013-03-01 09:11:58.703131|98.03|nap time +8|305|65772|4294967402|33.84|28.27|true|alice ovid|2013-03-01 09:11:58.703152|55.90|opthamology +119|287|65700|4294967494|17.60|25.41|false|nick quirinius|2013-03-01 09:11:58.703138|31.60|undecided +81|266|65746|4294967449|81.29|43.85|false|ulysses nixon|2013-03-01 09:11:58.703238|83.51|opthamology +106|456|65755|4294967387|2.94|28.66|true|xavier johnson|2013-03-01 09:11:58.703274|68.81|values clariffication +76|428|65580|4294967458|88.21|42.37|true|mike miller|2013-03-01 09:11:58.703226|30.00|wind surfing +123|291|65679|4294967411|62.23|48.22|true|holly underhill|2013-03-01 09:11:58.703077|36.38|industrial engineering +68|507|65744|4294967315|9.31|14.31|true|alice polk|2013-03-01 09:11:58.703156|45.05|religion +59|443|65757|4294967467|26.18|13.31|false|zach white|2013-03-01 09:11:58.703277|97.50|undecided +121|480|65584|4294967352|44.74|26.70|false|sarah steinbeck|2013-03-01 09:11:58.703081|80.45|xylophone band +23|348|65646|4294967453|80.57|9.81|false|bob white|2013-03-01 09:11:58.703322|59.93|religion +63|366|65739|4294967395|26.31|37.57|true|xavier carson|2013-03-01 09:11:58.703075|76.18|religion +51|343|65673|4294967348|23.87|45.90|true|sarah garcia|2013-03-01 09:11:58.703256|41.60|industrial engineering +68|282|65630|4294967390|64.97|41.58|true|mike ichabod|2013-03-01 09:11:58.703259|68.00|education +15|316|65687|4294967398|22.50|44.26|false|calvin laertes|2013-03-01 09:11:58.703174|11.93|forestry +57|308|65734|4294967445|51.29|9.70|true|ulysses brown|2013-03-01 09:11:58.703184|42.79|american history +16|291|65734|4294967533|99.18|37.44|true|fred nixon|2013-03-01 09:11:58.703088|29.86|industrial engineering +58|424|65706|4294967364|80.97|30.40|true|tom xylophone|2013-03-01 09:11:58.703244|6.64|xylophone band +118|466|65731|4294967548|18.42|27.83|false|wendy quirinius|2013-03-01 09:11:58.703083|99.21|wind surfing +123|465|65739|4294967504|79.31|46.70|false|ulysses zipper|2013-03-01 09:11:58.703163|16.23|kindergarten +44|280|65750|4294967406|33.57|24.89|false|ulysses robinson|2013-03-01 09:11:58.703229|58.67|chemistry +49|434|65779|4294967361|22.74|12.23|true|tom young|2013-03-01 09:11:58.703250|56.70|philosophy +22|385|65789|4294967440|32.36|41.43|true|holly zipper|2013-03-01 09:11:58.703218|17.07|joggying +117|323|65590|4294967535|0.92|10.75|false|holly robinson|2013-03-01 09:11:58.703101|28.48|geology +104|329|65737|4294967350|61.99|16.48|false|tom carson|2013-03-01 09:11:58.703280|35.13|opthamology +33|499|65586|4294967434|31.13|46.69|true|fred falkner|2013-03-01 09:11:58.703232|31.87|forestry +69|259|65562|4294967481|30.98|35.57|true|zach polk|2013-03-01 09:11:58.703240|41.72|nap time +19|320|65708|4294967495|25.65|20.06|false|jessica quirinius|2013-03-01 09:11:58.703275|11.32|opthamology +82|441|65759|4294967346|73.08|39.69|true|sarah laertes|2013-03-01 09:11:58.703175|57.15|undecided +70|418|65771|4294967393|24.69|46.60|false|nick hernandez|2013-03-01 09:11:58.703152|41.40|history +97|414|65620|4294967394|18.10|1.45|true|rachel steinbeck|2013-03-01 09:11:58.703094|76.72|chemistry +77|359|65697|4294967392|40.51|23.91|false|katie quirinius|2013-03-01 09:11:58.703229|3.25|zync studies +18|369|65567|4294967461|46.68|2.07|false|katie hernandez|2013-03-01 09:11:58.703282|45.63|history +10|277|65628|4294967339|13.66|26.59|true|oscar davidson|2013-03-01 09:11:58.703193|14.16|mathematics +88|416|65536|4294967441|9.33|14.49|false|alice ichabod|2013-03-01 09:11:58.703141|31.09|opthamology +53|278|65709|4294967420|59.18|37.42|true|yuri johnson|2013-03-01 09:11:58.703266|33.49|industrial engineering +86|260|65707|4294967547|65.55|37.11|true|katie laertes|2013-03-01 09:11:58.703285|69.11|zync studies +90|260|65625|4294967510|79.71|38.23|false|quinn polk|2013-03-01 09:11:58.703214|75.88|american history +81|408|65657|4294967469|46.48|28.92|true|jessica van buren|2013-03-01 09:11:58.703085|31.76|yard duty +124|469|65577|4294967322|43.03|42.77|true|xavier allen|2013-03-01 09:11:58.703301|16.67|geology +30|286|65698|4294967351|63.48|20.35|false|bob davidson|2013-03-01 09:11:58.703191|26.09|chemistry +32|359|65748|4294967407|64.55|4.64|true|ethan carson|2013-03-01 09:11:58.703086|76.20|industrial engineering +20|475|65706|4294967327|76.23|14.71|false|luke carson|2013-03-01 09:11:58.703258|98.26|study skills +-2|389|65738|4294967520|99.45|26.26|true|bob falkner|2013-03-01 09:11:58.703071|17.47|nap time +80|449|65664|4294967305|97.03|3.09|true|fred young|2013-03-01 09:11:58.703124|75.15|debate +68|349|65668|4294967535|35.89|30.43|true|irene van buren|2013-03-01 09:11:58.703087|86.84|biology +119|335|65766|4294967393|42.78|40.52|true|katie underhill|2013-03-01 09:11:58.703217|32.18|philosophy +-3|469|65577|4294967451|88.78|32.96|true|katie ichabod|2013-03-01 09:11:58.703139|69.13|undecided +56|347|65629|4294967473|52.76|23.59|false|yuri xylophone|2013-03-01 09:11:58.703321|28.28|quiet hour +58|399|65572|4294967431|24.08|24.77|true|calvin quirinius|2013-03-01 09:11:58.703280|17.61|zync studies +61|392|65768|4294967512|69.10|18.87|false|xavier steinbeck|2013-03-01 09:11:58.703172|99.33|industrial engineering +93|413|65656|4294967355|95.27|33.46|false|quinn xylophone|2013-03-01 09:11:58.703132|54.66|undecided +44|459|65665|4294967353|27.28|18.42|true|wendy carson|2013-03-01 09:11:58.703192|47.46|linguistics +44|264|65594|4294967541|47.83|38.39|true|wendy johnson|2013-03-01 09:11:58.703251|21.49|geology +109|421|65581|4294967326|26.25|42.25|false|jessica robinson|2013-03-01 09:11:58.703299|7.20|nap time +87|289|65758|4294967539|43.32|9.35|false|david nixon|2013-03-01 09:11:58.703180|84.97|xylophone band +27|257|65560|4294967485|42.14|18.65|false|holly white|2013-03-01 09:11:58.703262|9.98|zync studies +19|364|65649|4294967476|72.25|27.42|true|victor robinson|2013-03-01 09:11:58.703308|85.43|undecided +68|411|65544|4294967428|15.57|1.44|true|luke johnson|2013-03-01 09:11:58.703261|5.46|industrial engineering +42|357|65571|4294967417|64.55|26.87|true|victor underhill|2013-03-01 09:11:58.703071|32.78|zync studies +24|480|65552|4294967482|80.62|28.66|false|bob thompson|2013-03-01 09:11:58.703118|32.36|history +16|263|65753|4294967301|67.77|19.88|false|fred ellison|2013-03-01 09:11:58.703246|28.34|topology +20|437|65560|4294967548|13.21|39.63|true|bob xylophone|2013-03-01 09:11:58.703279|62.35|zync studies +1|268|65712|4294967414|46.74|30.67|true|fred thompson|2013-03-01 09:11:58.703182|6.24|philosophy +99|370|65640|4294967456|58.68|47.18|true|priscilla nixon|2013-03-01 09:11:58.703142|68.54|yard duty +16|300|65715|4294967343|63.07|22.66|false|ethan carson|2013-03-01 09:11:58.703261|52.69|debate +104|390|65552|4294967480|51.64|8.63|false|holly falkner|2013-03-01 09:11:58.703302|94.59|mathematics +83|372|65556|4294967467|20.49|1.71|true|calvin king|2013-03-01 09:11:58.703090|71.37|philosophy +48|430|65650|4294967334|66.95|3.36|false|ulysses underhill|2013-03-01 09:11:58.703272|22.24|linguistics +73|450|65678|4294967407|10.57|19.70|true|jessica allen|2013-03-01 09:11:58.703238|21.24|chemistry +7|424|65768|4294967320|37.78|5.94|true|gabriella johnson|2013-03-01 09:11:58.703276|53.49|topology +57|503|65670|4294967398|64.29|36.54|true|alice steinbeck|2013-03-01 09:11:58.703089|57.21|study skills +5|337|65745|4294967313|46.15|42.55|false|zach king|2013-03-01 09:11:58.703125|38.82|joggying +104|274|65755|4294967404|7.70|24.54|true|irene carson|2013-03-01 09:11:58.703322|55.38|industrial engineering +107|481|65771|4294967508|32.36|33.69|false|quinn king|2013-03-01 09:11:58.703256|95.23|history +69|411|65566|4294967349|34.14|16.92|false|gabriella laertes|2013-03-01 09:11:58.703111|2.77|history +37|404|65598|4294967417|82.76|9.47|true|irene thompson|2013-03-01 09:11:58.703260|67.00|industrial engineering +57|296|65607|4294967351|42.45|12.61|true|priscilla laertes|2013-03-01 09:11:58.703165|76.58|undecided +-2|420|65603|4294967391|40.07|33.44|true|quinn miller|2013-03-01 09:11:58.703150|87.75|religion +-2|393|65715|4294967305|48.30|1.85|true|alice xylophone|2013-03-01 09:11:58.703105|29.58|values clariffication +29|434|65626|4294967475|37.33|38.56|true|katie steinbeck|2013-03-01 09:11:58.703312|5.52|quiet hour +88|344|65649|4294967336|56.40|21.55|false|david quirinius|2013-03-01 09:11:58.703129|37.43|xylophone band +11|506|65775|4294967297|85.14|12.80|true|gabriella robinson|2013-03-01 09:11:58.703266|32.17|chemistry +103|276|65700|4294967340|83.22|36.33|true|jessica davidson|2013-03-01 09:11:58.703111|49.03|industrial engineering +42|412|65547|4294967406|42.26|24.09|true|victor white|2013-03-01 09:11:58.703076|74.95|mathematics +-3|447|65755|4294967320|43.69|20.03|false|victor hernandez|2013-03-01 09:11:58.703176|13.70|forestry +85|335|65600|4294967327|72.03|42.67|false|nick polk|2013-03-01 09:11:58.703287|1.49|mathematics +108|309|65780|4294967477|61.43|33.52|true|nick garcia|2013-03-01 09:11:58.703099|38.36|geology +92|319|65592|4294967471|31.45|4.93|true|zach johnson|2013-03-01 09:11:58.703157|80.11|topology +52|457|65573|4294967500|29.32|8.19|false|gabriella ellison|2013-03-01 09:11:58.703122|54.02|wind surfing +20|434|65616|4294967470|55.64|16.43|false|tom brown|2013-03-01 09:11:58.703269|24.11|quiet hour +78|441|65656|4294967404|37.27|49.81|true|wendy zipper|2013-03-01 09:11:58.703238|44.33|debate +87|308|65764|4294967476|88.61|11.45|false|wendy hernandez|2013-03-01 09:11:58.703188|53.08|linguistics +76|284|65770|4294967452|95.00|25.29|false|mike king|2013-03-01 09:11:58.703171|8.53|debate +14|369|65558|4294967506|70.90|24.61|false|alice van buren|2013-03-01 09:11:58.703134|65.18|quiet hour +65|391|65548|4294967366|11.29|34.63|true|bob robinson|2013-03-01 09:11:58.703273|98.51|history +91|475|65777|4294967533|26.67|34.51|false|david ovid|2013-03-01 09:11:58.703090|92.13|zync studies +13|372|65755|4294967452|46.10|2.67|false|tom young|2013-03-01 09:11:58.703157|83.06|philosophy +59|318|65780|4294967312|96.17|11.27|false|wendy thompson|2013-03-01 09:11:58.703110|83.27|undecided +0|454|65546|4294967513|29.22|49.17|true|oscar brown|2013-03-01 09:11:58.703070|53.25|industrial engineering +77|279|65545|4294967439|35.15|39.07|false|gabriella van buren|2013-03-01 09:11:58.703175|36.89|study skills +79|320|65771|4294967503|37.85|12.55|false|priscilla thompson|2013-03-01 09:11:58.703133|90.38|mathematics +122|298|65786|4294967472|50.13|41.02|true|yuri thompson|2013-03-01 09:11:58.703246|65.22|linguistics +79|442|65645|4294967437|46.36|11.03|false|tom brown|2013-03-01 09:11:58.703140|72.24|yard duty +3|318|65675|4294967414|57.67|7.24|false|oscar king|2013-03-01 09:11:58.703082|44.88|american history +43|281|65698|4294967359|4.33|25.81|true|priscilla allen|2013-03-01 09:11:58.703099|94.82|debate +4|311|65583|4294967330|46.77|17.56|true|jessica thompson|2013-03-01 09:11:58.703297|66.94|debate +-3|423|65646|4294967378|63.19|34.04|false|priscilla quirinius|2013-03-01 09:11:58.703228|34.66|xylophone band +98|502|65638|4294967379|86.81|8.34|true|bob carson|2013-03-01 09:11:58.703140|59.62|biology +51|355|65781|4294967537|58.53|4.34|false|oscar white|2013-03-01 09:11:58.703074|72.00|study skills +83|323|65689|4294967427|58.02|7.70|false|zach underhill|2013-03-01 09:11:58.703300|12.72|zync studies +10|279|65655|4294967337|63.20|45.16|true|david hernandez|2013-03-01 09:11:58.703296|37.00|undecided +90|261|65599|4294967400|88.27|5.92|false|katie polk|2013-03-01 09:11:58.703164|85.70|industrial engineering +33|430|65579|4294967312|56.79|15.97|true|gabriella thompson|2013-03-01 09:11:58.703249|29.87|study skills +0|395|65760|4294967464|58.78|37.00|false|alice quirinius|2013-03-01 09:11:58.703177|31.02|history +77|325|65721|4294967507|8.63|22.63|true|priscilla hernandez|2013-03-01 09:11:58.703308|1.34|opthamology +121|343|65630|4294967359|91.54|24.17|true|wendy zipper|2013-03-01 09:11:58.703172|10.91|debate +45|420|65725|4294967499|46.11|22.71|false|tom johnson|2013-03-01 09:11:58.703248|62.80|opthamology +3|280|65720|4294967347|53.79|35.71|true|rachel king|2013-03-01 09:11:58.703101|29.26|values clariffication +1|411|65743|4294967383|75.08|12.44|false|victor nixon|2013-03-01 09:11:58.703202|24.26|linguistics +109|448|65582|4294967327|9.17|8.69|true|ethan ellison|2013-03-01 09:11:58.703202|40.63|study skills +54|413|65580|4294967492|37.56|5.20|false|ulysses ovid|2013-03-01 09:11:58.703163|35.09|history +19|448|65654|4294967470|11.05|26.20|false|bob allen|2013-03-01 09:11:58.703083|35.48|education +81|362|65580|4294967376|30.85|42.28|false|luke hernandez|2013-03-01 09:11:58.703187|25.29|history +107|305|65617|4294967360|71.78|29.08|false|alice ichabod|2013-03-01 09:11:58.703272|34.96|chemistry +53|295|65603|4294967302|74.20|49.09|false|holly xylophone|2013-03-01 09:11:58.703226|15.28|forestry +92|411|65660|4294967453|51.37|5.73|true|zach xylophone|2013-03-01 09:11:58.703140|59.56|xylophone band +3|364|65607|4294967339|91.84|14.89|true|fred laertes|2013-03-01 09:11:58.703292|78.85|yard duty +24|376|65692|4294967531|90.77|33.31|true|quinn laertes|2013-03-01 09:11:58.703075|63.49|kindergarten +99|285|65596|4294967520|86.94|31.45|true|mike thompson|2013-03-01 09:11:58.703119|8.01|nap time +7|277|65626|4294967311|68.68|40.55|true|ulysses robinson|2013-03-01 09:11:58.703139|51.74|history +37|416|65726|4294967480|7.82|25.05|true|sarah robinson|2013-03-01 09:11:58.703220|38.75|kindergarten +33|439|65644|4294967309|86.11|26.38|false|katie davidson|2013-03-01 09:11:58.703113|18.16|american history +61|277|65723|4294967327|56.53|7.67|true|irene thompson|2013-03-01 09:11:58.703281|54.64|zync studies +-3|498|65751|4294967331|80.65|0.28|true|gabriella brown|2013-03-01 09:11:58.703288|61.15|opthamology +30|401|65763|4294967494|61.12|7.22|true|mike brown|2013-03-01 09:11:58.703094|89.14|undecided +107|298|65589|4294967540|41.03|8.13|false|tom davidson|2013-03-01 09:11:58.703138|49.46|religion +42|319|65701|4294967426|25.23|12.02|true|gabriella nixon|2013-03-01 09:11:58.703211|99.28|topology +51|508|65597|4294967415|34.36|23.62|false|quinn steinbeck|2013-03-01 09:11:58.703219|22.11|study skills +57|293|65651|4294967468|83.31|33.01|false|holly nixon|2013-03-01 09:11:58.703193|80.96|nap time +55|490|65597|4294967339|70.91|17.75|true|xavier davidson|2013-03-01 09:11:58.703307|16.06|study skills +21|266|65578|4294967397|26.36|47.50|false|mike young|2013-03-01 09:11:58.703087|41.67|education +36|296|65689|4294967432|16.40|19.10|false|ulysses ovid|2013-03-01 09:11:58.703078|20.95|undecided +82|373|65637|4294967535|20.98|40.31|false|priscilla ellison|2013-03-01 09:11:58.703162|37.86|debate +114|451|65745|4294967485|18.42|44.90|true|katie laertes|2013-03-01 09:11:58.703306|63.16|american history +4|283|65705|4294967543|25.24|2.98|true|nick polk|2013-03-01 09:11:58.703299|23.35|geology +112|361|65739|4294967403|42.30|17.17|false|nick robinson|2013-03-01 09:11:58.703141|21.04|xylophone band +0|350|65547|4294967402|6.38|38.58|true|ulysses thompson|2013-03-01 09:11:58.703240|40.54|quiet hour +82|342|65671|4294967371|12.05|29.96|false|tom quirinius|2013-03-01 09:11:58.703162|69.93|undecided +77|365|65583|4294967430|89.72|48.22|true|alice king|2013-03-01 09:11:58.703258|18.75|yard duty +48|384|65697|4294967421|24.67|2.36|true|fred allen|2013-03-01 09:11:58.703203|48.81|kindergarten +34|435|65791|4294967466|13.72|46.97|false|gabriella quirinius|2013-03-01 09:11:58.703282|23.60|joggying +24|267|65596|4294967489|50.01|38.27|true|gabriella falkner|2013-03-01 09:11:58.703179|31.03|topology +32|432|65724|4294967461|33.79|19.92|true|wendy laertes|2013-03-01 09:11:58.703146|27.39|philosophy +18|383|65603|4294967501|44.74|16.52|true|nick white|2013-03-01 09:11:58.703255|68.45|study skills +93|346|65673|4294967397|7.16|34.65|true|gabriella king|2013-03-01 09:11:58.703263|43.66|joggying +1|406|65769|4294967439|96.82|5.94|true|irene young|2013-03-01 09:11:58.703274|62.70|biology +77|302|65682|4294967354|2.52|24.35|true|yuri carson|2013-03-01 09:11:58.703172|89.11|american history +21|469|65726|4294967422|76.91|37.08|false|yuri thompson|2013-03-01 09:11:58.703228|98.06|philosophy +76|427|65674|4294967351|11.13|45.24|false|alice garcia|2013-03-01 09:11:58.703205|3.08|wind surfing +102|275|65676|4294967484|4.53|17.10|true|gabriella ovid|2013-03-01 09:11:58.703094|48.37|debate +65|481|65590|4294967494|91.86|44.63|false|irene carson|2013-03-01 09:11:58.703146|68.35|industrial engineering +66|271|65651|4294967394|40.97|46.48|true|ulysses ellison|2013-03-01 09:11:58.703214|44.96|xylophone band +22|477|65543|4294967311|59.02|49.60|false|mike carson|2013-03-01 09:11:58.703292|37.86|zync studies +84|258|65717|4294967343|95.76|35.07|false|sarah polk|2013-03-01 09:11:58.703087|64.36|xylophone band +94|363|65779|4294967403|21.39|3.27|false|yuri miller|2013-03-01 09:11:58.703158|79.30|biology +119|419|65707|4294967402|81.49|21.37|true|ulysses miller|2013-03-01 09:11:58.703323|62.91|kindergarten +111|354|65760|4294967298|1.03|33.90|false|xavier davidson|2013-03-01 09:11:58.703239|4.07|industrial engineering +104|404|65648|4294967306|70.60|22.49|true|luke carson|2013-03-01 09:11:58.703152|50.62|zync studies +106|294|65779|4294967412|3.71|43.07|true|bob ichabod|2013-03-01 09:11:58.703211|48.27|undecided +85|379|65695|4294967519|99.05|32.89|false|victor polk|2013-03-01 09:11:58.703189|59.02|study skills +15|368|65638|4294967382|76.99|42.22|false|yuri falkner|2013-03-01 09:11:58.703117|21.56|topology +113|292|65696|4294967544|24.65|47.71|true|gabriella van buren|2013-03-01 09:11:58.703276|16.84|kindergarten +113|387|65604|4294967423|78.47|1.88|false|katie ellison|2013-03-01 09:11:58.703239|34.78|study skills +56|278|65717|4294967384|82.95|11.79|true|oscar ovid|2013-03-01 09:11:58.703243|2.92|opthamology +73|293|65726|4294967311|85.13|5.54|false|david allen|2013-03-01 09:11:58.703271|59.03|forestry +104|458|65549|4294967473|89.99|37.58|false|jessica robinson|2013-03-01 09:11:58.703165|99.27|values clariffication +39|351|65649|4294967425|4.76|19.44|true|alice steinbeck|2013-03-01 09:11:58.703255|57.82|american history +124|357|65730|4294967535|19.98|44.48|false|david allen|2013-03-01 09:11:58.703266|16.15|mathematics +18|508|65618|4294967376|2.55|1.53|true|wendy king|2013-03-01 09:11:58.703109|69.37|kindergarten +114|348|65707|4294967352|36.61|49.00|false|bob nixon|2013-03-01 09:11:58.703096|8.28|chemistry +87|273|65639|4294967342|29.92|26.76|true|victor garcia|2013-03-01 09:11:58.703164|98.84|study skills +56|453|65669|4294967347|78.78|28.73|false|victor carson|2013-03-01 09:11:58.703286|44.31|yard duty +110|382|65733|4294967368|38.27|1.85|false|bob davidson|2013-03-01 09:11:58.703183|9.44|linguistics +81|332|65759|4294967425|95.98|44.13|false|ulysses carson|2013-03-01 09:11:58.703139|32.12|quiet hour +43|340|65757|4294967465|78.30|31.26|false|ulysses white|2013-03-01 09:11:58.703120|77.95|biology +-2|450|65727|4294967487|94.57|30.40|false|david miller|2013-03-01 09:11:58.703238|39.90|religion +79|370|65562|4294967446|24.78|26.43|false|irene king|2013-03-01 09:11:58.703297|2.98|joggying +48|322|65748|4294967426|94.22|16.95|false|ethan davidson|2013-03-01 09:11:58.703078|86.86|quiet hour +46|334|65669|4294967395|28.31|23.08|false|tom johnson|2013-03-01 09:11:58.703084|24.64|opthamology +121|376|65677|4294967445|3.70|44.68|true|quinn nixon|2013-03-01 09:11:58.703249|8.31|american history +20|491|65550|4294967366|78.89|36.41|true|luke xylophone|2013-03-01 09:11:58.703244|30.89|study skills +100|340|65560|4294967523|6.77|30.81|false|wendy young|2013-03-01 09:11:58.703151|28.03|values clariffication +-2|347|65687|4294967440|71.04|40.80|false|tom miller|2013-03-01 09:11:58.703084|89.84|forestry +66|448|65775|4294967432|2.75|28.18|true|holly falkner|2013-03-01 09:11:58.703139|95.02|history +115|502|65753|4294967512|87.75|10.28|false|fred miller|2013-03-01 09:11:58.703122|57.79|industrial engineering +94|320|65552|4294967509|71.73|39.75|true|mike steinbeck|2013-03-01 09:11:58.703192|63.94|yard duty +79|347|65699|4294967477|68.88|47.11|true|david steinbeck|2013-03-01 09:11:58.703222|70.43|yard duty +-2|395|65693|4294967395|31.66|30.63|false|ethan king|2013-03-01 09:11:58.703121|16.43|linguistics +82|476|65740|4294967302|0.93|9.80|true|yuri white|2013-03-01 09:11:58.703320|28.76|undecided +27|266|65549|4294967482|24.01|28.29|false|victor laertes|2013-03-01 09:11:58.703235|36.11|biology +14|424|65705|4294967310|57.50|27.44|true|zach white|2013-03-01 09:11:58.703287|42.99|study skills +105|261|65689|4294967451|5.62|17.22|false|wendy van buren|2013-03-01 09:11:58.703152|62.36|wind surfing +122|279|65663|4294967320|34.36|5.33|true|katie carson|2013-03-01 09:11:58.703277|95.34|study skills +25|483|65537|4294967463|37.36|17.35|false|fred johnson|2013-03-01 09:11:58.703289|56.83|philosophy +102|504|65760|4294967536|59.52|37.31|false|priscilla quirinius|2013-03-01 09:11:58.703157|28.07|biology +16|366|65565|4294967467|45.29|35.46|false|bob ovid|2013-03-01 09:11:58.703305|22.66|quiet hour +-1|391|65678|4294967317|17.03|42.12|false|zach white|2013-03-01 09:11:58.703092|54.74|joggying +90|319|65570|4294967536|86.39|46.08|false|bob ovid|2013-03-01 09:11:58.703180|19.37|forestry +74|456|65719|4294967378|3.21|36.26|false|priscilla young|2013-03-01 09:11:58.703238|31.56|linguistics +49|458|65743|4294967411|79.92|42.75|true|priscilla carson|2013-03-01 09:11:58.703236|15.88|nap time +8|395|65566|4294967324|36.36|42.08|false|xavier davidson|2013-03-01 09:11:58.703114|11.27|kindergarten +54|363|65788|4294967369|65.70|2.27|false|holly xylophone|2013-03-01 09:11:58.703108|20.81|linguistics +4|289|65775|4294967340|64.67|9.15|false|victor ichabod|2013-03-01 09:11:58.703173|34.65|undecided +51|444|65640|4294967358|23.03|23.23|false|wendy brown|2013-03-01 09:11:58.703250|22.66|undecided +122|499|65677|4294967461|62.98|47.86|false|priscilla nixon|2013-03-01 09:11:58.703147|93.93|american history +77|297|65727|4294967327|28.27|36.09|false|priscilla falkner|2013-03-01 09:11:58.703113|62.84|geology +28|450|65760|4294967378|76.72|37.78|true|fred xylophone|2013-03-01 09:11:58.703307|28.84|wind surfing +112|334|65577|4294967356|45.20|35.36|false|xavier miller|2013-03-01 09:11:58.703138|51.53|philosophy +18|511|65568|4294967438|60.85|28.45|true|rachel laertes|2013-03-01 09:11:58.703209|89.16|history +20|266|65738|4294967355|30.12|4.75|true|yuri hernandez|2013-03-01 09:11:58.703277|20.80|geology +111|276|65602|4294967543|73.01|48.49|false|sarah brown|2013-03-01 09:11:58.703185|17.42|geology +13|357|65744|4294967444|93.73|43.64|true|oscar xylophone|2013-03-01 09:11:58.703191|89.93|religion +24|476|65682|4294967322|13.62|28.25|true|ulysses polk|2013-03-01 09:11:58.703225|72.75|values clariffication +25|402|65732|4294967516|93.46|8.03|false|david polk|2013-03-01 09:11:58.703214|96.10|history +118|355|65557|4294967309|60.51|23.78|false|ethan king|2013-03-01 09:11:58.703223|30.05|geology +81|289|65775|4294967400|33.50|1.02|true|nick quirinius|2013-03-01 09:11:58.703170|18.11|nap time +4|351|65729|4294967379|22.98|3.91|false|zach carson|2013-03-01 09:11:58.703232|49.91|chemistry +40|357|65719|4294967501|25.34|37.06|false|wendy underhill|2013-03-01 09:11:58.703072|92.34|education +95|324|65649|4294967314|38.99|28.60|true|david garcia|2013-03-01 09:11:58.703202|21.79|nap time +118|378|65737|4294967399|8.95|10.37|true|david robinson|2013-03-01 09:11:58.703281|88.80|wind surfing +120|468|65780|4294967424|59.98|5.81|true|david quirinius|2013-03-01 09:11:58.703134|37.45|undecided +55|257|65547|4294967333|54.01|21.47|false|katie ichabod|2013-03-01 09:11:58.703196|80.30|debate +53|305|65642|4294967328|10.62|14.29|false|nick ellison|2013-03-01 09:11:58.703071|53.16|yard duty +43|455|65571|4294967486|51.60|6.55|true|gabriella young|2013-03-01 09:11:58.703303|0.07|industrial engineering +46|312|65641|4294967432|75.07|23.42|true|holly ovid|2013-03-01 09:11:58.703189|46.99|biology +8|458|65627|4294967478|70.00|22.12|true|yuri hernandez|2013-03-01 09:11:58.703252|42.09|quiet hour +118|430|65611|4294967354|48.18|25.85|true|fred polk|2013-03-01 09:11:58.703170|72.65|forestry +-3|268|65710|4294967448|82.74|12.48|true|holly polk|2013-03-01 09:11:58.703273|14.55|undecided +123|309|65576|4294967422|97.81|26.49|true|jessica carson|2013-03-01 09:11:58.703132|53.41|biology +31|354|65640|4294967402|84.13|29.72|true|bob ichabod|2013-03-01 09:11:58.703224|9.63|topology +27|396|65745|4294967339|15.21|0.65|false|oscar laertes|2013-03-01 09:11:58.703092|48.14|values clariffication +33|310|65771|4294967403|85.95|35.67|false|wendy allen|2013-03-01 09:11:58.703292|2.29|geology +63|411|65619|4294967484|82.02|46.32|true|nick underhill|2013-03-01 09:11:58.703287|57.22|chemistry +56|417|65720|4294967545|39.41|41.38|true|ulysses ellison|2013-03-01 09:11:58.703106|37.76|linguistics +44|285|65575|4294967428|56.45|8.99|false|rachel ovid|2013-03-01 09:11:58.703071|18.85|education +22|423|65722|4294967503|49.04|33.81|false|fred miller|2013-03-01 09:11:58.703166|10.38|history +44|344|65634|4294967343|77.35|4.04|true|nick brown|2013-03-01 09:11:58.703129|75.10|geology +34|413|65708|4294967489|39.16|0.46|true|victor brown|2013-03-01 09:11:58.703321|77.21|philosophy +35|366|65749|4294967424|1.91|49.83|false|sarah polk|2013-03-01 09:11:58.703160|64.16|forestry +80|432|65774|4294967444|0.01|40.55|true|bob ichabod|2013-03-01 09:11:58.703165|86.78|wind surfing +-2|261|65551|4294967507|33.00|5.08|false|xavier miller|2013-03-01 09:11:58.703089|17.41|geology +111|402|65544|4294967480|78.24|46.91|false|alice davidson|2013-03-01 09:11:58.703080|37.53|forestry +120|467|65760|4294967504|52.99|27.09|true|ulysses brown|2013-03-01 09:11:58.703166|10.86|undecided +55|486|65693|4294967389|86.64|5.41|false|david polk|2013-03-01 09:11:58.703138|11.32|undecided +66|407|65750|4294967408|64.54|31.86|false|gabriella robinson|2013-03-01 09:11:58.703151|36.75|biology +19|429|65593|4294967471|89.62|38.13|false|oscar ovid|2013-03-01 09:11:58.703177|55.49|debate +101|353|65733|4294967473|43.95|44.72|false|sarah steinbeck|2013-03-01 09:11:58.703111|25.25|philosophy +79|364|65541|4294967531|74.34|13.80|true|quinn nixon|2013-03-01 09:11:58.703206|11.37|nap time +15|471|65624|4294967326|39.61|28.88|true|katie underhill|2013-03-01 09:11:58.703124|56.57|history +36|491|65767|4294967396|43.41|12.86|false|zach carson|2013-03-01 09:11:58.703151|8.85|undecided +102|289|65555|4294967488|97.13|21.09|false|sarah thompson|2013-03-01 09:11:58.703214|61.68|philosophy +41|411|65589|4294967522|61.79|15.95|true|oscar white|2013-03-01 09:11:58.703145|65.16|joggying +16|407|65538|4294967328|63.48|37.14|true|gabriella nixon|2013-03-01 09:11:58.703137|13.71|geology +27|431|65677|4294967326|60.34|33.03|true|alice davidson|2013-03-01 09:11:58.703273|41.05|geology +85|276|65748|4294967396|15.21|35.72|true|oscar johnson|2013-03-01 09:11:58.703267|63.93|xylophone band +54|420|65757|4294967487|39.15|6.05|false|bob brown|2013-03-01 09:11:58.703278|20.29|history +123|472|65725|4294967327|70.19|47.16|true|nick nixon|2013-03-01 09:11:58.703224|73.95|forestry +13|436|65580|4294967500|27.00|1.00|true|nick quirinius|2013-03-01 09:11:58.703207|86.78|nap time +104|350|65537|4294967505|79.01|34.04|true|zach falkner|2013-03-01 09:11:58.703121|40.92|philosophy +65|281|65777|4294967344|38.23|5.11|true|victor davidson|2013-03-01 09:11:58.703103|80.27|wind surfing +27|345|65686|4294967503|50.23|2.49|false|fred allen|2013-03-01 09:11:58.703230|4.54|yard duty +100|362|65623|4294967528|24.69|12.24|false|ulysses laertes|2013-03-01 09:11:58.703077|13.89|opthamology +26|284|65711|4294967547|44.01|28.28|false|xavier brown|2013-03-01 09:11:58.703239|63.24|philosophy +1|372|65788|4294967322|49.46|13.99|false|nick polk|2013-03-01 09:11:58.703172|36.80|american history +66|310|65694|4294967431|70.58|48.00|true|oscar van buren|2013-03-01 09:11:58.703325|12.66|values clariffication +105|265|65563|4294967439|9.27|15.72|false|bob ovid|2013-03-01 09:11:58.703257|21.71|topology +35|465|65719|4294967539|54.09|44.88|true|sarah van buren|2013-03-01 09:11:58.703071|52.08|philosophy +72|270|65623|4294967540|5.00|15.07|true|luke falkner|2013-03-01 09:11:58.703238|50.45|mathematics +19|408|65643|4294967393|67.97|29.85|false|rachel king|2013-03-01 09:11:58.703143|83.80|forestry +98|460|65688|4294967440|3.85|17.28|false|calvin hernandez|2013-03-01 09:11:58.703113|61.13|biology +53|352|65543|4294967436|15.80|31.78|true|nick laertes|2013-03-01 09:11:58.703242|56.82|history +114|277|65700|4294967373|52.89|13.96|false|yuri miller|2013-03-01 09:11:58.703076|7.67|geology +48|413|65538|4294967515|21.19|16.38|false|rachel young|2013-03-01 09:11:58.703291|79.10|quiet hour +65|294|65610|4294967406|91.69|23.10|false|ulysses carson|2013-03-01 09:11:58.703093|66.58|zync studies +102|511|65757|4294967360|1.47|0.93|false|yuri laertes|2013-03-01 09:11:58.703297|43.05|industrial engineering +90|380|65582|4294967447|71.64|24.90|false|ulysses garcia|2013-03-01 09:11:58.703230|6.62|zync studies +121|496|65553|4294967325|33.44|21.86|true|katie laertes|2013-03-01 09:11:58.703296|75.52|chemistry +3|487|65599|4294967437|21.17|33.51|false|priscilla garcia|2013-03-01 09:11:58.703079|15.22|linguistics +67|425|65681|4294967472|74.63|44.34|true|quinn quirinius|2013-03-01 09:11:58.703173|37.27|linguistics +76|497|65573|4294967440|99.93|15.98|false|sarah falkner|2013-03-01 09:11:58.703262|49.71|wind surfing +59|459|65727|4294967375|80.35|27.35|false|bob young|2013-03-01 09:11:58.703158|57.99|linguistics +105|423|65754|4294967299|60.15|9.39|false|david davidson|2013-03-01 09:11:58.703323|53.53|undecided +38|482|65731|4294967358|56.01|23.98|false|jessica davidson|2013-03-01 09:11:58.703079|99.84|biology +101|330|65741|4294967532|81.10|43.04|false|oscar ichabod|2013-03-01 09:11:58.703319|45.58|nap time +35|326|65654|4294967474|4.77|5.57|false|alice steinbeck|2013-03-01 09:11:58.703246|97.37|study skills +115|480|65741|4294967496|61.65|46.30|false|alice ovid|2013-03-01 09:11:58.703325|56.56|philosophy +26|484|65787|4294967447|73.47|48.92|false|tom ovid|2013-03-01 09:11:58.703172|22.72|debate +26|268|65550|4294967317|46.89|13.33|true|gabriella white|2013-03-01 09:11:58.703138|48.15|study skills +37|311|65656|4294967382|64.03|19.06|true|xavier laertes|2013-03-01 09:11:58.703165|73.23|forestry +0|399|65643|4294967376|28.15|3.65|false|ethan hernandez|2013-03-01 09:11:58.703289|10.03|forestry +35|394|65569|4294967344|64.34|15.02|false|nick hernandez|2013-03-01 09:11:58.703218|73.42|education +38|488|65553|4294967319|90.19|32.74|true|sarah miller|2013-03-01 09:11:58.703173|85.64|joggying +107|262|65562|4294967470|60.58|23.55|true|ulysses robinson|2013-03-01 09:11:58.703160|25.58|yard duty +68|347|65666|4294967464|86.42|48.97|false|tom underhill|2013-03-01 09:11:58.703151|30.59|yard duty +112|387|65622|4294967549|23.34|45.46|false|jessica miller|2013-03-01 09:11:58.703234|31.58|forestry +67|336|65732|4294967332|1.34|2.68|false|oscar ovid|2013-03-01 09:11:58.703096|57.07|education +41|315|65777|4294967385|11.88|20.71|false|tom young|2013-03-01 09:11:58.703190|44.32|biology +47|377|65626|4294967481|10.15|39.69|false|rachel xylophone|2013-03-01 09:11:58.703168|64.40|opthamology +15|425|65547|4294967296|14.66|32.59|false|katie xylophone|2013-03-01 09:11:58.703136|89.87|wind surfing +69|407|65656|4294967348|67.56|45.53|false|alice ovid|2013-03-01 09:11:58.703246|99.24|religion +72|416|65631|4294967515|40.41|17.38|true|mike ichabod|2013-03-01 09:11:58.703096|30.54|chemistry +54|482|65674|4294967373|52.37|27.44|false|nick falkner|2013-03-01 09:11:58.703229|29.32|debate +103|396|65649|4294967392|91.31|44.19|false|alice hernandez|2013-03-01 09:11:58.703273|15.47|mathematics +42|294|65788|4294967476|60.19|49.63|false|irene steinbeck|2013-03-01 09:11:58.703162|51.70|nap time +106|327|65589|4294967333|89.59|10.31|true|katie nixon|2013-03-01 09:11:58.703242|88.60|debate +101|396|65728|4294967516|74.92|32.26|true|wendy nixon|2013-03-01 09:11:58.703228|90.87|chemistry +96|385|65685|4294967343|90.36|19.80|false|irene miller|2013-03-01 09:11:58.703237|93.70|quiet hour +113|449|65754|4294967367|59.32|37.70|true|yuri young|2013-03-01 09:11:58.703113|72.55|religion +7|462|65642|4294967325|96.55|28.51|true|yuri quirinius|2013-03-01 09:11:58.703274|33.04|linguistics +88|445|65713|4294967398|86.83|46.73|false|ulysses polk|2013-03-01 09:11:58.703313|87.34|forestry +34|464|65716|4294967313|97.25|45.08|false|calvin hernandez|2013-03-01 09:11:58.703265|0.39|chemistry +38|494|65696|4294967305|90.34|24.84|true|zach steinbeck|2013-03-01 09:11:58.703173|82.78|education +104|417|65555|4294967438|77.59|27.39|false|david brown|2013-03-01 09:11:58.703109|19.14|religion +83|420|65726|4294967490|29.05|42.49|false|tom white|2013-03-01 09:11:58.703160|44.04|kindergarten +37|453|65721|4294967393|97.52|4.94|false|fred robinson|2013-03-01 09:11:58.703180|74.29|religion +25|492|65622|4294967522|72.21|44.77|false|priscilla robinson|2013-03-01 09:11:58.703324|41.93|nap time +111|301|65564|4294967348|7.12|41.54|false|oscar nixon|2013-03-01 09:11:58.703185|31.34|industrial engineering +76|463|65566|4294967339|67.32|14.09|true|irene van buren|2013-03-01 09:11:58.703301|42.25|joggying +60|461|65760|4294967444|59.50|28.38|true|gabriella nixon|2013-03-01 09:11:58.703076|86.12|kindergarten +124|468|65684|4294967499|1.86|35.63|true|quinn brown|2013-03-01 09:11:58.703074|82.73|topology +66|300|65650|4294967483|96.07|15.59|true|wendy steinbeck|2013-03-01 09:11:58.703317|88.31|debate +102|309|65666|4294967550|80.48|7.61|false|jessica davidson|2013-03-01 09:11:58.703176|32.78|opthamology +8|475|65766|4294967536|16.14|0.73|true|gabriella brown|2013-03-01 09:11:58.703103|25.70|linguistics +31|459|65746|4294967320|24.38|38.97|false|priscilla steinbeck|2013-03-01 09:11:58.703219|57.46|yard duty +6|401|65693|4294967544|0.50|44.83|true|calvin ovid|2013-03-01 09:11:58.703228|48.80|joggying +105|479|65677|4294967537|56.36|44.03|true|nick xylophone|2013-03-01 09:11:58.703172|9.59|chemistry +78|440|65620|4294967504|39.33|31.33|true|quinn nixon|2013-03-01 09:11:58.703130|53.72|mathematics +53|370|65760|4294967339|63.80|28.11|false|rachel young|2013-03-01 09:11:58.703206|73.90|industrial engineering +117|435|65782|4294967463|16.33|20.07|true|holly xylophone|2013-03-01 09:11:58.703193|27.12|joggying +-1|358|65690|4294967333|32.11|9.87|true|luke king|2013-03-01 09:11:58.703135|83.63|biology +74|266|65734|4294967319|25.31|27.23|true|calvin ellison|2013-03-01 09:11:58.703323|89.50|yard duty +53|478|65709|4294967335|13.68|44.75|false|ethan quirinius|2013-03-01 09:11:58.703278|23.34|education +69|432|65790|4294967421|41.09|33.51|true|quinn ovid|2013-03-01 09:11:58.703128|52.36|geology +122|481|65688|4294967531|41.44|49.96|true|ulysses robinson|2013-03-01 09:11:58.703203|22.14|biology +78|299|65593|4294967437|34.18|36.03|false|gabriella zipper|2013-03-01 09:11:58.703236|31.35|kindergarten +114|473|65729|4294967419|12.57|34.78|false|holly johnson|2013-03-01 09:11:58.703184|28.71|yard duty +108|327|65660|4294967379|8.44|14.90|false|wendy young|2013-03-01 09:11:58.703315|30.23|values clariffication +44|486|65548|4294967333|55.52|9.84|true|alice white|2013-03-01 09:11:58.703176|43.62|mathematics +118|275|65727|4294967343|52.16|33.37|true|david young|2013-03-01 09:11:58.703145|30.94|american history +45|310|65553|4294967399|53.58|37.27|true|holly falkner|2013-03-01 09:11:58.703177|65.26|yard duty +110|392|65645|4294967475|26.42|29.94|false|fred king|2013-03-01 09:11:58.703145|91.59|mathematics +91|445|65656|4294967424|29.97|37.75|false|sarah ichabod|2013-03-01 09:11:58.703313|83.76|chemistry +6|261|65584|4294967501|69.80|43.34|true|priscilla nixon|2013-03-01 09:11:58.703274|68.21|geology +32|363|65565|4294967503|2.89|42.67|false|wendy van buren|2013-03-01 09:11:58.703321|31.75|undecided +14|285|65771|4294967335|75.27|35.22|true|ethan quirinius|2013-03-01 09:11:58.703276|36.61|topology +24|505|65710|4294967303|94.75|18.78|false|oscar young|2013-03-01 09:11:58.703156|72.54|topology +7|429|65701|4294967410|94.58|42.09|false|luke laertes|2013-03-01 09:11:58.703271|98.26|mathematics +110|459|65644|4294967547|26.70|48.94|false|oscar underhill|2013-03-01 09:11:58.703099|74.75|values clariffication +67|282|65671|4294967533|45.58|46.44|false|alice young|2013-03-01 09:11:58.703086|8.52|xylophone band +56|257|65752|4294967497|49.35|25.89|true|nick davidson|2013-03-01 09:11:58.703204|87.67|forestry +95|491|65770|4294967401|41.18|8.05|false|jessica ichabod|2013-03-01 09:11:58.703316|66.74|study skills +47|268|65762|4294967327|51.30|6.99|false|xavier johnson|2013-03-01 09:11:58.703112|93.85|opthamology +19|380|65754|4294967305|22.82|39.39|true|yuri quirinius|2013-03-01 09:11:58.703316|56.01|yard duty +5|322|65604|4294967432|50.15|35.49|true|wendy ellison|2013-03-01 09:11:58.703075|74.72|quiet hour +77|370|65566|4294967520|67.88|44.13|true|ulysses robinson|2013-03-01 09:11:58.703218|15.22|quiet hour +97|493|65674|4294967491|5.81|8.90|true|wendy davidson|2013-03-01 09:11:58.703315|80.48|biology +110|487|65583|4294967515|48.91|15.45|false|quinn johnson|2013-03-01 09:11:58.703081|68.17|american history +37|284|65572|4294967471|2.16|17.50|true|wendy falkner|2013-03-01 09:11:58.703167|49.10|nap time +67|504|65595|4294967432|52.34|10.07|false|ethan ellison|2013-03-01 09:11:58.703308|22.99|kindergarten +25|308|65726|4294967401|22.26|35.29|false|fred carson|2013-03-01 09:11:58.703282|68.09|education +105|301|65675|4294967453|16.86|25.94|false|holly garcia|2013-03-01 09:11:58.703321|91.05|opthamology +124|446|65768|4294967315|92.33|22.21|true|oscar carson|2013-03-01 09:11:58.703072|20.14|history +61|428|65599|4294967459|25.21|15.48|false|nick ellison|2013-03-01 09:11:58.703102|56.83|zync studies +11|334|65752|4294967307|92.52|40.55|true|holly king|2013-03-01 09:11:58.703175|96.46|philosophy +71|442|65674|4294967422|79.15|12.15|true|sarah johnson|2013-03-01 09:11:58.703193|59.74|forestry +91|387|65759|4294967335|26.33|49.10|false|katie quirinius|2013-03-01 09:11:58.703112|2.51|history +86|274|65570|4294967395|4.89|36.79|false|tom carson|2013-03-01 09:11:58.703210|25.18|american history +-2|337|65738|4294967374|6.86|17.06|false|mike laertes|2013-03-01 09:11:58.703100|17.75|biology +83|505|65724|4294967360|75.95|30.47|false|sarah miller|2013-03-01 09:11:58.703132|5.04|history +123|384|65586|4294967466|56.16|44.92|false|nick white|2013-03-01 09:11:58.703135|5.16|geology +-2|406|65762|4294967443|1.79|33.42|false|david falkner|2013-03-01 09:11:58.703254|58.25|opthamology +14|293|65614|4294967423|23.51|42.13|true|rachel king|2013-03-01 09:11:58.703235|97.25|yard duty +72|311|65673|4294967425|13.80|44.33|false|tom white|2013-03-01 09:11:58.703255|18.56|philosophy +78|348|65666|4294967313|10.47|41.09|false|jessica carson|2013-03-01 09:11:58.703301|13.18|xylophone band +70|362|65604|4294967519|85.48|1.61|false|rachel ovid|2013-03-01 09:11:58.703206|60.51|xylophone band +4|268|65678|4294967485|44.08|23.96|true|zach johnson|2013-03-01 09:11:58.703315|86.26|linguistics +20|431|65737|4294967335|50.75|27.37|true|katie polk|2013-03-01 09:11:58.703287|85.49|joggying +107|417|65702|4294967321|64.89|2.84|true|sarah van buren|2013-03-01 09:11:58.703150|2.56|philosophy +111|379|65571|4294967363|33.04|16.19|true|yuri ellison|2013-03-01 09:11:58.703073|7.00|values clariffication +101|489|65651|4294967523|94.28|25.21|true|yuri carson|2013-03-01 09:11:58.703211|70.13|mathematics +94|438|65670|4294967431|68.85|34.71|true|gabriella laertes|2013-03-01 09:11:58.703320|18.69|zync studies +101|281|65628|4294967358|14.28|25.03|false|yuri polk|2013-03-01 09:11:58.703305|53.31|values clariffication +113|417|65625|4294967406|2.04|23.56|false|wendy falkner|2013-03-01 09:11:58.703096|80.13|mathematics +81|476|65780|4294967315|34.59|5.46|true|wendy white|2013-03-01 09:11:58.703324|19.03|religion +101|307|65704|4294967359|39.65|11.48|true|jessica allen|2013-03-01 09:11:58.703237|53.37|philosophy +7|492|65768|4294967330|34.28|22.18|true|ulysses zipper|2013-03-01 09:11:58.703166|51.08|linguistics +95|324|65700|4294967328|96.45|11.36|false|quinn hernandez|2013-03-01 09:11:58.703099|68.21|topology +1|297|65560|4294967550|50.57|36.26|false|sarah laertes|2013-03-01 09:11:58.703323|94.17|study skills +106|484|65656|4294967535|13.86|20.69|true|zach ovid|2013-03-01 09:11:58.703075|86.24|forestry +13|400|65781|4294967305|43.95|22.63|false|wendy garcia|2013-03-01 09:11:58.703161|92.50|study skills +34|288|65560|4294967502|18.86|43.04|false|ulysses carson|2013-03-01 09:11:58.703293|72.36|nap time +71|379|65685|4294967359|97.23|4.99|false|luke davidson|2013-03-01 09:11:58.703202|87.32|chemistry +106|275|65592|4294967344|90.75|34.57|true|oscar young|2013-03-01 09:11:58.703318|68.02|undecided +13|448|65586|4294967542|6.90|39.21|false|oscar brown|2013-03-01 09:11:58.703245|34.47|nap time +57|494|65784|4294967329|27.37|7.74|true|irene king|2013-03-01 09:11:58.703239|93.23|kindergarten +29|503|65570|4294967389|97.33|36.21|true|sarah brown|2013-03-01 09:11:58.703261|96.28|religion +36|437|65600|4294967427|48.35|46.36|false|sarah hernandez|2013-03-01 09:11:58.703143|83.46|xylophone band +112|267|65661|4294967324|32.77|1.57|false|quinn allen|2013-03-01 09:11:58.703280|52.75|forestry +34|268|65548|4294967308|40.51|48.75|false|yuri polk|2013-03-01 09:11:58.703204|94.03|undecided +94|431|65784|4294967404|17.95|21.71|true|david van buren|2013-03-01 09:11:58.703282|63.99|biology +112|300|65635|4294967319|40.18|21.78|true|david xylophone|2013-03-01 09:11:58.703184|77.75|topology +103|432|65688|4294967453|66.41|47.47|true|zach white|2013-03-01 09:11:58.703260|99.89|forestry +111|363|65738|4294967436|58.55|46.00|true|david thompson|2013-03-01 09:11:58.703194|61.34|forestry +3|367|65553|4294967358|75.20|13.02|true|katie thompson|2013-03-01 09:11:58.703254|34.22|mathematics +32|275|65667|4294967448|89.49|22.05|true|zach van buren|2013-03-01 09:11:58.703290|13.38|kindergarten +3|468|65724|4294967511|76.67|33.01|true|yuri van buren|2013-03-01 09:11:58.703227|77.92|geology +99|363|65768|4294967394|94.55|40.70|false|mike thompson|2013-03-01 09:11:58.703273|10.14|mathematics +60|494|65580|4294967463|41.41|42.60|true|luke king|2013-03-01 09:11:58.703232|1.24|study skills +50|464|65689|4294967410|36.72|42.88|false|nick johnson|2013-03-01 09:11:58.703220|66.24|wind surfing +20|340|65667|4294967480|82.00|34.38|false|sarah falkner|2013-03-01 09:11:58.703309|65.87|study skills +85|356|65589|4294967365|33.55|2.84|true|yuri young|2013-03-01 09:11:58.703136|4.70|industrial engineering +117|473|65686|4294967375|54.67|2.25|true|wendy van buren|2013-03-01 09:11:58.703284|56.58|american history +70|476|65696|4294967335|21.18|26.09|true|holly quirinius|2013-03-01 09:11:58.703307|95.32|chemistry +58|432|65538|4294967504|74.99|25.90|false|ulysses robinson|2013-03-01 09:11:58.703076|67.55|study skills +1|501|65735|4294967395|63.14|4.38|false|yuri davidson|2013-03-01 09:11:58.703125|91.60|quiet hour +104|344|65609|4294967303|55.13|20.24|false|luke falkner|2013-03-01 09:11:58.703284|60.29|quiet hour +105|503|65565|4294967484|2.74|13.42|true|quinn zipper|2013-03-01 09:11:58.703177|44.53|history +18|475|65790|4294967332|32.87|32.00|false|victor steinbeck|2013-03-01 09:11:58.703310|69.60|mathematics +53|371|65751|4294967349|43.98|23.94|false|rachel king|2013-03-01 09:11:58.703259|66.53|philosophy +12|481|65757|4294967460|97.76|40.62|false|holly underhill|2013-03-01 09:11:58.703114|89.66|values clariffication +100|432|65592|4294967370|54.39|24.11|true|gabriella hernandez|2013-03-01 09:11:58.703086|61.02|zync studies +24|484|65703|4294967543|26.20|13.00|true|xavier van buren|2013-03-01 09:11:58.703143|25.25|undecided +85|258|65770|4294967541|13.38|21.04|false|alice nixon|2013-03-01 09:11:58.703111|21.29|undecided +66|402|65626|4294967510|16.21|21.00|true|luke young|2013-03-01 09:11:58.703166|43.01|opthamology +89|259|65703|4294967352|81.53|0.81|false|david carson|2013-03-01 09:11:58.703291|38.75|opthamology +2|467|65598|4294967299|62.77|7.10|false|priscilla nixon|2013-03-01 09:11:58.703202|3.84|yard duty +85|306|65554|4294967357|40.53|30.34|false|xavier falkner|2013-03-01 09:11:58.703320|42.44|biology +71|359|65780|4294967412|37.28|27.62|true|zach davidson|2013-03-01 09:11:58.703280|1.35|wind surfing +42|504|65740|4294967477|48.89|30.59|false|rachel young|2013-03-01 09:11:58.703071|21.43|religion +87|289|65670|4294967522|28.79|13.73|true|priscilla falkner|2013-03-01 09:11:58.703219|71.49|study skills +102|300|65637|4294967455|76.56|39.14|true|sarah steinbeck|2013-03-01 09:11:58.703242|58.20|philosophy +22|495|65575|4294967357|70.67|18.73|true|david thompson|2013-03-01 09:11:58.703196|75.55|opthamology +42|377|65758|4294967406|20.88|10.24|false|luke brown|2013-03-01 09:11:58.703130|23.63|chemistry +78|424|65784|4294967455|14.65|15.47|true|oscar zipper|2013-03-01 09:11:58.703106|93.08|linguistics +60|455|65541|4294967355|67.89|23.62|false|ulysses xylophone|2013-03-01 09:11:58.703102|54.96|undecided +2|365|65755|4294967310|23.68|20.13|true|fred underhill|2013-03-01 09:11:58.703314|91.94|topology +82|455|65773|4294967451|46.26|37.94|false|ulysses quirinius|2013-03-01 09:11:58.703141|54.33|quiet hour +123|502|65540|4294967469|37.15|48.72|true|calvin underhill|2013-03-01 09:11:58.703237|70.78|biology +105|280|65601|4294967462|26.21|31.91|false|gabriella ichabod|2013-03-01 09:11:58.703213|9.91|chemistry +109|379|65641|4294967535|15.30|9.03|false|sarah laertes|2013-03-01 09:11:58.703320|93.83|quiet hour +74|343|65570|4294967515|43.01|25.46|true|fred garcia|2013-03-01 09:11:58.703167|51.58|study skills +13|349|65779|4294967478|95.41|45.47|true|tom allen|2013-03-01 09:11:58.703323|59.35|opthamology +103|332|65724|4294967459|73.42|14.64|false|mike van buren|2013-03-01 09:11:58.703130|11.36|zync studies +34|411|65722|4294967451|89.49|34.97|true|calvin falkner|2013-03-01 09:11:58.703233|61.90|xylophone band +41|501|65670|4294967429|64.24|37.79|true|alice allen|2013-03-01 09:11:58.703135|62.52|study skills +118|306|65559|4294967305|22.63|31.12|true|gabriella ellison|2013-03-01 09:11:58.703205|23.46|mathematics +30|483|65687|4294967424|4.96|16.01|false|mike robinson|2013-03-01 09:11:58.703148|63.14|study skills +-3|344|65756|4294967378|52.13|18.95|true|victor thompson|2013-03-01 09:11:58.703299|81.06|topology +17|361|65585|4294967378|50.91|29.51|false|fred miller|2013-03-01 09:11:58.703082|27.57|kindergarten +100|259|65641|4294967453|20.65|25.90|false|ethan laertes|2013-03-01 09:11:58.703261|27.33|industrial engineering +53|417|65554|4294967333|39.74|0.94|true|xavier white|2013-03-01 09:11:58.703226|94.59|american history +41|471|65717|4294967320|81.31|34.56|true|rachel garcia|2013-03-01 09:11:58.703286|6.59|xylophone band +62|273|65719|4294967452|2.44|9.81|false|yuri young|2013-03-01 09:11:58.703104|52.81|chemistry +57|457|65746|4294967519|89.60|9.73|false|yuri hernandez|2013-03-01 09:11:58.703282|71.77|yard duty +61|446|65565|4294967313|50.26|6.41|true|bob van buren|2013-03-01 09:11:58.703131|22.62|values clariffication +89|507|65726|4294967475|85.51|37.24|true|mike laertes|2013-03-01 09:11:58.703142|7.22|wind surfing +110|293|65564|4294967433|20.85|30.31|true|sarah underhill|2013-03-01 09:11:58.703283|79.67|american history +39|350|65697|4294967503|89.58|23.08|true|irene ellison|2013-03-01 09:11:58.703274|19.02|geology +76|305|65737|4294967527|91.05|17.70|false|sarah falkner|2013-03-01 09:11:58.703121|37.42|history +0|386|65772|4294967316|9.38|20.50|false|alice van buren|2013-03-01 09:11:58.703120|87.96|topology +124|400|65733|4294967518|9.36|2.84|true|ethan quirinius|2013-03-01 09:11:58.703150|85.65|kindergarten +84|424|65789|4294967327|96.62|38.77|false|nick falkner|2013-03-01 09:11:58.703115|70.50|religion +66|301|65702|4294967357|68.92|32.30|true|fred miller|2013-03-01 09:11:58.703200|8.07|biology +59|445|65581|4294967535|11.66|40.11|true|fred polk|2013-03-01 09:11:58.703152|20.40|debate +86|408|65554|4294967387|31.38|16.08|false|quinn ovid|2013-03-01 09:11:58.703159|75.33|american history +119|337|65625|4294967381|39.94|2.14|true|calvin falkner|2013-03-01 09:11:58.703129|87.78|zync studies +50|275|65625|4294967502|23.37|37.47|true|alice ovid|2013-03-01 09:11:58.703200|29.84|chemistry +39|451|65568|4294967472|64.78|10.24|false|jessica ichabod|2013-03-01 09:11:58.703311|33.15|undecided +100|459|65701|4294967500|60.68|33.40|true|zach thompson|2013-03-01 09:11:58.703242|45.49|industrial engineering +2|261|65578|4294967336|32.67|49.54|false|zach zipper|2013-03-01 09:11:58.703124|72.00|industrial engineering +69|376|65566|4294967369|10.44|39.20|true|david zipper|2013-03-01 09:11:58.703150|59.42|kindergarten +22|326|65775|4294967330|50.95|37.48|false|wendy thompson|2013-03-01 09:11:58.703192|40.22|nap time +66|470|65668|4294967358|78.55|15.71|false|victor miller|2013-03-01 09:11:58.703078|33.33|linguistics +31|374|65649|4294967441|33.07|27.69|false|rachel robinson|2013-03-01 09:11:58.703130|41.90|yard duty +97|281|65774|4294967384|8.52|43.40|false|david thompson|2013-03-01 09:11:58.703214|9.64|mathematics +30|365|65655|4294967389|54.12|21.69|true|gabriella polk|2013-03-01 09:11:58.703232|10.08|debate +53|329|65682|4294967298|98.97|26.64|false|ulysses robinson|2013-03-01 09:11:58.703142|81.88|kindergarten +71|432|65747|4294967380|98.48|48.76|false|nick steinbeck|2013-03-01 09:11:58.703245|75.76|religion +50|440|65652|4294967443|89.24|2.20|false|wendy ovid|2013-03-01 09:11:58.703319|0.26|wind surfing +57|338|65561|4294967517|72.61|14.74|true|nick xylophone|2013-03-01 09:11:58.703096|3.08|mathematics +108|370|65558|4294967395|27.49|38.99|false|bob ichabod|2013-03-01 09:11:58.703091|81.43|study skills +115|377|65621|4294967533|18.98|28.67|false|ulysses hernandez|2013-03-01 09:11:58.703141|7.54|history +10|335|65571|4294967434|22.03|1.17|true|victor laertes|2013-03-01 09:11:58.703168|86.15|xylophone band +48|262|65771|4294967518|1.89|40.87|true|bob van buren|2013-03-01 09:11:58.703085|30.01|religion +56|455|65601|4294967365|84.71|24.58|true|fred zipper|2013-03-01 09:11:58.703070|71.16|debate +124|460|65784|4294967338|42.94|18.66|false|luke thompson|2013-03-01 09:11:58.703112|92.29|geology +15|283|65788|4294967313|5.62|25.30|true|calvin hernandez|2013-03-01 09:11:58.703124|9.47|wind surfing +63|333|65568|4294967377|62.15|45.02|true|rachel young|2013-03-01 09:11:58.703080|9.49|values clariffication +21|391|65776|4294967307|50.34|21.68|true|priscilla robinson|2013-03-01 09:11:58.703103|9.73|undecided +103|418|65721|4294967526|31.57|2.42|true|fred johnson|2013-03-01 09:11:58.703252|81.23|education +84|345|65773|4294967404|44.77|4.55|true|alice falkner|2013-03-01 09:11:58.703207|47.26|american history +120|347|65755|4294967307|70.35|47.56|true|yuri davidson|2013-03-01 09:11:58.703290|27.01|xylophone band +107|407|65571|4294967423|8.55|36.84|false|david falkner|2013-03-01 09:11:58.703200|49.01|opthamology +106|405|65741|4294967461|4.56|43.89|true|quinn steinbeck|2013-03-01 09:11:58.703287|71.61|study skills +35|454|65735|4294967335|15.69|1.90|true|gabriella miller|2013-03-01 09:11:58.703143|51.01|linguistics +15|334|65741|4294967303|81.22|46.98|false|xavier ovid|2013-03-01 09:11:58.703243|23.23|xylophone band +20|447|65752|4294967440|0.50|0.58|true|alice robinson|2013-03-01 09:11:58.703321|69.79|chemistry +42|292|65548|4294967550|63.89|33.11|true|calvin young|2013-03-01 09:11:58.703107|21.70|history +82|315|65596|4294967444|88.49|19.56|true|sarah brown|2013-03-01 09:11:58.703113|99.56|debate +78|311|65602|4294967507|46.98|23.95|true|sarah young|2013-03-01 09:11:58.703172|64.40|education +96|446|65605|4294967342|15.02|8.65|true|bob ovid|2013-03-01 09:11:58.703126|63.57|xylophone band +74|400|65761|4294967336|8.02|40.12|true|mike ellison|2013-03-01 09:11:58.703312|46.04|mathematics +40|487|65641|4294967376|99.96|11.43|false|priscilla underhill|2013-03-01 09:11:58.703164|11.99|undecided +40|480|65685|4294967437|70.19|13.12|true|quinn king|2013-03-01 09:11:58.703319|72.53|debate +99|492|65708|4294967445|73.16|43.32|false|ulysses quirinius|2013-03-01 09:11:58.703094|69.33|quiet hour +123|413|65595|4294967304|73.44|49.35|false|yuri miller|2013-03-01 09:11:58.703131|31.25|mathematics +108|274|65743|4294967369|95.13|2.31|false|oscar davidson|2013-03-01 09:11:58.703102|91.77|biology +97|428|65555|4294967550|49.56|21.34|false|yuri xylophone|2013-03-01 09:11:58.703154|18.14|wind surfing +118|347|65593|4294967489|87.50|31.34|true|xavier brown|2013-03-01 09:11:58.703232|99.31|values clariffication +106|442|65617|4294967438|65.82|9.45|true|xavier van buren|2013-03-01 09:11:58.703115|37.60|kindergarten +95|362|65732|4294967318|80.88|27.10|true|oscar miller|2013-03-01 09:11:58.703256|98.90|zync studies +-1|304|65753|4294967474|43.17|33.51|false|luke hernandez|2013-03-01 09:11:58.703316|3.22|education +2|422|65703|4294967539|2.21|8.17|false|gabriella quirinius|2013-03-01 09:11:58.703116|12.76|joggying +2|333|65586|4294967386|67.68|46.08|false|jessica thompson|2013-03-01 09:11:58.703143|76.58|yard duty +2|303|65733|4294967472|60.03|15.41|false|jessica nixon|2013-03-01 09:11:58.703214|71.30|history +72|377|65591|4294967349|98.78|9.76|false|victor underhill|2013-03-01 09:11:58.703177|87.21|religion +66|483|65693|4294967404|44.51|20.11|false|tom quirinius|2013-03-01 09:11:58.703218|21.66|religion +33|303|65659|4294967513|34.98|47.54|false|nick garcia|2013-03-01 09:11:58.703295|79.74|biology +43|479|65587|4294967507|39.20|9.80|true|alice white|2013-03-01 09:11:58.703117|42.06|biology +44|266|65675|4294967477|25.77|40.16|false|priscilla garcia|2013-03-01 09:11:58.703131|33.77|biology +77|370|65539|4294967506|43.51|8.68|false|xavier underhill|2013-03-01 09:11:58.703185|37.35|industrial engineering +99|398|65701|4294967393|19.43|45.73|false|mike garcia|2013-03-01 09:11:58.703117|98.97|forestry +-1|285|65621|4294967438|28.88|18.11|true|mike van buren|2013-03-01 09:11:58.703231|24.04|undecided +56|267|65721|4294967493|8.46|35.72|true|mike brown|2013-03-01 09:11:58.703085|80.88|forestry +86|402|65719|4294967524|97.36|34.28|true|gabriella polk|2013-03-01 09:11:58.703294|92.21|joggying +116|459|65727|4294967300|78.83|27.50|false|katie polk|2013-03-01 09:11:58.703116|3.55|quiet hour +22|257|65722|4294967508|79.05|13.12|false|zach underhill|2013-03-01 09:11:58.703163|58.23|values clariffication +30|312|65712|4294967550|85.24|46.81|true|victor miller|2013-03-01 09:11:58.703303|62.33|biology +44|498|65646|4294967405|94.37|8.18|false|tom xylophone|2013-03-01 09:11:58.703089|95.09|values clariffication +80|256|65693|4294967311|62.52|23.63|true|zach underhill|2013-03-01 09:11:58.703126|64.05|yard duty +46|269|65610|4294967321|18.57|4.95|false|holly robinson|2013-03-01 09:11:58.703238|47.38|american history +47|398|65674|4294967467|43.31|12.84|true|yuri xylophone|2013-03-01 09:11:58.703074|32.96|opthamology +55|440|65695|4294967445|19.14|14.88|false|ulysses zipper|2013-03-01 09:11:58.703302|4.77|industrial engineering +9|324|65720|4294967417|83.90|35.61|false|alice hernandez|2013-03-01 09:11:58.703277|38.50|forestry +94|361|65703|4294967357|92.00|24.48|true|bob thompson|2013-03-01 09:11:58.703126|21.48|nap time +37|434|65619|4294967510|3.39|9.24|false|mike robinson|2013-03-01 09:11:58.703200|75.73|topology +55|417|65742|4294967312|99.48|19.18|false|luke polk|2013-03-01 09:11:58.703133|30.27|geology +90|491|65614|4294967475|17.41|22.64|false|zach quirinius|2013-03-01 09:11:58.703132|0.92|kindergarten +122|305|65707|4294967387|11.83|18.14|true|zach miller|2013-03-01 09:11:58.703174|6.39|religion +72|418|65653|4294967380|94.33|20.60|false|sarah polk|2013-03-01 09:11:58.703304|93.05|yard duty +51|324|65669|4294967490|74.97|14.59|false|holly polk|2013-03-01 09:11:58.703220|92.01|zync studies +68|314|65671|4294967459|81.80|33.67|true|bob carson|2013-03-01 09:11:58.703313|77.52|quiet hour +90|493|65570|4294967364|69.84|17.45|false|nick van buren|2013-03-01 09:11:58.703161|92.27|xylophone band +11|299|65621|4294967454|41.92|31.10|true|bob young|2013-03-01 09:11:58.703168|10.39|religion +49|403|65763|4294967495|93.10|32.71|false|luke robinson|2013-03-01 09:11:58.703180|2.82|chemistry +69|355|65705|4294967468|96.95|32.13|false|katie white|2013-03-01 09:11:58.703236|80.77|topology +106|383|65558|4294967463|75.69|8.54|true|alice young|2013-03-01 09:11:58.703282|23.22|mathematics +3|290|65713|4294967468|21.73|35.99|true|rachel young|2013-03-01 09:11:58.703303|44.65|values clariffication +95|286|65672|4294967323|63.67|45.13|false|fred ovid|2013-03-01 09:11:58.703138|52.85|history +57|450|65688|4294967331|26.32|23.20|true|calvin carson|2013-03-01 09:11:58.703266|56.60|study skills +-1|292|65594|4294967363|16.22|40.15|false|yuri white|2013-03-01 09:11:58.703232|54.62|industrial engineering +118|375|65703|4294967306|50.45|40.25|false|yuri underhill|2013-03-01 09:11:58.703093|15.22|xylophone band +-1|450|65594|4294967347|27.60|2.43|false|luke ellison|2013-03-01 09:11:58.703142|7.24|study skills +17|413|65595|4294967422|42.16|6.11|false|ethan ellison|2013-03-01 09:11:58.703254|84.95|chemistry +20|340|65628|4294967452|53.82|20.26|true|sarah johnson|2013-03-01 09:11:58.703297|49.70|american history +57|390|65693|4294967527|15.44|23.27|false|victor white|2013-03-01 09:11:58.703104|0.31|quiet hour +1|448|65701|4294967363|20.67|16.96|false|priscilla robinson|2013-03-01 09:11:58.703077|50.61|values clariffication +74|495|65652|4294967335|75.50|36.41|false|oscar underhill|2013-03-01 09:11:58.703312|98.86|debate +47|403|65763|4294967310|7.15|14.82|true|katie hernandez|2013-03-01 09:11:58.703209|11.67|history +90|332|65630|4294967513|67.03|10.61|true|oscar hernandez|2013-03-01 09:11:58.703123|66.45|opthamology +104|353|65778|4294967325|38.34|8.74|true|nick robinson|2013-03-01 09:11:58.703252|37.34|xylophone band +12|256|65744|4294967496|38.16|45.71|true|alice ellison|2013-03-01 09:11:58.703282|12.47|debate +69|397|65731|4294967355|82.67|23.90|false|ethan king|2013-03-01 09:11:58.703295|73.16|geology +-3|350|65566|4294967434|23.22|6.68|true|nick robinson|2013-03-01 09:11:58.703147|23.68|education +21|424|65591|4294967492|32.31|46.45|false|priscilla johnson|2013-03-01 09:11:58.703297|31.70|chemistry +19|457|65558|4294967394|28.79|28.84|true|yuri laertes|2013-03-01 09:11:58.703302|72.99|yard duty +42|262|65641|4294967335|50.26|23.48|true|nick robinson|2013-03-01 09:11:58.703299|89.23|values clariffication +62|467|65601|4294967443|61.34|4.49|false|sarah davidson|2013-03-01 09:11:58.703113|84.43|kindergarten +93|445|65756|4294967347|94.83|27.67|false|katie allen|2013-03-01 09:11:58.703225|46.60|nap time +23|366|65625|4294967455|60.10|20.85|false|ethan ovid|2013-03-01 09:11:58.703322|77.00|values clariffication +30|383|65672|4294967438|81.36|23.44|true|bob king|2013-03-01 09:11:58.703283|5.46|biology +47|359|65570|4294967351|96.35|1.16|false|fred brown|2013-03-01 09:11:58.703096|28.55|opthamology +69|261|65681|4294967540|11.46|5.34|false|calvin nixon|2013-03-01 09:11:58.703178|15.23|forestry +1|327|65600|4294967330|69.34|48.84|true|ulysses miller|2013-03-01 09:11:58.703086|16.25|chemistry +73|400|65751|4294967353|92.94|4.78|true|alice laertes|2013-03-01 09:11:58.703136|97.74|joggying +11|415|65571|4294967492|70.34|10.47|true|katie miller|2013-03-01 09:11:58.703208|2.41|study skills +7|287|65640|4294967415|88.29|29.72|false|rachel ovid|2013-03-01 09:11:58.703255|54.30|debate +118|328|65684|4294967492|99.22|6.17|true|nick hernandez|2013-03-01 09:11:58.703121|43.26|philosophy +107|351|65553|4294967393|65.59|11.76|false|xavier robinson|2013-03-01 09:11:58.703173|5.14|chemistry +121|436|65737|4294967486|2.85|26.10|false|priscilla ovid|2013-03-01 09:11:58.703266|4.78|zync studies +-1|306|65576|4294967379|84.41|37.66|true|victor quirinius|2013-03-01 09:11:58.703148|3.13|religion +65|444|65627|4294967305|61.30|8.78|true|xavier white|2013-03-01 09:11:58.703248|71.83|biology +93|437|65754|4294967404|29.31|36.93|false|xavier robinson|2013-03-01 09:11:58.703254|2.29|quiet hour +43|372|65718|4294967352|76.61|1.77|true|victor brown|2013-03-01 09:11:58.703138|37.15|undecided +91|320|65780|4294967520|5.47|33.59|true|david thompson|2013-03-01 09:11:58.703128|47.31|chemistry +88|424|65537|4294967356|19.00|6.33|true|katie thompson|2013-03-01 09:11:58.703133|52.90|joggying +109|398|65622|4294967434|35.13|49.74|false|victor garcia|2013-03-01 09:11:58.703285|82.91|xylophone band +0|379|65717|4294967524|58.34|27.07|true|wendy ichabod|2013-03-01 09:11:58.703168|21.28|values clariffication +117|379|65752|4294967503|39.20|18.98|false|holly xylophone|2013-03-01 09:11:58.703132|61.11|wind surfing +83|322|65629|4294967531|52.30|32.99|true|david underhill|2013-03-01 09:11:58.703310|90.73|joggying +92|313|65678|4294967300|56.00|31.76|true|calvin van buren|2013-03-01 09:11:58.703173|50.86|values clariffication +53|360|65593|4294967486|79.19|40.08|true|wendy garcia|2013-03-01 09:11:58.703180|11.69|topology +114|446|65759|4294967469|38.83|39.71|true|alice garcia|2013-03-01 09:11:58.703179|27.58|american history +87|345|65686|4294967503|91.32|45.37|true|mike garcia|2013-03-01 09:11:58.703131|89.86|kindergarten +96|335|65786|4294967361|85.37|44.08|false|rachel thompson|2013-03-01 09:11:58.703184|40.21|philosophy +-2|493|65784|4294967415|24.44|30.58|true|wendy young|2013-03-01 09:11:58.703177|55.86|religion +67|427|65716|4294967424|85.15|33.07|false|luke brown|2013-03-01 09:11:58.703278|20.23|linguistics +117|409|65581|4294967364|30.84|7.52|true|luke king|2013-03-01 09:11:58.703156|48.02|kindergarten +36|289|65735|4294967507|26.73|15.02|false|david robinson|2013-03-01 09:11:58.703143|10.86|xylophone band +105|480|65675|4294967523|7.06|50.00|true|nick young|2013-03-01 09:11:58.703310|79.85|opthamology +111|287|65791|4294967524|83.08|18.77|true|holly johnson|2013-03-01 09:11:58.703096|55.40|biology +72|257|65719|4294967521|62.79|45.53|false|wendy brown|2013-03-01 09:11:58.703209|35.11|study skills +110|360|65702|4294967311|92.54|48.70|true|david brown|2013-03-01 09:11:58.703100|91.09|zync studies +14|434|65585|4294967326|24.77|6.86|true|gabriella thompson|2013-03-01 09:11:58.703321|2.06|xylophone band +124|482|65785|4294967379|73.80|40.91|false|irene nixon|2013-03-01 09:11:58.703263|49.24|history +46|258|65551|4294967513|88.97|6.60|true|luke ovid|2013-03-01 09:11:58.703203|23.67|undecided +27|337|65616|4294967296|55.81|17.63|true|calvin falkner|2013-03-01 09:11:58.703270|63.74|forestry +61|486|65578|4294967347|25.14|38.90|true|gabriella laertes|2013-03-01 09:11:58.703247|2.87|study skills +33|477|65768|4294967432|67.97|30.02|false|ulysses young|2013-03-01 09:11:58.703089|38.26|opthamology +118|266|65786|4294967343|1.04|20.16|false|fred van buren|2013-03-01 09:11:58.703221|60.92|nap time +99|301|65541|4294967492|22.83|14.76|true|bob miller|2013-03-01 09:11:58.703166|17.19|forestry +102|377|65604|4294967398|28.47|15.60|false|david allen|2013-03-01 09:11:58.703146|2.95|philosophy +90|306|65671|4294967332|31.20|17.17|false|calvin polk|2013-03-01 09:11:58.703097|47.56|values clariffication +63|400|65691|4294967537|39.85|20.86|true|quinn young|2013-03-01 09:11:58.703187|97.70|chemistry +92|353|65691|4294967443|20.32|3.23|true|irene king|2013-03-01 09:11:58.703238|7.92|zync studies +50|338|65677|4294967419|82.89|37.31|false|xavier thompson|2013-03-01 09:11:58.703264|27.88|zync studies +55|504|65665|4294967550|77.47|44.52|false|sarah thompson|2013-03-01 09:11:58.703163|15.50|nap time +39|449|65576|4294967533|71.25|6.03|true|jessica allen|2013-03-01 09:11:58.703319|14.52|education +81|364|65544|4294967304|15.32|14.34|true|fred brown|2013-03-01 09:11:58.703192|5.97|religion +63|290|65600|4294967447|51.42|9.73|false|ethan white|2013-03-01 09:11:58.703298|61.88|nap time +91|393|65662|4294967504|51.40|28.95|true|zach ellison|2013-03-01 09:11:58.703277|9.05|kindergarten +41|377|65713|4294967476|40.53|12.39|true|tom underhill|2013-03-01 09:11:58.703286|9.89|nap time +70|265|65638|4294967398|11.30|6.77|false|sarah polk|2013-03-01 09:11:58.703238|19.82|nap time +62|342|65645|4294967439|55.53|34.85|true|ulysses allen|2013-03-01 09:11:58.703317|18.37|undecided +48|402|65659|4294967330|5.25|48.30|true|tom ellison|2013-03-01 09:11:58.703212|88.60|history +33|301|65542|4294967492|92.57|9.78|false|tom ichabod|2013-03-01 09:11:58.703182|41.27|chemistry +107|462|65751|4294967545|88.75|12.77|false|fred miller|2013-03-01 09:11:58.703075|22.18|kindergarten +42|256|65763|4294967496|24.89|22.22|true|holly xylophone|2013-03-01 09:11:58.703077|80.11|opthamology +0|353|65632|4294967468|1.44|31.99|false|fred ellison|2013-03-01 09:11:58.703120|6.37|forestry +19|471|65780|4294967342|69.73|21.43|true|sarah ovid|2013-03-01 09:11:58.703079|33.83|geology +24|460|65754|4294967503|83.62|9.26|false|ulysses davidson|2013-03-01 09:11:58.703198|23.20|chemistry +1|472|65641|4294967301|27.78|36.62|true|gabriella zipper|2013-03-01 09:11:58.703203|86.61|wind surfing +86|278|65551|4294967435|96.54|0.29|true|jessica ichabod|2013-03-01 09:11:58.703275|47.23|debate +98|293|65641|4294967345|24.78|43.71|false|nick robinson|2013-03-01 09:11:58.703122|97.22|debate +90|279|65776|4294967383|22.07|14.55|true|calvin zipper|2013-03-01 09:11:58.703226|62.48|debate +22|438|65606|4294967471|81.90|10.88|true|alice johnson|2013-03-01 09:11:58.703287|71.56|opthamology +113|443|65625|4294967548|87.53|9.22|true|holly miller|2013-03-01 09:11:58.703297|46.15|mathematics +86|361|65613|4294967403|10.74|49.90|true|wendy robinson|2013-03-01 09:11:58.703102|15.60|mathematics +103|310|65688|4294967474|54.72|23.66|false|david van buren|2013-03-01 09:11:58.703220|16.59|industrial engineering +8|303|65692|4294967427|70.17|15.14|true|ethan nixon|2013-03-01 09:11:58.703085|78.05|joggying +4|358|65695|4294967431|26.22|20.25|false|fred white|2013-03-01 09:11:58.703323|40.97|forestry +102|278|65538|4294967496|34.95|25.78|true|gabriella johnson|2013-03-01 09:11:58.703101|1.20|chemistry +69|470|65547|4294967493|58.91|7.92|false|calvin quirinius|2013-03-01 09:11:58.703083|43.25|kindergarten +69|301|65583|4294967480|11.05|36.13|false|jessica steinbeck|2013-03-01 09:11:58.703257|4.30|history +76|482|65547|4294967497|32.63|26.75|true|fred white|2013-03-01 09:11:58.703223|44.80|xylophone band +94|454|65775|4294967352|89.36|46.70|false|alice johnson|2013-03-01 09:11:58.703222|26.67|quiet hour +45|342|65602|4294967377|2.24|16.87|true|sarah van buren|2013-03-01 09:11:58.703078|9.02|opthamology +98|433|65670|4294967548|58.03|32.77|false|jessica thompson|2013-03-01 09:11:58.703250|57.59|biology +106|402|65693|4294967359|63.32|31.51|false|holly van buren|2013-03-01 09:11:58.703219|46.72|chemistry +27|266|65660|4294967508|94.16|18.90|true|jessica young|2013-03-01 09:11:58.703123|76.29|philosophy +80|503|65573|4294967452|85.79|33.07|true|xavier zipper|2013-03-01 09:11:58.703220|71.66|nap time +108|285|65669|4294967517|28.00|46.81|false|gabriella xylophone|2013-03-01 09:11:58.703167|19.18|kindergarten +88|375|65662|4294967486|15.33|32.15|false|quinn ichabod|2013-03-01 09:11:58.703167|75.04|kindergarten +46|403|65638|4294967305|16.94|19.71|false|oscar white|2013-03-01 09:11:58.703083|81.49|industrial engineering +41|463|65779|4294967419|10.38|42.91|true|rachel allen|2013-03-01 09:11:58.703194|13.91|study skills +64|417|65774|4294967422|82.91|9.63|true|tom xylophone|2013-03-01 09:11:58.703213|47.91|kindergarten +28|411|65623|4294967444|71.82|33.66|true|holly falkner|2013-03-01 09:11:58.703221|81.85|biology +100|356|65623|4294967515|54.36|34.44|false|luke zipper|2013-03-01 09:11:58.703070|30.77|biology +84|452|65605|4294967496|34.19|49.00|true|gabriella ellison|2013-03-01 09:11:58.703233|49.93|opthamology +68|445|65646|4294967480|14.51|49.03|false|katie king|2013-03-01 09:11:58.703108|75.29|religion +93|325|65692|4294967392|20.07|20.19|false|luke hernandez|2013-03-01 09:11:58.703257|33.12|industrial engineering +70|296|65569|4294967415|88.54|49.58|false|alice hernandez|2013-03-01 09:11:58.703228|69.33|study skills +88|294|65585|4294967427|15.16|12.19|false|ulysses garcia|2013-03-01 09:11:58.703123|51.14|yard duty +99|495|65561|4294967538|6.70|12.09|false|gabriella ellison|2013-03-01 09:11:58.703121|69.68|philosophy +42|441|65545|4294967337|97.81|30.03|true|yuri steinbeck|2013-03-01 09:11:58.703133|13.04|opthamology +76|468|65547|4294967423|55.27|25.05|false|xavier robinson|2013-03-01 09:11:58.703139|28.55|education +11|460|65657|4294967359|56.47|23.94|true|wendy underhill|2013-03-01 09:11:58.703231|62.73|geology +74|504|65673|4294967391|75.06|32.96|true|bob hernandez|2013-03-01 09:11:58.703085|72.44|industrial engineering +106|353|65730|4294967366|48.70|40.96|false|holly ellison|2013-03-01 09:11:58.703108|76.80|values clariffication +29|307|65548|4294967528|86.07|30.28|true|mike davidson|2013-03-01 09:11:58.703156|50.72|joggying +74|422|65742|4294967437|98.49|21.89|false|quinn quirinius|2013-03-01 09:11:58.703317|7.39|xylophone band +31|341|65774|4294967402|8.27|36.66|true|priscilla nixon|2013-03-01 09:11:58.703233|33.73|chemistry +121|431|65743|4294967324|92.88|35.13|false|gabriella garcia|2013-03-01 09:11:58.703270|10.78|topology +67|263|65775|4294967365|11.34|41.68|false|priscilla falkner|2013-03-01 09:11:58.703220|99.03|history +113|311|65666|4294967427|25.58|24.50|true|victor thompson|2013-03-01 09:11:58.703148|97.86|wind surfing +106|464|65752|4294967420|60.99|32.68|false|alice johnson|2013-03-01 09:11:58.703088|0.58|kindergarten +51|271|65773|4294967484|43.32|25.31|false|wendy davidson|2013-03-01 09:11:58.703219|83.94|religion +7|469|65704|4294967508|36.57|11.40|false|xavier ichabod|2013-03-01 09:11:58.703133|68.28|study skills +1|376|65606|4294967463|81.04|22.55|true|gabriella underhill|2013-03-01 09:11:58.703115|4.60|undecided +35|337|65663|4294967401|72.71|14.52|false|alice underhill|2013-03-01 09:11:58.703134|35.21|philosophy +36|426|65766|4294967541|23.98|36.94|false|wendy laertes|2013-03-01 09:11:58.703306|99.67|debate +16|400|65639|4294967481|28.84|29.89|true|bob ichabod|2013-03-01 09:11:58.703127|36.38|kindergarten +34|507|65724|4294967480|8.64|28.39|false|irene van buren|2013-03-01 09:11:58.703098|50.14|values clariffication +95|330|65738|4294967335|12.35|44.00|true|luke xylophone|2013-03-01 09:11:58.703082|66.11|mathematics +102|499|65778|4294967384|70.51|2.72|true|wendy allen|2013-03-01 09:11:58.703147|81.87|chemistry +47|435|65578|4294967336|75.61|17.20|true|gabriella davidson|2013-03-01 09:11:58.703204|21.97|wind surfing +53|355|65547|4294967357|63.99|45.72|true|oscar laertes|2013-03-01 09:11:58.703297|26.70|yard duty +87|364|65650|4294967467|73.10|11.42|true|mike garcia|2013-03-01 09:11:58.703114|99.69|linguistics +39|287|65733|4294967363|19.49|39.11|true|gabriella zipper|2013-03-01 09:11:58.703203|54.32|debate +72|390|65749|4294967415|3.00|40.44|false|luke johnson|2013-03-01 09:11:58.703303|38.34|debate +102|386|65714|4294967496|64.28|35.79|false|sarah brown|2013-03-01 09:11:58.703092|58.38|quiet hour +122|377|65764|4294967550|67.17|25.33|false|wendy king|2013-03-01 09:11:58.703319|45.29|american history +27|267|65623|4294967551|16.85|36.59|true|tom ellison|2013-03-01 09:11:58.703236|97.41|opthamology +114|392|65566|4294967378|65.65|17.45|true|wendy carson|2013-03-01 09:11:58.703124|58.90|debate +37|433|65609|4294967375|69.54|17.79|true|gabriella van buren|2013-03-01 09:11:58.703320|54.53|history +6|359|65748|4294967538|94.96|48.20|false|calvin robinson|2013-03-01 09:11:58.703245|31.17|forestry +15|318|65674|4294967403|1.67|7.99|false|fred ellison|2013-03-01 09:11:58.703280|91.00|wind surfing +2|351|65741|4294967441|45.21|29.08|true|zach laertes|2013-03-01 09:11:58.703311|34.44|forestry +60|308|65776|4294967321|13.92|4.35|false|alice young|2013-03-01 09:11:58.703280|25.73|kindergarten +29|294|65691|4294967301|88.44|6.53|true|irene laertes|2013-03-01 09:11:58.703291|14.40|quiet hour +48|498|65587|4294967518|45.78|1.80|true|gabriella brown|2013-03-01 09:11:58.703132|77.66|zync studies +93|422|65556|4294967396|19.63|24.99|true|luke miller|2013-03-01 09:11:58.703088|27.45|religion +60|447|65694|4294967304|30.33|34.91|false|nick ellison|2013-03-01 09:11:58.703121|58.92|mathematics +19|442|65745|4294967382|53.15|16.78|false|bob zipper|2013-03-01 09:11:58.703085|12.10|study skills +108|358|65592|4294967333|55.45|49.61|false|bob underhill|2013-03-01 09:11:58.703309|5.02|xylophone band +7|389|65556|4294967510|90.34|20.64|false|oscar hernandez|2013-03-01 09:11:58.703103|53.64|undecided +19|366|65669|4294967385|36.74|32.82|true|xavier johnson|2013-03-01 09:11:58.703303|73.09|opthamology +33|392|65737|4294967490|58.59|30.74|true|oscar falkner|2013-03-01 09:11:58.703307|7.06|topology +72|485|65713|4294967504|65.76|29.79|true|quinn garcia|2013-03-01 09:11:58.703087|31.43|forestry +4|504|65736|4294967520|79.46|45.07|true|jessica johnson|2013-03-01 09:11:58.703072|45.99|industrial engineering +91|443|65609|4294967320|77.60|24.07|true|holly ellison|2013-03-01 09:11:58.703194|2.04|mathematics +4|494|65740|4294967435|51.47|16.59|false|nick hernandez|2013-03-01 09:11:58.703166|5.31|study skills +80|295|65621|4294967344|83.53|41.47|false|bob steinbeck|2013-03-01 09:11:58.703311|3.75|forestry +69|285|65760|4294967425|34.08|12.37|true|katie davidson|2013-03-01 09:11:58.703094|81.51|quiet hour +-1|349|65723|4294967508|38.60|18.34|true|ulysses ichabod|2013-03-01 09:11:58.703193|75.78|geology +110|413|65612|4294967320|91.57|4.30|true|david steinbeck|2013-03-01 09:11:58.703176|48.36|topology +53|287|65692|4294967481|59.83|45.89|false|tom johnson|2013-03-01 09:11:58.703317|41.37|yard duty +122|506|65626|4294967459|99.77|1.42|true|katie carson|2013-03-01 09:11:58.703230|35.94|zync studies +104|256|65613|4294967401|78.27|15.35|true|xavier van buren|2013-03-01 09:11:58.703073|96.89|education +20|331|65633|4294967478|34.72|36.66|false|katie king|2013-03-01 09:11:58.703279|7.95|linguistics +15|326|65616|4294967473|97.76|44.28|false|oscar steinbeck|2013-03-01 09:11:58.703111|85.39|yard duty +59|399|65753|4294967484|50.43|41.55|true|zach hernandez|2013-03-01 09:11:58.703176|56.73|xylophone band +37|329|65668|4294967516|44.71|12.31|false|mike steinbeck|2013-03-01 09:11:58.703127|33.45|yard duty +-2|410|65609|4294967401|12.52|29.60|true|rachel underhill|2013-03-01 09:11:58.703259|15.98|forestry +3|497|65672|4294967376|26.42|24.18|true|quinn quirinius|2013-03-01 09:11:58.703086|96.89|religion +40|297|65540|4294967405|86.59|14.12|true|yuri allen|2013-03-01 09:11:58.703155|69.33|nap time +-1|421|65542|4294967456|70.77|0.21|true|yuri zipper|2013-03-01 09:11:58.703227|75.02|linguistics +26|364|65737|4294967352|83.47|8.04|true|tom allen|2013-03-01 09:11:58.703312|7.31|biology +13|340|65603|4294967495|96.96|18.56|false|priscilla thompson|2013-03-01 09:11:58.703090|13.44|mathematics +42|324|65644|4294967443|39.22|42.31|false|holly thompson|2013-03-01 09:11:58.703103|57.21|topology +27|448|65564|4294967495|66.16|49.95|true|irene laertes|2013-03-01 09:11:58.703195|23.09|values clariffication +16|496|65684|4294967414|55.01|45.96|true|katie white|2013-03-01 09:11:58.703138|78.30|geology +111|300|65552|4294967510|81.52|34.54|true|holly xylophone|2013-03-01 09:11:58.703221|97.65|linguistics +64|369|65749|4294967441|41.22|4.22|false|rachel thompson|2013-03-01 09:11:58.703222|80.81|industrial engineering +116|433|65721|4294967537|49.73|0.99|false|calvin zipper|2013-03-01 09:11:58.703303|12.50|yard duty +120|284|65575|4294967297|1.26|1.88|false|zach allen|2013-03-01 09:11:58.703178|88.65|debate +70|325|65676|4294967502|80.96|21.07|true|xavier polk|2013-03-01 09:11:58.703184|36.85|nap time +60|281|65744|4294967485|53.70|16.75|true|xavier miller|2013-03-01 09:11:58.703087|25.52|values clariffication +-3|307|65634|4294967546|90.30|28.44|false|irene underhill|2013-03-01 09:11:58.703298|85.38|forestry +74|365|65723|4294967420|25.84|3.54|true|irene ichabod|2013-03-01 09:11:58.703164|59.44|xylophone band +-2|330|65695|4294967367|72.19|7.31|true|tom steinbeck|2013-03-01 09:11:58.703225|77.87|history +19|265|65786|4294967358|59.09|0.07|false|victor johnson|2013-03-01 09:11:58.703264|94.13|yard duty +114|376|65681|4294967490|49.51|26.49|false|alice nixon|2013-03-01 09:11:58.703267|63.99|wind surfing +92|278|65588|4294967522|44.55|47.90|false|jessica robinson|2013-03-01 09:11:58.703260|44.95|quiet hour +108|404|65716|4294967507|51.03|6.23|false|quinn ellison|2013-03-01 09:11:58.703077|5.89|history +115|278|65637|4294967496|58.26|45.34|false|victor white|2013-03-01 09:11:58.703207|83.83|chemistry +-2|371|65632|4294967428|44.88|8.76|true|fred ichabod|2013-03-01 09:11:58.703315|94.09|study skills +9|505|65593|4294967322|87.45|45.23|false|wendy underhill|2013-03-01 09:11:58.703114|81.20|xylophone band +5|493|65630|4294967413|51.38|40.12|true|gabriella steinbeck|2013-03-01 09:11:58.703109|1.31|topology +-2|344|65786|4294967538|33.74|20.46|true|jessica white|2013-03-01 09:11:58.703317|13.04|yard duty +102|415|65691|4294967456|76.55|38.78|true|tom nixon|2013-03-01 09:11:58.703206|55.12|wind surfing +20|284|65749|4294967387|45.04|48.47|false|mike ellison|2013-03-01 09:11:58.703173|38.64|forestry +62|370|65584|4294967481|46.63|7.33|true|holly xylophone|2013-03-01 09:11:58.703201|33.72|kindergarten +16|460|65733|4294967340|66.16|11.49|false|victor ovid|2013-03-01 09:11:58.703293|88.34|american history +41|418|65680|4294967501|86.07|16.07|false|irene underhill|2013-03-01 09:11:58.703153|58.85|religion +34|359|65613|4294967413|7.89|21.58|true|irene allen|2013-03-01 09:11:58.703213|32.06|debate +72|282|65703|4294967447|64.10|22.26|true|wendy young|2013-03-01 09:11:58.703151|76.87|religion +63|324|65677|4294967428|15.92|9.50|false|irene nixon|2013-03-01 09:11:58.703246|26.66|history +9|338|65582|4294967306|40.52|5.98|false|sarah van buren|2013-03-01 09:11:58.703205|82.96|biology +37|487|65555|4294967412|74.77|13.12|true|luke king|2013-03-01 09:11:58.703084|65.24|zync studies +110|377|65655|4294967444|68.44|22.65|false|mike van buren|2013-03-01 09:11:58.703092|53.65|philosophy +56|259|65576|4294967480|7.41|15.49|false|rachel steinbeck|2013-03-01 09:11:58.703151|73.07|xylophone band +31|258|65617|4294967510|60.34|13.81|true|jessica laertes|2013-03-01 09:11:58.703312|10.94|forestry +72|481|65782|4294967318|28.37|13.70|true|nick steinbeck|2013-03-01 09:11:58.703288|13.06|values clariffication +17|458|65689|4294967493|94.85|1.34|false|fred ovid|2013-03-01 09:11:58.703240|45.06|quiet hour +96|384|65637|4294967383|77.65|48.26|false|alice quirinius|2013-03-01 09:11:58.703157|79.28|industrial engineering +64|275|65613|4294967424|34.34|16.34|false|gabriella ichabod|2013-03-01 09:11:58.703169|74.84|undecided +124|364|65789|4294967310|3.68|38.59|true|ethan thompson|2013-03-01 09:11:58.703110|69.02|undecided +72|363|65771|4294967464|37.81|31.49|true|yuri allen|2013-03-01 09:11:58.703110|22.15|opthamology +33|265|65668|4294967521|76.66|2.63|false|wendy ovid|2013-03-01 09:11:58.703260|33.20|opthamology +6|307|65554|4294967431|90.06|26.38|true|alice robinson|2013-03-01 09:11:58.703291|22.45|mathematics +112|363|65682|4294967316|98.37|39.16|true|oscar steinbeck|2013-03-01 09:11:58.703264|10.63|debate +93|310|65596|4294967532|26.50|17.39|false|nick robinson|2013-03-01 09:11:58.703236|84.99|linguistics +9|344|65674|4294967339|31.49|18.16|false|bob allen|2013-03-01 09:11:58.703200|54.69|geology +12|453|65661|4294967411|13.01|28.34|false|calvin thompson|2013-03-01 09:11:58.703225|55.23|topology +102|260|65764|4294967352|99.78|9.37|false|xavier thompson|2013-03-01 09:11:58.703213|60.57|joggying +103|377|65560|4294967467|42.43|15.03|true|bob king|2013-03-01 09:11:58.703265|17.49|religion +109|335|65784|4294967417|11.21|30.57|false|holly miller|2013-03-01 09:11:58.703262|97.82|chemistry +112|347|65713|4294967441|33.04|35.49|true|nick davidson|2013-03-01 09:11:58.703323|8.57|quiet hour +86|263|65701|4294967544|28.37|15.98|true|irene hernandez|2013-03-01 09:11:58.703074|46.39|study skills +0|373|65718|4294967469|60.38|29.28|true|alice king|2013-03-01 09:11:58.703167|92.22|undecided +100|365|65710|4294967313|54.80|41.12|true|luke garcia|2013-03-01 09:11:58.703136|24.84|zync studies +91|333|65677|4294967418|21.26|31.98|false|ethan van buren|2013-03-01 09:11:58.703311|70.90|zync studies +29|477|65676|4294967305|21.89|43.80|true|katie van buren|2013-03-01 09:11:58.703217|86.29|kindergarten +36|408|65736|4294967465|18.42|7.13|false|david allen|2013-03-01 09:11:58.703097|84.13|joggying +21|432|65783|4294967357|49.12|1.06|false|holly davidson|2013-03-01 09:11:58.703218|42.09|chemistry +124|435|65683|4294967388|65.84|25.12|true|calvin robinson|2013-03-01 09:11:58.703180|63.02|yard duty +117|484|65605|4294967523|10.15|9.53|true|priscilla brown|2013-03-01 09:11:58.703137|53.93|nap time +94|487|65569|4294967470|47.79|8.61|true|holly white|2013-03-01 09:11:58.703148|77.18|topology +111|497|65557|4294967545|69.12|21.49|false|priscilla zipper|2013-03-01 09:11:58.703083|13.07|religion +99|365|65754|4294967389|20.04|46.17|false|calvin garcia|2013-03-01 09:11:58.703082|24.26|opthamology +27|344|65714|4294967410|54.95|10.60|true|bob zipper|2013-03-01 09:11:58.703081|99.90|values clariffication +27|339|65644|4294967325|18.70|49.99|false|xavier robinson|2013-03-01 09:11:58.703268|72.83|nap time +5|506|65727|4294967496|17.30|30.78|true|rachel garcia|2013-03-01 09:11:58.703169|88.95|biology +105|508|65769|4294967442|40.91|0.07|true|ethan carson|2013-03-01 09:11:58.703288|76.83|religion +49|309|65703|4294967418|54.62|37.49|false|rachel ovid|2013-03-01 09:11:58.703234|32.52|mathematics +25|474|65638|4294967518|82.72|25.87|true|fred robinson|2013-03-01 09:11:58.703160|34.42|american history +96|471|65652|4294967401|24.60|14.69|true|gabriella polk|2013-03-01 09:11:58.703262|21.72|opthamology +95|317|65663|4294967409|61.84|27.27|true|jessica xylophone|2013-03-01 09:11:58.703309|64.95|biology +3|428|65666|4294967452|37.98|40.97|false|nick ovid|2013-03-01 09:11:58.703286|85.88|history +106|437|65624|4294967490|17.70|29.66|true|tom falkner|2013-03-01 09:11:58.703099|26.40|forestry +64|298|65674|4294967404|99.80|36.58|false|jessica thompson|2013-03-01 09:11:58.703168|50.21|xylophone band +97|359|65717|4294967465|67.58|3.26|true|nick xylophone|2013-03-01 09:11:58.703169|90.19|american history +109|277|65620|4294967305|97.25|7.80|true|nick quirinius|2013-03-01 09:11:58.703226|27.72|undecided +93|263|65725|4294967341|6.06|4.12|false|calvin king|2013-03-01 09:11:58.703299|32.44|values clariffication +108|383|65629|4294967510|39.55|47.67|false|jessica zipper|2013-03-01 09:11:58.703133|74.23|nap time +89|463|65537|4294967493|64.82|13.79|true|ethan white|2013-03-01 09:11:58.703243|89.52|nap time +88|372|65645|4294967358|34.48|11.18|true|quinn thompson|2013-03-01 09:11:58.703168|84.86|forestry +123|432|65626|4294967435|2.39|16.49|true|david white|2013-03-01 09:11:58.703136|61.24|joggying +57|486|65551|4294967397|36.11|9.88|true|katie xylophone|2013-03-01 09:11:58.703142|57.10|zync studies +59|343|65787|4294967312|66.89|6.54|true|mike laertes|2013-03-01 09:11:58.703209|27.56|xylophone band +74|267|65671|4294967409|21.14|14.64|true|priscilla miller|2013-03-01 09:11:58.703197|89.06|undecided +25|336|65587|4294967336|71.01|14.90|true|tom ichabod|2013-03-01 09:11:58.703127|74.32|zync studies +48|346|65712|4294967315|45.01|16.08|true|zach brown|2013-03-01 09:11:58.703108|21.68|zync studies +84|385|65776|4294967452|35.80|32.13|false|xavier zipper|2013-03-01 09:11:58.703311|99.46|education +58|389|65766|4294967416|95.55|20.62|false|sarah miller|2013-03-01 09:11:58.703215|70.92|history +22|403|65565|4294967381|99.65|35.42|false|yuri johnson|2013-03-01 09:11:58.703154|94.47|geology +55|428|65733|4294967535|99.54|5.35|false|jessica king|2013-03-01 09:11:58.703233|30.30|forestry +117|410|65706|4294967391|50.15|0.21|false|quinn johnson|2013-03-01 09:11:58.703248|65.99|yard duty +95|423|65573|4294967378|47.59|17.37|true|alice robinson|2013-03-01 09:11:58.703133|54.57|linguistics +87|332|65748|4294967320|19.83|41.67|false|fred ellison|2013-03-01 09:11:58.703289|79.02|mathematics +114|263|65674|4294967405|84.44|33.18|true|victor van buren|2013-03-01 09:11:58.703092|63.74|linguistics +5|369|65780|4294967488|92.02|38.59|true|zach polk|2013-03-01 09:11:58.703271|67.29|yard duty +-3|430|65667|4294967469|65.50|40.46|true|yuri xylophone|2013-03-01 09:11:58.703258|30.94|american history +120|264|65769|4294967486|89.97|41.18|false|xavier hernandez|2013-03-01 09:11:58.703140|66.89|philosophy +107|317|65634|4294967488|5.68|18.89|false|priscilla ichabod|2013-03-01 09:11:58.703196|39.42|joggying +29|386|65723|4294967328|71.48|6.13|false|ulysses ichabod|2013-03-01 09:11:58.703215|86.65|xylophone band +22|434|65768|4294967543|44.25|27.56|false|tom polk|2013-03-01 09:11:58.703306|12.30|kindergarten +-1|274|65755|4294967300|22.01|35.52|false|oscar king|2013-03-01 09:11:58.703141|33.35|chemistry +6|365|65603|4294967522|18.51|5.60|false|gabriella king|2013-03-01 09:11:58.703104|34.20|geology +97|414|65757|4294967325|31.82|22.37|false|rachel nixon|2013-03-01 09:11:58.703127|61.00|nap time +72|448|65538|4294967524|80.09|7.73|true|luke brown|2013-03-01 09:11:58.703090|95.81|american history +51|280|65589|4294967486|57.46|23.35|false|zach xylophone|2013-03-01 09:11:58.703299|11.54|education +12|447|65583|4294967389|0.98|29.79|true|yuri polk|2013-03-01 09:11:58.703305|1.89|wind surfing +-1|360|65539|4294967464|4.08|39.51|false|oscar davidson|2013-03-01 09:11:58.703144|59.47|nap time +0|380|65569|4294967425|0.94|28.93|false|sarah robinson|2013-03-01 09:11:58.703176|88.81|xylophone band +66|478|65669|4294967339|23.66|38.34|true|yuri carson|2013-03-01 09:11:58.703228|64.68|opthamology +12|322|65771|4294967545|84.87|10.76|false|sarah allen|2013-03-01 09:11:58.703271|0.79|joggying +79|308|65563|4294967347|4.06|44.84|false|nick underhill|2013-03-01 09:11:58.703097|76.53|industrial engineering +4|382|65719|4294967329|7.26|39.92|true|fred polk|2013-03-01 09:11:58.703073|73.64|mathematics +10|448|65675|4294967392|26.20|16.30|true|rachel laertes|2013-03-01 09:11:58.703200|18.01|xylophone band +45|281|65685|4294967513|81.33|32.22|true|oscar allen|2013-03-01 09:11:58.703285|71.38|religion +57|288|65599|4294967422|90.33|44.25|false|bob young|2013-03-01 09:11:58.703185|11.16|biology +77|452|65706|4294967512|22.90|5.35|true|bob van buren|2013-03-01 09:11:58.703290|14.58|debate +103|492|65773|4294967404|58.29|48.28|false|yuri thompson|2013-03-01 09:11:58.703249|84.38|undecided +84|411|65737|4294967486|63.13|1.10|true|katie ichabod|2013-03-01 09:11:58.703086|29.57|american history +28|378|65589|4294967511|26.41|39.79|true|yuri polk|2013-03-01 09:11:58.703267|28.62|values clariffication +88|478|65752|4294967364|80.59|45.13|true|victor garcia|2013-03-01 09:11:58.703081|34.90|chemistry +37|388|65608|4294967350|32.94|39.06|false|mike polk|2013-03-01 09:11:58.703273|42.48|quiet hour +25|264|65648|4294967402|90.83|30.96|false|tom ichabod|2013-03-01 09:11:58.703268|65.58|history +17|455|65738|4294967508|15.73|27.01|false|david young|2013-03-01 09:11:58.703254|26.24|american history +62|438|65655|4294967511|91.77|1.90|false|sarah steinbeck|2013-03-01 09:11:58.703150|16.41|chemistry +65|298|65669|4294967328|68.89|2.75|true|david miller|2013-03-01 09:11:58.703077|51.86|values clariffication +25|491|65641|4294967387|94.82|10.04|false|ulysses thompson|2013-03-01 09:11:58.703124|63.75|linguistics +25|497|65708|4294967497|2.45|49.99|false|ethan laertes|2013-03-01 09:11:58.703320|49.72|yard duty +117|288|65591|4294967530|75.18|2.71|false|fred quirinius|2013-03-01 09:11:58.703221|99.58|geology +62|404|65706|4294967549|86.06|40.01|true|irene zipper|2013-03-01 09:11:58.703139|13.38|kindergarten +99|362|65709|4294967399|50.48|26.34|false|jessica white|2013-03-01 09:11:58.703294|83.53|kindergarten +62|395|65685|4294967446|56.73|14.87|false|victor johnson|2013-03-01 09:11:58.703194|31.42|history +62|386|65615|4294967359|44.03|43.78|true|luke underhill|2013-03-01 09:11:58.703099|86.73|nap time +15|302|65698|4294967526|91.38|3.59|true|wendy carson|2013-03-01 09:11:58.703111|9.46|religion +92|507|65699|4294967512|8.44|34.72|false|calvin xylophone|2013-03-01 09:11:58.703198|66.89|study skills +3|279|65756|4294967439|87.65|24.72|false|david white|2013-03-01 09:11:58.703233|47.19|study skills +114|330|65754|4294967500|76.20|39.35|true|rachel quirinius|2013-03-01 09:11:58.703145|76.16|undecided +24|500|65717|4294967535|60.96|21.51|false|victor falkner|2013-03-01 09:11:58.703318|82.83|nap time +-2|331|65707|4294967335|67.12|13.51|false|bob ovid|2013-03-01 09:11:58.703285|62.32|joggying +101|463|65740|4294967425|52.27|11.58|true|priscilla robinson|2013-03-01 09:11:58.703078|13.09|yard duty +106|269|65577|4294967524|17.11|38.45|true|rachel falkner|2013-03-01 09:11:58.703197|79.89|xylophone band +121|500|65690|4294967517|49.31|9.85|false|luke robinson|2013-03-01 09:11:58.703074|37.91|topology +37|351|65587|4294967410|99.66|20.51|false|quinn falkner|2013-03-01 09:11:58.703221|80.69|history +6|340|65612|4294967345|54.08|3.53|true|oscar white|2013-03-01 09:11:58.703279|68.67|debate +115|366|65785|4294967330|90.00|25.79|true|jessica carson|2013-03-01 09:11:58.703143|2.72|xylophone band +124|307|65649|4294967368|81.66|19.35|true|wendy ichabod|2013-03-01 09:11:58.703254|73.76|opthamology +11|286|65752|4294967355|72.33|20.94|false|xavier carson|2013-03-01 09:11:58.703109|23.28|history +15|320|65716|4294967505|49.25|27.53|false|fred carson|2013-03-01 09:11:58.703263|18.08|industrial engineering +76|316|65706|4294967460|12.99|35.53|true|rachel davidson|2013-03-01 09:11:58.703300|85.43|quiet hour +-2|485|65788|4294967510|9.99|22.75|false|luke carson|2013-03-01 09:11:58.703217|82.56|mathematics +87|482|65612|4294967327|16.51|22.21|true|katie nixon|2013-03-01 09:11:58.703083|47.09|xylophone band +21|400|65777|4294967354|4.05|11.10|false|david quirinius|2013-03-01 09:11:58.703205|25.69|geology +97|343|65764|4294967427|47.79|18.94|true|ethan miller|2013-03-01 09:11:58.703308|39.81|topology +2|292|65783|4294967420|38.86|12.14|true|wendy robinson|2013-03-01 09:11:58.703239|72.70|wind surfing +48|440|65570|4294967438|41.44|13.11|true|bob thompson|2013-03-01 09:11:58.703122|57.67|american history +87|333|65592|4294967296|71.77|8.28|false|yuri nixon|2013-03-01 09:11:58.703302|87.58|quiet hour +-1|344|65616|4294967444|29.44|19.94|false|oscar falkner|2013-03-01 09:11:58.703203|28.22|geology +1|425|65625|4294967531|51.83|38.18|false|holly xylophone|2013-03-01 09:11:58.703198|0.31|geology +108|363|65715|4294967467|99.69|17.10|true|yuri xylophone|2013-03-01 09:11:58.703177|44.91|geology +93|500|65778|4294967442|82.52|38.24|true|xavier falkner|2013-03-01 09:11:58.703277|25.41|history +112|260|65612|4294967500|51.90|24.53|false|rachel falkner|2013-03-01 09:11:58.703211|65.45|american history +89|294|65754|4294967450|94.21|35.55|true|gabriella falkner|2013-03-01 09:11:58.703156|18.36|topology +32|389|65700|4294967525|42.65|32.59|true|yuri king|2013-03-01 09:11:58.703253|1.70|undecided +13|395|65715|4294967317|64.24|36.77|false|fred ovid|2013-03-01 09:11:58.703168|74.25|yard duty +5|262|65726|4294967543|8.85|12.89|true|rachel garcia|2013-03-01 09:11:58.703222|45.65|yard duty +65|324|65569|4294967315|93.15|41.46|false|alice brown|2013-03-01 09:11:58.703110|77.23|topology +73|477|65764|4294967542|27.96|44.68|false|bob steinbeck|2013-03-01 09:11:58.703173|90.95|undecided +6|337|65616|4294967456|38.34|34.04|true|rachel hernandez|2013-03-01 09:11:58.703223|60.63|debate +51|384|65649|4294967423|14.62|5.33|true|oscar king|2013-03-01 09:11:58.703232|21.96|history +87|369|65626|4294967403|20.94|26.46|true|ulysses hernandez|2013-03-01 09:11:58.703076|35.79|values clariffication +48|365|65558|4294967361|66.17|6.28|true|alice xylophone|2013-03-01 09:11:58.703081|51.13|study skills +12|388|65642|4294967298|58.26|34.09|false|jessica brown|2013-03-01 09:11:58.703081|92.61|linguistics +12|353|65703|4294967414|54.55|5.92|true|jessica johnson|2013-03-01 09:11:58.703289|91.71|chemistry +117|499|65566|4294967328|32.18|19.59|true|priscilla king|2013-03-01 09:11:58.703214|66.88|philosophy +116|363|65719|4294967513|18.59|48.19|false|priscilla johnson|2013-03-01 09:11:58.703237|55.47|history +21|433|65551|4294967366|84.35|34.09|false|oscar thompson|2013-03-01 09:11:58.703291|7.99|values clariffication +-2|409|65717|4294967343|39.62|9.79|true|irene ichabod|2013-03-01 09:11:58.703315|64.80|joggying +23|495|65785|4294967473|30.91|21.95|true|fred robinson|2013-03-01 09:11:58.703240|66.34|nap time +30|507|65673|4294967453|83.51|40.92|true|oscar thompson|2013-03-01 09:11:58.703281|65.25|values clariffication +13|365|65594|4294967446|13.41|34.03|true|irene white|2013-03-01 09:11:58.703084|52.53|topology +92|419|65771|4294967310|64.82|3.01|false|yuri brown|2013-03-01 09:11:58.703271|18.05|undecided +81|351|65781|4294967473|48.46|15.80|false|bob nixon|2013-03-01 09:11:58.703254|99.35|debate +105|490|65543|4294967334|32.91|42.91|false|yuri steinbeck|2013-03-01 09:11:58.703233|42.19|xylophone band +25|402|65619|4294967340|6.28|49.92|true|victor xylophone|2013-03-01 09:11:58.703210|84.32|philosophy +88|485|65557|4294967391|95.95|46.22|true|irene xylophone|2013-03-01 09:11:58.703141|63.31|mathematics +81|285|65758|4294967338|37.83|38.23|true|irene ichabod|2013-03-01 09:11:58.703322|43.31|quiet hour +96|316|65764|4294967442|86.76|32.89|false|wendy miller|2013-03-01 09:11:58.703190|10.35|geology +43|321|65538|4294967422|81.78|6.07|false|zach van buren|2013-03-01 09:11:58.703273|26.02|topology +60|496|65614|4294967376|34.40|45.59|true|jessica steinbeck|2013-03-01 09:11:58.703076|81.95|xylophone band +44|395|65611|4294967443|15.58|1.53|false|gabriella thompson|2013-03-01 09:11:58.703295|11.00|values clariffication +73|409|65767|4294967371|36.93|36.16|true|quinn ellison|2013-03-01 09:11:58.703105|82.70|religion +121|330|65772|4294967508|70.46|44.50|true|quinn zipper|2013-03-01 09:11:58.703272|11.31|philosophy +61|421|65541|4294967410|34.59|27.52|false|calvin johnson|2013-03-01 09:11:58.703299|3.52|history +65|370|65674|4294967474|6.94|4.38|false|tom falkner|2013-03-01 09:11:58.703142|63.24|wind surfing +41|462|65699|4294967391|58.03|17.26|false|calvin xylophone|2013-03-01 09:11:58.703322|92.60|study skills +97|460|65591|4294967515|46.39|2.16|false|mike carson|2013-03-01 09:11:58.703265|97.16|values clariffication +-1|435|65624|4294967377|73.60|45.63|true|irene hernandez|2013-03-01 09:11:58.703208|31.35|study skills +22|282|65782|4294967318|75.19|40.78|false|quinn ichabod|2013-03-01 09:11:58.703122|44.85|topology +46|487|65748|4294967318|67.01|24.13|false|victor zipper|2013-03-01 09:11:58.703273|95.40|linguistics +18|275|65757|4294967307|80.45|18.92|false|bob hernandez|2013-03-01 09:11:58.703307|38.25|education +103|264|65587|4294967306|97.65|11.36|false|david ovid|2013-03-01 09:11:58.703265|42.76|wind surfing +86|466|65642|4294967333|40.96|26.06|true|david young|2013-03-01 09:11:58.703155|2.99|kindergarten +119|437|65637|4294967494|18.93|31.04|true|calvin brown|2013-03-01 09:11:58.703241|30.45|debate +62|285|65593|4294967518|83.43|2.05|false|rachel xylophone|2013-03-01 09:11:58.703084|45.21|quiet hour +1|283|65752|4294967528|95.01|1.76|false|ethan ichabod|2013-03-01 09:11:58.703072|16.68|history +8|333|65732|4294967503|22.43|21.80|false|mike polk|2013-03-01 09:11:58.703160|71.80|industrial engineering +90|425|65648|4294967323|50.68|40.41|false|victor allen|2013-03-01 09:11:58.703146|58.75|kindergarten +110|319|65620|4294967332|32.36|35.17|true|ethan davidson|2013-03-01 09:11:58.703269|73.03|history +111|313|65711|4294967418|70.04|10.88|true|priscilla nixon|2013-03-01 09:11:58.703206|66.32|mathematics +96|399|65719|4294967401|52.35|4.01|true|rachel hernandez|2013-03-01 09:11:58.703076|32.45|values clariffication +83|353|65714|4294967384|10.12|15.81|false|rachel miller|2013-03-01 09:11:58.703110|16.39|philosophy +11|475|65747|4294967303|98.29|32.30|false|yuri king|2013-03-01 09:11:58.703285|11.06|forestry +84|295|65682|4294967463|17.75|23.28|true|alice zipper|2013-03-01 09:11:58.703306|79.77|industrial engineering +8|348|65626|4294967373|52.54|31.29|false|bob underhill|2013-03-01 09:11:58.703189|82.40|undecided +0|339|65603|4294967356|32.42|31.31|false|katie young|2013-03-01 09:11:58.703238|49.14|forestry +82|280|65688|4294967427|19.11|0.10|false|holly young|2013-03-01 09:11:58.703256|71.39|chemistry +119|465|65781|4294967467|23.83|0.95|false|yuri zipper|2013-03-01 09:11:58.703094|96.06|history +10|356|65586|4294967339|71.96|32.54|true|oscar zipper|2013-03-01 09:11:58.703091|73.01|quiet hour +25|364|65682|4294967449|50.96|34.46|true|sarah steinbeck|2013-03-01 09:11:58.703139|18.28|philosophy +47|270|65652|4294967393|85.46|33.87|true|luke zipper|2013-03-01 09:11:58.703173|96.68|philosophy +89|470|65676|4294967314|39.34|37.35|false|ulysses miller|2013-03-01 09:11:58.703303|69.67|values clariffication +105|393|65703|4294967359|19.00|45.80|false|oscar johnson|2013-03-01 09:11:58.703086|99.42|linguistics +120|415|65785|4294967498|54.68|32.92|true|calvin hernandez|2013-03-01 09:11:58.703086|93.09|linguistics +94|486|65649|4294967549|33.47|35.42|false|jessica carson|2013-03-01 09:11:58.703089|34.30|mathematics +38|288|65634|4294967304|5.10|44.83|false|ethan white|2013-03-01 09:11:58.703083|0.94|xylophone band +91|268|65578|4294967501|43.98|2.77|false|jessica white|2013-03-01 09:11:58.703195|51.68|joggying +123|409|65629|4294967431|29.23|27.30|false|ulysses garcia|2013-03-01 09:11:58.703141|70.01|philosophy +7|454|65697|4294967394|62.25|3.38|false|tom underhill|2013-03-01 09:11:58.703121|47.97|values clariffication +13|488|65662|4294967457|25.08|4.01|false|quinn van buren|2013-03-01 09:11:58.703272|35.40|history +118|388|65642|4294967438|52.78|15.67|true|rachel falkner|2013-03-01 09:11:58.703158|61.13|opthamology +1|315|65713|4294967509|43.80|24.95|false|nick brown|2013-03-01 09:11:58.703287|83.95|mathematics +11|416|65658|4294967433|19.94|8.97|false|jessica nixon|2013-03-01 09:11:58.703117|63.58|joggying +42|457|65669|4294967534|13.45|16.47|true|calvin polk|2013-03-01 09:11:58.703257|59.51|yard duty +119|467|65639|4294967304|57.17|35.89|false|nick nixon|2013-03-01 09:11:58.703088|0.98|history +5|383|65629|4294967302|70.92|32.41|false|rachel young|2013-03-01 09:11:58.703314|1.72|opthamology +108|304|65557|4294967498|26.30|33.01|true|tom nixon|2013-03-01 09:11:58.703189|70.64|opthamology +60|447|65778|4294967546|65.11|14.36|true|yuri robinson|2013-03-01 09:11:58.703284|45.69|joggying +65|406|65613|4294967522|93.10|16.27|false|xavier laertes|2013-03-01 09:11:58.703178|25.19|philosophy +113|482|65739|4294967311|51.17|36.29|true|priscilla steinbeck|2013-03-01 09:11:58.703084|13.07|kindergarten +58|453|65780|4294967484|25.45|1.99|false|alice ichabod|2013-03-01 09:11:58.703307|25.71|nap time +24|320|65759|4294967315|23.99|43.22|false|irene robinson|2013-03-01 09:11:58.703095|24.36|chemistry +112|438|65622|4294967483|62.47|21.21|false|tom laertes|2013-03-01 09:11:58.703257|54.45|nap time +89|382|65708|4294967459|40.10|45.17|false|luke ovid|2013-03-01 09:11:58.703325|59.38|yard duty +63|410|65561|4294967330|86.99|24.01|false|fred underhill|2013-03-01 09:11:58.703288|29.48|religion +103|462|65658|4294967533|48.98|46.63|true|wendy laertes|2013-03-01 09:11:58.703272|85.64|philosophy +97|279|65563|4294967322|79.42|41.65|false|yuri thompson|2013-03-01 09:11:58.703308|43.37|mathematics +122|375|65717|4294967513|99.32|27.37|true|rachel falkner|2013-03-01 09:11:58.703095|65.37|philosophy +25|481|65672|4294967454|98.90|37.58|false|oscar ovid|2013-03-01 09:11:58.703293|73.85|biology +71|409|65667|4294967420|1.98|44.05|true|alice brown|2013-03-01 09:11:58.703117|38.55|religion +86|399|65568|4294967404|26.97|34.10|true|priscilla ichabod|2013-03-01 09:11:58.703283|87.92|yard duty +114|348|65752|4294967368|18.90|42.15|false|irene zipper|2013-03-01 09:11:58.703154|63.92|debate +31|464|65683|4294967364|20.61|48.84|false|irene garcia|2013-03-01 09:11:58.703219|80.62|american history +30|302|65688|4294967477|7.75|5.34|false|quinn polk|2013-03-01 09:11:58.703085|80.36|geology +72|423|65665|4294967353|54.78|15.57|false|fred quirinius|2013-03-01 09:11:58.703219|56.86|philosophy +78|408|65609|4294967534|83.25|24.25|false|quinn falkner|2013-03-01 09:11:58.703074|29.42|quiet hour +35|308|65659|4294967371|89.52|45.35|true|luke carson|2013-03-01 09:11:58.703276|78.07|wind surfing +13|310|65558|4294967399|60.05|38.39|false|priscilla polk|2013-03-01 09:11:58.703194|53.92|mathematics +80|450|65537|4294967548|74.10|8.87|true|ulysses falkner|2013-03-01 09:11:58.703139|56.48|nap time +30|295|65743|4294967359|17.51|44.20|true|bob hernandez|2013-03-01 09:11:58.703242|59.71|quiet hour +25|372|65606|4294967412|99.40|36.98|false|yuri quirinius|2013-03-01 09:11:58.703242|87.18|zync studies +-3|454|65733|4294967544|73.83|18.42|false|bob ichabod|2013-03-01 09:11:58.703240|95.56|debate +9|440|65773|4294967362|30.46|44.91|true|xavier falkner|2013-03-01 09:11:58.703098|62.35|religion +105|289|65576|4294967342|76.65|29.47|false|ulysses garcia|2013-03-01 09:11:58.703282|71.95|chemistry +116|263|65757|4294967525|94.04|37.06|false|priscilla hernandez|2013-03-01 09:11:58.703072|13.75|linguistics +124|458|65726|4294967483|7.96|0.29|false|zach laertes|2013-03-01 09:11:58.703281|1.46|study skills +-3|507|65671|4294967305|60.28|41.50|false|quinn polk|2013-03-01 09:11:58.703244|77.17|industrial engineering +-3|458|65679|4294967331|64.29|43.80|true|irene young|2013-03-01 09:11:58.703084|2.61|american history +17|435|65739|4294967438|44.39|9.29|false|alice thompson|2013-03-01 09:11:58.703241|68.01|undecided +33|390|65564|4294967305|8.20|17.36|false|calvin laertes|2013-03-01 09:11:58.703176|65.07|zync studies +73|474|65789|4294967421|62.00|40.44|true|alice quirinius|2013-03-01 09:11:58.703101|98.80|geology +46|313|65692|4294967310|93.40|34.70|true|fred hernandez|2013-03-01 09:11:58.703196|26.80|geology +50|302|65581|4294967387|2.73|18.54|false|jessica carson|2013-03-01 09:11:58.703282|58.24|study skills +115|311|65651|4294967423|44.94|33.29|true|ethan laertes|2013-03-01 09:11:58.703116|63.49|biology +88|368|65556|4294967428|37.79|47.21|true|tom laertes|2013-03-01 09:11:58.703149|7.26|topology +59|476|65560|4294967341|26.00|21.70|true|irene ovid|2013-03-01 09:11:58.703224|37.32|wind surfing +33|489|65723|4294967491|52.08|36.13|false|quinn robinson|2013-03-01 09:11:58.703174|29.70|chemistry +69|329|65580|4294967527|45.37|25.36|true|irene ichabod|2013-03-01 09:11:58.703267|95.34|joggying +8|342|65542|4294967486|86.51|30.05|true|ulysses johnson|2013-03-01 09:11:58.703164|4.89|kindergarten +47|327|65660|4294967329|53.96|10.07|false|fred white|2013-03-01 09:11:58.703313|48.34|zync studies +77|296|65771|4294967420|94.25|12.67|true|ulysses underhill|2013-03-01 09:11:58.703080|45.67|biology +63|451|65581|4294967493|44.66|40.63|true|alice miller|2013-03-01 09:11:58.703071|97.98|geology +103|303|65605|4294967540|54.00|47.97|true|fred davidson|2013-03-01 09:11:58.703087|68.42|zync studies +68|300|65577|4294967395|8.00|27.76|false|quinn quirinius|2013-03-01 09:11:58.703124|14.35|values clariffication +41|424|65684|4294967396|44.97|44.01|false|calvin polk|2013-03-01 09:11:58.703161|31.72|linguistics +84|448|65649|4294967425|5.81|28.49|true|ulysses ichabod|2013-03-01 09:11:58.703317|96.87|history +30|398|65577|4294967306|71.32|39.24|false|katie zipper|2013-03-01 09:11:58.703310|97.22|wind surfing +70|361|65695|4294967371|6.97|45.29|false|oscar falkner|2013-03-01 09:11:58.703268|79.32|opthamology +92|371|65702|4294967518|29.30|18.48|false|david ellison|2013-03-01 09:11:58.703192|30.01|topology +10|298|65666|4294967460|82.71|16.06|true|irene white|2013-03-01 09:11:58.703198|64.62|quiet hour +109|496|65699|4294967536|36.99|14.91|true|holly hernandez|2013-03-01 09:11:58.703123|66.43|geology +68|383|65597|4294967334|84.64|1.14|true|holly falkner|2013-03-01 09:11:58.703210|96.35|kindergarten +95|433|65738|4294967363|95.88|45.88|false|rachel steinbeck|2013-03-01 09:11:58.703308|34.85|history +37|262|65773|4294967482|26.04|4.86|true|oscar hernandez|2013-03-01 09:11:58.703285|92.63|linguistics +24|421|65676|4294967355|23.99|14.11|true|ulysses ovid|2013-03-01 09:11:58.703281|19.16|forestry +91|485|65607|4294967315|55.90|17.62|false|zach nixon|2013-03-01 09:11:58.703305|83.23|joggying +67|387|65790|4294967318|93.14|31.43|false|irene king|2013-03-01 09:11:58.703188|6.25|industrial engineering +82|262|65571|4294967465|56.70|30.18|true|irene van buren|2013-03-01 09:11:58.703167|3.00|study skills +98|505|65582|4294967365|17.40|40.51|false|sarah polk|2013-03-01 09:11:58.703121|56.65|history +22|268|65612|4294967462|9.69|4.64|false|xavier ichabod|2013-03-01 09:11:58.703304|3.86|linguistics +10|332|65685|4294967332|76.12|20.13|true|priscilla laertes|2013-03-01 09:11:58.703170|82.71|opthamology +36|317|65641|4294967471|56.22|36.78|true|tom johnson|2013-03-01 09:11:58.703296|53.38|biology +60|501|65555|4294967313|13.57|11.68|true|yuri davidson|2013-03-01 09:11:58.703183|10.42|religion +123|267|65560|4294967438|40.69|11.41|true|ethan allen|2013-03-01 09:11:58.703086|91.03|undecided +-2|482|65558|4294967487|36.92|49.78|true|nick johnson|2013-03-01 09:11:58.703204|39.91|industrial engineering +59|270|65726|4294967372|48.94|37.15|false|oscar polk|2013-03-01 09:11:58.703221|12.67|quiet hour +119|385|65595|4294967373|36.66|15.82|true|jessica nixon|2013-03-01 09:11:58.703127|5.26|zync studies +122|306|65751|4294967471|56.79|48.37|true|bob hernandez|2013-03-01 09:11:58.703186|50.61|kindergarten +64|402|65777|4294967481|77.49|13.11|false|nick carson|2013-03-01 09:11:58.703264|66.64|study skills +48|465|65758|4294967485|75.39|30.96|false|ethan allen|2013-03-01 09:11:58.703076|10.00|joggying +117|458|65603|4294967342|53.32|32.59|true|ethan garcia|2013-03-01 09:11:58.703204|47.35|yard duty +23|283|65557|4294967415|24.61|14.57|false|fred white|2013-03-01 09:11:58.703082|12.44|chemistry +56|507|65538|4294967507|67.82|42.13|false|alice king|2013-03-01 09:11:58.703297|54.64|american history +96|436|65737|4294967528|81.66|27.09|false|tom zipper|2013-03-01 09:11:58.703199|85.16|debate +88|292|65578|4294967546|91.57|37.42|false|nick zipper|2013-03-01 09:11:58.703294|96.08|religion +73|481|65717|4294967391|40.07|27.66|true|yuri xylophone|2013-03-01 09:11:58.703120|18.21|history +80|280|65620|4294967482|58.09|40.39|false|fred polk|2013-03-01 09:11:58.703136|23.61|xylophone band +96|464|65659|4294967493|74.22|21.71|true|jessica ichabod|2013-03-01 09:11:58.703226|92.72|undecided +103|485|65707|4294967436|94.57|21.16|true|zach van buren|2013-03-01 09:11:58.703313|3.93|study skills +31|410|65566|4294967518|36.11|16.72|true|nick ellison|2013-03-01 09:11:58.703305|61.53|biology +-3|270|65702|4294967512|38.05|1.07|true|david carson|2013-03-01 09:11:58.703136|28.07|philosophy +3|404|65709|4294967473|14.86|48.87|true|mike quirinius|2013-03-01 09:11:58.703099|37.99|xylophone band +124|473|65644|4294967314|65.16|19.33|false|oscar white|2013-03-01 09:11:58.703194|33.17|debate +103|321|65572|4294967353|64.79|0.22|false|david robinson|2013-03-01 09:11:58.703187|20.31|linguistics +41|395|65686|4294967428|61.99|11.61|false|sarah steinbeck|2013-03-01 09:11:58.703278|17.45|biology +-3|469|65752|4294967350|55.41|32.11|true|oscar johnson|2013-03-01 09:11:58.703110|47.32|philosophy +98|336|65641|4294967519|82.11|7.91|true|tom davidson|2013-03-01 09:11:58.703320|83.43|debate +54|422|65655|4294967551|15.74|34.11|true|bob garcia|2013-03-01 09:11:58.703086|46.93|yard duty +70|462|65671|4294967385|82.68|7.94|false|fred white|2013-03-01 09:11:58.703167|45.89|joggying +62|325|65751|4294967342|36.71|28.42|true|priscilla garcia|2013-03-01 09:11:58.703239|0.56|mathematics +56|504|65635|4294967318|93.88|34.87|true|holly polk|2013-03-01 09:11:58.703227|89.14|american history +50|275|65697|4294967322|58.10|27.56|false|priscilla johnson|2013-03-01 09:11:58.703096|6.19|biology +114|428|65680|4294967498|62.68|3.90|true|yuri nixon|2013-03-01 09:11:58.703086|53.28|xylophone band +100|277|65739|4294967382|1.61|18.22|true|wendy garcia|2013-03-01 09:11:58.703137|78.35|industrial engineering +7|494|65601|4294967403|20.76|19.41|false|david underhill|2013-03-01 09:11:58.703164|70.81|topology +79|448|65744|4294967479|18.18|36.26|true|david xylophone|2013-03-01 09:11:58.703310|76.40|joggying +19|289|65562|4294967344|56.25|33.81|true|sarah van buren|2013-03-01 09:11:58.703301|64.05|forestry +10|508|65589|4294967473|96.49|7.56|false|priscilla brown|2013-03-01 09:11:58.703134|2.08|education +89|451|65686|4294967396|21.20|13.22|true|oscar king|2013-03-01 09:11:58.703127|49.12|undecided +45|323|65540|4294967436|29.79|5.69|false|tom falkner|2013-03-01 09:11:58.703102|53.85|nap time +34|319|65780|4294967523|80.40|9.05|true|sarah falkner|2013-03-01 09:11:58.703179|75.06|yard duty +30|510|65632|4294967373|60.94|21.31|true|gabriella steinbeck|2013-03-01 09:11:58.703146|69.16|undecided +72|350|65742|4294967491|3.33|30.48|false|katie johnson|2013-03-01 09:11:58.703315|55.83|topology +96|402|65620|4294967320|19.38|49.45|false|oscar steinbeck|2013-03-01 09:11:58.703303|25.84|yard duty +95|405|65536|4294967338|18.26|1.46|false|sarah thompson|2013-03-01 09:11:58.703073|29.27|education +80|396|65675|4294967379|30.21|28.41|false|rachel white|2013-03-01 09:11:58.703316|11.37|topology +5|507|65715|4294967297|87.39|16.09|true|sarah xylophone|2013-03-01 09:11:58.703321|0.46|nap time +52|322|65635|4294967296|13.25|10.02|false|wendy falkner|2013-03-01 09:11:58.703094|2.51|industrial engineering +64|345|65744|4294967316|23.26|29.25|true|sarah brown|2013-03-01 09:11:58.703245|96.45|kindergarten +97|502|65654|4294967405|0.09|3.10|false|victor robinson|2013-03-01 09:11:58.703141|29.03|religion +25|424|65599|4294967303|49.92|33.86|true|calvin miller|2013-03-01 09:11:58.703095|76.80|study skills +115|298|65599|4294967457|78.69|11.89|false|luke steinbeck|2013-03-01 09:11:58.703245|22.81|geology +49|496|65722|4294967407|17.46|33.62|false|ethan underhill|2013-03-01 09:11:58.703158|7.67|forestry +77|315|65592|4294967532|28.72|38.15|false|nick robinson|2013-03-01 09:11:58.703296|78.69|debate +33|258|65780|4294967448|5.78|19.07|true|calvin davidson|2013-03-01 09:11:58.703133|18.12|study skills +98|390|65592|4294967397|36.40|29.61|false|sarah young|2013-03-01 09:11:58.703314|74.60|wind surfing +41|415|65618|4294967426|2.23|46.43|true|nick van buren|2013-03-01 09:11:58.703225|14.78|yard duty +62|427|65671|4294967359|75.01|38.93|false|bob ovid|2013-03-01 09:11:58.703195|17.17|values clariffication +-2|294|65588|4294967301|8.51|2.16|false|zach zipper|2013-03-01 09:11:58.703208|35.15|debate +94|309|65653|4294967447|6.14|5.65|false|yuri van buren|2013-03-01 09:11:58.703279|94.47|study skills +120|377|65615|4294967364|24.99|12.26|true|oscar nixon|2013-03-01 09:11:58.703250|71.62|industrial engineering +3|500|65756|4294967445|98.38|39.43|true|luke nixon|2013-03-01 09:11:58.703243|29.49|yard duty +-1|505|65611|4294967338|75.26|22.98|false|mike allen|2013-03-01 09:11:58.703123|95.80|linguistics +124|466|65612|4294967456|72.76|15.57|false|calvin polk|2013-03-01 09:11:58.703235|37.15|biology +1|490|65591|4294967329|69.89|40.29|false|luke laertes|2013-03-01 09:11:58.703104|58.27|quiet hour +70|385|65553|4294967506|69.14|44.05|false|ethan xylophone|2013-03-01 09:11:58.703150|93.69|chemistry +68|330|65573|4294967506|66.87|17.31|true|jessica hernandez|2013-03-01 09:11:58.703124|30.57|zync studies +82|421|65699|4294967550|84.77|40.40|false|gabriella white|2013-03-01 09:11:58.703292|29.99|history +9|346|65646|4294967449|66.32|24.07|false|jessica xylophone|2013-03-01 09:11:58.703084|94.86|undecided +116|336|65638|4294967327|64.45|11.24|true|jessica falkner|2013-03-01 09:11:58.703087|60.05|study skills +19|376|65770|4294967536|79.12|20.11|false|victor carson|2013-03-01 09:11:58.703243|72.69|industrial engineering +27|433|65767|4294967395|22.53|18.81|false|bob polk|2013-03-01 09:11:58.703097|52.68|linguistics +31|468|65654|4294967361|33.08|29.95|false|bob young|2013-03-01 09:11:58.703210|16.48|philosophy +84|411|65564|4294967493|49.25|7.84|true|oscar nixon|2013-03-01 09:11:58.703274|47.54|american history +37|409|65769|4294967384|25.89|42.27|false|katie underhill|2013-03-01 09:11:58.703172|66.93|zync studies +10|356|65628|4294967475|98.07|13.86|false|david carson|2013-03-01 09:11:58.703222|7.37|nap time +105|437|65664|4294967535|2.05|17.01|true|holly laertes|2013-03-01 09:11:58.703144|5.69|industrial engineering +117|508|65788|4294967319|66.86|25.25|false|ulysses davidson|2013-03-01 09:11:58.703283|85.22|industrial engineering +108|322|65697|4294967529|20.24|40.23|true|mike carson|2013-03-01 09:11:58.703083|6.04|philosophy +80|426|65735|4294967533|73.85|41.99|false|quinn hernandez|2013-03-01 09:11:58.703098|69.55|mathematics +49|434|65692|4294967336|89.33|14.24|true|yuri underhill|2013-03-01 09:11:58.703127|3.91|quiet hour +74|501|65657|4294967451|88.85|11.09|true|bob king|2013-03-01 09:11:58.703175|51.36|quiet hour +8|380|65734|4294967369|84.11|10.24|false|victor underhill|2013-03-01 09:11:58.703291|78.90|opthamology +89|364|65735|4294967334|12.41|24.02|false|nick nixon|2013-03-01 09:11:58.703272|34.80|debate +53|479|65579|4294967303|7.50|43.05|false|rachel ellison|2013-03-01 09:11:58.703148|48.50|yard duty +67|493|65626|4294967489|98.74|32.74|false|katie thompson|2013-03-01 09:11:58.703263|87.95|geology +56|390|65676|4294967456|42.59|1.64|true|wendy king|2013-03-01 09:11:58.703307|39.31|joggying +13|431|65624|4294967330|94.05|30.76|false|quinn ichabod|2013-03-01 09:11:58.703180|1.72|biology +85|366|65627|4294967356|37.14|35.57|true|alice king|2013-03-01 09:11:58.703170|6.78|yard duty +-2|286|65549|4294967493|9.20|1.23|true|ulysses king|2013-03-01 09:11:58.703218|93.35|study skills +51|344|65698|4294967309|83.66|6.12|false|zach ellison|2013-03-01 09:11:58.703158|29.28|yard duty +89|489|65610|4294967353|64.70|8.13|true|katie polk|2013-03-01 09:11:58.703120|56.34|education +95|327|65747|4294967522|1.16|12.00|true|bob van buren|2013-03-01 09:11:58.703284|3.45|opthamology +50|508|65541|4294967451|37.38|46.94|true|quinn steinbeck|2013-03-01 09:11:58.703081|20.90|forestry +6|301|65693|4294967454|89.07|41.96|true|alice ichabod|2013-03-01 09:11:58.703297|16.13|religion +7|322|65719|4294967434|1.02|29.24|false|quinn carson|2013-03-01 09:11:58.703293|47.99|forestry +99|469|65751|4294967356|10.10|42.47|false|wendy young|2013-03-01 09:11:58.703180|63.14|opthamology +18|269|65751|4294967544|87.84|0.60|true|mike steinbeck|2013-03-01 09:11:58.703167|36.04|religion +22|361|65729|4294967328|67.51|15.52|false|zach ovid|2013-03-01 09:11:58.703317|26.96|quiet hour +114|455|65723|4294967481|4.94|33.44|false|alice van buren|2013-03-01 09:11:58.703074|72.22|philosophy +-3|384|65676|4294967453|71.97|31.52|false|alice davidson|2013-03-01 09:11:58.703226|14.28|xylophone band +37|334|65775|4294967518|17.88|45.96|false|zach ellison|2013-03-01 09:11:58.703260|9.92|nap time +28|427|65648|4294967309|45.65|3.90|true|bob robinson|2013-03-01 09:11:58.703308|89.89|chemistry +86|469|65780|4294967466|64.61|24.76|true|david steinbeck|2013-03-01 09:11:58.703241|0.68|linguistics +61|455|65567|4294967315|84.80|25.83|false|alice robinson|2013-03-01 09:11:58.703127|26.03|zync studies +-3|387|65550|4294967355|84.75|22.75|true|holly thompson|2013-03-01 09:11:58.703073|52.01|biology +14|492|65690|4294967388|98.07|15.98|true|david miller|2013-03-01 09:11:58.703096|15.69|forestry +8|318|65687|4294967551|44.02|14.70|false|quinn thompson|2013-03-01 09:11:58.703205|23.43|joggying +117|502|65789|4294967441|55.39|8.22|false|tom allen|2013-03-01 09:11:58.703129|74.48|xylophone band +20|285|65783|4294967424|99.34|21.19|false|alice thompson|2013-03-01 09:11:58.703223|9.55|opthamology +4|478|65538|4294967312|21.90|0.85|false|sarah thompson|2013-03-01 09:11:58.703089|79.07|xylophone band diff --git a/sql/hive/src/test/resources/data/files/over1k b/sql/hive/src/test/resources/data/files/over1k new file mode 100644 index 0000000000000..1b3a052be97e8 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/over1k @@ -0,0 +1,1049 @@ +124|336|65664|4294967435|74.72|42.47|true|bob davidson|2013-03-01 09:11:58.703302|45.40|yard duty +19|442|65553|4294967380|26.43|37.77|true|alice zipper|2013-03-01 09:11:58.703217|29.62|history +35|387|65619|4294967459|96.91|18.86|false|katie davidson|2013-03-01 09:11:58.703079|27.32|history +111|372|65656|4294967312|13.01|34.95|false|xavier quirinius|2013-03-01 09:11:58.703310|23.91|topology +54|317|65547|4294967409|60.71|2.09|false|nick robinson|2013-03-01 09:11:58.703103|90.21|geology +-3|467|65575|4294967437|81.64|23.53|true|tom hernandez|2013-03-01 09:11:58.703188|32.85|study skills +53|317|65702|4294967398|35.17|30.87|false|ulysses hernandez|2013-03-01 09:11:58.703164|79.50|industrial engineering +122|356|65759|4294967379|92.61|18.82|true|priscilla ichabod|2013-03-01 09:11:58.703175|92.81|nap time +18|407|65725|4294967362|82.52|5.30|true|quinn van buren|2013-03-01 09:11:58.703282|35.86|kindergarten +66|484|65685|4294967387|45.99|6.81|false|luke laertes|2013-03-01 09:11:58.703317|63.27|mathematics +122|444|65675|4294967500|72.62|34.15|false|xavier polk|2013-03-01 09:11:58.703222|99.79|american history +115|269|65627|4294967362|91.42|1.61|false|zach falkner|2013-03-01 09:11:58.703252|49.85|american history +109|438|65779|4294967371|67.18|40.76|false|quinn davidson|2013-03-01 09:11:58.703318|92.06|quiet hour +102|436|65749|4294967542|68.89|39.01|false|priscilla van buren|2013-03-01 09:11:58.703305|82.99|mathematics +92|490|65745|4294967420|10.22|49.45|true|fred king|2013-03-01 09:11:58.703277|80.12|education +34|439|65667|4294967480|26.49|18.47|true|calvin ellison|2013-03-01 09:11:58.703135|97.87|joggying +72|383|65638|4294967398|23.60|46.73|false|sarah garcia|2013-03-01 09:11:58.703192|11.20|topology +11|505|65576|4294967297|71.32|18.19|false|zach young|2013-03-01 09:11:58.703221|92.47|chemistry +69|376|65751|4294967384|88.77|27.02|false|david underhill|2013-03-01 09:11:58.703244|9.02|mathematics +36|309|65769|4294967317|91.16|38.05|false|yuri carson|2013-03-01 09:11:58.703178|68.33|debate +51|258|65781|4294967391|1.92|39.05|false|ulysses laertes|2013-03-01 09:11:58.703248|95.52|nap time +1|482|65675|4294967314|38.33|21.67|false|jessica thompson|2013-03-01 09:11:58.703110|83.09|forestry +51|295|65716|4294967433|16.24|48.96|false|sarah johnson|2013-03-01 09:11:58.703299|9.00|linguistics +68|439|65703|4294967469|92.55|23.30|true|zach ovid|2013-03-01 09:11:58.703316|65.91|religion +104|299|65791|4294967424|34.03|27.14|false|victor nixon|2013-03-01 09:11:58.703173|48.17|topology +14|337|65611|4294967542|16.99|16.36|true|sarah ellison|2013-03-01 09:11:58.703187|64.89|biology +21|305|65664|4294967361|82.41|49.69|true|xavier davidson|2013-03-01 09:11:58.703287|75.43|mathematics +79|419|65755|4294967329|91.05|39.04|false|fred steinbeck|2013-03-01 09:11:58.703216|11.23|values clariffication +109|427|65626|4294967308|98.72|31.23|true|tom robinson|2013-03-01 09:11:58.703273|64.61|kindergarten +2|379|65707|4294967450|44.27|37.93|false|victor allen|2013-03-01 09:11:58.703076|96.97|american history +7|508|65681|4294967345|66.61|23.73|false|luke allen|2013-03-01 09:11:58.703104|75.85|history +66|300|65553|4294967447|29.02|3.69|false|fred zipper|2013-03-01 09:11:58.703307|72.16|nap time +15|347|65604|4294967484|79.83|26.24|false|alice nixon|2013-03-01 09:11:58.703124|85.91|zync studies +104|454|65579|4294967467|54.44|42.57|true|irene van buren|2013-03-01 09:11:58.703225|73.48|values clariffication +6||65669|4294967519|69.53|2.80|true|alice laertes|2013-03-01 09:11:58.703250|93.79|industrial engineering +121|449|65776|4294967327|60.60|45.14|true|quinn davidson|2013-03-01 09:11:58.703175|98.87|industrial engineering +51|445|65761|4294967423|10.60|0.52|false|rachel ellison|2013-03-01 09:11:58.703196|60.30|education +63|268|65652|4294967374|40.78|47.60|false|tom van buren|2013-03-01 09:11:58.703279|42.78|education +10|439|65641|4294967353|24.83|46.33|true|luke zipper|2013-03-01 09:11:58.703257|26.02|topology +17|384|65700|4294967457|20.07|33.19|true|mike carson|2013-03-01 09:11:58.703140|2.83|religion +38|351|65567|4294967316|22.78|30.04|true|jessica ellison|2013-03-01 09:11:58.703113|84.56|forestry +61|419|65783|4294967427|70.93|39.46|false|bob brown|2013-03-01 09:11:58.703207|62.58|education +95|511|65636|4294967325|71.50|2.52|false|zach thompson|2013-03-01 09:11:58.703198|67.23|quiet hour +83|316|65749|4294967342|90.51|23.55|true|holly ichabod|2013-03-01 09:11:58.703091|45.00|nap time +38|318|65560|4294967354|43.73|30.98|false||2013-03-01 09:11:58.703318|21.81|mathematics +|473|65720|4294967324|80.74|40.60|false|holly falkner|2013-03-01 09:11:58.703111|18.80|mathematics +82|272|65699|4294967488|92.82|8.98|true|wendy van buren|2013-03-01 09:11:58.703314|41.13|mathematics +35|475|65574|4294967455|60.13|10.85|false|tom falkner|2013-03-01 09:11:58.703217|23.57|wind surfing +2|375|65608|4294967444|9.93|16.47|false|xavier thompson|2013-03-01 09:11:58.703154|16.93|topology +62|428|65758|4294967373|96.09|38.60|true|fred johnson|2013-03-01 09:11:58.703307|60.88|geology +100|391|65661|4294967317|52.72|15.01|true|victor steinbeck|2013-03-01 09:11:58.703232|61.96|debate +10|264|65688|4294967479|78.30|0.63|true|irene thompson|2013-03-01 09:11:58.703156|76.21|undecided +87|469|65580|4294967411|90.20|45.49|true|calvin brown|2013-03-01 09:11:58.703278|56.33|nap time +27|262|65787|4294967371|57.35|44.12|false|irene underhill|2013-03-01 09:11:58.703289|31.19|quiet hour +89|466|65541|4294967468|85.51|19.79|true|calvin davidson|2013-03-01 09:11:58.703113|35.38|philosophy +15|379|65597|4294967382|48.28|22.73|true|luke xylophone|2013-03-01 09:11:58.703309|37.41|topology +1|284|65572|4294967342|37.07|14.51|true|fred ichabod|2013-03-01 09:11:58.703254|43.49|quiet hour +89||65579|4294967419|46.02|6.06|false|victor davidson|2013-03-01 09:11:58.703077|91.42|xylophone band +-2|427|65666|4294967465|19.69|33.24|true|bob xylophone|2013-03-01 09:11:58.703219|32.73|joggying +58|360|65564|4294967402|19.00|21.16|false|oscar white|2013-03-01 09:11:58.703161|15.82|forestry +9|274|65710|4294967481|9.57|4.97|true|irene laertes|2013-03-01 09:11:58.703138|86.70|yard duty +107|271|65652|4294967329|38.30|25.36|false|tom polk|2013-03-01 09:11:58.703131|73.61|kindergarten +79|399|65664|4294967492|41.85|29.00|false|calvin garcia|2013-03-01 09:11:58.703074|97.64|religion +58|448|65591|4294967451|62.74|17.69|true|mike king|2013-03-01 09:11:58.703312|82.08|nap time +98|430|65616|4294967451|35.89|12.15|true|ulysses underhill|2013-03-01 09:11:58.703083|20.52|zync studies +83|382|65550|4294967451|35.00|21.02|true|katie hernandez|2013-03-01 09:11:58.703145|8.46|xylophone band +23|381|65661|4294967425|31.40|21.26|false|katie miller|2013-03-01 09:11:58.703251|68.98|topology +62|358|65552|4294967533|50.96|9.42|false|luke allen|2013-03-01 09:11:58.703117|82.21|kindergarten +7|487|65740|4294967416|9.22|43.64|false||2013-03-01 09:11:58.703272|7.49|american history +5|285|65654|4294967436|42.55|14.69|false|holly underhill|2013-03-01 09:11:58.703185|8.91|study skills +104|472|65620|4294967548|22.08|9.94|true|irene falkner|2013-03-01 09:11:58.703135|29.14|opthamology +|374|65560|4294967516|65.43|22.48|true|oscar quirinius|2013-03-01 09:11:58.703316|16.86|mathematics +8|273|65641|4294967507|35.08|37.80|false|nick allen|2013-03-01 09:11:58.703186|91.46|biology +20|449|65663|4294967439|4.72|12.34|true|xavier ichabod|2013-03-01 09:11:58.703259|11.37|geology +85|313|65780|4294967303|71.01|0.78|false|zach xylophone|2013-03-01 09:11:58.703203|11.63|biology +27|329|65778|4294967451|6.63|7.03|true|jessica zipper|2013-03-01 09:11:58.703130|51.64|philosophy +79|451|65662|4294967487|73.63|15.46|true|alice allen|2013-03-01 09:11:58.703161|99.18|wind surfing +69|440|65720|4294967373|9.56|24.42|true|jessica johnson|2013-03-01 09:11:58.703132|2.72|mathematics +119|390|65544|4294967411|41.31|20.02|false|fred steinbeck|2013-03-01 09:11:58.703267|26.94|nap time +85|468|65643|4294967430|86.63|21.00|true|wendy ovid|2013-03-01 09:11:58.703124|48.81|forestry +-2|429|65664|4294967441|45.19|40.43|false|wendy king|2013-03-01 09:11:58.703265|11.46|industrial engineering +100|481|65750|4294967308|21.19|28.14|false|holly hernandez|2013-03-01 09:11:58.703203|85.44|chemistry +-1|417|65685|4294967492|28.89|5.19|true|mike white|2013-03-01 09:11:58.703275|90.69|forestry +77||65681|4294967535|18.56|12.43|true|priscilla johnson|2013-03-01 09:11:58.703176|35.45|study skills +89|478|65583|4294967522|92.40|26.71|true|gabriella ovid|2013-03-01 09:11:58.703092|50.57|biology +43|333|65549|4294967331|11.22|38.00|true|victor xylophone|2013-03-01 09:11:58.703257|58.96|nap time +11|387|65718|4294967457|89.53|16.54|true||2013-03-01 09:11:58.703130|63.06|industrial engineering +105|438|65623|4294967501|39.69|22.95|false|ulysses xylophone|2013-03-01 09:11:58.703148|48.51|kindergarten +111|349|65740|4294967400|17.37|43.34|true|yuri nixon|2013-03-01 09:11:58.703280|55.16|quiet hour +85|461|65654|4294967507|89.10|13.44|true|xavier johnson|2013-03-01 09:11:58.703127|19.64|zync studies +|409|65536|4294967490|46.97|25.92|false|fred miller|2013-03-01 09:11:58.703116|33.45|history +51|398|65687|4294967304|30.37|47.31|false|luke garcia|2013-03-01 09:11:58.703156|21.79|industrial engineering +47|291|65615|4294967402|37.14|29.63|false|oscar ovid|2013-03-01 09:11:58.703231|39.40|geology +-1|268|65778|4294967418|56.33|44.73|true|calvin falkner|2013-03-01 09:11:58.703220|7.37|history +86|422|65582|4294967353|87.83|2.34|false|luke ellison|2013-03-01 09:11:58.703313|9.35|joggying +76|400|65661|4294967379|15.81|46.57|true|rachel allen|2013-03-01 09:11:58.703211|5.24|wind surfing +81|448|65550|4294967533|25.88|46.54|true|oscar king|2013-03-01 09:11:58.703161|57.63|american history +22|288|65578|4294967341|33.87|20.76|true|calvin hernandez|2013-03-01 09:11:58.703173|51.36|biology +59|410|65572|4294967370|74.42|26.22|false|nick ichabod|2013-03-01 09:11:58.703221|93.48|xylophone band +86|349|65686|4294967512|62.85|24.61|true|bob ovid|2013-03-01 09:11:58.703106|31.75|religion +27|335|65636|4294967505|37.14|2.29|false|alice quirinius|2013-03-01 09:11:58.703287|21.15|education +74|422|65682|4294967316|37.60|45.06|false|rachel carson|2013-03-01 09:11:58.703140|92.95|joggying +24|269|65644|4294967349|31.01|26.44|true|katie young|2013-03-01 09:11:58.703149|58.05|xylophone band +12|411|65560|4294967346|8.91|40.79|false|calvin thompson|2013-03-01 09:11:58.703227|71.59|religion +8|379|65574|4294967410|24.49|2.74|true|calvin young|2013-03-01 09:11:58.703283|38.54|study skills +123|477|65699|4294967340|1.21|28.71|true|quinn ovid|2013-03-01 09:11:58.703278|88.09|undecided +28|349|65711|4294967458|84.69|47.30|true|holly ichabod|2013-03-01 09:11:58.703109|50.26|zync studies +83|420|65563|4294967400|85.10|43.40|true|mike king|2013-03-01 09:11:58.703169|39.96|xylophone band +51|434|65549|4294967449|3.96|39.57|false|mike miller|2013-03-01 09:11:58.703141|76.06|kindergarten +91|346|65696|4294967355|71.31|1.29|true|alice brown|2013-03-01 09:11:58.703245|17.35|zync studies +82|393|65763|4294967452|66.51|14.44|false|quinn steinbeck|2013-03-01 09:11:58.703187|87.99|joggying +85|439|65759|4294967530|20.64|21.57|true|david quirinius|2013-03-01 09:11:58.703083|47.54|philosophy +66|475|65633|4294967498|26.64|42.03|false|gabriella ichabod|2013-03-01 09:11:58.703302|59.56|chemistry +117|311|65691|4294967335|24.28|43.67|false|quinn brown|2013-03-01 09:11:58.703295|56.02|geology +92|352|65559|4294967353|3.82|31.84|false|bob zipper|2013-03-01 09:11:58.703316|29.55|topology +31|432|65607|4294967497|40.80|35.49|false|jessica johnson|2013-03-01 09:11:58.703218|9.67|study skills +114|279|65657|4294967339|54.73|30.17|true|quinn allen|2013-03-01 09:11:58.703297|64.39|debate +28|485|65694|4294967534|79.48|8.84|false|quinn underhill|2013-03-01 09:11:58.703275|82.24|history +2|399|65571|4294967410|59.68|3.92|false|luke underhill|2013-03-01 09:11:58.703221|26.64|topology +17|395|65589|4294967464|95.33|47.46|false|wendy ovid|2013-03-01 09:11:58.703118|54.01|zync studies +71|363|65787|4294967465|59.50|20.17|true|oscar king|2013-03-01 09:11:58.703285|64.88|history +48|511|65561|4294967547|8.45|9.39|false|xavier zipper|2013-03-01 09:11:58.703297|25.67|chemistry +1|424|65712|4294967484|0.13|39.92|true|yuri johnson|2013-03-01 09:11:58.703144|94.43|zync studies +109|306|65643|4294967323|79.54|38.74|true|ulysses carson|2013-03-01 09:11:58.703263|92.24|undecided +49|349|65747|4294967306|84.40|44.93|true|katie garcia|2013-03-01 09:11:58.703226|39.77|chemistry +114|454|65542|4294967443|64.67|13.02|true|katie allen|2013-03-01 09:11:58.703275|84.63|philosophy +28|307|65606|4294967389|95.34|9.62|true|jessica davidson|2013-03-01 09:11:58.703181|57.69|american history +-1|348|65556|4294967413|35.17|9.51|false|bob young|2013-03-01 09:11:58.703280|45.81|quiet hour +1|485|65625|4294967309|41.81|15.46|false|david van buren|2013-03-01 09:11:58.703207|55.06|debate +38|291|65634|4294967438|83.57|49.63|false|david van buren|2013-03-01 09:11:58.703174|64.36|debate +50|338|65634|4294967463|85.23|32.33|false|david ellison|2013-03-01 09:11:58.703247|57.09|values clariffication +113|383|65578|4294967358|43.16|22.22|true|alice xylophone|2013-03-01 09:11:58.703250|41.10|philosophy +43|305|65572|4294967511|36.70|11.12|true|ethan van buren|2013-03-01 09:11:58.703110|70.91|study skills +110|344|65759|4294967464|27.31|46.31|true|mike davidson|2013-03-01 09:11:58.703106|14.10|philosophy +23|424|65731|4294967416|65.72|43.58|true|calvin polk|2013-03-01 09:11:58.703160|24.48|philosophy +16|281|65605|4294967493|45.34|10.36|true|bob white|2013-03-01 09:11:58.703140|14.12|american history +120|285|65649|4294967355|35.56|49.34|true|victor ovid|2013-03-01 09:11:58.703205|43.92|opthamology +98|452|65544|4294967309|73.93|18.86|true|jessica white|2013-03-01 09:11:58.703175|65.77|philosophy +41|360|65643|4294967488|76.28|46.18|false|quinn thompson|2013-03-01 09:11:58.703203|61.29|philosophy +66|462|65697|4294967452|57.29|38.07|true|ethan ovid|2013-03-01 09:11:58.703138|90.16|philosophy +99|373|65579|4294967465|24.02|47.95|true|irene polk|2013-03-01 09:11:58.703231|21.36|mathematics +15|334|65576|4294967542|75.66|11.12|true|jessica robinson|2013-03-01 09:11:58.703104|2.04|chemistry +53|466|65545|4294967514|94.66|15.12|true|wendy ellison|2013-03-01 09:11:58.703236|79.00|xylophone band +64|295|65622|4294967521|59.34|7.62|false|victor brown|2013-03-01 09:11:58.703157|28.37|undecided +8|323|65774|4294967503|21.49|5.55|false|priscilla xylophone|2013-03-01 09:11:58.703213|48.80|religion +42|368|65701|4294967410|35.68|35.84|true|gabriella polk|2013-03-01 09:11:58.703235|6.35|xylophone band +72|389|65724|4294967300|69.74|38.04|false|calvin nixon|2013-03-01 09:11:58.703161|85.52|education +23|493|65555|4294967455|77.89|25.11|true|victor brown|2013-03-01 09:11:58.703125|46.72|education +26|465|65700|4294967346|46.10|38.22|true|bob quirinius|2013-03-01 09:11:58.703177|37.61|kindergarten +77|507|65721|4294967488|78.31|33.11|true|fred davidson|2013-03-01 09:11:58.703187|72.82|biology +88|346|65654|4294967369|48.23|35.72|false|mike brown|2013-03-01 09:11:58.703197|26.73|chemistry +45|357|65755|4294967485|94.25|46.52|true|gabriella thompson|2013-03-01 09:11:58.703202|67.54|religion +11|286|65667|4294967382|48.45|22.94|true|rachel underhill|2013-03-01 09:11:58.703115|63.90|values clariffication +95|489|65711|4294967493|11.89|25.36|false|ulysses laertes|2013-03-01 09:11:58.703249|78.69|history +23|448|65637|4294967435|76.28|19.32|false|ulysses miller|2013-03-01 09:11:58.703290|16.89|mathematics +42|498|65687|4294967352|42.85|39.27|false|oscar robinson|2013-03-01 09:11:58.703139|48.73|undecided +27|490|65680|4294967347|57.46|11.02|true|wendy van buren|2013-03-01 09:11:58.703291|95.26|xylophone band +53|257|65790|4294967425|9.26|9.93|false|oscar laertes|2013-03-01 09:11:58.703113|46.91|forestry +27|457|65570|4294967464|81.58|3.78|false|ulysses underhill|2013-03-01 09:11:58.703088|17.09|quiet hour +46|480|65649|4294967458|86.23|6.76|false|quinn king|2013-03-01 09:11:58.703099|91.03|debate +57|419|65786|4294967300|6.57|36.93|false|nick allen|2013-03-01 09:11:58.703290|66.89|nap time +72|267|65537|4294967460|55.20|42.89|false|oscar carson|2013-03-01 09:11:58.703153|51.91|topology +110|346|65693|4294967505|67.12|9.14|true|luke white|2013-03-01 09:11:58.703199|45.69|quiet hour +117|346|65619|4294967321|78.73|35.68|false|holly brown|2013-03-01 09:11:58.703245|36.59|xylophone band +35|451|65763|4294967498|33.83|10.70|true|sarah robinson|2013-03-01 09:11:58.703126|53.52|nap time +87|466|65562|4294967446|35.62|30.58|true|jessica quirinius|2013-03-01 09:11:58.703246|45.94|values clariffication +116|307|65785|4294967434|72.18|44.24|false|rachel zipper|2013-03-01 09:11:58.703144|29.61|debate +36|460|65541|4294967365|55.99|38.73|false|fred hernandez|2013-03-01 09:11:58.703256|98.87|zync studies +2|383|65649|4294967537|74.19|44.57|true|ulysses king|2013-03-01 09:11:58.703118|8.69|quiet hour +11|331|65659|4294967432|68.01|7.24|true|quinn nixon|2013-03-01 09:11:58.703184|8.95|xylophone band +122|449|65751|4294967548|81.66|29.49|true|mike carson|2013-03-01 09:11:58.703258|30.68|wind surfing +9|308|65715|4294967297|12.54|27.61|false|bob king|2013-03-01 09:11:58.703309|89.40|geology +26|457|65590|4294967302|87.22|26.79|true|xavier king|2013-03-01 09:11:58.703176|67.80|forestry +59|390|65776|4294967421|97.81|40.22|false|katie king|2013-03-01 09:11:58.703132|49.73|zync studies +22|489|65717|4294967422|89.38|28.13|false|mike quirinius|2013-03-01 09:11:58.703262|5.81|chemistry +82|303|65764|4294967480|54.34|13.84|false|david xylophone|2013-03-01 09:11:58.703202|31.41|religion +27|261|65619|4294967401|88.78|18.28|false|bob ovid|2013-03-01 09:11:58.703207|36.48|wind surfing +24|333|65617|4294967370|10.26|16.29|false|yuri quirinius|2013-03-01 09:11:58.703179|10.82|geology +115|334|65653|4294967435|46.45|17.86|false|gabriella steinbeck|2013-03-01 09:11:58.703085|85.09|joggying +77|435|65578|4294967474|38.62|47.15|false|alice steinbeck|2013-03-01 09:11:58.703073|75.62|study skills +101|259|65759|4294967383|79.96|10.23|false|holly underhill|2013-03-01 09:11:58.703087|10.63|nap time +45|401|65680|4294967303|32.41|25.43|true|ulysses steinbeck|2013-03-01 09:11:58.703143|55.30|education +100|430|65570|4294967431|50.31|46.98|false|calvin laertes|2013-03-01 09:11:58.703154|76.80|yard duty +106|456|65548|4294967484|37.90|14.24|true|mike hernandez|2013-03-01 09:11:58.703294|58.51|chemistry +3|260|65659|4294967508|91.53|43.18|false|oscar ovid|2013-03-01 09:11:58.703281|99.87|chemistry +60|275|65654|4294967405|24.80|20.64|true|nick young|2013-03-01 09:11:58.703074|37.80|geology +50|346|65673|4294967549|55.51|32.20|true|alice steinbeck|2013-03-01 09:11:58.703198|33.27|yard duty +85|448|65784|4294967299|90.56|32.56|false|alice hernandez|2013-03-01 09:11:58.703278|68.18|opthamology +10|498|65549|4294967361|87.48|0.66|true|oscar carson|2013-03-01 09:11:58.703150|50.60|chemistry +16|466|65673|4294967318|87.57|45.11|true|bob garcia|2013-03-01 09:11:58.703173|87.78|history +33|508|65600|4294967372|12.02|17.08|true|jessica zipper|2013-03-01 09:11:58.703302|36.57|values clariffication +31|426|65602|4294967543|24.79|36.72|true|holly hernandez|2013-03-01 09:11:58.703306|8.13|quiet hour +61|266|65564|4294967461|95.81|3.07|false|priscilla nixon|2013-03-01 09:11:58.703269|90.34|study skills +41|329|65717|4294967463|30.36|30.37|false|rachel robinson|2013-03-01 09:11:58.703214|57.61|yard duty +114|271|65581|4294967520|61.88|23.27|false|oscar van buren|2013-03-01 09:11:58.703071|88.09|industrial engineering +22|267|65651|4294967449|68.25|17.52|false|ulysses hernandez|2013-03-01 09:11:58.703097|74.13|industrial engineering +120|406|65610|4294967538|59.99|39.78|true|quinn garcia|2013-03-01 09:11:58.703299|39.74|linguistics +5|372|65699|4294967375|80.97|31.76|false|katie ellison|2013-03-01 09:11:58.703112|13.29|american history +40|465|65713|4294967408|50.09|38.66|true|bob carson|2013-03-01 09:11:58.703273|10.94|wind surfing +115|281|65651|4294967434|80.46|35.90|true|gabriella king|2013-03-01 09:11:58.703156|84.42|joggying +5|395|65741|4294967521|29.54|40.04|true|calvin quirinius|2013-03-01 09:11:58.703131|63.81|religion +45|292|65769|4294967336|32.01|29.73|false|mike white|2013-03-01 09:11:58.703310|70.52|chemistry +116|396|65778|4294967515|30.65|49.38|true|quinn ellison|2013-03-01 09:11:58.703131|99.08|opthamology +68|264|65623|4294967481|69.97|47.03|true|zach garcia|2013-03-01 09:11:58.703235|28.60|education +18|280|65536|4294967320|32.92|45.94|false|holly white|2013-03-01 09:11:58.703086|58.86|topology +28|302|65653|4294967388|50.40|38.37|false|holly miller|2013-03-01 09:11:58.703195|3.81|philosophy +114|385|65541|4294967458|73.48|34.97|true|oscar quirinius|2013-03-01 09:11:58.703143|72.33|xylophone band +4|279|65745|4294967431|83.58|31.66|true|fred van buren|2013-03-01 09:11:58.703087|25.19|study skills +51|377|65626|4294967479|1.27|12.73|false|wendy miller|2013-03-01 09:11:58.703072|96.47|values clariffication +78|351|65755|4294967337|99.29|24.84|true|holly zipper|2013-03-01 09:11:58.703236|81.44|forestry +75|461|65760|4294967326|3.21|8.52|false|david brown|2013-03-01 09:11:58.703144|21.14|xylophone band +124|371|65687|4294967489|79.55|45.10|false|priscilla carson|2013-03-01 09:11:58.703277|3.37|philosophy +95|424|65643|4294967442|36.22|24.86|false|rachel king|2013-03-01 09:11:58.703261|71.29|yard duty +88|348|65645|4294967328|46.88|5.74|false|luke polk|2013-03-01 09:11:58.703306|3.95|yard duty +27|278|65622|4294967516|25.67|46.19|true|priscilla zipper|2013-03-01 09:11:58.703302|50.08|chemistry +23|302|65595|4294967497|22.01|5.84|true|wendy falkner|2013-03-01 09:11:58.703164|48.92|biology +30|441|65721|4294967456|40.17|28.17|false|sarah steinbeck|2013-03-01 09:11:58.703256|23.78|wind surfing +31|461|65608|4294967349|61.92|49.45|true|bob miller|2013-03-01 09:11:58.703255|48.90|biology +13|477|65680|4294967505|22.85|12.85|true|calvin steinbeck|2013-03-01 09:11:58.703277|54.11|zync studies +29|449|65596|4294967490|58.67|9.22|true|victor robinson|2013-03-01 09:11:58.703177|79.75|zync studies +13|503|65664|4294967406|52.50|41.37|true|holly laertes|2013-03-01 09:11:58.703196|34.71|yard duty +63|368|65714|4294967420|20.38|25.32|true|yuri xylophone|2013-03-01 09:11:58.703189|49.69|debate +44|437|65721|4294967376|22.27|3.27|true|yuri king|2013-03-01 09:11:58.703269|86.59|topology +35|500|65641|4294967469|68.85|13.20|true|victor ellison|2013-03-01 09:11:58.703245|41.16|undecided +49|271|65735|4294967454|59.83|22.33|false|oscar white|2013-03-01 09:11:58.703139|12.67|nap time +0|264|65670|4294967479|72.98|3.67|true|david xylophone|2013-03-01 09:11:58.703269|61.06|philosophy +47|463|65751|4294967525|71.68|30.61|true|jessica ovid|2013-03-01 09:11:58.703072|2.96|education +120|273|65724|4294967477|94.15|6.54|true|david ellison|2013-03-01 09:11:58.703091|36.05|education +6|486|65611|4294967485|74.00|27.42|false|ulysses steinbeck|2013-03-01 09:11:58.703258|21.21|education +53|311|65650|4294967299|48.11|22.64|true|wendy hernandez|2013-03-01 09:11:58.703146|89.12|kindergarten +117|396|65541|4294967434|74.78|6.62|true|katie miller|2013-03-01 09:11:58.703243|89.14|yard duty +24|454|65628|4294967337|88.55|31.61|false|victor young|2013-03-01 09:11:58.703296|30.43|undecided +116|485|65575|4294967296|95.84|14.26|true|irene polk|2013-03-01 09:11:58.703128|17.00|kindergarten +11|438|65622|4294967368|89.81|0.73|true|sarah white|2013-03-01 09:11:58.703287|88.60|biology +65|263|65671|4294967519|68.95|20.34|true|alice laertes|2013-03-01 09:11:58.703103|8.65|history +31|278|65634|4294967511|50.41|46.87|true|holly underhill|2013-03-01 09:11:58.703244|99.34|debate +98|466|65602|4294967470|8.32|1.17|false|david underhill|2013-03-01 09:11:58.703275|95.58|debate +114|384|65549|4294967361|55.39|36.12|true|holly king|2013-03-01 09:11:58.703077|55.04|forestry +35|463|65646|4294967363|50.83|34.68|true|gabriella miller|2013-03-01 09:11:58.703133|27.34|nap time +37|317|65684|4294967499|23.13|26.55|false|calvin laertes|2013-03-01 09:11:58.703162|3.51|study skills +80|390|65766|4294967360|67.26|8.82|true|xavier hernandez|2013-03-01 09:11:58.703288|66.13|biology +111|486|65620|4294967357|22.36|46.67|true|ulysses underhill|2013-03-01 09:11:58.703172|64.65|zync studies +88|322|65733|4294967316|80.58|32.61|false|quinn brown|2013-03-01 09:11:58.703272|99.80|yard duty +20|372|65587|4294967462|76.92|7.37|true|gabriella hernandez|2013-03-01 09:11:58.703182|11.86|mathematics +107|278|65550|4294967432|83.08|22.15|false|sarah zipper|2013-03-01 09:11:58.703131|1.75|forestry +50|405|65715|4294967538|79.12|16.49|false|calvin ovid|2013-03-01 09:11:58.703297|39.62|chemistry +100|310|65657|4294967393|20.67|7.45|false|gabriella king|2013-03-01 09:11:58.703290|26.40|xylophone band +66|477|65674|4294967313|8.45|4.83|false|wendy young|2013-03-01 09:11:58.703180|10.28|xylophone band +73|318|65610|4294967401|11.91|23.15|false|nick thompson|2013-03-01 09:11:58.703097|36.77|religion +-2|269|65681|4294967544|99.24|28.19|false|rachel falkner|2013-03-01 09:11:58.703089|41.57|quiet hour +85|495|65656|4294967507|90.12|3.99|true|fred polk|2013-03-01 09:11:58.703257|14.96|quiet hour +20|288|65758|4294967547|20.79|34.05|false|xavier carson|2013-03-01 09:11:58.703092|61.69|chemistry +123|299|65606|4294967525|99.36|7.66|false|sarah falkner|2013-03-01 09:11:58.703300|7.51|wind surfing +10|273|65750|4294967499|23.77|21.66|false|yuri underhill|2013-03-01 09:11:58.703177|20.91|religion +75|393|65726|4294967467|39.98|29.78|false|katie ichabod|2013-03-01 09:11:58.703238|6.00|industrial engineering +47|375|65775|4294967465|70.56|32.56|false|david robinson|2013-03-01 09:11:58.703238|7.88|linguistics +106|482|65624|4294967446|45.45|11.66|true|rachel laertes|2013-03-01 09:11:58.703119|58.02|debate +36|273|65739|4294967416|1.25|33.36|true|bob zipper|2013-03-01 09:11:58.703248|74.77|industrial engineering +92|335|65603|4294967296|80.96|18.48|false|ulysses nixon|2013-03-01 09:11:58.703198|45.63|opthamology +68|301|65579|4294967497|94.43|45.02|false|zach zipper|2013-03-01 09:11:58.703230|28.02|wind surfing +106|502|65695|4294967501|83.92|35.24|true|mike zipper|2013-03-01 09:11:58.703157|57.33|opthamology +122|396|65550|4294967350|60.02|32.13|true|sarah ovid|2013-03-01 09:11:58.703099|91.38|wind surfing +67|436|65541|4294967471|19.06|39.60|true|oscar king|2013-03-01 09:11:58.703125|14.94|opthamology +56|463|65587|4294967307|52.17|42.41|true|rachel brown|2013-03-01 09:11:58.703182|94.47|joggying +46|319|65683|4294967549|94.33|14.75|true|irene steinbeck|2013-03-01 09:11:58.703108|99.56|kindergarten +18|503|65750|4294967467|12.50|30.41|false|ulysses davidson|2013-03-01 09:11:58.703310|83.44|yard duty +43|473|65697|4294967457|79.97|11.35|false|david quirinius|2013-03-01 09:11:58.703206|50.01|undecided +120|413|65650|4294967543|48.25|10.47|false|sarah king|2013-03-01 09:11:58.703122|90.77|zync studies +91|448|65559|4294967320|90.35|6.28|true|gabriella ichabod|2013-03-01 09:11:58.703320|83.50|nap time +24|419|65755|4294967444|15.92|11.90|false|xavier davidson|2013-03-01 09:11:58.703208|38.39|yard duty +63|481|65591|4294967382|28.31|36.11|true|irene underhill|2013-03-01 09:11:58.703177|11.43|history +118|497|65738|4294967546|19.14|5.09|true|alice king|2013-03-01 09:11:58.703197|82.32|industrial engineering +25|507|65643|4294967312|52.53|6.06|false|katie van buren|2013-03-01 09:11:58.703323|93.11|opthamology +79|422|65691|4294967299|39.21|29.52|true|zach quirinius|2013-03-01 09:11:58.703136|38.23|philosophy +27|367|65675|4294967518|12.32|40.26|true|tom brown|2013-03-01 09:11:58.703104|87.36|mathematics +96|421|65692|4294967526|98.48|34.41|true|oscar falkner|2013-03-01 09:11:58.703214|54.76|zync studies +27|340|65677|4294967461|98.96|45.78|true|rachel carson|2013-03-01 09:11:58.703208|25.37|zync studies +3|469|65743|4294967428|10.66|39.84|false|victor zipper|2013-03-01 09:11:58.703181|26.60|mathematics +122|288|65695|4294967469|90.05|12.70|false|zach steinbeck|2013-03-01 09:11:58.703314|39.12|education +81|449|65726|4294967395|97.09|40.15|false|bob ovid|2013-03-01 09:11:58.703250|60.46|kindergarten +77|337|65766|4294967334|12.16|13.49|true|wendy quirinius|2013-03-01 09:11:58.703282|37.06|history +5|319|65611|4294967494|45.92|2.61|true|wendy nixon|2013-03-01 09:11:58.703209|25.92|nap time +8|469|65592|4294967535|17.79|48.89|false|yuri steinbeck|2013-03-01 09:11:58.703299|23.19|kindergarten +74|487|65563|4294967305|60.06|13.22|true|ulysses polk|2013-03-01 09:11:58.703222|38.23|yard duty +85|454|65620|4294967520|65.55|13.20|false|victor quirinius|2013-03-01 09:11:58.703152|6.85|history +104|448|65693|4294967459|80.92|36.70|false|rachel falkner|2013-03-01 09:11:58.703140|32.33|zync studies +114|279|65544|4294967383|6.67|19.87|false|xavier hernandez|2013-03-01 09:11:58.703324|48.84|geology +120|331|65539|4294967324|88.02|40.94|true|holly nixon|2013-03-01 09:11:58.703262|96.64|yard duty +84|326|65782|4294967362|17.87|38.67|true|victor ellison|2013-03-01 09:11:58.703226|34.31|joggying +45|408|65577|4294967461|59.43|36.13|false|ethan falkner|2013-03-01 09:11:58.703317|41.01|values clariffication +88|504|65652|4294967419|78.28|47.86|false|priscilla white|2013-03-01 09:11:58.703324|55.04|history +73|306|65659|4294967341|34.58|45.90|false|yuri white|2013-03-01 09:11:58.703201|75.91|nap time +97|360|65590|4294967324|68.96|49.52|false|alice miller|2013-03-01 09:11:58.703247|22.13|philosophy +89|300|65675|4294967384|49.77|12.43|true|jessica davidson|2013-03-01 09:11:58.703276|79.90|values clariffication +118|309|65578|4294967357|75.10|33.02|false|tom ellison|2013-03-01 09:11:58.703197|16.01|zync studies +34|324|65549|4294967307|17.16|38.94|false|quinn underhill|2013-03-01 09:11:58.703111|28.93|forestry +93|441|65549|4294967389|95.11|0.27|true|quinn davidson|2013-03-01 09:11:58.703278|13.30|joggying +117|323|65669|4294967316|90.25|41.90|false|alice falkner|2013-03-01 09:11:58.703221|54.25|study skills +118|374|65541|4294967528|6.72|38.04|false|priscilla ovid|2013-03-01 09:11:58.703304|9.04|undecided +120|298|65763|4294967513|3.33|21.11|false|oscar ichabod|2013-03-01 09:11:58.703094|86.43|education +100|354|65649|4294967358|7.54|35.36|true|zach zipper|2013-03-01 09:11:58.703174|79.51|history +37|379|65737|4294967314|88.17|9.21|true|alice hernandez|2013-03-01 09:11:58.703089|29.92|opthamology +115|502|65773|4294967522|37.59|0.02|true|yuri laertes|2013-03-01 09:11:58.703260|3.81|american history +73|324|65582|4294967330|59.68|32.25|false|jessica ovid|2013-03-01 09:11:58.703109|96.60|religion +51|484|65635|4294967500|2.18|25.75|true|oscar van buren|2013-03-01 09:11:58.703255|82.29|yard duty +16|445|65620|4294967517|21.61|0.86|true|mike van buren|2013-03-01 09:11:58.703110|8.16|opthamology +102|501|65710|4294967332|47.27|1.31|false|xavier underhill|2013-03-01 09:11:58.703094|57.11|geology +28|372|65578|4294967374|75.42|5.93|true|holly thompson|2013-03-01 09:11:58.703205|54.35|debate +12|372|65573|4294967345|94.31|35.23|false|calvin falkner|2013-03-01 09:11:58.703122|53.56|debate +19|492|65588|4294967445|19.06|14.83|false|tom ichabod|2013-03-01 09:11:58.703171|69.48|nap time +70|430|65539|4294967534|18.89|43.84|true|tom carson|2013-03-01 09:11:58.703182|21.93|joggying +33|321|65594|4294967495|97.71|3.40|false|fred young|2013-03-01 09:11:58.703288|60.57|zync studies +44|452|65645|4294967345|56.15|16.90|true|oscar johnson|2013-03-01 09:11:58.703257|66.76|industrial engineering +53|293|65778|4294967418|16.09|14.99|true|oscar johnson|2013-03-01 09:11:58.703235|89.51|geology +73|451|65599|4294967373|36.89|33.64|true|zach ichabod|2013-03-01 09:11:58.703315|4.93|opthamology +104|474|65773|4294967473|40.98|11.43|false|quinn garcia|2013-03-01 09:11:58.703167|76.46|values clariffication +31|356|65721|4294967481|1.08|3.03|true|rachel ovid|2013-03-01 09:11:58.703120|95.38|zync studies +23|306|65777|4294967489|13.99|21.69|true|oscar zipper|2013-03-01 09:11:58.703280|54.39|zync studies +93|342|65623|4294967405|99.67|44.90|true|ulysses underhill|2013-03-01 09:11:58.703083|31.22|biology +18|440|65773|4294967318|57.23|1.42|false|oscar xylophone|2013-03-01 09:11:58.703165|63.26|zync studies +72|489|65549|4294967424|82.56|13.88|false|bob ichabod|2013-03-01 09:11:58.703112|80.09|quiet hour +12|284|65666|4294967470|89.80|42.04|false|ulysses garcia|2013-03-01 09:11:58.703073|28.69|opthamology +0|312|65599|4294967519|78.21|45.53|false|alice xylophone|2013-03-01 09:11:58.703289|0.56|nap time +24|483|65572|4294967499|79.42|9.96|false|xavier xylophone|2013-03-01 09:11:58.703101|22.64|quiet hour +34|405|65719|4294967306|1.31|23.48|false|katie white|2013-03-01 09:11:58.703198|51.13|nap time +99|497|65656|4294967390|32.37|6.21|true|wendy polk|2013-03-01 09:11:58.703212|53.27|mathematics +83|493|65742|4294967352|76.33|28.36|true|ethan carson|2013-03-01 09:11:58.703269|43.84|philosophy +106|282|65688|4294967433|75.19|13.08|true|yuri brown|2013-03-01 09:11:58.703118|77.88|debate +81|305|65783|4294967443|39.01|33.02|true|bob king|2013-03-01 09:11:58.703114|77.40|chemistry +74|309|65662|4294967518|4.17|38.43|false|rachel thompson|2013-03-01 09:11:58.703243|76.11|undecided +63|364|65705|4294967490|73.68|4.96|true|wendy white|2013-03-01 09:11:58.703186|13.81|forestry +46|363|65735|4294967537|72.79|29.22|true|ulysses brown|2013-03-01 09:11:58.703271|61.16|joggying +84|323|65685|4294967477|61.86|14.91|false|ethan brown|2013-03-01 09:11:58.703256|38.71|biology +4|392|65665|4294967391|53.27|3.86|true|zach miller|2013-03-01 09:11:58.703296|43.66|undecided +94|474|65759|4294967317|57.08|31.36|false|zach brown|2013-03-01 09:11:58.703239|69.24|xylophone band +26|491|65683|4294967420|46.62|48.52|false|wendy laertes|2013-03-01 09:11:58.703178|97.21|values clariffication +35|488|65737|4294967502|62.52|3.15|true|xavier quirinius|2013-03-01 09:11:58.703096|42.64|linguistics +59|382|65762|4294967468|25.28|35.10|true|david robinson|2013-03-01 09:11:58.703126|5.49|mathematics +58|427|65597|4294967511|71.19|47.55|false|xavier ichabod|2013-03-01 09:11:58.703323|36.22|chemistry +18|428|65775|4294967436|74.19|48.08|true|irene xylophone|2013-03-01 09:11:58.703122|98.43|geology +69|489|65536|4294967404|33.52|17.99|false|oscar ichabod|2013-03-01 09:11:58.703247|32.68|topology +71|439|65618|4294967349|49.78|4.57|false|ethan hernandez|2013-03-01 09:11:58.703075|10.06|yard duty +60|475|65664|4294967299|44.43|25.02|false|irene laertes|2013-03-01 09:11:58.703172|55.82|quiet hour +35|280|65779|4294967322|1.87|16.04|false|luke ellison|2013-03-01 09:11:58.703180|11.87|religion +122|473|65629|4294967387|90.77|25.59|true|fred underhill|2013-03-01 09:11:58.703316|58.81|undecided +-1|423|65663|4294967380|0.79|21.33|false|bob laertes|2013-03-01 09:11:58.703278|94.16|debate +68|314|65770|4294967398|70.85|29.24|true|mike garcia|2013-03-01 09:11:58.703312|51.90|american history +77|328|65789|4294967489|81.32|19.12|false|fred ichabod|2013-03-01 09:11:58.703160|83.18|debate +60|342|65550|4294967306|90.38|45.69|false|victor brown|2013-03-01 09:11:58.703311|7.38|biology +53|422|65784|4294967450|56.04|43.76|true|calvin falkner|2013-03-01 09:11:58.703193|93.95|zync studies +103|504|65768|4294967354|53.93|16.42|true|bob davidson|2013-03-01 09:11:58.703141|78.25|kindergarten +8|272|65541|4294967325|63.90|11.20|true|oscar polk|2013-03-01 09:11:58.703136|27.89|debate +108|446|65733|4294967403|7.11|32.85|false|ethan brown|2013-03-01 09:11:58.703170|11.44|american history +42|315|65782|4294967369|4.46|11.63|false|bob garcia|2013-03-01 09:11:58.703292|30.24|industrial engineering +16|482|65736|4294967310|43.19|46.30|true|ethan garcia|2013-03-01 09:11:58.703243|28.90|wind surfing +28|454|65612|4294967480|65.02|43.00|false|ulysses polk|2013-03-01 09:11:58.703140|25.10|philosophy +58|482|65775|4294967417|68.04|19.41|false|wendy underhill|2013-03-01 09:11:58.703212|88.25|yard duty +88|437|65762|4294967385|76.71|13.83|false|david laertes|2013-03-01 09:11:58.703169|45.70|religion +83|265|65705|4294967392|19.28|5.42|true|quinn ellison|2013-03-01 09:11:58.703275|20.57|education +2|266|65551|4294967296|35.65|45.12|true|david young|2013-03-01 09:11:58.703184|73.93|education +91|415|65672|4294967316|59.45|20.80|true|mike hernandez|2013-03-01 09:11:58.703241|75.27|study skills +34|379|65750|4294967441|98.18|20.58|true|alice underhill|2013-03-01 09:11:58.703170|96.85|mathematics +86|451|65580|4294967451|8.71|47.68|true|ulysses polk|2013-03-01 09:11:58.703165|81.42|geology +46|266|65762|4294967305|2.97|19.56|false|calvin falkner|2013-03-01 09:11:58.703103|77.96|chemistry +81|338|65681|4294967519|50.66|16.10|false|katie ovid|2013-03-01 09:11:58.703259|61.30|wind surfing +17|441|65633|4294967460|89.15|21.11|true|priscilla johnson|2013-03-01 09:11:58.703139|28.49|education +112|312|65685|4294967395|33.76|21.38|true|wendy young|2013-03-01 09:11:58.703182|4.88|religion +44|270|65751|4294967301|67.48|37.12|false|oscar garcia|2013-03-01 09:11:58.703239|47.81|religion +37|411|65680|4294967353|2.92|29.66|true|ethan zipper|2013-03-01 09:11:58.703132|34.08|american history +95|329|65628|4294967396|61.70|20.75|true|david ovid|2013-03-01 09:11:58.703223|83.26|nap time +33|497|65612|4294967375|28.69|14.84|true|fred nixon|2013-03-01 09:11:58.703070|52.64|values clariffication +55|328|65703|4294967492|68.41|0.63|true|ulysses carson|2013-03-01 09:11:58.703282|37.18|geology +17|483|65713|4294967458|56.81|1.69|false|calvin xylophone|2013-03-01 09:11:58.703250|90.91|mathematics +61|510|65675|4294967391|88.07|13.44|false|ulysses young|2013-03-01 09:11:58.703281|24.19|joggying +53|279|65541|4294967441|77.97|14.72|false|xavier ellison|2013-03-01 09:11:58.703091|15.85|american history +114|304|65643|4294967457|54.75|46.53|false|ethan laertes|2013-03-01 09:11:58.703250|52.56|mathematics +61|405|65609|4294967301|16.48|48.50|false|mike falkner|2013-03-01 09:11:58.703159|83.82|wind surfing +93|433|65629|4294967439|39.83|8.56|false|katie king|2013-03-01 09:11:58.703125|72.90|values clariffication +6|348|65785|4294967326|57.37|33.90|true|ulysses underhill|2013-03-01 09:11:58.703226|68.30|opthamology +39|492|65701|4294967458|23.96|19.65|true|fred polk|2013-03-01 09:11:58.703262|1.81|xylophone band +74|256|65778|4294967487|74.15|25.49|true|david davidson|2013-03-01 09:11:58.703151|95.69|yard duty +99|435|65546|4294967535|22.85|3.12|false|tom young|2013-03-01 09:11:58.703111|91.13|history +106|441|65771|4294967386|83.93|28.44|false|xavier allen|2013-03-01 09:11:58.703226|70.88|xylophone band +124|392|65711|4294967498|15.37|18.83|false|irene garcia|2013-03-01 09:11:58.703158|71.89|industrial engineering +9|336|65658|4294967412|43.17|18.38|false|katie ichabod|2013-03-01 09:11:58.703091|68.85|mathematics +3|395|65747|4294967313|57.25|3.17|true|wendy garcia|2013-03-01 09:11:58.703074|58.47|xylophone band +123|381|65780|4294967388|5.44|35.16|true|tom carson|2013-03-01 09:11:58.703220|10.95|quiet hour +58|256|65733|4294967501|70.53|23.07|true|zach white|2013-03-01 09:11:58.703090|50.99|history +106|284|65619|4294967527|92.96|0.86|true|mike nixon|2013-03-01 09:11:58.703084|32.64|xylophone band +58|289|65604|4294967313|77.36|10.49|false|wendy falkner|2013-03-01 09:11:58.703075|23.89|kindergarten +6|342|65602|4294967365|85.49|24.46|false|zach steinbeck|2013-03-01 09:11:58.703111|85.94|study skills +89|354|65593|4294967462|97.51|21.01|true|ethan zipper|2013-03-01 09:11:58.703201|35.15|forestry +44|364|65614|4294967413|4.35|9.19|false|ethan king|2013-03-01 09:11:58.703219|1.42|nap time +43|436|65678|4294967424|50.92|3.40|true|luke van buren|2013-03-01 09:11:58.703093|33.90|values clariffication +27|335|65617|4294967381|64.87|25.03|false|david allen|2013-03-01 09:11:58.703140|64.90|nap time +44|390|65693|4294967504|1.29|28.40|false|bob davidson|2013-03-01 09:11:58.703127|84.88|history +42|315|65713|4294967544|88.48|46.90|true|ulysses underhill|2013-03-01 09:11:58.703259|39.47|education +54|327|65657|4294967334|42.42|2.89|true|jessica zipper|2013-03-01 09:11:58.703182|65.01|linguistics +68|501|65606|4294967445|5.08|39.85|true|alice robinson|2013-03-01 09:11:58.703206|87.16|topology +37|293|65762|4294967316|67.38|41.20|true|zach brown|2013-03-01 09:11:58.703155|21.70|forestry +10|471|65563|4294967316|37.72|45.06|false|tom quirinius|2013-03-01 09:11:58.703248|14.36|quiet hour +42|353|65672|4294967465|70.04|27.62|false|xavier garcia|2013-03-01 09:11:58.703153|13.28|forestry +15|271|65647|4294967392|45.06|35.36|true|quinn young|2013-03-01 09:11:58.703209|81.95|kindergarten +71|332|65717|4294967337|10.73|34.17|true|gabriella ichabod|2013-03-01 09:11:58.703288|80.05|linguistics +92|418|65706|4294967367|2.07|16.35|false|yuri hernandez|2013-03-01 09:11:58.703205|85.13|joggying +101|326|65586|4294967435|30.81|4.27|true|rachel brown|2013-03-01 09:11:58.703179|18.65|undecided +76|422|65552|4294967325|26.73|48.00|false|mike zipper|2013-03-01 09:11:58.703137|18.11|industrial engineering +119|373|65704|4294967459|27.07|27.54|false|mike polk|2013-03-01 09:11:58.703202|54.76|biology +70|283|65620|4294967355|9.13|3.42|false|zach falkner|2013-03-01 09:11:58.703252|96.95|debate +117|267|65637|4294967544|93.64|11.69|false|david brown|2013-03-01 09:11:58.703224|26.78|topology +88|328|65547|4294967517|70.35|15.13|true|alice davidson|2013-03-01 09:11:58.703262|17.71|undecided +22|447|65757|4294967539|8.79|6.52|true|bob king|2013-03-01 09:11:58.703325|9.24|joggying +-1|300|65663|4294967343|71.26|34.62|true|calvin ovid|2013-03-01 09:11:58.703262|78.56|study skills +92|297|65704|4294967403|84.83|0.21|false|gabriella brown|2013-03-01 09:11:58.703089|16.22|wind surfing +25|446|65789|4294967501|5.54|49.56|false|jessica garcia|2013-03-01 09:11:58.703286|92.74|linguistics +65|274|65619|4294967389|12.45|41.33|true|mike polk|2013-03-01 09:11:58.703219|34.72|nap time +111|287|65587|4294967421|48.22|12.74|false|yuri johnson|2013-03-01 09:11:58.703227|64.06|values clariffication +64|371|65685|4294967320|15.63|39.84|false|ethan brown|2013-03-01 09:11:58.703132|43.48|opthamology +72|421|65764|4294967458|88.80|39.49|true|rachel falkner|2013-03-01 09:11:58.703227|88.69|topology +108|301|65536|4294967357|90.05|17.59|true|ethan johnson|2013-03-01 09:11:58.703271|75.70|undecided +-2|461|65648|4294967425|58.52|24.85|false|rachel thompson|2013-03-01 09:11:58.703318|85.62|zync studies +113|395|65666|4294967447|26.49|13.44|true|tom steinbeck|2013-03-01 09:11:58.703247|83.95|industrial engineering +106|415|65644|4294967399|63.35|18.38|false|xavier davidson|2013-03-01 09:11:58.703234|44.10|study skills +117|483|65627|4294967547|21.18|49.46|true|priscilla ichabod|2013-03-01 09:11:58.703184|61.89|philosophy +44|460|65693|4294967423|58.00|23.77|false|quinn zipper|2013-03-01 09:11:58.703165|8.38|kindergarten +71|324|65681|4294967388|47.59|33.67|false|nick ichabod|2013-03-01 09:11:58.703106|71.17|xylophone band +90|269|65648|4294967392|42.31|11.27|true|holly king|2013-03-01 09:11:58.703196|0.08|american history +22|264|65537|4294967419|8.07|10.71|false|david xylophone|2013-03-01 09:11:58.703136|11.87|undecided +51|447|65791|4294967354|28.95|44.27|false|luke davidson|2013-03-01 09:11:58.703292|4.24|chemistry +6|397|65660|4294967512|0.27|24.95|false|nick young|2013-03-01 09:11:58.703156|62.42|industrial engineering +122|392|65619|4294967527|20.81|27.27|false|nick underhill|2013-03-01 09:11:58.703305|18.68|education +43|461|65686|4294967544|20.82|30.99|false|holly hernandez|2013-03-01 09:11:58.703286|98.68|history +21|280|65716|4294967393|48.08|29.62|true|gabriella ellison|2013-03-01 09:11:58.703264|85.93|american history +10|453|65745|4294967397|89.01|24.03|true|nick ellison|2013-03-01 09:11:58.703108|83.13|topology +56|392|65586|4294967410|48.15|29.76|true|alice nixon|2013-03-01 09:11:58.703223|94.25|american history +95|415|65560|4294967444|4.71|17.29|false|quinn laertes|2013-03-01 09:11:58.703267|92.59|xylophone band +13|465|65713|4294967306|26.76|6.56|true|yuri polk|2013-03-01 09:11:58.703169|47.77|american history +34|425|65660|4294967371|58.43|15.54|true|irene garcia|2013-03-01 09:11:58.703172|28.05|forestry +59|496|65576|4294967331|15.75|28.68|false|tom king|2013-03-01 09:11:58.703215|66.55|opthamology +-1|433|65581|4294967299|86.92|23.15|false|yuri ellison|2013-03-01 09:11:58.703098|21.29|history +13|260|65699|4294967496|41.87|9.26|false|sarah king|2013-03-01 09:11:58.703128|84.79|study skills +45|298|65747|4294967434|15.15|31.01|false|priscilla polk|2013-03-01 09:11:58.703113|21.80|yard duty +31|366|65557|4294967458|41.71|1.98|false|sarah miller|2013-03-01 09:11:58.703216|69.92|linguistics +63|464|65596|4294967327|44.57|0.47|true|holly allen|2013-03-01 09:11:58.703200|12.72|nap time +5|357|65736|4294967351|0.60|15.38|false|rachel ovid|2013-03-01 09:11:58.703246|86.51|xylophone band +16|483|65658|4294967350|38.88|2.89|false|oscar robinson|2013-03-01 09:11:58.703225|66.53|topology +90|487|65695|4294967313|57.93|15.18|false|yuri quirinius|2013-03-01 09:11:58.703320|77.09|education +117|302|65615|4294967382|21.32|31.46|false|ethan polk|2013-03-01 09:11:58.703274|10.79|kindergarten +75|504|65564|4294967534|7.56|19.79|false|mike steinbeck|2013-03-01 09:11:58.703148|26.97|xylophone band +86|257|65748|4294967427|32.52|26.87|true|ulysses young|2013-03-01 09:11:58.703192|29.49|values clariffication +112|348|65643|4294967388|30.61|21.27|false|oscar polk|2013-03-01 09:11:58.703076|22.05|yard duty +91|307|65544|4294967344|4.57|0.60|false|rachel robinson|2013-03-01 09:11:58.703227|79.21|undecided +49|407|65639|4294967362|27.66|34.06|true|yuri garcia|2013-03-01 09:11:58.703163|97.48|mathematics +95|459|65760|4294967524|85.74|49.16|false|mike ellison|2013-03-01 09:11:58.703074|48.20|nap time +76|258|65724|4294967365|70.00|34.95|false|irene quirinius|2013-03-01 09:11:58.703212|10.52|geology +17|406|65585|4294967401|0.43|29.19|true|priscilla young|2013-03-01 09:11:58.703235|33.69|religion +90|273|65548|4294967366|62.90|12.30|true|alice polk|2013-03-01 09:11:58.703074|53.52|study skills +41|301|65706|4294967501|51.84|7.02|true|ethan quirinius|2013-03-01 09:11:58.703265|55.94|study skills +38|376|65783|4294967507|10.19|38.28|false|tom quirinius|2013-03-01 09:11:58.703185|52.43|kindergarten +50|317|65709|4294967379|68.50|7.36|true|victor nixon|2013-03-01 09:11:58.703162|67.69|forestry +33|265|65713|4294967529|86.69|16.40|true|holly thompson|2013-03-01 09:11:58.703189|72.37|history +89|476|65728|4294967549|62.30|14.07|false|alice quirinius|2013-03-01 09:11:58.703195|55.37|zync studies +24|339|65724|4294967328|64.95|37.02|false|rachel robinson|2013-03-01 09:11:58.703182|75.06|wind surfing +124|421|65743|4294967434|3.62|21.02|true|holly polk|2013-03-01 09:11:58.703173|62.00|education +85|463|65542|4294967348|3.86|46.36|true|ethan quirinius|2013-03-01 09:11:58.703287|42.85|biology +66|264|65600|4294967388|28.71|43.96|false|priscilla nixon|2013-03-01 09:11:58.703169|92.92|yard duty +112|373|65680|4294967449|90.28|49.34|false|sarah falkner|2013-03-01 09:11:58.703085|1.01|geology +28|480|65637|4294967328|76.69|33.76|false|oscar ichabod|2013-03-01 09:11:58.703323|93.41|kindergarten +101|476|65631|4294967538|29.78|23.61|false|irene nixon|2013-03-01 09:11:58.703270|33.72|values clariffication +96|435|65658|4294967523|6.74|28.52|false|yuri falkner|2013-03-01 09:11:58.703099|11.69|joggying +54|478|65615|4294967344|9.74|21.52|false|jessica van buren|2013-03-01 09:11:58.703284|99.88|philosophy +89|354|65777|4294967509|71.68|46.03|true|ulysses polk|2013-03-01 09:11:58.703324|82.62|wind surfing +16|436|65757|4294967379|7.06|28.15|true|rachel zipper|2013-03-01 09:11:58.703267|12.22|forestry +78|275|65596|4294967299|21.70|49.32|true|calvin xylophone|2013-03-01 09:11:58.703166|85.74|kindergarten +53|489|65752|4294967329|83.27|27.20|true|holly ichabod|2013-03-01 09:11:58.703079|47.82|industrial engineering +111|288|65770|4294967544|80.84|16.79|true|mike van buren|2013-03-01 09:11:58.703220|46.71|topology +85|334|65610|4294967373|2.96|2.36|false|ulysses miller|2013-03-01 09:11:58.703310|9.24|xylophone band +71|418|65598|4294967439|80.30|13.66|true|bob garcia|2013-03-01 09:11:58.703104|63.30|values clariffication +40|299|65712|4294967352|25.37|19.72|false|ethan miller|2013-03-01 09:11:58.703207|53.65|opthamology +32|458|65783|4294967309|45.42|44.83|false|jessica underhill|2013-03-01 09:11:58.703206|46.34|undecided +5|329|65789|4294967502|56.10|47.22|true|alice robinson|2013-03-01 09:11:58.703264|52.49|quiet hour +34|450|65607|4294967328|18.20|18.79|true|victor johnson|2013-03-01 09:11:58.703233|71.75|topology +58|359|65675|4294967486|3.61|19.20|true|katie ellison|2013-03-01 09:11:58.703243|35.78|values clariffication +-2|288|65658|4294967383|53.78|19.92|false|holly nixon|2013-03-01 09:11:58.703224|42.93|industrial engineering +0|392|65634|4294967299|65.70|48.98|true|luke robinson|2013-03-01 09:11:58.703263|14.40|geology +3|277|65788|4294967403|58.08|20.55|false|xavier ovid|2013-03-01 09:11:58.703281|62.11|zync studies +29|331|65539|4294967420|73.18|28.96|true|ethan brown|2013-03-01 09:11:58.703094|58.85|zync studies +57|420|65771|4294967508|34.21|16.12|false|calvin van buren|2013-03-01 09:11:58.703243|6.15|joggying +41|266|65774|4294967365|41.68|36.86|false|victor van buren|2013-03-01 09:11:58.703163|45.97|industrial engineering +116|487|65659|4294967309|77.66|35.15|true|sarah johnson|2013-03-01 09:11:58.703294|95.71|opthamology +54|481|65755|4294967429|28.50|37.76|false|victor xylophone|2013-03-01 09:11:58.703318|64.00|xylophone band +60|301|65746|4294967381|4.41|12.30|true|wendy garcia|2013-03-01 09:11:58.703183|36.74|education +104|266|65704|4294967413|59.16|34.84|true|jessica ichabod|2013-03-01 09:11:58.703172|93.21|forestry +105|345|65582|4294967478|12.42|15.27|false|wendy miller|2013-03-01 09:11:58.703287|0.89|philosophy +97|503|65690|4294967463|77.57|27.54|true|priscilla brown|2013-03-01 09:11:58.703110|51.82|study skills +18|286|65621|4294967494|64.77|37.32|true|mike ichabod|2013-03-01 09:11:58.703285|95.14|forestry +1|446|65683|4294967500|85.49|33.18|true|oscar hernandez|2013-03-01 09:11:58.703283|17.62|undecided +12|298|65653|4294967501|42.56|4.25|true|irene nixon|2013-03-01 09:11:58.703265|52.23|nap time +5|475|65644|4294967470|70.06|18.29|true|gabriella van buren|2013-03-01 09:11:58.703088|1.97|american history +54|321|65724|4294967486|47.69|49.73|true|david ellison|2013-03-01 09:11:58.703235|50.96|religion +88|331|65682|4294967412|73.32|17.76|true|gabriella thompson|2013-03-01 09:11:58.703283|67.17|values clariffication +56|310|65556|4294967518|38.85|34.53|false|irene allen|2013-03-01 09:11:58.703217|50.42|education +71|306|65664|4294967541|34.97|44.40|false|victor van buren|2013-03-01 09:11:58.703185|38.42|religion +114|402|65622|4294967542|59.87|24.61|true|ethan polk|2013-03-01 09:11:58.703265|93.70|yard duty +43|440|65693|4294967409|38.05|7.71|true|luke ovid|2013-03-01 09:11:58.703133|69.32|xylophone band +26|296|65677|4294967419|66.89|49.04|true|sarah robinson|2013-03-01 09:11:58.703277|5.06|wind surfing +68|472|65628|4294967512|8.67|19.47|false|tom ovid|2013-03-01 09:11:58.703116|74.31|linguistics +53|373|65691|4294967371|79.75|32.39|false|irene ovid|2013-03-01 09:11:58.703124|69.80|nap time +18|509|65638|4294967455|62.92|14.62|false|victor laertes|2013-03-01 09:11:58.703075|42.47|values clariffication +53|482|65736|4294967394|74.59|36.84|true|mike young|2013-03-01 09:11:58.703301|48.54|joggying +103|494|65760|4294967301|59.21|8.72|false|ethan laertes|2013-03-01 09:11:58.703312|95.45|nap time +80|277|65671|4294967370|97.26|7.14|false|sarah ichabod|2013-03-01 09:11:58.703297|36.34|industrial engineering +28|380|65714|4294967514|0.28|48.71|false|ethan ellison|2013-03-01 09:11:58.703118|47.42|chemistry +1|414|65716|4294967551|12.19|36.57|true|nick polk|2013-03-01 09:11:58.703188|33.40|xylophone band +18|417|65766|4294967499|37.78|40.96|false|ethan nixon|2013-03-01 09:11:58.703157|66.34|american history +52|511|65658|4294967432|7.96|14.33|false|priscilla carson|2013-03-01 09:11:58.703188|46.61|geology +13|374|65553|4294967448|62.20|10.15|false|jessica carson|2013-03-01 09:11:58.703185|25.31|debate +19|462|65732|4294967478|59.70|24.13|false|calvin underhill|2013-03-01 09:11:58.703074|91.15|debate +87|325|65730|4294967516|13.15|4.44|false|wendy ichabod|2013-03-01 09:11:58.703242|67.81|joggying +99|303|65566|4294967353|98.57|40.50|true|ulysses ichabod|2013-03-01 09:11:58.703104|7.80|wind surfing +87|341|65733|4294967412|18.93|16.13|true|katie zipper|2013-03-01 09:11:58.703190|93.45|american history +83|311|65653|4294967419|61.21|13.04|false|xavier polk|2013-03-01 09:11:58.703310|55.12|study skills +65|458|65554|4294967329|69.96|33.38|false|calvin ovid|2013-03-01 09:11:58.703237|0.24|nap time +123|278|65573|4294967496|86.22|39.74|true|zach underhill|2013-03-01 09:11:58.703078|75.99|history +19|463|65767|4294967437|48.52|26.71|true|quinn underhill|2013-03-01 09:11:58.703177|95.57|forestry +108|466|65600|4294967458|90.73|8.95|false|xavier brown|2013-03-01 09:11:58.703235|75.18|biology +53|435|65687|4294967451|76.70|4.58|false|wendy xylophone|2013-03-01 09:11:58.703243|11.26|nap time +54|346|65751|4294967398|98.31|34.54|false|holly polk|2013-03-01 09:11:58.703195|78.75|history +88|334|65583|4294967468|5.88|45.10|false|irene johnson|2013-03-01 09:11:58.703166|28.07|kindergarten +52|365|65691|4294967551|99.15|21.81|false|tom robinson|2013-03-01 09:11:58.703135|76.98|values clariffication +28|259|65544|4294967398|54.31|25.80|false|yuri quirinius|2013-03-01 09:11:58.703168|32.03|values clariffication +26|347|65734|4294967499|5.24|30.92|true|irene ovid|2013-03-01 09:11:58.703192|80.48|debate +108|280|65765|4294967434|4.79|30.35|false|irene brown|2013-03-01 09:11:58.703229|88.52|american history +2|291|65789|4294967464|16.99|2.07|false|bob falkner|2013-03-01 09:11:58.703139|43.53|industrial engineering +43|476|65570|4294967398|1.12|10.52|true|yuri ellison|2013-03-01 09:11:58.703244|30.98|forestry +114|433|65572|4294967463|43.02|20.30|false|zach carson|2013-03-01 09:11:58.703316|30.86|opthamology +119|278|65773|4294967488|31.15|23.18|true|wendy xylophone|2013-03-01 09:11:58.703312|18.20|xylophone band +108|263|65787|4294967297|12.44|29.46|true|rachel quirinius|2013-03-01 09:11:58.703073|21.76|industrial engineering +37|434|65638|4294967335|55.18|45.54|false|gabriella white|2013-03-01 09:11:58.703196|19.13|zync studies +124|311|65670|4294967420|87.94|3.07|false|wendy king|2013-03-01 09:11:58.703308|61.54|values clariffication +104|331|65757|4294967330|30.71|47.91|false|katie ichabod|2013-03-01 09:11:58.703197|34.84|study skills +25|438|65782|4294967525|29.40|45.71|true|fred quirinius|2013-03-01 09:11:58.703283|81.90|nap time +71|347|65584|4294967549|99.65|21.14|false|jessica falkner|2013-03-01 09:11:58.703286|65.78|philosophy +51|345|65566|4294967519|70.38|31.33|true|wendy laertes|2013-03-01 09:11:58.703163|21.34|chemistry +2|333|65697|4294967456|39.90|16.15|false|yuri johnson|2013-03-01 09:11:58.703272|77.35|study skills +114|425|65772|4294967307|55.10|34.83|true|luke robinson|2013-03-01 09:11:58.703166|82.33|religion +109|344|65595|4294967409|42.24|5.35|false|irene polk|2013-03-01 09:11:58.703089|8.76|education +95|432|65711|4294967378|39.87|30.78|false|wendy allen|2013-03-01 09:11:58.703172|65.17|american history +121|342|65565|4294967528|52.85|20.30|true|yuri allen|2013-03-01 09:11:58.703298|8.80|undecided +22|361|65648|4294967546|91.88|17.19|false|mike white|2013-03-01 09:11:58.703167|17.66|quiet hour +81|283|65702|4294967424|24.52|6.81|false|zach king|2013-03-01 09:11:58.703136|68.04|religion +15|297|65728|4294967362|18.50|24.18|false|katie falkner|2013-03-01 09:11:58.703189|36.96|education +77|441|65727|4294967391|43.13|17.47|false|rachel young|2013-03-01 09:11:58.703313|49.19|education +24|266|65747|4294967351|32.75|36.09|true|ethan allen|2013-03-01 09:11:58.703273|52.77|zync studies +89|313|65550|4294967361|41.89|33.02|true|david thompson|2013-03-01 09:11:58.703121|96.90|biology +101|317|65756|4294967505|4.80|41.36|true|luke laertes|2013-03-01 09:11:58.703106|11.81|industrial engineering +37|472|65545|4294967351|83.54|16.90|true|mike young|2013-03-01 09:11:58.703196|34.65|nap time +50|402|65781|4294967410|65.38|28.10|false|gabriella laertes|2013-03-01 09:11:58.703126|70.59|philosophy +105|435|65637|4294967534|80.23|13.30|true|calvin carson|2013-03-01 09:11:58.703203|29.34|forestry +33|258|65762|4294967417|15.22|13.23|false|calvin steinbeck|2013-03-01 09:11:58.703322|87.50|nap time +118|486|65651|4294967472|32.23|46.39|false|fred steinbeck|2013-03-01 09:11:58.703142|24.25|mathematics +47|306|65636|4294967524|54.10|30.78|false|ulysses xylophone|2013-03-01 09:11:58.703309|86.29|mathematics +13|469|65661|4294967404|99.92|18.34|true|irene falkner|2013-03-01 09:11:58.703244|8.06|undecided +8|267|65703|4294967473|75.29|9.81|false|xavier white|2013-03-01 09:11:58.703233|40.81|nap time +18|263|65582|4294967500|78.64|36.05|false|gabriella steinbeck|2013-03-01 09:11:58.703208|1.23|industrial engineering +122|354|65709|4294967334|74.45|44.04|false|rachel allen|2013-03-01 09:11:58.703075|5.64|yard duty +43|340|65669|4294967500|23.19|20.58|true|katie nixon|2013-03-01 09:11:58.703080|1.76|biology +87|361|65662|4294967331|97.56|44.66|false|david underhill|2013-03-01 09:11:58.703303|88.64|opthamology +36|429|65723|4294967296|67.45|19.63|false|nick quirinius|2013-03-01 09:11:58.703297|39.90|biology +83|353|65538|4294967339|0.08|23.91|true|holly thompson|2013-03-01 09:11:58.703157|30.27|quiet hour +60|421|65774|4294967400|5.62|2.43|true|quinn thompson|2013-03-01 09:11:58.703128|45.74|study skills +42|323|65629|4294967324|8.45|30.67|true|luke ichabod|2013-03-01 09:11:58.703241|19.33|undecided +103|310|65603|4294967475|44.10|16.79|false|wendy ellison|2013-03-01 09:11:58.703154|34.79|mathematics +90|414|65702|4294967337|66.36|49.79|false|gabriella ichabod|2013-03-01 09:11:58.703171|37.60|biology +28|443|65635|4294967426|97.68|31.45|false|wendy falkner|2013-03-01 09:11:58.703186|64.99|yard duty +53|467|65718|4294967355|11.15|34.81|false|luke johnson|2013-03-01 09:11:58.703252|84.35|forestry +120|294|65590|4294967443|90.07|21.77|false|jessica nixon|2013-03-01 09:11:58.703086|13.51|education +44|260|65727|4294967453|60.53|19.03|true|oscar thompson|2013-03-01 09:11:58.703150|88.11|xylophone band +28|418|65756|4294967451|27.12|34.49|false|oscar laertes|2013-03-01 09:11:58.703206|63.51|biology +5|450|65594|4294967449|96.62|41.56|true|jessica white|2013-03-01 09:11:58.703323|65.61|biology +60|400|65698|4294967299|41.34|36.56|false|oscar thompson|2013-03-01 09:11:58.703073|79.91|xylophone band +0|314|65654|4294967473|12.85|35.01|false|xavier ellison|2013-03-01 09:11:58.703189|37.74|topology +31|426|65789|4294967526|58.13|15.09|false|tom zipper|2013-03-01 09:11:58.703258|89.00|american history +95|300|65568|4294967520|39.82|47.72|true|oscar zipper|2013-03-01 09:11:58.703285|58.66|quiet hour +122|384|65578|4294967358|8.45|49.21|true|quinn steinbeck|2013-03-01 09:11:58.703148|58.78|education +86|330|65676|4294967480|88.47|17.33|false|nick falkner|2013-03-01 09:11:58.703202|58.12|linguistics +71|276|65584|4294967431|8.07|20.91|true|bob brown|2013-03-01 09:11:58.703265|6.88|joggying +54|463|65701|4294967313|43.31|23.45|false|tom laertes|2013-03-01 09:11:58.703092|36.84|geology +112|372|65722|4294967529|41.44|20.22|false|irene ichabod|2013-03-01 09:11:58.703111|38.82|linguistics +65|323|65739|4294967424|4.47|25.51|false|alice johnson|2013-03-01 09:11:58.703294|92.40|forestry +39|368|65590|4294967420|27.72|30.55|false|katie brown|2013-03-01 09:11:58.703182|42.53|zync studies +25|284|65753|4294967543|15.26|36.93|false|gabriella brown|2013-03-01 09:11:58.703107|86.97|wind surfing +55|325|65594|4294967337|7.98|2.82|true|bob polk|2013-03-01 09:11:58.703283|35.28|zync studies +63|458|65537|4294967463|21.94|49.71|true|fred van buren|2013-03-01 09:11:58.703278|99.34|wind surfing +61|300|65588|4294967412|75.73|41.75|true|zach brown|2013-03-01 09:11:58.703310|75.87|religion +47|328|65784|4294967411|94.08|2.79|false|nick johnson|2013-03-01 09:11:58.703214|31.35|linguistics +4|509|65776|4294967432|78.26|35.02|false|mike king|2013-03-01 09:11:58.703231|18.70|undecided +86|425|65626|4294967374|87.40|34.90|true|oscar underhill|2013-03-01 09:11:58.703276|63.54|education +123|499|65623|4294967521|43.37|4.98|true|jessica young|2013-03-01 09:11:58.703227|97.20|mathematics +16|380|65755|4294967349|56.68|26.55|false|priscilla carson|2013-03-01 09:11:58.703217|76.75|undecided +86|391|65620|4294967337|34.73|4.16|false|katie white|2013-03-01 09:11:58.703109|81.28|history +46|463|65622|4294967479|23.44|16.92|true|ethan polk|2013-03-01 09:11:58.703273|74.31|chemistry +79|486|65694|4294967305|10.25|9.64|false|david young|2013-03-01 09:11:58.703266|58.23|topology +57|456|65606|4294967422|72.56|30.28|true|victor johnson|2013-03-01 09:11:58.703222|55.31|kindergarten +92|306|65657|4294967337|50.26|46.88|false|wendy brown|2013-03-01 09:11:58.703124|37.39|history +36|350|65717|4294967481|92.98|11.91|true|gabriella hernandez|2013-03-01 09:11:58.703182|1.23|yard duty +60|459|65655|4294967535|36.95|41.86|true|holly johnson|2013-03-01 09:11:58.703301|77.41|linguistics +26|393|65561|4294967304|90.69|6.61|true|calvin white|2013-03-01 09:11:58.703266|47.71|geology +106|370|65625|4294967333|3.00|10.38|true|victor polk|2013-03-01 09:11:58.703112|79.65|undecided +62|427|65787|4294967323|86.93|12.64|false|irene garcia|2013-03-01 09:11:58.703215|18.78|religion +48|438|65575|4294967376|25.42|46.03|false|calvin xylophone|2013-03-01 09:11:58.703158|83.40|topology +101|327|65706|4294967340|71.54|11.48|false|gabriella ellison|2013-03-01 09:11:58.703321|3.91|nap time +9|350|65704|4294967355|21.23|12.66|true|tom miller|2013-03-01 09:11:58.703210|37.12|industrial engineering +83|336|65672|4294967347|9.71|8.05|false|priscilla quirinius|2013-03-01 09:11:58.703174|58.10|debate +108|476|65587|4294967306|2.96|34.11|false|rachel brown|2013-03-01 09:11:58.703130|5.83|quiet hour +54|341|65756|4294967522|1.08|17.63|true|david davidson|2013-03-01 09:11:58.703317|1.45|religion +48|459|65777|4294967312|76.72|2.75|false|wendy garcia|2013-03-01 09:11:58.703144|7.04|kindergarten +-3|438|65618|4294967398|62.39|4.62|false|victor xylophone|2013-03-01 09:11:58.703135|88.38|values clariffication +105|376|65602|4294967472|10.67|49.84|true|bob laertes|2013-03-01 09:11:58.703142|47.16|education +15|433|65691|4294967353|49.12|14.17|false|zach brown|2013-03-01 09:11:58.703155|6.93|kindergarten +117|276|65581|4294967457|69.80|33.64|true|gabriella van buren|2013-03-01 09:11:58.703290|56.59|industrial engineering +112|444|65721|4294967401|47.88|40.91|true|victor king|2013-03-01 09:11:58.703253|55.75|industrial engineering +71|260|65589|4294967329|2.35|6.98|true|ethan polk|2013-03-01 09:11:58.703268|94.73|geology +7|486|65773|4294967390|58.86|49.46|false|irene quirinius|2013-03-01 09:11:58.703273|30.49|quiet hour +14|474|65558|4294967538|74.62|23.78|true|quinn king|2013-03-01 09:11:58.703107|16.26|linguistics +7|343|65559|4294967371|48.01|48.80|true|zach brown|2013-03-01 09:11:58.703245|32.30|study skills +-2|304|65629|4294967386|84.38|33.49|false|zach garcia|2013-03-01 09:11:58.703264|56.99|chemistry +72|503|65727|4294967376|79.99|27.39|false|wendy laertes|2013-03-01 09:11:58.703274|88.83|zync studies +32|348|65747|4294967514|37.85|45.09|true|sarah white|2013-03-01 09:11:58.703309|11.16|mathematics +103|343|65773|4294967485|46.80|27.89|false|fred young|2013-03-01 09:11:58.703230|53.09|undecided +24|329|65561|4294967526|52.87|15.98|false|fred van buren|2013-03-01 09:11:58.703178|32.86|kindergarten +27|405|65536|4294967508|82.24|29.41|true|oscar ovid|2013-03-01 09:11:58.703166|16.85|biology +3|308|65757|4294967430|49.28|38.04|false|nick zipper|2013-03-01 09:11:58.703132|1.86|kindergarten +72|430|65763|4294967324|99.91|11.46|false|david hernandez|2013-03-01 09:11:58.703294|43.80|biology +107|271|65601|4294967456|8.57|1.30|false|xavier king|2013-03-01 09:11:58.703315|48.16|values clariffication +85|283|65746|4294967384|11.68|47.37|false|katie polk|2013-03-01 09:11:58.703311|93.21|xylophone band +49|388|65574|4294967407|27.63|17.03|false|bob xylophone|2013-03-01 09:11:58.703307|31.28|joggying +1|472|65775|4294967340|74.52|15.51|false|victor hernandez|2013-03-01 09:11:58.703077|66.68|values clariffication +89|278|65570|4294967466|55.63|24.53|true|ethan underhill|2013-03-01 09:11:58.703218|18.20|values clariffication +28|294|65756|4294967487|76.74|24.59|true|tom ellison|2013-03-01 09:11:58.703147|70.00|debate +74|504|65766|4294967520|89.93|41.54|false|alice zipper|2013-03-01 09:11:58.703134|98.90|history +42|342|65628|4294967436|9.48|24.35|false|victor davidson|2013-03-01 09:11:58.703236|37.80|religion +82|324|65789|4294967492|14.92|45.29|false|tom johnson|2013-03-01 09:11:58.703179|20.44|study skills +24|434|65788|4294967389|76.05|15.09|false|ulysses thompson|2013-03-01 09:11:58.703117|21.81|topology +33|285|65689|4294967355|97.83|41.08|true|nick steinbeck|2013-03-01 09:11:58.703178|9.12|biology +51|334|65670|4294967369|70.24|29.11|false|priscilla brown|2013-03-01 09:11:58.703269|92.97|geology +90|509|65602|4294967415|7.96|36.62|false|holly white|2013-03-01 09:11:58.703195|86.23|values clariffication +83|279|65754|4294967435|5.40|33.52|false|bob garcia|2013-03-01 09:11:58.703311|54.35|forestry +124|495|65549|4294967471|99.21|44.80|true|jessica davidson|2013-03-01 09:11:58.703130|64.91|history +120|445|65670|4294967344|98.23|47.82|false|tom ellison|2013-03-01 09:11:58.703085|5.37|education +14|273|65779|4294967474|92.05|33.36|false|calvin steinbeck|2013-03-01 09:11:58.703287|45.61|linguistics +15|351|65601|4294967459|5.67|30.66|true|victor white|2013-03-01 09:11:58.703162|37.93|kindergarten +63|422|65690|4294967550|8.42|28.42|true|oscar laertes|2013-03-01 09:11:58.703144|3.43|values clariffication +2|477|65571|4294967463|79.21|18.20|true|mike garcia|2013-03-01 09:11:58.703195|82.50|mathematics +46|386|65790|4294967507|52.73|9.27|true|priscilla ovid|2013-03-01 09:11:58.703274|84.10|undecided +28|427|65559|4294967370|39.03|42.02|true|alice carson|2013-03-01 09:11:58.703226|56.06|chemistry +101|282|65738|4294967432|93.61|4.53|true|calvin falkner|2013-03-01 09:11:58.703198|95.10|xylophone band +46|410|65721|4294967362|80.30|17.03|false|bob ellison|2013-03-01 09:11:58.703319|95.12|values clariffication +103|430|65642|4294967347|84.23|14.83|true|mike king|2013-03-01 09:11:58.703255|95.61|opthamology +51|459|65641|4294967380|5.45|19.47|true|ulysses underhill|2013-03-01 09:11:58.703289|84.27|geology +70|342|65569|4294967492|64.30|43.95|true|luke ovid|2013-03-01 09:11:58.703281|52.50|values clariffication +48|329|65788|4294967378|30.25|22.19|true|holly hernandez|2013-03-01 09:11:58.703157|16.10|quiet hour +29|374|65696|4294967481|13.87|19.93|false|xavier polk|2013-03-01 09:11:58.703258|40.30|geology +30|294|65779|4294967482|36.58|18.35|false|jessica white|2013-03-01 09:11:58.703085|39.48|kindergarten +74|289|65733|4294967495|77.84|28.96|false|jessica miller|2013-03-01 09:11:58.703177|20.72|linguistics +114|499|65724|4294967334|42.51|46.09|true|nick brown|2013-03-01 09:11:58.703176|71.66|nap time +53|371|65603|4294967303|51.29|18.41|true|nick van buren|2013-03-01 09:11:58.703186|41.44|history +121|401|65779|4294967375|29.24|25.08|true|david quirinius|2013-03-01 09:11:58.703295|65.24|religion +72|408|65581|4294967453|7.82|1.50|false|mike young|2013-03-01 09:11:58.703242|45.48|geology +116|482|65550|4294967489|5.85|31.75|true|mike steinbeck|2013-03-01 09:11:58.703150|33.01|religion +94|335|65603|4294967357|68.25|13.72|true|tom miller|2013-03-01 09:11:58.703192|80.24|undecided +4|460|65625|4294967360|5.51|22.60|true|oscar laertes|2013-03-01 09:11:58.703293|42.86|nap time +110|306|65571|4294967419|43.01|31.74|true|gabriella garcia|2013-03-01 09:11:58.703280|40.68|chemistry +0|330|65673|4294967343|91.97|15.22|false|victor brown|2013-03-01 09:11:58.703097|0.90|xylophone band +31|459|65595|4294967413|40.00|17.51|false|alice nixon|2013-03-01 09:11:58.703159|72.70|topology +45|423|65673|4294967447|11.55|3.83|true|jessica white|2013-03-01 09:11:58.703140|43.81|chemistry +55|427|65722|4294967331|10.09|45.28|true|ethan brown|2013-03-01 09:11:58.703084|1.76|joggying +9|321|65658|4294967501|54.83|20.55|false|mike davidson|2013-03-01 09:11:58.703179|60.94|debate +88|277|65585|4294967398|3.97|5.58|true|nick johnson|2013-03-01 09:11:58.703111|37.34|chemistry +110|279|65604|4294967344|92.33|5.31|true|quinn garcia|2013-03-01 09:11:58.703102|63.65|linguistics +9|456|65541|4294967531|38.57|9.56|true|xavier hernandez|2013-03-01 09:11:58.703174|36.33|linguistics +73|340|65584|4294967330|21.28|15.97|false|zach miller|2013-03-01 09:11:58.703265|12.38|philosophy +76|368|65608|4294967506|16.69|37.94|true|luke laertes|2013-03-01 09:11:58.703075|87.90|history +113|445|65658|4294967530|4.32|46.28|true|priscilla young|2013-03-01 09:11:58.703192|2.63|quiet hour +61|491|65711|4294967382|11.19|42.37|false|jessica young|2013-03-01 09:11:58.703261|8.66|wind surfing +70|361|65746|4294967332|97.57|22.61|false|katie young|2013-03-01 09:11:58.703182|98.10|undecided +38|336|65556|4294967482|14.84|12.30|true|gabriella ovid|2013-03-01 09:11:58.703086|9.96|xylophone band +100|413|65547|4294967303|53.18|20.42|true|luke allen|2013-03-01 09:11:58.703319|83.21|debate +117|474|65729|4294967333|68.22|18.36|false|priscilla underhill|2013-03-01 09:11:58.703249|19.42|education +118|467|65632|4294967296|41.36|29.36|false|tom hernandez|2013-03-01 09:11:58.703216|88.51|philosophy +50|367|65663|4294967405|11.18|33.00|true|jessica ellison|2013-03-01 09:11:58.703255|5.42|opthamology +19|276|65727|4294967539|68.81|0.37|false|holly van buren|2013-03-01 09:11:58.703084|19.81|biology +48|328|65594|4294967366|59.07|11.35|true|tom miller|2013-03-01 09:11:58.703162|67.22|nap time +5|435|65731|4294967493|73.88|30.12|false|sarah johnson|2013-03-01 09:11:58.703198|97.18|nap time +38|384|65667|4294967539|81.32|39.41|false|sarah ichabod|2013-03-01 09:11:58.703184|13.96|industrial engineering +9|316|65786|4294967546|54.47|27.40|false|ulysses hernandez|2013-03-01 09:11:58.703206|80.94|xylophone band +84|496|65604|4294967329|59.45|23.18|true|rachel king|2013-03-01 09:11:58.703077|63.36|quiet hour +34|264|65564|4294967437|31.77|12.14|false|calvin davidson|2013-03-01 09:11:58.703180|30.78|study skills +79|377|65570|4294967410|22.12|0.98|true|victor miller|2013-03-01 09:11:58.703088|45.23|joggying +7|342|65786|4294967449|72.53|21.30|false|ulysses quirinius|2013-03-01 09:11:58.703157|8.99|linguistics +85|349|65573|4294967308|97.46|12.13|false|mike steinbeck|2013-03-01 09:11:58.703179|96.32|undecided +27|287|65708|4294967542|83.33|36.73|false|quinn allen|2013-03-01 09:11:58.703157|1.29|mathematics +78|421|65633|4294967410|87.67|47.98|false|irene brown|2013-03-01 09:11:58.703207|81.02|zync studies +75|499|65696|4294967405|53.59|7.71|false|zach thompson|2013-03-01 09:11:58.703234|87.89|kindergarten +107|421|65595|4294967543|57.11|46.59|true|ethan xylophone|2013-03-01 09:11:58.703085|67.56|linguistics +124|310|65548|4294967319|58.66|15.94|false|victor thompson|2013-03-01 09:11:58.703168|52.94|forestry +5|501|65585|4294967363|33.58|19.98|true|alice xylophone|2013-03-01 09:11:58.703242|31.23|geology +65|476|65542|4294967547|41.29|23.25|true|quinn laertes|2013-03-01 09:11:58.703240|73.93|forestry +70|443|65700|4294967448|52.44|21.86|true|quinn brown|2013-03-01 09:11:58.703257|44.88|xylophone band +28|378|65678|4294967355|68.32|1.45|false|sarah xylophone|2013-03-01 09:11:58.703155|81.87|values clariffication +3|322|65672|4294967508|25.55|26.28|true|jessica carson|2013-03-01 09:11:58.703120|52.60|education +82|257|65654|4294967497|9.80|20.44|true|priscilla thompson|2013-03-01 09:11:58.703308|29.85|geology +115|276|65632|4294967457|90.69|40.89|true|tom robinson|2013-03-01 09:11:58.703157|5.09|study skills +33|459|65783|4294967300|10.29|14.51|true|fred falkner|2013-03-01 09:11:58.703270|51.08|philosophy +102|359|65560|4294967482|93.03|25.17|false|fred nixon|2013-03-01 09:11:58.703120|64.38|education +40|500|65664|4294967428|16.25|7.80|true|luke ellison|2013-03-01 09:11:58.703248|27.60|topology +32|467|65547|4294967502|67.94|21.95|true|ethan robinson|2013-03-01 09:11:58.703188|62.31|values clariffication +44|475|65776|4294967510|89.55|7.92|true|luke allen|2013-03-01 09:11:58.703105|28.47|study skills +60|381|65627|4294967365|33.85|41.36|true|quinn robinson|2013-03-01 09:11:58.703258|19.65|linguistics +103|430|65591|4294967344|75.03|22.27|false|bob ellison|2013-03-01 09:11:58.703277|9.85|values clariffication +35|423|65667|4294967507|65.43|8.76|true|zach allen|2013-03-01 09:11:58.703172|3.44|wind surfing +90|406|65763|4294967450|0.15|13.95|true|priscilla xylophone|2013-03-01 09:11:58.703245|0.72|nap time +25|403|65782|4294967516|0.61|3.40|false|wendy allen|2013-03-01 09:11:58.703152|16.51|quiet hour +104|415|65758|4294967454|66.17|44.12|false|tom robinson|2013-03-01 09:11:58.703161|25.62|kindergarten +81|272|65548|4294967413|40.04|21.30|false|tom white|2013-03-01 09:11:58.703231|77.24|study skills +37|503|65562|4294967358|44.22|44.32|false|rachel laertes|2013-03-01 09:11:58.703126|40.62|linguistics +40|432|65691|4294967547|24.86|45.46|false|ulysses laertes|2013-03-01 09:11:58.703171|58.01|topology +42|345|65676|4294967447|14.92|26.67|false|yuri thompson|2013-03-01 09:11:58.703250|80.13|history +44|465|65744|4294967391|27.30|47.71|false|xavier johnson|2013-03-01 09:11:58.703295|8.58|philosophy +14|413|65623|4294967434|87.61|20.93|false|gabriella falkner|2013-03-01 09:11:58.703318|30.83|religion +48|498|65774|4294967431|59.71|30.22|true|gabriella young|2013-03-01 09:11:58.703098|94.77|zync studies +105|326|65673|4294967440|4.59|25.92|true|victor robinson|2013-03-01 09:11:58.703290|64.23|forestry +61|407|65750|4294967412|0.10|40.59|true|zach ovid|2013-03-01 09:11:58.703137|34.29|joggying +69|473|65599|4294967325|76.72|28.69|true|zach robinson|2013-03-01 09:11:58.703305|71.51|religion +26|283|65564|4294967400|46.86|12.35|true|bob ovid|2013-03-01 09:11:58.703322|9.47|forestry +50|316|65654|4294967488|9.81|27.36|true|calvin nixon|2013-03-01 09:11:58.703133|53.55|topology +112|316|65719|4294967473|51.79|43.04|false|luke brown|2013-03-01 09:11:58.703116|82.10|history +32|264|65606|4294967487|66.17|43.92|true|holly young|2013-03-01 09:11:58.703239|24.80|zync studies +31|493|65562|4294967428|38.94|24.25|true|alice van buren|2013-03-01 09:11:58.703143|26.86|geology +32|490|65658|4294967541|62.23|30.16|false|rachel johnson|2013-03-01 09:11:58.703155|92.67|wind surfing +113|302|65721|4294967526|96.68|32.74|true|holly underhill|2013-03-01 09:11:58.703306|39.19|values clariffication +44|357|65542|4294967373|31.91|4.81|true|oscar thompson|2013-03-01 09:11:58.703182|73.72|debate +0|268|65740|4294967449|32.89|28.52|false|oscar zipper|2013-03-01 09:11:58.703113|58.65|industrial engineering +121|355|65537|4294967437|85.90|10.99|true|calvin brown|2013-03-01 09:11:58.703254|4.49|yard duty +45|459|65565|4294967507|6.55|34.52|true|gabriella davidson|2013-03-01 09:11:58.703117|81.72|kindergarten +1|428|65564|4294967532|69.32|2.43|false|holly robinson|2013-03-01 09:11:58.703324|98.36|yard duty +31|351|65669|4294967441|95.38|43.95|true|calvin zipper|2013-03-01 09:11:58.703308|16.95|xylophone band +121|330|65755|4294967380|64.36|2.53|false|holly johnson|2013-03-01 09:11:58.703210|90.08|joggying +53|464|65720|4294967413|26.39|14.52|true|nick garcia|2013-03-01 09:11:58.703315|62.04|opthamology +106|318|65789|4294967381|1.02|33.60|false|fred van buren|2013-03-01 09:11:58.703156|96.90|joggying +31|281|65681|4294967368|86.00|14.29|false|yuri falkner|2013-03-01 09:11:58.703310|55.44|xylophone band +71|356|65715|4294967364|26.47|34.14|true|wendy robinson|2013-03-01 09:11:58.703178|9.18|zync studies +97|283|65589|4294967434|37.80|31.64|true|fred white|2013-03-01 09:11:58.703188|74.83|mathematics +43|418|65646|4294967385|43.92|19.31|true|priscilla king|2013-03-01 09:11:58.703244|4.47|zync studies +46|485|65739|4294967519|9.19|1.79|true|calvin zipper|2013-03-01 09:11:58.703089|22.23|nap time +45|394|65586|4294967391|63.33|44.63|true|wendy king|2013-03-01 09:11:58.703124|56.73|education +51|362|65677|4294967445|63.42|34.20|true|ethan white|2013-03-01 09:11:58.703092|48.79|chemistry +91|384|65644|4294967533|10.09|4.95|true|victor xylophone|2013-03-01 09:11:58.703320|87.31|opthamology +77|485|65651|4294967326|50.70|49.72|false|victor quirinius|2013-03-01 09:11:58.703256|33.24|opthamology +80|333|65614|4294967331|13.10|39.55|true|oscar brown|2013-03-01 09:11:58.703154|75.45|industrial engineering +31|474|65682|4294967551|30.63|2.53|false|yuri allen|2013-03-01 09:11:58.703212|35.36|forestry +71|391|65749|4294967412|41.20|20.94|true|calvin nixon|2013-03-01 09:11:58.703311|15.14|wind surfing +0|372|65720|4294967416|79.48|20.76|true|oscar quirinius|2013-03-01 09:11:58.703254|0.32|education +41|453|65677|4294967371|76.10|28.02|false|victor xylophone|2013-03-01 09:11:58.703179|69.86|religion +111|317|65703|4294967297|38.05|0.48|true|fred nixon|2013-03-01 09:11:58.703256|90.89|values clariffication +18|468|65551|4294967546|0.98|45.14|false|irene polk|2013-03-01 09:11:58.703186|39.43|wind surfing +0|486|65706|4294967466|20.82|30.55|false|mike allen|2013-03-01 09:11:58.703246|72.87|mathematics +92|329|65610|4294967521|47.08|36.57|false|irene polk|2013-03-01 09:11:58.703231|11.99|debate +35|409|65777|4294967422|93.09|11.50|false|bob brown|2013-03-01 09:11:58.703269|73.79|religion +80|455|65644|4294967460|75.35|20.56|false|nick xylophone|2013-03-01 09:11:58.703249|30.25|quiet hour +17|435|65684|4294967326|31.61|8.33|false|victor allen|2013-03-01 09:11:58.703264|77.18|mathematics +91|295|65587|4294967506|76.93|9.88|true|xavier polk|2013-03-01 09:11:58.703243|53.84|linguistics +92|363|65697|4294967310|13.89|47.40|true|katie robinson|2013-03-01 09:11:58.703237|3.18|xylophone band +17|351|65589|4294967439|54.99|44.75|false|irene van buren|2013-03-01 09:11:58.703196|49.49|american history +88|445|65778|4294967422|33.67|28.86|false|bob van buren|2013-03-01 09:11:58.703230|62.17|forestry +44|386|65692|4294967434|0.84|20.94|true|wendy polk|2013-03-01 09:11:58.703226|87.05|values clariffication +84|373|65585|4294967486|14.13|30.21|true|katie xylophone|2013-03-01 09:11:58.703084|50.38|forestry +83|395|65645|4294967509|99.62|9.50|true|irene ichabod|2013-03-01 09:11:58.703212|63.22|zync studies +28|428|65650|4294967320|85.76|22.68|false|wendy thompson|2013-03-01 09:11:58.703145|85.89|wind surfing +27|503|65628|4294967371|95.07|25.58|true|ethan laertes|2013-03-01 09:11:58.703310|14.83|topology +69|304|65695|4294967384|13.94|10.51|true|nick garcia|2013-03-01 09:11:58.703167|59.96|mathematics +15|264|65737|4294967412|9.04|32.04|false|alice ovid|2013-03-01 09:11:58.703279|20.85|kindergarten +118|399|65730|4294967309|0.52|33.72|false|luke laertes|2013-03-01 09:11:58.703098|1.35|quiet hour +84|437|65601|4294967357|49.44|8.79|false|nick davidson|2013-03-01 09:11:58.703161|26.54|undecided +1|313|65543|4294967362|45.35|47.49|true|bob white|2013-03-01 09:11:58.703144|21.59|linguistics +40|442|65659|4294967379|50.08|31.50|false|irene ellison|2013-03-01 09:11:58.703306|53.80|philosophy +60|308|65564|4294967405|36.79|6.46|true|quinn ichabod|2013-03-01 09:11:58.703298|26.06|geology +118|282|65644|4294967407|67.59|32.89|true|victor laertes|2013-03-01 09:11:58.703177|89.95|study skills +77|320|65585|4294967344|45.59|39.11|true|bob garcia|2013-03-01 09:11:58.703301|39.32|american history +17|407|65716|4294967460|14.44|16.87|false|luke johnson|2013-03-01 09:11:58.703200|71.53|linguistics +84|492|65737|4294967467|23.45|46.69|false|nick ichabod|2013-03-01 09:11:58.703127|3.98|values clariffication +97|266|65544|4294967373|32.20|9.87|true|zach garcia|2013-03-01 09:11:58.703289|1.67|quiet hour +21|348|65765|4294967366|56.62|2.75|false|nick zipper|2013-03-01 09:11:58.703269|69.76|zync studies +88|404|65548|4294967382|6.87|15.00|false|oscar carson|2013-03-01 09:11:58.703318|57.61|wind surfing +119|427|65553|4294967319|95.53|12.82|true|luke underhill|2013-03-01 09:11:58.703130|93.95|wind surfing +16|405|65591|4294967351|97.24|33.01|false|ethan quirinius|2013-03-01 09:11:58.703156|60.78|xylophone band +65|460|65570|4294967399|74.30|19.59|false|jessica white|2013-03-01 09:11:58.703111|25.57|study skills +11|300|65583|4294967382|88.22|30.13|false|tom falkner|2013-03-01 09:11:58.703275|93.49|joggying +106|446|65613|4294967369|48.45|7.18|true|alice garcia|2013-03-01 09:11:58.703193|43.72|chemistry +114|410|65578|4294967363|94.34|15.10|true|zach ovid|2013-03-01 09:11:58.703299|55.97|history +-1|372|65680|4294967490|15.45|18.09|false|ethan laertes|2013-03-01 09:11:58.703110|65.88|opthamology +113|361|65660|4294967516|23.17|38.39|true|alice king|2013-03-01 09:11:58.703246|62.82|geology +98|381|65563|4294967458|41.29|48.85|false|sarah garcia|2013-03-01 09:11:58.703243|33.29|mathematics +108|385|65730|4294967387|65.44|43.34|false|irene miller|2013-03-01 09:11:58.703157|81.44|philosophy +10|441|65723|4294967528|96.23|34.98|false|xavier brown|2013-03-01 09:11:58.703281|19.95|nap time +84|403|65656|4294967550|7.05|33.66|true|luke davidson|2013-03-01 09:11:58.703300|14.00|kindergarten +84|447|65755|4294967387|4.92|22.75|false|rachel davidson|2013-03-01 09:11:58.703178|96.80|biology +25|309|65568|4294967354|58.75|23.31|true|katie zipper|2013-03-01 09:11:58.703156|21.79|quiet hour +17|388|65784|4294967542|40.24|3.98|true|katie polk|2013-03-01 09:11:58.703163|15.70|kindergarten +5|486|65602|4294967358|71.55|3.40|true|ulysses carson|2013-03-01 09:11:58.703266|83.67|mathematics +59|494|65786|4294967483|35.80|11.44|true|zach garcia|2013-03-01 09:11:58.703125|56.82|yard duty +80|509|65553|4294967544|50.28|47.00|false|calvin white|2013-03-01 09:11:58.703071|71.07|debate +109|376|65538|4294967453|59.61|35.62|true|priscilla xylophone|2013-03-01 09:11:58.703286|9.53|study skills +40|496|65640|4294967513|93.73|25.71|true|calvin thompson|2013-03-01 09:11:58.703124|8.93|mathematics +65|508|65732|4294967409|81.47|29.25|false|ethan ellison|2013-03-01 09:11:58.703154|30.06|religion +50|478|65599|4294967338|77.81|32.31|true|holly brown|2013-03-01 09:11:58.703128|76.29|kindergarten +26|451|65716|4294967312|77.42|13.60|true|ulysses carson|2013-03-01 09:11:58.703116|38.93|history +31|382|65737|4294967301|58.09|41.34|true|wendy thompson|2013-03-01 09:11:58.703231|80.97|biology +33|430|65694|4294967346|48.37|40.46|false|fred king|2013-03-01 09:11:58.703167|88.50|forestry +6|408|65658|4294967503|99.68|44.11|false|mike polk|2013-03-01 09:11:58.703313|20.69|industrial engineering +100|264|65637|4294967340|85.00|45.86|false|fred falkner|2013-03-01 09:11:58.703148|44.32|joggying +119|316|65646|4294967405|46.27|16.82|false|gabriella allen|2013-03-01 09:11:58.703224|17.92|wind surfing +105|478|65790|4294967302|88.05|5.82|true|gabriella polk|2013-03-01 09:11:58.703236|84.87|topology +124|384|65697|4294967426|15.30|19.15|true|fred quirinius|2013-03-01 09:11:58.703139|86.79|education +109|319|65734|4294967387|52.23|20.82|false|alice king|2013-03-01 09:11:58.703262|31.71|american history +93|356|65650|4294967428|53.94|27.46|true|irene brown|2013-03-01 09:11:58.703130|59.55|religion +51|444|65662|4294967539|42.48|14.39|false|alice zipper|2013-03-01 09:11:58.703202|76.51|geology +61|432|65778|4294967469|9.57|29.88|false|mike white|2013-03-01 09:11:58.703074|64.69|wind surfing +78|419|65633|4294967299|34.35|32.06|true|bob zipper|2013-03-01 09:11:58.703081|72.54|history +67|295|65654|4294967449|59.55|1.37|true|ulysses white|2013-03-01 09:11:58.703096|11.64|topology +70|312|65742|4294967540|54.43|19.85|false|tom polk|2013-03-01 09:11:58.703206|6.61|values clariffication +56|351|65732|4294967479|8.37|34.68|true|xavier white|2013-03-01 09:11:58.703103|95.68|quiet hour +42|495|65536|4294967431|43.57|46.81|false|tom johnson|2013-03-01 09:11:58.703245|62.25|american history +0|428|65590|4294967473|94.54|28.29|true|irene carson|2013-03-01 09:11:58.703089|92.71|education +91|262|65661|4294967391|73.65|13.30|false|sarah garcia|2013-03-01 09:11:58.703325|26.80|topology +73|337|65775|4294967406|57.12|24.35|true|oscar xylophone|2013-03-01 09:11:58.703091|66.56|topology +58|404|65693|4294967345|78.89|6.57|true|sarah carson|2013-03-01 09:11:58.703218|84.12|undecided +77|461|65581|4294967449|89.55|49.44|true|jessica thompson|2013-03-01 09:11:58.703216|60.88|quiet hour +89|492|65736|4294967336|14.93|26.74|false|ulysses young|2013-03-01 09:11:58.703089|69.96|undecided +116|444|65659|4294967329|59.62|37.37|true|victor hernandez|2013-03-01 09:11:58.703093|94.69|kindergarten +114|427|65712|4294967419|32.47|10.24|true|jessica quirinius|2013-03-01 09:11:58.703116|49.69|values clariffication +43|503|65650|4294967482|96.38|6.96|true|nick nixon|2013-03-01 09:11:58.703302|23.55|american history +116|351|65771|4294967470|48.59|24.17|false|fred ellison|2013-03-01 09:11:58.703282|7.50|values clariffication +-2|261|65603|4294967332|39.18|28.98|false|fred polk|2013-03-01 09:11:58.703310|69.26|opthamology +123|439|65781|4294967448|15.86|42.96|true|ulysses xylophone|2013-03-01 09:11:58.703272|12.45|geology +83|451|65583|4294967443|10.13|44.36|true|nick falkner|2013-03-01 09:11:58.703293|57.67|values clariffication +51|390|65709|4294967548|29.59|49.59|true|oscar steinbeck|2013-03-01 09:11:58.703243|49.79|education +107|313|65699|4294967493|9.25|41.34|false|gabriella young|2013-03-01 09:11:58.703213|38.71|mathematics +93|403|65782|4294967355|74.53|26.21|true|oscar robinson|2013-03-01 09:11:58.703239|76.14|topology +7|320|65624|4294967530|41.34|11.54|true|bob ellison|2013-03-01 09:11:58.703249|93.30|nap time +38|308|65559|4294967465|95.81|13.71|true|david davidson|2013-03-01 09:11:58.703114|73.94|forestry +112|295|65662|4294967517|65.62|34.97|true|holly johnson|2013-03-01 09:11:58.703274|59.92|zync studies +101|283|65538|4294967527|84.03|27.29|true|yuri brown|2013-03-01 09:11:58.703306|44.24|biology +20|509|65686|4294967330|12.46|40.63|false|victor steinbeck|2013-03-01 09:11:58.703323|38.27|linguistics +0|367|65685|4294967491|91.61|13.80|false|priscilla van buren|2013-03-01 09:11:58.703096|87.84|topology +18|371|65552|4294967424|37.24|3.71|false|fred davidson|2013-03-01 09:11:58.703308|48.96|undecided +92|344|65618|4294967390|46.09|28.69|true|victor steinbeck|2013-03-01 09:11:58.703193|81.99|biology +34|322|65659|4294967353|78.62|21.42|false|ethan robinson|2013-03-01 09:11:58.703153|46.57|religion +27|401|65779|4294967402|97.39|43.42|false|mike zipper|2013-03-01 09:11:58.703145|64.41|quiet hour +74|290|65630|4294967436|57.89|8.33|false|oscar ellison|2013-03-01 09:11:58.703296|99.05|biology +81|344|65677|4294967530|28.11|20.56|false|calvin brown|2013-03-01 09:11:58.703159|87.67|quiet hour +109|275|65651|4294967393|96.94|17.44|false|luke underhill|2013-03-01 09:11:58.703228|58.25|opthamology +97|290|65774|4294967311|71.07|11.44|false|wendy robinson|2013-03-01 09:11:58.703240|5.10|undecided +41|338|65618|4294967304|45.68|26.17|true|xavier allen|2013-03-01 09:11:58.703138|55.68|biology +88|496|65767|4294967448|14.30|41.69|true|wendy quirinius|2013-03-01 09:11:58.703106|94.32|kindergarten +51|495|65554|4294967347|94.27|26.65|true|irene robinson|2013-03-01 09:11:58.703179|63.61|quiet hour +97|491|65618|4294967423|32.25|2.13|false|luke falkner|2013-03-01 09:11:58.703166|16.60|study skills +9|311|65719|4294967442|2.60|26.73|true|zach miller|2013-03-01 09:11:58.703223|64.21|undecided +62|262|65668|4294967468|61.94|7.31|false|priscilla johnson|2013-03-01 09:11:58.703228|48.68|topology +63|341|65704|4294967546|7.79|2.63|false|xavier brown|2013-03-01 09:11:58.703261|69.36|debate +69|492|65751|4294967324|45.10|20.65|true|sarah johnson|2013-03-01 09:11:58.703095|9.77|chemistry +17|404|65712|4294967388|71.13|45.81|false|gabriella ichabod|2013-03-01 09:11:58.703164|30.27|undecided +72|310|65780|4294967507|80.99|24.03|true|tom davidson|2013-03-01 09:11:58.703212|38.58|forestry +18|397|65611|4294967439|98.22|15.32|true|xavier allen|2013-03-01 09:11:58.703089|69.46|undecided +50|307|65596|4294967300|80.60|30.89|true|calvin falkner|2013-03-01 09:11:58.703275|54.75|values clariffication +84|305|65637|4294967402|10.16|43.04|true|yuri laertes|2013-03-01 09:11:58.703283|58.05|linguistics +75|479|65749|4294967528|80.52|5.31|false|priscilla brown|2013-03-01 09:11:58.703148|65.49|undecided +97|323|65704|4294967477|60.12|42.22|true|mike nixon|2013-03-01 09:11:58.703249|48.48|wind surfing +14|437|65612|4294967539|64.25|4.82|false|zach ichabod|2013-03-01 09:11:58.703215|51.14|forestry +22|280|65774|4294967311|77.10|40.24|false|jessica nixon|2013-03-01 09:11:58.703238|56.84|xylophone band +118|497|65536|4294967381|50.32|12.72|false|david nixon|2013-03-01 09:11:58.703285|83.48|values clariffication +27|482|65624|4294967313|78.98|43.96|true|oscar carson|2013-03-01 09:11:58.703217|70.08|joggying +99|436|65746|4294967342|39.81|15.28|false|calvin young|2013-03-01 09:11:58.703145|97.52|quiet hour +50|409|65738|4294967535|28.56|0.74|true|mike ellison|2013-03-01 09:11:58.703282|30.94|values clariffication +66|267|65738|4294967371|70.89|11.40|true|oscar thompson|2013-03-01 09:11:58.703104|51.33|undecided +107|466|65691|4294967302|9.68|40.39|false|nick ellison|2013-03-01 09:11:58.703108|28.47|american history +55|335|65699|4294967487|5.28|16.66|true|david ichabod|2013-03-01 09:11:58.703161|68.94|nap time +-2|340|65627|4294967533|76.52|21.91|true|quinn laertes|2013-03-01 09:11:58.703178|93.29|xylophone band +68|448|65597|4294967422|70.39|40.01|true|ethan laertes|2013-03-01 09:11:58.703109|69.05|quiet hour +65|505|65679|4294967338|75.88|15.87|true|yuri steinbeck|2013-03-01 09:11:58.703085|65.46|yard duty +53|315|65607|4294967496|1.58|20.02|true|victor johnson|2013-03-01 09:11:58.703202|36.58|undecided +94|475|65606|4294967503|62.14|26.00|false|mike ellison|2013-03-01 09:11:58.703115|67.94|biology +-3|275|65622|4294967302|71.78|8.49|false|wendy robinson|2013-03-01 09:11:58.703294|95.39|undecided +-1|281|65643|4294967323|15.10|45.00|false|irene nixon|2013-03-01 09:11:58.703223|80.96|undecided +72|469|65765|4294967500|60.22|32.25|false|holly young|2013-03-01 09:11:58.703253|88.56|wind surfing +23|401|65693|4294967439|34.41|46.73|false|rachel brown|2013-03-01 09:11:58.703306|71.72|geology +36|377|65697|4294967444|98.51|49.05|false|oscar carson|2013-03-01 09:11:58.703081|67.90|joggying +18|264|65595|4294967512|18.86|42.56|false|fred davidson|2013-03-01 09:11:58.703137|89.60|history +82|257|65655|4294967320|40.42|41.02|true|luke quirinius|2013-03-01 09:11:58.703205|35.80|zync studies +120|497|65595|4294967442|45.56|21.53|true|sarah young|2013-03-01 09:11:58.703167|90.24|quiet hour +94|256|65747|4294967347|32.18|8.61|true|quinn quirinius|2013-03-01 09:11:58.703217|71.87|history +112|453|65586|4294967540|42.76|3.66|true|gabriella carson|2013-03-01 09:11:58.703291|1.15|wind surfing +73|394|65657|4294967486|11.82|39.80|false|luke laertes|2013-03-01 09:11:58.703160|11.93|nap time +-3|344|65733|4294967363|0.56|11.96|true|rachel thompson|2013-03-01 09:11:58.703276|88.46|wind surfing +0|356|65581|4294967326|40.44|33.18|false|calvin robinson|2013-03-01 09:11:58.703294|29.74|zync studies +101|487|65676|4294967367|85.87|13.14|true|zach zipper|2013-03-01 09:11:58.703077|27.58|zync studies +48|491|65669|4294967492|63.51|49.85|true|tom van buren|2013-03-01 09:11:58.703247|1.29|forestry +93|504|65557|4294967500|22.68|37.23|true|bob hernandez|2013-03-01 09:11:58.703207|21.14|zync studies +35|290|65726|4294967434|18.63|7.24|true|priscilla zipper|2013-03-01 09:11:58.703195|7.42|education +114|503|65677|4294967534|64.22|15.16|true|gabriella allen|2013-03-01 09:11:58.703324|44.47|wind surfing +-3|458|65696|4294967418|45.24|8.49|false|irene ellison|2013-03-01 09:11:58.703092|54.02|american history +103|411|65579|4294967521|22.25|18.31|true|quinn zipper|2013-03-01 09:11:58.703175|33.37|forestry +100|492|65778|4294967379|13.35|23.88|false|luke garcia|2013-03-01 09:11:58.703260|59.03|undecided +119|421|65580|4294967480|27.87|46.74|true|wendy brown|2013-03-01 09:11:58.703085|59.43|study skills +20|385|65562|4294967324|71.80|5.51|false|oscar ichabod|2013-03-01 09:11:58.703194|72.04|mathematics +81|331|65745|4294967531|80.71|42.55|true|ethan laertes|2013-03-01 09:11:58.703226|66.36|yard duty +78|509|65758|4294967531|21.45|23.59|false|alice allen|2013-03-01 09:11:58.703171|56.56|geology +17|496|65624|4294967389|96.25|1.62|true|nick laertes|2013-03-01 09:11:58.703113|65.31|mathematics +43|379|65616|4294967348|46.15|12.02|true|rachel falkner|2013-03-01 09:11:58.703120|75.20|geology +43|281|65676|4294967540|87.14|21.33|true|jessica garcia|2013-03-01 09:11:58.703173|8.77|debate +22|304|65607|4294967318|82.72|2.34|false|priscilla van buren|2013-03-01 09:11:58.703185|75.86|forestry +59|431|65537|4294967326|11.34|2.90|true|oscar robinson|2013-03-01 09:11:58.703161|81.04|zync studies +6|322|65715|4294967385|82.55|8.62|false|david ichabod|2013-03-01 09:11:58.703248|81.28|topology +79|396|65686|4294967335|89.28|25.63|true|rachel polk|2013-03-01 09:11:58.703277|58.87|geology +95|482|65637|4294967342|9.70|2.16|true|bob steinbeck|2013-03-01 09:11:58.703225|35.51|undecided +71|280|65610|4294967451|33.36|25.95|true|rachel brown|2013-03-01 09:11:58.703097|7.59|opthamology +32|400|65753|4294967360|35.13|32.17|true|irene ovid|2013-03-01 09:11:58.703294|59.13|mathematics +70|373|65773|4294967502|46.18|47.06|false|zach king|2013-03-01 09:11:58.703132|87.66|mathematics +105|509|65716|4294967308|22.94|9.61|true|jessica quirinius|2013-03-01 09:11:58.703073|10.07|zync studies +20|286|65671|4294967307|28.45|25.01|true|oscar white|2013-03-01 09:11:58.703299|52.05|undecided +98|432|65669|4294967373|63.12|23.03|false|calvin allen|2013-03-01 09:11:58.703214|38.60|industrial engineering +57|304|65731|4294967315|94.68|44.22|false|xavier carson|2013-03-01 09:11:58.703208|18.20|study skills +45|433|65672|4294967506|85.03|0.37|false|tom nixon|2013-03-01 09:11:58.703154|64.09|mathematics +77|483|65784|4294967330|23.07|29.96|true|zach ovid|2013-03-01 09:11:58.703168|97.37|education +70|268|65766|4294967299|88.36|17.15|true|gabriella thompson|2013-03-01 09:11:58.703169|86.53|opthamology +34|398|65731|4294967546|66.61|46.93|true|calvin johnson|2013-03-01 09:11:58.703078|61.52|quiet hour +2|443|65552|4294967349|51.85|30.49|false|oscar white|2013-03-01 09:11:58.703125|78.52|philosophy +65|393|65625|4294967374|24.73|41.75|false|katie garcia|2013-03-01 09:11:58.703083|20.61|opthamology +83|432|65656|4294967303|26.08|39.73|true|jessica underhill|2013-03-01 09:11:58.703147|82.67|geology +32|506|65551|4294967375|19.13|3.29|true|ulysses ichabod|2013-03-01 09:11:58.703195|74.13|zync studies +13|324|65544|4294967539|84.31|37.34|true|tom young|2013-03-01 09:11:58.703271|65.85|education +11|267|65727|4294967325|33.55|17.89|true|jessica davidson|2013-03-01 09:11:58.703144|87.37|kindergarten +119|280|65615|4294967457|94.72|19.90|false|rachel white|2013-03-01 09:11:58.703163|54.47|biology +85|392|65760|4294967436|65.02|16.91|false|bob ellison|2013-03-01 09:11:58.703115|27.52|history +89|436|65623|4294967461|89.03|25.97|true|fred robinson|2013-03-01 09:11:58.703239|95.58|linguistics +51|265|65626|4294967521|94.38|1.53|true|luke thompson|2013-03-01 09:11:58.703120|75.15|yard duty +122|428|65715|4294967520|35.72|8.21|false|priscilla underhill|2013-03-01 09:11:58.703212|54.79|opthamology +114|507|65576|4294967517|15.18|34.48|true|luke allen|2013-03-01 09:11:58.703140|4.88|religion +22|257|65588|4294967316|81.17|28.77|false|nick quirinius|2013-03-01 09:11:58.703224|76.44|forestry +78|417|65552|4294967300|64.00|10.49|true|calvin van buren|2013-03-01 09:11:58.703223|3.43|debate +88|409|65607|4294967509|99.13|41.24|false|holly zipper|2013-03-01 09:11:58.703267|91.52|nap time +36|274|65705|4294967514|70.52|5.93|true|fred nixon|2013-03-01 09:11:58.703179|65.13|topology +42|338|65719|4294967488|87.99|39.29|false|nick ovid|2013-03-01 09:11:58.703302|66.85|education +18|446|65544|4294967435|93.11|14.90|true|holly xylophone|2013-03-01 09:11:58.703085|73.08|history +110|261|65600|4294967428|75.83|10.22|false|mike garcia|2013-03-01 09:11:58.703132|43.03|education +61|382|65623|4294967443|25.11|2.26|false|david ovid|2013-03-01 09:11:58.703125|39.74|education +57|277|65754|4294967357|36.26|32.98|true|gabriella zipper|2013-03-01 09:11:58.703077|10.16|topology +12|379|65698|4294967477|47.57|44.60|false|mike carson|2013-03-01 09:11:58.703291|42.98|religion +3|464|65617|4294967424|82.30|2.92|false|ethan brown|2013-03-01 09:11:58.703076|18.51|wind surfing +5|360|65543|4294967305|67.98|38.53|false|priscilla johnson|2013-03-01 09:11:58.703259|52.28|geology +37|445|65612|4294967444|92.11|0.74|true|wendy steinbeck|2013-03-01 09:11:58.703096|16.05|study skills +58|382|65644|4294967500|18.63|30.09|true|oscar allen|2013-03-01 09:11:58.703144|96.45|linguistics +115|327|65607|4294967391|28.79|0.80|false|yuri polk|2013-03-01 09:11:58.703153|47.12|study skills +93|373|65707|4294967343|95.48|11.83|false|oscar hernandez|2013-03-01 09:11:58.703245|76.20|undecided +108|478|65712|4294967522|46.43|33.12|false|nick garcia|2013-03-01 09:11:58.703166|34.70|kindergarten +-3|376|65548|4294967431|96.78|43.23|false|fred ellison|2013-03-01 09:11:58.703233|75.39|education +44|398|65691|4294967393|26.71|25.51|false|fred ellison|2013-03-01 09:11:58.703270|5.01|undecided +91|392|65708|4294967305|71.35|26.84|false|victor hernandez|2013-03-01 09:11:58.703198|70.89|philosophy +14|355|65556|4294967482|64.46|5.96|true|oscar davidson|2013-03-01 09:11:58.703239|95.12|linguistics +89|278|65593|4294967432|8.61|16.38|false|tom brown|2013-03-01 09:11:58.703266|84.60|quiet hour +11|425|65624|4294967305|16.08|41.83|true|tom carson|2013-03-01 09:11:58.703324|14.08|forestry +61|478|65575|4294967442|96.73|43.85|true|ulysses ellison|2013-03-01 09:11:58.703218|61.41|history +54|501|65722|4294967336|42.67|30.41|true|irene laertes|2013-03-01 09:11:58.703153|4.11|undecided +58|290|65596|4294967532|41.62|31.16|false|oscar nixon|2013-03-01 09:11:58.703123|94.35|chemistry +17|350|65571|4294967428|19.03|36.22|false|victor hernandez|2013-03-01 09:11:58.703295|71.57|debate +49|291|65548|4294967403|77.02|46.73|true|victor white|2013-03-01 09:11:58.703221|51.90|zync studies +17|495|65689|4294967373|41.45|42.96|true|oscar quirinius|2013-03-01 09:11:58.703197|27.51|chemistry +1|418|65670|4294967534|6.29|30.62|true|yuri carson|2013-03-01 09:11:58.703089|93.66|linguistics +49|345|65614|4294967318|50.02|2.89|false|ethan falkner|2013-03-01 09:11:58.703255|94.47|linguistics +123|419|65654|4294967442|97.87|40.84|true|luke ichabod|2013-03-01 09:11:58.703159|88.23|linguistics +66|359|65556|4294967532|86.93|23.63|true|zach king|2013-03-01 09:11:58.703181|99.94|study skills +50|290|65630|4294967304|10.20|21.01|false|oscar ellison|2013-03-01 09:11:58.703139|72.13|opthamology +118|334|65586|4294967525|38.79|31.63|true|mike king|2013-03-01 09:11:58.703307|87.57|philosophy +60|454|65706|4294967443|47.32|3.27|true|fred polk|2013-03-01 09:11:58.703278|9.74|joggying +25|291|65746|4294967407|60.26|42.76|false|wendy nixon|2013-03-01 09:11:58.703137|34.75|american history +108|391|65717|4294967336|43.71|41.73|false|rachel white|2013-03-01 09:11:58.703272|33.13|wind surfing +0|267|65608|4294967523|46.87|4.48|true|jessica quirinius|2013-03-01 09:11:58.703278|69.42|geology +46|360|65702|4294967541|46.21|20.42|false|jessica underhill|2013-03-01 09:11:58.703117|55.68|linguistics +88|404|65730|4294967335|17.74|49.67|false|katie van buren|2013-03-01 09:11:58.703198|30.60|biology +41|275|65694|4294967503|1.91|44.92|true|sarah carson|2013-03-01 09:11:58.703096|65.86|debate +93|426|65714|4294967478|83.40|20.19|false|quinn davidson|2013-03-01 09:11:58.703093|14.85|debate +78|448|65568|4294967513|74.02|10.41|true|quinn garcia|2013-03-01 09:11:58.703107|16.26|quiet hour +77|283|65711|4294967523|10.17|28.61|false|gabriella falkner|2013-03-01 09:11:58.703106|96.10|topology +45|377|65786|4294967364|92.37|38.14|false|alice steinbeck|2013-03-01 09:11:58.703299|29.32|wind surfing +117|341|65588|4294967496|51.29|28.71|true|jessica brown|2013-03-01 09:11:58.703262|98.33|philosophy +5|485|65635|4294967306|2.20|40.21|false|yuri nixon|2013-03-01 09:11:58.703256|43.80|history +96|315|65769|4294967323|94.68|10.21|true|mike king|2013-03-01 09:11:58.703109|38.98|linguistics +5|295|65621|4294967329|3.28|6.58|true|tom van buren|2013-03-01 09:11:58.703244|25.67|joggying +79|340|65744|4294967531|79.49|19.72|false|ulysses robinson|2013-03-01 09:11:58.703197|46.98|wind surfing +18|312|65648|4294967547|72.04|9.99|true|fred falkner|2013-03-01 09:11:58.703159|64.06|industrial engineering +17|382|65769|4294967351|57.64|38.92|false|fred laertes|2013-03-01 09:11:58.703242|91.49|biology +9|293|65545|4294967527|31.67|43.30|false|luke johnson|2013-03-01 09:11:58.703325|65.81|joggying +39|340|65650|4294967365|22.12|22.27|false|xavier quirinius|2013-03-01 09:11:58.703082|37.25|nap time +5|292|65598|4294967394|79.38|39.63|true|mike ellison|2013-03-01 09:11:58.703315|53.04|mathematics +71|298|65540|4294967510|91.63|9.60|false|gabriella zipper|2013-03-01 09:11:58.703140|68.14|geology +46|303|65562|4294967402|96.29|28.91|false|ethan laertes|2013-03-01 09:11:58.703147|54.94|debate +99|282|65659|4294967394|30.62|34.72|true|wendy garcia|2013-03-01 09:11:58.703283|94.30|mathematics +67|265|65562|4294967421|53.06|4.92|false|jessica xylophone|2013-03-01 09:11:58.703182|69.41|quiet hour +53|274|65658|4294967545|95.28|48.78|false|luke polk|2013-03-01 09:11:58.703095|77.66|topology +71|496|65643|4294967349|84.72|14.22|true|calvin ovid|2013-03-01 09:11:58.703252|50.79|chemistry +19|281|65542|4294967452|29.41|16.87|false|zach xylophone|2013-03-01 09:11:58.703318|78.01|quiet hour +44|330|65647|4294967339|39.34|33.30|true|katie king|2013-03-01 09:11:58.703224|58.03|education +109|283|65675|4294967429|88.91|28.77|true|ulysses white|2013-03-01 09:11:58.703244|35.33|yard duty +59|373|65589|4294967359|9.35|22.19|true|luke falkner|2013-03-01 09:11:58.703112|72.30|xylophone band +80|407|65588|4294967371|51.25|38.62|false|david allen|2013-03-01 09:11:58.703215|64.63|kindergarten +31|457|65656|4294967394|29.36|31.68|true|ulysses ovid|2013-03-01 09:11:58.703192|64.44|nap time +33|319|65617|4294967431|64.65|15.09|true|tom laertes|2013-03-01 09:11:58.703269|47.45|kindergarten +41|334|65776|4294967432|71.89|47.91|false|ulysses johnson|2013-03-01 09:11:58.703272|61.41|american history +97|349|65769|4294967386|12.90|42.00|false|irene quirinius|2013-03-01 09:11:58.703239|58.05|xylophone band +40|331|65705|4294967470|91.78|31.30|false|oscar van buren|2013-03-01 09:11:58.703250|25.89|zync studies +119|310|65679|4294967319|14.21|10.38|true|sarah carson|2013-03-01 09:11:58.703221|64.15|industrial engineering +38|493|65788|4294967427|60.85|47.66|true|ethan white|2013-03-01 09:11:58.703173|25.77|zync studies +70|285|65718|4294967353|37.10|35.85|false|mike ellison|2013-03-01 09:11:58.703167|89.67|kindergarten +93|403|65752|4294967497|97.65|47.03|false|luke miller|2013-03-01 09:11:58.703133|28.92|biology +48|501|65720|4294967525|2.79|20.39|true|alice allen|2013-03-01 09:11:58.703093|22.34|wind surfing +88|307|65747|4294967389|31.86|20.97|true|jessica carson|2013-03-01 09:11:58.703194|15.07|joggying +66|259|65767|4294967378|51.72|5.11|true|gabriella falkner|2013-03-01 09:11:58.703119|90.88|xylophone band +118|292|65637|4294967403|49.68|11.16|false|jessica polk|2013-03-01 09:11:58.703262|48.88|education +49|448|65742|4294967470|82.34|30.04|true|yuri polk|2013-03-01 09:11:58.703171|24.94|forestry +93|326|65678|4294967428|45.19|1.71|true|david white|2013-03-01 09:11:58.703101|8.72|industrial engineering +74|298|65773|4294967400|21.80|28.85|false|oscar xylophone|2013-03-01 09:11:58.703124|47.09|religion +96|263|65769|4294967532|53.02|4.04|false|calvin quirinius|2013-03-01 09:11:58.703128|11.45|forestry +11|382|65779|4294967345|62.72|40.27|false|david davidson|2013-03-01 09:11:58.703176|28.20|geology +123|284|65783|4294967301|60.26|37.08|true|victor davidson|2013-03-01 09:11:58.703227|17.65|forestry +58|478|65684|4294967439|95.53|14.16|true|ulysses van buren|2013-03-01 09:11:58.703076|67.34|values clariffication +27|256|65599|4294967383|89.55|16.61|true|xavier quirinius|2013-03-01 09:11:58.703304|41.61|linguistics +66|372|65718|4294967401|83.87|28.64|false|yuri underhill|2013-03-01 09:11:58.703117|33.35|education +82|337|65662|4294967453|11.57|45.53|false|wendy underhill|2013-03-01 09:11:58.703299|27.89|wind surfing +94|485|65735|4294967472|69.88|14.92|false|victor hernandez|2013-03-01 09:11:58.703193|28.42|topology +101|259|65757|4294967550|82.97|42.30|false|nick miller|2013-03-01 09:11:58.703190|90.09|study skills +48|443|65675|4294967322|57.67|9.40|true|nick robinson|2013-03-01 09:11:58.703228|4.19|biology +60|309|65743|4294967450|15.90|7.53|true|xavier laertes|2013-03-01 09:11:58.703289|38.73|wind surfing +16|323|65748|4294967471|6.84|17.55|true|zach ellison|2013-03-01 09:11:58.703164|77.52|religion +59|484|65743|4294967483|66.67|8.09|true|victor king|2013-03-01 09:11:58.703297|52.65|debate +2|507|65764|4294967544|72.51|30.90|false|katie young|2013-03-01 09:11:58.703223|57.10|opthamology +101|315|65749|4294967519|85.14|5.23|true|mike steinbeck|2013-03-01 09:11:58.703131|73.24|topology +38|290|65628|4294967473|56.07|37.96|false|wendy allen|2013-03-01 09:11:58.703322|2.48|philosophy +117|400|65755|4294967399|91.48|17.46|true|priscilla johnson|2013-03-01 09:11:58.703267|22.44|history +120|325|65758|4294967540|79.19|11.26|true|wendy underhill|2013-03-01 09:11:58.703226|94.90|debate diff --git a/sql/hive/src/test/resources/data/files/part.rc b/sql/hive/src/test/resources/data/files/part.rc new file mode 100644 index 0000000000000..e39e72ea58bb2 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/part.rc differ diff --git a/sql/hive/src/test/resources/data/files/part.seq b/sql/hive/src/test/resources/data/files/part.seq new file mode 100644 index 0000000000000..b919eb28db697 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/part.seq differ diff --git a/sql/hive/src/test/resources/data/files/part_tiny.txt b/sql/hive/src/test/resources/data/files/part_tiny.txt new file mode 100644 index 0000000000000..f6973fd90a226 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/part_tiny.txt @@ -0,0 +1,26 @@ +121152almond antique burnished rose metallicManufacturer#1Brand#14PROMO PLATED TIN2JUMBO BOX1173.15e pinto beans h +121152almond antique burnished rose metallicManufacturer#1Brand#14PROMO PLATED TIN2JUMBO BOX1173.15e pinto beans h +85768almond antique chartreuse lavender yellowManufacturer#1Brand#12LARGE BRUSHED STEEL34SM BAG1753.76refull +110592almond antique salmon chartreuse burlywoodManufacturer#1Brand#15PROMO BURNISHED NICKEL6JUMBO PKG1602.59 to the furiously +86428almond aquamarine burnished black steelManufacturer#1Brand#12STANDARD ANODIZED STEEL28WRAP BAG1414.42arefully +65667almond aquamarine pink moccasin thistleManufacturer#1Brand#12LARGE BURNISHED STEEL42JUMBO CASE1632.66e across the expr +105685almond antique violet chocolate turquoiseManufacturer#2Brand#22MEDIUM ANODIZED COPPER14MED CAN1690.68ly pending requ +191709almond antique violet turquoise frostedManufacturer#2Brand#22ECONOMY POLISHED STEEL40MED BOX1800.7 haggle +146985almond aquamarine midnight light salmonManufacturer#2Brand#23MEDIUM BURNISHED COPPER2SM CASE2031.98s cajole caref +132666almond aquamarine rose maroon antiqueManufacturer#2Brand#24SMALL POLISHED NICKEL25MED BOX1698.66even +195606almond aquamarine sandy cyan gainsboroManufacturer#2Brand#25STANDARD PLATED TIN18SM PKG1701.6ic de +90681almond antique chartreuse khaki whiteManufacturer#3Brand#31MEDIUM BURNISHED TIN17SM CASE1671.68are slyly after the sl +17273almond antique forest lavender goldenrodManufacturer#3Brand#35PROMO ANODIZED TIN14JUMBO CASE1190.27along the +112398almond antique metallic orange dimManufacturer#3Brand#32MEDIUM BURNISHED BRASS19JUMBO JAR1410.39ole car +40982almond antique misty red oliveManufacturer#3Brand#32ECONOMY PLATED COPPER1LG PKG1922.98c foxes can s +144293almond antique olive coral navajoManufacturer#3Brand#34STANDARD POLISHED STEEL45JUMBO CAN1337.29ag furiously about +49671almond antique gainsboro frosted violetManufacturer#4Brand#41SMALL BRUSHED BRASS10SM BOX1620.67ccounts run quick +48427almond antique violet mint lemonManufacturer#4Brand#42PROMO POLISHED STEEL39SM CASE1375.42hely ironic i +45261almond aquamarine floral ivory bisqueManufacturer#4Brand#42SMALL PLATED STEEL27WRAP CASE1206.26careful +17927almond aquamarine yellow dodger mintManufacturer#4Brand#41ECONOMY BRUSHED COPPER7SM PKG1844.92ites. eve +33357almond azure aquamarine papaya violetManufacturer#4Brand#41STANDARD ANODIZED TIN12WRAP CASE1290.35reful +192697almond antique blue firebrick mintManufacturer#5Brand#52MEDIUM BURNISHED TIN31LG DRUM1789.69ickly ir +42669almond antique medium spring khakiManufacturer#5Brand#51STANDARD BURNISHED TIN6MED CAN1611.66sits haggl +155733almond antique sky peru orangeManufacturer#5Brand#53SMALL PLATED BRASS2WRAP DRUM1788.73furiously. bra +15103almond aquamarine dodger light gainsboroManufacturer#5Brand#53ECONOMY BURNISHED STEEL46LG PACK1018.1packages hinder carefu +78486almond azure blanched chiffon midnightManufacturer#5Brand#52LARGE BRUSHED BRASS23MED BAG1464.48hely blith diff --git a/sql/hive/src/test/resources/data/files/person age.txt b/sql/hive/src/test/resources/data/files/person age.txt new file mode 100644 index 0000000000000..c902284c11155 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/person age.txt @@ -0,0 +1,5 @@ +John 23 +Tom 17 +Jim 31 +Boby 9 +Paul 51 \ No newline at end of file diff --git a/sql/hive/src/test/resources/data/files/primitive_type_arrays.txt b/sql/hive/src/test/resources/data/files/primitive_type_arrays.txt new file mode 100644 index 0000000000000..2ab5f42c55979 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/primitive_type_arrays.txt @@ -0,0 +1 @@ +54321987216432168410001003572461truefalse3.1411.6182.7181.4143.141591.618032.718281.41421portosathosaramis1970-01-16 12:50:35.2421970-01-07 00:54:54.4421970-01-05 13:51:04.042 diff --git a/sql/hive/src/test/resources/data/files/pw17.txt b/sql/hive/src/test/resources/data/files/pw17.txt new file mode 100644 index 0000000000000..041944a1b022b --- /dev/null +++ b/sql/hive/src/test/resources/data/files/pw17.txt @@ -0,0 +1,4 @@ +1 12 1 +2 23 2 +4 56 3 +6 8 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/data/files/sales.txt b/sql/hive/src/test/resources/data/files/sales.txt new file mode 100644 index 0000000000000..6407b72051b51 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/sales.txt @@ -0,0 +1,2 @@ +Joe 2 +Hank 2 diff --git a/sql/hive/src/test/resources/data/files/sample-queryplan-in-history.txt b/sql/hive/src/test/resources/data/files/sample-queryplan-in-history.txt new file mode 100644 index 0000000000000..79c034dabed01 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/sample-queryplan-in-history.txt @@ -0,0 +1 @@ +Counters plan="{"queryId":"rmurthy_20090806105454","queryType":null,"queryAttributes":{"queryString":"select count(1) from nectar_fbalias_r where ds = '2009-08-03'"},"queryCounters":"null","stageGraph":{"nodeType":"1","roots":"null","adjacencyList":"]"},"stageList":[{"stageId":"Stage-1","stageType":"3","stageAttributes":"null","stageCounters":"null","taskList":[{"taskId":"Stage-1_map","taskType":"0","taskAttributes":"null","taskCounters":"null","operatorGraph":{"nodeType":"0","roots":"null","adjacencyList":[{"node":"TS_0","children":["FIL_8"],"adjacencyType":"0"},{"node":"FIL_8","children":["FIL_1"],"adjacencyType":"0"},{"node":"FIL_1","children":["SEL_2"],"adjacencyType":"0"},{"node":"SEL_2","children":["GBY_3"],"adjacencyType":"0"},{"node":"GBY_3","children":["RS_4"],"adjacencyType":"0"}]},"operatorList":[{"operatorId":"TS_0","operatorType":"9","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_TS_0_TIME_TAKEN":"5048","CNTR_NAME_TS_0_NUM_INPUT_ROWS":"52482","CNTR_NAME_TS_0_NUM_OUTPUT_ROWS":"52482"}},{"operatorId":"FIL_8","operatorType":"3","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_FIL_8_NUM_INPUT_ROWS":"52482","CNTR_NAME_FIL_8_NUM_OUTPUT_ROWS":"52482","CNTR_NAME_FIL_8_TIME_TAKEN":"4860"}},{"operatorId":"FIL_1","operatorType":"3","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_FIL_1_TIME_TAKEN":"1368","CNTR_NAME_FIL_1_NUM_INPUT_ROWS":"52482","CNTR_NAME_FIL_1_NUM_OUTPUT_ROWS":"52482"}},{"operatorId":"SEL_2","operatorType":"8","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_SEL_2_TIME_TAKEN":"604","CNTR_NAME_SEL_2_NUM_OUTPUT_ROWS":"52482","CNTR_NAME_SEL_2_NUM_INPUT_ROWS":"52482"}},{"operatorId":"GBY_3","operatorType":"5","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_GBY_3_NUM_INPUT_ROWS":"52482","CNTR_NAME_GBY_3_TIME_TAKEN":"404","CNTR_NAME_GBY_3_NUM_OUTPUT_ROWS":"64"}},{"operatorId":"RS_4","operatorType":"11","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_RS_4_NUM_INPUT_ROWS":"64","CNTR_NAME_RS_4_TIME_TAKEN":"119","CNTR_NAME_RS_4_NUM_OUTPUT_ROWS":"0"}}],"done":"false"},{"taskId":"Stage-1_reduce","taskType":"1","taskAttributes":"null","taskCounters":"null","operatorGraph":{"nodeType":"0","roots":"null","adjacencyList":[{"node":"GBY_5","children":["SEL_6"],"adjacencyType":"0"},{"node":"SEL_6","children":["FS_7"],"adjacencyType":"0"}]},"operatorList":[{"operatorId":"GBY_5","operatorType":"5","operatorAttributes":"null","operatorCounters":"null"},{"operatorId":"SEL_6","operatorType":"8","operatorAttributes":"null","operatorCounters":"null"},{"operatorId":"FS_7","operatorType":"10","operatorAttributes":"null","operatorCounters":"null"}],"done":"false"}],"done":"false"}],"done":"false"}" TIME="1249581360419" diff --git a/sql/hive/src/test/resources/data/files/sample-queryplan.txt b/sql/hive/src/test/resources/data/files/sample-queryplan.txt new file mode 100644 index 0000000000000..3b9167b4ac718 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/sample-queryplan.txt @@ -0,0 +1 @@ +{"queryId":"rmurthy_20090806105454","queryType":null,"queryAttributes":{"queryString":"select count(1) from nectar_fbalias_r where ds = '2009-08-03'"},"queryCounters":"null","stageGraph":{"nodeType":"1","roots":"null","adjacencyList":"]"},"stageList":[{"stageId":"Stage-1","stageType":"3","stageAttributes":"null","stageCounters":"null","taskList":[{"taskId":"Stage-1_map","taskType":"0","taskAttributes":"null","taskCounters":"null","operatorGraph":{"nodeType":"0","roots":"null","adjacencyList":[{"node":"TS_0","children":["FIL_8"],"adjacencyType":"0"},{"node":"FIL_8","children":["FIL_1"],"adjacencyType":"0"},{"node":"FIL_1","children":["SEL_2"],"adjacencyType":"0"},{"node":"SEL_2","children":["GBY_3"],"adjacencyType":"0"},{"node":"GBY_3","children":["RS_4"],"adjacencyType":"0"}]},"operatorList":[{"operatorId":"TS_0","operatorType":"9","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_TS_0_TIME_TAKEN":"4420","CNTR_NAME_TS_0_NUM_INPUT_ROWS":"47303","CNTR_NAME_TS_0_NUM_OUTPUT_ROWS":"47303"}},{"operatorId":"FIL_8","operatorType":"3","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_FIL_8_NUM_INPUT_ROWS":"47303","CNTR_NAME_FIL_8_NUM_OUTPUT_ROWS":"47303","CNTR_NAME_FIL_8_TIME_TAKEN":"4251"}},{"operatorId":"FIL_1","operatorType":"3","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_FIL_1_TIME_TAKEN":"1249","CNTR_NAME_FIL_1_NUM_INPUT_ROWS":"47303","CNTR_NAME_FIL_1_NUM_OUTPUT_ROWS":"47303"}},{"operatorId":"SEL_2","operatorType":"8","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_SEL_2_TIME_TAKEN":"550","CNTR_NAME_SEL_2_NUM_OUTPUT_ROWS":"47303","CNTR_NAME_SEL_2_NUM_INPUT_ROWS":"47303"}},{"operatorId":"GBY_3","operatorType":"5","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_GBY_3_NUM_INPUT_ROWS":"47303","CNTR_NAME_GBY_3_TIME_TAKEN":"368","CNTR_NAME_GBY_3_NUM_OUTPUT_ROWS":"57"}},{"operatorId":"RS_4","operatorType":"11","operatorAttributes":"null","operatorCounters":{"CNTR_NAME_RS_4_NUM_INPUT_ROWS":"57","CNTR_NAME_RS_4_TIME_TAKEN":"105","CNTR_NAME_RS_4_NUM_OUTPUT_ROWS":"0"}}],"done":"false"},{"taskId":"Stage-1_reduce","taskType":"1","taskAttributes":"null","taskCounters":"null","operatorGraph":{"nodeType":"0","roots":"null","adjacencyList":[{"node":"GBY_5","children":["SEL_6"],"adjacencyType":"0"},{"node":"SEL_6","children":["FS_7"],"adjacencyType":"0"}]},"operatorList":[{"operatorId":"GBY_5","operatorType":"5","operatorAttributes":"null","operatorCounters":"null"},{"operatorId":"SEL_6","operatorType":"8","operatorAttributes":"null","operatorCounters":"null"},{"operatorId":"FS_7","operatorType":"10","operatorAttributes":"null","operatorCounters":"null"}],"done":"false"}],"done":"false"}],"done":"false"} diff --git a/sql/hive/src/test/resources/data/files/smallsrcsortbucket1outof4.txt b/sql/hive/src/test/resources/data/files/smallsrcsortbucket1outof4.txt new file mode 100644 index 0000000000000..1175eae354dc9 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/smallsrcsortbucket1outof4.txt @@ -0,0 +1,5 @@ +0val_0 +103val_103 +169val_169 +172val_172 +374val_374 diff --git a/sql/hive/src/test/resources/data/files/smallsrcsortbucket2outof4.txt b/sql/hive/src/test/resources/data/files/smallsrcsortbucket2outof4.txt new file mode 100644 index 0000000000000..59347ff9a9170 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/smallsrcsortbucket2outof4.txt @@ -0,0 +1,5 @@ +180val_180 +221val_221 +379val_379 +478val_478 +74val_74 diff --git a/sql/hive/src/test/resources/data/files/smallsrcsortbucket3outof4.txt b/sql/hive/src/test/resources/data/files/smallsrcsortbucket3outof4.txt new file mode 100644 index 0000000000000..354f45da73862 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/smallsrcsortbucket3outof4.txt @@ -0,0 +1,5 @@ +233val_233 +424val_424 +468val_468 +53val_53 +97val_97 diff --git a/sql/hive/src/test/resources/data/files/smallsrcsortbucket4outof4.txt b/sql/hive/src/test/resources/data/files/smallsrcsortbucket4outof4.txt new file mode 100644 index 0000000000000..6aecf76a4022e --- /dev/null +++ b/sql/hive/src/test/resources/data/files/smallsrcsortbucket4outof4.txt @@ -0,0 +1,5 @@ +146val_146 +193val_193 +432val_432 +65val_65 +83val_83 diff --git a/sql/hive/src/test/resources/data/files/smb_bucket_input.rc b/sql/hive/src/test/resources/data/files/smb_bucket_input.rc new file mode 100644 index 0000000000000..61814607246d1 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/smb_bucket_input.rc differ diff --git a/sql/hive/src/test/resources/data/files/smb_bucket_input.txt b/sql/hive/src/test/resources/data/files/smb_bucket_input.txt new file mode 100644 index 0000000000000..e3a7e2977bc68 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/smb_bucket_input.txt @@ -0,0 +1,7 @@ +4val_356 +484val_169 +1000val_1000 +2000val_169 +3000val_169 +4000val_125 +5000val_125 diff --git a/sql/hive/src/test/resources/data/files/smbbucket_1.rc b/sql/hive/src/test/resources/data/files/smbbucket_1.rc new file mode 100644 index 0000000000000..51dbe23ae8631 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/smbbucket_1.rc differ diff --git a/sql/hive/src/test/resources/data/files/smbbucket_1.txt b/sql/hive/src/test/resources/data/files/smbbucket_1.txt new file mode 100644 index 0000000000000..6093b2bcc301e --- /dev/null +++ b/sql/hive/src/test/resources/data/files/smbbucket_1.txt @@ -0,0 +1,5 @@ +1val_1 +3val_3 +4val_4 +5val_5 +10val_10 diff --git a/sql/hive/src/test/resources/data/files/smbbucket_2.rc b/sql/hive/src/test/resources/data/files/smbbucket_2.rc new file mode 100644 index 0000000000000..73a641acaa9a0 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/smbbucket_2.rc differ diff --git a/sql/hive/src/test/resources/data/files/smbbucket_2.txt b/sql/hive/src/test/resources/data/files/smbbucket_2.txt new file mode 100644 index 0000000000000..430a0ca887730 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/smbbucket_2.txt @@ -0,0 +1,4 @@ +20val_20 +23val_23 +25val_25 +30val_30 diff --git a/sql/hive/src/test/resources/data/files/smbbucket_3.rc b/sql/hive/src/test/resources/data/files/smbbucket_3.rc new file mode 100644 index 0000000000000..c0e8a590de753 Binary files /dev/null and b/sql/hive/src/test/resources/data/files/smbbucket_3.rc differ diff --git a/sql/hive/src/test/resources/data/files/smbbucket_3.txt b/sql/hive/src/test/resources/data/files/smbbucket_3.txt new file mode 100644 index 0000000000000..8339550931d7e --- /dev/null +++ b/sql/hive/src/test/resources/data/files/smbbucket_3.txt @@ -0,0 +1,6 @@ +4val_4 +10val_10 +17val_17 +19val_19 +20val_20 +23val_23 diff --git a/sql/hive/src/test/resources/data/files/source.txt b/sql/hive/src/test/resources/data/files/source.txt new file mode 100644 index 0000000000000..567d3b07f7ecc --- /dev/null +++ b/sql/hive/src/test/resources/data/files/source.txt @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRC x; + +SELECT x.* FROM SRC x; diff --git a/sql/hive/src/test/resources/data/files/srcbucket0.txt b/sql/hive/src/test/resources/data/files/srcbucket0.txt new file mode 100644 index 0000000000000..c11aec09d961a --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcbucket0.txt @@ -0,0 +1,493 @@ +474val_475 +62val_63 +468val_469 +272val_273 +448val_449 +246val_247 +440val_441 +278val_279 +296val_297 +428val_429 +126val_127 +106val_107 +356val_357 +490val_491 +402val_403 +128val_129 +10val_11 +226val_227 +110val_111 +0val_1 +240val_241 +286val_287 +408val_409 +476val_477 +482val_483 +48val_49 +424val_425 +226val_227 +494val_495 +488val_489 +94val_95 +50val_51 +402val_403 +128val_129 +468val_469 +314val_315 +224val_225 +344val_345 +4val_5 +206val_207 +114val_115 +56val_57 +114val_115 +254val_255 +390val_391 +304val_305 +264val_265 +196val_197 +238val_239 +20val_21 +492val_493 +82val_83 +58val_59 +86val_87 +438val_439 +360val_361 +222val_223 +42val_43 +338val_339 +68val_69 +16val_17 +492val_493 +376val_377 +120val_121 +306val_307 +426val_427 +132val_133 +446val_447 +386val_387 +388val_389 +184val_185 +284val_285 +246val_247 +262val_263 +122val_123 +438val_439 +390val_391 +352val_353 +226val_227 +328val_329 +382val_383 +342val_343 +480val_481 +102val_103 +480val_481 +318val_319 +392val_393 +476val_477 +258val_259 +174val_175 +252val_253 +114val_115 +264val_265 +48val_49 +336val_337 +340val_341 +390val_391 +484val_485 +6val_7 +260val_261 +2val_3 +170val_171 +164val_165 +118val_119 +310val_311 +104val_105 +80val_81 +326val_327 +450val_451 +140val_141 +212val_213 +308val_309 +30val_31 +358val_359 +416val_417 +42val_43 +386val_387 +454val_455 +364val_365 +20val_21 +52val_53 +40val_41 +8val_9 +168val_169 +384val_385 +324val_325 +310val_311 +206val_207 +404val_405 +206val_207 +226val_227 +262val_263 +260val_261 +328val_329 +322val_323 +122val_123 +404val_405 +384val_385 +76val_77 +116val_117 +42val_43 +104val_105 +406val_407 +32val_33 +132val_133 +192val_193 +58val_59 +70val_71 +356val_357 +352val_353 +52val_53 +330val_331 +138val_139 +160val_161 +454val_455 +76val_77 +174val_175 +412val_413 +16val_17 +204val_205 +126val_127 +274val_275 +374val_375 +494val_495 +216val_217 +470val_471 +196val_197 +302val_303 +450val_451 +12val_13 +398val_399 +334val_335 +384val_385 +60val_61 +442val_443 +52val_53 +404val_405 +446val_447 +300val_301 +0val_1 +268val_269 +392val_393 +104val_105 +436val_437 +156val_157 +118val_119 +172val_173 +244val_245 +6val_7 +284val_285 +164val_165 +136val_137 +462val_463 +432val_433 +496val_497 +144val_145 +408val_409 +152val_153 +382val_383 +348val_349 +122val_123 +292val_293 +182val_183 +474val_475 +310val_311 +52val_53 +486val_487 +152val_153 +378val_379 +414val_415 +256val_257 +292val_293 +412val_413 +40val_41 +478val_479 +178val_179 +100val_101 +156val_157 +228val_229 +22val_23 +248val_249 +402val_403 +62val_63 +162val_163 +244val_245 +276val_277 +46val_47 +78val_79 +134val_135 +196val_197 +410val_411 +82val_83 +440val_441 +100val_101 +308val_309 +430val_431 +468val_469 +152val_153 +138val_139 +76val_77 +300val_301 +478val_479 +118val_119 +178val_179 +242val_243 +244val_245 +238val_238 +86val_86 +278val_278 +98val_98 +484val_484 +150val_150 +224val_224 +66val_66 +128val_128 +146val_146 +406val_406 +374val_374 +152val_152 +82val_82 +166val_166 +430val_430 +252val_252 +292val_292 +338val_338 +446val_446 +394val_394 +482val_482 +174val_174 +494val_494 +466val_466 +208val_208 +174val_174 +396val_396 +162val_162 +266val_266 +342val_342 +0val_0 +128val_128 +316val_316 +302val_302 +438val_438 +170val_170 +20val_20 +378val_378 +92val_92 +72val_72 +4val_4 +280val_280 +208val_208 +356val_356 +382val_382 +498val_498 +386val_386 +192val_192 +286val_286 +176val_176 +54val_54 +138val_138 +216val_216 +430val_430 +278val_278 +176val_176 +318val_318 +332val_332 +180val_180 +284val_284 +12val_12 +230val_230 +260val_260 +404val_404 +384val_384 +272val_272 +138val_138 +84val_84 +348val_348 +466val_466 +58val_58 +8val_8 +230val_230 +208val_208 +348val_348 +24val_24 +172val_172 +42val_42 +158val_158 +496val_496 +0val_0 +322val_322 +468val_468 +454val_454 +100val_100 +298val_298 +418val_418 +96val_96 +26val_26 +230val_230 +120val_120 +404val_404 +436val_436 +156val_156 +468val_468 +308val_308 +196val_196 +288val_288 +98val_98 +282val_282 +318val_318 +318val_318 +470val_470 +316val_316 +0val_0 +490val_490 +364val_364 +118val_118 +134val_134 +282val_282 +138val_138 +238val_238 +118val_118 +72val_72 +90val_90 +10val_10 +306val_306 +224val_224 +242val_242 +392val_392 +272val_272 +242val_242 +452val_452 +226val_226 +402val_402 +396val_396 +58val_58 +336val_336 +168val_168 +34val_34 +472val_472 +322val_322 +498val_498 +160val_160 +42val_42 +430val_430 +458val_458 +78val_78 +76val_76 +492val_492 +218val_218 +228val_228 +138val_138 +30val_30 +64val_64 +468val_468 +76val_76 +74val_74 +342val_342 +230val_230 +368val_368 +296val_296 +216val_216 +344val_344 +274val_274 +116val_116 +256val_256 +70val_70 +480val_480 +288val_288 +244val_244 +438val_438 +128val_128 +432val_432 +202val_202 +316val_316 +280val_280 +2val_2 +80val_80 +44val_44 +104val_104 +466val_466 +366val_366 +406val_406 +190val_190 +406val_406 +114val_114 +258val_258 +90val_90 +262val_262 +348val_348 +424val_424 +12val_12 +396val_396 +164val_164 +454val_454 +478val_478 +298val_298 +164val_164 +424val_424 +382val_382 +70val_70 +480val_480 +24val_24 +104val_104 +70val_70 +438val_438 +414val_414 +200val_200 +360val_360 +248val_248 +444val_444 +120val_120 +230val_230 +478val_478 +178val_178 +468val_468 +310val_310 +460val_460 +480val_480 +136val_136 +172val_172 +214val_214 +462val_462 +406val_406 +454val_454 +384val_384 +256val_256 +26val_26 +134val_134 +384val_384 +18val_18 +462val_462 +492val_492 +100val_100 +298val_298 +498val_498 +146val_146 +458val_458 +362val_362 +186val_186 +348val_348 +18val_18 +344val_344 +84val_84 +28val_28 +448val_448 +152val_152 +348val_348 +194val_194 +414val_414 +222val_222 +126val_126 +90val_90 +400val_400 +200val_200 diff --git a/sql/hive/src/test/resources/data/files/srcbucket1.txt b/sql/hive/src/test/resources/data/files/srcbucket1.txt new file mode 100644 index 0000000000000..49bfa85498366 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcbucket1.txt @@ -0,0 +1,507 @@ +281val_282 +179val_180 +291val_292 +271val_272 +217val_218 +135val_136 +167val_168 +423val_424 +413val_414 +245val_246 +455val_456 +425val_426 +241val_242 +177val_178 +231val_232 +287val_288 +31val_32 +373val_374 +447val_448 +443val_444 +175val_176 +147val_148 +249val_250 +21val_22 +273val_274 +441val_442 +371val_372 +153val_154 +217val_218 +33val_34 +35val_36 +421val_422 +243val_244 +133val_134 +333val_334 +15val_16 +391val_392 +343val_344 +275val_276 +485val_486 +293val_294 +241val_242 +85val_86 +477val_478 +455val_456 +99val_100 +335val_336 +367val_368 +59val_60 +485val_486 +393val_394 +349val_350 +11val_12 +161val_162 +123val_124 +409val_410 +265val_266 +497val_498 +63val_64 +277val_278 +135val_136 +3val_4 +101val_102 +331val_332 +209val_210 +281val_282 +239val_240 +389val_390 +235val_236 +165val_166 +11val_12 +129val_130 +257val_258 +71val_72 +289val_290 +453val_454 +421val_422 +5val_6 +249val_250 +323val_324 +467val_468 +411val_412 +175val_176 +429val_430 +281val_282 +185val_186 +147val_148 +119val_120 +473val_474 +347val_348 +213val_214 +393val_394 +427val_428 +291val_292 +65val_66 +121val_122 +375val_376 +191val_192 +129val_130 +197val_198 +491val_492 +369val_370 +351val_352 +23val_24 +349val_350 +497val_498 +487val_488 +331val_332 +409val_410 +475val_476 +463val_464 +183val_184 +177val_178 +399val_400 +15val_16 +149val_150 +77val_78 +275val_276 +87val_88 +161val_162 +75val_76 +443val_444 +407val_408 +189val_190 +305val_306 +367val_368 +349val_350 +51val_52 +355val_356 +363val_364 +19val_20 +117val_118 +47val_48 +121val_122 +241val_242 +405val_406 +239val_240 +119val_120 +11val_12 +49val_50 +143val_144 +153val_154 +341val_342 +21val_22 +105val_106 +157val_158 +199val_200 +375val_376 +89val_90 +363val_364 +395val_396 +347val_348 +77val_78 +293val_294 +89val_90 +461val_462 +313val_314 +381val_382 +385val_386 +259val_260 +69val_70 +303val_304 +245val_246 +241val_242 +469val_470 +481val_482 +303val_304 +93val_94 +277val_278 +451val_452 +53val_54 +351val_352 +443val_444 +399val_400 +205val_206 +21val_22 +317val_318 +209val_210 +429val_430 +267val_268 +257val_258 +375val_376 +489val_490 +295val_296 +105val_106 +439val_440 +457val_458 +93val_94 +119val_120 +375val_376 +391val_392 +287val_288 +375val_376 +437val_438 +35val_36 +435val_436 +29val_30 +151val_152 +491val_492 +21val_22 +295val_296 +93val_94 +61val_62 +407val_408 +439val_440 +341val_342 +335val_336 +349val_350 +371val_372 +123val_124 +355val_356 +87val_88 +427val_428 +353val_354 +261val_262 +65val_66 +371val_372 +97val_98 +495val_496 +385val_386 +49val_50 +389val_390 +259val_260 +97val_98 +125val_126 +243val_244 +151val_152 +415val_416 +401val_402 +363val_364 +117val_118 +459val_460 +137val_138 +341val_342 +379val_380 +215val_216 +157val_158 +431val_432 +407val_408 +371val_372 +309val_310 +135val_136 +161val_162 +161val_162 +337val_338 +91val_92 +1val_2 +89val_90 +457val_458 +29val_30 +285val_286 +35val_36 +227val_228 +395val_396 +311val_311 +27val_27 +165val_165 +409val_409 +255val_255 +265val_265 +193val_193 +401val_401 +273val_273 +369val_369 +213val_213 +429val_429 +469val_469 +145val_145 +495val_495 +37val_37 +327val_327 +281val_281 +277val_277 +209val_209 +15val_15 +403val_403 +417val_417 +219val_219 +287val_287 +153val_153 +193val_193 +459val_459 +237val_237 +413val_413 +207val_207 +199val_199 +399val_399 +247val_247 +417val_417 +489val_489 +377val_377 +397val_397 +309val_309 +365val_365 +439val_439 +367val_367 +325val_325 +167val_167 +195val_195 +475val_475 +17val_17 +113val_113 +155val_155 +203val_203 +339val_339 +455val_455 +311val_311 +57val_57 +205val_205 +149val_149 +345val_345 +129val_129 +489val_489 +157val_157 +221val_221 +111val_111 +47val_47 +35val_35 +427val_427 +277val_277 +399val_399 +169val_169 +125val_125 +437val_437 +469val_469 +187val_187 +459val_459 +51val_51 +103val_103 +239val_239 +213val_213 +289val_289 +221val_221 +65val_65 +311val_311 +275val_275 +137val_137 +241val_241 +83val_83 +333val_333 +181val_181 +67val_67 +489val_489 +353val_353 +373val_373 +217val_217 +411val_411 +463val_463 +431val_431 +179val_179 +129val_129 +119val_119 +197val_197 +393val_393 +199val_199 +191val_191 +165val_165 +327val_327 +205val_205 +131val_131 +51val_51 +43val_43 +469val_469 +95val_95 +481val_481 +457val_457 +197val_197 +187val_187 +409val_409 +137val_137 +369val_369 +169val_169 +413val_413 +85val_85 +77val_77 +87val_87 +179val_179 +395val_395 +419val_419 +15val_15 +307val_307 +19val_19 +435val_435 +277val_277 +273val_273 +309val_309 +389val_389 +327val_327 +369val_369 +331val_331 +401val_401 +177val_177 +5val_5 +497val_497 +317val_317 +395val_395 +35val_35 +95val_95 +11val_11 +229val_229 +233val_233 +143val_143 +195val_195 +321val_321 +119val_119 +489val_489 +41val_41 +223val_223 +149val_149 +449val_449 +453val_453 +209val_209 +69val_69 +33val_33 +103val_103 +113val_113 +367val_367 +167val_167 +219val_219 +239val_239 +485val_485 +223val_223 +263val_263 +487val_487 +401val_401 +191val_191 +5val_5 +467val_467 +229val_229 +469val_469 +463val_463 +35val_35 +283val_283 +331val_331 +235val_235 +193val_193 +321val_321 +335val_335 +175val_175 +403val_403 +483val_483 +53val_53 +105val_105 +257val_257 +409val_409 +401val_401 +203val_203 +201val_201 +217val_217 +431val_431 +125val_125 +431val_431 +187val_187 +5val_5 +397val_397 +291val_291 +351val_351 +255val_255 +163val_163 +119val_119 +491val_491 +237val_237 +439val_439 +479val_479 +305val_305 +417val_417 +199val_199 +429val_429 +169val_169 +443val_443 +323val_323 +325val_325 +277val_277 +317val_317 +333val_333 +493val_493 +207val_207 +249val_249 +265val_265 +83val_83 +353val_353 +233val_233 +133val_133 +175val_175 +189val_189 +375val_375 +401val_401 +421val_421 +407val_407 +67val_67 +379val_379 +9val_9 +341val_341 +285val_285 +167val_167 +273val_273 +183val_183 +281val_281 +97val_97 +469val_469 +315val_315 +37val_37 +307val_307 +477val_477 +169val_169 +403val_403 +97val_97 diff --git a/sql/hive/src/test/resources/data/files/srcbucket20.txt b/sql/hive/src/test/resources/data/files/srcbucket20.txt new file mode 100644 index 0000000000000..83344151c2a15 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcbucket20.txt @@ -0,0 +1,118 @@ +165val_165 +484val_484 +150val_150 +224val_224 +66val_66 +213val_213 +374val_374 +495val_495 +37val_37 +327val_327 +15val_15 +338val_338 +459val_459 +466val_466 +396val_396 +309val_309 +367val_367 +0val_0 +455val_455 +316val_316 +345val_345 +129val_129 +378val_378 +4val_4 +356val_356 +169val_169 +125val_125 +437val_437 +286val_286 +187val_187 +176val_176 +459val_459 +51val_51 +103val_103 +239val_239 +213val_213 +176val_176 +275val_275 +260val_260 +404val_404 +217val_217 +84val_84 +466val_466 +8val_8 +411val_411 +172val_172 +129val_129 +158val_158 +0val_0 +26val_26 +165val_165 +327val_327 +51val_51 +404val_404 +95val_95 +282val_282 +187val_187 +316val_316 +169val_169 +77val_77 +0val_0 +118val_118 +282val_282 +419val_419 +15val_15 +118val_118 +19val_19 +224val_224 +309val_309 +389val_389 +327val_327 +242val_242 +392val_392 +242val_242 +396val_396 +95val_95 +11val_11 +143val_143 +228val_228 +33val_33 +103val_103 +367val_367 +239val_239 +480val_480 +202val_202 +316val_316 +235val_235 +80val_80 +44val_44 +466val_466 +257val_257 +190val_190 +114val_114 +396val_396 +217val_217 +125val_125 +187val_187 +480val_480 +491val_491 +305val_305 +444val_444 +169val_169 +323val_323 +480val_480 +136val_136 +172val_172 +462val_462 +26val_26 +462val_462 +341val_341 +183val_183 +84val_84 +37val_37 +448val_448 +194val_194 +477val_477 +169val_169 +400val_400 diff --git a/sql/hive/src/test/resources/data/files/srcbucket21.txt b/sql/hive/src/test/resources/data/files/srcbucket21.txt new file mode 100644 index 0000000000000..c0ccb30d40475 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcbucket21.txt @@ -0,0 +1,120 @@ +27val_27 +409val_409 +265val_265 +401val_401 +166val_166 +430val_430 +287val_287 +207val_207 +199val_199 +247val_247 +489val_489 +162val_162 +397val_397 +342val_342 +195val_195 +155val_155 +203val_203 +339val_339 +302val_302 +438val_438 +489val_489 +221val_221 +92val_92 +111val_111 +427val_427 +382val_382 +386val_386 +430val_430 +221val_221 +137val_137 +180val_180 +12val_12 +67val_67 +489val_489 +353val_353 +272val_272 +463val_463 +119val_119 +496val_496 +393val_393 +100val_100 +298val_298 +199val_199 +191val_191 +96val_96 +481val_481 +409val_409 +470val_470 +137val_137 +85val_85 +364val_364 +306val_306 +272val_272 +331val_331 +401val_401 +452val_452 +177val_177 +5val_5 +317val_317 +34val_34 +229val_229 +195val_195 +430val_430 +119val_119 +489val_489 +78val_78 +41val_41 +492val_492 +449val_449 +218val_218 +30val_30 +74val_74 +342val_342 +368val_368 +485val_485 +70val_70 +401val_401 +191val_191 +5val_5 +438val_438 +467val_467 +229val_229 +463val_463 +283val_283 +331val_331 +335val_335 +104val_104 +409val_409 +401val_401 +258val_258 +203val_203 +12val_12 +478val_478 +298val_298 +382val_382 +5val_5 +70val_70 +397val_397 +104val_104 +70val_70 +438val_438 +119val_119 +360val_360 +199val_199 +478val_478 +317val_317 +207val_207 +265val_265 +353val_353 +214val_214 +133val_133 +375val_375 +401val_401 +67val_67 +379val_379 +492val_492 +100val_100 +298val_298 +9val_9 +126val_126 diff --git a/sql/hive/src/test/resources/data/files/srcbucket22.txt b/sql/hive/src/test/resources/data/files/srcbucket22.txt new file mode 100644 index 0000000000000..f061ea41cc09b --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcbucket22.txt @@ -0,0 +1,124 @@ +86val_86 +255val_255 +273val_273 +369val_369 +406val_406 +152val_152 +145val_145 +277val_277 +82val_82 +417val_417 +219val_219 +446val_446 +394val_394 +237val_237 +482val_482 +174val_174 +413val_413 +208val_208 +174val_174 +417val_417 +365val_365 +266val_266 +439val_439 +325val_325 +167val_167 +475val_475 +17val_17 +57val_57 +149val_149 +170val_170 +20val_20 +280val_280 +35val_35 +277val_277 +208val_208 +192val_192 +138val_138 +318val_318 +332val_332 +284val_284 +181val_181 +138val_138 +208val_208 +24val_24 +431val_431 +42val_42 +468val_468 +156val_156 +468val_468 +196val_196 +288val_288 +457val_457 +318val_318 +318val_318 +369val_369 +413val_413 +134val_134 +138val_138 +307val_307 +435val_435 +277val_277 +273val_273 +369val_369 +226val_226 +497val_497 +402val_402 +35val_35 +336val_336 +233val_233 +42val_42 +321val_321 +149val_149 +138val_138 +453val_453 +64val_64 +468val_468 +167val_167 +219val_219 +116val_116 +288val_288 +244val_244 +280val_280 +2val_2 +35val_35 +321val_321 +53val_53 +105val_105 +406val_406 +406val_406 +262val_262 +424val_424 +431val_431 +431val_431 +424val_424 +291val_291 +24val_24 +255val_255 +163val_163 +200val_200 +237val_237 +439val_439 +248val_248 +479val_479 +417val_417 +325val_325 +277val_277 +178val_178 +468val_468 +310val_310 +493val_493 +460val_460 +233val_233 +406val_406 +189val_189 +134val_134 +167val_167 +273val_273 +97val_97 +28val_28 +152val_152 +307val_307 +222val_222 +200val_200 +97val_97 diff --git a/sql/hive/src/test/resources/data/files/srcbucket23.txt b/sql/hive/src/test/resources/data/files/srcbucket23.txt new file mode 100644 index 0000000000000..b3dca9afa45d7 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcbucket23.txt @@ -0,0 +1,138 @@ +238val_238 +311val_311 +278val_278 +98val_98 +193val_193 +128val_128 +146val_146 +429val_429 +469val_469 +281val_281 +209val_209 +403val_403 +252val_252 +292val_292 +153val_153 +193val_193 +494val_494 +399val_399 +377val_377 +113val_113 +128val_128 +311val_311 +205val_205 +157val_157 +47val_47 +72val_72 +399val_399 +498val_498 +469val_469 +54val_54 +216val_216 +278val_278 +289val_289 +65val_65 +311val_311 +241val_241 +83val_83 +333val_333 +230val_230 +384val_384 +373val_373 +348val_348 +58val_58 +230val_230 +348val_348 +179val_179 +322val_322 +197val_197 +454val_454 +418val_418 +230val_230 +205val_205 +120val_120 +131val_131 +43val_43 +436val_436 +469val_469 +308val_308 +98val_98 +197val_197 +490val_490 +87val_87 +179val_179 +395val_395 +238val_238 +72val_72 +90val_90 +10val_10 +395val_395 +58val_58 +168val_168 +472val_472 +322val_322 +498val_498 +160val_160 +458val_458 +76val_76 +223val_223 +209val_209 +76val_76 +69val_69 +230val_230 +296val_296 +113val_113 +216val_216 +344val_344 +274val_274 +223val_223 +256val_256 +263val_263 +487val_487 +128val_128 +432val_432 +469val_469 +193val_193 +366val_366 +175val_175 +403val_403 +483val_483 +90val_90 +348val_348 +201val_201 +164val_164 +454val_454 +164val_164 +351val_351 +414val_414 +120val_120 +429val_429 +443val_443 +230val_230 +333val_333 +249val_249 +83val_83 +175val_175 +454val_454 +421val_421 +407val_407 +384val_384 +256val_256 +384val_384 +18val_18 +498val_498 +146val_146 +458val_458 +362val_362 +186val_186 +285val_285 +348val_348 +18val_18 +281val_281 +344val_344 +469val_469 +315val_315 +348val_348 +414val_414 +90val_90 +403val_403 diff --git a/sql/hive/src/test/resources/data/files/srcsortbucket1outof4.txt b/sql/hive/src/test/resources/data/files/srcsortbucket1outof4.txt new file mode 100644 index 0000000000000..3d749a441bb0e --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcsortbucket1outof4.txt @@ -0,0 +1,118 @@ +0val_0 +0val_0 +0val_0 +103val_103 +103val_103 +11val_11 +114val_114 +118val_118 +118val_118 +125val_125 +125val_125 +129val_129 +129val_129 +136val_136 +143val_143 +15val_15 +15val_15 +150val_150 +158val_158 +165val_165 +165val_165 +169val_169 +169val_169 +169val_169 +169val_169 +172val_172 +172val_172 +176val_176 +176val_176 +183val_183 +187val_187 +187val_187 +187val_187 +19val_19 +190val_190 +194val_194 +202val_202 +213val_213 +213val_213 +217val_217 +217val_217 +224val_224 +224val_224 +228val_228 +235val_235 +239val_239 +239val_239 +242val_242 +242val_242 +257val_257 +26val_26 +26val_26 +260val_260 +275val_275 +282val_282 +282val_282 +286val_286 +305val_305 +309val_309 +309val_309 +316val_316 +316val_316 +316val_316 +323val_323 +327val_327 +327val_327 +327val_327 +33val_33 +338val_338 +341val_341 +345val_345 +356val_356 +367val_367 +367val_367 +37val_37 +37val_37 +374val_374 +378val_378 +389val_389 +392val_392 +396val_396 +396val_396 +396val_396 +4val_4 +400val_400 +404val_404 +404val_404 +411val_411 +419val_419 +437val_437 +44val_44 +444val_444 +448val_448 +455val_455 +459val_459 +459val_459 +462val_462 +462val_462 +466val_466 +466val_466 +466val_466 +477val_477 +480val_480 +480val_480 +480val_480 +484val_484 +491val_491 +495val_495 +51val_51 +51val_51 +66val_66 +77val_77 +8val_8 +80val_80 +84val_84 +84val_84 +95val_95 +95val_95 diff --git a/sql/hive/src/test/resources/data/files/srcsortbucket2outof4.txt b/sql/hive/src/test/resources/data/files/srcsortbucket2outof4.txt new file mode 100644 index 0000000000000..0fa67279aacb6 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcsortbucket2outof4.txt @@ -0,0 +1,120 @@ +100val_100 +100val_100 +104val_104 +104val_104 +111val_111 +119val_119 +119val_119 +119val_119 +12val_12 +12val_12 +126val_126 +133val_133 +137val_137 +137val_137 +155val_155 +162val_162 +166val_166 +177val_177 +180val_180 +191val_191 +191val_191 +195val_195 +195val_195 +199val_199 +199val_199 +199val_199 +203val_203 +203val_203 +207val_207 +207val_207 +214val_214 +218val_218 +221val_221 +221val_221 +229val_229 +229val_229 +247val_247 +258val_258 +265val_265 +265val_265 +27val_27 +272val_272 +272val_272 +283val_283 +287val_287 +298val_298 +298val_298 +298val_298 +30val_30 +302val_302 +306val_306 +317val_317 +317val_317 +331val_331 +331val_331 +335val_335 +339val_339 +34val_34 +342val_342 +342val_342 +353val_353 +353val_353 +360val_360 +364val_364 +368val_368 +375val_375 +379val_379 +382val_382 +382val_382 +386val_386 +393val_393 +397val_397 +397val_397 +401val_401 +401val_401 +401val_401 +401val_401 +401val_401 +409val_409 +409val_409 +409val_409 +41val_41 +427val_427 +430val_430 +430val_430 +430val_430 +438val_438 +438val_438 +438val_438 +449val_449 +452val_452 +463val_463 +463val_463 +467val_467 +470val_470 +478val_478 +478val_478 +481val_481 +485val_485 +489val_489 +489val_489 +489val_489 +489val_489 +492val_492 +492val_492 +496val_496 +5val_5 +5val_5 +5val_5 +67val_67 +67val_67 +70val_70 +70val_70 +70val_70 +74val_74 +78val_78 +85val_85 +9val_9 +92val_92 +96val_96 diff --git a/sql/hive/src/test/resources/data/files/srcsortbucket3outof4.txt b/sql/hive/src/test/resources/data/files/srcsortbucket3outof4.txt new file mode 100644 index 0000000000000..bb8887e794192 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcsortbucket3outof4.txt @@ -0,0 +1,124 @@ +105val_105 +116val_116 +134val_134 +134val_134 +138val_138 +138val_138 +138val_138 +138val_138 +145val_145 +149val_149 +149val_149 +152val_152 +152val_152 +156val_156 +163val_163 +167val_167 +167val_167 +167val_167 +17val_17 +170val_170 +174val_174 +174val_174 +178val_178 +181val_181 +189val_189 +192val_192 +196val_196 +2val_2 +20val_20 +200val_200 +200val_200 +208val_208 +208val_208 +208val_208 +219val_219 +219val_219 +222val_222 +226val_226 +233val_233 +233val_233 +237val_237 +237val_237 +24val_24 +24val_24 +244val_244 +248val_248 +255val_255 +255val_255 +262val_262 +266val_266 +273val_273 +273val_273 +273val_273 +277val_277 +277val_277 +277val_277 +277val_277 +28val_28 +280val_280 +280val_280 +284val_284 +288val_288 +288val_288 +291val_291 +307val_307 +307val_307 +310val_310 +318val_318 +318val_318 +318val_318 +321val_321 +321val_321 +325val_325 +325val_325 +332val_332 +336val_336 +35val_35 +35val_35 +35val_35 +365val_365 +369val_369 +369val_369 +369val_369 +394val_394 +402val_402 +406val_406 +406val_406 +406val_406 +406val_406 +413val_413 +413val_413 +417val_417 +417val_417 +417val_417 +42val_42 +42val_42 +424val_424 +424val_424 +431val_431 +431val_431 +431val_431 +435val_435 +439val_439 +439val_439 +446val_446 +453val_453 +457val_457 +460val_460 +468val_468 +468val_468 +468val_468 +468val_468 +475val_475 +479val_479 +482val_482 +493val_493 +497val_497 +53val_53 +57val_57 +64val_64 +82val_82 +86val_86 +97val_97 +97val_97 diff --git a/sql/hive/src/test/resources/data/files/srcsortbucket4outof4.txt b/sql/hive/src/test/resources/data/files/srcsortbucket4outof4.txt new file mode 100644 index 0000000000000..400ad1f447b6d --- /dev/null +++ b/sql/hive/src/test/resources/data/files/srcsortbucket4outof4.txt @@ -0,0 +1,138 @@ +10val_10 +113val_113 +113val_113 +120val_120 +120val_120 +128val_128 +128val_128 +128val_128 +131val_131 +146val_146 +146val_146 +153val_153 +157val_157 +160val_160 +164val_164 +164val_164 +168val_168 +175val_175 +175val_175 +179val_179 +179val_179 +18val_18 +18val_18 +186val_186 +193val_193 +193val_193 +193val_193 +197val_197 +197val_197 +201val_201 +205val_205 +205val_205 +209val_209 +209val_209 +216val_216 +216val_216 +223val_223 +223val_223 +230val_230 +230val_230 +230val_230 +230val_230 +230val_230 +238val_238 +238val_238 +241val_241 +249val_249 +252val_252 +256val_256 +256val_256 +263val_263 +274val_274 +278val_278 +278val_278 +281val_281 +281val_281 +285val_285 +289val_289 +292val_292 +296val_296 +308val_308 +311val_311 +311val_311 +311val_311 +315val_315 +322val_322 +322val_322 +333val_333 +333val_333 +344val_344 +344val_344 +348val_348 +348val_348 +348val_348 +348val_348 +348val_348 +351val_351 +362val_362 +366val_366 +373val_373 +377val_377 +384val_384 +384val_384 +384val_384 +395val_395 +395val_395 +399val_399 +399val_399 +403val_403 +403val_403 +403val_403 +407val_407 +414val_414 +414val_414 +418val_418 +421val_421 +429val_429 +429val_429 +43val_43 +432val_432 +436val_436 +443val_443 +454val_454 +454val_454 +454val_454 +458val_458 +458val_458 +469val_469 +469val_469 +469val_469 +469val_469 +469val_469 +47val_47 +472val_472 +483val_483 +487val_487 +490val_490 +494val_494 +498val_498 +498val_498 +498val_498 +54val_54 +58val_58 +58val_58 +65val_65 +69val_69 +72val_72 +72val_72 +76val_76 +76val_76 +83val_83 +83val_83 +87val_87 +90val_90 +90val_90 +90val_90 +98val_98 +98val_98 diff --git a/sql/hive/src/test/resources/data/files/string.txt b/sql/hive/src/test/resources/data/files/string.txt new file mode 100644 index 0000000000000..d5b7465e04a2a Binary files /dev/null and b/sql/hive/src/test/resources/data/files/string.txt differ diff --git a/sql/hive/src/test/resources/data/files/symlink1.txt b/sql/hive/src/test/resources/data/files/symlink1.txt new file mode 100644 index 0000000000000..dc1a7c5682a26 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/symlink1.txt @@ -0,0 +1,2 @@ +../data/files/T1.txt +../data/files/T3.txt diff --git a/sql/hive/src/test/resources/data/files/symlink2.txt b/sql/hive/src/test/resources/data/files/symlink2.txt new file mode 100644 index 0000000000000..8436a30adf366 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/symlink2.txt @@ -0,0 +1 @@ +../data/files/T2.txt diff --git a/sql/hive/src/test/resources/data/files/tbl.txt b/sql/hive/src/test/resources/data/files/tbl.txt new file mode 100644 index 0000000000000..10287c34423ca --- /dev/null +++ b/sql/hive/src/test/resources/data/files/tbl.txt @@ -0,0 +1,10 @@ +1|1997 +2|1997 +2|1994 +2|1998 +3|1997 +3|1998 +4|1996 +4|1997 +6|1997 +7|1997 diff --git a/sql/hive/src/test/resources/data/files/test.dat b/sql/hive/src/test/resources/data/files/test.dat new file mode 100644 index 0000000000000..cf0389a5afee1 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/test.dat @@ -0,0 +1,6 @@ +1 +2 +3 +4 +5 +6 \ No newline at end of file diff --git a/sql/hive/src/test/resources/data/files/test2.dat b/sql/hive/src/test/resources/data/files/test2.dat new file mode 100644 index 0000000000000..4b284c13ffafd --- /dev/null +++ b/sql/hive/src/test/resources/data/files/test2.dat @@ -0,0 +1,6 @@ +101 +202 +303 +404 +505 +606 \ No newline at end of file diff --git a/sql/hive/src/test/resources/data/files/text-en.txt b/sql/hive/src/test/resources/data/files/text-en.txt new file mode 100644 index 0000000000000..480c818a875fa --- /dev/null +++ b/sql/hive/src/test/resources/data/files/text-en.txt @@ -0,0 +1,95 @@ +One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of him, waved about helplessly as he looked. +"What's happened to me?" he thought. It wasn't a dream. His room, a proper human room although a little too small, lay peacefully between its four familiar walls. +A collection of textile samples lay spread out on the table - Samsa was a travelling salesman - and above it there hung a picture that he had recently cut out of an illustrated magazine and housed in a nice, gilded frame. +It showed a lady fitted out with a fur hat and fur boa who sat upright, raising a heavy fur muff that covered the whole of her lower arm towards the viewer. +Gregor then turned to look out the window at the dull weather. +Drops of rain could be heard hitting the pane, which made him feel quite sad. "How about if I sleep a little bit longer and forget all this nonsense", he thought, but that was something he was unable to do because he was used to sleeping on his right, and in his present state couldn't get into that position. However hard he threw himself onto his right, he always rolled back to where he was. +He must have tried it a hundred times, shut his eyes so that he wouldn't have to look at the floundering legs, and only stopped when he began to feel a mild, dull pain there that he had never felt before. +"Oh, God", he thought, "what a strenuous career it is that I've +chosen! Travelling day in and day out. Doing business like this +takes much more effort than doing your own business at home, and on +top of that there's the curse of travelling, worries about making +train connections, bad and irregular food, contact with different +people all the time so that you can never get to know anyone or +become friendly with them. It can all go to Hell!" He felt a +slight itch up on his belly; pushed himself slowly up on his back +towards the headboard so that he could lift his head better; found +where the itch was, and saw that it was covered with lots of little +white spots which he didn't know what to make of; and when he tried +to feel the place with one of his legs he drew it quickly back because as soon as he touched it he was overcome by a cold shudder. He slid back into his former position. "Getting up early all the time", he thought, "it makes you stupid. You've got to get enough sleep. Other travelling salesmen live a life of luxury. For instance, whenever I go back to the guest house during the morning to copy out the contract, these gentlemen are always still sitting there eating their breakfasts. I ought to just try that with my +boss; I'd get kicked out on the spot. But who knows, maybe that +would be the best thing for me. If I didn't have my parents to +think about I'd have given in my notice a long time ago, I'd have +gone up to the boss and told him just what I think, tell him +everything I would, let him know just what I feel. He'd fall right +off his desk! And it's a funny sort of business to be sitting up +there at your desk, talking down at your subordinates from up there, +especially when you have to go right up close because the boss is +hard of hearing. Well, there's still some hope; once I've got the +money together to pay off my parents' debt to him - another five or +six years I suppose - that's definitely what I'll do. That's when +I'll make the big change. First of all though, I've got to get up, +my train leaves at five." +One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of him, waved about helplessly as he looked. +"What's happened to me?" he thought. It wasn't a dream. His room, a proper human room although a little too small, lay peacefully between its four familiar walls. +A collection of textile samples lay spread out on the table - Samsa was a travelling salesman - and above it there hung a picture that he had recently cut out of an illustrated magazine and housed in a nice, gilded frame. +It showed a lady fitted out with a fur hat and fur boa who sat upright, raising a heavy fur muff that covered the whole of her lower arm towards the viewer. +Gregor then turned to look out the window at the dull weather. +Drops of rain could be heard hitting the pane, which made him feel quite sad. "How about if I sleep a little bit longer and forget all this nonsense", he thought, but that was something he was unable to do because he was used to sleeping on his right, and in his present state couldn't get into that position. However hard he threw himself onto his right, he always rolled back to where he was. +He must have tried it a hundred times, shut his eyes so that he wouldn't have to look at the floundering legs, and only stopped when he began to feel a mild, dull pain there that he had never felt before. +"Oh, God", he thought, "what a strenuous career it is that I've +chosen! Travelling day in and day out. Doing business like this +takes much more effort than doing your own business at home, and on +top of that there's the curse of travelling, worries about making +train connections, bad and irregular food, contact with different +people all the time so that you can never get to know anyone or +become friendly with them. It can all go to Hell!" He felt a +slight itch up on his belly; pushed himself slowly up on his back +towards the headboard so that he could lift his head better; found +where the itch was, and saw that it was covered with lots of little +white spots which he didn't know what to make of; and when he tried +to feel the place with one of his legs he drew it quickly back +because as soon as he touched it he was overcome by a cold shudder. +He slid back into his former position. "Getting up early all the +time", he thought, "it makes you stupid. You've got to get enough +sleep. Other travelling salesmen live a life of luxury. For +instance, whenever I go back to the guest house during the morning +to copy out the contract, these gentlemen are always still sitting +there eating their breakfasts. I ought to just try that with my +boss; I'd get kicked out on the spot. But who knows, maybe that +would be the best thing for me. If I didn't have my parents to +think about I'd have given in my notice a long time ago, I'd have +gone up to the boss and told him just what I think, tell him +everything I would, let him know just what I feel. He'd fall right +off his desk! And it's a funny sort of business to be sitting up +there at your desk, talking down at your subordinates from up there, +especially when you have to go right up close because the boss is +hard of hearing. Well, there's still some hope; once I've got the +money together to pay off my parents' debt to him - another five or +six years I suppose - that's definitely what I'll do. That's when +I'll make the big change. First of all though, I've got to get up, +my train leaves at five." +And he looked over at the alarm clock, ticking on the chest of drawers. "God in Heaven!" he thought. It was half past six and the hands were quietly moving forwards, it was even later than half past, more like quarter to seven. Had the alarm clock not rung? He could see from the bed that it had been set for four o'clock as it should have been; it certainly must have rung. Yes, but was it +possible to quietly sleep through that furniture-rattling noise? True, he had not slept peacefully, but probably all the more deeply because of that. What should he do now? The next train went at seven; if he were to catch that he would have to rush like mad and +the collection of samples was still not packed, and he did not at all feel particularly fresh and lively. And even if he did catch the train he would not avoid his boss's anger as the office assistant would have been there to see the five o'clock train go, he +would have put in his report about Gregor's not being there a long time ago. The office assistant was the boss's man, spineless, and with no understanding. What about if he reported sick? But that would be extremely strained and suspicious as in fifteen years of +service Gregor had never once yet been ill. His boss would certainly come round with the doctor from the medical insurance company, accuse his parents of having a lazy son, and accept the doctor's recommendation not to make any claim as the doctor believed +that no-one was ever ill but that many were workshy. And what's more, would he have been entirely wrong in this case? Gregor did in fact, apart from excessive sleepiness after sleeping for so long, +feel completely well and even felt much hungrier than usual. +One morning, as Gregor Samsa was waking up from anxious dreams, he discovered that in his bed he had been changed into a monstrous verminous bug. He lay on his armour-hard back and saw, as he lifted his head up a little, his brown, arched abdomen divided up into rigid bow-like sections. From this height the blanket, just about ready to slide off completely, could hardly stay in place. His numerous legs, pitifully thin in comparison to the rest of his circumference, flickered helplessly before his eyes. +“What’s happened to me,” he thought. It was no dream. His room, a proper room for a human being, only somewhat too small, lay quietly between the four well-known walls. Above the table, on which an unpacked collection of sample cloth goods was spread out—Samsa was a travelling salesman—hung the picture which he had cut out of an illustrated magazine a little while ago and set in a pretty gilt frame. It was a picture of a woman with a fur hat and a fur boa. She sat erect there, lifting up in the direction of the viewer a solid fur muff into which her entire forearm had disappeared. +“O God,” he thought, “what a demanding job I’ve chosen! Day in, day out, on the road. The stresses of selling are much greater than the actual work going on at head office, and, in addition to that, I still have to cope with the problems of travelling, the worries about train connections, irregular bad food, temporary and constantly changing human relationships, which never come from the heart. To hell with it all!” He felt a slight itching on the top of his abdomen. He slowly pushed himself on his back closer to the bed post so that he could lift his head more easily, found the itchy part, which was entirely covered with small white spots—he did not know what to make of them and wanted to feel the place with a leg. But he retracted it immediately, for the contact felt like a cold shower all over him. +He slid back again into his earlier position. “This getting up early,” he thought, “makes a man quite idiotic. A man must have his sleep. Other travelling salesmen live like harem women. For instance, when I come back to the inn during the course of the morning to write up the necessary orders, these gentlemen are just sitting down to breakfast. If I were to try that with my boss, I’d be thrown out on the spot. Still, who knows whether that mightn’t be really good for me. If I didn’t hold back for my parents’ sake, I’d have quit ages ago. I would’ve gone to the boss and told him just what I think from the bottom of my heart. He would’ve fallen right off his desk! How weird it is to sit up at that desk and talk down to the employee from way up there. What’s more, the boss has trouble hearing, so the employee has to step up quite close to him. Anyway, I haven’t completely given up that hope yet. Once I’ve got together the money to pay off my parents’ debt to him—that should take another five or six years—I’ll do it for sure. Then I’ll make the big break. In any case, right now I have to get up. My train leaves at five o’clock.” +He looked over at the alarm clock ticking away by the chest of drawers. “Good God!” he thought. It was half past six, and the hands were going quietly on. It was even past the half hour, already nearly quarter to. Could the alarm have failed to ring? One saw from the bed that it was properly set for four o’clock. Certainly it had rung. Yes, but was it possible to sleep peacefully through that noise which made the furniture shake? Now, it is true he had not slept peacefully, but evidently he had slept all the more deeply. Still, what should he do now? The next train left at seven o’clock. To catch that one, he would have to go in a mad rush. The sample collection was not packed up yet, and he really did not feel particularly fresh and active. And even if he caught the train, there was no avoiding a blow-up with the boss, because the firm’s errand boy would have waited for the five o’clock train and reported the news of his absence long ago. He was the boss’s minion, without backbone and intelligence. Well then, what if he reported in sick? But that would be extremely embarrassing and suspicious, because during his five years’ service Gregor had not been sick even once. The boss would certainly come with the doctor from the health insurance company and would reproach his parents for their lazy son and cut short all objections with the insurance doctor’s comments; for him everyone was completely healthy but really lazy about work. And besides, would the doctor in this case be totally wrong? Apart from a really excessive drowsiness after the long sleep, Gregor, in fact, felt quite well and even had a really strong appetite. +As he was thinking all this over in the greatest haste, without being able to make the decision to get out of bed—the alarm clock was indicating exactly quarter to seven—there was a cautious knock on the door by the head of the bed. “Gregor,” a voice called—it was his mother—“it’s quarter to seven. Don’t you want to be on your way?” The soft voice! Gregor was startled when he heard his voice answering. It was clearly and unmistakably his earlier voice, but in it was intermingled, as if from below, an irrepressible, painful squeaking, which left the words positively distinct only in the first moment and distorted them in the reverberation, so that one did not know if one had heard correctly. Gregor wanted to answer in detail and explain everything, but in these circumstances he confined himself to saying, “Yes, yes, thank you mother. I’m getting up right away.” Because of the wooden door the change in Gregor’s voice was not really noticeable outside, so his mother calmed down with this explanation and shuffled off. However, as a result of the short conversation, the other family members became aware that Gregor was unexpectedly still at home, and already his father was knocking on one side door, weakly but with his fist. “Gregor, Gregor,” he called out, “what’s going on?” And, after a short while, he urged him on again in a deeper voice: “Gregor! Gregor!” At the other side door, however, his sister knocked lightly. “Gregor? Are you all right? Do you need anything?” Gregor directed answers in both directions, “I’ll be ready right away.” He made an effort with the most careful articulation and inserted long pauses between the individual words to remove everything remarkable from his voice. His father turned back to his breakfast. However, the sister whispered, “Gregor, open the door—I beg you.” Gregor had no intention of opening the door, but congratulated himself on his precaution, acquired from travelling, of locking all doors during the night, even at home. +First he wanted to stand up quietly and undisturbed, get dressed, above all have breakfast, and only then consider further action, for—he noticed this clearly—by thinking things over in bed he would not reach a reasonable conclusion. He remembered that he had already often felt some light pain or other in bed, perhaps the result of an awkward lying position, which later, once he stood up, turned out to be purely imaginary, and he was eager to see how his present fantasies would gradually dissipate. That the change in his voice was nothing other than the onset of a real chill, an occupational illness of commercial travellers, of that he had not the slightest doubt. +It was very easy to throw aside the blanket. He needed only to push himself up a little, and it fell by itself. But to continue was difficult, particularly because he was so unusually wide. He needed arms and hands to push himself upright. Instead of these, however, he had only many small limbs, which were incessantly moving with very different motions and which, in addition, he was unable to control. If he wanted to bend one of them, then it was the first to extend itself, and if he finally succeeded doing what he wanted with this limb, in the meantime all the others, as if left free, moved around in an excessively painful agitation. “But I must not stay in bed uselessly,” said Gregor to himself. +At first he wanted to get out of bed with the lower part of his body, but this lower part—which, by the way, he had not yet looked at and which he also could not picture clearly—proved itself too difficult to move. The attempt went so slowly. When, having become almost frantic, he finally hurled himself forward with all his force and without thinking, he chose his direction incorrectly, and he hit the lower bedpost hard. The violent pain he felt revealed to him that the lower part of his body was at the moment probably the most sensitive. +Thus, he tried to get his upper body out of the bed first and turned his head carefully toward the edge of the bed. He managed to do this easily, and in spite of its width and weight his body mass at last slowly followed the turning of his head. But as he finally raised his head outside the bed in the open air, he became anxious about moving forward any further in this manner, for if he allowed himself eventually to fall by this process, it would really take a miracle to prevent his head from getting injured. And at all costs he must not lose consciousness right now. He preferred to remain in bed. +However, after a similar effort, while he lay there again, sighing as before, and once again saw his small limbs fighting one another, if anything even worse than earlier, and did not see any chance of imposing quiet and order on this arbitrary movement, he told himself again that he could not possibly remain in bed and that it might be the most reasonable thing to sacrifice everything if there was even the slightest hope of getting himself out of bed in the process. At the same moment, however, he did not forget to remind himself from time to time of the fact that calm—indeed the calmest—reflection might be much better than confused decisions. At such moments, he directed his gaze as precisely as he could toward the window, but unfortunately there was little confident cheer to be had from a glance at the morning mist, which concealed even the other side of the narrow street. “It’s already seven o’clock,” he told himself at the latest sounds from the alarm clock, “already seven o’clock and still such a fog.” And for a little while longer he lay quietly with weak breathing, as if perhaps waiting for normal and natural conditions to re-emerge out of the complete stillness. +But then he said to himself, “Before it strikes a quarter past seven, whatever happens I must be completely out of bed. Besides, by then someone from the office will arrive to inquire about me, because the office will open before seven o’clock.” And he made an effort then to rock his entire body length out of the bed with a uniform motion. If he let himself fall out of the bed in this way, his head, which in the course of the fall he intended to lift up sharply, would probably remain uninjured. His back seemed to be hard; nothing would really happen to that as a result of the fall onto the carpet. His greatest reservation was a worry about the loud noise which the fall must create and which presumably would arouse, if not fright, then at least concern on the other side of all the doors. However, he had to take that chance. +As Gregor was already in the process of lifting himself half out of bed—the new method was more of a game than an effort; he needed only to rock with a series of jerks—it struck him how easy all this would be if someone were to come to his aid. Two strong people—he thought of his father and the servant girl—would have been quite sufficient. They would only have had to push their arms under his arched back to get him out of the bed, to bend down with their load, and then merely to exercise patience so that he could complete the flip onto the floor, where his diminutive legs would then, he hoped, acquire a purpose. Now, quite apart from the fact that the doors were locked, should he really call out for help? In spite of all his distress, he was unable to suppress a smile at this idea. +He had already got to the point where, by rocking more strongly, he maintained his equilibrium with difficulty, and very soon he would finally have to make a final decision, for in five minutes it would be a quarter past seven. Then there was a ring at the door of the apartment. “That’s someone from the office,” he told himself, and he almost froze, while his small limbs only danced around all the faster. For one moment everything remained still. “They aren’t opening,” Gregor said to himself, caught up in some absurd hope. But of course then, as usual, the servant girl with her firm tread went to the door and opened it. Gregor needed to hear only the first word of the visitor’s greeting to recognize immediately who it was, the manager himself. Why was Gregor the only one condemned to work in a firm where, at the slightest lapse, someone at once attracted the greatest suspicion? Were all the employees then collectively, one and all, scoundrels? Among them was there then no truly devoted person who, if he failed to use just a couple of hours in the morning for office work, would become abnormal from pangs of conscience and really be in no state to get out of bed? Was it really not enough to let an apprentice make inquiries, if such questioning was even generally necessary? Must the manager himself come, and in the process must it be demonstrated to the entire innocent family that the investigation of this suspicious circumstance could be entrusted only to the intelligence of the manager? And more as a consequence of the excited state in which this idea put Gregor than as a result of an actual decision, he swung himself with all his might out of the bed. There was a loud thud, but not a real crash. The fall was absorbed somewhat by the carpet and, in addition, his back was more elastic than Gregor had thought. For that reason the dull noise was not quite so conspicuous. But he had not held his head up with sufficient care and had hit it. He turned his head, irritated and in pain, and rubbed it on the carpet. +“Something has fallen in there,” said the manager in the next room on the left. Gregor tried to imagine to himself whether anything similar to what was happening to him today could have also happened at some point to the manager. At least one had to concede the possibility of such a thing. However, as if to give a rough answer to this question, the manager now, with a squeak of his polished boots, took a few determined steps in the next room. From the neighbouring room on the right the sister was whispering to inform Gregor: “Gregor, the manager is here.” “I know,” said Gregor to himself. But he did not dare make his voice loud enough so that his sister could hear. +“Gregor,” his father now said from the neighbouring room on the left, “Mr. Manager has come and is asking why you have not left on the early train. We don’t know what we should tell him. Besides, he also wants to speak to you personally. So please open the door. He will be good enough to forgive the mess in your room.” In the middle of all this, the manager called out in a friendly way, “Good morning, Mr. Samsa.” “He is not well,” said his mother to the manager, while his father was still talking at the door, “He is not well, believe me, Mr. Manager. Otherwise how would Gregor miss a train? The young man has nothing in his head except business. I’m almost angry that he never goes out in the evening. Right now he’s been in the city eight days, but he’s been at home every evening. He sits here with us at the table and reads the newspaper quietly or studies his travel schedules. It’s a quite a diversion for him to busy himself with fretwork. For instance, he cut out a small frame over the course of two or three evenings. You’d be amazed how pretty it is. It’s hanging right inside the room. You’ll see it immediately, as soon as Gregor opens the door. Anyway, I’m happy that you’re here, Mr. Manager. By ourselves, we would never have made Gregor open the door. He’s so stubborn, and he’s certainly not well, although he denied that this morning.” “I’m coming right away,” said Gregor slowly and deliberately and didn’t move, so as not to lose one word of the conversation. “My dear lady, I cannot explain it to myself in any other way,” said the manager; “I hope it is nothing serious. On the other hand, I must also say that we business people, luckily or unluckily, however one looks at it, very often simply have to overcome a slight indisposition for business reasons.” “So can Mr. Manager come in to see you now?” asked his father impatiently and knocked once again on the door. “No,” said Gregor. In the neighbouring room on the left an awkward stillness descended. In the neighbouring room on the right the sister began to sob. +Why did his sister not go to the others? She had probably just got up out of bed now and had not even started to get dressed yet. Then why was she crying? Because he was not getting up and letting the manager in, because he was in danger of losing his position, and because then his boss would badger his parents once again with the old demands? Those were probably unnecessary worries right now. Gregor was still here and was not thinking at all about abandoning his family. At the moment he was lying right there on the carpet, and no one who knew about his condition would have seriously demanded that he let the manager in. But Gregor would not be casually dismissed right way because of this small discourtesy, for which he would find an easy and suitable excuse later on. It seemed to Gregor that it might be far more reasonable to leave him in peace at the moment, instead of disturbing him with crying and conversation. But it was the very uncertainty which distressed the others and excused their behaviour. diff --git a/sql/hive/src/test/resources/data/files/things.txt b/sql/hive/src/test/resources/data/files/things.txt new file mode 100644 index 0000000000000..7eedbcfae2066 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/things.txt @@ -0,0 +1 @@ +2 Tie diff --git a/sql/hive/src/test/resources/data/files/things2.txt b/sql/hive/src/test/resources/data/files/things2.txt new file mode 100644 index 0000000000000..7eedbcfae2066 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/things2.txt @@ -0,0 +1 @@ +2 Tie diff --git a/sql/hive/src/test/resources/data/files/tiny_a.txt b/sql/hive/src/test/resources/data/files/tiny_a.txt new file mode 100644 index 0000000000000..c7867e6c62e00 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/tiny_a.txt @@ -0,0 +1 @@ +103200920268924913312 diff --git a/sql/hive/src/test/resources/data/files/tiny_b.txt b/sql/hive/src/test/resources/data/files/tiny_b.txt new file mode 100644 index 0000000000000..c8cdef26d7ba2 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/tiny_b.txt @@ -0,0 +1,2 @@ +10320092002467760023374853555556606672767778808187889090919092971001031041071081081091101131131131131131131141161161161171161171171171151151171171171211201311311311251251241241281281311311321331341341341342626\N\N\N\N116 +1032009202689249102591061311421592443203984174335536167108269179711046105110931112114212151220122612321267136415491646194821702272232524332534285229252992311932073279332334123637364536343450347336383688373637583812386238733868388341184134412741704216\N\N\N\N3139 diff --git a/sql/hive/src/test/resources/data/files/types/primitives/090101.txt b/sql/hive/src/test/resources/data/files/types/primitives/090101.txt new file mode 100644 index 0000000000000..35041d5be9a46 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/types/primitives/090101.txt @@ -0,0 +1,25 @@ +0,true,0,0,0,0,0.0,0.0,01/01/09,0,2009-01-01 00:00:00.0 +1,\N,1,1,1,10,1.1,10.1,01/01/09,1,2009-01-01 00:01:00.0 +2,true,\N,2,2,20,2.2,20.2,01/01/09,2,2009-01-01 00:02:00.10 +3,false,3,\N,3,30,3.3,30.299999999999997,01/01/09,3,2009-01-01 00:03:00.30 +4,true,4,4,\N,40,4.4,40.4,01/01/09,4,2009-01-01 00:04:00.60 +5,false,5,5,5,\N,5.5,50.5,01/01/09,5,2009-01-01 00:05:00.100 +6,true,6,6,6,60,\N,60.599999999999994,01/01/09,6,2009-01-01 00:06:00.150 +7,false,7,7,7,70,7.7,\N,01/01/09,7,2009-01-01 00:07:00.210 +8,true,8,8,8,80,8.8,80.8,\N,8,2009-01-01 00:08:00.280 +9,false,9,9,9,90,9.9,90.89999999999999,01/01/09,\N,2009-01-01 00:09:00.360 +10,true,0,0,0,0,0.0,0.0,01/02/09,0,\N +11,\N,1,1,1,10,1.1,10.1,01/02/09,1,2009-01-02 00:11:00.450 +12,true,\N,2,2,20,2.2,20.2,01/02/09,2,2009-01-02 00:12:00.460 +13,false,3,\N,3,30,3.3,30.299999999999997,01/02/09,3,2009-01-02 00:13:00.480 +14,true,4,4,\N,40,4.4,40.4,01/02/09,4,2009-01-02 00:14:00.510 +15,false,5,5,5,\N,5.5,50.5,01/02/09,5,2009-01-02 00:15:00.550 +16,true,6,6,6,60,\N,60.599999999999994,01/02/09,6,2009-01-02 00:16:00.600 +17,false,7,7,7,70,7.7,\N,01/02/09,7,2009-01-02 00:17:00.660 +18,true,8,8,8,80,8.8,80.8,\N,8,2009-01-02 00:18:00.730 +19,false,9,9,9,90,9.9,90.89999999999999,01/02/09,\N,2009-01-02 00:19:00.810 +20,true,0,0,0,0,0.0,0.0,01/03/09,0,\N +21,\N,1,1,1,10,1.1,10.1,01/03/09,1,2009-01-03 00:21:00.900 +22,true,\N,2,2,20,2.2,20.2,01/03/09,2,2009-01-03 00:22:00.910 +23,false,3,\N,3,30,3.3,30.299999999999997,01/03/09,3,2009-01-03 00:23:00.930 +24,true,4,4,\N,40,4.4,40.4,01/03/09,4,2009-01-03 00:24:00.960 diff --git a/sql/hive/src/test/resources/data/files/types/primitives/090201.txt b/sql/hive/src/test/resources/data/files/types/primitives/090201.txt new file mode 100644 index 0000000000000..f2a21f77b1028 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/types/primitives/090201.txt @@ -0,0 +1,25 @@ +25,false,0,0,0,\N,0.0,0.0,02/01/09,0,2009-02-01 00:00:00.0 +26,true,1,1,1,10,\N,10.1,02/01/09,1,2009-02-01 00:01:00.0 +27,false,2,2,2,20,2.2,\N,02/01/09,2,2009-02-01 00:02:00.10 +28,true,3,3,3,30,3.3,\N,02/01/09,3,2009-02-01 00:03:00.30 +29,false,4,4,4,40,4.4,40.4,\N,4,2009-02-01 00:04:00.60 +30,true,5,5,5,50,5.5,50.5,\N,5,2009-02-01 00:05:00.100 +31,false,6,6,6,60,6.6,60.599999999999994,02/01/09,\N,2009-02-01 00:06:00.150 +32,true,7,7,7,70,7.7,70.7,02/01/09,7,\N +33,\N,8,8,8,80,8.8,80.8,02/01/09,8,2009-02-01 00:08:00.280 +34,true,\N,9,9,90,9.9,90.89999999999999,02/01/09,9,2009-02-01 00:09:00.360 +35,false,0,\N,0,0,0.0,0.0,02/02/09,0,2009-02-02 00:10:00.450 +36,true,1,1,\N,10,1.1,10.1,02/02/09,1,2009-02-02 00:11:00.450 +37,false,2,2,2,\N,2.2,20.2,02/02/09,2,2009-02-02 00:12:00.460 +38,true,3,3,3,30,\N,30.299999999999997,02/02/09,3,2009-02-02 00:13:00.480 +39,false,4,4,4,40,4.4,\N,02/02/09,4,2009-02-02 00:14:00.510 +40,true,5,5,5,50,5.5,50.5,\N,5,2009-02-02 00:15:00.550 +41,false,6,6,6,60,6.6,60.599999999999994,02/02/09,\N,2009-02-02 00:16:00.600 +42,true,7,7,7,70,7.7,70.7,02/02/09,7,\N +43,\N,8,8,8,80,8.8,80.8,02/02/09,8,2009-02-02 00:18:00.730 +44,true,\N,9,9,90,9.9,90.89999999999999,02/02/09,9,2009-02-02 00:19:00.810 +45,false,0,\N,0,0,0.0,0.0,02/03/09,0,2009-02-03 00:20:00.900 +46,true,1,1,\N,10,1.1,10.1,02/03/09,1,2009-02-03 00:21:00.900 +47,false,2,2,2,\N,2.2,20.2,02/03/09,2,2009-02-03 00:22:00.910 +48,true,3,3,3,30,\N,30.299999999999997,02/03/09,3,2009-02-03 00:23:00.930 +49,false,4,4,4,40,4.4,\N,02/03/09,4,2009-02-03 00:24:00.960 diff --git a/sql/hive/src/test/resources/data/files/types/primitives/090301.txt b/sql/hive/src/test/resources/data/files/types/primitives/090301.txt new file mode 100644 index 0000000000000..7f475f9295f24 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/types/primitives/090301.txt @@ -0,0 +1,25 @@ +50,true,0,0,0,0,0.0,0.0,\N,0,2009-03-01 00:00:00.0 +51,false,1,1,1,10,1.1,10.1,03/01/09,\N,2009-03-01 00:01:00.0 +52,true,2,2,2,20,2.2,20.2,03/01/09,2,\N +53,\N,3,3,3,30,3.3,30.299999999999997,03/01/09,3,2009-03-01 00:03:00.30 +54,true,\N,4,4,40,4.4,40.4,03/01/09,4,2009-03-01 00:04:00.60 +55,false,5,\N,5,50,5.5,50.5,03/01/09,5,2009-03-01 00:05:00.100 +56,true,6,6,\N,60,6.6,60.599999999999994,03/01/09,6,2009-03-01 00:06:00.150 +57,false,7,7,7,\N,7.7,70.7,03/01/09,7,2009-03-01 00:07:00.210 +58,true,8,8,8,80,\N,80.8,03/01/09,8,2009-03-01 00:08:00.280 +59,false,9,9,9,90,9.9,\N,03/01/09,9,2009-03-01 00:09:00.360 +60,true,0,0,0,0,0.0,0.0,\N,0,2009-03-02 00:10:00.450 +61,false,1,1,1,10,1.1,10.1,03/02/09,\N,2009-03-02 00:11:00.450 +62,true,2,2,2,20,2.2,20.2,03/02/09,2,\N +63,\N,3,3,3,30,3.3,30.299999999999997,03/02/09,3,2009-03-02 00:13:00.480 +64,true,\N,4,4,40,4.4,40.4,03/02/09,4,2009-03-02 00:14:00.510 +65,false,5,\N,5,50,5.5,50.5,03/02/09,5,2009-03-02 00:15:00.550 +66,true,6,6,\N,60,6.6,60.599999999999994,03/02/09,6,2009-03-02 00:16:00.600 +67,false,7,7,7,\N,7.7,70.7,03/02/09,7,2009-03-02 00:17:00.660 +68,true,8,8,8,80,\N,80.8,03/02/09,8,2009-03-02 00:18:00.730 +69,false,9,9,9,90,9.9,\N,03/02/09,9,2009-03-02 00:19:00.810 +70,true,0,0,0,0,0.0,0.0,\N,0,2009-03-03 00:20:00.900 +71,false,1,1,1,10,1.1,10.1,03/03/09,\N,2009-03-03 00:21:00.900 +72,true,2,2,2,20,2.2,20.2,03/03/09,2,\N +73,\N,3,3,3,30,3.3,30.299999999999997,03/03/09,3,2009-03-03 00:23:00.930 +74,true,\N,4,4,40,4.4,40.4,03/03/09,4,2009-03-03 00:24:00.960 diff --git a/sql/hive/src/test/resources/data/files/types/primitives/090401.txt b/sql/hive/src/test/resources/data/files/types/primitives/090401.txt new file mode 100644 index 0000000000000..a3a0d69a22a46 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/types/primitives/090401.txt @@ -0,0 +1,25 @@ +75,false,0,\N,0,0,0.0,0.0,04/01/09,0,2009-04-01 00:00:00.0 +76,true,1,1,\N,10,1.1,10.1,04/01/09,1,2009-04-01 00:01:00.0 +77,false,2,2,2,\N,2.2,20.2,04/01/09,2,2009-04-01 00:02:00.10 +78,true,3,3,3,30,\N,30.299999999999997,04/01/09,3,2009-04-01 00:03:00.30 +79,false,4,4,4,40,4.4,\N,04/01/09,4,2009-04-01 00:04:00.60 +80,true,5,5,5,50,5.5,50.5,\N,5,2009-04-01 00:05:00.100 +81,false,6,6,6,60,6.6,60.599999999999994,04/01/09,\N,2009-04-01 00:06:00.150 +82,true,7,7,7,70,7.7,70.7,04/01/09,7,\N +83,\N,8,8,8,80,8.8,80.8,04/01/09,8,2009-04-01 00:08:00.280 +84,true,\N,9,9,90,9.9,90.89999999999999,04/01/09,9,2009-04-01 00:09:00.360 +85,false,0,\N,0,0,0.0,0.0,04/02/09,0,2009-04-02 00:10:00.450 +86,true,1,1,\N,10,1.1,10.1,04/02/09,1,2009-04-02 00:11:00.450 +87,false,2,2,2,\N,2.2,20.2,04/02/09,2,2009-04-02 00:12:00.460 +88,true,3,3,3,30,\N,30.299999999999997,04/02/09,3,2009-04-02 00:13:00.480 +89,false,4,4,4,40,4.4,\N,04/02/09,4,2009-04-02 00:14:00.510 +90,true,5,5,5,50,5.5,50.5,\N,5,2009-04-02 00:15:00.550 +91,false,6,6,6,60,6.6,60.599999999999994,04/02/09,\N,2009-04-02 00:16:00.600 +92,true,7,7,7,70,7.7,70.7,04/02/09,7,\N +93,\N,8,8,8,80,8.8,80.8,04/02/09,8,2009-04-02 00:18:00.730 +94,true,\N,9,9,90,9.9,90.89999999999999,04/02/09,9,2009-04-02 00:19:00.810 +95,false,0,\N,0,0,0.0,0.0,04/03/09,0,2009-04-03 00:20:00.900 +96,true,1,1,\N,10,1.1,10.1,04/03/09,1,2009-04-03 00:21:00.900 +97,false,2,2,2,\N,2.2,20.2,04/03/09,2,2009-04-03 00:22:00.910 +98,true,3,3,3,30,\N,30.299999999999997,04/03/09,3,2009-04-03 00:23:00.930 +99,false,4,4,4,40,4.4,\N,04/03/09,4,2009-04-03 00:24:00.960 diff --git a/sql/hive/src/test/resources/data/files/union_input.txt b/sql/hive/src/test/resources/data/files/union_input.txt new file mode 100644 index 0000000000000..e3020be086b86 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/union_input.txt @@ -0,0 +1,8 @@ +011oneone +12.02twotwo +2threefour3threefour +35five5fivefive +2sixseven6sixseven +38eight8eighteight +099ninenine +110.010tenten diff --git a/sql/hive/src/test/resources/data/files/v1.txt b/sql/hive/src/test/resources/data/files/v1.txt new file mode 100644 index 0000000000000..1ce88332978db --- /dev/null +++ b/sql/hive/src/test/resources/data/files/v1.txt @@ -0,0 +1,4 @@ +1111fooabc2013-10-10 12:12:12xyzfunbar2013-10-10 12:12:12lmn2013-11-11 12:12:1292222 +2222fooabc2013-10-10 12:12:12xyzfunbar2013-10-10 12:12:12lmn2013-11-11 12:12:1294444 +3333fooabc2013-10-10 12:12:12xyzfunbar2013-10-10 12:12:12lmn2013-11-11 12:12:1296666 +4444fooabc2013-10-10 12:12:12xyzfunbar2013-10-10 12:12:12lmn2013-11-11 12:12:1298888 diff --git a/sql/hive/src/test/resources/data/files/v2.txt b/sql/hive/src/test/resources/data/files/v2.txt new file mode 100644 index 0000000000000..5e4c94c2e6079 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/v2.txt @@ -0,0 +1,9 @@ +111199999 +222299999 +222299999 +444499999 +555599999 +666699999 +666699999 +666699999 +888899999 diff --git a/sql/hive/src/test/resources/data/files/vc1.txt b/sql/hive/src/test/resources/data/files/vc1.txt new file mode 100644 index 0000000000000..d0f99523dc2fd --- /dev/null +++ b/sql/hive/src/test/resources/data/files/vc1.txt @@ -0,0 +1,3 @@ +1abc +2abc +3 abc diff --git a/sql/hive/src/test/resources/data/files/x.txt b/sql/hive/src/test/resources/data/files/x.txt new file mode 100644 index 0000000000000..6407b72051b51 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/x.txt @@ -0,0 +1,2 @@ +Joe 2 +Hank 2 diff --git a/sql/hive/src/test/resources/data/files/y.txt b/sql/hive/src/test/resources/data/files/y.txt new file mode 100644 index 0000000000000..7eedbcfae2066 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/y.txt @@ -0,0 +1 @@ +2 Tie diff --git a/sql/hive/src/test/resources/data/files/z.txt b/sql/hive/src/test/resources/data/files/z.txt new file mode 100644 index 0000000000000..7eedbcfae2066 --- /dev/null +++ b/sql/hive/src/test/resources/data/files/z.txt @@ -0,0 +1 @@ +2 Tie diff --git a/sql/hive/src/test/resources/data/metadb/.gitignore b/sql/hive/src/test/resources/data/metadb/.gitignore new file mode 100644 index 0000000000000..0dd98905045cd --- /dev/null +++ b/sql/hive/src/test/resources/data/metadb/.gitignore @@ -0,0 +1 @@ +# Dummy file to make Git recognize this empty directory diff --git a/sql/hive/src/test/resources/data/scripts/cat.py b/sql/hive/src/test/resources/data/scripts/cat.py new file mode 100644 index 0000000000000..2395b2cdeb391 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/cat.py @@ -0,0 +1,29 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +import sys, re +import datetime +import os + +table_name=None +if os.environ.has_key('hive_streaming_tablename'): + table_name=os.environ['hive_streaming_tablename'] + +for line in sys.stdin: + print line + print >> sys.stderr, "dummy" diff --git a/sql/hive/src/test/resources/data/scripts/cat_error.py b/sql/hive/src/test/resources/data/scripts/cat_error.py new file mode 100644 index 0000000000000..9642efec8ecb4 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/cat_error.py @@ -0,0 +1,24 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +import sys + +for line in sys.stdin: + print line + +sys.exit(1) diff --git a/sql/hive/src/test/resources/data/scripts/doubleescapedtab.py b/sql/hive/src/test/resources/data/scripts/doubleescapedtab.py new file mode 100644 index 0000000000000..d373067baed2c --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/doubleescapedtab.py @@ -0,0 +1,24 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +import sys + +for line in sys.stdin: + print "1\\\\\\t2" + print "1\\\\\\\\t2" + diff --git a/sql/hive/src/test/resources/data/scripts/dumpdata_script.py b/sql/hive/src/test/resources/data/scripts/dumpdata_script.py new file mode 100644 index 0000000000000..c96c9e529bbb1 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/dumpdata_script.py @@ -0,0 +1,27 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +import sys + +for i in xrange(50): + for j in xrange(5): + for k in xrange(20022): + print 20000 * i + k + +for line in sys.stdin: + pass diff --git a/sql/hive/src/test/resources/data/scripts/error_script b/sql/hive/src/test/resources/data/scripts/error_script new file mode 100755 index 0000000000000..8d86b62f0f744 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/error_script @@ -0,0 +1,26 @@ +#! /bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +exit 1 +ret=0 +while [ "$ret" = "0" ]; +do + read -t 1 -a v + ret=$? +done + +exit 1 diff --git a/sql/hive/src/test/resources/data/scripts/escapedcarriagereturn.py b/sql/hive/src/test/resources/data/scripts/escapedcarriagereturn.py new file mode 100644 index 0000000000000..475928a2430f6 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/escapedcarriagereturn.py @@ -0,0 +1,23 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +import sys + +for line in sys.stdin: + print "1\\\\r2" + diff --git a/sql/hive/src/test/resources/data/scripts/escapednewline.py b/sql/hive/src/test/resources/data/scripts/escapednewline.py new file mode 100644 index 0000000000000..0d5751454bed7 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/escapednewline.py @@ -0,0 +1,23 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +import sys + +for line in sys.stdin: + print "1\\\\n2" + diff --git a/sql/hive/src/test/resources/data/scripts/escapedtab.py b/sql/hive/src/test/resources/data/scripts/escapedtab.py new file mode 100644 index 0000000000000..549c91e444632 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/escapedtab.py @@ -0,0 +1,23 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +import sys + +for line in sys.stdin: + print "1\\\\t2" + diff --git a/sql/hive/src/test/resources/data/scripts/input20_script b/sql/hive/src/test/resources/data/scripts/input20_script new file mode 100755 index 0000000000000..e8e41189c17cf --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/input20_script @@ -0,0 +1,20 @@ +#! /bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This script outputs a row of the following format +# <# of values for the key> _ +uniq -c | sed "s@^ *@@" | sed "s@ @_@" | sed "s@ @ @" diff --git a/sql/hive/src/test/resources/data/scripts/newline.py b/sql/hive/src/test/resources/data/scripts/newline.py new file mode 100644 index 0000000000000..6500d900dd8ab --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/newline.py @@ -0,0 +1,24 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +import sys + +for line in sys.stdin: + print "1\\n2" + print "1\\r2" + print "1\\t2" diff --git a/sql/hive/src/test/resources/data/scripts/q_test_cleanup.sql b/sql/hive/src/test/resources/data/scripts/q_test_cleanup.sql new file mode 100644 index 0000000000000..31bd7205d8591 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/q_test_cleanup.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS src; +DROP TABLE IF EXISTS src1; +DROP TABLE IF EXISTS src_json; +DROP TABLE IF EXISTS src_sequencefile; +DROP TABLE IF EXISTS src_thrift; +DROP TABLE IF EXISTS srcbucket; +DROP TABLE IF EXISTS srcbucket2; +DROP TABLE IF EXISTS srcpart; +DROP TABLE IF EXISTS primitives; + diff --git a/sql/hive/src/test/resources/data/scripts/q_test_init.sql b/sql/hive/src/test/resources/data/scripts/q_test_init.sql new file mode 100644 index 0000000000000..12afdf391132e --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/q_test_init.sql @@ -0,0 +1,132 @@ +-- +-- Table src +-- +DROP TABLE IF EXISTS src; + +CREATE TABLE src (key STRING, value STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/kv1.txt" INTO TABLE src; + +-- +-- Table src1 +-- +DROP TABLE IF EXISTS src1; + +CREATE TABLE src1 (key STRING, value STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/kv3.txt" INTO TABLE src1; + +-- +-- Table src_json +-- +DROP TABLE IF EXISTS src_json; + +CREATE TABLE src_json (json STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/json.txt" INTO TABLE src_json; + + +-- +-- Table src_sequencefile +-- +DROP TABLE IF EXISTS src_sequencefile; + +CREATE TABLE src_sequencefile (key STRING, value STRING) STORED AS SEQUENCEFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/kv1.seq" INTO TABLE src_sequencefile; + + +-- +-- Table src_thrift +-- +DROP TABLE IF EXISTS src_thrift; + +CREATE TABLE src_thrift +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer' +WITH SERDEPROPERTIES ( + 'serialization.class' = 'org.apache.hadoop.hive.serde2.thrift.test.Complex', + 'serialization.format' = 'com.facebook.thrift.protocol.TBinaryProtocol') +STORED AS SEQUENCEFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/complex.seq" INTO TABLE src_thrift; + + +-- +-- Table srcbucket +-- +DROP TABLE IF EXISTS srcbucket; + +CREATE TABLE srcbucket (key INT, value STRING) +CLUSTERED BY (key) INTO 2 BUCKETS +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/srcbucket0.txt" INTO TABLE srcbucket; +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/srcbucket1.txt" INTO TABLE srcbucket; + + +-- +-- Table srcbucket2 +-- +DROP TABLE IF EXISTS srcbucket2; + +CREATE TABLE srcbucket2 (key INT, value STRING) +CLUSTERED BY (key) INTO 4 BUCKETS +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/srcbucket20.txt" INTO TABLE srcbucket2; +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/srcbucket21.txt" INTO TABLE srcbucket2; + + +-- +-- Table srcpart +-- +DROP TABLE IF EXISTS srcpart; + +CREATE TABLE srcpart (key STRING, value STRING) +PARTITIONED BY (ds STRING, hr STRING) +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/kv1.txt" +OVERWRITE INTO TABLE srcpart PARTITION (ds="2008-04-08", hr="11"); + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/kv1.txt" +OVERWRITE INTO TABLE srcpart PARTITION (ds="2008-04-08", hr="12"); + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/kv1.txt" +OVERWRITE INTO TABLE srcpart PARTITION (ds="2008-04-09", hr="11"); + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/kv1.txt" +OVERWRITE INTO TABLE srcpart PARTITION (ds="2008-04-09", hr="12"); + + +DROP TABLE IF EXISTS primitives; +CREATE TABLE primitives ( + id INT, + bool_col BOOLEAN, + tinyint_col TINYINT, + smallint_col SMALLINT, + int_col INT, + bigint_col BIGINT, + float_col FLOAT, + double_col DOUBLE, + date_string_col STRING, + string_col STRING, + timestamp_col TIMESTAMP) +PARTITIONED BY (year INT, month INT) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ',' + ESCAPED BY '\\' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/types/primitives/090101.txt" +OVERWRITE INTO TABLE primitives PARTITION(year=2009, month=1); + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/types/primitives/090201.txt" +OVERWRITE INTO TABLE primitives PARTITION(year=2009, month=2); + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/types/primitives/090301.txt" +OVERWRITE INTO TABLE primitives PARTITION(year=2009, month=3); + +LOAD DATA LOCAL INPATH "${hiveconf:test.data.dir}/types/primitives/090401.txt" +OVERWRITE INTO TABLE primitives PARTITION(year=2009, month=4); + diff --git a/sql/hive/src/test/resources/data/scripts/test_init_file.sql b/sql/hive/src/test/resources/data/scripts/test_init_file.sql new file mode 100644 index 0000000000000..776a46be084c8 --- /dev/null +++ b/sql/hive/src/test/resources/data/scripts/test_init_file.sql @@ -0,0 +1 @@ +create table tbl_created_by_init(i int); diff --git a/sql/hive/src/test/resources/golden/'1' + '1'-0-77504a9f3d712143beb52f3c25a904cb b/sql/hive/src/test/resources/golden/'1' + '1'-0-77504a9f3d712143beb52f3c25a904cb new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/'1' + '1'-0-77504a9f3d712143beb52f3c25a904cb @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/'1' + 1-0-130514c6116c311d808590a075b187b b/sql/hive/src/test/resources/golden/'1' + 1-0-130514c6116c311d808590a075b187b new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/'1' + 1-0-130514c6116c311d808590a075b187b @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/'1' + 1.0-0-5db3b55120a19863d96460d399c2d0e b/sql/hive/src/test/resources/golden/'1' + 1.0-0-5db3b55120a19863d96460d399c2d0e new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/'1' + 1.0-0-5db3b55120a19863d96460d399c2d0e @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/'1' + 1L-0-657763a2cfaa4fe3f73c5b68bc84a548 b/sql/hive/src/test/resources/golden/'1' + 1L-0-657763a2cfaa4fe3f73c5b68bc84a548 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/'1' + 1L-0-657763a2cfaa4fe3f73c5b68bc84a548 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/'1' + 1S-0-c3a1c44bebcde38c4d43bd73e3849630 b/sql/hive/src/test/resources/golden/'1' + 1S-0-c3a1c44bebcde38c4d43bd73e3849630 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/'1' + 1S-0-c3a1c44bebcde38c4d43bd73e3849630 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/'1' + 1Y-0-aa608227a4f07c5cb98fcafe1e20488a b/sql/hive/src/test/resources/golden/'1' + 1Y-0-aa608227a4f07c5cb98fcafe1e20488a new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/'1' + 1Y-0-aa608227a4f07c5cb98fcafe1e20488a @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1 + '1'-0-4d39227e4121e2dc9a25f21fa27f89a b/sql/hive/src/test/resources/golden/1 + '1'-0-4d39227e4121e2dc9a25f21fa27f89a new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1 + '1'-0-4d39227e4121e2dc9a25f21fa27f89a @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1 + 1-0-83de1c24fd6dee00409e8fdd99306ed6 b/sql/hive/src/test/resources/golden/1 + 1-0-83de1c24fd6dee00409e8fdd99306ed6 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1 + 1-0-83de1c24fd6dee00409e8fdd99306ed6 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1 + 1.0-0-4f5da98a11db8e7192423c27db767ca6 b/sql/hive/src/test/resources/golden/1 + 1.0-0-4f5da98a11db8e7192423c27db767ca6 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1 + 1.0-0-4f5da98a11db8e7192423c27db767ca6 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1 + 1L-0-917a033ac7f8f8b3a2e8e961dc91f35e b/sql/hive/src/test/resources/golden/1 + 1L-0-917a033ac7f8f8b3a2e8e961dc91f35e new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1 + 1L-0-917a033ac7f8f8b3a2e8e961dc91f35e @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1 + 1S-0-2e99da48f67f588c9e632a57c713522e b/sql/hive/src/test/resources/golden/1 + 1S-0-2e99da48f67f588c9e632a57c713522e new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1 + 1S-0-2e99da48f67f588c9e632a57c713522e @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1 + 1Y-0-1ff4db1fdac05de5b092095c2402fc5f b/sql/hive/src/test/resources/golden/1 + 1Y-0-1ff4db1fdac05de5b092095c2402fc5f new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1 + 1Y-0-1ff4db1fdac05de5b092095c2402fc5f @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1.0 + '1'-0-a6ec78b3b93d52034aab829d43210e73 b/sql/hive/src/test/resources/golden/1.0 + '1'-0-a6ec78b3b93d52034aab829d43210e73 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1.0 + '1'-0-a6ec78b3b93d52034aab829d43210e73 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1.0 + 1-0-30a4b1c8227906931cd0532367bebc43 b/sql/hive/src/test/resources/golden/1.0 + 1-0-30a4b1c8227906931cd0532367bebc43 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1.0 + 1-0-30a4b1c8227906931cd0532367bebc43 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1.0 + 1.0-0-87321b2e30ee2986b00b631d0e4f4d8d b/sql/hive/src/test/resources/golden/1.0 + 1.0-0-87321b2e30ee2986b00b631d0e4f4d8d new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1.0 + 1.0-0-87321b2e30ee2986b00b631d0e4f4d8d @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1.0 + 1L-0-44bb88a1c9280952e8119a3ab1bb4205 b/sql/hive/src/test/resources/golden/1.0 + 1L-0-44bb88a1c9280952e8119a3ab1bb4205 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1.0 + 1L-0-44bb88a1c9280952e8119a3ab1bb4205 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1.0 + 1S-0-31fbe14d01fb532176c1689680398368 b/sql/hive/src/test/resources/golden/1.0 + 1S-0-31fbe14d01fb532176c1689680398368 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1.0 + 1S-0-31fbe14d01fb532176c1689680398368 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1.0 + 1Y-0-12bcf6e49e83abd2aa36ea612b418d43 b/sql/hive/src/test/resources/golden/1.0 + 1Y-0-12bcf6e49e83abd2aa36ea612b418d43 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1.0 + 1Y-0-12bcf6e49e83abd2aa36ea612b418d43 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1L + '1'-0-6e39c7be301f3846efa9b4c939815b4a b/sql/hive/src/test/resources/golden/1L + '1'-0-6e39c7be301f3846efa9b4c939815b4a new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1L + '1'-0-6e39c7be301f3846efa9b4c939815b4a @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1L + 1-0-1864a260554255a09e4f28b8551eef9d b/sql/hive/src/test/resources/golden/1L + 1-0-1864a260554255a09e4f28b8551eef9d new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1L + 1-0-1864a260554255a09e4f28b8551eef9d @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1L + 1.0-0-95a30c4b746f520f1251981a66cef5c8 b/sql/hive/src/test/resources/golden/1L + 1.0-0-95a30c4b746f520f1251981a66cef5c8 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1L + 1.0-0-95a30c4b746f520f1251981a66cef5c8 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1L + 1L-0-e54a673c779f31597acdc5bd7d315d9f b/sql/hive/src/test/resources/golden/1L + 1L-0-e54a673c779f31597acdc5bd7d315d9f new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1L + 1L-0-e54a673c779f31597acdc5bd7d315d9f @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1L + 1S-0-b8e70f71c32aac77e2683ba20ab99688 b/sql/hive/src/test/resources/golden/1L + 1S-0-b8e70f71c32aac77e2683ba20ab99688 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1L + 1S-0-b8e70f71c32aac77e2683ba20ab99688 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1L + 1Y-0-55de31e21660fa7d213b1f68d636cbf9 b/sql/hive/src/test/resources/golden/1L + 1Y-0-55de31e21660fa7d213b1f68d636cbf9 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1L + 1Y-0-55de31e21660fa7d213b1f68d636cbf9 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1S + '1'-0-c3cf30b2c4bffc76100e7b43e7b2aec5 b/sql/hive/src/test/resources/golden/1S + '1'-0-c3cf30b2c4bffc76100e7b43e7b2aec5 new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1S + '1'-0-c3cf30b2c4bffc76100e7b43e7b2aec5 @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1S + 1-0-c378b0b2a57c54b3815e8a64686756d3 b/sql/hive/src/test/resources/golden/1S + 1-0-c378b0b2a57c54b3815e8a64686756d3 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1S + 1-0-c378b0b2a57c54b3815e8a64686756d3 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1S + 1.0-0-8dfa46ec33c1be5ffba2e40cbfe5349e b/sql/hive/src/test/resources/golden/1S + 1.0-0-8dfa46ec33c1be5ffba2e40cbfe5349e new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1S + 1.0-0-8dfa46ec33c1be5ffba2e40cbfe5349e @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1S + 1L-0-9d3ff8b5d4883a4a5a1dc0dd4f0c1116 b/sql/hive/src/test/resources/golden/1S + 1L-0-9d3ff8b5d4883a4a5a1dc0dd4f0c1116 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1S + 1L-0-9d3ff8b5d4883a4a5a1dc0dd4f0c1116 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1S + 1S-0-5054df6e72be611d6ee2a4e135bd949e b/sql/hive/src/test/resources/golden/1S + 1S-0-5054df6e72be611d6ee2a4e135bd949e new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1S + 1S-0-5054df6e72be611d6ee2a4e135bd949e @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1S + 1Y-0-e59bc8279cd364224476ffc504c7685b b/sql/hive/src/test/resources/golden/1S + 1Y-0-e59bc8279cd364224476ffc504c7685b new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1S + 1Y-0-e59bc8279cd364224476ffc504c7685b @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1Y + '1'-0-bdc0f1c52b94a852b595e54997eb9dfb b/sql/hive/src/test/resources/golden/1Y + '1'-0-bdc0f1c52b94a852b595e54997eb9dfb new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1Y + '1'-0-bdc0f1c52b94a852b595e54997eb9dfb @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1Y + 1-0-a4541db51882b19503649138fbb295f b/sql/hive/src/test/resources/golden/1Y + 1-0-a4541db51882b19503649138fbb295f new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1Y + 1-0-a4541db51882b19503649138fbb295f @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1Y + 1.0-0-3ad5e3db0d0300312d33231e7c2a6c8d b/sql/hive/src/test/resources/golden/1Y + 1.0-0-3ad5e3db0d0300312d33231e7c2a6c8d new file mode 100644 index 0000000000000..415b19fc36234 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1Y + 1.0-0-3ad5e3db0d0300312d33231e7c2a6c8d @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1Y + 1L-0-2aa9a7b23c741d78032def0641a21cb1 b/sql/hive/src/test/resources/golden/1Y + 1L-0-2aa9a7b23c741d78032def0641a21cb1 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1Y + 1L-0-2aa9a7b23c741d78032def0641a21cb1 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1Y + 1S-0-93a44c4952c4d343d3885edfc95b4b80 b/sql/hive/src/test/resources/golden/1Y + 1S-0-93a44c4952c4d343d3885edfc95b4b80 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1Y + 1S-0-93a44c4952c4d343d3885edfc95b4b80 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/1Y + 1Y-0-3d9619d963e7f1cb4ab3e8b5e24ff0d5 b/sql/hive/src/test/resources/golden/1Y + 1Y-0-3d9619d963e7f1cb4ab3e8b5e24ff0d5 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/1Y + 1Y-0-3d9619d963e7f1cb4ab3e8b5e24ff0d5 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/Column pruning: filter alias in-lining - query test-0-cb0737d268260da971487a8ac5e3d8be b/sql/hive/src/test/resources/golden/Column pruning: filter alias in-lining - query test-0-cb0737d268260da971487a8ac5e3d8be new file mode 100644 index 0000000000000..913a609968137 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Column pruning: filter alias in-lining - query test-0-cb0737d268260da971487a8ac5e3d8be @@ -0,0 +1,3 @@ +86 +27 +98 diff --git a/sql/hive/src/test/resources/golden/Column pruning: non-trivial top project with aliases - query test-0-c89dcddb8539bae211ea28cd1e695e35 b/sql/hive/src/test/resources/golden/Column pruning: non-trivial top project with aliases - query test-0-c89dcddb8539bae211ea28cd1e695e35 new file mode 100644 index 0000000000000..9a276bc794c0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/Column pruning: non-trivial top project with aliases - query test-0-c89dcddb8539bae211ea28cd1e695e35 @@ -0,0 +1,3 @@ +476 +172 +622 diff --git a/sql/hive/src/test/resources/golden/Column pruning: projects alias substituting - query test-0-9589ac54d6de575083765ee64051ebaa b/sql/hive/src/test/resources/golden/Column pruning: projects alias substituting - query test-0-9589ac54d6de575083765ee64051ebaa new file mode 100644 index 0000000000000..1c8e28554a60e --- /dev/null +++ b/sql/hive/src/test/resources/golden/Column pruning: projects alias substituting - query test-0-9589ac54d6de575083765ee64051ebaa @@ -0,0 +1,3 @@ +238 +86 +311 diff --git a/sql/hive/src/test/resources/golden/Column pruning: simple top project without aliases - query test-0-d6d2726928df920ab99078015b8ff494 b/sql/hive/src/test/resources/golden/Column pruning: simple top project without aliases - query test-0-d6d2726928df920ab99078015b8ff494 new file mode 100644 index 0000000000000..913a609968137 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Column pruning: simple top project without aliases - query test-0-d6d2726928df920ab99078015b8ff494 @@ -0,0 +1,3 @@ +86 +27 +98 diff --git a/sql/hive/src/test/resources/golden/Column pruning: with multiple projects - query test-0-cfe78c68302bd143d989c383c3b0477 b/sql/hive/src/test/resources/golden/Column pruning: with multiple projects - query test-0-cfe78c68302bd143d989c383c3b0477 new file mode 100644 index 0000000000000..1c8e28554a60e --- /dev/null +++ b/sql/hive/src/test/resources/golden/Column pruning: with multiple projects - query test-0-cfe78c68302bd143d989c383c3b0477 @@ -0,0 +1,3 @@ +238 +86 +311 diff --git a/sql/hive/src/test/resources/golden/Column pruning: with non-partitioned table - query test-0-358525951e893ed9686c46bf1f7447ee b/sql/hive/src/test/resources/golden/Column pruning: with non-partitioned table - query test-0-358525951e893ed9686c46bf1f7447ee new file mode 100644 index 0000000000000..1c8e28554a60e --- /dev/null +++ b/sql/hive/src/test/resources/golden/Column pruning: with non-partitioned table - query test-0-358525951e893ed9686c46bf1f7447ee @@ -0,0 +1,3 @@ +238 +86 +311 diff --git a/sql/hive/src/test/resources/golden/Column pruning: with partitioned table - query test-0-d9d50146537344742300ce7b52c18c91 b/sql/hive/src/test/resources/golden/Column pruning: with partitioned table - query test-0-d9d50146537344742300ce7b52c18c91 new file mode 100644 index 0000000000000..1c8e28554a60e --- /dev/null +++ b/sql/hive/src/test/resources/golden/Column pruning: with partitioned table - query test-0-d9d50146537344742300ce7b52c18c91 @@ -0,0 +1,3 @@ +238 +86 +311 diff --git a/sql/hive/src/test/resources/golden/Column pruning: without filters - query test-0-c25cdafe7d85c42a9d9cd559d88a6049 b/sql/hive/src/test/resources/golden/Column pruning: without filters - query test-0-c25cdafe7d85c42a9d9cd559d88a6049 new file mode 100644 index 0000000000000..1c8e28554a60e --- /dev/null +++ b/sql/hive/src/test/resources/golden/Column pruning: without filters - query test-0-c25cdafe7d85c42a9d9cd559d88a6049 @@ -0,0 +1,3 @@ +238 +86 +311 diff --git a/sql/hive/src/test/resources/golden/DISTINCT-0-3af674dcb5dd91ad17722d2022a8d59a b/sql/hive/src/test/resources/golden/DISTINCT-0-3af674dcb5dd91ad17722d2022a8d59a new file mode 100644 index 0000000000000..5710fb29e7e02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/DISTINCT-0-3af674dcb5dd91ad17722d2022a8d59a @@ -0,0 +1,309 @@ +0 val_0 +2 val_2 +4 val_4 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +15 val_15 +17 val_17 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +37 val_37 +41 val_41 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +69 val_69 +70 val_70 +72 val_72 +74 val_74 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +92 val_92 +95 val_95 +96 val_96 +97 val_97 +98 val_98 +100 val_100 +103 val_103 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +119 val_119 +120 val_120 +125 val_125 +126 val_126 +128 val_128 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +136 val_136 +137 val_137 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +149 val_149 +150 val_150 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +165 val_165 +166 val_166 +167 val_167 +168 val_168 +169 val_169 +170 val_170 +172 val_172 +174 val_174 +175 val_175 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +192 val_192 +193 val_193 +194 val_194 +195 val_195 +196 val_196 +197 val_197 +199 val_199 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +205 val_205 +207 val_207 +208 val_208 +209 val_209 +213 val_213 +214 val_214 +216 val_216 +217 val_217 +218 val_218 +219 val_219 +221 val_221 +222 val_222 +223 val_223 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +230 val_230 +233 val_233 +235 val_235 +237 val_237 +238 val_238 +239 val_239 +241 val_241 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +266 val_266 +272 val_272 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +278 val_278 +280 val_280 +281 val_281 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +308 val_308 +309 val_309 +310 val_310 +311 val_311 +315 val_315 +316 val_316 +317 val_317 +318 val_318 +321 val_321 +322 val_322 +323 val_323 +325 val_325 +327 val_327 +331 val_331 +332 val_332 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +344 val_344 +345 val_345 +348 val_348 +351 val_351 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +368 val_368 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +396 val_396 +397 val_397 +399 val_399 +400 val_400 +401 val_401 +402 val_402 +403 val_403 +404 val_404 +406 val_406 +407 val_407 +409 val_409 +411 val_411 +413 val_413 +414 val_414 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +427 val_427 +429 val_429 +430 val_430 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +459 val_459 +460 val_460 +462 val_462 +463 val_463 +466 val_466 +467 val_467 +468 val_468 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +479 val_479 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 diff --git a/sql/hive/src/test/resources/golden/Escape sequences-0-2f25c33d97c43f3276171624d988a286 b/sql/hive/src/test/resources/golden/Escape sequences-0-2f25c33d97c43f3276171624d988a286 new file mode 100644 index 0000000000000..bbe37f8e2a790 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Escape sequences-0-2f25c33d97c43f3276171624d988a286 @@ -0,0 +1 @@ +86 \ \ \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/IgnoreExplain-0-85d398864d4aa1d0e10ffd668fdf1a59 b/sql/hive/src/test/resources/golden/IgnoreExplain-0-85d398864d4aa1d0e10ffd668fdf1a59 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/LIKE-0-8a6078c9da5f15ea95ba3682fd66e672 b/sql/hive/src/test/resources/golden/LIKE-0-8a6078c9da5f15ea95ba3682fd66e672 new file mode 100644 index 0000000000000..8007988316af0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/LIKE-0-8a6078c9da5f15ea95ba3682fd66e672 @@ -0,0 +1,175 @@ +311 val_311 +165 val_165 +193 val_193 +401 val_401 +150 val_150 +128 val_128 +213 val_213 +146 val_146 +152 val_152 +145 val_145 +281 val_281 +15 val_15 +166 val_166 +417 val_417 +219 val_219 +153 val_153 +193 val_193 +174 val_174 +413 val_413 +199 val_199 +174 val_174 +417 val_417 +162 val_162 +167 val_167 +195 val_195 +17 val_17 +113 val_113 +155 val_155 +128 val_128 +311 val_311 +316 val_316 +149 val_149 +129 val_129 +170 val_170 +157 val_157 +221 val_221 +111 val_111 +169 val_169 +125 val_125 +192 val_192 +187 val_187 +176 val_176 +51 val_51 +138 val_138 +103 val_103 +213 val_213 +216 val_216 +176 val_176 +221 val_221 +318 val_318 +311 val_311 +137 val_137 +241 val_241 +180 val_180 +12 val_12 +181 val_181 +138 val_138 +217 val_217 +411 val_411 +431 val_431 +179 val_179 +172 val_172 +129 val_129 +158 val_158 +119 val_119 +197 val_197 +100 val_100 +199 val_199 +191 val_191 +418 val_418 +165 val_165 +120 val_120 +131 val_131 +51 val_51 +156 val_156 +196 val_196 +481 val_481 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +137 val_137 +316 val_316 +169 val_169 +413 val_413 +179 val_179 +118 val_118 +134 val_134 +138 val_138 +419 val_419 +15 val_15 +118 val_118 +19 val_19 +10 val_10 +331 val_331 +401 val_401 +177 val_177 +317 val_317 +11 val_11 +168 val_168 +143 val_143 +160 val_160 +195 val_195 +321 val_321 +119 val_119 +41 val_41 +149 val_149 +218 val_218 +138 val_138 +103 val_103 +113 val_113 +216 val_216 +167 val_167 +219 val_219 +116 val_116 +401 val_401 +191 val_191 +128 val_128 +316 val_316 +331 val_331 +193 val_193 +321 val_321 +104 val_104 +175 val_175 +105 val_105 +190 val_190 +401 val_401 +114 val_114 +12 val_12 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +125 val_125 +431 val_431 +164 val_164 +187 val_187 +291 val_291 +351 val_351 +104 val_104 +163 val_163 +119 val_119 +414 val_414 +491 val_491 +417 val_417 +199 val_199 +120 val_120 +169 val_169 +178 val_178 +310 val_310 +317 val_317 +136 val_136 +172 val_172 +214 val_214 +133 val_133 +175 val_175 +189 val_189 +401 val_401 +421 val_421 +134 val_134 +18 val_18 +100 val_100 +341 val_341 +146 val_146 +186 val_186 +167 val_167 +18 val_18 +183 val_183 +281 val_281 +315 val_315 +152 val_152 +194 val_194 +414 val_414 +126 val_126 +169 val_169 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/Partition pruning: all partitions pruned - query test-0-63ab78355dbc6fa0d7619c8a35b0f7a7 b/sql/hive/src/test/resources/golden/Partition pruning: all partitions pruned - query test-0-63ab78355dbc6fa0d7619c8a35b0f7a7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/Partition pruning: left only 1 partition - query test-0-3adc3a7f76b2abd059904ba81a595db3 b/sql/hive/src/test/resources/golden/Partition pruning: left only 1 partition - query test-0-3adc3a7f76b2abd059904ba81a595db3 new file mode 100644 index 0000000000000..0fe6b905e7781 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Partition pruning: left only 1 partition - query test-0-3adc3a7f76b2abd059904ba81a595db3 @@ -0,0 +1,500 @@ +val_238 11 +val_86 11 +val_311 11 +val_27 11 +val_165 11 +val_409 11 +val_255 11 +val_278 11 +val_98 11 +val_484 11 +val_265 11 +val_193 11 +val_401 11 +val_150 11 +val_273 11 +val_224 11 +val_369 11 +val_66 11 +val_128 11 +val_213 11 +val_146 11 +val_406 11 +val_429 11 +val_374 11 +val_152 11 +val_469 11 +val_145 11 +val_495 11 +val_37 11 +val_327 11 +val_281 11 +val_277 11 +val_209 11 +val_15 11 +val_82 11 +val_403 11 +val_166 11 +val_417 11 +val_430 11 +val_252 11 +val_292 11 +val_219 11 +val_287 11 +val_153 11 +val_193 11 +val_338 11 +val_446 11 +val_459 11 +val_394 11 +val_237 11 +val_482 11 +val_174 11 +val_413 11 +val_494 11 +val_207 11 +val_199 11 +val_466 11 +val_208 11 +val_174 11 +val_399 11 +val_396 11 +val_247 11 +val_417 11 +val_489 11 +val_162 11 +val_377 11 +val_397 11 +val_309 11 +val_365 11 +val_266 11 +val_439 11 +val_342 11 +val_367 11 +val_325 11 +val_167 11 +val_195 11 +val_475 11 +val_17 11 +val_113 11 +val_155 11 +val_203 11 +val_339 11 +val_0 11 +val_455 11 +val_128 11 +val_311 11 +val_316 11 +val_57 11 +val_302 11 +val_205 11 +val_149 11 +val_438 11 +val_345 11 +val_129 11 +val_170 11 +val_20 11 +val_489 11 +val_157 11 +val_378 11 +val_221 11 +val_92 11 +val_111 11 +val_47 11 +val_72 11 +val_4 11 +val_280 11 +val_35 11 +val_427 11 +val_277 11 +val_208 11 +val_356 11 +val_399 11 +val_169 11 +val_382 11 +val_498 11 +val_125 11 +val_386 11 +val_437 11 +val_469 11 +val_192 11 +val_286 11 +val_187 11 +val_176 11 +val_54 11 +val_459 11 +val_51 11 +val_138 11 +val_103 11 +val_239 11 +val_213 11 +val_216 11 +val_430 11 +val_278 11 +val_176 11 +val_289 11 +val_221 11 +val_65 11 +val_318 11 +val_332 11 +val_311 11 +val_275 11 +val_137 11 +val_241 11 +val_83 11 +val_333 11 +val_180 11 +val_284 11 +val_12 11 +val_230 11 +val_181 11 +val_67 11 +val_260 11 +val_404 11 +val_384 11 +val_489 11 +val_353 11 +val_373 11 +val_272 11 +val_138 11 +val_217 11 +val_84 11 +val_348 11 +val_466 11 +val_58 11 +val_8 11 +val_411 11 +val_230 11 +val_208 11 +val_348 11 +val_24 11 +val_463 11 +val_431 11 +val_179 11 +val_172 11 +val_42 11 +val_129 11 +val_158 11 +val_119 11 +val_496 11 +val_0 11 +val_322 11 +val_197 11 +val_468 11 +val_393 11 +val_454 11 +val_100 11 +val_298 11 +val_199 11 +val_191 11 +val_418 11 +val_96 11 +val_26 11 +val_165 11 +val_327 11 +val_230 11 +val_205 11 +val_120 11 +val_131 11 +val_51 11 +val_404 11 +val_43 11 +val_436 11 +val_156 11 +val_469 11 +val_468 11 +val_308 11 +val_95 11 +val_196 11 +val_288 11 +val_481 11 +val_457 11 +val_98 11 +val_282 11 +val_197 11 +val_187 11 +val_318 11 +val_318 11 +val_409 11 +val_470 11 +val_137 11 +val_369 11 +val_316 11 +val_169 11 +val_413 11 +val_85 11 +val_77 11 +val_0 11 +val_490 11 +val_87 11 +val_364 11 +val_179 11 +val_118 11 +val_134 11 +val_395 11 +val_282 11 +val_138 11 +val_238 11 +val_419 11 +val_15 11 +val_118 11 +val_72 11 +val_90 11 +val_307 11 +val_19 11 +val_435 11 +val_10 11 +val_277 11 +val_273 11 +val_306 11 +val_224 11 +val_309 11 +val_389 11 +val_327 11 +val_242 11 +val_369 11 +val_392 11 +val_272 11 +val_331 11 +val_401 11 +val_242 11 +val_452 11 +val_177 11 +val_226 11 +val_5 11 +val_497 11 +val_402 11 +val_396 11 +val_317 11 +val_395 11 +val_58 11 +val_35 11 +val_336 11 +val_95 11 +val_11 11 +val_168 11 +val_34 11 +val_229 11 +val_233 11 +val_143 11 +val_472 11 +val_322 11 +val_498 11 +val_160 11 +val_195 11 +val_42 11 +val_321 11 +val_430 11 +val_119 11 +val_489 11 +val_458 11 +val_78 11 +val_76 11 +val_41 11 +val_223 11 +val_492 11 +val_149 11 +val_449 11 +val_218 11 +val_228 11 +val_138 11 +val_453 11 +val_30 11 +val_209 11 +val_64 11 +val_468 11 +val_76 11 +val_74 11 +val_342 11 +val_69 11 +val_230 11 +val_33 11 +val_368 11 +val_103 11 +val_296 11 +val_113 11 +val_216 11 +val_367 11 +val_344 11 +val_167 11 +val_274 11 +val_219 11 +val_239 11 +val_485 11 +val_116 11 +val_223 11 +val_256 11 +val_263 11 +val_70 11 +val_487 11 +val_480 11 +val_401 11 +val_288 11 +val_191 11 +val_5 11 +val_244 11 +val_438 11 +val_128 11 +val_467 11 +val_432 11 +val_202 11 +val_316 11 +val_229 11 +val_469 11 +val_463 11 +val_280 11 +val_2 11 +val_35 11 +val_283 11 +val_331 11 +val_235 11 +val_80 11 +val_44 11 +val_193 11 +val_321 11 +val_335 11 +val_104 11 +val_466 11 +val_366 11 +val_175 11 +val_403 11 +val_483 11 +val_53 11 +val_105 11 +val_257 11 +val_406 11 +val_409 11 +val_190 11 +val_406 11 +val_401 11 +val_114 11 +val_258 11 +val_90 11 +val_203 11 +val_262 11 +val_348 11 +val_424 11 +val_12 11 +val_396 11 +val_201 11 +val_217 11 +val_164 11 +val_431 11 +val_454 11 +val_478 11 +val_298 11 +val_125 11 +val_431 11 +val_164 11 +val_424 11 +val_187 11 +val_382 11 +val_5 11 +val_70 11 +val_397 11 +val_480 11 +val_291 11 +val_24 11 +val_351 11 +val_255 11 +val_104 11 +val_70 11 +val_163 11 +val_438 11 +val_119 11 +val_414 11 +val_200 11 +val_491 11 +val_237 11 +val_439 11 +val_360 11 +val_248 11 +val_479 11 +val_305 11 +val_417 11 +val_199 11 +val_444 11 +val_120 11 +val_429 11 +val_169 11 +val_443 11 +val_323 11 +val_325 11 +val_277 11 +val_230 11 +val_478 11 +val_178 11 +val_468 11 +val_310 11 +val_317 11 +val_333 11 +val_493 11 +val_460 11 +val_207 11 +val_249 11 +val_265 11 +val_480 11 +val_83 11 +val_136 11 +val_353 11 +val_172 11 +val_214 11 +val_462 11 +val_233 11 +val_406 11 +val_133 11 +val_175 11 +val_189 11 +val_454 11 +val_375 11 +val_401 11 +val_421 11 +val_407 11 +val_384 11 +val_256 11 +val_26 11 +val_134 11 +val_67 11 +val_384 11 +val_379 11 +val_18 11 +val_462 11 +val_492 11 +val_100 11 +val_298 11 +val_9 11 +val_341 11 +val_498 11 +val_146 11 +val_458 11 +val_362 11 +val_186 11 +val_285 11 +val_348 11 +val_167 11 +val_18 11 +val_273 11 +val_183 11 +val_281 11 +val_344 11 +val_97 11 +val_469 11 +val_315 11 +val_84 11 +val_28 11 +val_37 11 +val_448 11 +val_152 11 +val_348 11 +val_307 11 +val_194 11 +val_414 11 +val_477 11 +val_222 11 +val_126 11 +val_90 11 +val_169 11 +val_403 11 +val_400 11 +val_200 11 +val_97 11 diff --git a/sql/hive/src/test/resources/golden/Partition pruning: non-partitioned, non-trivial project - query test-0-3893ec7a86062215d9f817f1495a69bb b/sql/hive/src/test/resources/golden/Partition pruning: non-partitioned, non-trivial project - query test-0-3893ec7a86062215d9f817f1495a69bb new file mode 100644 index 0000000000000..444039e75fbac --- /dev/null +++ b/sql/hive/src/test/resources/golden/Partition pruning: non-partitioned, non-trivial project - query test-0-3893ec7a86062215d9f817f1495a69bb @@ -0,0 +1,500 @@ +476 +172 +622 +54 +330 +818 +510 +556 +196 +968 +530 +386 +802 +300 +546 +448 +738 +132 +256 +426 +292 +812 +858 +748 +304 +938 +290 +990 +74 +654 +562 +554 +418 +30 +164 +806 +332 +834 +860 +504 +584 +438 +574 +306 +386 +676 +892 +918 +788 +474 +964 +348 +826 +988 +414 +398 +932 +416 +348 +798 +792 +494 +834 +978 +324 +754 +794 +618 +730 +532 +878 +684 +734 +650 +334 +390 +950 +34 +226 +310 +406 +678 +0 +910 +256 +622 +632 +114 +604 +410 +298 +876 +690 +258 +340 +40 +978 +314 +756 +442 +184 +222 +94 +144 +8 +560 +70 +854 +554 +416 +712 +798 +338 +764 +996 +250 +772 +874 +938 +384 +572 +374 +352 +108 +918 +102 +276 +206 +478 +426 +432 +860 +556 +352 +578 +442 +130 +636 +664 +622 +550 +274 +482 +166 +666 +360 +568 +24 +460 +362 +134 +520 +808 +768 +978 +706 +746 +544 +276 +434 +168 +696 +932 +116 +16 +822 +460 +416 +696 +48 +926 +862 +358 +344 +84 +258 +316 +238 +992 +0 +644 +394 +936 +786 +908 +200 +596 +398 +382 +836 +192 +52 +330 +654 +460 +410 +240 +262 +102 +808 +86 +872 +312 +938 +936 +616 +190 +392 +576 +962 +914 +196 +564 +394 +374 +636 +636 +818 +940 +274 +738 +632 +338 +826 +170 +154 +0 +980 +174 +728 +358 +236 +268 +790 +564 +276 +476 +838 +30 +236 +144 +180 +614 +38 +870 +20 +554 +546 +612 +448 +618 +778 +654 +484 +738 +784 +544 +662 +802 +484 +904 +354 +452 +10 +994 +804 +792 +634 +790 +116 +70 +672 +190 +22 +336 +68 +458 +466 +286 +944 +644 +996 +320 +390 +84 +642 +860 +238 +978 +916 +156 +152 +82 +446 +984 +298 +898 +436 +456 +276 +906 +60 +418 +128 +936 +152 +148 +684 +138 +460 +66 +736 +206 +592 +226 +432 +734 +688 +334 +548 +438 +478 +970 +232 +446 +512 +526 +140 +974 +960 +802 +576 +382 +10 +488 +876 +256 +934 +864 +404 +632 +458 +938 +926 +560 +4 +70 +566 +662 +470 +160 +88 +386 +642 +670 +208 +932 +732 +350 +806 +966 +106 +210 +514 +812 +818 +380 +812 +802 +228 +516 +180 +406 +524 +696 +848 +24 +792 +402 +434 +328 +862 +908 +956 +596 +250 +862 +328 +848 +374 +764 +10 +140 +794 +960 +582 +48 +702 +510 +208 +140 +326 +876 +238 +828 +400 +982 +474 +878 +720 +496 +958 +610 +834 +398 +888 +240 +858 +338 +886 +646 +650 +554 +460 +956 +356 +936 +620 +634 +666 +986 +920 +414 +498 +530 +960 +166 +272 +706 +344 +428 +924 +466 +812 +266 +350 +378 +908 +750 +802 +842 +814 +768 +512 +52 +268 +134 +768 +758 +36 +924 +984 +200 +596 +18 +682 +996 +292 +916 +724 +372 +570 +696 +334 +36 +546 +366 +562 +688 +194 +938 +630 +168 +56 +74 +896 +304 +696 +614 +388 +828 +954 +444 +252 +180 +338 +806 +800 +400 +194 diff --git a/sql/hive/src/test/resources/golden/Partition pruning: pruning with both column key and partition key - query test-0-75148567b91227053f728d72f7dc7c10 b/sql/hive/src/test/resources/golden/Partition pruning: pruning with both column key and partition key - query test-0-75148567b91227053f728d72f7dc7c10 new file mode 100644 index 0000000000000..d83d8b62b7095 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Partition pruning: pruning with both column key and partition key - query test-0-75148567b91227053f728d72f7dc7c10 @@ -0,0 +1,1000 @@ +val_238 11 +val_86 11 +val_311 11 +val_27 11 +val_165 11 +val_409 11 +val_255 11 +val_278 11 +val_98 11 +val_484 11 +val_265 11 +val_193 11 +val_401 11 +val_150 11 +val_273 11 +val_224 11 +val_369 11 +val_66 11 +val_128 11 +val_213 11 +val_146 11 +val_406 11 +val_429 11 +val_374 11 +val_152 11 +val_469 11 +val_145 11 +val_495 11 +val_37 11 +val_327 11 +val_281 11 +val_277 11 +val_209 11 +val_15 11 +val_82 11 +val_403 11 +val_166 11 +val_417 11 +val_430 11 +val_252 11 +val_292 11 +val_219 11 +val_287 11 +val_153 11 +val_193 11 +val_338 11 +val_446 11 +val_459 11 +val_394 11 +val_237 11 +val_482 11 +val_174 11 +val_413 11 +val_494 11 +val_207 11 +val_199 11 +val_466 11 +val_208 11 +val_174 11 +val_399 11 +val_396 11 +val_247 11 +val_417 11 +val_489 11 +val_162 11 +val_377 11 +val_397 11 +val_309 11 +val_365 11 +val_266 11 +val_439 11 +val_342 11 +val_367 11 +val_325 11 +val_167 11 +val_195 11 +val_475 11 +val_17 11 +val_113 11 +val_155 11 +val_203 11 +val_339 11 +val_0 11 +val_455 11 +val_128 11 +val_311 11 +val_316 11 +val_57 11 +val_302 11 +val_205 11 +val_149 11 +val_438 11 +val_345 11 +val_129 11 +val_170 11 +val_20 11 +val_489 11 +val_157 11 +val_378 11 +val_221 11 +val_92 11 +val_111 11 +val_47 11 +val_72 11 +val_4 11 +val_280 11 +val_35 11 +val_427 11 +val_277 11 +val_208 11 +val_356 11 +val_399 11 +val_169 11 +val_382 11 +val_498 11 +val_125 11 +val_386 11 +val_437 11 +val_469 11 +val_192 11 +val_286 11 +val_187 11 +val_176 11 +val_54 11 +val_459 11 +val_51 11 +val_138 11 +val_103 11 +val_239 11 +val_213 11 +val_216 11 +val_430 11 +val_278 11 +val_176 11 +val_289 11 +val_221 11 +val_65 11 +val_318 11 +val_332 11 +val_311 11 +val_275 11 +val_137 11 +val_241 11 +val_83 11 +val_333 11 +val_180 11 +val_284 11 +val_12 11 +val_230 11 +val_181 11 +val_67 11 +val_260 11 +val_404 11 +val_384 11 +val_489 11 +val_353 11 +val_373 11 +val_272 11 +val_138 11 +val_217 11 +val_84 11 +val_348 11 +val_466 11 +val_58 11 +val_8 11 +val_411 11 +val_230 11 +val_208 11 +val_348 11 +val_24 11 +val_463 11 +val_431 11 +val_179 11 +val_172 11 +val_42 11 +val_129 11 +val_158 11 +val_119 11 +val_496 11 +val_0 11 +val_322 11 +val_197 11 +val_468 11 +val_393 11 +val_454 11 +val_100 11 +val_298 11 +val_199 11 +val_191 11 +val_418 11 +val_96 11 +val_26 11 +val_165 11 +val_327 11 +val_230 11 +val_205 11 +val_120 11 +val_131 11 +val_51 11 +val_404 11 +val_43 11 +val_436 11 +val_156 11 +val_469 11 +val_468 11 +val_308 11 +val_95 11 +val_196 11 +val_288 11 +val_481 11 +val_457 11 +val_98 11 +val_282 11 +val_197 11 +val_187 11 +val_318 11 +val_318 11 +val_409 11 +val_470 11 +val_137 11 +val_369 11 +val_316 11 +val_169 11 +val_413 11 +val_85 11 +val_77 11 +val_0 11 +val_490 11 +val_87 11 +val_364 11 +val_179 11 +val_118 11 +val_134 11 +val_395 11 +val_282 11 +val_138 11 +val_238 11 +val_419 11 +val_15 11 +val_118 11 +val_72 11 +val_90 11 +val_307 11 +val_19 11 +val_435 11 +val_10 11 +val_277 11 +val_273 11 +val_306 11 +val_224 11 +val_309 11 +val_389 11 +val_327 11 +val_242 11 +val_369 11 +val_392 11 +val_272 11 +val_331 11 +val_401 11 +val_242 11 +val_452 11 +val_177 11 +val_226 11 +val_5 11 +val_497 11 +val_402 11 +val_396 11 +val_317 11 +val_395 11 +val_58 11 +val_35 11 +val_336 11 +val_95 11 +val_11 11 +val_168 11 +val_34 11 +val_229 11 +val_233 11 +val_143 11 +val_472 11 +val_322 11 +val_498 11 +val_160 11 +val_195 11 +val_42 11 +val_321 11 +val_430 11 +val_119 11 +val_489 11 +val_458 11 +val_78 11 +val_76 11 +val_41 11 +val_223 11 +val_492 11 +val_149 11 +val_449 11 +val_218 11 +val_228 11 +val_138 11 +val_453 11 +val_30 11 +val_209 11 +val_64 11 +val_468 11 +val_76 11 +val_74 11 +val_342 11 +val_69 11 +val_230 11 +val_33 11 +val_368 11 +val_103 11 +val_296 11 +val_113 11 +val_216 11 +val_367 11 +val_344 11 +val_167 11 +val_274 11 +val_219 11 +val_239 11 +val_485 11 +val_116 11 +val_223 11 +val_256 11 +val_263 11 +val_70 11 +val_487 11 +val_480 11 +val_401 11 +val_288 11 +val_191 11 +val_5 11 +val_244 11 +val_438 11 +val_128 11 +val_467 11 +val_432 11 +val_202 11 +val_316 11 +val_229 11 +val_469 11 +val_463 11 +val_280 11 +val_2 11 +val_35 11 +val_283 11 +val_331 11 +val_235 11 +val_80 11 +val_44 11 +val_193 11 +val_321 11 +val_335 11 +val_104 11 +val_466 11 +val_366 11 +val_175 11 +val_403 11 +val_483 11 +val_53 11 +val_105 11 +val_257 11 +val_406 11 +val_409 11 +val_190 11 +val_406 11 +val_401 11 +val_114 11 +val_258 11 +val_90 11 +val_203 11 +val_262 11 +val_348 11 +val_424 11 +val_12 11 +val_396 11 +val_201 11 +val_217 11 +val_164 11 +val_431 11 +val_454 11 +val_478 11 +val_298 11 +val_125 11 +val_431 11 +val_164 11 +val_424 11 +val_187 11 +val_382 11 +val_5 11 +val_70 11 +val_397 11 +val_480 11 +val_291 11 +val_24 11 +val_351 11 +val_255 11 +val_104 11 +val_70 11 +val_163 11 +val_438 11 +val_119 11 +val_414 11 +val_200 11 +val_491 11 +val_237 11 +val_439 11 +val_360 11 +val_248 11 +val_479 11 +val_305 11 +val_417 11 +val_199 11 +val_444 11 +val_120 11 +val_429 11 +val_169 11 +val_443 11 +val_323 11 +val_325 11 +val_277 11 +val_230 11 +val_478 11 +val_178 11 +val_468 11 +val_310 11 +val_317 11 +val_333 11 +val_493 11 +val_460 11 +val_207 11 +val_249 11 +val_265 11 +val_480 11 +val_83 11 +val_136 11 +val_353 11 +val_172 11 +val_214 11 +val_462 11 +val_233 11 +val_406 11 +val_133 11 +val_175 11 +val_189 11 +val_454 11 +val_375 11 +val_401 11 +val_421 11 +val_407 11 +val_384 11 +val_256 11 +val_26 11 +val_134 11 +val_67 11 +val_384 11 +val_379 11 +val_18 11 +val_462 11 +val_492 11 +val_100 11 +val_298 11 +val_9 11 +val_341 11 +val_498 11 +val_146 11 +val_458 11 +val_362 11 +val_186 11 +val_285 11 +val_348 11 +val_167 11 +val_18 11 +val_273 11 +val_183 11 +val_281 11 +val_344 11 +val_97 11 +val_469 11 +val_315 11 +val_84 11 +val_28 11 +val_37 11 +val_448 11 +val_152 11 +val_348 11 +val_307 11 +val_194 11 +val_414 11 +val_477 11 +val_222 11 +val_126 11 +val_90 11 +val_169 11 +val_403 11 +val_400 11 +val_200 11 +val_97 11 +val_238 11 +val_86 11 +val_311 11 +val_27 11 +val_165 11 +val_409 11 +val_255 11 +val_278 11 +val_98 11 +val_484 11 +val_265 11 +val_193 11 +val_401 11 +val_150 11 +val_273 11 +val_224 11 +val_369 11 +val_66 11 +val_128 11 +val_213 11 +val_146 11 +val_406 11 +val_429 11 +val_374 11 +val_152 11 +val_469 11 +val_145 11 +val_495 11 +val_37 11 +val_327 11 +val_281 11 +val_277 11 +val_209 11 +val_15 11 +val_82 11 +val_403 11 +val_166 11 +val_417 11 +val_430 11 +val_252 11 +val_292 11 +val_219 11 +val_287 11 +val_153 11 +val_193 11 +val_338 11 +val_446 11 +val_459 11 +val_394 11 +val_237 11 +val_482 11 +val_174 11 +val_413 11 +val_494 11 +val_207 11 +val_199 11 +val_466 11 +val_208 11 +val_174 11 +val_399 11 +val_396 11 +val_247 11 +val_417 11 +val_489 11 +val_162 11 +val_377 11 +val_397 11 +val_309 11 +val_365 11 +val_266 11 +val_439 11 +val_342 11 +val_367 11 +val_325 11 +val_167 11 +val_195 11 +val_475 11 +val_17 11 +val_113 11 +val_155 11 +val_203 11 +val_339 11 +val_0 11 +val_455 11 +val_128 11 +val_311 11 +val_316 11 +val_57 11 +val_302 11 +val_205 11 +val_149 11 +val_438 11 +val_345 11 +val_129 11 +val_170 11 +val_20 11 +val_489 11 +val_157 11 +val_378 11 +val_221 11 +val_92 11 +val_111 11 +val_47 11 +val_72 11 +val_4 11 +val_280 11 +val_35 11 +val_427 11 +val_277 11 +val_208 11 +val_356 11 +val_399 11 +val_169 11 +val_382 11 +val_498 11 +val_125 11 +val_386 11 +val_437 11 +val_469 11 +val_192 11 +val_286 11 +val_187 11 +val_176 11 +val_54 11 +val_459 11 +val_51 11 +val_138 11 +val_103 11 +val_239 11 +val_213 11 +val_216 11 +val_430 11 +val_278 11 +val_176 11 +val_289 11 +val_221 11 +val_65 11 +val_318 11 +val_332 11 +val_311 11 +val_275 11 +val_137 11 +val_241 11 +val_83 11 +val_333 11 +val_180 11 +val_284 11 +val_12 11 +val_230 11 +val_181 11 +val_67 11 +val_260 11 +val_404 11 +val_384 11 +val_489 11 +val_353 11 +val_373 11 +val_272 11 +val_138 11 +val_217 11 +val_84 11 +val_348 11 +val_466 11 +val_58 11 +val_8 11 +val_411 11 +val_230 11 +val_208 11 +val_348 11 +val_24 11 +val_463 11 +val_431 11 +val_179 11 +val_172 11 +val_42 11 +val_129 11 +val_158 11 +val_119 11 +val_496 11 +val_0 11 +val_322 11 +val_197 11 +val_468 11 +val_393 11 +val_454 11 +val_100 11 +val_298 11 +val_199 11 +val_191 11 +val_418 11 +val_96 11 +val_26 11 +val_165 11 +val_327 11 +val_230 11 +val_205 11 +val_120 11 +val_131 11 +val_51 11 +val_404 11 +val_43 11 +val_436 11 +val_156 11 +val_469 11 +val_468 11 +val_308 11 +val_95 11 +val_196 11 +val_288 11 +val_481 11 +val_457 11 +val_98 11 +val_282 11 +val_197 11 +val_187 11 +val_318 11 +val_318 11 +val_409 11 +val_470 11 +val_137 11 +val_369 11 +val_316 11 +val_169 11 +val_413 11 +val_85 11 +val_77 11 +val_0 11 +val_490 11 +val_87 11 +val_364 11 +val_179 11 +val_118 11 +val_134 11 +val_395 11 +val_282 11 +val_138 11 +val_238 11 +val_419 11 +val_15 11 +val_118 11 +val_72 11 +val_90 11 +val_307 11 +val_19 11 +val_435 11 +val_10 11 +val_277 11 +val_273 11 +val_306 11 +val_224 11 +val_309 11 +val_389 11 +val_327 11 +val_242 11 +val_369 11 +val_392 11 +val_272 11 +val_331 11 +val_401 11 +val_242 11 +val_452 11 +val_177 11 +val_226 11 +val_5 11 +val_497 11 +val_402 11 +val_396 11 +val_317 11 +val_395 11 +val_58 11 +val_35 11 +val_336 11 +val_95 11 +val_11 11 +val_168 11 +val_34 11 +val_229 11 +val_233 11 +val_143 11 +val_472 11 +val_322 11 +val_498 11 +val_160 11 +val_195 11 +val_42 11 +val_321 11 +val_430 11 +val_119 11 +val_489 11 +val_458 11 +val_78 11 +val_76 11 +val_41 11 +val_223 11 +val_492 11 +val_149 11 +val_449 11 +val_218 11 +val_228 11 +val_138 11 +val_453 11 +val_30 11 +val_209 11 +val_64 11 +val_468 11 +val_76 11 +val_74 11 +val_342 11 +val_69 11 +val_230 11 +val_33 11 +val_368 11 +val_103 11 +val_296 11 +val_113 11 +val_216 11 +val_367 11 +val_344 11 +val_167 11 +val_274 11 +val_219 11 +val_239 11 +val_485 11 +val_116 11 +val_223 11 +val_256 11 +val_263 11 +val_70 11 +val_487 11 +val_480 11 +val_401 11 +val_288 11 +val_191 11 +val_5 11 +val_244 11 +val_438 11 +val_128 11 +val_467 11 +val_432 11 +val_202 11 +val_316 11 +val_229 11 +val_469 11 +val_463 11 +val_280 11 +val_2 11 +val_35 11 +val_283 11 +val_331 11 +val_235 11 +val_80 11 +val_44 11 +val_193 11 +val_321 11 +val_335 11 +val_104 11 +val_466 11 +val_366 11 +val_175 11 +val_403 11 +val_483 11 +val_53 11 +val_105 11 +val_257 11 +val_406 11 +val_409 11 +val_190 11 +val_406 11 +val_401 11 +val_114 11 +val_258 11 +val_90 11 +val_203 11 +val_262 11 +val_348 11 +val_424 11 +val_12 11 +val_396 11 +val_201 11 +val_217 11 +val_164 11 +val_431 11 +val_454 11 +val_478 11 +val_298 11 +val_125 11 +val_431 11 +val_164 11 +val_424 11 +val_187 11 +val_382 11 +val_5 11 +val_70 11 +val_397 11 +val_480 11 +val_291 11 +val_24 11 +val_351 11 +val_255 11 +val_104 11 +val_70 11 +val_163 11 +val_438 11 +val_119 11 +val_414 11 +val_200 11 +val_491 11 +val_237 11 +val_439 11 +val_360 11 +val_248 11 +val_479 11 +val_305 11 +val_417 11 +val_199 11 +val_444 11 +val_120 11 +val_429 11 +val_169 11 +val_443 11 +val_323 11 +val_325 11 +val_277 11 +val_230 11 +val_478 11 +val_178 11 +val_468 11 +val_310 11 +val_317 11 +val_333 11 +val_493 11 +val_460 11 +val_207 11 +val_249 11 +val_265 11 +val_480 11 +val_83 11 +val_136 11 +val_353 11 +val_172 11 +val_214 11 +val_462 11 +val_233 11 +val_406 11 +val_133 11 +val_175 11 +val_189 11 +val_454 11 +val_375 11 +val_401 11 +val_421 11 +val_407 11 +val_384 11 +val_256 11 +val_26 11 +val_134 11 +val_67 11 +val_384 11 +val_379 11 +val_18 11 +val_462 11 +val_492 11 +val_100 11 +val_298 11 +val_9 11 +val_341 11 +val_498 11 +val_146 11 +val_458 11 +val_362 11 +val_186 11 +val_285 11 +val_348 11 +val_167 11 +val_18 11 +val_273 11 +val_183 11 +val_281 11 +val_344 11 +val_97 11 +val_469 11 +val_315 11 +val_84 11 +val_28 11 +val_37 11 +val_448 11 +val_152 11 +val_348 11 +val_307 11 +val_194 11 +val_414 11 +val_477 11 +val_222 11 +val_126 11 +val_90 11 +val_169 11 +val_403 11 +val_400 11 +val_200 11 +val_97 11 diff --git a/sql/hive/src/test/resources/golden/Partition pruning: with filter on int partition key - query test-0-4e4d2651e1e6e3c224242078d0201190 b/sql/hive/src/test/resources/golden/Partition pruning: with filter on int partition key - query test-0-4e4d2651e1e6e3c224242078d0201190 new file mode 100644 index 0000000000000..d83d8b62b7095 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Partition pruning: with filter on int partition key - query test-0-4e4d2651e1e6e3c224242078d0201190 @@ -0,0 +1,1000 @@ +val_238 11 +val_86 11 +val_311 11 +val_27 11 +val_165 11 +val_409 11 +val_255 11 +val_278 11 +val_98 11 +val_484 11 +val_265 11 +val_193 11 +val_401 11 +val_150 11 +val_273 11 +val_224 11 +val_369 11 +val_66 11 +val_128 11 +val_213 11 +val_146 11 +val_406 11 +val_429 11 +val_374 11 +val_152 11 +val_469 11 +val_145 11 +val_495 11 +val_37 11 +val_327 11 +val_281 11 +val_277 11 +val_209 11 +val_15 11 +val_82 11 +val_403 11 +val_166 11 +val_417 11 +val_430 11 +val_252 11 +val_292 11 +val_219 11 +val_287 11 +val_153 11 +val_193 11 +val_338 11 +val_446 11 +val_459 11 +val_394 11 +val_237 11 +val_482 11 +val_174 11 +val_413 11 +val_494 11 +val_207 11 +val_199 11 +val_466 11 +val_208 11 +val_174 11 +val_399 11 +val_396 11 +val_247 11 +val_417 11 +val_489 11 +val_162 11 +val_377 11 +val_397 11 +val_309 11 +val_365 11 +val_266 11 +val_439 11 +val_342 11 +val_367 11 +val_325 11 +val_167 11 +val_195 11 +val_475 11 +val_17 11 +val_113 11 +val_155 11 +val_203 11 +val_339 11 +val_0 11 +val_455 11 +val_128 11 +val_311 11 +val_316 11 +val_57 11 +val_302 11 +val_205 11 +val_149 11 +val_438 11 +val_345 11 +val_129 11 +val_170 11 +val_20 11 +val_489 11 +val_157 11 +val_378 11 +val_221 11 +val_92 11 +val_111 11 +val_47 11 +val_72 11 +val_4 11 +val_280 11 +val_35 11 +val_427 11 +val_277 11 +val_208 11 +val_356 11 +val_399 11 +val_169 11 +val_382 11 +val_498 11 +val_125 11 +val_386 11 +val_437 11 +val_469 11 +val_192 11 +val_286 11 +val_187 11 +val_176 11 +val_54 11 +val_459 11 +val_51 11 +val_138 11 +val_103 11 +val_239 11 +val_213 11 +val_216 11 +val_430 11 +val_278 11 +val_176 11 +val_289 11 +val_221 11 +val_65 11 +val_318 11 +val_332 11 +val_311 11 +val_275 11 +val_137 11 +val_241 11 +val_83 11 +val_333 11 +val_180 11 +val_284 11 +val_12 11 +val_230 11 +val_181 11 +val_67 11 +val_260 11 +val_404 11 +val_384 11 +val_489 11 +val_353 11 +val_373 11 +val_272 11 +val_138 11 +val_217 11 +val_84 11 +val_348 11 +val_466 11 +val_58 11 +val_8 11 +val_411 11 +val_230 11 +val_208 11 +val_348 11 +val_24 11 +val_463 11 +val_431 11 +val_179 11 +val_172 11 +val_42 11 +val_129 11 +val_158 11 +val_119 11 +val_496 11 +val_0 11 +val_322 11 +val_197 11 +val_468 11 +val_393 11 +val_454 11 +val_100 11 +val_298 11 +val_199 11 +val_191 11 +val_418 11 +val_96 11 +val_26 11 +val_165 11 +val_327 11 +val_230 11 +val_205 11 +val_120 11 +val_131 11 +val_51 11 +val_404 11 +val_43 11 +val_436 11 +val_156 11 +val_469 11 +val_468 11 +val_308 11 +val_95 11 +val_196 11 +val_288 11 +val_481 11 +val_457 11 +val_98 11 +val_282 11 +val_197 11 +val_187 11 +val_318 11 +val_318 11 +val_409 11 +val_470 11 +val_137 11 +val_369 11 +val_316 11 +val_169 11 +val_413 11 +val_85 11 +val_77 11 +val_0 11 +val_490 11 +val_87 11 +val_364 11 +val_179 11 +val_118 11 +val_134 11 +val_395 11 +val_282 11 +val_138 11 +val_238 11 +val_419 11 +val_15 11 +val_118 11 +val_72 11 +val_90 11 +val_307 11 +val_19 11 +val_435 11 +val_10 11 +val_277 11 +val_273 11 +val_306 11 +val_224 11 +val_309 11 +val_389 11 +val_327 11 +val_242 11 +val_369 11 +val_392 11 +val_272 11 +val_331 11 +val_401 11 +val_242 11 +val_452 11 +val_177 11 +val_226 11 +val_5 11 +val_497 11 +val_402 11 +val_396 11 +val_317 11 +val_395 11 +val_58 11 +val_35 11 +val_336 11 +val_95 11 +val_11 11 +val_168 11 +val_34 11 +val_229 11 +val_233 11 +val_143 11 +val_472 11 +val_322 11 +val_498 11 +val_160 11 +val_195 11 +val_42 11 +val_321 11 +val_430 11 +val_119 11 +val_489 11 +val_458 11 +val_78 11 +val_76 11 +val_41 11 +val_223 11 +val_492 11 +val_149 11 +val_449 11 +val_218 11 +val_228 11 +val_138 11 +val_453 11 +val_30 11 +val_209 11 +val_64 11 +val_468 11 +val_76 11 +val_74 11 +val_342 11 +val_69 11 +val_230 11 +val_33 11 +val_368 11 +val_103 11 +val_296 11 +val_113 11 +val_216 11 +val_367 11 +val_344 11 +val_167 11 +val_274 11 +val_219 11 +val_239 11 +val_485 11 +val_116 11 +val_223 11 +val_256 11 +val_263 11 +val_70 11 +val_487 11 +val_480 11 +val_401 11 +val_288 11 +val_191 11 +val_5 11 +val_244 11 +val_438 11 +val_128 11 +val_467 11 +val_432 11 +val_202 11 +val_316 11 +val_229 11 +val_469 11 +val_463 11 +val_280 11 +val_2 11 +val_35 11 +val_283 11 +val_331 11 +val_235 11 +val_80 11 +val_44 11 +val_193 11 +val_321 11 +val_335 11 +val_104 11 +val_466 11 +val_366 11 +val_175 11 +val_403 11 +val_483 11 +val_53 11 +val_105 11 +val_257 11 +val_406 11 +val_409 11 +val_190 11 +val_406 11 +val_401 11 +val_114 11 +val_258 11 +val_90 11 +val_203 11 +val_262 11 +val_348 11 +val_424 11 +val_12 11 +val_396 11 +val_201 11 +val_217 11 +val_164 11 +val_431 11 +val_454 11 +val_478 11 +val_298 11 +val_125 11 +val_431 11 +val_164 11 +val_424 11 +val_187 11 +val_382 11 +val_5 11 +val_70 11 +val_397 11 +val_480 11 +val_291 11 +val_24 11 +val_351 11 +val_255 11 +val_104 11 +val_70 11 +val_163 11 +val_438 11 +val_119 11 +val_414 11 +val_200 11 +val_491 11 +val_237 11 +val_439 11 +val_360 11 +val_248 11 +val_479 11 +val_305 11 +val_417 11 +val_199 11 +val_444 11 +val_120 11 +val_429 11 +val_169 11 +val_443 11 +val_323 11 +val_325 11 +val_277 11 +val_230 11 +val_478 11 +val_178 11 +val_468 11 +val_310 11 +val_317 11 +val_333 11 +val_493 11 +val_460 11 +val_207 11 +val_249 11 +val_265 11 +val_480 11 +val_83 11 +val_136 11 +val_353 11 +val_172 11 +val_214 11 +val_462 11 +val_233 11 +val_406 11 +val_133 11 +val_175 11 +val_189 11 +val_454 11 +val_375 11 +val_401 11 +val_421 11 +val_407 11 +val_384 11 +val_256 11 +val_26 11 +val_134 11 +val_67 11 +val_384 11 +val_379 11 +val_18 11 +val_462 11 +val_492 11 +val_100 11 +val_298 11 +val_9 11 +val_341 11 +val_498 11 +val_146 11 +val_458 11 +val_362 11 +val_186 11 +val_285 11 +val_348 11 +val_167 11 +val_18 11 +val_273 11 +val_183 11 +val_281 11 +val_344 11 +val_97 11 +val_469 11 +val_315 11 +val_84 11 +val_28 11 +val_37 11 +val_448 11 +val_152 11 +val_348 11 +val_307 11 +val_194 11 +val_414 11 +val_477 11 +val_222 11 +val_126 11 +val_90 11 +val_169 11 +val_403 11 +val_400 11 +val_200 11 +val_97 11 +val_238 11 +val_86 11 +val_311 11 +val_27 11 +val_165 11 +val_409 11 +val_255 11 +val_278 11 +val_98 11 +val_484 11 +val_265 11 +val_193 11 +val_401 11 +val_150 11 +val_273 11 +val_224 11 +val_369 11 +val_66 11 +val_128 11 +val_213 11 +val_146 11 +val_406 11 +val_429 11 +val_374 11 +val_152 11 +val_469 11 +val_145 11 +val_495 11 +val_37 11 +val_327 11 +val_281 11 +val_277 11 +val_209 11 +val_15 11 +val_82 11 +val_403 11 +val_166 11 +val_417 11 +val_430 11 +val_252 11 +val_292 11 +val_219 11 +val_287 11 +val_153 11 +val_193 11 +val_338 11 +val_446 11 +val_459 11 +val_394 11 +val_237 11 +val_482 11 +val_174 11 +val_413 11 +val_494 11 +val_207 11 +val_199 11 +val_466 11 +val_208 11 +val_174 11 +val_399 11 +val_396 11 +val_247 11 +val_417 11 +val_489 11 +val_162 11 +val_377 11 +val_397 11 +val_309 11 +val_365 11 +val_266 11 +val_439 11 +val_342 11 +val_367 11 +val_325 11 +val_167 11 +val_195 11 +val_475 11 +val_17 11 +val_113 11 +val_155 11 +val_203 11 +val_339 11 +val_0 11 +val_455 11 +val_128 11 +val_311 11 +val_316 11 +val_57 11 +val_302 11 +val_205 11 +val_149 11 +val_438 11 +val_345 11 +val_129 11 +val_170 11 +val_20 11 +val_489 11 +val_157 11 +val_378 11 +val_221 11 +val_92 11 +val_111 11 +val_47 11 +val_72 11 +val_4 11 +val_280 11 +val_35 11 +val_427 11 +val_277 11 +val_208 11 +val_356 11 +val_399 11 +val_169 11 +val_382 11 +val_498 11 +val_125 11 +val_386 11 +val_437 11 +val_469 11 +val_192 11 +val_286 11 +val_187 11 +val_176 11 +val_54 11 +val_459 11 +val_51 11 +val_138 11 +val_103 11 +val_239 11 +val_213 11 +val_216 11 +val_430 11 +val_278 11 +val_176 11 +val_289 11 +val_221 11 +val_65 11 +val_318 11 +val_332 11 +val_311 11 +val_275 11 +val_137 11 +val_241 11 +val_83 11 +val_333 11 +val_180 11 +val_284 11 +val_12 11 +val_230 11 +val_181 11 +val_67 11 +val_260 11 +val_404 11 +val_384 11 +val_489 11 +val_353 11 +val_373 11 +val_272 11 +val_138 11 +val_217 11 +val_84 11 +val_348 11 +val_466 11 +val_58 11 +val_8 11 +val_411 11 +val_230 11 +val_208 11 +val_348 11 +val_24 11 +val_463 11 +val_431 11 +val_179 11 +val_172 11 +val_42 11 +val_129 11 +val_158 11 +val_119 11 +val_496 11 +val_0 11 +val_322 11 +val_197 11 +val_468 11 +val_393 11 +val_454 11 +val_100 11 +val_298 11 +val_199 11 +val_191 11 +val_418 11 +val_96 11 +val_26 11 +val_165 11 +val_327 11 +val_230 11 +val_205 11 +val_120 11 +val_131 11 +val_51 11 +val_404 11 +val_43 11 +val_436 11 +val_156 11 +val_469 11 +val_468 11 +val_308 11 +val_95 11 +val_196 11 +val_288 11 +val_481 11 +val_457 11 +val_98 11 +val_282 11 +val_197 11 +val_187 11 +val_318 11 +val_318 11 +val_409 11 +val_470 11 +val_137 11 +val_369 11 +val_316 11 +val_169 11 +val_413 11 +val_85 11 +val_77 11 +val_0 11 +val_490 11 +val_87 11 +val_364 11 +val_179 11 +val_118 11 +val_134 11 +val_395 11 +val_282 11 +val_138 11 +val_238 11 +val_419 11 +val_15 11 +val_118 11 +val_72 11 +val_90 11 +val_307 11 +val_19 11 +val_435 11 +val_10 11 +val_277 11 +val_273 11 +val_306 11 +val_224 11 +val_309 11 +val_389 11 +val_327 11 +val_242 11 +val_369 11 +val_392 11 +val_272 11 +val_331 11 +val_401 11 +val_242 11 +val_452 11 +val_177 11 +val_226 11 +val_5 11 +val_497 11 +val_402 11 +val_396 11 +val_317 11 +val_395 11 +val_58 11 +val_35 11 +val_336 11 +val_95 11 +val_11 11 +val_168 11 +val_34 11 +val_229 11 +val_233 11 +val_143 11 +val_472 11 +val_322 11 +val_498 11 +val_160 11 +val_195 11 +val_42 11 +val_321 11 +val_430 11 +val_119 11 +val_489 11 +val_458 11 +val_78 11 +val_76 11 +val_41 11 +val_223 11 +val_492 11 +val_149 11 +val_449 11 +val_218 11 +val_228 11 +val_138 11 +val_453 11 +val_30 11 +val_209 11 +val_64 11 +val_468 11 +val_76 11 +val_74 11 +val_342 11 +val_69 11 +val_230 11 +val_33 11 +val_368 11 +val_103 11 +val_296 11 +val_113 11 +val_216 11 +val_367 11 +val_344 11 +val_167 11 +val_274 11 +val_219 11 +val_239 11 +val_485 11 +val_116 11 +val_223 11 +val_256 11 +val_263 11 +val_70 11 +val_487 11 +val_480 11 +val_401 11 +val_288 11 +val_191 11 +val_5 11 +val_244 11 +val_438 11 +val_128 11 +val_467 11 +val_432 11 +val_202 11 +val_316 11 +val_229 11 +val_469 11 +val_463 11 +val_280 11 +val_2 11 +val_35 11 +val_283 11 +val_331 11 +val_235 11 +val_80 11 +val_44 11 +val_193 11 +val_321 11 +val_335 11 +val_104 11 +val_466 11 +val_366 11 +val_175 11 +val_403 11 +val_483 11 +val_53 11 +val_105 11 +val_257 11 +val_406 11 +val_409 11 +val_190 11 +val_406 11 +val_401 11 +val_114 11 +val_258 11 +val_90 11 +val_203 11 +val_262 11 +val_348 11 +val_424 11 +val_12 11 +val_396 11 +val_201 11 +val_217 11 +val_164 11 +val_431 11 +val_454 11 +val_478 11 +val_298 11 +val_125 11 +val_431 11 +val_164 11 +val_424 11 +val_187 11 +val_382 11 +val_5 11 +val_70 11 +val_397 11 +val_480 11 +val_291 11 +val_24 11 +val_351 11 +val_255 11 +val_104 11 +val_70 11 +val_163 11 +val_438 11 +val_119 11 +val_414 11 +val_200 11 +val_491 11 +val_237 11 +val_439 11 +val_360 11 +val_248 11 +val_479 11 +val_305 11 +val_417 11 +val_199 11 +val_444 11 +val_120 11 +val_429 11 +val_169 11 +val_443 11 +val_323 11 +val_325 11 +val_277 11 +val_230 11 +val_478 11 +val_178 11 +val_468 11 +val_310 11 +val_317 11 +val_333 11 +val_493 11 +val_460 11 +val_207 11 +val_249 11 +val_265 11 +val_480 11 +val_83 11 +val_136 11 +val_353 11 +val_172 11 +val_214 11 +val_462 11 +val_233 11 +val_406 11 +val_133 11 +val_175 11 +val_189 11 +val_454 11 +val_375 11 +val_401 11 +val_421 11 +val_407 11 +val_384 11 +val_256 11 +val_26 11 +val_134 11 +val_67 11 +val_384 11 +val_379 11 +val_18 11 +val_462 11 +val_492 11 +val_100 11 +val_298 11 +val_9 11 +val_341 11 +val_498 11 +val_146 11 +val_458 11 +val_362 11 +val_186 11 +val_285 11 +val_348 11 +val_167 11 +val_18 11 +val_273 11 +val_183 11 +val_281 11 +val_344 11 +val_97 11 +val_469 11 +val_315 11 +val_84 11 +val_28 11 +val_37 11 +val_448 11 +val_152 11 +val_348 11 +val_307 11 +val_194 11 +val_414 11 +val_477 11 +val_222 11 +val_126 11 +val_90 11 +val_169 11 +val_403 11 +val_400 11 +val_200 11 +val_97 11 diff --git a/sql/hive/src/test/resources/golden/Partition pruning: with filter on string partition key - query test-0-b6e59464383591f02408f8765ac6a5d5 b/sql/hive/src/test/resources/golden/Partition pruning: with filter on string partition key - query test-0-b6e59464383591f02408f8765ac6a5d5 new file mode 100644 index 0000000000000..83bc6257ba98b --- /dev/null +++ b/sql/hive/src/test/resources/golden/Partition pruning: with filter on string partition key - query test-0-b6e59464383591f02408f8765ac6a5d5 @@ -0,0 +1,1000 @@ +val_238 11 +val_86 11 +val_311 11 +val_27 11 +val_165 11 +val_409 11 +val_255 11 +val_278 11 +val_98 11 +val_484 11 +val_265 11 +val_193 11 +val_401 11 +val_150 11 +val_273 11 +val_224 11 +val_369 11 +val_66 11 +val_128 11 +val_213 11 +val_146 11 +val_406 11 +val_429 11 +val_374 11 +val_152 11 +val_469 11 +val_145 11 +val_495 11 +val_37 11 +val_327 11 +val_281 11 +val_277 11 +val_209 11 +val_15 11 +val_82 11 +val_403 11 +val_166 11 +val_417 11 +val_430 11 +val_252 11 +val_292 11 +val_219 11 +val_287 11 +val_153 11 +val_193 11 +val_338 11 +val_446 11 +val_459 11 +val_394 11 +val_237 11 +val_482 11 +val_174 11 +val_413 11 +val_494 11 +val_207 11 +val_199 11 +val_466 11 +val_208 11 +val_174 11 +val_399 11 +val_396 11 +val_247 11 +val_417 11 +val_489 11 +val_162 11 +val_377 11 +val_397 11 +val_309 11 +val_365 11 +val_266 11 +val_439 11 +val_342 11 +val_367 11 +val_325 11 +val_167 11 +val_195 11 +val_475 11 +val_17 11 +val_113 11 +val_155 11 +val_203 11 +val_339 11 +val_0 11 +val_455 11 +val_128 11 +val_311 11 +val_316 11 +val_57 11 +val_302 11 +val_205 11 +val_149 11 +val_438 11 +val_345 11 +val_129 11 +val_170 11 +val_20 11 +val_489 11 +val_157 11 +val_378 11 +val_221 11 +val_92 11 +val_111 11 +val_47 11 +val_72 11 +val_4 11 +val_280 11 +val_35 11 +val_427 11 +val_277 11 +val_208 11 +val_356 11 +val_399 11 +val_169 11 +val_382 11 +val_498 11 +val_125 11 +val_386 11 +val_437 11 +val_469 11 +val_192 11 +val_286 11 +val_187 11 +val_176 11 +val_54 11 +val_459 11 +val_51 11 +val_138 11 +val_103 11 +val_239 11 +val_213 11 +val_216 11 +val_430 11 +val_278 11 +val_176 11 +val_289 11 +val_221 11 +val_65 11 +val_318 11 +val_332 11 +val_311 11 +val_275 11 +val_137 11 +val_241 11 +val_83 11 +val_333 11 +val_180 11 +val_284 11 +val_12 11 +val_230 11 +val_181 11 +val_67 11 +val_260 11 +val_404 11 +val_384 11 +val_489 11 +val_353 11 +val_373 11 +val_272 11 +val_138 11 +val_217 11 +val_84 11 +val_348 11 +val_466 11 +val_58 11 +val_8 11 +val_411 11 +val_230 11 +val_208 11 +val_348 11 +val_24 11 +val_463 11 +val_431 11 +val_179 11 +val_172 11 +val_42 11 +val_129 11 +val_158 11 +val_119 11 +val_496 11 +val_0 11 +val_322 11 +val_197 11 +val_468 11 +val_393 11 +val_454 11 +val_100 11 +val_298 11 +val_199 11 +val_191 11 +val_418 11 +val_96 11 +val_26 11 +val_165 11 +val_327 11 +val_230 11 +val_205 11 +val_120 11 +val_131 11 +val_51 11 +val_404 11 +val_43 11 +val_436 11 +val_156 11 +val_469 11 +val_468 11 +val_308 11 +val_95 11 +val_196 11 +val_288 11 +val_481 11 +val_457 11 +val_98 11 +val_282 11 +val_197 11 +val_187 11 +val_318 11 +val_318 11 +val_409 11 +val_470 11 +val_137 11 +val_369 11 +val_316 11 +val_169 11 +val_413 11 +val_85 11 +val_77 11 +val_0 11 +val_490 11 +val_87 11 +val_364 11 +val_179 11 +val_118 11 +val_134 11 +val_395 11 +val_282 11 +val_138 11 +val_238 11 +val_419 11 +val_15 11 +val_118 11 +val_72 11 +val_90 11 +val_307 11 +val_19 11 +val_435 11 +val_10 11 +val_277 11 +val_273 11 +val_306 11 +val_224 11 +val_309 11 +val_389 11 +val_327 11 +val_242 11 +val_369 11 +val_392 11 +val_272 11 +val_331 11 +val_401 11 +val_242 11 +val_452 11 +val_177 11 +val_226 11 +val_5 11 +val_497 11 +val_402 11 +val_396 11 +val_317 11 +val_395 11 +val_58 11 +val_35 11 +val_336 11 +val_95 11 +val_11 11 +val_168 11 +val_34 11 +val_229 11 +val_233 11 +val_143 11 +val_472 11 +val_322 11 +val_498 11 +val_160 11 +val_195 11 +val_42 11 +val_321 11 +val_430 11 +val_119 11 +val_489 11 +val_458 11 +val_78 11 +val_76 11 +val_41 11 +val_223 11 +val_492 11 +val_149 11 +val_449 11 +val_218 11 +val_228 11 +val_138 11 +val_453 11 +val_30 11 +val_209 11 +val_64 11 +val_468 11 +val_76 11 +val_74 11 +val_342 11 +val_69 11 +val_230 11 +val_33 11 +val_368 11 +val_103 11 +val_296 11 +val_113 11 +val_216 11 +val_367 11 +val_344 11 +val_167 11 +val_274 11 +val_219 11 +val_239 11 +val_485 11 +val_116 11 +val_223 11 +val_256 11 +val_263 11 +val_70 11 +val_487 11 +val_480 11 +val_401 11 +val_288 11 +val_191 11 +val_5 11 +val_244 11 +val_438 11 +val_128 11 +val_467 11 +val_432 11 +val_202 11 +val_316 11 +val_229 11 +val_469 11 +val_463 11 +val_280 11 +val_2 11 +val_35 11 +val_283 11 +val_331 11 +val_235 11 +val_80 11 +val_44 11 +val_193 11 +val_321 11 +val_335 11 +val_104 11 +val_466 11 +val_366 11 +val_175 11 +val_403 11 +val_483 11 +val_53 11 +val_105 11 +val_257 11 +val_406 11 +val_409 11 +val_190 11 +val_406 11 +val_401 11 +val_114 11 +val_258 11 +val_90 11 +val_203 11 +val_262 11 +val_348 11 +val_424 11 +val_12 11 +val_396 11 +val_201 11 +val_217 11 +val_164 11 +val_431 11 +val_454 11 +val_478 11 +val_298 11 +val_125 11 +val_431 11 +val_164 11 +val_424 11 +val_187 11 +val_382 11 +val_5 11 +val_70 11 +val_397 11 +val_480 11 +val_291 11 +val_24 11 +val_351 11 +val_255 11 +val_104 11 +val_70 11 +val_163 11 +val_438 11 +val_119 11 +val_414 11 +val_200 11 +val_491 11 +val_237 11 +val_439 11 +val_360 11 +val_248 11 +val_479 11 +val_305 11 +val_417 11 +val_199 11 +val_444 11 +val_120 11 +val_429 11 +val_169 11 +val_443 11 +val_323 11 +val_325 11 +val_277 11 +val_230 11 +val_478 11 +val_178 11 +val_468 11 +val_310 11 +val_317 11 +val_333 11 +val_493 11 +val_460 11 +val_207 11 +val_249 11 +val_265 11 +val_480 11 +val_83 11 +val_136 11 +val_353 11 +val_172 11 +val_214 11 +val_462 11 +val_233 11 +val_406 11 +val_133 11 +val_175 11 +val_189 11 +val_454 11 +val_375 11 +val_401 11 +val_421 11 +val_407 11 +val_384 11 +val_256 11 +val_26 11 +val_134 11 +val_67 11 +val_384 11 +val_379 11 +val_18 11 +val_462 11 +val_492 11 +val_100 11 +val_298 11 +val_9 11 +val_341 11 +val_498 11 +val_146 11 +val_458 11 +val_362 11 +val_186 11 +val_285 11 +val_348 11 +val_167 11 +val_18 11 +val_273 11 +val_183 11 +val_281 11 +val_344 11 +val_97 11 +val_469 11 +val_315 11 +val_84 11 +val_28 11 +val_37 11 +val_448 11 +val_152 11 +val_348 11 +val_307 11 +val_194 11 +val_414 11 +val_477 11 +val_222 11 +val_126 11 +val_90 11 +val_169 11 +val_403 11 +val_400 11 +val_200 11 +val_97 11 +val_238 12 +val_86 12 +val_311 12 +val_27 12 +val_165 12 +val_409 12 +val_255 12 +val_278 12 +val_98 12 +val_484 12 +val_265 12 +val_193 12 +val_401 12 +val_150 12 +val_273 12 +val_224 12 +val_369 12 +val_66 12 +val_128 12 +val_213 12 +val_146 12 +val_406 12 +val_429 12 +val_374 12 +val_152 12 +val_469 12 +val_145 12 +val_495 12 +val_37 12 +val_327 12 +val_281 12 +val_277 12 +val_209 12 +val_15 12 +val_82 12 +val_403 12 +val_166 12 +val_417 12 +val_430 12 +val_252 12 +val_292 12 +val_219 12 +val_287 12 +val_153 12 +val_193 12 +val_338 12 +val_446 12 +val_459 12 +val_394 12 +val_237 12 +val_482 12 +val_174 12 +val_413 12 +val_494 12 +val_207 12 +val_199 12 +val_466 12 +val_208 12 +val_174 12 +val_399 12 +val_396 12 +val_247 12 +val_417 12 +val_489 12 +val_162 12 +val_377 12 +val_397 12 +val_309 12 +val_365 12 +val_266 12 +val_439 12 +val_342 12 +val_367 12 +val_325 12 +val_167 12 +val_195 12 +val_475 12 +val_17 12 +val_113 12 +val_155 12 +val_203 12 +val_339 12 +val_0 12 +val_455 12 +val_128 12 +val_311 12 +val_316 12 +val_57 12 +val_302 12 +val_205 12 +val_149 12 +val_438 12 +val_345 12 +val_129 12 +val_170 12 +val_20 12 +val_489 12 +val_157 12 +val_378 12 +val_221 12 +val_92 12 +val_111 12 +val_47 12 +val_72 12 +val_4 12 +val_280 12 +val_35 12 +val_427 12 +val_277 12 +val_208 12 +val_356 12 +val_399 12 +val_169 12 +val_382 12 +val_498 12 +val_125 12 +val_386 12 +val_437 12 +val_469 12 +val_192 12 +val_286 12 +val_187 12 +val_176 12 +val_54 12 +val_459 12 +val_51 12 +val_138 12 +val_103 12 +val_239 12 +val_213 12 +val_216 12 +val_430 12 +val_278 12 +val_176 12 +val_289 12 +val_221 12 +val_65 12 +val_318 12 +val_332 12 +val_311 12 +val_275 12 +val_137 12 +val_241 12 +val_83 12 +val_333 12 +val_180 12 +val_284 12 +val_12 12 +val_230 12 +val_181 12 +val_67 12 +val_260 12 +val_404 12 +val_384 12 +val_489 12 +val_353 12 +val_373 12 +val_272 12 +val_138 12 +val_217 12 +val_84 12 +val_348 12 +val_466 12 +val_58 12 +val_8 12 +val_411 12 +val_230 12 +val_208 12 +val_348 12 +val_24 12 +val_463 12 +val_431 12 +val_179 12 +val_172 12 +val_42 12 +val_129 12 +val_158 12 +val_119 12 +val_496 12 +val_0 12 +val_322 12 +val_197 12 +val_468 12 +val_393 12 +val_454 12 +val_100 12 +val_298 12 +val_199 12 +val_191 12 +val_418 12 +val_96 12 +val_26 12 +val_165 12 +val_327 12 +val_230 12 +val_205 12 +val_120 12 +val_131 12 +val_51 12 +val_404 12 +val_43 12 +val_436 12 +val_156 12 +val_469 12 +val_468 12 +val_308 12 +val_95 12 +val_196 12 +val_288 12 +val_481 12 +val_457 12 +val_98 12 +val_282 12 +val_197 12 +val_187 12 +val_318 12 +val_318 12 +val_409 12 +val_470 12 +val_137 12 +val_369 12 +val_316 12 +val_169 12 +val_413 12 +val_85 12 +val_77 12 +val_0 12 +val_490 12 +val_87 12 +val_364 12 +val_179 12 +val_118 12 +val_134 12 +val_395 12 +val_282 12 +val_138 12 +val_238 12 +val_419 12 +val_15 12 +val_118 12 +val_72 12 +val_90 12 +val_307 12 +val_19 12 +val_435 12 +val_10 12 +val_277 12 +val_273 12 +val_306 12 +val_224 12 +val_309 12 +val_389 12 +val_327 12 +val_242 12 +val_369 12 +val_392 12 +val_272 12 +val_331 12 +val_401 12 +val_242 12 +val_452 12 +val_177 12 +val_226 12 +val_5 12 +val_497 12 +val_402 12 +val_396 12 +val_317 12 +val_395 12 +val_58 12 +val_35 12 +val_336 12 +val_95 12 +val_11 12 +val_168 12 +val_34 12 +val_229 12 +val_233 12 +val_143 12 +val_472 12 +val_322 12 +val_498 12 +val_160 12 +val_195 12 +val_42 12 +val_321 12 +val_430 12 +val_119 12 +val_489 12 +val_458 12 +val_78 12 +val_76 12 +val_41 12 +val_223 12 +val_492 12 +val_149 12 +val_449 12 +val_218 12 +val_228 12 +val_138 12 +val_453 12 +val_30 12 +val_209 12 +val_64 12 +val_468 12 +val_76 12 +val_74 12 +val_342 12 +val_69 12 +val_230 12 +val_33 12 +val_368 12 +val_103 12 +val_296 12 +val_113 12 +val_216 12 +val_367 12 +val_344 12 +val_167 12 +val_274 12 +val_219 12 +val_239 12 +val_485 12 +val_116 12 +val_223 12 +val_256 12 +val_263 12 +val_70 12 +val_487 12 +val_480 12 +val_401 12 +val_288 12 +val_191 12 +val_5 12 +val_244 12 +val_438 12 +val_128 12 +val_467 12 +val_432 12 +val_202 12 +val_316 12 +val_229 12 +val_469 12 +val_463 12 +val_280 12 +val_2 12 +val_35 12 +val_283 12 +val_331 12 +val_235 12 +val_80 12 +val_44 12 +val_193 12 +val_321 12 +val_335 12 +val_104 12 +val_466 12 +val_366 12 +val_175 12 +val_403 12 +val_483 12 +val_53 12 +val_105 12 +val_257 12 +val_406 12 +val_409 12 +val_190 12 +val_406 12 +val_401 12 +val_114 12 +val_258 12 +val_90 12 +val_203 12 +val_262 12 +val_348 12 +val_424 12 +val_12 12 +val_396 12 +val_201 12 +val_217 12 +val_164 12 +val_431 12 +val_454 12 +val_478 12 +val_298 12 +val_125 12 +val_431 12 +val_164 12 +val_424 12 +val_187 12 +val_382 12 +val_5 12 +val_70 12 +val_397 12 +val_480 12 +val_291 12 +val_24 12 +val_351 12 +val_255 12 +val_104 12 +val_70 12 +val_163 12 +val_438 12 +val_119 12 +val_414 12 +val_200 12 +val_491 12 +val_237 12 +val_439 12 +val_360 12 +val_248 12 +val_479 12 +val_305 12 +val_417 12 +val_199 12 +val_444 12 +val_120 12 +val_429 12 +val_169 12 +val_443 12 +val_323 12 +val_325 12 +val_277 12 +val_230 12 +val_478 12 +val_178 12 +val_468 12 +val_310 12 +val_317 12 +val_333 12 +val_493 12 +val_460 12 +val_207 12 +val_249 12 +val_265 12 +val_480 12 +val_83 12 +val_136 12 +val_353 12 +val_172 12 +val_214 12 +val_462 12 +val_233 12 +val_406 12 +val_133 12 +val_175 12 +val_189 12 +val_454 12 +val_375 12 +val_401 12 +val_421 12 +val_407 12 +val_384 12 +val_256 12 +val_26 12 +val_134 12 +val_67 12 +val_384 12 +val_379 12 +val_18 12 +val_462 12 +val_492 12 +val_100 12 +val_298 12 +val_9 12 +val_341 12 +val_498 12 +val_146 12 +val_458 12 +val_362 12 +val_186 12 +val_285 12 +val_348 12 +val_167 12 +val_18 12 +val_273 12 +val_183 12 +val_281 12 +val_344 12 +val_97 12 +val_469 12 +val_315 12 +val_84 12 +val_28 12 +val_37 12 +val_448 12 +val_152 12 +val_348 12 +val_307 12 +val_194 12 +val_414 12 +val_477 12 +val_222 12 +val_126 12 +val_90 12 +val_169 12 +val_403 12 +val_400 12 +val_200 12 +val_97 12 diff --git a/sql/hive/src/test/resources/golden/Partiton pruning: non-partitioned table - query test-0-681332efaff7b12e3ca12d9f021cd344 b/sql/hive/src/test/resources/golden/Partiton pruning: non-partitioned table - query test-0-681332efaff7b12e3ca12d9f021cd344 new file mode 100644 index 0000000000000..7ba6caf9d8d59 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Partiton pruning: non-partitioned table - query test-0-681332efaff7b12e3ca12d9f021cd344 @@ -0,0 +1,500 @@ +val_238 +val_86 +val_311 +val_27 +val_165 +val_409 +val_255 +val_278 +val_98 +val_484 +val_265 +val_193 +val_401 +val_150 +val_273 +val_224 +val_369 +val_66 +val_128 +val_213 +val_146 +val_406 +val_429 +val_374 +val_152 +val_469 +val_145 +val_495 +val_37 +val_327 +val_281 +val_277 +val_209 +val_15 +val_82 +val_403 +val_166 +val_417 +val_430 +val_252 +val_292 +val_219 +val_287 +val_153 +val_193 +val_338 +val_446 +val_459 +val_394 +val_237 +val_482 +val_174 +val_413 +val_494 +val_207 +val_199 +val_466 +val_208 +val_174 +val_399 +val_396 +val_247 +val_417 +val_489 +val_162 +val_377 +val_397 +val_309 +val_365 +val_266 +val_439 +val_342 +val_367 +val_325 +val_167 +val_195 +val_475 +val_17 +val_113 +val_155 +val_203 +val_339 +val_0 +val_455 +val_128 +val_311 +val_316 +val_57 +val_302 +val_205 +val_149 +val_438 +val_345 +val_129 +val_170 +val_20 +val_489 +val_157 +val_378 +val_221 +val_92 +val_111 +val_47 +val_72 +val_4 +val_280 +val_35 +val_427 +val_277 +val_208 +val_356 +val_399 +val_169 +val_382 +val_498 +val_125 +val_386 +val_437 +val_469 +val_192 +val_286 +val_187 +val_176 +val_54 +val_459 +val_51 +val_138 +val_103 +val_239 +val_213 +val_216 +val_430 +val_278 +val_176 +val_289 +val_221 +val_65 +val_318 +val_332 +val_311 +val_275 +val_137 +val_241 +val_83 +val_333 +val_180 +val_284 +val_12 +val_230 +val_181 +val_67 +val_260 +val_404 +val_384 +val_489 +val_353 +val_373 +val_272 +val_138 +val_217 +val_84 +val_348 +val_466 +val_58 +val_8 +val_411 +val_230 +val_208 +val_348 +val_24 +val_463 +val_431 +val_179 +val_172 +val_42 +val_129 +val_158 +val_119 +val_496 +val_0 +val_322 +val_197 +val_468 +val_393 +val_454 +val_100 +val_298 +val_199 +val_191 +val_418 +val_96 +val_26 +val_165 +val_327 +val_230 +val_205 +val_120 +val_131 +val_51 +val_404 +val_43 +val_436 +val_156 +val_469 +val_468 +val_308 +val_95 +val_196 +val_288 +val_481 +val_457 +val_98 +val_282 +val_197 +val_187 +val_318 +val_318 +val_409 +val_470 +val_137 +val_369 +val_316 +val_169 +val_413 +val_85 +val_77 +val_0 +val_490 +val_87 +val_364 +val_179 +val_118 +val_134 +val_395 +val_282 +val_138 +val_238 +val_419 +val_15 +val_118 +val_72 +val_90 +val_307 +val_19 +val_435 +val_10 +val_277 +val_273 +val_306 +val_224 +val_309 +val_389 +val_327 +val_242 +val_369 +val_392 +val_272 +val_331 +val_401 +val_242 +val_452 +val_177 +val_226 +val_5 +val_497 +val_402 +val_396 +val_317 +val_395 +val_58 +val_35 +val_336 +val_95 +val_11 +val_168 +val_34 +val_229 +val_233 +val_143 +val_472 +val_322 +val_498 +val_160 +val_195 +val_42 +val_321 +val_430 +val_119 +val_489 +val_458 +val_78 +val_76 +val_41 +val_223 +val_492 +val_149 +val_449 +val_218 +val_228 +val_138 +val_453 +val_30 +val_209 +val_64 +val_468 +val_76 +val_74 +val_342 +val_69 +val_230 +val_33 +val_368 +val_103 +val_296 +val_113 +val_216 +val_367 +val_344 +val_167 +val_274 +val_219 +val_239 +val_485 +val_116 +val_223 +val_256 +val_263 +val_70 +val_487 +val_480 +val_401 +val_288 +val_191 +val_5 +val_244 +val_438 +val_128 +val_467 +val_432 +val_202 +val_316 +val_229 +val_469 +val_463 +val_280 +val_2 +val_35 +val_283 +val_331 +val_235 +val_80 +val_44 +val_193 +val_321 +val_335 +val_104 +val_466 +val_366 +val_175 +val_403 +val_483 +val_53 +val_105 +val_257 +val_406 +val_409 +val_190 +val_406 +val_401 +val_114 +val_258 +val_90 +val_203 +val_262 +val_348 +val_424 +val_12 +val_396 +val_201 +val_217 +val_164 +val_431 +val_454 +val_478 +val_298 +val_125 +val_431 +val_164 +val_424 +val_187 +val_382 +val_5 +val_70 +val_397 +val_480 +val_291 +val_24 +val_351 +val_255 +val_104 +val_70 +val_163 +val_438 +val_119 +val_414 +val_200 +val_491 +val_237 +val_439 +val_360 +val_248 +val_479 +val_305 +val_417 +val_199 +val_444 +val_120 +val_429 +val_169 +val_443 +val_323 +val_325 +val_277 +val_230 +val_478 +val_178 +val_468 +val_310 +val_317 +val_333 +val_493 +val_460 +val_207 +val_249 +val_265 +val_480 +val_83 +val_136 +val_353 +val_172 +val_214 +val_462 +val_233 +val_406 +val_133 +val_175 +val_189 +val_454 +val_375 +val_401 +val_421 +val_407 +val_384 +val_256 +val_26 +val_134 +val_67 +val_384 +val_379 +val_18 +val_462 +val_492 +val_100 +val_298 +val_9 +val_341 +val_498 +val_146 +val_458 +val_362 +val_186 +val_285 +val_348 +val_167 +val_18 +val_273 +val_183 +val_281 +val_344 +val_97 +val_469 +val_315 +val_84 +val_28 +val_37 +val_448 +val_152 +val_348 +val_307 +val_194 +val_414 +val_477 +val_222 +val_126 +val_90 +val_169 +val_403 +val_400 +val_200 +val_97 diff --git a/sql/hive/src/test/resources/golden/Read and write with LazySimpleSerDe (tab separated)-0-779101eb00fd8bb9f08908ab29e90c03 b/sql/hive/src/test/resources/golden/Read and write with LazySimpleSerDe (tab separated)-0-779101eb00fd8bb9f08908ab29e90c03 new file mode 100644 index 0000000000000..7aae61e5eb82f --- /dev/null +++ b/sql/hive/src/test/resources/golden/Read and write with LazySimpleSerDe (tab separated)-0-779101eb00fd8bb9f08908ab29e90c03 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/Read with AvroSerDe-0-805f15ffbb03db90ec5757b328666d04 b/sql/hive/src/test/resources/golden/Read with AvroSerDe-0-805f15ffbb03db90ec5757b328666d04 new file mode 100644 index 0000000000000..ee2a405fb6ab8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Read with AvroSerDe-0-805f15ffbb03db90ec5757b328666d04 @@ -0,0 +1,8 @@ +The Eleventh Hour 3 April 2010 11 +The Doctor's Wife 14 May 2011 11 +Horror of Fang Rock 3 September 1977 4 +An Unearthly Child 23 November 1963 1 +The Mysterious Planet 6 September 1986 6 +Rose 26 March 2005 9 +The Power of the Daleks 5 November 1966 2 +Castrolava 4 January 1982 5 diff --git a/sql/hive/src/test/resources/golden/Read with RegexSerDe-0-9b96fab8d55a0e19fae00d8adb57ffaa b/sql/hive/src/test/resources/golden/Read with RegexSerDe-0-9b96fab8d55a0e19fae00d8adb57ffaa new file mode 100644 index 0000000000000..6407b72051b51 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Read with RegexSerDe-0-9b96fab8d55a0e19fae00d8adb57ffaa @@ -0,0 +1,2 @@ +Joe 2 +Hank 2 diff --git a/sql/hive/src/test/resources/golden/Simple Average + 1 with group-0-f52ca483a3e5eadc1b20ba8320d029a7 b/sql/hive/src/test/resources/golden/Simple Average + 1 with group-0-f52ca483a3e5eadc1b20ba8320d029a7 new file mode 100644 index 0000000000000..595d7af04a69a --- /dev/null +++ b/sql/hive/src/test/resources/golden/Simple Average + 1 with group-0-f52ca483a3e5eadc1b20ba8320d029a7 @@ -0,0 +1,309 @@ +1.0 val_0 +11.0 val_10 +101.0 val_100 +104.0 val_103 +105.0 val_104 +106.0 val_105 +12.0 val_11 +112.0 val_111 +114.0 val_113 +115.0 val_114 +117.0 val_116 +119.0 val_118 +120.0 val_119 +13.0 val_12 +121.0 val_120 +126.0 val_125 +127.0 val_126 +129.0 val_128 +130.0 val_129 +132.0 val_131 +134.0 val_133 +135.0 val_134 +137.0 val_136 +138.0 val_137 +139.0 val_138 +144.0 val_143 +146.0 val_145 +147.0 val_146 +150.0 val_149 +16.0 val_15 +151.0 val_150 +153.0 val_152 +154.0 val_153 +156.0 val_155 +157.0 val_156 +158.0 val_157 +159.0 val_158 +161.0 val_160 +163.0 val_162 +164.0 val_163 +165.0 val_164 +166.0 val_165 +167.0 val_166 +168.0 val_167 +169.0 val_168 +170.0 val_169 +18.0 val_17 +171.0 val_170 +173.0 val_172 +175.0 val_174 +176.0 val_175 +177.0 val_176 +178.0 val_177 +179.0 val_178 +180.0 val_179 +19.0 val_18 +181.0 val_180 +182.0 val_181 +184.0 val_183 +187.0 val_186 +188.0 val_187 +190.0 val_189 +20.0 val_19 +191.0 val_190 +192.0 val_191 +193.0 val_192 +194.0 val_193 +195.0 val_194 +196.0 val_195 +197.0 val_196 +198.0 val_197 +200.0 val_199 +3.0 val_2 +21.0 val_20 +201.0 val_200 +202.0 val_201 +203.0 val_202 +204.0 val_203 +206.0 val_205 +208.0 val_207 +209.0 val_208 +210.0 val_209 +214.0 val_213 +215.0 val_214 +217.0 val_216 +218.0 val_217 +219.0 val_218 +220.0 val_219 +222.0 val_221 +223.0 val_222 +224.0 val_223 +225.0 val_224 +227.0 val_226 +229.0 val_228 +230.0 val_229 +231.0 val_230 +234.0 val_233 +236.0 val_235 +238.0 val_237 +239.0 val_238 +240.0 val_239 +25.0 val_24 +242.0 val_241 +243.0 val_242 +245.0 val_244 +248.0 val_247 +249.0 val_248 +250.0 val_249 +253.0 val_252 +256.0 val_255 +257.0 val_256 +258.0 val_257 +259.0 val_258 +27.0 val_26 +261.0 val_260 +263.0 val_262 +264.0 val_263 +266.0 val_265 +267.0 val_266 +28.0 val_27 +273.0 val_272 +274.0 val_273 +275.0 val_274 +276.0 val_275 +278.0 val_277 +279.0 val_278 +29.0 val_28 +281.0 val_280 +282.0 val_281 +283.0 val_282 +284.0 val_283 +285.0 val_284 +286.0 val_285 +287.0 val_286 +288.0 val_287 +289.0 val_288 +290.0 val_289 +292.0 val_291 +293.0 val_292 +297.0 val_296 +299.0 val_298 +31.0 val_30 +303.0 val_302 +306.0 val_305 +307.0 val_306 +308.0 val_307 +309.0 val_308 +310.0 val_309 +311.0 val_310 +312.0 val_311 +316.0 val_315 +317.0 val_316 +318.0 val_317 +319.0 val_318 +322.0 val_321 +323.0 val_322 +324.0 val_323 +326.0 val_325 +328.0 val_327 +34.0 val_33 +332.0 val_331 +333.0 val_332 +334.0 val_333 +336.0 val_335 +337.0 val_336 +339.0 val_338 +340.0 val_339 +35.0 val_34 +342.0 val_341 +343.0 val_342 +345.0 val_344 +346.0 val_345 +349.0 val_348 +36.0 val_35 +352.0 val_351 +354.0 val_353 +357.0 val_356 +361.0 val_360 +363.0 val_362 +365.0 val_364 +366.0 val_365 +367.0 val_366 +368.0 val_367 +369.0 val_368 +370.0 val_369 +38.0 val_37 +374.0 val_373 +375.0 val_374 +376.0 val_375 +378.0 val_377 +379.0 val_378 +380.0 val_379 +383.0 val_382 +385.0 val_384 +387.0 val_386 +390.0 val_389 +393.0 val_392 +394.0 val_393 +395.0 val_394 +396.0 val_395 +397.0 val_396 +398.0 val_397 +400.0 val_399 +5.0 val_4 +401.0 val_400 +402.0 val_401 +403.0 val_402 +404.0 val_403 +405.0 val_404 +407.0 val_406 +408.0 val_407 +410.0 val_409 +42.0 val_41 +412.0 val_411 +414.0 val_413 +415.0 val_414 +418.0 val_417 +419.0 val_418 +420.0 val_419 +43.0 val_42 +422.0 val_421 +425.0 val_424 +428.0 val_427 +430.0 val_429 +44.0 val_43 +431.0 val_430 +432.0 val_431 +433.0 val_432 +436.0 val_435 +437.0 val_436 +438.0 val_437 +439.0 val_438 +440.0 val_439 +45.0 val_44 +444.0 val_443 +445.0 val_444 +447.0 val_446 +449.0 val_448 +450.0 val_449 +453.0 val_452 +454.0 val_453 +455.0 val_454 +456.0 val_455 +458.0 val_457 +459.0 val_458 +460.0 val_459 +461.0 val_460 +463.0 val_462 +464.0 val_463 +467.0 val_466 +468.0 val_467 +469.0 val_468 +470.0 val_469 +48.0 val_47 +471.0 val_470 +473.0 val_472 +476.0 val_475 +478.0 val_477 +479.0 val_478 +480.0 val_479 +481.0 val_480 +482.0 val_481 +483.0 val_482 +484.0 val_483 +485.0 val_484 +486.0 val_485 +488.0 val_487 +490.0 val_489 +491.0 val_490 +492.0 val_491 +493.0 val_492 +494.0 val_493 +495.0 val_494 +496.0 val_495 +497.0 val_496 +498.0 val_497 +499.0 val_498 +6.0 val_5 +52.0 val_51 +54.0 val_53 +55.0 val_54 +58.0 val_57 +59.0 val_58 +65.0 val_64 +66.0 val_65 +67.0 val_66 +68.0 val_67 +70.0 val_69 +71.0 val_70 +73.0 val_72 +75.0 val_74 +77.0 val_76 +78.0 val_77 +79.0 val_78 +9.0 val_8 +81.0 val_80 +83.0 val_82 +84.0 val_83 +85.0 val_84 +86.0 val_85 +87.0 val_86 +88.0 val_87 +10.0 val_9 +91.0 val_90 +93.0 val_92 +96.0 val_95 +97.0 val_96 +98.0 val_97 +99.0 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/Simple Average + 1-0-5e296b921c470f0f0b5d099f28bd5935 b/sql/hive/src/test/resources/golden/Simple Average + 1-0-5e296b921c470f0f0b5d099f28bd5935 new file mode 100644 index 0000000000000..3d2dbbd731543 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Simple Average + 1-0-5e296b921c470f0f0b5d099f28bd5935 @@ -0,0 +1 @@ +261.182 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/Simple Average-0-c197ea78c4d8f85f1a317805b6da07e5 b/sql/hive/src/test/resources/golden/Simple Average-0-c197ea78c4d8f85f1a317805b6da07e5 new file mode 100644 index 0000000000000..cbc70c89f8859 --- /dev/null +++ b/sql/hive/src/test/resources/golden/Simple Average-0-c197ea78c4d8f85f1a317805b6da07e5 @@ -0,0 +1 @@ +260.182 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-0-e58d09864bc6898e44fae80abe328702 b/sql/hive/src/test/resources/golden/add_part_exist-0-e58d09864bc6898e44fae80abe328702 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-1-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-1-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-10-ecb27eb754e731429659224b5b6ac583 b/sql/hive/src/test/resources/golden/add_part_exist-10-ecb27eb754e731429659224b5b6ac583 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-11-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/add_part_exist-11-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..ecafeaea5f61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-11-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,2 @@ +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-12-2900a5065dd3adbb0b56a712bf848750 b/sql/hive/src/test/resources/golden/add_part_exist-12-2900a5065dd3adbb0b56a712bf848750 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-13-d69279050a0f44c3f8b775698fd29be0 b/sql/hive/src/test/resources/golden/add_part_exist-13-d69279050a0f44c3f8b775698fd29be0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-14-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/add_part_exist-14-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-15-e58d09864bc6898e44fae80abe328702 b/sql/hive/src/test/resources/golden/add_part_exist-15-e58d09864bc6898e44fae80abe328702 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-16-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-16-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-17-3432935e802ae46c6b2151cc4ebf783b b/sql/hive/src/test/resources/golden/add_part_exist-17-3432935e802ae46c6b2151cc4ebf783b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-18-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-18-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..f1ea8b0260d2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-18-d824f22606f48dfca48ce241a7505f5b @@ -0,0 +1 @@ +ds=2010-01-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-19-83cecdbfddb070a417050f9a18fff752 b/sql/hive/src/test/resources/golden/add_part_exist-19-83cecdbfddb070a417050f9a18fff752 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-2-3432935e802ae46c6b2151cc4ebf783b b/sql/hive/src/test/resources/golden/add_part_exist-2-3432935e802ae46c6b2151cc4ebf783b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-20-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-20-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..f1ea8b0260d2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-20-d824f22606f48dfca48ce241a7505f5b @@ -0,0 +1 @@ +ds=2010-01-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-21-2df4b20f67e7f15d3f4150bcfea43b0f b/sql/hive/src/test/resources/golden/add_part_exist-21-2df4b20f67e7f15d3f4150bcfea43b0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-22-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-22-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..121aebdfab9af --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-22-d824f22606f48dfca48ce241a7505f5b @@ -0,0 +1,2 @@ +ds=2010-01-01 +ds=2010-01-02 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-23-a3859b63665ce3bbfd19683e6e694dcb b/sql/hive/src/test/resources/golden/add_part_exist-23-a3859b63665ce3bbfd19683e6e694dcb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-24-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-24-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..64467c12563c8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-24-d824f22606f48dfca48ce241a7505f5b @@ -0,0 +1,3 @@ +ds=2010-01-01 +ds=2010-01-02 +ds=2010-01-03 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-3-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-3-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..f1ea8b0260d2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-3-d824f22606f48dfca48ce241a7505f5b @@ -0,0 +1 @@ +ds=2010-01-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-4-83cecdbfddb070a417050f9a18fff752 b/sql/hive/src/test/resources/golden/add_part_exist-4-83cecdbfddb070a417050f9a18fff752 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-5-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-5-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..f1ea8b0260d2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-5-d824f22606f48dfca48ce241a7505f5b @@ -0,0 +1 @@ +ds=2010-01-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-6-2df4b20f67e7f15d3f4150bcfea43b0f b/sql/hive/src/test/resources/golden/add_part_exist-6-2df4b20f67e7f15d3f4150bcfea43b0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-7-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-7-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..121aebdfab9af --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-7-d824f22606f48dfca48ce241a7505f5b @@ -0,0 +1,2 @@ +ds=2010-01-01 +ds=2010-01-02 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_exist-8-a3859b63665ce3bbfd19683e6e694dcb b/sql/hive/src/test/resources/golden/add_part_exist-8-a3859b63665ce3bbfd19683e6e694dcb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_exist-9-d824f22606f48dfca48ce241a7505f5b b/sql/hive/src/test/resources/golden/add_part_exist-9-d824f22606f48dfca48ce241a7505f5b new file mode 100644 index 0000000000000..64467c12563c8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_exist-9-d824f22606f48dfca48ce241a7505f5b @@ -0,0 +1,3 @@ +ds=2010-01-01 +ds=2010-01-02 +ds=2010-01-03 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_part_multiple-0-9c55143a4c92f0cfe7669f7681d7aa98 b/sql/hive/src/test/resources/golden/add_part_multiple-0-9c55143a4c92f0cfe7669f7681d7aa98 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_multiple-1-4d9d4efbabc9fffef8841cc049f479c1 b/sql/hive/src/test/resources/golden/add_part_multiple-1-4d9d4efbabc9fffef8841cc049f479c1 new file mode 100644 index 0000000000000..da21345385b2a --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_multiple-1-4d9d4efbabc9fffef8841cc049f479c1 @@ -0,0 +1,29 @@ +ABSTRACT SYNTAX TREE: + (TOK_ALTERTABLE_ADDPARTS add_part_test TOK_IFNOTEXISTS (TOK_PARTSPEC (TOK_PARTVAL ds '2010-01-01')) (TOK_PARTITIONLOCATION 'A') (TOK_PARTSPEC (TOK_PARTVAL ds '2010-02-01')) (TOK_PARTITIONLOCATION 'B') (TOK_PARTSPEC (TOK_PARTVAL ds '2010-03-01')) (TOK_PARTSPEC (TOK_PARTVAL ds '2010-04-01')) (TOK_PARTITIONLOCATION 'C')) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + Stage-2 is a root stage + Stage-3 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Add Partition Operator: + Location: A + Spec: {ds=2010-01-01} + + Stage: Stage-1 + Add Partition Operator: + Location: B + Spec: {ds=2010-02-01} + + Stage: Stage-2 + Add Partition Operator: + Spec: {ds=2010-03-01} + + Stage: Stage-3 + Add Partition Operator: + Location: C + Spec: {ds=2010-04-01} + diff --git a/sql/hive/src/test/resources/golden/add_part_multiple-2-187930e0daa44eed17e092e961ab7955 b/sql/hive/src/test/resources/golden/add_part_multiple-2-187930e0daa44eed17e092e961ab7955 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_multiple-3-59fb141ee5c3e8f9463fe0478dbfd7ef b/sql/hive/src/test/resources/golden/add_part_multiple-3-59fb141ee5c3e8f9463fe0478dbfd7ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_part_multiple-4-7950c676506564b085b41426ed41747c b/sql/hive/src/test/resources/golden/add_part_multiple-4-7950c676506564b085b41426ed41747c new file mode 100644 index 0000000000000..fc4021c39737f --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_part_multiple-4-7950c676506564b085b41426ed41747c @@ -0,0 +1,4 @@ +100 100 2010-01-01 +200 200 2010-02-01 +400 300 2010-03-01 +500 400 2010-04-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_partition_no_whitelist-0-3806584ff765bca682594008b90fc304 b/sql/hive/src/test/resources/golden/add_partition_no_whitelist-0-3806584ff765bca682594008b90fc304 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_partition_no_whitelist-0-3806584ff765bca682594008b90fc304 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_partition_no_whitelist-1-22eb96fe7d338e488182b5755c90d5af b/sql/hive/src/test/resources/golden/add_partition_no_whitelist-1-22eb96fe7d338e488182b5755c90d5af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_partition_no_whitelist-2-923fa18234ae73103c43722f70e000c0 b/sql/hive/src/test/resources/golden/add_partition_no_whitelist-2-923fa18234ae73103c43722f70e000c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_partition_no_whitelist-3-b7c0bb09609fabad407feb6fdf2c748f b/sql/hive/src/test/resources/golden/add_partition_no_whitelist-3-b7c0bb09609fabad407feb6fdf2c748f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_partition_with_whitelist-0-3c23ae800b2f6fb93620890da2dba196 b/sql/hive/src/test/resources/golden/add_partition_with_whitelist-0-3c23ae800b2f6fb93620890da2dba196 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/add_partition_with_whitelist-0-3c23ae800b2f6fb93620890da2dba196 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/add_partition_with_whitelist-1-67a0dbca9fecb7d34cceeecf2184c484 b/sql/hive/src/test/resources/golden/add_partition_with_whitelist-1-67a0dbca9fecb7d34cceeecf2184c484 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_partition_with_whitelist-2-e6a91be97431de63e372088d370c6d36 b/sql/hive/src/test/resources/golden/add_partition_with_whitelist-2-e6a91be97431de63e372088d370c6d36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/add_partition_with_whitelist-3-b9a6b4e8acbfea5e1938eda085c4b893 b/sql/hive/src/test/resources/golden/add_partition_with_whitelist-3-b9a6b4e8acbfea5e1938eda085c4b893 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alias.attr-0-42104e7e35985f4504c6d9a79b1bb4b8 b/sql/hive/src/test/resources/golden/alias.attr-0-42104e7e35985f4504c6d9a79b1bb4b8 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alias.attr-0-42104e7e35985f4504c6d9a79b1bb4b8 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alias.star-0-7bdb861d11e895aaea545810cdac316d b/sql/hive/src/test/resources/golden/alias.star-0-7bdb861d11e895aaea545810cdac316d new file mode 100644 index 0000000000000..016f64cc26f2a --- /dev/null +++ b/sql/hive/src/test/resources/golden/alias.star-0-7bdb861d11e895aaea545810cdac316d @@ -0,0 +1 @@ +0 val_0 diff --git a/sql/hive/src/test/resources/golden/alias_casted_column-0-f69b60c6e896fcd1a69d9525fd988c66 b/sql/hive/src/test/resources/golden/alias_casted_column-0-f69b60c6e896fcd1a69d9525fd988c66 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alias_casted_column-1-4432aec015f9423ed991b08cfb2af0e1 b/sql/hive/src/test/resources/golden/alias_casted_column-1-4432aec015f9423ed991b08cfb2af0e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-0-85e494848d1525843a3ff9b2b77f92 b/sql/hive/src/test/resources/golden/alter2-0-85e494848d1525843a3ff9b2b77f92 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-1-aac9c2c7033fd7264c9a107a88ff591 b/sql/hive/src/test/resources/golden/alter2-1-aac9c2c7033fd7264c9a107a88ff591 new file mode 100644 index 0000000000000..62a8ea1d115fb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-1-aac9c2c7033fd7264c9a107a88ff591 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:default, owner:marmbrus, createTime:1389728471, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{transient_lastDdlTime=1389728471}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-10-2d1f665a92fe72bd253ae57c46d7b9da b/sql/hive/src/test/resources/golden/alter2-10-2d1f665a92fe72bd253ae57c46d7b9da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-11-aac9c2c7033fd7264c9a107a88ff591 b/sql/hive/src/test/resources/golden/alter2-11-aac9c2c7033fd7264c9a107a88ff591 new file mode 100644 index 0000000000000..72621add45bb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-11-aac9c2c7033fd7264c9a107a88ff591 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:default, owner:marmbrus, createTime:1389728473, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{EXTERNAL=TRUE, transient_lastDdlTime=1389728473}, viewOriginalText:null, viewExpandedText:null, tableType:EXTERNAL_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-12-75a213649242c2410ea6846f08c91d75 b/sql/hive/src/test/resources/golden/alter2-12-75a213649242c2410ea6846f08c91d75 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-13-ca51e03a3de391983429b6ad877e573c b/sql/hive/src/test/resources/golden/alter2-13-ca51e03a3de391983429b6ad877e573c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-14-aac9c2c7033fd7264c9a107a88ff591 b/sql/hive/src/test/resources/golden/alter2-14-aac9c2c7033fd7264c9a107a88ff591 new file mode 100644 index 0000000000000..72621add45bb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-14-aac9c2c7033fd7264c9a107a88ff591 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:default, owner:marmbrus, createTime:1389728473, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{EXTERNAL=TRUE, transient_lastDdlTime=1389728473}, viewOriginalText:null, viewExpandedText:null, tableType:EXTERNAL_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-15-75a213649242c2410ea6846f08c91d75 b/sql/hive/src/test/resources/golden/alter2-15-75a213649242c2410ea6846f08c91d75 new file mode 100644 index 0000000000000..15e6bc8823150 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-15-75a213649242c2410ea6846f08c91d75 @@ -0,0 +1 @@ +insertdate=2008-01-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-16-77500c83ffcece95511a4b21d67382dd b/sql/hive/src/test/resources/golden/alter2-16-77500c83ffcece95511a4b21d67382dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-17-aac9c2c7033fd7264c9a107a88ff591 b/sql/hive/src/test/resources/golden/alter2-17-aac9c2c7033fd7264c9a107a88ff591 new file mode 100644 index 0000000000000..72621add45bb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-17-aac9c2c7033fd7264c9a107a88ff591 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:default, owner:marmbrus, createTime:1389728473, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{EXTERNAL=TRUE, transient_lastDdlTime=1389728473}, viewOriginalText:null, viewExpandedText:null, tableType:EXTERNAL_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-18-75a213649242c2410ea6846f08c91d75 b/sql/hive/src/test/resources/golden/alter2-18-75a213649242c2410ea6846f08c91d75 new file mode 100644 index 0000000000000..d31318a383fc1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-18-75a213649242c2410ea6846f08c91d75 @@ -0,0 +1,2 @@ +insertdate=2008-01-01 +insertdate=2008-01-02 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-19-3d80bb2d1c541460b5b17c4124fa647 b/sql/hive/src/test/resources/golden/alter2-19-3d80bb2d1c541460b5b17c4124fa647 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-2-75a213649242c2410ea6846f08c91d75 b/sql/hive/src/test/resources/golden/alter2-2-75a213649242c2410ea6846f08c91d75 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-20-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter2-20-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..ecafeaea5f61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-20-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,2 @@ +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-21-a6ea9efed3b9c680fca93588019ac5e3 b/sql/hive/src/test/resources/golden/alter2-21-a6ea9efed3b9c680fca93588019ac5e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-22-ea07b8f664208f93a1a8b97fd486d226 b/sql/hive/src/test/resources/golden/alter2-22-ea07b8f664208f93a1a8b97fd486d226 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-23-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter2-23-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-24-775d69742a1c07df8da87e8a017d955 b/sql/hive/src/test/resources/golden/alter2-24-775d69742a1c07df8da87e8a017d955 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-25-4ef75e12575453225738ea167c4617e5 b/sql/hive/src/test/resources/golden/alter2-25-4ef75e12575453225738ea167c4617e5 new file mode 100644 index 0000000000000..83184977e9da8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-25-4ef75e12575453225738ea167c4617e5 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:alter2_db, owner:marmbrus, createTime:1389728475, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2_db.db/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{transient_lastDdlTime=1389728475}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-26-63f13c364546ddce5d2176c6604a948f b/sql/hive/src/test/resources/golden/alter2-26-63f13c364546ddce5d2176c6604a948f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-27-ba521286c12ba29329bfa71bb185c62f b/sql/hive/src/test/resources/golden/alter2-27-ba521286c12ba29329bfa71bb185c62f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-28-4ef75e12575453225738ea167c4617e5 b/sql/hive/src/test/resources/golden/alter2-28-4ef75e12575453225738ea167c4617e5 new file mode 100644 index 0000000000000..83184977e9da8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-28-4ef75e12575453225738ea167c4617e5 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:alter2_db, owner:marmbrus, createTime:1389728475, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2_db.db/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{transient_lastDdlTime=1389728475}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-29-63f13c364546ddce5d2176c6604a948f b/sql/hive/src/test/resources/golden/alter2-29-63f13c364546ddce5d2176c6604a948f new file mode 100644 index 0000000000000..15e6bc8823150 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-29-63f13c364546ddce5d2176c6604a948f @@ -0,0 +1 @@ +insertdate=2008-01-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-3-ca51e03a3de391983429b6ad877e573c b/sql/hive/src/test/resources/golden/alter2-3-ca51e03a3de391983429b6ad877e573c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-30-a336adf1d0ff00633c53600fc75ca3ae b/sql/hive/src/test/resources/golden/alter2-30-a336adf1d0ff00633c53600fc75ca3ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-31-4ef75e12575453225738ea167c4617e5 b/sql/hive/src/test/resources/golden/alter2-31-4ef75e12575453225738ea167c4617e5 new file mode 100644 index 0000000000000..83184977e9da8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-31-4ef75e12575453225738ea167c4617e5 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:alter2_db, owner:marmbrus, createTime:1389728475, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2_db.db/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{transient_lastDdlTime=1389728475}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-32-63f13c364546ddce5d2176c6604a948f b/sql/hive/src/test/resources/golden/alter2-32-63f13c364546ddce5d2176c6604a948f new file mode 100644 index 0000000000000..d31318a383fc1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-32-63f13c364546ddce5d2176c6604a948f @@ -0,0 +1,2 @@ +insertdate=2008-01-01 +insertdate=2008-01-02 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-33-1934026d0228967097280eed35551f74 b/sql/hive/src/test/resources/golden/alter2-33-1934026d0228967097280eed35551f74 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-34-23b00f9c0101348e87da8a339b9da8b b/sql/hive/src/test/resources/golden/alter2-34-23b00f9c0101348e87da8a339b9da8b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-35-4ef75e12575453225738ea167c4617e5 b/sql/hive/src/test/resources/golden/alter2-35-4ef75e12575453225738ea167c4617e5 new file mode 100644 index 0000000000000..6e30936a881bd --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-35-4ef75e12575453225738ea167c4617e5 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:alter2_db, owner:marmbrus, createTime:1389728477, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2_db.db/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{EXTERNAL=TRUE, transient_lastDdlTime=1389728477}, viewOriginalText:null, viewExpandedText:null, tableType:EXTERNAL_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-36-63f13c364546ddce5d2176c6604a948f b/sql/hive/src/test/resources/golden/alter2-36-63f13c364546ddce5d2176c6604a948f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-37-ba521286c12ba29329bfa71bb185c62f b/sql/hive/src/test/resources/golden/alter2-37-ba521286c12ba29329bfa71bb185c62f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-38-4ef75e12575453225738ea167c4617e5 b/sql/hive/src/test/resources/golden/alter2-38-4ef75e12575453225738ea167c4617e5 new file mode 100644 index 0000000000000..6e30936a881bd --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-38-4ef75e12575453225738ea167c4617e5 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:alter2_db, owner:marmbrus, createTime:1389728477, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2_db.db/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{EXTERNAL=TRUE, transient_lastDdlTime=1389728477}, viewOriginalText:null, viewExpandedText:null, tableType:EXTERNAL_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-39-63f13c364546ddce5d2176c6604a948f b/sql/hive/src/test/resources/golden/alter2-39-63f13c364546ddce5d2176c6604a948f new file mode 100644 index 0000000000000..15e6bc8823150 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-39-63f13c364546ddce5d2176c6604a948f @@ -0,0 +1 @@ +insertdate=2008-01-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-4-aac9c2c7033fd7264c9a107a88ff591 b/sql/hive/src/test/resources/golden/alter2-4-aac9c2c7033fd7264c9a107a88ff591 new file mode 100644 index 0000000000000..62a8ea1d115fb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-4-aac9c2c7033fd7264c9a107a88ff591 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:default, owner:marmbrus, createTime:1389728471, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{transient_lastDdlTime=1389728471}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-40-a336adf1d0ff00633c53600fc75ca3ae b/sql/hive/src/test/resources/golden/alter2-40-a336adf1d0ff00633c53600fc75ca3ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-41-4ef75e12575453225738ea167c4617e5 b/sql/hive/src/test/resources/golden/alter2-41-4ef75e12575453225738ea167c4617e5 new file mode 100644 index 0000000000000..6e30936a881bd --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-41-4ef75e12575453225738ea167c4617e5 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:alter2_db, owner:marmbrus, createTime:1389728477, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2_db.db/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{EXTERNAL=TRUE, transient_lastDdlTime=1389728477}, viewOriginalText:null, viewExpandedText:null, tableType:EXTERNAL_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-42-63f13c364546ddce5d2176c6604a948f b/sql/hive/src/test/resources/golden/alter2-42-63f13c364546ddce5d2176c6604a948f new file mode 100644 index 0000000000000..d31318a383fc1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-42-63f13c364546ddce5d2176c6604a948f @@ -0,0 +1,2 @@ +insertdate=2008-01-01 +insertdate=2008-01-02 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-43-1934026d0228967097280eed35551f74 b/sql/hive/src/test/resources/golden/alter2-43-1934026d0228967097280eed35551f74 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-44-7a9e67189d3d4151f23b12c22bde06b5 b/sql/hive/src/test/resources/golden/alter2-44-7a9e67189d3d4151f23b12c22bde06b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-45-adbc01277c01cc5647e89c8a2430b8c b/sql/hive/src/test/resources/golden/alter2-45-adbc01277c01cc5647e89c8a2430b8c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-5-75a213649242c2410ea6846f08c91d75 b/sql/hive/src/test/resources/golden/alter2-5-75a213649242c2410ea6846f08c91d75 new file mode 100644 index 0000000000000..15e6bc8823150 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-5-75a213649242c2410ea6846f08c91d75 @@ -0,0 +1 @@ +insertdate=2008-01-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-6-77500c83ffcece95511a4b21d67382dd b/sql/hive/src/test/resources/golden/alter2-6-77500c83ffcece95511a4b21d67382dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter2-7-aac9c2c7033fd7264c9a107a88ff591 b/sql/hive/src/test/resources/golden/alter2-7-aac9c2c7033fd7264c9a107a88ff591 new file mode 100644 index 0000000000000..62a8ea1d115fb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-7-aac9c2c7033fd7264c9a107a88ff591 @@ -0,0 +1,10 @@ +a int None +b int None +insertdate string None + +# Partition Information +# col_name data_type comment + +insertdate string None + +Detailed Table Information Table(tableName:alter2, dbName:default, owner:marmbrus, createTime:1389728471, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null), FieldSchema(name:b, type:int, comment:null), FieldSchema(name:insertdate, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:insertdate, type:string, comment:null)], parameters:{transient_lastDdlTime=1389728471}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-8-75a213649242c2410ea6846f08c91d75 b/sql/hive/src/test/resources/golden/alter2-8-75a213649242c2410ea6846f08c91d75 new file mode 100644 index 0000000000000..d31318a383fc1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter2-8-75a213649242c2410ea6846f08c91d75 @@ -0,0 +1,2 @@ +insertdate=2008-01-01 +insertdate=2008-01-02 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter2-9-1986a53bb1944fe5f43e3e65693e7b1e b/sql/hive/src/test/resources/golden/alter2-9-1986a53bb1944fe5f43e3e65693e7b1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-0-1c1a75eeb97d4d8b9120d762aa0d2ade b/sql/hive/src/test/resources/golden/alter3-0-1c1a75eeb97d4d8b9120d762aa0d2ade new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-1-75be487df30e301e156a22eee075633d b/sql/hive/src/test/resources/golden/alter3-1-75be487df30e301e156a22eee075633d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-10-bd9604a8b7eaecd785bc1e5163ec53a1 b/sql/hive/src/test/resources/golden/alter3-10-bd9604a8b7eaecd785bc1e5163ec53a1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-11-10e58aa21d9af1817c71d83ec8e3a4d8 b/sql/hive/src/test/resources/golden/alter3-11-10e58aa21d9af1817c71d83ec8e3a4d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-12-2fcb7fc251f682a584ad513fddfac506 b/sql/hive/src/test/resources/golden/alter3-12-2fcb7fc251f682a584ad513fddfac506 new file mode 100644 index 0000000000000..ba1746da5ce69 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-12-2fcb7fc251f682a584ad513fddfac506 @@ -0,0 +1,11 @@ +col1 string None +pcol1 string None +pcol2 string None + +# Partition Information +# col_name data_type comment + +pcol1 string None +pcol2 string None + +Detailed Table Information Table(tableName:alter3_like_renamed, dbName:default, owner:marmbrus, createTime:1389728495, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter3_like_renamed, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], parameters:{numPartitions=1, numFiles=1, last_modified_by=marmbrus, last_modified_time=1389728524, transient_lastDdlTime=1389728524, numRows=6, totalSize=171, rawDataSize=6}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-13-4d7fd1a73dc8dde03c5627fb5e1dc17b b/sql/hive/src/test/resources/golden/alter3-13-4d7fd1a73dc8dde03c5627fb5e1dc17b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-14-3fa4d8a690a45cbf7b44cecfd352864f b/sql/hive/src/test/resources/golden/alter3-14-3fa4d8a690a45cbf7b44cecfd352864f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-15-5c6b489b14a4d8bc4ce9a26d8465d6f2 b/sql/hive/src/test/resources/golden/alter3-15-5c6b489b14a4d8bc4ce9a26d8465d6f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-16-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter3-16-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..ecafeaea5f61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-16-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,2 @@ +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-17-a9908f67f97588cbf15c0e7caddcbb0b b/sql/hive/src/test/resources/golden/alter3-17-a9908f67f97588cbf15c0e7caddcbb0b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-18-581b65f9f467d0d4a33a16dda144a31d b/sql/hive/src/test/resources/golden/alter3-18-581b65f9f467d0d4a33a16dda144a31d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-19-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter3-19-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-2-5a67d369d700eb96f806f8320c04d61f b/sql/hive/src/test/resources/golden/alter3-2-5a67d369d700eb96f806f8320c04d61f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-20-8114bed96bb7bff5b4fa18069c8d6d00 b/sql/hive/src/test/resources/golden/alter3-20-8114bed96bb7bff5b4fa18069c8d6d00 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-21-231db1adbff5fc90e57cca6a087f3df5 b/sql/hive/src/test/resources/golden/alter3-21-231db1adbff5fc90e57cca6a087f3df5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-22-362c1a2c9cb223f05b33c3cc193a4d24 b/sql/hive/src/test/resources/golden/alter3-22-362c1a2c9cb223f05b33c3cc193a4d24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-23-7ad62b397f6c9341da6bf0e9361314e2 b/sql/hive/src/test/resources/golden/alter3-23-7ad62b397f6c9341da6bf0e9361314e2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-24-9c23b682abda3841f01b4d9b750c68d9 b/sql/hive/src/test/resources/golden/alter3-24-9c23b682abda3841f01b4d9b750c68d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-25-568a59760e5d3241b63d65cce595face b/sql/hive/src/test/resources/golden/alter3-25-568a59760e5d3241b63d65cce595face new file mode 100644 index 0000000000000..8e609740f34a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-25-568a59760e5d3241b63d65cce595face @@ -0,0 +1,6 @@ +1 test_part: test_part: +2 test_part: test_part: +3 test_part: test_part: +4 test_part: test_part: +5 test_part: test_part: +6 test_part: test_part: \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-26-3c725018f74a69f4d859c66af2f5b11e b/sql/hive/src/test/resources/golden/alter3-26-3c725018f74a69f4d859c66af2f5b11e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-27-54ad133b447f67c6d1ed7d4c43803a87 b/sql/hive/src/test/resources/golden/alter3-27-54ad133b447f67c6d1ed7d4c43803a87 new file mode 100644 index 0000000000000..0e12e0e166336 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-27-54ad133b447f67c6d1ed7d4c43803a87 @@ -0,0 +1,11 @@ +col1 string None +pcol1 string None +pcol2 string None + +# Partition Information +# col_name data_type comment + +pcol1 string None +pcol2 string None + +Detailed Table Information Table(tableName:alter3_renamed, dbName:alter3_db, owner:marmbrus, createTime:1389728526, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter3_db.db/alter3_renamed, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], parameters:{numPartitions=1, numFiles=1, last_modified_by=marmbrus, last_modified_time=1389728544, transient_lastDdlTime=1389728544, numRows=6, totalSize=171, rawDataSize=6}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-28-5332228ea451105c897d0c8c3c8f2773 b/sql/hive/src/test/resources/golden/alter3-28-5332228ea451105c897d0c8c3c8f2773 new file mode 100644 index 0000000000000..4acb920388ceb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-28-5332228ea451105c897d0c8c3c8f2773 @@ -0,0 +1,11 @@ +col1 string None +pcol1 string None +pcol2 string None + +# Partition Information +# col_name data_type comment + +pcol1 string None +pcol2 string None + +Detailed Partition Information Partition(values:[test_part:, test_part:], dbName:alter3_db, tableName:alter3_renamed, createTime:1389728543, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter3_db.db/alter3_renamed/pcol1=test_part%3A/pcol2=test_part%3A, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1389728544, numRows=6, totalSize=171, rawDataSize=6}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-29-b8fba19b9009131caffbb5fe7468b67c b/sql/hive/src/test/resources/golden/alter3-29-b8fba19b9009131caffbb5fe7468b67c new file mode 100644 index 0000000000000..8e609740f34a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-29-b8fba19b9009131caffbb5fe7468b67c @@ -0,0 +1,6 @@ +1 test_part: test_part: +2 test_part: test_part: +3 test_part: test_part: +4 test_part: test_part: +5 test_part: test_part: +6 test_part: test_part: \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-3-f031aa27bf7b494cb8de20a305be7064 b/sql/hive/src/test/resources/golden/alter3-3-f031aa27bf7b494cb8de20a305be7064 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-30-cd5c7d666fdea990be3cf66e43c7b8f4 b/sql/hive/src/test/resources/golden/alter3-30-cd5c7d666fdea990be3cf66e43c7b8f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-31-5a41cf8c1a828ac2c372536ee4afd962 b/sql/hive/src/test/resources/golden/alter3-31-5a41cf8c1a828ac2c372536ee4afd962 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-32-327744965ee8ed630f56fa3e4a3c5c65 b/sql/hive/src/test/resources/golden/alter3-32-327744965ee8ed630f56fa3e4a3c5c65 new file mode 100644 index 0000000000000..12b038204bef4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-32-327744965ee8ed630f56fa3e4a3c5c65 @@ -0,0 +1,11 @@ +col1 string None +pcol1 string None +pcol2 string None + +# Partition Information +# col_name data_type comment + +pcol1 string None +pcol2 string None + +Detailed Table Information Table(tableName:alter3_like_renamed, dbName:alter3_db, owner:marmbrus, createTime:1389728527, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter3_db.db/alter3_like_renamed, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], parameters:{numPartitions=1, numFiles=1, last_modified_by=marmbrus, last_modified_time=1389728560, transient_lastDdlTime=1389728560, numRows=6, totalSize=171, rawDataSize=6}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-4-399fc26b344c98ababa104522601c0cc b/sql/hive/src/test/resources/golden/alter3-4-399fc26b344c98ababa104522601c0cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-5-bf2a8fd1884bb584059c848332e30c97 b/sql/hive/src/test/resources/golden/alter3-5-bf2a8fd1884bb584059c848332e30c97 new file mode 100644 index 0000000000000..8e609740f34a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-5-bf2a8fd1884bb584059c848332e30c97 @@ -0,0 +1,6 @@ +1 test_part: test_part: +2 test_part: test_part: +3 test_part: test_part: +4 test_part: test_part: +5 test_part: test_part: +6 test_part: test_part: \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-6-fe6db2a539df10e4bc4715e2ed755135 b/sql/hive/src/test/resources/golden/alter3-6-fe6db2a539df10e4bc4715e2ed755135 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter3-7-30be5698ca15c1fd836686e7ad48ad8 b/sql/hive/src/test/resources/golden/alter3-7-30be5698ca15c1fd836686e7ad48ad8 new file mode 100644 index 0000000000000..0c47fb0ac64aa --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-7-30be5698ca15c1fd836686e7ad48ad8 @@ -0,0 +1,11 @@ +col1 string None +pcol1 string None +pcol2 string None + +# Partition Information +# col_name data_type comment + +pcol1 string None +pcol2 string None + +Detailed Table Information Table(tableName:alter3_renamed, dbName:default, owner:marmbrus, createTime:1389728495, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter3_renamed, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], parameters:{numPartitions=1, numFiles=1, last_modified_by=marmbrus, last_modified_time=1389728509, transient_lastDdlTime=1389728509, numRows=6, totalSize=171, rawDataSize=6}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-8-8f0a466bd1d021e40690865b7ae52a43 b/sql/hive/src/test/resources/golden/alter3-8-8f0a466bd1d021e40690865b7ae52a43 new file mode 100644 index 0000000000000..1165de3a92fd0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-8-8f0a466bd1d021e40690865b7ae52a43 @@ -0,0 +1,11 @@ +col1 string None +pcol1 string None +pcol2 string None + +# Partition Information +# col_name data_type comment + +pcol1 string None +pcol2 string None + +Detailed Partition Information Partition(values:[test_part:, test_part:], dbName:default, tableName:alter3_renamed, createTime:1389728508, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:pcol1, type:string, comment:null), FieldSchema(name:pcol2, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/alter3_renamed/pcol1=test_part%3A/pcol2=test_part%3A, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1389728508, numRows=6, totalSize=171, rawDataSize=6}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter3-9-b8a2a12aeddb84f56c7a1f6346bae3d2 b/sql/hive/src/test/resources/golden/alter3-9-b8a2a12aeddb84f56c7a1f6346bae3d2 new file mode 100644 index 0000000000000..8e609740f34a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter3-9-b8a2a12aeddb84f56c7a1f6346bae3d2 @@ -0,0 +1,6 @@ +1 test_part: test_part: +2 test_part: test_part: +3 test_part: test_part: +4 test_part: test_part: +5 test_part: test_part: +6 test_part: test_part: \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter4-0-c261e1fa9f838dd034d37af38305e9c6 b/sql/hive/src/test/resources/golden/alter4-0-c261e1fa9f838dd034d37af38305e9c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-1-7ead71f9870ae36dd1cb50b51b41fad7 b/sql/hive/src/test/resources/golden/alter4-1-7ead71f9870ae36dd1cb50b51b41fad7 new file mode 100644 index 0000000000000..8d2aebeb4d29d --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter4-1-7ead71f9870ae36dd1cb50b51b41fad7 @@ -0,0 +1,4 @@ +key int None +value string None + +Detailed Table Information Table(tableName:set_bucketing_test, dbName:default, owner:marmbrus, createTime:1389735344, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5432448755546164619/set_bucketing_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:10, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[key], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389735344}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter4-10-7ead71f9870ae36dd1cb50b51b41fad7 b/sql/hive/src/test/resources/golden/alter4-10-7ead71f9870ae36dd1cb50b51b41fad7 new file mode 100644 index 0000000000000..cf67a009ff291 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter4-10-7ead71f9870ae36dd1cb50b51b41fad7 @@ -0,0 +1,4 @@ +key int None +value string None + +Detailed Table Information Table(tableName:set_bucketing_test, dbName:alter4_db, owner:marmbrus, createTime:1389735347, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5432448755546164619/alter4_db.db/set_bucketing_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:10, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[key], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389735347}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter4-11-7db7af854e4e10fb6f0338b85d65549d b/sql/hive/src/test/resources/golden/alter4-11-7db7af854e4e10fb6f0338b85d65549d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-12-7ead71f9870ae36dd1cb50b51b41fad7 b/sql/hive/src/test/resources/golden/alter4-12-7ead71f9870ae36dd1cb50b51b41fad7 new file mode 100644 index 0000000000000..a6375189a7a23 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter4-12-7ead71f9870ae36dd1cb50b51b41fad7 @@ -0,0 +1,4 @@ +key int None +value string None + +Detailed Table Information Table(tableName:set_bucketing_test, dbName:alter4_db, owner:marmbrus, createTime:1389735347, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5432448755546164619/alter4_db.db/set_bucketing_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1389735348, transient_lastDdlTime=1389735348}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter4-13-e9879d6bebc109340bbeecc3ca77492f b/sql/hive/src/test/resources/golden/alter4-13-e9879d6bebc109340bbeecc3ca77492f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-14-7a9e67189d3d4151f23b12c22bde06b5 b/sql/hive/src/test/resources/golden/alter4-14-7a9e67189d3d4151f23b12c22bde06b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-15-63a545ee0e751a2729c8758a14712da5 b/sql/hive/src/test/resources/golden/alter4-15-63a545ee0e751a2729c8758a14712da5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-16-549981e00a3d95f03dd5a9ef6044aa20 b/sql/hive/src/test/resources/golden/alter4-16-549981e00a3d95f03dd5a9ef6044aa20 new file mode 100644 index 0000000000000..331d858ce9b12 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter4-16-549981e00a3d95f03dd5a9ef6044aa20 @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter4-2-7db7af854e4e10fb6f0338b85d65549d b/sql/hive/src/test/resources/golden/alter4-2-7db7af854e4e10fb6f0338b85d65549d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-3-7ead71f9870ae36dd1cb50b51b41fad7 b/sql/hive/src/test/resources/golden/alter4-3-7ead71f9870ae36dd1cb50b51b41fad7 new file mode 100644 index 0000000000000..6b79a37a85f0c --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter4-3-7ead71f9870ae36dd1cb50b51b41fad7 @@ -0,0 +1,4 @@ +key int None +value string None + +Detailed Table Information Table(tableName:set_bucketing_test, dbName:default, owner:marmbrus, createTime:1389735344, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5432448755546164619/set_bucketing_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1389735345, transient_lastDdlTime=1389735345}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter4-4-cc9c0034efdeb0bf94ad774aeb703c39 b/sql/hive/src/test/resources/golden/alter4-4-cc9c0034efdeb0bf94ad774aeb703c39 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-5-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter4-5-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..ecafeaea5f61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter4-5-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,2 @@ +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter4-6-acd58e84952d310aeddf78579c36286 b/sql/hive/src/test/resources/golden/alter4-6-acd58e84952d310aeddf78579c36286 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-7-8e6ec3396f25c124de5b212d8ce6c568 b/sql/hive/src/test/resources/golden/alter4-7-8e6ec3396f25c124de5b212d8ce6c568 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-8-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter4-8-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter4-9-c261e1fa9f838dd034d37af38305e9c6 b/sql/hive/src/test/resources/golden/alter4-9-c261e1fa9f838dd034d37af38305e9c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-0-953553e14d835682fa47338dcfffe227 b/sql/hive/src/test/resources/golden/alter5-0-953553e14d835682fa47338dcfffe227 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-1-b8349afaf8e62dc6608a889c04ee3d4b b/sql/hive/src/test/resources/golden/alter5-1-b8349afaf8e62dc6608a889c04ee3d4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-10-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter5-10-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..85c1918f46567 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter5-10-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,2 @@ +src +srcpart diff --git a/sql/hive/src/test/resources/golden/alter5-11-e63fa029ab22ac4f5c880f2848f1b956 b/sql/hive/src/test/resources/golden/alter5-11-e63fa029ab22ac4f5c880f2848f1b956 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-12-6b160869b8a9c846bc55a14f85bc5b52 b/sql/hive/src/test/resources/golden/alter5-12-6b160869b8a9c846bc55a14f85bc5b52 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-13-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter5-13-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-14-92fbb4bc42ef462dcb4a06442b0c4023 b/sql/hive/src/test/resources/golden/alter5-14-92fbb4bc42ef462dcb4a06442b0c4023 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-15-b8349afaf8e62dc6608a889c04ee3d4b b/sql/hive/src/test/resources/golden/alter5-15-b8349afaf8e62dc6608a889c04ee3d4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-16-4b76b7ff0df6adeded64b2a2f305530d b/sql/hive/src/test/resources/golden/alter5-16-4b76b7ff0df6adeded64b2a2f305530d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-17-9176dc5fb5206209fa907a289db1263d b/sql/hive/src/test/resources/golden/alter5-17-9176dc5fb5206209fa907a289db1263d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-18-2a9c8219c1468a1cf0534c665d1fcebf b/sql/hive/src/test/resources/golden/alter5-18-2a9c8219c1468a1cf0534c665d1fcebf new file mode 100644 index 0000000000000..e180d4c53ae73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter5-18-2a9c8219c1468a1cf0534c665d1fcebf @@ -0,0 +1,9 @@ +col1 string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[a], dbName:alter5_db, tableName:alter5, createTime:1390897177, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/alter5_db.db/alter5/parta, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1390897177}) diff --git a/sql/hive/src/test/resources/golden/alter5-19-2f6ab691e291c74ecc4305eeb30e3438 b/sql/hive/src/test/resources/golden/alter5-19-2f6ab691e291c74ecc4305eeb30e3438 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-2-4b76b7ff0df6adeded64b2a2f305530d b/sql/hive/src/test/resources/golden/alter5-2-4b76b7ff0df6adeded64b2a2f305530d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-20-d1779a2fe5ccc205e0499fae4c3942b1 b/sql/hive/src/test/resources/golden/alter5-20-d1779a2fe5ccc205e0499fae4c3942b1 new file mode 100644 index 0000000000000..de522457dcada --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter5-20-d1779a2fe5ccc205e0499fae4c3942b1 @@ -0,0 +1,6 @@ +1 a +2 a +3 a +4 a +5 a +6 a diff --git a/sql/hive/src/test/resources/golden/alter5-21-2a9c8219c1468a1cf0534c665d1fcebf b/sql/hive/src/test/resources/golden/alter5-21-2a9c8219c1468a1cf0534c665d1fcebf new file mode 100644 index 0000000000000..3d4ba2636ab66 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter5-21-2a9c8219c1468a1cf0534c665d1fcebf @@ -0,0 +1,9 @@ +col1 string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[a], dbName:alter5_db, tableName:alter5, createTime:1390897177, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/alter5_db.db/alter5/parta, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1390897186, numRows=6, totalSize=12, rawDataSize=6}) diff --git a/sql/hive/src/test/resources/golden/alter5-3-2fc59e32c07186869811705c89aafadc b/sql/hive/src/test/resources/golden/alter5-3-2fc59e32c07186869811705c89aafadc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-4-2a9c8219c1468a1cf0534c665d1fcebf b/sql/hive/src/test/resources/golden/alter5-4-2a9c8219c1468a1cf0534c665d1fcebf new file mode 100644 index 0000000000000..6669b628fc224 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter5-4-2a9c8219c1468a1cf0534c665d1fcebf @@ -0,0 +1,9 @@ +col1 string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[a], dbName:default, tableName:alter5, createTime:1390897166, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/alter5/parta, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1390897166}) diff --git a/sql/hive/src/test/resources/golden/alter5-5-2f6ab691e291c74ecc4305eeb30e3438 b/sql/hive/src/test/resources/golden/alter5-5-2f6ab691e291c74ecc4305eeb30e3438 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-6-d1779a2fe5ccc205e0499fae4c3942b1 b/sql/hive/src/test/resources/golden/alter5-6-d1779a2fe5ccc205e0499fae4c3942b1 new file mode 100644 index 0000000000000..de522457dcada --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter5-6-d1779a2fe5ccc205e0499fae4c3942b1 @@ -0,0 +1,6 @@ +1 a +2 a +3 a +4 a +5 a +6 a diff --git a/sql/hive/src/test/resources/golden/alter5-7-2a9c8219c1468a1cf0534c665d1fcebf b/sql/hive/src/test/resources/golden/alter5-7-2a9c8219c1468a1cf0534c665d1fcebf new file mode 100644 index 0000000000000..e866ae0fa7654 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter5-7-2a9c8219c1468a1cf0534c665d1fcebf @@ -0,0 +1,9 @@ +col1 string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[a], dbName:default, tableName:alter5, createTime:1390897166, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:col1, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/alter5/parta, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1390897176, numRows=6, totalSize=12, rawDataSize=6}) diff --git a/sql/hive/src/test/resources/golden/alter5-8-89c414c65a129f2fc408b3124f292b29 b/sql/hive/src/test/resources/golden/alter5-8-89c414c65a129f2fc408b3124f292b29 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter5-9-1e085f9741197e659413828c42386733 b/sql/hive/src/test/resources/golden/alter5-9-1e085f9741197e659413828c42386733 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_index-0-21bcf37075b02097f16c8fc8130a83b8 b/sql/hive/src/test/resources/golden/alter_index-0-21bcf37075b02097f16c8fc8130a83b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_index-1-4c8f6b48c437bf0be109fc0be1dc840e b/sql/hive/src/test/resources/golden/alter_index-1-4c8f6b48c437bf0be109fc0be1dc840e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_index-2-f36cb2eed39691ca949b25182e2dd31 b/sql/hive/src/test/resources/golden/alter_index-2-f36cb2eed39691ca949b25182e2dd31 new file mode 100644 index 0000000000000..2860d5c6b4cfb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_index-2-f36cb2eed39691ca949b25182e2dd31 @@ -0,0 +1,5 @@ +key int None +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:default__src_src_index_8__, dbName:default, owner:null, createTime:1389733869, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2023038695216118221/default__src_src_index_8__, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:key, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389733869}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_index-3-33474b65c86b949d266541e0385bc6bb b/sql/hive/src/test/resources/golden/alter_index-3-33474b65c86b949d266541e0385bc6bb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_index-4-f36cb2eed39691ca949b25182e2dd31 b/sql/hive/src/test/resources/golden/alter_index-4-f36cb2eed39691ca949b25182e2dd31 new file mode 100644 index 0000000000000..2860d5c6b4cfb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_index-4-f36cb2eed39691ca949b25182e2dd31 @@ -0,0 +1,5 @@ +key int None +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:default__src_src_index_8__, dbName:default, owner:null, createTime:1389733869, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2023038695216118221/default__src_src_index_8__, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:key, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389733869}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_index-5-21bcf37075b02097f16c8fc8130a83b8 b/sql/hive/src/test/resources/golden/alter_index-5-21bcf37075b02097f16c8fc8130a83b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_index-6-489b4ceb2f4301a7132628303f99240d b/sql/hive/src/test/resources/golden/alter_index-6-489b4ceb2f4301a7132628303f99240d new file mode 100644 index 0000000000000..ecafeaea5f61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_index-6-489b4ceb2f4301a7132628303f99240d @@ -0,0 +1,2 @@ +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-0-48044f1a60d3e15e4e17f8f95098d995 b/sql/hive/src/test/resources/golden/alter_merge_2-0-48044f1a60d3e15e4e17f8f95098d995 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-1-3a102e7798dbcc7948223c18ddaa8cb5 b/sql/hive/src/test/resources/golden/alter_merge_2-1-3a102e7798dbcc7948223c18ddaa8cb5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-10-69fe9bb96263a49b9cca70cea7eb57e1 b/sql/hive/src/test/resources/golden/alter_merge_2-10-69fe9bb96263a49b9cca70cea7eb57e1 new file mode 100644 index 0000000000000..c80ef36c96ad4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_merge_2-10-69fe9bb96263a49b9cca70cea7eb57e1 @@ -0,0 +1 @@ +754 -7678496319 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-11-efe4e50f2330d4f0a737183ea51836c b/sql/hive/src/test/resources/golden/alter_merge_2-11-efe4e50f2330d4f0a737183ea51836c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-2-bf243aa10b608872b9e8286f89c5ff30 b/sql/hive/src/test/resources/golden/alter_merge_2-2-bf243aa10b608872b9e8286f89c5ff30 new file mode 100644 index 0000000000000..618c1d01b726d --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_merge_2-2-bf243aa10b608872b9e8286f89c5ff30 @@ -0,0 +1,12 @@ +key int from deserializer +value string from deserializer +ds string None +ts string None + +# Partition Information +# col_name data_type comment + +ds string None +ts string None + +Detailed Partition Information Partition(values:[2012-01-03, 2012-01-03+14:46:31], dbName:default, tableName:src_rc_merge_test_part, createTime:1389728902, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse545253106736176469/src_rc_merge_test_part/ds=2012-01-03/ts=2012-01-03+14%3A46%3A31, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1389728902}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-3-cfef140167765d259320ed1e8aba718d b/sql/hive/src/test/resources/golden/alter_merge_2-3-cfef140167765d259320ed1e8aba718d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-4-47aa9e3236da627ab505a6bd01e563be b/sql/hive/src/test/resources/golden/alter_merge_2-4-47aa9e3236da627ab505a6bd01e563be new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-5-43bd090cda258e25037e7c32d500a85f b/sql/hive/src/test/resources/golden/alter_merge_2-5-43bd090cda258e25037e7c32d500a85f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-6-f2eeb518a957cece4250cc7558839e02 b/sql/hive/src/test/resources/golden/alter_merge_2-6-f2eeb518a957cece4250cc7558839e02 new file mode 100644 index 0000000000000..3f10ffe7a4c47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_merge_2-6-f2eeb518a957cece4250cc7558839e02 @@ -0,0 +1 @@ +15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-7-69fe9bb96263a49b9cca70cea7eb57e1 b/sql/hive/src/test/resources/golden/alter_merge_2-7-69fe9bb96263a49b9cca70cea7eb57e1 new file mode 100644 index 0000000000000..c80ef36c96ad4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_merge_2-7-69fe9bb96263a49b9cca70cea7eb57e1 @@ -0,0 +1 @@ +754 -7678496319 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-8-c1b9f23f413b1cceaeea94d3a86f09cc b/sql/hive/src/test/resources/golden/alter_merge_2-8-c1b9f23f413b1cceaeea94d3a86f09cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_merge_2-9-f2eeb518a957cece4250cc7558839e02 b/sql/hive/src/test/resources/golden/alter_merge_2-9-f2eeb518a957cece4250cc7558839e02 new file mode 100644 index 0000000000000..3f10ffe7a4c47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_merge_2-9-f2eeb518a957cece4250cc7558839e02 @@ -0,0 +1 @@ +15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-0-76649a6f1ff2f3ffa8310c34f0438e3a b/sql/hive/src/test/resources/golden/alter_partition_coltype-0-76649a6f1ff2f3ffa8310c34f0438e3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-1-b9bb847419afb2b70d0cb887894f0b90 b/sql/hive/src/test/resources/golden/alter_partition_coltype-1-b9bb847419afb2b70d0cb887894f0b90 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-10-aa739a81271c760437de572a6c951eb9 b/sql/hive/src/test/resources/golden/alter_partition_coltype-10-aa739a81271c760437de572a6c951eb9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-11-94b98dca970e36e6d4d65a795c9413d6 b/sql/hive/src/test/resources/golden/alter_partition_coltype-11-94b98dca970e36e6d4d65a795c9413d6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-12-84807e0be3e91250d4b8f2dc7938a256 b/sql/hive/src/test/resources/golden/alter_partition_coltype-12-84807e0be3e91250d4b8f2dc7938a256 new file mode 100644 index 0000000000000..410b14d2ce6f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-12-84807e0be3e91250d4b8f2dc7938a256 @@ -0,0 +1 @@ +25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-13-60ab4c242e19b882e4b1571544311e7e b/sql/hive/src/test/resources/golden/alter_partition_coltype-13-60ab4c242e19b882e4b1571544311e7e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-14-fdad866a990591083719bd45e4113f58 b/sql/hive/src/test/resources/golden/alter_partition_coltype-14-fdad866a990591083719bd45e4113f58 new file mode 100644 index 0000000000000..410b14d2ce6f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-14-fdad866a990591083719bd45e4113f58 @@ -0,0 +1 @@ +25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-15-634775da8cebfb8ce45b3965a0ae2880 b/sql/hive/src/test/resources/golden/alter_partition_coltype-15-634775da8cebfb8ce45b3965a0ae2880 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-16-b0534980e325d1fee63c2636ad3f8a4e b/sql/hive/src/test/resources/golden/alter_partition_coltype-16-b0534980e325d1fee63c2636ad3f8a4e new file mode 100644 index 0000000000000..b28ab5ccf8a1b --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-16-b0534980e325d1fee63c2636ad3f8a4e @@ -0,0 +1,75 @@ +238 val_238 10 3.0 +NULL 10 3.0 +311 val_311 10 3.0 +NULL val_27 10 3.0 +NULL val_165 10 3.0 +NULL val_409 10 3.0 +255 val_255 10 3.0 +278 val_278 10 3.0 +98 val_98 10 3.0 +NULL val_484 10 3.0 +NULL val_265 10 3.0 +NULL val_193 10 3.0 +401 val_401 10 3.0 +150 val_150 10 3.0 +273 val_273 10 3.0 +224 10 3.0 +369 10 3.0 +66 val_66 10 3.0 +128 10 3.0 +213 val_213 10 3.0 +146 val_146 10 3.0 +406 val_406 10 3.0 +NULL 10 3.0 +NULL 10 3.0 +NULL 10 3.0 +238 val_238 100x 3.0 +NULL 100x 3.0 +311 val_311 100x 3.0 +NULL val_27 100x 3.0 +NULL val_165 100x 3.0 +NULL val_409 100x 3.0 +255 val_255 100x 3.0 +278 val_278 100x 3.0 +98 val_98 100x 3.0 +NULL val_484 100x 3.0 +NULL val_265 100x 3.0 +NULL val_193 100x 3.0 +401 val_401 100x 3.0 +150 val_150 100x 3.0 +273 val_273 100x 3.0 +224 100x 3.0 +369 100x 3.0 +66 val_66 100x 3.0 +128 100x 3.0 +213 val_213 100x 3.0 +146 val_146 100x 3.0 +406 val_406 100x 3.0 +NULL 100x 3.0 +NULL 100x 3.0 +NULL 100x 3.0 +238 val_238 100x 6:30pm +NULL 100x 6:30pm +311 val_311 100x 6:30pm +NULL val_27 100x 6:30pm +NULL val_165 100x 6:30pm +NULL val_409 100x 6:30pm +255 val_255 100x 6:30pm +278 val_278 100x 6:30pm +98 val_98 100x 6:30pm +NULL val_484 100x 6:30pm +NULL val_265 100x 6:30pm +NULL val_193 100x 6:30pm +401 val_401 100x 6:30pm +150 val_150 100x 6:30pm +273 val_273 100x 6:30pm +224 100x 6:30pm +369 100x 6:30pm +66 val_66 100x 6:30pm +128 100x 6:30pm +213 val_213 100x 6:30pm +146 val_146 100x 6:30pm +406 val_406 100x 6:30pm +NULL 100x 6:30pm +NULL 100x 6:30pm +NULL 100x 6:30pm \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-17-13c0443789a696bde8d08c05f526643f b/sql/hive/src/test/resources/golden/alter_partition_coltype-17-13c0443789a696bde8d08c05f526643f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-18-fbdd117c3b1ec9c92c7c33d52d94e42c b/sql/hive/src/test/resources/golden/alter_partition_coltype-18-fbdd117c3b1ec9c92c7c33d52d94e42c new file mode 100644 index 0000000000000..c5b431b6cba29 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-18-fbdd117c3b1ec9c92c7c33d52d94e42c @@ -0,0 +1 @@ +50 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-19-63799ee74ccc42d9bb817e6d00a6fae3 b/sql/hive/src/test/resources/golden/alter_partition_coltype-19-63799ee74ccc42d9bb817e6d00a6fae3 new file mode 100644 index 0000000000000..a76c74dcec6ab --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-19-63799ee74ccc42d9bb817e6d00a6fae3 @@ -0,0 +1 @@ +75 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-2-17e04afbb81a724fe8c47c07b642f9a b/sql/hive/src/test/resources/golden/alter_partition_coltype-2-17e04afbb81a724fe8c47c07b642f9a new file mode 100644 index 0000000000000..316ca7f65ba20 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-2-17e04afbb81a724fe8c47c07b642f9a @@ -0,0 +1,10 @@ +key string None +value string None +dt string None +ts string None + +# Partition Information +# col_name data_type comment + +dt string None +ts string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-20-b4411edb9c52a474a971640f037c8a30 b/sql/hive/src/test/resources/golden/alter_partition_coltype-20-b4411edb9c52a474a971640f037c8a30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-21-17e04afbb81a724fe8c47c07b642f9a b/sql/hive/src/test/resources/golden/alter_partition_coltype-21-17e04afbb81a724fe8c47c07b642f9a new file mode 100644 index 0000000000000..a7382fabfcb49 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-21-17e04afbb81a724fe8c47c07b642f9a @@ -0,0 +1,10 @@ +key string None +value string None +dt string None +ts double None + +# Partition Information +# col_name data_type comment + +dt string None +ts double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-22-639cdccdea5f4b1863f9b17b04183c93 b/sql/hive/src/test/resources/golden/alter_partition_coltype-22-639cdccdea5f4b1863f9b17b04183c93 new file mode 100644 index 0000000000000..a7382fabfcb49 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-22-639cdccdea5f4b1863f9b17b04183c93 @@ -0,0 +1,10 @@ +key string None +value string None +dt string None +ts double None + +# Partition Information +# col_name data_type comment + +dt string None +ts double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-23-325be9a5d7c0277498a139c0a9fdb26a b/sql/hive/src/test/resources/golden/alter_partition_coltype-23-325be9a5d7c0277498a139c0a9fdb26a new file mode 100644 index 0000000000000..a7382fabfcb49 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-23-325be9a5d7c0277498a139c0a9fdb26a @@ -0,0 +1,10 @@ +key string None +value string None +dt string None +ts double None + +# Partition Information +# col_name data_type comment + +dt string None +ts double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-24-71de9e476503e83f82baf1ab17da87f6 b/sql/hive/src/test/resources/golden/alter_partition_coltype-24-71de9e476503e83f82baf1ab17da87f6 new file mode 100644 index 0000000000000..a7382fabfcb49 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-24-71de9e476503e83f82baf1ab17da87f6 @@ -0,0 +1,10 @@ +key string None +value string None +dt string None +ts double None + +# Partition Information +# col_name data_type comment + +dt string None +ts double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-25-40b997fef00cf1a26f73ddb5013bbeb6 b/sql/hive/src/test/resources/golden/alter_partition_coltype-25-40b997fef00cf1a26f73ddb5013bbeb6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-3-179315b6f54dc18e6eeffd7aaa947fa5 b/sql/hive/src/test/resources/golden/alter_partition_coltype-3-179315b6f54dc18e6eeffd7aaa947fa5 new file mode 100644 index 0000000000000..410b14d2ce6f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-3-179315b6f54dc18e6eeffd7aaa947fa5 @@ -0,0 +1 @@ +25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-4-f6ba42faebdf8ec8781716fec6f7813d b/sql/hive/src/test/resources/golden/alter_partition_coltype-4-f6ba42faebdf8ec8781716fec6f7813d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-5-eeb71f1bc830750174b8b0d03de8c37d b/sql/hive/src/test/resources/golden/alter_partition_coltype-5-eeb71f1bc830750174b8b0d03de8c37d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-6-db84ad9022cdc1828c24a0340321c8fd b/sql/hive/src/test/resources/golden/alter_partition_coltype-6-db84ad9022cdc1828c24a0340321c8fd new file mode 100644 index 0000000000000..410b14d2ce6f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-6-db84ad9022cdc1828c24a0340321c8fd @@ -0,0 +1 @@ +25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-7-f3d9e8fc026c62c23e1ae0d191c89bc0 b/sql/hive/src/test/resources/golden/alter_partition_coltype-7-f3d9e8fc026c62c23e1ae0d191c89bc0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-8-42a70ae131fbb834c79074fdbd7beea0 b/sql/hive/src/test/resources/golden/alter_partition_coltype-8-42a70ae131fbb834c79074fdbd7beea0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_coltype-8-42a70ae131fbb834c79074fdbd7beea0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_coltype-9-2f7e10db0fcc7939dea528e04f460d42 b/sql/hive/src/test/resources/golden/alter_partition_coltype-9-2f7e10db0fcc7939dea528e04f460d42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-0-72ba9397f487a914380dc15afaef1058 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-0-72ba9397f487a914380dc15afaef1058 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-1-30348eedd3afb892ac9d825dd7fdb5d8 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-1-30348eedd3afb892ac9d825dd7fdb5d8 new file mode 100644 index 0000000000000..db182e444d31d --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-1-30348eedd3afb892ac9d825dd7fdb5d8 @@ -0,0 +1,4 @@ +key int None +value string None + +Detailed Table Information Table(tableName:alter_partition_format_test, dbName:default, owner:marmbrus, createTime:1388805891, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/alter_partition_format_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1388805891}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-10-71631c1e516c81ffdceac80f2d57ce09 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-10-71631c1e516c81ffdceac80f2d57ce09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-11-fe39b84ddc86b6bf042dc30c1b612321 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-11-fe39b84ddc86b6bf042dc30c1b612321 new file mode 100644 index 0000000000000..81e23f0bc1951 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-11-fe39b84ddc86b6bf042dc30c1b612321 @@ -0,0 +1,10 @@ +key int from deserializer +value string from deserializer +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Partition Information Partition(values:[2010], dbName:default, tableName:alter_partition_format_test, createTime:1388805891, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/alter_partition_format_test/ds=2010, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{last_modified_by=marmbrus, last_modified_time=1388805891, transient_lastDdlTime=1388805891}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-12-1553ad79b098b737ea8def91134eb0e9 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-12-1553ad79b098b737ea8def91134eb0e9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-13-fe39b84ddc86b6bf042dc30c1b612321 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-13-fe39b84ddc86b6bf042dc30c1b612321 new file mode 100644 index 0000000000000..6dc1f3ca2c187 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-13-fe39b84ddc86b6bf042dc30c1b612321 @@ -0,0 +1,10 @@ +key int from deserializer +value string from deserializer +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Partition Information Partition(values:[2010], dbName:default, tableName:alter_partition_format_test, createTime:1388805891, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/test/test/ds=2010, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{last_modified_by=marmbrus, last_modified_time=1388805891, transient_lastDdlTime=1388805891}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-14-30348eedd3afb892ac9d825dd7fdb5d8 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-14-30348eedd3afb892ac9d825dd7fdb5d8 new file mode 100644 index 0000000000000..4b754043d63ab --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-14-30348eedd3afb892ac9d825dd7fdb5d8 @@ -0,0 +1,10 @@ +key int None +value string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Table Information Table(tableName:alter_partition_format_test, dbName:default, owner:marmbrus, createTime:1388805891, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/alter_partition_format_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null)], parameters:{transient_lastDdlTime=1388805891}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-15-bc83e8a2f8edf84f603109d14440dc83 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-15-bc83e8a2f8edf84f603109d14440dc83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-16-30348eedd3afb892ac9d825dd7fdb5d8 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-16-30348eedd3afb892ac9d825dd7fdb5d8 new file mode 100644 index 0000000000000..f44c28ee36760 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-16-30348eedd3afb892ac9d825dd7fdb5d8 @@ -0,0 +1,10 @@ +key int from deserializer +value string from deserializer +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Table Information Table(tableName:alter_partition_format_test, dbName:default, owner:marmbrus, createTime:1388805891, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/alter_partition_format_test, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null)], parameters:{last_modified_by=marmbrus, last_modified_time=1388805892, transient_lastDdlTime=1388805892}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-17-7e411fcfdd8f169c503ed89dc56ee335 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-17-7e411fcfdd8f169c503ed89dc56ee335 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-18-30348eedd3afb892ac9d825dd7fdb5d8 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-18-30348eedd3afb892ac9d825dd7fdb5d8 new file mode 100644 index 0000000000000..e739ad4992ec9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-18-30348eedd3afb892ac9d825dd7fdb5d8 @@ -0,0 +1,10 @@ +key int from deserializer +value string from deserializer +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Table Information Table(tableName:alter_partition_format_test, dbName:default, owner:marmbrus, createTime:1388805891, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/test/test/, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null)], parameters:{last_modified_by=marmbrus, last_modified_time=1388805892, transient_lastDdlTime=1388805892}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-19-56cadf0f555e355726dfed1929ad0508 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-19-56cadf0f555e355726dfed1929ad0508 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-2-bc83e8a2f8edf84f603109d14440dc83 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-2-bc83e8a2f8edf84f603109d14440dc83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-3-30348eedd3afb892ac9d825dd7fdb5d8 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-3-30348eedd3afb892ac9d825dd7fdb5d8 new file mode 100644 index 0000000000000..092e5ed6e8a46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-3-30348eedd3afb892ac9d825dd7fdb5d8 @@ -0,0 +1,4 @@ +key int from deserializer +value string from deserializer + +Detailed Table Information Table(tableName:alter_partition_format_test, dbName:default, owner:marmbrus, createTime:1388805891, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/alter_partition_format_test, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1388805891, transient_lastDdlTime=1388805891}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-4-7e411fcfdd8f169c503ed89dc56ee335 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-4-7e411fcfdd8f169c503ed89dc56ee335 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-5-30348eedd3afb892ac9d825dd7fdb5d8 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-5-30348eedd3afb892ac9d825dd7fdb5d8 new file mode 100644 index 0000000000000..197e67d09bf49 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-5-30348eedd3afb892ac9d825dd7fdb5d8 @@ -0,0 +1,4 @@ +key int from deserializer +value string from deserializer + +Detailed Table Information Table(tableName:alter_partition_format_test, dbName:default, owner:marmbrus, createTime:1388805891, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/test/test/, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1388805891, transient_lastDdlTime=1388805891}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-6-56cadf0f555e355726dfed1929ad0508 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-6-56cadf0f555e355726dfed1929ad0508 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-7-cee355b012efdc3bc7d584268a7025c2 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-7-cee355b012efdc3bc7d584268a7025c2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-8-e4c52934f1ff0024f7f0bbb78d4ae3f8 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-8-e4c52934f1ff0024f7f0bbb78d4ae3f8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_format_loc-9-fe39b84ddc86b6bf042dc30c1b612321 b/sql/hive/src/test/resources/golden/alter_partition_format_loc-9-fe39b84ddc86b6bf042dc30c1b612321 new file mode 100644 index 0000000000000..29b5b693b8589 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_format_loc-9-fe39b84ddc86b6bf042dc30c1b612321 @@ -0,0 +1,10 @@ +key int None +value string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Partition Information Partition(values:[2010], dbName:default, tableName:alter_partition_format_test, createTime:1388805891, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/alter_partition_format_test/ds=2010, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1388805891}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-0-2a230c069b09232acdd0d556007be97f b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-0-2a230c069b09232acdd0d556007be97f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-1-fbbdf7be607407661749730f1a0efd9c b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-1-fbbdf7be607407661749730f1a0efd9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-10-d71b99098bdb7f13db278dfa299b820d b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-10-d71b99098bdb7f13db278dfa299b820d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-11-482182c9d90710fb16b6803d602a0d8b b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-11-482182c9d90710fb16b6803d602a0d8b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-12-b29d5391cda48aa2bd8f3bb37cc63750 b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-12-b29d5391cda48aa2bd8f3bb37cc63750 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-13-19ceced1d8238509f2416029ddfbbc4a b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-13-19ceced1d8238509f2416029ddfbbc4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-14-90d009f94408102945d43860e4a6c68a b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-14-90d009f94408102945d43860e4a6c68a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-15-7ab0e8f289c6846f9872edee0c40a628 b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-15-7ab0e8f289c6846f9872edee0c40a628 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-16-577e1c164866c3955a9d8587ef7918a4 b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-16-577e1c164866c3955a9d8587ef7918a4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-2-79b9075b2f86f16f2356d9fa2a9afd56 b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-2-79b9075b2f86f16f2356d9fa2a9afd56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-3-dd92c46e933d94b35c225daeef0285d4 b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-3-dd92c46e933d94b35c225daeef0285d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-4-9114d1f6859382a125fc4221d2d3ab6 b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-4-9114d1f6859382a125fc4221d2d3ab6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-5-3cc094c5aa537b12f98895b95765329c b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-5-3cc094c5aa537b12f98895b95765329c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-6-beb03691c7cc6cf1597d3ff16ef98d17 b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-6-beb03691c7cc6cf1597d3ff16ef98d17 new file mode 100644 index 0000000000000..02d72f4292749 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-6-beb03691c7cc6cf1597d3ff16ef98d17 @@ -0,0 +1,12 @@ +1 11 1996 10 +2 12 1996 10 +3 13 1996 10 +7 17 1996 10 +8 18 1996 10 +8 28 1996 10 +1 11 1996 12 +2 12 1996 12 +3 13 1996 12 +7 17 1996 12 +8 18 1996 12 +8 28 1996 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-7-5439426a18bb2d3918b91d589dbbd014 b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-7-5439426a18bb2d3918b91d589dbbd014 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-8-71e8c12c533654c30e044a8f062598ed b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-8-71e8c12c533654c30e044a8f062598ed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_protect_mode-9-d1b12be1d01eabaf244f41e74d902d9d b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-9-d1b12be1d01eabaf244f41e74d902d9d new file mode 100644 index 0000000000000..bca47334cedaa --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_protect_mode-9-d1b12be1d01eabaf244f41e74d902d9d @@ -0,0 +1,6 @@ +1 11 1995 09 +2 12 1995 09 +3 13 1995 09 +7 17 1995 09 +8 18 1995 09 +8 28 1995 09 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-0-3c23ae800b2f6fb93620890da2dba196 b/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-0-3c23ae800b2f6fb93620890da2dba196 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-0-3c23ae800b2f6fb93620890da2dba196 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-1-67a0dbca9fecb7d34cceeecf2184c484 b/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-1-67a0dbca9fecb7d34cceeecf2184c484 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-2-e6a91be97431de63e372088d370c6d36 b/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-2-e6a91be97431de63e372088d370c6d36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-3-b9a6b4e8acbfea5e1938eda085c4b893 b/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-3-b9a6b4e8acbfea5e1938eda085c4b893 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-4-f42e9ca89ed2944213a5d994a587391c b/sql/hive/src/test/resources/golden/alter_partition_with_whitelist-4-f42e9ca89ed2944213a5d994a587391c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-0-1ed18256c5230de3439fe75d925ea73 b/sql/hive/src/test/resources/golden/alter_rename_partition-0-1ed18256c5230de3439fe75d925ea73 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-1-2f79bceed6fc8ada34a670396ee6aada b/sql/hive/src/test/resources/golden/alter_rename_partition-1-2f79bceed6fc8ada34a670396ee6aada new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-10-e3d9a36d53d30de215b855095c58d0d7 b/sql/hive/src/test/resources/golden/alter_rename_partition-10-e3d9a36d53d30de215b855095c58d0d7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-11-bc84e38ccad173f5b47474d91db244d7 b/sql/hive/src/test/resources/golden/alter_rename_partition-11-bc84e38ccad173f5b47474d91db244d7 new file mode 100644 index 0000000000000..e881b2a4b74eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_rename_partition-11-bc84e38ccad173f5b47474d91db244d7 @@ -0,0 +1,6 @@ +1 new_part1: new_part2: +2 new_part1: new_part2: +3 new_part1: new_part2: +4 new_part1: new_part2: +5 new_part1: new_part2: +6 new_part1: new_part2: \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-12-1ed18256c5230de3439fe75d925ea73 b/sql/hive/src/test/resources/golden/alter_rename_partition-12-1ed18256c5230de3439fe75d925ea73 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-13-2f79bceed6fc8ada34a670396ee6aada b/sql/hive/src/test/resources/golden/alter_rename_partition-13-2f79bceed6fc8ada34a670396ee6aada new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-14-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter_rename_partition-14-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..ecafeaea5f61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_rename_partition-14-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,2 @@ +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-15-f3b7bcb5d95a356fee54c0ce7d60c611 b/sql/hive/src/test/resources/golden/alter_rename_partition-15-f3b7bcb5d95a356fee54c0ce7d60c611 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-16-611cf586cf3a1adc93c543d2da574c24 b/sql/hive/src/test/resources/golden/alter_rename_partition-16-611cf586cf3a1adc93c543d2da574c24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-17-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter_rename_partition-17-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-18-bf6f780173f7b523b7ebd7925789372b b/sql/hive/src/test/resources/golden/alter_rename_partition-18-bf6f780173f7b523b7ebd7925789372b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-19-b2c9ded072d49abe14831bf48290319c b/sql/hive/src/test/resources/golden/alter_rename_partition-19-b2c9ded072d49abe14831bf48290319c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-2-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/alter_rename_partition-2-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..ecafeaea5f61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_rename_partition-2-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,2 @@ +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-20-ee3ad861d109dd98db10bc86c5bf7105 b/sql/hive/src/test/resources/golden/alter_rename_partition-20-ee3ad861d109dd98db10bc86c5bf7105 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-21-d92bfe92d250f66b3df45cb4ab50c0e6 b/sql/hive/src/test/resources/golden/alter_rename_partition-21-d92bfe92d250f66b3df45cb4ab50c0e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-22-d50111b57d14f1ded1c47c773b0e0ac2 b/sql/hive/src/test/resources/golden/alter_rename_partition-22-d50111b57d14f1ded1c47c773b0e0ac2 new file mode 100644 index 0000000000000..684f1da0fd0a6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_rename_partition-22-d50111b57d14f1ded1c47c773b0e0ac2 @@ -0,0 +1,6 @@ +1 old_part1: old_part2: +2 old_part1: old_part2: +3 old_part1: old_part2: +4 old_part1: old_part2: +5 old_part1: old_part2: +6 old_part1: old_part2: \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-23-aedbaca33604c76b65137905fd42e98f b/sql/hive/src/test/resources/golden/alter_rename_partition-23-aedbaca33604c76b65137905fd42e98f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-24-21dd05d56ebba285a8eb5bde5904d6a3 b/sql/hive/src/test/resources/golden/alter_rename_partition-24-21dd05d56ebba285a8eb5bde5904d6a3 new file mode 100644 index 0000000000000..fc31ec62a1280 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_rename_partition-24-21dd05d56ebba285a8eb5bde5904d6a3 @@ -0,0 +1 @@ +pcol1=new_part1%3A/pcol2=new_part2%3A \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-25-9595f5b6ab31162c107076c35657c9f3 b/sql/hive/src/test/resources/golden/alter_rename_partition-25-9595f5b6ab31162c107076c35657c9f3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-26-270655c514bb6f04acd4459df52dd77b b/sql/hive/src/test/resources/golden/alter_rename_partition-26-270655c514bb6f04acd4459df52dd77b new file mode 100644 index 0000000000000..e881b2a4b74eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_rename_partition-26-270655c514bb6f04acd4459df52dd77b @@ -0,0 +1,6 @@ +1 new_part1: new_part2: +2 new_part1: new_part2: +3 new_part1: new_part2: +4 new_part1: new_part2: +5 new_part1: new_part2: +6 new_part1: new_part2: \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-3-b465c6126edd94e8d45f61e2a19d005b b/sql/hive/src/test/resources/golden/alter_rename_partition-3-b465c6126edd94e8d45f61e2a19d005b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-4-3479a886936571d5028971aecade705f b/sql/hive/src/test/resources/golden/alter_rename_partition-4-3479a886936571d5028971aecade705f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-5-6cc4e3014e34a862602a47357f4fb9f2 b/sql/hive/src/test/resources/golden/alter_rename_partition-5-6cc4e3014e34a862602a47357f4fb9f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-6-3324664e6500e2d256d0b8b3b8a14c24 b/sql/hive/src/test/resources/golden/alter_rename_partition-6-3324664e6500e2d256d0b8b3b8a14c24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-7-e3d9a36d53d30de215b855095c58d0d7 b/sql/hive/src/test/resources/golden/alter_rename_partition-7-e3d9a36d53d30de215b855095c58d0d7 new file mode 100644 index 0000000000000..684f1da0fd0a6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_rename_partition-7-e3d9a36d53d30de215b855095c58d0d7 @@ -0,0 +1,6 @@ +1 old_part1: old_part2: +2 old_part1: old_part2: +3 old_part1: old_part2: +4 old_part1: old_part2: +5 old_part1: old_part2: +6 old_part1: old_part2: \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-8-d3ea111b1a37613bdda2c6eae13790c9 b/sql/hive/src/test/resources/golden/alter_rename_partition-8-d3ea111b1a37613bdda2c6eae13790c9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_rename_partition-9-21dd05d56ebba285a8eb5bde5904d6a3 b/sql/hive/src/test/resources/golden/alter_rename_partition-9-21dd05d56ebba285a8eb5bde5904d6a3 new file mode 100644 index 0000000000000..fc31ec62a1280 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_rename_partition-9-21dd05d56ebba285a8eb5bde5904d6a3 @@ -0,0 +1 @@ +pcol1=new_part1%3A/pcol2=new_part2%3A \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-0-35d2014351106b918c8e337a1919470c b/sql/hive/src/test/resources/golden/alter_table_serde-0-35d2014351106b918c8e337a1919470c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-1-5bc931a540f0fec54e852ff10f52f879 b/sql/hive/src/test/resources/golden/alter_table_serde-1-5bc931a540f0fec54e852ff10f52f879 new file mode 100644 index 0000000000000..ccd6518a50f7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_table_serde-1-5bc931a540f0fec54e852ff10f52f879 @@ -0,0 +1,5 @@ +id int None +query string None +name string None + +Detailed Table Information Table(tableName:test_table, dbName:default, owner:marmbrus, createTime:1388805893, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:null), FieldSchema(name:query, type:string, comment:null), FieldSchema(name:name, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/test_table, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1388805893}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-10-ed0059ecd1cf948e8f75153593c8a5aa b/sql/hive/src/test/resources/golden/alter_table_serde-10-ed0059ecd1cf948e8f75153593c8a5aa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-11-6ee4b3a60659ec5496f06347eda232a8 b/sql/hive/src/test/resources/golden/alter_table_serde-11-6ee4b3a60659ec5496f06347eda232a8 new file mode 100644 index 0000000000000..d135e450e6e8e --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_table_serde-11-6ee4b3a60659ec5496f06347eda232a8 @@ -0,0 +1,11 @@ +id int None +query string None +name string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[2011], dbName:default, tableName:test_table, createTime:1388805893, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:null), FieldSchema(name:query, type:string, comment:null), FieldSchema(name:name, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/test_table/dt=2011, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1388805893}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-12-63a8168d2eae62132c3cd9b90b3cdbcc b/sql/hive/src/test/resources/golden/alter_table_serde-12-63a8168d2eae62132c3cd9b90b3cdbcc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-13-6ee4b3a60659ec5496f06347eda232a8 b/sql/hive/src/test/resources/golden/alter_table_serde-13-6ee4b3a60659ec5496f06347eda232a8 new file mode 100644 index 0000000000000..d135e450e6e8e --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_table_serde-13-6ee4b3a60659ec5496f06347eda232a8 @@ -0,0 +1,11 @@ +id int None +query string None +name string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[2011], dbName:default, tableName:test_table, createTime:1388805893, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:null), FieldSchema(name:query, type:string, comment:null), FieldSchema(name:name, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/test_table/dt=2011, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1388805893}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-14-ab6d7ed387e6e2f1f8f32272e3d31def b/sql/hive/src/test/resources/golden/alter_table_serde-14-ab6d7ed387e6e2f1f8f32272e3d31def new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-15-6ee4b3a60659ec5496f06347eda232a8 b/sql/hive/src/test/resources/golden/alter_table_serde-15-6ee4b3a60659ec5496f06347eda232a8 new file mode 100644 index 0000000000000..c3fac88f91a36 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_table_serde-15-6ee4b3a60659ec5496f06347eda232a8 @@ -0,0 +1,11 @@ +id int None +query string None +name string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[2011], dbName:default, tableName:test_table, createTime:1388805893, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:null), FieldSchema(name:query, type:string, comment:null), FieldSchema(name:name, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/test_table/dt=2011, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{last_modified_by=marmbrus, last_modified_time=1388805893, transient_lastDdlTime=1388805893}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-16-c6bb65a44a8b0ba1fa454218a31a2a44 b/sql/hive/src/test/resources/golden/alter_table_serde-16-c6bb65a44a8b0ba1fa454218a31a2a44 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-17-6ee4b3a60659ec5496f06347eda232a8 b/sql/hive/src/test/resources/golden/alter_table_serde-17-6ee4b3a60659ec5496f06347eda232a8 new file mode 100644 index 0000000000000..6c8f91de7cded --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_table_serde-17-6ee4b3a60659ec5496f06347eda232a8 @@ -0,0 +1,11 @@ +id int None +query string None +name string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[2011], dbName:default, tableName:test_table, createTime:1388805893, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:null), FieldSchema(name:query, type:string, comment:null), FieldSchema(name:name, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/test_table/dt=2011, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe, parameters:{serialization.format=1, field.delim=,}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{last_modified_by=marmbrus, last_modified_time=1388805893, transient_lastDdlTime=1388805893}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-18-1649ba756fd9238f0608e4cb3affa3c1 b/sql/hive/src/test/resources/golden/alter_table_serde-18-1649ba756fd9238f0608e4cb3affa3c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-2-ed0059ecd1cf948e8f75153593c8a5aa b/sql/hive/src/test/resources/golden/alter_table_serde-2-ed0059ecd1cf948e8f75153593c8a5aa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-3-5bc931a540f0fec54e852ff10f52f879 b/sql/hive/src/test/resources/golden/alter_table_serde-3-5bc931a540f0fec54e852ff10f52f879 new file mode 100644 index 0000000000000..37a5b2cc47bad --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_table_serde-3-5bc931a540f0fec54e852ff10f52f879 @@ -0,0 +1,5 @@ +id int from deserializer +query string from deserializer +name string from deserializer + +Detailed Table Information Table(tableName:test_table, dbName:default, owner:marmbrus, createTime:1388805893, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:from deserializer), FieldSchema(name:query, type:string, comment:from deserializer), FieldSchema(name:name, type:string, comment:from deserializer)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/test_table, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1388805893, transient_lastDdlTime=1388805893}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-4-63a8168d2eae62132c3cd9b90b3cdbcc b/sql/hive/src/test/resources/golden/alter_table_serde-4-63a8168d2eae62132c3cd9b90b3cdbcc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-5-5bc931a540f0fec54e852ff10f52f879 b/sql/hive/src/test/resources/golden/alter_table_serde-5-5bc931a540f0fec54e852ff10f52f879 new file mode 100644 index 0000000000000..0348dd15fd4f5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_table_serde-5-5bc931a540f0fec54e852ff10f52f879 @@ -0,0 +1,5 @@ +id int from deserializer +query string from deserializer +name string from deserializer + +Detailed Table Information Table(tableName:test_table, dbName:default, owner:marmbrus, createTime:1388805893, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:from deserializer), FieldSchema(name:query, type:string, comment:from deserializer), FieldSchema(name:name, type:string, comment:from deserializer)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/test_table, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe, parameters:{serialization.format=1, field.delim=,}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1388805893, transient_lastDdlTime=1388805893}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-6-1649ba756fd9238f0608e4cb3affa3c1 b/sql/hive/src/test/resources/golden/alter_table_serde-6-1649ba756fd9238f0608e4cb3affa3c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-7-9ca4794d2e2cb6ae6f8e4f33f7ff290b b/sql/hive/src/test/resources/golden/alter_table_serde-7-9ca4794d2e2cb6ae6f8e4f33f7ff290b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-8-78d739d2409b59c0e01cde962451d295 b/sql/hive/src/test/resources/golden/alter_table_serde-8-78d739d2409b59c0e01cde962451d295 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_table_serde-9-6ee4b3a60659ec5496f06347eda232a8 b/sql/hive/src/test/resources/golden/alter_table_serde-9-6ee4b3a60659ec5496f06347eda232a8 new file mode 100644 index 0000000000000..d135e450e6e8e --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_table_serde-9-6ee4b3a60659ec5496f06347eda232a8 @@ -0,0 +1,11 @@ +id int None +query string None +name string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None + +Detailed Partition Information Partition(values:[2011], dbName:default, tableName:test_table, createTime:1388805893, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:null), FieldSchema(name:query, type:string, comment:null), FieldSchema(name:name, type:string, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2706017013471029005/test_table/dt=2011, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1388805893}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-0-5fa6071842a0443346cf6db677a33412 b/sql/hive/src/test/resources/golden/alter_varchar1-0-5fa6071842a0443346cf6db677a33412 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-1-be11cb1f18ab19550011417126264fea b/sql/hive/src/test/resources/golden/alter_varchar1-1-be11cb1f18ab19550011417126264fea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-10-c1a57b45952193d04b5411c5b6a31139 b/sql/hive/src/test/resources/golden/alter_varchar1-10-c1a57b45952193d04b5411c5b6a31139 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-11-fa89c704636fa7bd937cf1a975bb2ae6 b/sql/hive/src/test/resources/golden/alter_varchar1-11-fa89c704636fa7bd937cf1a975bb2ae6 new file mode 100644 index 0000000000000..dd347f3e8f58e --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar1-11-fa89c704636fa7bd937cf1a975bb2ae6 @@ -0,0 +1,5 @@ +0 val_0 NULL NULL +0 val_0 NULL NULL +0 val_0 NULL NULL +2 val_2 NULL NULL +4 val_4 NULL NULL diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-12-a694df5b2a8f2101f6fd2b936eeb2bfd b/sql/hive/src/test/resources/golden/alter_varchar1-12-a694df5b2a8f2101f6fd2b936eeb2bfd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-13-fa89c704636fa7bd937cf1a975bb2ae6 b/sql/hive/src/test/resources/golden/alter_varchar1-13-fa89c704636fa7bd937cf1a975bb2ae6 new file mode 100644 index 0000000000000..12087837cebf1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar1-13-fa89c704636fa7bd937cf1a975bb2ae6 @@ -0,0 +1,5 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +2 val_2 2 val_2 +4 val_4 4 val_4 diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-14-5fa6071842a0443346cf6db677a33412 b/sql/hive/src/test/resources/golden/alter_varchar1-14-5fa6071842a0443346cf6db677a33412 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-2-ba9453c6b6a627286691f3930c2b26d0 b/sql/hive/src/test/resources/golden/alter_varchar1-2-ba9453c6b6a627286691f3930c2b26d0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-3-fa89c704636fa7bd937cf1a975bb2ae6 b/sql/hive/src/test/resources/golden/alter_varchar1-3-fa89c704636fa7bd937cf1a975bb2ae6 new file mode 100644 index 0000000000000..6839c16243bcd --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar1-3-fa89c704636fa7bd937cf1a975bb2ae6 @@ -0,0 +1,5 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-4-c9a8643e08d6ed320f82c26e1ffa8b5d b/sql/hive/src/test/resources/golden/alter_varchar1-4-c9a8643e08d6ed320f82c26e1ffa8b5d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-5-2756ef8fbe2cfa4609808a3855f50969 b/sql/hive/src/test/resources/golden/alter_varchar1-5-2756ef8fbe2cfa4609808a3855f50969 new file mode 100644 index 0000000000000..6839c16243bcd --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar1-5-2756ef8fbe2cfa4609808a3855f50969 @@ -0,0 +1,5 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-6-f7d529dc66c022b64e0b287c82f92778 b/sql/hive/src/test/resources/golden/alter_varchar1-6-f7d529dc66c022b64e0b287c82f92778 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-7-818f2ce0a782a1d3cb02fd85bd1d3f9f b/sql/hive/src/test/resources/golden/alter_varchar1-7-818f2ce0a782a1d3cb02fd85bd1d3f9f new file mode 100644 index 0000000000000..879a6e7bcbd18 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar1-7-818f2ce0a782a1d3cb02fd85bd1d3f9f @@ -0,0 +1,5 @@ +0 val +0 val +0 val +2 val +4 val diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-8-bdde28ebc875c39f9630d95379eee68 b/sql/hive/src/test/resources/golden/alter_varchar1-8-bdde28ebc875c39f9630d95379eee68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar1-9-5e48ee7bcd9439e68aa6dbc850ad8771 b/sql/hive/src/test/resources/golden/alter_varchar1-9-5e48ee7bcd9439e68aa6dbc850ad8771 new file mode 100644 index 0000000000000..6839c16243bcd --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar1-9-5e48ee7bcd9439e68aa6dbc850ad8771 @@ -0,0 +1,5 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-0-22c4186110b5770deaf7f03cf08326b7 b/sql/hive/src/test/resources/golden/alter_varchar2-0-22c4186110b5770deaf7f03cf08326b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-1-ecc82a01a8f681a8a2d44a67a8a3f1cc b/sql/hive/src/test/resources/golden/alter_varchar2-1-ecc82a01a8f681a8a2d44a67a8a3f1cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-2-325238d61f56d84c17e29033105d7b19 b/sql/hive/src/test/resources/golden/alter_varchar2-2-325238d61f56d84c17e29033105d7b19 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-3-fb3191f771e2396d5fc80659a8c68797 b/sql/hive/src/test/resources/golden/alter_varchar2-3-fb3191f771e2396d5fc80659a8c68797 new file mode 100644 index 0000000000000..40818a7de46d0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar2-3-fb3191f771e2396d5fc80659a8c68797 @@ -0,0 +1 @@ +val_238 7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-4-9a4bf0db2b90d54ea0eeff2ec356fcb b/sql/hive/src/test/resources/golden/alter_varchar2-4-9a4bf0db2b90d54ea0eeff2ec356fcb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-5-84e700f9dc6033c1f237fcdb95e31a0c b/sql/hive/src/test/resources/golden/alter_varchar2-5-84e700f9dc6033c1f237fcdb95e31a0c new file mode 100644 index 0000000000000..827220bd4996f --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar2-5-84e700f9dc6033c1f237fcdb95e31a0c @@ -0,0 +1 @@ +1 val_238 7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-6-eb0f1b170900bb995674b0bc1968c656 b/sql/hive/src/test/resources/golden/alter_varchar2-6-eb0f1b170900bb995674b0bc1968c656 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-7-84e700f9dc6033c1f237fcdb95e31a0c b/sql/hive/src/test/resources/golden/alter_varchar2-7-84e700f9dc6033c1f237fcdb95e31a0c new file mode 100644 index 0000000000000..827220bd4996f --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar2-7-84e700f9dc6033c1f237fcdb95e31a0c @@ -0,0 +1 @@ +1 val_238 7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_varchar2-8-4c12c4c53d99338796be34e603dc612c b/sql/hive/src/test/resources/golden/alter_varchar2-8-4c12c4c53d99338796be34e603dc612c new file mode 100644 index 0000000000000..8a8234a35f6bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_varchar2-8-4c12c4c53d99338796be34e603dc612c @@ -0,0 +1 @@ +2 238 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/alter_view_as_select-0-9f40bf1c2b92465189583446a6b40910 b/sql/hive/src/test/resources/golden/alter_view_as_select-0-9f40bf1c2b92465189583446a6b40910 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_view_as_select-1-5ba1b5ca1199ad7281ff9b5b71105aad b/sql/hive/src/test/resources/golden/alter_view_as_select-1-5ba1b5ca1199ad7281ff9b5b71105aad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_view_as_select-2-1ac845048a8c714a36a719ea8e4f570b b/sql/hive/src/test/resources/golden/alter_view_as_select-2-1ac845048a8c714a36a719ea8e4f570b new file mode 100644 index 0000000000000..a99747531cef4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_view_as_select-2-1ac845048a8c714a36a719ea8e4f570b @@ -0,0 +1,30 @@ +# col_name data_type comment + +key int None +value string None +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Feb 07 14:47:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Table Type: VIRTUAL_VIEW +Table Parameters: + transient_lastDdlTime 1391813272 + +# Storage Information +SerDe Library: null +InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] + +# View Information +View Original Text: SELECT * FROM srcpart +View Expanded Text: SELECT `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` FROM `default`.`srcpart` diff --git a/sql/hive/src/test/resources/golden/alter_view_as_select-3-9280ae6c369a9f30d3d021d00e435f01 b/sql/hive/src/test/resources/golden/alter_view_as_select-3-9280ae6c369a9f30d3d021d00e435f01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_view_as_select-4-1ac845048a8c714a36a719ea8e4f570b b/sql/hive/src/test/resources/golden/alter_view_as_select-4-1ac845048a8c714a36a719ea8e4f570b new file mode 100644 index 0000000000000..499c73127d890 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_view_as_select-4-1ac845048a8c714a36a719ea8e4f570b @@ -0,0 +1,27 @@ +# col_name data_type comment + +value string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Feb 07 14:47:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Table Type: VIRTUAL_VIEW +Table Parameters: + transient_lastDdlTime 1391813272 + +# Storage Information +SerDe Library: null +InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] + +# View Information +View Original Text: SELECT value FROM src WHERE key=86 +View Expanded Text: SELECT `src`.`value` FROM `default`.`src` WHERE `src`.`key`=86 diff --git a/sql/hive/src/test/resources/golden/alter_view_as_select-5-48b435d96e34065b03c6d7e4e891fbe2 b/sql/hive/src/test/resources/golden/alter_view_as_select-5-48b435d96e34065b03c6d7e4e891fbe2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_view_as_select-6-1ac845048a8c714a36a719ea8e4f570b b/sql/hive/src/test/resources/golden/alter_view_as_select-6-1ac845048a8c714a36a719ea8e4f570b new file mode 100644 index 0000000000000..a5fba77abdf07 --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_view_as_select-6-1ac845048a8c714a36a719ea8e4f570b @@ -0,0 +1,34 @@ +# col_name data_type comment + +key int None +value string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Feb 07 14:47:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Table Type: VIRTUAL_VIEW +Table Parameters: + transient_lastDdlTime 1391813272 + +# Storage Information +SerDe Library: null +InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] + +# View Information +View Original Text: SELECT * FROM src +WHERE key > 80 AND key < 100 +ORDER BY key, value +LIMIT 10 +View Expanded Text: SELECT `src`.`key`, `src`.`value` FROM `default`.`src` +WHERE `src`.`key` > 80 AND `src`.`key` < 100 +ORDER BY `src`.`key`, `src`.`value` +LIMIT 10 diff --git a/sql/hive/src/test/resources/golden/alter_view_rename-0-bb255b994b5207324fba6988caa937e6 b/sql/hive/src/test/resources/golden/alter_view_rename-0-bb255b994b5207324fba6988caa937e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_view_rename-1-2a83c96363ca8d12cd2e9181209c8d8d b/sql/hive/src/test/resources/golden/alter_view_rename-1-2a83c96363ca8d12cd2e9181209c8d8d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_view_rename-2-67e47ee2746463594d5c48b10ba1bb b/sql/hive/src/test/resources/golden/alter_view_rename-2-67e47ee2746463594d5c48b10ba1bb new file mode 100644 index 0000000000000..ee76e02af3aba --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_view_rename-2-67e47ee2746463594d5c48b10ba1bb @@ -0,0 +1,5 @@ +foo int None +bar string None +ds string None + +Detailed Table Information Table(tableName:view1, dbName:default, owner:tnachen, createTime:1392426511, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:foo, type:int, comment:null), FieldSchema(name:bar, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:null, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:null, parameters:{}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1392426511}, viewOriginalText:SELECT * FROM invites, viewExpandedText:SELECT `invites`.`foo`, `invites`.`bar`, `invites`.`ds` FROM `default`.`invites`, tableType:VIRTUAL_VIEW) diff --git a/sql/hive/src/test/resources/golden/alter_view_rename-3-95655e33f22fc8f66549a9708812589a b/sql/hive/src/test/resources/golden/alter_view_rename-3-95655e33f22fc8f66549a9708812589a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/alter_view_rename-4-19c1c00f0aa99d81b7466958c15d88e3 b/sql/hive/src/test/resources/golden/alter_view_rename-4-19c1c00f0aa99d81b7466958c15d88e3 new file mode 100644 index 0000000000000..8603577477bfc --- /dev/null +++ b/sql/hive/src/test/resources/golden/alter_view_rename-4-19c1c00f0aa99d81b7466958c15d88e3 @@ -0,0 +1,5 @@ +foo int None +bar string None +ds string None + +Detailed Table Information Table(tableName:view2, dbName:default, owner:tnachen, createTime:1392426511, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:foo, type:int, comment:null), FieldSchema(name:bar, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:null, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:null, parameters:{}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=tnachen, last_modified_time=1392426511, transient_lastDdlTime=1392426511}, viewOriginalText:SELECT * FROM invites, viewExpandedText:SELECT `invites`.`foo`, `invites`.`bar`, `invites`.`ds` FROM `default`.`invites`, tableType:VIRTUAL_VIEW) diff --git a/sql/hive/src/test/resources/golden/ambiguous_col-0-b4fe82679efdf6a15e9ecff53baf8d8d b/sql/hive/src/test/resources/golden/ambiguous_col-0-b4fe82679efdf6a15e9ecff53baf8d8d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ambiguous_col-1-dadfa3854356dead14b93c5a71a5d8ab b/sql/hive/src/test/resources/golden/ambiguous_col-1-dadfa3854356dead14b93c5a71a5d8ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ambiguous_col-2-70509ccd2765d90b98666b6dff8afe1b b/sql/hive/src/test/resources/golden/ambiguous_col-2-70509ccd2765d90b98666b6dff8afe1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-0-89cd75b0565e8d96910d5528db9984e7 b/sql/hive/src/test/resources/golden/archive-0-89cd75b0565e8d96910d5528db9984e7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-0-89cd75b0565e8d96910d5528db9984e7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-1-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/archive-1-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-1-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-10-f845008104fd12eb0f13f4b113f95cf1 b/sql/hive/src/test/resources/golden/archive-10-f845008104fd12eb0f13f4b113f95cf1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-11-27895cbe0ee6d24d7fc866314491e1bb b/sql/hive/src/test/resources/golden/archive-11-27895cbe0ee6d24d7fc866314491e1bb new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-11-27895cbe0ee6d24d7fc866314491e1bb @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-12-f07653bca86e1ecb614ffd0296790d05 b/sql/hive/src/test/resources/golden/archive-12-f07653bca86e1ecb614ffd0296790d05 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-13-27895cbe0ee6d24d7fc866314491e1bb b/sql/hive/src/test/resources/golden/archive-13-27895cbe0ee6d24d7fc866314491e1bb new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-13-27895cbe0ee6d24d7fc866314491e1bb @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-14-2cde1a2d3bfcec814985f498eba0fb8 b/sql/hive/src/test/resources/golden/archive-14-2cde1a2d3bfcec814985f498eba0fb8 new file mode 100644 index 0000000000000..21b3b13a81191 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-14-2cde1a2d3bfcec814985f498eba0fb8 @@ -0,0 +1 @@ +0 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-15-c9f39b388ae698e385e092d0ffeb3c73 b/sql/hive/src/test/resources/golden/archive-15-c9f39b388ae698e385e092d0ffeb3c73 new file mode 100644 index 0000000000000..5e5f6ff96623f --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-15-c9f39b388ae698e385e092d0ffeb3c73 @@ -0,0 +1,9 @@ +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-16-892147913578bcf60620b7dd73893dd0 b/sql/hive/src/test/resources/golden/archive-16-892147913578bcf60620b7dd73893dd0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-17-27895cbe0ee6d24d7fc866314491e1bb b/sql/hive/src/test/resources/golden/archive-17-27895cbe0ee6d24d7fc866314491e1bb new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-17-27895cbe0ee6d24d7fc866314491e1bb @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-18-8f980275ab3a5bcfc1784f4acd46447a b/sql/hive/src/test/resources/golden/archive-18-8f980275ab3a5bcfc1784f4acd46447a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-19-f8a52a8a40141409a667a9ba2cf9630f b/sql/hive/src/test/resources/golden/archive-19-f8a52a8a40141409a667a9ba2cf9630f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-2-713efc113418b01f76ffd589840193c8 b/sql/hive/src/test/resources/golden/archive-2-713efc113418b01f76ffd589840193c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-20-530277b0fee8b05c37b26846bceef827 b/sql/hive/src/test/resources/golden/archive-20-530277b0fee8b05c37b26846bceef827 new file mode 100644 index 0000000000000..69ca68f501ff1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-20-530277b0fee8b05c37b26846bceef827 @@ -0,0 +1,6 @@ +0 +0 +0 +10 +20 +30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-21-f07653bca86e1ecb614ffd0296790d05 b/sql/hive/src/test/resources/golden/archive-21-f07653bca86e1ecb614ffd0296790d05 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-22-530277b0fee8b05c37b26846bceef827 b/sql/hive/src/test/resources/golden/archive-22-530277b0fee8b05c37b26846bceef827 new file mode 100644 index 0000000000000..69ca68f501ff1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-22-530277b0fee8b05c37b26846bceef827 @@ -0,0 +1,6 @@ +0 +0 +0 +10 +20 +30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-23-892147913578bcf60620b7dd73893dd0 b/sql/hive/src/test/resources/golden/archive-23-892147913578bcf60620b7dd73893dd0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-24-530277b0fee8b05c37b26846bceef827 b/sql/hive/src/test/resources/golden/archive-24-530277b0fee8b05c37b26846bceef827 new file mode 100644 index 0000000000000..69ca68f501ff1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-24-530277b0fee8b05c37b26846bceef827 @@ -0,0 +1,6 @@ +0 +0 +0 +10 +20 +30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-25-56bea24ffa83d9b5932893a8ff1cb44f b/sql/hive/src/test/resources/golden/archive-25-56bea24ffa83d9b5932893a8ff1cb44f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-26-44fa61c2bd0fd9acfa0d889e59880d8a b/sql/hive/src/test/resources/golden/archive-26-44fa61c2bd0fd9acfa0d889e59880d8a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-27-9ae773ebe64a3d437a035e9d94f49e5 b/sql/hive/src/test/resources/golden/archive-27-9ae773ebe64a3d437a035e9d94f49e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-28-188eb7912265ed8dffa5200517bbe526 b/sql/hive/src/test/resources/golden/archive-28-188eb7912265ed8dffa5200517bbe526 new file mode 100644 index 0000000000000..18a1a7925ff29 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-28-188eb7912265ed8dffa5200517bbe526 @@ -0,0 +1 @@ +48656137 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-29-a0c6922e3a1dca51861c8a872dc8af19 b/sql/hive/src/test/resources/golden/archive-29-a0c6922e3a1dca51861c8a872dc8af19 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-3-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/archive-3-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-30-bea4ae5a0d219d544ea0b53bf29ecc7a b/sql/hive/src/test/resources/golden/archive-30-bea4ae5a0d219d544ea0b53bf29ecc7a new file mode 100644 index 0000000000000..18a1a7925ff29 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive-30-bea4ae5a0d219d544ea0b53bf29ecc7a @@ -0,0 +1 @@ +48656137 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive-31-cd46bc635e3010cf1b990a652a584a09 b/sql/hive/src/test/resources/golden/archive-31-cd46bc635e3010cf1b990a652a584a09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-32-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/archive-32-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-4-3e95421993ab28d18245ec2340f580a3 b/sql/hive/src/test/resources/golden/archive-4-3e95421993ab28d18245ec2340f580a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-5-c0c18ac884677231a41eea8d980d0451 b/sql/hive/src/test/resources/golden/archive-5-c0c18ac884677231a41eea8d980d0451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-6-528ab9750a558af7f1a43b3108e793dd b/sql/hive/src/test/resources/golden/archive-6-528ab9750a558af7f1a43b3108e793dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-7-e8d1d10c308a73eef78dde414a5e40ca b/sql/hive/src/test/resources/golden/archive-7-e8d1d10c308a73eef78dde414a5e40ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-8-af459a0264559a2aeaa1341ce779ab3c b/sql/hive/src/test/resources/golden/archive-8-af459a0264559a2aeaa1341ce779ab3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive-9-48b10f27e1459bb8e62d6c71484e2cf b/sql/hive/src/test/resources/golden/archive-9-48b10f27e1459bb8e62d6c71484e2cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-0-89cd75b0565e8d96910d5528db9984e7 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-0-89cd75b0565e8d96910d5528db9984e7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-0-89cd75b0565e8d96910d5528db9984e7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-1-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-1-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-1-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-10-f845008104fd12eb0f13f4b113f95cf1 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-10-f845008104fd12eb0f13f4b113f95cf1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-11-27895cbe0ee6d24d7fc866314491e1bb b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-11-27895cbe0ee6d24d7fc866314491e1bb new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-11-27895cbe0ee6d24d7fc866314491e1bb @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-12-f07653bca86e1ecb614ffd0296790d05 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-12-f07653bca86e1ecb614ffd0296790d05 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-13-27895cbe0ee6d24d7fc866314491e1bb b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-13-27895cbe0ee6d24d7fc866314491e1bb new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-13-27895cbe0ee6d24d7fc866314491e1bb @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-14-2cde1a2d3bfcec814985f498eba0fb8 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-14-2cde1a2d3bfcec814985f498eba0fb8 new file mode 100644 index 0000000000000..21b3b13a81191 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-14-2cde1a2d3bfcec814985f498eba0fb8 @@ -0,0 +1 @@ +0 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-15-c9f39b388ae698e385e092d0ffeb3c73 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-15-c9f39b388ae698e385e092d0ffeb3c73 new file mode 100644 index 0000000000000..5e5f6ff96623f --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-15-c9f39b388ae698e385e092d0ffeb3c73 @@ -0,0 +1,9 @@ +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-16-892147913578bcf60620b7dd73893dd0 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-16-892147913578bcf60620b7dd73893dd0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-17-27895cbe0ee6d24d7fc866314491e1bb b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-17-27895cbe0ee6d24d7fc866314491e1bb new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-17-27895cbe0ee6d24d7fc866314491e1bb @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-18-8f980275ab3a5bcfc1784f4acd46447a b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-18-8f980275ab3a5bcfc1784f4acd46447a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-19-f8a52a8a40141409a667a9ba2cf9630f b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-19-f8a52a8a40141409a667a9ba2cf9630f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-2-433a1b642df2cebe37927d6d89e0b301 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-2-433a1b642df2cebe37927d6d89e0b301 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-20-530277b0fee8b05c37b26846bceef827 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-20-530277b0fee8b05c37b26846bceef827 new file mode 100644 index 0000000000000..69ca68f501ff1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-20-530277b0fee8b05c37b26846bceef827 @@ -0,0 +1,6 @@ +0 +0 +0 +10 +20 +30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-21-f07653bca86e1ecb614ffd0296790d05 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-21-f07653bca86e1ecb614ffd0296790d05 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-22-530277b0fee8b05c37b26846bceef827 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-22-530277b0fee8b05c37b26846bceef827 new file mode 100644 index 0000000000000..69ca68f501ff1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-22-530277b0fee8b05c37b26846bceef827 @@ -0,0 +1,6 @@ +0 +0 +0 +10 +20 +30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-23-892147913578bcf60620b7dd73893dd0 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-23-892147913578bcf60620b7dd73893dd0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-24-530277b0fee8b05c37b26846bceef827 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-24-530277b0fee8b05c37b26846bceef827 new file mode 100644 index 0000000000000..69ca68f501ff1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-24-530277b0fee8b05c37b26846bceef827 @@ -0,0 +1,6 @@ +0 +0 +0 +10 +20 +30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-25-56bea24ffa83d9b5932893a8ff1cb44f b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-25-56bea24ffa83d9b5932893a8ff1cb44f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-26-44fa61c2bd0fd9acfa0d889e59880d8a b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-26-44fa61c2bd0fd9acfa0d889e59880d8a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-27-9ae773ebe64a3d437a035e9d94f49e5 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-27-9ae773ebe64a3d437a035e9d94f49e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-28-188eb7912265ed8dffa5200517bbe526 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-28-188eb7912265ed8dffa5200517bbe526 new file mode 100644 index 0000000000000..18a1a7925ff29 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-28-188eb7912265ed8dffa5200517bbe526 @@ -0,0 +1 @@ +48656137 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-29-a0c6922e3a1dca51861c8a872dc8af19 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-29-a0c6922e3a1dca51861c8a872dc8af19 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-3-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-3-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-30-bea4ae5a0d219d544ea0b53bf29ecc7a b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-30-bea4ae5a0d219d544ea0b53bf29ecc7a new file mode 100644 index 0000000000000..18a1a7925ff29 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-30-bea4ae5a0d219d544ea0b53bf29ecc7a @@ -0,0 +1 @@ +48656137 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-31-cd46bc635e3010cf1b990a652a584a09 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-31-cd46bc635e3010cf1b990a652a584a09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-32-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-32-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-4-3e95421993ab28d18245ec2340f580a3 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-4-3e95421993ab28d18245ec2340f580a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-5-c0c18ac884677231a41eea8d980d0451 b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-5-c0c18ac884677231a41eea8d980d0451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-6-528ab9750a558af7f1a43b3108e793dd b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-6-528ab9750a558af7f1a43b3108e793dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-7-e8d1d10c308a73eef78dde414a5e40ca b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-7-e8d1d10c308a73eef78dde414a5e40ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-8-af459a0264559a2aeaa1341ce779ab3c b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-8-af459a0264559a2aeaa1341ce779ab3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_excludeHadoop20-9-48b10f27e1459bb8e62d6c71484e2cf b/sql/hive/src/test/resources/golden/archive_excludeHadoop20-9-48b10f27e1459bb8e62d6c71484e2cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-0-89cd75b0565e8d96910d5528db9984e7 b/sql/hive/src/test/resources/golden/archive_multi-0-89cd75b0565e8d96910d5528db9984e7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_multi-0-89cd75b0565e8d96910d5528db9984e7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_multi-1-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/archive_multi-1-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_multi-1-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_multi-10-f845008104fd12eb0f13f4b113f95cf1 b/sql/hive/src/test/resources/golden/archive_multi-10-f845008104fd12eb0f13f4b113f95cf1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-11-cf5431cd843666b95ad2a82b334ac01e b/sql/hive/src/test/resources/golden/archive_multi-11-cf5431cd843666b95ad2a82b334ac01e new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_multi-11-cf5431cd843666b95ad2a82b334ac01e @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_multi-12-8419ad4ed6683ebd15f993f703975b31 b/sql/hive/src/test/resources/golden/archive_multi-12-8419ad4ed6683ebd15f993f703975b31 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-13-27895cbe0ee6d24d7fc866314491e1bb b/sql/hive/src/test/resources/golden/archive_multi-13-27895cbe0ee6d24d7fc866314491e1bb new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_multi-13-27895cbe0ee6d24d7fc866314491e1bb @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_multi-14-2cde1a2d3bfcec814985f498eba0fb8 b/sql/hive/src/test/resources/golden/archive_multi-14-2cde1a2d3bfcec814985f498eba0fb8 new file mode 100644 index 0000000000000..21b3b13a81191 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_multi-14-2cde1a2d3bfcec814985f498eba0fb8 @@ -0,0 +1 @@ +0 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_multi-15-c9f39b388ae698e385e092d0ffeb3c73 b/sql/hive/src/test/resources/golden/archive_multi-15-c9f39b388ae698e385e092d0ffeb3c73 new file mode 100644 index 0000000000000..5e5f6ff96623f --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_multi-15-c9f39b388ae698e385e092d0ffeb3c73 @@ -0,0 +1,9 @@ +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 +0 val_0 2008-04-08 12 0 val_0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_multi-16-ad80f33c39be583ad7ebf0c8f350d11d b/sql/hive/src/test/resources/golden/archive_multi-16-ad80f33c39be583ad7ebf0c8f350d11d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-17-27895cbe0ee6d24d7fc866314491e1bb b/sql/hive/src/test/resources/golden/archive_multi-17-27895cbe0ee6d24d7fc866314491e1bb new file mode 100644 index 0000000000000..5cd5fb9874d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/archive_multi-17-27895cbe0ee6d24d7fc866314491e1bb @@ -0,0 +1 @@ +48479881068 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/archive_multi-2-cd46bc635e3010cf1b990a652a584a09 b/sql/hive/src/test/resources/golden/archive_multi-2-cd46bc635e3010cf1b990a652a584a09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-3-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/archive_multi-3-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-4-3e95421993ab28d18245ec2340f580a3 b/sql/hive/src/test/resources/golden/archive_multi-4-3e95421993ab28d18245ec2340f580a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-5-c0c18ac884677231a41eea8d980d0451 b/sql/hive/src/test/resources/golden/archive_multi-5-c0c18ac884677231a41eea8d980d0451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-6-c06da7f8c1e98dc22e3171018e357f6a b/sql/hive/src/test/resources/golden/archive_multi-6-c06da7f8c1e98dc22e3171018e357f6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-7-e8d1d10c308a73eef78dde414a5e40ca b/sql/hive/src/test/resources/golden/archive_multi-7-e8d1d10c308a73eef78dde414a5e40ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-8-af459a0264559a2aeaa1341ce779ab3c b/sql/hive/src/test/resources/golden/archive_multi-8-af459a0264559a2aeaa1341ce779ab3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/archive_multi-9-48b10f27e1459bb8e62d6c71484e2cf b/sql/hive/src/test/resources/golden/archive_multi-9-48b10f27e1459bb8e62d6c71484e2cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/attr-0-24e06ffd262f2a5a6eec3314445d83ba b/sql/hive/src/test/resources/golden/attr-0-24e06ffd262f2a5a6eec3314445d83ba new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/attr-0-24e06ffd262f2a5a6eec3314445d83ba @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join0-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join0-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join0-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join0-1-383f34dec3ac939b7af2c9093a557641 b/sql/hive/src/test/resources/golden/auto_join0-1-383f34dec3ac939b7af2c9093a557641 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join0-2-7bd04899197b027d81c24e45a99ad15c b/sql/hive/src/test/resources/golden/auto_join0-2-7bd04899197b027d81c24e45a99ad15c new file mode 100644 index 0000000000000..308fc0924e670 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join0-2-7bd04899197b027d81c24e45a99ad15c @@ -0,0 +1 @@ +34298511120 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join1-0-443afb71720bad780b5dbfb6dbf4b51a b/sql/hive/src/test/resources/golden/auto_join1-0-443afb71720bad780b5dbfb6dbf4b51a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join1-0-443afb71720bad780b5dbfb6dbf4b51a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join1-1-f1293ebf768eb04f2f0bfe6297c4509e b/sql/hive/src/test/resources/golden/auto_join1-1-f1293ebf768eb04f2f0bfe6297c4509e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join1-2-8a9624554e208e3d8fbe42908c715b92 b/sql/hive/src/test/resources/golden/auto_join1-2-8a9624554e208e3d8fbe42908c715b92 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join1-3-f6046c5229e3b0aa21498a3872f43b2 b/sql/hive/src/test/resources/golden/auto_join1-3-f6046c5229e3b0aa21498a3872f43b2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join1-4-ae1247a065c41ce0329ca6078ab586e b/sql/hive/src/test/resources/golden/auto_join1-4-ae1247a065c41ce0329ca6078ab586e new file mode 100644 index 0000000000000..16f90efbe50f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join1-4-ae1247a065c41ce0329ca6078ab586e @@ -0,0 +1 @@ +101861029915 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join10-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join10-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join10-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join10-1-dc932cb87d4d1a90dc5733c544b6a3d0 b/sql/hive/src/test/resources/golden/auto_join10-1-dc932cb87d4d1a90dc5733c544b6a3d0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join10-2-eef4ee52e0783b15fb5fe17378806b13 b/sql/hive/src/test/resources/golden/auto_join10-2-eef4ee52e0783b15fb5fe17378806b13 new file mode 100644 index 0000000000000..16f90efbe50f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join10-2-eef4ee52e0783b15fb5fe17378806b13 @@ -0,0 +1 @@ +101861029915 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join11-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join11-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join11-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join11-1-82ea193ec76c2c6acd5f7178ef5ec417 b/sql/hive/src/test/resources/golden/auto_join11-1-82ea193ec76c2c6acd5f7178ef5ec417 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join11-2-5496e81f60ba1d8a95d8375589c71e05 b/sql/hive/src/test/resources/golden/auto_join11-2-5496e81f60ba1d8a95d8375589c71e05 new file mode 100644 index 0000000000000..69dbf8c3143e9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join11-2-5496e81f60ba1d8a95d8375589c71e05 @@ -0,0 +1 @@ +-101339664144 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join12-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join12-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join12-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join12-1-c2efec9ea2ba761603b723afc0d5d145 b/sql/hive/src/test/resources/golden/auto_join12-1-c2efec9ea2ba761603b723afc0d5d145 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join12-2-4df549c5f0b6bff0c843008fa35b1320 b/sql/hive/src/test/resources/golden/auto_join12-2-4df549c5f0b6bff0c843008fa35b1320 new file mode 100644 index 0000000000000..eff107c7ce6bc --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join12-2-4df549c5f0b6bff0c843008fa35b1320 @@ -0,0 +1 @@ +-136852761207 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join13-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join13-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join13-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join13-1-f5e043288a21ea691c74fef2e39a52b4 b/sql/hive/src/test/resources/golden/auto_join13-1-f5e043288a21ea691c74fef2e39a52b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join13-2-5ff417533a1243cd6fc556960fa170c9 b/sql/hive/src/test/resources/golden/auto_join13-2-5ff417533a1243cd6fc556960fa170c9 new file mode 100644 index 0000000000000..de6c015da2059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join13-2-5ff417533a1243cd6fc556960fa170c9 @@ -0,0 +1 @@ +-97676500536 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join14-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join14-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join14-1-c85f3dcbab496811604ea0ab84d0e995 b/sql/hive/src/test/resources/golden/auto_join14-1-c85f3dcbab496811604ea0ab84d0e995 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join14-2-9b141c1e5917ca82c6bc36a9a2950a1e b/sql/hive/src/test/resources/golden/auto_join14-2-9b141c1e5917ca82c6bc36a9a2950a1e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14-2-9b141c1e5917ca82c6bc36a9a2950a1e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join14-3-2b9ccaa793eae0e73bf76335d3d6880 b/sql/hive/src/test/resources/golden/auto_join14-3-2b9ccaa793eae0e73bf76335d3d6880 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14-3-2b9ccaa793eae0e73bf76335d3d6880 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join14-4-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/auto_join14-4-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14-4-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join14-5-2454f1ce2e8d0d03a30c479f7dcd8153 b/sql/hive/src/test/resources/golden/auto_join14-5-2454f1ce2e8d0d03a30c479f7dcd8153 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join14-6-de39302191b63d7aa8f92885b089fe2 b/sql/hive/src/test/resources/golden/auto_join14-6-de39302191b63d7aa8f92885b089fe2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join14-7-5b5ded1412301eae5f8f705a39e6832 b/sql/hive/src/test/resources/golden/auto_join14-7-5b5ded1412301eae5f8f705a39e6832 new file mode 100644 index 0000000000000..f1871a4957ddb --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14-7-5b5ded1412301eae5f8f705a39e6832 @@ -0,0 +1 @@ +404554174174 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join14_hadoop20-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join14_hadoop20-1-98b7542190092fafcc8b1ad5b0024a22 b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-1-98b7542190092fafcc8b1ad5b0024a22 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join14_hadoop20-2-db1cd54a4cb36de2087605f32e41824f b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-2-db1cd54a4cb36de2087605f32e41824f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-2-db1cd54a4cb36de2087605f32e41824f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join14_hadoop20-3-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-3-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-3-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join14_hadoop20-4-2454f1ce2e8d0d03a30c479f7dcd8153 b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-4-2454f1ce2e8d0d03a30c479f7dcd8153 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join14_hadoop20-5-de39302191b63d7aa8f92885b089fe2 b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-5-de39302191b63d7aa8f92885b089fe2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join14_hadoop20-6-5b5ded1412301eae5f8f705a39e6832 b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-6-5b5ded1412301eae5f8f705a39e6832 new file mode 100644 index 0000000000000..0f27a9bde401c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join14_hadoop20-6-5b5ded1412301eae5f8f705a39e6832 @@ -0,0 +1 @@ +404554174174 diff --git a/sql/hive/src/test/resources/golden/auto_join15-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join15-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join15-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join15-1-e23b9aa655061fb5a70d1f8f28f170f5 b/sql/hive/src/test/resources/golden/auto_join15-1-e23b9aa655061fb5a70d1f8f28f170f5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join15-2-7bf2df40dd30fb2f8c4af9a0d09e24f9 b/sql/hive/src/test/resources/golden/auto_join15-2-7bf2df40dd30fb2f8c4af9a0d09e24f9 new file mode 100644 index 0000000000000..006e1f82c0a47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join15-2-7bf2df40dd30fb2f8c4af9a0d09e24f9 @@ -0,0 +1 @@ +-793937029770 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join16-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join16-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join16-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join16-1-bba773956a3bad8d400fe4216a3fa8bf b/sql/hive/src/test/resources/golden/auto_join16-1-bba773956a3bad8d400fe4216a3fa8bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join16-2-66e56dcda38eb09819ac49e47e40d125 b/sql/hive/src/test/resources/golden/auto_join16-2-66e56dcda38eb09819ac49e47e40d125 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join16-2-66e56dcda38eb09819ac49e47e40d125 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join17-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join17-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join17-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join17-1-387dd86b1e13f788ec677a08dc162c97 b/sql/hive/src/test/resources/golden/auto_join17-1-387dd86b1e13f788ec677a08dc162c97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join17-2-c2fd9f9c4cc80f21ea8c10edaaf03808 b/sql/hive/src/test/resources/golden/auto_join17-2-c2fd9f9c4cc80f21ea8c10edaaf03808 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join17-3-478a9f270a5d70f6f82f81e6962fb251 b/sql/hive/src/test/resources/golden/auto_join17-3-478a9f270a5d70f6f82f81e6962fb251 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join17-4-11d706a64d44a8b0d41b290c4671c29c b/sql/hive/src/test/resources/golden/auto_join17-4-11d706a64d44a8b0d41b290c4671c29c new file mode 100644 index 0000000000000..006e1f82c0a47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join17-4-11d706a64d44a8b0d41b290c4671c29c @@ -0,0 +1 @@ +-793937029770 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join18-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join18-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join18-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join18-1-3839d176ee45fb0fc6702f4a7794ca1b b/sql/hive/src/test/resources/golden/auto_join18-1-3839d176ee45fb0fc6702f4a7794ca1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join18-2-f633ade9577c8b0e89d89124194c8d0f b/sql/hive/src/test/resources/golden/auto_join18-2-f633ade9577c8b0e89d89124194c8d0f new file mode 100644 index 0000000000000..0c9b518e65ece --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join18-2-f633ade9577c8b0e89d89124194c8d0f @@ -0,0 +1 @@ +2358131334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join19-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join19-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join19-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join19-1-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/auto_join19-1-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join19-2-70f3756d8b44d637ac4596cbbd48dc77 b/sql/hive/src/test/resources/golden/auto_join19-2-70f3756d8b44d637ac4596cbbd48dc77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join19-3-a3751c195480244a5ed497fd053cd433 b/sql/hive/src/test/resources/golden/auto_join19-3-a3751c195480244a5ed497fd053cd433 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join19-4-eaa70da463b92e85e1796277f016c18f b/sql/hive/src/test/resources/golden/auto_join19-4-eaa70da463b92e85e1796277f016c18f new file mode 100644 index 0000000000000..795166629df40 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join19-4-eaa70da463b92e85e1796277f016c18f @@ -0,0 +1 @@ +407444119660 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join2-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join2-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join2-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join2-1-3d1692c4710db1ff716d35e921f2bcca b/sql/hive/src/test/resources/golden/auto_join2-1-3d1692c4710db1ff716d35e921f2bcca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join2-2-15d7a6cb2e2f21077de2447c656e7a34 b/sql/hive/src/test/resources/golden/auto_join2-2-15d7a6cb2e2f21077de2447c656e7a34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join2-3-d4673c03d04084b838fcd8149f59ad9a b/sql/hive/src/test/resources/golden/auto_join2-3-d4673c03d04084b838fcd8149f59ad9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join2-4-9d8144612cb3132ad9f7c8fa93586185 b/sql/hive/src/test/resources/golden/auto_join2-4-9d8144612cb3132ad9f7c8fa93586185 new file mode 100644 index 0000000000000..1c958900f5013 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join2-4-9d8144612cb3132ad9f7c8fa93586185 @@ -0,0 +1 @@ +33815990627 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join20-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join20-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join20-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join20-1-2afb0510178c4b66876dd91c7ca441fd b/sql/hive/src/test/resources/golden/auto_join20-1-2afb0510178c4b66876dd91c7ca441fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join20-2-903ee25e327188edaaf2040fec5a8e52 b/sql/hive/src/test/resources/golden/auto_join20-2-903ee25e327188edaaf2040fec5a8e52 new file mode 100644 index 0000000000000..b1a6075f768c8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join20-2-903ee25e327188edaaf2040fec5a8e52 @@ -0,0 +1 @@ +-24276731469 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join20-3-cf1c52393ea3a7e21782a1c52b83f0ee b/sql/hive/src/test/resources/golden/auto_join20-3-cf1c52393ea3a7e21782a1c52b83f0ee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join20-4-e48e08d5b94719d56a58284eaef757f2 b/sql/hive/src/test/resources/golden/auto_join20-4-e48e08d5b94719d56a58284eaef757f2 new file mode 100644 index 0000000000000..b1a6075f768c8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join20-4-e48e08d5b94719d56a58284eaef757f2 @@ -0,0 +1 @@ +-24276731469 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join21-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join21-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join21-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join21-1-9dd59784ca1555b607df0137d2666fb8 b/sql/hive/src/test/resources/golden/auto_join21-1-9dd59784ca1555b607df0137d2666fb8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join21-2-3536b7d78713e86ee67f5f6c9b88958f b/sql/hive/src/test/resources/golden/auto_join21-2-3536b7d78713e86ee67f5f6c9b88958f new file mode 100644 index 0000000000000..9672e21fa0323 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join21-2-3536b7d78713e86ee67f5f6c9b88958f @@ -0,0 +1,500 @@ +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 2 val_2 +NULL NULL NULL NULL 4 val_4 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 8 val_8 +NULL NULL NULL NULL 9 val_9 +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join22-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join22-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join22-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join22-1-4044be0e5116357bd88b4eda0f9ccaa8 b/sql/hive/src/test/resources/golden/auto_join22-1-4044be0e5116357bd88b4eda0f9ccaa8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join22-2-a4abc288c20edee53ede45d248cf3abb b/sql/hive/src/test/resources/golden/auto_join22-2-a4abc288c20edee53ede45d248cf3abb new file mode 100644 index 0000000000000..dba3bca53f72d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join22-2-a4abc288c20edee53ede45d248cf3abb @@ -0,0 +1 @@ +344337359100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join23-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join23-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join23-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join23-1-b31437533a2b890788938455cb32f679 b/sql/hive/src/test/resources/golden/auto_join23-1-b31437533a2b890788938455cb32f679 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join23-2-6d2c5b58222f31658a0cf957e093a150 b/sql/hive/src/test/resources/golden/auto_join23-2-6d2c5b58222f31658a0cf957e093a150 new file mode 100644 index 0000000000000..5707ed08e7e54 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join23-2-6d2c5b58222f31658a0cf957e093a150 @@ -0,0 +1,100 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 2 val_2 +0 val_0 2 val_2 +0 val_0 2 val_2 +0 val_0 4 val_4 +0 val_0 4 val_4 +0 val_0 4 val_4 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 8 val_8 +0 val_0 8 val_8 +0 val_0 8 val_8 +0 val_0 9 val_9 +0 val_0 9 val_9 +0 val_0 9 val_9 +2 val_2 0 val_0 +2 val_2 0 val_0 +2 val_2 0 val_0 +2 val_2 2 val_2 +2 val_2 4 val_4 +2 val_2 5 val_5 +2 val_2 5 val_5 +2 val_2 5 val_5 +2 val_2 8 val_8 +2 val_2 9 val_9 +4 val_4 0 val_0 +4 val_4 0 val_0 +4 val_4 0 val_0 +4 val_4 2 val_2 +4 val_4 4 val_4 +4 val_4 5 val_5 +4 val_4 5 val_5 +4 val_4 5 val_5 +4 val_4 8 val_8 +4 val_4 9 val_9 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 2 val_2 +5 val_5 2 val_2 +5 val_5 2 val_2 +5 val_5 4 val_4 +5 val_5 4 val_4 +5 val_5 4 val_4 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 8 val_8 +5 val_5 8 val_8 +5 val_5 8 val_8 +5 val_5 9 val_9 +5 val_5 9 val_9 +5 val_5 9 val_9 +8 val_8 0 val_0 +8 val_8 0 val_0 +8 val_8 0 val_0 +8 val_8 2 val_2 +8 val_8 4 val_4 +8 val_8 5 val_5 +8 val_8 5 val_5 +8 val_8 5 val_5 +8 val_8 8 val_8 +8 val_8 9 val_9 +9 val_9 0 val_0 +9 val_9 0 val_0 +9 val_9 0 val_0 +9 val_9 2 val_2 +9 val_9 4 val_4 +9 val_9 5 val_5 +9 val_9 5 val_5 +9 val_9 5 val_5 +9 val_9 8 val_8 +9 val_9 9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join24-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join24-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join24-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join24-1-721dfa03bfea05e55506c571b6c3585b b/sql/hive/src/test/resources/golden/auto_join24-1-721dfa03bfea05e55506c571b6c3585b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join24-2-36de83b0ed6c9fdc03661b2f65b23a3d b/sql/hive/src/test/resources/golden/auto_join24-2-36de83b0ed6c9fdc03661b2f65b23a3d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join24-3-fa8b2736440ff35687dadb1bcae32666 b/sql/hive/src/test/resources/golden/auto_join24-3-fa8b2736440ff35687dadb1bcae32666 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join24-4-d79325ef6494aa87843fdfd78de7c812 b/sql/hive/src/test/resources/golden/auto_join24-4-d79325ef6494aa87843fdfd78de7c812 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join24-4-d79325ef6494aa87843fdfd78de7c812 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join25-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join25-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join25-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join25-1-a0fc12fc2b968d7e85e6c1e2fd70cd94 b/sql/hive/src/test/resources/golden/auto_join25-1-a0fc12fc2b968d7e85e6c1e2fd70cd94 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join25-1-a0fc12fc2b968d7e85e6c1e2fd70cd94 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join25-10-f1293ebf768eb04f2f0bfe6297c4509e b/sql/hive/src/test/resources/golden/auto_join25-10-f1293ebf768eb04f2f0bfe6297c4509e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join25-11-f6046c5229e3b0aa21498a3872f43b2 b/sql/hive/src/test/resources/golden/auto_join25-11-f6046c5229e3b0aa21498a3872f43b2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join25-12-ae1247a065c41ce0329ca6078ab586e b/sql/hive/src/test/resources/golden/auto_join25-12-ae1247a065c41ce0329ca6078ab586e new file mode 100644 index 0000000000000..d14fbdc94256c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join25-12-ae1247a065c41ce0329ca6078ab586e @@ -0,0 +1 @@ +101861029915 diff --git a/sql/hive/src/test/resources/golden/auto_join25-2-8180638a57b64557e02815c863031755 b/sql/hive/src/test/resources/golden/auto_join25-2-8180638a57b64557e02815c863031755 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join25-2-8180638a57b64557e02815c863031755 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join25-3-9aa914a687f1f63faf48eb500627855e b/sql/hive/src/test/resources/golden/auto_join25-3-9aa914a687f1f63faf48eb500627855e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join25-3-9aa914a687f1f63faf48eb500627855e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join25-4-d83e6df8cd60d8ebeebd2100c51002d9 b/sql/hive/src/test/resources/golden/auto_join25-4-d83e6df8cd60d8ebeebd2100c51002d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join25-5-a3751c195480244a5ed497fd053cd433 b/sql/hive/src/test/resources/golden/auto_join25-5-a3751c195480244a5ed497fd053cd433 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join25-6-eaa70da463b92e85e1796277f016c18f b/sql/hive/src/test/resources/golden/auto_join25-6-eaa70da463b92e85e1796277f016c18f new file mode 100644 index 0000000000000..069b64b649977 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join25-6-eaa70da463b92e85e1796277f016c18f @@ -0,0 +1 @@ +407444119660 diff --git a/sql/hive/src/test/resources/golden/auto_join25-7-3d1692c4710db1ff716d35e921f2bcca b/sql/hive/src/test/resources/golden/auto_join25-7-3d1692c4710db1ff716d35e921f2bcca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join25-8-d4673c03d04084b838fcd8149f59ad9a b/sql/hive/src/test/resources/golden/auto_join25-8-d4673c03d04084b838fcd8149f59ad9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join25-9-9d8144612cb3132ad9f7c8fa93586185 b/sql/hive/src/test/resources/golden/auto_join25-9-9d8144612cb3132ad9f7c8fa93586185 new file mode 100644 index 0000000000000..b8f473bf53aa3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join25-9-9d8144612cb3132ad9f7c8fa93586185 @@ -0,0 +1 @@ +33815990627 diff --git a/sql/hive/src/test/resources/golden/auto_join26-0-54a7280ab9eed0d2e3b33df35a721b66 b/sql/hive/src/test/resources/golden/auto_join26-0-54a7280ab9eed0d2e3b33df35a721b66 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join26-1-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join26-1-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join26-1-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join26-2-5ebef1af539734d0335dbe6aacae3e13 b/sql/hive/src/test/resources/golden/auto_join26-2-5ebef1af539734d0335dbe6aacae3e13 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join26-3-fed383a65bd118b43de6b00be10fecb6 b/sql/hive/src/test/resources/golden/auto_join26-3-fed383a65bd118b43de6b00be10fecb6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join26-4-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/auto_join26-4-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..71094ee7360db --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join26-4-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,15 @@ +66 1 +98 2 +128 3 +146 2 +150 1 +213 2 +224 2 +238 2 +255 2 +273 3 +278 2 +311 3 +369 3 +401 5 +406 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join27-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join27-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join27-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join27-1-c83f56f364b1da3def90d48953665fe5 b/sql/hive/src/test/resources/golden/auto_join27-1-c83f56f364b1da3def90d48953665fe5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join27-2-fceaa1ebd63334061d2d8daf961e935e b/sql/hive/src/test/resources/golden/auto_join27-2-fceaa1ebd63334061d2d8daf961e935e new file mode 100644 index 0000000000000..dd35c6b71fc80 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join27-2-fceaa1ebd63334061d2d8daf961e935e @@ -0,0 +1 @@ +548 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join28-0-10a2c01dccc8980fe6aff1f9dd65042c b/sql/hive/src/test/resources/golden/auto_join28-0-10a2c01dccc8980fe6aff1f9dd65042c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join28-0-10a2c01dccc8980fe6aff1f9dd65042c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join28-1-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join28-1-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join28-1-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join28-2-9dd59784ca1555b607df0137d2666fb8 b/sql/hive/src/test/resources/golden/auto_join28-2-9dd59784ca1555b607df0137d2666fb8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join28-3-30739ff22c62b3becf56694642b7ae81 b/sql/hive/src/test/resources/golden/auto_join28-3-30739ff22c62b3becf56694642b7ae81 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join28-4-c178253e7ce91b5aa35c2cc424bfa27 b/sql/hive/src/test/resources/golden/auto_join28-4-c178253e7ce91b5aa35c2cc424bfa27 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join28-5-142850e84341feb3f7f40dd4553f72e b/sql/hive/src/test/resources/golden/auto_join28-5-142850e84341feb3f7f40dd4553f72e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join3-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join3-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join3-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join3-1-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/auto_join3-1-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join3-2-6bed7d8089695e23914b29edaab2537d b/sql/hive/src/test/resources/golden/auto_join3-2-6bed7d8089695e23914b29edaab2537d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join3-3-e9f6d17b15064f953a588fb40aee2f90 b/sql/hive/src/test/resources/golden/auto_join3-3-e9f6d17b15064f953a588fb40aee2f90 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join3-4-eaa70da463b92e85e1796277f016c18f b/sql/hive/src/test/resources/golden/auto_join3-4-eaa70da463b92e85e1796277f016c18f new file mode 100644 index 0000000000000..1434bb76ee93f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join3-4-eaa70da463b92e85e1796277f016c18f @@ -0,0 +1 @@ +344360994461 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join30-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-1-8cef272a7680529de5c6bd227a83cbc0 b/sql/hive/src/test/resources/golden/auto_join30-1-8cef272a7680529de5c6bd227a83cbc0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join30-10-820f36ed1bdf14c1deb383f508a5ed7a b/sql/hive/src/test/resources/golden/auto_join30-10-820f36ed1bdf14c1deb383f508a5ed7a new file mode 100644 index 0000000000000..1434bb76ee93f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-10-820f36ed1bdf14c1deb383f508a5ed7a @@ -0,0 +1 @@ +344360994461 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-11-53e43f2e48f605ec92c8a18c53e80620 b/sql/hive/src/test/resources/golden/auto_join30-11-53e43f2e48f605ec92c8a18c53e80620 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join30-12-de6e26f52f6f9ea5ef9a4868e57d36d b/sql/hive/src/test/resources/golden/auto_join30-12-de6e26f52f6f9ea5ef9a4868e57d36d new file mode 100644 index 0000000000000..1434bb76ee93f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-12-de6e26f52f6f9ea5ef9a4868e57d36d @@ -0,0 +1 @@ +344360994461 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-13-9ee597656aa92e48475d6542339915ba b/sql/hive/src/test/resources/golden/auto_join30-13-9ee597656aa92e48475d6542339915ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join30-14-7a248488c218919ab50e072fdbdecb73 b/sql/hive/src/test/resources/golden/auto_join30-14-7a248488c218919ab50e072fdbdecb73 new file mode 100644 index 0000000000000..1434bb76ee93f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-14-7a248488c218919ab50e072fdbdecb73 @@ -0,0 +1 @@ +344360994461 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-15-47b7efabbd6046e2befcbbea7da62553 b/sql/hive/src/test/resources/golden/auto_join30-15-47b7efabbd6046e2befcbbea7da62553 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join30-16-f4f5bc179d84baf57e14cd2f8bd39436 b/sql/hive/src/test/resources/golden/auto_join30-16-f4f5bc179d84baf57e14cd2f8bd39436 new file mode 100644 index 0000000000000..1434bb76ee93f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-16-f4f5bc179d84baf57e14cd2f8bd39436 @@ -0,0 +1 @@ +344360994461 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-2-bc472f95600f47d5ea60fdeddc59dbc7 b/sql/hive/src/test/resources/golden/auto_join30-2-bc472f95600f47d5ea60fdeddc59dbc7 new file mode 100644 index 0000000000000..16f90efbe50f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-2-bc472f95600f47d5ea60fdeddc59dbc7 @@ -0,0 +1 @@ +101861029915 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-3-57e5f7c770abbe1de38cbbcd5fd332a2 b/sql/hive/src/test/resources/golden/auto_join30-3-57e5f7c770abbe1de38cbbcd5fd332a2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join30-4-f5083eca9c3df277988d8b345b8d43 b/sql/hive/src/test/resources/golden/auto_join30-4-f5083eca9c3df277988d8b345b8d43 new file mode 100644 index 0000000000000..16f90efbe50f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-4-f5083eca9c3df277988d8b345b8d43 @@ -0,0 +1 @@ +101861029915 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-5-3916f4b640f3579035153f6940113ef2 b/sql/hive/src/test/resources/golden/auto_join30-5-3916f4b640f3579035153f6940113ef2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join30-6-4a9144326fc7d066c9aadb13d1b95031 b/sql/hive/src/test/resources/golden/auto_join30-6-4a9144326fc7d066c9aadb13d1b95031 new file mode 100644 index 0000000000000..16f90efbe50f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-6-4a9144326fc7d066c9aadb13d1b95031 @@ -0,0 +1 @@ +101861029915 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-7-f07b674c31ca9fdf837406cb9a96108e b/sql/hive/src/test/resources/golden/auto_join30-7-f07b674c31ca9fdf837406cb9a96108e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join30-8-8a27209399df7f9c4d15988b11753a61 b/sql/hive/src/test/resources/golden/auto_join30-8-8a27209399df7f9c4d15988b11753a61 new file mode 100644 index 0000000000000..1434bb76ee93f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join30-8-8a27209399df7f9c4d15988b11753a61 @@ -0,0 +1 @@ +344360994461 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join30-9-4ee48fa9bfeb818c81768b6de0517263 b/sql/hive/src/test/resources/golden/auto_join30-9-4ee48fa9bfeb818c81768b6de0517263 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join31-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join31-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join31-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join31-1-5a2b4475d9a88e53a2b6ec29279253c0 b/sql/hive/src/test/resources/golden/auto_join31-1-5a2b4475d9a88e53a2b6ec29279253c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join31-2-a64aa9cb44edc6b85ed945fb13ca9c2 b/sql/hive/src/test/resources/golden/auto_join31-2-a64aa9cb44edc6b85ed945fb13ca9c2 new file mode 100644 index 0000000000000..1434bb76ee93f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join31-2-a64aa9cb44edc6b85ed945fb13ca9c2 @@ -0,0 +1 @@ +344360994461 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join32-0-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_join32-0-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join32-0-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join32-1-2e533cf988f613d5fc3fbde67ffd9118 b/sql/hive/src/test/resources/golden/auto_join32-1-2e533cf988f613d5fc3fbde67ffd9118 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-10-2e8ccb343bce61564bae209a589cca85 b/sql/hive/src/test/resources/golden/auto_join32-10-2e8ccb343bce61564bae209a589cca85 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-11-4d6fc319375b6962eca0aa63dfabfdc1 b/sql/hive/src/test/resources/golden/auto_join32-11-4d6fc319375b6962eca0aa63dfabfdc1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-12-a8b69002151b3df4383d2c354dbaa7d4 b/sql/hive/src/test/resources/golden/auto_join32-12-a8b69002151b3df4383d2c354dbaa7d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-13-63241e3791725baad8baa00fb833ef5e b/sql/hive/src/test/resources/golden/auto_join32-13-63241e3791725baad8baa00fb833ef5e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-14-b754b2485c6a8d0caa5e65b1c63bbd0f b/sql/hive/src/test/resources/golden/auto_join32-14-b754b2485c6a8d0caa5e65b1c63bbd0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-15-187fd938996ae7d96e60475fb69b8d35 b/sql/hive/src/test/resources/golden/auto_join32-15-187fd938996ae7d96e60475fb69b8d35 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-16-2e8ccb343bce61564bae209a589cca85 b/sql/hive/src/test/resources/golden/auto_join32-16-2e8ccb343bce61564bae209a589cca85 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-17-4d6fc319375b6962eca0aa63dfabfdc1 b/sql/hive/src/test/resources/golden/auto_join32-17-4d6fc319375b6962eca0aa63dfabfdc1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-18-d1d78b19d484e55d9da8a320253ece0f b/sql/hive/src/test/resources/golden/auto_join32-18-d1d78b19d484e55d9da8a320253ece0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-19-83b9df41bc46afbbafd0cd30cb982332 b/sql/hive/src/test/resources/golden/auto_join32-19-83b9df41bc46afbbafd0cd30cb982332 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-2-865207407ff1acbccb47473d87e87e8d b/sql/hive/src/test/resources/golden/auto_join32-2-865207407ff1acbccb47473d87e87e8d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-20-e67740fb52998f1d3afcfa667505cf7 b/sql/hive/src/test/resources/golden/auto_join32-20-e67740fb52998f1d3afcfa667505cf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-21-da5b4647f5605dff66aa47e059f9ec8b b/sql/hive/src/test/resources/golden/auto_join32-21-da5b4647f5605dff66aa47e059f9ec8b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-22-a1d339a0d904c3f35771192a026c7f9c b/sql/hive/src/test/resources/golden/auto_join32-22-a1d339a0d904c3f35771192a026c7f9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-23-1948951cc3c06cdf962d59e932a84588 b/sql/hive/src/test/resources/golden/auto_join32-23-1948951cc3c06cdf962d59e932a84588 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-24-cda0994eb851b57fdb80e16b033d1b73 b/sql/hive/src/test/resources/golden/auto_join32-24-cda0994eb851b57fdb80e16b033d1b73 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-25-e46226186de575c81cfab296607e1b4b b/sql/hive/src/test/resources/golden/auto_join32-25-e46226186de575c81cfab296607e1b4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-26-97d265cd7defca44e488c38bac4c5b7a b/sql/hive/src/test/resources/golden/auto_join32-26-97d265cd7defca44e488c38bac4c5b7a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-27-b034eeb850810b5004ddff1f2a530bc b/sql/hive/src/test/resources/golden/auto_join32-27-b034eeb850810b5004ddff1f2a530bc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-28-751550ac0550e6a7dd737cad01d6d82 b/sql/hive/src/test/resources/golden/auto_join32-28-751550ac0550e6a7dd737cad01d6d82 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-29-34ecfdabf9c769027706f53fa2d66ed3 b/sql/hive/src/test/resources/golden/auto_join32-29-34ecfdabf9c769027706f53fa2d66ed3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-3-9ccdfe4052062a1dfc72c711179d9e43 b/sql/hive/src/test/resources/golden/auto_join32-3-9ccdfe4052062a1dfc72c711179d9e43 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-30-d3903985844b06c4af11334b72f383d1 b/sql/hive/src/test/resources/golden/auto_join32-30-d3903985844b06c4af11334b72f383d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-31-2415fd7a0c2e37b09679bb4c64f321bd b/sql/hive/src/test/resources/golden/auto_join32-31-2415fd7a0c2e37b09679bb4c64f321bd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-4-a28f563122d1f0debd04f74c534523cf b/sql/hive/src/test/resources/golden/auto_join32-4-a28f563122d1f0debd04f74c534523cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-5-c23ea191ee4d60c0a6252ce763b1beed b/sql/hive/src/test/resources/golden/auto_join32-5-c23ea191ee4d60c0a6252ce763b1beed new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join32-5-c23ea191ee4d60c0a6252ce763b1beed @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join32-6-442e69416faaea9309bb8c2a3eb73ef b/sql/hive/src/test/resources/golden/auto_join32-6-442e69416faaea9309bb8c2a3eb73ef new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join32-6-442e69416faaea9309bb8c2a3eb73ef @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join32-7-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_join32-7-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join32-7-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join32-8-999683fa0291bf439b03557edec7dcee b/sql/hive/src/test/resources/golden/auto_join32-8-999683fa0291bf439b03557edec7dcee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join32-9-1e6d4ec86f29d74828891c17986e84a b/sql/hive/src/test/resources/golden/auto_join32-9-1e6d4ec86f29d74828891c17986e84a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join4-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join4-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join4-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join4-1-531e91e11b3891627c2675935fda14cd b/sql/hive/src/test/resources/golden/auto_join4-1-531e91e11b3891627c2675935fda14cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join4-2-4a36be16bcfa2bc35a8c33fb71ce2c7a b/sql/hive/src/test/resources/golden/auto_join4-2-4a36be16bcfa2bc35a8c33fb71ce2c7a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join4-3-dc967001beb776f3a859e9360823c361 b/sql/hive/src/test/resources/golden/auto_join4-3-dc967001beb776f3a859e9360823c361 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join4-4-998c3a307b074a6505bb7fcef276be04 b/sql/hive/src/test/resources/golden/auto_join4-4-998c3a307b074a6505bb7fcef276be04 new file mode 100644 index 0000000000000..f7d1e92d77207 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join4-4-998c3a307b074a6505bb7fcef276be04 @@ -0,0 +1 @@ +5079148035 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join5-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join5-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join5-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join5-1-531e91e11b3891627c2675935fda14cd b/sql/hive/src/test/resources/golden/auto_join5-1-531e91e11b3891627c2675935fda14cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join5-2-a13b6523395e55c551ad42d92f9dbcd6 b/sql/hive/src/test/resources/golden/auto_join5-2-a13b6523395e55c551ad42d92f9dbcd6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join5-3-b07bb1fdcd0eeeb62a8f7acb70cd2330 b/sql/hive/src/test/resources/golden/auto_join5-3-b07bb1fdcd0eeeb62a8f7acb70cd2330 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join5-4-998c3a307b074a6505bb7fcef276be04 b/sql/hive/src/test/resources/golden/auto_join5-4-998c3a307b074a6505bb7fcef276be04 new file mode 100644 index 0000000000000..e859b7c4ada7b --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join5-4-998c3a307b074a6505bb7fcef276be04 @@ -0,0 +1 @@ +9766083196 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join6-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join6-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join6-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join6-1-531e91e11b3891627c2675935fda14cd b/sql/hive/src/test/resources/golden/auto_join6-1-531e91e11b3891627c2675935fda14cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join6-2-46718fdfa123cc86fe288bff4185dc90 b/sql/hive/src/test/resources/golden/auto_join6-2-46718fdfa123cc86fe288bff4185dc90 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join6-3-bc6b6640b266ebe9b73702d3baf09c20 b/sql/hive/src/test/resources/golden/auto_join6-3-bc6b6640b266ebe9b73702d3baf09c20 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join6-4-998c3a307b074a6505bb7fcef276be04 b/sql/hive/src/test/resources/golden/auto_join6-4-998c3a307b074a6505bb7fcef276be04 new file mode 100644 index 0000000000000..f15ab2fb14eaa --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join6-4-998c3a307b074a6505bb7fcef276be04 @@ -0,0 +1 @@ +2607643291 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join7-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join7-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join7-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join7-1-8f82881057bec4abf5a4d770a6f35838 b/sql/hive/src/test/resources/golden/auto_join7-1-8f82881057bec4abf5a4d770a6f35838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join7-2-8a7f50dc7e382a11884f4e116041aa1e b/sql/hive/src/test/resources/golden/auto_join7-2-8a7f50dc7e382a11884f4e116041aa1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join7-3-56a30a1aa948bcf5ee54481897fc2208 b/sql/hive/src/test/resources/golden/auto_join7-3-56a30a1aa948bcf5ee54481897fc2208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join7-4-30d0c1a49784347fedbac21a69c3a899 b/sql/hive/src/test/resources/golden/auto_join7-4-30d0c1a49784347fedbac21a69c3a899 new file mode 100644 index 0000000000000..5f7f06c079d24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join7-4-30d0c1a49784347fedbac21a69c3a899 @@ -0,0 +1 @@ +-2315698213 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join8-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join8-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join8-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join8-1-531e91e11b3891627c2675935fda14cd b/sql/hive/src/test/resources/golden/auto_join8-1-531e91e11b3891627c2675935fda14cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join8-2-cdb9885fe05daa90c228cf5b6550eeab b/sql/hive/src/test/resources/golden/auto_join8-2-cdb9885fe05daa90c228cf5b6550eeab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join8-3-f1196bca86a749375da35f134206a8ca b/sql/hive/src/test/resources/golden/auto_join8-3-f1196bca86a749375da35f134206a8ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join8-4-998c3a307b074a6505bb7fcef276be04 b/sql/hive/src/test/resources/golden/auto_join8-4-998c3a307b074a6505bb7fcef276be04 new file mode 100644 index 0000000000000..d73e8745ecc00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join8-4-998c3a307b074a6505bb7fcef276be04 @@ -0,0 +1 @@ +-7158439905 diff --git a/sql/hive/src/test/resources/golden/auto_join9-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join9-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join9-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join9-1-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/auto_join9-1-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join9-2-62638666bf7f60c0d298547ea5e93ea7 b/sql/hive/src/test/resources/golden/auto_join9-2-62638666bf7f60c0d298547ea5e93ea7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join9-3-971c44e81ce17eb0849850b72ebd20f1 b/sql/hive/src/test/resources/golden/auto_join9-3-971c44e81ce17eb0849850b72ebd20f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join9-4-eaa70da463b92e85e1796277f016c18f b/sql/hive/src/test/resources/golden/auto_join9-4-eaa70da463b92e85e1796277f016c18f new file mode 100644 index 0000000000000..16f90efbe50f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join9-4-eaa70da463b92e85e1796277f016c18f @@ -0,0 +1 @@ +101861029915 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join_filters-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-1-5644ab44e5ba9f2941216b8d5dc33a99 b/sql/hive/src/test/resources/golden/auto_join_filters-1-5644ab44e5ba9f2941216b8d5dc33a99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-10-b420f24d33b26cdf6c35eb702789904e b/sql/hive/src/test/resources/golden/auto_join_filters-10-b420f24d33b26cdf6c35eb702789904e new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-10-b420f24d33b26cdf6c35eb702789904e @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-11-c06b548171893bae8def6bb348b70dc8 b/sql/hive/src/test/resources/golden/auto_join_filters-11-c06b548171893bae8def6bb348b70dc8 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-11-c06b548171893bae8def6bb348b70dc8 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-12-42a4901e05e9ee92abcfcef008efaa65 b/sql/hive/src/test/resources/golden/auto_join_filters-12-42a4901e05e9ee92abcfcef008efaa65 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-12-42a4901e05e9ee92abcfcef008efaa65 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-13-222c404c6265ed682579342113221e29 b/sql/hive/src/test/resources/golden/auto_join_filters-13-222c404c6265ed682579342113221e29 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-13-222c404c6265ed682579342113221e29 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-14-ecd2885156f56973960d064211ee42f0 b/sql/hive/src/test/resources/golden/auto_join_filters-14-ecd2885156f56973960d064211ee42f0 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-14-ecd2885156f56973960d064211ee42f0 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-15-11a471880f5e8fbad81e3869fe56ca4b b/sql/hive/src/test/resources/golden/auto_join_filters-15-11a471880f5e8fbad81e3869fe56ca4b new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-15-11a471880f5e8fbad81e3869fe56ca4b @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-16-f26ad8c3537dc391ab1ca6a95470f75e b/sql/hive/src/test/resources/golden/auto_join_filters-16-f26ad8c3537dc391ab1ca6a95470f75e new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-16-f26ad8c3537dc391ab1ca6a95470f75e @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-17-8e085f9886e5ee97334512f84bd7ab54 b/sql/hive/src/test/resources/golden/auto_join_filters-17-8e085f9886e5ee97334512f84bd7ab54 new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-17-8e085f9886e5ee97334512f84bd7ab54 @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-18-d9438071b3c731dc3f6e3b7248a1042a b/sql/hive/src/test/resources/golden/auto_join_filters-18-d9438071b3c731dc3f6e3b7248a1042a new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-18-d9438071b3c731dc3f6e3b7248a1042a @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-19-58355bd5c4b12e15cf1d3e2d8b308c9d b/sql/hive/src/test/resources/golden/auto_join_filters-19-58355bd5c4b12e15cf1d3e2d8b308c9d new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-19-58355bd5c4b12e15cf1d3e2d8b308c9d @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-2-100faa7fd01bfb4390c782bb262a9403 b/sql/hive/src/test/resources/golden/auto_join_filters-2-100faa7fd01bfb4390c782bb262a9403 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-20-486a302359aecff37a4567480264bd62 b/sql/hive/src/test/resources/golden/auto_join_filters-20-486a302359aecff37a4567480264bd62 new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-20-486a302359aecff37a4567480264bd62 @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-21-8018df5b9572e89304b449e618fdbbf b/sql/hive/src/test/resources/golden/auto_join_filters-21-8018df5b9572e89304b449e618fdbbf new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-21-8018df5b9572e89304b449e618fdbbf @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-22-f9a7bff2b42a03d21d8d3190d2702451 b/sql/hive/src/test/resources/golden/auto_join_filters-22-f9a7bff2b42a03d21d8d3190d2702451 new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-22-f9a7bff2b42a03d21d8d3190d2702451 @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-23-2b5149e29c224a47af98ca10bc5c23b3 b/sql/hive/src/test/resources/golden/auto_join_filters-23-2b5149e29c224a47af98ca10bc5c23b3 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-23-2b5149e29c224a47af98ca10bc5c23b3 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-24-a2161a58f512b8bdd836b48cd8e16668 b/sql/hive/src/test/resources/golden/auto_join_filters-24-a2161a58f512b8bdd836b48cd8e16668 new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-24-a2161a58f512b8bdd836b48cd8e16668 @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-25-1b3177a066ba352539fd5473fbeda1a9 b/sql/hive/src/test/resources/golden/auto_join_filters-25-1b3177a066ba352539fd5473fbeda1a9 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-25-1b3177a066ba352539fd5473fbeda1a9 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-26-ecfb8fe4bf85a05f321754d8ea8cbabd b/sql/hive/src/test/resources/golden/auto_join_filters-26-ecfb8fe4bf85a05f321754d8ea8cbabd new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-26-ecfb8fe4bf85a05f321754d8ea8cbabd @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-27-ca73726ffaa5826a3db039cda440e6d9 b/sql/hive/src/test/resources/golden/auto_join_filters-27-ca73726ffaa5826a3db039cda440e6d9 new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-27-ca73726ffaa5826a3db039cda440e6d9 @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-28-c21c2acf7f276c0a26f0c19e3234506 b/sql/hive/src/test/resources/golden/auto_join_filters-28-c21c2acf7f276c0a26f0c19e3234506 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-28-c21c2acf7f276c0a26f0c19e3234506 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-29-6d8955591f62d9cfc6af17df63d3d88e b/sql/hive/src/test/resources/golden/auto_join_filters-29-6d8955591f62d9cfc6af17df63d3d88e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-3-64615cc6839c697c8c028ef8bb1ac40e b/sql/hive/src/test/resources/golden/auto_join_filters-3-64615cc6839c697c8c028ef8bb1ac40e new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-3-64615cc6839c697c8c028ef8bb1ac40e @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-30-23ab7ac8229a53d391195be7ca092429 b/sql/hive/src/test/resources/golden/auto_join_filters-30-23ab7ac8229a53d391195be7ca092429 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-31-aa161b0d9fe9d1aad10654fce0e3670b b/sql/hive/src/test/resources/golden/auto_join_filters-31-aa161b0d9fe9d1aad10654fce0e3670b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-32-3c52df82c7d78501610f3f898103f753 b/sql/hive/src/test/resources/golden/auto_join_filters-32-3c52df82c7d78501610f3f898103f753 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-33-1d85bb008e02ef4025171a4bc0866a6c b/sql/hive/src/test/resources/golden/auto_join_filters-33-1d85bb008e02ef4025171a4bc0866a6c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-34-e79c906b894fed049ddfab4496a4e3 b/sql/hive/src/test/resources/golden/auto_join_filters-34-e79c906b894fed049ddfab4496a4e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-35-3e6612a89e9124592e790594775054b1 b/sql/hive/src/test/resources/golden/auto_join_filters-35-3e6612a89e9124592e790594775054b1 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-35-3e6612a89e9124592e790594775054b1 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-36-60a5f56f33fc8854a2b687005f0d96ac b/sql/hive/src/test/resources/golden/auto_join_filters-36-60a5f56f33fc8854a2b687005f0d96ac new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-36-60a5f56f33fc8854a2b687005f0d96ac @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-37-64cabe5164130a94f387288f37b62d71 b/sql/hive/src/test/resources/golden/auto_join_filters-37-64cabe5164130a94f387288f37b62d71 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-37-64cabe5164130a94f387288f37b62d71 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-38-65c867e66bc773470f1487487086a180 b/sql/hive/src/test/resources/golden/auto_join_filters-38-65c867e66bc773470f1487487086a180 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-38-65c867e66bc773470f1487487086a180 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-39-cc0cf9ff9ccbc44536b3187b27aa1ada b/sql/hive/src/test/resources/golden/auto_join_filters-39-cc0cf9ff9ccbc44536b3187b27aa1ada new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-39-cc0cf9ff9ccbc44536b3187b27aa1ada @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-4-7df3e2e761c272ddb3654e4dd86bd131 b/sql/hive/src/test/resources/golden/auto_join_filters-4-7df3e2e761c272ddb3654e4dd86bd131 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-4-7df3e2e761c272ddb3654e4dd86bd131 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-40-4dfa64337f711dc394a289adeac8666 b/sql/hive/src/test/resources/golden/auto_join_filters-40-4dfa64337f711dc394a289adeac8666 new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-40-4dfa64337f711dc394a289adeac8666 @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-41-a905633bccd782f14115643b2d707b13 b/sql/hive/src/test/resources/golden/auto_join_filters-41-a905633bccd782f14115643b2d707b13 new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-41-a905633bccd782f14115643b2d707b13 @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-42-ae4cc72ddbbbd748179e0abcc985726 b/sql/hive/src/test/resources/golden/auto_join_filters-42-ae4cc72ddbbbd748179e0abcc985726 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-42-ae4cc72ddbbbd748179e0abcc985726 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-43-f64cec45b154c4ba5172afcdff623a2b b/sql/hive/src/test/resources/golden/auto_join_filters-43-f64cec45b154c4ba5172afcdff623a2b new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-43-f64cec45b154c4ba5172afcdff623a2b @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-44-c552dcc9b931dff05cf8c0d712e22841 b/sql/hive/src/test/resources/golden/auto_join_filters-44-c552dcc9b931dff05cf8c0d712e22841 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-44-c552dcc9b931dff05cf8c0d712e22841 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-45-b420f24d33b26cdf6c35eb702789904e b/sql/hive/src/test/resources/golden/auto_join_filters-45-b420f24d33b26cdf6c35eb702789904e new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-45-b420f24d33b26cdf6c35eb702789904e @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-46-c06b548171893bae8def6bb348b70dc8 b/sql/hive/src/test/resources/golden/auto_join_filters-46-c06b548171893bae8def6bb348b70dc8 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-46-c06b548171893bae8def6bb348b70dc8 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-47-42a4901e05e9ee92abcfcef008efaa65 b/sql/hive/src/test/resources/golden/auto_join_filters-47-42a4901e05e9ee92abcfcef008efaa65 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-47-42a4901e05e9ee92abcfcef008efaa65 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-48-222c404c6265ed682579342113221e29 b/sql/hive/src/test/resources/golden/auto_join_filters-48-222c404c6265ed682579342113221e29 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-48-222c404c6265ed682579342113221e29 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-49-ecd2885156f56973960d064211ee42f0 b/sql/hive/src/test/resources/golden/auto_join_filters-49-ecd2885156f56973960d064211ee42f0 new file mode 100644 index 0000000000000..6c578b689ebc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-49-ecd2885156f56973960d064211ee42f0 @@ -0,0 +1 @@ +4937935 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-5-87cf8865e2c35b680bba159b88b074bc b/sql/hive/src/test/resources/golden/auto_join_filters-5-87cf8865e2c35b680bba159b88b074bc new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-5-87cf8865e2c35b680bba159b88b074bc @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-50-11a471880f5e8fbad81e3869fe56ca4b b/sql/hive/src/test/resources/golden/auto_join_filters-50-11a471880f5e8fbad81e3869fe56ca4b new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-50-11a471880f5e8fbad81e3869fe56ca4b @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-51-f26ad8c3537dc391ab1ca6a95470f75e b/sql/hive/src/test/resources/golden/auto_join_filters-51-f26ad8c3537dc391ab1ca6a95470f75e new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-51-f26ad8c3537dc391ab1ca6a95470f75e @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-52-8e085f9886e5ee97334512f84bd7ab54 b/sql/hive/src/test/resources/golden/auto_join_filters-52-8e085f9886e5ee97334512f84bd7ab54 new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-52-8e085f9886e5ee97334512f84bd7ab54 @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-53-d9438071b3c731dc3f6e3b7248a1042a b/sql/hive/src/test/resources/golden/auto_join_filters-53-d9438071b3c731dc3f6e3b7248a1042a new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-53-d9438071b3c731dc3f6e3b7248a1042a @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-54-58355bd5c4b12e15cf1d3e2d8b308c9d b/sql/hive/src/test/resources/golden/auto_join_filters-54-58355bd5c4b12e15cf1d3e2d8b308c9d new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-54-58355bd5c4b12e15cf1d3e2d8b308c9d @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-55-486a302359aecff37a4567480264bd62 b/sql/hive/src/test/resources/golden/auto_join_filters-55-486a302359aecff37a4567480264bd62 new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-55-486a302359aecff37a4567480264bd62 @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-56-8018df5b9572e89304b449e618fdbbf b/sql/hive/src/test/resources/golden/auto_join_filters-56-8018df5b9572e89304b449e618fdbbf new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-56-8018df5b9572e89304b449e618fdbbf @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-57-f9a7bff2b42a03d21d8d3190d2702451 b/sql/hive/src/test/resources/golden/auto_join_filters-57-f9a7bff2b42a03d21d8d3190d2702451 new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-57-f9a7bff2b42a03d21d8d3190d2702451 @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-58-2b5149e29c224a47af98ca10bc5c23b3 b/sql/hive/src/test/resources/golden/auto_join_filters-58-2b5149e29c224a47af98ca10bc5c23b3 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-58-2b5149e29c224a47af98ca10bc5c23b3 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-59-a2161a58f512b8bdd836b48cd8e16668 b/sql/hive/src/test/resources/golden/auto_join_filters-59-a2161a58f512b8bdd836b48cd8e16668 new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-59-a2161a58f512b8bdd836b48cd8e16668 @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-6-9362466c777fff7e677dd8da072f8744 b/sql/hive/src/test/resources/golden/auto_join_filters-6-9362466c777fff7e677dd8da072f8744 new file mode 100644 index 0000000000000..b7c1c01983241 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-6-9362466c777fff7e677dd8da072f8744 @@ -0,0 +1 @@ +4939870 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-60-1b3177a066ba352539fd5473fbeda1a9 b/sql/hive/src/test/resources/golden/auto_join_filters-60-1b3177a066ba352539fd5473fbeda1a9 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-60-1b3177a066ba352539fd5473fbeda1a9 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-61-ecfb8fe4bf85a05f321754d8ea8cbabd b/sql/hive/src/test/resources/golden/auto_join_filters-61-ecfb8fe4bf85a05f321754d8ea8cbabd new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-61-ecfb8fe4bf85a05f321754d8ea8cbabd @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-62-ca73726ffaa5826a3db039cda440e6d9 b/sql/hive/src/test/resources/golden/auto_join_filters-62-ca73726ffaa5826a3db039cda440e6d9 new file mode 100644 index 0000000000000..57ad71fe4195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-62-ca73726ffaa5826a3db039cda440e6d9 @@ -0,0 +1 @@ +3080335 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-63-c21c2acf7f276c0a26f0c19e3234506 b/sql/hive/src/test/resources/golden/auto_join_filters-63-c21c2acf7f276c0a26f0c19e3234506 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-63-c21c2acf7f276c0a26f0c19e3234506 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-7-ae4cc72ddbbbd748179e0abcc985726 b/sql/hive/src/test/resources/golden/auto_join_filters-7-ae4cc72ddbbbd748179e0abcc985726 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-7-ae4cc72ddbbbd748179e0abcc985726 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-8-f64cec45b154c4ba5172afcdff623a2b b/sql/hive/src/test/resources/golden/auto_join_filters-8-f64cec45b154c4ba5172afcdff623a2b new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-8-f64cec45b154c4ba5172afcdff623a2b @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_filters-9-c552dcc9b931dff05cf8c0d712e22841 b/sql/hive/src/test/resources/golden/auto_join_filters-9-c552dcc9b931dff05cf8c0d712e22841 new file mode 100644 index 0000000000000..476d8eeee571a --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_filters-9-c552dcc9b931dff05cf8c0d712e22841 @@ -0,0 +1 @@ +3078400 diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-0-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/auto_join_nulls-0-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-0-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-1-5644ab44e5ba9f2941216b8d5dc33a99 b/sql/hive/src/test/resources/golden/auto_join_nulls-1-5644ab44e5ba9f2941216b8d5dc33a99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-10-ad7e37acbc658b5a822ca342fd4b9d01 b/sql/hive/src/test/resources/golden/auto_join_nulls-10-ad7e37acbc658b5a822ca342fd4b9d01 new file mode 100644 index 0000000000000..b201b9c4d9348 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-10-ad7e37acbc658b5a822ca342fd4b9d01 @@ -0,0 +1 @@ +4542003 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-11-141c550a314d15c4e200e5baeb246de2 b/sql/hive/src/test/resources/golden/auto_join_nulls-11-141c550a314d15c4e200e5baeb246de2 new file mode 100644 index 0000000000000..d365cdf04366c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-11-141c550a314d15c4e200e5baeb246de2 @@ -0,0 +1 @@ +4542038 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-12-8a65225a88da0169af26848c06cb981c b/sql/hive/src/test/resources/golden/auto_join_nulls-12-8a65225a88da0169af26848c06cb981c new file mode 100644 index 0000000000000..bc7bcdca25bfb --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-12-8a65225a88da0169af26848c06cb981c @@ -0,0 +1 @@ +4543491 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-13-e9c3ae95d7edd0c311c7d57e4cebdc80 b/sql/hive/src/test/resources/golden/auto_join_nulls-13-e9c3ae95d7edd0c311c7d57e4cebdc80 new file mode 100644 index 0000000000000..b201b9c4d9348 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-13-e9c3ae95d7edd0c311c7d57e4cebdc80 @@ -0,0 +1 @@ +4542003 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-14-2be327f5d98b6ca8a45a6e1d97948ec8 b/sql/hive/src/test/resources/golden/auto_join_nulls-14-2be327f5d98b6ca8a45a6e1d97948ec8 new file mode 100644 index 0000000000000..feea6ee0a8e0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-14-2be327f5d98b6ca8a45a6e1d97948ec8 @@ -0,0 +1 @@ +3079923 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-15-d2ff8e87c24e152107bba1ebf659d0c8 b/sql/hive/src/test/resources/golden/auto_join_nulls-15-d2ff8e87c24e152107bba1ebf659d0c8 new file mode 100644 index 0000000000000..f713b04028bbd --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-15-d2ff8e87c24e152107bba1ebf659d0c8 @@ -0,0 +1 @@ +4509891 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-16-dbe244d2c21e477c3703c4ce1903e8af b/sql/hive/src/test/resources/golden/auto_join_nulls-16-dbe244d2c21e477c3703c4ce1903e8af new file mode 100644 index 0000000000000..a94eda6b2c374 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-16-dbe244d2c21e477c3703c4ce1903e8af @@ -0,0 +1 @@ +3113558 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-17-f3cf64fcd82d5f33d249ed64bfc13621 b/sql/hive/src/test/resources/golden/auto_join_nulls-17-f3cf64fcd82d5f33d249ed64bfc13621 new file mode 100644 index 0000000000000..feea6ee0a8e0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-17-f3cf64fcd82d5f33d249ed64bfc13621 @@ -0,0 +1 @@ +3079923 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-18-439a409bc50dfd86dee78c151c3de5eb b/sql/hive/src/test/resources/golden/auto_join_nulls-18-439a409bc50dfd86dee78c151c3de5eb new file mode 100644 index 0000000000000..88c5f95e0d838 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-18-439a409bc50dfd86dee78c151c3de5eb @@ -0,0 +1 @@ +4543526 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-19-92641e46934ebbf3d44e6e60de1882f4 b/sql/hive/src/test/resources/golden/auto_join_nulls-19-92641e46934ebbf3d44e6e60de1882f4 new file mode 100644 index 0000000000000..88c5f95e0d838 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-19-92641e46934ebbf3d44e6e60de1882f4 @@ -0,0 +1 @@ +4543526 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-2-97641998eb9ddf2dff56de6758486aa0 b/sql/hive/src/test/resources/golden/auto_join_nulls-2-97641998eb9ddf2dff56de6758486aa0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-20-e34b2b210059a5f93c0a873d91859b5d b/sql/hive/src/test/resources/golden/auto_join_nulls-20-e34b2b210059a5f93c0a873d91859b5d new file mode 100644 index 0000000000000..88c5f95e0d838 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-20-e34b2b210059a5f93c0a873d91859b5d @@ -0,0 +1 @@ +4543526 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-21-c7aaa831acbd959c6d1793056e3c288a b/sql/hive/src/test/resources/golden/auto_join_nulls-21-c7aaa831acbd959c6d1793056e3c288a new file mode 100644 index 0000000000000..88c5f95e0d838 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-21-c7aaa831acbd959c6d1793056e3c288a @@ -0,0 +1 @@ +4543526 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-22-f5beafb0c5ed59a1852811c9710fe9a3 b/sql/hive/src/test/resources/golden/auto_join_nulls-22-f5beafb0c5ed59a1852811c9710fe9a3 new file mode 100644 index 0000000000000..f2ec932ce57f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-22-f5beafb0c5ed59a1852811c9710fe9a3 @@ -0,0 +1 @@ +3112070 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-23-5805a41289a26139c06604a40bf5a6fa b/sql/hive/src/test/resources/golden/auto_join_nulls-23-5805a41289a26139c06604a40bf5a6fa new file mode 100644 index 0000000000000..a94eda6b2c374 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-23-5805a41289a26139c06604a40bf5a6fa @@ -0,0 +1 @@ +3113558 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-24-80991af26d5d37e0864ecc2c8ab0b984 b/sql/hive/src/test/resources/golden/auto_join_nulls-24-80991af26d5d37e0864ecc2c8ab0b984 new file mode 100644 index 0000000000000..f2ec932ce57f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-24-80991af26d5d37e0864ecc2c8ab0b984 @@ -0,0 +1 @@ +3112070 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-3-f0befc0275bda075e4f3cd61eafcccc7 b/sql/hive/src/test/resources/golden/auto_join_nulls-3-f0befc0275bda075e4f3cd61eafcccc7 new file mode 100644 index 0000000000000..4125efd2dd065 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-3-f0befc0275bda075e4f3cd61eafcccc7 @@ -0,0 +1 @@ +13630578 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-4-fc1128c86cd430db8cd4ff834be4562 b/sql/hive/src/test/resources/golden/auto_join_nulls-4-fc1128c86cd430db8cd4ff834be4562 new file mode 100644 index 0000000000000..4125efd2dd065 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-4-fc1128c86cd430db8cd4ff834be4562 @@ -0,0 +1 @@ +13630578 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-5-2b5f38b7537ed5c40c0ad478b08fc1fc b/sql/hive/src/test/resources/golden/auto_join_nulls-5-2b5f38b7537ed5c40c0ad478b08fc1fc new file mode 100644 index 0000000000000..4125efd2dd065 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-5-2b5f38b7537ed5c40c0ad478b08fc1fc @@ -0,0 +1 @@ +13630578 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-6-d256ec23d7b98e1517cacf5dae2f4124 b/sql/hive/src/test/resources/golden/auto_join_nulls-6-d256ec23d7b98e1517cacf5dae2f4124 new file mode 100644 index 0000000000000..e877d44372ecb --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-6-d256ec23d7b98e1517cacf5dae2f4124 @@ -0,0 +1 @@ +3078400 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-7-8395fa78507105c2a018e88f717b95e2 b/sql/hive/src/test/resources/golden/auto_join_nulls-7-8395fa78507105c2a018e88f717b95e2 new file mode 100644 index 0000000000000..18be36a9bdb54 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-7-8395fa78507105c2a018e88f717b95e2 @@ -0,0 +1 @@ +4509856 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-8-fd992f2127a139aeb554d797e748ed54 b/sql/hive/src/test/resources/golden/auto_join_nulls-8-fd992f2127a139aeb554d797e748ed54 new file mode 100644 index 0000000000000..f2ec932ce57f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-8-fd992f2127a139aeb554d797e748ed54 @@ -0,0 +1 @@ +3112070 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_nulls-9-e3a86622a437e910b7225d1e6108da9e b/sql/hive/src/test/resources/golden/auto_join_nulls-9-e3a86622a437e910b7225d1e6108da9e new file mode 100644 index 0000000000000..e877d44372ecb --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_nulls-9-e3a86622a437e910b7225d1e6108da9e @@ -0,0 +1 @@ +3078400 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-0-1d8e3d660bb4b29287df5700bfe63b63 b/sql/hive/src/test/resources/golden/auto_join_reordering_values-0-1d8e3d660bb4b29287df5700bfe63b63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-1-1247d9a5ffabd61647697dc186c7a2a2 b/sql/hive/src/test/resources/golden/auto_join_reordering_values-1-1247d9a5ffabd61647697dc186c7a2a2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-10-f6d5bb38137da35b91da901ba310c2b8 b/sql/hive/src/test/resources/golden/auto_join_reordering_values-10-f6d5bb38137da35b91da901ba310c2b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-2-3ce329282fc72110e9ed6c78fa914395 b/sql/hive/src/test/resources/golden/auto_join_reordering_values-2-3ce329282fc72110e9ed6c78fa914395 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-3-6e9d99d2a0cac78b7fe242dc1e43d3d8 b/sql/hive/src/test/resources/golden/auto_join_reordering_values-3-6e9d99d2a0cac78b7fe242dc1e43d3d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-4-7fb82039c95389f11b174d9f22aacb35 b/sql/hive/src/test/resources/golden/auto_join_reordering_values-4-7fb82039c95389f11b174d9f22aacb35 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-5-b5da89b0cb325cf684406b620eb9d8ee b/sql/hive/src/test/resources/golden/auto_join_reordering_values-5-b5da89b0cb325cf684406b620eb9d8ee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-6-2c91dc4b7c00d5f09862119c12295532 b/sql/hive/src/test/resources/golden/auto_join_reordering_values-6-2c91dc4b7c00d5f09862119c12295532 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-7-880ba1dba6057dd6cde89d1b17724a6b b/sql/hive/src/test/resources/golden/auto_join_reordering_values-7-880ba1dba6057dd6cde89d1b17724a6b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-8-950af86c321a67ab3ed0fa5b63ea6aed b/sql/hive/src/test/resources/golden/auto_join_reordering_values-8-950af86c321a67ab3ed0fa5b63ea6aed new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_join_reordering_values-8-950af86c321a67ab3ed0fa5b63ea6aed @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_join_reordering_values-9-ae02756bd46266ec7fd9cc809bc4757b b/sql/hive/src/test/resources/golden/auto_join_reordering_values-9-ae02756bd46266ec7fd9cc809bc4757b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-10-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-10-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-10-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-11-906a582602602372e1d4776243abeab5 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-11-906a582602602372e1d4776243abeab5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-12-94538bc7322522a5534cafc0551d2189 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-12-94538bc7322522a5534cafc0551d2189 new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-12-94538bc7322522a5534cafc0551d2189 @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-13-1d603e61c2cb888499504ddab98ccc65 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-13-1d603e61c2cb888499504ddab98ccc65 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-14-d5183dfa8d9fb9175478fb1c2f2edb97 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-14-d5183dfa8d9fb9175478fb1c2f2edb97 new file mode 100644 index 0000000000000..62f9457511f87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-14-d5183dfa8d9fb9175478fb1c2f2edb97 @@ -0,0 +1 @@ +6 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-15-758d5532083d6279e169b54fd69bb580 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-15-758d5532083d6279e169b54fd69bb580 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-16-2798f20aaf0fe5505c34b118e4b10bc5 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-16-2798f20aaf0fe5505c34b118e4b10bc5 new file mode 100644 index 0000000000000..2eafac63a9a98 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-16-2798f20aaf0fe5505c34b118e4b10bc5 @@ -0,0 +1,6 @@ +0 9 9 +2 1 1 +4 1 1 +5 9 9 +8 1 1 +9 1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-17-ca77b5fb54de526972c16ad6118e86d6 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-17-ca77b5fb54de526972c16ad6118e86d6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-18-21269869cd3aaf4ade2170d9017de018 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-18-21269869cd3aaf4ade2170d9017de018 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-18-21269869cd3aaf4ade2170d9017de018 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-19-853c4fa5a2385b92fdb39d0ac2926973 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-19-853c4fa5a2385b92fdb39d0ac2926973 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-20-4e0e8cd0626a84b21ca7d2f633623578 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-20-4e0e8cd0626a84b21ca7d2f633623578 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-20-4e0e8cd0626a84b21ca7d2f633623578 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-21-e210ced77b32cd7ce87044bb3e3370d1 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-21-e210ced77b32cd7ce87044bb3e3370d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-22-2fe7b834b341bf18e36cd79dd00ec16a b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-22-2fe7b834b341bf18e36cd79dd00ec16a new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-22-2fe7b834b341bf18e36cd79dd00ec16a @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-23-63d105e0acd3521bb29ba8cec9ac4583 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-23-63d105e0acd3521bb29ba8cec9ac4583 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-24-43ba2c72db9db1ec18d835ec978f8da1 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-24-43ba2c72db9db1ec18d835ec978f8da1 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-24-43ba2c72db9db1ec18d835ec978f8da1 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-25-7b2a1128afe35706f1540bfc251d0736 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-25-7b2a1128afe35706f1540bfc251d0736 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-26-b66c416fdd98d76981f19e9c14b6a562 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-26-b66c416fdd98d76981f19e9c14b6a562 new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-26-b66c416fdd98d76981f19e9c14b6a562 @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-27-5438118dc1d9fab501a8e60eddd625a2 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-27-5438118dc1d9fab501a8e60eddd625a2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-28-b889b147255231f7fe44bd57e1f8ba66 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-28-b889b147255231f7fe44bd57e1f8ba66 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-28-b889b147255231f7fe44bd57e1f8ba66 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-29-ff6eca271c60cb15a3ea2395ac737b0d b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-29-ff6eca271c60cb15a3ea2395ac737b0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-3-4938d4d724990d16336ee31f0390c7da b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-3-4938d4d724990d16336ee31f0390c7da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-30-b9d66e78b8898a97a42d1118300fa0ce b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-30-b9d66e78b8898a97a42d1118300fa0ce new file mode 100644 index 0000000000000..2ebc6516c7df1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-30-b9d66e78b8898a97a42d1118300fa0ce @@ -0,0 +1 @@ +56 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-31-d25f41c6f7c20044ed4d9a9905fdfcce b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-31-d25f41c6f7c20044ed4d9a9905fdfcce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-32-b0ca9e20cd48457e6cf1c313d5505213 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-32-b0ca9e20cd48457e6cf1c313d5505213 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-32-b0ca9e20cd48457e6cf1c313d5505213 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-33-5f340dbc8126f7e336d3c85e9ab346b5 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-33-5f340dbc8126f7e336d3c85e9ab346b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-34-76ded9e08c765bf2e1b670b4ffb938b b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-34-76ded9e08c765bf2e1b670b4ffb938b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-35-4e6a34e1f68538ad9e25b7c3a8d18e76 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-35-4e6a34e1f68538ad9e25b7c3a8d18e76 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-36-1ba279881865c861a793797ae84a3934 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-36-1ba279881865c861a793797ae84a3934 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-37-a45927057c01fd54818b5dd50e77f60e b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-37-a45927057c01fd54818b5dd50e77f60e new file mode 100644 index 0000000000000..3d2e6576f591f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-37-a45927057c01fd54818b5dd50e77f60e @@ -0,0 +1,22 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-38-a988727daa49fb5e190f81c027bb7005 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-38-a988727daa49fb5e190f81c027bb7005 new file mode 100644 index 0000000000000..34d56da297220 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-38-a988727daa49fb5e190f81c027bb7005 @@ -0,0 +1,22 @@ +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +2 val_2 val_2 +4 val_4 val_4 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +8 val_8 val_8 +9 val_9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-39-20c26228d10872eec10dbb9322dd74da b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-39-20c26228d10872eec10dbb9322dd74da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-4-378d42317b39c6519f15bd2f99c5ddc4 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-4-378d42317b39c6519f15bd2f99c5ddc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-40-4c57b1c6c081294cbd72626ff0fd940e b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-40-4c57b1c6c081294cbd72626ff0fd940e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-41-81b3db8d18d4b3843ed0be6eca5d793c b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-41-81b3db8d18d4b3843ed0be6eca5d793c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-42-80db3a67d59c8710edf9f695e7eeb37c b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-42-80db3a67d59c8710edf9f695e7eeb37c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-43-a45927057c01fd54818b5dd50e77f60e b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-43-a45927057c01fd54818b5dd50e77f60e new file mode 100644 index 0000000000000..3d2e6576f591f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-43-a45927057c01fd54818b5dd50e77f60e @@ -0,0 +1,22 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-44-48b32dd521ddf1af1c8075ecbeccaa75 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-44-48b32dd521ddf1af1c8075ecbeccaa75 new file mode 100644 index 0000000000000..4a9735f855f96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-44-48b32dd521ddf1af1c8075ecbeccaa75 @@ -0,0 +1,6 @@ +0 9 +2 1 +4 1 +5 9 +8 1 +9 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-5-9140b367b5680860f4c7c0238377583f b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-5-9140b367b5680860f4c7c0238377583f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-6-70c1d66123d434d3a1e1801e0b19bc3f b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-6-70c1d66123d434d3a1e1801e0b19bc3f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-7-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-7-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-7-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-8-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-8-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-8-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-9-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-9-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_smb_mapjoin_14-9-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-0-b24f5a262c6693f31ed376a5da0787f3 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-0-b24f5a262c6693f31ed376a5da0787f3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-1-e3951e29e1e87b77ea735f40fd58735 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-1-e3951e29e1e87b77ea735f40fd58735 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-10-9666fb18356436e2800550df9ca90c04 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-10-9666fb18356436e2800550df9ca90c04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-11-a54cefeeb6d79c72f01c61035e9dcf15 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-11-a54cefeeb6d79c72f01c61035e9dcf15 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-12-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-12-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-12-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-13-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-13-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-13-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-14-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-14-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-14-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-15-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-15-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-15-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-16-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-16-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-16-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-17-30259eb1873d8f5d00dccd8af0b0ccbc b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-17-30259eb1873d8f5d00dccd8af0b0ccbc new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-17-30259eb1873d8f5d00dccd8af0b0ccbc @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-18-a6ef74ae9c70c382abb4d361e6f1e070 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-18-a6ef74ae9c70c382abb4d361e6f1e070 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-19-325432a220aa3ebe8b816069916924d8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-19-325432a220aa3ebe8b816069916924d8 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-19-325432a220aa3ebe8b816069916924d8 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-2-c5a30be03ba36f1fb6cc0b4e7c978838 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-2-c5a30be03ba36f1fb6cc0b4e7c978838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-20-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-20-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-21-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-21-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-21-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-22-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-22-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-22-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-23-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-23-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-24-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-24-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-24-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-3-18bd222285d3a3bd71d3cfa217d9b1db b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-3-18bd222285d3a3bd71d3cfa217d9b1db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-4-bb969d3ec0038215a2698afceeb02b3a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-4-bb969d3ec0038215a2698afceeb02b3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-5-2c3617157639fcd296a8ea2f121c58ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-5-2c3617157639fcd296a8ea2f121c58ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-6-307339322d96b8f923d57c0dc9cdcb60 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-6-307339322d96b8f923d57c0dc9cdcb60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-7-94cc219f61413ab321916821e1288152 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-7-94cc219f61413ab321916821e1288152 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-8-310c8d652c6f549b7759baec6012b77d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-8-310c8d652c6f549b7759baec6012b77d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-9-b806b5b4eb8a703b2ba43afdce4d0bd5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_1-9-b806b5b4eb8a703b2ba43afdce4d0bd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-10-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-10-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-10-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-11-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-11-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-11-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-12-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-12-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-12-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-13-469a09efa93fa9aec154a5967eec09c5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-13-469a09efa93fa9aec154a5967eec09c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-14-95e18bd00f2de246efca1756681c1e87 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-14-95e18bd00f2de246efca1756681c1e87 new file mode 100644 index 0000000000000..86ee83a4a2686 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-14-95e18bd00f2de246efca1756681c1e87 @@ -0,0 +1 @@ +40 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-15-6a7fdb423721e7aefa2efda26785e1a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-15-6a7fdb423721e7aefa2efda26785e1a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-16-caa641c820fcc5f601758c5f0385b4e b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-16-caa641c820fcc5f601758c5f0385b4e new file mode 100644 index 0000000000000..301160a93062d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-16-caa641c820fcc5f601758c5f0385b4e @@ -0,0 +1 @@ +8 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-3-4938d4d724990d16336ee31f0390c7da b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-3-4938d4d724990d16336ee31f0390c7da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-4-378d42317b39c6519f15bd2f99c5ddc4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-4-378d42317b39c6519f15bd2f99c5ddc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-5-9140b367b5680860f4c7c0238377583f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-5-9140b367b5680860f4c7c0238377583f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-6-70c1d66123d434d3a1e1801e0b19bc3f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-6-70c1d66123d434d3a1e1801e0b19bc3f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-7-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-7-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-7-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-8-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-8-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-8-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-9-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-9-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_10-9-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-0-4705fafa08c6d927aa01337e19605c8a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-0-4705fafa08c6d927aa01337e19605c8a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-1-e3951e29e1e87b77ea735f40fd58735 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-1-e3951e29e1e87b77ea735f40fd58735 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-10-9666fb18356436e2800550df9ca90c04 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-10-9666fb18356436e2800550df9ca90c04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-11-a54cefeeb6d79c72f01c61035e9dcf15 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-11-a54cefeeb6d79c72f01c61035e9dcf15 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-12-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-12-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-12-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-13-398b81a1928284f29e832838ec3764fd b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-13-398b81a1928284f29e832838ec3764fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-14-325432a220aa3ebe8b816069916924d8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-14-325432a220aa3ebe8b816069916924d8 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-14-325432a220aa3ebe8b816069916924d8 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-15-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-15-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-15-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-16-c23ea191ee4d60c0a6252ce763b1beed b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-16-c23ea191ee4d60c0a6252ce763b1beed new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-16-c23ea191ee4d60c0a6252ce763b1beed @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-17-442e69416faaea9309bb8c2a3eb73ef b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-17-442e69416faaea9309bb8c2a3eb73ef new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-17-442e69416faaea9309bb8c2a3eb73ef @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-18-d8260daa82c8439e0c80a63998bd5d2e b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-18-d8260daa82c8439e0c80a63998bd5d2e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-19-325432a220aa3ebe8b816069916924d8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-19-325432a220aa3ebe8b816069916924d8 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-19-325432a220aa3ebe8b816069916924d8 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-2-c5a30be03ba36f1fb6cc0b4e7c978838 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-2-c5a30be03ba36f1fb6cc0b4e7c978838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-20-62fab16c00f510c001f146c929360c71 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-20-62fab16c00f510c001f146c929360c71 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-21-c4d55c247c9326f474d89b29b81d60aa b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-21-c4d55c247c9326f474d89b29b81d60aa new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-21-c4d55c247c9326f474d89b29b81d60aa @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-3-b4a6a67ac771394140ed695810930ac6 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-3-b4a6a67ac771394140ed695810930ac6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-4-bb969d3ec0038215a2698afceeb02b3a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-4-bb969d3ec0038215a2698afceeb02b3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-5-2c3617157639fcd296a8ea2f121c58ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-5-2c3617157639fcd296a8ea2f121c58ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-6-307339322d96b8f923d57c0dc9cdcb60 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-6-307339322d96b8f923d57c0dc9cdcb60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-7-94cc219f61413ab321916821e1288152 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-7-94cc219f61413ab321916821e1288152 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-8-310c8d652c6f549b7759baec6012b77d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-8-310c8d652c6f549b7759baec6012b77d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-9-b806b5b4eb8a703b2ba43afdce4d0bd5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_11-9-b806b5b4eb8a703b2ba43afdce4d0bd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-0-d7af66a0aa504ad44bf01d5a2e7cdcec b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-0-d7af66a0aa504ad44bf01d5a2e7cdcec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-1-e3951e29e1e87b77ea735f40fd58735 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-1-e3951e29e1e87b77ea735f40fd58735 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-10-9666fb18356436e2800550df9ca90c04 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-10-9666fb18356436e2800550df9ca90c04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-11-a54cefeeb6d79c72f01c61035e9dcf15 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-11-a54cefeeb6d79c72f01c61035e9dcf15 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-12-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-12-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-12-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-13-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-13-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-13-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-14-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-14-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-14-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-15-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-15-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-15-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-16-746f0c0dd71cd5cb6673fbd53ef05a1e b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-16-746f0c0dd71cd5cb6673fbd53ef05a1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-17-a8c60901367229310f86a8521a26478a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-17-a8c60901367229310f86a8521a26478a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-18-f50f21c997d775c369fd52f9bafb9b36 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-18-f50f21c997d775c369fd52f9bafb9b36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-19-fe49b6f198661d2e020a0c8bd26c9237 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-19-fe49b6f198661d2e020a0c8bd26c9237 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-2-c5a30be03ba36f1fb6cc0b4e7c978838 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-2-c5a30be03ba36f1fb6cc0b4e7c978838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-20-3404f0b912c898d6c81aa88bf0cd8c11 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-20-3404f0b912c898d6c81aa88bf0cd8c11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-21-4ecd65f0e26e981b66770b3e91e128fc b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-21-4ecd65f0e26e981b66770b3e91e128fc new file mode 100644 index 0000000000000..83be903e06482 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-21-4ecd65f0e26e981b66770b3e91e128fc @@ -0,0 +1 @@ +570 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-3-18bd222285d3a3bd71d3cfa217d9b1db b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-3-18bd222285d3a3bd71d3cfa217d9b1db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-4-bb969d3ec0038215a2698afceeb02b3a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-4-bb969d3ec0038215a2698afceeb02b3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-5-2c3617157639fcd296a8ea2f121c58ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-5-2c3617157639fcd296a8ea2f121c58ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-6-307339322d96b8f923d57c0dc9cdcb60 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-6-307339322d96b8f923d57c0dc9cdcb60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-7-94cc219f61413ab321916821e1288152 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-7-94cc219f61413ab321916821e1288152 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-8-310c8d652c6f549b7759baec6012b77d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-8-310c8d652c6f549b7759baec6012b77d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-9-b806b5b4eb8a703b2ba43afdce4d0bd5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_12-9-b806b5b4eb8a703b2ba43afdce4d0bd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-10-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-10-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-10-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-11-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-11-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-11-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-12-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-12-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-12-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-13-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-13-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-13-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-14-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-14-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-14-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-15-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-15-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-15-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-16-14ad1ec6ac3dbedb29d43cf178fa8552 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-16-14ad1ec6ac3dbedb29d43cf178fa8552 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-17-b366dcf84021a7dc4a17a52fe381b5f0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-17-b366dcf84021a7dc4a17a52fe381b5f0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-18-cc27d771c9a20d3d83f87802e1a9dbe2 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-18-cc27d771c9a20d3d83f87802e1a9dbe2 new file mode 100644 index 0000000000000..251ff85eda52d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-18-cc27d771c9a20d3d83f87802e1a9dbe2 @@ -0,0 +1,22 @@ +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +2 2 +4 4 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +8 8 +9 9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-19-4b2ac2865384fbca7f374191d8021d51 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-19-4b2ac2865384fbca7f374191d8021d51 new file mode 100644 index 0000000000000..af8f457e93476 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-19-4b2ac2865384fbca7f374191d8021d51 @@ -0,0 +1,22 @@ +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_2 val_2 +val_4 val_4 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_8 val_8 +val_9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-20-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-20-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-20-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-21-ea23403b9eb55e8b06d1c198e439569f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-21-ea23403b9eb55e8b06d1c198e439569f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-21-ea23403b9eb55e8b06d1c198e439569f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-22-14ad1ec6ac3dbedb29d43cf178fa8552 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-22-14ad1ec6ac3dbedb29d43cf178fa8552 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-23-b366dcf84021a7dc4a17a52fe381b5f0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-23-b366dcf84021a7dc4a17a52fe381b5f0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-24-cc27d771c9a20d3d83f87802e1a9dbe2 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-24-cc27d771c9a20d3d83f87802e1a9dbe2 new file mode 100644 index 0000000000000..251ff85eda52d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-24-cc27d771c9a20d3d83f87802e1a9dbe2 @@ -0,0 +1,22 @@ +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +2 2 +4 4 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +8 8 +9 9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-25-4b2ac2865384fbca7f374191d8021d51 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-25-4b2ac2865384fbca7f374191d8021d51 new file mode 100644 index 0000000000000..af8f457e93476 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-25-4b2ac2865384fbca7f374191d8021d51 @@ -0,0 +1,22 @@ +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_2 val_2 +val_4 val_4 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_8 val_8 +val_9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-26-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-26-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-26-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-27-14ad1ec6ac3dbedb29d43cf178fa8552 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-27-14ad1ec6ac3dbedb29d43cf178fa8552 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-28-b366dcf84021a7dc4a17a52fe381b5f0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-28-b366dcf84021a7dc4a17a52fe381b5f0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-29-cc27d771c9a20d3d83f87802e1a9dbe2 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-29-cc27d771c9a20d3d83f87802e1a9dbe2 new file mode 100644 index 0000000000000..251ff85eda52d --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-29-cc27d771c9a20d3d83f87802e1a9dbe2 @@ -0,0 +1,22 @@ +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +0 0 +2 2 +4 4 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +5 5 +8 8 +9 9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-3-4938d4d724990d16336ee31f0390c7da b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-3-4938d4d724990d16336ee31f0390c7da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-30-4b2ac2865384fbca7f374191d8021d51 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-30-4b2ac2865384fbca7f374191d8021d51 new file mode 100644 index 0000000000000..af8f457e93476 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-30-4b2ac2865384fbca7f374191d8021d51 @@ -0,0 +1,22 @@ +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_0 val_0 +val_2 val_2 +val_4 val_4 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_5 val_5 +val_8 val_8 +val_9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-4-378d42317b39c6519f15bd2f99c5ddc4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-4-378d42317b39c6519f15bd2f99c5ddc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-5-d73046d4785e9c89acb10eea77d32ca8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-5-d73046d4785e9c89acb10eea77d32ca8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-6-3d02238197b076b6f77daacb81aa2cb4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-6-3d02238197b076b6f77daacb81aa2cb4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-7-6f949602369ac3af6ded9884bc525310 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-7-6f949602369ac3af6ded9884bc525310 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-8-b334c03af5acdcb136072bb427683bb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-8-b334c03af5acdcb136072bb427683bb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-9-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-9-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_13-9-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-10-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-10-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-10-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-11-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-11-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-11-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-12-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-12-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-12-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-13-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-13-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-13-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-14-51e4c81f56c64f6aa25322055694f641 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-14-51e4c81f56c64f6aa25322055694f641 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-15-43ad2152b18d711adbdd1aeb940b662a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-15-43ad2152b18d711adbdd1aeb940b662a new file mode 100644 index 0000000000000..1758dddccea2b --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-15-43ad2152b18d711adbdd1aeb940b662a @@ -0,0 +1 @@ +32 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-16-51ee88184cbc22b5bef4e96856e41e7c b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-16-51ee88184cbc22b5bef4e96856e41e7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-17-334529f1a720bfb408efee90bc8be61 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-17-334529f1a720bfb408efee90bc8be61 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-18-a16ff76d72ad428fb9d43ab910f259fd b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-18-a16ff76d72ad428fb9d43ab910f259fd new file mode 100644 index 0000000000000..bea0d09c49935 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-18-a16ff76d72ad428fb9d43ab910f259fd @@ -0,0 +1 @@ +207 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-3-4938d4d724990d16336ee31f0390c7da b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-3-4938d4d724990d16336ee31f0390c7da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-4-378d42317b39c6519f15bd2f99c5ddc4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-4-378d42317b39c6519f15bd2f99c5ddc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-5-945b37381c2719e18e2945bf8b4e56ac b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-5-945b37381c2719e18e2945bf8b4e56ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-6-3d02238197b076b6f77daacb81aa2cb4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-6-3d02238197b076b6f77daacb81aa2cb4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-7-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-7-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-7-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-8-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-8-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-8-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-9-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-9-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_14-9-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-10-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-10-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-10-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-11-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-11-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-11-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-12-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-12-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-12-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-13-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-13-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-13-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-14-62b7e43463386c11e031cf7e4f584a53 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-14-62b7e43463386c11e031cf7e4f584a53 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-15-3c37a21813ee34d4d1f9e01f5f3ef5d3 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-15-3c37a21813ee34d4d1f9e01f5f3ef5d3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-3-4938d4d724990d16336ee31f0390c7da b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-3-4938d4d724990d16336ee31f0390c7da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-4-378d42317b39c6519f15bd2f99c5ddc4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-4-378d42317b39c6519f15bd2f99c5ddc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-5-945b37381c2719e18e2945bf8b4e56ac b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-5-945b37381c2719e18e2945bf8b4e56ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-6-3d02238197b076b6f77daacb81aa2cb4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-6-3d02238197b076b6f77daacb81aa2cb4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-7-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-7-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-7-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-8-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-8-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-8-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-9-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-9-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_15-9-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-0-ac562e10c3d4dd7c7cce920d29cde65d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-0-ac562e10c3d4dd7c7cce920d29cde65d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-1-e3951e29e1e87b77ea735f40fd58735 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-1-e3951e29e1e87b77ea735f40fd58735 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-10-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-10-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-10-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-11-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-11-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-11-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-12-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-12-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-12-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-13-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-13-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-13-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-14-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-14-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-14-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-15-ec410b2c54c1ce7001abe7130a3b1c21 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-15-ec410b2c54c1ce7001abe7130a3b1c21 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-15-ec410b2c54c1ce7001abe7130a3b1c21 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-16-af6016f3db000e6e180e2f3b10f120ce b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-16-af6016f3db000e6e180e2f3b10f120ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-17-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-17-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-17-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-18-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-18-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-18-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-19-a0fc12fc2b968d7e85e6c1e2fd70cd94 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-19-a0fc12fc2b968d7e85e6c1e2fd70cd94 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-19-a0fc12fc2b968d7e85e6c1e2fd70cd94 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-2-c5a30be03ba36f1fb6cc0b4e7c978838 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-2-c5a30be03ba36f1fb6cc0b4e7c978838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-20-8180638a57b64557e02815c863031755 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-20-8180638a57b64557e02815c863031755 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-20-8180638a57b64557e02815c863031755 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-21-e6283ea14d493b0d7bf390249665f289 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-21-e6283ea14d493b0d7bf390249665f289 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-22-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-22-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-22-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-3-55c1e972192580d734fad7f57dd62e6a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-3-55c1e972192580d734fad7f57dd62e6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-4-210f08b7e8c20c9ff364c215af412d87 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-4-210f08b7e8c20c9ff364c215af412d87 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-5-bfc04dda7e11f06d01689f2b57959ed7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-5-bfc04dda7e11f06d01689f2b57959ed7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-6-bb969d3ec0038215a2698afceeb02b3a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-6-bb969d3ec0038215a2698afceeb02b3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-7-2c3617157639fcd296a8ea2f121c58ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-7-2c3617157639fcd296a8ea2f121c58ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-8-310c8d652c6f549b7759baec6012b77d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-8-310c8d652c6f549b7759baec6012b77d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-9-b806b5b4eb8a703b2ba43afdce4d0bd5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_2-9-b806b5b4eb8a703b2ba43afdce4d0bd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-0-71378da1900d130fd68aaebc45f87313 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-0-71378da1900d130fd68aaebc45f87313 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-1-e3951e29e1e87b77ea735f40fd58735 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-1-e3951e29e1e87b77ea735f40fd58735 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-10-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-10-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-10-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-11-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-11-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-11-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-12-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-12-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-12-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-13-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-13-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-13-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-14-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-14-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-14-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-15-30259eb1873d8f5d00dccd8af0b0ccbc b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-15-30259eb1873d8f5d00dccd8af0b0ccbc new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-15-30259eb1873d8f5d00dccd8af0b0ccbc @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-16-a6ef74ae9c70c382abb4d361e6f1e070 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-16-a6ef74ae9c70c382abb4d361e6f1e070 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-17-325432a220aa3ebe8b816069916924d8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-17-325432a220aa3ebe8b816069916924d8 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-17-325432a220aa3ebe8b816069916924d8 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-18-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-18-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-19-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-19-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-19-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-2-c5a30be03ba36f1fb6cc0b4e7c978838 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-2-c5a30be03ba36f1fb6cc0b4e7c978838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-20-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-20-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-20-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-21-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-21-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-22-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-22-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-22-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-3-6876517daaf54cadefb6bbbf54bd4a24 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-3-6876517daaf54cadefb6bbbf54bd4a24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-4-cd25b8502c668759783aaba4d550a05f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-4-cd25b8502c668759783aaba4d550a05f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-5-18bd222285d3a3bd71d3cfa217d9b1db b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-5-18bd222285d3a3bd71d3cfa217d9b1db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-6-bb969d3ec0038215a2698afceeb02b3a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-6-bb969d3ec0038215a2698afceeb02b3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-7-2c3617157639fcd296a8ea2f121c58ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-7-2c3617157639fcd296a8ea2f121c58ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-8-307339322d96b8f923d57c0dc9cdcb60 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-8-307339322d96b8f923d57c0dc9cdcb60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-9-94cc219f61413ab321916821e1288152 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_3-9-94cc219f61413ab321916821e1288152 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-0-1528e7173b91cd90f101ca27f51d963c b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-0-1528e7173b91cd90f101ca27f51d963c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-1-e3951e29e1e87b77ea735f40fd58735 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-1-e3951e29e1e87b77ea735f40fd58735 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-10-bb969d3ec0038215a2698afceeb02b3a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-10-bb969d3ec0038215a2698afceeb02b3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-11-2c3617157639fcd296a8ea2f121c58ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-11-2c3617157639fcd296a8ea2f121c58ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-12-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-12-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-12-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-13-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-13-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-13-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-14-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-14-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-14-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-15-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-15-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-15-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-16-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-16-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-16-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-17-b1607a2f1e7da8ac0a9a035b99f81d28 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-17-b1607a2f1e7da8ac0a9a035b99f81d28 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-17-b1607a2f1e7da8ac0a9a035b99f81d28 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-18-a6ef74ae9c70c382abb4d361e6f1e070 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-18-a6ef74ae9c70c382abb4d361e6f1e070 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-19-325432a220aa3ebe8b816069916924d8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-19-325432a220aa3ebe8b816069916924d8 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-19-325432a220aa3ebe8b816069916924d8 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-2-c5a30be03ba36f1fb6cc0b4e7c978838 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-2-c5a30be03ba36f1fb6cc0b4e7c978838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-20-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-20-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-21-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-21-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-21-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-22-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-22-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-22-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-23-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-23-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-24-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-24-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..c24b6ae77df02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-24-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +38 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-3-55c1e972192580d734fad7f57dd62e6a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-3-55c1e972192580d734fad7f57dd62e6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-4-210f08b7e8c20c9ff364c215af412d87 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-4-210f08b7e8c20c9ff364c215af412d87 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-5-6876517daaf54cadefb6bbbf54bd4a24 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-5-6876517daaf54cadefb6bbbf54bd4a24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-6-cd25b8502c668759783aaba4d550a05f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-6-cd25b8502c668759783aaba4d550a05f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-7-c20aa9939d703c529c4538994dc6f066 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-7-c20aa9939d703c529c4538994dc6f066 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-8-baa1253610c081917208199feb52a768 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-8-baa1253610c081917208199feb52a768 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-9-bfc04dda7e11f06d01689f2b57959ed7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_4-9-bfc04dda7e11f06d01689f2b57959ed7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-0-9f8764dddb7b106f879d1a7c4318310d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-0-9f8764dddb7b106f879d1a7c4318310d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-1-fac79d1e5c34142393fc328b2935a9b8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-1-fac79d1e5c34142393fc328b2935a9b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-10-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-10-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-10-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-11-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-11-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-11-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-12-b1607a2f1e7da8ac0a9a035b99f81d28 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-12-b1607a2f1e7da8ac0a9a035b99f81d28 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-12-b1607a2f1e7da8ac0a9a035b99f81d28 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-13-a6ef74ae9c70c382abb4d361e6f1e070 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-13-a6ef74ae9c70c382abb4d361e6f1e070 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-14-325432a220aa3ebe8b816069916924d8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-14-325432a220aa3ebe8b816069916924d8 new file mode 100644 index 0000000000000..dec2bf5d6199c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-14-325432a220aa3ebe8b816069916924d8 @@ -0,0 +1 @@ +19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-15-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-15-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-16-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-16-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..dec2bf5d6199c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-16-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-17-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-17-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-17-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-18-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-18-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-18-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-19-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-19-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-2-7282f71445d3b6acef073be9b7cbab98 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-2-7282f71445d3b6acef073be9b7cbab98 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-20-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-20-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..dec2bf5d6199c --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-20-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-3-56f0862dbe9f7c0eecafe22d5d185c7c b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-3-56f0862dbe9f7c0eecafe22d5d185c7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-4-be71f06ad593935a8e81d61b695b2052 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-4-be71f06ad593935a8e81d61b695b2052 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-5-ce5ee903a36a074293fa509149d94447 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-5-ce5ee903a36a074293fa509149d94447 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-6-12e01dc9146f45ded0a6655cb04467b4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-6-12e01dc9146f45ded0a6655cb04467b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-7-ec1aaae06a8dbb2faf36b53246124d4a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-7-ec1aaae06a8dbb2faf36b53246124d4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-8-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-8-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-8-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-9-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-9-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_5-9-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-10-34779e6a90b2e9968a9a98b048cdaab6 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-10-34779e6a90b2e9968a9a98b048cdaab6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-11-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-11-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-11-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-12-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-12-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-12-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-13-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-13-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-13-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-14-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-14-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-14-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-15-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-15-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-15-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-16-ea23403b9eb55e8b06d1c198e439569f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-16-ea23403b9eb55e8b06d1c198e439569f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-16-ea23403b9eb55e8b06d1c198e439569f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-17-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-17-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-17-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-18-32efb3656e05e40f9f928bbcb11d010 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-18-32efb3656e05e40f9f928bbcb11d010 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-19-cf41f7ce9478536e823107d1810ff1d7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-19-cf41f7ce9478536e823107d1810ff1d7 new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-19-cf41f7ce9478536e823107d1810ff1d7 @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-20-b23f9ec74e58e5c53417bfff6794e8fd b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-20-b23f9ec74e58e5c53417bfff6794e8fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-21-b55506a213ec710004e6d7f3462834d0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-21-b55506a213ec710004e6d7f3462834d0 new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-21-b55506a213ec710004e6d7f3462834d0 @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-22-4b066e39be51ea19a1790c1287ad0d2c b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-22-4b066e39be51ea19a1790c1287ad0d2c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-23-4281442c87dcf6007f8bd42504eba186 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-23-4281442c87dcf6007f8bd42504eba186 new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-23-4281442c87dcf6007f8bd42504eba186 @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-24-12ec3636a4c62fd56b40da2979f53f5f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-24-12ec3636a4c62fd56b40da2979f53f5f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-25-52f0e65724d29e2b4054b59a50d2837b b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-25-52f0e65724d29e2b4054b59a50d2837b new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-25-52f0e65724d29e2b4054b59a50d2837b @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-26-bf7478a041a164ef219964cb865aa63b b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-26-bf7478a041a164ef219964cb865aa63b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-27-961f141836f2cc9521f681cadbc3d140 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-27-961f141836f2cc9521f681cadbc3d140 new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-27-961f141836f2cc9521f681cadbc3d140 @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-28-171974ff7145ffc85c8ba2724ef1f31 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-28-171974ff7145ffc85c8ba2724ef1f31 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-29-fd0cc412e0987569a4ed879454b53fb0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-29-fd0cc412e0987569a4ed879454b53fb0 new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-29-fd0cc412e0987569a4ed879454b53fb0 @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-3-4938d4d724990d16336ee31f0390c7da b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-3-4938d4d724990d16336ee31f0390c7da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-30-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-30-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-30-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-31-940f423a57afd2734f62d93bcd4d7caf b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-31-940f423a57afd2734f62d93bcd4d7caf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-32-cf41f7ce9478536e823107d1810ff1d7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-32-cf41f7ce9478536e823107d1810ff1d7 new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-32-cf41f7ce9478536e823107d1810ff1d7 @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-33-12ec3636a4c62fd56b40da2979f53f5f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-33-12ec3636a4c62fd56b40da2979f53f5f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-34-52f0e65724d29e2b4054b59a50d2837b b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-34-52f0e65724d29e2b4054b59a50d2837b new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-34-52f0e65724d29e2b4054b59a50d2837b @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-35-bf7478a041a164ef219964cb865aa63b b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-35-bf7478a041a164ef219964cb865aa63b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-36-961f141836f2cc9521f681cadbc3d140 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-36-961f141836f2cc9521f681cadbc3d140 new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-36-961f141836f2cc9521f681cadbc3d140 @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-37-171974ff7145ffc85c8ba2724ef1f31 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-37-171974ff7145ffc85c8ba2724ef1f31 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-38-fd0cc412e0987569a4ed879454b53fb0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-38-fd0cc412e0987569a4ed879454b53fb0 new file mode 100644 index 0000000000000..92c15ec11569f --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-38-fd0cc412e0987569a4ed879454b53fb0 @@ -0,0 +1 @@ +2654 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-4-378d42317b39c6519f15bd2f99c5ddc4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-4-378d42317b39c6519f15bd2f99c5ddc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-5-612f97716b8efe4b659206938e5ea5f2 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-5-612f97716b8efe4b659206938e5ea5f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-6-64856231335fc5fec61c3fd3aceefcc4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-6-64856231335fc5fec61c3fd3aceefcc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-7-b34c9b18481df043912e910ed3a5f149 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-7-b34c9b18481df043912e910ed3a5f149 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-8-57e68163453d4632ef740ce1223f44d1 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-8-57e68163453d4632ef740ce1223f44d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-9-36d2a698f88e53ab2a66e8baa980299b b/sql/hive/src/test/resources/golden/auto_sortmerge_join_6-9-36d2a698f88e53ab2a66e8baa980299b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-0-fa10661c7e8791fb319ade49f3cca50 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-0-fa10661c7e8791fb319ade49f3cca50 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-1-e3951e29e1e87b77ea735f40fd58735 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-1-e3951e29e1e87b77ea735f40fd58735 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-10-bb969d3ec0038215a2698afceeb02b3a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-10-bb969d3ec0038215a2698afceeb02b3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-11-2c3617157639fcd296a8ea2f121c58ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-11-2c3617157639fcd296a8ea2f121c58ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-12-310c8d652c6f549b7759baec6012b77d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-12-310c8d652c6f549b7759baec6012b77d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-13-b806b5b4eb8a703b2ba43afdce4d0bd5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-13-b806b5b4eb8a703b2ba43afdce4d0bd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-14-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-14-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-14-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-15-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-15-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-15-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-16-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-16-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-16-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-17-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-17-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-17-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-18-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-18-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-18-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-19-b1607a2f1e7da8ac0a9a035b99f81d28 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-19-b1607a2f1e7da8ac0a9a035b99f81d28 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-19-b1607a2f1e7da8ac0a9a035b99f81d28 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-2-c5a30be03ba36f1fb6cc0b4e7c978838 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-2-c5a30be03ba36f1fb6cc0b4e7c978838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-20-a6ef74ae9c70c382abb4d361e6f1e070 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-20-a6ef74ae9c70c382abb4d361e6f1e070 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-21-325432a220aa3ebe8b816069916924d8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-21-325432a220aa3ebe8b816069916924d8 new file mode 100644 index 0000000000000..aa92725341cfd --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-21-325432a220aa3ebe8b816069916924d8 @@ -0,0 +1 @@ +76 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-22-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-22-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-23-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-23-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..aa92725341cfd --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-23-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +76 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-24-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-24-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-24-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-25-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-25-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-26-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-26-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..aa92725341cfd --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-26-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +76 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-3-55c1e972192580d734fad7f57dd62e6a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-3-55c1e972192580d734fad7f57dd62e6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-4-210f08b7e8c20c9ff364c215af412d87 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-4-210f08b7e8c20c9ff364c215af412d87 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-5-6876517daaf54cadefb6bbbf54bd4a24 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-5-6876517daaf54cadefb6bbbf54bd4a24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-6-cd25b8502c668759783aaba4d550a05f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-6-cd25b8502c668759783aaba4d550a05f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-7-c20aa9939d703c529c4538994dc6f066 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-7-c20aa9939d703c529c4538994dc6f066 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-8-baa1253610c081917208199feb52a768 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-8-baa1253610c081917208199feb52a768 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-9-bfc04dda7e11f06d01689f2b57959ed7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_7-9-bfc04dda7e11f06d01689f2b57959ed7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-0-42977c556a54aaaee9d1e59a6dcc06aa b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-0-42977c556a54aaaee9d1e59a6dcc06aa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-1-e3951e29e1e87b77ea735f40fd58735 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-1-e3951e29e1e87b77ea735f40fd58735 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-10-310c8d652c6f549b7759baec6012b77d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-10-310c8d652c6f549b7759baec6012b77d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-11-b806b5b4eb8a703b2ba43afdce4d0bd5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-11-b806b5b4eb8a703b2ba43afdce4d0bd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-12-9666fb18356436e2800550df9ca90c04 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-12-9666fb18356436e2800550df9ca90c04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-13-a54cefeeb6d79c72f01c61035e9dcf15 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-13-a54cefeeb6d79c72f01c61035e9dcf15 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-14-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-14-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-14-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-15-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-15-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-15-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-16-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-16-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-16-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-17-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-17-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-17-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-18-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-18-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-18-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-19-30259eb1873d8f5d00dccd8af0b0ccbc b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-19-30259eb1873d8f5d00dccd8af0b0ccbc new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-19-30259eb1873d8f5d00dccd8af0b0ccbc @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-2-c5a30be03ba36f1fb6cc0b4e7c978838 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-2-c5a30be03ba36f1fb6cc0b4e7c978838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-20-a6ef74ae9c70c382abb4d361e6f1e070 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-20-a6ef74ae9c70c382abb4d361e6f1e070 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-21-325432a220aa3ebe8b816069916924d8 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-21-325432a220aa3ebe8b816069916924d8 new file mode 100644 index 0000000000000..aa92725341cfd --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-21-325432a220aa3ebe8b816069916924d8 @@ -0,0 +1 @@ +76 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-22-6f2f1144ab2b8b12684f3fbc55e27bf7 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-22-6f2f1144ab2b8b12684f3fbc55e27bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-23-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-23-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..aa92725341cfd --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-23-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +76 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-24-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-24-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-24-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-25-a0fc12fc2b968d7e85e6c1e2fd70cd94 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-25-a0fc12fc2b968d7e85e6c1e2fd70cd94 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-25-a0fc12fc2b968d7e85e6c1e2fd70cd94 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-26-8180638a57b64557e02815c863031755 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-26-8180638a57b64557e02815c863031755 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-26-8180638a57b64557e02815c863031755 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-27-e6283ea14d493b0d7bf390249665f289 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-27-e6283ea14d493b0d7bf390249665f289 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-28-7d0c37fc09323ce11aae0b58dc687660 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-28-7d0c37fc09323ce11aae0b58dc687660 new file mode 100644 index 0000000000000..aa92725341cfd --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-28-7d0c37fc09323ce11aae0b58dc687660 @@ -0,0 +1 @@ +76 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-3-6876517daaf54cadefb6bbbf54bd4a24 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-3-6876517daaf54cadefb6bbbf54bd4a24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-4-cd25b8502c668759783aaba4d550a05f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-4-cd25b8502c668759783aaba4d550a05f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-5-18bd222285d3a3bd71d3cfa217d9b1db b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-5-18bd222285d3a3bd71d3cfa217d9b1db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-6-bb969d3ec0038215a2698afceeb02b3a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-6-bb969d3ec0038215a2698afceeb02b3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-7-2c3617157639fcd296a8ea2f121c58ab b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-7-2c3617157639fcd296a8ea2f121c58ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-8-307339322d96b8f923d57c0dc9cdcb60 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-8-307339322d96b8f923d57c0dc9cdcb60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-9-94cc219f61413ab321916821e1288152 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_8-9-94cc219f61413ab321916821e1288152 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-10-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-10-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-10-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-11-cda81d86d127fca0e2fbc2161e91400d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-11-cda81d86d127fca0e2fbc2161e91400d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-11-cda81d86d127fca0e2fbc2161e91400d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-12-906a582602602372e1d4776243abeab5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-12-906a582602602372e1d4776243abeab5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-13-94538bc7322522a5534cafc0551d2189 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-13-94538bc7322522a5534cafc0551d2189 new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-13-94538bc7322522a5534cafc0551d2189 @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-14-133023474337f2cdc53ee82ffeb1c13e b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-14-133023474337f2cdc53ee82ffeb1c13e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-15-63261d35ddda973eeeb97b994ab7a476 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-15-63261d35ddda973eeeb97b994ab7a476 new file mode 100644 index 0000000000000..4a9735f855f96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-15-63261d35ddda973eeeb97b994ab7a476 @@ -0,0 +1,6 @@ +0 9 +2 1 +4 1 +5 9 +8 1 +9 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-16-1d603e61c2cb888499504ddab98ccc65 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-16-1d603e61c2cb888499504ddab98ccc65 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-17-d5183dfa8d9fb9175478fb1c2f2edb97 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-17-d5183dfa8d9fb9175478fb1c2f2edb97 new file mode 100644 index 0000000000000..62f9457511f87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-17-d5183dfa8d9fb9175478fb1c2f2edb97 @@ -0,0 +1 @@ +6 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-18-758d5532083d6279e169b54fd69bb580 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-18-758d5532083d6279e169b54fd69bb580 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-19-2798f20aaf0fe5505c34b118e4b10bc5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-19-2798f20aaf0fe5505c34b118e4b10bc5 new file mode 100644 index 0000000000000..2eafac63a9a98 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-19-2798f20aaf0fe5505c34b118e4b10bc5 @@ -0,0 +1,6 @@ +0 9 9 +2 1 1 +4 1 1 +5 9 9 +8 1 1 +9 1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-20-ca77b5fb54de526972c16ad6118e86d6 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-20-ca77b5fb54de526972c16ad6118e86d6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-21-21269869cd3aaf4ade2170d9017de018 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-21-21269869cd3aaf4ade2170d9017de018 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-21-21269869cd3aaf4ade2170d9017de018 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-22-853c4fa5a2385b92fdb39d0ac2926973 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-22-853c4fa5a2385b92fdb39d0ac2926973 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-23-4e0e8cd0626a84b21ca7d2f633623578 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-23-4e0e8cd0626a84b21ca7d2f633623578 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-23-4e0e8cd0626a84b21ca7d2f633623578 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-24-e210ced77b32cd7ce87044bb3e3370d1 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-24-e210ced77b32cd7ce87044bb3e3370d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-25-2fe7b834b341bf18e36cd79dd00ec16a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-25-2fe7b834b341bf18e36cd79dd00ec16a new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-25-2fe7b834b341bf18e36cd79dd00ec16a @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-26-63d105e0acd3521bb29ba8cec9ac4583 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-26-63d105e0acd3521bb29ba8cec9ac4583 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-27-43ba2c72db9db1ec18d835ec978f8da1 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-27-43ba2c72db9db1ec18d835ec978f8da1 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-27-43ba2c72db9db1ec18d835ec978f8da1 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-28-5965c5c6ef08240eb27eb9620cc2338 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-28-5965c5c6ef08240eb27eb9620cc2338 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-29-b66c416fdd98d76981f19e9c14b6a562 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-29-b66c416fdd98d76981f19e9c14b6a562 new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-29-b66c416fdd98d76981f19e9c14b6a562 @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-3-4938d4d724990d16336ee31f0390c7da b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-3-4938d4d724990d16336ee31f0390c7da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-30-4376bdd8412f94fe184d46481fee345d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-30-4376bdd8412f94fe184d46481fee345d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-31-b889b147255231f7fe44bd57e1f8ba66 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-31-b889b147255231f7fe44bd57e1f8ba66 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-31-b889b147255231f7fe44bd57e1f8ba66 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-32-c5c3668b2434a5b90f308ca4bbdcd647 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-32-c5c3668b2434a5b90f308ca4bbdcd647 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-33-aa8d713ad4e19b72b5bd7628d60c295e b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-33-aa8d713ad4e19b72b5bd7628d60c295e new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-33-aa8d713ad4e19b72b5bd7628d60c295e @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-34-ff6eca271c60cb15a3ea2395ac737b0d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-34-ff6eca271c60cb15a3ea2395ac737b0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-35-b9d66e78b8898a97a42d1118300fa0ce b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-35-b9d66e78b8898a97a42d1118300fa0ce new file mode 100644 index 0000000000000..2ebc6516c7df1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-35-b9d66e78b8898a97a42d1118300fa0ce @@ -0,0 +1 @@ +56 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-36-d25f41c6f7c20044ed4d9a9905fdfcce b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-36-d25f41c6f7c20044ed4d9a9905fdfcce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-37-b0ca9e20cd48457e6cf1c313d5505213 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-37-b0ca9e20cd48457e6cf1c313d5505213 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-37-b0ca9e20cd48457e6cf1c313d5505213 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-38-f135547e33c01d1f543c8b1349d60348 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-38-f135547e33c01d1f543c8b1349d60348 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-38-f135547e33c01d1f543c8b1349d60348 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-39-906a582602602372e1d4776243abeab5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-39-906a582602602372e1d4776243abeab5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-4-378d42317b39c6519f15bd2f99c5ddc4 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-4-378d42317b39c6519f15bd2f99c5ddc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-40-94538bc7322522a5534cafc0551d2189 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-40-94538bc7322522a5534cafc0551d2189 new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-40-94538bc7322522a5534cafc0551d2189 @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-41-133023474337f2cdc53ee82ffeb1c13e b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-41-133023474337f2cdc53ee82ffeb1c13e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-42-63261d35ddda973eeeb97b994ab7a476 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-42-63261d35ddda973eeeb97b994ab7a476 new file mode 100644 index 0000000000000..4a9735f855f96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-42-63261d35ddda973eeeb97b994ab7a476 @@ -0,0 +1,6 @@ +0 9 +2 1 +4 1 +5 9 +8 1 +9 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-43-1d603e61c2cb888499504ddab98ccc65 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-43-1d603e61c2cb888499504ddab98ccc65 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-44-d5183dfa8d9fb9175478fb1c2f2edb97 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-44-d5183dfa8d9fb9175478fb1c2f2edb97 new file mode 100644 index 0000000000000..62f9457511f87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-44-d5183dfa8d9fb9175478fb1c2f2edb97 @@ -0,0 +1 @@ +6 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-45-758d5532083d6279e169b54fd69bb580 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-45-758d5532083d6279e169b54fd69bb580 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-46-2798f20aaf0fe5505c34b118e4b10bc5 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-46-2798f20aaf0fe5505c34b118e4b10bc5 new file mode 100644 index 0000000000000..2eafac63a9a98 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-46-2798f20aaf0fe5505c34b118e4b10bc5 @@ -0,0 +1,6 @@ +0 9 9 +2 1 1 +4 1 1 +5 9 9 +8 1 1 +9 1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-47-ca77b5fb54de526972c16ad6118e86d6 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-47-ca77b5fb54de526972c16ad6118e86d6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-48-21269869cd3aaf4ade2170d9017de018 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-48-21269869cd3aaf4ade2170d9017de018 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-48-21269869cd3aaf4ade2170d9017de018 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-49-853c4fa5a2385b92fdb39d0ac2926973 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-49-853c4fa5a2385b92fdb39d0ac2926973 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-5-9140b367b5680860f4c7c0238377583f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-5-9140b367b5680860f4c7c0238377583f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-50-4e0e8cd0626a84b21ca7d2f633623578 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-50-4e0e8cd0626a84b21ca7d2f633623578 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-50-4e0e8cd0626a84b21ca7d2f633623578 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-51-e210ced77b32cd7ce87044bb3e3370d1 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-51-e210ced77b32cd7ce87044bb3e3370d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-52-2fe7b834b341bf18e36cd79dd00ec16a b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-52-2fe7b834b341bf18e36cd79dd00ec16a new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-52-2fe7b834b341bf18e36cd79dd00ec16a @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-53-63d105e0acd3521bb29ba8cec9ac4583 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-53-63d105e0acd3521bb29ba8cec9ac4583 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-54-43ba2c72db9db1ec18d835ec978f8da1 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-54-43ba2c72db9db1ec18d835ec978f8da1 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-54-43ba2c72db9db1ec18d835ec978f8da1 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-55-4376bdd8412f94fe184d46481fee345d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-55-4376bdd8412f94fe184d46481fee345d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-56-b889b147255231f7fe44bd57e1f8ba66 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-56-b889b147255231f7fe44bd57e1f8ba66 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-56-b889b147255231f7fe44bd57e1f8ba66 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-57-c5c3668b2434a5b90f308ca4bbdcd647 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-57-c5c3668b2434a5b90f308ca4bbdcd647 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-58-aa8d713ad4e19b72b5bd7628d60c295e b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-58-aa8d713ad4e19b72b5bd7628d60c295e new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-58-aa8d713ad4e19b72b5bd7628d60c295e @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-59-ff6eca271c60cb15a3ea2395ac737b0d b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-59-ff6eca271c60cb15a3ea2395ac737b0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-6-70c1d66123d434d3a1e1801e0b19bc3f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-6-70c1d66123d434d3a1e1801e0b19bc3f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-60-b9d66e78b8898a97a42d1118300fa0ce b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-60-b9d66e78b8898a97a42d1118300fa0ce new file mode 100644 index 0000000000000..2ebc6516c7df1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-60-b9d66e78b8898a97a42d1118300fa0ce @@ -0,0 +1 @@ +56 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-61-d25f41c6f7c20044ed4d9a9905fdfcce b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-61-d25f41c6f7c20044ed4d9a9905fdfcce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-62-b0ca9e20cd48457e6cf1c313d5505213 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-62-b0ca9e20cd48457e6cf1c313d5505213 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-62-b0ca9e20cd48457e6cf1c313d5505213 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-7-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-7-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-7-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-8-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-8-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-8-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-9-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-9-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/auto_sortmerge_join_9-9-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ba_table1-0-943f9cca5ed3bba5b2c22f49885722c3 b/sql/hive/src/test/resources/golden/ba_table1-0-943f9cca5ed3bba5b2c22f49885722c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table1-1-7b43ffa8083fda74ab342029dce2e3d9 b/sql/hive/src/test/resources/golden/ba_table1-1-7b43ffa8083fda74ab342029dce2e3d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table1-2-7e72160489bbb59dadf24e0cc239a5f4 b/sql/hive/src/test/resources/golden/ba_table1-2-7e72160489bbb59dadf24e0cc239a5f4 new file mode 100644 index 0000000000000..d0eea8a3ca661 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ba_table1-2-7e72160489bbb59dadf24e0cc239a5f4 @@ -0,0 +1,4 @@ +ba_key binary None +ba_val binary None + +Detailed Table Information Table(tableName:ba_test, dbName:default, owner:tnachen, createTime:1392426673, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:ba_key, type:binary, comment:null), FieldSchema(name:ba_val, type:binary, comment:null)], location:file:/tmp/sharkWarehouse2805388002645706641/ba_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1392426673}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/ba_table2-0-943f9cca5ed3bba5b2c22f49885722c3 b/sql/hive/src/test/resources/golden/ba_table2-0-943f9cca5ed3bba5b2c22f49885722c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table2-1-6f3e37cab4fdc60491dea1ff6fc9931a b/sql/hive/src/test/resources/golden/ba_table2-1-6f3e37cab4fdc60491dea1ff6fc9931a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table2-2-8491941c2baa0c7d96e17b8f47dfebe7 b/sql/hive/src/test/resources/golden/ba_table2-2-8491941c2baa0c7d96e17b8f47dfebe7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table2-3-7e72160489bbb59dadf24e0cc239a5f4 b/sql/hive/src/test/resources/golden/ba_table2-3-7e72160489bbb59dadf24e0cc239a5f4 new file mode 100644 index 0000000000000..0a3c9f383a6ef --- /dev/null +++ b/sql/hive/src/test/resources/golden/ba_table2-3-7e72160489bbb59dadf24e0cc239a5f4 @@ -0,0 +1,4 @@ +ba_key binary from deserializer +ba_val binary from deserializer + +Detailed Table Information Table(tableName:ba_test, dbName:default, owner:tnachen, createTime:1392426674, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:ba_key, type:binary, comment:from deserializer), FieldSchema(name:ba_val, type:binary, comment:from deserializer)], location:file:/tmp/sharkWarehouse2805388002645706641/ba_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=tnachen, last_modified_time=1392426674, transient_lastDdlTime=1392426674}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/ba_table3-0-943f9cca5ed3bba5b2c22f49885722c3 b/sql/hive/src/test/resources/golden/ba_table3-0-943f9cca5ed3bba5b2c22f49885722c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table3-1-28b12606c5369c783e63c17826a18d0d b/sql/hive/src/test/resources/golden/ba_table3-1-28b12606c5369c783e63c17826a18d0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table_udfs-0-7a9e67189d3d4151f23b12c22bde06b5 b/sql/hive/src/test/resources/golden/ba_table_udfs-0-7a9e67189d3d4151f23b12c22bde06b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table_udfs-1-3baac4c47f9cb2895f01bcfccd5f904b b/sql/hive/src/test/resources/golden/ba_table_udfs-1-3baac4c47f9cb2895f01bcfccd5f904b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table_union-0-943f9cca5ed3bba5b2c22f49885722c3 b/sql/hive/src/test/resources/golden/ba_table_union-0-943f9cca5ed3bba5b2c22f49885722c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table_union-1-3f8df0a4ab12f1a31a7906e77e9b7b75 b/sql/hive/src/test/resources/golden/ba_table_union-1-3f8df0a4ab12f1a31a7906e77e9b7b75 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ba_table_union-2-7e72160489bbb59dadf24e0cc239a5f4 b/sql/hive/src/test/resources/golden/ba_table_union-2-7e72160489bbb59dadf24e0cc239a5f4 new file mode 100644 index 0000000000000..66d33b789f1a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ba_table_union-2-7e72160489bbb59dadf24e0cc239a5f4 @@ -0,0 +1,4 @@ +ba_key binary None +ba_val binary None + +Detailed Table Information Table(tableName:ba_test, dbName:default, owner:tnachen, createTime:1392426676, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:ba_key, type:binary, comment:null), FieldSchema(name:ba_val, type:binary, comment:null)], location:file:/tmp/sharkWarehouse2805388002645706641/ba_test, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1392426676}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/binary_constant-0-8c922b2264278dd481ef0dff2088e2b8 b/sql/hive/src/test/resources/golden/binary_constant-0-8c922b2264278dd481ef0dff2088e2b8 new file mode 100644 index 0000000000000..2e65efe2a145d --- /dev/null +++ b/sql/hive/src/test/resources/golden/binary_constant-0-8c922b2264278dd481ef0dff2088e2b8 @@ -0,0 +1 @@ +a \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/binary_output_format-0-483cdc9eade175b0c89b9f5b3eb505f1 b/sql/hive/src/test/resources/golden/binary_output_format-0-483cdc9eade175b0c89b9f5b3eb505f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binary_output_format-1-9e0909b6330578a25806527dd0ecf7ef b/sql/hive/src/test/resources/golden/binary_output_format-1-9e0909b6330578a25806527dd0ecf7ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binary_output_format-2-a42be5ce444ef1d2a1dbe654a57d6f55 b/sql/hive/src/test/resources/golden/binary_output_format-2-a42be5ce444ef1d2a1dbe654a57d6f55 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binary_output_format-3-84db2ef4a7f2151e26457db559b862d9 b/sql/hive/src/test/resources/golden/binary_output_format-3-84db2ef4a7f2151e26457db559b862d9 new file mode 100644 index 0000000000000..c5c8d29fdd13e --- /dev/null +++ b/sql/hive/src/test/resources/golden/binary_output_format-3-84db2ef4a7f2151e26457db559b862d9 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/binary_table_bincolserde-0-943f9cca5ed3bba5b2c22f49885722c3 b/sql/hive/src/test/resources/golden/binary_table_bincolserde-0-943f9cca5ed3bba5b2c22f49885722c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binary_table_bincolserde-1-3defb7199b65cfd10cb2f46275c581b2 b/sql/hive/src/test/resources/golden/binary_table_bincolserde-1-3defb7199b65cfd10cb2f46275c581b2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binary_table_bincolserde-2-706a062089583074f30fb13c661fc81e b/sql/hive/src/test/resources/golden/binary_table_bincolserde-2-706a062089583074f30fb13c661fc81e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binary_table_bincolserde-3-7e72160489bbb59dadf24e0cc239a5f4 b/sql/hive/src/test/resources/golden/binary_table_bincolserde-3-7e72160489bbb59dadf24e0cc239a5f4 new file mode 100644 index 0000000000000..df14abbcc193f --- /dev/null +++ b/sql/hive/src/test/resources/golden/binary_table_bincolserde-3-7e72160489bbb59dadf24e0cc239a5f4 @@ -0,0 +1,4 @@ +ba_key binary from deserializer +ba_val binary from deserializer + +Detailed Table Information Table(tableName:ba_test, dbName:default, owner:tnachen, createTime:1392426678, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:ba_key, type:binary, comment:from deserializer), FieldSchema(name:ba_val, type:binary, comment:from deserializer)], location:file:/tmp/sharkWarehouse2805388002645706641/ba_test, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=tnachen, last_modified_time=1392426678, transient_lastDdlTime=1392426678}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/binary_table_colserde-0-943f9cca5ed3bba5b2c22f49885722c3 b/sql/hive/src/test/resources/golden/binary_table_colserde-0-943f9cca5ed3bba5b2c22f49885722c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binary_table_colserde-1-179ac81920d8dfa6e324cc881b5f1624 b/sql/hive/src/test/resources/golden/binary_table_colserde-1-179ac81920d8dfa6e324cc881b5f1624 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binary_table_colserde-2-7e72160489bbb59dadf24e0cc239a5f4 b/sql/hive/src/test/resources/golden/binary_table_colserde-2-7e72160489bbb59dadf24e0cc239a5f4 new file mode 100644 index 0000000000000..0c246ae33e56f --- /dev/null +++ b/sql/hive/src/test/resources/golden/binary_table_colserde-2-7e72160489bbb59dadf24e0cc239a5f4 @@ -0,0 +1,4 @@ +ba_key binary from deserializer +ba_val binary from deserializer + +Detailed Table Information Table(tableName:ba_test, dbName:default, owner:tnachen, createTime:1392426679, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:ba_key, type:binary, comment:null), FieldSchema(name:ba_val, type:binary, comment:null)], location:file:/tmp/sharkWarehouse2805388002645706641/ba_test, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1392426679}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/binarysortable_1-0-3562c2ed956a59cc98362d2f64e19ce1 b/sql/hive/src/test/resources/golden/binarysortable_1-0-3562c2ed956a59cc98362d2f64e19ce1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binarysortable_1-1-4a0ed18480313e66b869ec4f49371cf5 b/sql/hive/src/test/resources/golden/binarysortable_1-1-4a0ed18480313e66b869ec4f49371cf5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binarysortable_1-2-faa8d95365e4116734a056c911350c05 b/sql/hive/src/test/resources/golden/binarysortable_1-2-faa8d95365e4116734a056c911350c05 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/binarysortable_1-3-d6518380547e7eef338886f3bdc7bdd2 b/sql/hive/src/test/resources/golden/binarysortable_1-3-d6518380547e7eef338886f3bdc7bdd2 new file mode 100644 index 0000000000000..27687b47813a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/binarysortable_1-3-d6518380547e7eef338886f3bdc7bdd2 @@ -0,0 +1,10 @@ +^@^@^@ 7.0 +^@^A^@ 9.0 +^@test^@ 2.0 +^A^@^A 10.0 +^A^A^A 8.0 +^Atest^A 3.0 +a^@bc^A^B^A^@ 1.0 +test^@^@^A^Atest 6.0 +test^@test 4.0 +test^Atest 5.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cast1-0-b0e8966b7c06be9e044ed30b487d0661 b/sql/hive/src/test/resources/golden/cast1-0-b0e8966b7c06be9e044ed30b487d0661 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cast1-1-1ee16b8209701131017533cfa6eb4680 b/sql/hive/src/test/resources/golden/cast1-1-1ee16b8209701131017533cfa6eb4680 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cast1-2-3fe73e7435e30b37266ef6a33537dc4c b/sql/hive/src/test/resources/golden/cast1-2-3fe73e7435e30b37266ef6a33537dc4c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cast1-3-18dc2ce8a8b2486d268bceef63aa0c2a b/sql/hive/src/test/resources/golden/cast1-3-18dc2ce8a8b2486d268bceef63aa0c2a new file mode 100644 index 0000000000000..9bdd310949be8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/cast1-3-18dc2ce8a8b2486d268bceef63aa0c2a @@ -0,0 +1 @@ +5 5.0 5.0 5.0 5 true 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cast_to_int-0-ec8e07c04f0e9bc9bb34db97ee6faa98 b/sql/hive/src/test/resources/golden/cast_to_int-0-ec8e07c04f0e9bc9bb34db97ee6faa98 new file mode 100644 index 0000000000000..bbe268ea91ddf --- /dev/null +++ b/sql/hive/src/test/resources/golden/cast_to_int-0-ec8e07c04f0e9bc9bb34db97ee6faa98 @@ -0,0 +1 @@ +1.0 1.4 1.6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 NULL 2147483647 -2147483648 32767 -32768 -128 127 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-0-16681f9c2bdd44278817d72c138b6ee1 b/sql/hive/src/test/resources/golden/cluster-0-16681f9c2bdd44278817d72c138b6ee1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-1-707a2295731e0d631a6c5f71c745c8d5 b/sql/hive/src/test/resources/golden/cluster-1-707a2295731e0d631a6c5f71c745c8d5 new file mode 100644 index 0000000000000..87d0f8dd52b68 --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-1-707a2295731e0d631a6c5f71c745c8d5 @@ -0,0 +1 @@ +10 val_10 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-10-bba339a22907c06d1d01ba9cd7ea8f5 b/sql/hive/src/test/resources/golden/cluster-10-bba339a22907c06d1d01ba9cd7ea8f5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-11-dcf78a6537ba2b4d4b828a9a27cf545e b/sql/hive/src/test/resources/golden/cluster-11-dcf78a6537ba2b4d4b828a9a27cf545e new file mode 100644 index 0000000000000..54864d264245d --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-11-dcf78a6537ba2b4d4b828a9a27cf545e @@ -0,0 +1 @@ +20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-12-6ad920e2ae83c78fccb06ff65308a438 b/sql/hive/src/test/resources/golden/cluster-12-6ad920e2ae83c78fccb06ff65308a438 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-13-12635b4b7f34eba5554d5b892b5b64e7 b/sql/hive/src/test/resources/golden/cluster-13-12635b4b7f34eba5554d5b892b5b64e7 new file mode 100644 index 0000000000000..54864d264245d --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-13-12635b4b7f34eba5554d5b892b5b64e7 @@ -0,0 +1 @@ +20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-14-cd2e125bceb1611137f0750f5d69c475 b/sql/hive/src/test/resources/golden/cluster-14-cd2e125bceb1611137f0750f5d69c475 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-15-b4c15c85c18f310f1b5bc56a78ad94b0 b/sql/hive/src/test/resources/golden/cluster-15-b4c15c85c18f310f1b5bc56a78ad94b0 new file mode 100644 index 0000000000000..54864d264245d --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-15-b4c15c85c18f310f1b5bc56a78ad94b0 @@ -0,0 +1 @@ +20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-16-a2d5e5ec2504041ea1a62856c7086451 b/sql/hive/src/test/resources/golden/cluster-16-a2d5e5ec2504041ea1a62856c7086451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-17-62979aa9e6b4e6ffb44ec452aabbef65 b/sql/hive/src/test/resources/golden/cluster-17-62979aa9e6b4e6ffb44ec452aabbef65 new file mode 100644 index 0000000000000..1a018b640eb6f --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-17-62979aa9e6b4e6ffb44ec452aabbef65 @@ -0,0 +1 @@ +20 val_20 20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-18-e01f450969ae7e1cd018e6ef0cc67141 b/sql/hive/src/test/resources/golden/cluster-18-e01f450969ae7e1cd018e6ef0cc67141 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-19-e5284c7a7c36ee55740bd127ef4bf8c7 b/sql/hive/src/test/resources/golden/cluster-19-e5284c7a7c36ee55740bd127ef4bf8c7 new file mode 100644 index 0000000000000..333a4cf9af123 --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-19-e5284c7a7c36ee55740bd127ef4bf8c7 @@ -0,0 +1 @@ +20 val_20 20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-2-50197277eb03ad20696a135bd7d18de7 b/sql/hive/src/test/resources/golden/cluster-2-50197277eb03ad20696a135bd7d18de7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-20-294891c1d956245540a80aa800ba393d b/sql/hive/src/test/resources/golden/cluster-20-294891c1d956245540a80aa800ba393d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-21-4787b258a786cf195bcb59cd90f6013f b/sql/hive/src/test/resources/golden/cluster-21-4787b258a786cf195bcb59cd90f6013f new file mode 100644 index 0000000000000..333a4cf9af123 --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-21-4787b258a786cf195bcb59cd90f6013f @@ -0,0 +1 @@ +20 val_20 20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-22-8801aa93cf6dba7e13e99a0260fde68 b/sql/hive/src/test/resources/golden/cluster-22-8801aa93cf6dba7e13e99a0260fde68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-23-b66ed6ead4deecd49f0f67de1f2bab2e b/sql/hive/src/test/resources/golden/cluster-23-b66ed6ead4deecd49f0f67de1f2bab2e new file mode 100644 index 0000000000000..1a018b640eb6f --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-23-b66ed6ead4deecd49f0f67de1f2bab2e @@ -0,0 +1 @@ +20 val_20 20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-24-f492a7f78faf180621e83e5a69aa1eae b/sql/hive/src/test/resources/golden/cluster-24-f492a7f78faf180621e83e5a69aa1eae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-25-f57ce48b6a6e671b58c96535ab482b6a b/sql/hive/src/test/resources/golden/cluster-25-f57ce48b6a6e671b58c96535ab482b6a new file mode 100644 index 0000000000000..a79654385b09f --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-25-f57ce48b6a6e671b58c96535ab482b6a @@ -0,0 +1,498 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-3-530671e2a5b8983c60cfedaf486f0f0f b/sql/hive/src/test/resources/golden/cluster-3-530671e2a5b8983c60cfedaf486f0f0f new file mode 100644 index 0000000000000..54864d264245d --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-3-530671e2a5b8983c60cfedaf486f0f0f @@ -0,0 +1 @@ +20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-4-cb4af90f52f2626213f918fda3b81dfc b/sql/hive/src/test/resources/golden/cluster-4-cb4af90f52f2626213f918fda3b81dfc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-5-e99040f6a24c53a4c89801ff3663ff72 b/sql/hive/src/test/resources/golden/cluster-5-e99040f6a24c53a4c89801ff3663ff72 new file mode 100644 index 0000000000000..54864d264245d --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-5-e99040f6a24c53a4c89801ff3663ff72 @@ -0,0 +1 @@ +20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-6-56f8e3e7abe504522a2bfd77b5be3270 b/sql/hive/src/test/resources/golden/cluster-6-56f8e3e7abe504522a2bfd77b5be3270 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-7-a22600d60c81a25061b1e20b6726c691 b/sql/hive/src/test/resources/golden/cluster-7-a22600d60c81a25061b1e20b6726c691 new file mode 100644 index 0000000000000..54864d264245d --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-7-a22600d60c81a25061b1e20b6726c691 @@ -0,0 +1 @@ +20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/cluster-8-251b178e4fe39ea03a30d2b9bd40710d b/sql/hive/src/test/resources/golden/cluster-8-251b178e4fe39ea03a30d2b9bd40710d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cluster-9-cc36ac7ee5e8c6ea21b956abbc2506e2 b/sql/hive/src/test/resources/golden/cluster-9-cc36ac7ee5e8c6ea21b956abbc2506e2 new file mode 100644 index 0000000000000..54864d264245d --- /dev/null +++ b/sql/hive/src/test/resources/golden/cluster-9-cc36ac7ee5e8c6ea21b956abbc2506e2 @@ -0,0 +1 @@ +20 val_20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-0-d300f67f11082f3614a8e93e8808960d b/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-0-d300f67f11082f3614a8e93e8808960d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-1-3a1329c4145738961e1b8bdbd056497c b/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-1-3a1329c4145738961e1b8bdbd056497c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-2-b4b94bc85ee3bdef2b458d974d36935 b/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-2-b4b94bc85ee3bdef2b458d974d36935 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-3-a66dbbe24c9eb33f40dd353ed5a5c14f b/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-3-a66dbbe24c9eb33f40dd353ed5a5c14f new file mode 100644 index 0000000000000..15e92afeeca27 --- /dev/null +++ b/sql/hive/src/test/resources/golden/columnarserde_create_shortcut-3-a66dbbe24c9eb33f40dd353ed5a5c14f @@ -0,0 +1,11 @@ +[0,0,0] ["0","0","0"] {"key_0":"value_0"} 1712634731 record_0 +[1,2,3] ["10","100","1000"] {"key_1":"value_1"} 465985200 record_1 +[2,4,6] ["20","200","2000"] {"key_2":"value_2"} -751827638 record_2 +[3,6,9] ["30","300","3000"] {"key_3":"value_3"} 477111222 record_3 +[4,8,12] ["40","400","4000"] {"key_4":"value_4"} -734328909 record_4 +[5,10,15] ["50","500","5000"] {"key_5":"value_5"} -1952710710 record_5 +[6,12,18] ["60","600","6000"] {"key_6":"value_6"} 1244525190 record_6 +[7,14,21] ["70","700","7000"] {"key_7":"value_7"} -1461153973 record_7 +[8,16,24] ["80","800","8000"] {"key_8":"value_8"} 1638581578 record_8 +[9,18,27] ["90","900","9000"] {"key_9":"value_9"} 336964413 record_9 +NULL NULL NULL 0 NULL diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-0-78efaffd8fd417371fb888d6d1ba995c b/sql/hive/src/test/resources/golden/columnstats_partlvl-0-78efaffd8fd417371fb888d6d1ba995c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-1-6483a7ac7f2312cbbf3fce4c4740edf4 b/sql/hive/src/test/resources/golden/columnstats_partlvl-1-6483a7ac7f2312cbbf3fce4c4740edf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-2-eb06998a353abc3022a9e0a17d5dba59 b/sql/hive/src/test/resources/golden/columnstats_partlvl-2-eb06998a353abc3022a9e0a17d5dba59 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-3-3ab5479f002e412965f259485075f6bd b/sql/hive/src/test/resources/golden/columnstats_partlvl-3-3ab5479f002e412965f259485075f6bd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-4-30d92b61681b9ae7786ed46c3c3e808 b/sql/hive/src/test/resources/golden/columnstats_partlvl-4-30d92b61681b9ae7786ed46c3c3e808 new file mode 100644 index 0000000000000..6ad4db1788424 --- /dev/null +++ b/sql/hive/src/test/resources/golden/columnstats_partlvl-4-30d92b61681b9ae7786ed46c3c3e808 @@ -0,0 +1,58 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME Employee_Part) (TOK_PARTSPEC (TOK_PARTVAL employeeSalary 2000.0))) (TOK_TABCOLNAME employeeID)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + employee_part + TableScan + alias: employee_part + Select Operator + expressions: + expr: employeeid + type: int + outputColumnNames: employeeid + Group By Operator + aggregations: + expr: compute_stats(employeeid, 16) + bucketGroup: false + mode: hash + outputColumnNames: _col0 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: struct + Reduce Operator Tree: + Group By Operator + aggregations: + expr: compute_stats(VALUE._col0) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0 + Select Operator + expressions: + expr: _col0 + type: struct + outputColumnNames: _col0 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-1 + Column Stats Work + Column Stats Desc: + Columns: employeeID + Column Types: int + Partition: employeesalary=2000.0 + Table: Employee_Part + diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-5-f37a302cb19b4fe1c8280c08153294a3 b/sql/hive/src/test/resources/golden/columnstats_partlvl-5-f37a302cb19b4fe1c8280c08153294a3 new file mode 100644 index 0000000000000..91ce2a521cde1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/columnstats_partlvl-5-f37a302cb19b4fe1c8280c08153294a3 @@ -0,0 +1,129 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME Employee_Part) (TOK_PARTSPEC (TOK_PARTVAL employeeSalary 2000.0))) (TOK_TABCOLNAME employeeID)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + employee_part + TableScan + alias: employee_part + GatherStats: false + Select Operator + expressions: + expr: employeeid + type: int + outputColumnNames: employeeid + Group By Operator + aggregations: + expr: compute_stats(employeeid, 16) + bucketGroup: false + mode: hash + outputColumnNames: _col0 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: struct + Path -> Alias: + file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/employee_part/employeesalary=2000.0 [employee_part] + Path -> Partition: + file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/employee_part/employeesalary=2000.0 + Partition + base file name: employeesalary=2000.0 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + employeesalary 2000.0 + properties: + bucket_count -1 + columns employeeid,employeename + columns.types int:string + field.delim | + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/employee_part/employeesalary=2000.0 + name default.employee_part + numFiles 1 + numRows 0 + partition_columns employeesalary + rawDataSize 0 + serialization.ddl struct employee_part { i32 employeeid, string employeename} + serialization.format | + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 105 + transient_lastDdlTime 1389728706 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count -1 + columns employeeid,employeename + columns.types int:string + field.delim | + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/employee_part + name default.employee_part + numFiles 2 + numPartitions 2 + numRows 0 + partition_columns employeesalary + rawDataSize 0 + serialization.ddl struct employee_part { i32 employeeid, string employeename} + serialization.format | + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 210 + transient_lastDdlTime 1389728706 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.employee_part + name: default.employee_part + Truncated Path -> Alias: + /employee_part/employeesalary=2000.0 [employee_part] + Needs Tagging: false + Reduce Operator Tree: + Group By Operator + aggregations: + expr: compute_stats(VALUE._col0) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0 + Select Operator + expressions: + expr: _col0 + type: struct + outputColumnNames: _col0 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/marmbrus/hive_2014-01-14_11-45-07_241_106202206012377173-1/-ext-10001 + NumFilesPerFileSink: 1 + Stats Publishing Key Prefix: file:/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/marmbrus/hive_2014-01-14_11-45-07_241_106202206012377173-1/-ext-10001/ + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types struct + escape.delim \ + hive.serialization.extend.nesting.levels true + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false + + Stage: Stage-1 + Column Stats Work + Column Stats Desc: + Columns: employeeID + Column Types: int + Partition: employeesalary=2000.0 + Table: Employee_Part + Is Table Level Stats: false + diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-6-86ba38eff353a720bbabf726365b6712 b/sql/hive/src/test/resources/golden/columnstats_partlvl-6-86ba38eff353a720bbabf726365b6712 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-7-1f91b01f40c5e87aa33ceb9b5fa0b2f1 b/sql/hive/src/test/resources/golden/columnstats_partlvl-7-1f91b01f40c5e87aa33ceb9b5fa0b2f1 new file mode 100644 index 0000000000000..777024f6946e3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/columnstats_partlvl-7-1f91b01f40c5e87aa33ceb9b5fa0b2f1 @@ -0,0 +1,58 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME Employee_Part) (TOK_PARTSPEC (TOK_PARTVAL employeeSalary 4000.0))) (TOK_TABCOLNAME employeeID)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + employee_part + TableScan + alias: employee_part + Select Operator + expressions: + expr: employeeid + type: int + outputColumnNames: employeeid + Group By Operator + aggregations: + expr: compute_stats(employeeid, 16) + bucketGroup: false + mode: hash + outputColumnNames: _col0 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: struct + Reduce Operator Tree: + Group By Operator + aggregations: + expr: compute_stats(VALUE._col0) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0 + Select Operator + expressions: + expr: _col0 + type: struct + outputColumnNames: _col0 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-1 + Column Stats Work + Column Stats Desc: + Columns: employeeID + Column Types: int + Partition: employeesalary=4000.0 + Table: Employee_Part + diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-8-dc5682403f4154cef30860f2b4e37bce b/sql/hive/src/test/resources/golden/columnstats_partlvl-8-dc5682403f4154cef30860f2b4e37bce new file mode 100644 index 0000000000000..cd72c7efbf56f --- /dev/null +++ b/sql/hive/src/test/resources/golden/columnstats_partlvl-8-dc5682403f4154cef30860f2b4e37bce @@ -0,0 +1,129 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME Employee_Part) (TOK_PARTSPEC (TOK_PARTVAL employeeSalary 4000.0))) (TOK_TABCOLNAME employeeID)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + employee_part + TableScan + alias: employee_part + GatherStats: false + Select Operator + expressions: + expr: employeeid + type: int + outputColumnNames: employeeid + Group By Operator + aggregations: + expr: compute_stats(employeeid, 16) + bucketGroup: false + mode: hash + outputColumnNames: _col0 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: struct + Path -> Alias: + file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/employee_part/employeesalary=4000.0 [employee_part] + Path -> Partition: + file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/employee_part/employeesalary=4000.0 + Partition + base file name: employeesalary=4000.0 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + employeesalary 4000.0 + properties: + bucket_count -1 + columns employeeid,employeename + columns.types int:string + field.delim | + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/employee_part/employeesalary=4000.0 + name default.employee_part + numFiles 1 + numRows 0 + partition_columns employeesalary + rawDataSize 0 + serialization.ddl struct employee_part { i32 employeeid, string employeename} + serialization.format | + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 105 + transient_lastDdlTime 1389728706 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count -1 + columns employeeid,employeename + columns.types int:string + field.delim | + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/employee_part + name default.employee_part + numFiles 2 + numPartitions 2 + numRows 0 + partition_columns employeesalary + rawDataSize 0 + serialization.ddl struct employee_part { i32 employeeid, string employeename} + serialization.format | + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 210 + transient_lastDdlTime 1389728706 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.employee_part + name: default.employee_part + Truncated Path -> Alias: + /employee_part/employeesalary=4000.0 [employee_part] + Needs Tagging: false + Reduce Operator Tree: + Group By Operator + aggregations: + expr: compute_stats(VALUE._col0) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0 + Select Operator + expressions: + expr: _col0 + type: struct + outputColumnNames: _col0 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/marmbrus/hive_2014-01-14_11-45-24_849_6968895828655634809-1/-ext-10001 + NumFilesPerFileSink: 1 + Stats Publishing Key Prefix: file:/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/marmbrus/hive_2014-01-14_11-45-24_849_6968895828655634809-1/-ext-10001/ + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types struct + escape.delim \ + hive.serialization.extend.nesting.levels true + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false + + Stage: Stage-1 + Column Stats Work + Column Stats Desc: + Columns: employeeID + Column Types: int + Partition: employeesalary=4000.0 + Table: Employee_Part + Is Table Level Stats: false + diff --git a/sql/hive/src/test/resources/golden/columnstats_partlvl-9-ddd27c2a530d8cea3df6f2a4917aabe b/sql/hive/src/test/resources/golden/columnstats_partlvl-9-ddd27c2a530d8cea3df6f2a4917aabe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-0-ada4896eb3d16ba1cd5ed5b439f2a875 b/sql/hive/src/test/resources/golden/columnstats_tbllvl-0-ada4896eb3d16ba1cd5ed5b439f2a875 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-1-d5b5623715ee672e2f12b3fa775dc67c b/sql/hive/src/test/resources/golden/columnstats_tbllvl-1-d5b5623715ee672e2f12b3fa775dc67c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-2-9cfeaeeb342d7eda1f9be97b4f7991f3 b/sql/hive/src/test/resources/golden/columnstats_tbllvl-2-9cfeaeeb342d7eda1f9be97b4f7991f3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-3-7c45bd1125420b85a0374fecbf947a95 b/sql/hive/src/test/resources/golden/columnstats_tbllvl-3-7c45bd1125420b85a0374fecbf947a95 new file mode 100644 index 0000000000000..d1e5e7375467d --- /dev/null +++ b/sql/hive/src/test/resources/golden/columnstats_tbllvl-3-7c45bd1125420b85a0374fecbf947a95 @@ -0,0 +1,73 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME UserVisits_web_text_none)) (TOK_TABCOLNAME sourceIP avgTimeOnSite adRevenue)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + uservisits_web_text_none + TableScan + alias: uservisits_web_text_none + Select Operator + expressions: + expr: sourceip + type: string + expr: avgtimeonsite + type: int + expr: adrevenue + type: float + outputColumnNames: sourceip, avgtimeonsite, adrevenue + Group By Operator + aggregations: + expr: compute_stats(sourceip, 16) + expr: compute_stats(avgtimeonsite, 16) + expr: compute_stats(adrevenue, 16) + bucketGroup: false + mode: hash + outputColumnNames: _col0, _col1, _col2 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: struct + expr: _col1 + type: struct + expr: _col2 + type: struct + Reduce Operator Tree: + Group By Operator + aggregations: + expr: compute_stats(VALUE._col0) + expr: compute_stats(VALUE._col1) + expr: compute_stats(VALUE._col2) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Select Operator + expressions: + expr: _col0 + type: struct + expr: _col1 + type: struct + expr: _col2 + type: struct + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-1 + Column Stats Work + Column Stats Desc: + Columns: sourceIP, avgTimeOnSite, adRevenue + Column Types: string, int, float + Table: UserVisits_web_text_none + diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-4-d20bef3e7fe811a9029c969dec1b6770 b/sql/hive/src/test/resources/golden/columnstats_tbllvl-4-d20bef3e7fe811a9029c969dec1b6770 new file mode 100644 index 0000000000000..3f3aa581b43f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/columnstats_tbllvl-4-d20bef3e7fe811a9029c969dec1b6770 @@ -0,0 +1,141 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME UserVisits_web_text_none)) (TOK_TABCOLNAME sourceIP avgTimeOnSite adRevenue)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + uservisits_web_text_none + TableScan + alias: uservisits_web_text_none + GatherStats: false + Select Operator + expressions: + expr: sourceip + type: string + expr: avgtimeonsite + type: int + expr: adrevenue + type: float + outputColumnNames: sourceip, avgtimeonsite, adrevenue + Group By Operator + aggregations: + expr: compute_stats(sourceip, 16) + expr: compute_stats(avgtimeonsite, 16) + expr: compute_stats(adrevenue, 16) + bucketGroup: false + mode: hash + outputColumnNames: _col0, _col1, _col2 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: struct + expr: _col1 + type: struct + expr: _col2 + type: struct + Path -> Alias: + file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/uservisits_web_text_none [uservisits_web_text_none] + Path -> Partition: + file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/uservisits_web_text_none + Partition + base file name: uservisits_web_text_none + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count -1 + columns sourceip,desturl,visitdate,adrevenue,useragent,ccode,lcode,skeyword,avgtimeonsite + columns.types string:string:string:float:string:string:string:string:int + field.delim | + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/uservisits_web_text_none + name default.uservisits_web_text_none + numFiles 1 + numPartitions 0 + numRows 0 + rawDataSize 0 + serialization.ddl struct uservisits_web_text_none { string sourceip, string desturl, string visitdate, float adrevenue, string useragent, string ccode, string lcode, string skeyword, i32 avgtimeonsite} + serialization.format | + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 7060 + transient_lastDdlTime 1389728748 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count -1 + columns sourceip,desturl,visitdate,adrevenue,useragent,ccode,lcode,skeyword,avgtimeonsite + columns.types string:string:string:float:string:string:string:string:int + field.delim | + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7107609744565894054/uservisits_web_text_none + name default.uservisits_web_text_none + numFiles 1 + numPartitions 0 + numRows 0 + rawDataSize 0 + serialization.ddl struct uservisits_web_text_none { string sourceip, string desturl, string visitdate, float adrevenue, string useragent, string ccode, string lcode, string skeyword, i32 avgtimeonsite} + serialization.format | + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 7060 + transient_lastDdlTime 1389728748 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.uservisits_web_text_none + name: default.uservisits_web_text_none + Truncated Path -> Alias: + /uservisits_web_text_none [uservisits_web_text_none] + Needs Tagging: false + Reduce Operator Tree: + Group By Operator + aggregations: + expr: compute_stats(VALUE._col0) + expr: compute_stats(VALUE._col1) + expr: compute_stats(VALUE._col2) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0, _col1, _col2 + Select Operator + expressions: + expr: _col0 + type: struct + expr: _col1 + type: struct + expr: _col2 + type: struct + outputColumnNames: _col0, _col1, _col2 + File Output Operator + compressed: false + GlobalTableId: 0 + directory: file:/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/marmbrus/hive_2014-01-14_11-45-49_160_8862102294255849057-1/-ext-10001 + NumFilesPerFileSink: 1 + Stats Publishing Key Prefix: file:/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/marmbrus/hive_2014-01-14_11-45-49_160_8862102294255849057-1/-ext-10001/ + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2 + columns.types struct:struct:struct + escape.delim \ + hive.serialization.extend.nesting.levels true + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false + + Stage: Stage-1 + Column Stats Work + Column Stats Desc: + Columns: sourceIP, avgTimeOnSite, adRevenue + Column Types: string, int, float + Table: UserVisits_web_text_none + Is Table Level Stats: true + diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-5-ebf2d35321a3af996c150c6072d16a8c b/sql/hive/src/test/resources/golden/columnstats_tbllvl-5-ebf2d35321a3af996c150c6072d16a8c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-6-46c090f169c8dc7dbc24c2264da20f55 b/sql/hive/src/test/resources/golden/columnstats_tbllvl-6-46c090f169c8dc7dbc24c2264da20f55 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-7-ce5ad528f8b9ad2c309aea199cbe769d b/sql/hive/src/test/resources/golden/columnstats_tbllvl-7-ce5ad528f8b9ad2c309aea199cbe769d new file mode 100644 index 0000000000000..4ff444febde63 --- /dev/null +++ b/sql/hive/src/test/resources/golden/columnstats_tbllvl-7-ce5ad528f8b9ad2c309aea199cbe769d @@ -0,0 +1,89 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME empty_tab)) (TOK_TABCOLNAME a b c d e)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + empty_tab + TableScan + alias: empty_tab + Select Operator + expressions: + expr: a + type: int + expr: b + type: double + expr: c + type: string + expr: d + type: boolean + expr: e + type: binary + outputColumnNames: a, b, c, d, e + Group By Operator + aggregations: + expr: compute_stats(a, 16) + expr: compute_stats(b, 16) + expr: compute_stats(c, 16) + expr: compute_stats(d, 16) + expr: compute_stats(e, 16) + bucketGroup: false + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: _col0 + type: struct + expr: _col1 + type: struct + expr: _col2 + type: struct + expr: _col3 + type: struct + expr: _col4 + type: struct + Reduce Operator Tree: + Group By Operator + aggregations: + expr: compute_stats(VALUE._col0) + expr: compute_stats(VALUE._col1) + expr: compute_stats(VALUE._col2) + expr: compute_stats(VALUE._col3) + expr: compute_stats(VALUE._col4) + bucketGroup: false + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Select Operator + expressions: + expr: _col0 + type: struct + expr: _col1 + type: struct + expr: _col2 + type: struct + expr: _col3 + type: struct + expr: _col4 + type: struct + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + File Output Operator + compressed: false + GlobalTableId: 0 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + + Stage: Stage-1 + Column Stats Work + Column Stats Desc: + Columns: a, b, c, d, e + Column Types: int, double, string, boolean, binary + Table: empty_tab + diff --git a/sql/hive/src/test/resources/golden/columnstats_tbllvl-8-716c74ca8a0fc8c88e898163a8e41b8f b/sql/hive/src/test/resources/golden/columnstats_tbllvl-8-716c74ca8a0fc8c88e898163a8e41b8f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine1-0-84b74227c9f1563f530cd3ac3b333e54 b/sql/hive/src/test/resources/golden/combine1-0-84b74227c9f1563f530cd3ac3b333e54 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine1-0-84b74227c9f1563f530cd3ac3b333e54 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine1-1-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/combine1-1-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine1-1-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine1-2-c95dc367df88c9e5cf77157f29ba2daf b/sql/hive/src/test/resources/golden/combine1-2-c95dc367df88c9e5cf77157f29ba2daf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine1-2-c95dc367df88c9e5cf77157f29ba2daf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine1-3-6e53a3ac93113f20db3a12f1dcf30e86 b/sql/hive/src/test/resources/golden/combine1-3-6e53a3ac93113f20db3a12f1dcf30e86 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine1-3-6e53a3ac93113f20db3a12f1dcf30e86 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine1-4-84967075baa3e56fff2a23f8ab9ba076 b/sql/hive/src/test/resources/golden/combine1-4-84967075baa3e56fff2a23f8ab9ba076 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine1-4-84967075baa3e56fff2a23f8ab9ba076 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine1-5-2ee5d706fe3a3bcc38b795f6e94970ea b/sql/hive/src/test/resources/golden/combine1-5-2ee5d706fe3a3bcc38b795f6e94970ea new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine1-5-2ee5d706fe3a3bcc38b795f6e94970ea @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine1-6-1d1f97cce07323812de3027920b04b75 b/sql/hive/src/test/resources/golden/combine1-6-1d1f97cce07323812de3027920b04b75 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine1-6-1d1f97cce07323812de3027920b04b75 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine1-7-f7d8d6d0e9504b4dd2f1a557c0c69c30 b/sql/hive/src/test/resources/golden/combine1-7-f7d8d6d0e9504b4dd2f1a557c0c69c30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine1-8-da1fda96db80592bf2bbda8f22b5687c b/sql/hive/src/test/resources/golden/combine1-8-da1fda96db80592bf2bbda8f22b5687c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine1-9-e5ce23369b0ad260512a0f61c6969b73 b/sql/hive/src/test/resources/golden/combine1-9-e5ce23369b0ad260512a0f61c6969b73 new file mode 100644 index 0000000000000..8f8e1f4b21fe3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine1-9-e5ce23369b0ad260512a0f61c6969b73 @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +10 val_10 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +11 val_11 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +12 val_12 +12 val_12 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +15 val_15 +15 val_15 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +17 val_17 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +18 val_18 +18 val_18 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +19 val_19 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +2 val_2 +20 val_20 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +24 val_24 +24 val_24 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +26 val_26 +26 val_26 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +27 val_27 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +28 val_28 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +30 val_30 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +33 val_33 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +34 val_34 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +35 val_35 +35 val_35 +35 val_35 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +37 val_37 +37 val_37 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +4 val_4 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +41 val_41 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +42 val_42 +42 val_42 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +43 val_43 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +44 val_44 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +47 val_47 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +8 val_8 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +9 val_9 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2-0-7a9e67189d3d4151f23b12c22bde06b5 b/sql/hive/src/test/resources/golden/combine2-0-7a9e67189d3d4151f23b12c22bde06b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2-1-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/combine2-1-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-1-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2-10-54649f87d403c6fcb163c4d51e382d3a b/sql/hive/src/test/resources/golden/combine2-10-54649f87d403c6fcb163c4d51e382d3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2-11-2d2d73a929c7d995ea57b40529b74b56 b/sql/hive/src/test/resources/golden/combine2-11-2d2d73a929c7d995ea57b40529b74b56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2-12-cd15ffd140539cf86090814729ec4748 b/sql/hive/src/test/resources/golden/combine2-12-cd15ffd140539cf86090814729ec4748 new file mode 100644 index 0000000000000..4c538dc5ccda1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-12-cd15ffd140539cf86090814729ec4748 @@ -0,0 +1,8 @@ +value=2010-04-21 09%3A45%3A00 +value=val_0 +value=val_2 +value=val_4 +value=val_5 +value=val_8 +value=val_9 +value=| diff --git a/sql/hive/src/test/resources/golden/combine2-13-5ac3e540fd24f94fee378e49597817b3 b/sql/hive/src/test/resources/golden/combine2-13-5ac3e540fd24f94fee378e49597817b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2-14-4695309eb4e91ef29c9857aa8fd6130c b/sql/hive/src/test/resources/golden/combine2-14-4695309eb4e91ef29c9857aa8fd6130c new file mode 100644 index 0000000000000..d492cb3452d87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-14-4695309eb4e91ef29c9857aa8fd6130c @@ -0,0 +1,12 @@ +0 val_0 +0 val_0 +0 val_0 +11 | +19 2010-04-21 09:45:00 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 diff --git a/sql/hive/src/test/resources/golden/combine2-15-dd652175dac4463fed3c56aded11e6c1 b/sql/hive/src/test/resources/golden/combine2-15-dd652175dac4463fed3c56aded11e6c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2-16-557997716a68312e8cae75428e3ce31 b/sql/hive/src/test/resources/golden/combine2-16-557997716a68312e8cae75428e3ce31 new file mode 100644 index 0000000000000..48082f72f087c --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-16-557997716a68312e8cae75428e3ce31 @@ -0,0 +1 @@ +12 diff --git a/sql/hive/src/test/resources/golden/combine2-17-8e4598e3f0701478ed12042438699ce5 b/sql/hive/src/test/resources/golden/combine2-17-8e4598e3f0701478ed12042438699ce5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2-18-2af7419c1d84fe155e23f3972e049b97 b/sql/hive/src/test/resources/golden/combine2-18-2af7419c1d84fe155e23f3972e049b97 new file mode 100644 index 0000000000000..41be2c5b41f01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-18-2af7419c1d84fe155e23f3972e049b97 @@ -0,0 +1,2 @@ +2008-04-08 1000 +2008-04-09 1000 diff --git a/sql/hive/src/test/resources/golden/combine2-2-c95dc367df88c9e5cf77157f29ba2daf b/sql/hive/src/test/resources/golden/combine2-2-c95dc367df88c9e5cf77157f29ba2daf new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-2-c95dc367df88c9e5cf77157f29ba2daf @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2-3-6e53a3ac93113f20db3a12f1dcf30e86 b/sql/hive/src/test/resources/golden/combine2-3-6e53a3ac93113f20db3a12f1dcf30e86 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-3-6e53a3ac93113f20db3a12f1dcf30e86 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2-4-84967075baa3e56fff2a23f8ab9ba076 b/sql/hive/src/test/resources/golden/combine2-4-84967075baa3e56fff2a23f8ab9ba076 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-4-84967075baa3e56fff2a23f8ab9ba076 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2-5-2ee5d706fe3a3bcc38b795f6e94970ea b/sql/hive/src/test/resources/golden/combine2-5-2ee5d706fe3a3bcc38b795f6e94970ea new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-5-2ee5d706fe3a3bcc38b795f6e94970ea @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2-6-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/combine2-6-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-6-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2-7-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/combine2-7-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-7-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2-8-99d1f07b2ce904afd6a809fd1814efe9 b/sql/hive/src/test/resources/golden/combine2-8-99d1f07b2ce904afd6a809fd1814efe9 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-8-99d1f07b2ce904afd6a809fd1814efe9 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2-9-30cb07965e4b5025545361b948fc83c2 b/sql/hive/src/test/resources/golden/combine2-9-30cb07965e4b5025545361b948fc83c2 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2-9-30cb07965e4b5025545361b948fc83c2 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-0-7a9e67189d3d4151f23b12c22bde06b5 b/sql/hive/src/test/resources/golden/combine2_hadoop20-0-7a9e67189d3d4151f23b12c22bde06b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-1-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/combine2_hadoop20-1-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-1-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-10-a5c8b73241600b6e2af8b3a41f5f5055 b/sql/hive/src/test/resources/golden/combine2_hadoop20-10-a5c8b73241600b6e2af8b3a41f5f5055 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-11-e25fd9e055710371ec90e0730c92f272 b/sql/hive/src/test/resources/golden/combine2_hadoop20-11-e25fd9e055710371ec90e0730c92f272 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-12-cd15ffd140539cf86090814729ec4748 b/sql/hive/src/test/resources/golden/combine2_hadoop20-12-cd15ffd140539cf86090814729ec4748 new file mode 100644 index 0000000000000..80fa68b84c17e --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-12-cd15ffd140539cf86090814729ec4748 @@ -0,0 +1,8 @@ +value=2010-04-21 09%3A45%3A00 +value=val_0 +value=val_2 +value=val_4 +value=val_5 +value=val_8 +value=val_9 +value=| \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-13-5ac3e540fd24f94fee378e49597817b3 b/sql/hive/src/test/resources/golden/combine2_hadoop20-13-5ac3e540fd24f94fee378e49597817b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-14-4695309eb4e91ef29c9857aa8fd6130c b/sql/hive/src/test/resources/golden/combine2_hadoop20-14-4695309eb4e91ef29c9857aa8fd6130c new file mode 100644 index 0000000000000..ff6141674e603 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-14-4695309eb4e91ef29c9857aa8fd6130c @@ -0,0 +1,12 @@ +0 val_0 +0 val_0 +0 val_0 +11 | +19 2010-04-21 09:45:00 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-15-dd652175dac4463fed3c56aded11e6c1 b/sql/hive/src/test/resources/golden/combine2_hadoop20-15-dd652175dac4463fed3c56aded11e6c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-16-557997716a68312e8cae75428e3ce31 b/sql/hive/src/test/resources/golden/combine2_hadoop20-16-557997716a68312e8cae75428e3ce31 new file mode 100644 index 0000000000000..3cacc0b93c9c9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-16-557997716a68312e8cae75428e3ce31 @@ -0,0 +1 @@ +12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-17-8e4598e3f0701478ed12042438699ce5 b/sql/hive/src/test/resources/golden/combine2_hadoop20-17-8e4598e3f0701478ed12042438699ce5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-18-2af7419c1d84fe155e23f3972e049b97 b/sql/hive/src/test/resources/golden/combine2_hadoop20-18-2af7419c1d84fe155e23f3972e049b97 new file mode 100644 index 0000000000000..1a0aa74952afa --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-18-2af7419c1d84fe155e23f3972e049b97 @@ -0,0 +1,2 @@ +2008-04-08 1000 +2008-04-09 1000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-2-c95dc367df88c9e5cf77157f29ba2daf b/sql/hive/src/test/resources/golden/combine2_hadoop20-2-c95dc367df88c9e5cf77157f29ba2daf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-2-c95dc367df88c9e5cf77157f29ba2daf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-3-6e53a3ac93113f20db3a12f1dcf30e86 b/sql/hive/src/test/resources/golden/combine2_hadoop20-3-6e53a3ac93113f20db3a12f1dcf30e86 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-3-6e53a3ac93113f20db3a12f1dcf30e86 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-4-84967075baa3e56fff2a23f8ab9ba076 b/sql/hive/src/test/resources/golden/combine2_hadoop20-4-84967075baa3e56fff2a23f8ab9ba076 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-4-84967075baa3e56fff2a23f8ab9ba076 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-5-2ee5d706fe3a3bcc38b795f6e94970ea b/sql/hive/src/test/resources/golden/combine2_hadoop20-5-2ee5d706fe3a3bcc38b795f6e94970ea new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-5-2ee5d706fe3a3bcc38b795f6e94970ea @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-6-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/combine2_hadoop20-6-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-6-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-7-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/combine2_hadoop20-7-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-7-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-8-99d1f07b2ce904afd6a809fd1814efe9 b/sql/hive/src/test/resources/golden/combine2_hadoop20-8-99d1f07b2ce904afd6a809fd1814efe9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-8-99d1f07b2ce904afd6a809fd1814efe9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_hadoop20-9-30cb07965e4b5025545361b948fc83c2 b/sql/hive/src/test/resources/golden/combine2_hadoop20-9-30cb07965e4b5025545361b948fc83c2 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_hadoop20-9-30cb07965e4b5025545361b948fc83c2 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-0-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/combine2_win-0-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-0-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-1-c95dc367df88c9e5cf77157f29ba2daf b/sql/hive/src/test/resources/golden/combine2_win-1-c95dc367df88c9e5cf77157f29ba2daf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-1-c95dc367df88c9e5cf77157f29ba2daf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-10-66ee1339a5a8cc224e83d583acc709c4 b/sql/hive/src/test/resources/golden/combine2_win-10-66ee1339a5a8cc224e83d583acc709c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_win-11-cd15ffd140539cf86090814729ec4748 b/sql/hive/src/test/resources/golden/combine2_win-11-cd15ffd140539cf86090814729ec4748 new file mode 100644 index 0000000000000..80fa68b84c17e --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-11-cd15ffd140539cf86090814729ec4748 @@ -0,0 +1,8 @@ +value=2010-04-21 09%3A45%3A00 +value=val_0 +value=val_2 +value=val_4 +value=val_5 +value=val_8 +value=val_9 +value=| \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-12-5ac3e540fd24f94fee378e49597817b3 b/sql/hive/src/test/resources/golden/combine2_win-12-5ac3e540fd24f94fee378e49597817b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_win-13-4695309eb4e91ef29c9857aa8fd6130c b/sql/hive/src/test/resources/golden/combine2_win-13-4695309eb4e91ef29c9857aa8fd6130c new file mode 100644 index 0000000000000..ff6141674e603 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-13-4695309eb4e91ef29c9857aa8fd6130c @@ -0,0 +1,12 @@ +0 val_0 +0 val_0 +0 val_0 +11 | +19 2010-04-21 09:45:00 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-14-dd652175dac4463fed3c56aded11e6c1 b/sql/hive/src/test/resources/golden/combine2_win-14-dd652175dac4463fed3c56aded11e6c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_win-15-557997716a68312e8cae75428e3ce31 b/sql/hive/src/test/resources/golden/combine2_win-15-557997716a68312e8cae75428e3ce31 new file mode 100644 index 0000000000000..3cacc0b93c9c9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-15-557997716a68312e8cae75428e3ce31 @@ -0,0 +1 @@ +12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-16-8e4598e3f0701478ed12042438699ce5 b/sql/hive/src/test/resources/golden/combine2_win-16-8e4598e3f0701478ed12042438699ce5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine2_win-17-2af7419c1d84fe155e23f3972e049b97 b/sql/hive/src/test/resources/golden/combine2_win-17-2af7419c1d84fe155e23f3972e049b97 new file mode 100644 index 0000000000000..1a0aa74952afa --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-17-2af7419c1d84fe155e23f3972e049b97 @@ -0,0 +1,2 @@ +2008-04-08 1000 +2008-04-09 1000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-2-6e53a3ac93113f20db3a12f1dcf30e86 b/sql/hive/src/test/resources/golden/combine2_win-2-6e53a3ac93113f20db3a12f1dcf30e86 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-2-6e53a3ac93113f20db3a12f1dcf30e86 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-3-84967075baa3e56fff2a23f8ab9ba076 b/sql/hive/src/test/resources/golden/combine2_win-3-84967075baa3e56fff2a23f8ab9ba076 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-3-84967075baa3e56fff2a23f8ab9ba076 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-4-2ee5d706fe3a3bcc38b795f6e94970ea b/sql/hive/src/test/resources/golden/combine2_win-4-2ee5d706fe3a3bcc38b795f6e94970ea new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-4-2ee5d706fe3a3bcc38b795f6e94970ea @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-5-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/combine2_win-5-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-5-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-6-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/combine2_win-6-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-6-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-7-99d1f07b2ce904afd6a809fd1814efe9 b/sql/hive/src/test/resources/golden/combine2_win-7-99d1f07b2ce904afd6a809fd1814efe9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-7-99d1f07b2ce904afd6a809fd1814efe9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-8-30cb07965e4b5025545361b948fc83c2 b/sql/hive/src/test/resources/golden/combine2_win-8-30cb07965e4b5025545361b948fc83c2 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine2_win-8-30cb07965e4b5025545361b948fc83c2 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/combine2_win-9-7fd472d5ba7a41eb391f723c6dcf42af b/sql/hive/src/test/resources/golden/combine2_win-9-7fd472d5ba7a41eb391f723c6dcf42af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-0-84b74227c9f1563f530cd3ac3b333e54 b/sql/hive/src/test/resources/golden/combine3-0-84b74227c9f1563f530cd3ac3b333e54 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-0-84b74227c9f1563f530cd3ac3b333e54 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine3-1-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/combine3-1-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-1-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine3-10-fb173ed4483e732d367e51f88be793b1 b/sql/hive/src/test/resources/golden/combine3-10-fb173ed4483e732d367e51f88be793b1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-11-30b8b79049113252bec1cbeac4018a3 b/sql/hive/src/test/resources/golden/combine3-11-30b8b79049113252bec1cbeac4018a3 new file mode 100644 index 0000000000000..80665a4d4c983 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-11-30b8b79049113252bec1cbeac4018a3 @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Partition Information Partition(values:[2010-08-03, 00], dbName:default, tableName:combine_3_srcpart_seq_rc, createTime:1390898644, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/combine_3_srcpart_seq_rc/ds=2010-08-03/hr=00, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1390898644, numRows=500, totalSize=15250, rawDataSize=5312}) diff --git a/sql/hive/src/test/resources/golden/combine3-12-f4baee25e0ad813258d67d707a6fc43b b/sql/hive/src/test/resources/golden/combine3-12-f4baee25e0ad813258d67d707a6fc43b new file mode 100644 index 0000000000000..5a87a3aec7cf5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-12-f4baee25e0ad813258d67d707a6fc43b @@ -0,0 +1,12 @@ +key int from deserializer +value string from deserializer +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Partition Information Partition(values:[2010-08-03, 001], dbName:default, tableName:combine_3_srcpart_seq_rc, createTime:1390898653, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/combine_3_srcpart_seq_rc/ds=2010-08-03/hr=001, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1390898653, numRows=500, totalSize=2202, rawDataSize=4551}) diff --git a/sql/hive/src/test/resources/golden/combine3-13-1c359bedf474e8e26f3b3562f7af6edc b/sql/hive/src/test/resources/golden/combine3-13-1c359bedf474e8e26f3b3562f7af6edc new file mode 100644 index 0000000000000..7b6455db7834b --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-13-1c359bedf474e8e26f3b3562f7af6edc @@ -0,0 +1,30 @@ +0 val_0 2010-08-03 00 +0 val_0 2010-08-03 00 +0 val_0 2010-08-03 00 +0 val_0 2010-08-03 001 +0 val_0 2010-08-03 001 +0 val_0 2010-08-03 001 +2 val_2 2010-08-03 00 +2 val_2 2010-08-03 001 +4 val_4 2010-08-03 00 +4 val_4 2010-08-03 001 +5 val_5 2010-08-03 00 +5 val_5 2010-08-03 00 +5 val_5 2010-08-03 00 +5 val_5 2010-08-03 001 +5 val_5 2010-08-03 001 +5 val_5 2010-08-03 001 +8 val_8 2010-08-03 00 +8 val_8 2010-08-03 001 +9 val_9 2010-08-03 00 +9 val_9 2010-08-03 001 +10 val_10 2010-08-03 00 +10 val_10 2010-08-03 001 +11 val_11 2010-08-03 00 +11 val_11 2010-08-03 001 +12 val_12 2010-08-03 00 +12 val_12 2010-08-03 00 +12 val_12 2010-08-03 001 +12 val_12 2010-08-03 001 +15 val_15 2010-08-03 00 +15 val_15 2010-08-03 00 diff --git a/sql/hive/src/test/resources/golden/combine3-14-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/combine3-14-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-14-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine3-15-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/combine3-15-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-15-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine3-16-6635f7f5c55557b06ad3acc321eaa739 b/sql/hive/src/test/resources/golden/combine3-16-6635f7f5c55557b06ad3acc321eaa739 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-17-8cb751103da7c909276db6bddb50ae6a b/sql/hive/src/test/resources/golden/combine3-17-8cb751103da7c909276db6bddb50ae6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-18-31fae7c6be75b97d475512bd75a58a0b b/sql/hive/src/test/resources/golden/combine3-18-31fae7c6be75b97d475512bd75a58a0b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-19-e30d6cd92dc5a7a86fb2b9154497b04f b/sql/hive/src/test/resources/golden/combine3-19-e30d6cd92dc5a7a86fb2b9154497b04f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-2-c95dc367df88c9e5cf77157f29ba2daf b/sql/hive/src/test/resources/golden/combine3-2-c95dc367df88c9e5cf77157f29ba2daf new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-2-c95dc367df88c9e5cf77157f29ba2daf @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine3-20-5bd4bb8b05f31b14bbc59287dff01ffd b/sql/hive/src/test/resources/golden/combine3-20-5bd4bb8b05f31b14bbc59287dff01ffd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-21-8ba8f8723c1530be062cefc2d9246e56 b/sql/hive/src/test/resources/golden/combine3-21-8ba8f8723c1530be062cefc2d9246e56 new file mode 100644 index 0000000000000..d57cb5369e219 --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-21-8ba8f8723c1530be062cefc2d9246e56 @@ -0,0 +1,30 @@ +0 1 +0 1 +0 1 +0 11 +0 11 +0 11 +2 1 +2 11 +4 1 +4 11 +8 1 +8 11 +10 1 +10 11 +12 1 +12 1 +12 11 +12 11 +18 1 +18 1 +18 11 +18 11 +20 1 +20 11 +24 1 +24 1 +24 11 +24 11 +26 1 +26 1 diff --git a/sql/hive/src/test/resources/golden/combine3-22-11025483569617a9f014b5defd71e933 b/sql/hive/src/test/resources/golden/combine3-22-11025483569617a9f014b5defd71e933 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-23-4725c48df09565618cbffd05953a5f62 b/sql/hive/src/test/resources/golden/combine3-23-4725c48df09565618cbffd05953a5f62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-3-6e53a3ac93113f20db3a12f1dcf30e86 b/sql/hive/src/test/resources/golden/combine3-3-6e53a3ac93113f20db3a12f1dcf30e86 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-3-6e53a3ac93113f20db3a12f1dcf30e86 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine3-4-84967075baa3e56fff2a23f8ab9ba076 b/sql/hive/src/test/resources/golden/combine3-4-84967075baa3e56fff2a23f8ab9ba076 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-4-84967075baa3e56fff2a23f8ab9ba076 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine3-5-2ee5d706fe3a3bcc38b795f6e94970ea b/sql/hive/src/test/resources/golden/combine3-5-2ee5d706fe3a3bcc38b795f6e94970ea new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/combine3-5-2ee5d706fe3a3bcc38b795f6e94970ea @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/combine3-6-4725c48df09565618cbffd05953a5f62 b/sql/hive/src/test/resources/golden/combine3-6-4725c48df09565618cbffd05953a5f62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-7-53a5c509ebc9ee8458f27cc9bac46d00 b/sql/hive/src/test/resources/golden/combine3-7-53a5c509ebc9ee8458f27cc9bac46d00 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-8-68399bc39f71ddc99ed09ed9d2fd897b b/sql/hive/src/test/resources/golden/combine3-8-68399bc39f71ddc99ed09ed9d2fd897b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/combine3-9-b5703b76bbe99c41cbb63582a09a6e69 b/sql/hive/src/test/resources/golden/combine3-9-b5703b76bbe99c41cbb63582a09a6e69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_binary-0-16dcd4810ff82419cf1ae914d1860f21 b/sql/hive/src/test/resources/golden/compute_stats_binary-0-16dcd4810ff82419cf1ae914d1860f21 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_binary-1-8e576a57fc67a7fa78ce1d8c8a63a043 b/sql/hive/src/test/resources/golden/compute_stats_binary-1-8e576a57fc67a7fa78ce1d8c8a63a043 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_binary-2-c5a68f035051eef3e1c8d44d8b90017c b/sql/hive/src/test/resources/golden/compute_stats_binary-2-c5a68f035051eef3e1c8d44d8b90017c new file mode 100644 index 0000000000000..f599e28b8ab0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_binary-2-c5a68f035051eef3e1c8d44d8b90017c @@ -0,0 +1 @@ +10 diff --git a/sql/hive/src/test/resources/golden/compute_stats_binary-3-bcac92c4a17678873b01779e3d0e84e3 b/sql/hive/src/test/resources/golden/compute_stats_binary-3-bcac92c4a17678873b01779e3d0e84e3 new file mode 100644 index 0000000000000..fe2e2d7663026 --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_binary-3-bcac92c4a17678873b01779e3d0e84e3 @@ -0,0 +1 @@ +{"columntype":"Binary","maxlength":36,"avglength":20.0,"countnulls":0} diff --git a/sql/hive/src/test/resources/golden/compute_stats_boolean-0-e39ee7d1e03efae1334a4cafc94af1d8 b/sql/hive/src/test/resources/golden/compute_stats_boolean-0-e39ee7d1e03efae1334a4cafc94af1d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_boolean-1-8300537a2a508b3390c3172cd69c69b5 b/sql/hive/src/test/resources/golden/compute_stats_boolean-1-8300537a2a508b3390c3172cd69c69b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_boolean-2-fbea367698de65e22d4d660a518ea95e b/sql/hive/src/test/resources/golden/compute_stats_boolean-2-fbea367698de65e22d4d660a518ea95e new file mode 100644 index 0000000000000..dc7b54ad01435 --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_boolean-2-fbea367698de65e22d4d660a518ea95e @@ -0,0 +1 @@ +33 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/compute_stats_boolean-3-a14d8a5835c94829271f9f463d96d83d b/sql/hive/src/test/resources/golden/compute_stats_boolean-3-a14d8a5835c94829271f9f463d96d83d new file mode 100644 index 0000000000000..dd487e6fea3ff --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_boolean-3-a14d8a5835c94829271f9f463d96d83d @@ -0,0 +1 @@ +{"columntype":"Boolean","counttrues":13,"countfalses":19,"countnulls":1} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/compute_stats_double-0-76e8d4ba13c67a0834987b6dcd1d05ce b/sql/hive/src/test/resources/golden/compute_stats_double-0-76e8d4ba13c67a0834987b6dcd1d05ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_double-1-a23a25a680139ed823c77f3f9f486065 b/sql/hive/src/test/resources/golden/compute_stats_double-1-a23a25a680139ed823c77f3f9f486065 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_double-2-8f988b757fd62f318f35447a3fd65452 b/sql/hive/src/test/resources/golden/compute_stats_double-2-8f988b757fd62f318f35447a3fd65452 new file mode 100644 index 0000000000000..b6a7d89c68e0c --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_double-2-8f988b757fd62f318f35447a3fd65452 @@ -0,0 +1 @@ +16 diff --git a/sql/hive/src/test/resources/golden/compute_stats_double-3-756f6b2d1c63fd5cb0bb25f76d5bfce2 b/sql/hive/src/test/resources/golden/compute_stats_double-3-756f6b2d1c63fd5cb0bb25f76d5bfce2 new file mode 100644 index 0000000000000..31a1d0792beeb --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_double-3-756f6b2d1c63fd5cb0bb25f76d5bfce2 @@ -0,0 +1 @@ +{"columntype":"Double","min":-87.2,"max":435.33,"countnulls":2,"numdistinctvalues":11} diff --git a/sql/hive/src/test/resources/golden/compute_stats_empty_table-0-12161b12442ad9b664b51e443fabaf5d b/sql/hive/src/test/resources/golden/compute_stats_empty_table-0-12161b12442ad9b664b51e443fabaf5d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_empty_table-1-1f720211105d9a6d611c5d378ee45ec0 b/sql/hive/src/test/resources/golden/compute_stats_empty_table-1-1f720211105d9a6d611c5d378ee45ec0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_empty_table-1-1f720211105d9a6d611c5d378ee45ec0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/compute_stats_empty_table-2-372df408a15de1e6f05e807a3aff223f b/sql/hive/src/test/resources/golden/compute_stats_empty_table-2-372df408a15de1e6f05e807a3aff223f new file mode 100644 index 0000000000000..8d4251bcc08c8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_empty_table-2-372df408a15de1e6f05e807a3aff223f @@ -0,0 +1 @@ +{"columntype":"Boolean","counttrues":0,"countfalses":0,"countnulls":0} diff --git a/sql/hive/src/test/resources/golden/compute_stats_empty_table-3-73f6626835884f34a47e8e78396bc25b b/sql/hive/src/test/resources/golden/compute_stats_empty_table-3-73f6626835884f34a47e8e78396bc25b new file mode 100644 index 0000000000000..ce543362c3ffc --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_empty_table-3-73f6626835884f34a47e8e78396bc25b @@ -0,0 +1 @@ +{"columntype":"Long","min":0,"max":0,"countnulls":0,"numdistinctvalues":0} diff --git a/sql/hive/src/test/resources/golden/compute_stats_empty_table-4-7f356d57c8c6125e4083f51ed4bae5cf b/sql/hive/src/test/resources/golden/compute_stats_empty_table-4-7f356d57c8c6125e4083f51ed4bae5cf new file mode 100644 index 0000000000000..51062737dd0de --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_empty_table-4-7f356d57c8c6125e4083f51ed4bae5cf @@ -0,0 +1 @@ +{"columntype":"Double","min":0.0,"max":0.0,"countnulls":0,"numdistinctvalues":0} diff --git a/sql/hive/src/test/resources/golden/compute_stats_empty_table-5-294a33b7c457eb7846335a4b1775ddc4 b/sql/hive/src/test/resources/golden/compute_stats_empty_table-5-294a33b7c457eb7846335a4b1775ddc4 new file mode 100644 index 0000000000000..9a834007cec70 --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_empty_table-5-294a33b7c457eb7846335a4b1775ddc4 @@ -0,0 +1 @@ +{"columntype":"String","maxlength":0,"avglength":0.0,"countnulls":0,"numdistinctvalues":0} diff --git a/sql/hive/src/test/resources/golden/compute_stats_empty_table-6-137180ebd2a072f08b5d849bdd9a464 b/sql/hive/src/test/resources/golden/compute_stats_empty_table-6-137180ebd2a072f08b5d849bdd9a464 new file mode 100644 index 0000000000000..f6c0cb997b2a6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_empty_table-6-137180ebd2a072f08b5d849bdd9a464 @@ -0,0 +1 @@ +{"columntype":"Binary","maxlength":0,"avglength":0.0,"countnulls":0} diff --git a/sql/hive/src/test/resources/golden/compute_stats_long-0-2ee7f9e4c307417d4da2660e303c07c3 b/sql/hive/src/test/resources/golden/compute_stats_long-0-2ee7f9e4c307417d4da2660e303c07c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_long-1-a7bc730f9862198709539e35c0208248 b/sql/hive/src/test/resources/golden/compute_stats_long-1-a7bc730f9862198709539e35c0208248 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_long-2-71ffbc32647b3b562ccdc7e3db71e7a8 b/sql/hive/src/test/resources/golden/compute_stats_long-2-71ffbc32647b3b562ccdc7e3db71e7a8 new file mode 100644 index 0000000000000..48082f72f087c --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_long-2-71ffbc32647b3b562ccdc7e3db71e7a8 @@ -0,0 +1 @@ +12 diff --git a/sql/hive/src/test/resources/golden/compute_stats_long-3-cf4bb755ade3079409e2251c7cd0118d b/sql/hive/src/test/resources/golden/compute_stats_long-3-cf4bb755ade3079409e2251c7cd0118d new file mode 100644 index 0000000000000..cb4c03d1da303 --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_long-3-cf4bb755ade3079409e2251c7cd0118d @@ -0,0 +1 @@ +{"columntype":"Long","min":0,"max":344,"countnulls":1,"numdistinctvalues":11} diff --git a/sql/hive/src/test/resources/golden/compute_stats_string-0-3b932d28809fb8f40d81b4f8dfe2693b b/sql/hive/src/test/resources/golden/compute_stats_string-0-3b932d28809fb8f40d81b4f8dfe2693b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_string-1-3bddaed6594ed44249e4a30c43e83d1f b/sql/hive/src/test/resources/golden/compute_stats_string-1-3bddaed6594ed44249e4a30c43e83d1f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/compute_stats_string-2-b87a68ae5ffa689bada75425169d131a b/sql/hive/src/test/resources/golden/compute_stats_string-2-b87a68ae5ffa689bada75425169d131a new file mode 100644 index 0000000000000..f599e28b8ab0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_string-2-b87a68ae5ffa689bada75425169d131a @@ -0,0 +1 @@ +10 diff --git a/sql/hive/src/test/resources/golden/compute_stats_string-3-cea908dd41c78490990ee6b681d19fc b/sql/hive/src/test/resources/golden/compute_stats_string-3-cea908dd41c78490990ee6b681d19fc new file mode 100644 index 0000000000000..a8fc88cbd539d --- /dev/null +++ b/sql/hive/src/test/resources/golden/compute_stats_string-3-cea908dd41c78490990ee6b681d19fc @@ -0,0 +1 @@ +{"columntype":"String","maxlength":11,"avglength":3.9,"countnulls":0,"numdistinctvalues":7} diff --git a/sql/hive/src/test/resources/golden/convert_enum_to_string-0-f22bc1aaadc6f36ba36420073ea04543 b/sql/hive/src/test/resources/golden/convert_enum_to_string-0-f22bc1aaadc6f36ba36420073ea04543 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/convert_enum_to_string-1-db089ff46f9826c7883198adacdfad59 b/sql/hive/src/test/resources/golden/convert_enum_to_string-1-db089ff46f9826c7883198adacdfad59 new file mode 100644 index 0000000000000..c615f0148ccd1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/convert_enum_to_string-1-db089ff46f9826c7883198adacdfad59 @@ -0,0 +1,27 @@ +my_bool boolean from deserializer +my_byte tinyint from deserializer +my_16bit_int smallint from deserializer +my_32bit_int int from deserializer +my_64bit_int bigint from deserializer +my_double double from deserializer +my_string string from deserializer +my_binary struct from deserializer +my_string_string_map map from deserializer +my_string_enum_map map from deserializer +my_enum_string_map map from deserializer +my_enum_struct_map map>> from deserializer +my_enum_stringlist_map map> from deserializer +my_enum_structlist_map map>>> from deserializer +my_stringlist array from deserializer +my_structlist array>> from deserializer +my_enumlist array from deserializer +my_stringset struct<> from deserializer +my_enumset struct<> from deserializer +my_structset struct<> from deserializer +optionals struct<> from deserializer +b string None + +# Partition Information +# col_name data_type comment + +b string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-0-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer11-0-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-0-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-1-3a7f180f26dd2aec3ceab769f0cd965 b/sql/hive/src/test/resources/golden/correlationoptimizer11-1-3a7f180f26dd2aec3ceab769f0cd965 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-10-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer11-10-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-10-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-11-f7918ee4d4941d3272e0262a750de700 b/sql/hive/src/test/resources/golden/correlationoptimizer11-11-f7918ee4d4941d3272e0262a750de700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-12-5cefedc27b914d45b1512c92ad36c6e4 b/sql/hive/src/test/resources/golden/correlationoptimizer11-12-5cefedc27b914d45b1512c92ad36c6e4 new file mode 100644 index 0000000000000..7c33b34887d6b --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-12-5cefedc27b914d45b1512c92ad36c6e4 @@ -0,0 +1,15 @@ +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 +66 1 +98 1 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-13-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer11-13-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-13-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-14-c16dc98e6fc3e9ea52f7f3ca04ad953d b/sql/hive/src/test/resources/golden/correlationoptimizer11-14-c16dc98e6fc3e9ea52f7f3ca04ad953d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-15-5cefedc27b914d45b1512c92ad36c6e4 b/sql/hive/src/test/resources/golden/correlationoptimizer11-15-5cefedc27b914d45b1512c92ad36c6e4 new file mode 100644 index 0000000000000..7c33b34887d6b --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-15-5cefedc27b914d45b1512c92ad36c6e4 @@ -0,0 +1,15 @@ +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 +66 1 +98 1 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-2-e148026f8994e22ca756c68753a0cc26 b/sql/hive/src/test/resources/golden/correlationoptimizer11-2-e148026f8994e22ca756c68753a0cc26 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-3-b04195464e014cb47fd20a76b5f9ac0 b/sql/hive/src/test/resources/golden/correlationoptimizer11-3-b04195464e014cb47fd20a76b5f9ac0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-4-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer11-4-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-4-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-5-88d8dfbff4269af34724bf30ff4fec34 b/sql/hive/src/test/resources/golden/correlationoptimizer11-5-88d8dfbff4269af34724bf30ff4fec34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-6-fce66bdc5987a642f8f93471e62c1748 b/sql/hive/src/test/resources/golden/correlationoptimizer11-6-fce66bdc5987a642f8f93471e62c1748 new file mode 100644 index 0000000000000..b97104d25bb51 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-6-fce66bdc5987a642f8f93471e62c1748 @@ -0,0 +1,2 @@ +66 1 +98 2 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-7-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer11-7-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-7-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-8-45d4d690886288ef04addbb659397ad1 b/sql/hive/src/test/resources/golden/correlationoptimizer11-8-45d4d690886288ef04addbb659397ad1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer11-9-fce66bdc5987a642f8f93471e62c1748 b/sql/hive/src/test/resources/golden/correlationoptimizer11-9-fce66bdc5987a642f8f93471e62c1748 new file mode 100644 index 0000000000000..b97104d25bb51 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer11-9-fce66bdc5987a642f8f93471e62c1748 @@ -0,0 +1,2 @@ +66 1 +98 2 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-0-aa047b3a8b40b68b93c4ad11e173c767 b/sql/hive/src/test/resources/golden/correlationoptimizer14-0-aa047b3a8b40b68b93c4ad11e173c767 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-0-aa047b3a8b40b68b93c4ad11e173c767 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-1-d0a93f40892e3894460553b443c77428 b/sql/hive/src/test/resources/golden/correlationoptimizer14-1-d0a93f40892e3894460553b443c77428 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-1-d0a93f40892e3894460553b443c77428 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-10-a837e66f8c37cc3b2f6d3596b03a6eda b/sql/hive/src/test/resources/golden/correlationoptimizer14-10-a837e66f8c37cc3b2f6d3596b03a6eda new file mode 100644 index 0000000000000..e8eb644933e82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-10-a837e66f8c37cc3b2f6d3596b03a6eda @@ -0,0 +1,37 @@ +66 val_66 66 val_66 +98 val_98 98 val_98 +98 val_98 98 val_98 +128 val_128 128 +128 val_128 128 +128 val_128 128 +146 val_146 146 val_146 +146 val_146 146 val_146 +150 val_150 150 val_150 +213 val_213 213 val_213 +213 val_213 213 val_213 +224 val_224 224 +224 val_224 224 +238 val_238 238 val_238 +238 val_238 238 val_238 +255 val_255 255 val_255 +255 val_255 255 val_255 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +278 val_278 278 val_278 +278 val_278 278 val_278 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +369 val_369 369 +369 val_369 369 +369 val_369 369 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-11-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer14-11-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-11-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-12-99f81dd0f33197c724eb58398542ff22 b/sql/hive/src/test/resources/golden/correlationoptimizer14-12-99f81dd0f33197c724eb58398542ff22 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-13-5e19a84c0c3ede17b8d9685a22f0a1e6 b/sql/hive/src/test/resources/golden/correlationoptimizer14-13-5e19a84c0c3ede17b8d9685a22f0a1e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-14-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer14-14-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-14-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-15-78fed7defb6154e01abbd97a0741adf b/sql/hive/src/test/resources/golden/correlationoptimizer14-15-78fed7defb6154e01abbd97a0741adf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-16-7ebe26e8a3620830e824b4099519395 b/sql/hive/src/test/resources/golden/correlationoptimizer14-16-7ebe26e8a3620830e824b4099519395 new file mode 100644 index 0000000000000..e8eb644933e82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-16-7ebe26e8a3620830e824b4099519395 @@ -0,0 +1,37 @@ +66 val_66 66 val_66 +98 val_98 98 val_98 +98 val_98 98 val_98 +128 val_128 128 +128 val_128 128 +128 val_128 128 +146 val_146 146 val_146 +146 val_146 146 val_146 +150 val_150 150 val_150 +213 val_213 213 val_213 +213 val_213 213 val_213 +224 val_224 224 +224 val_224 224 +238 val_238 238 val_238 +238 val_238 238 val_238 +255 val_255 255 val_255 +255 val_255 255 val_255 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +278 val_278 278 val_278 +278 val_278 278 val_278 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +369 val_369 369 +369 val_369 369 +369 val_369 369 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-17-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer14-17-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-17-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-18-aa18035e1d8fdcedb91b76f9a32b11 b/sql/hive/src/test/resources/golden/correlationoptimizer14-18-aa18035e1d8fdcedb91b76f9a32b11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-19-7ebe26e8a3620830e824b4099519395 b/sql/hive/src/test/resources/golden/correlationoptimizer14-19-7ebe26e8a3620830e824b4099519395 new file mode 100644 index 0000000000000..e8eb644933e82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-19-7ebe26e8a3620830e824b4099519395 @@ -0,0 +1,37 @@ +66 val_66 66 val_66 +98 val_98 98 val_98 +98 val_98 98 val_98 +128 val_128 128 +128 val_128 128 +128 val_128 128 +146 val_146 146 val_146 +146 val_146 146 val_146 +150 val_150 150 val_150 +213 val_213 213 val_213 +213 val_213 213 val_213 +224 val_224 224 +224 val_224 224 +238 val_238 238 val_238 +238 val_238 238 val_238 +255 val_255 255 val_255 +255 val_255 255 val_255 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +278 val_278 278 val_278 +278 val_278 278 val_278 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +369 val_369 369 +369 val_369 369 +369 val_369 369 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-2-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer14-2-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-2-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-20-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer14-20-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-20-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-21-e85444100b2e0c71b3d792e4bf1486d1 b/sql/hive/src/test/resources/golden/correlationoptimizer14-21-e85444100b2e0c71b3d792e4bf1486d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-22-aeed9fe2c3ffdf99eba2821ecfa18242 b/sql/hive/src/test/resources/golden/correlationoptimizer14-22-aeed9fe2c3ffdf99eba2821ecfa18242 new file mode 100644 index 0000000000000..0a6a1f70d34ef --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-22-aeed9fe2c3ffdf99eba2821ecfa18242 @@ -0,0 +1,37 @@ +66 val_66 66 1 +98 val_98 98 1 +98 val_98 98 1 +128 val_128 128 1 +128 val_128 128 1 +128 val_128 128 1 +146 val_146 146 1 +146 val_146 146 1 +150 val_150 150 1 +213 val_213 213 1 +213 val_213 213 1 +224 val_224 224 1 +224 val_224 224 1 +238 val_238 238 1 +238 val_238 238 1 +255 val_255 255 1 +255 val_255 255 1 +273 val_273 273 1 +273 val_273 273 1 +273 val_273 273 1 +278 val_278 278 1 +278 val_278 278 1 +311 val_311 311 1 +311 val_311 311 1 +311 val_311 311 1 +369 val_369 369 1 +369 val_369 369 1 +369 val_369 369 1 +401 val_401 401 1 +401 val_401 401 1 +401 val_401 401 1 +401 val_401 401 1 +401 val_401 401 1 +406 val_406 406 1 +406 val_406 406 1 +406 val_406 406 1 +406 val_406 406 1 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-23-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer14-23-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-23-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-24-8e88fd43a2c216b3409bee768425772c b/sql/hive/src/test/resources/golden/correlationoptimizer14-24-8e88fd43a2c216b3409bee768425772c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-25-aeed9fe2c3ffdf99eba2821ecfa18242 b/sql/hive/src/test/resources/golden/correlationoptimizer14-25-aeed9fe2c3ffdf99eba2821ecfa18242 new file mode 100644 index 0000000000000..0a6a1f70d34ef --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-25-aeed9fe2c3ffdf99eba2821ecfa18242 @@ -0,0 +1,37 @@ +66 val_66 66 1 +98 val_98 98 1 +98 val_98 98 1 +128 val_128 128 1 +128 val_128 128 1 +128 val_128 128 1 +146 val_146 146 1 +146 val_146 146 1 +150 val_150 150 1 +213 val_213 213 1 +213 val_213 213 1 +224 val_224 224 1 +224 val_224 224 1 +238 val_238 238 1 +238 val_238 238 1 +255 val_255 255 1 +255 val_255 255 1 +273 val_273 273 1 +273 val_273 273 1 +273 val_273 273 1 +278 val_278 278 1 +278 val_278 278 1 +311 val_311 311 1 +311 val_311 311 1 +311 val_311 311 1 +369 val_369 369 1 +369 val_369 369 1 +369 val_369 369 1 +401 val_401 401 1 +401 val_401 401 1 +401 val_401 401 1 +401 val_401 401 1 +401 val_401 401 1 +406 val_406 406 1 +406 val_406 406 1 +406 val_406 406 1 +406 val_406 406 1 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-3-88b3974a7639097ed915402827e8941f b/sql/hive/src/test/resources/golden/correlationoptimizer14-3-88b3974a7639097ed915402827e8941f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-4-f58c909a1cbcbca3ea64bada41b0a18f b/sql/hive/src/test/resources/golden/correlationoptimizer14-4-f58c909a1cbcbca3ea64bada41b0a18f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-5-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer14-5-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-5-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-6-dcc6819f5848ff3d68b1d28c8787d41c b/sql/hive/src/test/resources/golden/correlationoptimizer14-6-dcc6819f5848ff3d68b1d28c8787d41c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-7-a837e66f8c37cc3b2f6d3596b03a6eda b/sql/hive/src/test/resources/golden/correlationoptimizer14-7-a837e66f8c37cc3b2f6d3596b03a6eda new file mode 100644 index 0000000000000..e8eb644933e82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-7-a837e66f8c37cc3b2f6d3596b03a6eda @@ -0,0 +1,37 @@ +66 val_66 66 val_66 +98 val_98 98 val_98 +98 val_98 98 val_98 +128 val_128 128 +128 val_128 128 +128 val_128 128 +146 val_146 146 val_146 +146 val_146 146 val_146 +150 val_150 150 val_150 +213 val_213 213 val_213 +213 val_213 213 val_213 +224 val_224 224 +224 val_224 224 +238 val_238 238 val_238 +238 val_238 238 val_238 +255 val_255 255 val_255 +255 val_255 255 val_255 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +278 val_278 278 val_278 +278 val_278 278 val_278 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +369 val_369 369 +369 val_369 369 +369 val_369 369 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-8-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer14-8-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer14-8-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer14-9-e5f8709d75fbe813609cbdc8ed707489 b/sql/hive/src/test/resources/golden/correlationoptimizer14-9-e5f8709d75fbe813609cbdc8ed707489 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer15-0-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer15-0-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer15-0-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer15-1-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer15-1-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer15-1-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer15-2-f3001b5ee3fe7b9b01c82b0c79c2df02 b/sql/hive/src/test/resources/golden/correlationoptimizer15-2-f3001b5ee3fe7b9b01c82b0c79c2df02 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer15-3-e149747103059314a9984235702b24b6 b/sql/hive/src/test/resources/golden/correlationoptimizer15-3-e149747103059314a9984235702b24b6 new file mode 100644 index 0000000000000..0b1ee37d7831c --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer15-3-e149747103059314a9984235702b24b6 @@ -0,0 +1,37 @@ +66 1 66 +98 1 98 +98 1 98 +128 1 128 +128 1 128 +128 1 128 +146 1 146 +146 1 146 +150 1 150 +213 1 213 +213 1 213 +224 1 224 +224 1 224 +238 1 238 +238 1 238 +255 1 255 +255 1 255 +273 1 273 +273 1 273 +273 1 273 +278 1 278 +278 1 278 +311 1 311 +311 1 311 +311 1 311 +369 1 369 +369 1 369 +369 1 369 +401 1 401 +401 1 401 +401 1 401 +401 1 401 +401 1 401 +406 1 406 +406 1 406 +406 1 406 +406 1 406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer15-4-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer15-4-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer15-4-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer15-5-9914f44ecb6ae7587b62e5349ff60d04 b/sql/hive/src/test/resources/golden/correlationoptimizer15-5-9914f44ecb6ae7587b62e5349ff60d04 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer15-5-9914f44ecb6ae7587b62e5349ff60d04 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer15-6-3bc6f1aef3516fd7ba8c7527f2865dcd b/sql/hive/src/test/resources/golden/correlationoptimizer15-6-3bc6f1aef3516fd7ba8c7527f2865dcd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer15-7-e149747103059314a9984235702b24b6 b/sql/hive/src/test/resources/golden/correlationoptimizer15-7-e149747103059314a9984235702b24b6 new file mode 100644 index 0000000000000..0b1ee37d7831c --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer15-7-e149747103059314a9984235702b24b6 @@ -0,0 +1,37 @@ +66 1 66 +98 1 98 +98 1 98 +128 1 128 +128 1 128 +128 1 128 +146 1 146 +146 1 146 +150 1 150 +213 1 213 +213 1 213 +224 1 224 +224 1 224 +238 1 238 +238 1 238 +255 1 255 +255 1 255 +273 1 273 +273 1 273 +273 1 273 +278 1 278 +278 1 278 +311 1 311 +311 1 311 +311 1 311 +369 1 369 +369 1 369 +369 1 369 +401 1 401 +401 1 401 +401 1 401 +401 1 401 +401 1 401 +406 1 406 +406 1 406 +406 1 406 +406 1 406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-0-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer2-0-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-0-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-1-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer2-1-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-1-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-10-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer2-10-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-10-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-11-165752d0d250e5c9cddca50cf0c9cab b/sql/hive/src/test/resources/golden/correlationoptimizer2-11-165752d0d250e5c9cddca50cf0c9cab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-12-e6b368bfaea4d2838f8038b3bd29db06 b/sql/hive/src/test/resources/golden/correlationoptimizer2-12-e6b368bfaea4d2838f8038b3bd29db06 new file mode 100644 index 0000000000000..6c6dc691bbff2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-12-e6b368bfaea4d2838f8038b3bd29db06 @@ -0,0 +1 @@ +79136 500 3556 15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-13-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer2-13-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-13-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-14-b8a58e660d7416485c3d9a97d610bdfd b/sql/hive/src/test/resources/golden/correlationoptimizer2-14-b8a58e660d7416485c3d9a97d610bdfd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-15-18f10d12e8bfa473a916c2f528500538 b/sql/hive/src/test/resources/golden/correlationoptimizer2-15-18f10d12e8bfa473a916c2f528500538 new file mode 100644 index 0000000000000..f4bb720dfd7f8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-15-18f10d12e8bfa473a916c2f528500538 @@ -0,0 +1 @@ +3556 37 3556 25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-16-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer2-16-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-16-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-17-2a3e19b28e5262eb8c467e237df34421 b/sql/hive/src/test/resources/golden/correlationoptimizer2-17-2a3e19b28e5262eb8c467e237df34421 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-18-18f10d12e8bfa473a916c2f528500538 b/sql/hive/src/test/resources/golden/correlationoptimizer2-18-18f10d12e8bfa473a916c2f528500538 new file mode 100644 index 0000000000000..f4bb720dfd7f8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-18-18f10d12e8bfa473a916c2f528500538 @@ -0,0 +1 @@ +3556 37 3556 25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-19-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer2-19-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-19-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-2-354213872b92046d7aec97c9ba7b4e97 b/sql/hive/src/test/resources/golden/correlationoptimizer2-2-354213872b92046d7aec97c9ba7b4e97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-20-6907d13fadd74e0df33c7a99c1de0baf b/sql/hive/src/test/resources/golden/correlationoptimizer2-20-6907d13fadd74e0df33c7a99c1de0baf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-21-c0c5744805b82aa8a6e3a62dfdb8097e b/sql/hive/src/test/resources/golden/correlationoptimizer2-21-c0c5744805b82aa8a6e3a62dfdb8097e new file mode 100644 index 0000000000000..4acbb60e81661 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-21-c0c5744805b82aa8a6e3a62dfdb8097e @@ -0,0 +1 @@ +79136 500 3556 25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-22-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer2-22-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-22-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-23-38b273c68d644e801695d5414c0e119b b/sql/hive/src/test/resources/golden/correlationoptimizer2-23-38b273c68d644e801695d5414c0e119b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-24-c0c5744805b82aa8a6e3a62dfdb8097e b/sql/hive/src/test/resources/golden/correlationoptimizer2-24-c0c5744805b82aa8a6e3a62dfdb8097e new file mode 100644 index 0000000000000..4acbb60e81661 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-24-c0c5744805b82aa8a6e3a62dfdb8097e @@ -0,0 +1 @@ +79136 500 3556 25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-25-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer2-25-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-25-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-26-12408fe0bc5e6a22e838ee5ccef144d9 b/sql/hive/src/test/resources/golden/correlationoptimizer2-26-12408fe0bc5e6a22e838ee5ccef144d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-27-9b22dad2843cdc379d90687745561104 b/sql/hive/src/test/resources/golden/correlationoptimizer2-27-9b22dad2843cdc379d90687745561104 new file mode 100644 index 0000000000000..a95fce80fd7b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-27-9b22dad2843cdc379d90687745561104 @@ -0,0 +1 @@ +79136 310 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-28-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer2-28-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-28-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-29-3781a20b72437434ef8fa7174edf36ab b/sql/hive/src/test/resources/golden/correlationoptimizer2-29-3781a20b72437434ef8fa7174edf36ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-3-d915fbdd493869aec42f548bdb66598d b/sql/hive/src/test/resources/golden/correlationoptimizer2-3-d915fbdd493869aec42f548bdb66598d new file mode 100644 index 0000000000000..c6243d7056353 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-3-d915fbdd493869aec42f548bdb66598d @@ -0,0 +1 @@ +3556 37 3556 15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-30-9b22dad2843cdc379d90687745561104 b/sql/hive/src/test/resources/golden/correlationoptimizer2-30-9b22dad2843cdc379d90687745561104 new file mode 100644 index 0000000000000..a95fce80fd7b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-30-9b22dad2843cdc379d90687745561104 @@ -0,0 +1 @@ +79136 310 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-31-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer2-31-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-31-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-32-5ac93f83acfd31ce036381993eda303f b/sql/hive/src/test/resources/golden/correlationoptimizer2-32-5ac93f83acfd31ce036381993eda303f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-33-2b9eddc3452d8fc24ae9273e5d522e4b b/sql/hive/src/test/resources/golden/correlationoptimizer2-33-2b9eddc3452d8fc24ae9273e5d522e4b new file mode 100644 index 0000000000000..556b77ecfc9eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-33-2b9eddc3452d8fc24ae9273e5d522e4b @@ -0,0 +1 @@ +9992 3531902962 9992 37 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-34-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer2-34-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-34-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-35-996af7ef09a07d38d1a238b00c80da03 b/sql/hive/src/test/resources/golden/correlationoptimizer2-35-996af7ef09a07d38d1a238b00c80da03 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-36-2b9eddc3452d8fc24ae9273e5d522e4b b/sql/hive/src/test/resources/golden/correlationoptimizer2-36-2b9eddc3452d8fc24ae9273e5d522e4b new file mode 100644 index 0000000000000..556b77ecfc9eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-36-2b9eddc3452d8fc24ae9273e5d522e4b @@ -0,0 +1 @@ +9992 3531902962 9992 37 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-4-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer2-4-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-4-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-5-6eeb3aa27037ecf59c79c4252cb31f28 b/sql/hive/src/test/resources/golden/correlationoptimizer2-5-6eeb3aa27037ecf59c79c4252cb31f28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-6-d915fbdd493869aec42f548bdb66598d b/sql/hive/src/test/resources/golden/correlationoptimizer2-6-d915fbdd493869aec42f548bdb66598d new file mode 100644 index 0000000000000..c6243d7056353 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-6-d915fbdd493869aec42f548bdb66598d @@ -0,0 +1 @@ +3556 37 3556 15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-7-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer2-7-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-7-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-8-74078f19dfe424f3211e6ce26de52152 b/sql/hive/src/test/resources/golden/correlationoptimizer2-8-74078f19dfe424f3211e6ce26de52152 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer2-9-e6b368bfaea4d2838f8038b3bd29db06 b/sql/hive/src/test/resources/golden/correlationoptimizer2-9-e6b368bfaea4d2838f8038b3bd29db06 new file mode 100644 index 0000000000000..6c6dc691bbff2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer2-9-e6b368bfaea4d2838f8038b3bd29db06 @@ -0,0 +1 @@ +79136 500 3556 15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-0-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer3-0-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-0-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-1-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer3-1-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-1-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-10-e3d5ff08760b877d49c0f10f63776325 b/sql/hive/src/test/resources/golden/correlationoptimizer3-10-e3d5ff08760b877d49c0f10f63776325 new file mode 100644 index 0000000000000..a1a6cbb91955e --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-10-e3d5ff08760b877d49c0f10f63776325 @@ -0,0 +1 @@ +9992 107 3531902962 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-11-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer3-11-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-11-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-12-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer3-12-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-12-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-13-11a7c4a1256b5f56dbf8f2722e24831 b/sql/hive/src/test/resources/golden/correlationoptimizer3-13-11a7c4a1256b5f56dbf8f2722e24831 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-14-1f13e03988991067d13a9f3f1b36fcf5 b/sql/hive/src/test/resources/golden/correlationoptimizer3-14-1f13e03988991067d13a9f3f1b36fcf5 new file mode 100644 index 0000000000000..a1a6cbb91955e --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-14-1f13e03988991067d13a9f3f1b36fcf5 @@ -0,0 +1 @@ +9992 107 3531902962 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-15-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer3-15-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-15-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-16-11a7c4a1256b5f56dbf8f2722e24831 b/sql/hive/src/test/resources/golden/correlationoptimizer3-16-11a7c4a1256b5f56dbf8f2722e24831 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-17-1f13e03988991067d13a9f3f1b36fcf5 b/sql/hive/src/test/resources/golden/correlationoptimizer3-17-1f13e03988991067d13a9f3f1b36fcf5 new file mode 100644 index 0000000000000..a1a6cbb91955e --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-17-1f13e03988991067d13a9f3f1b36fcf5 @@ -0,0 +1 @@ +9992 107 3531902962 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-18-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer3-18-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-18-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-19-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/correlationoptimizer3-19-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-19-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-2-9a7769de1ce7fc0b0fc46f17da287ace b/sql/hive/src/test/resources/golden/correlationoptimizer3-2-9a7769de1ce7fc0b0fc46f17da287ace new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-20-4025759f01fa2169a061070319ee8bfe b/sql/hive/src/test/resources/golden/correlationoptimizer3-20-4025759f01fa2169a061070319ee8bfe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-21-1f13e03988991067d13a9f3f1b36fcf5 b/sql/hive/src/test/resources/golden/correlationoptimizer3-21-1f13e03988991067d13a9f3f1b36fcf5 new file mode 100644 index 0000000000000..a1a6cbb91955e --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-21-1f13e03988991067d13a9f3f1b36fcf5 @@ -0,0 +1 @@ +9992 107 3531902962 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-3-e3d5ff08760b877d49c0f10f63776325 b/sql/hive/src/test/resources/golden/correlationoptimizer3-3-e3d5ff08760b877d49c0f10f63776325 new file mode 100644 index 0000000000000..a1a6cbb91955e --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-3-e3d5ff08760b877d49c0f10f63776325 @@ -0,0 +1 @@ +9992 107 3531902962 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-4-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer3-4-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-4-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-5-3c5cec9256d6f9d24a64b36fe6256f91 b/sql/hive/src/test/resources/golden/correlationoptimizer3-5-3c5cec9256d6f9d24a64b36fe6256f91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-6-e3d5ff08760b877d49c0f10f63776325 b/sql/hive/src/test/resources/golden/correlationoptimizer3-6-e3d5ff08760b877d49c0f10f63776325 new file mode 100644 index 0000000000000..a1a6cbb91955e --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-6-e3d5ff08760b877d49c0f10f63776325 @@ -0,0 +1 @@ +9992 107 3531902962 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-7-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer3-7-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-7-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-8-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/correlationoptimizer3-8-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer3-8-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer3-9-c575bf5ba408caadb836d307b9971bea b/sql/hive/src/test/resources/golden/correlationoptimizer3-9-c575bf5ba408caadb836d307b9971bea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-0-d157f058f9e8659c4367e01c4da13579 b/sql/hive/src/test/resources/golden/correlationoptimizer4-0-d157f058f9e8659c4367e01c4da13579 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-1-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/correlationoptimizer4-1-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-10-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer4-10-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-10-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-11-fb7cadb1f06690537178b2a04b1ee91e b/sql/hive/src/test/resources/golden/correlationoptimizer4-11-fb7cadb1f06690537178b2a04b1ee91e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-12-340cf26bcac4ee29bdf8fd588ddc3c2e b/sql/hive/src/test/resources/golden/correlationoptimizer4-12-340cf26bcac4ee29bdf8fd588ddc3c2e new file mode 100644 index 0000000000000..14e309fdcad89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-12-340cf26bcac4ee29bdf8fd588ddc3c2e @@ -0,0 +1 @@ +13 10 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-13-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer4-13-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-13-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-14-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/correlationoptimizer4-14-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-14-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-15-8db0d44941d0ce086e95088ef579c136 b/sql/hive/src/test/resources/golden/correlationoptimizer4-15-8db0d44941d0ce086e95088ef579c136 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-16-340cf26bcac4ee29bdf8fd588ddc3c2e b/sql/hive/src/test/resources/golden/correlationoptimizer4-16-340cf26bcac4ee29bdf8fd588ddc3c2e new file mode 100644 index 0000000000000..14e309fdcad89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-16-340cf26bcac4ee29bdf8fd588ddc3c2e @@ -0,0 +1 @@ +13 10 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-17-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer4-17-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-17-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-18-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer4-18-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-18-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-19-5e241577196c76217ed9615fcbc76dcb b/sql/hive/src/test/resources/golden/correlationoptimizer4-19-5e241577196c76217ed9615fcbc76dcb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-2-46c5eef67c57677810028451dd2b4d9 b/sql/hive/src/test/resources/golden/correlationoptimizer4-2-46c5eef67c57677810028451dd2b4d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-20-6ad79a473a876923a247f0cb57bb4208 b/sql/hive/src/test/resources/golden/correlationoptimizer4-20-6ad79a473a876923a247f0cb57bb4208 new file mode 100644 index 0000000000000..1b8c137073e37 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-20-6ad79a473a876923a247f0cb57bb4208 @@ -0,0 +1 @@ +22 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-21-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer4-21-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-21-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-22-392b7eecdc93567cd0621e0efafbbaa8 b/sql/hive/src/test/resources/golden/correlationoptimizer4-22-392b7eecdc93567cd0621e0efafbbaa8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-23-6ad79a473a876923a247f0cb57bb4208 b/sql/hive/src/test/resources/golden/correlationoptimizer4-23-6ad79a473a876923a247f0cb57bb4208 new file mode 100644 index 0000000000000..1b8c137073e37 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-23-6ad79a473a876923a247f0cb57bb4208 @@ -0,0 +1 @@ +22 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-24-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer4-24-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-24-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-25-18ec265534266497e1da68480cfe51cf b/sql/hive/src/test/resources/golden/correlationoptimizer4-25-18ec265534266497e1da68480cfe51cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-26-62a0fd05be48759c39f3c284458dde9b b/sql/hive/src/test/resources/golden/correlationoptimizer4-26-62a0fd05be48759c39f3c284458dde9b new file mode 100644 index 0000000000000..e6c95e600a2c0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-26-62a0fd05be48759c39f3c284458dde9b @@ -0,0 +1 @@ +13 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-27-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer4-27-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-27-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-28-f14be583b8c69df924ac3bc4cf1761fb b/sql/hive/src/test/resources/golden/correlationoptimizer4-28-f14be583b8c69df924ac3bc4cf1761fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-29-6fa624d24bcc899e11dbe8b19b0d5cbf b/sql/hive/src/test/resources/golden/correlationoptimizer4-29-6fa624d24bcc899e11dbe8b19b0d5cbf new file mode 100644 index 0000000000000..0248cc90cb2c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-29-6fa624d24bcc899e11dbe8b19b0d5cbf @@ -0,0 +1 @@ +21 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-3-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/correlationoptimizer4-3-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-30-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer4-30-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-30-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-31-7fea74857587a30456b095e20bc2bde1 b/sql/hive/src/test/resources/golden/correlationoptimizer4-31-7fea74857587a30456b095e20bc2bde1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-32-6fa624d24bcc899e11dbe8b19b0d5cbf b/sql/hive/src/test/resources/golden/correlationoptimizer4-32-6fa624d24bcc899e11dbe8b19b0d5cbf new file mode 100644 index 0000000000000..0248cc90cb2c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-32-6fa624d24bcc899e11dbe8b19b0d5cbf @@ -0,0 +1 @@ +21 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-33-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer4-33-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-33-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-34-fa4c05d7d8707d20d89338d744f51dd0 b/sql/hive/src/test/resources/golden/correlationoptimizer4-34-fa4c05d7d8707d20d89338d744f51dd0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-35-64d8e7807af6fc5a0214675a7c6a3be8 b/sql/hive/src/test/resources/golden/correlationoptimizer4-35-64d8e7807af6fc5a0214675a7c6a3be8 new file mode 100644 index 0000000000000..0248cc90cb2c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-35-64d8e7807af6fc5a0214675a7c6a3be8 @@ -0,0 +1 @@ +21 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-36-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer4-36-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-36-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-37-3cd84bc4d9e25a49dee3d1ab09f002c1 b/sql/hive/src/test/resources/golden/correlationoptimizer4-37-3cd84bc4d9e25a49dee3d1ab09f002c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-38-85fff71b240d0e26bab91d670c1349f2 b/sql/hive/src/test/resources/golden/correlationoptimizer4-38-85fff71b240d0e26bab91d670c1349f2 new file mode 100644 index 0000000000000..fd3a42ebe67e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-38-85fff71b240d0e26bab91d670c1349f2 @@ -0,0 +1 @@ +21 14 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-39-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer4-39-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-39-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-4-ee940bcfd73a883d16245ef746798e15 b/sql/hive/src/test/resources/golden/correlationoptimizer4-4-ee940bcfd73a883d16245ef746798e15 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-40-ef5268865a18f57e15dc650a11527b11 b/sql/hive/src/test/resources/golden/correlationoptimizer4-40-ef5268865a18f57e15dc650a11527b11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-41-85fff71b240d0e26bab91d670c1349f2 b/sql/hive/src/test/resources/golden/correlationoptimizer4-41-85fff71b240d0e26bab91d670c1349f2 new file mode 100644 index 0000000000000..fd3a42ebe67e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-41-85fff71b240d0e26bab91d670c1349f2 @@ -0,0 +1 @@ +21 14 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-5-c44e5ccbff08c59a5dc1b74306835cd9 b/sql/hive/src/test/resources/golden/correlationoptimizer4-5-c44e5ccbff08c59a5dc1b74306835cd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-6-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer4-6-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-6-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-7-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer4-7-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-7-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-8-d926d0a2ecc3b2b7094cc7a094cb3d89 b/sql/hive/src/test/resources/golden/correlationoptimizer4-8-d926d0a2ecc3b2b7094cc7a094cb3d89 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer4-9-340cf26bcac4ee29bdf8fd588ddc3c2e b/sql/hive/src/test/resources/golden/correlationoptimizer4-9-340cf26bcac4ee29bdf8fd588ddc3c2e new file mode 100644 index 0000000000000..14e309fdcad89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer4-9-340cf26bcac4ee29bdf8fd588ddc3c2e @@ -0,0 +1 @@ +13 10 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-0-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer6-0-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-0-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-1-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer6-1-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-1-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-10-25b1fe48ef86952fc7766fb74b63bf21 b/sql/hive/src/test/resources/golden/correlationoptimizer6-10-25b1fe48ef86952fc7766fb74b63bf21 new file mode 100644 index 0000000000000..19b8a2aea8f64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-10-25b1fe48ef86952fc7766fb74b63bf21 @@ -0,0 +1,15 @@ +66 1 66 1 +98 1 98 4 +128 1 128 9 +146 1 146 4 +150 1 150 1 +213 1 213 4 +224 1 224 4 +238 1 238 4 +255 1 255 4 +273 1 273 9 +278 1 278 4 +311 1 311 9 +369 1 369 9 +401 1 401 25 +406 1 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-11-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer6-11-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-11-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-12-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer6-12-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-12-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-13-f16444a052505377b7747949ffc2c028 b/sql/hive/src/test/resources/golden/correlationoptimizer6-13-f16444a052505377b7747949ffc2c028 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-14-84463190baec77d61b287a071c8886db b/sql/hive/src/test/resources/golden/correlationoptimizer6-14-84463190baec77d61b287a071c8886db new file mode 100644 index 0000000000000..c4a418f59625b --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-14-84463190baec77d61b287a071c8886db @@ -0,0 +1,15 @@ +66 66 1 +98 98 2 +128 128 3 +146 146 2 +150 150 1 +213 213 2 +224 224 2 +238 238 2 +255 255 2 +273 273 3 +278 278 2 +311 311 3 +369 369 3 +401 401 5 +406 406 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-15-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-15-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-15-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-16-1cce9d13fab4b27d36c0fe705d239f68 b/sql/hive/src/test/resources/golden/correlationoptimizer6-16-1cce9d13fab4b27d36c0fe705d239f68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-17-84463190baec77d61b287a071c8886db b/sql/hive/src/test/resources/golden/correlationoptimizer6-17-84463190baec77d61b287a071c8886db new file mode 100644 index 0000000000000..c4a418f59625b --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-17-84463190baec77d61b287a071c8886db @@ -0,0 +1,15 @@ +66 66 1 +98 98 2 +128 128 3 +146 146 2 +150 150 1 +213 213 2 +224 224 2 +238 238 2 +255 255 2 +273 273 3 +278 278 2 +311 311 3 +369 369 3 +401 401 5 +406 406 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-18-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer6-18-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-18-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-19-e7b8cde1cfc381901066753ecfa87ed4 b/sql/hive/src/test/resources/golden/correlationoptimizer6-19-e7b8cde1cfc381901066753ecfa87ed4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-2-f196f01fc1d04f0e88881eb51e3b43c2 b/sql/hive/src/test/resources/golden/correlationoptimizer6-2-f196f01fc1d04f0e88881eb51e3b43c2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-20-4b0a2d0d62b76bbd8a44ebed4a9cc4de b/sql/hive/src/test/resources/golden/correlationoptimizer6-20-4b0a2d0d62b76bbd8a44ebed4a9cc4de new file mode 100644 index 0000000000000..9c8189500649e --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-20-4b0a2d0d62b76bbd8a44ebed4a9cc4de @@ -0,0 +1,15 @@ +66 66 1 +98 98 4 +128 128 9 +146 146 4 +150 150 1 +213 213 4 +224 224 4 +238 238 4 +255 255 4 +273 273 9 +278 278 4 +311 311 9 +369 369 9 +401 401 25 +406 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-21-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-21-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-21-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-22-a5e1c26011ddfbe79a886044dc17ea67 b/sql/hive/src/test/resources/golden/correlationoptimizer6-22-a5e1c26011ddfbe79a886044dc17ea67 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-23-4b0a2d0d62b76bbd8a44ebed4a9cc4de b/sql/hive/src/test/resources/golden/correlationoptimizer6-23-4b0a2d0d62b76bbd8a44ebed4a9cc4de new file mode 100644 index 0000000000000..9c8189500649e --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-23-4b0a2d0d62b76bbd8a44ebed4a9cc4de @@ -0,0 +1,15 @@ +66 66 1 +98 98 4 +128 128 9 +146 146 4 +150 150 1 +213 213 4 +224 224 4 +238 238 4 +255 255 4 +273 273 9 +278 278 4 +311 311 9 +369 369 9 +401 401 25 +406 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-24-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer6-24-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-24-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-25-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer6-25-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-25-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-26-f3001b5ee3fe7b9b01c82b0c79c2df02 b/sql/hive/src/test/resources/golden/correlationoptimizer6-26-f3001b5ee3fe7b9b01c82b0c79c2df02 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-27-e149747103059314a9984235702b24b6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-27-e149747103059314a9984235702b24b6 new file mode 100644 index 0000000000000..0b1ee37d7831c --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-27-e149747103059314a9984235702b24b6 @@ -0,0 +1,37 @@ +66 1 66 +98 1 98 +98 1 98 +128 1 128 +128 1 128 +128 1 128 +146 1 146 +146 1 146 +150 1 150 +213 1 213 +213 1 213 +224 1 224 +224 1 224 +238 1 238 +238 1 238 +255 1 255 +255 1 255 +273 1 273 +273 1 273 +273 1 273 +278 1 278 +278 1 278 +311 1 311 +311 1 311 +311 1 311 +369 1 369 +369 1 369 +369 1 369 +401 1 401 +401 1 401 +401 1 401 +401 1 401 +401 1 401 +406 1 406 +406 1 406 +406 1 406 +406 1 406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-28-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-28-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-28-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-29-3bc6f1aef3516fd7ba8c7527f2865dcd b/sql/hive/src/test/resources/golden/correlationoptimizer6-29-3bc6f1aef3516fd7ba8c7527f2865dcd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-3-25b1fe48ef86952fc7766fb74b63bf21 b/sql/hive/src/test/resources/golden/correlationoptimizer6-3-25b1fe48ef86952fc7766fb74b63bf21 new file mode 100644 index 0000000000000..19b8a2aea8f64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-3-25b1fe48ef86952fc7766fb74b63bf21 @@ -0,0 +1,15 @@ +66 1 66 1 +98 1 98 4 +128 1 128 9 +146 1 146 4 +150 1 150 1 +213 1 213 4 +224 1 224 4 +238 1 238 4 +255 1 255 4 +273 1 273 9 +278 1 278 4 +311 1 311 9 +369 1 369 9 +401 1 401 25 +406 1 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-30-e149747103059314a9984235702b24b6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-30-e149747103059314a9984235702b24b6 new file mode 100644 index 0000000000000..0b1ee37d7831c --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-30-e149747103059314a9984235702b24b6 @@ -0,0 +1,37 @@ +66 1 66 +98 1 98 +98 1 98 +128 1 128 +128 1 128 +128 1 128 +146 1 146 +146 1 146 +150 1 150 +213 1 213 +213 1 213 +224 1 224 +224 1 224 +238 1 238 +238 1 238 +255 1 255 +255 1 255 +273 1 273 +273 1 273 +273 1 273 +278 1 278 +278 1 278 +311 1 311 +311 1 311 +311 1 311 +369 1 369 +369 1 369 +369 1 369 +401 1 401 +401 1 401 +401 1 401 +401 1 401 +401 1 401 +406 1 406 +406 1 406 +406 1 406 +406 1 406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-31-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer6-31-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-31-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-32-17c94297caaed15ea3ea2ea72d3508b7 b/sql/hive/src/test/resources/golden/correlationoptimizer6-32-17c94297caaed15ea3ea2ea72d3508b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-33-15d991127dc684513e2fff1aea3f1560 b/sql/hive/src/test/resources/golden/correlationoptimizer6-33-15d991127dc684513e2fff1aea3f1560 new file mode 100644 index 0000000000000..7c591d6146fd6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-33-15d991127dc684513e2fff1aea3f1560 @@ -0,0 +1,37 @@ +66 66 1 +98 98 4 +98 98 4 +128 128 9 +128 128 9 +128 128 9 +146 146 4 +146 146 4 +150 150 1 +213 213 4 +213 213 4 +224 224 4 +224 224 4 +238 238 4 +238 238 4 +255 255 4 +255 255 4 +273 273 9 +273 273 9 +273 273 9 +278 278 4 +278 278 4 +311 311 9 +311 311 9 +311 311 9 +369 369 9 +369 369 9 +369 369 9 +401 401 25 +401 401 25 +401 401 25 +401 401 25 +401 401 25 +406 406 16 +406 406 16 +406 406 16 +406 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-34-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-34-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-34-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-35-833150221aa5d9fbb0cb626bd8ce0762 b/sql/hive/src/test/resources/golden/correlationoptimizer6-35-833150221aa5d9fbb0cb626bd8ce0762 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-36-15d991127dc684513e2fff1aea3f1560 b/sql/hive/src/test/resources/golden/correlationoptimizer6-36-15d991127dc684513e2fff1aea3f1560 new file mode 100644 index 0000000000000..7c591d6146fd6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-36-15d991127dc684513e2fff1aea3f1560 @@ -0,0 +1,37 @@ +66 66 1 +98 98 4 +98 98 4 +128 128 9 +128 128 9 +128 128 9 +146 146 4 +146 146 4 +150 150 1 +213 213 4 +213 213 4 +224 224 4 +224 224 4 +238 238 4 +238 238 4 +255 255 4 +255 255 4 +273 273 9 +273 273 9 +273 273 9 +278 278 4 +278 278 4 +311 311 9 +311 311 9 +311 311 9 +369 369 9 +369 369 9 +369 369 9 +401 401 25 +401 401 25 +401 401 25 +401 401 25 +401 401 25 +406 406 16 +406 406 16 +406 406 16 +406 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-37-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer6-37-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-37-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-38-d1a903645384c97759e835649ce898fb b/sql/hive/src/test/resources/golden/correlationoptimizer6-38-d1a903645384c97759e835649ce898fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-39-813d72763b5e9e3bed0f06232f55c8b8 b/sql/hive/src/test/resources/golden/correlationoptimizer6-39-813d72763b5e9e3bed0f06232f55c8b8 new file mode 100644 index 0000000000000..7c591d6146fd6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-39-813d72763b5e9e3bed0f06232f55c8b8 @@ -0,0 +1,37 @@ +66 66 1 +98 98 4 +98 98 4 +128 128 9 +128 128 9 +128 128 9 +146 146 4 +146 146 4 +150 150 1 +213 213 4 +213 213 4 +224 224 4 +224 224 4 +238 238 4 +238 238 4 +255 255 4 +255 255 4 +273 273 9 +273 273 9 +273 273 9 +278 278 4 +278 278 4 +311 311 9 +311 311 9 +311 311 9 +369 369 9 +369 369 9 +369 369 9 +401 401 25 +401 401 25 +401 401 25 +401 401 25 +401 401 25 +406 406 16 +406 406 16 +406 406 16 +406 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-4-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-4-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-4-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-40-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-40-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-40-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-41-cea4eb2e1299a57e4732adc1439e7bb6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-41-cea4eb2e1299a57e4732adc1439e7bb6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-42-813d72763b5e9e3bed0f06232f55c8b8 b/sql/hive/src/test/resources/golden/correlationoptimizer6-42-813d72763b5e9e3bed0f06232f55c8b8 new file mode 100644 index 0000000000000..7c591d6146fd6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-42-813d72763b5e9e3bed0f06232f55c8b8 @@ -0,0 +1,37 @@ +66 66 1 +98 98 4 +98 98 4 +128 128 9 +128 128 9 +128 128 9 +146 146 4 +146 146 4 +150 150 1 +213 213 4 +213 213 4 +224 224 4 +224 224 4 +238 238 4 +238 238 4 +255 255 4 +255 255 4 +273 273 9 +273 273 9 +273 273 9 +278 278 4 +278 278 4 +311 311 9 +311 311 9 +311 311 9 +369 369 9 +369 369 9 +369 369 9 +401 401 25 +401 401 25 +401 401 25 +401 401 25 +401 401 25 +406 406 16 +406 406 16 +406 406 16 +406 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-43-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer6-43-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-43-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-44-ed339f429b82397bffb7298a534d59fb b/sql/hive/src/test/resources/golden/correlationoptimizer6-44-ed339f429b82397bffb7298a534d59fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-45-ff6c54b483726ef15c90a4c68dc659a0 b/sql/hive/src/test/resources/golden/correlationoptimizer6-45-ff6c54b483726ef15c90a4c68dc659a0 new file mode 100644 index 0000000000000..8338433cd5a27 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-45-ff6c54b483726ef15c90a4c68dc659a0 @@ -0,0 +1,37 @@ +66 1 1 66 val_66 +98 2 1 98 val_98 +98 2 1 98 val_98 +128 3 1 128 val_128 +128 3 1 128 val_128 +128 3 1 128 val_128 +146 2 1 146 val_146 +146 2 1 146 val_146 +150 1 1 150 val_150 +213 2 1 213 val_213 +213 2 1 213 val_213 +224 2 1 224 val_224 +224 2 1 224 val_224 +238 2 1 238 val_238 +238 2 1 238 val_238 +255 2 1 255 val_255 +255 2 1 255 val_255 +273 3 1 273 val_273 +273 3 1 273 val_273 +273 3 1 273 val_273 +278 2 1 278 val_278 +278 2 1 278 val_278 +311 3 1 311 val_311 +311 3 1 311 val_311 +311 3 1 311 val_311 +369 3 1 369 val_369 +369 3 1 369 val_369 +369 3 1 369 val_369 +401 5 1 401 val_401 +401 5 1 401 val_401 +401 5 1 401 val_401 +401 5 1 401 val_401 +401 5 1 401 val_401 +406 4 1 406 val_406 +406 4 1 406 val_406 +406 4 1 406 val_406 +406 4 1 406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-46-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-46-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-46-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-47-53940f5dd35ccbe9086533076c362bd4 b/sql/hive/src/test/resources/golden/correlationoptimizer6-47-53940f5dd35ccbe9086533076c362bd4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-48-ff6c54b483726ef15c90a4c68dc659a0 b/sql/hive/src/test/resources/golden/correlationoptimizer6-48-ff6c54b483726ef15c90a4c68dc659a0 new file mode 100644 index 0000000000000..8338433cd5a27 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-48-ff6c54b483726ef15c90a4c68dc659a0 @@ -0,0 +1,37 @@ +66 1 1 66 val_66 +98 2 1 98 val_98 +98 2 1 98 val_98 +128 3 1 128 val_128 +128 3 1 128 val_128 +128 3 1 128 val_128 +146 2 1 146 val_146 +146 2 1 146 val_146 +150 1 1 150 val_150 +213 2 1 213 val_213 +213 2 1 213 val_213 +224 2 1 224 val_224 +224 2 1 224 val_224 +238 2 1 238 val_238 +238 2 1 238 val_238 +255 2 1 255 val_255 +255 2 1 255 val_255 +273 3 1 273 val_273 +273 3 1 273 val_273 +273 3 1 273 val_273 +278 2 1 278 val_278 +278 2 1 278 val_278 +311 3 1 311 val_311 +311 3 1 311 val_311 +311 3 1 311 val_311 +369 3 1 369 val_369 +369 3 1 369 val_369 +369 3 1 369 val_369 +401 5 1 401 val_401 +401 5 1 401 val_401 +401 5 1 401 val_401 +401 5 1 401 val_401 +401 5 1 401 val_401 +406 4 1 406 val_406 +406 4 1 406 val_406 +406 4 1 406 val_406 +406 4 1 406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-49-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer6-49-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-49-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-5-c58f05e3e6f63bf3af7cad564063e9d3 b/sql/hive/src/test/resources/golden/correlationoptimizer6-5-c58f05e3e6f63bf3af7cad564063e9d3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-50-ade42af96a1436c5c4a3c86e3bc1a9f8 b/sql/hive/src/test/resources/golden/correlationoptimizer6-50-ade42af96a1436c5c4a3c86e3bc1a9f8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-51-4746d944f4193018017984ca2df3c60d b/sql/hive/src/test/resources/golden/correlationoptimizer6-51-4746d944f4193018017984ca2df3c60d new file mode 100644 index 0000000000000..8b1d3cd388fa2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-51-4746d944f4193018017984ca2df3c60d @@ -0,0 +1,15 @@ +66 1 66 val_66 1 +98 1 98 val_98 4 +128 1 128 val_128 9 +146 1 146 val_146 4 +150 1 150 val_150 1 +213 1 213 val_213 4 +224 1 224 val_224 4 +238 1 238 val_238 4 +255 1 255 val_255 4 +273 1 273 val_273 9 +278 1 278 val_278 4 +311 1 311 val_311 9 +369 1 369 val_369 9 +401 1 401 val_401 25 +406 1 406 val_406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-52-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-52-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-52-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-53-b9552c6399ce578cde69e663dd43d870 b/sql/hive/src/test/resources/golden/correlationoptimizer6-53-b9552c6399ce578cde69e663dd43d870 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-54-4746d944f4193018017984ca2df3c60d b/sql/hive/src/test/resources/golden/correlationoptimizer6-54-4746d944f4193018017984ca2df3c60d new file mode 100644 index 0000000000000..8b1d3cd388fa2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-54-4746d944f4193018017984ca2df3c60d @@ -0,0 +1,15 @@ +66 1 66 val_66 1 +98 1 98 val_98 4 +128 1 128 val_128 9 +146 1 146 val_146 4 +150 1 150 val_150 1 +213 1 213 val_213 4 +224 1 224 val_224 4 +238 1 238 val_238 4 +255 1 255 val_255 4 +273 1 273 val_273 9 +278 1 278 val_278 4 +311 1 311 val_311 9 +369 1 369 val_369 9 +401 1 401 val_401 25 +406 1 406 val_406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-55-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-55-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-55-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-56-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/correlationoptimizer6-56-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-56-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-57-b9552c6399ce578cde69e663dd43d870 b/sql/hive/src/test/resources/golden/correlationoptimizer6-57-b9552c6399ce578cde69e663dd43d870 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-58-4746d944f4193018017984ca2df3c60d b/sql/hive/src/test/resources/golden/correlationoptimizer6-58-4746d944f4193018017984ca2df3c60d new file mode 100644 index 0000000000000..8b1d3cd388fa2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-58-4746d944f4193018017984ca2df3c60d @@ -0,0 +1,15 @@ +66 1 66 val_66 1 +98 1 98 val_98 4 +128 1 128 val_128 9 +146 1 146 val_146 4 +150 1 150 val_150 1 +213 1 213 val_213 4 +224 1 224 val_224 4 +238 1 238 val_238 4 +255 1 255 val_255 4 +273 1 273 val_273 9 +278 1 278 val_278 4 +311 1 311 val_311 9 +369 1 369 val_369 9 +401 1 401 val_401 25 +406 1 406 val_406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-6-25b1fe48ef86952fc7766fb74b63bf21 b/sql/hive/src/test/resources/golden/correlationoptimizer6-6-25b1fe48ef86952fc7766fb74b63bf21 new file mode 100644 index 0000000000000..19b8a2aea8f64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-6-25b1fe48ef86952fc7766fb74b63bf21 @@ -0,0 +1,15 @@ +66 1 66 1 +98 1 98 4 +128 1 128 9 +146 1 146 4 +150 1 150 1 +213 1 213 4 +224 1 224 4 +238 1 238 4 +255 1 255 4 +273 1 273 9 +278 1 278 4 +311 1 311 9 +369 1 369 9 +401 1 401 25 +406 1 406 16 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-7-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer6-7-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-7-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-8-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/correlationoptimizer6-8-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer6-8-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer6-9-fd372b979ca4b12d64c65cb24e7d82ae b/sql/hive/src/test/resources/golden/correlationoptimizer6-9-fd372b979ca4b12d64c65cb24e7d82ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-0-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/correlationoptimizer7-0-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-0-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-1-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer7-1-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-1-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-10-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer7-10-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-10-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-11-fc438bb849eff3496559a916c7dee058 b/sql/hive/src/test/resources/golden/correlationoptimizer7-11-fc438bb849eff3496559a916c7dee058 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-12-22d71fb589c53776dabb4696b38c4a42 b/sql/hive/src/test/resources/golden/correlationoptimizer7-12-22d71fb589c53776dabb4696b38c4a42 new file mode 100644 index 0000000000000..747b650237b53 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-12-22d71fb589c53776dabb4696b38c4a42 @@ -0,0 +1,15 @@ +66 1 66 val_66 +98 2 98 val_98 +128 3 128 +146 2 146 val_146 +150 1 150 val_150 +213 2 213 val_213 +224 2 224 +238 2 238 val_238 +255 2 255 val_255 +273 3 273 val_273 +278 2 278 val_278 +311 3 311 val_311 +369 3 369 +401 5 401 val_401 +406 4 406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-13-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer7-13-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-13-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-14-5b2d5594522db2b4bbc6aeb8e33b68d8 b/sql/hive/src/test/resources/golden/correlationoptimizer7-14-5b2d5594522db2b4bbc6aeb8e33b68d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-15-22d71fb589c53776dabb4696b38c4a42 b/sql/hive/src/test/resources/golden/correlationoptimizer7-15-22d71fb589c53776dabb4696b38c4a42 new file mode 100644 index 0000000000000..747b650237b53 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-15-22d71fb589c53776dabb4696b38c4a42 @@ -0,0 +1,15 @@ +66 1 66 val_66 +98 2 98 val_98 +128 3 128 +146 2 146 val_146 +150 1 150 val_150 +213 2 213 val_213 +224 2 224 +238 2 238 val_238 +255 2 255 val_255 +273 3 273 val_273 +278 2 278 val_278 +311 3 311 val_311 +369 3 369 +401 5 401 val_401 +406 4 406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-2-5b2d5594522db2b4bbc6aeb8e33b68d8 b/sql/hive/src/test/resources/golden/correlationoptimizer7-2-5b2d5594522db2b4bbc6aeb8e33b68d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-3-22d71fb589c53776dabb4696b38c4a42 b/sql/hive/src/test/resources/golden/correlationoptimizer7-3-22d71fb589c53776dabb4696b38c4a42 new file mode 100644 index 0000000000000..747b650237b53 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-3-22d71fb589c53776dabb4696b38c4a42 @@ -0,0 +1,15 @@ +66 1 66 val_66 +98 2 98 val_98 +128 3 128 +146 2 146 val_146 +150 1 150 val_150 +213 2 213 val_213 +224 2 224 +238 2 238 val_238 +255 2 255 val_255 +273 3 273 val_273 +278 2 278 val_278 +311 3 311 val_311 +369 3 369 +401 5 401 val_401 +406 4 406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-4-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer7-4-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-4-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-5-5b2d5594522db2b4bbc6aeb8e33b68d8 b/sql/hive/src/test/resources/golden/correlationoptimizer7-5-5b2d5594522db2b4bbc6aeb8e33b68d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-6-22d71fb589c53776dabb4696b38c4a42 b/sql/hive/src/test/resources/golden/correlationoptimizer7-6-22d71fb589c53776dabb4696b38c4a42 new file mode 100644 index 0000000000000..747b650237b53 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-6-22d71fb589c53776dabb4696b38c4a42 @@ -0,0 +1,15 @@ +66 1 66 val_66 +98 2 98 val_98 +128 3 128 +146 2 146 val_146 +150 1 150 val_150 +213 2 213 val_213 +224 2 224 +238 2 238 val_238 +255 2 255 val_255 +273 3 273 val_273 +278 2 278 val_278 +311 3 311 val_311 +369 3 369 +401 5 401 val_401 +406 4 406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-7-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/correlationoptimizer7-7-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-7-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-8-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/correlationoptimizer7-8-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-8-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer7-9-4d3e60a0e9bd8c12fdba4e010493537d b/sql/hive/src/test/resources/golden/correlationoptimizer7-9-4d3e60a0e9bd8c12fdba4e010493537d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer7-9-4d3e60a0e9bd8c12fdba4e010493537d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-0-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/correlationoptimizer8-0-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-0-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-1-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer8-1-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-1-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-10-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer8-10-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-10-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-11-45693930a19f7e1b86202a5f5f2d139d b/sql/hive/src/test/resources/golden/correlationoptimizer8-11-45693930a19f7e1b86202a5f5f2d139d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-12-c1dfbe5cf77a97d195a3d0a65d1f1f b/sql/hive/src/test/resources/golden/correlationoptimizer8-12-c1dfbe5cf77a97d195a3d0a65d1f1f new file mode 100644 index 0000000000000..7c0af7229d62a --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-12-c1dfbe5cf77a97d195a3d0a65d1f1f @@ -0,0 +1,24 @@ + 3 NULL NULL +0 3 NULL NULL +10 1 NULL NULL +11 1 NULL NULL +12 2 NULL NULL +15 2 NULL NULL +17 1 NULL NULL +18 2 NULL NULL +19 1 NULL NULL +2 1 NULL NULL +4 1 NULL NULL +5 3 NULL NULL +8 1 NULL NULL +9 1 NULL NULL +val_146 1 NULL NULL +val_150 1 NULL NULL +val_213 1 NULL NULL +val_238 1 NULL NULL +val_255 1 NULL NULL +val_273 1 NULL NULL +val_278 1 NULL NULL +val_311 1 NULL NULL +val_401 1 NULL NULL +val_406 1 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-13-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer8-13-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-13-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-14-2b8991eb2f59bae3250c8d379b6d6aea b/sql/hive/src/test/resources/golden/correlationoptimizer8-14-2b8991eb2f59bae3250c8d379b6d6aea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-15-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer8-15-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-15-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-16-8c9264ae28e72f3724a78412f26ddbcc b/sql/hive/src/test/resources/golden/correlationoptimizer8-16-8c9264ae28e72f3724a78412f26ddbcc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-2-34cad62f8ca6f6b53cf593960055c56a b/sql/hive/src/test/resources/golden/correlationoptimizer8-2-34cad62f8ca6f6b53cf593960055c56a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-3-932db4b9935e4bc3d21dd33a8d12c275 b/sql/hive/src/test/resources/golden/correlationoptimizer8-3-932db4b9935e4bc3d21dd33a8d12c275 new file mode 100644 index 0000000000000..efdd80c9f8b89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-3-932db4b9935e4bc3d21dd33a8d12c275 @@ -0,0 +1,13 @@ +128 3 +146 val_146 2 +150 val_150 1 +213 val_213 2 +224 2 +238 val_238 2 +255 val_255 2 +273 val_273 3 +278 val_278 2 +311 val_311 3 +369 3 +401 val_401 5 +406 val_406 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-4-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/correlationoptimizer8-4-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-4-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-5-f5fa5cecdf6f7359e7d727716a7e5b78 b/sql/hive/src/test/resources/golden/correlationoptimizer8-5-f5fa5cecdf6f7359e7d727716a7e5b78 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-6-932db4b9935e4bc3d21dd33a8d12c275 b/sql/hive/src/test/resources/golden/correlationoptimizer8-6-932db4b9935e4bc3d21dd33a8d12c275 new file mode 100644 index 0000000000000..efdd80c9f8b89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-6-932db4b9935e4bc3d21dd33a8d12c275 @@ -0,0 +1,13 @@ +128 3 +146 val_146 2 +150 val_150 1 +213 val_213 2 +224 2 +238 val_238 2 +255 val_255 2 +273 val_273 3 +278 val_278 2 +311 val_311 3 +369 3 +401 val_401 5 +406 val_406 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-7-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/correlationoptimizer8-7-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-7-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-8-39a62b29e0ac91861c58c56fc654ba67 b/sql/hive/src/test/resources/golden/correlationoptimizer8-8-39a62b29e0ac91861c58c56fc654ba67 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/correlationoptimizer8-9-c1dfbe5cf77a97d195a3d0a65d1f1f b/sql/hive/src/test/resources/golden/correlationoptimizer8-9-c1dfbe5cf77a97d195a3d0a65d1f1f new file mode 100644 index 0000000000000..7c0af7229d62a --- /dev/null +++ b/sql/hive/src/test/resources/golden/correlationoptimizer8-9-c1dfbe5cf77a97d195a3d0a65d1f1f @@ -0,0 +1,24 @@ + 3 NULL NULL +0 3 NULL NULL +10 1 NULL NULL +11 1 NULL NULL +12 2 NULL NULL +15 2 NULL NULL +17 1 NULL NULL +18 2 NULL NULL +19 1 NULL NULL +2 1 NULL NULL +4 1 NULL NULL +5 3 NULL NULL +8 1 NULL NULL +9 1 NULL NULL +val_146 1 NULL NULL +val_150 1 NULL NULL +val_213 1 NULL NULL +val_238 1 NULL NULL +val_255 1 NULL NULL +val_273 1 NULL NULL +val_278 1 NULL NULL +val_311 1 NULL NULL +val_401 1 NULL NULL +val_406 1 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/count-0-dd24f2cc60a0cd0eba0a3f8ca8127a0b b/sql/hive/src/test/resources/golden/count-0-dd24f2cc60a0cd0eba0a3f8ca8127a0b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/count-1-3531872d964bc2b4f07d51b9d1629df2 b/sql/hive/src/test/resources/golden/count-1-3531872d964bc2b4f07d51b9d1629df2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/count-10-d0f804c7d06375db74a0fcf5f17603c6 b/sql/hive/src/test/resources/golden/count-10-d0f804c7d06375db74a0fcf5f17603c6 new file mode 100644 index 0000000000000..4b020e0595d2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/count-10-d0f804c7d06375db74a0fcf5f17603c6 @@ -0,0 +1,4 @@ +NULL 1 1 6 +10 2 2 10 +12 1 2 9 +100 1 1 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/count-11-29aa086fe75b55482a91316c38498565 b/sql/hive/src/test/resources/golden/count-11-29aa086fe75b55482a91316c38498565 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/count-12-944f53db544c07a7b38a0544a21d8e13 b/sql/hive/src/test/resources/golden/count-12-944f53db544c07a7b38a0544a21d8e13 new file mode 100644 index 0000000000000..54199fdb8166d --- /dev/null +++ b/sql/hive/src/test/resources/golden/count-12-944f53db544c07a7b38a0544a21d8e13 @@ -0,0 +1 @@ +7 7 6 6 6 7 3 3 6 7 4 5 6 6 5 6 4 5 5 5 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/count-2-461bad3feb7dbc25fb35d45c6876d698 b/sql/hive/src/test/resources/golden/count-2-461bad3feb7dbc25fb35d45c6876d698 new file mode 100644 index 0000000000000..2e9278da88858 --- /dev/null +++ b/sql/hive/src/test/resources/golden/count-2-461bad3feb7dbc25fb35d45c6876d698 @@ -0,0 +1,7 @@ +NULL 35 23 6 +10 1000 50 1 +100 100 10 3 +12 NULL 80 2 +10 100 NULL 5 +10 100 45 4 +12 100 75 7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/count-3-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/count-3-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/count-3-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/count-4-590bf60b8d4dfa135f73dbb52180136f b/sql/hive/src/test/resources/golden/count-4-590bf60b8d4dfa135f73dbb52180136f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/count-5-d0f804c7d06375db74a0fcf5f17603c6 b/sql/hive/src/test/resources/golden/count-5-d0f804c7d06375db74a0fcf5f17603c6 new file mode 100644 index 0000000000000..4b020e0595d2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/count-5-d0f804c7d06375db74a0fcf5f17603c6 @@ -0,0 +1,4 @@ +NULL 1 1 6 +10 2 2 10 +12 1 2 9 +100 1 1 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/count-6-29aa086fe75b55482a91316c38498565 b/sql/hive/src/test/resources/golden/count-6-29aa086fe75b55482a91316c38498565 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/count-7-944f53db544c07a7b38a0544a21d8e13 b/sql/hive/src/test/resources/golden/count-7-944f53db544c07a7b38a0544a21d8e13 new file mode 100644 index 0000000000000..54199fdb8166d --- /dev/null +++ b/sql/hive/src/test/resources/golden/count-7-944f53db544c07a7b38a0544a21d8e13 @@ -0,0 +1 @@ +7 7 6 6 6 7 3 3 6 7 4 5 6 6 5 6 4 5 5 5 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/count-8-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/count-8-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/count-8-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/count-9-590bf60b8d4dfa135f73dbb52180136f b/sql/hive/src/test/resources/golden/count-9-590bf60b8d4dfa135f73dbb52180136f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cp_mj_rc-0-645f784b04a91b8c8e5bb770f95c3766 b/sql/hive/src/test/resources/golden/cp_mj_rc-0-645f784b04a91b8c8e5bb770f95c3766 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cp_mj_rc-1-128c219e87f95f0425c8545a8c4bb32 b/sql/hive/src/test/resources/golden/cp_mj_rc-1-128c219e87f95f0425c8545a8c4bb32 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cp_mj_rc-2-17bbe2a542acac5960b755979dcb6d5e b/sql/hive/src/test/resources/golden/cp_mj_rc-2-17bbe2a542acac5960b755979dcb6d5e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cp_mj_rc-3-b1746cc42d6bbd2b1d314a9e5b18eb60 b/sql/hive/src/test/resources/golden/cp_mj_rc-3-b1746cc42d6bbd2b1d314a9e5b18eb60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cp_mj_rc-4-15beca26e35c885dff3bfe2336c26673 b/sql/hive/src/test/resources/golden/cp_mj_rc-4-15beca26e35c885dff3bfe2336c26673 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/cp_mj_rc-5-27550c25058249ebfc6cda30dcf513f9 b/sql/hive/src/test/resources/golden/cp_mj_rc-5-27550c25058249ebfc6cda30dcf513f9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create table as with db name-0-a253b1ed35dbf503d1b8902dacbe23ac b/sql/hive/src/test/resources/golden/create table as with db name-0-a253b1ed35dbf503d1b8902dacbe23ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create table as with db name-0-b7dfeb6a941b42f7def5fdceae99f425 b/sql/hive/src/test/resources/golden/create table as with db name-0-b7dfeb6a941b42f7def5fdceae99f425 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create table as with db name-1-417609d2bb67ba26de38e92ad834008f b/sql/hive/src/test/resources/golden/create table as with db name-1-417609d2bb67ba26de38e92ad834008f new file mode 100644 index 0000000000000..7aae61e5eb82f --- /dev/null +++ b/sql/hive/src/test/resources/golden/create table as with db name-1-417609d2bb67ba26de38e92ad834008f @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/create table as with db name-1-febc8588a2a54ed5b00e47cb83dd85c7 b/sql/hive/src/test/resources/golden/create table as with db name-1-febc8588a2a54ed5b00e47cb83dd85c7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create table as with db name-2-ce780d068b8d24786e639e361101a0c7 b/sql/hive/src/test/resources/golden/create table as with db name-2-ce780d068b8d24786e639e361101a0c7 new file mode 100644 index 0000000000000..7aae61e5eb82f --- /dev/null +++ b/sql/hive/src/test/resources/golden/create table as with db name-2-ce780d068b8d24786e639e361101a0c7 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/create table as with db name-3-afd6e46b6a289c3c24a8eec75a94043c b/sql/hive/src/test/resources/golden/create table as with db name-3-afd6e46b6a289c3c24a8eec75a94043c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create table as-0-fd42e3ffae73415391acb1012a3531bd b/sql/hive/src/test/resources/golden/create table as-0-fd42e3ffae73415391acb1012a3531bd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create table as-1-b9002c1d71895be765575b62656d1928 b/sql/hive/src/test/resources/golden/create table as-1-b9002c1d71895be765575b62656d1928 new file mode 100644 index 0000000000000..c5c8d29fdd13e --- /dev/null +++ b/sql/hive/src/test/resources/golden/create table as-1-b9002c1d71895be765575b62656d1928 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-0-d57ed4bbfee1ffaffaeba0a4be84c31d b/sql/hive/src/test/resources/golden/create_1-0-d57ed4bbfee1ffaffaeba0a4be84c31d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-0-d57ed4bbfee1ffaffaeba0a4be84c31d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-1-c2351f011b8ea41ff7dfa8f195148da3 b/sql/hive/src/test/resources/golden/create_1-1-c2351f011b8ea41ff7dfa8f195148da3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_1-10-b9c0b95624e601614ea2561b83aaf0ba b/sql/hive/src/test/resources/golden/create_1-10-b9c0b95624e601614ea2561b83aaf0ba new file mode 100644 index 0000000000000..66d40e52a4539 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-10-b9c0b95624e601614ea2561b83aaf0ba @@ -0,0 +1,4 @@ +a string None +b string None + +Detailed Table Information Table(tableName:table3, dbName:default, owner:marmbrus, createTime:1389343868, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5689195829966714752/table3, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format= , field.delim= \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-11-7daaeabd9c286e511e0628a32dc714d5 b/sql/hive/src/test/resources/golden/create_1-11-7daaeabd9c286e511e0628a32dc714d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_1-12-fe8680bc5ef6fe3e64c68d2638e10785 b/sql/hive/src/test/resources/golden/create_1-12-fe8680bc5ef6fe3e64c68d2638e10785 new file mode 100644 index 0000000000000..8e606f61a1c30 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-12-fe8680bc5ef6fe3e64c68d2638e10785 @@ -0,0 +1,2 @@ +a string None +b string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-13-5715f85456733a71fb7c83f1b254b3a b/sql/hive/src/test/resources/golden/create_1-13-5715f85456733a71fb7c83f1b254b3a new file mode 100644 index 0000000000000..05b460270525d --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-13-5715f85456733a71fb7c83f1b254b3a @@ -0,0 +1,4 @@ +a string None +b string None + +Detailed Table Information Table(tableName:table4, dbName:default, owner:marmbrus, createTime:1389343869, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5689195829966714752/table4, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format= , field.delim= \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-14-437bd1acbae61f48e851addb769d3379 b/sql/hive/src/test/resources/golden/create_1-14-437bd1acbae61f48e851addb769d3379 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_1-15-fd9415e340cf54a9473cc4bf86673816 b/sql/hive/src/test/resources/golden/create_1-15-fd9415e340cf54a9473cc4bf86673816 new file mode 100644 index 0000000000000..eda3946588e3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-15-fd9415e340cf54a9473cc4bf86673816 @@ -0,0 +1,2 @@ +a string from deserializer +b string from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-16-c99c700ca511b68577aae8ae513a4a32 b/sql/hive/src/test/resources/golden/create_1-16-c99c700ca511b68577aae8ae513a4a32 new file mode 100644 index 0000000000000..8fc60adf10167 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-16-c99c700ca511b68577aae8ae513a4a32 @@ -0,0 +1,4 @@ +a string from deserializer +b string from deserializer + +Detailed Table Information Table(tableName:table5, dbName:default, owner:marmbrus, createTime:1389343869, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5689195829966714752/table5, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format= , field.delim= \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-2-ecd02bc3563cd6b60b8394956cb69084 b/sql/hive/src/test/resources/golden/create_1-2-ecd02bc3563cd6b60b8394956cb69084 new file mode 100644 index 0000000000000..8e606f61a1c30 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-2-ecd02bc3563cd6b60b8394956cb69084 @@ -0,0 +1,2 @@ +a string None +b string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-3-c27702ff131e0ecfd71f1e1779fbe365 b/sql/hive/src/test/resources/golden/create_1-3-c27702ff131e0ecfd71f1e1779fbe365 new file mode 100644 index 0000000000000..5e9bc70c3a1a3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-3-c27702ff131e0ecfd71f1e1779fbe365 @@ -0,0 +1,4 @@ +a string None +b string None + +Detailed Table Information Table(tableName:table1, dbName:default, owner:marmbrus, createTime:1389343868, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5689195829966714752/table1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389343868}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-4-610b82bf7b0080d293977927e5ef780c b/sql/hive/src/test/resources/golden/create_1-4-610b82bf7b0080d293977927e5ef780c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_1-5-c77b018276b1558c1d9462e0625e152e b/sql/hive/src/test/resources/golden/create_1-5-c77b018276b1558c1d9462e0625e152e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_1-6-52dc9f900d7f7a559698aff9565f061a b/sql/hive/src/test/resources/golden/create_1-6-52dc9f900d7f7a559698aff9565f061a new file mode 100644 index 0000000000000..6ed3515ba6876 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-6-52dc9f900d7f7a559698aff9565f061a @@ -0,0 +1,2 @@ +a string None +b int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-7-8564aa6cc2b0ee85292b3e8976fe9001 b/sql/hive/src/test/resources/golden/create_1-7-8564aa6cc2b0ee85292b3e8976fe9001 new file mode 100644 index 0000000000000..bec4c72e49857 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-7-8564aa6cc2b0ee85292b3e8976fe9001 @@ -0,0 +1,4 @@ +a string None +b int None + +Detailed Table Information Table(tableName:table2, dbName:default, owner:marmbrus, createTime:1389343868, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:int, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5689195829966714752/table2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389343868}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_1-8-19331fe6a2a35f1171babfe4e1c86f59 b/sql/hive/src/test/resources/golden/create_1-8-19331fe6a2a35f1171babfe4e1c86f59 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_1-9-f19e6b501d5d2fb284777c71f8f6c0c3 b/sql/hive/src/test/resources/golden/create_1-9-f19e6b501d5d2fb284777c71f8f6c0c3 new file mode 100644 index 0000000000000..8e606f61a1c30 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_1-9-f19e6b501d5d2fb284777c71f8f6c0c3 @@ -0,0 +1,2 @@ +a string None +b string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_big_view-0-bdf3c2e20793ef833f336a40791091d b/sql/hive/src/test/resources/golden/create_big_view-0-bdf3c2e20793ef833f336a40791091d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_big_view-1-fbd4b50d4d80d2a927a0db5037c62bee b/sql/hive/src/test/resources/golden/create_big_view-1-fbd4b50d4d80d2a927a0db5037c62bee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_escape-0-3e860648a3f2f258d59a62fd0bbe1c3e b/sql/hive/src/test/resources/golden/create_escape-0-3e860648a3f2f258d59a62fd0bbe1c3e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_escape-1-ecd02bc3563cd6b60b8394956cb69084 b/sql/hive/src/test/resources/golden/create_escape-1-ecd02bc3563cd6b60b8394956cb69084 new file mode 100644 index 0000000000000..8e606f61a1c30 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_escape-1-ecd02bc3563cd6b60b8394956cb69084 @@ -0,0 +1,2 @@ +a string None +b string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_escape-2-c27702ff131e0ecfd71f1e1779fbe365 b/sql/hive/src/test/resources/golden/create_escape-2-c27702ff131e0ecfd71f1e1779fbe365 new file mode 100644 index 0000000000000..8ab6b24deab60 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_escape-2-c27702ff131e0ecfd71f1e1779fbe365 @@ -0,0 +1,4 @@ +a string None +b string None + +Detailed Table Information Table(tableName:table1, dbName:default, owner:marmbrus, createTime:1388825524, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3286459698772672096/table1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{escape.delim=\, serialization.format= , field.delim= \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_escape-3-9541399cde42210bd7ac1beb07ceb14 b/sql/hive/src/test/resources/golden/create_escape-3-9541399cde42210bd7ac1beb07ceb14 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_escape-4-7d84873a6ce03e0e408fa67ef5dd733 b/sql/hive/src/test/resources/golden/create_escape-4-7d84873a6ce03e0e408fa67ef5dd733 new file mode 100644 index 0000000000000..bbe37f8e2a790 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_escape-4-7d84873a6ce03e0e408fa67ef5dd733 @@ -0,0 +1 @@ +86 \ \ \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_genericudaf-0-499d36ed8229cbf74a07b59914bdf717 b/sql/hive/src/test/resources/golden/create_genericudaf-0-499d36ed8229cbf74a07b59914bdf717 new file mode 100644 index 0000000000000..cbcdfbe72e8c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_genericudaf-0-499d36ed8229cbf74a07b59914bdf717 @@ -0,0 +1,9 @@ +ABSTRACT SYNTAX TREE: + (TOK_CREATEFUNCTION test_avg 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + diff --git a/sql/hive/src/test/resources/golden/create_genericudaf-1-c7f934e9c76350a0d3caa694463a673b b/sql/hive/src/test/resources/golden/create_genericudaf-1-c7f934e9c76350a0d3caa694463a673b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_genericudaf-2-84f898ffd668a17fe2ef081866d1dcd2 b/sql/hive/src/test/resources/golden/create_genericudaf-2-84f898ffd668a17fe2ef081866d1dcd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_genericudaf-3-d3b1af3e7f037de800255d9411a690e8 b/sql/hive/src/test/resources/golden/create_genericudaf-3-d3b1af3e7f037de800255d9411a690e8 new file mode 100644 index 0000000000000..2f958c483a9df --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_genericudaf-3-d3b1af3e7f037de800255d9411a690e8 @@ -0,0 +1 @@ +1.0 260.182 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_genericudaf-4-c64a3266b9a1c3383cc56bd883345c1 b/sql/hive/src/test/resources/golden/create_genericudaf-4-c64a3266b9a1c3383cc56bd883345c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_genericudf-0-dd23fb149bb6d6937b838334559ad8d1 b/sql/hive/src/test/resources/golden/create_genericudf-0-dd23fb149bb6d6937b838334559ad8d1 new file mode 100644 index 0000000000000..0e9c06c882602 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_genericudf-0-dd23fb149bb6d6937b838334559ad8d1 @@ -0,0 +1,10 @@ +ABSTRACT SYNTAX TREE: + (TOK_CREATEFUNCTION test_translate 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + + diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-0-16167c581df48112004009fef228e29a b/sql/hive/src/test/resources/golden/create_insert_outputformat-0-16167c581df48112004009fef228e29a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-1-1246ba69e870178971f5ae062641cf47 b/sql/hive/src/test/resources/golden/create_insert_outputformat-1-1246ba69e870178971f5ae062641cf47 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-2-8c2e4081b9d69297c35faab0a2ff86dc b/sql/hive/src/test/resources/golden/create_insert_outputformat-2-8c2e4081b9d69297c35faab0a2ff86dc new file mode 100644 index 0000000000000..83f572c424926 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_insert_outputformat-2-8c2e4081b9d69297c35faab0a2ff86dc @@ -0,0 +1,2 @@ +key int None +value string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-3-cc4e4ae8e5be09017c6206b8ae5088c3 b/sql/hive/src/test/resources/golden/create_insert_outputformat-3-cc4e4ae8e5be09017c6206b8ae5088c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-4-2453e9c2ed5c7c517dce66a20e402a57 b/sql/hive/src/test/resources/golden/create_insert_outputformat-4-2453e9c2ed5c7c517dce66a20e402a57 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-5-8552731917a8260c25e6df79b83bf5c b/sql/hive/src/test/resources/golden/create_insert_outputformat-5-8552731917a8260c25e6df79b83bf5c new file mode 100644 index 0000000000000..83f572c424926 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_insert_outputformat-5-8552731917a8260c25e6df79b83bf5c @@ -0,0 +1,2 @@ +key int None +value string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-6-2f52c0c383ad83fae1620a0db9f6c863 b/sql/hive/src/test/resources/golden/create_insert_outputformat-6-2f52c0c383ad83fae1620a0db9f6c863 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-7-a755c7e39694261510421e262b5005e b/sql/hive/src/test/resources/golden/create_insert_outputformat-7-a755c7e39694261510421e262b5005e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_insert_outputformat-8-33a4312fd617c5c9f2a560dc6ce868a5 b/sql/hive/src/test/resources/golden/create_insert_outputformat-8-33a4312fd617c5c9f2a560dc6ce868a5 new file mode 100644 index 0000000000000..83f572c424926 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_insert_outputformat-8-33a4312fd617c5c9f2a560dc6ce868a5 @@ -0,0 +1,2 @@ +key int None +value string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_like-0-c2351f011b8ea41ff7dfa8f195148da3 b/sql/hive/src/test/resources/golden/create_like-0-c2351f011b8ea41ff7dfa8f195148da3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like-1-30485a2507b60b96cad3d293527e6af b/sql/hive/src/test/resources/golden/create_like-1-30485a2507b60b96cad3d293527e6af new file mode 100644 index 0000000000000..b8ddba7f50b97 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like-1-30485a2507b60b96cad3d293527e6af @@ -0,0 +1,27 @@ +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 11:13:23 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/table1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392059603 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/create_like-10-7d84873a6ce03e0e408fa67ef5dd733 b/sql/hive/src/test/resources/golden/create_like-10-7d84873a6ce03e0e408fa67ef5dd733 new file mode 100644 index 0000000000000..e87fb81a6f043 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like-10-7d84873a6ce03e0e408fa67ef5dd733 @@ -0,0 +1 @@ +86 val_86 diff --git a/sql/hive/src/test/resources/golden/create_like-11-ba64f0122b21f605d8b2928753784130 b/sql/hive/src/test/resources/golden/create_like-11-ba64f0122b21f605d8b2928753784130 new file mode 100644 index 0000000000000..375dcacb8db71 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like-11-ba64f0122b21f605d8b2928753784130 @@ -0,0 +1,2 @@ +100 val_100 +100 val_100 diff --git a/sql/hive/src/test/resources/golden/create_like-2-a20451f152e68606cc5e373fe5fd86a b/sql/hive/src/test/resources/golden/create_like-2-a20451f152e68606cc5e373fe5fd86a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like-3-eea111a209cf8895f31f64699669c705 b/sql/hive/src/test/resources/golden/create_like-3-eea111a209cf8895f31f64699669c705 new file mode 100644 index 0000000000000..52b637c27f98d --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like-3-eea111a209cf8895f31f64699669c705 @@ -0,0 +1,27 @@ +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 11:13:23 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/table2 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392059603 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/create_like-4-39ead53334938635b60a5ffdaa2c9f86 b/sql/hive/src/test/resources/golden/create_like-4-39ead53334938635b60a5ffdaa2c9f86 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like-5-dc9de26002604e9e436135bd4b40636d b/sql/hive/src/test/resources/golden/create_like-5-dc9de26002604e9e436135bd4b40636d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like-6-83eb00d0ac6d26d398ed5f9ddb1d3919 b/sql/hive/src/test/resources/golden/create_like-6-83eb00d0ac6d26d398ed5f9ddb1d3919 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like-7-231c8b6709a8dc0b6a3b3a9751191cd7 b/sql/hive/src/test/resources/golden/create_like-7-231c8b6709a8dc0b6a3b3a9751191cd7 new file mode 100644 index 0000000000000..d9308798dcb1c --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like-7-231c8b6709a8dc0b6a3b3a9751191cd7 @@ -0,0 +1,28 @@ +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 11:13:23 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/table3 +Table Type: EXTERNAL_TABLE +Table Parameters: + EXTERNAL TRUE + transient_lastDdlTime 1392059603 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/create_like-8-639a13da6855b974fc2e170fd49b33cb b/sql/hive/src/test/resources/golden/create_like-8-639a13da6855b974fc2e170fd49b33cb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like-9-a0ce573e299b66b8ce31da2890b318cb b/sql/hive/src/test/resources/golden/create_like-9-a0ce573e299b66b8ce31da2890b318cb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-0-3b48eae3848493703396156bedb1e98b b/sql/hive/src/test/resources/golden/create_like_view-0-3b48eae3848493703396156bedb1e98b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-1-3c805fc10db9af83327e04d518f3753a b/sql/hive/src/test/resources/golden/create_like_view-1-3c805fc10db9af83327e04d518f3753a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-10-eea111a209cf8895f31f64699669c705 b/sql/hive/src/test/resources/golden/create_like_view-10-eea111a209cf8895f31f64699669c705 new file mode 100644 index 0000000000000..3e2a912824ab3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-10-eea111a209cf8895f31f64699669c705 @@ -0,0 +1,27 @@ +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Feb 07 14:52:37 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3766080982052101504/table2 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1391813557 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/create_like_view-11-62e0dd08ff9214aa999d9a2f30704fe2 b/sql/hive/src/test/resources/golden/create_like_view-11-62e0dd08ff9214aa999d9a2f30704fe2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-12-cb343b6b463c2e9b5735fbdf82d24811 b/sql/hive/src/test/resources/golden/create_like_view-12-cb343b6b463c2e9b5735fbdf82d24811 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-13-fd80fbff7a622abe6b25c9fff7c5d608 b/sql/hive/src/test/resources/golden/create_like_view-13-fd80fbff7a622abe6b25c9fff7c5d608 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-14-f19e6b501d5d2fb284777c71f8f6c0c3 b/sql/hive/src/test/resources/golden/create_like_view-14-f19e6b501d5d2fb284777c71f8f6c0c3 new file mode 100644 index 0000000000000..115d12fb70c81 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-14-f19e6b501d5d2fb284777c71f8f6c0c3 @@ -0,0 +1,2 @@ +a string None +b string None diff --git a/sql/hive/src/test/resources/golden/create_like_view-15-231c8b6709a8dc0b6a3b3a9751191cd7 b/sql/hive/src/test/resources/golden/create_like_view-15-231c8b6709a8dc0b6a3b3a9751191cd7 new file mode 100644 index 0000000000000..61d34badb1a2d --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-15-231c8b6709a8dc0b6a3b3a9751191cd7 @@ -0,0 +1,28 @@ +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Feb 07 14:52:37 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3766080982052101504/table3 +Table Type: EXTERNAL_TABLE +Table Parameters: + EXTERNAL TRUE + transient_lastDdlTime 1391813557 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/create_like_view-16-639a13da6855b974fc2e170fd49b33cb b/sql/hive/src/test/resources/golden/create_like_view-16-639a13da6855b974fc2e170fd49b33cb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-17-a0ce573e299b66b8ce31da2890b318cb b/sql/hive/src/test/resources/golden/create_like_view-17-a0ce573e299b66b8ce31da2890b318cb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-18-d77d78569d86802f7c097d3d02150c b/sql/hive/src/test/resources/golden/create_like_view-18-d77d78569d86802f7c097d3d02150c new file mode 100644 index 0000000000000..e87fb81a6f043 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-18-d77d78569d86802f7c097d3d02150c @@ -0,0 +1 @@ +86 val_86 diff --git a/sql/hive/src/test/resources/golden/create_like_view-19-deabf2d92205da2cbce9bdff854a81f b/sql/hive/src/test/resources/golden/create_like_view-19-deabf2d92205da2cbce9bdff854a81f new file mode 100644 index 0000000000000..375dcacb8db71 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-19-deabf2d92205da2cbce9bdff854a81f @@ -0,0 +1,2 @@ +100 val_100 +100 val_100 diff --git a/sql/hive/src/test/resources/golden/create_like_view-2-78e7a2bb4c10776cbdfb37c73d92ad6b b/sql/hive/src/test/resources/golden/create_like_view-2-78e7a2bb4c10776cbdfb37c73d92ad6b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-20-152e6a694276b2fc1bb4fe6b4543fef0 b/sql/hive/src/test/resources/golden/create_like_view-20-152e6a694276b2fc1bb4fe6b4543fef0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-21-f982cac17966dcb9d76c1b6b9d4a7914 b/sql/hive/src/test/resources/golden/create_like_view-21-f982cac17966dcb9d76c1b6b9d4a7914 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-22-26e7fe8b9b9769a8d6a8a95b9cfbdf91 b/sql/hive/src/test/resources/golden/create_like_view-22-26e7fe8b9b9769a8d6a8a95b9cfbdf91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-23-44c601e364e42a83babab4a342dfbd2b b/sql/hive/src/test/resources/golden/create_like_view-23-44c601e364e42a83babab4a342dfbd2b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-24-df2d18dbae578430bfc7b9d27d201505 b/sql/hive/src/test/resources/golden/create_like_view-24-df2d18dbae578430bfc7b9d27d201505 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-25-87a663f8fd80110a9cee249535037c0d b/sql/hive/src/test/resources/golden/create_like_view-25-87a663f8fd80110a9cee249535037c0d new file mode 100644 index 0000000000000..4c2967215fe66 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-25-87a663f8fd80110a9cee249535037c0d @@ -0,0 +1,33 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Feb 07 14:53:16 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3766080982052101504/table1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1391813596 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/create_like_view-26-152e6a694276b2fc1bb4fe6b4543fef0 b/sql/hive/src/test/resources/golden/create_like_view-26-152e6a694276b2fc1bb4fe6b4543fef0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-27-26e7fe8b9b9769a8d6a8a95b9cfbdf91 b/sql/hive/src/test/resources/golden/create_like_view-27-26e7fe8b9b9769a8d6a8a95b9cfbdf91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-3-559f17e8f827532749948b3b9e6c0f3f b/sql/hive/src/test/resources/golden/create_like_view-3-559f17e8f827532749948b3b9e6c0f3f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-4-c2351f011b8ea41ff7dfa8f195148da3 b/sql/hive/src/test/resources/golden/create_like_view-4-c2351f011b8ea41ff7dfa8f195148da3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-5-ecd02bc3563cd6b60b8394956cb69084 b/sql/hive/src/test/resources/golden/create_like_view-5-ecd02bc3563cd6b60b8394956cb69084 new file mode 100644 index 0000000000000..115d12fb70c81 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-5-ecd02bc3563cd6b60b8394956cb69084 @@ -0,0 +1,2 @@ +a string None +b string None diff --git a/sql/hive/src/test/resources/golden/create_like_view-6-30485a2507b60b96cad3d293527e6af b/sql/hive/src/test/resources/golden/create_like_view-6-30485a2507b60b96cad3d293527e6af new file mode 100644 index 0000000000000..02dee147bca42 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-6-30485a2507b60b96cad3d293527e6af @@ -0,0 +1,27 @@ +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Feb 07 14:52:37 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3766080982052101504/table1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1391813557 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/create_like_view-7-fcc954b645304d258611f21d3aed7b76 b/sql/hive/src/test/resources/golden/create_like_view-7-fcc954b645304d258611f21d3aed7b76 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-8-304a79a8a321b84aee91f907f756a7e3 b/sql/hive/src/test/resources/golden/create_like_view-8-304a79a8a321b84aee91f907f756a7e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_like_view-9-52dc9f900d7f7a559698aff9565f061a b/sql/hive/src/test/resources/golden/create_like_view-9-52dc9f900d7f7a559698aff9565f061a new file mode 100644 index 0000000000000..115d12fb70c81 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_like_view-9-52dc9f900d7f7a559698aff9565f061a @@ -0,0 +1,2 @@ +a string None +b string None diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-0-366a4de0343396b9df03277f1098722c b/sql/hive/src/test/resources/golden/create_merge_compressed-0-366a4de0343396b9df03277f1098722c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-1-276fbe6fb296b13904516888ffa95342 b/sql/hive/src/test/resources/golden/create_merge_compressed-1-276fbe6fb296b13904516888ffa95342 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-10-d6fee0f05fa9b04cb7c557862402c929 b/sql/hive/src/test/resources/golden/create_merge_compressed-10-d6fee0f05fa9b04cb7c557862402c929 new file mode 100644 index 0000000000000..dbdf4585360ae --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_merge_compressed-10-d6fee0f05fa9b04cb7c557862402c929 @@ -0,0 +1,14 @@ +tableName:tgt_rc_merge_test +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5689195829966714752/tgt_rc_merge_test +inputformat:org.apache.hadoop.hive.ql.io.RCFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat +columns:struct columns { i32 key, string value} +partitioned:false +partitionColumns: +totalNumberFiles:1 +totalFileSize:239 +maxFileSize:239 +minFileSize:239 +lastAccessTime:0 +lastUpdateTime:1389344017000 diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-11-614c34f9e88015f21bffc4b8930bc95d b/sql/hive/src/test/resources/golden/create_merge_compressed-11-614c34f9e88015f21bffc4b8930bc95d new file mode 100644 index 0000000000000..9a037142aa3c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_merge_compressed-11-614c34f9e88015f21bffc4b8930bc95d @@ -0,0 +1 @@ +10 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-12-4d89cbe49f710527b54e6262472f0320 b/sql/hive/src/test/resources/golden/create_merge_compressed-12-4d89cbe49f710527b54e6262472f0320 new file mode 100644 index 0000000000000..eb6c3f6aef813 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_merge_compressed-12-4d89cbe49f710527b54e6262472f0320 @@ -0,0 +1 @@ +508 -751895388 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-13-440c6f8daa221613fe796d99b494e61f b/sql/hive/src/test/resources/golden/create_merge_compressed-13-440c6f8daa221613fe796d99b494e61f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-14-32251c08304629a3153e0b471de060c5 b/sql/hive/src/test/resources/golden/create_merge_compressed-14-32251c08304629a3153e0b471de060c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-2-84b74227c9f1563f530cd3ac3b333e54 b/sql/hive/src/test/resources/golden/create_merge_compressed-2-84b74227c9f1563f530cd3ac3b333e54 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_merge_compressed-2-84b74227c9f1563f530cd3ac3b333e54 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-3-d7cc5e5c2cc9e09e715afcf8a0fd34c3 b/sql/hive/src/test/resources/golden/create_merge_compressed-3-d7cc5e5c2cc9e09e715afcf8a0fd34c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-4-c2a7e48e37375fc59126d71b9965b6c3 b/sql/hive/src/test/resources/golden/create_merge_compressed-4-c2a7e48e37375fc59126d71b9965b6c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-5-c2a7e48e37375fc59126d71b9965b6c3 b/sql/hive/src/test/resources/golden/create_merge_compressed-5-c2a7e48e37375fc59126d71b9965b6c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-6-d6fee0f05fa9b04cb7c557862402c929 b/sql/hive/src/test/resources/golden/create_merge_compressed-6-d6fee0f05fa9b04cb7c557862402c929 new file mode 100644 index 0000000000000..8a9d9d56a66d6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_merge_compressed-6-d6fee0f05fa9b04cb7c557862402c929 @@ -0,0 +1,14 @@ +tableName:tgt_rc_merge_test +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5689195829966714752/tgt_rc_merge_test +inputformat:org.apache.hadoop.hive.ql.io.RCFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat +columns:struct columns { i32 key, string value} +partitioned:false +partitionColumns: +totalNumberFiles:2 +totalFileSize:338 +maxFileSize:169 +minFileSize:169 +lastAccessTime:0 +lastUpdateTime:1389343990000 diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-7-614c34f9e88015f21bffc4b8930bc95d b/sql/hive/src/test/resources/golden/create_merge_compressed-7-614c34f9e88015f21bffc4b8930bc95d new file mode 100644 index 0000000000000..9a037142aa3c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_merge_compressed-7-614c34f9e88015f21bffc4b8930bc95d @@ -0,0 +1 @@ +10 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-8-4d89cbe49f710527b54e6262472f0320 b/sql/hive/src/test/resources/golden/create_merge_compressed-8-4d89cbe49f710527b54e6262472f0320 new file mode 100644 index 0000000000000..eb6c3f6aef813 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_merge_compressed-8-4d89cbe49f710527b54e6262472f0320 @@ -0,0 +1 @@ +508 -751895388 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_merge_compressed-9-16a420c1def17d14881bd75d35a4c0e5 b/sql/hive/src/test/resources/golden/create_merge_compressed-9-16a420c1def17d14881bd75d35a4c0e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_nested_type-0-17320fbe4af5d2c6bf2d52425f70f968 b/sql/hive/src/test/resources/golden/create_nested_type-0-17320fbe4af5d2c6bf2d52425f70f968 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_nested_type-1-ecd02bc3563cd6b60b8394956cb69084 b/sql/hive/src/test/resources/golden/create_nested_type-1-ecd02bc3563cd6b60b8394956cb69084 new file mode 100644 index 0000000000000..c49ad26c04d67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_nested_type-1-ecd02bc3563cd6b60b8394956cb69084 @@ -0,0 +1,4 @@ +a string None +b array None +c array> None +d map> None diff --git a/sql/hive/src/test/resources/golden/create_nested_type-2-c27702ff131e0ecfd71f1e1779fbe365 b/sql/hive/src/test/resources/golden/create_nested_type-2-c27702ff131e0ecfd71f1e1779fbe365 new file mode 100644 index 0000000000000..41c7202c8b886 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_nested_type-2-c27702ff131e0ecfd71f1e1779fbe365 @@ -0,0 +1,6 @@ +a string None +b array None +c array> None +d map> None + +Detailed Table Information Table(tableName:table1, dbName:default, owner:marmbrus, createTime:1391226109, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:array, comment:null), FieldSchema(name:c, type:array>, comment:null), FieldSchema(name:d, type:map>, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7445586986532881162/table1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1391226109}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/create_nested_type-3-ac452c9279877935983c37113898e53c b/sql/hive/src/test/resources/golden/create_nested_type-3-ac452c9279877935983c37113898e53c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_nested_type-4-c26dff65f60f7c0c70183ce22f4529ff b/sql/hive/src/test/resources/golden/create_nested_type-4-c26dff65f60f7c0c70183ce22f4529ff new file mode 100644 index 0000000000000..45bb8c610c677 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_nested_type-4-c26dff65f60f7c0c70183ce22f4529ff @@ -0,0 +1,4 @@ +a0 ["b00","b01"] [{"c001":"C001","c002":"C002"},{"c011":null,"c012":"C012"}] {"d01":["d011","d012"],"d02":["d021","d022"]} +a1 ["b10"] [{"c001":"C001","c002":"C002"}] {"d01":["d011","d012"],"d02":null} +a2 [] [{"c001":null,"c002":"C002"},{"c011":"C011","c012":"C012"}] {"d01":[null,"d012"],"d02":["d021","d022"]} +a3 NULL NULL NULL diff --git a/sql/hive/src/test/resources/golden/create_or_replace_view-0-a14cfe3eff322066e61023ec06c7735d b/sql/hive/src/test/resources/golden/create_or_replace_view-0-a14cfe3eff322066e61023ec06c7735d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_or_replace_view-1-a27131eb04bd5e071d3267c92d3f8dea b/sql/hive/src/test/resources/golden/create_or_replace_view-1-a27131eb04bd5e071d3267c92d3f8dea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_or_replace_view-2-30dc3e80e3873af5115e4f5e39078a13 b/sql/hive/src/test/resources/golden/create_or_replace_view-2-30dc3e80e3873af5115e4f5e39078a13 new file mode 100644 index 0000000000000..46869fc9e88eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_or_replace_view-2-30dc3e80e3873af5115e4f5e39078a13 @@ -0,0 +1,30 @@ +# col_name data_type comment + +key int None +value string None +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 12:09:28 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Table Type: VIRTUAL_VIEW +Table Parameters: + transient_lastDdlTime 1392062968 + +# Storage Information +SerDe Library: null +InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] + +# View Information +View Original Text: select * from srcpart +View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `default`.`srcpart` diff --git a/sql/hive/src/test/resources/golden/create_or_replace_view-3-5fd147edbe44a96782923a3ef6caa47d b/sql/hive/src/test/resources/golden/create_or_replace_view-3-5fd147edbe44a96782923a3ef6caa47d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_or_replace_view-4-b1880014afc9ad1f8db91ba3db3867de b/sql/hive/src/test/resources/golden/create_or_replace_view-4-b1880014afc9ad1f8db91ba3db3867de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_or_replace_view-5-b1d2deb8a13dde4bf18c9b34836e00fb b/sql/hive/src/test/resources/golden/create_or_replace_view-5-b1d2deb8a13dde4bf18c9b34836e00fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/create_skewed_table1-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_skewed_table1-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-1-cc66bd64f1cdc97b953e20860305370 b/sql/hive/src/test/resources/golden/create_skewed_table1-1-cc66bd64f1cdc97b953e20860305370 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-2-32a6d8b77b06bbd1f236d6c9d9a0c75e b/sql/hive/src/test/resources/golden/create_skewed_table1-2-32a6d8b77b06bbd1f236d6c9d9a0c75e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-3-4f1d4f68bacf5fc6af33ef9e5e89e159 b/sql/hive/src/test/resources/golden/create_skewed_table1-3-4f1d4f68bacf5fc6af33ef9e5e89e159 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-4-f3f1642674545762a4bff5cb75634e20 b/sql/hive/src/test/resources/golden/create_skewed_table1-4-f3f1642674545762a4bff5cb75634e20 new file mode 100644 index 0000000000000..d7c386e17c096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_skewed_table1-4-f3f1642674545762a4bff5cb75634e20 @@ -0,0 +1,29 @@ +# col_name data_type comment + +key string None +value string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 14 22:51:44 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6750581243740872392/list_bucket_single_2 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1389768704 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Skewed Columns: [key] +Skewed Values: [[1], [5], [6]] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-5-f5e6d62497ae174fdfeeb3fd6f899b2e b/sql/hive/src/test/resources/golden/create_skewed_table1-5-f5e6d62497ae174fdfeeb3fd6f899b2e new file mode 100644 index 0000000000000..0817efac83d79 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_skewed_table1-5-f5e6d62497ae174fdfeeb3fd6f899b2e @@ -0,0 +1,29 @@ +# col_name data_type comment + +key string None +value string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 14 22:51:44 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6750581243740872392/list_bucket_single +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1389768704 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Skewed Columns: [key] +Skewed Values: [[1], [5], [6]] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-6-d7a147c6b0a3609663628b43457b2cef b/sql/hive/src/test/resources/golden/create_skewed_table1-6-d7a147c6b0a3609663628b43457b2cef new file mode 100644 index 0000000000000..2986dd43b0fd6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_skewed_table1-6-d7a147c6b0a3609663628b43457b2cef @@ -0,0 +1,30 @@ +# col_name data_type comment + +col1 string None +col2 int None +col3 string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 14 22:51:44 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6750581243740872392/list_bucket_multiple +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1389768704 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Skewed Columns: [col1, col2] +Skewed Values: [[s1, 1], [s3, 3], [s13, 13], [s78, 78]] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-7-81fc0a09afbcd674874961c09aa947d6 b/sql/hive/src/test/resources/golden/create_skewed_table1-7-81fc0a09afbcd674874961c09aa947d6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-8-2ae6d96ecee0081ccc474388d50675fd b/sql/hive/src/test/resources/golden/create_skewed_table1-8-2ae6d96ecee0081ccc474388d50675fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_skewed_table1-9-758987cfb7302bdb76898290de49a80e b/sql/hive/src/test/resources/golden/create_skewed_table1-9-758987cfb7302bdb76898290de49a80e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_struct_table-0-d519c3ac0717b41167f8a40b472ad6b1 b/sql/hive/src/test/resources/golden/create_struct_table-0-d519c3ac0717b41167f8a40b472ad6b1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_struct_table-1-2ca90a28a994405e6150c96f4a572294 b/sql/hive/src/test/resources/golden/create_struct_table-1-2ca90a28a994405e6150c96f4a572294 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_struct_table-2-d51e74fd10cc16607137b7f715557ecd b/sql/hive/src/test/resources/golden/create_struct_table-2-d51e74fd10cc16607137b7f715557ecd new file mode 100644 index 0000000000000..6a45cf1600994 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_struct_table-2-d51e74fd10cc16607137b7f715557ecd @@ -0,0 +1,10 @@ +{"a":238,"b":"val_238","c":null} 238 val_238 +{"a":86,"b":"val_86","c":null} 86 val_86 +{"a":311,"b":"val_311","c":null} 311 val_311 +{"a":27,"b":"val_27","c":null} 27 val_27 +{"a":165,"b":"val_165","c":null} 165 val_165 +{"a":409,"b":"val_409","c":null} 409 val_409 +{"a":255,"b":"val_255","c":null} 255 val_255 +{"a":278,"b":"val_278","c":null} 278 val_278 +{"a":98,"b":"val_98","c":null} 98 val_98 +{"a":484,"b":"val_484","c":null} 484 val_484 diff --git a/sql/hive/src/test/resources/golden/create_udaf-0-a69c2b11dc912ef5444af32dce6aa33e b/sql/hive/src/test/resources/golden/create_udaf-0-a69c2b11dc912ef5444af32dce6aa33e new file mode 100644 index 0000000000000..8af6a0338d65a --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_udaf-0-a69c2b11dc912ef5444af32dce6aa33e @@ -0,0 +1,10 @@ +ABSTRACT SYNTAX TREE: + (TOK_CREATEFUNCTION test_max 'org.apache.hadoop.hive.ql.udf.UDAFTestMax') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + + diff --git a/sql/hive/src/test/resources/golden/create_view-0-26e7fe8b9b9769a8d6a8a95b9cfbdf91 b/sql/hive/src/test/resources/golden/create_view-0-26e7fe8b9b9769a8d6a8a95b9cfbdf91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-1-c186ac1fe46117acb6fd452df15e0d92 b/sql/hive/src/test/resources/golden/create_view-1-c186ac1fe46117acb6fd452df15e0d92 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-10-9f71514dffc747ddd49fbb1fafb6d3dd b/sql/hive/src/test/resources/golden/create_view-10-9f71514dffc747ddd49fbb1fafb6d3dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-11-2021c047203276dd2db51a56e672fcea b/sql/hive/src/test/resources/golden/create_view-11-2021c047203276dd2db51a56e672fcea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-12-420752b11848e29bce1c8ace7d3060fc b/sql/hive/src/test/resources/golden/create_view-12-420752b11848e29bce1c8ace7d3060fc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-13-bff53e5df8356ac16f7b9b78b157e60a b/sql/hive/src/test/resources/golden/create_view-13-bff53e5df8356ac16f7b9b78b157e60a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-14-69162f2f22978113fea529d7fc7b78d3 b/sql/hive/src/test/resources/golden/create_view-14-69162f2f22978113fea529d7fc7b78d3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-15-ceebf4cb0dc23f517a444266bc8d2447 b/sql/hive/src/test/resources/golden/create_view-15-ceebf4cb0dc23f517a444266bc8d2447 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-16-cb434f5704ee3ed21d1f1521a2a654f4 b/sql/hive/src/test/resources/golden/create_view-16-cb434f5704ee3ed21d1f1521a2a654f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-17-b3c1023d56f3439833c246e8bfd4502a b/sql/hive/src/test/resources/golden/create_view-17-b3c1023d56f3439833c246e8bfd4502a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-18-437d0a699b73c61044ebf8539feb14f6 b/sql/hive/src/test/resources/golden/create_view-18-437d0a699b73c61044ebf8539feb14f6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-19-df2da604b5a8f2b236519510b5e4d34b b/sql/hive/src/test/resources/golden/create_view-19-df2da604b5a8f2b236519510b5e4d34b new file mode 100644 index 0000000000000..e87fb81a6f043 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_view-19-df2da604b5a8f2b236519510b5e4d34b @@ -0,0 +1 @@ +86 val_86 diff --git a/sql/hive/src/test/resources/golden/create_view-2-d80dcd1271ab264292e9938f3162427c b/sql/hive/src/test/resources/golden/create_view-2-d80dcd1271ab264292e9938f3162427c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-20-56d203e4d0eb776bb4fa38409222b5b8 b/sql/hive/src/test/resources/golden/create_view-20-56d203e4d0eb776bb4fa38409222b5b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-21-3609711e61b5b8d241d0e839557bfd64 b/sql/hive/src/test/resources/golden/create_view-21-3609711e61b5b8d241d0e839557bfd64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-22-3bc364c0ee46900d2201d706d2d58d67 b/sql/hive/src/test/resources/golden/create_view-22-3bc364c0ee46900d2201d706d2d58d67 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-3-25ffe475d52d6c399acaf120dc02afe8 b/sql/hive/src/test/resources/golden/create_view-3-25ffe475d52d6c399acaf120dc02afe8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-4-87ed262d455e99ad45c909a2265a61b0 b/sql/hive/src/test/resources/golden/create_view-4-87ed262d455e99ad45c909a2265a61b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-5-391caf27ff1589ec68d5f3bc4a27e711 b/sql/hive/src/test/resources/golden/create_view-5-391caf27ff1589ec68d5f3bc4a27e711 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-6-d8d0e830783c383e3c00e9de3919c409 b/sql/hive/src/test/resources/golden/create_view-6-d8d0e830783c383e3c00e9de3919c409 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-7-50b35b8a1772becc96cff65bba1eaee7 b/sql/hive/src/test/resources/golden/create_view-7-50b35b8a1772becc96cff65bba1eaee7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-8-2ae18fc75eda9c3fe7d4e87829180805 b/sql/hive/src/test/resources/golden/create_view-8-2ae18fc75eda9c3fe7d4e87829180805 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view-9-ed7a1e8aeaed3beb95ac5aa3af216ab9 b/sql/hive/src/test/resources/golden/create_view-9-ed7a1e8aeaed3beb95ac5aa3af216ab9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view_partitioned-0-d98274f9b34c8968292ccd6c959491dc b/sql/hive/src/test/resources/golden/create_view_partitioned-0-d98274f9b34c8968292ccd6c959491dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view_partitioned-1-ff29c88fac9c21eaf36469a4ce0fce18 b/sql/hive/src/test/resources/golden/create_view_partitioned-1-ff29c88fac9c21eaf36469a4ce0fce18 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view_partitioned-2-45e7b89caadba56ec67638c341209f96 b/sql/hive/src/test/resources/golden/create_view_partitioned-2-45e7b89caadba56ec67638c341209f96 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view_partitioned-3-cf44ff130f66de720a77888260ef8d16 b/sql/hive/src/test/resources/golden/create_view_partitioned-3-cf44ff130f66de720a77888260ef8d16 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/create_view_partitioned-4-aa9fad452f806fd16fc0bdc7cdfdc4d5 b/sql/hive/src/test/resources/golden/create_view_partitioned-4-aa9fad452f806fd16fc0bdc7cdfdc4d5 new file mode 100644 index 0000000000000..70d2ecdbc8f78 --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_view_partitioned-4-aa9fad452f806fd16fc0bdc7cdfdc4d5 @@ -0,0 +1,13 @@ +key int None +value string None + +# Partition Information +# col_name data_type comment + +value string None + +Detailed Table Information Table(tableName:vp1, dbName:default, owner:marmbrus, createTime:1392062982, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:null, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:null, parameters:{}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:value, type:string, comment:null)], parameters:{transient_lastDdlTime=1392062982}, viewOriginalText:SELECT key, value +FROM src +WHERE key=86, viewExpandedText:SELECT `src`.`key`, `src`.`value` +FROM `default`.`src` +WHERE `src`.`key`=86, tableType:VIRTUAL_VIEW) diff --git a/sql/hive/src/test/resources/golden/create_view_partitioned-5-d7a7d8592fca266745725192d3f875fc b/sql/hive/src/test/resources/golden/create_view_partitioned-5-d7a7d8592fca266745725192d3f875fc new file mode 100644 index 0000000000000..43bc3de44f4df --- /dev/null +++ b/sql/hive/src/test/resources/golden/create_view_partitioned-5-d7a7d8592fca266745725192d3f875fc @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None + +# Partition Information +# col_name data_type comment + +value string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 12:09:42 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Table Type: VIRTUAL_VIEW +Table Parameters: + transient_lastDdlTime 1392062982 + +# Storage Information +SerDe Library: null +InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] + +# View Information +View Original Text: SELECT key, value +FROM src +WHERE key=86 +View Expanded Text: SELECT `src`.`key`, `src`.`value` +FROM `default`.`src` +WHERE `src`.`key`=86 diff --git a/sql/hive/src/test/resources/golden/ct_case_insensitive-0-a22bfdbaf9720a07e0b2c0923036ce93 b/sql/hive/src/test/resources/golden/ct_case_insensitive-0-a22bfdbaf9720a07e0b2c0923036ce93 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ct_case_insensitive-1-893c61ec6ea62362324c213f588d8030 b/sql/hive/src/test/resources/golden/ct_case_insensitive-1-893c61ec6ea62362324c213f588d8030 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ct_case_insensitive-2-9db45f87a7b1e69d7bf38ac6d5009122 b/sql/hive/src/test/resources/golden/ct_case_insensitive-2-9db45f87a7b1e69d7bf38ac6d5009122 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-0-311fdd725609cd47ea1b859f706da41e b/sql/hive/src/test/resources/golden/ctas_varchar-0-311fdd725609cd47ea1b859f706da41e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-1-939814768fe997b27f01758d60fcd8f5 b/sql/hive/src/test/resources/golden/ctas_varchar-1-939814768fe997b27f01758d60fcd8f5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-2-3223504c97628a44b65736565c1dda32 b/sql/hive/src/test/resources/golden/ctas_varchar-2-3223504c97628a44b65736565c1dda32 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-3-5d14fdc559b9790d81a8020bdcf4159b b/sql/hive/src/test/resources/golden/ctas_varchar-3-5d14fdc559b9790d81a8020bdcf4159b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-4-ccead78e4ec4583da3b48864e78cfd44 b/sql/hive/src/test/resources/golden/ctas_varchar-4-ccead78e4ec4583da3b48864e78cfd44 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-5-ff9d92788c0a7d6d4fca8a5bf1095e7f b/sql/hive/src/test/resources/golden/ctas_varchar-5-ff9d92788c0a7d6d4fca8a5bf1095e7f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-6-351fa7f09c2e809f9cc87d83e11c1539 b/sql/hive/src/test/resources/golden/ctas_varchar-6-351fa7f09c2e809f9cc87d83e11c1539 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-7-8620d7f55849ab163b6b85f51abdaaec b/sql/hive/src/test/resources/golden/ctas_varchar-7-8620d7f55849ab163b6b85f51abdaaec new file mode 100644 index 0000000000000..6839c16243bcd --- /dev/null +++ b/sql/hive/src/test/resources/golden/ctas_varchar-7-8620d7f55849ab163b6b85f51abdaaec @@ -0,0 +1,5 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 diff --git a/sql/hive/src/test/resources/golden/ctas_varchar-8-c93df93c0e8688f9c7a6167589670d32 b/sql/hive/src/test/resources/golden/ctas_varchar-8-c93df93c0e8688f9c7a6167589670d32 new file mode 100644 index 0000000000000..6839c16243bcd --- /dev/null +++ b/sql/hive/src/test/resources/golden/ctas_varchar-8-c93df93c0e8688f9c7a6167589670d32 @@ -0,0 +1,5 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 diff --git a/sql/hive/src/test/resources/golden/custom_input_output_format-0-94f3da887aa34aed74715bd2051bf3c5 b/sql/hive/src/test/resources/golden/custom_input_output_format-0-94f3da887aa34aed74715bd2051bf3c5 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/custom_input_output_format-0-94f3da887aa34aed74715bd2051bf3c5 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/database.table table.attr-0-6cbb13c3a48f53fa6550dbba4d2c28fd b/sql/hive/src/test/resources/golden/database.table table.attr-0-6cbb13c3a48f53fa6550dbba4d2c28fd new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database.table table.attr-0-6cbb13c3a48f53fa6550dbba4d2c28fd @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database.table-0-c657beb729b6a7882309a203fc6f298e b/sql/hive/src/test/resources/golden/database.table-0-c657beb729b6a7882309a203fc6f298e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database.table-0-c657beb729b6a7882309a203fc6f298e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_drop-0-49f18014566b3e020dc19b1e61d25a4f b/sql/hive/src/test/resources/golden/database_drop-0-49f18014566b3e020dc19b1e61d25a4f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_drop-1-549981e00a3d95f03dd5a9ef6044aa20 b/sql/hive/src/test/resources/golden/database_drop-1-549981e00a3d95f03dd5a9ef6044aa20 new file mode 100644 index 0000000000000..585786f6a8a41 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_drop-1-549981e00a3d95f03dd5a9ef6044aa20 @@ -0,0 +1,2 @@ +db5 +default diff --git a/sql/hive/src/test/resources/golden/database_drop-10-1b0a6cff3151cfa0ef0a6f78587973a5 b/sql/hive/src/test/resources/golden/database_drop-10-1b0a6cff3151cfa0ef0a6f78587973a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_drop-11-2ea883422b74b701711e14e61472ba06 b/sql/hive/src/test/resources/golden/database_drop-11-2ea883422b74b701711e14e61472ba06 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_drop-11-2ea883422b74b701711e14e61472ba06 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/database_drop-12-e02a53f7e798d2741152526516f14941 b/sql/hive/src/test/resources/golden/database_drop-12-e02a53f7e798d2741152526516f14941 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_drop-12-e02a53f7e798d2741152526516f14941 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/database_drop-2-b28ed063cd2c2d1d370d6d422782a8f1 b/sql/hive/src/test/resources/golden/database_drop-2-b28ed063cd2c2d1d370d6d422782a8f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_drop-3-f21dd011aeb417043ed58c03fd5c3bf0 b/sql/hive/src/test/resources/golden/database_drop-3-f21dd011aeb417043ed58c03fd5c3bf0 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_drop-3-f21dd011aeb417043ed58c03fd5c3bf0 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/database_drop-4-d419f4ff197d4291208c2028cd158909 b/sql/hive/src/test/resources/golden/database_drop-4-d419f4ff197d4291208c2028cd158909 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_drop-4-d419f4ff197d4291208c2028cd158909 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/database_drop-5-b7cf74929eabe781b0db79ed1043dc24 b/sql/hive/src/test/resources/golden/database_drop-5-b7cf74929eabe781b0db79ed1043dc24 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_drop-5-b7cf74929eabe781b0db79ed1043dc24 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/database_drop-6-a47b1b070ec7c3b9ccabc34f41aebad9 b/sql/hive/src/test/resources/golden/database_drop-6-a47b1b070ec7c3b9ccabc34f41aebad9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_drop-7-693736836ccc99f6e2449b94efcfeeba b/sql/hive/src/test/resources/golden/database_drop-7-693736836ccc99f6e2449b94efcfeeba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_drop-8-97101266791d2b2c662bcde549422318 b/sql/hive/src/test/resources/golden/database_drop-8-97101266791d2b2c662bcde549422318 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_drop-9-8db536f925bf0f5058f97897e145a661 b/sql/hive/src/test/resources/golden/database_drop-9-8db536f925bf0f5058f97897e145a661 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_location-0-5528e36b3b0f5b14313898cc45f9c23a b/sql/hive/src/test/resources/golden/database_location-0-5528e36b3b0f5b14313898cc45f9c23a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_location-1-2b66b4554cf8ecf2ab6c325d4d89491 b/sql/hive/src/test/resources/golden/database_location-1-2b66b4554cf8ecf2ab6c325d4d89491 new file mode 100644 index 0000000000000..f05305df0c3d3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_location-1-2b66b4554cf8ecf2ab6c325d4d89491 @@ -0,0 +1 @@ +db1 file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_location-10-c5cd9c57a13da7f345563fbd75da4e45 b/sql/hive/src/test/resources/golden/database_location-10-c5cd9c57a13da7f345563fbd75da4e45 new file mode 100644 index 0000000000000..e92c241d50092 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_location-10-c5cd9c57a13da7f345563fbd75da4e45 @@ -0,0 +1,27 @@ +# col_name data_type comment + +name string None +value int None + +# Detailed Table Information +Database: db2 +Owner: marmbrus +CreateTime: Tue Jan 14 11:40:51 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db2/table_db2 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1389728451 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_location-11-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/database_location-11-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..7c77c06cda82b --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_location-11-9c36cac1372650b703400c60dd29042c @@ -0,0 +1 @@ +table_db2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_location-2-7650b86c86dd6b1a99c86ddc5a31bd63 b/sql/hive/src/test/resources/golden/database_location-2-7650b86c86dd6b1a99c86ddc5a31bd63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_location-3-81383a2b9568f942cc8e758f9a6ee2f1 b/sql/hive/src/test/resources/golden/database_location-3-81383a2b9568f942cc8e758f9a6ee2f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_location-4-be65cf649363681d54e593c42a5ecffb b/sql/hive/src/test/resources/golden/database_location-4-be65cf649363681d54e593c42a5ecffb new file mode 100644 index 0000000000000..cda1736e9ca6b --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_location-4-be65cf649363681d54e593c42a5ecffb @@ -0,0 +1,27 @@ +# col_name data_type comment + +name string None +value int None + +# Detailed Table Information +Database: db1 +Owner: marmbrus +CreateTime: Tue Jan 14 11:40:50 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/table_db1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1389728450 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_location-5-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/database_location-5-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..4d8fc6a6d6fe0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_location-5-9c36cac1372650b703400c60dd29042c @@ -0,0 +1 @@ +table_db1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_location-6-6fa58170a7c2e78b06a250403f02091a b/sql/hive/src/test/resources/golden/database_location-6-6fa58170a7c2e78b06a250403f02091a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_location-7-5698ac10441da07dbe3a947143c999c2 b/sql/hive/src/test/resources/golden/database_location-7-5698ac10441da07dbe3a947143c999c2 new file mode 100644 index 0000000000000..3e23970adddcf --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_location-7-5698ac10441da07dbe3a947143c999c2 @@ -0,0 +1 @@ +db2 database 2 file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_location-8-6f2797b6f81943d3b53b8d247ae8512b b/sql/hive/src/test/resources/golden/database_location-8-6f2797b6f81943d3b53b8d247ae8512b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_location-9-92f087a5934481942995fc2aaf0d87e8 b/sql/hive/src/test/resources/golden/database_location-9-92f087a5934481942995fc2aaf0d87e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_properties-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/database_properties-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_properties-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_properties-1-10de6a198e2b3f61974519ddd8623e68 b/sql/hive/src/test/resources/golden/database_properties-1-10de6a198e2b3f61974519ddd8623e68 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_properties-1-10de6a198e2b3f61974519ddd8623e68 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_properties-10-26c10ff2ec4a69b16589069ced427d23 b/sql/hive/src/test/resources/golden/database_properties-10-26c10ff2ec4a69b16589069ced427d23 new file mode 100644 index 0000000000000..2f5fbe26f4945 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_properties-10-26c10ff2ec4a69b16589069ced427d23 @@ -0,0 +1 @@ +db2 file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db2.db {mapred.jobtracker.url=http://my.jobtracker.com:53000, new.property=some new props, mapred.scratch.dir=hdfs://tmp.dfs.com:50029/tmp, hive.warehouse.dir=new/warehouse/dir} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_properties-2-a1074315e598ad16bce55860e6e43363 b/sql/hive/src/test/resources/golden/database_properties-2-a1074315e598ad16bce55860e6e43363 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_properties-3-751417d45b8e80ee5cba2034458b5bc9 b/sql/hive/src/test/resources/golden/database_properties-3-751417d45b8e80ee5cba2034458b5bc9 new file mode 100644 index 0000000000000..86362ead004d9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_properties-3-751417d45b8e80ee5cba2034458b5bc9 @@ -0,0 +1,2 @@ +db1 +default \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_properties-4-ddf44597db4fa15e89bee313f2dad371 b/sql/hive/src/test/resources/golden/database_properties-4-ddf44597db4fa15e89bee313f2dad371 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/database_properties-5-51c0974df1125b233936f25ce709ba4a b/sql/hive/src/test/resources/golden/database_properties-5-51c0974df1125b233936f25ce709ba4a new file mode 100644 index 0000000000000..ff89c3fe899d2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_properties-5-51c0974df1125b233936f25ce709ba4a @@ -0,0 +1 @@ +db2 file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db2.db \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_properties-6-26c10ff2ec4a69b16589069ced427d23 b/sql/hive/src/test/resources/golden/database_properties-6-26c10ff2ec4a69b16589069ced427d23 new file mode 100644 index 0000000000000..5827d2726d084 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_properties-6-26c10ff2ec4a69b16589069ced427d23 @@ -0,0 +1 @@ +db2 file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db2.db {mapred.jobtracker.url=http://my.jobtracker.com:53000, mapred.scratch.dir=hdfs://tmp.dfs.com:50029/tmp, hive.warehouse.dir=/user/hive/warehouse} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_properties-7-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/database_properties-7-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_properties-7-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_properties-8-10de6a198e2b3f61974519ddd8623e68 b/sql/hive/src/test/resources/golden/database_properties-8-10de6a198e2b3f61974519ddd8623e68 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/database_properties-8-10de6a198e2b3f61974519ddd8623e68 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/database_properties-9-5a2bc556d3c66c5b33ab86e6cd37b54a b/sql/hive/src/test/resources/golden/database_properties-9-5a2bc556d3c66c5b33ab86e6cd37b54a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_2-0-8acfa0b538112534f57a3e051f0216bd b/sql/hive/src/test/resources/golden/date_2-0-8acfa0b538112534f57a3e051f0216bd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_2-1-116032b973a2060b533e1cdc9dfda301 b/sql/hive/src/test/resources/golden/date_2-1-116032b973a2060b533e1cdc9dfda301 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_2-2-cab14d992c53c106ab257fae52001e04 b/sql/hive/src/test/resources/golden/date_2-2-cab14d992c53c106ab257fae52001e04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_3-0-c26de4559926ddb0127d2dc5ea154774 b/sql/hive/src/test/resources/golden/date_3-0-c26de4559926ddb0127d2dc5ea154774 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_3-1-d9a07d08f5204ae8208fd88c9255d447 b/sql/hive/src/test/resources/golden/date_3-1-d9a07d08f5204ae8208fd88c9255d447 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_3-2-a937c6e5a2c655930e0d3f80883ecc16 b/sql/hive/src/test/resources/golden/date_3-2-a937c6e5a2c655930e0d3f80883ecc16 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_join1-0-70b9b49c55699fe94cfde069f5d197c b/sql/hive/src/test/resources/golden/date_join1-0-70b9b49c55699fe94cfde069f5d197c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_join1-1-3a68de2112a212a07a3068916c608fb b/sql/hive/src/test/resources/golden/date_join1-1-3a68de2112a212a07a3068916c608fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_join1-2-894b6541812ac8b0abe2a24c966817d8 b/sql/hive/src/test/resources/golden/date_join1-2-894b6541812ac8b0abe2a24c966817d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_serde-0-ca88593bb7ec47fa782145d732100c07 b/sql/hive/src/test/resources/golden/date_serde-0-ca88593bb7ec47fa782145d732100c07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_serde-1-36e6041f53433482631018410bb62a99 b/sql/hive/src/test/resources/golden/date_serde-1-36e6041f53433482631018410bb62a99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_serde-2-3ddfd8ecb28991aeed588f1ea852c427 b/sql/hive/src/test/resources/golden/date_serde-2-3ddfd8ecb28991aeed588f1ea852c427 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_serde-3-e6167e27465514356c557a77d956ea46 b/sql/hive/src/test/resources/golden/date_serde-3-e6167e27465514356c557a77d956ea46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_serde-4-c1e17c93582656c12970c37bac153bf2 b/sql/hive/src/test/resources/golden/date_serde-4-c1e17c93582656c12970c37bac153bf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_serde-5-4a17944b9ec8999bb20c5ba5d4cb877c b/sql/hive/src/test/resources/golden/date_serde-5-4a17944b9ec8999bb20c5ba5d4cb877c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_serde-6-e00facec2986bc55074868eff87ba22a b/sql/hive/src/test/resources/golden/date_serde-6-e00facec2986bc55074868eff87ba22a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/date_serde-7-a34279d8ebbadb78e925e8ed9c78947d b/sql/hive/src/test/resources/golden/date_serde-7-a34279d8ebbadb78e925e8ed9c78947d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ddltime-0-d81aa70a19a0e7428e8f7a76b60d3fc3 b/sql/hive/src/test/resources/golden/ddltime-0-d81aa70a19a0e7428e8f7a76b60d3fc3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ddltime-1-426da52526f6f48c0ddeb0026fd566f1 b/sql/hive/src/test/resources/golden/ddltime-1-426da52526f6f48c0ddeb0026fd566f1 new file mode 100644 index 0000000000000..c270c7cbdfa1f --- /dev/null +++ b/sql/hive/src/test/resources/golden/ddltime-1-426da52526f6f48c0ddeb0026fd566f1 @@ -0,0 +1,4 @@ +key int None +value string None + +Detailed Table Information Table(tableName:t1, dbName:default, owner:marmbrus, createTime:1392063041, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/t1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1392063041}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/decimal_1-0-31ecaab3afa056fcc656d6e54f845cf4 b/sql/hive/src/test/resources/golden/decimal_1-0-31ecaab3afa056fcc656d6e54f845cf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_1-1-f2e4dab0c9a4d9b3128aca89a424accd b/sql/hive/src/test/resources/golden/decimal_1-1-f2e4dab0c9a4d9b3128aca89a424accd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_1-10-be179d261b9c42ed843dbf736b12e75 b/sql/hive/src/test/resources/golden/decimal_1-10-be179d261b9c42ed843dbf736b12e75 new file mode 100644 index 0000000000000..53aca7545dac7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-10-be179d261b9c42ed843dbf736b12e75 @@ -0,0 +1 @@ +17.29 diff --git a/sql/hive/src/test/resources/golden/decimal_1-11-4c1fefa61e10a78f6406b526a60e4937 b/sql/hive/src/test/resources/golden/decimal_1-11-4c1fefa61e10a78f6406b526a60e4937 new file mode 100644 index 0000000000000..53aca7545dac7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-11-4c1fefa61e10a78f6406b526a60e4937 @@ -0,0 +1 @@ +17.29 diff --git a/sql/hive/src/test/resources/golden/decimal_1-12-75b9add5e32a963cc9913c6ef4f84989 b/sql/hive/src/test/resources/golden/decimal_1-12-75b9add5e32a963cc9913c6ef4f84989 new file mode 100644 index 0000000000000..c4a17c1b14c88 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-12-75b9add5e32a963cc9913c6ef4f84989 @@ -0,0 +1 @@ +1969-12-31 16:00:17.29 diff --git a/sql/hive/src/test/resources/golden/decimal_1-13-31ecaab3afa056fcc656d6e54f845cf4 b/sql/hive/src/test/resources/golden/decimal_1-13-31ecaab3afa056fcc656d6e54f845cf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_1-2-80fc87cab17ceffea334afbb230a6653 b/sql/hive/src/test/resources/golden/decimal_1-2-80fc87cab17ceffea334afbb230a6653 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_1-3-2a3647b0a148236c45d8e3e9891c8ad5 b/sql/hive/src/test/resources/golden/decimal_1-3-2a3647b0a148236c45d8e3e9891c8ad5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_1-4-f2bcc4f2b8db16b865d4ca396fbca575 b/sql/hive/src/test/resources/golden/decimal_1-4-f2bcc4f2b8db16b865d4ca396fbca575 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-4-f2bcc4f2b8db16b865d4ca396fbca575 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/decimal_1-5-cbe6b235663cf78e602673ed715a2f40 b/sql/hive/src/test/resources/golden/decimal_1-5-cbe6b235663cf78e602673ed715a2f40 new file mode 100644 index 0000000000000..98d9bcb75a685 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-5-cbe6b235663cf78e602673ed715a2f40 @@ -0,0 +1 @@ +17 diff --git a/sql/hive/src/test/resources/golden/decimal_1-6-91b7219bd8c67673e16cb970fcc7be1b b/sql/hive/src/test/resources/golden/decimal_1-6-91b7219bd8c67673e16cb970fcc7be1b new file mode 100644 index 0000000000000..98d9bcb75a685 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-6-91b7219bd8c67673e16cb970fcc7be1b @@ -0,0 +1 @@ +17 diff --git a/sql/hive/src/test/resources/golden/decimal_1-7-7b2fab0ebc0962f0a53f6c61da417a b/sql/hive/src/test/resources/golden/decimal_1-7-7b2fab0ebc0962f0a53f6c61da417a new file mode 100644 index 0000000000000..98d9bcb75a685 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-7-7b2fab0ebc0962f0a53f6c61da417a @@ -0,0 +1 @@ +17 diff --git a/sql/hive/src/test/resources/golden/decimal_1-8-cdd0932288d3cc43636334439805769d b/sql/hive/src/test/resources/golden/decimal_1-8-cdd0932288d3cc43636334439805769d new file mode 100644 index 0000000000000..98d9bcb75a685 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-8-cdd0932288d3cc43636334439805769d @@ -0,0 +1 @@ +17 diff --git a/sql/hive/src/test/resources/golden/decimal_1-9-1504e1b00092e2c58bafcc9936ad178c b/sql/hive/src/test/resources/golden/decimal_1-9-1504e1b00092e2c58bafcc9936ad178c new file mode 100644 index 0000000000000..53aca7545dac7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_1-9-1504e1b00092e2c58bafcc9936ad178c @@ -0,0 +1 @@ +17.29 diff --git a/sql/hive/src/test/resources/golden/decimal_2-0-3c8ecb1468952afe028596c65d587bee b/sql/hive/src/test/resources/golden/decimal_2-0-3c8ecb1468952afe028596c65d587bee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_2-1-868e124edc1581325bd0fd10235a126b b/sql/hive/src/test/resources/golden/decimal_2-1-868e124edc1581325bd0fd10235a126b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_2-10-f97d72aeb605ee18d34361c073552e92 b/sql/hive/src/test/resources/golden/decimal_2-10-f97d72aeb605ee18d34361c073552e92 new file mode 100644 index 0000000000000..53aca7545dac7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-10-f97d72aeb605ee18d34361c073552e92 @@ -0,0 +1 @@ +17.29 diff --git a/sql/hive/src/test/resources/golden/decimal_2-11-58a090c30c59446d1e2b2a6c85fabf50 b/sql/hive/src/test/resources/golden/decimal_2-11-58a090c30c59446d1e2b2a6c85fabf50 new file mode 100644 index 0000000000000..53aca7545dac7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-11-58a090c30c59446d1e2b2a6c85fabf50 @@ -0,0 +1 @@ +17.29 diff --git a/sql/hive/src/test/resources/golden/decimal_2-12-d63b5ea25e27852413132db4d9bfb035 b/sql/hive/src/test/resources/golden/decimal_2-12-d63b5ea25e27852413132db4d9bfb035 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_2-13-20ffe5115367abea9ea0ed1bda7a9439 b/sql/hive/src/test/resources/golden/decimal_2-13-20ffe5115367abea9ea0ed1bda7a9439 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-13-20ffe5115367abea9ea0ed1bda7a9439 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/decimal_2-14-3105d1029ad981af9cf1039ad9410fc0 b/sql/hive/src/test/resources/golden/decimal_2-14-3105d1029ad981af9cf1039ad9410fc0 new file mode 100644 index 0000000000000..b1bd38b62a080 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-14-3105d1029ad981af9cf1039ad9410fc0 @@ -0,0 +1 @@ +13 diff --git a/sql/hive/src/test/resources/golden/decimal_2-15-3266fde6f6ab80a8bc027de0d5574f02 b/sql/hive/src/test/resources/golden/decimal_2-15-3266fde6f6ab80a8bc027de0d5574f02 new file mode 100644 index 0000000000000..de7771ac23570 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-15-3266fde6f6ab80a8bc027de0d5574f02 @@ -0,0 +1 @@ +-3827 diff --git a/sql/hive/src/test/resources/golden/decimal_2-16-dc565c6c5bc24fd8b32729ce91999580 b/sql/hive/src/test/resources/golden/decimal_2-16-dc565c6c5bc24fd8b32729ce91999580 new file mode 100644 index 0000000000000..272791f402250 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-16-dc565c6c5bc24fd8b32729ce91999580 @@ -0,0 +1 @@ +3404045 diff --git a/sql/hive/src/test/resources/golden/decimal_2-17-a4a1ca9ae92642dd78d4bdf6af781c2d b/sql/hive/src/test/resources/golden/decimal_2-17-a4a1ca9ae92642dd78d4bdf6af781c2d new file mode 100644 index 0000000000000..272791f402250 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-17-a4a1ca9ae92642dd78d4bdf6af781c2d @@ -0,0 +1 @@ +3404045 diff --git a/sql/hive/src/test/resources/golden/decimal_2-18-f7c34d67fd579c82c636415172ec675e b/sql/hive/src/test/resources/golden/decimal_2-18-f7c34d67fd579c82c636415172ec675e new file mode 100644 index 0000000000000..deb8427800ee4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-18-f7c34d67fd579c82c636415172ec675e @@ -0,0 +1 @@ +3404045.5 diff --git a/sql/hive/src/test/resources/golden/decimal_2-19-f97d72aeb605ee18d34361c073552e92 b/sql/hive/src/test/resources/golden/decimal_2-19-f97d72aeb605ee18d34361c073552e92 new file mode 100644 index 0000000000000..6f31e8fe55034 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-19-f97d72aeb605ee18d34361c073552e92 @@ -0,0 +1 @@ +3404045.5044003 diff --git a/sql/hive/src/test/resources/golden/decimal_2-2-6cc742523b3574e59ca21dad30f2d506 b/sql/hive/src/test/resources/golden/decimal_2-2-6cc742523b3574e59ca21dad30f2d506 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_2-20-58a090c30c59446d1e2b2a6c85fabf50 b/sql/hive/src/test/resources/golden/decimal_2-20-58a090c30c59446d1e2b2a6c85fabf50 new file mode 100644 index 0000000000000..6f31e8fe55034 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-20-58a090c30c59446d1e2b2a6c85fabf50 @@ -0,0 +1 @@ +3404045.5044003 diff --git a/sql/hive/src/test/resources/golden/decimal_2-21-d72d68be1217c7b7a958f58456d85821 b/sql/hive/src/test/resources/golden/decimal_2-21-d72d68be1217c7b7a958f58456d85821 new file mode 100644 index 0000000000000..6324d401a069f --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-21-d72d68be1217c7b7a958f58456d85821 @@ -0,0 +1 @@ +3.14 diff --git a/sql/hive/src/test/resources/golden/decimal_2-22-648e694eea042c59e8db30d067cb5bc8 b/sql/hive/src/test/resources/golden/decimal_2-22-648e694eea042c59e8db30d067cb5bc8 new file mode 100644 index 0000000000000..6324d401a069f --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-22-648e694eea042c59e8db30d067cb5bc8 @@ -0,0 +1 @@ +3.14 diff --git a/sql/hive/src/test/resources/golden/decimal_2-23-a87b701c93a922b9e33ba16ae6a477ff b/sql/hive/src/test/resources/golden/decimal_2-23-a87b701c93a922b9e33ba16ae6a477ff new file mode 100644 index 0000000000000..603f18cc37bc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-23-a87b701c93a922b9e33ba16ae6a477ff @@ -0,0 +1 @@ +1355944339.1234567 diff --git a/sql/hive/src/test/resources/golden/decimal_2-24-8c2a8f1f3b792d5017be42078b15b94e b/sql/hive/src/test/resources/golden/decimal_2-24-8c2a8f1f3b792d5017be42078b15b94e new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-24-8c2a8f1f3b792d5017be42078b15b94e @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/decimal_2-25-14face5c7104382196e65741a199c36 b/sql/hive/src/test/resources/golden/decimal_2-25-14face5c7104382196e65741a199c36 new file mode 100644 index 0000000000000..00750edc07d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-25-14face5c7104382196e65741a199c36 @@ -0,0 +1 @@ +3 diff --git a/sql/hive/src/test/resources/golden/decimal_2-26-4ea9fdaf7131c085df8f93ffb64956e5 b/sql/hive/src/test/resources/golden/decimal_2-26-4ea9fdaf7131c085df8f93ffb64956e5 new file mode 100644 index 0000000000000..00750edc07d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-26-4ea9fdaf7131c085df8f93ffb64956e5 @@ -0,0 +1 @@ +3 diff --git a/sql/hive/src/test/resources/golden/decimal_2-27-a5ea3949eb5ab338916e4316c676c7f6 b/sql/hive/src/test/resources/golden/decimal_2-27-a5ea3949eb5ab338916e4316c676c7f6 new file mode 100644 index 0000000000000..00750edc07d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-27-a5ea3949eb5ab338916e4316c676c7f6 @@ -0,0 +1 @@ +3 diff --git a/sql/hive/src/test/resources/golden/decimal_2-28-4a5410f96c6ef0843f12b0f593c104b1 b/sql/hive/src/test/resources/golden/decimal_2-28-4a5410f96c6ef0843f12b0f593c104b1 new file mode 100644 index 0000000000000..00750edc07d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-28-4a5410f96c6ef0843f12b0f593c104b1 @@ -0,0 +1 @@ +3 diff --git a/sql/hive/src/test/resources/golden/decimal_2-29-659f627f0ff5fe2296a8a0a7daed6298 b/sql/hive/src/test/resources/golden/decimal_2-29-659f627f0ff5fe2296a8a0a7daed6298 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-29-659f627f0ff5fe2296a8a0a7daed6298 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/decimal_2-3-17702ba7ecd04caad0158e2cd1f6f26e b/sql/hive/src/test/resources/golden/decimal_2-3-17702ba7ecd04caad0158e2cd1f6f26e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_2-30-26a71d79e41353830b4ada96de6e2b8a b/sql/hive/src/test/resources/golden/decimal_2-30-26a71d79e41353830b4ada96de6e2b8a new file mode 100644 index 0000000000000..474c8b180aea9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-30-26a71d79e41353830b4ada96de6e2b8a @@ -0,0 +1 @@ +0.99999999999999999999 diff --git a/sql/hive/src/test/resources/golden/decimal_2-31-3c8ecb1468952afe028596c65d587bee b/sql/hive/src/test/resources/golden/decimal_2-31-3c8ecb1468952afe028596c65d587bee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_2-4-20ffe5115367abea9ea0ed1bda7a9439 b/sql/hive/src/test/resources/golden/decimal_2-4-20ffe5115367abea9ea0ed1bda7a9439 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-4-20ffe5115367abea9ea0ed1bda7a9439 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/decimal_2-5-3105d1029ad981af9cf1039ad9410fc0 b/sql/hive/src/test/resources/golden/decimal_2-5-3105d1029ad981af9cf1039ad9410fc0 new file mode 100644 index 0000000000000..98d9bcb75a685 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-5-3105d1029ad981af9cf1039ad9410fc0 @@ -0,0 +1 @@ +17 diff --git a/sql/hive/src/test/resources/golden/decimal_2-6-3266fde6f6ab80a8bc027de0d5574f02 b/sql/hive/src/test/resources/golden/decimal_2-6-3266fde6f6ab80a8bc027de0d5574f02 new file mode 100644 index 0000000000000..98d9bcb75a685 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-6-3266fde6f6ab80a8bc027de0d5574f02 @@ -0,0 +1 @@ +17 diff --git a/sql/hive/src/test/resources/golden/decimal_2-7-dc565c6c5bc24fd8b32729ce91999580 b/sql/hive/src/test/resources/golden/decimal_2-7-dc565c6c5bc24fd8b32729ce91999580 new file mode 100644 index 0000000000000..98d9bcb75a685 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-7-dc565c6c5bc24fd8b32729ce91999580 @@ -0,0 +1 @@ +17 diff --git a/sql/hive/src/test/resources/golden/decimal_2-8-a4a1ca9ae92642dd78d4bdf6af781c2d b/sql/hive/src/test/resources/golden/decimal_2-8-a4a1ca9ae92642dd78d4bdf6af781c2d new file mode 100644 index 0000000000000..98d9bcb75a685 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-8-a4a1ca9ae92642dd78d4bdf6af781c2d @@ -0,0 +1 @@ +17 diff --git a/sql/hive/src/test/resources/golden/decimal_2-9-f7c34d67fd579c82c636415172ec675e b/sql/hive/src/test/resources/golden/decimal_2-9-f7c34d67fd579c82c636415172ec675e new file mode 100644 index 0000000000000..53aca7545dac7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_2-9-f7c34d67fd579c82c636415172ec675e @@ -0,0 +1 @@ +17.29 diff --git a/sql/hive/src/test/resources/golden/decimal_3-0-90cd495a00051a0631b2021dbb9a4aef b/sql/hive/src/test/resources/golden/decimal_3-0-90cd495a00051a0631b2021dbb9a4aef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_3-1-76f900dfe9ce95e8262a53939d33fb01 b/sql/hive/src/test/resources/golden/decimal_3-1-76f900dfe9ce95e8262a53939d33fb01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_3-10-420614bb0789115e008c96a7ad822624 b/sql/hive/src/test/resources/golden/decimal_3-10-420614bb0789115e008c96a7ad822624 new file mode 100644 index 0000000000000..8d8753f153d7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-10-420614bb0789115e008c96a7ad822624 @@ -0,0 +1,4 @@ +3.14 3 +3.14 3 +3.14 3 +3.14 4 diff --git a/sql/hive/src/test/resources/golden/decimal_3-11-63913753553b16d6c24e063fb49fdd15 b/sql/hive/src/test/resources/golden/decimal_3-11-63913753553b16d6c24e063fb49fdd15 new file mode 100644 index 0000000000000..8d8753f153d7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-11-63913753553b16d6c24e063fb49fdd15 @@ -0,0 +1,4 @@ +3.14 3 +3.14 3 +3.14 3 +3.14 4 diff --git a/sql/hive/src/test/resources/golden/decimal_3-12-d495d7178707ba55dcc01b9bb3398792 b/sql/hive/src/test/resources/golden/decimal_3-12-d495d7178707ba55dcc01b9bb3398792 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_3-2-4c5356497c8830c8e7cd8e5c02ad104 b/sql/hive/src/test/resources/golden/decimal_3-2-4c5356497c8830c8e7cd8e5c02ad104 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_3-3-cb2d14de1d779cce9c19ba1a9690ca6b b/sql/hive/src/test/resources/golden/decimal_3-3-cb2d14de1d779cce9c19ba1a9690ca6b new file mode 100644 index 0000000000000..3e290231c27e2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-3-cb2d14de1d779cce9c19ba1a9690ca6b @@ -0,0 +1,38 @@ +NULL 0 +NULL 0 +-1234567890.123456789 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +0.9999999999999999999999999 1 +1 1 +1 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.14 4 +10 10 +20 20 +100 100 +124 124 +125.2 125 +200 200 +1234567890.12345678 1234567890 diff --git a/sql/hive/src/test/resources/golden/decimal_3-4-b3f259a4b17b4fc585476ad4be8ed263 b/sql/hive/src/test/resources/golden/decimal_3-4-b3f259a4b17b4fc585476ad4be8ed263 new file mode 100644 index 0000000000000..64fa7bca9a81b --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-4-b3f259a4b17b4fc585476ad4be8ed263 @@ -0,0 +1,38 @@ +1234567890.12345678 1234567890 +200 200 +125.2 125 +124 124 +100 100 +20 20 +10 10 +3.14 4 +3.14 3 +3.14 3 +3.14 3 +2 2 +2 2 +1.122 1 +1.12 1 +1 1 +1 1 +0.9999999999999999999999999 1 +0.333 0 +0.33 0 +0.3 0 +0.2 0 +0.1 0 +0.02 0 +0.01 0 +0 0 +0 0 +-0.3 0 +-0.33 0 +-0.333 0 +-1.12 -1 +-1.12 -1 +-1.122 -11 +-1255.49 -1255 +-4400 4400 +-1234567890.123456789 -1234567890 +NULL 0 +NULL 0 diff --git a/sql/hive/src/test/resources/golden/decimal_3-5-cb2d14de1d779cce9c19ba1a9690ca6b b/sql/hive/src/test/resources/golden/decimal_3-5-cb2d14de1d779cce9c19ba1a9690ca6b new file mode 100644 index 0000000000000..3e290231c27e2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-5-cb2d14de1d779cce9c19ba1a9690ca6b @@ -0,0 +1,38 @@ +NULL 0 +NULL 0 +-1234567890.123456789 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +0.9999999999999999999999999 1 +1 1 +1 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.14 4 +10 10 +20 20 +100 100 +124 124 +125.2 125 +200 200 +1234567890.12345678 1234567890 diff --git a/sql/hive/src/test/resources/golden/decimal_3-6-127a3a8400cae591c282dd24f8951e55 b/sql/hive/src/test/resources/golden/decimal_3-6-127a3a8400cae591c282dd24f8951e55 new file mode 100644 index 0000000000000..24d34ee5d8c1b --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-6-127a3a8400cae591c282dd24f8951e55 @@ -0,0 +1,30 @@ +NULL +-1234567890.123456789 +-4400 +-1255.49 +-1.122 +-1.12 +-0.333 +-0.33 +-0.3 +0 +0.01 +0.02 +0.1 +0.2 +0.3 +0.33 +0.333 +0.9999999999999999999999999 +1 +1.12 +1.122 +2 +3.14 +10 +20 +100 +124 +125.2 +200 +1234567890.12345678 diff --git a/sql/hive/src/test/resources/golden/decimal_3-7-9d4f27d4a4819113c5083462baa72052 b/sql/hive/src/test/resources/golden/decimal_3-7-9d4f27d4a4819113c5083462baa72052 new file mode 100644 index 0000000000000..e08f588c89461 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-7-9d4f27d4a4819113c5083462baa72052 @@ -0,0 +1,30 @@ +NULL 0 +-1234567890.123456789 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -2 +-0.333 0 +-0.33 0 +-0.3 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +0.9999999999999999999999999 1 +1 2 +1.12 1 +1.122 1 +2 4 +3.14 13 +10 10 +20 20 +100 100 +124 124 +125.2 125 +200 200 +1234567890.12345678 1234567890 diff --git a/sql/hive/src/test/resources/golden/decimal_3-8-f65f4df6e3d971d575654ade4b4e4800 b/sql/hive/src/test/resources/golden/decimal_3-8-f65f4df6e3d971d575654ade4b4e4800 new file mode 100644 index 0000000000000..796707d06b0dd --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-8-f65f4df6e3d971d575654ade4b4e4800 @@ -0,0 +1,17 @@ +-1234567890 -1234567890.123456789 +-1255 -1255.49 +-11 -1.122 +-1 -2.24 +0 0.33 +1 5.2419999999999999999999999 +2 4 +3 9.42 +4 3.14 +10 10 +20 20 +100 100 +124 124 +125 125.2 +200 200 +4400 -4400 +1234567890 1234567890.12345678 diff --git a/sql/hive/src/test/resources/golden/decimal_3-9-b54243d38214362f9a9b1831548faac4 b/sql/hive/src/test/resources/golden/decimal_3-9-b54243d38214362f9a9b1831548faac4 new file mode 100644 index 0000000000000..4217ad848170e --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_3-9-b54243d38214362f9a9b1831548faac4 @@ -0,0 +1,56 @@ +-1234567890.123456789 -1234567890 -1234567890.123456789 -1234567890 +-4400 4400 -4400 4400 +-1255.49 -1255 -1255.49 -1255 +-1.122 -11 -1.122 -11 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-1.12 -1 -1.12 -1 +-0.333 0 -0.333 0 +-0.33 0 -0.33 0 +-0.3 0 -0.3 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0 0 0 0 +0.01 0 0.01 0 +0.02 0 0.02 0 +0.1 0 0.1 0 +0.2 0 0.2 0 +0.3 0 0.3 0 +0.33 0 0.33 0 +0.333 0 0.333 0 +0.9999999999999999999999999 1 0.9999999999999999999999999 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1 1 1 1 +1.12 1 1.12 1 +1.122 1 1.122 1 +2 2 2 2 +2 2 2 2 +2 2 2 2 +2 2 2 2 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 3 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 3 3.14 4 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 3 +3.14 4 3.14 4 +10 10 10 10 +20 20 20 20 +100 100 100 100 +124 124 124 124 +125.2 125 125.2 125 +200 200 200 200 +1234567890.12345678 1234567890 1234567890.12345678 1234567890 diff --git a/sql/hive/src/test/resources/golden/decimal_4-0-98a58225355eb73036bb7b1144fa5a5f b/sql/hive/src/test/resources/golden/decimal_4-0-98a58225355eb73036bb7b1144fa5a5f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_4-1-fa7e76c5dff605e58aa9d99182f865b1 b/sql/hive/src/test/resources/golden/decimal_4-1-fa7e76c5dff605e58aa9d99182f865b1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_4-2-945542ec888136afaece8d7a5e20d52d b/sql/hive/src/test/resources/golden/decimal_4-2-945542ec888136afaece8d7a5e20d52d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_4-3-399140971a10a5a0cc6a8c97a4635e b/sql/hive/src/test/resources/golden/decimal_4-3-399140971a10a5a0cc6a8c97a4635e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_4-4-81b37675c09ed874497325ae13233e5c b/sql/hive/src/test/resources/golden/decimal_4-4-81b37675c09ed874497325ae13233e5c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_4-5-7f2b3465d6a46b6f05cbb9bfe963f88c b/sql/hive/src/test/resources/golden/decimal_4-5-7f2b3465d6a46b6f05cbb9bfe963f88c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_4-6-693c2e345731f9b2b547c3b75218458e b/sql/hive/src/test/resources/golden/decimal_4-6-693c2e345731f9b2b547c3b75218458e new file mode 100644 index 0000000000000..3e290231c27e2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_4-6-693c2e345731f9b2b547c3b75218458e @@ -0,0 +1,38 @@ +NULL 0 +NULL 0 +-1234567890.123456789 -1234567890 +-4400 4400 +-1255.49 -1255 +-1.122 -11 +-1.12 -1 +-1.12 -1 +-0.333 0 +-0.33 0 +-0.3 0 +0 0 +0 0 +0.01 0 +0.02 0 +0.1 0 +0.2 0 +0.3 0 +0.33 0 +0.333 0 +0.9999999999999999999999999 1 +1 1 +1 1 +1.12 1 +1.122 1 +2 2 +2 2 +3.14 3 +3.14 3 +3.14 3 +3.14 4 +10 10 +20 20 +100 100 +124 124 +125.2 125 +200 200 +1234567890.12345678 1234567890 diff --git a/sql/hive/src/test/resources/golden/decimal_4-7-f1eb45492510cb76cf6b452121af8531 b/sql/hive/src/test/resources/golden/decimal_4-7-f1eb45492510cb76cf6b452121af8531 new file mode 100644 index 0000000000000..795a4b567ab7f --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_4-7-f1eb45492510cb76cf6b452121af8531 @@ -0,0 +1,38 @@ +NULL NULL +NULL NULL +-1234567890.123456789 -3703703670.370370367 +-4400 -13200 +-1255.49 -3766.47 +-1.122 -3.366 +-1.12 -3.36 +-1.12 -3.36 +-0.333 -0.999 +-0.33 -0.99 +-0.3 -0.9 +0 0 +0 0 +0.01 0.03 +0.02 0.06 +0.1 0.3 +0.2 0.6 +0.3 0.9 +0.33 0.99 +0.333 0.999 +0.9999999999999999999999999 2.9999999999999999999999997 +1 3 +1 3 +1.12 3.36 +1.122 3.366 +2 6 +2 6 +3.14 9.42 +3.14 9.42 +3.14 9.42 +3.14 9.42 +10 30 +20 60 +100 300 +124 372 +125.2 375.6 +200 600 +1234567890.12345678 3703703670.37037034 diff --git a/sql/hive/src/test/resources/golden/decimal_4-8-79734272b75fb9076bdb64644bed6276 b/sql/hive/src/test/resources/golden/decimal_4-8-79734272b75fb9076bdb64644bed6276 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_4-9-fe020b24cca92de056bddee2a1a3c5a6 b/sql/hive/src/test/resources/golden/decimal_4-9-fe020b24cca92de056bddee2a1a3c5a6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_join-0-c7659c1efa06c9eab1db28e916b750e4 b/sql/hive/src/test/resources/golden/decimal_join-0-c7659c1efa06c9eab1db28e916b750e4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_join-1-c1524f17ee815171055a67ddc2f9de4e b/sql/hive/src/test/resources/golden/decimal_join-1-c1524f17ee815171055a67ddc2f9de4e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_join-2-e966f01e702d4cc8f970dcdbc6007285 b/sql/hive/src/test/resources/golden/decimal_join-2-e966f01e702d4cc8f970dcdbc6007285 new file mode 100644 index 0000000000000..23ec633b6a337 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_join-2-e966f01e702d4cc8f970dcdbc6007285 @@ -0,0 +1,52 @@ +477 val_477 27 val_27 +487 val_487 37 val_37 +467 val_467 17 val_17 +470 val_470 20 val_20 +497 val_497 47 val_47 +454 val_454 4 val_4 +454 val_454 4 val_4 +454 val_454 4 val_4 +485 val_485 35 val_35 +462 val_462 12 val_12 +462 val_462 12 val_12 +458 val_458 8 val_8 +458 val_458 8 val_8 +492 val_492 42 val_42 +492 val_492 42 val_42 +493 val_493 43 val_43 +469 val_469 19 val_19 +469 val_469 19 val_19 +469 val_469 19 val_19 +469 val_469 19 val_19 +469 val_469 19 val_19 +460 val_460 10 val_10 +455 val_455 5 val_5 +485 val_485 35 val_35 +484 val_484 34 val_34 +492 val_492 42 val_42 +492 val_492 42 val_42 +491 val_491 41 val_41 +480 val_480 30 val_30 +480 val_480 30 val_30 +480 val_480 30 val_30 +483 val_483 33 val_33 +455 val_455 5 val_5 +452 val_452 2 val_2 +485 val_485 35 val_35 +494 val_494 44 val_44 +462 val_462 12 val_12 +462 val_462 12 val_12 +455 val_455 5 val_5 +468 val_468 18 val_18 +468 val_468 18 val_18 +468 val_468 18 val_18 +468 val_468 18 val_18 +459 val_459 9 val_9 +459 val_459 9 val_9 +468 val_468 18 val_18 +468 val_468 18 val_18 +468 val_468 18 val_18 +468 val_468 18 val_18 +478 val_478 28 val_28 +478 val_478 28 val_28 +487 val_487 37 val_37 diff --git a/sql/hive/src/test/resources/golden/decimal_precision-0-cae8ceb6b0ab342948041c511a867b8e b/sql/hive/src/test/resources/golden/decimal_precision-0-cae8ceb6b0ab342948041c511a867b8e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_precision-1-3f4119830536c92e5ccd76be0259e110 b/sql/hive/src/test/resources/golden/decimal_precision-1-3f4119830536c92e5ccd76be0259e110 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_precision-10-d8a597810b222e9e121a11a1f5658fb0 b/sql/hive/src/test/resources/golden/decimal_precision-10-d8a597810b222e9e121a11a1f5658fb0 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-10-d8a597810b222e9e121a11a1f5658fb0 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/decimal_precision-11-673b15434ba47f11c71c3e8b2a575d83 b/sql/hive/src/test/resources/golden/decimal_precision-11-673b15434ba47f11c71c3e8b2a575d83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_precision-12-18906f5c6413065621430e3fe33c7e9e b/sql/hive/src/test/resources/golden/decimal_precision-12-18906f5c6413065621430e3fe33c7e9e new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-12-18906f5c6413065621430e3fe33c7e9e @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/decimal_precision-13-2a65d450f57f8ba9f594063b96074f0e b/sql/hive/src/test/resources/golden/decimal_precision-13-2a65d450f57f8ba9f594063b96074f0e new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-13-2a65d450f57f8ba9f594063b96074f0e @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/decimal_precision-14-34916eb904b8113a401ce78e6941a204 b/sql/hive/src/test/resources/golden/decimal_precision-14-34916eb904b8113a401ce78e6941a204 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-14-34916eb904b8113a401ce78e6941a204 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/decimal_precision-15-5c49f041326bc5a9e936910094f190ce b/sql/hive/src/test/resources/golden/decimal_precision-15-5c49f041326bc5a9e936910094f190ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_precision-2-d5be00a0fa6e2e290b40458442bd036c b/sql/hive/src/test/resources/golden/decimal_precision-2-d5be00a0fa6e2e290b40458442bd036c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/decimal_precision-3-42cb35d680b3caeeb22e1c4865b8264b b/sql/hive/src/test/resources/golden/decimal_precision-3-42cb35d680b3caeeb22e1c4865b8264b new file mode 100644 index 0000000000000..3d9e792183f3c --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-3-42cb35d680b3caeeb22e1c4865b8264b @@ -0,0 +1,75 @@ +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +-99999999999999999999999999999999999999 +-999999999999999999999999999999999999 +-99999999999999999999999999999999999 +-0.0000000000000000000000000000000000001 +0 +0.0000000000000000000000000000000000001 +0.123456789012345 +0.1234567890123456789012345678901234578 +1.234567890123456 +1.2345678901234567890123456789012345678 +12.34567890123456 +12.345678901234567890123456789012345678 +123.4567890123456 +123.45678901234567890123456789012345678 +1234.567890123456 +1234.5678901234567890123456789012345678 +12345.67890123456 +12345.678901234567890123456789012345678 +123456.7890123456 +123456.78901234567890123456789012345678 +1234567.890123456 +1234567.8901234567890123456789012345678 +12345678.90123456 +12345678.901234567890123456789012345678 +123456789.0123456 +123456789.01234567890123456789012345678 +1234567890.123456 +1234567890.1234567890123456789012345678 +12345678901.23456 +12345678901.234567890123456789012345678 +123456789012.3456 +123456789012.34567890123456789012345678 +1234567890123.456 +1234567890123.4567890123456789012345678 +12345678901234.56 +12345678901234.567890123456789012345678 +123456789012345.6 +123456789012345.67890123456789012345678 +1234567890123456.7890123456789012345678 +12345678901234567.890123456789012345678 +123456789012345678.90123456789012345678 +1234567890123456789.0123456789012345678 +12345678901234567890.123456789012345678 +123456789012345678901.23456789012345678 +1234567890123456789012.3456789012345678 +12345678901234567890123.456789012345678 +123456789012345678901234.56789012345678 +1234567890123456789012345.6789012345678 +12345678901234567890123456.789012345678 +123456789012345678901234567.89012345678 +1234567890123456789012345678.9012345678 +12345678901234567890123456789.012345678 +123456789012345678901234567890.12345678 +1234567890123456789012345678901.2345678 +12345678901234567890123456789012.345678 +123456789012345678901234567890123.45678 +1234567890123456789012345678901234.5678 +12345678901234567890123456789012345.678 +99999999999999999999999999999999999 +123456789012345678901234567890123456.78 +999999999999999999999999999999999999 +12345678901234567890123456789012345678 +12345678901234567890123456789012345678 +12345678901234567890123456789012345678 +12345678901234567890123456789012345678 +12345678901234567890123456789012345678 +99999999999999999999999999999999999999 diff --git a/sql/hive/src/test/resources/golden/decimal_precision-4-38aaeba3e587b4dac72e26c4b02029fc b/sql/hive/src/test/resources/golden/decimal_precision-4-38aaeba3e587b4dac72e26c4b02029fc new file mode 100644 index 0000000000000..9853ce72ed8c3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-4-38aaeba3e587b4dac72e26c4b02029fc @@ -0,0 +1,75 @@ +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +-99999999999999999999999999999999999999 -99999999999999999999999999999999999998 NULL +-999999999999999999999999999999999999 -999999999999999999999999999999999998 -1000000000000000000000000000000000000 +-99999999999999999999999999999999999 -99999999999999999999999999999999998 -100000000000000000000000000000000000 +-0.0000000000000000000000000000000000001 0.9999999999999999999999999999999999999 -1.0000000000000000000000000000000000001 +0 1 -1 +0.0000000000000000000000000000000000001 1.0000000000000000000000000000000000001 -0.9999999999999999999999999999999999999 +0.123456789012345 1.123456789012345 -0.876543210987655 +0.1234567890123456789012345678901234578 1.1234567890123456789012345678901234578 -0.8765432109876543210987654321098765422 +1.234567890123456 2.234567890123456 0.234567890123456 +1.2345678901234567890123456789012345678 2.2345678901234567890123456789012345678 0.2345678901234567890123456789012345678 +12.34567890123456 13.34567890123456 11.34567890123456 +12.345678901234567890123456789012345678 13.345678901234567890123456789012345678 11.345678901234567890123456789012345678 +123.4567890123456 124.4567890123456 122.4567890123456 +123.45678901234567890123456789012345678 124.45678901234567890123456789012345678 122.45678901234567890123456789012345678 +1234.567890123456 1235.567890123456 1233.567890123456 +1234.5678901234567890123456789012345678 1235.5678901234567890123456789012345678 1233.5678901234567890123456789012345678 +12345.67890123456 12346.67890123456 12344.67890123456 +12345.678901234567890123456789012345678 12346.678901234567890123456789012345678 12344.678901234567890123456789012345678 +123456.7890123456 123457.7890123456 123455.7890123456 +123456.78901234567890123456789012345678 123457.78901234567890123456789012345678 123455.78901234567890123456789012345678 +1234567.890123456 1234568.890123456 1234566.890123456 +1234567.8901234567890123456789012345678 1234568.8901234567890123456789012345678 1234566.8901234567890123456789012345678 +12345678.90123456 12345679.90123456 12345677.90123456 +12345678.901234567890123456789012345678 12345679.901234567890123456789012345678 12345677.901234567890123456789012345678 +123456789.0123456 123456790.0123456 123456788.0123456 +123456789.01234567890123456789012345678 123456790.01234567890123456789012345678 123456788.01234567890123456789012345678 +1234567890.123456 1234567891.123456 1234567889.123456 +1234567890.1234567890123456789012345678 1234567891.1234567890123456789012345678 1234567889.1234567890123456789012345678 +12345678901.23456 12345678902.23456 12345678900.23456 +12345678901.234567890123456789012345678 12345678902.234567890123456789012345678 12345678900.234567890123456789012345678 +123456789012.3456 123456789013.3456 123456789011.3456 +123456789012.34567890123456789012345678 123456789013.34567890123456789012345678 123456789011.34567890123456789012345678 +1234567890123.456 1234567890124.456 1234567890122.456 +1234567890123.4567890123456789012345678 1234567890124.4567890123456789012345678 1234567890122.4567890123456789012345678 +12345678901234.56 12345678901235.56 12345678901233.56 +12345678901234.567890123456789012345678 12345678901235.567890123456789012345678 12345678901233.567890123456789012345678 +123456789012345.6 123456789012346.6 123456789012344.6 +123456789012345.67890123456789012345678 123456789012346.67890123456789012345678 123456789012344.67890123456789012345678 +1234567890123456.7890123456789012345678 1234567890123457.7890123456789012345678 1234567890123455.7890123456789012345678 +12345678901234567.890123456789012345678 12345678901234568.890123456789012345678 12345678901234566.890123456789012345678 +123456789012345678.90123456789012345678 123456789012345679.90123456789012345678 123456789012345677.90123456789012345678 +1234567890123456789.0123456789012345678 1234567890123456790.0123456789012345678 1234567890123456788.0123456789012345678 +12345678901234567890.123456789012345678 12345678901234567891.123456789012345678 12345678901234567889.123456789012345678 +123456789012345678901.23456789012345678 123456789012345678902.23456789012345678 123456789012345678900.23456789012345678 +1234567890123456789012.3456789012345678 1234567890123456789013.3456789012345678 1234567890123456789011.3456789012345678 +12345678901234567890123.456789012345678 12345678901234567890124.456789012345678 12345678901234567890122.456789012345678 +123456789012345678901234.56789012345678 123456789012345678901235.56789012345678 123456789012345678901233.56789012345678 +1234567890123456789012345.6789012345678 1234567890123456789012346.6789012345678 1234567890123456789012344.6789012345678 +12345678901234567890123456.789012345678 12345678901234567890123457.789012345678 12345678901234567890123455.789012345678 +123456789012345678901234567.89012345678 123456789012345678901234568.89012345678 123456789012345678901234566.89012345678 +1234567890123456789012345678.9012345678 1234567890123456789012345679.9012345678 1234567890123456789012345677.9012345678 +12345678901234567890123456789.012345678 12345678901234567890123456790.012345678 12345678901234567890123456788.012345678 +123456789012345678901234567890.12345678 123456789012345678901234567891.12345678 123456789012345678901234567889.12345678 +1234567890123456789012345678901.2345678 1234567890123456789012345678902.2345678 1234567890123456789012345678900.2345678 +12345678901234567890123456789012.345678 12345678901234567890123456789013.345678 12345678901234567890123456789011.345678 +123456789012345678901234567890123.45678 123456789012345678901234567890124.45678 123456789012345678901234567890122.45678 +1234567890123456789012345678901234.5678 1234567890123456789012345678901235.5678 1234567890123456789012345678901233.5678 +12345678901234567890123456789012345.678 12345678901234567890123456789012346.678 12345678901234567890123456789012344.678 +99999999999999999999999999999999999 100000000000000000000000000000000000 99999999999999999999999999999999998 +123456789012345678901234567890123456.78 123456789012345678901234567890123457.78 123456789012345678901234567890123455.78 +999999999999999999999999999999999999 1000000000000000000000000000000000000 999999999999999999999999999999999998 +12345678901234567890123456789012345678 12345678901234567890123456789012345679 12345678901234567890123456789012345677 +12345678901234567890123456789012345678 12345678901234567890123456789012345679 12345678901234567890123456789012345677 +12345678901234567890123456789012345678 12345678901234567890123456789012345679 12345678901234567890123456789012345677 +12345678901234567890123456789012345678 12345678901234567890123456789012345679 12345678901234567890123456789012345677 +12345678901234567890123456789012345678 12345678901234567890123456789012345679 12345678901234567890123456789012345677 +99999999999999999999999999999999999999 NULL 99999999999999999999999999999999999998 diff --git a/sql/hive/src/test/resources/golden/decimal_precision-5-bb27734245ecbd0511be91af21c3b9ef b/sql/hive/src/test/resources/golden/decimal_precision-5-bb27734245ecbd0511be91af21c3b9ef new file mode 100644 index 0000000000000..7cc75c789dee1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-5-bb27734245ecbd0511be91af21c3b9ef @@ -0,0 +1,75 @@ +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +-99999999999999999999999999999999999999 NULL -33333333333333333333333333333333333333 +-999999999999999999999999999999999999 -1999999999999999999999999999999999998 -333333333333333333333333333333333333 +-99999999999999999999999999999999999 -199999999999999999999999999999999998 -33333333333333333333333333333333333 +-0.0000000000000000000000000000000000001 -0.0000000000000000000000000000000000002 0 +0 0 0 +0.0000000000000000000000000000000000001 0.0000000000000000000000000000000000002 0 +0.123456789012345 0.24691357802469 0.041152263004115 +0.1234567890123456789012345678901234578 0.2469135780246913578024691357802469156 0.0411522630041152263004115226300411526 +1.234567890123456 2.469135780246912 0.411522630041152 +1.2345678901234567890123456789012345678 2.4691357802469135780246913578024691356 0.4115226300411522630041152263004115226 +12.34567890123456 24.69135780246912 4.11522630041152 +12.345678901234567890123456789012345678 24.691357802469135780246913578024691356 4.115226300411522630041152263004115226 +123.4567890123456 246.9135780246912 41.1522630041152 +123.45678901234567890123456789012345678 246.91357802469135780246913578024691356 41.15226300411522630041152263004115226 +1234.567890123456 2469.135780246912 411.522630041152 +1234.5678901234567890123456789012345678 2469.1357802469135780246913578024691356 411.5226300411522630041152263004115226 +12345.67890123456 24691.35780246912 4115.22630041152 +12345.678901234567890123456789012345678 24691.357802469135780246913578024691356 4115.226300411522630041152263004115226 +123456.7890123456 246913.5780246912 41152.2630041152 +123456.78901234567890123456789012345678 246913.57802469135780246913578024691356 41152.26300411522630041152263004115226 +1234567.890123456 2469135.780246912 411522.630041152 +1234567.8901234567890123456789012345678 2469135.7802469135780246913578024691356 411522.6300411522630041152263004115226 +12345678.90123456 24691357.80246912 4115226.30041152 +12345678.901234567890123456789012345678 24691357.802469135780246913578024691356 4115226.300411522630041152263004115226 +123456789.0123456 246913578.0246912 41152263.0041152 +123456789.01234567890123456789012345678 246913578.02469135780246913578024691356 41152263.00411522630041152263004115226 +1234567890.123456 2469135780.246912 411522630.041152 +1234567890.1234567890123456789012345678 2469135780.2469135780246913578024691356 411522630.0411522630041152263004115226 +12345678901.23456 24691357802.46912 4115226300.41152 +12345678901.234567890123456789012345678 24691357802.469135780246913578024691356 4115226300.411522630041152263004115226 +123456789012.3456 246913578024.6912 41152263004.1152 +123456789012.34567890123456789012345678 246913578024.69135780246913578024691356 41152263004.11522630041152263004115226 +1234567890123.456 2469135780246.912 411522630041.152 +1234567890123.4567890123456789012345678 2469135780246.9135780246913578024691356 411522630041.1522630041152263004115226 +12345678901234.56 24691357802469.12 4115226300411.52 +12345678901234.567890123456789012345678 24691357802469.135780246913578024691356 4115226300411.522630041152263004115226 +123456789012345.6 246913578024691.2 41152263004115.2 +123456789012345.67890123456789012345678 246913578024691.35780246913578024691356 41152263004115.22630041152263004115226 +1234567890123456.7890123456789012345678 2469135780246913.5780246913578024691356 411522630041152.2630041152263004115226 +12345678901234567.890123456789012345678 24691357802469135.780246913578024691356 4115226300411522.630041152263004115226 +123456789012345678.90123456789012345678 246913578024691357.80246913578024691356 41152263004115226.30041152263004115226 +1234567890123456789.0123456789012345678 2469135780246913578.0246913578024691356 411522630041152263.0041152263004115226 +12345678901234567890.123456789012345678 24691357802469135780.246913578024691356 4115226300411522630.041152263004115226 +123456789012345678901.23456789012345678 246913578024691357802.46913578024691356 41152263004115226300.41152263004115226 +1234567890123456789012.3456789012345678 2469135780246913578024.6913578024691356 411522630041152263004.1152263004115226 +12345678901234567890123.456789012345678 24691357802469135780246.913578024691356 4115226300411522630041.152263004115226 +123456789012345678901234.56789012345678 246913578024691357802469.13578024691356 41152263004115226300411.52263004115226 +1234567890123456789012345.6789012345678 2469135780246913578024691.3578024691356 411522630041152263004115.2263004115226 +12345678901234567890123456.789012345678 24691357802469135780246913.578024691356 4115226300411522630041152.263004115226 +123456789012345678901234567.89012345678 246913578024691357802469135.78024691356 41152263004115226300411522.63004115226 +1234567890123456789012345678.9012345678 2469135780246913578024691357.8024691356 411522630041152263004115226.3004115226 +12345678901234567890123456789.012345678 24691357802469135780246913578.024691356 4115226300411522630041152263.004115226 +123456789012345678901234567890.12345678 246913578024691357802469135780.24691356 41152263004115226300411522630.04115226 +1234567890123456789012345678901.2345678 2469135780246913578024691357802.4691356 411522630041152263004115226300.4115226 +12345678901234567890123456789012.345678 24691357802469135780246913578024.691356 4115226300411522630041152263004.115226 +123456789012345678901234567890123.45678 246913578024691357802469135780246.91356 41152263004115226300411522630041.15226 +1234567890123456789012345678901234.5678 2469135780246913578024691357802469.1356 411522630041152263004115226300411.5226 +12345678901234567890123456789012345.678 24691357802469135780246913578024691.356 4115226300411522630041152263004115.226 +99999999999999999999999999999999999 199999999999999999999999999999999998 33333333333333333333333333333333333 +123456789012345678901234567890123456.78 246913578024691357802469135780246913.56 41152263004115226300411522630041152.26 +999999999999999999999999999999999999 1999999999999999999999999999999999998 333333333333333333333333333333333333 +12345678901234567890123456789012345678 24691357802469135780246913578024691356 4115226300411522630041152263004115226 +12345678901234567890123456789012345678 24691357802469135780246913578024691356 4115226300411522630041152263004115226 +12345678901234567890123456789012345678 24691357802469135780246913578024691356 4115226300411522630041152263004115226 +12345678901234567890123456789012345678 24691357802469135780246913578024691356 4115226300411522630041152263004115226 +12345678901234567890123456789012345678 24691357802469135780246913578024691356 4115226300411522630041152263004115226 +99999999999999999999999999999999999999 NULL 33333333333333333333333333333333333333 diff --git a/sql/hive/src/test/resources/golden/decimal_precision-6-b2547e6ef33325b2da12ce91b57af21 b/sql/hive/src/test/resources/golden/decimal_precision-6-b2547e6ef33325b2da12ce91b57af21 new file mode 100644 index 0000000000000..c40875630d1b2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-6-b2547e6ef33325b2da12ce91b57af21 @@ -0,0 +1,75 @@ +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +-99999999999999999999999999999999999999 -11111111111111111111111111111111111111 +-999999999999999999999999999999999999 -111111111111111111111111111111111111 +-99999999999999999999999999999999999 -11111111111111111111111111111111111 +-0.0000000000000000000000000000000000001 0 +0 0 +0.0000000000000000000000000000000000001 0 +0.123456789012345 0.0137174210013716666666666666666666667 +0.1234567890123456789012345678901234578 0.0137174210013717421001371742100137175 +1.234567890123456 0.1371742100137173333333333333333333333 +1.2345678901234567890123456789012345678 0.1371742100137174210013717421001371742 +12.34567890123456 1.3717421001371733333333333333333333333 +12.345678901234567890123456789012345678 1.371742100137174210013717421001371742 +123.4567890123456 13.717421001371733333333333333333333333 +123.45678901234567890123456789012345678 13.71742100137174210013717421001371742 +1234.567890123456 137.17421001371733333333333333333333333 +1234.5678901234567890123456789012345678 137.1742100137174210013717421001371742 +12345.67890123456 1371.7421001371733333333333333333333333 +12345.678901234567890123456789012345678 1371.742100137174210013717421001371742 +123456.7890123456 13717.421001371733333333333333333333333 +123456.78901234567890123456789012345678 13717.42100137174210013717421001371742 +1234567.890123456 137174.21001371733333333333333333333333 +1234567.8901234567890123456789012345678 137174.2100137174210013717421001371742 +12345678.90123456 1371742.1001371733333333333333333333333 +12345678.901234567890123456789012345678 1371742.100137174210013717421001371742 +123456789.0123456 13717421.001371733333333333333333333333 +123456789.01234567890123456789012345678 13717421.00137174210013717421001371742 +1234567890.123456 137174210.01371733333333333333333333333 +1234567890.1234567890123456789012345678 137174210.0137174210013717421001371742 +12345678901.23456 1371742100.1371733333333333333333333333 +12345678901.234567890123456789012345678 1371742100.137174210013717421001371742 +123456789012.3456 13717421001.371733333333333333333333333 +123456789012.34567890123456789012345678 13717421001.37174210013717421001371742 +1234567890123.456 137174210013.71733333333333333333333333 +1234567890123.4567890123456789012345678 137174210013.7174210013717421001371742 +12345678901234.56 1371742100137.1733333333333333333333333 +12345678901234.567890123456789012345678 1371742100137.174210013717421001371742 +123456789012345.6 13717421001371.733333333333333333333333 +123456789012345.67890123456789012345678 13717421001371.74210013717421001371742 +1234567890123456.7890123456789012345678 137174210013717.4210013717421001371742 +12345678901234567.890123456789012345678 1371742100137174.210013717421001371742 +123456789012345678.90123456789012345678 13717421001371742.10013717421001371742 +1234567890123456789.0123456789012345678 137174210013717421.0013717421001371742 +12345678901234567890.123456789012345678 1371742100137174210.013717421001371742 +123456789012345678901.23456789012345678 13717421001371742100.13717421001371742 +1234567890123456789012.3456789012345678 137174210013717421001.3717421001371742 +12345678901234567890123.456789012345678 1371742100137174210013.717421001371742 +123456789012345678901234.56789012345678 13717421001371742100137.17421001371742 +1234567890123456789012345.6789012345678 137174210013717421001371.7421001371742 +12345678901234567890123456.789012345678 1371742100137174210013717.421001371742 +123456789012345678901234567.89012345678 13717421001371742100137174.21001371742 +1234567890123456789012345678.9012345678 137174210013717421001371742.1001371742 +12345678901234567890123456789.012345678 1371742100137174210013717421.001371742 +123456789012345678901234567890.12345678 13717421001371742100137174210.01371742 +1234567890123456789012345678901.2345678 137174210013717421001371742100.1371742 +12345678901234567890123456789012.345678 1371742100137174210013717421001.371742 +123456789012345678901234567890123.45678 13717421001371742100137174210013.71742 +1234567890123456789012345678901234.5678 137174210013717421001371742100137.1742 +12345678901234567890123456789012345.678 1371742100137174210013717421001371.742 +99999999999999999999999999999999999 11111111111111111111111111111111111 +123456789012345678901234567890123456.78 13717421001371742100137174210013717.42 +999999999999999999999999999999999999 111111111111111111111111111111111111 +12345678901234567890123456789012345678 1371742100137174210013717421001371742 +12345678901234567890123456789012345678 1371742100137174210013717421001371742 +12345678901234567890123456789012345678 1371742100137174210013717421001371742 +12345678901234567890123456789012345678 1371742100137174210013717421001371742 +12345678901234567890123456789012345678 1371742100137174210013717421001371742 +99999999999999999999999999999999999999 11111111111111111111111111111111111111 diff --git a/sql/hive/src/test/resources/golden/decimal_precision-7-ee5b7767c7fbb8614bb4ef907e8737b7 b/sql/hive/src/test/resources/golden/decimal_precision-7-ee5b7767c7fbb8614bb4ef907e8737b7 new file mode 100644 index 0000000000000..bd23d17293f79 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-7-ee5b7767c7fbb8614bb4ef907e8737b7 @@ -0,0 +1,75 @@ +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +-99999999999999999999999999999999999999 -3703703703703703703703703703703703703.7 +-999999999999999999999999999999999999 -37037037037037037037037037037037037 +-99999999999999999999999999999999999 -3703703703703703703703703703703703.6667 +-0.0000000000000000000000000000000000001 0 +0 0 +0.0000000000000000000000000000000000001 0 +0.123456789012345 0.0045724736671238888888888888888888889 +0.1234567890123456789012345678901234578 0.0045724736671239140333790580700045725 +1.234567890123456 0.0457247366712391111111111111111111111 +1.2345678901234567890123456789012345678 0.0457247366712391403337905807000457247 +12.34567890123456 0.4572473667123911111111111111111111111 +12.345678901234567890123456789012345678 0.4572473667123914033379058070004572473 +123.4567890123456 4.5724736671239111111111111111111111111 +123.45678901234567890123456789012345678 4.5724736671239140333790580700045724733 +1234.567890123456 45.724736671239111111111111111111111111 +1234.5678901234567890123456789012345678 45.724736671239140333790580700045724733 +12345.67890123456 457.24736671239111111111111111111111111 +12345.678901234567890123456789012345678 457.24736671239140333790580700045724733 +123456.7890123456 4572.4736671239111111111111111111111111 +123456.78901234567890123456789012345678 4572.4736671239140333790580700045724733 +1234567.890123456 45724.736671239111111111111111111111111 +1234567.8901234567890123456789012345678 45724.736671239140333790580700045724733 +12345678.90123456 457247.36671239111111111111111111111111 +12345678.901234567890123456789012345678 457247.36671239140333790580700045724733 +123456789.0123456 4572473.6671239111111111111111111111111 +123456789.01234567890123456789012345678 4572473.6671239140333790580700045724733 +1234567890.123456 45724736.671239111111111111111111111111 +1234567890.1234567890123456789012345678 45724736.671239140333790580700045724733 +12345678901.23456 457247366.71239111111111111111111111111 +12345678901.234567890123456789012345678 457247366.71239140333790580700045724733 +123456789012.3456 4572473667.1239111111111111111111111111 +123456789012.34567890123456789012345678 4572473667.1239140333790580700045724733 +1234567890123.456 45724736671.239111111111111111111111111 +1234567890123.4567890123456789012345678 45724736671.239140333790580700045724733 +12345678901234.56 457247366712.39111111111111111111111111 +12345678901234.567890123456789012345678 457247366712.39140333790580700045724733 +123456789012345.6 4572473667123.9111111111111111111111111 +123456789012345.67890123456789012345678 4572473667123.9140333790580700045724733 +1234567890123456.7890123456789012345678 45724736671239.140333790580700045724733 +12345678901234567.890123456789012345678 457247366712391.40333790580700045724733 +123456789012345678.90123456789012345678 4572473667123914.0333790580700045724733 +1234567890123456789.0123456789012345678 45724736671239140.333790580700045724733 +12345678901234567890.123456789012345678 457247366712391403.33790580700045724733 +123456789012345678901.23456789012345678 4572473667123914033.3790580700045724733 +1234567890123456789012.3456789012345678 45724736671239140333.790580700045724733 +12345678901234567890123.456789012345678 457247366712391403337.90580700045724733 +123456789012345678901234.56789012345678 4572473667123914033379.0580700045724733 +1234567890123456789012345.6789012345678 45724736671239140333790.580700045724733 +12345678901234567890123456.789012345678 457247366712391403337905.80700045724733 +123456789012345678901234567.89012345678 4572473667123914033379058.0700045724733 +1234567890123456789012345678.9012345678 45724736671239140333790580.700045724733 +12345678901234567890123456789.012345678 457247366712391403337905807.00045724733 +123456789012345678901234567890.12345678 4572473667123914033379058070.0045724733 +1234567890123456789012345678901.2345678 45724736671239140333790580700.045724733 +12345678901234567890123456789012.345678 457247366712391403337905807000.45724733 +123456789012345678901234567890123.45678 4572473667123914033379058070004.5724733 +1234567890123456789012345678901234.5678 45724736671239140333790580700045.724733 +12345678901234567890123456789012345.678 457247366712391403337905807000457.24733 +99999999999999999999999999999999999 3703703703703703703703703703703703.6667 +123456789012345678901234567890123456.78 4572473667123914033379058070004572.4733 +999999999999999999999999999999999999 37037037037037037037037037037037037 +12345678901234567890123456789012345678 457247366712391403337905807000457247.33 +12345678901234567890123456789012345678 457247366712391403337905807000457247.33 +12345678901234567890123456789012345678 457247366712391403337905807000457247.33 +12345678901234567890123456789012345678 457247366712391403337905807000457247.33 +12345678901234567890123456789012345678 457247366712391403337905807000457247.33 +99999999999999999999999999999999999999 3703703703703703703703703703703703703.7 diff --git a/sql/hive/src/test/resources/golden/decimal_precision-8-6e6bd4655de124dc1fc482ce0d11930e b/sql/hive/src/test/resources/golden/decimal_precision-8-6e6bd4655de124dc1fc482ce0d11930e new file mode 100644 index 0000000000000..c1e0db0174c63 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-8-6e6bd4655de124dc1fc482ce0d11930e @@ -0,0 +1,75 @@ +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +NULL NULL +-99999999999999999999999999999999999999 NULL +-999999999999999999999999999999999999 NULL +-99999999999999999999999999999999999 NULL +-0.0000000000000000000000000000000000001 NULL +0 0 +0.0000000000000000000000000000000000001 NULL +0.123456789012345 0.015241578753238669120562399025 +0.1234567890123456789012345678901234578 NULL +1.234567890123456 1.524157875323881726870921383936 +1.2345678901234567890123456789012345678 NULL +12.34567890123456 152.4157875323881726870921383936 +12.345678901234567890123456789012345678 NULL +123.4567890123456 15241.57875323881726870921383936 +123.45678901234567890123456789012345678 NULL +1234.567890123456 1524157.875323881726870921383936 +1234.5678901234567890123456789012345678 NULL +12345.67890123456 152415787.5323881726870921383936 +12345.678901234567890123456789012345678 NULL +123456.7890123456 15241578753.23881726870921383936 +123456.78901234567890123456789012345678 NULL +1234567.890123456 1524157875323.881726870921383936 +1234567.8901234567890123456789012345678 NULL +12345678.90123456 152415787532388.1726870921383936 +12345678.901234567890123456789012345678 NULL +123456789.0123456 15241578753238817.26870921383936 +123456789.01234567890123456789012345678 NULL +1234567890.123456 1524157875323881726.870921383936 +1234567890.1234567890123456789012345678 NULL +12345678901.23456 152415787532388172687.0921383936 +12345678901.234567890123456789012345678 NULL +123456789012.3456 15241578753238817268709.21383936 +123456789012.34567890123456789012345678 NULL +1234567890123.456 1524157875323881726870921.383936 +1234567890123.4567890123456789012345678 NULL +12345678901234.56 152415787532388172687092138.3936 +12345678901234.567890123456789012345678 NULL +123456789012345.6 15241578753238817268709213839.36 +123456789012345.67890123456789012345678 NULL +1234567890123456.7890123456789012345678 NULL +12345678901234567.890123456789012345678 NULL +123456789012345678.90123456789012345678 NULL +1234567890123456789.0123456789012345678 NULL +12345678901234567890.123456789012345678 NULL +123456789012345678901.23456789012345678 NULL +1234567890123456789012.3456789012345678 NULL +12345678901234567890123.456789012345678 NULL +123456789012345678901234.56789012345678 NULL +1234567890123456789012345.6789012345678 NULL +12345678901234567890123456.789012345678 NULL +123456789012345678901234567.89012345678 NULL +1234567890123456789012345678.9012345678 NULL +12345678901234567890123456789.012345678 NULL +123456789012345678901234567890.12345678 NULL +1234567890123456789012345678901.2345678 NULL +12345678901234567890123456789012.345678 NULL +123456789012345678901234567890123.45678 NULL +1234567890123456789012345678901234.5678 NULL +12345678901234567890123456789012345.678 NULL +99999999999999999999999999999999999 NULL +123456789012345678901234567890123456.78 NULL +999999999999999999999999999999999999 NULL +12345678901234567890123456789012345678 NULL +12345678901234567890123456789012345678 NULL +12345678901234567890123456789012345678 NULL +12345678901234567890123456789012345678 NULL +12345678901234567890123456789012345678 NULL +99999999999999999999999999999999999999 NULL diff --git a/sql/hive/src/test/resources/golden/decimal_precision-9-e7b465fbeb49487b2a972a314e2c01ab b/sql/hive/src/test/resources/golden/decimal_precision-9-e7b465fbeb49487b2a972a314e2c01ab new file mode 100644 index 0000000000000..81af0e4cd3ab8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/decimal_precision-9-e7b465fbeb49487b2a972a314e2c01ab @@ -0,0 +1 @@ +NULL NULL diff --git a/sql/hive/src/test/resources/golden/default_partition_name-0-312a37c422883aa0d660018248157cf8 b/sql/hive/src/test/resources/golden/default_partition_name-0-312a37c422883aa0d660018248157cf8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/default_partition_name-1-9de8e5f66c536d4ace89c61759db829c b/sql/hive/src/test/resources/golden/default_partition_name-1-9de8e5f66c536d4ace89c61759db829c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/default_partition_name-1-9de8e5f66c536d4ace89c61759db829c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/default_partition_name-2-8732fdce7fb224dd783da2b83a93c795 b/sql/hive/src/test/resources/golden/default_partition_name-2-8732fdce7fb224dd783da2b83a93c795 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/default_partition_name-3-a7047012b4bce0158edaafe5cf0a57be b/sql/hive/src/test/resources/golden/default_partition_name-3-a7047012b4bce0158edaafe5cf0a57be new file mode 100644 index 0000000000000..ded23df148827 --- /dev/null +++ b/sql/hive/src/test/resources/golden/default_partition_name-3-a7047012b4bce0158edaafe5cf0a57be @@ -0,0 +1 @@ +ds=__HIVE_DEFAULT_PARTITION__ \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/delimiter-0-ef9bd1f5e2dad851509d6d2907c0e6ba b/sql/hive/src/test/resources/golden/delimiter-0-ef9bd1f5e2dad851509d6d2907c0e6ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/delimiter-1-d9e405c4107da8af78fcacb83a667b41 b/sql/hive/src/test/resources/golden/delimiter-1-d9e405c4107da8af78fcacb83a667b41 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/delimiter-2-d7137294d2e53ea6edc259943e4c6069 b/sql/hive/src/test/resources/golden/delimiter-2-d7137294d2e53ea6edc259943e4c6069 new file mode 100644 index 0000000000000..f438072c76b5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/delimiter-2-d7137294d2e53ea6edc259943e4c6069 @@ -0,0 +1,3 @@ +35 40 +48 32 +100100 40 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/delimiter-3-176724f76343433a8f2e6131b12206d7 b/sql/hive/src/test/resources/golden/delimiter-3-176724f76343433a8f2e6131b12206d7 new file mode 100644 index 0000000000000..f438072c76b5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/delimiter-3-176724f76343433a8f2e6131b12206d7 @@ -0,0 +1,3 @@ +35 40 +48 32 +100100 40 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/delimiter-4-f17c3a91cdc84fbc6d14011b04f12a64 b/sql/hive/src/test/resources/golden/delimiter-4-f17c3a91cdc84fbc6d14011b04f12a64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_comment_indent-0-5b66d27453f15517fb266a5e1a0e3cbb b/sql/hive/src/test/resources/golden/describe_comment_indent-0-5b66d27453f15517fb266a5e1a0e3cbb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_comment_indent-1-5536eb772d43014b971c6da3a0c44904 b/sql/hive/src/test/resources/golden/describe_comment_indent-1-5536eb772d43014b971c6da3a0c44904 new file mode 100644 index 0000000000000..d980efc81b947 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_comment_indent-1-5536eb772d43014b971c6da3a0c44904 @@ -0,0 +1,6 @@ +col1 int col1 one line comment +col2 string col2 + two lines comment +col3 string col3 + three lines + comment \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_comment_indent-2-91bffa09f4f2caaaa6864bf935c2ea94 b/sql/hive/src/test/resources/golden/describe_comment_indent-2-91bffa09f4f2caaaa6864bf935c2ea94 new file mode 100644 index 0000000000000..01b9151074b22 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_comment_indent-2-91bffa09f4f2caaaa6864bf935c2ea94 @@ -0,0 +1,32 @@ +# col_name data_type comment + +col1 int col1 one line comment +col2 string col2 + two lines comment +col3 string col3 + three lines + comment + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 14 11:42:35 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/test_table +Table Type: MANAGED_TABLE +Table Parameters: + comment table comment\ntwo lines + transient_lastDdlTime 1389728555 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_database_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b b/sql/hive/src/test/resources/golden/describe_database_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_database_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_database_json-1-12cc2812ab067d58718c29ea6aa3d8a3 b/sql/hive/src/test/resources/golden/describe_database_json-1-12cc2812ab067d58718c29ea6aa3d8a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_database_json-10-1afddec8522bd69f496b15980600a6e1 b/sql/hive/src/test/resources/golden/describe_database_json-10-1afddec8522bd69f496b15980600a6e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_database_json-11-b05391400dc31139998dc3abaaf86320 b/sql/hive/src/test/resources/golden/describe_database_json-11-b05391400dc31139998dc3abaaf86320 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_database_json-11-b05391400dc31139998dc3abaaf86320 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_database_json-2-8e7cfe3e6069e796124ca940125385a b/sql/hive/src/test/resources/golden/describe_database_json-2-8e7cfe3e6069e796124ca940125385a new file mode 100644 index 0000000000000..c56a79e4f322e --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_database_json-2-8e7cfe3e6069e796124ca940125385a @@ -0,0 +1 @@ +{"location":"file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/jsondb1","comment":"Test database","database":"jsondb1"} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_database_json-3-d097973152d91fa8072facb0f739e304 b/sql/hive/src/test/resources/golden/describe_database_json-3-d097973152d91fa8072facb0f739e304 new file mode 100644 index 0000000000000..aa08c38c68d1d --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_database_json-3-d097973152d91fa8072facb0f739e304 @@ -0,0 +1 @@ +{"location":"file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/jsondb1","params":{"id":"jsondb1"},"comment":"Test database","database":"jsondb1"} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_database_json-4-549981e00a3d95f03dd5a9ef6044aa20 b/sql/hive/src/test/resources/golden/describe_database_json-4-549981e00a3d95f03dd5a9ef6044aa20 new file mode 100644 index 0000000000000..513aeaab1dc66 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_database_json-4-549981e00a3d95f03dd5a9ef6044aa20 @@ -0,0 +1 @@ +{"databases":["default","jsondb1"]} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_database_json-5-a3ee372283f45479db3f2cd7ebeedc8c b/sql/hive/src/test/resources/golden/describe_database_json-5-a3ee372283f45479db3f2cd7ebeedc8c new file mode 100644 index 0000000000000..606069d6291b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_database_json-5-a3ee372283f45479db3f2cd7ebeedc8c @@ -0,0 +1 @@ +{"databases":["jsondb1"]} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_database_json-6-1afddec8522bd69f496b15980600a6e1 b/sql/hive/src/test/resources/golden/describe_database_json-6-1afddec8522bd69f496b15980600a6e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_database_json-7-7529ec337ca17cdf95d037f29e1cb793 b/sql/hive/src/test/resources/golden/describe_database_json-7-7529ec337ca17cdf95d037f29e1cb793 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_database_json-8-8e7cfe3e6069e796124ca940125385a b/sql/hive/src/test/resources/golden/describe_database_json-8-8e7cfe3e6069e796124ca940125385a new file mode 100644 index 0000000000000..bea7c01440c46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_database_json-8-8e7cfe3e6069e796124ca940125385a @@ -0,0 +1 @@ +{"location":"file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/jsondb1.db","database":"jsondb1"} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_database_json-9-d097973152d91fa8072facb0f739e304 b/sql/hive/src/test/resources/golden/describe_database_json-9-d097973152d91fa8072facb0f739e304 new file mode 100644 index 0000000000000..bea7c01440c46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_database_json-9-d097973152d91fa8072facb0f739e304 @@ -0,0 +1 @@ +{"location":"file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/jsondb1.db","database":"jsondb1"} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-0-889714213a760ae9ab3ebe199eb30b62 b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-0-889714213a760ae9ab3ebe199eb30b62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-1-cbd03c487eba9e34d57a8decaa3a0dfa b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-1-cbd03c487eba9e34d57a8decaa3a0dfa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-2-db8910ace81a5102495905a508ef5c28 b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-2-db8910ace81a5102495905a508ef5c28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-3-b80c7ae3530bfdbc8e865d49742da826 b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-3-b80c7ae3530bfdbc8e865d49742da826 new file mode 100644 index 0000000000000..381821184d693 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-3-b80c7ae3530bfdbc8e865d49742da826 @@ -0,0 +1,19 @@ +# col_name data_type comment + +key int None + +# Partition Information +# col_name data_type comment + +value string None + +# Detailed Partition Information +Partition Value: [val_86] +Database: default +Table: view_partitioned +CreateTime: Fri Feb 07 15:09:16 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: null +Partition Parameters: + transient_lastDdlTime 1391814556 diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-4-889714213a760ae9ab3ebe199eb30b62 b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned-4-889714213a760ae9ab3ebe199eb30b62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-1-889714213a760ae9ab3ebe199eb30b62 b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-1-889714213a760ae9ab3ebe199eb30b62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-2-cbd03c487eba9e34d57a8decaa3a0dfa b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-2-cbd03c487eba9e34d57a8decaa3a0dfa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-3-db8910ace81a5102495905a508ef5c28 b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-3-db8910ace81a5102495905a508ef5c28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-4-b80c7ae3530bfdbc8e865d49742da826 b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-4-b80c7ae3530bfdbc8e865d49742da826 new file mode 100644 index 0000000000000..7b51873776ad8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-4-b80c7ae3530bfdbc8e865d49742da826 @@ -0,0 +1 @@ +{"columns":[{"name":"key","type":"int"}]} diff --git a/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-5-889714213a760ae9ab3ebe199eb30b62 b/sql/hive/src/test/resources/golden/describe_formatted_view_partitioned_json-5-889714213a760ae9ab3ebe199eb30b62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_pretty-0-f34ca99310bf1d4793cf64423c024ad b/sql/hive/src/test/resources/golden/describe_pretty-0-f34ca99310bf1d4793cf64423c024ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_pretty-1-dbfaa12f26f99277b8397379189172cf b/sql/hive/src/test/resources/golden/describe_pretty-1-dbfaa12f26f99277b8397379189172cf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-1-dbfaa12f26f99277b8397379189172cf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-10-dbfaa12f26f99277b8397379189172cf b/sql/hive/src/test/resources/golden/describe_pretty-10-dbfaa12f26f99277b8397379189172cf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-10-dbfaa12f26f99277b8397379189172cf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-11-e98c50f4b5cdb6ba04df147c57e0b264 b/sql/hive/src/test/resources/golden/describe_pretty-11-e98c50f4b5cdb6ba04df147c57e0b264 new file mode 100644 index 0000000000000..35fac1b6f2579 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-11-e98c50f4b5cdb6ba04df147c57e0b264 @@ -0,0 +1,12 @@ +col_name data_type comment + +col1 int col1 one line comment +col2_abcdefghiklmnopqrstuvxyz string col2 + two lines comment +col3 string col3 + three lines + comment +col4 string col4 very long comment that is + greater than 80 chars and is + likely to spill into multiple + lines \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-12-7d1e5e69d235a785fa3f0e099dd894c3 b/sql/hive/src/test/resources/golden/describe_pretty-12-7d1e5e69d235a785fa3f0e099dd894c3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-12-7d1e5e69d235a785fa3f0e099dd894c3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-13-e98c50f4b5cdb6ba04df147c57e0b264 b/sql/hive/src/test/resources/golden/describe_pretty-13-e98c50f4b5cdb6ba04df147c57e0b264 new file mode 100644 index 0000000000000..b57f8955ca397 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-13-e98c50f4b5cdb6ba04df147c57e0b264 @@ -0,0 +1,24 @@ +col_name data_type comment + +col1 int col1 one + line + comment +col2_abcdefghiklmnopqrstuvxyz string col2 + two lines + comment +col3 string col3 + three + lines + comment +col4 string col4 very + long + comment + that is + greater + than 80 + chars and + is likely + to spill + into + multiple + lines \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-14-22db46f42dc0c1bf01a76ca360c20a7 b/sql/hive/src/test/resources/golden/describe_pretty-14-22db46f42dc0c1bf01a76ca360c20a7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_pretty-15-db4abe06aba81e685c52db6b43ba7c03 b/sql/hive/src/test/resources/golden/describe_pretty-15-db4abe06aba81e685c52db6b43ba7c03 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-15-db4abe06aba81e685c52db6b43ba7c03 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-16-ada55b65b72e0d65563ad6161e005f22 b/sql/hive/src/test/resources/golden/describe_pretty-16-ada55b65b72e0d65563ad6161e005f22 new file mode 100644 index 0000000000000..3b7fe3c133089 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-16-ada55b65b72e0d65563ad6161e005f22 @@ -0,0 +1,37 @@ +col_name data_type comment + +col1 int col1 one line comment +col2 string col2 + two lines comment +col3 string col3 + three lines + comment +col4 string col4 very long comment that + is greater than 80 chars + and is likely to spill into + multiple lines +col5 string col5 very long multi-line + comment where each line is + very long by itself and is + likely to spill + into multiple lines. Lorem + ipsum dolor sit amet, + consectetur adipiscing + elit. Proin in dolor nisl, + sodales + adipiscing tortor. Integer + venenatis +col6 string This comment has a very + long single word ABCDEFGHIJ + KLMNOPQRSTUVXYZabcdefghijkl + mnopqrstuvzxyz123 which + will not fit in a line by + itself for small column + widths. +col7_nocomment string None +ds string None + +# Partition Information +col_name data_type comment + +ds string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-2-713712e0f6f18144d1f3a522e9b98861 b/sql/hive/src/test/resources/golden/describe_pretty-2-713712e0f6f18144d1f3a522e9b98861 new file mode 100644 index 0000000000000..49175da27357f --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-2-713712e0f6f18144d1f3a522e9b98861 @@ -0,0 +1,23 @@ +col_name data_type comment + +col1 int col1 one line comment +col2 string col2 + two lines comment +col3 string col3 + three lines + comment +col4 string col4 very long comment that is greater than 80 + chars and is likely to spill into multiple + lines +col5 string col5 very long multi-line comment where each + line is very long by itself and is likely to + spill + into multiple lines. Lorem ipsum dolor sit + amet, consectetur adipiscing elit. Proin in + dolor nisl, sodales + adipiscing tortor. Integer venenatis +col6 string This comment has a very long single word ABCDEF + GHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz12 + 3 which will not fit in a line by itself for + small column widths. +col7_nocomment string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-3-87c1f2148ecdc0d77eecb72b0268d4b4 b/sql/hive/src/test/resources/golden/describe_pretty-3-87c1f2148ecdc0d77eecb72b0268d4b4 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-3-87c1f2148ecdc0d77eecb72b0268d4b4 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-4-1546db18568697fa68a7fc781802d255 b/sql/hive/src/test/resources/golden/describe_pretty-4-1546db18568697fa68a7fc781802d255 new file mode 100644 index 0000000000000..c3e77e079a9d4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-4-1546db18568697fa68a7fc781802d255 @@ -0,0 +1,14 @@ +col_name data_type comment + +col1 int col1 one line comment +col2 string col2 + two lines comment +col3 string col3 + three lines + comment +col4 string col4 very long comment that is greater than 80 chars and is likely to spill into multiple lines +col5 string col5 very long multi-line comment where each line is very long by itself and is likely to spill + into multiple lines. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin in dolor nisl, sodales + adipiscing tortor. Integer venenatis +col6 string This comment has a very long single word ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz123 which will not fit in a line by itself for small column widths. +col7_nocomment string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-5-ce1966d8626096821b404ab8745c4914 b/sql/hive/src/test/resources/golden/describe_pretty-5-ce1966d8626096821b404ab8745c4914 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-5-ce1966d8626096821b404ab8745c4914 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-6-1546db18568697fa68a7fc781802d255 b/sql/hive/src/test/resources/golden/describe_pretty-6-1546db18568697fa68a7fc781802d255 new file mode 100644 index 0000000000000..452f75a11fdd0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-6-1546db18568697fa68a7fc781802d255 @@ -0,0 +1,44 @@ +col_name data_type comment + +col1 int col1 one line + comment +col2 string col2 + two lines comment +col3 string col3 + three lines + comment +col4 string col4 very long + comment that is + greater than 80 + chars and is + likely to spill + into multiple + lines +col5 string col5 very long + multi-line + comment where + each line is very + long by itself + and is likely to + spill + into multiple + lines. Lorem + ipsum dolor sit + amet, consectetur + adipiscing elit. + Proin in dolor + nisl, sodales + adipiscing + tortor. Integer + venenatis +col6 string This comment has + a very long + single word ABCDE + FGHIJKLMNOPQRSTUV + XYZabcdefghijklmn + opqrstuvzxyz123 + which will not + fit in a line by + itself for small + column widths. +col7_nocomment string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-7-db4abe06aba81e685c52db6b43ba7c03 b/sql/hive/src/test/resources/golden/describe_pretty-7-db4abe06aba81e685c52db6b43ba7c03 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-7-db4abe06aba81e685c52db6b43ba7c03 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-8-1546db18568697fa68a7fc781802d255 b/sql/hive/src/test/resources/golden/describe_pretty-8-1546db18568697fa68a7fc781802d255 new file mode 100644 index 0000000000000..ee5a10c85057a --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_pretty-8-1546db18568697fa68a7fc781802d255 @@ -0,0 +1,31 @@ +col_name data_type comment + +col1 int col1 one line comment +col2 string col2 + two lines comment +col3 string col3 + three lines + comment +col4 string col4 very long comment that + is greater than 80 chars + and is likely to spill into + multiple lines +col5 string col5 very long multi-line + comment where each line is + very long by itself and is + likely to spill + into multiple lines. Lorem + ipsum dolor sit amet, + consectetur adipiscing + elit. Proin in dolor nisl, + sodales + adipiscing tortor. Integer + venenatis +col6 string This comment has a very + long single word ABCDEFGHIJ + KLMNOPQRSTUVXYZabcdefghijkl + mnopqrstuvzxyz123 which + will not fit in a line by + itself for small column + widths. +col7_nocomment string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_pretty-9-e382a994134aefcd2652b57af9195644 b/sql/hive/src/test/resources/golden/describe_pretty-9-e382a994134aefcd2652b57af9195644 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_syntax-0-5528e36b3b0f5b14313898cc45f9c23a b/sql/hive/src/test/resources/golden/describe_syntax-0-5528e36b3b0f5b14313898cc45f9c23a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_syntax-1-4f3d3497418242124113538edab45df7 b/sql/hive/src/test/resources/golden/describe_syntax-1-4f3d3497418242124113538edab45df7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_syntax-10-2d15bc50701f8f3c64ec48bd03a23ac5 b/sql/hive/src/test/resources/golden/describe_syntax-10-2d15bc50701f8f3c64ec48bd03a23ac5 new file mode 100644 index 0000000000000..4184ce21dc079 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-10-2d15bc50701f8f3c64ec48bd03a23ac5 @@ -0,0 +1,12 @@ +key1 int None +value1 string None +ds string None +part string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +Detailed Table Information Table(tableName:t1, dbName:db1, owner:marmbrus, createTime:1389728588, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key1, type:int, comment:null), FieldSchema(name:value1, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:part, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/t1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:part, type:string, comment:null)], parameters:{transient_lastDdlTime=1389728588}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-11-ab161e38c5d66b6c344c8372160ac74f b/sql/hive/src/test/resources/golden/describe_syntax-11-ab161e38c5d66b6c344c8372160ac74f new file mode 100644 index 0000000000000..c94d6dcb90042 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-11-ab161e38c5d66b6c344c8372160ac74f @@ -0,0 +1,33 @@ +# col_name data_type comment + +key1 int None +value1 string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Table Information +Database: db1 +Owner: marmbrus +CreateTime: Tue Jan 14 11:43:08 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/t1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1389728588 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-12-90c7890e1aa28e94520f35f5679560a4 b/sql/hive/src/test/resources/golden/describe_syntax-12-90c7890e1aa28e94520f35f5679560a4 new file mode 100644 index 0000000000000..0dea48c260ab2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-12-90c7890e1aa28e94520f35f5679560a4 @@ -0,0 +1 @@ +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-13-7c1216f9852d454bf93256e5a2588758 b/sql/hive/src/test/resources/golden/describe_syntax-13-7c1216f9852d454bf93256e5a2588758 new file mode 100644 index 0000000000000..0dea48c260ab2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-13-7c1216f9852d454bf93256e5a2588758 @@ -0,0 +1 @@ +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-14-d167187f54ec60c25f5f7e1f2f2afee9 b/sql/hive/src/test/resources/golden/describe_syntax-14-d167187f54ec60c25f5f7e1f2f2afee9 new file mode 100644 index 0000000000000..f3d242157dd98 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-14-d167187f54ec60c25f5f7e1f2f2afee9 @@ -0,0 +1,3 @@ +# col_name data_type comment + +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-15-e420b255509153b3326f00dcd25d11e4 b/sql/hive/src/test/resources/golden/describe_syntax-15-e420b255509153b3326f00dcd25d11e4 new file mode 100644 index 0000000000000..0dea48c260ab2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-15-e420b255509153b3326f00dcd25d11e4 @@ -0,0 +1 @@ +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-16-5043ee273a313d28adeca74fd33739a7 b/sql/hive/src/test/resources/golden/describe_syntax-16-5043ee273a313d28adeca74fd33739a7 new file mode 100644 index 0000000000000..0dea48c260ab2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-16-5043ee273a313d28adeca74fd33739a7 @@ -0,0 +1 @@ +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-17-c97a9e691cc08199678ead7f79d58b58 b/sql/hive/src/test/resources/golden/describe_syntax-17-c97a9e691cc08199678ead7f79d58b58 new file mode 100644 index 0000000000000..f3d242157dd98 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-17-c97a9e691cc08199678ead7f79d58b58 @@ -0,0 +1,3 @@ +# col_name data_type comment + +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-18-69cecdc1889b7feb40b46c95524aaad4 b/sql/hive/src/test/resources/golden/describe_syntax-18-69cecdc1889b7feb40b46c95524aaad4 new file mode 100644 index 0000000000000..0dea48c260ab2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-18-69cecdc1889b7feb40b46c95524aaad4 @@ -0,0 +1 @@ +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-19-c1c3359705e256d7641bbffab00c43fa b/sql/hive/src/test/resources/golden/describe_syntax-19-c1c3359705e256d7641bbffab00c43fa new file mode 100644 index 0000000000000..0dea48c260ab2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-19-c1c3359705e256d7641bbffab00c43fa @@ -0,0 +1 @@ +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-2-b198700c0129910d6205ef063ee83d5a b/sql/hive/src/test/resources/golden/describe_syntax-2-b198700c0129910d6205ef063ee83d5a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_syntax-20-781dd449a9b26dc54f3bba8e5178cd8a b/sql/hive/src/test/resources/golden/describe_syntax-20-781dd449a9b26dc54f3bba8e5178cd8a new file mode 100644 index 0000000000000..f3d242157dd98 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-20-781dd449a9b26dc54f3bba8e5178cd8a @@ -0,0 +1,3 @@ +# col_name data_type comment + +key1 int from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-21-5bac87eeb7e71928d01275b006720de3 b/sql/hive/src/test/resources/golden/describe_syntax-21-5bac87eeb7e71928d01275b006720de3 new file mode 100644 index 0000000000000..4f76eaca6cd8b --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-21-5bac87eeb7e71928d01275b006720de3 @@ -0,0 +1,10 @@ +key1 int None +value1 string None +ds string None +part string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-22-719a15ffd0018bb2898f9045be886e0f b/sql/hive/src/test/resources/golden/describe_syntax-22-719a15ffd0018bb2898f9045be886e0f new file mode 100644 index 0000000000000..aa25ca5a29dd3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-22-719a15ffd0018bb2898f9045be886e0f @@ -0,0 +1,12 @@ +key1 int None +value1 string None +ds string None +part string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +Detailed Partition Information Partition(values:[4, 5], dbName:db1, tableName:t1, createTime:1389728588, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key1, type:int, comment:null), FieldSchema(name:value1, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:part, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/t1/ds=4/part=5, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1389728588}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-23-2b2f2f068fe8e8fcbe10d11506804e49 b/sql/hive/src/test/resources/golden/describe_syntax-23-2b2f2f068fe8e8fcbe10d11506804e49 new file mode 100644 index 0000000000000..311870f6ad6b0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-23-2b2f2f068fe8e8fcbe10d11506804e49 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key1 int None +value1 string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Partition Information +Partition Value: [4, 5] +Database: db1 +Table: t1 +CreateTime: Tue Jan 14 11:43:08 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/t1/ds=4/part=5 +Partition Parameters: + transient_lastDdlTime 1389728588 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-24-ee226b42db35b219702319858e925468 b/sql/hive/src/test/resources/golden/describe_syntax-24-ee226b42db35b219702319858e925468 new file mode 100644 index 0000000000000..4f76eaca6cd8b --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-24-ee226b42db35b219702319858e925468 @@ -0,0 +1,10 @@ +key1 int None +value1 string None +ds string None +part string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-25-b6e10514fb473803c44bc793b9f9713e b/sql/hive/src/test/resources/golden/describe_syntax-25-b6e10514fb473803c44bc793b9f9713e new file mode 100644 index 0000000000000..aa25ca5a29dd3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-25-b6e10514fb473803c44bc793b9f9713e @@ -0,0 +1,12 @@ +key1 int None +value1 string None +ds string None +part string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +Detailed Partition Information Partition(values:[4, 5], dbName:db1, tableName:t1, createTime:1389728588, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key1, type:int, comment:null), FieldSchema(name:value1, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:part, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/t1/ds=4/part=5, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1389728588}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-26-4851dc65e26ec33c605ab1ed65b59bec b/sql/hive/src/test/resources/golden/describe_syntax-26-4851dc65e26ec33c605ab1ed65b59bec new file mode 100644 index 0000000000000..311870f6ad6b0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-26-4851dc65e26ec33c605ab1ed65b59bec @@ -0,0 +1,32 @@ +# col_name data_type comment + +key1 int None +value1 string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Partition Information +Partition Value: [4, 5] +Database: db1 +Table: t1 +CreateTime: Tue Jan 14 11:43:08 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/t1/ds=4/part=5 +Partition Parameters: + transient_lastDdlTime 1389728588 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-3-458d6aaffeee94997f67a43b88382106 b/sql/hive/src/test/resources/golden/describe_syntax-3-458d6aaffeee94997f67a43b88382106 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_syntax-4-67eeb4eddd6b4e905404dd32a9f1d9c2 b/sql/hive/src/test/resources/golden/describe_syntax-4-67eeb4eddd6b4e905404dd32a9f1d9c2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_syntax-5-a305e3d663b2697acca5abb9e7d897c4 b/sql/hive/src/test/resources/golden/describe_syntax-5-a305e3d663b2697acca5abb9e7d897c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_syntax-6-74668fbe18bbf3d6323e052ef2b4ca85 b/sql/hive/src/test/resources/golden/describe_syntax-6-74668fbe18bbf3d6323e052ef2b4ca85 new file mode 100644 index 0000000000000..4f76eaca6cd8b --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-6-74668fbe18bbf3d6323e052ef2b4ca85 @@ -0,0 +1,10 @@ +key1 int None +value1 string None +ds string None +part string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-7-d67ccae0a3893b4b91b0d4f1bd73b66d b/sql/hive/src/test/resources/golden/describe_syntax-7-d67ccae0a3893b4b91b0d4f1bd73b66d new file mode 100644 index 0000000000000..4184ce21dc079 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-7-d67ccae0a3893b4b91b0d4f1bd73b66d @@ -0,0 +1,12 @@ +key1 int None +value1 string None +ds string None +part string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +Detailed Table Information Table(tableName:t1, dbName:db1, owner:marmbrus, createTime:1389728588, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key1, type:int, comment:null), FieldSchema(name:value1, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:part, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/t1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:part, type:string, comment:null)], parameters:{transient_lastDdlTime=1389728588}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-8-9e40f8077f34fa35fccfeae972e8c4 b/sql/hive/src/test/resources/golden/describe_syntax-8-9e40f8077f34fa35fccfeae972e8c4 new file mode 100644 index 0000000000000..c94d6dcb90042 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-8-9e40f8077f34fa35fccfeae972e8c4 @@ -0,0 +1,33 @@ +# col_name data_type comment + +key1 int None +value1 string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Table Information +Database: db1 +Owner: marmbrus +CreateTime: Tue Jan 14 11:43:08 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/db1.db/t1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1389728588 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_syntax-9-fb744775fb30d92297534d29b6eafd6b b/sql/hive/src/test/resources/golden/describe_syntax-9-fb744775fb30d92297534d29b6eafd6b new file mode 100644 index 0000000000000..4f76eaca6cd8b --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_syntax-9-fb744775fb30d92297534d29b6eafd6b @@ -0,0 +1,10 @@ +key1 int None +value1 string None +ds string None +part string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_table_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b b/sql/hive/src/test/resources/golden/describe_table_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_table_json-0-1110d5212ef44ba8c7ac357fb2f4fc7b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_table_json-1-e48b5f50bb2ff56f9886004366cfd491 b/sql/hive/src/test/resources/golden/describe_table_json-1-e48b5f50bb2ff56f9886004366cfd491 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_table_json-2-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/describe_table_json-2-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..f8bc404bf7308 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_table_json-2-9c36cac1372650b703400c60dd29042c @@ -0,0 +1 @@ +{"tables":["jsontable","src","srcpart"]} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_table_json-3-576670af142149302decb9bf8662e68a b/sql/hive/src/test/resources/golden/describe_table_json-3-576670af142149302decb9bf8662e68a new file mode 100644 index 0000000000000..5895645dbbb50 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_table_json-3-576670af142149302decb9bf8662e68a @@ -0,0 +1 @@ +{"tables":["jsontable"]} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_table_json-4-4a57591b392bb8fd18238d068d191721 b/sql/hive/src/test/resources/golden/describe_table_json-4-4a57591b392bb8fd18238d068d191721 new file mode 100644 index 0000000000000..353bf2df92f18 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_table_json-4-4a57591b392bb8fd18238d068d191721 @@ -0,0 +1 @@ +{"tables":[]} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_table_json-5-865aeeea2647a71f7f25b03da4203ffb b/sql/hive/src/test/resources/golden/describe_table_json-5-865aeeea2647a71f7f25b03da4203ffb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_table_json-6-ac49d26a0211b804fee89bbe0808f430 b/sql/hive/src/test/resources/golden/describe_table_json-6-ac49d26a0211b804fee89bbe0808f430 new file mode 100644 index 0000000000000..96c1178ae6eab --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_table_json-6-ac49d26a0211b804fee89bbe0808f430 @@ -0,0 +1 @@ +{"columns":[{"name":"key","type":"int"},{"name":"value","type":"string"}]} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_table_json-7-24552fd8c4b7d9d460a8ea25eb2d6e30 b/sql/hive/src/test/resources/golden/describe_table_json-7-24552fd8c4b7d9d460a8ea25eb2d6e30 new file mode 100644 index 0000000000000..4cf10d1d762b0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_table_json-7-24552fd8c4b7d9d460a8ea25eb2d6e30 @@ -0,0 +1 @@ +{"columns":[{"name":"key","type":"int"},{"name":"value","type":"string"}],"tableInfo":{"owner":"marmbrus","parameters":{"id":"jsontable","last_modified_by":"marmbrus","last_modified_time":"1389728616","transient_lastDdlTime":"1389728616","comment":"json table"},"createTime":1389728615,"dbName":"default","tableName":"jsontable","privileges":null,"tableType":"MANAGED_TABLE","sd":{"location":"file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/jsontable","parameters":{},"inputFormat":"org.apache.hadoop.mapred.TextInputFormat","outputFormat":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat","compressed":false,"cols":[{"name":"key","type":"int","comment":null,"setName":true,"setType":true,"setComment":false},{"name":"value","type":"string","comment":null,"setName":true,"setType":true,"setComment":false}],"serdeInfo":{"name":null,"parameters":{"serialization.format":"1"},"serializationLib":"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe","setName":false,"parametersSize":1,"setParameters":true,"setSerializationLib":true},"colsSize":2,"skewedInfo":{"skewedColNames":[],"skewedColValues":[],"skewedColValueLocationMaps":{},"skewedColNamesSize":0,"skewedColNamesIterator":[],"setSkewedColNames":true,"skewedColValuesSize":0,"skewedColValuesIterator":[],"setSkewedColValues":true,"skewedColValueLocationMapsSize":0,"setSkewedColValueLocationMaps":true},"bucketCols":[],"numBuckets":-1,"sortCols":[],"storedAsSubDirectories":false,"setSkewedInfo":true,"parametersSize":0,"setParameters":true,"colsIterator":[{"name":"key","type":"int","comment":null,"setName":true,"setType":true,"setComment":false},{"name":"value","type":"string","comment":null,"setName":true,"setType":true,"setComment":false}],"setCols":true,"setLocation":true,"setInputFormat":true,"setOutputFormat":true,"setCompressed":true,"setNumBuckets":true,"setSerdeInfo":true,"bucketColsSize":0,"bucketColsIterator":[],"setBucketCols":true,"sortColsSize":0,"sortColsIterator":[],"setSortCols":true,"setStoredAsSubDirectories":true},"partitionKeys":[],"viewOriginalText":null,"lastAccessTime":0,"retention":0,"viewExpandedText":null,"partitionKeysSize":0,"setTableType":true,"setTableName":true,"setDbName":true,"setOwner":true,"setCreateTime":true,"setLastAccessTime":true,"setRetention":true,"setSd":true,"partitionKeysIterator":[],"setPartitionKeys":true,"parametersSize":5,"setParameters":true,"setViewOriginalText":false,"setViewExpandedText":false,"setPrivileges":false}} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/describe_table_json-8-deaf826aef1c9a7f36d7824eafd20f11 b/sql/hive/src/test/resources/golden/describe_table_json-8-deaf826aef1c9a7f36d7824eafd20f11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/describe_table_json-9-b05391400dc31139998dc3abaaf86320 b/sql/hive/src/test/resources/golden/describe_table_json-9-b05391400dc31139998dc3abaaf86320 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/describe_table_json-9-b05391400dc31139998dc3abaaf86320 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/diff_part_input_formats-0-12652a5a33548c245772e8d0894af5ad b/sql/hive/src/test/resources/golden/diff_part_input_formats-0-12652a5a33548c245772e8d0894af5ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/diff_part_input_formats-1-961f7cb386a6eacd391dcb189cbeddaa b/sql/hive/src/test/resources/golden/diff_part_input_formats-1-961f7cb386a6eacd391dcb189cbeddaa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/diff_part_input_formats-2-28cd0f9b01baa8627a013339dc9508ce b/sql/hive/src/test/resources/golden/diff_part_input_formats-2-28cd0f9b01baa8627a013339dc9508ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/diff_part_input_formats-3-c6eef43568e8ed96299720d30a6235e1 b/sql/hive/src/test/resources/golden/diff_part_input_formats-3-c6eef43568e8ed96299720d30a6235e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/diff_part_input_formats-4-a4890f2b20715c75e05c674d9155a5b b/sql/hive/src/test/resources/golden/diff_part_input_formats-4-a4890f2b20715c75e05c674d9155a5b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/diff_part_input_formats-4-a4890f2b20715c75e05c674d9155a5b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/disable_file_format_check-0-bd9d00e3ffcaea450a3cc8d0ba6f865c b/sql/hive/src/test/resources/golden/disable_file_format_check-0-bd9d00e3ffcaea450a3cc8d0ba6f865c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/disable_file_format_check-0-bd9d00e3ffcaea450a3cc8d0ba6f865c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/disable_file_format_check-1-ec4d7e2ce5bd580b24119860e96f376e b/sql/hive/src/test/resources/golden/disable_file_format_check-1-ec4d7e2ce5bd580b24119860e96f376e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/disable_file_format_check-2-d3e20a1484eabcd50e2039e55b4f549 b/sql/hive/src/test/resources/golden/disable_file_format_check-2-d3e20a1484eabcd50e2039e55b4f549 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/disable_file_format_check-3-93063fb3476a400ecfec0bfd02cbc23f b/sql/hive/src/test/resources/golden/disable_file_format_check-3-93063fb3476a400ecfec0bfd02cbc23f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/disable_file_format_check-4-fe6f402a026c882c2bc8f5251794dbbb b/sql/hive/src/test/resources/golden/disable_file_format_check-4-fe6f402a026c882c2bc8f5251794dbbb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-0-a071dedef216e84d1cb2f0de6d34fd1a b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-0-a071dedef216e84d1cb2f0de6d34fd1a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-0-a071dedef216e84d1cb2f0de6d34fd1a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-1-ce3797dc14a603cba2a5e58c8612de5b b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-1-ce3797dc14a603cba2a5e58c8612de5b new file mode 100644 index 0000000000000..7ae602958428e --- /dev/null +++ b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-1-ce3797dc14a603cba2a5e58c8612de5b @@ -0,0 +1 @@ +238 val_238 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-2-f5340880d2be7b0643eb995673e89d11 b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-2-f5340880d2be7b0643eb995673e89d11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-3-b4e3c4c6b7ae6e0fad9ab7728f2ace85 b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-3-b4e3c4c6b7ae6e0fad9ab7728f2ace85 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-4-34064fd15c28dba55865cb8f3c5ba68c b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-4-34064fd15c28dba55865cb8f3c5ba68c new file mode 100644 index 0000000000000..ca21e093aa698 --- /dev/null +++ b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-4-34064fd15c28dba55865cb8f3c5ba68c @@ -0,0 +1 @@ +1 {"a1":"b1"} foo1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-5-f40a07d7654573e1a8517770eb8529e7 b/sql/hive/src/test/resources/golden/disallow_incompatible_type_change_off-5-f40a07d7654573e1a8517770eb8529e7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_database_removes_partition_dirs-0-b454ca2d55b61fd597540dbe38eb51ab b/sql/hive/src/test/resources/golden/drop_database_removes_partition_dirs-0-b454ca2d55b61fd597540dbe38eb51ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_database_removes_partition_dirs-1-ece80e0bd1236c547da7eceac114e602 b/sql/hive/src/test/resources/golden/drop_database_removes_partition_dirs-1-ece80e0bd1236c547da7eceac114e602 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_function-0-9a0a48e6e2e5edffb4bcca349c49fa48 b/sql/hive/src/test/resources/golden/drop_function-0-9a0a48e6e2e5edffb4bcca349c49fa48 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_function-0-9a0a48e6e2e5edffb4bcca349c49fa48 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_function-1-ea5871f0a80a41e19fd6a42bd29b693a b/sql/hive/src/test/resources/golden/drop_function-1-ea5871f0a80a41e19fd6a42bd29b693a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_index-0-9a0a48e6e2e5edffb4bcca349c49fa48 b/sql/hive/src/test/resources/golden/drop_index-0-9a0a48e6e2e5edffb4bcca349c49fa48 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_index-0-9a0a48e6e2e5edffb4bcca349c49fa48 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_index-1-5875a80dd89498c8b61db5f6bf26898 b/sql/hive/src/test/resources/golden/drop_index-1-5875a80dd89498c8b61db5f6bf26898 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-0-c4449feb8f8e2c40c294ccf50680b47b b/sql/hive/src/test/resources/golden/drop_multi_partitions-0-c4449feb8f8e2c40c294ccf50680b47b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-1-d738aa3c169c10f5b1e5959453dffbd4 b/sql/hive/src/test/resources/golden/drop_multi_partitions-1-d738aa3c169c10f5b1e5959453dffbd4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-10-9120e865aa132bac6e0a29c907f0b760 b/sql/hive/src/test/resources/golden/drop_multi_partitions-10-9120e865aa132bac6e0a29c907f0b760 new file mode 100644 index 0000000000000..c9d701778f9ab --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_multi_partitions-10-9120e865aa132bac6e0a29c907f0b760 @@ -0,0 +1 @@ +b=2/c=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-2-7554be9025c7683c67dce09177396357 b/sql/hive/src/test/resources/golden/drop_multi_partitions-2-7554be9025c7683c67dce09177396357 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-3-bc92a4d9670709904a8d49ebe9ba8e5 b/sql/hive/src/test/resources/golden/drop_multi_partitions-3-bc92a4d9670709904a8d49ebe9ba8e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-4-9120e865aa132bac6e0a29c907f0b760 b/sql/hive/src/test/resources/golden/drop_multi_partitions-4-9120e865aa132bac6e0a29c907f0b760 new file mode 100644 index 0000000000000..53e09b6e34202 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_multi_partitions-4-9120e865aa132bac6e0a29c907f0b760 @@ -0,0 +1,3 @@ +b=1/c=1 +b=1/c=2 +b=2/c=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-5-53b0c9e5b0c8c37e75c1750280cf2aa0 b/sql/hive/src/test/resources/golden/drop_multi_partitions-5-53b0c9e5b0c8c37e75c1750280cf2aa0 new file mode 100644 index 0000000000000..31b543e8b4122 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_multi_partitions-5-53b0c9e5b0c8c37e75c1750280cf2aa0 @@ -0,0 +1,12 @@ +ABSTRACT SYNTAX TREE: + (TOK_ALTERTABLE_DROPPARTS mp (TOK_PARTSPEC (TOK_PARTVAL b = '1'))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Drop Table Operator: + Drop Table + table: mp + diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-6-70ad97221d2be48259ea556f9d8e5353 b/sql/hive/src/test/resources/golden/drop_multi_partitions-6-70ad97221d2be48259ea556f9d8e5353 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-7-9120e865aa132bac6e0a29c907f0b760 b/sql/hive/src/test/resources/golden/drop_multi_partitions-7-9120e865aa132bac6e0a29c907f0b760 new file mode 100644 index 0000000000000..c9d701778f9ab --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_multi_partitions-7-9120e865aa132bac6e0a29c907f0b760 @@ -0,0 +1 @@ +b=2/c=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-8-46a4f646bbc04f70e7ae5ed992f102f1 b/sql/hive/src/test/resources/golden/drop_multi_partitions-8-46a4f646bbc04f70e7ae5ed992f102f1 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_multi_partitions-8-46a4f646bbc04f70e7ae5ed992f102f1 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_multi_partitions-9-3d4108847515b6386cd28b8862dcab53 b/sql/hive/src/test/resources/golden/drop_multi_partitions-9-3d4108847515b6386cd28b8862dcab53 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-0-6863a128b9a05e5c251ec0092e6124d3 b/sql/hive/src/test/resources/golden/drop_partitions_filter-0-6863a128b9a05e5c251ec0092e6124d3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-1-e3eda6672f6602a1b9bc93ef789662f6 b/sql/hive/src/test/resources/golden/drop_partitions_filter-1-e3eda6672f6602a1b9bc93ef789662f6 new file mode 100644 index 0000000000000..d1e9fd1cd0a21 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-1-e3eda6672f6602a1b9bc93ef789662f6 @@ -0,0 +1,10 @@ +a string None +b int None +c string None +d string None + +# Partition Information +# col_name data_type comment + +c string None +d string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-10-119b0fe0597fa478e1533a412e2d444b b/sql/hive/src/test/resources/golden/drop_partitions_filter-10-119b0fe0597fa478e1533a412e2d444b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-11-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter-11-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..3377ef5cf498f --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-11-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,9 @@ +c=Canada/d=3 +c=France/d=4 +c=Germany/d=2 +c=Greece/d=2 +c=India/d=3 +c=Russia/d=3 +c=US/d=1 +c=US/d=2 +c=Uganda/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-12-e0e995c7bcc6b6d801b68878b6166835 b/sql/hive/src/test/resources/golden/drop_partitions_filter-12-e0e995c7bcc6b6d801b68878b6166835 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-13-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter-13-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..40e71fb79ad0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-13-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,8 @@ +c=Canada/d=3 +c=France/d=4 +c=Germany/d=2 +c=Greece/d=2 +c=India/d=3 +c=Russia/d=3 +c=US/d=2 +c=Uganda/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-14-f47427726dd7546c3c59a2ec53891bb3 b/sql/hive/src/test/resources/golden/drop_partitions_filter-14-f47427726dd7546c3c59a2ec53891bb3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-15-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter-15-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..c03d86a551c29 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-15-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,6 @@ +c=Canada/d=3 +c=France/d=4 +c=Germany/d=2 +c=Greece/d=2 +c=India/d=3 +c=Russia/d=3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-16-fae7d99452ab708daa96c30f0b25c03b b/sql/hive/src/test/resources/golden/drop_partitions_filter-16-fae7d99452ab708daa96c30f0b25c03b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-17-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter-17-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..133c0256f898f --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-17-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,5 @@ +c=Canada/d=3 +c=France/d=4 +c=Germany/d=2 +c=Greece/d=2 +c=India/d=3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-18-4553ba96e8c121b2e98966a67220a0fd b/sql/hive/src/test/resources/golden/drop_partitions_filter-18-4553ba96e8c121b2e98966a67220a0fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-19-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter-19-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..98e52eedc2b03 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-19-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,3 @@ +c=Canada/d=3 +c=France/d=4 +c=Germany/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-2-16027a4bed34a7610bbea1e11e83c3f2 b/sql/hive/src/test/resources/golden/drop_partitions_filter-2-16027a4bed34a7610bbea1e11e83c3f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-20-a08a2d37122fd5770f4197ec1f0ebd1c b/sql/hive/src/test/resources/golden/drop_partitions_filter-20-a08a2d37122fd5770f4197ec1f0ebd1c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-21-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter-21-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..687f7dd7e13a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-21-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1 @@ +c=France/d=4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-22-46a4f646bbc04f70e7ae5ed992f102f1 b/sql/hive/src/test/resources/golden/drop_partitions_filter-22-46a4f646bbc04f70e7ae5ed992f102f1 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-22-46a4f646bbc04f70e7ae5ed992f102f1 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-23-45bb3dea1b8d4bd353885cd68729698e b/sql/hive/src/test/resources/golden/drop_partitions_filter-23-45bb3dea1b8d4bd353885cd68729698e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-24-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter-24-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..687f7dd7e13a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter-24-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1 @@ +c=France/d=4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-25-67d75c72ea2d3982c55f3a850d93f83c b/sql/hive/src/test/resources/golden/drop_partitions_filter-25-67d75c72ea2d3982c55f3a850d93f83c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-3-a499bb560b6e228b924387759214bc3c b/sql/hive/src/test/resources/golden/drop_partitions_filter-3-a499bb560b6e228b924387759214bc3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-4-8fde1e5c12230f4b8081950dfd68b18d b/sql/hive/src/test/resources/golden/drop_partitions_filter-4-8fde1e5c12230f4b8081950dfd68b18d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-5-d3dc443408a20518c42b839fba218216 b/sql/hive/src/test/resources/golden/drop_partitions_filter-5-d3dc443408a20518c42b839fba218216 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-6-8cf34fc1e9004b8fdf43770f7893506e b/sql/hive/src/test/resources/golden/drop_partitions_filter-6-8cf34fc1e9004b8fdf43770f7893506e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-7-7f8f890e3104e36ff8f5747d9a287b39 b/sql/hive/src/test/resources/golden/drop_partitions_filter-7-7f8f890e3104e36ff8f5747d9a287b39 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-8-12ca7d0f34ab5127416bdb66d9e4a698 b/sql/hive/src/test/resources/golden/drop_partitions_filter-8-12ca7d0f34ab5127416bdb66d9e4a698 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter-9-972bcd28a9e24b4cac70ef74524f1696 b/sql/hive/src/test/resources/golden/drop_partitions_filter-9-972bcd28a9e24b4cac70ef74524f1696 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-0-322b270dab4032668de9002e9e8bc7c5 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-0-322b270dab4032668de9002e9e8bc7c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-1-e3eda6672f6602a1b9bc93ef789662f6 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-1-e3eda6672f6602a1b9bc93ef789662f6 new file mode 100644 index 0000000000000..1329d173d6a21 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter2-1-e3eda6672f6602a1b9bc93ef789662f6 @@ -0,0 +1,10 @@ +a string None +b int None +c int None +d int None + +# Partition Information +# col_name data_type comment + +c int None +d int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-10-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-10-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..08051a26d24cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter2-10-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,5 @@ +c=1/d=2 +c=2/d=1 +c=2/d=2 +c=3/d=1 +c=3/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-11-8b9e0542bfbf07e9ceabb1ce599d856a b/sql/hive/src/test/resources/golden/drop_partitions_filter2-11-8b9e0542bfbf07e9ceabb1ce599d856a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-12-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-12-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..7f6e4ae8abf83 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter2-12-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,3 @@ +c=1/d=2 +c=3/d=1 +c=3/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-13-67d75c72ea2d3982c55f3a850d93f83c b/sql/hive/src/test/resources/golden/drop_partitions_filter2-13-67d75c72ea2d3982c55f3a850d93f83c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-2-e83e7a8f276f890c4eb29e192d684730 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-2-e83e7a8f276f890c4eb29e192d684730 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-3-31bf5686028f845040ae39acf642701 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-3-31bf5686028f845040ae39acf642701 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-4-a2c778112718207a10070596cb4595d8 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-4-a2c778112718207a10070596cb4595d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-5-bc5cbd3b953ca86467c4a5fccd262f0a b/sql/hive/src/test/resources/golden/drop_partitions_filter2-5-bc5cbd3b953ca86467c4a5fccd262f0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-6-bbe938b3b20589283cc4541f3e417268 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-6-bbe938b3b20589283cc4541f3e417268 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-7-74ed9df854eae5a025077b7012ef7b97 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-7-74ed9df854eae5a025077b7012ef7b97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-8-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter2-8-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..226ef460b53a6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter2-8-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,6 @@ +c=1/d=1 +c=1/d=2 +c=2/d=1 +c=2/d=2 +c=3/d=1 +c=3/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter2-9-185122a935af4fbe8466d7e39fc7648a b/sql/hive/src/test/resources/golden/drop_partitions_filter2-9-185122a935af4fbe8466d7e39fc7648a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-0-e182f5fbf99c4d9be3fa8c496e0a5994 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-0-e182f5fbf99c4d9be3fa8c496e0a5994 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-1-e3eda6672f6602a1b9bc93ef789662f6 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-1-e3eda6672f6602a1b9bc93ef789662f6 new file mode 100644 index 0000000000000..01562f65d807f --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter3-1-e3eda6672f6602a1b9bc93ef789662f6 @@ -0,0 +1,10 @@ +a string None +b int None +c string None +d int None + +# Partition Information +# col_name data_type comment + +c string None +d int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-10-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-10-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..08051a26d24cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter3-10-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,5 @@ +c=1/d=2 +c=2/d=1 +c=2/d=2 +c=3/d=1 +c=3/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-11-57ca78d49ce16d1ebbbc759bad7adfa0 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-11-57ca78d49ce16d1ebbbc759bad7adfa0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-12-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-12-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..7f6e4ae8abf83 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter3-12-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,3 @@ +c=1/d=2 +c=3/d=1 +c=3/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-13-67d75c72ea2d3982c55f3a850d93f83c b/sql/hive/src/test/resources/golden/drop_partitions_filter3-13-67d75c72ea2d3982c55f3a850d93f83c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-2-3e8e821dd63112223649b5d06febf7d9 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-2-3e8e821dd63112223649b5d06febf7d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-3-431228f63002f8b7d1364aa2a07f92ec b/sql/hive/src/test/resources/golden/drop_partitions_filter3-3-431228f63002f8b7d1364aa2a07f92ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-4-ce613fad87e72c2519c0d01b64f4a99a b/sql/hive/src/test/resources/golden/drop_partitions_filter3-4-ce613fad87e72c2519c0d01b64f4a99a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-5-9a22b61cd027d740791ba847abc7e072 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-5-9a22b61cd027d740791ba847abc7e072 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-6-6127604e4c55b13778cc56c0068ce6ae b/sql/hive/src/test/resources/golden/drop_partitions_filter3-6-6127604e4c55b13778cc56c0068ce6ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-7-688620ee5d61cce432e6c2d590b31404 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-7-688620ee5d61cce432e6c2d590b31404 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-8-83e3e422cdf9403523fa60d75376d7d7 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-8-83e3e422cdf9403523fa60d75376d7d7 new file mode 100644 index 0000000000000..226ef460b53a6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_filter3-8-83e3e422cdf9403523fa60d75376d7d7 @@ -0,0 +1,6 @@ +c=1/d=1 +c=1/d=2 +c=2/d=1 +c=2/d=2 +c=3/d=1 +c=3/d=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_filter3-9-d1a5c03e520fbfa2249e0a32b824a275 b/sql/hive/src/test/resources/golden/drop_partitions_filter3-9-d1a5c03e520fbfa2249e0a32b824a275 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-0-11d8788cb803a84dd4ca3b4103a8bcb b/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-0-11d8788cb803a84dd4ca3b4103a8bcb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-1-864c8c804db30687f4265ba081ca6368 b/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-1-864c8c804db30687f4265ba081ca6368 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-2-446c2380269a60eb4710d7dbeb7c2ec6 b/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-2-446c2380269a60eb4710d7dbeb7c2ec6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-3-312aa26fdea6da7907e3a91f75e36f1 b/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-3-312aa26fdea6da7907e3a91f75e36f1 new file mode 100644 index 0000000000000..8caab1c99b27d --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-3-312aa26fdea6da7907e3a91f75e36f1 @@ -0,0 +1,10 @@ +c1 string None +c2 string None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +Detailed Partition Information Partition(values:[p1], dbName:default, tableName:tbl_protectmode_no_drop, createTime:1389728724, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:c1, type:string, comment:null), FieldSchema(name:c2, type:string, comment:null), FieldSchema(name:p, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5682582801957547950/tbl_protectmode_no_drop/p=p1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{last_modified_by=marmbrus, last_modified_time=1389728724, PROTECT_MODE=NO_DROP, transient_lastDdlTime=1389728724}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-4-11f9ef9dd235f44b29c77abf7ca27881 b/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-4-11f9ef9dd235f44b29c77abf7ca27881 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-5-1283e970d6dc39e7a86e86af904bf116 b/sql/hive/src/test/resources/golden/drop_partitions_ignore_protection-5-1283e970d6dc39e7a86e86af904bf116 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table-0-9a0a48e6e2e5edffb4bcca349c49fa48 b/sql/hive/src/test/resources/golden/drop_table-0-9a0a48e6e2e5edffb4bcca349c49fa48 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_table-0-9a0a48e6e2e5edffb4bcca349c49fa48 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_table-1-afec243db5bd3a1b65d961e2325c6a57 b/sql/hive/src/test/resources/golden/drop_table-1-afec243db5bd3a1b65d961e2325c6a57 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table2-0-ac5bb9a5583f2d8968f2aaef3385b3f2 b/sql/hive/src/test/resources/golden/drop_table2-0-ac5bb9a5583f2d8968f2aaef3385b3f2 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_table2-0-ac5bb9a5583f2d8968f2aaef3385b3f2 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_table2-1-35229351a48427cf25b42ac8a61200fa b/sql/hive/src/test/resources/golden/drop_table2-1-35229351a48427cf25b42ac8a61200fa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table2-2-cb72d751d94b6d8518c8d69017b6a293 b/sql/hive/src/test/resources/golden/drop_table2-2-cb72d751d94b6d8518c8d69017b6a293 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table2-3-5f94efc9e658389a6d63553abd7a517f b/sql/hive/src/test/resources/golden/drop_table2-3-5f94efc9e658389a6d63553abd7a517f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table2-4-1c852531c1e75093c27911b45315ed62 b/sql/hive/src/test/resources/golden/drop_table2-4-1c852531c1e75093c27911b45315ed62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table2-5-1fdd850f6c301619f91eb58c890f2ad4 b/sql/hive/src/test/resources/golden/drop_table2-5-1fdd850f6c301619f91eb58c890f2ad4 new file mode 100644 index 0000000000000..fbe12dca4efc8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_table2-5-1fdd850f6c301619f91eb58c890f2ad4 @@ -0,0 +1,3 @@ +p=p1 +p=p2 +p=p3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/drop_table2-6-120f319d6031395a86c726e43d4ef678 b/sql/hive/src/test/resources/golden/drop_table2-6-120f319d6031395a86c726e43d4ef678 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table2-7-35229351a48427cf25b42ac8a61200fa b/sql/hive/src/test/resources/golden/drop_table2-7-35229351a48427cf25b42ac8a61200fa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table2-8-1fdd850f6c301619f91eb58c890f2ad4 b/sql/hive/src/test/resources/golden/drop_table2-8-1fdd850f6c301619f91eb58c890f2ad4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_table2-9-120f319d6031395a86c726e43d4ef678 b/sql/hive/src/test/resources/golden/drop_table2-9-120f319d6031395a86c726e43d4ef678 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/drop_view-0-9a0a48e6e2e5edffb4bcca349c49fa48 b/sql/hive/src/test/resources/golden/drop_view-0-9a0a48e6e2e5edffb4bcca349c49fa48 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/drop_view-0-9a0a48e6e2e5edffb4bcca349c49fa48 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/drop_view-1-70a24b7e47d8527298241bcbec922cf5 b/sql/hive/src/test/resources/golden/drop_view-1-70a24b7e47d8527298241bcbec922cf5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-0-2bba07855af8c11899cc6b89f8c0ee02 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-0-2bba07855af8c11899cc6b89f8c0ee02 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-1-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-1-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-1-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-2-d71f115b7d42f6c67de701bf69c617a9 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-2-d71f115b7d42f6c67de701bf69c617a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-3-b7f2a424f616cfb015937e9ef980277 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-3-b7f2a424f616cfb015937e9ef980277 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-4-d8c93b46de2a09a4af12017c6ba196f0 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-4-d8c93b46de2a09a4af12017c6ba196f0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-5-e394cdeb88f69b4d4b08450680f779b9 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-5-e394cdeb88f69b4d4b08450680f779b9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-6-725ba4225501c1279f593b9c72eaca28 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-6-725ba4225501c1279f593b9c72eaca28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-7-e707e693aa61edf87768fb71f6e936e1 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-7-e707e693aa61edf87768fb71f6e936e1 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-7-e707e693aa61edf87768fb71f6e936e1 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-8-725ba4225501c1279f593b9c72eaca28 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-8-725ba4225501c1279f593b9c72eaca28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-9-3b57aa58995f862f2713624b50db5b65 b/sql/hive/src/test/resources/golden/dynamic_partition_skip_default-9-3b57aa58995f862f2713624b50db5b65 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/enforce_order-0-9b9af6de0a12a47694e6f93264c2ebf9 b/sql/hive/src/test/resources/golden/enforce_order-0-9b9af6de0a12a47694e6f93264c2ebf9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/enforce_order-1-633034e3d966737cecf2befc5df1e35d b/sql/hive/src/test/resources/golden/enforce_order-1-633034e3d966737cecf2befc5df1e35d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/enforce_order-2-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/enforce_order-2-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/enforce_order-2-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/enforce_order-3-794fc9cf9fb97001efa85f24fde0cd4f b/sql/hive/src/test/resources/golden/enforce_order-3-794fc9cf9fb97001efa85f24fde0cd4f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/enforce_order-4-3136edd49e681ea21aa35d0836eab65 b/sql/hive/src/test/resources/golden/enforce_order-4-3136edd49e681ea21aa35d0836eab65 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/enforce_order-5-15d62540b57faa68f58c5c83c3a296c9 b/sql/hive/src/test/resources/golden/enforce_order-5-15d62540b57faa68f58c5c83c3a296c9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/enforce_order-6-277e01aa70e41e8cce47236fcbbb36c2 b/sql/hive/src/test/resources/golden/enforce_order-6-277e01aa70e41e8cce47236fcbbb36c2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/enforce_order-7-5fb418612e7c2201790d6f318c715ccf b/sql/hive/src/test/resources/golden/enforce_order-7-5fb418612e7c2201790d6f318c715ccf new file mode 100644 index 0000000000000..8273b7ed19da6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/enforce_order-7-5fb418612e7c2201790d6f318c715ccf @@ -0,0 +1,10 @@ +0 val_0 +0 val_0 +0 val_0 +10 val_10 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/enforce_order-8-a7cb2e48b7b4fc5b008be3c9a3485314 b/sql/hive/src/test/resources/golden/enforce_order-8-a7cb2e48b7b4fc5b008be3c9a3485314 new file mode 100644 index 0000000000000..045906a29a1da --- /dev/null +++ b/sql/hive/src/test/resources/golden/enforce_order-8-a7cb2e48b7b4fc5b008be3c9a3485314 @@ -0,0 +1,10 @@ +98 val_98 +98 val_98 +97 val_97 +97 val_97 +96 val_96 +95 val_95 +95 val_95 +92 val_92 +90 val_90 +90 val_90 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/escape1-0-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/escape1-0-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/escape1-0-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/escape1-1-683124e29877d2c5a96b95c8ddba97b7 b/sql/hive/src/test/resources/golden/escape1-1-683124e29877d2c5a96b95c8ddba97b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/escape1-1-683124e29877d2c5a96b95c8ddba97b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/escape1-2-395d5a528c5e7235a48b4ac90938e2d6 b/sql/hive/src/test/resources/golden/escape1-2-395d5a528c5e7235a48b4ac90938e2d6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape1-3-4267651148da591da38737028fdbd80 b/sql/hive/src/test/resources/golden/escape1-3-4267651148da591da38737028fdbd80 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape1-4-9745f8775c680d094a2c7cbeeb9bdf62 b/sql/hive/src/test/resources/golden/escape1-4-9745f8775c680d094a2c7cbeeb9bdf62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape1-5-70729c3d79ded87e884c176138174645 b/sql/hive/src/test/resources/golden/escape1-5-70729c3d79ded87e884c176138174645 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape1-6-134b596abc363f0bfa7f770732ebb960 b/sql/hive/src/test/resources/golden/escape1-6-134b596abc363f0bfa7f770732ebb960 new file mode 100644 index 0000000000000..a949a93dfcca6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/escape1-6-134b596abc363f0bfa7f770732ebb960 @@ -0,0 +1 @@ +128 diff --git a/sql/hive/src/test/resources/golden/escape1-7-486585cbb4de5bc908dde4c601dd7c17 b/sql/hive/src/test/resources/golden/escape1-7-486585cbb4de5bc908dde4c601dd7c17 new file mode 100644 index 0000000000000..e2799aa7e14b5 Binary files /dev/null and b/sql/hive/src/test/resources/golden/escape1-7-486585cbb4de5bc908dde4c601dd7c17 differ diff --git a/sql/hive/src/test/resources/golden/escape1-8-910536a438eec89c78bd611b3c4bb7e0 b/sql/hive/src/test/resources/golden/escape1-8-910536a438eec89c78bd611b3c4bb7e0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape2-0-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/escape2-0-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/escape2-0-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/escape2-1-683124e29877d2c5a96b95c8ddba97b7 b/sql/hive/src/test/resources/golden/escape2-1-683124e29877d2c5a96b95c8ddba97b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/escape2-1-683124e29877d2c5a96b95c8ddba97b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/escape2-10-13884d58efe80bd24862b3c54cb57c6e b/sql/hive/src/test/resources/golden/escape2-10-13884d58efe80bd24862b3c54cb57c6e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape2-2-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/escape2-2-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/escape2-2-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/escape2-3-1774adb1085f4ee6782a8dac0735399 b/sql/hive/src/test/resources/golden/escape2-3-1774adb1085f4ee6782a8dac0735399 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/escape2-3-1774adb1085f4ee6782a8dac0735399 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/escape2-4-bf9010ab0f7bc30bd6db771c5b3d0abe b/sql/hive/src/test/resources/golden/escape2-4-bf9010ab0f7bc30bd6db771c5b3d0abe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape2-5-fd0c88ad6ad131a16d1b78adbea65800 b/sql/hive/src/test/resources/golden/escape2-5-fd0c88ad6ad131a16d1b78adbea65800 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape2-6-9745f8775c680d094a2c7cbeeb9bdf62 b/sql/hive/src/test/resources/golden/escape2-6-9745f8775c680d094a2c7cbeeb9bdf62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape2-7-70729c3d79ded87e884c176138174645 b/sql/hive/src/test/resources/golden/escape2-7-70729c3d79ded87e884c176138174645 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape2-8-134b596abc363f0bfa7f770732ebb960 b/sql/hive/src/test/resources/golden/escape2-8-134b596abc363f0bfa7f770732ebb960 new file mode 100644 index 0000000000000..a949a93dfcca6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/escape2-8-134b596abc363f0bfa7f770732ebb960 @@ -0,0 +1 @@ +128 diff --git a/sql/hive/src/test/resources/golden/escape2-9-486585cbb4de5bc908dde4c601dd7c17 b/sql/hive/src/test/resources/golden/escape2-9-486585cbb4de5bc908dde4c601dd7c17 new file mode 100644 index 0000000000000..e2799aa7e14b5 Binary files /dev/null and b/sql/hive/src/test/resources/golden/escape2-9-486585cbb4de5bc908dde4c601dd7c17 differ diff --git a/sql/hive/src/test/resources/golden/escape_clusterby1-0-e34202f0d36c00a68722c802139d17cf b/sql/hive/src/test/resources/golden/escape_clusterby1-0-e34202f0d36c00a68722c802139d17cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape_clusterby1-1-914091aa635a64c707c69e296eb097a5 b/sql/hive/src/test/resources/golden/escape_clusterby1-1-914091aa635a64c707c69e296eb097a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape_distributeby1-0-1f178ec5a7ea27b365012c751f3a9cdb b/sql/hive/src/test/resources/golden/escape_distributeby1-0-1f178ec5a7ea27b365012c751f3a9cdb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape_distributeby1-1-f17d649f307c8c827bf2d136c5d02e5 b/sql/hive/src/test/resources/golden/escape_distributeby1-1-f17d649f307c8c827bf2d136c5d02e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape_orderby1-0-4057beace528a415308f7ca332f29941 b/sql/hive/src/test/resources/golden/escape_orderby1-0-4057beace528a415308f7ca332f29941 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape_orderby1-1-9c36a3f0e645466b4ebaf2b0f83bc568 b/sql/hive/src/test/resources/golden/escape_orderby1-1-9c36a3f0e645466b4ebaf2b0f83bc568 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape_sortby1-0-e9ca3a2551a33c710e1759517af3d5b0 b/sql/hive/src/test/resources/golden/escape_sortby1-0-e9ca3a2551a33c710e1759517af3d5b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/escape_sortby1-1-bb5ad94d261df75e195d3051a4634d99 b/sql/hive/src/test/resources/golden/escape_sortby1-1-bb5ad94d261df75e195d3051a4634d99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-3-4f20db97105fb03ad21ffbf3edab7b77 b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-3-4f20db97105fb03ad21ffbf3edab7b77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-4-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-4-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-4-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-5-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-5-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_00_nonpart_empty-5-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_01_nonpart-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_01_nonpart-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_01_nonpart-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_01_nonpart-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_01_nonpart-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_01_nonpart-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_01_nonpart-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_01_nonpart-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_01_nonpart-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_01_nonpart-3-4f20db97105fb03ad21ffbf3edab7b77 b/sql/hive/src/test/resources/golden/exim_01_nonpart-3-4f20db97105fb03ad21ffbf3edab7b77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_01_nonpart-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_01_nonpart-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_01_nonpart-5-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_01_nonpart-5-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_01_nonpart-5-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_01_nonpart-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_01_nonpart-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_01_nonpart-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_02_00_part_empty-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_02_00_part_empty-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_02_00_part_empty-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_02_00_part_empty-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_02_00_part_empty-4-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-4-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-4-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_02_00_part_empty-5-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-5-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_00_part_empty-5-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_02_part-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_02_part-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_part-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_02_part-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_02_part-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_part-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_02_part-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_02_part-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_part-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_02_part-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_02_part-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_02_part-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_02_part-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_02_part-5-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_02_part-5-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_part-5-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_02_part-6-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_02_part-6-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_02_part-6-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-3-4f20db97105fb03ad21ffbf3edab7b77 b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-3-4f20db97105fb03ad21ffbf3edab7b77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-5-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-5-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-5-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_03_nonpart_over_compat-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_04_all_part-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_all_part-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_04_all_part-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_all_part-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_04_all_part-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_all_part-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_04_all_part-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_04_all_part-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_04_all_part-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_04_all_part-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_04_all_part-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_04_all_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_all_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_04_all_part-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_04_all_part-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_all_part-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-10-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-10-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-10-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-11-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-11-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-11-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-3-c148cf39c4f8f02d44964cfd6919fa29 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-3-c148cf39c4f8f02d44964cfd6919fa29 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-4-3c27502d4f6977b959e0928755b43be3 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-4-3c27502d4f6977b959e0928755b43be3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-5-2d68fb88796f07b4bbe2b6895464ee62 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-5-2d68fb88796f07b4bbe2b6895464ee62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-6-10c086eb97e0cae9a2d4b79d90925e85 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-6-10c086eb97e0cae9a2d4b79d90925e85 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-7-bff74501ebaea5bd2227d029003dbe08 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-7-bff74501ebaea5bd2227d029003dbe08 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-8-9c8594d9438bbceaa3e6c6f98278cf60 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-8-9c8594d9438bbceaa3e6c6f98278cf60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_04_evolved_parts-9-18a8affd3b07841b7cbe64003470a9f7 b/sql/hive/src/test/resources/golden/exim_04_evolved_parts-9-18a8affd3b07841b7cbe64003470a9f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_05_some_part-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_05_some_part-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_05_some_part-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_05_some_part-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_05_some_part-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_05_some_part-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_05_some_part-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_05_some_part-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_05_some_part-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_05_some_part-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_05_some_part-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_05_some_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_05_some_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_05_some_part-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_05_some_part-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_05_some_part-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_06_one_part-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_06_one_part-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_06_one_part-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_06_one_part-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_06_one_part-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_06_one_part-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_06_one_part-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_06_one_part-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_06_one_part-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_06_one_part-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_06_one_part-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_06_one_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_06_one_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_06_one_part-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_06_one_part-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_06_one_part-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_07_all_part_over_nonoverlap-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-2-ad7877a96aba7cd6e29edc19f4f0b394 b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-2-ad7877a96aba7cd6e29edc19f4f0b394 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-2-ad7877a96aba7cd6e29edc19f4f0b394 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-3-4f20db97105fb03ad21ffbf3edab7b77 b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-3-4f20db97105fb03ad21ffbf3edab7b77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-5-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-5-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-5-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_08_nonpart_rename-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_09_part_spec_nonoverlap-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_10_external_managed-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_10_external_managed-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_10_external_managed-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_10_external_managed-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_10_external_managed-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_10_external_managed-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_10_external_managed-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_10_external_managed-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_10_external_managed-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_10_external_managed-3-be31972099603addb71187f19f7cd25d b/sql/hive/src/test/resources/golden/exim_10_external_managed-3-be31972099603addb71187f19f7cd25d new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_10_external_managed-3-be31972099603addb71187f19f7cd25d @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_10_external_managed-4-46667daf88f9c8b9b758ced6a6b28ef1 b/sql/hive/src/test/resources/golden/exim_10_external_managed-4-46667daf88f9c8b9b758ced6a6b28ef1 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_10_external_managed-4-46667daf88f9c8b9b758ced6a6b28ef1 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_11_managed_external-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_11_managed_external-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_11_managed_external-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_11_managed_external-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_11_managed_external-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_11_managed_external-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_11_managed_external-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_11_managed_external-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_11_managed_external-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_11_managed_external-3-4f20db97105fb03ad21ffbf3edab7b77 b/sql/hive/src/test/resources/golden/exim_11_managed_external-3-4f20db97105fb03ad21ffbf3edab7b77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_11_managed_external-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_11_managed_external-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_11_managed_external-5-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_11_managed_external-5-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_11_managed_external-5-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_11_managed_external-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_11_managed_external-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_11_managed_external-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_12_external_location-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_12_external_location-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_12_external_location-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_12_external_location-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_12_external_location-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_12_external_location-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_12_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_12_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_12_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_12_external_location-3-4f20db97105fb03ad21ffbf3edab7b77 b/sql/hive/src/test/resources/golden/exim_12_external_location-3-4f20db97105fb03ad21ffbf3edab7b77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_12_external_location-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_12_external_location-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_12_external_location-5-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_12_external_location-5-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_12_external_location-5-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_12_external_location-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_12_external_location-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_12_external_location-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_13_managed_location-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_13_managed_location-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_13_managed_location-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_13_managed_location-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_13_managed_location-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_13_managed_location-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_13_managed_location-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_13_managed_location-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_13_managed_location-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_13_managed_location-3-4f20db97105fb03ad21ffbf3edab7b77 b/sql/hive/src/test/resources/golden/exim_13_managed_location-3-4f20db97105fb03ad21ffbf3edab7b77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_13_managed_location-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_13_managed_location-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_13_managed_location-5-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_13_managed_location-5-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_13_managed_location-5-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_13_managed_location-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_13_managed_location-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_13_managed_location-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-3-4f20db97105fb03ad21ffbf3edab7b77 b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-3-4f20db97105fb03ad21ffbf3edab7b77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-5-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-5-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-5-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_14_managed_location_over_existing-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_15_external_part-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_15_external_part-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_15_external_part-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_15_external_part-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_15_external_part-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_15_external_part-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_15_external_part-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_15_external_part-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_15_external_part-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_15_external_part-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_15_external_part-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_15_external_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_15_external_part-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_15_external_part-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_15_external_part-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_15_external_part-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_16_part_external-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_16_part_external-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_16_part_external-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_16_part_external-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_16_part_external-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_16_part_external-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_16_part_external-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_16_part_external-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_16_part_external-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_16_part_external-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_16_part_external-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_16_part_external-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_16_part_external-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_16_part_external-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_16_part_external-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_16_part_external-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_17_part_managed-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_17_part_managed-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_17_part_managed-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_17_part_managed-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_17_part_managed-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_17_part_managed-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_17_part_managed-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_17_part_managed-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_17_part_managed-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_17_part_managed-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_17_part_managed-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_17_part_managed-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_17_part_managed-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_17_part_managed-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_17_part_managed-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_17_part_managed-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_18_part_external-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_18_part_external-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_18_part_external-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_18_part_external-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_18_part_external-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_18_part_external-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_18_part_external-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_18_part_external-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_18_part_external-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_18_part_external-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_18_part_external-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_18_part_external-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_18_part_external-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_18_part_external-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_18_part_external-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_18_part_external-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-5-75f428bb2aa8624ac08095cdfd7a6993 b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-5-75f428bb2aa8624ac08095cdfd7a6993 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-6-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-6-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-6-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-7-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-7-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_00_part_external_location-7-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_19_part_external_location-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_part_external_location-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_19_part_external_location-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_part_external_location-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_19_part_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_part_external_location-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_19_part_external_location-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_19_part_external_location-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_19_part_external_location-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_19_part_external_location-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_19_part_external_location-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_19_part_external_location-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_part_external_location-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_19_part_external_location-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_19_part_external_location-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_19_part_external_location-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-5-93aba23b0fa5247d2ed67e5fa976bc0a b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-5-93aba23b0fa5247d2ed67e5fa976bc0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-6-a14fc179cf3755a0aa7e63d4a514d394 b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-6-a14fc179cf3755a0aa7e63d4a514d394 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-7-308a4e8e07efb2b777d9c7de5abab1d1 b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-7-308a4e8e07efb2b777d9c7de5abab1d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-8-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-8-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-8-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_20_part_managed_location-9-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-9-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_20_part_managed_location-9-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-2-f5d86ed3cbc46bb0c7619703081d5873 b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-2-f5d86ed3cbc46bb0c7619703081d5873 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-3-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-3-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-4-7368973ec1870dd3b237c37eb3857b1e b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-4-7368973ec1870dd3b237c37eb3857b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-4-7368973ec1870dd3b237c37eb3857b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-5-760e902318ec521eed07cf23e0f256a2 b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-5-760e902318ec521eed07cf23e0f256a2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-6-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-6-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-6-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-7-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-7-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_21_export_authsuccess-7-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-3-f5d86ed3cbc46bb0c7619703081d5873 b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-3-f5d86ed3cbc46bb0c7619703081d5873 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-5-75eed21390055f8e397c81ab9d253a32 b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-5-75eed21390055f8e397c81ab9d253a32 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-5-75eed21390055f8e397c81ab9d253a32 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_22_import_exist_authsuccess-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-3-3430d89fb70985e8a62fb19aa280f2e8 b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-3-3430d89fb70985e8a62fb19aa280f2e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-4-88b581725ecdd603117a1706ab9c34dc b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-4-88b581725ecdd603117a1706ab9c34dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-5-677ddd4b14eb6f19cfcf0c3d57f54e22 b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-5-677ddd4b14eb6f19cfcf0c3d57f54e22 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-5-677ddd4b14eb6f19cfcf0c3d57f54e22 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-6-a9f93b4185a714e4f6d14171d10a6c07 b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-6-a9f93b4185a714e4f6d14171d10a6c07 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_23_import_part_authsuccess-6-a9f93b4185a714e4f6d14171d10a6c07 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-1-baeaf0da490037e7ada642d23013075a b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-1-baeaf0da490037e7ada642d23013075a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-1-baeaf0da490037e7ada642d23013075a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-2-e6e650bf4c6291ee2d78e5af5b60e906 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-3-f5d86ed3cbc46bb0c7619703081d5873 b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-3-f5d86ed3cbc46bb0c7619703081d5873 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-4-9fb7c47b98513bf3355e077ee9732cdd b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-4-9fb7c47b98513bf3355e077ee9732cdd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-5-d2ec90909f243a767be1aa299720f45d b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-5-d2ec90909f243a767be1aa299720f45d new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-5-d2ec90909f243a767be1aa299720f45d @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-6-2a161bb8d69da9d6e3679ca3677a0de5 b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-6-2a161bb8d69da9d6e3679ca3677a0de5 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/exim_24_import_nonexist_authsuccess-6-2a161bb8d69da9d6e3679ca3677a0de5 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/fetch_aggregation-0-739356d010a919138911f295fac81607 b/sql/hive/src/test/resources/golden/fetch_aggregation-0-739356d010a919138911f295fac81607 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/fetch_aggregation-0-739356d010a919138911f295fac81607 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/fetch_aggregation-1-8dc96d77daa18d053fab3c134028788 b/sql/hive/src/test/resources/golden/fetch_aggregation-1-8dc96d77daa18d053fab3c134028788 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/fetch_aggregation-2-f015c961b6c34ac56cb8fc52fb36d7c7 b/sql/hive/src/test/resources/golden/fetch_aggregation-2-f015c961b6c34ac56cb8fc52fb36d7c7 new file mode 100644 index 0000000000000..fb12634ea81c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/fetch_aggregation-2-f015c961b6c34ac56cb8fc52fb36d7c7 @@ -0,0 +1 @@ +500 130091 260.182 0 498 142.92680950752384 20428.072876000006 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/fileformat_mix-0-c6dff7eb0a793f9cd555164d23eda699 b/sql/hive/src/test/resources/golden/fileformat_mix-0-c6dff7eb0a793f9cd555164d23eda699 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/fileformat_mix-1-9fa0ea19c0cb6ccef1b4bf9519d8a01b b/sql/hive/src/test/resources/golden/fileformat_mix-1-9fa0ea19c0cb6ccef1b4bf9519d8a01b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/fileformat_mix-2-701660c0ea117b11d12de54dc661bc3e b/sql/hive/src/test/resources/golden/fileformat_mix-2-701660c0ea117b11d12de54dc661bc3e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/fileformat_mix-3-2b2316f235737a3f9a30fb05a082e132 b/sql/hive/src/test/resources/golden/fileformat_mix-3-2b2316f235737a3f9a30fb05a082e132 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/fileformat_mix-4-fcda187f1366ff93a113cbe670335198 b/sql/hive/src/test/resources/golden/fileformat_mix-4-fcda187f1366ff93a113cbe670335198 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/fileformat_mix-5-c2d0da9a0f01736a2163c99fc667f279 b/sql/hive/src/test/resources/golden/fileformat_mix-5-c2d0da9a0f01736a2163c99fc667f279 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/fileformat_mix-5-c2d0da9a0f01736a2163c99fc667f279 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/fileformat_mix-6-4b658b3222b7a09ef41d023215e5b818 b/sql/hive/src/test/resources/golden/fileformat_mix-6-4b658b3222b7a09ef41d023215e5b818 new file mode 100644 index 0000000000000..d23e05acf7ba5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/fileformat_mix-6-4b658b3222b7a09ef41d023215e5b818 @@ -0,0 +1,500 @@ +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +0 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +0 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +0 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +2 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask-0-5090cca7feb54de047bc535e234bd4a8 b/sql/hive/src/test/resources/golden/filter_join_breaktask-0-5090cca7feb54de047bc535e234bd4a8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask-1-3e3504c67d1ef47c71ea661f647ac4a6 b/sql/hive/src/test/resources/golden/filter_join_breaktask-1-3e3504c67d1ef47c71ea661f647ac4a6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask-2-aa61f4a2dd974ae0df026de640ed5802 b/sql/hive/src/test/resources/golden/filter_join_breaktask-2-aa61f4a2dd974ae0df026de640ed5802 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask-3-550e9b759fb088a81feddeff2e4be64e b/sql/hive/src/test/resources/golden/filter_join_breaktask-3-550e9b759fb088a81feddeff2e4be64e new file mode 100644 index 0000000000000..cc545367b951b --- /dev/null +++ b/sql/hive/src/test/resources/golden/filter_join_breaktask-3-550e9b759fb088a81feddeff2e4be64e @@ -0,0 +1,12 @@ +238 val_238 +311 val_311 +255 val_255 +278 val_278 +98 val_98 +401 val_401 +150 val_150 +273 val_273 +66 val_66 +213 val_213 +146 val_146 +406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-0-db1a6e42b4f880b00b389ae21c7658e1 b/sql/hive/src/test/resources/golden/filter_join_breaktask2-0-db1a6e42b4f880b00b389ae21c7658e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-1-4a7480781402d0ac0a856a46ca3883fd b/sql/hive/src/test/resources/golden/filter_join_breaktask2-1-4a7480781402d0ac0a856a46ca3883fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-10-8dbe2f8cda7ab38b38fc75d0d2413efd b/sql/hive/src/test/resources/golden/filter_join_breaktask2-10-8dbe2f8cda7ab38b38fc75d0d2413efd new file mode 100644 index 0000000000000..140c6590a27fc --- /dev/null +++ b/sql/hive/src/test/resources/golden/filter_join_breaktask2-10-8dbe2f8cda7ab38b38fc75d0d2413efd @@ -0,0 +1 @@ +4 5 0 2010-04-17 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-11-5cc7e24257a1cb4ad0f2fe41c7177370 b/sql/hive/src/test/resources/golden/filter_join_breaktask2-11-5cc7e24257a1cb4ad0f2fe41c7177370 new file mode 100644 index 0000000000000..51f5701ceae46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/filter_join_breaktask2-11-5cc7e24257a1cb4ad0f2fe41c7177370 @@ -0,0 +1 @@ +4 1 1 8 4 5 1 0 9 U 2 2 0 2 1 1 J C A U 2 s 2 NULL NULL NULL NULL NULL NULL 1 j S 6 NULL 1 2 J g 1 e 2 1 2 U P p 3 0 0 0 1 1 1 0 0 0 6 2 j NULL NULL NULL NULL NULL NULL 5 NULL NULL j 2 2 1 2 2 1 1 1 1 1 1 1 1 32 NULL 2010-04-17 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-12-c608f51882260caec7bb9c57a0ba3179 b/sql/hive/src/test/resources/golden/filter_join_breaktask2-12-c608f51882260caec7bb9c57a0ba3179 new file mode 100644 index 0000000000000..69dcc336a73f2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/filter_join_breaktask2-12-c608f51882260caec7bb9c57a0ba3179 @@ -0,0 +1 @@ +5 5 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-2-b8486987aee5bac5f5b7301952e67d0c b/sql/hive/src/test/resources/golden/filter_join_breaktask2-2-b8486987aee5bac5f5b7301952e67d0c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-3-1139b5e7f76614bc03bf0db677ed7d73 b/sql/hive/src/test/resources/golden/filter_join_breaktask2-3-1139b5e7f76614bc03bf0db677ed7d73 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-4-7accb0b0e00dcfd6468a6ff6058bb4e8 b/sql/hive/src/test/resources/golden/filter_join_breaktask2-4-7accb0b0e00dcfd6468a6ff6058bb4e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-5-25f891cf5e9138c14ba8c385c83230ba b/sql/hive/src/test/resources/golden/filter_join_breaktask2-5-25f891cf5e9138c14ba8c385c83230ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-6-4aaf479be27e3f8b38465ea946b530e3 b/sql/hive/src/test/resources/golden/filter_join_breaktask2-6-4aaf479be27e3f8b38465ea946b530e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-7-571467e86d08833eecf5d3e67b41bba6 b/sql/hive/src/test/resources/golden/filter_join_breaktask2-7-571467e86d08833eecf5d3e67b41bba6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-8-604cf64d16b9d438ee187a10d9f6352e b/sql/hive/src/test/resources/golden/filter_join_breaktask2-8-604cf64d16b9d438ee187a10d9f6352e new file mode 100644 index 0000000000000..c0f577c3cd2fd --- /dev/null +++ b/sql/hive/src/test/resources/golden/filter_join_breaktask2-8-604cf64d16b9d438ee187a10d9f6352e @@ -0,0 +1 @@ +5 name NULL 2 kavin NULL 9 c 8 0 0 7 1 2 0 3 2 NULL 1 NULL 3 2 0 0 5 10 2010-04-17 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/filter_join_breaktask2-9-6d551990a8a745dde1cb5244947b81a1 b/sql/hive/src/test/resources/golden/filter_join_breaktask2-9-6d551990a8a745dde1cb5244947b81a1 new file mode 100644 index 0000000000000..e426b4879bcb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/filter_join_breaktask2-9-6d551990a8a745dde1cb5244947b81a1 @@ -0,0 +1 @@ +5 1 1 1 0 0 4 2010-04-17 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby1-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby1-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1-2-f90acd59ace31e16059bae52583188cc b/sql/hive/src/test/resources/golden/groupby1-2-f90acd59ace31e16059bae52583188cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1-3-d57ed4bbfee1ffaffaeba0a4be84c31d b/sql/hive/src/test/resources/golden/groupby1-3-d57ed4bbfee1ffaffaeba0a4be84c31d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1-3-d57ed4bbfee1ffaffaeba0a4be84c31d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1-4-19094f229f8af852ef8dad406333ae08 b/sql/hive/src/test/resources/golden/groupby1-4-19094f229f8af852ef8dad406333ae08 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1-5-dd7bf298b8c921355edd8665c6b0c168 b/sql/hive/src/test/resources/golden/groupby1-5-dd7bf298b8c921355edd8665c6b0c168 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1-5-dd7bf298b8c921355edd8665c6b0c168 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1-6-977359ea0d2f429a9a35bbd8599cddea b/sql/hive/src/test/resources/golden/groupby1-6-977359ea0d2f429a9a35bbd8599cddea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1-7-c2c54378ffce53ade73a9dda783903e7 b/sql/hive/src/test/resources/golden/groupby1-7-c2c54378ffce53ade73a9dda783903e7 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1-7-c2c54378ffce53ade73a9dda783903e7 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby11-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby11-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby11-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby11-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby11-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby11-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby11-2-f06bf6a360c7f9425cffa237f00445d8 b/sql/hive/src/test/resources/golden/groupby11-2-f06bf6a360c7f9425cffa237f00445d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby11-3-f11e9a986df49215fb8aa17aaccc7087 b/sql/hive/src/test/resources/golden/groupby11-3-f11e9a986df49215fb8aa17aaccc7087 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby11-4-1ae3e153888f9ca44e92ef43aea19092 b/sql/hive/src/test/resources/golden/groupby11-4-1ae3e153888f9ca44e92ef43aea19092 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby11-5-a6d0a37db950e5d309ef2b89e9cffe0f b/sql/hive/src/test/resources/golden/groupby11-5-a6d0a37db950e5d309ef2b89e9cffe0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby11-6-686ee4a5b2e24e51ba1d41b42215accd b/sql/hive/src/test/resources/golden/groupby11-6-686ee4a5b2e24e51ba1d41b42215accd new file mode 100644 index 0000000000000..8939d9f8af186 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby11-6-686ee4a5b2e24e51ba1d41b42215accd @@ -0,0 +1,309 @@ +val_0 3 1 111 +val_10 1 1 111 +val_100 2 1 111 +val_103 2 1 111 +val_104 2 1 111 +val_105 1 1 111 +val_11 1 1 111 +val_111 1 1 111 +val_113 2 1 111 +val_114 1 1 111 +val_116 1 1 111 +val_118 2 1 111 +val_119 3 1 111 +val_12 2 1 111 +val_120 2 1 111 +val_125 2 1 111 +val_126 1 1 111 +val_128 3 1 111 +val_129 2 1 111 +val_131 1 1 111 +val_133 1 1 111 +val_134 2 1 111 +val_136 1 1 111 +val_137 2 1 111 +val_138 4 1 111 +val_143 1 1 111 +val_145 1 1 111 +val_146 2 1 111 +val_149 2 1 111 +val_15 2 1 111 +val_150 1 1 111 +val_152 2 1 111 +val_153 1 1 111 +val_155 1 1 111 +val_156 1 1 111 +val_157 1 1 111 +val_158 1 1 111 +val_160 1 1 111 +val_162 1 1 111 +val_163 1 1 111 +val_164 2 1 111 +val_165 2 1 111 +val_166 1 1 111 +val_167 3 1 111 +val_168 1 1 111 +val_169 4 1 111 +val_17 1 1 111 +val_170 1 1 111 +val_172 2 1 111 +val_174 2 1 111 +val_175 2 1 111 +val_176 2 1 111 +val_177 1 1 111 +val_178 1 1 111 +val_179 2 1 111 +val_18 2 1 111 +val_180 1 1 111 +val_181 1 1 111 +val_183 1 1 111 +val_186 1 1 111 +val_187 3 1 111 +val_189 1 1 111 +val_19 1 1 111 +val_190 1 1 111 +val_191 2 1 111 +val_192 1 1 111 +val_193 3 1 111 +val_194 1 1 111 +val_195 2 1 111 +val_196 1 1 111 +val_197 2 1 111 +val_199 3 1 111 +val_2 1 1 111 +val_20 1 1 111 +val_200 2 1 111 +val_201 1 1 111 +val_202 1 1 111 +val_203 2 1 111 +val_205 2 1 111 +val_207 2 1 111 +val_208 3 1 111 +val_209 2 1 111 +val_213 2 1 111 +val_214 1 1 111 +val_216 2 1 111 +val_217 2 1 111 +val_218 1 1 111 +val_219 2 1 111 +val_221 2 1 111 +val_222 1 1 111 +val_223 2 1 111 +val_224 2 1 111 +val_226 1 1 111 +val_228 1 1 111 +val_229 2 1 111 +val_230 5 1 111 +val_233 2 1 111 +val_235 1 1 111 +val_237 2 1 111 +val_238 2 1 111 +val_239 2 1 111 +val_24 2 1 111 +val_241 1 1 111 +val_242 2 1 111 +val_244 1 1 111 +val_247 1 1 111 +val_248 1 1 111 +val_249 1 1 111 +val_252 1 1 111 +val_255 2 1 111 +val_256 2 1 111 +val_257 1 1 111 +val_258 1 1 111 +val_26 2 1 111 +val_260 1 1 111 +val_262 1 1 111 +val_263 1 1 111 +val_265 2 1 111 +val_266 1 1 111 +val_27 1 1 111 +val_272 2 1 111 +val_273 3 1 111 +val_274 1 1 111 +val_275 1 1 111 +val_277 4 1 111 +val_278 2 1 111 +val_28 1 1 111 +val_280 2 1 111 +val_281 2 1 111 +val_282 2 1 111 +val_283 1 1 111 +val_284 1 1 111 +val_285 1 1 111 +val_286 1 1 111 +val_287 1 1 111 +val_288 2 1 111 +val_289 1 1 111 +val_291 1 1 111 +val_292 1 1 111 +val_296 1 1 111 +val_298 3 1 111 +val_30 1 1 111 +val_302 1 1 111 +val_305 1 1 111 +val_306 1 1 111 +val_307 2 1 111 +val_308 1 1 111 +val_309 2 1 111 +val_310 1 1 111 +val_311 3 1 111 +val_315 1 1 111 +val_316 3 1 111 +val_317 2 1 111 +val_318 3 1 111 +val_321 2 1 111 +val_322 2 1 111 +val_323 1 1 111 +val_325 2 1 111 +val_327 3 1 111 +val_33 1 1 111 +val_331 2 1 111 +val_332 1 1 111 +val_333 2 1 111 +val_335 1 1 111 +val_336 1 1 111 +val_338 1 1 111 +val_339 1 1 111 +val_34 1 1 111 +val_341 1 1 111 +val_342 2 1 111 +val_344 2 1 111 +val_345 1 1 111 +val_348 5 1 111 +val_35 3 1 111 +val_351 1 1 111 +val_353 2 1 111 +val_356 1 1 111 +val_360 1 1 111 +val_362 1 1 111 +val_364 1 1 111 +val_365 1 1 111 +val_366 1 1 111 +val_367 2 1 111 +val_368 1 1 111 +val_369 3 1 111 +val_37 2 1 111 +val_373 1 1 111 +val_374 1 1 111 +val_375 1 1 111 +val_377 1 1 111 +val_378 1 1 111 +val_379 1 1 111 +val_382 2 1 111 +val_384 3 1 111 +val_386 1 1 111 +val_389 1 1 111 +val_392 1 1 111 +val_393 1 1 111 +val_394 1 1 111 +val_395 2 1 111 +val_396 3 1 111 +val_397 2 1 111 +val_399 2 1 111 +val_4 1 1 111 +val_400 1 1 111 +val_401 5 1 111 +val_402 1 1 111 +val_403 3 1 111 +val_404 2 1 111 +val_406 4 1 111 +val_407 1 1 111 +val_409 3 1 111 +val_41 1 1 111 +val_411 1 1 111 +val_413 2 1 111 +val_414 2 1 111 +val_417 3 1 111 +val_418 1 1 111 +val_419 1 1 111 +val_42 2 1 111 +val_421 1 1 111 +val_424 2 1 111 +val_427 1 1 111 +val_429 2 1 111 +val_43 1 1 111 +val_430 3 1 111 +val_431 3 1 111 +val_432 1 1 111 +val_435 1 1 111 +val_436 1 1 111 +val_437 1 1 111 +val_438 3 1 111 +val_439 2 1 111 +val_44 1 1 111 +val_443 1 1 111 +val_444 1 1 111 +val_446 1 1 111 +val_448 1 1 111 +val_449 1 1 111 +val_452 1 1 111 +val_453 1 1 111 +val_454 3 1 111 +val_455 1 1 111 +val_457 1 1 111 +val_458 2 1 111 +val_459 2 1 111 +val_460 1 1 111 +val_462 2 1 111 +val_463 2 1 111 +val_466 3 1 111 +val_467 1 1 111 +val_468 4 1 111 +val_469 5 1 111 +val_47 1 1 111 +val_470 1 1 111 +val_472 1 1 111 +val_475 1 1 111 +val_477 1 1 111 +val_478 2 1 111 +val_479 1 1 111 +val_480 3 1 111 +val_481 1 1 111 +val_482 1 1 111 +val_483 1 1 111 +val_484 1 1 111 +val_485 1 1 111 +val_487 1 1 111 +val_489 4 1 111 +val_490 1 1 111 +val_491 1 1 111 +val_492 2 1 111 +val_493 1 1 111 +val_494 1 1 111 +val_495 1 1 111 +val_496 1 1 111 +val_497 1 1 111 +val_498 3 1 111 +val_5 3 1 111 +val_51 2 1 111 +val_53 1 1 111 +val_54 1 1 111 +val_57 1 1 111 +val_58 2 1 111 +val_64 1 1 111 +val_65 1 1 111 +val_66 1 1 111 +val_67 2 1 111 +val_69 1 1 111 +val_70 3 1 111 +val_72 2 1 111 +val_74 1 1 111 +val_76 2 1 111 +val_77 1 1 111 +val_78 1 1 111 +val_8 1 1 111 +val_80 1 1 111 +val_82 1 1 111 +val_83 2 1 111 +val_84 2 1 111 +val_85 1 1 111 +val_86 1 1 111 +val_87 1 1 111 +val_9 1 1 111 +val_90 3 1 111 +val_92 1 1 111 +val_95 2 1 111 +val_96 1 1 111 +val_97 2 1 111 +val_98 2 1 111 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby11-7-149d359546ab38226ffeb023d7414b3d b/sql/hive/src/test/resources/golden/groupby11-7-149d359546ab38226ffeb023d7414b3d new file mode 100644 index 0000000000000..82a0329b4d459 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby11-7-149d359546ab38226ffeb023d7414b3d @@ -0,0 +1,309 @@ +0 3 1 111 +10 1 1 111 +100 2 1 111 +103 2 1 111 +104 2 1 111 +105 1 1 111 +11 1 1 111 +111 1 1 111 +113 2 1 111 +114 1 1 111 +116 1 1 111 +118 2 1 111 +119 3 1 111 +12 2 1 111 +120 2 1 111 +125 2 1 111 +126 1 1 111 +128 3 1 111 +129 2 1 111 +131 1 1 111 +133 1 1 111 +134 2 1 111 +136 1 1 111 +137 2 1 111 +138 4 1 111 +143 1 1 111 +145 1 1 111 +146 2 1 111 +149 2 1 111 +15 2 1 111 +150 1 1 111 +152 2 1 111 +153 1 1 111 +155 1 1 111 +156 1 1 111 +157 1 1 111 +158 1 1 111 +160 1 1 111 +162 1 1 111 +163 1 1 111 +164 2 1 111 +165 2 1 111 +166 1 1 111 +167 3 1 111 +168 1 1 111 +169 4 1 111 +17 1 1 111 +170 1 1 111 +172 2 1 111 +174 2 1 111 +175 2 1 111 +176 2 1 111 +177 1 1 111 +178 1 1 111 +179 2 1 111 +18 2 1 111 +180 1 1 111 +181 1 1 111 +183 1 1 111 +186 1 1 111 +187 3 1 111 +189 1 1 111 +19 1 1 111 +190 1 1 111 +191 2 1 111 +192 1 1 111 +193 3 1 111 +194 1 1 111 +195 2 1 111 +196 1 1 111 +197 2 1 111 +199 3 1 111 +2 1 1 111 +20 1 1 111 +200 2 1 111 +201 1 1 111 +202 1 1 111 +203 2 1 111 +205 2 1 111 +207 2 1 111 +208 3 1 111 +209 2 1 111 +213 2 1 111 +214 1 1 111 +216 2 1 111 +217 2 1 111 +218 1 1 111 +219 2 1 111 +221 2 1 111 +222 1 1 111 +223 2 1 111 +224 2 1 111 +226 1 1 111 +228 1 1 111 +229 2 1 111 +230 5 1 111 +233 2 1 111 +235 1 1 111 +237 2 1 111 +238 2 1 111 +239 2 1 111 +24 2 1 111 +241 1 1 111 +242 2 1 111 +244 1 1 111 +247 1 1 111 +248 1 1 111 +249 1 1 111 +252 1 1 111 +255 2 1 111 +256 2 1 111 +257 1 1 111 +258 1 1 111 +26 2 1 111 +260 1 1 111 +262 1 1 111 +263 1 1 111 +265 2 1 111 +266 1 1 111 +27 1 1 111 +272 2 1 111 +273 3 1 111 +274 1 1 111 +275 1 1 111 +277 4 1 111 +278 2 1 111 +28 1 1 111 +280 2 1 111 +281 2 1 111 +282 2 1 111 +283 1 1 111 +284 1 1 111 +285 1 1 111 +286 1 1 111 +287 1 1 111 +288 2 1 111 +289 1 1 111 +291 1 1 111 +292 1 1 111 +296 1 1 111 +298 3 1 111 +30 1 1 111 +302 1 1 111 +305 1 1 111 +306 1 1 111 +307 2 1 111 +308 1 1 111 +309 2 1 111 +310 1 1 111 +311 3 1 111 +315 1 1 111 +316 3 1 111 +317 2 1 111 +318 3 1 111 +321 2 1 111 +322 2 1 111 +323 1 1 111 +325 2 1 111 +327 3 1 111 +33 1 1 111 +331 2 1 111 +332 1 1 111 +333 2 1 111 +335 1 1 111 +336 1 1 111 +338 1 1 111 +339 1 1 111 +34 1 1 111 +341 1 1 111 +342 2 1 111 +344 2 1 111 +345 1 1 111 +348 5 1 111 +35 3 1 111 +351 1 1 111 +353 2 1 111 +356 1 1 111 +360 1 1 111 +362 1 1 111 +364 1 1 111 +365 1 1 111 +366 1 1 111 +367 2 1 111 +368 1 1 111 +369 3 1 111 +37 2 1 111 +373 1 1 111 +374 1 1 111 +375 1 1 111 +377 1 1 111 +378 1 1 111 +379 1 1 111 +382 2 1 111 +384 3 1 111 +386 1 1 111 +389 1 1 111 +392 1 1 111 +393 1 1 111 +394 1 1 111 +395 2 1 111 +396 3 1 111 +397 2 1 111 +399 2 1 111 +4 1 1 111 +400 1 1 111 +401 5 1 111 +402 1 1 111 +403 3 1 111 +404 2 1 111 +406 4 1 111 +407 1 1 111 +409 3 1 111 +41 1 1 111 +411 1 1 111 +413 2 1 111 +414 2 1 111 +417 3 1 111 +418 1 1 111 +419 1 1 111 +42 2 1 111 +421 1 1 111 +424 2 1 111 +427 1 1 111 +429 2 1 111 +43 1 1 111 +430 3 1 111 +431 3 1 111 +432 1 1 111 +435 1 1 111 +436 1 1 111 +437 1 1 111 +438 3 1 111 +439 2 1 111 +44 1 1 111 +443 1 1 111 +444 1 1 111 +446 1 1 111 +448 1 1 111 +449 1 1 111 +452 1 1 111 +453 1 1 111 +454 3 1 111 +455 1 1 111 +457 1 1 111 +458 2 1 111 +459 2 1 111 +460 1 1 111 +462 2 1 111 +463 2 1 111 +466 3 1 111 +467 1 1 111 +468 4 1 111 +469 5 1 111 +47 1 1 111 +470 1 1 111 +472 1 1 111 +475 1 1 111 +477 1 1 111 +478 2 1 111 +479 1 1 111 +480 3 1 111 +481 1 1 111 +482 1 1 111 +483 1 1 111 +484 1 1 111 +485 1 1 111 +487 1 1 111 +489 4 1 111 +490 1 1 111 +491 1 1 111 +492 2 1 111 +493 1 1 111 +494 1 1 111 +495 1 1 111 +496 1 1 111 +497 1 1 111 +498 3 1 111 +5 3 1 111 +51 2 1 111 +53 1 1 111 +54 1 1 111 +57 1 1 111 +58 2 1 111 +64 1 1 111 +65 1 1 111 +66 1 1 111 +67 2 1 111 +69 1 1 111 +70 3 1 111 +72 2 1 111 +74 1 1 111 +76 2 1 111 +77 1 1 111 +78 1 1 111 +8 1 1 111 +80 1 1 111 +82 1 1 111 +83 2 1 111 +84 2 1 111 +85 1 1 111 +86 1 1 111 +87 1 1 111 +9 1 1 111 +90 3 1 111 +92 1 1 111 +95 2 1 111 +96 1 1 111 +97 2 1 111 +98 2 1 111 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_limit-0-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby1_limit-0-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_limit-0-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_limit-1-647cd470ff311f1879243a6e7f1e7bf6 b/sql/hive/src/test/resources/golden/groupby1_limit-1-647cd470ff311f1879243a6e7f1e7bf6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_limit-2-e8f9567aa6dd201dd22db10fe7e8e082 b/sql/hive/src/test/resources/golden/groupby1_limit-2-e8f9567aa6dd201dd22db10fe7e8e082 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_limit-3-deff149e2f91d6d605a3dccf1ca8bdd5 b/sql/hive/src/test/resources/golden/groupby1_limit-3-deff149e2f91d6d605a3dccf1ca8bdd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_limit-4-7a5ee36a377f0869bcb8c29c2391caa2 b/sql/hive/src/test/resources/golden/groupby1_limit-4-7a5ee36a377f0869bcb8c29c2391caa2 new file mode 100644 index 0000000000000..9cf9606d751ac --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_limit-4-7a5ee36a377f0869bcb8c29c2391caa2 @@ -0,0 +1,5 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby1_map-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby1_map-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby1_map-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map-3-647cd470ff311f1879243a6e7f1e7bf6 b/sql/hive/src/test/resources/golden/groupby1_map-3-647cd470ff311f1879243a6e7f1e7bf6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map-4-330a40b8e19028bbb370adf219f469fe b/sql/hive/src/test/resources/golden/groupby1_map-4-330a40b8e19028bbb370adf219f469fe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map-5-40f5168bfd9d124165bd207543b68a28 b/sql/hive/src/test/resources/golden/groupby1_map-5-40f5168bfd9d124165bd207543b68a28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby1_map-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map_nomap-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby1_map_nomap-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map_nomap-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map_nomap-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby1_map_nomap-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map_nomap-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map_nomap-2-fb2713a701e7e9c3fa36b5459d772f4 b/sql/hive/src/test/resources/golden/groupby1_map_nomap-2-fb2713a701e7e9c3fa36b5459d772f4 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map_nomap-2-fb2713a701e7e9c3fa36b5459d772f4 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map_nomap-3-647cd470ff311f1879243a6e7f1e7bf6 b/sql/hive/src/test/resources/golden/groupby1_map_nomap-3-647cd470ff311f1879243a6e7f1e7bf6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map_nomap-4-330a40b8e19028bbb370adf219f469fe b/sql/hive/src/test/resources/golden/groupby1_map_nomap-4-330a40b8e19028bbb370adf219f469fe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map_nomap-5-40f5168bfd9d124165bd207543b68a28 b/sql/hive/src/test/resources/golden/groupby1_map_nomap-5-40f5168bfd9d124165bd207543b68a28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map_nomap-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby1_map_nomap-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map_nomap-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map_skew-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby1_map_skew-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map_skew-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map_skew-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby1_map_skew-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map_skew-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map_skew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby1_map_skew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map_skew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_map_skew-3-647cd470ff311f1879243a6e7f1e7bf6 b/sql/hive/src/test/resources/golden/groupby1_map_skew-3-647cd470ff311f1879243a6e7f1e7bf6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map_skew-4-330a40b8e19028bbb370adf219f469fe b/sql/hive/src/test/resources/golden/groupby1_map_skew-4-330a40b8e19028bbb370adf219f469fe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map_skew-5-40f5168bfd9d124165bd207543b68a28 b/sql/hive/src/test/resources/golden/groupby1_map_skew-5-40f5168bfd9d124165bd207543b68a28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby1_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby1_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_noskew-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby1_noskew-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_noskew-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_noskew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby1_noskew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_noskew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby1_noskew-3-f90acd59ace31e16059bae52583188cc b/sql/hive/src/test/resources/golden/groupby1_noskew-3-f90acd59ace31e16059bae52583188cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_noskew-4-19094f229f8af852ef8dad406333ae08 b/sql/hive/src/test/resources/golden/groupby1_noskew-4-19094f229f8af852ef8dad406333ae08 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_noskew-5-977359ea0d2f429a9a35bbd8599cddea b/sql/hive/src/test/resources/golden/groupby1_noskew-5-977359ea0d2f429a9a35bbd8599cddea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby1_noskew-6-c2c54378ffce53ade73a9dda783903e7 b/sql/hive/src/test/resources/golden/groupby1_noskew-6-c2c54378ffce53ade73a9dda783903e7 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby1_noskew-6-c2c54378ffce53ade73a9dda783903e7 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2-0-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/groupby2-0-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2-0-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2-1-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby2-1-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2-1-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2-2-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby2-2-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2-2-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2-3-6b5d354a5a81c0171c3cc8d553bfdb9b b/sql/hive/src/test/resources/golden/groupby2-3-6b5d354a5a81c0171c3cc8d553bfdb9b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2-4-67a2618eb44e68e6d8cf8792ded802f7 b/sql/hive/src/test/resources/golden/groupby2-4-67a2618eb44e68e6d8cf8792ded802f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2-5-c0660310e5d882732d07cb76bc0a7939 b/sql/hive/src/test/resources/golden/groupby2-5-c0660310e5d882732d07cb76bc0a7939 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2-6-41dfb7b036cae4972b275a0262ea2e4c b/sql/hive/src/test/resources/golden/groupby2-6-41dfb7b036cae4972b275a0262ea2e4c new file mode 100644 index 0000000000000..3210a3048ff48 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2-6-41dfb7b036cae4972b275a0262ea2e4c @@ -0,0 +1,10 @@ +0 1 00.0 +1 71 116414.0 +2 69 225571.0 +3 62 332004.0 +4 74 452763.0 +5 6 5397.0 +6 5 6398.0 +7 6 7735.0 +8 8 8762.0 +9 7 91047.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_limit-0-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby2_limit-0-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_limit-0-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_limit-1-d6db5e2b44be5a3927eab70e4cf60c70 b/sql/hive/src/test/resources/golden/groupby2_limit-1-d6db5e2b44be5a3927eab70e4cf60c70 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_limit-2-3460130ddc7cd91c0b1d5ce2ff98d0b9 b/sql/hive/src/test/resources/golden/groupby2_limit-2-3460130ddc7cd91c0b1d5ce2ff98d0b9 new file mode 100644 index 0000000000000..9cf9606d751ac --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_limit-2-3460130ddc7cd91c0b1d5ce2ff98d0b9 @@ -0,0 +1,5 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_map-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby2_map-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_map-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby2_map-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_map-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby2_map-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_map-3-1c0aa77190a5b3e1895e58cfbe7467a9 b/sql/hive/src/test/resources/golden/groupby2_map-3-1c0aa77190a5b3e1895e58cfbe7467a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map-4-e193b8c0a9e1731dd46b145d166c78a7 b/sql/hive/src/test/resources/golden/groupby2_map-4-e193b8c0a9e1731dd46b145d166c78a7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map-5-ce0965adac15c4da6526d433d17ebc0 b/sql/hive/src/test/resources/golden/groupby2_map-5-ce0965adac15c4da6526d433d17ebc0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby2_map-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..3210a3048ff48 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 1 00.0 +1 71 116414.0 +2 69 225571.0 +3 62 332004.0 +4 74 452763.0 +5 6 5397.0 +6 5 6398.0 +7 6 7735.0 +8 8 8762.0 +9 7 91047.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-3-3aa4057488720c0f514696154f2070b5 b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-3-3aa4057488720c0f514696154f2070b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-4-485f8328cdc8639bcdea5fb9f58c8695 b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-4-485f8328cdc8639bcdea5fb9f58c8695 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-5-23478129b7b6e377dcfb7caaa17dfb48 b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-5-23478129b7b6e377dcfb7caaa17dfb48 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..922f4bfc83e44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map_multi_distinct-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 1 00.0 0 3 +1 71 116414.0 10044 115 +2 69 225571.0 15780 111 +3 62 332004.0 20119 99 +4 74 452763.0 30965 124 +5 6 5397.0 278 10 +6 5 6398.0 331 6 +7 6 7735.0 447 10 +8 8 8762.0 595 10 +9 7 91047.0 577 12 diff --git a/sql/hive/src/test/resources/golden/groupby2_map_skew-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby2_map_skew-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map_skew-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_map_skew-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby2_map_skew-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map_skew-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_map_skew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby2_map_skew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map_skew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_map_skew-3-1c0aa77190a5b3e1895e58cfbe7467a9 b/sql/hive/src/test/resources/golden/groupby2_map_skew-3-1c0aa77190a5b3e1895e58cfbe7467a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map_skew-4-e193b8c0a9e1731dd46b145d166c78a7 b/sql/hive/src/test/resources/golden/groupby2_map_skew-4-e193b8c0a9e1731dd46b145d166c78a7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map_skew-5-ce0965adac15c4da6526d433d17ebc0 b/sql/hive/src/test/resources/golden/groupby2_map_skew-5-ce0965adac15c4da6526d433d17ebc0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby2_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..3210a3048ff48 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 1 00.0 +1 71 116414.0 +2 69 225571.0 +3 62 332004.0 +4 74 452763.0 +5 6 5397.0 +6 5 6398.0 +7 6 7735.0 +8 8 8762.0 +9 7 91047.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby2_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby2_noskew-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_noskew-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby2_noskew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_noskew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew-3-6b5d354a5a81c0171c3cc8d553bfdb9b b/sql/hive/src/test/resources/golden/groupby2_noskew-3-6b5d354a5a81c0171c3cc8d553bfdb9b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew-4-67a2618eb44e68e6d8cf8792ded802f7 b/sql/hive/src/test/resources/golden/groupby2_noskew-4-67a2618eb44e68e6d8cf8792ded802f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew-5-c0660310e5d882732d07cb76bc0a7939 b/sql/hive/src/test/resources/golden/groupby2_noskew-5-c0660310e5d882732d07cb76bc0a7939 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew-6-41dfb7b036cae4972b275a0262ea2e4c b/sql/hive/src/test/resources/golden/groupby2_noskew-6-41dfb7b036cae4972b275a0262ea2e4c new file mode 100644 index 0000000000000..3210a3048ff48 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_noskew-6-41dfb7b036cae4972b275a0262ea2e4c @@ -0,0 +1,10 @@ +0 1 00.0 +1 71 116414.0 +2 69 225571.0 +3 62 332004.0 +4 74 452763.0 +5 6 5397.0 +6 5 6398.0 +7 6 7735.0 +8 8 8762.0 +9 7 91047.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-3-f64b982c4bf34931f03447e635ae33d2 b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-3-f64b982c4bf34931f03447e635ae33d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-4-2115f3e7d207621ce2b07b6e33563844 b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-4-2115f3e7d207621ce2b07b6e33563844 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-5-92891db0de9b8cd00892f0a790aff494 b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-5-92891db0de9b8cd00892f0a790aff494 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-6-41dfb7b036cae4972b275a0262ea2e4c b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-6-41dfb7b036cae4972b275a0262ea2e4c new file mode 100644 index 0000000000000..922f4bfc83e44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby2_noskew_multi_distinct-6-41dfb7b036cae4972b275a0262ea2e4c @@ -0,0 +1,10 @@ +0 1 00.0 0 3 +1 71 116414.0 10044 115 +2 69 225571.0 15780 111 +3 62 332004.0 20119 99 +4 74 452763.0 30965 124 +5 6 5397.0 278 10 +6 5 6398.0 331 6 +7 6 7735.0 447 10 +8 8 8762.0 595 10 +9 7 91047.0 577 12 diff --git a/sql/hive/src/test/resources/golden/groupby4-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby4-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby4-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4-2-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/groupby4-2-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4-3-132eabb30b8d011c848c531a6ab54529 b/sql/hive/src/test/resources/golden/groupby4-3-132eabb30b8d011c848c531a6ab54529 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4-4-ac19a9a7f4a16763bfe7998179257933 b/sql/hive/src/test/resources/golden/groupby4-4-ac19a9a7f4a16763bfe7998179257933 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4-5-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby4-5-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..f55b5c9eef39f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4-5-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_map-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby4_map-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_map-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_map-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby4_map-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_map-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_map-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby4_map-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_map-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_map-3-840759680be77463c13e4b19b2c1eb04 b/sql/hive/src/test/resources/golden/groupby4_map-3-840759680be77463c13e4b19b2c1eb04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_map-4-19182d5780c4632c5bf8effdd5c7f36b b/sql/hive/src/test/resources/golden/groupby4_map-4-19182d5780c4632c5bf8effdd5c7f36b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_map-5-c0117072e2d392e3f860456d0226b7b9 b/sql/hive/src/test/resources/golden/groupby4_map-5-c0117072e2d392e3f860456d0226b7b9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_map-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby4_map-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_map-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_map_skew-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby4_map_skew-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_map_skew-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_map_skew-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby4_map_skew-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_map_skew-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_map_skew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby4_map_skew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_map_skew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_map_skew-3-840759680be77463c13e4b19b2c1eb04 b/sql/hive/src/test/resources/golden/groupby4_map_skew-3-840759680be77463c13e4b19b2c1eb04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_map_skew-4-19182d5780c4632c5bf8effdd5c7f36b b/sql/hive/src/test/resources/golden/groupby4_map_skew-4-19182d5780c4632c5bf8effdd5c7f36b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_map_skew-5-c0117072e2d392e3f860456d0226b7b9 b/sql/hive/src/test/resources/golden/groupby4_map_skew-5-c0117072e2d392e3f860456d0226b7b9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby4_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby4_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_noskew-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby4_noskew-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_noskew-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_noskew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby4_noskew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_noskew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby4_noskew-3-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/groupby4_noskew-3-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_noskew-4-132eabb30b8d011c848c531a6ab54529 b/sql/hive/src/test/resources/golden/groupby4_noskew-4-132eabb30b8d011c848c531a6ab54529 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_noskew-5-ac19a9a7f4a16763bfe7998179257933 b/sql/hive/src/test/resources/golden/groupby4_noskew-5-ac19a9a7f4a16763bfe7998179257933 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby4_noskew-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby4_noskew-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..f55b5c9eef39f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby4_noskew-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby5-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby5-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5-2-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/groupby5-2-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5-3-a773aeb40af0516f2527f8e9d6907420 b/sql/hive/src/test/resources/golden/groupby5-3-a773aeb40af0516f2527f8e9d6907420 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5-4-c4570c2676d599793e1e9ece32aa596e b/sql/hive/src/test/resources/golden/groupby5-4-c4570c2676d599793e1e9ece32aa596e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5-5-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby5-5-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5-5-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_map-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby5_map-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_map-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_map-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby5_map-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_map-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_map-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby5_map-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_map-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_map-3-840759680be77463c13e4b19b2c1eb04 b/sql/hive/src/test/resources/golden/groupby5_map-3-840759680be77463c13e4b19b2c1eb04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_map-4-7b0346bd80d9833f2eccf8365b53d80f b/sql/hive/src/test/resources/golden/groupby5_map-4-7b0346bd80d9833f2eccf8365b53d80f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_map-5-586dc4493f66ea612a1d5b3cda89d725 b/sql/hive/src/test/resources/golden/groupby5_map-5-586dc4493f66ea612a1d5b3cda89d725 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_map-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby5_map-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..349d8b75d942b --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_map-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1 @@ +130091 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_map_skew-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby5_map_skew-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_map_skew-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_map_skew-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby5_map_skew-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_map_skew-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_map_skew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby5_map_skew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_map_skew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_map_skew-3-840759680be77463c13e4b19b2c1eb04 b/sql/hive/src/test/resources/golden/groupby5_map_skew-3-840759680be77463c13e4b19b2c1eb04 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_map_skew-4-7b0346bd80d9833f2eccf8365b53d80f b/sql/hive/src/test/resources/golden/groupby5_map_skew-4-7b0346bd80d9833f2eccf8365b53d80f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_map_skew-5-586dc4493f66ea612a1d5b3cda89d725 b/sql/hive/src/test/resources/golden/groupby5_map_skew-5-586dc4493f66ea612a1d5b3cda89d725 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby5_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..349d8b75d942b --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1 @@ +130091 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby5_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_noskew-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby5_noskew-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_noskew-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_noskew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby5_noskew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_noskew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby5_noskew-3-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/groupby5_noskew-3-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_noskew-4-a773aeb40af0516f2527f8e9d6907420 b/sql/hive/src/test/resources/golden/groupby5_noskew-4-a773aeb40af0516f2527f8e9d6907420 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_noskew-5-c4570c2676d599793e1e9ece32aa596e b/sql/hive/src/test/resources/golden/groupby5_noskew-5-c4570c2676d599793e1e9ece32aa596e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby5_noskew-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby5_noskew-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby5_noskew-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby6-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby6-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6-2-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/groupby6-2-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6-3-ae61517a9997b80d512a9089cdb71fac b/sql/hive/src/test/resources/golden/groupby6-3-ae61517a9997b80d512a9089cdb71fac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6-4-3f468a119e7975110b4063adb42c7dd9 b/sql/hive/src/test/resources/golden/groupby6-4-3f468a119e7975110b4063adb42c7dd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6-5-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby6-5-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..f55b5c9eef39f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6-5-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_map-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby6_map-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_map-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_map-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby6_map-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_map-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_map-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby6_map-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_map-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_map-3-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/groupby6_map-3-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_map-4-ae61517a9997b80d512a9089cdb71fac b/sql/hive/src/test/resources/golden/groupby6_map-4-ae61517a9997b80d512a9089cdb71fac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_map-5-3f468a119e7975110b4063adb42c7dd9 b/sql/hive/src/test/resources/golden/groupby6_map-5-3f468a119e7975110b4063adb42c7dd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_map-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby6_map-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..f55b5c9eef39f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_map-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_map_skew-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby6_map_skew-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_map_skew-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_map_skew-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby6_map_skew-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_map_skew-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_map_skew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby6_map_skew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_map_skew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_map_skew-3-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/groupby6_map_skew-3-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_map_skew-4-ae61517a9997b80d512a9089cdb71fac b/sql/hive/src/test/resources/golden/groupby6_map_skew-4-ae61517a9997b80d512a9089cdb71fac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_map_skew-5-3f468a119e7975110b4063adb42c7dd9 b/sql/hive/src/test/resources/golden/groupby6_map_skew-5-3f468a119e7975110b4063adb42c7dd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby6_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..f55b5c9eef39f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_map_skew-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby6_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_noskew-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby6_noskew-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_noskew-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_noskew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby6_noskew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_noskew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby6_noskew-3-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/groupby6_noskew-3-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_noskew-4-ae61517a9997b80d512a9089cdb71fac b/sql/hive/src/test/resources/golden/groupby6_noskew-4-ae61517a9997b80d512a9089cdb71fac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_noskew-5-3f468a119e7975110b4063adb42c7dd9 b/sql/hive/src/test/resources/golden/groupby6_noskew-5-3f468a119e7975110b4063adb42c7dd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby6_noskew-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby6_noskew-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..f55b5c9eef39f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby6_noskew-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby7-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby7-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7-2-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby7-2-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7-3-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby7-3-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7-4-9d01ff3d1fde3ed2ab55ea9d7079fd5c b/sql/hive/src/test/resources/golden/groupby7-4-9d01ff3d1fde3ed2ab55ea9d7079fd5c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7-4-9d01ff3d1fde3ed2ab55ea9d7079fd5c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7-5-ed76c0068780120a6f23feefee303403 b/sql/hive/src/test/resources/golden/groupby7-5-ed76c0068780120a6f23feefee303403 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7-5-ed76c0068780120a6f23feefee303403 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7-6-b2af91348c5fa9605702be50983c3bd2 b/sql/hive/src/test/resources/golden/groupby7-6-b2af91348c5fa9605702be50983c3bd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby7-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7-8-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby7-8-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7-8-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby7_map-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-1-7f98b724df05f51b3ec1f087a8da414e b/sql/hive/src/test/resources/golden/groupby7_map-1-7f98b724df05f51b3ec1f087a8da414e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map-1-7f98b724df05f51b3ec1f087a8da414e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-10-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby7_map-10-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map-10-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-11-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby7_map-11-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map-11-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-2-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby7_map-2-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map-2-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-3-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby7_map-3-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map-3-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-4-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby7_map-4-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map-5-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby7_map-5-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map-6-9d01ff3d1fde3ed2ab55ea9d7079fd5c b/sql/hive/src/test/resources/golden/groupby7_map-6-9d01ff3d1fde3ed2ab55ea9d7079fd5c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map-6-9d01ff3d1fde3ed2ab55ea9d7079fd5c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-7-ed76c0068780120a6f23feefee303403 b/sql/hive/src/test/resources/golden/groupby7_map-7-ed76c0068780120a6f23feefee303403 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map-7-ed76c0068780120a6f23feefee303403 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map-8-409f355bf35dfaa8b9e643510c58fabd b/sql/hive/src/test/resources/golden/groupby7_map-8-409f355bf35dfaa8b9e643510c58fabd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map-9-b2af91348c5fa9605702be50983c3bd2 b/sql/hive/src/test/resources/golden/groupby7_map-9-b2af91348c5fa9605702be50983c3bd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-10-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-10-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-10-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-3-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-3-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-4-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-4-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-6-ed76c0068780120a6f23feefee303403 b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-6-ed76c0068780120a6f23feefee303403 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-6-ed76c0068780120a6f23feefee303403 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-7-409f355bf35dfaa8b9e643510c58fabd b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-7-409f355bf35dfaa8b9e643510c58fabd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-8-b2af91348c5fa9605702be50983c3bd2 b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-8-b2af91348c5fa9605702be50983c3bd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-9-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-9-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_multi_single_reducer-9-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby7_map_skew-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_skew-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby7_map_skew-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_skew-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-10-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby7_map_skew-10-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_skew-10-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby7_map_skew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_skew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-3-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby7_map_skew-3-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-4-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby7_map_skew-4-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c b/sql/hive/src/test/resources/golden/groupby7_map_skew-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_skew-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-6-ed76c0068780120a6f23feefee303403 b/sql/hive/src/test/resources/golden/groupby7_map_skew-6-ed76c0068780120a6f23feefee303403 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_skew-6-ed76c0068780120a6f23feefee303403 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-7-409f355bf35dfaa8b9e643510c58fabd b/sql/hive/src/test/resources/golden/groupby7_map_skew-7-409f355bf35dfaa8b9e643510c58fabd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-8-b2af91348c5fa9605702be50983c3bd2 b/sql/hive/src/test/resources/golden/groupby7_map_skew-8-b2af91348c5fa9605702be50983c3bd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_map_skew-9-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby7_map_skew-9-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_map_skew-9-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby7_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-1-7f98b724df05f51b3ec1f087a8da414e b/sql/hive/src/test/resources/golden/groupby7_noskew-1-7f98b724df05f51b3ec1f087a8da414e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew-1-7f98b724df05f51b3ec1f087a8da414e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-10-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby7_noskew-10-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew-10-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-11-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby7_noskew-11-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..339756be98e73 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew-11-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 +17 17.0 +18 36.0 +19 19.0 +20 20.0 +24 48.0 +26 52.0 +27 27.0 +28 28.0 +30 30.0 +33 33.0 +34 34.0 +35 105.0 +37 74.0 +41 41.0 +42 84.0 +43 43.0 +44 44.0 +47 47.0 +51 102.0 +53 53.0 +54 54.0 +57 57.0 +58 116.0 +64 64.0 +65 65.0 +66 66.0 +67 134.0 +69 69.0 +70 210.0 +72 144.0 +74 74.0 +76 152.0 +77 77.0 +78 78.0 +80 80.0 +82 82.0 +83 166.0 +84 168.0 +85 85.0 +86 86.0 +87 87.0 +90 270.0 +92 92.0 +95 190.0 +96 96.0 +97 194.0 +98 196.0 +100 200.0 +103 206.0 +104 208.0 +105 105.0 +111 111.0 +113 226.0 +114 114.0 +116 116.0 +118 236.0 +119 357.0 +120 240.0 +125 250.0 +126 126.0 +128 384.0 +129 258.0 +131 131.0 +133 133.0 +134 268.0 +136 136.0 +137 274.0 +138 552.0 +143 143.0 +145 145.0 +146 292.0 +149 298.0 +150 150.0 +152 304.0 +153 153.0 +155 155.0 +156 156.0 +157 157.0 +158 158.0 +160 160.0 +162 162.0 +163 163.0 +164 328.0 +165 330.0 +166 166.0 +167 501.0 +168 168.0 +169 676.0 +170 170.0 +172 344.0 +174 348.0 +175 350.0 +176 352.0 +177 177.0 +178 178.0 +179 358.0 +180 180.0 +181 181.0 +183 183.0 +186 186.0 +187 561.0 +189 189.0 +190 190.0 +191 382.0 +192 192.0 +193 579.0 +194 194.0 +195 390.0 +196 196.0 +197 394.0 +199 597.0 +200 400.0 +201 201.0 +202 202.0 +203 406.0 +205 410.0 +207 414.0 +208 624.0 +209 418.0 +213 426.0 +214 214.0 +216 432.0 +217 434.0 +218 218.0 +219 438.0 +221 442.0 +222 222.0 +223 446.0 +224 448.0 +226 226.0 +228 228.0 +229 458.0 +230 1150.0 +233 466.0 +235 235.0 +237 474.0 +238 476.0 +239 478.0 +241 241.0 +242 484.0 +244 244.0 +247 247.0 +248 248.0 +249 249.0 +252 252.0 +255 510.0 +256 512.0 +257 257.0 +258 258.0 +260 260.0 +262 262.0 +263 263.0 +265 530.0 +266 266.0 +272 544.0 +273 819.0 +274 274.0 +275 275.0 +277 1108.0 +278 556.0 +280 560.0 +281 562.0 +282 564.0 +283 283.0 +284 284.0 +285 285.0 +286 286.0 +287 287.0 +288 576.0 +289 289.0 +291 291.0 +292 292.0 +296 296.0 +298 894.0 +302 302.0 +305 305.0 +306 306.0 +307 614.0 +308 308.0 +309 618.0 +310 310.0 +311 933.0 +315 315.0 +316 948.0 +317 634.0 +318 954.0 +321 642.0 +322 644.0 +323 323.0 +325 650.0 +327 981.0 +331 662.0 +332 332.0 +333 666.0 +335 335.0 +336 336.0 +338 338.0 +339 339.0 +341 341.0 +342 684.0 +344 688.0 +345 345.0 +348 1740.0 +351 351.0 +353 706.0 +356 356.0 +360 360.0 +362 362.0 +364 364.0 +365 365.0 +366 366.0 +367 734.0 +368 368.0 +369 1107.0 +373 373.0 +374 374.0 +375 375.0 +377 377.0 +378 378.0 +379 379.0 +382 764.0 +384 1152.0 +386 386.0 +389 389.0 +392 392.0 +393 393.0 +394 394.0 +395 790.0 +396 1188.0 +397 794.0 +399 798.0 +400 400.0 +401 2005.0 +402 402.0 +403 1209.0 +404 808.0 +406 1624.0 +407 407.0 +409 1227.0 +411 411.0 +413 826.0 +414 828.0 +417 1251.0 +418 418.0 +419 419.0 +421 421.0 +424 848.0 +427 427.0 +429 858.0 +430 1290.0 +431 1293.0 +432 432.0 +435 435.0 +436 436.0 +437 437.0 +438 1314.0 +439 878.0 +443 443.0 +444 444.0 +446 446.0 +448 448.0 +449 449.0 +452 452.0 +453 453.0 +454 1362.0 +455 455.0 +457 457.0 +458 916.0 +459 918.0 +460 460.0 +462 924.0 +463 926.0 +466 1398.0 +467 467.0 +468 1872.0 +469 2345.0 +470 470.0 +472 472.0 +475 475.0 +477 477.0 +478 956.0 +479 479.0 +480 1440.0 +481 481.0 +482 482.0 +483 483.0 +484 484.0 +485 485.0 +487 487.0 +489 1956.0 +490 490.0 +491 491.0 +492 984.0 +493 493.0 +494 494.0 +495 495.0 +496 496.0 +497 497.0 +498 1494.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-2-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby7_noskew-2-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew-2-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-3-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby7_noskew-3-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew-3-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-4-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby7_noskew-4-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-5-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby7_noskew-5-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-6-9d01ff3d1fde3ed2ab55ea9d7079fd5c b/sql/hive/src/test/resources/golden/groupby7_noskew-6-9d01ff3d1fde3ed2ab55ea9d7079fd5c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew-6-9d01ff3d1fde3ed2ab55ea9d7079fd5c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-7-ed76c0068780120a6f23feefee303403 b/sql/hive/src/test/resources/golden/groupby7_noskew-7-ed76c0068780120a6f23feefee303403 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew-7-ed76c0068780120a6f23feefee303403 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-8-409f355bf35dfaa8b9e643510c58fabd b/sql/hive/src/test/resources/golden/groupby7_noskew-8-409f355bf35dfaa8b9e643510c58fabd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew-9-b2af91348c5fa9605702be50983c3bd2 b/sql/hive/src/test/resources/golden/groupby7_noskew-9-b2af91348c5fa9605702be50983c3bd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-10-96d0598a2a4c17041a31b908d1f065e5 b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-10-96d0598a2a4c17041a31b908d1f065e5 new file mode 100644 index 0000000000000..dfca4e169cbe8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-10-96d0598a2a4c17041a31b908d1f065e5 @@ -0,0 +1,10 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-3-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-3-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-4-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-4-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-5-9d01ff3d1fde3ed2ab55ea9d7079fd5c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-6-ed76c0068780120a6f23feefee303403 b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-6-ed76c0068780120a6f23feefee303403 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-6-ed76c0068780120a6f23feefee303403 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-7-186e2b8dc9a393a8bd8c47a303f7f471 b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-7-186e2b8dc9a393a8bd8c47a303f7f471 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-8-e404ba29e723df8bd8662d4f48129c7a b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-8-e404ba29e723df8bd8662d4f48129c7a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-9-652510b8dc20117c65511f06e6e73d73 b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-9-652510b8dc20117c65511f06e6e73d73 new file mode 100644 index 0000000000000..dfca4e169cbe8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby7_noskew_multi_single_reducer-9-652510b8dc20117c65511f06e6e73d73 @@ -0,0 +1,10 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby8-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby8-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8-10-83296fd5b5fc22af0c51514c4e67c95f b/sql/hive/src/test/resources/golden/groupby8-10-83296fd5b5fc22af0c51514c4e67c95f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8-11-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby8-11-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8-11-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8-12-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby8-12-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8-12-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8-2-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby8-2-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8-3-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby8-3-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8-4-a0a22ec83d6632cba3f17d79dbb9494d b/sql/hive/src/test/resources/golden/groupby8-4-a0a22ec83d6632cba3f17d79dbb9494d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8-5-83296fd5b5fc22af0c51514c4e67c95f b/sql/hive/src/test/resources/golden/groupby8-5-83296fd5b5fc22af0c51514c4e67c95f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8-6-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby8-6-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8-6-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8-7-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby8-7-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8-7-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8-8-7f98b724df05f51b3ec1f087a8da414e b/sql/hive/src/test/resources/golden/groupby8-8-7f98b724df05f51b3ec1f087a8da414e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8-8-7f98b724df05f51b3ec1f087a8da414e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8-9-a0a22ec83d6632cba3f17d79dbb9494d b/sql/hive/src/test/resources/golden/groupby8-9-a0a22ec83d6632cba3f17d79dbb9494d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby8_map-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby8_map-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby8_map-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map-3-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby8_map-3-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map-4-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby8_map-4-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map-5-a0a22ec83d6632cba3f17d79dbb9494d b/sql/hive/src/test/resources/golden/groupby8_map-5-a0a22ec83d6632cba3f17d79dbb9494d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map-6-83296fd5b5fc22af0c51514c4e67c95f b/sql/hive/src/test/resources/golden/groupby8_map-6-83296fd5b5fc22af0c51514c4e67c95f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby8_map-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map-8-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby8_map-8-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map-8-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby8_map_skew-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map_skew-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby8_map_skew-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map_skew-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby8_map_skew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map_skew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-3-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby8_map_skew-3-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-4-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby8_map_skew-4-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-5-a0a22ec83d6632cba3f17d79dbb9494d b/sql/hive/src/test/resources/golden/groupby8_map_skew-5-a0a22ec83d6632cba3f17d79dbb9494d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-6-83296fd5b5fc22af0c51514c4e67c95f b/sql/hive/src/test/resources/golden/groupby8_map_skew-6-83296fd5b5fc22af0c51514c4e67c95f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby8_map_skew-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map_skew-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_map_skew-8-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby8_map_skew-8-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_map_skew-8-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby8_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_noskew-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby8_noskew-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_noskew-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby8_noskew-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_noskew-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-3-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby8_noskew-3-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-4-95474af63c0f92717ed49c3a0f37b10a b/sql/hive/src/test/resources/golden/groupby8_noskew-4-95474af63c0f92717ed49c3a0f37b10a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-5-a0a22ec83d6632cba3f17d79dbb9494d b/sql/hive/src/test/resources/golden/groupby8_noskew-5-a0a22ec83d6632cba3f17d79dbb9494d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-6-83296fd5b5fc22af0c51514c4e67c95f b/sql/hive/src/test/resources/golden/groupby8_noskew-6-83296fd5b5fc22af0c51514c4e67c95f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby8_noskew-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_noskew-7-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby8_noskew-8-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby8_noskew-8-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby8_noskew-8-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-0-3678fb67b5c739bd87d4907630da1208 b/sql/hive/src/test/resources/golden/groupby9-0-3678fb67b5c739bd87d4907630da1208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-1-6ffcd6fad9ca3e9934f521673f5039a5 b/sql/hive/src/test/resources/golden/groupby9-1-6ffcd6fad9ca3e9934f521673f5039a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-10-7f98b724df05f51b3ec1f087a8da414e b/sql/hive/src/test/resources/golden/groupby9-10-7f98b724df05f51b3ec1f087a8da414e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-10-7f98b724df05f51b3ec1f087a8da414e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-11-a4e1a4b250c160f9b90b12a2e7c5e82f b/sql/hive/src/test/resources/golden/groupby9-11-a4e1a4b250c160f9b90b12a2e7c5e82f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-12-9f4c2e7d95494bcdc7c4ed19e0434de6 b/sql/hive/src/test/resources/golden/groupby9-12-9f4c2e7d95494bcdc7c4ed19e0434de6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-13-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby9-13-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-13-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-14-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby9-14-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..0e40f3f1a49a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-14-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 val_0 1 +2 val_2 1 +4 val_4 1 +5 val_5 1 +8 val_8 1 +9 val_9 1 +10 val_10 1 +11 val_11 1 +12 val_12 1 +15 val_15 1 +17 val_17 1 +18 val_18 1 +19 val_19 1 +20 val_20 1 +24 val_24 1 +26 val_26 1 +27 val_27 1 +28 val_28 1 +30 val_30 1 +33 val_33 1 +34 val_34 1 +35 val_35 1 +37 val_37 1 +41 val_41 1 +42 val_42 1 +43 val_43 1 +44 val_44 1 +47 val_47 1 +51 val_51 1 +53 val_53 1 +54 val_54 1 +57 val_57 1 +58 val_58 1 +64 val_64 1 +65 val_65 1 +66 val_66 1 +67 val_67 1 +69 val_69 1 +70 val_70 1 +72 val_72 1 +74 val_74 1 +76 val_76 1 +77 val_77 1 +78 val_78 1 +80 val_80 1 +82 val_82 1 +83 val_83 1 +84 val_84 1 +85 val_85 1 +86 val_86 1 +87 val_87 1 +90 val_90 1 +92 val_92 1 +95 val_95 1 +96 val_96 1 +97 val_97 1 +98 val_98 1 +100 val_100 1 +103 val_103 1 +104 val_104 1 +105 val_105 1 +111 val_111 1 +113 val_113 1 +114 val_114 1 +116 val_116 1 +118 val_118 1 +119 val_119 1 +120 val_120 1 +125 val_125 1 +126 val_126 1 +128 val_128 1 +129 val_129 1 +131 val_131 1 +133 val_133 1 +134 val_134 1 +136 val_136 1 +137 val_137 1 +138 val_138 1 +143 val_143 1 +145 val_145 1 +146 val_146 1 +149 val_149 1 +150 val_150 1 +152 val_152 1 +153 val_153 1 +155 val_155 1 +156 val_156 1 +157 val_157 1 +158 val_158 1 +160 val_160 1 +162 val_162 1 +163 val_163 1 +164 val_164 1 +165 val_165 1 +166 val_166 1 +167 val_167 1 +168 val_168 1 +169 val_169 1 +170 val_170 1 +172 val_172 1 +174 val_174 1 +175 val_175 1 +176 val_176 1 +177 val_177 1 +178 val_178 1 +179 val_179 1 +180 val_180 1 +181 val_181 1 +183 val_183 1 +186 val_186 1 +187 val_187 1 +189 val_189 1 +190 val_190 1 +191 val_191 1 +192 val_192 1 +193 val_193 1 +194 val_194 1 +195 val_195 1 +196 val_196 1 +197 val_197 1 +199 val_199 1 +200 val_200 1 +201 val_201 1 +202 val_202 1 +203 val_203 1 +205 val_205 1 +207 val_207 1 +208 val_208 1 +209 val_209 1 +213 val_213 1 +214 val_214 1 +216 val_216 1 +217 val_217 1 +218 val_218 1 +219 val_219 1 +221 val_221 1 +222 val_222 1 +223 val_223 1 +224 val_224 1 +226 val_226 1 +228 val_228 1 +229 val_229 1 +230 val_230 1 +233 val_233 1 +235 val_235 1 +237 val_237 1 +238 val_238 1 +239 val_239 1 +241 val_241 1 +242 val_242 1 +244 val_244 1 +247 val_247 1 +248 val_248 1 +249 val_249 1 +252 val_252 1 +255 val_255 1 +256 val_256 1 +257 val_257 1 +258 val_258 1 +260 val_260 1 +262 val_262 1 +263 val_263 1 +265 val_265 1 +266 val_266 1 +272 val_272 1 +273 val_273 1 +274 val_274 1 +275 val_275 1 +277 val_277 1 +278 val_278 1 +280 val_280 1 +281 val_281 1 +282 val_282 1 +283 val_283 1 +284 val_284 1 +285 val_285 1 +286 val_286 1 +287 val_287 1 +288 val_288 1 +289 val_289 1 +291 val_291 1 +292 val_292 1 +296 val_296 1 +298 val_298 1 +302 val_302 1 +305 val_305 1 +306 val_306 1 +307 val_307 1 +308 val_308 1 +309 val_309 1 +310 val_310 1 +311 val_311 1 +315 val_315 1 +316 val_316 1 +317 val_317 1 +318 val_318 1 +321 val_321 1 +322 val_322 1 +323 val_323 1 +325 val_325 1 +327 val_327 1 +331 val_331 1 +332 val_332 1 +333 val_333 1 +335 val_335 1 +336 val_336 1 +338 val_338 1 +339 val_339 1 +341 val_341 1 +342 val_342 1 +344 val_344 1 +345 val_345 1 +348 val_348 1 +351 val_351 1 +353 val_353 1 +356 val_356 1 +360 val_360 1 +362 val_362 1 +364 val_364 1 +365 val_365 1 +366 val_366 1 +367 val_367 1 +368 val_368 1 +369 val_369 1 +373 val_373 1 +374 val_374 1 +375 val_375 1 +377 val_377 1 +378 val_378 1 +379 val_379 1 +382 val_382 1 +384 val_384 1 +386 val_386 1 +389 val_389 1 +392 val_392 1 +393 val_393 1 +394 val_394 1 +395 val_395 1 +396 val_396 1 +397 val_397 1 +399 val_399 1 +400 val_400 1 +401 val_401 1 +402 val_402 1 +403 val_403 1 +404 val_404 1 +406 val_406 1 +407 val_407 1 +409 val_409 1 +411 val_411 1 +413 val_413 1 +414 val_414 1 +417 val_417 1 +418 val_418 1 +419 val_419 1 +421 val_421 1 +424 val_424 1 +427 val_427 1 +429 val_429 1 +430 val_430 1 +431 val_431 1 +432 val_432 1 +435 val_435 1 +436 val_436 1 +437 val_437 1 +438 val_438 1 +439 val_439 1 +443 val_443 1 +444 val_444 1 +446 val_446 1 +448 val_448 1 +449 val_449 1 +452 val_452 1 +453 val_453 1 +454 val_454 1 +455 val_455 1 +457 val_457 1 +458 val_458 1 +459 val_459 1 +460 val_460 1 +462 val_462 1 +463 val_463 1 +466 val_466 1 +467 val_467 1 +468 val_468 1 +469 val_469 1 +470 val_470 1 +472 val_472 1 +475 val_475 1 +477 val_477 1 +478 val_478 1 +479 val_479 1 +480 val_480 1 +481 val_481 1 +482 val_482 1 +483 val_483 1 +484 val_484 1 +485 val_485 1 +487 val_487 1 +489 val_489 1 +490 val_490 1 +491 val_491 1 +492 val_492 1 +493 val_493 1 +494 val_494 1 +495 val_495 1 +496 val_496 1 +497 val_497 1 +498 val_498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-15-c3d5e2da9bbf7d66aa106eb13183dbed b/sql/hive/src/test/resources/golden/groupby9-15-c3d5e2da9bbf7d66aa106eb13183dbed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-16-c05b1bc66a607e43633dc457ecf48f3b b/sql/hive/src/test/resources/golden/groupby9-16-c05b1bc66a607e43633dc457ecf48f3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-17-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby9-17-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..df07a9da29f01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-17-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 3 +2 1 +4 1 +5 3 +8 1 +9 1 +10 1 +11 1 +12 2 +15 2 +17 1 +18 2 +19 1 +20 1 +24 2 +26 2 +27 1 +28 1 +30 1 +33 1 +34 1 +35 3 +37 2 +41 1 +42 2 +43 1 +44 1 +47 1 +51 2 +53 1 +54 1 +57 1 +58 2 +64 1 +65 1 +66 1 +67 2 +69 1 +70 3 +72 2 +74 1 +76 2 +77 1 +78 1 +80 1 +82 1 +83 2 +84 2 +85 1 +86 1 +87 1 +90 3 +92 1 +95 2 +96 1 +97 2 +98 2 +100 2 +103 2 +104 2 +105 1 +111 1 +113 2 +114 1 +116 1 +118 2 +119 3 +120 2 +125 2 +126 1 +128 3 +129 2 +131 1 +133 1 +134 2 +136 1 +137 2 +138 4 +143 1 +145 1 +146 2 +149 2 +150 1 +152 2 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 2 +165 2 +166 1 +167 3 +168 1 +169 4 +170 1 +172 2 +174 2 +175 2 +176 2 +177 1 +178 1 +179 2 +180 1 +181 1 +183 1 +186 1 +187 3 +189 1 +190 1 +191 2 +192 1 +193 3 +194 1 +195 2 +196 1 +197 2 +199 3 +200 2 +201 1 +202 1 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +214 1 +216 2 +217 2 +218 1 +219 2 +221 2 +222 1 +223 2 +224 2 +226 1 +228 1 +229 2 +230 5 +233 2 +235 1 +237 2 +238 2 +239 2 +241 1 +242 2 +244 1 +247 1 +248 1 +249 1 +252 1 +255 2 +256 2 +257 1 +258 1 +260 1 +262 1 +263 1 +265 2 +266 1 +272 2 +273 3 +274 1 +275 1 +277 4 +278 2 +280 2 +281 2 +282 2 +283 1 +284 1 +285 1 +286 1 +287 1 +288 2 +289 1 +291 1 +292 1 +296 1 +298 3 +302 1 +305 1 +306 1 +307 2 +308 1 +309 2 +310 1 +311 3 +315 1 +316 3 +317 2 +318 3 +321 2 +322 2 +323 1 +325 2 +327 3 +331 2 +332 1 +333 2 +335 1 +336 1 +338 1 +339 1 +341 1 +342 2 +344 2 +345 1 +348 5 +351 1 +353 2 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 2 +368 1 +369 3 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 2 +384 3 +386 1 +389 1 +392 1 +393 1 +394 1 +395 2 +396 3 +397 2 +399 2 +400 1 +401 5 +402 1 +403 3 +404 2 +406 4 +407 1 +409 3 +411 1 +413 2 +414 2 +417 3 +418 1 +419 1 +421 1 +424 2 +427 1 +429 2 +430 3 +431 3 +432 1 +435 1 +436 1 +437 1 +438 3 +439 2 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-18-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby9-18-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..cf0c065dc6532 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-18-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 val_0 3 +2 val_2 1 +4 val_4 1 +5 val_5 3 +8 val_8 1 +9 val_9 1 +10 val_10 1 +11 val_11 1 +12 val_12 2 +15 val_15 2 +17 val_17 1 +18 val_18 2 +19 val_19 1 +20 val_20 1 +24 val_24 2 +26 val_26 2 +27 val_27 1 +28 val_28 1 +30 val_30 1 +33 val_33 1 +34 val_34 1 +35 val_35 3 +37 val_37 2 +41 val_41 1 +42 val_42 2 +43 val_43 1 +44 val_44 1 +47 val_47 1 +51 val_51 2 +53 val_53 1 +54 val_54 1 +57 val_57 1 +58 val_58 2 +64 val_64 1 +65 val_65 1 +66 val_66 1 +67 val_67 2 +69 val_69 1 +70 val_70 3 +72 val_72 2 +74 val_74 1 +76 val_76 2 +77 val_77 1 +78 val_78 1 +80 val_80 1 +82 val_82 1 +83 val_83 2 +84 val_84 2 +85 val_85 1 +86 val_86 1 +87 val_87 1 +90 val_90 3 +92 val_92 1 +95 val_95 2 +96 val_96 1 +97 val_97 2 +98 val_98 2 +100 val_100 2 +103 val_103 2 +104 val_104 2 +105 val_105 1 +111 val_111 1 +113 val_113 2 +114 val_114 1 +116 val_116 1 +118 val_118 2 +119 val_119 3 +120 val_120 2 +125 val_125 2 +126 val_126 1 +128 val_128 3 +129 val_129 2 +131 val_131 1 +133 val_133 1 +134 val_134 2 +136 val_136 1 +137 val_137 2 +138 val_138 4 +143 val_143 1 +145 val_145 1 +146 val_146 2 +149 val_149 2 +150 val_150 1 +152 val_152 2 +153 val_153 1 +155 val_155 1 +156 val_156 1 +157 val_157 1 +158 val_158 1 +160 val_160 1 +162 val_162 1 +163 val_163 1 +164 val_164 2 +165 val_165 2 +166 val_166 1 +167 val_167 3 +168 val_168 1 +169 val_169 4 +170 val_170 1 +172 val_172 2 +174 val_174 2 +175 val_175 2 +176 val_176 2 +177 val_177 1 +178 val_178 1 +179 val_179 2 +180 val_180 1 +181 val_181 1 +183 val_183 1 +186 val_186 1 +187 val_187 3 +189 val_189 1 +190 val_190 1 +191 val_191 2 +192 val_192 1 +193 val_193 3 +194 val_194 1 +195 val_195 2 +196 val_196 1 +197 val_197 2 +199 val_199 3 +200 val_200 2 +201 val_201 1 +202 val_202 1 +203 val_203 2 +205 val_205 2 +207 val_207 2 +208 val_208 3 +209 val_209 2 +213 val_213 2 +214 val_214 1 +216 val_216 2 +217 val_217 2 +218 val_218 1 +219 val_219 2 +221 val_221 2 +222 val_222 1 +223 val_223 2 +224 val_224 2 +226 val_226 1 +228 val_228 1 +229 val_229 2 +230 val_230 5 +233 val_233 2 +235 val_235 1 +237 val_237 2 +238 val_238 2 +239 val_239 2 +241 val_241 1 +242 val_242 2 +244 val_244 1 +247 val_247 1 +248 val_248 1 +249 val_249 1 +252 val_252 1 +255 val_255 2 +256 val_256 2 +257 val_257 1 +258 val_258 1 +260 val_260 1 +262 val_262 1 +263 val_263 1 +265 val_265 2 +266 val_266 1 +272 val_272 2 +273 val_273 3 +274 val_274 1 +275 val_275 1 +277 val_277 4 +278 val_278 2 +280 val_280 2 +281 val_281 2 +282 val_282 2 +283 val_283 1 +284 val_284 1 +285 val_285 1 +286 val_286 1 +287 val_287 1 +288 val_288 2 +289 val_289 1 +291 val_291 1 +292 val_292 1 +296 val_296 1 +298 val_298 3 +302 val_302 1 +305 val_305 1 +306 val_306 1 +307 val_307 2 +308 val_308 1 +309 val_309 2 +310 val_310 1 +311 val_311 3 +315 val_315 1 +316 val_316 3 +317 val_317 2 +318 val_318 3 +321 val_321 2 +322 val_322 2 +323 val_323 1 +325 val_325 2 +327 val_327 3 +331 val_331 2 +332 val_332 1 +333 val_333 2 +335 val_335 1 +336 val_336 1 +338 val_338 1 +339 val_339 1 +341 val_341 1 +342 val_342 2 +344 val_344 2 +345 val_345 1 +348 val_348 5 +351 val_351 1 +353 val_353 2 +356 val_356 1 +360 val_360 1 +362 val_362 1 +364 val_364 1 +365 val_365 1 +366 val_366 1 +367 val_367 2 +368 val_368 1 +369 val_369 3 +373 val_373 1 +374 val_374 1 +375 val_375 1 +377 val_377 1 +378 val_378 1 +379 val_379 1 +382 val_382 2 +384 val_384 3 +386 val_386 1 +389 val_389 1 +392 val_392 1 +393 val_393 1 +394 val_394 1 +395 val_395 2 +396 val_396 3 +397 val_397 2 +399 val_399 2 +400 val_400 1 +401 val_401 5 +402 val_402 1 +403 val_403 3 +404 val_404 2 +406 val_406 4 +407 val_407 1 +409 val_409 3 +411 val_411 1 +413 val_413 2 +414 val_414 2 +417 val_417 3 +418 val_418 1 +419 val_419 1 +421 val_421 1 +424 val_424 2 +427 val_427 1 +429 val_429 2 +430 val_430 3 +431 val_431 3 +432 val_432 1 +435 val_435 1 +436 val_436 1 +437 val_437 1 +438 val_438 3 +439 val_439 2 +443 val_443 1 +444 val_444 1 +446 val_446 1 +448 val_448 1 +449 val_449 1 +452 val_452 1 +453 val_453 1 +454 val_454 3 +455 val_455 1 +457 val_457 1 +458 val_458 2 +459 val_459 2 +460 val_460 1 +462 val_462 2 +463 val_463 2 +466 val_466 3 +467 val_467 1 +468 val_468 4 +469 val_469 5 +470 val_470 1 +472 val_472 1 +475 val_475 1 +477 val_477 1 +478 val_478 2 +479 val_479 1 +480 val_480 3 +481 val_481 1 +482 val_482 1 +483 val_483 1 +484 val_484 1 +485 val_485 1 +487 val_487 1 +489 val_489 4 +490 val_490 1 +491 val_491 1 +492 val_492 2 +493 val_493 1 +494 val_494 1 +495 val_495 1 +496 val_496 1 +497 val_497 1 +498 val_498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-19-55781df7ed3ff9e37001fbd7739b9c2e b/sql/hive/src/test/resources/golden/groupby9-19-55781df7ed3ff9e37001fbd7739b9c2e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-2-a4e1a4b250c160f9b90b12a2e7c5e82f b/sql/hive/src/test/resources/golden/groupby9-2-a4e1a4b250c160f9b90b12a2e7c5e82f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-20-ccc5914317422f569e8b7171a3b2b243 b/sql/hive/src/test/resources/golden/groupby9-20-ccc5914317422f569e8b7171a3b2b243 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-21-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby9-21-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-21-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-22-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby9-22-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..4ef88d57aa72b --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-22-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 val_0 1 +10 val_10 1 +100 val_100 1 +103 val_103 1 +104 val_104 1 +105 val_105 1 +11 val_11 1 +111 val_111 1 +113 val_113 1 +114 val_114 1 +116 val_116 1 +118 val_118 1 +119 val_119 1 +12 val_12 1 +120 val_120 1 +125 val_125 1 +126 val_126 1 +128 val_128 1 +129 val_129 1 +131 val_131 1 +133 val_133 1 +134 val_134 1 +136 val_136 1 +137 val_137 1 +138 val_138 1 +143 val_143 1 +145 val_145 1 +146 val_146 1 +149 val_149 1 +15 val_15 1 +150 val_150 1 +152 val_152 1 +153 val_153 1 +155 val_155 1 +156 val_156 1 +157 val_157 1 +158 val_158 1 +160 val_160 1 +162 val_162 1 +163 val_163 1 +164 val_164 1 +165 val_165 1 +166 val_166 1 +167 val_167 1 +168 val_168 1 +169 val_169 1 +17 val_17 1 +170 val_170 1 +172 val_172 1 +174 val_174 1 +175 val_175 1 +176 val_176 1 +177 val_177 1 +178 val_178 1 +179 val_179 1 +18 val_18 1 +180 val_180 1 +181 val_181 1 +183 val_183 1 +186 val_186 1 +187 val_187 1 +189 val_189 1 +19 val_19 1 +190 val_190 1 +191 val_191 1 +192 val_192 1 +193 val_193 1 +194 val_194 1 +195 val_195 1 +196 val_196 1 +197 val_197 1 +199 val_199 1 +2 val_2 1 +20 val_20 1 +200 val_200 1 +201 val_201 1 +202 val_202 1 +203 val_203 1 +205 val_205 1 +207 val_207 1 +208 val_208 1 +209 val_209 1 +213 val_213 1 +214 val_214 1 +216 val_216 1 +217 val_217 1 +218 val_218 1 +219 val_219 1 +221 val_221 1 +222 val_222 1 +223 val_223 1 +224 val_224 1 +226 val_226 1 +228 val_228 1 +229 val_229 1 +230 val_230 1 +233 val_233 1 +235 val_235 1 +237 val_237 1 +238 val_238 1 +239 val_239 1 +24 val_24 1 +241 val_241 1 +242 val_242 1 +244 val_244 1 +247 val_247 1 +248 val_248 1 +249 val_249 1 +252 val_252 1 +255 val_255 1 +256 val_256 1 +257 val_257 1 +258 val_258 1 +26 val_26 1 +260 val_260 1 +262 val_262 1 +263 val_263 1 +265 val_265 1 +266 val_266 1 +27 val_27 1 +272 val_272 1 +273 val_273 1 +274 val_274 1 +275 val_275 1 +277 val_277 1 +278 val_278 1 +28 val_28 1 +280 val_280 1 +281 val_281 1 +282 val_282 1 +283 val_283 1 +284 val_284 1 +285 val_285 1 +286 val_286 1 +287 val_287 1 +288 val_288 1 +289 val_289 1 +291 val_291 1 +292 val_292 1 +296 val_296 1 +298 val_298 1 +30 val_30 1 +302 val_302 1 +305 val_305 1 +306 val_306 1 +307 val_307 1 +308 val_308 1 +309 val_309 1 +310 val_310 1 +311 val_311 1 +315 val_315 1 +316 val_316 1 +317 val_317 1 +318 val_318 1 +321 val_321 1 +322 val_322 1 +323 val_323 1 +325 val_325 1 +327 val_327 1 +33 val_33 1 +331 val_331 1 +332 val_332 1 +333 val_333 1 +335 val_335 1 +336 val_336 1 +338 val_338 1 +339 val_339 1 +34 val_34 1 +341 val_341 1 +342 val_342 1 +344 val_344 1 +345 val_345 1 +348 val_348 1 +35 val_35 1 +351 val_351 1 +353 val_353 1 +356 val_356 1 +360 val_360 1 +362 val_362 1 +364 val_364 1 +365 val_365 1 +366 val_366 1 +367 val_367 1 +368 val_368 1 +369 val_369 1 +37 val_37 1 +373 val_373 1 +374 val_374 1 +375 val_375 1 +377 val_377 1 +378 val_378 1 +379 val_379 1 +382 val_382 1 +384 val_384 1 +386 val_386 1 +389 val_389 1 +392 val_392 1 +393 val_393 1 +394 val_394 1 +395 val_395 1 +396 val_396 1 +397 val_397 1 +399 val_399 1 +4 val_4 1 +400 val_400 1 +401 val_401 1 +402 val_402 1 +403 val_403 1 +404 val_404 1 +406 val_406 1 +407 val_407 1 +409 val_409 1 +41 val_41 1 +411 val_411 1 +413 val_413 1 +414 val_414 1 +417 val_417 1 +418 val_418 1 +419 val_419 1 +42 val_42 1 +421 val_421 1 +424 val_424 1 +427 val_427 1 +429 val_429 1 +43 val_43 1 +430 val_430 1 +431 val_431 1 +432 val_432 1 +435 val_435 1 +436 val_436 1 +437 val_437 1 +438 val_438 1 +439 val_439 1 +44 val_44 1 +443 val_443 1 +444 val_444 1 +446 val_446 1 +448 val_448 1 +449 val_449 1 +452 val_452 1 +453 val_453 1 +454 val_454 1 +455 val_455 1 +457 val_457 1 +458 val_458 1 +459 val_459 1 +460 val_460 1 +462 val_462 1 +463 val_463 1 +466 val_466 1 +467 val_467 1 +468 val_468 1 +469 val_469 1 +47 val_47 1 +470 val_470 1 +472 val_472 1 +475 val_475 1 +477 val_477 1 +478 val_478 1 +479 val_479 1 +480 val_480 1 +481 val_481 1 +482 val_482 1 +483 val_483 1 +484 val_484 1 +485 val_485 1 +487 val_487 1 +489 val_489 1 +490 val_490 1 +491 val_491 1 +492 val_492 1 +493 val_493 1 +494 val_494 1 +495 val_495 1 +496 val_496 1 +497 val_497 1 +498 val_498 1 +5 val_5 1 +51 val_51 1 +53 val_53 1 +54 val_54 1 +57 val_57 1 +58 val_58 1 +64 val_64 1 +65 val_65 1 +66 val_66 1 +67 val_67 1 +69 val_69 1 +70 val_70 1 +72 val_72 1 +74 val_74 1 +76 val_76 1 +77 val_77 1 +78 val_78 1 +8 val_8 1 +80 val_80 1 +82 val_82 1 +83 val_83 1 +84 val_84 1 +85 val_85 1 +86 val_86 1 +87 val_87 1 +9 val_9 1 +90 val_90 1 +92 val_92 1 +95 val_95 1 +96 val_96 1 +97 val_97 1 +98 val_98 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-3-9f4c2e7d95494bcdc7c4ed19e0434de6 b/sql/hive/src/test/resources/golden/groupby9-3-9f4c2e7d95494bcdc7c4ed19e0434de6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-4-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby9-4-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-4-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-5-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby9-5-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..0e40f3f1a49a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-5-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 val_0 1 +2 val_2 1 +4 val_4 1 +5 val_5 1 +8 val_8 1 +9 val_9 1 +10 val_10 1 +11 val_11 1 +12 val_12 1 +15 val_15 1 +17 val_17 1 +18 val_18 1 +19 val_19 1 +20 val_20 1 +24 val_24 1 +26 val_26 1 +27 val_27 1 +28 val_28 1 +30 val_30 1 +33 val_33 1 +34 val_34 1 +35 val_35 1 +37 val_37 1 +41 val_41 1 +42 val_42 1 +43 val_43 1 +44 val_44 1 +47 val_47 1 +51 val_51 1 +53 val_53 1 +54 val_54 1 +57 val_57 1 +58 val_58 1 +64 val_64 1 +65 val_65 1 +66 val_66 1 +67 val_67 1 +69 val_69 1 +70 val_70 1 +72 val_72 1 +74 val_74 1 +76 val_76 1 +77 val_77 1 +78 val_78 1 +80 val_80 1 +82 val_82 1 +83 val_83 1 +84 val_84 1 +85 val_85 1 +86 val_86 1 +87 val_87 1 +90 val_90 1 +92 val_92 1 +95 val_95 1 +96 val_96 1 +97 val_97 1 +98 val_98 1 +100 val_100 1 +103 val_103 1 +104 val_104 1 +105 val_105 1 +111 val_111 1 +113 val_113 1 +114 val_114 1 +116 val_116 1 +118 val_118 1 +119 val_119 1 +120 val_120 1 +125 val_125 1 +126 val_126 1 +128 val_128 1 +129 val_129 1 +131 val_131 1 +133 val_133 1 +134 val_134 1 +136 val_136 1 +137 val_137 1 +138 val_138 1 +143 val_143 1 +145 val_145 1 +146 val_146 1 +149 val_149 1 +150 val_150 1 +152 val_152 1 +153 val_153 1 +155 val_155 1 +156 val_156 1 +157 val_157 1 +158 val_158 1 +160 val_160 1 +162 val_162 1 +163 val_163 1 +164 val_164 1 +165 val_165 1 +166 val_166 1 +167 val_167 1 +168 val_168 1 +169 val_169 1 +170 val_170 1 +172 val_172 1 +174 val_174 1 +175 val_175 1 +176 val_176 1 +177 val_177 1 +178 val_178 1 +179 val_179 1 +180 val_180 1 +181 val_181 1 +183 val_183 1 +186 val_186 1 +187 val_187 1 +189 val_189 1 +190 val_190 1 +191 val_191 1 +192 val_192 1 +193 val_193 1 +194 val_194 1 +195 val_195 1 +196 val_196 1 +197 val_197 1 +199 val_199 1 +200 val_200 1 +201 val_201 1 +202 val_202 1 +203 val_203 1 +205 val_205 1 +207 val_207 1 +208 val_208 1 +209 val_209 1 +213 val_213 1 +214 val_214 1 +216 val_216 1 +217 val_217 1 +218 val_218 1 +219 val_219 1 +221 val_221 1 +222 val_222 1 +223 val_223 1 +224 val_224 1 +226 val_226 1 +228 val_228 1 +229 val_229 1 +230 val_230 1 +233 val_233 1 +235 val_235 1 +237 val_237 1 +238 val_238 1 +239 val_239 1 +241 val_241 1 +242 val_242 1 +244 val_244 1 +247 val_247 1 +248 val_248 1 +249 val_249 1 +252 val_252 1 +255 val_255 1 +256 val_256 1 +257 val_257 1 +258 val_258 1 +260 val_260 1 +262 val_262 1 +263 val_263 1 +265 val_265 1 +266 val_266 1 +272 val_272 1 +273 val_273 1 +274 val_274 1 +275 val_275 1 +277 val_277 1 +278 val_278 1 +280 val_280 1 +281 val_281 1 +282 val_282 1 +283 val_283 1 +284 val_284 1 +285 val_285 1 +286 val_286 1 +287 val_287 1 +288 val_288 1 +289 val_289 1 +291 val_291 1 +292 val_292 1 +296 val_296 1 +298 val_298 1 +302 val_302 1 +305 val_305 1 +306 val_306 1 +307 val_307 1 +308 val_308 1 +309 val_309 1 +310 val_310 1 +311 val_311 1 +315 val_315 1 +316 val_316 1 +317 val_317 1 +318 val_318 1 +321 val_321 1 +322 val_322 1 +323 val_323 1 +325 val_325 1 +327 val_327 1 +331 val_331 1 +332 val_332 1 +333 val_333 1 +335 val_335 1 +336 val_336 1 +338 val_338 1 +339 val_339 1 +341 val_341 1 +342 val_342 1 +344 val_344 1 +345 val_345 1 +348 val_348 1 +351 val_351 1 +353 val_353 1 +356 val_356 1 +360 val_360 1 +362 val_362 1 +364 val_364 1 +365 val_365 1 +366 val_366 1 +367 val_367 1 +368 val_368 1 +369 val_369 1 +373 val_373 1 +374 val_374 1 +375 val_375 1 +377 val_377 1 +378 val_378 1 +379 val_379 1 +382 val_382 1 +384 val_384 1 +386 val_386 1 +389 val_389 1 +392 val_392 1 +393 val_393 1 +394 val_394 1 +395 val_395 1 +396 val_396 1 +397 val_397 1 +399 val_399 1 +400 val_400 1 +401 val_401 1 +402 val_402 1 +403 val_403 1 +404 val_404 1 +406 val_406 1 +407 val_407 1 +409 val_409 1 +411 val_411 1 +413 val_413 1 +414 val_414 1 +417 val_417 1 +418 val_418 1 +419 val_419 1 +421 val_421 1 +424 val_424 1 +427 val_427 1 +429 val_429 1 +430 val_430 1 +431 val_431 1 +432 val_432 1 +435 val_435 1 +436 val_436 1 +437 val_437 1 +438 val_438 1 +439 val_439 1 +443 val_443 1 +444 val_444 1 +446 val_446 1 +448 val_448 1 +449 val_449 1 +452 val_452 1 +453 val_453 1 +454 val_454 1 +455 val_455 1 +457 val_457 1 +458 val_458 1 +459 val_459 1 +460 val_460 1 +462 val_462 1 +463 val_463 1 +466 val_466 1 +467 val_467 1 +468 val_468 1 +469 val_469 1 +470 val_470 1 +472 val_472 1 +475 val_475 1 +477 val_477 1 +478 val_478 1 +479 val_479 1 +480 val_480 1 +481 val_481 1 +482 val_482 1 +483 val_483 1 +484 val_484 1 +485 val_485 1 +487 val_487 1 +489 val_489 1 +490 val_490 1 +491 val_491 1 +492 val_492 1 +493 val_493 1 +494 val_494 1 +495 val_495 1 +496 val_496 1 +497 val_497 1 +498 val_498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-6-55781df7ed3ff9e37001fbd7739b9c2e b/sql/hive/src/test/resources/golden/groupby9-6-55781df7ed3ff9e37001fbd7739b9c2e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-7-ccc5914317422f569e8b7171a3b2b243 b/sql/hive/src/test/resources/golden/groupby9-7-ccc5914317422f569e8b7171a3b2b243 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby9-8-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/groupby9-8-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..326493a1d8cb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-8-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby9-9-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/groupby9-9-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..4ef88d57aa72b --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby9-9-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,309 @@ +0 val_0 1 +10 val_10 1 +100 val_100 1 +103 val_103 1 +104 val_104 1 +105 val_105 1 +11 val_11 1 +111 val_111 1 +113 val_113 1 +114 val_114 1 +116 val_116 1 +118 val_118 1 +119 val_119 1 +12 val_12 1 +120 val_120 1 +125 val_125 1 +126 val_126 1 +128 val_128 1 +129 val_129 1 +131 val_131 1 +133 val_133 1 +134 val_134 1 +136 val_136 1 +137 val_137 1 +138 val_138 1 +143 val_143 1 +145 val_145 1 +146 val_146 1 +149 val_149 1 +15 val_15 1 +150 val_150 1 +152 val_152 1 +153 val_153 1 +155 val_155 1 +156 val_156 1 +157 val_157 1 +158 val_158 1 +160 val_160 1 +162 val_162 1 +163 val_163 1 +164 val_164 1 +165 val_165 1 +166 val_166 1 +167 val_167 1 +168 val_168 1 +169 val_169 1 +17 val_17 1 +170 val_170 1 +172 val_172 1 +174 val_174 1 +175 val_175 1 +176 val_176 1 +177 val_177 1 +178 val_178 1 +179 val_179 1 +18 val_18 1 +180 val_180 1 +181 val_181 1 +183 val_183 1 +186 val_186 1 +187 val_187 1 +189 val_189 1 +19 val_19 1 +190 val_190 1 +191 val_191 1 +192 val_192 1 +193 val_193 1 +194 val_194 1 +195 val_195 1 +196 val_196 1 +197 val_197 1 +199 val_199 1 +2 val_2 1 +20 val_20 1 +200 val_200 1 +201 val_201 1 +202 val_202 1 +203 val_203 1 +205 val_205 1 +207 val_207 1 +208 val_208 1 +209 val_209 1 +213 val_213 1 +214 val_214 1 +216 val_216 1 +217 val_217 1 +218 val_218 1 +219 val_219 1 +221 val_221 1 +222 val_222 1 +223 val_223 1 +224 val_224 1 +226 val_226 1 +228 val_228 1 +229 val_229 1 +230 val_230 1 +233 val_233 1 +235 val_235 1 +237 val_237 1 +238 val_238 1 +239 val_239 1 +24 val_24 1 +241 val_241 1 +242 val_242 1 +244 val_244 1 +247 val_247 1 +248 val_248 1 +249 val_249 1 +252 val_252 1 +255 val_255 1 +256 val_256 1 +257 val_257 1 +258 val_258 1 +26 val_26 1 +260 val_260 1 +262 val_262 1 +263 val_263 1 +265 val_265 1 +266 val_266 1 +27 val_27 1 +272 val_272 1 +273 val_273 1 +274 val_274 1 +275 val_275 1 +277 val_277 1 +278 val_278 1 +28 val_28 1 +280 val_280 1 +281 val_281 1 +282 val_282 1 +283 val_283 1 +284 val_284 1 +285 val_285 1 +286 val_286 1 +287 val_287 1 +288 val_288 1 +289 val_289 1 +291 val_291 1 +292 val_292 1 +296 val_296 1 +298 val_298 1 +30 val_30 1 +302 val_302 1 +305 val_305 1 +306 val_306 1 +307 val_307 1 +308 val_308 1 +309 val_309 1 +310 val_310 1 +311 val_311 1 +315 val_315 1 +316 val_316 1 +317 val_317 1 +318 val_318 1 +321 val_321 1 +322 val_322 1 +323 val_323 1 +325 val_325 1 +327 val_327 1 +33 val_33 1 +331 val_331 1 +332 val_332 1 +333 val_333 1 +335 val_335 1 +336 val_336 1 +338 val_338 1 +339 val_339 1 +34 val_34 1 +341 val_341 1 +342 val_342 1 +344 val_344 1 +345 val_345 1 +348 val_348 1 +35 val_35 1 +351 val_351 1 +353 val_353 1 +356 val_356 1 +360 val_360 1 +362 val_362 1 +364 val_364 1 +365 val_365 1 +366 val_366 1 +367 val_367 1 +368 val_368 1 +369 val_369 1 +37 val_37 1 +373 val_373 1 +374 val_374 1 +375 val_375 1 +377 val_377 1 +378 val_378 1 +379 val_379 1 +382 val_382 1 +384 val_384 1 +386 val_386 1 +389 val_389 1 +392 val_392 1 +393 val_393 1 +394 val_394 1 +395 val_395 1 +396 val_396 1 +397 val_397 1 +399 val_399 1 +4 val_4 1 +400 val_400 1 +401 val_401 1 +402 val_402 1 +403 val_403 1 +404 val_404 1 +406 val_406 1 +407 val_407 1 +409 val_409 1 +41 val_41 1 +411 val_411 1 +413 val_413 1 +414 val_414 1 +417 val_417 1 +418 val_418 1 +419 val_419 1 +42 val_42 1 +421 val_421 1 +424 val_424 1 +427 val_427 1 +429 val_429 1 +43 val_43 1 +430 val_430 1 +431 val_431 1 +432 val_432 1 +435 val_435 1 +436 val_436 1 +437 val_437 1 +438 val_438 1 +439 val_439 1 +44 val_44 1 +443 val_443 1 +444 val_444 1 +446 val_446 1 +448 val_448 1 +449 val_449 1 +452 val_452 1 +453 val_453 1 +454 val_454 1 +455 val_455 1 +457 val_457 1 +458 val_458 1 +459 val_459 1 +460 val_460 1 +462 val_462 1 +463 val_463 1 +466 val_466 1 +467 val_467 1 +468 val_468 1 +469 val_469 1 +47 val_47 1 +470 val_470 1 +472 val_472 1 +475 val_475 1 +477 val_477 1 +478 val_478 1 +479 val_479 1 +480 val_480 1 +481 val_481 1 +482 val_482 1 +483 val_483 1 +484 val_484 1 +485 val_485 1 +487 val_487 1 +489 val_489 1 +490 val_490 1 +491 val_491 1 +492 val_492 1 +493 val_493 1 +494 val_494 1 +495 val_495 1 +496 val_496 1 +497 val_497 1 +498 val_498 1 +5 val_5 1 +51 val_51 1 +53 val_53 1 +54 val_54 1 +57 val_57 1 +58 val_58 1 +64 val_64 1 +65 val_65 1 +66 val_66 1 +67 val_67 1 +69 val_69 1 +70 val_70 1 +72 val_72 1 +74 val_74 1 +76 val_76 1 +77 val_77 1 +78 val_78 1 +8 val_8 1 +80 val_80 1 +82 val_82 1 +83 val_83 1 +84 val_84 1 +85 val_85 1 +86 val_86 1 +87 val_87 1 +9 val_9 1 +90 val_90 1 +92 val_92 1 +95 val_95 1 +96 val_96 1 +97 val_97 1 +98 val_98 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_bigdata-0-e011be1172043c0c6d0fd2c0e89f361e b/sql/hive/src/test/resources/golden/groupby_bigdata-0-e011be1172043c0c6d0fd2c0e89f361e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_bigdata-0-e011be1172043c0c6d0fd2c0e89f361e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_bigdata-1-1100bb0c115c024998d35888ae5bbd71 b/sql/hive/src/test/resources/golden/groupby_bigdata-1-1100bb0c115c024998d35888ae5bbd71 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_bigdata-1-1100bb0c115c024998d35888ae5bbd71 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_bigdata-2-3688b45adbdb190d58799c0b6d601055 b/sql/hive/src/test/resources/golden/groupby_bigdata-2-3688b45adbdb190d58799c0b6d601055 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_bigdata-2-3688b45adbdb190d58799c0b6d601055 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/groupby_complex_types-0-de39f8b5f4305136d945da94d5222283 b/sql/hive/src/test/resources/golden/groupby_complex_types-0-de39f8b5f4305136d945da94d5222283 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_complex_types-1-10fe6134247226ab2b309bb62460d080 b/sql/hive/src/test/resources/golden/groupby_complex_types-1-10fe6134247226ab2b309bb62460d080 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_complex_types-2-2500cd8e85b71222253a05a979442a4a b/sql/hive/src/test/resources/golden/groupby_complex_types-2-2500cd8e85b71222253a05a979442a4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_complex_types-3-85850072f0f9604d4e55a08fb9c45ba6 b/sql/hive/src/test/resources/golden/groupby_complex_types-3-85850072f0f9604d4e55a08fb9c45ba6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-0-b31bf66c43bb9f7ddc09b138b7bf36e0 b/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-0-b31bf66c43bb9f7ddc09b138b7bf36e0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-0-b31bf66c43bb9f7ddc09b138b7bf36e0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-1-de39f8b5f4305136d945da94d5222283 b/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-1-de39f8b5f4305136d945da94d5222283 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-2-10fe6134247226ab2b309bb62460d080 b/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-2-10fe6134247226ab2b309bb62460d080 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-3-28264b197e3997f7c5fe88c1c2f7d5c5 b/sql/hive/src/test/resources/golden/groupby_complex_types_multi_single_reducer-3-28264b197e3997f7c5fe88c1c2f7d5c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_distinct_samekey-0-63603572a0f759ea81f4649ae2210ef8 b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-0-63603572a0f759ea81f4649ae2210ef8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_distinct_samekey-1-a3f3e279ab0be5093f4a926e265c0211 b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-1-a3f3e279ab0be5093f4a926e265c0211 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-1-a3f3e279ab0be5093f4a926e265c0211 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_distinct_samekey-2-59ee4550803e419b3adb1e9dd4220113 b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-2-59ee4550803e419b3adb1e9dd4220113 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_distinct_samekey-3-12b0749f4fb915f3b2e317ed4fbc9cb4 b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-3-12b0749f4fb915f3b2e317ed4fbc9cb4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_distinct_samekey-4-d88c962262d3524bfc881b7309688e38 b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-4-d88c962262d3524bfc881b7309688e38 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_distinct_samekey-5-78c0b7be08118a14e0337ff552fcb9ad b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-5-78c0b7be08118a14e0337ff552fcb9ad new file mode 100644 index 0000000000000..917d19a8f8cd8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-5-78c0b7be08118a14e0337ff552fcb9ad @@ -0,0 +1,4 @@ +0 0 +2 2 +4 4 +5 5 diff --git a/sql/hive/src/test/resources/golden/groupby_distinct_samekey-6-edcbea736edb6104a73f0dc670418ee5 b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-6-edcbea736edb6104a73f0dc670418ee5 new file mode 100644 index 0000000000000..917d19a8f8cd8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-6-edcbea736edb6104a73f0dc670418ee5 @@ -0,0 +1,4 @@ +0 0 +2 2 +4 4 +5 5 diff --git a/sql/hive/src/test/resources/golden/groupby_distinct_samekey-7-ca16024e6f5399b1d035f5b9fd665163 b/sql/hive/src/test/resources/golden/groupby_distinct_samekey-7-ca16024e6f5399b1d035f5b9fd665163 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby_map_ppr-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_map_ppr-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby_map_ppr-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_map_ppr-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby_map_ppr-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_map_ppr-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr-3-1c0aa77190a5b3e1895e58cfbe7467a9 b/sql/hive/src/test/resources/golden/groupby_map_ppr-3-1c0aa77190a5b3e1895e58cfbe7467a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr-4-e5121a2b8210b2e4f8b1bfbf0a044486 b/sql/hive/src/test/resources/golden/groupby_map_ppr-4-e5121a2b8210b2e4f8b1bfbf0a044486 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr-5-d4faa22fc1ec8cfc8ab21474841d415a b/sql/hive/src/test/resources/golden/groupby_map_ppr-5-d4faa22fc1ec8cfc8ab21474841d415a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby_map_ppr-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..ae9bbc3e2c2f7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_map_ppr-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 1 00.0 +1 71 132828.0 +2 69 251142.0 +3 62 364008.0 +4 74 4105526.0 +5 6 5794.0 +6 5 6796.0 +7 6 71470.0 +8 8 81524.0 +9 7 92094.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-2-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-2-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-2-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-3-a04c523002e79c588e350486c815e785 b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-3-a04c523002e79c588e350486c815e785 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-4-d6c134387c0c9343ec6ea88b5086dbe2 b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-4-d6c134387c0c9343ec6ea88b5086dbe2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-5-2efbb90d3df011282b70623e0905c390 b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-5-2efbb90d3df011282b70623e0905c390 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-6-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-6-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..64bb7c62c1885 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_map_ppr_multi_distinct-6-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 1 00.0 0 1 +1 71 132828.0 10044 71 +2 69 251142.0 15780 69 +3 62 364008.0 20119 62 +4 74 4105526.0 30965 74 +5 6 5794.0 278 6 +6 5 6796.0 331 5 +7 6 71470.0 447 6 +8 8 81524.0 595 8 +9 7 92094.0 577 7 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-1-388618d4d475de38d5c280fd7038730b b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-1-388618d4d475de38d5c280fd7038730b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-10-6aa66df624cd32601218eee200977ce6 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-10-6aa66df624cd32601218eee200977ce6 new file mode 100644 index 0000000000000..6b6a788e382db --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-10-6aa66df624cd32601218eee200977ce6 @@ -0,0 +1,6 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-11-59a77127c166fef57504c011ccb427a6 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-11-59a77127c166fef57504c011ccb427a6 new file mode 100644 index 0000000000000..c33eed60c8d5b --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-11-59a77127c166fef57504c011ccb427a6 @@ -0,0 +1,6 @@ +0 1 +4 1 +8 1 +10 1 +16 1 +18 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-2-2e1779fc58da364612a1c84d563ea7d5 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-2-2e1779fc58da364612a1c84d563ea7d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-3-febd68f62dd71550dd3db8335d1f93f7 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-3-febd68f62dd71550dd3db8335d1f93f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-4-c2781ed9ce9a29f484f7648ce6e06a9e b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-4-c2781ed9ce9a29f484f7648ce6e06a9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-5-6aa66df624cd32601218eee200977ce6 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-5-6aa66df624cd32601218eee200977ce6 new file mode 100644 index 0000000000000..6b6a788e382db --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-5-6aa66df624cd32601218eee200977ce6 @@ -0,0 +1,6 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-6-59a77127c166fef57504c011ccb427a6 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-6-59a77127c166fef57504c011ccb427a6 new file mode 100644 index 0000000000000..c33eed60c8d5b --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-6-59a77127c166fef57504c011ccb427a6 @@ -0,0 +1,6 @@ +0 1 +4 1 +8 1 +10 1 +16 1 +18 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-7-293182ac89effb268855f5ac53e1ec11 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-7-293182ac89effb268855f5ac53e1ec11 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-7-293182ac89effb268855f5ac53e1ec11 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-8-51d6bc83dcb6610b5b4f350cbaf25d29 b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-8-51d6bc83dcb6610b5b4f350cbaf25d29 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-9-c2781ed9ce9a29f484f7648ce6e06a9e b/sql/hive/src/test/resources/golden/groupby_multi_insert_common_distinct-9-c2781ed9ce9a29f484f7648ce6e06a9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-0-b31bf66c43bb9f7ddc09b138b7bf36e0 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-0-b31bf66c43bb9f7ddc09b138b7bf36e0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-0-b31bf66c43bb9f7ddc09b138b7bf36e0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-1-f64b982c4bf34931f03447e635ae33d2 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-1-f64b982c4bf34931f03447e635ae33d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-10-3b3ef4d975716744c85af560aa240abd b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-10-3b3ef4d975716744c85af560aa240abd new file mode 100644 index 0000000000000..922f4bfc83e44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-10-3b3ef4d975716744c85af560aa240abd @@ -0,0 +1,10 @@ +0 1 00.0 0 3 +1 71 116414.0 10044 115 +2 69 225571.0 15780 111 +3 62 332004.0 20119 99 +4 74 452763.0 30965 124 +5 6 5397.0 278 10 +6 5 6398.0 331 6 +7 6 7735.0 447 10 +8 8 8762.0 595 10 +9 7 91047.0 577 12 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-11-4e95946ec07f04479da42ba5cbfa531b b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-11-4e95946ec07f04479da42ba5cbfa531b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-12-51fe5b5a17ddc56fb8712340b38773b2 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-12-51fe5b5a17ddc56fb8712340b38773b2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-13-38f492067df78144c272bb212633cc5e b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-13-38f492067df78144c272bb212633cc5e new file mode 100644 index 0000000000000..106132fc993d3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-13-38f492067df78144c272bb212633cc5e @@ -0,0 +1,5 @@ +5 6 5397.0 278 10 +6 5 6398.0 331 6 +7 6 7735.0 447 10 +8 8 8762.0 595 10 +9 7 91047.0 577 12 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-14-d7b3676444a9e95811184637dd0b3231 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-14-d7b3676444a9e95811184637dd0b3231 new file mode 100644 index 0000000000000..65235356ea425 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-14-d7b3676444a9e95811184637dd0b3231 @@ -0,0 +1,5 @@ +0 1 00.0 0 3 +1 71 116414.0 10044 115 +2 69 225571.0 15780 111 +3 62 332004.0 20119 99 +4 74 452763.0 30965 124 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-15-3b3ef4d975716744c85af560aa240abd b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-15-3b3ef4d975716744c85af560aa240abd new file mode 100644 index 0000000000000..922f4bfc83e44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-15-3b3ef4d975716744c85af560aa240abd @@ -0,0 +1,10 @@ +0 1 00.0 0 3 +1 71 116414.0 10044 115 +2 69 225571.0 15780 111 +3 62 332004.0 20119 99 +4 74 452763.0 30965 124 +5 6 5397.0 278 10 +6 5 6398.0 331 6 +7 6 7735.0 447 10 +8 8 8762.0 595 10 +9 7 91047.0 577 12 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-16-b21ae88a5fc7f9b5c25ca954889ee421 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-16-b21ae88a5fc7f9b5c25ca954889ee421 new file mode 100644 index 0000000000000..017878bc9bee5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-16-b21ae88a5fc7f9b5c25ca954889ee421 @@ -0,0 +1,10 @@ +0 1 00.0 0 3 +1 4 1878.0 878 6 +1 5 1729.0 729 8 +1 6 11282.0 1282 12 +1 6 11494.0 1494 11 +1 7 11171.0 1171 11 +1 7 11516.0 1516 10 +1 8 11263.0 1263 10 +1 9 12294.0 2294 14 +1 9 12654.0 2654 16 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-17-7f344c2f066d74ecd135c43d39658bae b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-17-7f344c2f066d74ecd135c43d39658bae new file mode 100644 index 0000000000000..f21a658e3c68f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-17-7f344c2f066d74ecd135c43d39658bae @@ -0,0 +1,32 @@ +5 1 5102.0 102 2 +5 1 5116.0 116 2 +5 1 515.0 15 3 +5 1 553.0 53 1 +5 1 554.0 54 1 +5 1 557.0 57 1 +6 1 6134.0 134 2 +6 1 664.0 64 1 +6 1 665.0 65 1 +6 1 666.0 66 1 +6 1 669.0 69 1 +7 1 7144.0 144 2 +7 1 7152.0 152 2 +7 1 7210.0 210 3 +7 1 774.0 74 1 +7 1 777.0 77 1 +7 1 778.0 78 1 +8 1 8166.0 166 2 +8 1 8168.0 168 2 +8 1 88.0 8 1 +8 1 880.0 80 1 +8 1 882.0 82 1 +8 1 885.0 85 1 +8 1 886.0 86 1 +8 1 887.0 87 1 +9 1 9190.0 190 2 +9 1 9194.0 194 2 +9 1 9196.0 196 2 +9 1 9270.0 270 3 +9 1 99.0 9 1 +9 1 992.0 92 1 +9 1 996.0 96 1 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-18-4938ddc6b516cf67779be0d7dc29e7ab b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-18-4938ddc6b516cf67779be0d7dc29e7ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-19-180b611e08d4080fa098ed69169c2478 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-19-180b611e08d4080fa098ed69169c2478 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-2-392062177be62090adedf1ab6c0a0b78 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-2-392062177be62090adedf1ab6c0a0b78 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-20-db2149b42cdbf998187034233fc846cc b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-20-db2149b42cdbf998187034233fc846cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-21-322f23866cf3ca62d4ba93cf904c520 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-21-322f23866cf3ca62d4ba93cf904c520 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-22-21fcbcafc3b5b22572ddd5c87df1c06f b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-22-21fcbcafc3b5b22572ddd5c87df1c06f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-3-82b65775ae9c6dcb85ca87804dbb0288 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-3-82b65775ae9c6dcb85ca87804dbb0288 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-4-7df7c16e4063683d0ca40360da460799 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-4-7df7c16e4063683d0ca40360da460799 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-5-c19e7bf0732e7a103966ebc43eb0bcea b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-5-c19e7bf0732e7a103966ebc43eb0bcea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-6-3be7ae6a87b9091bc61d221de8bdd55b b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-6-3be7ae6a87b9091bc61d221de8bdd55b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-7-ad39c0f14b6e0752489479138516bd57 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-7-ad39c0f14b6e0752489479138516bd57 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-8-38f492067df78144c272bb212633cc5e b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-8-38f492067df78144c272bb212633cc5e new file mode 100644 index 0000000000000..106132fc993d3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-8-38f492067df78144c272bb212633cc5e @@ -0,0 +1,5 @@ +5 6 5397.0 278 10 +6 5 6398.0 331 6 +7 6 7735.0 447 10 +8 8 8762.0 595 10 +9 7 91047.0 577 12 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-9-d7b3676444a9e95811184637dd0b3231 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-9-d7b3676444a9e95811184637dd0b3231 new file mode 100644 index 0000000000000..65235356ea425 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer-9-d7b3676444a9e95811184637dd0b3231 @@ -0,0 +1,5 @@ +0 1 00.0 0 3 +1 71 116414.0 10044 115 +2 69 225571.0 15780 111 +3 62 332004.0 20119 99 +4 74 452763.0 30965 124 diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-0-b31bf66c43bb9f7ddc09b138b7bf36e0 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-0-b31bf66c43bb9f7ddc09b138b7bf36e0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-0-b31bf66c43bb9f7ddc09b138b7bf36e0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-1-660d3ff0ca588c2da097b5f3ca753ada b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-1-660d3ff0ca588c2da097b5f3ca753ada new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-2-7372ea92a15e7beed3be5e2dd2cbac47 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-2-7372ea92a15e7beed3be5e2dd2cbac47 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-3-eeaa92b3f8e6667d3395f8dc7ea6d89e b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-3-eeaa92b3f8e6667d3395f8dc7ea6d89e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-4-427627f4cf6d91e5314c85e0c5aa2f84 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-4-427627f4cf6d91e5314c85e0c5aa2f84 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-5-376542befbcab97d864e874251720c40 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-5-376542befbcab97d864e874251720c40 new file mode 100644 index 0000000000000..dbc7aebdbbae5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-5-376542befbcab97d864e874251720c40 @@ -0,0 +1,5 @@ +5 6 +6 5 +7 6 +8 8 +9 7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-6-8566e4c94d34b0fc4a71d34e89529c74 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-6-8566e4c94d34b0fc4a71d34e89529c74 new file mode 100644 index 0000000000000..ebf9d6978dec6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-6-8566e4c94d34b0fc4a71d34e89529c74 @@ -0,0 +1,5 @@ +0 1 3 +1 71 115 +2 69 111 +3 62 99 +4 74 124 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-7-4938ddc6b516cf67779be0d7dc29e7ab b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-7-4938ddc6b516cf67779be0d7dc29e7ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-8-180b611e08d4080fa098ed69169c2478 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer2-8-180b611e08d4080fa098ed69169c2478 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-0-36cc74ebca5adb026757c5cd8df5a0dd b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-0-36cc74ebca5adb026757c5cd8df5a0dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-1-9e61989d717403353689cbbb2816210d b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-1-9e61989d717403353689cbbb2816210d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-10-73819ea1a7c0653a61652b3766afb003 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-10-73819ea1a7c0653a61652b3766afb003 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-10-73819ea1a7c0653a61652b3766afb003 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-11-8603afa3bf3deeda532fc69b7df49e09 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-11-8603afa3bf3deeda532fc69b7df49e09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-12-2ab5cc10c0b37e7cf3c0d33fdc39b628 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-12-2ab5cc10c0b37e7cf3c0d33fdc39b628 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-13-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-13-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..a5ae9e2a62227 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-13-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1,2 @@ +100 2 +200 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-14-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-14-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..16c7a647a2344 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-14-a9a491ed99b4629ee15bce994d5c6c63 @@ -0,0 +1 @@ +400 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-15-36e81eba0a6a42532d8ee147086d668a b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-15-36e81eba0a6a42532d8ee147086d668a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-16-59b2c947e136092e7ca5019c96a9994b b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-16-59b2c947e136092e7ca5019c96a9994b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-17-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-17-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..67f077e51a647 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-17-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1,2 @@ +val_100 2 +val_200 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-18-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-18-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..b06ad20135fbe --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-18-a9a491ed99b4629ee15bce994d5c6c63 @@ -0,0 +1 @@ +val_200 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-2-8603afa3bf3deeda532fc69b7df49e09 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-2-8603afa3bf3deeda532fc69b7df49e09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-3-2ab5cc10c0b37e7cf3c0d33fdc39b628 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-3-2ab5cc10c0b37e7cf3c0d33fdc39b628 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-4-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-4-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..a5ae9e2a62227 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-4-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1,2 @@ +100 2 +200 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-5-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-5-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..16c7a647a2344 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-5-a9a491ed99b4629ee15bce994d5c6c63 @@ -0,0 +1 @@ +400 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-6-36e81eba0a6a42532d8ee147086d668a b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-6-36e81eba0a6a42532d8ee147086d668a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-7-59b2c947e136092e7ca5019c96a9994b b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-7-59b2c947e136092e7ca5019c96a9994b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-8-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-8-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..67f077e51a647 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-8-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1,2 @@ +val_100 2 +val_200 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-9-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-9-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..b06ad20135fbe --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_multi_single_reducer3-9-a9a491ed99b4629ee15bce994d5c6c63 @@ -0,0 +1 @@ +val_200 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_neg_float-0-dd44874fbefeee1ed0a0dd8bfbab96eb b/sql/hive/src/test/resources/golden/groupby_neg_float-0-dd44874fbefeee1ed0a0dd8bfbab96eb new file mode 100644 index 0000000000000..efe5cc7795c65 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_neg_float-0-dd44874fbefeee1ed0a0dd8bfbab96eb @@ -0,0 +1 @@ +-30.33 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_neg_float-1-4a435e268a327404f75725b82a32ee03 b/sql/hive/src/test/resources/golden/groupby_neg_float-1-4a435e268a327404f75725b82a32ee03 new file mode 100644 index 0000000000000..efe5cc7795c65 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_neg_float-1-4a435e268a327404f75725b82a32ee03 @@ -0,0 +1 @@ +-30.33 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_position-0-422c2068a838f59324c1d9861225c824 b/sql/hive/src/test/resources/golden/groupby_position-0-422c2068a838f59324c1d9861225c824 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_position-0-422c2068a838f59324c1d9861225c824 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_position-1-6b06902de5c0ca13cebe03018d86f447 b/sql/hive/src/test/resources/golden/groupby_position-1-6b06902de5c0ca13cebe03018d86f447 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_position-10-b4c6c0aedcc924e2af65549b87b3f3f7 b/sql/hive/src/test/resources/golden/groupby_position-10-b4c6c0aedcc924e2af65549b87b3f3f7 new file mode 100644 index 0000000000000..f2a91fe3bfab0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_position-10-b4c6c0aedcc924e2af65549b87b3f3f7 @@ -0,0 +1,13 @@ +0 val_0 1 +2 val_2 1 +4 val_4 1 +5 val_5 1 +8 val_8 1 +9 val_9 1 +10 val_10 1 +11 val_11 1 +12 val_12 1 +15 val_15 1 +17 val_17 1 +18 val_18 1 +19 val_19 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_position-11-75a28e558d2fb7a78f43f55b0479c646 b/sql/hive/src/test/resources/golden/groupby_position-11-75a28e558d2fb7a78f43f55b0479c646 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_position-12-5583e5cfcf8083d45a3bd80434c1829f b/sql/hive/src/test/resources/golden/groupby_position-12-5583e5cfcf8083d45a3bd80434c1829f new file mode 100644 index 0000000000000..c8e666cb01e8e --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_position-12-5583e5cfcf8083d45a3bd80434c1829f @@ -0,0 +1,14 @@ +0 3 +5 3 +12 2 +15 2 +18 2 +2 1 +4 1 +8 1 +9 1 +10 1 +11 1 +17 1 +19 1 +20 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_position-13-9ee2150594ad2eece6ee14424155d396 b/sql/hive/src/test/resources/golden/groupby_position-13-9ee2150594ad2eece6ee14424155d396 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_position-14-6f54558123eb5d63eeeb3e261c1dc5fb b/sql/hive/src/test/resources/golden/groupby_position-14-6f54558123eb5d63eeeb3e261c1dc5fb new file mode 100644 index 0000000000000..96a824a81c589 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_position-14-6f54558123eb5d63eeeb3e261c1dc5fb @@ -0,0 +1,3 @@ +19 val_19 19 val_19 +18 val_18 18 val_18 +17 val_17 17 val_17 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_position-2-627bb7be9c0edb5ba4c677912800d364 b/sql/hive/src/test/resources/golden/groupby_position-2-627bb7be9c0edb5ba4c677912800d364 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_position-3-c39bd6c3c24658ec082bef9876d6e2ac b/sql/hive/src/test/resources/golden/groupby_position-3-c39bd6c3c24658ec082bef9876d6e2ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_position-4-19461cbd2be1f2f3f3b65478e3eeb53c b/sql/hive/src/test/resources/golden/groupby_position-4-19461cbd2be1f2f3f3b65478e3eeb53c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_position-5-e2470670c5d709001fb17ecbc6e4f85d b/sql/hive/src/test/resources/golden/groupby_position-5-e2470670c5d709001fb17ecbc6e4f85d new file mode 100644 index 0000000000000..a79396dac079a --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_position-5-e2470670c5d709001fb17ecbc6e4f85d @@ -0,0 +1,13 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_position-6-b4c6c0aedcc924e2af65549b87b3f3f7 b/sql/hive/src/test/resources/golden/groupby_position-6-b4c6c0aedcc924e2af65549b87b3f3f7 new file mode 100644 index 0000000000000..f2a91fe3bfab0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_position-6-b4c6c0aedcc924e2af65549b87b3f3f7 @@ -0,0 +1,13 @@ +0 val_0 1 +2 val_2 1 +4 val_4 1 +5 val_5 1 +8 val_8 1 +9 val_9 1 +10 val_10 1 +11 val_11 1 +12 val_12 1 +15 val_15 1 +17 val_17 1 +18 val_18 1 +19 val_19 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_position-7-5b32a45af11e04b46f8566bd27a28014 b/sql/hive/src/test/resources/golden/groupby_position-7-5b32a45af11e04b46f8566bd27a28014 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_position-8-3ff6c255dda69ec117c6a7ec93db2f1c b/sql/hive/src/test/resources/golden/groupby_position-8-3ff6c255dda69ec117c6a7ec93db2f1c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_position-9-e2470670c5d709001fb17ecbc6e4f85d b/sql/hive/src/test/resources/golden/groupby_position-9-e2470670c5d709001fb17ecbc6e4f85d new file mode 100644 index 0000000000000..a79396dac079a --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_position-9-e2470670c5d709001fb17ecbc6e4f85d @@ -0,0 +1,13 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_ppr-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby_ppr-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_ppr-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_ppr-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby_ppr-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_ppr-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_ppr-2-1c0aa77190a5b3e1895e58cfbe7467a9 b/sql/hive/src/test/resources/golden/groupby_ppr-2-1c0aa77190a5b3e1895e58cfbe7467a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_ppr-3-e5121a2b8210b2e4f8b1bfbf0a044486 b/sql/hive/src/test/resources/golden/groupby_ppr-3-e5121a2b8210b2e4f8b1bfbf0a044486 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_ppr-4-d4faa22fc1ec8cfc8ab21474841d415a b/sql/hive/src/test/resources/golden/groupby_ppr-4-d4faa22fc1ec8cfc8ab21474841d415a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_ppr-5-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby_ppr-5-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..ae9bbc3e2c2f7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_ppr-5-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 1 00.0 +1 71 132828.0 +2 69 251142.0 +3 62 364008.0 +4 74 4105526.0 +5 6 5794.0 +6 5 6796.0 +7 6 71470.0 +8 8 81524.0 +9 7 92094.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-0-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-0-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-0-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-2-3aa4057488720c0f514696154f2070b5 b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-2-3aa4057488720c0f514696154f2070b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-3-ace7b2624b125764e9f1f6b5559f023d b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-3-ace7b2624b125764e9f1f6b5559f023d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-4-61ae2f9b3a9a2f60a307aa25e42425d b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-4-61ae2f9b3a9a2f60a307aa25e42425d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-5-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-5-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..64bb7c62c1885 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_ppr_multi_distinct-5-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +0 1 00.0 0 1 +1 71 132828.0 10044 71 +2 69 251142.0 15780 69 +3 62 364008.0 20119 62 +4 74 4105526.0 30965 74 +5 6 5794.0 278 6 +6 5 6796.0 331 5 +7 6 71470.0 447 6 +8 8 81524.0 595 8 +9 7 92094.0 577 7 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_1-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-10-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_1-10-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-10-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-11-c166396bbdb62490f56ab0bc84aaa7d9 b/sql/hive/src/test/resources/golden/groupby_sort_1-11-c166396bbdb62490f56ab0bc84aaa7d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-12-c8a51e8a269da4c4ae98ac105a573f3c b/sql/hive/src/test/resources/golden/groupby_sort_1-12-c8a51e8a269da4c4ae98ac105a573f3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-13-46c4a3675c8de0510b648856a193f3e7 b/sql/hive/src/test/resources/golden/groupby_sort_1-13-46c4a3675c8de0510b648856a193f3e7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-14-bbdd53118f788d7bb679d094c41243c8 b/sql/hive/src/test/resources/golden/groupby_sort_1-14-bbdd53118f788d7bb679d094c41243c8 new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-14-bbdd53118f788d7bb679d094c41243c8 @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-15-54f3a2a97939d3eca8a601b74ef30dea b/sql/hive/src/test/resources/golden/groupby_sort_1-15-54f3a2a97939d3eca8a601b74ef30dea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-16-236d51792f4913b5858f367e3cff2c60 b/sql/hive/src/test/resources/golden/groupby_sort_1-16-236d51792f4913b5858f367e3cff2c60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-17-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_1-17-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-17-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-18-1e77dcdd6f54334dbae6a4d11ad6ff64 b/sql/hive/src/test/resources/golden/groupby_sort_1-18-1e77dcdd6f54334dbae6a4d11ad6ff64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-19-90c84358c50e51be5ce210bd7dec9bc6 b/sql/hive/src/test/resources/golden/groupby_sort_1-19-90c84358c50e51be5ce210bd7dec9bc6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_1-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-20-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_1-20-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-20-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-21-27e2e662d517f32952145cc2a51bf564 b/sql/hive/src/test/resources/golden/groupby_sort_1-21-27e2e662d517f32952145cc2a51bf564 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-22-6775cb6aee040e22508cf3cac0b55f06 b/sql/hive/src/test/resources/golden/groupby_sort_1-22-6775cb6aee040e22508cf3cac0b55f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-23-eb2b625279d8794390d7e2dc8f2dc907 b/sql/hive/src/test/resources/golden/groupby_sort_1-23-eb2b625279d8794390d7e2dc8f2dc907 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-24-d53196339980a00a619788bd799a32e7 b/sql/hive/src/test/resources/golden/groupby_sort_1-24-d53196339980a00a619788bd799a32e7 new file mode 100644 index 0000000000000..c1cc4ee204773 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-24-d53196339980a00a619788bd799a32e7 @@ -0,0 +1,5 @@ +1 1 1 +1 2 1 +1 3 1 +1 7 1 +1 8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-25-138e93f004f7bd16e63bbf8d9090af21 b/sql/hive/src/test/resources/golden/groupby_sort_1-25-138e93f004f7bd16e63bbf8d9090af21 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-26-93153fd67c1d19bb9ad64f98294e4981 b/sql/hive/src/test/resources/golden/groupby_sort_1-26-93153fd67c1d19bb9ad64f98294e4981 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-27-ca369ab23c32070e2d42ba8df036175f b/sql/hive/src/test/resources/golden/groupby_sort_1-27-ca369ab23c32070e2d42ba8df036175f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-28-c4ec0433a832ef551d70254957e3afca b/sql/hive/src/test/resources/golden/groupby_sort_1-28-c4ec0433a832ef551d70254957e3afca new file mode 100644 index 0000000000000..97a3b8c2f5977 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-28-c4ec0433a832ef551d70254957e3afca @@ -0,0 +1,6 @@ +1 1 11 1 +2 1 12 1 +3 1 13 1 +7 1 17 1 +8 1 18 1 +8 1 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-29-4095695e88e23dd42acb1749a83bdbb7 b/sql/hive/src/test/resources/golden/groupby_sort_1-29-4095695e88e23dd42acb1749a83bdbb7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_1-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-30-d9ba55c20c3f5df262e81cbf5dab5387 b/sql/hive/src/test/resources/golden/groupby_sort_1-30-d9ba55c20c3f5df262e81cbf5dab5387 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-31-d53196339980a00a619788bd799a32e7 b/sql/hive/src/test/resources/golden/groupby_sort_1-31-d53196339980a00a619788bd799a32e7 new file mode 100644 index 0000000000000..f0192040e147b --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-31-d53196339980a00a619788bd799a32e7 @@ -0,0 +1,5 @@ +1 2 1 +2 3 1 +3 4 1 +7 8 1 +8 9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-32-c88ee457dee7bb141a198a2ae39d787f b/sql/hive/src/test/resources/golden/groupby_sort_1-32-c88ee457dee7bb141a198a2ae39d787f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-33-c04167e880fe3e942ce77e75d660f1ef b/sql/hive/src/test/resources/golden/groupby_sort_1-33-c04167e880fe3e942ce77e75d660f1ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-34-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_1-34-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..b6c2eb98e5e49 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-34-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +2 1 +4 1 +6 1 +14 1 +16 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-35-deb3f1793f51d1edf011a8405abf4968 b/sql/hive/src/test/resources/golden/groupby_sort_1-35-deb3f1793f51d1edf011a8405abf4968 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-36-7871722f392f801a868e0e2fb372c610 b/sql/hive/src/test/resources/golden/groupby_sort_1-36-7871722f392f801a868e0e2fb372c610 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-37-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_1-37-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..8e7ee8a2b47bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-37-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,10 @@ +1 1 +1 1 +2 1 +2 1 +3 1 +3 1 +7 1 +7 1 +8 2 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-38-b71bdaa2b7c4b5c51a9773c123e5306d b/sql/hive/src/test/resources/golden/groupby_sort_1-38-b71bdaa2b7c4b5c51a9773c123e5306d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-39-89aa7bab4272546e06cd7e504380d96b b/sql/hive/src/test/resources/golden/groupby_sort_1-39-89aa7bab4272546e06cd7e504380d96b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-4-e906be6d27c9dfcffd4af171541639ad b/sql/hive/src/test/resources/golden/groupby_sort_1-4-e906be6d27c9dfcffd4af171541639ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-40-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_1-40-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..0b2b54cd94e4f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-40-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,10 @@ +1 1 +2 1 +2 1 +3 1 +4 1 +6 1 +7 1 +8 2 +14 1 +16 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-41-348b0126cb1d214fea58d4af9d3dbf67 b/sql/hive/src/test/resources/golden/groupby_sort_1-41-348b0126cb1d214fea58d4af9d3dbf67 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-42-83889e7dc73d796cc869160b6b35102c b/sql/hive/src/test/resources/golden/groupby_sort_1-42-83889e7dc73d796cc869160b6b35102c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-43-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_1-43-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..3d4708b7c9d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-43-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 2 +2 2 +3 2 +7 2 +8 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-44-41462b2e60bf44571a7b1fb435374d6a b/sql/hive/src/test/resources/golden/groupby_sort_1-44-41462b2e60bf44571a7b1fb435374d6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-45-8aea6edf0481e2a10f14879acba62648 b/sql/hive/src/test/resources/golden/groupby_sort_1-45-8aea6edf0481e2a10f14879acba62648 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-46-4999db9eb86d9455c1d75e97b052f279 b/sql/hive/src/test/resources/golden/groupby_sort_1-46-4999db9eb86d9455c1d75e97b052f279 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-47-fecb9f2203aeb2ac4b693a97badde6fa b/sql/hive/src/test/resources/golden/groupby_sort_1-47-fecb9f2203aeb2ac4b693a97badde6fa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-48-f0f18d5fa2824735799edc4bdeb1afb2 b/sql/hive/src/test/resources/golden/groupby_sort_1-48-f0f18d5fa2824735799edc4bdeb1afb2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-49-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_1-49-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-49-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-5-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_1-5-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-50-461847b174096e7a255fb07cb35ab434 b/sql/hive/src/test/resources/golden/groupby_sort_1-50-461847b174096e7a255fb07cb35ab434 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-51-8da967e7c2210ad044ba8b08d1685065 b/sql/hive/src/test/resources/golden/groupby_sort_1-51-8da967e7c2210ad044ba8b08d1685065 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-52-c4ec0433a832ef551d70254957e3afca b/sql/hive/src/test/resources/golden/groupby_sort_1-52-c4ec0433a832ef551d70254957e3afca new file mode 100644 index 0000000000000..97a3b8c2f5977 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-52-c4ec0433a832ef551d70254957e3afca @@ -0,0 +1,6 @@ +1 1 11 1 +2 1 12 1 +3 1 13 1 +7 1 17 1 +8 1 18 1 +8 1 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-53-fdc295aaefba56548a22dfcddc2a94f2 b/sql/hive/src/test/resources/golden/groupby_sort_1-53-fdc295aaefba56548a22dfcddc2a94f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-54-74bfe3fbf9d68a75013fba1c3c7bbd7c b/sql/hive/src/test/resources/golden/groupby_sort_1-54-74bfe3fbf9d68a75013fba1c3c7bbd7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-55-1013d1ad014aa203b1dce26085b09c01 b/sql/hive/src/test/resources/golden/groupby_sort_1-55-1013d1ad014aa203b1dce26085b09c01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-56-5373c5449884d95bc7db9dab55239a49 b/sql/hive/src/test/resources/golden/groupby_sort_1-56-5373c5449884d95bc7db9dab55239a49 new file mode 100644 index 0000000000000..7ca6b0b28a960 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-56-5373c5449884d95bc7db9dab55239a49 @@ -0,0 +1,6 @@ +1 1 11 2 1 +2 1 12 2 1 +3 1 13 2 1 +7 1 17 2 1 +8 1 18 2 1 +8 1 28 2 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-57-825135844e8ac6d8d5254cc961ec8fd0 b/sql/hive/src/test/resources/golden/groupby_sort_1-57-825135844e8ac6d8d5254cc961ec8fd0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-58-e671e63f6b70094048563a9c33748c97 b/sql/hive/src/test/resources/golden/groupby_sort_1-58-e671e63f6b70094048563a9c33748c97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-59-c4ec0433a832ef551d70254957e3afca b/sql/hive/src/test/resources/golden/groupby_sort_1-59-c4ec0433a832ef551d70254957e3afca new file mode 100644 index 0000000000000..97a3b8c2f5977 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-59-c4ec0433a832ef551d70254957e3afca @@ -0,0 +1,6 @@ +1 1 11 1 +2 1 12 1 +3 1 13 1 +7 1 17 1 +8 1 18 1 +8 1 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-6-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_1-6-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-60-51824b04f2a008f63e1469695e60d9c8 b/sql/hive/src/test/resources/golden/groupby_sort_1-60-51824b04f2a008f63e1469695e60d9c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-61-18b0757f6d9e29808061ca3763b8b6d9 b/sql/hive/src/test/resources/golden/groupby_sort_1-61-18b0757f6d9e29808061ca3763b8b6d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-62-c4ec0433a832ef551d70254957e3afca b/sql/hive/src/test/resources/golden/groupby_sort_1-62-c4ec0433a832ef551d70254957e3afca new file mode 100644 index 0000000000000..58e16ef3c0ef3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-62-c4ec0433a832ef551d70254957e3afca @@ -0,0 +1,6 @@ +1 2 11 1 +2 2 12 1 +3 2 13 1 +7 2 17 1 +8 2 18 1 +8 2 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-63-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby_sort_1-63-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-63-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-64-7f98b724df05f51b3ec1f087a8da414e b/sql/hive/src/test/resources/golden/groupby_sort_1-64-7f98b724df05f51b3ec1f087a8da414e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-64-7f98b724df05f51b3ec1f087a8da414e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-65-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby_sort_1-65-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-65-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-66-b4c5b3eeb74085711866a2eec27bcb37 b/sql/hive/src/test/resources/golden/groupby_sort_1-66-b4c5b3eeb74085711866a2eec27bcb37 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-67-b4fec0996399be2239961594897d6715 b/sql/hive/src/test/resources/golden/groupby_sort_1-67-b4fec0996399be2239961594897d6715 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-68-9d01ff3d1fde3ed2ab55ea9d7079fd5c b/sql/hive/src/test/resources/golden/groupby_sort_1-68-9d01ff3d1fde3ed2ab55ea9d7079fd5c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-68-9d01ff3d1fde3ed2ab55ea9d7079fd5c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-69-ed76c0068780120a6f23feefee303403 b/sql/hive/src/test/resources/golden/groupby_sort_1-69-ed76c0068780120a6f23feefee303403 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-69-ed76c0068780120a6f23feefee303403 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-7-c0ea81b686236d661166912040a16ea7 b/sql/hive/src/test/resources/golden/groupby_sort_1-7-c0ea81b686236d661166912040a16ea7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-70-2d5403943a3efdf9fd3eccb6927499cc b/sql/hive/src/test/resources/golden/groupby_sort_1-70-2d5403943a3efdf9fd3eccb6927499cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-71-ca16ff548ebb9bab4b76f2e339064a9e b/sql/hive/src/test/resources/golden/groupby_sort_1-71-ca16ff548ebb9bab4b76f2e339064a9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-72-d2fa5e7bdd6b7934d10d5905cacd5715 b/sql/hive/src/test/resources/golden/groupby_sort_1-72-d2fa5e7bdd6b7934d10d5905cacd5715 new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-72-d2fa5e7bdd6b7934d10d5905cacd5715 @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-73-6296dde4e71acf7e7f42ee58cf3b5acd b/sql/hive/src/test/resources/golden/groupby_sort_1-73-6296dde4e71acf7e7f42ee58cf3b5acd new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-73-6296dde4e71acf7e7f42ee58cf3b5acd @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-74-6f7caef1c773268350c9cf94ad85be01 b/sql/hive/src/test/resources/golden/groupby_sort_1-74-6f7caef1c773268350c9cf94ad85be01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-75-4931c5a72a5231f67317d27ca025bb97 b/sql/hive/src/test/resources/golden/groupby_sort_1-75-4931c5a72a5231f67317d27ca025bb97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-76-d2fa5e7bdd6b7934d10d5905cacd5715 b/sql/hive/src/test/resources/golden/groupby_sort_1-76-d2fa5e7bdd6b7934d10d5905cacd5715 new file mode 100644 index 0000000000000..d15db8c5d079f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-76-d2fa5e7bdd6b7934d10d5905cacd5715 @@ -0,0 +1 @@ +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-77-6d6eac558569563cc47a657daffa8ba7 b/sql/hive/src/test/resources/golden/groupby_sort_1-77-6d6eac558569563cc47a657daffa8ba7 new file mode 100644 index 0000000000000..3d1609d961673 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_1-77-6d6eac558569563cc47a657daffa8ba7 @@ -0,0 +1,2 @@ +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-8-f0ee61903aeacb758e2eada242e5e14 b/sql/hive/src/test/resources/golden/groupby_sort_1-8-f0ee61903aeacb758e2eada242e5e14 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_1-9-ebc7ac3b2dfdb958d161cd7c8f947a72 b/sql/hive/src/test/resources/golden/groupby_sort_1-9-ebc7ac3b2dfdb958d161cd7c8f947a72 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_10-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_10-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_10-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_10-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-10-b4e225bc4787d7718bae6f00d8addfe2 b/sql/hive/src/test/resources/golden/groupby_sort_10-10-b4e225bc4787d7718bae6f00d8addfe2 new file mode 100644 index 0000000000000..c6bb9dbfd6497 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_10-10-b4e225bc4787d7718bae6f00d8addfe2 @@ -0,0 +1,2 @@ +0 +11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-11-4d9341036906853bb9a1641f5e0179b3 b/sql/hive/src/test/resources/golden/groupby_sort_10-11-4d9341036906853bb9a1641f5e0179b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_10-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_10-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_10-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_10-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-4-475d50465b23adfb70e67122425ede9e b/sql/hive/src/test/resources/golden/groupby_sort_10-4-475d50465b23adfb70e67122425ede9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-5-91f5326fe696124d862dfcfb72de2bf4 b/sql/hive/src/test/resources/golden/groupby_sort_10-5-91f5326fe696124d862dfcfb72de2bf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-6-7da6ce8e3115f054ce532c26fb19bb44 b/sql/hive/src/test/resources/golden/groupby_sort_10-6-7da6ce8e3115f054ce532c26fb19bb44 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-7-b4e225bc4787d7718bae6f00d8addfe2 b/sql/hive/src/test/resources/golden/groupby_sort_10-7-b4e225bc4787d7718bae6f00d8addfe2 new file mode 100644 index 0000000000000..c6bb9dbfd6497 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_10-7-b4e225bc4787d7718bae6f00d8addfe2 @@ -0,0 +1,2 @@ +0 +11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-8-2c37a0e69aca38f2ce9db4c0aaf94db7 b/sql/hive/src/test/resources/golden/groupby_sort_10-8-2c37a0e69aca38f2ce9db4c0aaf94db7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_10-9-aed4b33d1aeb64e88cf36e29f8d8b6c b/sql/hive/src/test/resources/golden/groupby_sort_10-9-aed4b33d1aeb64e88cf36e29f8d8b6c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_11-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_11-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-10-dc4ffd56a4be5e2c52df2f70c614720d b/sql/hive/src/test/resources/golden/groupby_sort_11-10-dc4ffd56a4be5e2c52df2f70c614720d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-11-d9bf7e80b71121935ed4b008ae916cb1 b/sql/hive/src/test/resources/golden/groupby_sort_11-11-d9bf7e80b71121935ed4b008ae916cb1 new file mode 100644 index 0000000000000..ded2854cdf564 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-11-d9bf7e80b71121935ed4b008ae916cb1 @@ -0,0 +1,6 @@ +1 3 3 0.0 +1 1 1 2.0 +1 1 1 4.0 +1 3 3 5.0 +1 1 1 8.0 +1 1 1 9.0 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-12-56f9f2a13698e71c4f00c93c48dffc30 b/sql/hive/src/test/resources/golden/groupby_sort_11-12-56f9f2a13698e71c4f00c93c48dffc30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-13-c7d70702783eb90d4f53028a63c318f8 b/sql/hive/src/test/resources/golden/groupby_sort_11-13-c7d70702783eb90d4f53028a63c318f8 new file mode 100644 index 0000000000000..487b4c4a5cc6f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-13-c7d70702783eb90d4f53028a63c318f8 @@ -0,0 +1,6 @@ +0 1 3 3 0.0 +2 1 1 1 2.0 +4 1 1 1 4.0 +5 1 3 3 5.0 +8 1 1 1 8.0 +9 1 1 1 9.0 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-14-d403afd709251edba6ae13b8cc14e0b7 b/sql/hive/src/test/resources/golden/groupby_sort_11-14-d403afd709251edba6ae13b8cc14e0b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-15-9fd5f5fce6f3821f2d7801eb0e83a015 b/sql/hive/src/test/resources/golden/groupby_sort_11-15-9fd5f5fce6f3821f2d7801eb0e83a015 new file mode 100644 index 0000000000000..1e8b314962144 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-15-9fd5f5fce6f3821f2d7801eb0e83a015 @@ -0,0 +1 @@ +6 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-16-166ae99e823bc1bcbee39a466f9e3551 b/sql/hive/src/test/resources/golden/groupby_sort_11-16-166ae99e823bc1bcbee39a466f9e3551 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-17-5298cc011d107ad06c365d132cab6fc9 b/sql/hive/src/test/resources/golden/groupby_sort_11-17-5298cc011d107ad06c365d132cab6fc9 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-17-5298cc011d107ad06c365d132cab6fc9 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-18-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/groupby_sort_11-18-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-18-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-19-46ca52d697918f2327b2293d9fd57d15 b/sql/hive/src/test/resources/golden/groupby_sort_11-19-46ca52d697918f2327b2293d9fd57d15 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/groupby_sort_11-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-20-bd99462ed878bf4bec74b3cb9132908d b/sql/hive/src/test/resources/golden/groupby_sort_11-20-bd99462ed878bf4bec74b3cb9132908d new file mode 100644 index 0000000000000..1e8b314962144 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-20-bd99462ed878bf4bec74b3cb9132908d @@ -0,0 +1 @@ +6 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_11-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-4-475d50465b23adfb70e67122425ede9e b/sql/hive/src/test/resources/golden/groupby_sort_11-4-475d50465b23adfb70e67122425ede9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-5-7ca5ebad57578206b8830da6746fb952 b/sql/hive/src/test/resources/golden/groupby_sort_11-5-7ca5ebad57578206b8830da6746fb952 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-6-1c033f86ad59eb6ab59008d12cd00e7 b/sql/hive/src/test/resources/golden/groupby_sort_11-6-1c033f86ad59eb6ab59008d12cd00e7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-7-bd99462ed878bf4bec74b3cb9132908d b/sql/hive/src/test/resources/golden/groupby_sort_11-7-bd99462ed878bf4bec74b3cb9132908d new file mode 100644 index 0000000000000..1e8b314962144 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-7-bd99462ed878bf4bec74b3cb9132908d @@ -0,0 +1 @@ +6 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-8-4bf6c5e938afa4f937b69d2a095c675c b/sql/hive/src/test/resources/golden/groupby_sort_11-8-4bf6c5e938afa4f937b69d2a095c675c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_11-9-9be51f5537a03d7dbf56693d9fdc1688 b/sql/hive/src/test/resources/golden/groupby_sort_11-9-9be51f5537a03d7dbf56693d9fdc1688 new file mode 100644 index 0000000000000..6a5fe2835fc56 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_11-9-9be51f5537a03d7dbf56693d9fdc1688 @@ -0,0 +1 @@ +6 10 10 28.0 diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_2-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_2-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_2-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_2-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-10-5032dd0941fab4871eefd79f7e4a5c86 b/sql/hive/src/test/resources/golden/groupby_sort_2-10-5032dd0941fab4871eefd79f7e4a5c86 new file mode 100644 index 0000000000000..c5b99ed941efc --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_2-10-5032dd0941fab4871eefd79f7e4a5c86 @@ -0,0 +1,6 @@ +11 1 +12 1 +13 1 +17 1 +18 1 +28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_2-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_2-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_2-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_2-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-4-7dc6959cca820ea825e6567e1b152088 b/sql/hive/src/test/resources/golden/groupby_sort_2-4-7dc6959cca820ea825e6567e1b152088 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-5-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_2-5-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-6-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_2-6-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-7-2238ae1cfb52dfd4f9e7b1d0e2b2c0f8 b/sql/hive/src/test/resources/golden/groupby_sort_2-7-2238ae1cfb52dfd4f9e7b1d0e2b2c0f8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-8-4d64b6bb15f6b31e47d52df53a1d9414 b/sql/hive/src/test/resources/golden/groupby_sort_2-8-4d64b6bb15f6b31e47d52df53a1d9414 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_2-9-30377eb1022ca1f4f5201f8897dff9ed b/sql/hive/src/test/resources/golden/groupby_sort_2-9-30377eb1022ca1f4f5201f8897dff9ed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_3-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_3-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_3-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_3-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-10-4bf8dba6e66e733423a3408d61897926 b/sql/hive/src/test/resources/golden/groupby_sort_3-10-4bf8dba6e66e733423a3408d61897926 new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_3-10-4bf8dba6e66e733423a3408d61897926 @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-11-2437764cdf86cd2d67430bd323346086 b/sql/hive/src/test/resources/golden/groupby_sort_3-11-2437764cdf86cd2d67430bd323346086 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-12-bc5b02bd034ead563d39d2685087005e b/sql/hive/src/test/resources/golden/groupby_sort_3-12-bc5b02bd034ead563d39d2685087005e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-13-1f1638d495fd67ab40bbd2a03ee4ddd b/sql/hive/src/test/resources/golden/groupby_sort_3-13-1f1638d495fd67ab40bbd2a03ee4ddd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-14-1c8def3eb5fc590046d9cdd02d1cbf3f b/sql/hive/src/test/resources/golden/groupby_sort_3-14-1c8def3eb5fc590046d9cdd02d1cbf3f new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_3-14-1c8def3eb5fc590046d9cdd02d1cbf3f @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_3-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_3-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_3-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_3-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-4-74ba824287893d3aaa1cdd957d472729 b/sql/hive/src/test/resources/golden/groupby_sort_3-4-74ba824287893d3aaa1cdd957d472729 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-5-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_3-5-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-6-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_3-6-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-7-fa27a0ebfb1024248031f281b5e320d8 b/sql/hive/src/test/resources/golden/groupby_sort_3-7-fa27a0ebfb1024248031f281b5e320d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-8-5ce0d81bbee5bbab19194535b4b05b6 b/sql/hive/src/test/resources/golden/groupby_sort_3-8-5ce0d81bbee5bbab19194535b4b05b6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_3-9-37a53e292752d1a4caff70e64c5cdfbd b/sql/hive/src/test/resources/golden/groupby_sort_3-9-37a53e292752d1a4caff70e64c5cdfbd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_4-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_4-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_4-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_4-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-10-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_4-10-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_4-10-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-11-dfd54cb0f947152bcf66af1eaa221eb2 b/sql/hive/src/test/resources/golden/groupby_sort_4-11-dfd54cb0f947152bcf66af1eaa221eb2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-12-1f082ad7217ad620063b58887b9b922f b/sql/hive/src/test/resources/golden/groupby_sort_4-12-1f082ad7217ad620063b58887b9b922f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-13-46c4a3675c8de0510b648856a193f3e7 b/sql/hive/src/test/resources/golden/groupby_sort_4-13-46c4a3675c8de0510b648856a193f3e7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-14-75d59344b6114c0bb20d5eac301c2170 b/sql/hive/src/test/resources/golden/groupby_sort_4-14-75d59344b6114c0bb20d5eac301c2170 new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_4-14-75d59344b6114c0bb20d5eac301c2170 @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_4-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_4-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_4-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_4-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-4-40891a8b7f896b11de173835c51aca4f b/sql/hive/src/test/resources/golden/groupby_sort_4-4-40891a8b7f896b11de173835c51aca4f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-5-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_4-5-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-6-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_4-6-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-7-8f552bff84cdc75d7a7e1e12f67c240e b/sql/hive/src/test/resources/golden/groupby_sort_4-7-8f552bff84cdc75d7a7e1e12f67c240e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-8-91aa8f7c6e9b0d8fa11277061c00f6ef b/sql/hive/src/test/resources/golden/groupby_sort_4-8-91aa8f7c6e9b0d8fa11277061c00f6ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_4-9-ebc7ac3b2dfdb958d161cd7c8f947a72 b/sql/hive/src/test/resources/golden/groupby_sort_4-9-ebc7ac3b2dfdb958d161cd7c8f947a72 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_5-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_5-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_5-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_5-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-10-4bf8dba6e66e733423a3408d61897926 b/sql/hive/src/test/resources/golden/groupby_sort_5-10-4bf8dba6e66e733423a3408d61897926 new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_5-10-4bf8dba6e66e733423a3408d61897926 @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-11-4d9341036906853bb9a1641f5e0179b3 b/sql/hive/src/test/resources/golden/groupby_sort_5-11-4d9341036906853bb9a1641f5e0179b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-12-42f4d08dc197e04234d95e08f6ed1e2f b/sql/hive/src/test/resources/golden/groupby_sort_5-12-42f4d08dc197e04234d95e08f6ed1e2f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-13-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_5-13-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-14-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_5-14-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-15-e9baee9e98db00b9277dae33097aab82 b/sql/hive/src/test/resources/golden/groupby_sort_5-15-e9baee9e98db00b9277dae33097aab82 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-16-37a53e292752d1a4caff70e64c5cdfbd b/sql/hive/src/test/resources/golden/groupby_sort_5-16-37a53e292752d1a4caff70e64c5cdfbd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-17-4bf8dba6e66e733423a3408d61897926 b/sql/hive/src/test/resources/golden/groupby_sort_5-17-4bf8dba6e66e733423a3408d61897926 new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_5-17-4bf8dba6e66e733423a3408d61897926 @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-18-4d9341036906853bb9a1641f5e0179b3 b/sql/hive/src/test/resources/golden/groupby_sort_5-18-4d9341036906853bb9a1641f5e0179b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-19-2e441f92547a956942f4451e943bf5cf b/sql/hive/src/test/resources/golden/groupby_sort_5-19-2e441f92547a956942f4451e943bf5cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_5-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_5-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-20-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_5-20-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-21-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_5-21-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-22-70a6c959960c299db2b961dffaa2628d b/sql/hive/src/test/resources/golden/groupby_sort_5-22-70a6c959960c299db2b961dffaa2628d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-23-8dce8ffad6523bbe076b968e243f094f b/sql/hive/src/test/resources/golden/groupby_sort_5-23-8dce8ffad6523bbe076b968e243f094f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-24-1f1638d495fd67ab40bbd2a03ee4ddd b/sql/hive/src/test/resources/golden/groupby_sort_5-24-1f1638d495fd67ab40bbd2a03ee4ddd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-25-1c8def3eb5fc590046d9cdd02d1cbf3f b/sql/hive/src/test/resources/golden/groupby_sort_5-25-1c8def3eb5fc590046d9cdd02d1cbf3f new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_5-25-1c8def3eb5fc590046d9cdd02d1cbf3f @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-26-4d9341036906853bb9a1641f5e0179b3 b/sql/hive/src/test/resources/golden/groupby_sort_5-26-4d9341036906853bb9a1641f5e0179b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_5-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_5-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-4-f3697ac93bcda24a9d7593b703b312e7 b/sql/hive/src/test/resources/golden/groupby_sort_5-4-f3697ac93bcda24a9d7593b703b312e7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-5-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_5-5-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-6-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_5-6-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-7-5219a87f995d294a0c68ae6499dba7d2 b/sql/hive/src/test/resources/golden/groupby_sort_5-7-5219a87f995d294a0c68ae6499dba7d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-8-e9baee9e98db00b9277dae33097aab82 b/sql/hive/src/test/resources/golden/groupby_sort_5-8-e9baee9e98db00b9277dae33097aab82 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_5-9-37a53e292752d1a4caff70e64c5cdfbd b/sql/hive/src/test/resources/golden/groupby_sort_5-9-37a53e292752d1a4caff70e64c5cdfbd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_6-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_6-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-10-788b62269990c43aa3cb1847f99b3343 b/sql/hive/src/test/resources/golden/groupby_sort_6-10-788b62269990c43aa3cb1847f99b3343 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-11-8c28fe3adff3cd106e88d7984ef5fe52 b/sql/hive/src/test/resources/golden/groupby_sort_6-11-8c28fe3adff3cd106e88d7984ef5fe52 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-12-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_6-12-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-13-73805f987b3b2384352c5dd5201f1b29 b/sql/hive/src/test/resources/golden/groupby_sort_6-13-73805f987b3b2384352c5dd5201f1b29 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-14-5574207f68aac30a893785c50c735864 b/sql/hive/src/test/resources/golden/groupby_sort_6-14-5574207f68aac30a893785c50c735864 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-15-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_6-15-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_6-15-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_6-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_6-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_6-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_6-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-4-659bc2cd87fd74fef5ed50d795e8aa1e b/sql/hive/src/test/resources/golden/groupby_sort_6-4-659bc2cd87fd74fef5ed50d795e8aa1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-5-c0ea81b686236d661166912040a16ea7 b/sql/hive/src/test/resources/golden/groupby_sort_6-5-c0ea81b686236d661166912040a16ea7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-6-788b62269990c43aa3cb1847f99b3343 b/sql/hive/src/test/resources/golden/groupby_sort_6-6-788b62269990c43aa3cb1847f99b3343 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-7-8c28fe3adff3cd106e88d7984ef5fe52 b/sql/hive/src/test/resources/golden/groupby_sort_6-7-8c28fe3adff3cd106e88d7984ef5fe52 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-8-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_6-8-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_6-9-7b84dbb0895a623d460c70678bd74a64 b/sql/hive/src/test/resources/golden/groupby_sort_6-9-7b84dbb0895a623d460c70678bd74a64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_7-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_7-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_7-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_7-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-10-4bf8dba6e66e733423a3408d61897926 b/sql/hive/src/test/resources/golden/groupby_sort_7-10-4bf8dba6e66e733423a3408d61897926 new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_7-10-4bf8dba6e66e733423a3408d61897926 @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-11-4d9341036906853bb9a1641f5e0179b3 b/sql/hive/src/test/resources/golden/groupby_sort_7-11-4d9341036906853bb9a1641f5e0179b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_7-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_7-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_7-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_7-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-4-253f1f4f2e4153a4a9358d268f8352e7 b/sql/hive/src/test/resources/golden/groupby_sort_7-4-253f1f4f2e4153a4a9358d268f8352e7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-5-8b5d511014e1776743cacaf77f68d5fb b/sql/hive/src/test/resources/golden/groupby_sort_7-5-8b5d511014e1776743cacaf77f68d5fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-6-137e81fded2b36969bf71279d7ffee34 b/sql/hive/src/test/resources/golden/groupby_sort_7-6-137e81fded2b36969bf71279d7ffee34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-7-5219a87f995d294a0c68ae6499dba7d2 b/sql/hive/src/test/resources/golden/groupby_sort_7-7-5219a87f995d294a0c68ae6499dba7d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-8-289632719165e6e8182ebd8f5f766b7b b/sql/hive/src/test/resources/golden/groupby_sort_7-8-289632719165e6e8182ebd8f5f766b7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_7-9-6e36549828003492627aa5e96a63d3a2 b/sql/hive/src/test/resources/golden/groupby_sort_7-9-6e36549828003492627aa5e96a63d3a2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_8-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_8-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_8-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_8-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-10-d3a2d251675f7bd7a196d2b8345b36d5 b/sql/hive/src/test/resources/golden/groupby_sort_8-10-d3a2d251675f7bd7a196d2b8345b36d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-11-bd99462ed878bf4bec74b3cb9132908d b/sql/hive/src/test/resources/golden/groupby_sort_8-11-bd99462ed878bf4bec74b3cb9132908d new file mode 100644 index 0000000000000..7813681f5b41c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_8-11-bd99462ed878bf4bec74b3cb9132908d @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-12-4d9341036906853bb9a1641f5e0179b3 b/sql/hive/src/test/resources/golden/groupby_sort_8-12-4d9341036906853bb9a1641f5e0179b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_8-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_8-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_8-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_8-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-4-14283ed438d96ad881025b969c8fb69f b/sql/hive/src/test/resources/golden/groupby_sort_8-4-14283ed438d96ad881025b969c8fb69f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-5-8b5d511014e1776743cacaf77f68d5fb b/sql/hive/src/test/resources/golden/groupby_sort_8-5-8b5d511014e1776743cacaf77f68d5fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-6-137e81fded2b36969bf71279d7ffee34 b/sql/hive/src/test/resources/golden/groupby_sort_8-6-137e81fded2b36969bf71279d7ffee34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-7-8188c7bcb9ead25f8c27af7def87218d b/sql/hive/src/test/resources/golden/groupby_sort_8-7-8188c7bcb9ead25f8c27af7def87218d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-8-bd99462ed878bf4bec74b3cb9132908d b/sql/hive/src/test/resources/golden/groupby_sort_8-8-bd99462ed878bf4bec74b3cb9132908d new file mode 100644 index 0000000000000..7813681f5b41c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_8-8-bd99462ed878bf4bec74b3cb9132908d @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_8-9-8e06b51e940e956f14a8c7679c3d423a b/sql/hive/src/test/resources/golden/groupby_sort_8-9-8e06b51e940e956f14a8c7679c3d423a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_8-9-8e06b51e940e956f14a8c7679c3d423a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_9-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_9-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_9-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_9-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-10-4d9341036906853bb9a1641f5e0179b3 b/sql/hive/src/test/resources/golden/groupby_sort_9-10-4d9341036906853bb9a1641f5e0179b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_9-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_9-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_9-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_9-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-4-14283ed438d96ad881025b969c8fb69f b/sql/hive/src/test/resources/golden/groupby_sort_9-4-14283ed438d96ad881025b969c8fb69f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-5-8b5d511014e1776743cacaf77f68d5fb b/sql/hive/src/test/resources/golden/groupby_sort_9-5-8b5d511014e1776743cacaf77f68d5fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-6-137e81fded2b36969bf71279d7ffee34 b/sql/hive/src/test/resources/golden/groupby_sort_9-6-137e81fded2b36969bf71279d7ffee34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-7-c762061ecb1eea7ac218809b9e49900c b/sql/hive/src/test/resources/golden/groupby_sort_9-7-c762061ecb1eea7ac218809b9e49900c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-8-fba2dc1329046ee81e2dbf16b92abc27 b/sql/hive/src/test/resources/golden/groupby_sort_9-8-fba2dc1329046ee81e2dbf16b92abc27 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_9-9-feec69facdc973a0ff78455f766845c b/sql/hive/src/test/resources/golden/groupby_sort_9-9-feec69facdc973a0ff78455f766845c new file mode 100644 index 0000000000000..3d4708b7c9d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_9-9-feec69facdc973a0ff78455f766845c @@ -0,0 +1,5 @@ +1 2 +2 2 +3 2 +7 2 +8 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-10-ebc7ac3b2dfdb958d161cd7c8f947a72 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-10-ebc7ac3b2dfdb958d161cd7c8f947a72 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-11-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-11-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-11-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-12-c166396bbdb62490f56ab0bc84aaa7d9 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-12-c166396bbdb62490f56ab0bc84aaa7d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-13-c8a51e8a269da4c4ae98ac105a573f3c b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-13-c8a51e8a269da4c4ae98ac105a573f3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-14-46c4a3675c8de0510b648856a193f3e7 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-14-46c4a3675c8de0510b648856a193f3e7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-15-bbdd53118f788d7bb679d094c41243c8 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-15-bbdd53118f788d7bb679d094c41243c8 new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-15-bbdd53118f788d7bb679d094c41243c8 @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-16-54f3a2a97939d3eca8a601b74ef30dea b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-16-54f3a2a97939d3eca8a601b74ef30dea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-17-236d51792f4913b5858f367e3cff2c60 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-17-236d51792f4913b5858f367e3cff2c60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-18-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-18-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-18-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-19-1e77dcdd6f54334dbae6a4d11ad6ff64 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-19-1e77dcdd6f54334dbae6a4d11ad6ff64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-20-90c84358c50e51be5ce210bd7dec9bc6 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-20-90c84358c50e51be5ce210bd7dec9bc6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-21-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-21-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-21-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-22-27e2e662d517f32952145cc2a51bf564 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-22-27e2e662d517f32952145cc2a51bf564 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-23-6775cb6aee040e22508cf3cac0b55f06 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-23-6775cb6aee040e22508cf3cac0b55f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-24-eb2b625279d8794390d7e2dc8f2dc907 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-24-eb2b625279d8794390d7e2dc8f2dc907 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-25-d53196339980a00a619788bd799a32e7 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-25-d53196339980a00a619788bd799a32e7 new file mode 100644 index 0000000000000..c1cc4ee204773 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-25-d53196339980a00a619788bd799a32e7 @@ -0,0 +1,5 @@ +1 1 1 +1 2 1 +1 3 1 +1 7 1 +1 8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-26-138e93f004f7bd16e63bbf8d9090af21 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-26-138e93f004f7bd16e63bbf8d9090af21 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-27-93153fd67c1d19bb9ad64f98294e4981 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-27-93153fd67c1d19bb9ad64f98294e4981 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-28-ca369ab23c32070e2d42ba8df036175f b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-28-ca369ab23c32070e2d42ba8df036175f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-29-c4ec0433a832ef551d70254957e3afca b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-29-c4ec0433a832ef551d70254957e3afca new file mode 100644 index 0000000000000..97a3b8c2f5977 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-29-c4ec0433a832ef551d70254957e3afca @@ -0,0 +1,6 @@ +1 1 11 1 +2 1 12 1 +3 1 13 1 +7 1 17 1 +8 1 18 1 +8 1 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-30-4095695e88e23dd42acb1749a83bdbb7 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-30-4095695e88e23dd42acb1749a83bdbb7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-31-d9ba55c20c3f5df262e81cbf5dab5387 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-31-d9ba55c20c3f5df262e81cbf5dab5387 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-32-d53196339980a00a619788bd799a32e7 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-32-d53196339980a00a619788bd799a32e7 new file mode 100644 index 0000000000000..f0192040e147b --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-32-d53196339980a00a619788bd799a32e7 @@ -0,0 +1,5 @@ +1 2 1 +2 3 1 +3 4 1 +7 8 1 +8 9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-33-c88ee457dee7bb141a198a2ae39d787f b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-33-c88ee457dee7bb141a198a2ae39d787f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-34-c04167e880fe3e942ce77e75d660f1ef b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-34-c04167e880fe3e942ce77e75d660f1ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-35-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-35-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..b6c2eb98e5e49 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-35-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +2 1 +4 1 +6 1 +14 1 +16 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-36-deb3f1793f51d1edf011a8405abf4968 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-36-deb3f1793f51d1edf011a8405abf4968 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-37-7871722f392f801a868e0e2fb372c610 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-37-7871722f392f801a868e0e2fb372c610 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-38-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-38-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..8e7ee8a2b47bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-38-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,10 @@ +1 1 +1 1 +2 1 +2 1 +3 1 +3 1 +7 1 +7 1 +8 2 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-39-b71bdaa2b7c4b5c51a9773c123e5306d b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-39-b71bdaa2b7c4b5c51a9773c123e5306d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-4-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-4-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-4-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-40-89aa7bab4272546e06cd7e504380d96b b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-40-89aa7bab4272546e06cd7e504380d96b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-41-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-41-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..0b2b54cd94e4f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-41-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,10 @@ +1 1 +2 1 +2 1 +3 1 +4 1 +6 1 +7 1 +8 2 +14 1 +16 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-42-348b0126cb1d214fea58d4af9d3dbf67 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-42-348b0126cb1d214fea58d4af9d3dbf67 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-43-83889e7dc73d796cc869160b6b35102c b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-43-83889e7dc73d796cc869160b6b35102c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-44-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-44-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..3d4708b7c9d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-44-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 2 +2 2 +3 2 +7 2 +8 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-45-41462b2e60bf44571a7b1fb435374d6a b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-45-41462b2e60bf44571a7b1fb435374d6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-46-8aea6edf0481e2a10f14879acba62648 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-46-8aea6edf0481e2a10f14879acba62648 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-47-4999db9eb86d9455c1d75e97b052f279 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-47-4999db9eb86d9455c1d75e97b052f279 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-48-fecb9f2203aeb2ac4b693a97badde6fa b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-48-fecb9f2203aeb2ac4b693a97badde6fa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-49-f0f18d5fa2824735799edc4bdeb1afb2 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-49-f0f18d5fa2824735799edc4bdeb1afb2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-5-e906be6d27c9dfcffd4af171541639ad b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-5-e906be6d27c9dfcffd4af171541639ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-50-f3f94c4814c3bff60a0b06edf0c884bd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-50-f3f94c4814c3bff60a0b06edf0c884bd new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-50-f3f94c4814c3bff60a0b06edf0c884bd @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-51-461847b174096e7a255fb07cb35ab434 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-51-461847b174096e7a255fb07cb35ab434 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-52-8da967e7c2210ad044ba8b08d1685065 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-52-8da967e7c2210ad044ba8b08d1685065 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-53-c4ec0433a832ef551d70254957e3afca b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-53-c4ec0433a832ef551d70254957e3afca new file mode 100644 index 0000000000000..97a3b8c2f5977 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-53-c4ec0433a832ef551d70254957e3afca @@ -0,0 +1,6 @@ +1 1 11 1 +2 1 12 1 +3 1 13 1 +7 1 17 1 +8 1 18 1 +8 1 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-54-fdc295aaefba56548a22dfcddc2a94f2 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-54-fdc295aaefba56548a22dfcddc2a94f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-55-74bfe3fbf9d68a75013fba1c3c7bbd7c b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-55-74bfe3fbf9d68a75013fba1c3c7bbd7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-56-1013d1ad014aa203b1dce26085b09c01 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-56-1013d1ad014aa203b1dce26085b09c01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-57-5373c5449884d95bc7db9dab55239a49 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-57-5373c5449884d95bc7db9dab55239a49 new file mode 100644 index 0000000000000..7ca6b0b28a960 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-57-5373c5449884d95bc7db9dab55239a49 @@ -0,0 +1,6 @@ +1 1 11 2 1 +2 1 12 2 1 +3 1 13 2 1 +7 1 17 2 1 +8 1 18 2 1 +8 1 28 2 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-58-825135844e8ac6d8d5254cc961ec8fd0 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-58-825135844e8ac6d8d5254cc961ec8fd0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-59-e671e63f6b70094048563a9c33748c97 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-59-e671e63f6b70094048563a9c33748c97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-6-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-6-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-60-c4ec0433a832ef551d70254957e3afca b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-60-c4ec0433a832ef551d70254957e3afca new file mode 100644 index 0000000000000..97a3b8c2f5977 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-60-c4ec0433a832ef551d70254957e3afca @@ -0,0 +1,6 @@ +1 1 11 1 +2 1 12 1 +3 1 13 1 +7 1 17 1 +8 1 18 1 +8 1 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-61-51824b04f2a008f63e1469695e60d9c8 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-61-51824b04f2a008f63e1469695e60d9c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-62-18b0757f6d9e29808061ca3763b8b6d9 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-62-18b0757f6d9e29808061ca3763b8b6d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-63-c4ec0433a832ef551d70254957e3afca b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-63-c4ec0433a832ef551d70254957e3afca new file mode 100644 index 0000000000000..58e16ef3c0ef3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-63-c4ec0433a832ef551d70254957e3afca @@ -0,0 +1,6 @@ +1 2 11 1 +2 2 12 1 +3 2 13 1 +7 2 17 1 +8 2 18 1 +8 2 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-64-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-64-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-64-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-65-7f98b724df05f51b3ec1f087a8da414e b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-65-7f98b724df05f51b3ec1f087a8da414e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-65-7f98b724df05f51b3ec1f087a8da414e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-66-83c59d378571a6e487aa20217bd87817 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-66-83c59d378571a6e487aa20217bd87817 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-66-83c59d378571a6e487aa20217bd87817 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-67-b4c5b3eeb74085711866a2eec27bcb37 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-67-b4c5b3eeb74085711866a2eec27bcb37 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-68-b4fec0996399be2239961594897d6715 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-68-b4fec0996399be2239961594897d6715 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-69-9d01ff3d1fde3ed2ab55ea9d7079fd5c b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-69-9d01ff3d1fde3ed2ab55ea9d7079fd5c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-69-9d01ff3d1fde3ed2ab55ea9d7079fd5c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-7-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-7-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-70-ed76c0068780120a6f23feefee303403 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-70-ed76c0068780120a6f23feefee303403 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-70-ed76c0068780120a6f23feefee303403 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-71-2d5403943a3efdf9fd3eccb6927499cc b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-71-2d5403943a3efdf9fd3eccb6927499cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-72-ca16ff548ebb9bab4b76f2e339064a9e b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-72-ca16ff548ebb9bab4b76f2e339064a9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-73-d2fa5e7bdd6b7934d10d5905cacd5715 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-73-d2fa5e7bdd6b7934d10d5905cacd5715 new file mode 100644 index 0000000000000..4e31460a412ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-73-d2fa5e7bdd6b7934d10d5905cacd5715 @@ -0,0 +1,5 @@ +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-74-6296dde4e71acf7e7f42ee58cf3b5acd b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-74-6296dde4e71acf7e7f42ee58cf3b5acd new file mode 100644 index 0000000000000..10f4a1f5ff34c --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-74-6296dde4e71acf7e7f42ee58cf3b5acd @@ -0,0 +1,6 @@ +1 11 1 +2 12 1 +3 13 1 +7 17 1 +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-75-6f7caef1c773268350c9cf94ad85be01 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-75-6f7caef1c773268350c9cf94ad85be01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-76-4931c5a72a5231f67317d27ca025bb97 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-76-4931c5a72a5231f67317d27ca025bb97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-77-d2fa5e7bdd6b7934d10d5905cacd5715 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-77-d2fa5e7bdd6b7934d10d5905cacd5715 new file mode 100644 index 0000000000000..d15db8c5d079f --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-77-d2fa5e7bdd6b7934d10d5905cacd5715 @@ -0,0 +1 @@ +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-78-6d6eac558569563cc47a657daffa8ba7 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-78-6d6eac558569563cc47a657daffa8ba7 new file mode 100644 index 0000000000000..3d1609d961673 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-78-6d6eac558569563cc47a657daffa8ba7 @@ -0,0 +1,2 @@ +8 18 1 +8 28 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-8-c0ea81b686236d661166912040a16ea7 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-8-c0ea81b686236d661166912040a16ea7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_skew_1-9-f0ee61903aeacb758e2eada242e5e14 b/sql/hive/src/test/resources/golden/groupby_sort_skew_1-9-f0ee61903aeacb758e2eada242e5e14 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/groupby_sort_test_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_test_1-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/groupby_sort_test_1-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_test_1-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-2-fc30020d09151dc29be807795ad9475e b/sql/hive/src/test/resources/golden/groupby_sort_test_1-2-fc30020d09151dc29be807795ad9475e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_test_1-2-fc30020d09151dc29be807795ad9475e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-3-fffea659b633b1f269b38556a7f54634 b/sql/hive/src/test/resources/golden/groupby_sort_test_1-3-fffea659b633b1f269b38556a7f54634 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_test_1-3-fffea659b633b1f269b38556a7f54634 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-4-8e06b51e940e956f14a8c7679c3d423a b/sql/hive/src/test/resources/golden/groupby_sort_test_1-4-8e06b51e940e956f14a8c7679c3d423a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/groupby_sort_test_1-4-8e06b51e940e956f14a8c7679c3d423a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-5-e906be6d27c9dfcffd4af171541639ad b/sql/hive/src/test/resources/golden/groupby_sort_test_1-5-e906be6d27c9dfcffd4af171541639ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-6-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/groupby_sort_test_1-6-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-7-b6c452a800ff333aacb863bb3243c15b b/sql/hive/src/test/resources/golden/groupby_sort_test_1-7-b6c452a800ff333aacb863bb3243c15b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-8-c0ea81b686236d661166912040a16ea7 b/sql/hive/src/test/resources/golden/groupby_sort_test_1-8-c0ea81b686236d661166912040a16ea7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/groupby_sort_test_1-9-4d3e8128fb29c232b984f41ed4e78794 b/sql/hive/src/test/resources/golden/groupby_sort_test_1-9-4d3e8128fb29c232b984f41ed4e78794 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/hash-0-a658b129316d666d4b01c1581eed1c1f b/sql/hive/src/test/resources/golden/hash-0-a658b129316d666d4b01c1581eed1c1f new file mode 100644 index 0000000000000..a99cee758fe57 --- /dev/null +++ b/sql/hive/src/test/resources/golden/hash-0-a658b129316d666d4b01c1581eed1c1f @@ -0,0 +1 @@ +3556498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/hook_context_cs-0-e319c8574a6cd8739e5fd5984ceed3cf b/sql/hive/src/test/resources/golden/hook_context_cs-0-e319c8574a6cd8739e5fd5984ceed3cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/hook_context_cs-1-de3aa1c4674fb166b825b1e2f58d1950 b/sql/hive/src/test/resources/golden/hook_context_cs-1-de3aa1c4674fb166b825b1e2f58d1950 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/implicit_cast1-0-e3d2bd2cc5a4d5d794f9bf29927f2296 b/sql/hive/src/test/resources/golden/implicit_cast1-0-e3d2bd2cc5a4d5d794f9bf29927f2296 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/implicit_cast1-1-66f185b6fdccddba498c463641e7dc7a b/sql/hive/src/test/resources/golden/implicit_cast1-1-66f185b6fdccddba498c463641e7dc7a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/implicit_cast1-2-6871be041d36ea813e1b2f331e3747f4 b/sql/hive/src/test/resources/golden/implicit_cast1-2-6871be041d36ea813e1b2f331e3747f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-0-f880114c33c99a5f23c1465fd88f0db3 b/sql/hive/src/test/resources/golden/index_creation-0-f880114c33c99a5f23c1465fd88f0db3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-1-a8bc76559014d9cdf07184208d582d25 b/sql/hive/src/test/resources/golden/index_creation-1-a8bc76559014d9cdf07184208d582d25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-10-4bd6c86cd3f6a94964b3d13235e8e261 b/sql/hive/src/test/resources/golden/index_creation-10-4bd6c86cd3f6a94964b3d13235e8e261 new file mode 100644 index 0000000000000..d7c6f236687d8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-10-4bd6c86cd3f6a94964b3d13235e8e261 @@ -0,0 +1,5 @@ +key int None +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:default__src_src_index_2__, dbName:default, owner:null, createTime:1389344545, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4441354405523276795/default__src_src_index_2__, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:key, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389344545}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-11-b5b7e4f7af5186033be12a4393dc3bb7 b/sql/hive/src/test/resources/golden/index_creation-11-b5b7e4f7af5186033be12a4393dc3bb7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-12-9cc02e06c6051810c50e225bb2c66669 b/sql/hive/src/test/resources/golden/index_creation-12-9cc02e06c6051810c50e225bb2c66669 new file mode 100644 index 0000000000000..4c6ec0ba34bb8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-12-9cc02e06c6051810c50e225bb2c66669 @@ -0,0 +1,5 @@ +key int None +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:src_idx_src_index_3, dbName:default, owner:null, createTime:1389344545, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4441354405523276795/src_idx_src_index_3, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:key, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389344545}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-13-9c0ec67e79a0d50b46bd5c944c710fc4 b/sql/hive/src/test/resources/golden/index_creation-13-9c0ec67e79a0d50b46bd5c944c710fc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-14-a8c1ed9913d9fbcd1b3299a2f8bb2165 b/sql/hive/src/test/resources/golden/index_creation-14-a8c1ed9913d9fbcd1b3299a2f8bb2165 new file mode 100644 index 0000000000000..0c6af94247b85 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-14-a8c1ed9913d9fbcd1b3299a2f8bb2165 @@ -0,0 +1,5 @@ +key int None +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:default__src_src_index_4__, dbName:default, owner:null, createTime:1389344545, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4441354405523276795/default__src_src_index_4__, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format= , field.delim= \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-15-7d7e1a479e7dcd8f9d4199775e05bc1 b/sql/hive/src/test/resources/golden/index_creation-15-7d7e1a479e7dcd8f9d4199775e05bc1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-16-ffa6d3fcef97b7322dd3759d4a70881d b/sql/hive/src/test/resources/golden/index_creation-16-ffa6d3fcef97b7322dd3759d4a70881d new file mode 100644 index 0000000000000..e4a5816e6f1cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-16-ffa6d3fcef97b7322dd3759d4a70881d @@ -0,0 +1,5 @@ +key int None +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:default__src_src_index_5__, dbName:default, owner:null, createTime:1389344546, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4441354405523276795/default__src_src_index_5__, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{escape.delim=\, serialization.format= , field.delim= \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-17-18ed0b70b0b6d076b96c9f73bfa721ad b/sql/hive/src/test/resources/golden/index_creation-17-18ed0b70b0b6d076b96c9f73bfa721ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-18-bcdb19db031341c4a50264ccf49328e4 b/sql/hive/src/test/resources/golden/index_creation-18-bcdb19db031341c4a50264ccf49328e4 new file mode 100644 index 0000000000000..3d8751ca47049 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-18-bcdb19db031341c4a50264ccf49328e4 @@ -0,0 +1,5 @@ +key int from deserializer +_bucketname string from deserializer +_offsets array from deserializer + +Detailed Table Information Table(tableName:default__src_src_index_6__, dbName:default, owner:null, createTime:1389344546, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4441354405523276795/default__src_src_index_6__, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:key, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389344546}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-19-98dbf83283f9e073e88ba770ec5a707f b/sql/hive/src/test/resources/golden/index_creation-19-98dbf83283f9e073e88ba770ec5a707f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-2-9d5d11cb38f2e097f16d2db5693f4f1 b/sql/hive/src/test/resources/golden/index_creation-2-9d5d11cb38f2e097f16d2db5693f4f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-20-68c5c98581c683b17ceaf1c0fd192871 b/sql/hive/src/test/resources/golden/index_creation-20-68c5c98581c683b17ceaf1c0fd192871 new file mode 100644 index 0000000000000..0e4852b319052 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-20-68c5c98581c683b17ceaf1c0fd192871 @@ -0,0 +1,5 @@ +key int from deserializer +_bucketname string from deserializer +_offsets array from deserializer + +Detailed Table Information Table(tableName:src_idx_src_index_7, dbName:default, owner:null, createTime:1389344546, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4441354405523276795/src_idx_src_index_7, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:key, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389344546}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-21-4c8f6b48c437bf0be109fc0be1dc840e b/sql/hive/src/test/resources/golden/index_creation-21-4c8f6b48c437bf0be109fc0be1dc840e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-22-f36cb2eed39691ca949b25182e2dd31 b/sql/hive/src/test/resources/golden/index_creation-22-f36cb2eed39691ca949b25182e2dd31 new file mode 100644 index 0000000000000..41a5492fc5331 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-22-f36cb2eed39691ca949b25182e2dd31 @@ -0,0 +1,5 @@ +key int None +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:default__src_src_index_8__, dbName:default, owner:null, createTime:1389344546, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4441354405523276795/default__src_src_index_8__, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:key, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389344546}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-23-e7f21f556d3aa2bedb0717a167720741 b/sql/hive/src/test/resources/golden/index_creation-23-e7f21f556d3aa2bedb0717a167720741 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-24-8cb102bd5addf7fece0e2691468bc3bf b/sql/hive/src/test/resources/golden/index_creation-24-8cb102bd5addf7fece0e2691468bc3bf new file mode 100644 index 0000000000000..8212bf8b7d2fb --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-24-8cb102bd5addf7fece0e2691468bc3bf @@ -0,0 +1,5 @@ +key int None +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:default__src_src_index_9__, dbName:default, owner:null, createTime:1389344546, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4441354405523276795/default__src_src_index_9__, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:key, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{prop2=val2, prop1=val1, transient_lastDdlTime=1389344546}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-25-33c48966230b934ae8ddf74ff18bb9ca b/sql/hive/src/test/resources/golden/index_creation-25-33c48966230b934ae8ddf74ff18bb9ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-26-f85db55b3f63ae186a1b6d5cec545939 b/sql/hive/src/test/resources/golden/index_creation-26-f85db55b3f63ae186a1b6d5cec545939 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-27-e4856f13692e63d61f72aaf75e50e5f1 b/sql/hive/src/test/resources/golden/index_creation-27-e4856f13692e63d61f72aaf75e50e5f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-28-bd20d4b59e6489082a92fcbfcc5f8dbe b/sql/hive/src/test/resources/golden/index_creation-28-bd20d4b59e6489082a92fcbfcc5f8dbe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-29-ee8d287111069805c41c9c0032adc46f b/sql/hive/src/test/resources/golden/index_creation-29-ee8d287111069805c41c9c0032adc46f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-3-14b999fc6dfb10a3632afe14e08003e1 b/sql/hive/src/test/resources/golden/index_creation-3-14b999fc6dfb10a3632afe14e08003e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-30-f880114c33c99a5f23c1465fd88f0db3 b/sql/hive/src/test/resources/golden/index_creation-30-f880114c33c99a5f23c1465fd88f0db3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-31-a8bc76559014d9cdf07184208d582d25 b/sql/hive/src/test/resources/golden/index_creation-31-a8bc76559014d9cdf07184208d582d25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-32-9d5d11cb38f2e097f16d2db5693f4f1 b/sql/hive/src/test/resources/golden/index_creation-32-9d5d11cb38f2e097f16d2db5693f4f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-33-14b999fc6dfb10a3632afe14e08003e1 b/sql/hive/src/test/resources/golden/index_creation-33-14b999fc6dfb10a3632afe14e08003e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-34-c8c5d4c45e59d041dcbbdfc5426e5fa0 b/sql/hive/src/test/resources/golden/index_creation-34-c8c5d4c45e59d041dcbbdfc5426e5fa0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-35-e78eb4d61c0ddb272fd94c5f7a8c0e84 b/sql/hive/src/test/resources/golden/index_creation-35-e78eb4d61c0ddb272fd94c5f7a8c0e84 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-36-21bcf37075b02097f16c8fc8130a83b8 b/sql/hive/src/test/resources/golden/index_creation-36-21bcf37075b02097f16c8fc8130a83b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-37-9334418431eca405f13206bd8db42a1b b/sql/hive/src/test/resources/golden/index_creation-37-9334418431eca405f13206bd8db42a1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-38-f1f56119aede4f42221a68f6aaa42a26 b/sql/hive/src/test/resources/golden/index_creation-38-f1f56119aede4f42221a68f6aaa42a26 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-39-489b4ceb2f4301a7132628303f99240d b/sql/hive/src/test/resources/golden/index_creation-39-489b4ceb2f4301a7132628303f99240d new file mode 100644 index 0000000000000..e8310385c56dc --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_creation-39-489b4ceb2f4301a7132628303f99240d @@ -0,0 +1 @@ +src \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_creation-4-c8c5d4c45e59d041dcbbdfc5426e5fa0 b/sql/hive/src/test/resources/golden/index_creation-4-c8c5d4c45e59d041dcbbdfc5426e5fa0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-5-e78eb4d61c0ddb272fd94c5f7a8c0e84 b/sql/hive/src/test/resources/golden/index_creation-5-e78eb4d61c0ddb272fd94c5f7a8c0e84 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-6-21bcf37075b02097f16c8fc8130a83b8 b/sql/hive/src/test/resources/golden/index_creation-6-21bcf37075b02097f16c8fc8130a83b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-7-9334418431eca405f13206bd8db42a1b b/sql/hive/src/test/resources/golden/index_creation-7-9334418431eca405f13206bd8db42a1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-8-f1f56119aede4f42221a68f6aaa42a26 b/sql/hive/src/test/resources/golden/index_creation-8-f1f56119aede4f42221a68f6aaa42a26 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_creation-9-bf40d4d50d050f2f8342c07f5a9dcf0c b/sql/hive/src/test/resources/golden/index_creation-9-bf40d4d50d050f2f8342c07f5a9dcf0c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_serde-0-6560d12b69d55e5297a145ebc4bb0cb3 b/sql/hive/src/test/resources/golden/index_serde-0-6560d12b69d55e5297a145ebc4bb0cb3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_serde-1-f92d6c66d21791c11d2a822df04c1b63 b/sql/hive/src/test/resources/golden/index_serde-1-f92d6c66d21791c11d2a822df04c1b63 new file mode 100644 index 0000000000000..48522980f81a8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_serde-1-f92d6c66d21791c11d2a822df04c1b63 @@ -0,0 +1,3 @@ +number int from deserializer +first_name string from deserializer +last_name string from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_serde-10-123301a057d4a46072d0431e00e20c4b b/sql/hive/src/test/resources/golden/index_serde-10-123301a057d4a46072d0431e00e20c4b new file mode 100644 index 0000000000000..4ed570f9070eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_serde-10-123301a057d4a46072d0431e00e20c4b @@ -0,0 +1,5 @@ +7 Sylvester McCoy +8 Paul McGann +9 Christopher Eccleston +10 David Tennant +11 Matt Smith \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_serde-11-309e916d683a1a12ab62565697cb0046 b/sql/hive/src/test/resources/golden/index_serde-11-309e916d683a1a12ab62565697cb0046 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_serde-12-d590fd7cb9d433143de490d75686dd4 b/sql/hive/src/test/resources/golden/index_serde-12-d590fd7cb9d433143de490d75686dd4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_serde-2-fd1b220f4eafb0ba9b519a156e3c87c b/sql/hive/src/test/resources/golden/index_serde-2-fd1b220f4eafb0ba9b519a156e3c87c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_serde-3-afcf2a156ccd4f79a0489b4593908d79 b/sql/hive/src/test/resources/golden/index_serde-3-afcf2a156ccd4f79a0489b4593908d79 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_serde-4-d7547751c37375a9238043bbe250e716 b/sql/hive/src/test/resources/golden/index_serde-4-d7547751c37375a9238043bbe250e716 new file mode 100644 index 0000000000000..d2ca633d0ae01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_serde-4-d7547751c37375a9238043bbe250e716 @@ -0,0 +1,5 @@ +number int from deserializer +_bucketname string +_offsets array + +Detailed Table Information Table(tableName:default__doctors_doctors_index__, dbName:default, owner:null, createTime:1389729651, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:number, type:int, comment:from deserializer), FieldSchema(name:_bucketname, type:string, comment:), FieldSchema(name:_offsets, type:array, comment:)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/default__doctors_doctors_index__, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[Order(col:number, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389729651}, viewOriginalText:null, viewExpandedText:null, tableType:INDEX_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_serde-5-e6ff4b23b7f102e359afb4d53a1dedc3 b/sql/hive/src/test/resources/golden/index_serde-5-e6ff4b23b7f102e359afb4d53a1dedc3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/index_serde-6-c9d7dcde469d3b9a66965a64dd15e4ae b/sql/hive/src/test/resources/golden/index_serde-6-c9d7dcde469d3b9a66965a64dd15e4ae new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_serde-6-c9d7dcde469d3b9a66965a64dd15e4ae @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_serde-7-3b03210f94ec40db9ab02620645014d1 b/sql/hive/src/test/resources/golden/index_serde-7-3b03210f94ec40db9ab02620645014d1 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_serde-7-3b03210f94ec40db9ab02620645014d1 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_serde-8-35f48c7d6fa164bb84643657bc9280a8 b/sql/hive/src/test/resources/golden/index_serde-8-35f48c7d6fa164bb84643657bc9280a8 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/index_serde-8-35f48c7d6fa164bb84643657bc9280a8 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/index_serde-9-c85e061ea9c5b90ca69b7450faad14b6 b/sql/hive/src/test/resources/golden/index_serde-9-c85e061ea9c5b90ca69b7450faad14b6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/infer_const_type-0-e231c5154b18cbc0baa082a7461dd13e b/sql/hive/src/test/resources/golden/infer_const_type-0-e231c5154b18cbc0baa082a7461dd13e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/infer_const_type-1-c836a98522549d2a3fd43998afd8ae94 b/sql/hive/src/test/resources/golden/infer_const_type-1-c836a98522549d2a3fd43998afd8ae94 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/infer_const_type-2-d8590c7336ae771b7a685bb544e8d2bd b/sql/hive/src/test/resources/golden/infer_const_type-2-d8590c7336ae771b7a685bb544e8d2bd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/innerjoin-0-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/innerjoin-0-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/innerjoin-0-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/innerjoin-1-f1293ebf768eb04f2f0bfe6297c4509e b/sql/hive/src/test/resources/golden/innerjoin-1-f1293ebf768eb04f2f0bfe6297c4509e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/innerjoin-2-6c0cafe1d94c0acfe2d09afd0289df75 b/sql/hive/src/test/resources/golden/innerjoin-2-6c0cafe1d94c0acfe2d09afd0289df75 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/innerjoin-3-dec6031cdf20e07dd1cd70e3741dc330 b/sql/hive/src/test/resources/golden/innerjoin-3-dec6031cdf20e07dd1cd70e3741dc330 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/innerjoin-4-35c7611180562dcd9dab834f41654095 b/sql/hive/src/test/resources/golden/innerjoin-4-35c7611180562dcd9dab834f41654095 new file mode 100644 index 0000000000000..3b7cf42f96358 --- /dev/null +++ b/sql/hive/src/test/resources/golden/innerjoin-4-35c7611180562dcd9dab834f41654095 @@ -0,0 +1,1028 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/innerjoin-5-5eb553ac988b409ad2d96cf6cd395d9a b/sql/hive/src/test/resources/golden/innerjoin-5-5eb553ac988b409ad2d96cf6cd395d9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/innerjoin-6-17c49c593f6160e096b30dfee7b643ce b/sql/hive/src/test/resources/golden/innerjoin-6-17c49c593f6160e096b30dfee7b643ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/innerjoin-7-b42ecd0ee90bd28441c41fab4e36fe78 b/sql/hive/src/test/resources/golden/innerjoin-7-b42ecd0ee90bd28441c41fab4e36fe78 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/innerjoin-8-b125c27acd6a6cacbde1f7587df2fce9 b/sql/hive/src/test/resources/golden/innerjoin-8-b125c27acd6a6cacbde1f7587df2fce9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/innerjoin-9-326eeac56676d78fe489c464cddb526b b/sql/hive/src/test/resources/golden/innerjoin-9-326eeac56676d78fe489c464cddb526b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inoutdriver-0-47981488ab51ed3cc6c335f5cf703908 b/sql/hive/src/test/resources/golden/inoutdriver-0-47981488ab51ed3cc6c335f5cf703908 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inoutdriver-1-b2f337566a5075f3e3e81335008d95d3 b/sql/hive/src/test/resources/golden/inoutdriver-1-b2f337566a5075f3e3e81335008d95d3 new file mode 100644 index 0000000000000..010e999c36749 --- /dev/null +++ b/sql/hive/src/test/resources/golden/inoutdriver-1-b2f337566a5075f3e3e81335008d95d3 @@ -0,0 +1,3 @@ +a int None + +Detailed Table Information Table(tableName:test, dbName:default, owner:marmbrus, createTime:1389729862, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:int, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/test, inputFormat:org.apache.hadoop.hive.ql.io.RCFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1389729862}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input-0-42022446607cfbe8a64d8fd7b9898ce7 b/sql/hive/src/test/resources/golden/input-0-42022446607cfbe8a64d8fd7b9898ce7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input-1-6558e385bb08991302a72076dd7b7ff5 b/sql/hive/src/test/resources/golden/input-1-6558e385bb08991302a72076dd7b7ff5 new file mode 100644 index 0000000000000..c5c8d29fdd13e --- /dev/null +++ b/sql/hive/src/test/resources/golden/input-1-6558e385bb08991302a72076dd7b7ff5 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input0-0-fb47f8a8a8e3213f3fe47825a556c593 b/sql/hive/src/test/resources/golden/input0-0-fb47f8a8a8e3213f3fe47825a556c593 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input0-1-efefd4364cd2790447fb0f908e87501f b/sql/hive/src/test/resources/golden/input0-1-efefd4364cd2790447fb0f908e87501f new file mode 100644 index 0000000000000..c5c8d29fdd13e --- /dev/null +++ b/sql/hive/src/test/resources/golden/input0-1-efefd4364cd2790447fb0f908e87501f @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input1-0-28c9f2913833d6911f22e2e2e8c60f68 b/sql/hive/src/test/resources/golden/input1-0-28c9f2913833d6911f22e2e2e8c60f68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input1-1-8aaad4ee49c9bdf7b34642cc75f6a1a0 b/sql/hive/src/test/resources/golden/input1-1-8aaad4ee49c9bdf7b34642cc75f6a1a0 new file mode 100644 index 0000000000000..e00bf4ec2c7e5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input1-1-8aaad4ee49c9bdf7b34642cc75f6a1a0 @@ -0,0 +1,17 @@ +ABSTRACT SYNTAX TREE: + (TOK_DESCTABLE (TOK_TABTYPE TEST1)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Describe Table Operator: + Describe Table + table: TEST1 + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/input1-2-d3aa54d5436b7b59ff5c7091b7ca6145 b/sql/hive/src/test/resources/golden/input1-2-d3aa54d5436b7b59ff5c7091b7ca6145 new file mode 100644 index 0000000000000..743be67e8d1c3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input1-2-d3aa54d5436b7b59ff5c7091b7ca6145 @@ -0,0 +1,2 @@ +a int None +b double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input10-0-acdd72fda64c5463ce29f31020012d42 b/sql/hive/src/test/resources/golden/input10-0-acdd72fda64c5463ce29f31020012d42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input10-1-6970b6d2d451612b59fccbfd7ec68f74 b/sql/hive/src/test/resources/golden/input10-1-6970b6d2d451612b59fccbfd7ec68f74 new file mode 100644 index 0000000000000..175d371fd09c9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input10-1-6970b6d2d451612b59fccbfd7ec68f74 @@ -0,0 +1,17 @@ +ABSTRACT SYNTAX TREE: + (TOK_DESCTABLE (TOK_TABTYPE TEST10)) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Describe Table Operator: + Describe Table + table: TEST10 + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/input10-2-73f00da5cfc254745d1d80f913eb6449 b/sql/hive/src/test/resources/golden/input10-2-73f00da5cfc254745d1d80f913eb6449 new file mode 100644 index 0000000000000..8dcdf43e31be3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input10-2-73f00da5cfc254745d1d80f913eb6449 @@ -0,0 +1,10 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input11-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/input11-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input11-1-3e66f12ae780a85721fa21c42fb3c8fb b/sql/hive/src/test/resources/golden/input11-1-3e66f12ae780a85721fa21c42fb3c8fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input11-2-24fe55bae88ad4a8e240376d012bc491 b/sql/hive/src/test/resources/golden/input11-2-24fe55bae88ad4a8e240376d012bc491 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input11-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input11-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..37dd922fd0787 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input11-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,84 @@ +86 val_86 +27 val_27 +98 val_98 +66 val_66 +37 val_37 +15 val_15 +82 val_82 +17 val_17 +0 val_0 +57 val_57 +20 val_20 +92 val_92 +47 val_47 +72 val_72 +4 val_4 +35 val_35 +54 val_54 +51 val_51 +65 val_65 +83 val_83 +12 val_12 +67 val_67 +84 val_84 +58 val_58 +8 val_8 +24 val_24 +42 val_42 +0 val_0 +96 val_96 +26 val_26 +51 val_51 +43 val_43 +95 val_95 +98 val_98 +85 val_85 +77 val_77 +0 val_0 +87 val_87 +15 val_15 +72 val_72 +90 val_90 +19 val_19 +10 val_10 +5 val_5 +58 val_58 +35 val_35 +95 val_95 +11 val_11 +34 val_34 +42 val_42 +78 val_78 +76 val_76 +41 val_41 +30 val_30 +64 val_64 +76 val_76 +74 val_74 +69 val_69 +33 val_33 +70 val_70 +5 val_5 +2 val_2 +35 val_35 +80 val_80 +44 val_44 +53 val_53 +90 val_90 +12 val_12 +5 val_5 +70 val_70 +24 val_24 +70 val_70 +83 val_83 +26 val_26 +67 val_67 +18 val_18 +9 val_9 +18 val_18 +97 val_97 +84 val_84 +28 val_28 +37 val_37 +90 val_90 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input11_limit-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/input11_limit-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input11_limit-1-f2c43fcadcfca0c8c5cdd0b29c47a921 b/sql/hive/src/test/resources/golden/input11_limit-1-f2c43fcadcfca0c8c5cdd0b29c47a921 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input11_limit-2-47fdba9764a8851379e2ed7e16c54583 b/sql/hive/src/test/resources/golden/input11_limit-2-47fdba9764a8851379e2ed7e16c54583 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input11_limit-3-8a0c68a4f7386ff214db5d9eed0876d5 b/sql/hive/src/test/resources/golden/input11_limit-3-8a0c68a4f7386ff214db5d9eed0876d5 new file mode 100644 index 0000000000000..fdf93911ee847 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input11_limit-3-8a0c68a4f7386ff214db5d9eed0876d5 @@ -0,0 +1,10 @@ +0 val_0 +15 val_15 +17 val_17 +27 val_27 +37 val_37 +57 val_57 +66 val_66 +82 val_82 +86 val_86 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input12-0-9b141c1e5917ca82c6bc36a9a2950a1e b/sql/hive/src/test/resources/golden/input12-0-9b141c1e5917ca82c6bc36a9a2950a1e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12-0-9b141c1e5917ca82c6bc36a9a2950a1e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input12-1-2b9ccaa793eae0e73bf76335d3d6880 b/sql/hive/src/test/resources/golden/input12-1-2b9ccaa793eae0e73bf76335d3d6880 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12-1-2b9ccaa793eae0e73bf76335d3d6880 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input12-10-4d9eb316259a8e7ed6627bc27a639f7c b/sql/hive/src/test/resources/golden/input12-10-4d9eb316259a8e7ed6627bc27a639f7c new file mode 100644 index 0000000000000..4220cf5f30392 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12-10-4d9eb316259a8e7ed6627bc27a639f7c @@ -0,0 +1,311 @@ +238 2008-04-08 12 +311 2008-04-08 12 +409 2008-04-08 12 +255 2008-04-08 12 +278 2008-04-08 12 +484 2008-04-08 12 +265 2008-04-08 12 +401 2008-04-08 12 +273 2008-04-08 12 +224 2008-04-08 12 +369 2008-04-08 12 +213 2008-04-08 12 +406 2008-04-08 12 +429 2008-04-08 12 +374 2008-04-08 12 +469 2008-04-08 12 +495 2008-04-08 12 +327 2008-04-08 12 +281 2008-04-08 12 +277 2008-04-08 12 +209 2008-04-08 12 +403 2008-04-08 12 +417 2008-04-08 12 +430 2008-04-08 12 +252 2008-04-08 12 +292 2008-04-08 12 +219 2008-04-08 12 +287 2008-04-08 12 +338 2008-04-08 12 +446 2008-04-08 12 +459 2008-04-08 12 +394 2008-04-08 12 +237 2008-04-08 12 +482 2008-04-08 12 +413 2008-04-08 12 +494 2008-04-08 12 +207 2008-04-08 12 +466 2008-04-08 12 +208 2008-04-08 12 +399 2008-04-08 12 +396 2008-04-08 12 +247 2008-04-08 12 +417 2008-04-08 12 +489 2008-04-08 12 +377 2008-04-08 12 +397 2008-04-08 12 +309 2008-04-08 12 +365 2008-04-08 12 +266 2008-04-08 12 +439 2008-04-08 12 +342 2008-04-08 12 +367 2008-04-08 12 +325 2008-04-08 12 +475 2008-04-08 12 +203 2008-04-08 12 +339 2008-04-08 12 +455 2008-04-08 12 +311 2008-04-08 12 +316 2008-04-08 12 +302 2008-04-08 12 +205 2008-04-08 12 +438 2008-04-08 12 +345 2008-04-08 12 +489 2008-04-08 12 +378 2008-04-08 12 +221 2008-04-08 12 +280 2008-04-08 12 +427 2008-04-08 12 +277 2008-04-08 12 +208 2008-04-08 12 +356 2008-04-08 12 +399 2008-04-08 12 +382 2008-04-08 12 +498 2008-04-08 12 +386 2008-04-08 12 +437 2008-04-08 12 +469 2008-04-08 12 +286 2008-04-08 12 +459 2008-04-08 12 +239 2008-04-08 12 +213 2008-04-08 12 +216 2008-04-08 12 +430 2008-04-08 12 +278 2008-04-08 12 +289 2008-04-08 12 +221 2008-04-08 12 +318 2008-04-08 12 +332 2008-04-08 12 +311 2008-04-08 12 +275 2008-04-08 12 +241 2008-04-08 12 +333 2008-04-08 12 +284 2008-04-08 12 +230 2008-04-08 12 +260 2008-04-08 12 +404 2008-04-08 12 +384 2008-04-08 12 +489 2008-04-08 12 +353 2008-04-08 12 +373 2008-04-08 12 +272 2008-04-08 12 +217 2008-04-08 12 +348 2008-04-08 12 +466 2008-04-08 12 +411 2008-04-08 12 +230 2008-04-08 12 +208 2008-04-08 12 +348 2008-04-08 12 +463 2008-04-08 12 +431 2008-04-08 12 +496 2008-04-08 12 +322 2008-04-08 12 +468 2008-04-08 12 +393 2008-04-08 12 +454 2008-04-08 12 +298 2008-04-08 12 +418 2008-04-08 12 +327 2008-04-08 12 +230 2008-04-08 12 +205 2008-04-08 12 +404 2008-04-08 12 +436 2008-04-08 12 +469 2008-04-08 12 +468 2008-04-08 12 +308 2008-04-08 12 +288 2008-04-08 12 +481 2008-04-08 12 +457 2008-04-08 12 +282 2008-04-08 12 +318 2008-04-08 12 +318 2008-04-08 12 +409 2008-04-08 12 +470 2008-04-08 12 +369 2008-04-08 12 +316 2008-04-08 12 +413 2008-04-08 12 +490 2008-04-08 12 +364 2008-04-08 12 +395 2008-04-08 12 +282 2008-04-08 12 +238 2008-04-08 12 +419 2008-04-08 12 +307 2008-04-08 12 +435 2008-04-08 12 +277 2008-04-08 12 +273 2008-04-08 12 +306 2008-04-08 12 +224 2008-04-08 12 +309 2008-04-08 12 +389 2008-04-08 12 +327 2008-04-08 12 +242 2008-04-08 12 +369 2008-04-08 12 +392 2008-04-08 12 +272 2008-04-08 12 +331 2008-04-08 12 +401 2008-04-08 12 +242 2008-04-08 12 +452 2008-04-08 12 +226 2008-04-08 12 +497 2008-04-08 12 +402 2008-04-08 12 +396 2008-04-08 12 +317 2008-04-08 12 +395 2008-04-08 12 +336 2008-04-08 12 +229 2008-04-08 12 +233 2008-04-08 12 +472 2008-04-08 12 +322 2008-04-08 12 +498 2008-04-08 12 +321 2008-04-08 12 +430 2008-04-08 12 +489 2008-04-08 12 +458 2008-04-08 12 +223 2008-04-08 12 +492 2008-04-08 12 +449 2008-04-08 12 +218 2008-04-08 12 +228 2008-04-08 12 +453 2008-04-08 12 +209 2008-04-08 12 +468 2008-04-08 12 +342 2008-04-08 12 +230 2008-04-08 12 +368 2008-04-08 12 +296 2008-04-08 12 +216 2008-04-08 12 +367 2008-04-08 12 +344 2008-04-08 12 +274 2008-04-08 12 +219 2008-04-08 12 +239 2008-04-08 12 +485 2008-04-08 12 +223 2008-04-08 12 +256 2008-04-08 12 +263 2008-04-08 12 +487 2008-04-08 12 +480 2008-04-08 12 +401 2008-04-08 12 +288 2008-04-08 12 +244 2008-04-08 12 +438 2008-04-08 12 +467 2008-04-08 12 +432 2008-04-08 12 +202 2008-04-08 12 +316 2008-04-08 12 +229 2008-04-08 12 +469 2008-04-08 12 +463 2008-04-08 12 +280 2008-04-08 12 +283 2008-04-08 12 +331 2008-04-08 12 +235 2008-04-08 12 +321 2008-04-08 12 +335 2008-04-08 12 +466 2008-04-08 12 +366 2008-04-08 12 +403 2008-04-08 12 +483 2008-04-08 12 +257 2008-04-08 12 +406 2008-04-08 12 +409 2008-04-08 12 +406 2008-04-08 12 +401 2008-04-08 12 +258 2008-04-08 12 +203 2008-04-08 12 +262 2008-04-08 12 +348 2008-04-08 12 +424 2008-04-08 12 +396 2008-04-08 12 +201 2008-04-08 12 +217 2008-04-08 12 +431 2008-04-08 12 +454 2008-04-08 12 +478 2008-04-08 12 +298 2008-04-08 12 +431 2008-04-08 12 +424 2008-04-08 12 +382 2008-04-08 12 +397 2008-04-08 12 +480 2008-04-08 12 +291 2008-04-08 12 +351 2008-04-08 12 +255 2008-04-08 12 +438 2008-04-08 12 +414 2008-04-08 12 +200 2008-04-08 12 +491 2008-04-08 12 +237 2008-04-08 12 +439 2008-04-08 12 +360 2008-04-08 12 +248 2008-04-08 12 +479 2008-04-08 12 +305 2008-04-08 12 +417 2008-04-08 12 +444 2008-04-08 12 +429 2008-04-08 12 +443 2008-04-08 12 +323 2008-04-08 12 +325 2008-04-08 12 +277 2008-04-08 12 +230 2008-04-08 12 +478 2008-04-08 12 +468 2008-04-08 12 +310 2008-04-08 12 +317 2008-04-08 12 +333 2008-04-08 12 +493 2008-04-08 12 +460 2008-04-08 12 +207 2008-04-08 12 +249 2008-04-08 12 +265 2008-04-08 12 +480 2008-04-08 12 +353 2008-04-08 12 +214 2008-04-08 12 +462 2008-04-08 12 +233 2008-04-08 12 +406 2008-04-08 12 +454 2008-04-08 12 +375 2008-04-08 12 +401 2008-04-08 12 +421 2008-04-08 12 +407 2008-04-08 12 +384 2008-04-08 12 +256 2008-04-08 12 +384 2008-04-08 12 +379 2008-04-08 12 +462 2008-04-08 12 +492 2008-04-08 12 +298 2008-04-08 12 +341 2008-04-08 12 +498 2008-04-08 12 +458 2008-04-08 12 +362 2008-04-08 12 +285 2008-04-08 12 +348 2008-04-08 12 +273 2008-04-08 12 +281 2008-04-08 12 +344 2008-04-08 12 +469 2008-04-08 12 +315 2008-04-08 12 +448 2008-04-08 12 +348 2008-04-08 12 +307 2008-04-08 12 +414 2008-04-08 12 +477 2008-04-08 12 +222 2008-04-08 12 +403 2008-04-08 12 +400 2008-04-08 12 +200 2008-04-08 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input12-2-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/input12-2-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12-2-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input12-3-5186c4f54bcc1d9a2afb953c8dd5d8d7 b/sql/hive/src/test/resources/golden/input12-3-5186c4f54bcc1d9a2afb953c8dd5d8d7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12-4-f69ce1f5b3e0e77d1c487877580e6a23 b/sql/hive/src/test/resources/golden/input12-4-f69ce1f5b3e0e77d1c487877580e6a23 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12-5-d83ffe497d7f7a8f72a6844dc6dad3cf b/sql/hive/src/test/resources/golden/input12-5-d83ffe497d7f7a8f72a6844dc6dad3cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12-6-f6ae011490e0c8c037927767ad966ce4 b/sql/hive/src/test/resources/golden/input12-6-f6ae011490e0c8c037927767ad966ce4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12-7-16da1c1293626b943343443368679e9c b/sql/hive/src/test/resources/golden/input12-7-16da1c1293626b943343443368679e9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12-8-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input12-8-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..37dd922fd0787 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12-8-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,84 @@ +86 val_86 +27 val_27 +98 val_98 +66 val_66 +37 val_37 +15 val_15 +82 val_82 +17 val_17 +0 val_0 +57 val_57 +20 val_20 +92 val_92 +47 val_47 +72 val_72 +4 val_4 +35 val_35 +54 val_54 +51 val_51 +65 val_65 +83 val_83 +12 val_12 +67 val_67 +84 val_84 +58 val_58 +8 val_8 +24 val_24 +42 val_42 +0 val_0 +96 val_96 +26 val_26 +51 val_51 +43 val_43 +95 val_95 +98 val_98 +85 val_85 +77 val_77 +0 val_0 +87 val_87 +15 val_15 +72 val_72 +90 val_90 +19 val_19 +10 val_10 +5 val_5 +58 val_58 +35 val_35 +95 val_95 +11 val_11 +34 val_34 +42 val_42 +78 val_78 +76 val_76 +41 val_41 +30 val_30 +64 val_64 +76 val_76 +74 val_74 +69 val_69 +33 val_33 +70 val_70 +5 val_5 +2 val_2 +35 val_35 +80 val_80 +44 val_44 +53 val_53 +90 val_90 +12 val_12 +5 val_5 +70 val_70 +24 val_24 +70 val_70 +83 val_83 +26 val_26 +67 val_67 +18 val_18 +9 val_9 +18 val_18 +97 val_97 +84 val_84 +28 val_28 +37 val_37 +90 val_90 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input12-9-3d08dc27c1a133c2497fc554c0d169bd b/sql/hive/src/test/resources/golden/input12-9-3d08dc27c1a133c2497fc554c0d169bd new file mode 100644 index 0000000000000..d6e0c29932b9b --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12-9-3d08dc27c1a133c2497fc554c0d169bd @@ -0,0 +1,105 @@ +165 val_165 +193 val_193 +150 val_150 +128 val_128 +146 val_146 +152 val_152 +145 val_145 +166 val_166 +153 val_153 +193 val_193 +174 val_174 +199 val_199 +174 val_174 +162 val_162 +167 val_167 +195 val_195 +113 val_113 +155 val_155 +128 val_128 +149 val_149 +129 val_129 +170 val_170 +157 val_157 +111 val_111 +169 val_169 +125 val_125 +192 val_192 +187 val_187 +176 val_176 +138 val_138 +103 val_103 +176 val_176 +137 val_137 +180 val_180 +181 val_181 +138 val_138 +179 val_179 +172 val_172 +129 val_129 +158 val_158 +119 val_119 +197 val_197 +100 val_100 +199 val_199 +191 val_191 +165 val_165 +120 val_120 +131 val_131 +156 val_156 +196 val_196 +197 val_197 +187 val_187 +137 val_137 +169 val_169 +179 val_179 +118 val_118 +134 val_134 +138 val_138 +118 val_118 +177 val_177 +168 val_168 +143 val_143 +160 val_160 +195 val_195 +119 val_119 +149 val_149 +138 val_138 +103 val_103 +113 val_113 +167 val_167 +116 val_116 +191 val_191 +128 val_128 +193 val_193 +104 val_104 +175 val_175 +105 val_105 +190 val_190 +114 val_114 +164 val_164 +125 val_125 +164 val_164 +187 val_187 +104 val_104 +163 val_163 +119 val_119 +199 val_199 +120 val_120 +169 val_169 +178 val_178 +136 val_136 +172 val_172 +133 val_133 +175 val_175 +189 val_189 +134 val_134 +100 val_100 +146 val_146 +186 val_186 +167 val_167 +183 val_183 +152 val_152 +194 val_194 +126 val_126 +169 val_169 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-0-db1cd54a4cb36de2087605f32e41824f b/sql/hive/src/test/resources/golden/input12_hadoop20-0-db1cd54a4cb36de2087605f32e41824f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12_hadoop20-0-db1cd54a4cb36de2087605f32e41824f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-1-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/input12_hadoop20-1-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12_hadoop20-1-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-2-743c24cd29161d31a16ec446bd709d92 b/sql/hive/src/test/resources/golden/input12_hadoop20-2-743c24cd29161d31a16ec446bd709d92 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-3-f69ce1f5b3e0e77d1c487877580e6a23 b/sql/hive/src/test/resources/golden/input12_hadoop20-3-f69ce1f5b3e0e77d1c487877580e6a23 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-4-d83ffe497d7f7a8f72a6844dc6dad3cf b/sql/hive/src/test/resources/golden/input12_hadoop20-4-d83ffe497d7f7a8f72a6844dc6dad3cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-5-f6ae011490e0c8c037927767ad966ce4 b/sql/hive/src/test/resources/golden/input12_hadoop20-5-f6ae011490e0c8c037927767ad966ce4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-6-16da1c1293626b943343443368679e9c b/sql/hive/src/test/resources/golden/input12_hadoop20-6-16da1c1293626b943343443368679e9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-7-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input12_hadoop20-7-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..46057aa0a8fca --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12_hadoop20-7-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,84 @@ +86 val_86 +27 val_27 +98 val_98 +66 val_66 +37 val_37 +15 val_15 +82 val_82 +17 val_17 +0 val_0 +57 val_57 +20 val_20 +92 val_92 +47 val_47 +72 val_72 +4 val_4 +35 val_35 +54 val_54 +51 val_51 +65 val_65 +83 val_83 +12 val_12 +67 val_67 +84 val_84 +58 val_58 +8 val_8 +24 val_24 +42 val_42 +0 val_0 +96 val_96 +26 val_26 +51 val_51 +43 val_43 +95 val_95 +98 val_98 +85 val_85 +77 val_77 +0 val_0 +87 val_87 +15 val_15 +72 val_72 +90 val_90 +19 val_19 +10 val_10 +5 val_5 +58 val_58 +35 val_35 +95 val_95 +11 val_11 +34 val_34 +42 val_42 +78 val_78 +76 val_76 +41 val_41 +30 val_30 +64 val_64 +76 val_76 +74 val_74 +69 val_69 +33 val_33 +70 val_70 +5 val_5 +2 val_2 +35 val_35 +80 val_80 +44 val_44 +53 val_53 +90 val_90 +12 val_12 +5 val_5 +70 val_70 +24 val_24 +70 val_70 +83 val_83 +26 val_26 +67 val_67 +18 val_18 +9 val_9 +18 val_18 +97 val_97 +84 val_84 +28 val_28 +37 val_37 +90 val_90 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-8-3d08dc27c1a133c2497fc554c0d169bd b/sql/hive/src/test/resources/golden/input12_hadoop20-8-3d08dc27c1a133c2497fc554c0d169bd new file mode 100644 index 0000000000000..9ee31317478d5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12_hadoop20-8-3d08dc27c1a133c2497fc554c0d169bd @@ -0,0 +1,105 @@ +165 val_165 +193 val_193 +150 val_150 +128 val_128 +146 val_146 +152 val_152 +145 val_145 +166 val_166 +153 val_153 +193 val_193 +174 val_174 +199 val_199 +174 val_174 +162 val_162 +167 val_167 +195 val_195 +113 val_113 +155 val_155 +128 val_128 +149 val_149 +129 val_129 +170 val_170 +157 val_157 +111 val_111 +169 val_169 +125 val_125 +192 val_192 +187 val_187 +176 val_176 +138 val_138 +103 val_103 +176 val_176 +137 val_137 +180 val_180 +181 val_181 +138 val_138 +179 val_179 +172 val_172 +129 val_129 +158 val_158 +119 val_119 +197 val_197 +100 val_100 +199 val_199 +191 val_191 +165 val_165 +120 val_120 +131 val_131 +156 val_156 +196 val_196 +197 val_197 +187 val_187 +137 val_137 +169 val_169 +179 val_179 +118 val_118 +134 val_134 +138 val_138 +118 val_118 +177 val_177 +168 val_168 +143 val_143 +160 val_160 +195 val_195 +119 val_119 +149 val_149 +138 val_138 +103 val_103 +113 val_113 +167 val_167 +116 val_116 +191 val_191 +128 val_128 +193 val_193 +104 val_104 +175 val_175 +105 val_105 +190 val_190 +114 val_114 +164 val_164 +125 val_125 +164 val_164 +187 val_187 +104 val_104 +163 val_163 +119 val_119 +199 val_199 +120 val_120 +169 val_169 +178 val_178 +136 val_136 +172 val_172 +133 val_133 +175 val_175 +189 val_189 +134 val_134 +100 val_100 +146 val_146 +186 val_186 +167 val_167 +183 val_183 +152 val_152 +194 val_194 +126 val_126 +169 val_169 diff --git a/sql/hive/src/test/resources/golden/input12_hadoop20-9-4d9eb316259a8e7ed6627bc27a639f7c b/sql/hive/src/test/resources/golden/input12_hadoop20-9-4d9eb316259a8e7ed6627bc27a639f7c new file mode 100644 index 0000000000000..a66a07386eef8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input12_hadoop20-9-4d9eb316259a8e7ed6627bc27a639f7c @@ -0,0 +1,311 @@ +238 2008-04-08 12 +311 2008-04-08 12 +409 2008-04-08 12 +255 2008-04-08 12 +278 2008-04-08 12 +484 2008-04-08 12 +265 2008-04-08 12 +401 2008-04-08 12 +273 2008-04-08 12 +224 2008-04-08 12 +369 2008-04-08 12 +213 2008-04-08 12 +406 2008-04-08 12 +429 2008-04-08 12 +374 2008-04-08 12 +469 2008-04-08 12 +495 2008-04-08 12 +327 2008-04-08 12 +281 2008-04-08 12 +277 2008-04-08 12 +209 2008-04-08 12 +403 2008-04-08 12 +417 2008-04-08 12 +430 2008-04-08 12 +252 2008-04-08 12 +292 2008-04-08 12 +219 2008-04-08 12 +287 2008-04-08 12 +338 2008-04-08 12 +446 2008-04-08 12 +459 2008-04-08 12 +394 2008-04-08 12 +237 2008-04-08 12 +482 2008-04-08 12 +413 2008-04-08 12 +494 2008-04-08 12 +207 2008-04-08 12 +466 2008-04-08 12 +208 2008-04-08 12 +399 2008-04-08 12 +396 2008-04-08 12 +247 2008-04-08 12 +417 2008-04-08 12 +489 2008-04-08 12 +377 2008-04-08 12 +397 2008-04-08 12 +309 2008-04-08 12 +365 2008-04-08 12 +266 2008-04-08 12 +439 2008-04-08 12 +342 2008-04-08 12 +367 2008-04-08 12 +325 2008-04-08 12 +475 2008-04-08 12 +203 2008-04-08 12 +339 2008-04-08 12 +455 2008-04-08 12 +311 2008-04-08 12 +316 2008-04-08 12 +302 2008-04-08 12 +205 2008-04-08 12 +438 2008-04-08 12 +345 2008-04-08 12 +489 2008-04-08 12 +378 2008-04-08 12 +221 2008-04-08 12 +280 2008-04-08 12 +427 2008-04-08 12 +277 2008-04-08 12 +208 2008-04-08 12 +356 2008-04-08 12 +399 2008-04-08 12 +382 2008-04-08 12 +498 2008-04-08 12 +386 2008-04-08 12 +437 2008-04-08 12 +469 2008-04-08 12 +286 2008-04-08 12 +459 2008-04-08 12 +239 2008-04-08 12 +213 2008-04-08 12 +216 2008-04-08 12 +430 2008-04-08 12 +278 2008-04-08 12 +289 2008-04-08 12 +221 2008-04-08 12 +318 2008-04-08 12 +332 2008-04-08 12 +311 2008-04-08 12 +275 2008-04-08 12 +241 2008-04-08 12 +333 2008-04-08 12 +284 2008-04-08 12 +230 2008-04-08 12 +260 2008-04-08 12 +404 2008-04-08 12 +384 2008-04-08 12 +489 2008-04-08 12 +353 2008-04-08 12 +373 2008-04-08 12 +272 2008-04-08 12 +217 2008-04-08 12 +348 2008-04-08 12 +466 2008-04-08 12 +411 2008-04-08 12 +230 2008-04-08 12 +208 2008-04-08 12 +348 2008-04-08 12 +463 2008-04-08 12 +431 2008-04-08 12 +496 2008-04-08 12 +322 2008-04-08 12 +468 2008-04-08 12 +393 2008-04-08 12 +454 2008-04-08 12 +298 2008-04-08 12 +418 2008-04-08 12 +327 2008-04-08 12 +230 2008-04-08 12 +205 2008-04-08 12 +404 2008-04-08 12 +436 2008-04-08 12 +469 2008-04-08 12 +468 2008-04-08 12 +308 2008-04-08 12 +288 2008-04-08 12 +481 2008-04-08 12 +457 2008-04-08 12 +282 2008-04-08 12 +318 2008-04-08 12 +318 2008-04-08 12 +409 2008-04-08 12 +470 2008-04-08 12 +369 2008-04-08 12 +316 2008-04-08 12 +413 2008-04-08 12 +490 2008-04-08 12 +364 2008-04-08 12 +395 2008-04-08 12 +282 2008-04-08 12 +238 2008-04-08 12 +419 2008-04-08 12 +307 2008-04-08 12 +435 2008-04-08 12 +277 2008-04-08 12 +273 2008-04-08 12 +306 2008-04-08 12 +224 2008-04-08 12 +309 2008-04-08 12 +389 2008-04-08 12 +327 2008-04-08 12 +242 2008-04-08 12 +369 2008-04-08 12 +392 2008-04-08 12 +272 2008-04-08 12 +331 2008-04-08 12 +401 2008-04-08 12 +242 2008-04-08 12 +452 2008-04-08 12 +226 2008-04-08 12 +497 2008-04-08 12 +402 2008-04-08 12 +396 2008-04-08 12 +317 2008-04-08 12 +395 2008-04-08 12 +336 2008-04-08 12 +229 2008-04-08 12 +233 2008-04-08 12 +472 2008-04-08 12 +322 2008-04-08 12 +498 2008-04-08 12 +321 2008-04-08 12 +430 2008-04-08 12 +489 2008-04-08 12 +458 2008-04-08 12 +223 2008-04-08 12 +492 2008-04-08 12 +449 2008-04-08 12 +218 2008-04-08 12 +228 2008-04-08 12 +453 2008-04-08 12 +209 2008-04-08 12 +468 2008-04-08 12 +342 2008-04-08 12 +230 2008-04-08 12 +368 2008-04-08 12 +296 2008-04-08 12 +216 2008-04-08 12 +367 2008-04-08 12 +344 2008-04-08 12 +274 2008-04-08 12 +219 2008-04-08 12 +239 2008-04-08 12 +485 2008-04-08 12 +223 2008-04-08 12 +256 2008-04-08 12 +263 2008-04-08 12 +487 2008-04-08 12 +480 2008-04-08 12 +401 2008-04-08 12 +288 2008-04-08 12 +244 2008-04-08 12 +438 2008-04-08 12 +467 2008-04-08 12 +432 2008-04-08 12 +202 2008-04-08 12 +316 2008-04-08 12 +229 2008-04-08 12 +469 2008-04-08 12 +463 2008-04-08 12 +280 2008-04-08 12 +283 2008-04-08 12 +331 2008-04-08 12 +235 2008-04-08 12 +321 2008-04-08 12 +335 2008-04-08 12 +466 2008-04-08 12 +366 2008-04-08 12 +403 2008-04-08 12 +483 2008-04-08 12 +257 2008-04-08 12 +406 2008-04-08 12 +409 2008-04-08 12 +406 2008-04-08 12 +401 2008-04-08 12 +258 2008-04-08 12 +203 2008-04-08 12 +262 2008-04-08 12 +348 2008-04-08 12 +424 2008-04-08 12 +396 2008-04-08 12 +201 2008-04-08 12 +217 2008-04-08 12 +431 2008-04-08 12 +454 2008-04-08 12 +478 2008-04-08 12 +298 2008-04-08 12 +431 2008-04-08 12 +424 2008-04-08 12 +382 2008-04-08 12 +397 2008-04-08 12 +480 2008-04-08 12 +291 2008-04-08 12 +351 2008-04-08 12 +255 2008-04-08 12 +438 2008-04-08 12 +414 2008-04-08 12 +200 2008-04-08 12 +491 2008-04-08 12 +237 2008-04-08 12 +439 2008-04-08 12 +360 2008-04-08 12 +248 2008-04-08 12 +479 2008-04-08 12 +305 2008-04-08 12 +417 2008-04-08 12 +444 2008-04-08 12 +429 2008-04-08 12 +443 2008-04-08 12 +323 2008-04-08 12 +325 2008-04-08 12 +277 2008-04-08 12 +230 2008-04-08 12 +478 2008-04-08 12 +468 2008-04-08 12 +310 2008-04-08 12 +317 2008-04-08 12 +333 2008-04-08 12 +493 2008-04-08 12 +460 2008-04-08 12 +207 2008-04-08 12 +249 2008-04-08 12 +265 2008-04-08 12 +480 2008-04-08 12 +353 2008-04-08 12 +214 2008-04-08 12 +462 2008-04-08 12 +233 2008-04-08 12 +406 2008-04-08 12 +454 2008-04-08 12 +375 2008-04-08 12 +401 2008-04-08 12 +421 2008-04-08 12 +407 2008-04-08 12 +384 2008-04-08 12 +256 2008-04-08 12 +384 2008-04-08 12 +379 2008-04-08 12 +462 2008-04-08 12 +492 2008-04-08 12 +298 2008-04-08 12 +341 2008-04-08 12 +498 2008-04-08 12 +458 2008-04-08 12 +362 2008-04-08 12 +285 2008-04-08 12 +348 2008-04-08 12 +273 2008-04-08 12 +281 2008-04-08 12 +344 2008-04-08 12 +469 2008-04-08 12 +315 2008-04-08 12 +448 2008-04-08 12 +348 2008-04-08 12 +307 2008-04-08 12 +414 2008-04-08 12 +477 2008-04-08 12 +222 2008-04-08 12 +403 2008-04-08 12 +400 2008-04-08 12 +200 2008-04-08 12 diff --git a/sql/hive/src/test/resources/golden/input14-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/input14-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input14-1-d0a1caeeeb79580713b7ecc28543f74a b/sql/hive/src/test/resources/golden/input14-1-d0a1caeeeb79580713b7ecc28543f74a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input14-2-1d791beabaa5288ea2fcf6b3675eda26 b/sql/hive/src/test/resources/golden/input14-2-1d791beabaa5288ea2fcf6b3675eda26 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input14-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input14-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..703a4eef24f3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/input14-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,84 @@ +0 val_0 +0 val_0 +0 val_0 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +2 val_2 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +4 val_4 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +8 val_8 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +9 val_9 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input14_limit-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/input14_limit-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input14_limit-1-be9934fc5e6ecb9854eb7531a5929dcf b/sql/hive/src/test/resources/golden/input14_limit-1-be9934fc5e6ecb9854eb7531a5929dcf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input14_limit-2-780cdc89e0e736790124b6bdac827951 b/sql/hive/src/test/resources/golden/input14_limit-2-780cdc89e0e736790124b6bdac827951 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input14_limit-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input14_limit-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..4335dce6a9929 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input14_limit-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,5 @@ +0 val_0 +0 val_0 +0 val_0 +10 val_10 +11 val_11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input16_cc-0-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/input16_cc-0-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input16_cc-0-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/input16_cc-1-5180e975a6babd51752706f1799e7df5 b/sql/hive/src/test/resources/golden/input16_cc-1-5180e975a6babd51752706f1799e7df5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input16_cc-2-9ea7bc94b5383e71adb678f1dac1c619 b/sql/hive/src/test/resources/golden/input16_cc-2-9ea7bc94b5383e71adb678f1dac1c619 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/input16_cc-2-9ea7bc94b5383e71adb678f1dac1c619 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/input17-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/input17-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input17-1-be9cde5e769f171f60f61a7739de8f17 b/sql/hive/src/test/resources/golden/input17-1-be9cde5e769f171f60f61a7739de8f17 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input17-2-21166e268096f6ec67f4f57ec333e901 b/sql/hive/src/test/resources/golden/input17-2-21166e268096f6ec67f4f57ec333e901 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input17-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input17-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..1c48b3680a3ac --- /dev/null +++ b/sql/hive/src/test/resources/golden/input17-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,11 @@ +NULL NULL +-1461153966 {"myint":49,"mystring":"343","underscore_int":7} +-1952710705 {"myint":25,"mystring":"125","underscore_int":5} +-734328905 {"myint":16,"mystring":"64","underscore_int":4} +-751827636 {"myint":4,"mystring":"8","underscore_int":2} +1244525196 {"myint":36,"mystring":"216","underscore_int":6} +1638581586 {"myint":64,"mystring":"512","underscore_int":8} +1712634731 {"myint":0,"mystring":"0","underscore_int":0} +336964422 {"myint":81,"mystring":"729","underscore_int":9} +465985201 {"myint":1,"mystring":"1","underscore_int":1} +477111225 {"myint":9,"mystring":"27","underscore_int":3} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input19-0-a8eaa79d3a2762cdb263bc822d62df3a b/sql/hive/src/test/resources/golden/input19-0-a8eaa79d3a2762cdb263bc822d62df3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input19-1-f2832e249ab28bb3fb8e472012c5ffc b/sql/hive/src/test/resources/golden/input19-1-f2832e249ab28bb3fb8e472012c5ffc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input19-2-5a804e02e4419e785d15e7f39d6c5730 b/sql/hive/src/test/resources/golden/input19-2-5a804e02e4419e785d15e7f39d6c5730 new file mode 100644 index 0000000000000..795dbe3a976eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/input19-2-5a804e02e4419e785d15e7f39d6c5730 @@ -0,0 +1 @@ +127.0.0.1 NULL frank 10/Oct/2000:13:55:36 -0700 GET /apache_pb.gif HTTP/1.0 200 2326 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input1_limit-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/input1_limit-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input1_limit-1-f69ce1f5b3e0e77d1c487877580e6a23 b/sql/hive/src/test/resources/golden/input1_limit-1-f69ce1f5b3e0e77d1c487877580e6a23 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input1_limit-2-c1d996fc96189d323f6af180708abc12 b/sql/hive/src/test/resources/golden/input1_limit-2-c1d996fc96189d323f6af180708abc12 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input1_limit-3-a4a7e1c4b4482e1063c00c32d11cf1e b/sql/hive/src/test/resources/golden/input1_limit-3-a4a7e1c4b4482e1063c00c32d11cf1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input1_limit-4-8a0c68a4f7386ff214db5d9eed0876d5 b/sql/hive/src/test/resources/golden/input1_limit-4-8a0c68a4f7386ff214db5d9eed0876d5 new file mode 100644 index 0000000000000..fdf93911ee847 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input1_limit-4-8a0c68a4f7386ff214db5d9eed0876d5 @@ -0,0 +1,10 @@ +0 val_0 +15 val_15 +17 val_17 +27 val_27 +37 val_37 +57 val_57 +66 val_66 +82 val_82 +86 val_86 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input1_limit-5-eaaf713833e28a803c798562c7d6cd23 b/sql/hive/src/test/resources/golden/input1_limit-5-eaaf713833e28a803c798562c7d6cd23 new file mode 100644 index 0000000000000..8a8f1a1b8bbe1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input1_limit-5-eaaf713833e28a803c798562c7d6cd23 @@ -0,0 +1,5 @@ +27 val_27 +37 val_37 +66 val_66 +86 val_86 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input2-0-eaf4ec8905774e4be6ea3fa4f32a456c b/sql/hive/src/test/resources/golden/input2-0-eaf4ec8905774e4be6ea3fa4f32a456c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input2-1-e0efeda558cd0194f4764a5735147b16 b/sql/hive/src/test/resources/golden/input2-1-e0efeda558cd0194f4764a5735147b16 new file mode 100644 index 0000000000000..743be67e8d1c3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input2-1-e0efeda558cd0194f4764a5735147b16 @@ -0,0 +1,2 @@ +a int None +b double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input2-2-aa9ab0598e0cb7a12c719f9b3d98dbfd b/sql/hive/src/test/resources/golden/input2-2-aa9ab0598e0cb7a12c719f9b3d98dbfd new file mode 100644 index 0000000000000..743be67e8d1c3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input2-2-aa9ab0598e0cb7a12c719f9b3d98dbfd @@ -0,0 +1,2 @@ +a int None +b double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input2-3-45b9f786f64afa5e039d1856fe926649 b/sql/hive/src/test/resources/golden/input2-3-45b9f786f64afa5e039d1856fe926649 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input2-4-235f92683416fab031e6e7490487b15b b/sql/hive/src/test/resources/golden/input2-4-235f92683416fab031e6e7490487b15b new file mode 100644 index 0000000000000..ca0726f517eeb --- /dev/null +++ b/sql/hive/src/test/resources/golden/input2-4-235f92683416fab031e6e7490487b15b @@ -0,0 +1,3 @@ +a array None +b double None +c map None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input2-5-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/input2-5-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..2c861553f9aa2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input2-5-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,4 @@ +src +srcpart +test2a +test2b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input2-6-4a6b9674c126337f71834f11613f996d b/sql/hive/src/test/resources/golden/input2-6-4a6b9674c126337f71834f11613f996d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input2-7-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/input2-7-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..3e40a0c866d4d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input2-7-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,3 @@ +src +srcpart +test2b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input2-8-28c3fc507cd2e02a3a39331fc9c95334 b/sql/hive/src/test/resources/golden/input2-8-28c3fc507cd2e02a3a39331fc9c95334 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input2-9-48bf8c06ed0a264d0863613fe79795e1 b/sql/hive/src/test/resources/golden/input2-9-48bf8c06ed0a264d0863613fe79795e1 new file mode 100644 index 0000000000000..5337f342fedd8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input2-9-48bf8c06ed0a264d0863613fe79795e1 @@ -0,0 +1,17 @@ +ABSTRACT SYNTAX TREE: + TOK_SHOWTABLES + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Table Operator: + Show Tables + database name: default + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/input21-0-7f40c525398953892ffd6283f54ba427 b/sql/hive/src/test/resources/golden/input21-0-7f40c525398953892ffd6283f54ba427 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input21-1-70b803742328eacc69eb1ed044a5c6b8 b/sql/hive/src/test/resources/golden/input21-1-70b803742328eacc69eb1ed044a5c6b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input21-2-a4b3aeb45ae0cf38777e126faed0eff7 b/sql/hive/src/test/resources/golden/input21-2-a4b3aeb45ae0cf38777e126faed0eff7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input21-3-9809b74435cbaedef0dc6e6b88b180fe b/sql/hive/src/test/resources/golden/input21-3-9809b74435cbaedef0dc6e6b88b180fe new file mode 100644 index 0000000000000..c6c298df200ca --- /dev/null +++ b/sql/hive/src/test/resources/golden/input21-3-9809b74435cbaedef0dc6e6b88b180fe @@ -0,0 +1,10 @@ +1.0 1 same 0 +1.0 1 same 1 +1.0 1 same 2 +1.0 1 same 3 +1.0 1 same 4 +NULL 1 same 5 +NULL NULL same 6 +1.0 NULL same 7 +1.0 1 same 8 +1.0 1 same 9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input22-0-b9cd4041ca510639838a97376747b498 b/sql/hive/src/test/resources/golden/input22-0-b9cd4041ca510639838a97376747b498 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input22-1-b7f46eccd104e6ed1b29e2de45089f66 b/sql/hive/src/test/resources/golden/input22-1-b7f46eccd104e6ed1b29e2de45089f66 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input22-2-10e46b53620b6b05019da4e58f53e6c3 b/sql/hive/src/test/resources/golden/input22-2-10e46b53620b6b05019da4e58f53e6c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input22-3-8285c1934441b12f6c016e13cb410e79 b/sql/hive/src/test/resources/golden/input22-3-8285c1934441b12f6c016e13cb410e79 new file mode 100644 index 0000000000000..336ba0545635d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input22-3-8285c1934441b12f6c016e13cb410e79 @@ -0,0 +1,10 @@ +0 +0 +0 +10 +100 +100 +103 +103 +104 +104 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input23-0-c983ab8049996ad5e1e0296b51ae81cf b/sql/hive/src/test/resources/golden/input23-0-c983ab8049996ad5e1e0296b51ae81cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input23-1-c8e32187d09172eb32b0480fcd28cccb b/sql/hive/src/test/resources/golden/input23-1-c8e32187d09172eb32b0480fcd28cccb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input24-0-f8116598acadb7589ae02b13b65e1ad8 b/sql/hive/src/test/resources/golden/input24-0-f8116598acadb7589ae02b13b65e1ad8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input24-1-f57485de80ad64f9931bf92514fa1 b/sql/hive/src/test/resources/golden/input24-1-f57485de80ad64f9931bf92514fa1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input24-2-3fc20939000a5324a928feeb673a1ee2 b/sql/hive/src/test/resources/golden/input24-2-3fc20939000a5324a928feeb673a1ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input24-3-3189f3b2990de94619b9cb583d9dd3c5 b/sql/hive/src/test/resources/golden/input24-3-3189f3b2990de94619b9cb583d9dd3c5 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input24-3-3189f3b2990de94619b9cb583d9dd3c5 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input25-0-f8116598acadb7589ae02b13b65e1ad8 b/sql/hive/src/test/resources/golden/input25-0-f8116598acadb7589ae02b13b65e1ad8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input25-1-f57485de80ad64f9931bf92514fa1 b/sql/hive/src/test/resources/golden/input25-1-f57485de80ad64f9931bf92514fa1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input25-2-74a4b9d59ee26b650f567c07e9103b66 b/sql/hive/src/test/resources/golden/input25-2-74a4b9d59ee26b650f567c07e9103b66 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input25-3-d4940dd537ae72d234ffea23f8f0b103 b/sql/hive/src/test/resources/golden/input25-3-d4940dd537ae72d234ffea23f8f0b103 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input25-4-72c74c55dd7d85d194448e9c58488938 b/sql/hive/src/test/resources/golden/input25-4-72c74c55dd7d85d194448e9c58488938 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input26-0-1b6e9e73dd7ee60644c0997b21f48430 b/sql/hive/src/test/resources/golden/input26-0-1b6e9e73dd7ee60644c0997b21f48430 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input26-1-8272225744e83ba4cbe158a5c113fce3 b/sql/hive/src/test/resources/golden/input26-1-8272225744e83ba4cbe158a5c113fce3 new file mode 100644 index 0000000000000..b8fd0ab6545d6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input26-1-8272225744e83ba4cbe158a5c113fce3 @@ -0,0 +1,5 @@ +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +2 val_2 2008-04-08 11 +4 val_4 2008-04-08 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input28-0-b85d5edb4640c4b154e91e9a1beeef8a b/sql/hive/src/test/resources/golden/input28-0-b85d5edb4640c4b154e91e9a1beeef8a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input28-1-f57485de80ad64f9931bf92514fa1 b/sql/hive/src/test/resources/golden/input28-1-f57485de80ad64f9931bf92514fa1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input28-2-e88e8d960eeb128fbc6642274780ce4c b/sql/hive/src/test/resources/golden/input28-2-e88e8d960eeb128fbc6642274780ce4c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input28-3-a3da4a5ba73e312a8adafc1bc8a0f930 b/sql/hive/src/test/resources/golden/input28-3-a3da4a5ba73e312a8adafc1bc8a0f930 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input2_limit-0-44591b07e007def036cea6c61a3f0a7f b/sql/hive/src/test/resources/golden/input2_limit-0-44591b07e007def036cea6c61a3f0a7f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input2_limit-1-fed7e0bb996623da7dd17793e835f785 b/sql/hive/src/test/resources/golden/input2_limit-1-fed7e0bb996623da7dd17793e835f785 new file mode 100644 index 0000000000000..899417ee77ad8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input2_limit-1-fed7e0bb996623da7dd17793e835f785 @@ -0,0 +1,5 @@ +238 val_238 +86 val_86 +27 val_27 +165 val_165 +255 val_255 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input3-0-2c80ec90d4d2c9c7446c05651bb76bff b/sql/hive/src/test/resources/golden/input3-0-2c80ec90d4d2c9c7446c05651bb76bff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3-1-6ec8e282bd39883a57aecd9e4c8cdf1d b/sql/hive/src/test/resources/golden/input3-1-6ec8e282bd39883a57aecd9e4c8cdf1d new file mode 100644 index 0000000000000..743be67e8d1c3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-1-6ec8e282bd39883a57aecd9e4c8cdf1d @@ -0,0 +1,2 @@ +a int None +b double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input3-10-10a1a8a97f6417c3da16829f7e519475 b/sql/hive/src/test/resources/golden/input3-10-10a1a8a97f6417c3da16829f7e519475 new file mode 100644 index 0000000000000..594b29ca1410f --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-10-10a1a8a97f6417c3da16829f7e519475 @@ -0,0 +1,4 @@ +a array None +b double None +c map None +x double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input3-11-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/input3-11-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..ac382c7369264 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-11-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,4 @@ +src +srcpart +test3a +test3c \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input3-12-a22d09de72e5067a0a94113cdecdaa95 b/sql/hive/src/test/resources/golden/input3-12-a22d09de72e5067a0a94113cdecdaa95 new file mode 100644 index 0000000000000..cb17be511e875 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-12-a22d09de72e5067a0a94113cdecdaa95 @@ -0,0 +1,14 @@ +ABSTRACT SYNTAX TREE: + (TOK_ALTERTABLE_REPLACECOLS TEST3c (TOK_TABCOLLIST (TOK_TABCOL R1 TOK_INT) (TOK_TABCOL R2 TOK_DOUBLE))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Alter Table Operator: + Alter Table + type: replace columns + new columns: r1 int, r2 double + old name: TEST3c + diff --git a/sql/hive/src/test/resources/golden/input3-13-23bbec31affef0d758bc4a40490e0b9a b/sql/hive/src/test/resources/golden/input3-13-23bbec31affef0d758bc4a40490e0b9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3-14-efee6816e20fe61595a4a2a991071219 b/sql/hive/src/test/resources/golden/input3-14-efee6816e20fe61595a4a2a991071219 new file mode 100644 index 0000000000000..b906fd3c2e775 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-14-efee6816e20fe61595a4a2a991071219 @@ -0,0 +1,4 @@ +r1 int None +r2 double None + +Detailed Table Information Table(tableName:test3c, dbName:default, owner:marmbrus, createTime:1389730377, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:r1, type:int, comment:null), FieldSchema(name:r2, type:double, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/test3c, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1389730378, transient_lastDdlTime=1389730378}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input3-2-fa2aceba8cdcb869262e8ad6d431f491 b/sql/hive/src/test/resources/golden/input3-2-fa2aceba8cdcb869262e8ad6d431f491 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3-3-1c5990b1aed2be48311810dae3019994 b/sql/hive/src/test/resources/golden/input3-3-1c5990b1aed2be48311810dae3019994 new file mode 100644 index 0000000000000..ca0726f517eeb --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-3-1c5990b1aed2be48311810dae3019994 @@ -0,0 +1,3 @@ +a array None +b double None +c map None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input3-4-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/input3-4-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..6b1ce270d97e9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-4-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,4 @@ +src +srcpart +test3a +test3b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input3-5-f40b7cc4ac38c0121ccab9ef4e7e9fd2 b/sql/hive/src/test/resources/golden/input3-5-f40b7cc4ac38c0121ccab9ef4e7e9fd2 new file mode 100644 index 0000000000000..92c0ed68f8a7b --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-5-f40b7cc4ac38c0121ccab9ef4e7e9fd2 @@ -0,0 +1,14 @@ +ABSTRACT SYNTAX TREE: + (TOK_ALTERTABLE_ADDCOLS TEST3b (TOK_TABCOLLIST (TOK_TABCOL X TOK_DOUBLE))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Alter Table Operator: + Alter Table + type: add columns + new columns: x double + old name: TEST3b + diff --git a/sql/hive/src/test/resources/golden/input3-6-ba8c440158c2519353d02471bfb05694 b/sql/hive/src/test/resources/golden/input3-6-ba8c440158c2519353d02471bfb05694 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3-7-1c5990b1aed2be48311810dae3019994 b/sql/hive/src/test/resources/golden/input3-7-1c5990b1aed2be48311810dae3019994 new file mode 100644 index 0000000000000..594b29ca1410f --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-7-1c5990b1aed2be48311810dae3019994 @@ -0,0 +1,4 @@ +a array None +b double None +c map None +x double None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input3-8-4dc0fefca4d158fd2ab40551ae9e35be b/sql/hive/src/test/resources/golden/input3-8-4dc0fefca4d158fd2ab40551ae9e35be new file mode 100644 index 0000000000000..09bbc29377720 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3-8-4dc0fefca4d158fd2ab40551ae9e35be @@ -0,0 +1,14 @@ +ABSTRACT SYNTAX TREE: + (TOK_ALTERTABLE_RENAME TEST3b TEST3c) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Alter Table Operator: + Alter Table + type: rename + new name: TEST3c + old name: TEST3b + diff --git a/sql/hive/src/test/resources/golden/input3-9-5076c1c35053b09173f6acdf1b5e9d6e b/sql/hive/src/test/resources/golden/input3-9-5076c1c35053b09173f6acdf1b5e9d6e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input30-0-582c5fcbe2fe12cc8e7b21225583d96c b/sql/hive/src/test/resources/golden/input30-0-582c5fcbe2fe12cc8e7b21225583d96c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input30-1-90c0d1a75de78c405413fd627caea4ab b/sql/hive/src/test/resources/golden/input30-1-90c0d1a75de78c405413fd627caea4ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input30-2-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/input30-2-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input30-2-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input30-3-c21dba410fb07a098f93430a9d21df79 b/sql/hive/src/test/resources/golden/input30-3-c21dba410fb07a098f93430a9d21df79 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input30-3-c21dba410fb07a098f93430a9d21df79 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input30-4-f0ebd08e7675b19ae831824ef4d9e223 b/sql/hive/src/test/resources/golden/input30-4-f0ebd08e7675b19ae831824ef4d9e223 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input30-5-38734677c27b5f90a8df5da6e6351c76 b/sql/hive/src/test/resources/golden/input30-5-38734677c27b5f90a8df5da6e6351c76 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input30-6-f120ac8c87db9eebb5da7ac99b48600 b/sql/hive/src/test/resources/golden/input30-6-f120ac8c87db9eebb5da7ac99b48600 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input30-6-f120ac8c87db9eebb5da7ac99b48600 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input30-7-95d10d459c088d5fbefd00bdd8d44c3f b/sql/hive/src/test/resources/golden/input30-7-95d10d459c088d5fbefd00bdd8d44c3f new file mode 100644 index 0000000000000..25bf17fc5aaab --- /dev/null +++ b/sql/hive/src/test/resources/golden/input30-7-95d10d459c088d5fbefd00bdd8d44c3f @@ -0,0 +1 @@ +18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input31-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/input31-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input31-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/input31-1-c21dba410fb07a098f93430a9d21df79 b/sql/hive/src/test/resources/golden/input31-1-c21dba410fb07a098f93430a9d21df79 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input31-1-c21dba410fb07a098f93430a9d21df79 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/input31-2-705764f8f7cab9378964af30b83f7fe b/sql/hive/src/test/resources/golden/input31-2-705764f8f7cab9378964af30b83f7fe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input31-3-50c905261882f7fd8539fdd91e68151f b/sql/hive/src/test/resources/golden/input31-3-50c905261882f7fd8539fdd91e68151f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input31-4-2f886fa357df9342733551fa1b53f913 b/sql/hive/src/test/resources/golden/input31-4-2f886fa357df9342733551fa1b53f913 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input32-0-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/input32-0-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input32-0-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/input32-1-c21dba410fb07a098f93430a9d21df79 b/sql/hive/src/test/resources/golden/input32-1-c21dba410fb07a098f93430a9d21df79 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input32-1-c21dba410fb07a098f93430a9d21df79 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/input32-2-1ba7748b3d2f8908c2e81771ab229316 b/sql/hive/src/test/resources/golden/input32-2-1ba7748b3d2f8908c2e81771ab229316 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/input32-2-1ba7748b3d2f8908c2e81771ab229316 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/input32-3-b0070890240c15d647af59f41b77ba3d b/sql/hive/src/test/resources/golden/input32-3-b0070890240c15d647af59f41b77ba3d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input32-4-d0e1378a30e21e0198e47d9b668ee1f6 b/sql/hive/src/test/resources/golden/input32-4-d0e1378a30e21e0198e47d9b668ee1f6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input32-5-8789d32fc5b784fe2d171566732c573e b/sql/hive/src/test/resources/golden/input32-5-8789d32fc5b784fe2d171566732c573e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input37-0-86e2e274650fb56651607ea10d356fc0 b/sql/hive/src/test/resources/golden/input37-0-86e2e274650fb56651607ea10d356fc0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input37-1-6bb557a5cfe7ceaa2f749494ea32b9e3 b/sql/hive/src/test/resources/golden/input37-1-6bb557a5cfe7ceaa2f749494ea32b9e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39-0-7bd12162381231be9d578797818957a7 b/sql/hive/src/test/resources/golden/input39-0-7bd12162381231be9d578797818957a7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39-1-92a6ee4486a9fc8fc7bc567e42b9e2a3 b/sql/hive/src/test/resources/golden/input39-1-92a6ee4486a9fc8fc7bc567e42b9e2a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39-10-28bf1b34c04a048da339eddd4c1fd779 b/sql/hive/src/test/resources/golden/input39-10-28bf1b34c04a048da339eddd4c1fd779 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39-11-6d0814cbb72eb96bfc75c95d06f1e528 b/sql/hive/src/test/resources/golden/input39-11-6d0814cbb72eb96bfc75c95d06f1e528 new file mode 100644 index 0000000000000..25bf17fc5aaab --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-11-6d0814cbb72eb96bfc75c95d06f1e528 @@ -0,0 +1 @@ +18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39-12-f120ac8c87db9eebb5da7ac99b48600 b/sql/hive/src/test/resources/golden/input39-12-f120ac8c87db9eebb5da7ac99b48600 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-12-f120ac8c87db9eebb5da7ac99b48600 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39-13-c9c5b254ce9b439f09e72a0dce5ec8f0 b/sql/hive/src/test/resources/golden/input39-13-c9c5b254ce9b439f09e72a0dce5ec8f0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-13-c9c5b254ce9b439f09e72a0dce5ec8f0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39-14-bcc1d5fd287f81bac1092a913b09956d b/sql/hive/src/test/resources/golden/input39-14-bcc1d5fd287f81bac1092a913b09956d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-14-bcc1d5fd287f81bac1092a913b09956d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39-2-ee667c6ab003bb83f6bf1c72153eba39 b/sql/hive/src/test/resources/golden/input39-2-ee667c6ab003bb83f6bf1c72153eba39 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39-3-9e1699caf2caa347fa8ee6e9b6e7da6e b/sql/hive/src/test/resources/golden/input39-3-9e1699caf2caa347fa8ee6e9b6e7da6e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39-4-53453776bf062f28d371fc7336b7eae2 b/sql/hive/src/test/resources/golden/input39-4-53453776bf062f28d371fc7336b7eae2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39-5-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/input39-5-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-5-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39-6-763ab5853bff619e6525c01e46b2a923 b/sql/hive/src/test/resources/golden/input39-6-763ab5853bff619e6525c01e46b2a923 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-6-763ab5853bff619e6525c01e46b2a923 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39-7-9b141c1e5917ca82c6bc36a9a2950a1e b/sql/hive/src/test/resources/golden/input39-7-9b141c1e5917ca82c6bc36a9a2950a1e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-7-9b141c1e5917ca82c6bc36a9a2950a1e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39-8-2b9ccaa793eae0e73bf76335d3d6880 b/sql/hive/src/test/resources/golden/input39-8-2b9ccaa793eae0e73bf76335d3d6880 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-8-2b9ccaa793eae0e73bf76335d3d6880 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39-9-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/input39-9-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39-9-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-0-4c33233bafd910d69c2b8845d35abffe b/sql/hive/src/test/resources/golden/input39_hadoop20-0-4c33233bafd910d69c2b8845d35abffe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-1-92a6ee4486a9fc8fc7bc567e42b9e2a3 b/sql/hive/src/test/resources/golden/input39_hadoop20-1-92a6ee4486a9fc8fc7bc567e42b9e2a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-10-6d0814cbb72eb96bfc75c95d06f1e528 b/sql/hive/src/test/resources/golden/input39_hadoop20-10-6d0814cbb72eb96bfc75c95d06f1e528 new file mode 100644 index 0000000000000..25bf17fc5aaab --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39_hadoop20-10-6d0814cbb72eb96bfc75c95d06f1e528 @@ -0,0 +1 @@ +18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-11-f120ac8c87db9eebb5da7ac99b48600 b/sql/hive/src/test/resources/golden/input39_hadoop20-11-f120ac8c87db9eebb5da7ac99b48600 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39_hadoop20-11-f120ac8c87db9eebb5da7ac99b48600 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-12-a6a77ae749a7e7f8022d71c03322fc21 b/sql/hive/src/test/resources/golden/input39_hadoop20-12-a6a77ae749a7e7f8022d71c03322fc21 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39_hadoop20-12-a6a77ae749a7e7f8022d71c03322fc21 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-2-ee667c6ab003bb83f6bf1c72153eba39 b/sql/hive/src/test/resources/golden/input39_hadoop20-2-ee667c6ab003bb83f6bf1c72153eba39 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-3-9e1699caf2caa347fa8ee6e9b6e7da6e b/sql/hive/src/test/resources/golden/input39_hadoop20-3-9e1699caf2caa347fa8ee6e9b6e7da6e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-4-53453776bf062f28d371fc7336b7eae2 b/sql/hive/src/test/resources/golden/input39_hadoop20-4-53453776bf062f28d371fc7336b7eae2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-5-823920925ca9c8a2ca9016f52c0f4ee b/sql/hive/src/test/resources/golden/input39_hadoop20-5-823920925ca9c8a2ca9016f52c0f4ee new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39_hadoop20-5-823920925ca9c8a2ca9016f52c0f4ee @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-6-763ab5853bff619e6525c01e46b2a923 b/sql/hive/src/test/resources/golden/input39_hadoop20-6-763ab5853bff619e6525c01e46b2a923 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39_hadoop20-6-763ab5853bff619e6525c01e46b2a923 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-7-db1cd54a4cb36de2087605f32e41824f b/sql/hive/src/test/resources/golden/input39_hadoop20-7-db1cd54a4cb36de2087605f32e41824f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39_hadoop20-7-db1cd54a4cb36de2087605f32e41824f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-8-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/input39_hadoop20-8-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input39_hadoop20-8-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input39_hadoop20-9-28bf1b34c04a048da339eddd4c1fd779 b/sql/hive/src/test/resources/golden/input39_hadoop20-9-28bf1b34c04a048da339eddd4c1fd779 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3_limit-0-27fc8f7d7456a761e1d0c2c075b84dc6 b/sql/hive/src/test/resources/golden/input3_limit-0-27fc8f7d7456a761e1d0c2c075b84dc6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3_limit-1-7b46b8baf9c7628da9c190c96b917057 b/sql/hive/src/test/resources/golden/input3_limit-1-7b46b8baf9c7628da9c190c96b917057 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3_limit-2-c6583bdb759c8a050238a32a6ce8273d b/sql/hive/src/test/resources/golden/input3_limit-2-c6583bdb759c8a050238a32a6ce8273d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3_limit-3-2a87d8faa18a6311376812bd0453fece b/sql/hive/src/test/resources/golden/input3_limit-3-2a87d8faa18a6311376812bd0453fece new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3_limit-4-70dad45d534146923fce88b2ffb99b0d b/sql/hive/src/test/resources/golden/input3_limit-4-70dad45d534146923fce88b2ffb99b0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3_limit-5-3664b564747487df13a5d109837219b5 b/sql/hive/src/test/resources/golden/input3_limit-5-3664b564747487df13a5d109837219b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input3_limit-6-7fec232bd656e1c1cf6cd731afc55d67 b/sql/hive/src/test/resources/golden/input3_limit-6-7fec232bd656e1c1cf6cd731afc55d67 new file mode 100644 index 0000000000000..6731b0cb0baaa --- /dev/null +++ b/sql/hive/src/test/resources/golden/input3_limit-6-7fec232bd656e1c1cf6cd731afc55d67 @@ -0,0 +1,20 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_1 +0 val_1 +1 val_2 +10 val_10 +10 val_11 +100 val_100 +100 val_100 +100 val_101 +100 val_101 +101 val_102 +102 val_103 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +104 val_105 +104 val_105 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input4-0-b9cd4041ca510639838a97376747b498 b/sql/hive/src/test/resources/golden/input4-0-b9cd4041ca510639838a97376747b498 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input4-1-c139adc70f9942e527142e3be7fd2b87 b/sql/hive/src/test/resources/golden/input4-1-c139adc70f9942e527142e3be7fd2b87 new file mode 100644 index 0000000000000..65a457b52b0a6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input4-1-c139adc70f9942e527142e3be7fd2b87 @@ -0,0 +1,27 @@ +ABSTRACT SYNTAX TREE: + (TOK_LOAD '/Users/marmbrus/workspace/hive/data/files/kv1.txt' (TOK_TAB (TOK_TABNAME INPUT4)) LOCAL) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + Stage-2 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-0 + Copy + source: file:/Users/marmbrus/workspace/hive/data/files/kv1.txt + destination: file:/tmp/hive-marmbrus/hive_2014-01-14_12-16-46_262_527870677085258278-1/-ext-10000 + + Stage: Stage-1 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.input4 + + Stage: Stage-2 + Stats-Aggr Operator + diff --git a/sql/hive/src/test/resources/golden/input4-2-b7f46eccd104e6ed1b29e2de45089f66 b/sql/hive/src/test/resources/golden/input4-2-b7f46eccd104e6ed1b29e2de45089f66 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input4-3-d9280be6c9dd1e2263f8d50f0f43a486 b/sql/hive/src/test/resources/golden/input4-3-d9280be6c9dd1e2263f8d50f0f43a486 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input4-4-271b04e0fbee2ee81bae21dcb46d55e4 b/sql/hive/src/test/resources/golden/input4-4-271b04e0fbee2ee81bae21dcb46d55e4 new file mode 100644 index 0000000000000..218c223b050b7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input4-4-271b04e0fbee2ee81bae21dcb46d55e4 @@ -0,0 +1,500 @@ +val_238 238 +val_86 86 +val_311 311 +val_27 27 +val_165 165 +val_409 409 +val_255 255 +val_278 278 +val_98 98 +val_484 484 +val_265 265 +val_193 193 +val_401 401 +val_150 150 +val_273 273 +val_224 224 +val_369 369 +val_66 66 +val_128 128 +val_213 213 +val_146 146 +val_406 406 +val_429 429 +val_374 374 +val_152 152 +val_469 469 +val_145 145 +val_495 495 +val_37 37 +val_327 327 +val_281 281 +val_277 277 +val_209 209 +val_15 15 +val_82 82 +val_403 403 +val_166 166 +val_417 417 +val_430 430 +val_252 252 +val_292 292 +val_219 219 +val_287 287 +val_153 153 +val_193 193 +val_338 338 +val_446 446 +val_459 459 +val_394 394 +val_237 237 +val_482 482 +val_174 174 +val_413 413 +val_494 494 +val_207 207 +val_199 199 +val_466 466 +val_208 208 +val_174 174 +val_399 399 +val_396 396 +val_247 247 +val_417 417 +val_489 489 +val_162 162 +val_377 377 +val_397 397 +val_309 309 +val_365 365 +val_266 266 +val_439 439 +val_342 342 +val_367 367 +val_325 325 +val_167 167 +val_195 195 +val_475 475 +val_17 17 +val_113 113 +val_155 155 +val_203 203 +val_339 339 +val_0 0 +val_455 455 +val_128 128 +val_311 311 +val_316 316 +val_57 57 +val_302 302 +val_205 205 +val_149 149 +val_438 438 +val_345 345 +val_129 129 +val_170 170 +val_20 20 +val_489 489 +val_157 157 +val_378 378 +val_221 221 +val_92 92 +val_111 111 +val_47 47 +val_72 72 +val_4 4 +val_280 280 +val_35 35 +val_427 427 +val_277 277 +val_208 208 +val_356 356 +val_399 399 +val_169 169 +val_382 382 +val_498 498 +val_125 125 +val_386 386 +val_437 437 +val_469 469 +val_192 192 +val_286 286 +val_187 187 +val_176 176 +val_54 54 +val_459 459 +val_51 51 +val_138 138 +val_103 103 +val_239 239 +val_213 213 +val_216 216 +val_430 430 +val_278 278 +val_176 176 +val_289 289 +val_221 221 +val_65 65 +val_318 318 +val_332 332 +val_311 311 +val_275 275 +val_137 137 +val_241 241 +val_83 83 +val_333 333 +val_180 180 +val_284 284 +val_12 12 +val_230 230 +val_181 181 +val_67 67 +val_260 260 +val_404 404 +val_384 384 +val_489 489 +val_353 353 +val_373 373 +val_272 272 +val_138 138 +val_217 217 +val_84 84 +val_348 348 +val_466 466 +val_58 58 +val_8 8 +val_411 411 +val_230 230 +val_208 208 +val_348 348 +val_24 24 +val_463 463 +val_431 431 +val_179 179 +val_172 172 +val_42 42 +val_129 129 +val_158 158 +val_119 119 +val_496 496 +val_0 0 +val_322 322 +val_197 197 +val_468 468 +val_393 393 +val_454 454 +val_100 100 +val_298 298 +val_199 199 +val_191 191 +val_418 418 +val_96 96 +val_26 26 +val_165 165 +val_327 327 +val_230 230 +val_205 205 +val_120 120 +val_131 131 +val_51 51 +val_404 404 +val_43 43 +val_436 436 +val_156 156 +val_469 469 +val_468 468 +val_308 308 +val_95 95 +val_196 196 +val_288 288 +val_481 481 +val_457 457 +val_98 98 +val_282 282 +val_197 197 +val_187 187 +val_318 318 +val_318 318 +val_409 409 +val_470 470 +val_137 137 +val_369 369 +val_316 316 +val_169 169 +val_413 413 +val_85 85 +val_77 77 +val_0 0 +val_490 490 +val_87 87 +val_364 364 +val_179 179 +val_118 118 +val_134 134 +val_395 395 +val_282 282 +val_138 138 +val_238 238 +val_419 419 +val_15 15 +val_118 118 +val_72 72 +val_90 90 +val_307 307 +val_19 19 +val_435 435 +val_10 10 +val_277 277 +val_273 273 +val_306 306 +val_224 224 +val_309 309 +val_389 389 +val_327 327 +val_242 242 +val_369 369 +val_392 392 +val_272 272 +val_331 331 +val_401 401 +val_242 242 +val_452 452 +val_177 177 +val_226 226 +val_5 5 +val_497 497 +val_402 402 +val_396 396 +val_317 317 +val_395 395 +val_58 58 +val_35 35 +val_336 336 +val_95 95 +val_11 11 +val_168 168 +val_34 34 +val_229 229 +val_233 233 +val_143 143 +val_472 472 +val_322 322 +val_498 498 +val_160 160 +val_195 195 +val_42 42 +val_321 321 +val_430 430 +val_119 119 +val_489 489 +val_458 458 +val_78 78 +val_76 76 +val_41 41 +val_223 223 +val_492 492 +val_149 149 +val_449 449 +val_218 218 +val_228 228 +val_138 138 +val_453 453 +val_30 30 +val_209 209 +val_64 64 +val_468 468 +val_76 76 +val_74 74 +val_342 342 +val_69 69 +val_230 230 +val_33 33 +val_368 368 +val_103 103 +val_296 296 +val_113 113 +val_216 216 +val_367 367 +val_344 344 +val_167 167 +val_274 274 +val_219 219 +val_239 239 +val_485 485 +val_116 116 +val_223 223 +val_256 256 +val_263 263 +val_70 70 +val_487 487 +val_480 480 +val_401 401 +val_288 288 +val_191 191 +val_5 5 +val_244 244 +val_438 438 +val_128 128 +val_467 467 +val_432 432 +val_202 202 +val_316 316 +val_229 229 +val_469 469 +val_463 463 +val_280 280 +val_2 2 +val_35 35 +val_283 283 +val_331 331 +val_235 235 +val_80 80 +val_44 44 +val_193 193 +val_321 321 +val_335 335 +val_104 104 +val_466 466 +val_366 366 +val_175 175 +val_403 403 +val_483 483 +val_53 53 +val_105 105 +val_257 257 +val_406 406 +val_409 409 +val_190 190 +val_406 406 +val_401 401 +val_114 114 +val_258 258 +val_90 90 +val_203 203 +val_262 262 +val_348 348 +val_424 424 +val_12 12 +val_396 396 +val_201 201 +val_217 217 +val_164 164 +val_431 431 +val_454 454 +val_478 478 +val_298 298 +val_125 125 +val_431 431 +val_164 164 +val_424 424 +val_187 187 +val_382 382 +val_5 5 +val_70 70 +val_397 397 +val_480 480 +val_291 291 +val_24 24 +val_351 351 +val_255 255 +val_104 104 +val_70 70 +val_163 163 +val_438 438 +val_119 119 +val_414 414 +val_200 200 +val_491 491 +val_237 237 +val_439 439 +val_360 360 +val_248 248 +val_479 479 +val_305 305 +val_417 417 +val_199 199 +val_444 444 +val_120 120 +val_429 429 +val_169 169 +val_443 443 +val_323 323 +val_325 325 +val_277 277 +val_230 230 +val_478 478 +val_178 178 +val_468 468 +val_310 310 +val_317 317 +val_333 333 +val_493 493 +val_460 460 +val_207 207 +val_249 249 +val_265 265 +val_480 480 +val_83 83 +val_136 136 +val_353 353 +val_172 172 +val_214 214 +val_462 462 +val_233 233 +val_406 406 +val_133 133 +val_175 175 +val_189 189 +val_454 454 +val_375 375 +val_401 401 +val_421 421 +val_407 407 +val_384 384 +val_256 256 +val_26 26 +val_134 134 +val_67 67 +val_384 384 +val_379 379 +val_18 18 +val_462 462 +val_492 492 +val_100 100 +val_298 298 +val_9 9 +val_341 341 +val_498 498 +val_146 146 +val_458 458 +val_362 362 +val_186 186 +val_285 285 +val_348 348 +val_167 167 +val_18 18 +val_273 273 +val_183 183 +val_281 281 +val_344 344 +val_97 97 +val_469 469 +val_315 315 +val_84 84 +val_28 28 +val_37 37 +val_448 448 +val_152 152 +val_348 348 +val_307 307 +val_194 194 +val_414 414 +val_477 477 +val_222 222 +val_126 126 +val_90 90 +val_169 169 +val_403 403 +val_400 400 +val_200 200 +val_97 97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input40-0-37e74908fd43254141ae3664f13a48d b/sql/hive/src/test/resources/golden/input40-0-37e74908fd43254141ae3664f13a48d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input40-1-acb61ae95ffabcb4a8ea3444d704e6b5 b/sql/hive/src/test/resources/golden/input40-1-acb61ae95ffabcb4a8ea3444d704e6b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input40-2-e7ab3c9244fcfda76061b4153d796e93 b/sql/hive/src/test/resources/golden/input40-2-e7ab3c9244fcfda76061b4153d796e93 new file mode 100644 index 0000000000000..c5c8d29fdd13e --- /dev/null +++ b/sql/hive/src/test/resources/golden/input40-2-e7ab3c9244fcfda76061b4153d796e93 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input40-3-12f634800ffae17942ddd789a01af227 b/sql/hive/src/test/resources/golden/input40-3-12f634800ffae17942ddd789a01af227 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input40-4-f241eafbb8d5da3f9c1737aed7b4f94e b/sql/hive/src/test/resources/golden/input40-4-f241eafbb8d5da3f9c1737aed7b4f94e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input40-5-ccdc9c87a8fdbeee0fa48927f9700361 b/sql/hive/src/test/resources/golden/input40-5-ccdc9c87a8fdbeee0fa48927f9700361 new file mode 100644 index 0000000000000..6bc66cd8fe19b --- /dev/null +++ b/sql/hive/src/test/resources/golden/input40-5-ccdc9c87a8fdbeee0fa48927f9700361 @@ -0,0 +1,500 @@ +0 val_0 2009-08-01 +0 val_0 2009-08-01 +0 val_0 2009-08-01 +10 val_10 2009-08-01 +100 val_100 2009-08-01 +100 val_100 2009-08-01 +103 val_103 2009-08-01 +103 val_103 2009-08-01 +104 val_104 2009-08-01 +104 val_104 2009-08-01 +105 val_105 2009-08-01 +11 val_11 2009-08-01 +111 val_111 2009-08-01 +113 val_113 2009-08-01 +113 val_113 2009-08-01 +114 val_114 2009-08-01 +116 val_116 2009-08-01 +118 val_118 2009-08-01 +118 val_118 2009-08-01 +119 val_119 2009-08-01 +119 val_119 2009-08-01 +119 val_119 2009-08-01 +12 val_12 2009-08-01 +12 val_12 2009-08-01 +120 val_120 2009-08-01 +120 val_120 2009-08-01 +125 val_125 2009-08-01 +125 val_125 2009-08-01 +126 val_126 2009-08-01 +128 val_128 2009-08-01 +128 val_128 2009-08-01 +128 val_128 2009-08-01 +129 val_129 2009-08-01 +129 val_129 2009-08-01 +131 val_131 2009-08-01 +133 val_133 2009-08-01 +134 val_134 2009-08-01 +134 val_134 2009-08-01 +136 val_136 2009-08-01 +137 val_137 2009-08-01 +137 val_137 2009-08-01 +138 val_138 2009-08-01 +138 val_138 2009-08-01 +138 val_138 2009-08-01 +138 val_138 2009-08-01 +143 val_143 2009-08-01 +145 val_145 2009-08-01 +146 val_146 2009-08-01 +146 val_146 2009-08-01 +149 val_149 2009-08-01 +149 val_149 2009-08-01 +15 val_15 2009-08-01 +15 val_15 2009-08-01 +150 val_150 2009-08-01 +152 val_152 2009-08-01 +152 val_152 2009-08-01 +153 val_153 2009-08-01 +155 val_155 2009-08-01 +156 val_156 2009-08-01 +157 val_157 2009-08-01 +158 val_158 2009-08-01 +160 val_160 2009-08-01 +162 val_162 2009-08-01 +163 val_163 2009-08-01 +164 val_164 2009-08-01 +164 val_164 2009-08-01 +165 val_165 2009-08-01 +165 val_165 2009-08-01 +166 val_166 2009-08-01 +167 val_167 2009-08-01 +167 val_167 2009-08-01 +167 val_167 2009-08-01 +168 val_168 2009-08-01 +169 val_169 2009-08-01 +169 val_169 2009-08-01 +169 val_169 2009-08-01 +169 val_169 2009-08-01 +17 val_17 2009-08-01 +170 val_170 2009-08-01 +172 val_172 2009-08-01 +172 val_172 2009-08-01 +174 val_174 2009-08-01 +174 val_174 2009-08-01 +175 val_175 2009-08-01 +175 val_175 2009-08-01 +176 val_176 2009-08-01 +176 val_176 2009-08-01 +177 val_177 2009-08-01 +178 val_178 2009-08-01 +179 val_179 2009-08-01 +179 val_179 2009-08-01 +18 val_18 2009-08-01 +18 val_18 2009-08-01 +180 val_180 2009-08-01 +181 val_181 2009-08-01 +183 val_183 2009-08-01 +186 val_186 2009-08-01 +187 val_187 2009-08-01 +187 val_187 2009-08-01 +187 val_187 2009-08-01 +189 val_189 2009-08-01 +19 val_19 2009-08-01 +190 val_190 2009-08-01 +191 val_191 2009-08-01 +191 val_191 2009-08-01 +192 val_192 2009-08-01 +193 val_193 2009-08-01 +193 val_193 2009-08-01 +193 val_193 2009-08-01 +194 val_194 2009-08-01 +195 val_195 2009-08-01 +195 val_195 2009-08-01 +196 val_196 2009-08-01 +197 val_197 2009-08-01 +197 val_197 2009-08-01 +199 val_199 2009-08-01 +199 val_199 2009-08-01 +199 val_199 2009-08-01 +2 val_2 2009-08-01 +20 val_20 2009-08-01 +200 val_200 2009-08-01 +200 val_200 2009-08-01 +201 val_201 2009-08-01 +202 val_202 2009-08-01 +203 val_203 2009-08-01 +203 val_203 2009-08-01 +205 val_205 2009-08-01 +205 val_205 2009-08-01 +207 val_207 2009-08-01 +207 val_207 2009-08-01 +208 val_208 2009-08-01 +208 val_208 2009-08-01 +208 val_208 2009-08-01 +209 val_209 2009-08-01 +209 val_209 2009-08-01 +213 val_213 2009-08-01 +213 val_213 2009-08-01 +214 val_214 2009-08-01 +216 val_216 2009-08-01 +216 val_216 2009-08-01 +217 val_217 2009-08-01 +217 val_217 2009-08-01 +218 val_218 2009-08-01 +219 val_219 2009-08-01 +219 val_219 2009-08-01 +221 val_221 2009-08-01 +221 val_221 2009-08-01 +222 val_222 2009-08-01 +223 val_223 2009-08-01 +223 val_223 2009-08-01 +224 val_224 2009-08-01 +224 val_224 2009-08-01 +226 val_226 2009-08-01 +228 val_228 2009-08-01 +229 val_229 2009-08-01 +229 val_229 2009-08-01 +230 val_230 2009-08-01 +230 val_230 2009-08-01 +230 val_230 2009-08-01 +230 val_230 2009-08-01 +230 val_230 2009-08-01 +233 val_233 2009-08-01 +233 val_233 2009-08-01 +235 val_235 2009-08-01 +237 val_237 2009-08-01 +237 val_237 2009-08-01 +238 val_238 2009-08-01 +238 val_238 2009-08-01 +239 val_239 2009-08-01 +239 val_239 2009-08-01 +24 val_24 2009-08-01 +24 val_24 2009-08-01 +241 val_241 2009-08-01 +242 val_242 2009-08-01 +242 val_242 2009-08-01 +244 val_244 2009-08-01 +247 val_247 2009-08-01 +248 val_248 2009-08-01 +249 val_249 2009-08-01 +252 val_252 2009-08-01 +255 val_255 2009-08-01 +255 val_255 2009-08-01 +256 val_256 2009-08-01 +256 val_256 2009-08-01 +257 val_257 2009-08-01 +258 val_258 2009-08-01 +26 val_26 2009-08-01 +26 val_26 2009-08-01 +260 val_260 2009-08-01 +262 val_262 2009-08-01 +263 val_263 2009-08-01 +265 val_265 2009-08-01 +265 val_265 2009-08-01 +266 val_266 2009-08-01 +27 val_27 2009-08-01 +272 val_272 2009-08-01 +272 val_272 2009-08-01 +273 val_273 2009-08-01 +273 val_273 2009-08-01 +273 val_273 2009-08-01 +274 val_274 2009-08-01 +275 val_275 2009-08-01 +277 val_277 2009-08-01 +277 val_277 2009-08-01 +277 val_277 2009-08-01 +277 val_277 2009-08-01 +278 val_278 2009-08-01 +278 val_278 2009-08-01 +28 val_28 2009-08-01 +280 val_280 2009-08-01 +280 val_280 2009-08-01 +281 val_281 2009-08-01 +281 val_281 2009-08-01 +282 val_282 2009-08-01 +282 val_282 2009-08-01 +283 val_283 2009-08-01 +284 val_284 2009-08-01 +285 val_285 2009-08-01 +286 val_286 2009-08-01 +287 val_287 2009-08-01 +288 val_288 2009-08-01 +288 val_288 2009-08-01 +289 val_289 2009-08-01 +291 val_291 2009-08-01 +292 val_292 2009-08-01 +296 val_296 2009-08-01 +298 val_298 2009-08-01 +298 val_298 2009-08-01 +298 val_298 2009-08-01 +30 val_30 2009-08-01 +302 val_302 2009-08-01 +305 val_305 2009-08-01 +306 val_306 2009-08-01 +307 val_307 2009-08-01 +307 val_307 2009-08-01 +308 val_308 2009-08-01 +309 val_309 2009-08-01 +309 val_309 2009-08-01 +310 val_310 2009-08-01 +311 val_311 2009-08-01 +311 val_311 2009-08-01 +311 val_311 2009-08-01 +315 val_315 2009-08-01 +316 val_316 2009-08-01 +316 val_316 2009-08-01 +316 val_316 2009-08-01 +317 val_317 2009-08-01 +317 val_317 2009-08-01 +318 val_318 2009-08-01 +318 val_318 2009-08-01 +318 val_318 2009-08-01 +321 val_321 2009-08-01 +321 val_321 2009-08-01 +322 val_322 2009-08-01 +322 val_322 2009-08-01 +323 val_323 2009-08-01 +325 val_325 2009-08-01 +325 val_325 2009-08-01 +327 val_327 2009-08-01 +327 val_327 2009-08-01 +327 val_327 2009-08-01 +33 val_33 2009-08-01 +331 val_331 2009-08-01 +331 val_331 2009-08-01 +332 val_332 2009-08-01 +333 val_333 2009-08-01 +333 val_333 2009-08-01 +335 val_335 2009-08-01 +336 val_336 2009-08-01 +338 val_338 2009-08-01 +339 val_339 2009-08-01 +34 val_34 2009-08-01 +341 val_341 2009-08-01 +342 val_342 2009-08-01 +342 val_342 2009-08-01 +344 val_344 2009-08-01 +344 val_344 2009-08-01 +345 val_345 2009-08-01 +348 val_348 2009-08-01 +348 val_348 2009-08-01 +348 val_348 2009-08-01 +348 val_348 2009-08-01 +348 val_348 2009-08-01 +35 val_35 2009-08-01 +35 val_35 2009-08-01 +35 val_35 2009-08-01 +351 val_351 2009-08-01 +353 val_353 2009-08-01 +353 val_353 2009-08-01 +356 val_356 2009-08-01 +360 val_360 2009-08-01 +362 val_362 2009-08-01 +364 val_364 2009-08-01 +365 val_365 2009-08-01 +366 val_366 2009-08-01 +367 val_367 2009-08-01 +367 val_367 2009-08-01 +368 val_368 2009-08-01 +369 val_369 2009-08-01 +369 val_369 2009-08-01 +369 val_369 2009-08-01 +37 val_37 2009-08-01 +37 val_37 2009-08-01 +373 val_373 2009-08-01 +374 val_374 2009-08-01 +375 val_375 2009-08-01 +377 val_377 2009-08-01 +378 val_378 2009-08-01 +379 val_379 2009-08-01 +382 val_382 2009-08-01 +382 val_382 2009-08-01 +384 val_384 2009-08-01 +384 val_384 2009-08-01 +384 val_384 2009-08-01 +386 val_386 2009-08-01 +389 val_389 2009-08-01 +392 val_392 2009-08-01 +393 val_393 2009-08-01 +394 val_394 2009-08-01 +395 val_395 2009-08-01 +395 val_395 2009-08-01 +396 val_396 2009-08-01 +396 val_396 2009-08-01 +396 val_396 2009-08-01 +397 val_397 2009-08-01 +397 val_397 2009-08-01 +399 val_399 2009-08-01 +399 val_399 2009-08-01 +4 val_4 2009-08-01 +400 val_400 2009-08-01 +401 val_401 2009-08-01 +401 val_401 2009-08-01 +401 val_401 2009-08-01 +401 val_401 2009-08-01 +401 val_401 2009-08-01 +402 val_402 2009-08-01 +403 val_403 2009-08-01 +403 val_403 2009-08-01 +403 val_403 2009-08-01 +404 val_404 2009-08-01 +404 val_404 2009-08-01 +406 val_406 2009-08-01 +406 val_406 2009-08-01 +406 val_406 2009-08-01 +406 val_406 2009-08-01 +407 val_407 2009-08-01 +409 val_409 2009-08-01 +409 val_409 2009-08-01 +409 val_409 2009-08-01 +41 val_41 2009-08-01 +411 val_411 2009-08-01 +413 val_413 2009-08-01 +413 val_413 2009-08-01 +414 val_414 2009-08-01 +414 val_414 2009-08-01 +417 val_417 2009-08-01 +417 val_417 2009-08-01 +417 val_417 2009-08-01 +418 val_418 2009-08-01 +419 val_419 2009-08-01 +42 val_42 2009-08-01 +42 val_42 2009-08-01 +421 val_421 2009-08-01 +424 val_424 2009-08-01 +424 val_424 2009-08-01 +427 val_427 2009-08-01 +429 val_429 2009-08-01 +429 val_429 2009-08-01 +43 val_43 2009-08-01 +430 val_430 2009-08-01 +430 val_430 2009-08-01 +430 val_430 2009-08-01 +431 val_431 2009-08-01 +431 val_431 2009-08-01 +431 val_431 2009-08-01 +432 val_432 2009-08-01 +435 val_435 2009-08-01 +436 val_436 2009-08-01 +437 val_437 2009-08-01 +438 val_438 2009-08-01 +438 val_438 2009-08-01 +438 val_438 2009-08-01 +439 val_439 2009-08-01 +439 val_439 2009-08-01 +44 val_44 2009-08-01 +443 val_443 2009-08-01 +444 val_444 2009-08-01 +446 val_446 2009-08-01 +448 val_448 2009-08-01 +449 val_449 2009-08-01 +452 val_452 2009-08-01 +453 val_453 2009-08-01 +454 val_454 2009-08-01 +454 val_454 2009-08-01 +454 val_454 2009-08-01 +455 val_455 2009-08-01 +457 val_457 2009-08-01 +458 val_458 2009-08-01 +458 val_458 2009-08-01 +459 val_459 2009-08-01 +459 val_459 2009-08-01 +460 val_460 2009-08-01 +462 val_462 2009-08-01 +462 val_462 2009-08-01 +463 val_463 2009-08-01 +463 val_463 2009-08-01 +466 val_466 2009-08-01 +466 val_466 2009-08-01 +466 val_466 2009-08-01 +467 val_467 2009-08-01 +468 val_468 2009-08-01 +468 val_468 2009-08-01 +468 val_468 2009-08-01 +468 val_468 2009-08-01 +469 val_469 2009-08-01 +469 val_469 2009-08-01 +469 val_469 2009-08-01 +469 val_469 2009-08-01 +469 val_469 2009-08-01 +47 val_47 2009-08-01 +470 val_470 2009-08-01 +472 val_472 2009-08-01 +475 val_475 2009-08-01 +477 val_477 2009-08-01 +478 val_478 2009-08-01 +478 val_478 2009-08-01 +479 val_479 2009-08-01 +480 val_480 2009-08-01 +480 val_480 2009-08-01 +480 val_480 2009-08-01 +481 val_481 2009-08-01 +482 val_482 2009-08-01 +483 val_483 2009-08-01 +484 val_484 2009-08-01 +485 val_485 2009-08-01 +487 val_487 2009-08-01 +489 val_489 2009-08-01 +489 val_489 2009-08-01 +489 val_489 2009-08-01 +489 val_489 2009-08-01 +490 val_490 2009-08-01 +491 val_491 2009-08-01 +492 val_492 2009-08-01 +492 val_492 2009-08-01 +493 val_493 2009-08-01 +494 val_494 2009-08-01 +495 val_495 2009-08-01 +496 val_496 2009-08-01 +497 val_497 2009-08-01 +498 val_498 2009-08-01 +498 val_498 2009-08-01 +498 val_498 2009-08-01 +5 val_5 2009-08-01 +5 val_5 2009-08-01 +5 val_5 2009-08-01 +51 val_51 2009-08-01 +51 val_51 2009-08-01 +53 val_53 2009-08-01 +54 val_54 2009-08-01 +57 val_57 2009-08-01 +58 val_58 2009-08-01 +58 val_58 2009-08-01 +64 val_64 2009-08-01 +65 val_65 2009-08-01 +66 val_66 2009-08-01 +67 val_67 2009-08-01 +67 val_67 2009-08-01 +69 val_69 2009-08-01 +70 val_70 2009-08-01 +70 val_70 2009-08-01 +70 val_70 2009-08-01 +72 val_72 2009-08-01 +72 val_72 2009-08-01 +74 val_74 2009-08-01 +76 val_76 2009-08-01 +76 val_76 2009-08-01 +77 val_77 2009-08-01 +78 val_78 2009-08-01 +8 val_8 2009-08-01 +80 val_80 2009-08-01 +82 val_82 2009-08-01 +83 val_83 2009-08-01 +83 val_83 2009-08-01 +84 val_84 2009-08-01 +84 val_84 2009-08-01 +85 val_85 2009-08-01 +86 val_86 2009-08-01 +87 val_87 2009-08-01 +9 val_9 2009-08-01 +90 val_90 2009-08-01 +90 val_90 2009-08-01 +90 val_90 2009-08-01 +92 val_92 2009-08-01 +95 val_95 2009-08-01 +95 val_95 2009-08-01 +96 val_96 2009-08-01 +97 val_97 2009-08-01 +97 val_97 2009-08-01 +98 val_98 2009-08-01 +98 val_98 2009-08-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input40-6-93a0c37189dfe2318ba6ad84616f0d64 b/sql/hive/src/test/resources/golden/input40-6-93a0c37189dfe2318ba6ad84616f0d64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input40-7-ccdc9c87a8fdbeee0fa48927f9700361 b/sql/hive/src/test/resources/golden/input40-7-ccdc9c87a8fdbeee0fa48927f9700361 new file mode 100644 index 0000000000000..ee3dddd8cff71 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input40-7-ccdc9c87a8fdbeee0fa48927f9700361 @@ -0,0 +1,1000 @@ +0 val_0 2009-08-01 +0 val_0 2009-08-01 +0 val_0 2009-08-01 +0 val_1 2009-08-01 +0 val_1 2009-08-01 +1 val_2 2009-08-01 +10 val_10 2009-08-01 +10 val_11 2009-08-01 +100 val_100 2009-08-01 +100 val_100 2009-08-01 +100 val_101 2009-08-01 +100 val_101 2009-08-01 +101 val_102 2009-08-01 +102 val_103 2009-08-01 +103 val_103 2009-08-01 +103 val_103 2009-08-01 +104 val_104 2009-08-01 +104 val_104 2009-08-01 +104 val_105 2009-08-01 +104 val_105 2009-08-01 +104 val_105 2009-08-01 +105 val_105 2009-08-01 +105 val_106 2009-08-01 +105 val_106 2009-08-01 +106 val_107 2009-08-01 +11 val_11 2009-08-01 +11 val_12 2009-08-01 +11 val_12 2009-08-01 +11 val_12 2009-08-01 +110 val_111 2009-08-01 +111 val_111 2009-08-01 +113 val_113 2009-08-01 +113 val_113 2009-08-01 +114 val_114 2009-08-01 +114 val_115 2009-08-01 +114 val_115 2009-08-01 +114 val_115 2009-08-01 +116 val_116 2009-08-01 +116 val_117 2009-08-01 +117 val_118 2009-08-01 +117 val_118 2009-08-01 +118 val_118 2009-08-01 +118 val_118 2009-08-01 +118 val_119 2009-08-01 +118 val_119 2009-08-01 +118 val_119 2009-08-01 +119 val_119 2009-08-01 +119 val_119 2009-08-01 +119 val_119 2009-08-01 +119 val_120 2009-08-01 +119 val_120 2009-08-01 +119 val_120 2009-08-01 +12 val_12 2009-08-01 +12 val_12 2009-08-01 +12 val_13 2009-08-01 +120 val_120 2009-08-01 +120 val_120 2009-08-01 +120 val_121 2009-08-01 +121 val_122 2009-08-01 +121 val_122 2009-08-01 +122 val_123 2009-08-01 +122 val_123 2009-08-01 +122 val_123 2009-08-01 +123 val_124 2009-08-01 +123 val_124 2009-08-01 +125 val_125 2009-08-01 +125 val_125 2009-08-01 +125 val_126 2009-08-01 +126 val_126 2009-08-01 +126 val_127 2009-08-01 +126 val_127 2009-08-01 +128 val_128 2009-08-01 +128 val_128 2009-08-01 +128 val_128 2009-08-01 +128 val_129 2009-08-01 +128 val_129 2009-08-01 +129 val_129 2009-08-01 +129 val_129 2009-08-01 +129 val_130 2009-08-01 +129 val_130 2009-08-01 +131 val_131 2009-08-01 +132 val_133 2009-08-01 +132 val_133 2009-08-01 +133 val_133 2009-08-01 +133 val_134 2009-08-01 +134 val_134 2009-08-01 +134 val_134 2009-08-01 +134 val_135 2009-08-01 +135 val_136 2009-08-01 +135 val_136 2009-08-01 +135 val_136 2009-08-01 +136 val_136 2009-08-01 +136 val_137 2009-08-01 +137 val_137 2009-08-01 +137 val_137 2009-08-01 +137 val_138 2009-08-01 +138 val_138 2009-08-01 +138 val_138 2009-08-01 +138 val_138 2009-08-01 +138 val_138 2009-08-01 +138 val_139 2009-08-01 +138 val_139 2009-08-01 +140 val_141 2009-08-01 +143 val_143 2009-08-01 +143 val_144 2009-08-01 +144 val_145 2009-08-01 +145 val_145 2009-08-01 +146 val_146 2009-08-01 +146 val_146 2009-08-01 +147 val_148 2009-08-01 +147 val_148 2009-08-01 +149 val_149 2009-08-01 +149 val_149 2009-08-01 +149 val_150 2009-08-01 +15 val_15 2009-08-01 +15 val_15 2009-08-01 +15 val_16 2009-08-01 +15 val_16 2009-08-01 +150 val_150 2009-08-01 +151 val_152 2009-08-01 +151 val_152 2009-08-01 +152 val_152 2009-08-01 +152 val_152 2009-08-01 +152 val_153 2009-08-01 +152 val_153 2009-08-01 +152 val_153 2009-08-01 +153 val_153 2009-08-01 +153 val_154 2009-08-01 +153 val_154 2009-08-01 +155 val_155 2009-08-01 +156 val_156 2009-08-01 +156 val_157 2009-08-01 +156 val_157 2009-08-01 +157 val_157 2009-08-01 +157 val_158 2009-08-01 +157 val_158 2009-08-01 +158 val_158 2009-08-01 +16 val_17 2009-08-01 +16 val_17 2009-08-01 +160 val_160 2009-08-01 +160 val_161 2009-08-01 +161 val_162 2009-08-01 +161 val_162 2009-08-01 +161 val_162 2009-08-01 +161 val_162 2009-08-01 +162 val_162 2009-08-01 +162 val_163 2009-08-01 +163 val_163 2009-08-01 +164 val_164 2009-08-01 +164 val_164 2009-08-01 +164 val_165 2009-08-01 +164 val_165 2009-08-01 +165 val_165 2009-08-01 +165 val_165 2009-08-01 +165 val_166 2009-08-01 +166 val_166 2009-08-01 +167 val_167 2009-08-01 +167 val_167 2009-08-01 +167 val_167 2009-08-01 +167 val_168 2009-08-01 +168 val_168 2009-08-01 +168 val_169 2009-08-01 +169 val_169 2009-08-01 +169 val_169 2009-08-01 +169 val_169 2009-08-01 +169 val_169 2009-08-01 +17 val_17 2009-08-01 +170 val_170 2009-08-01 +170 val_171 2009-08-01 +172 val_172 2009-08-01 +172 val_172 2009-08-01 +172 val_173 2009-08-01 +174 val_174 2009-08-01 +174 val_174 2009-08-01 +174 val_175 2009-08-01 +174 val_175 2009-08-01 +175 val_175 2009-08-01 +175 val_175 2009-08-01 +175 val_176 2009-08-01 +175 val_176 2009-08-01 +176 val_176 2009-08-01 +176 val_176 2009-08-01 +177 val_177 2009-08-01 +177 val_178 2009-08-01 +177 val_178 2009-08-01 +178 val_178 2009-08-01 +178 val_179 2009-08-01 +178 val_179 2009-08-01 +179 val_179 2009-08-01 +179 val_179 2009-08-01 +179 val_180 2009-08-01 +18 val_18 2009-08-01 +18 val_18 2009-08-01 +180 val_180 2009-08-01 +181 val_181 2009-08-01 +182 val_183 2009-08-01 +183 val_183 2009-08-01 +183 val_184 2009-08-01 +184 val_185 2009-08-01 +185 val_186 2009-08-01 +186 val_186 2009-08-01 +187 val_187 2009-08-01 +187 val_187 2009-08-01 +187 val_187 2009-08-01 +189 val_189 2009-08-01 +189 val_190 2009-08-01 +19 val_19 2009-08-01 +19 val_20 2009-08-01 +190 val_190 2009-08-01 +191 val_191 2009-08-01 +191 val_191 2009-08-01 +191 val_192 2009-08-01 +192 val_192 2009-08-01 +192 val_193 2009-08-01 +193 val_193 2009-08-01 +193 val_193 2009-08-01 +193 val_193 2009-08-01 +194 val_194 2009-08-01 +195 val_195 2009-08-01 +195 val_195 2009-08-01 +196 val_196 2009-08-01 +196 val_197 2009-08-01 +196 val_197 2009-08-01 +196 val_197 2009-08-01 +197 val_197 2009-08-01 +197 val_197 2009-08-01 +197 val_198 2009-08-01 +199 val_199 2009-08-01 +199 val_199 2009-08-01 +199 val_199 2009-08-01 +199 val_200 2009-08-01 +2 val_2 2009-08-01 +2 val_3 2009-08-01 +20 val_20 2009-08-01 +20 val_21 2009-08-01 +20 val_21 2009-08-01 +200 val_200 2009-08-01 +200 val_200 2009-08-01 +201 val_201 2009-08-01 +202 val_202 2009-08-01 +203 val_203 2009-08-01 +203 val_203 2009-08-01 +204 val_205 2009-08-01 +205 val_205 2009-08-01 +205 val_205 2009-08-01 +205 val_206 2009-08-01 +206 val_207 2009-08-01 +206 val_207 2009-08-01 +206 val_207 2009-08-01 +207 val_207 2009-08-01 +207 val_207 2009-08-01 +208 val_208 2009-08-01 +208 val_208 2009-08-01 +208 val_208 2009-08-01 +209 val_209 2009-08-01 +209 val_209 2009-08-01 +209 val_210 2009-08-01 +209 val_210 2009-08-01 +21 val_22 2009-08-01 +21 val_22 2009-08-01 +21 val_22 2009-08-01 +21 val_22 2009-08-01 +212 val_213 2009-08-01 +213 val_213 2009-08-01 +213 val_213 2009-08-01 +213 val_214 2009-08-01 +214 val_214 2009-08-01 +215 val_216 2009-08-01 +216 val_216 2009-08-01 +216 val_216 2009-08-01 +216 val_217 2009-08-01 +217 val_217 2009-08-01 +217 val_217 2009-08-01 +217 val_218 2009-08-01 +217 val_218 2009-08-01 +218 val_218 2009-08-01 +219 val_219 2009-08-01 +219 val_219 2009-08-01 +22 val_23 2009-08-01 +221 val_221 2009-08-01 +221 val_221 2009-08-01 +222 val_222 2009-08-01 +222 val_223 2009-08-01 +223 val_223 2009-08-01 +223 val_223 2009-08-01 +224 val_224 2009-08-01 +224 val_224 2009-08-01 +224 val_225 2009-08-01 +226 val_226 2009-08-01 +226 val_227 2009-08-01 +226 val_227 2009-08-01 +226 val_227 2009-08-01 +226 val_227 2009-08-01 +227 val_228 2009-08-01 +228 val_228 2009-08-01 +228 val_229 2009-08-01 +229 val_229 2009-08-01 +229 val_229 2009-08-01 +23 val_24 2009-08-01 +230 val_230 2009-08-01 +230 val_230 2009-08-01 +230 val_230 2009-08-01 +230 val_230 2009-08-01 +230 val_230 2009-08-01 +231 val_232 2009-08-01 +233 val_233 2009-08-01 +233 val_233 2009-08-01 +235 val_235 2009-08-01 +235 val_236 2009-08-01 +237 val_237 2009-08-01 +237 val_237 2009-08-01 +238 val_238 2009-08-01 +238 val_238 2009-08-01 +238 val_239 2009-08-01 +239 val_239 2009-08-01 +239 val_239 2009-08-01 +239 val_240 2009-08-01 +239 val_240 2009-08-01 +24 val_24 2009-08-01 +24 val_24 2009-08-01 +240 val_241 2009-08-01 +241 val_241 2009-08-01 +241 val_242 2009-08-01 +241 val_242 2009-08-01 +241 val_242 2009-08-01 +241 val_242 2009-08-01 +242 val_242 2009-08-01 +242 val_242 2009-08-01 +242 val_243 2009-08-01 +243 val_244 2009-08-01 +243 val_244 2009-08-01 +244 val_244 2009-08-01 +244 val_245 2009-08-01 +244 val_245 2009-08-01 +244 val_245 2009-08-01 +245 val_246 2009-08-01 +245 val_246 2009-08-01 +246 val_247 2009-08-01 +246 val_247 2009-08-01 +247 val_247 2009-08-01 +248 val_248 2009-08-01 +248 val_249 2009-08-01 +249 val_249 2009-08-01 +249 val_250 2009-08-01 +249 val_250 2009-08-01 +252 val_252 2009-08-01 +252 val_253 2009-08-01 +254 val_255 2009-08-01 +255 val_255 2009-08-01 +255 val_255 2009-08-01 +256 val_256 2009-08-01 +256 val_256 2009-08-01 +256 val_257 2009-08-01 +257 val_257 2009-08-01 +257 val_258 2009-08-01 +257 val_258 2009-08-01 +258 val_258 2009-08-01 +258 val_259 2009-08-01 +259 val_260 2009-08-01 +259 val_260 2009-08-01 +26 val_26 2009-08-01 +26 val_26 2009-08-01 +260 val_260 2009-08-01 +260 val_261 2009-08-01 +260 val_261 2009-08-01 +261 val_262 2009-08-01 +262 val_262 2009-08-01 +262 val_263 2009-08-01 +262 val_263 2009-08-01 +263 val_263 2009-08-01 +264 val_265 2009-08-01 +264 val_265 2009-08-01 +265 val_265 2009-08-01 +265 val_265 2009-08-01 +265 val_266 2009-08-01 +266 val_266 2009-08-01 +267 val_268 2009-08-01 +268 val_269 2009-08-01 +27 val_27 2009-08-01 +271 val_272 2009-08-01 +272 val_272 2009-08-01 +272 val_272 2009-08-01 +272 val_273 2009-08-01 +273 val_273 2009-08-01 +273 val_273 2009-08-01 +273 val_273 2009-08-01 +273 val_274 2009-08-01 +274 val_274 2009-08-01 +274 val_275 2009-08-01 +275 val_275 2009-08-01 +275 val_276 2009-08-01 +275 val_276 2009-08-01 +276 val_277 2009-08-01 +277 val_277 2009-08-01 +277 val_277 2009-08-01 +277 val_277 2009-08-01 +277 val_277 2009-08-01 +277 val_278 2009-08-01 +277 val_278 2009-08-01 +278 val_278 2009-08-01 +278 val_278 2009-08-01 +278 val_279 2009-08-01 +28 val_28 2009-08-01 +280 val_280 2009-08-01 +280 val_280 2009-08-01 +281 val_281 2009-08-01 +281 val_281 2009-08-01 +281 val_282 2009-08-01 +281 val_282 2009-08-01 +281 val_282 2009-08-01 +282 val_282 2009-08-01 +282 val_282 2009-08-01 +283 val_283 2009-08-01 +284 val_284 2009-08-01 +284 val_285 2009-08-01 +284 val_285 2009-08-01 +285 val_285 2009-08-01 +285 val_286 2009-08-01 +286 val_286 2009-08-01 +286 val_287 2009-08-01 +287 val_287 2009-08-01 +287 val_288 2009-08-01 +287 val_288 2009-08-01 +288 val_288 2009-08-01 +288 val_288 2009-08-01 +289 val_289 2009-08-01 +289 val_290 2009-08-01 +29 val_30 2009-08-01 +29 val_30 2009-08-01 +291 val_291 2009-08-01 +291 val_292 2009-08-01 +291 val_292 2009-08-01 +292 val_292 2009-08-01 +292 val_293 2009-08-01 +292 val_293 2009-08-01 +293 val_294 2009-08-01 +293 val_294 2009-08-01 +295 val_296 2009-08-01 +295 val_296 2009-08-01 +296 val_296 2009-08-01 +296 val_297 2009-08-01 +298 val_298 2009-08-01 +298 val_298 2009-08-01 +298 val_298 2009-08-01 +3 val_4 2009-08-01 +30 val_30 2009-08-01 +30 val_31 2009-08-01 +300 val_301 2009-08-01 +300 val_301 2009-08-01 +302 val_302 2009-08-01 +302 val_303 2009-08-01 +303 val_304 2009-08-01 +303 val_304 2009-08-01 +304 val_305 2009-08-01 +305 val_305 2009-08-01 +305 val_306 2009-08-01 +306 val_306 2009-08-01 +306 val_307 2009-08-01 +307 val_307 2009-08-01 +307 val_307 2009-08-01 +308 val_308 2009-08-01 +308 val_309 2009-08-01 +308 val_309 2009-08-01 +309 val_309 2009-08-01 +309 val_309 2009-08-01 +309 val_310 2009-08-01 +31 val_32 2009-08-01 +310 val_310 2009-08-01 +310 val_311 2009-08-01 +310 val_311 2009-08-01 +310 val_311 2009-08-01 +311 val_311 2009-08-01 +311 val_311 2009-08-01 +311 val_311 2009-08-01 +313 val_314 2009-08-01 +314 val_315 2009-08-01 +315 val_315 2009-08-01 +316 val_316 2009-08-01 +316 val_316 2009-08-01 +316 val_316 2009-08-01 +317 val_317 2009-08-01 +317 val_317 2009-08-01 +317 val_318 2009-08-01 +318 val_318 2009-08-01 +318 val_318 2009-08-01 +318 val_318 2009-08-01 +318 val_319 2009-08-01 +32 val_33 2009-08-01 +321 val_321 2009-08-01 +321 val_321 2009-08-01 +322 val_322 2009-08-01 +322 val_322 2009-08-01 +322 val_323 2009-08-01 +323 val_323 2009-08-01 +323 val_324 2009-08-01 +324 val_325 2009-08-01 +325 val_325 2009-08-01 +325 val_325 2009-08-01 +326 val_327 2009-08-01 +327 val_327 2009-08-01 +327 val_327 2009-08-01 +327 val_327 2009-08-01 +328 val_329 2009-08-01 +328 val_329 2009-08-01 +33 val_33 2009-08-01 +33 val_34 2009-08-01 +330 val_331 2009-08-01 +331 val_331 2009-08-01 +331 val_331 2009-08-01 +331 val_332 2009-08-01 +331 val_332 2009-08-01 +332 val_332 2009-08-01 +333 val_333 2009-08-01 +333 val_333 2009-08-01 +333 val_334 2009-08-01 +334 val_335 2009-08-01 +335 val_335 2009-08-01 +335 val_336 2009-08-01 +335 val_336 2009-08-01 +336 val_336 2009-08-01 +336 val_337 2009-08-01 +337 val_338 2009-08-01 +338 val_338 2009-08-01 +338 val_339 2009-08-01 +339 val_339 2009-08-01 +34 val_34 2009-08-01 +340 val_341 2009-08-01 +341 val_341 2009-08-01 +341 val_342 2009-08-01 +341 val_342 2009-08-01 +341 val_342 2009-08-01 +342 val_342 2009-08-01 +342 val_342 2009-08-01 +342 val_343 2009-08-01 +343 val_344 2009-08-01 +344 val_344 2009-08-01 +344 val_344 2009-08-01 +344 val_345 2009-08-01 +345 val_345 2009-08-01 +347 val_348 2009-08-01 +347 val_348 2009-08-01 +348 val_348 2009-08-01 +348 val_348 2009-08-01 +348 val_348 2009-08-01 +348 val_348 2009-08-01 +348 val_348 2009-08-01 +348 val_349 2009-08-01 +349 val_350 2009-08-01 +349 val_350 2009-08-01 +349 val_350 2009-08-01 +349 val_350 2009-08-01 +35 val_35 2009-08-01 +35 val_35 2009-08-01 +35 val_35 2009-08-01 +35 val_36 2009-08-01 +35 val_36 2009-08-01 +35 val_36 2009-08-01 +351 val_351 2009-08-01 +351 val_352 2009-08-01 +351 val_352 2009-08-01 +352 val_353 2009-08-01 +352 val_353 2009-08-01 +353 val_353 2009-08-01 +353 val_353 2009-08-01 +353 val_354 2009-08-01 +355 val_356 2009-08-01 +355 val_356 2009-08-01 +356 val_356 2009-08-01 +356 val_357 2009-08-01 +356 val_357 2009-08-01 +358 val_359 2009-08-01 +360 val_360 2009-08-01 +360 val_361 2009-08-01 +362 val_362 2009-08-01 +363 val_364 2009-08-01 +363 val_364 2009-08-01 +363 val_364 2009-08-01 +364 val_364 2009-08-01 +364 val_365 2009-08-01 +365 val_365 2009-08-01 +366 val_366 2009-08-01 +367 val_367 2009-08-01 +367 val_367 2009-08-01 +367 val_368 2009-08-01 +367 val_368 2009-08-01 +368 val_368 2009-08-01 +369 val_369 2009-08-01 +369 val_369 2009-08-01 +369 val_369 2009-08-01 +369 val_370 2009-08-01 +37 val_37 2009-08-01 +37 val_37 2009-08-01 +371 val_372 2009-08-01 +371 val_372 2009-08-01 +371 val_372 2009-08-01 +371 val_372 2009-08-01 +373 val_373 2009-08-01 +373 val_374 2009-08-01 +374 val_374 2009-08-01 +374 val_375 2009-08-01 +375 val_375 2009-08-01 +375 val_376 2009-08-01 +375 val_376 2009-08-01 +375 val_376 2009-08-01 +375 val_376 2009-08-01 +375 val_376 2009-08-01 +376 val_377 2009-08-01 +377 val_377 2009-08-01 +378 val_378 2009-08-01 +378 val_379 2009-08-01 +379 val_379 2009-08-01 +379 val_380 2009-08-01 +381 val_382 2009-08-01 +382 val_382 2009-08-01 +382 val_382 2009-08-01 +382 val_383 2009-08-01 +382 val_383 2009-08-01 +384 val_384 2009-08-01 +384 val_384 2009-08-01 +384 val_384 2009-08-01 +384 val_385 2009-08-01 +384 val_385 2009-08-01 +384 val_385 2009-08-01 +385 val_386 2009-08-01 +385 val_386 2009-08-01 +386 val_386 2009-08-01 +386 val_387 2009-08-01 +386 val_387 2009-08-01 +388 val_389 2009-08-01 +389 val_389 2009-08-01 +389 val_390 2009-08-01 +389 val_390 2009-08-01 +390 val_391 2009-08-01 +390 val_391 2009-08-01 +390 val_391 2009-08-01 +391 val_392 2009-08-01 +391 val_392 2009-08-01 +392 val_392 2009-08-01 +392 val_393 2009-08-01 +392 val_393 2009-08-01 +393 val_393 2009-08-01 +393 val_394 2009-08-01 +393 val_394 2009-08-01 +394 val_394 2009-08-01 +395 val_395 2009-08-01 +395 val_395 2009-08-01 +395 val_396 2009-08-01 +395 val_396 2009-08-01 +396 val_396 2009-08-01 +396 val_396 2009-08-01 +396 val_396 2009-08-01 +397 val_397 2009-08-01 +397 val_397 2009-08-01 +398 val_399 2009-08-01 +399 val_399 2009-08-01 +399 val_399 2009-08-01 +399 val_400 2009-08-01 +399 val_400 2009-08-01 +4 val_4 2009-08-01 +4 val_5 2009-08-01 +40 val_41 2009-08-01 +40 val_41 2009-08-01 +400 val_400 2009-08-01 +401 val_401 2009-08-01 +401 val_401 2009-08-01 +401 val_401 2009-08-01 +401 val_401 2009-08-01 +401 val_401 2009-08-01 +401 val_402 2009-08-01 +402 val_402 2009-08-01 +402 val_403 2009-08-01 +402 val_403 2009-08-01 +402 val_403 2009-08-01 +403 val_403 2009-08-01 +403 val_403 2009-08-01 +403 val_403 2009-08-01 +404 val_404 2009-08-01 +404 val_404 2009-08-01 +404 val_405 2009-08-01 +404 val_405 2009-08-01 +404 val_405 2009-08-01 +405 val_406 2009-08-01 +406 val_406 2009-08-01 +406 val_406 2009-08-01 +406 val_406 2009-08-01 +406 val_406 2009-08-01 +406 val_407 2009-08-01 +407 val_407 2009-08-01 +407 val_408 2009-08-01 +407 val_408 2009-08-01 +407 val_408 2009-08-01 +408 val_409 2009-08-01 +408 val_409 2009-08-01 +409 val_409 2009-08-01 +409 val_409 2009-08-01 +409 val_409 2009-08-01 +409 val_410 2009-08-01 +409 val_410 2009-08-01 +41 val_41 2009-08-01 +410 val_411 2009-08-01 +411 val_411 2009-08-01 +411 val_412 2009-08-01 +412 val_413 2009-08-01 +412 val_413 2009-08-01 +413 val_413 2009-08-01 +413 val_413 2009-08-01 +413 val_414 2009-08-01 +414 val_414 2009-08-01 +414 val_414 2009-08-01 +414 val_415 2009-08-01 +415 val_416 2009-08-01 +416 val_417 2009-08-01 +417 val_417 2009-08-01 +417 val_417 2009-08-01 +417 val_417 2009-08-01 +418 val_418 2009-08-01 +419 val_419 2009-08-01 +42 val_42 2009-08-01 +42 val_42 2009-08-01 +42 val_43 2009-08-01 +42 val_43 2009-08-01 +42 val_43 2009-08-01 +421 val_421 2009-08-01 +421 val_422 2009-08-01 +421 val_422 2009-08-01 +423 val_424 2009-08-01 +424 val_424 2009-08-01 +424 val_424 2009-08-01 +424 val_425 2009-08-01 +425 val_426 2009-08-01 +426 val_427 2009-08-01 +427 val_427 2009-08-01 +427 val_428 2009-08-01 +427 val_428 2009-08-01 +428 val_429 2009-08-01 +429 val_429 2009-08-01 +429 val_429 2009-08-01 +429 val_430 2009-08-01 +429 val_430 2009-08-01 +43 val_43 2009-08-01 +430 val_430 2009-08-01 +430 val_430 2009-08-01 +430 val_430 2009-08-01 +430 val_431 2009-08-01 +431 val_431 2009-08-01 +431 val_431 2009-08-01 +431 val_431 2009-08-01 +431 val_432 2009-08-01 +432 val_432 2009-08-01 +432 val_433 2009-08-01 +435 val_435 2009-08-01 +435 val_436 2009-08-01 +436 val_436 2009-08-01 +436 val_437 2009-08-01 +437 val_437 2009-08-01 +437 val_438 2009-08-01 +438 val_438 2009-08-01 +438 val_438 2009-08-01 +438 val_438 2009-08-01 +438 val_439 2009-08-01 +438 val_439 2009-08-01 +439 val_439 2009-08-01 +439 val_439 2009-08-01 +439 val_440 2009-08-01 +439 val_440 2009-08-01 +44 val_44 2009-08-01 +440 val_441 2009-08-01 +440 val_441 2009-08-01 +441 val_442 2009-08-01 +442 val_443 2009-08-01 +443 val_443 2009-08-01 +443 val_444 2009-08-01 +443 val_444 2009-08-01 +443 val_444 2009-08-01 +444 val_444 2009-08-01 +446 val_446 2009-08-01 +446 val_447 2009-08-01 +446 val_447 2009-08-01 +447 val_448 2009-08-01 +448 val_448 2009-08-01 +448 val_449 2009-08-01 +449 val_449 2009-08-01 +450 val_451 2009-08-01 +450 val_451 2009-08-01 +451 val_452 2009-08-01 +452 val_452 2009-08-01 +453 val_453 2009-08-01 +453 val_454 2009-08-01 +454 val_454 2009-08-01 +454 val_454 2009-08-01 +454 val_454 2009-08-01 +454 val_455 2009-08-01 +454 val_455 2009-08-01 +455 val_455 2009-08-01 +455 val_456 2009-08-01 +455 val_456 2009-08-01 +457 val_457 2009-08-01 +457 val_458 2009-08-01 +457 val_458 2009-08-01 +458 val_458 2009-08-01 +458 val_458 2009-08-01 +459 val_459 2009-08-01 +459 val_459 2009-08-01 +459 val_460 2009-08-01 +46 val_47 2009-08-01 +460 val_460 2009-08-01 +461 val_462 2009-08-01 +462 val_462 2009-08-01 +462 val_462 2009-08-01 +462 val_463 2009-08-01 +463 val_463 2009-08-01 +463 val_463 2009-08-01 +463 val_464 2009-08-01 +466 val_466 2009-08-01 +466 val_466 2009-08-01 +466 val_466 2009-08-01 +467 val_467 2009-08-01 +467 val_468 2009-08-01 +468 val_468 2009-08-01 +468 val_468 2009-08-01 +468 val_468 2009-08-01 +468 val_468 2009-08-01 +468 val_469 2009-08-01 +468 val_469 2009-08-01 +468 val_469 2009-08-01 +469 val_469 2009-08-01 +469 val_469 2009-08-01 +469 val_469 2009-08-01 +469 val_469 2009-08-01 +469 val_469 2009-08-01 +469 val_470 2009-08-01 +47 val_47 2009-08-01 +47 val_48 2009-08-01 +470 val_470 2009-08-01 +470 val_471 2009-08-01 +472 val_472 2009-08-01 +473 val_474 2009-08-01 +474 val_475 2009-08-01 +474 val_475 2009-08-01 +475 val_475 2009-08-01 +475 val_476 2009-08-01 +476 val_477 2009-08-01 +476 val_477 2009-08-01 +477 val_477 2009-08-01 +477 val_478 2009-08-01 +478 val_478 2009-08-01 +478 val_478 2009-08-01 +478 val_479 2009-08-01 +478 val_479 2009-08-01 +479 val_479 2009-08-01 +48 val_49 2009-08-01 +48 val_49 2009-08-01 +480 val_480 2009-08-01 +480 val_480 2009-08-01 +480 val_480 2009-08-01 +480 val_481 2009-08-01 +480 val_481 2009-08-01 +481 val_481 2009-08-01 +481 val_482 2009-08-01 +482 val_482 2009-08-01 +482 val_483 2009-08-01 +483 val_483 2009-08-01 +484 val_484 2009-08-01 +484 val_485 2009-08-01 +485 val_485 2009-08-01 +485 val_486 2009-08-01 +485 val_486 2009-08-01 +486 val_487 2009-08-01 +487 val_487 2009-08-01 +487 val_488 2009-08-01 +488 val_489 2009-08-01 +489 val_489 2009-08-01 +489 val_489 2009-08-01 +489 val_489 2009-08-01 +489 val_489 2009-08-01 +489 val_490 2009-08-01 +49 val_50 2009-08-01 +49 val_50 2009-08-01 +490 val_490 2009-08-01 +490 val_491 2009-08-01 +491 val_491 2009-08-01 +491 val_492 2009-08-01 +491 val_492 2009-08-01 +492 val_492 2009-08-01 +492 val_492 2009-08-01 +492 val_493 2009-08-01 +492 val_493 2009-08-01 +493 val_493 2009-08-01 +494 val_494 2009-08-01 +494 val_495 2009-08-01 +494 val_495 2009-08-01 +495 val_495 2009-08-01 +495 val_496 2009-08-01 +496 val_496 2009-08-01 +496 val_497 2009-08-01 +497 val_497 2009-08-01 +497 val_498 2009-08-01 +497 val_498 2009-08-01 +498 val_498 2009-08-01 +498 val_498 2009-08-01 +498 val_498 2009-08-01 +5 val_5 2009-08-01 +5 val_5 2009-08-01 +5 val_5 2009-08-01 +5 val_6 2009-08-01 +50 val_51 2009-08-01 +51 val_51 2009-08-01 +51 val_51 2009-08-01 +51 val_52 2009-08-01 +52 val_53 2009-08-01 +52 val_53 2009-08-01 +52 val_53 2009-08-01 +52 val_53 2009-08-01 +53 val_53 2009-08-01 +53 val_54 2009-08-01 +54 val_54 2009-08-01 +56 val_57 2009-08-01 +57 val_57 2009-08-01 +58 val_58 2009-08-01 +58 val_58 2009-08-01 +58 val_59 2009-08-01 +58 val_59 2009-08-01 +59 val_60 2009-08-01 +6 val_7 2009-08-01 +6 val_7 2009-08-01 +60 val_61 2009-08-01 +61 val_62 2009-08-01 +62 val_63 2009-08-01 +62 val_63 2009-08-01 +63 val_64 2009-08-01 +64 val_64 2009-08-01 +65 val_65 2009-08-01 +65 val_66 2009-08-01 +65 val_66 2009-08-01 +66 val_66 2009-08-01 +67 val_67 2009-08-01 +67 val_67 2009-08-01 +68 val_69 2009-08-01 +69 val_69 2009-08-01 +69 val_70 2009-08-01 +70 val_70 2009-08-01 +70 val_70 2009-08-01 +70 val_70 2009-08-01 +70 val_71 2009-08-01 +71 val_72 2009-08-01 +72 val_72 2009-08-01 +72 val_72 2009-08-01 +74 val_74 2009-08-01 +75 val_76 2009-08-01 +76 val_76 2009-08-01 +76 val_76 2009-08-01 +76 val_77 2009-08-01 +76 val_77 2009-08-01 +76 val_77 2009-08-01 +77 val_77 2009-08-01 +77 val_78 2009-08-01 +77 val_78 2009-08-01 +78 val_78 2009-08-01 +78 val_79 2009-08-01 +8 val_8 2009-08-01 +8 val_9 2009-08-01 +80 val_80 2009-08-01 +80 val_81 2009-08-01 +82 val_82 2009-08-01 +82 val_83 2009-08-01 +82 val_83 2009-08-01 +83 val_83 2009-08-01 +83 val_83 2009-08-01 +84 val_84 2009-08-01 +84 val_84 2009-08-01 +85 val_85 2009-08-01 +85 val_86 2009-08-01 +86 val_86 2009-08-01 +86 val_87 2009-08-01 +87 val_87 2009-08-01 +87 val_88 2009-08-01 +87 val_88 2009-08-01 +89 val_90 2009-08-01 +89 val_90 2009-08-01 +89 val_90 2009-08-01 +9 val_9 2009-08-01 +90 val_90 2009-08-01 +90 val_90 2009-08-01 +90 val_90 2009-08-01 +91 val_92 2009-08-01 +92 val_92 2009-08-01 +93 val_94 2009-08-01 +93 val_94 2009-08-01 +93 val_94 2009-08-01 +94 val_95 2009-08-01 +95 val_95 2009-08-01 +95 val_95 2009-08-01 +96 val_96 2009-08-01 +97 val_97 2009-08-01 +97 val_97 2009-08-01 +97 val_98 2009-08-01 +97 val_98 2009-08-01 +98 val_98 2009-08-01 +98 val_98 2009-08-01 +99 val_100 2009-08-01 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input41-0-763ab5853bff619e6525c01e46b2a923 b/sql/hive/src/test/resources/golden/input41-0-763ab5853bff619e6525c01e46b2a923 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input41-0-763ab5853bff619e6525c01e46b2a923 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input41-1-8112b3a278e8337dbd6f017ae178658b b/sql/hive/src/test/resources/golden/input41-1-8112b3a278e8337dbd6f017ae178658b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input41-2-61812b3093413d09f0fd2372c61f7d53 b/sql/hive/src/test/resources/golden/input41-2-61812b3093413d09f0fd2372c61f7d53 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input41-3-526399455dc5ecd4ea9f676b09fafeee b/sql/hive/src/test/resources/golden/input41-3-526399455dc5ecd4ea9f676b09fafeee new file mode 100644 index 0000000000000..579784a58a66c --- /dev/null +++ b/sql/hive/src/test/resources/golden/input41-3-526399455dc5ecd4ea9f676b09fafeee @@ -0,0 +1,2 @@ +0 +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input43-0-2baba8070f3585debc14b6bb3c83607a b/sql/hive/src/test/resources/golden/input43-0-2baba8070f3585debc14b6bb3c83607a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input46-0-b0cdbecce0321ac452c8e13e1bfc6924 b/sql/hive/src/test/resources/golden/input46-0-b0cdbecce0321ac452c8e13e1bfc6924 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input46-1-1efdd5ebfa732abdedeb10467ca71f7f b/sql/hive/src/test/resources/golden/input46-1-1efdd5ebfa732abdedeb10467ca71f7f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input46-2-4b3b3bedcb5765c5cfaa5d8e8bfb69ca b/sql/hive/src/test/resources/golden/input46-2-4b3b3bedcb5765c5cfaa5d8e8bfb69ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input46-3-c185163787977498a4b84f39f983c431 b/sql/hive/src/test/resources/golden/input46-3-c185163787977498a4b84f39f983c431 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input46-4-7f05cde078d90c25780a7d5491b20c27 b/sql/hive/src/test/resources/golden/input46-4-7f05cde078d90c25780a7d5491b20c27 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input46-5-f5c502e88a3dc3edb37b04af7d7955ab b/sql/hive/src/test/resources/golden/input46-5-f5c502e88a3dc3edb37b04af7d7955ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input49-0-2bd546beeb607da5b925ffbea20a741c b/sql/hive/src/test/resources/golden/input49-0-2bd546beeb607da5b925ffbea20a741c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input49-1-e2b5acbef6ef09cb3eecdb0ce2729e8d b/sql/hive/src/test/resources/golden/input49-1-e2b5acbef6ef09cb3eecdb0ce2729e8d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input49-2-d56860e68d333bb6132ef5ed0327eb1 b/sql/hive/src/test/resources/golden/input49-2-d56860e68d333bb6132ef5ed0327eb1 new file mode 100644 index 0000000000000..0d3a5cb1af472 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input49-2-d56860e68d333bb6132ef5ed0327eb1 @@ -0,0 +1 @@ +false 2.9098519E7 1410.0 996 40408519555 test_string 12 diff --git a/sql/hive/src/test/resources/golden/input49-3-4b0fff4bd5c63666ccc22b07a521b7b0 b/sql/hive/src/test/resources/golden/input49-3-4b0fff4bd5c63666ccc22b07a521b7b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input4_cb_delim-0-f8e975c0fc126982e8e70cc30d2b6367 b/sql/hive/src/test/resources/golden/input4_cb_delim-0-f8e975c0fc126982e8e70cc30d2b6367 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input4_cb_delim-1-5692d0e91dd0114729b8eb3aee388b72 b/sql/hive/src/test/resources/golden/input4_cb_delim-1-5692d0e91dd0114729b8eb3aee388b72 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input4_cb_delim-2-e52787bf798a941c854eb09d75efe617 b/sql/hive/src/test/resources/golden/input4_cb_delim-2-e52787bf798a941c854eb09d75efe617 new file mode 100644 index 0000000000000..218c223b050b7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input4_cb_delim-2-e52787bf798a941c854eb09d75efe617 @@ -0,0 +1,500 @@ +val_238 238 +val_86 86 +val_311 311 +val_27 27 +val_165 165 +val_409 409 +val_255 255 +val_278 278 +val_98 98 +val_484 484 +val_265 265 +val_193 193 +val_401 401 +val_150 150 +val_273 273 +val_224 224 +val_369 369 +val_66 66 +val_128 128 +val_213 213 +val_146 146 +val_406 406 +val_429 429 +val_374 374 +val_152 152 +val_469 469 +val_145 145 +val_495 495 +val_37 37 +val_327 327 +val_281 281 +val_277 277 +val_209 209 +val_15 15 +val_82 82 +val_403 403 +val_166 166 +val_417 417 +val_430 430 +val_252 252 +val_292 292 +val_219 219 +val_287 287 +val_153 153 +val_193 193 +val_338 338 +val_446 446 +val_459 459 +val_394 394 +val_237 237 +val_482 482 +val_174 174 +val_413 413 +val_494 494 +val_207 207 +val_199 199 +val_466 466 +val_208 208 +val_174 174 +val_399 399 +val_396 396 +val_247 247 +val_417 417 +val_489 489 +val_162 162 +val_377 377 +val_397 397 +val_309 309 +val_365 365 +val_266 266 +val_439 439 +val_342 342 +val_367 367 +val_325 325 +val_167 167 +val_195 195 +val_475 475 +val_17 17 +val_113 113 +val_155 155 +val_203 203 +val_339 339 +val_0 0 +val_455 455 +val_128 128 +val_311 311 +val_316 316 +val_57 57 +val_302 302 +val_205 205 +val_149 149 +val_438 438 +val_345 345 +val_129 129 +val_170 170 +val_20 20 +val_489 489 +val_157 157 +val_378 378 +val_221 221 +val_92 92 +val_111 111 +val_47 47 +val_72 72 +val_4 4 +val_280 280 +val_35 35 +val_427 427 +val_277 277 +val_208 208 +val_356 356 +val_399 399 +val_169 169 +val_382 382 +val_498 498 +val_125 125 +val_386 386 +val_437 437 +val_469 469 +val_192 192 +val_286 286 +val_187 187 +val_176 176 +val_54 54 +val_459 459 +val_51 51 +val_138 138 +val_103 103 +val_239 239 +val_213 213 +val_216 216 +val_430 430 +val_278 278 +val_176 176 +val_289 289 +val_221 221 +val_65 65 +val_318 318 +val_332 332 +val_311 311 +val_275 275 +val_137 137 +val_241 241 +val_83 83 +val_333 333 +val_180 180 +val_284 284 +val_12 12 +val_230 230 +val_181 181 +val_67 67 +val_260 260 +val_404 404 +val_384 384 +val_489 489 +val_353 353 +val_373 373 +val_272 272 +val_138 138 +val_217 217 +val_84 84 +val_348 348 +val_466 466 +val_58 58 +val_8 8 +val_411 411 +val_230 230 +val_208 208 +val_348 348 +val_24 24 +val_463 463 +val_431 431 +val_179 179 +val_172 172 +val_42 42 +val_129 129 +val_158 158 +val_119 119 +val_496 496 +val_0 0 +val_322 322 +val_197 197 +val_468 468 +val_393 393 +val_454 454 +val_100 100 +val_298 298 +val_199 199 +val_191 191 +val_418 418 +val_96 96 +val_26 26 +val_165 165 +val_327 327 +val_230 230 +val_205 205 +val_120 120 +val_131 131 +val_51 51 +val_404 404 +val_43 43 +val_436 436 +val_156 156 +val_469 469 +val_468 468 +val_308 308 +val_95 95 +val_196 196 +val_288 288 +val_481 481 +val_457 457 +val_98 98 +val_282 282 +val_197 197 +val_187 187 +val_318 318 +val_318 318 +val_409 409 +val_470 470 +val_137 137 +val_369 369 +val_316 316 +val_169 169 +val_413 413 +val_85 85 +val_77 77 +val_0 0 +val_490 490 +val_87 87 +val_364 364 +val_179 179 +val_118 118 +val_134 134 +val_395 395 +val_282 282 +val_138 138 +val_238 238 +val_419 419 +val_15 15 +val_118 118 +val_72 72 +val_90 90 +val_307 307 +val_19 19 +val_435 435 +val_10 10 +val_277 277 +val_273 273 +val_306 306 +val_224 224 +val_309 309 +val_389 389 +val_327 327 +val_242 242 +val_369 369 +val_392 392 +val_272 272 +val_331 331 +val_401 401 +val_242 242 +val_452 452 +val_177 177 +val_226 226 +val_5 5 +val_497 497 +val_402 402 +val_396 396 +val_317 317 +val_395 395 +val_58 58 +val_35 35 +val_336 336 +val_95 95 +val_11 11 +val_168 168 +val_34 34 +val_229 229 +val_233 233 +val_143 143 +val_472 472 +val_322 322 +val_498 498 +val_160 160 +val_195 195 +val_42 42 +val_321 321 +val_430 430 +val_119 119 +val_489 489 +val_458 458 +val_78 78 +val_76 76 +val_41 41 +val_223 223 +val_492 492 +val_149 149 +val_449 449 +val_218 218 +val_228 228 +val_138 138 +val_453 453 +val_30 30 +val_209 209 +val_64 64 +val_468 468 +val_76 76 +val_74 74 +val_342 342 +val_69 69 +val_230 230 +val_33 33 +val_368 368 +val_103 103 +val_296 296 +val_113 113 +val_216 216 +val_367 367 +val_344 344 +val_167 167 +val_274 274 +val_219 219 +val_239 239 +val_485 485 +val_116 116 +val_223 223 +val_256 256 +val_263 263 +val_70 70 +val_487 487 +val_480 480 +val_401 401 +val_288 288 +val_191 191 +val_5 5 +val_244 244 +val_438 438 +val_128 128 +val_467 467 +val_432 432 +val_202 202 +val_316 316 +val_229 229 +val_469 469 +val_463 463 +val_280 280 +val_2 2 +val_35 35 +val_283 283 +val_331 331 +val_235 235 +val_80 80 +val_44 44 +val_193 193 +val_321 321 +val_335 335 +val_104 104 +val_466 466 +val_366 366 +val_175 175 +val_403 403 +val_483 483 +val_53 53 +val_105 105 +val_257 257 +val_406 406 +val_409 409 +val_190 190 +val_406 406 +val_401 401 +val_114 114 +val_258 258 +val_90 90 +val_203 203 +val_262 262 +val_348 348 +val_424 424 +val_12 12 +val_396 396 +val_201 201 +val_217 217 +val_164 164 +val_431 431 +val_454 454 +val_478 478 +val_298 298 +val_125 125 +val_431 431 +val_164 164 +val_424 424 +val_187 187 +val_382 382 +val_5 5 +val_70 70 +val_397 397 +val_480 480 +val_291 291 +val_24 24 +val_351 351 +val_255 255 +val_104 104 +val_70 70 +val_163 163 +val_438 438 +val_119 119 +val_414 414 +val_200 200 +val_491 491 +val_237 237 +val_439 439 +val_360 360 +val_248 248 +val_479 479 +val_305 305 +val_417 417 +val_199 199 +val_444 444 +val_120 120 +val_429 429 +val_169 169 +val_443 443 +val_323 323 +val_325 325 +val_277 277 +val_230 230 +val_478 478 +val_178 178 +val_468 468 +val_310 310 +val_317 317 +val_333 333 +val_493 493 +val_460 460 +val_207 207 +val_249 249 +val_265 265 +val_480 480 +val_83 83 +val_136 136 +val_353 353 +val_172 172 +val_214 214 +val_462 462 +val_233 233 +val_406 406 +val_133 133 +val_175 175 +val_189 189 +val_454 454 +val_375 375 +val_401 401 +val_421 421 +val_407 407 +val_384 384 +val_256 256 +val_26 26 +val_134 134 +val_67 67 +val_384 384 +val_379 379 +val_18 18 +val_462 462 +val_492 492 +val_100 100 +val_298 298 +val_9 9 +val_341 341 +val_498 498 +val_146 146 +val_458 458 +val_362 362 +val_186 186 +val_285 285 +val_348 348 +val_167 167 +val_18 18 +val_273 273 +val_183 183 +val_281 281 +val_344 344 +val_97 97 +val_469 469 +val_315 315 +val_84 84 +val_28 28 +val_37 37 +val_448 448 +val_152 152 +val_348 348 +val_307 307 +val_194 194 +val_414 414 +val_477 477 +val_222 222 +val_126 126 +val_90 90 +val_169 169 +val_403 403 +val_400 400 +val_200 200 +val_97 97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input4_limit-0-4f0124854141b8be1defa7a6d0877d8d b/sql/hive/src/test/resources/golden/input4_limit-0-4f0124854141b8be1defa7a6d0877d8d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input4_limit-1-c634fc723fb3aac3ce007069bdcb2af b/sql/hive/src/test/resources/golden/input4_limit-1-c634fc723fb3aac3ce007069bdcb2af new file mode 100644 index 0000000000000..217a1915f8826 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input4_limit-1-c634fc723fb3aac3ce007069bdcb2af @@ -0,0 +1,10 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input5-0-659e06570690cceeb3f37e10e855d2ea b/sql/hive/src/test/resources/golden/input5-0-659e06570690cceeb3f37e10e855d2ea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input5-1-b1062ddf6be670dbfc66a6e7dc0e7a56 b/sql/hive/src/test/resources/golden/input5-1-b1062ddf6be670dbfc66a6e7dc0e7a56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input5-2-3d6eb15b4fe23d0a1aa303da818d97ad b/sql/hive/src/test/resources/golden/input5-2-3d6eb15b4fe23d0a1aa303da818d97ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input5-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input5-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..f8aa003a65bb4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input5-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,11 @@ +NULL NULL +[0,0,0] [{"myint":0,"mystring":"0","underscore_int":0}] +[1,2,3] [{"myint":1,"mystring":"1","underscore_int":1}] +[2,4,6] [{"myint":4,"mystring":"8","underscore_int":2}] +[3,6,9] [{"myint":9,"mystring":"27","underscore_int":3}] +[4,8,12] [{"myint":16,"mystring":"64","underscore_int":4}] +[5,10,15] [{"myint":25,"mystring":"125","underscore_int":5}] +[6,12,18] [{"myint":36,"mystring":"216","underscore_int":6}] +[7,14,21] [{"myint":49,"mystring":"343","underscore_int":7}] +[8,16,24] [{"myint":64,"mystring":"512","underscore_int":8}] +[9,18,27] [{"myint":81,"mystring":"729","underscore_int":9}] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input6-0-659e06570690cceeb3f37e10e855d2ea b/sql/hive/src/test/resources/golden/input6-0-659e06570690cceeb3f37e10e855d2ea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input6-1-21149162906e31964a328b6cb2d5286e b/sql/hive/src/test/resources/golden/input6-1-21149162906e31964a328b6cb2d5286e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input6-2-9601ace6dce45dc8d6281cc248c9e28c b/sql/hive/src/test/resources/golden/input6-2-9601ace6dce45dc8d6281cc248c9e28c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input6-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input6-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..b4dc488518f24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input6-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +NULL +NULL val_27 +NULL val_165 +NULL val_409 +NULL val_484 +NULL val_265 +NULL val_193 +NULL +NULL +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input7-0-8daa7823607b82336736a9d4f9a2ce45 b/sql/hive/src/test/resources/golden/input7-0-8daa7823607b82336736a9d4f9a2ce45 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input7-1-bb25de1b9a7791ec5609303bab350da0 b/sql/hive/src/test/resources/golden/input7-1-bb25de1b9a7791ec5609303bab350da0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input7-2-c740098a289f9a4267d26fc10347a0dc b/sql/hive/src/test/resources/golden/input7-2-c740098a289f9a4267d26fc10347a0dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input7-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input7-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..0b8a8960a992b --- /dev/null +++ b/sql/hive/src/test/resources/golden/input7-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,25 @@ +NULL 238 +NULL NULL +NULL 311 +NULL NULL +NULL NULL +NULL NULL +NULL 255 +NULL 278 +NULL 98 +NULL NULL +NULL NULL +NULL NULL +NULL 401 +NULL 150 +NULL 273 +NULL 224 +NULL 369 +NULL 66 +NULL 128 +NULL 213 +NULL 146 +NULL 406 +NULL NULL +NULL NULL +NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input8-0-584fc8ceef39e1e1333ebaeec3e9e7fa b/sql/hive/src/test/resources/golden/input8-0-584fc8ceef39e1e1333ebaeec3e9e7fa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input8-1-c9f9239e73b04fc5c0e0219f438ceefa b/sql/hive/src/test/resources/golden/input8-1-c9f9239e73b04fc5c0e0219f438ceefa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input8-2-4a4cb89ba45d26bb3dd73e44620578ba b/sql/hive/src/test/resources/golden/input8-2-4a4cb89ba45d26bb3dd73e44620578ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input8-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input8-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..c87107a2f1168 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input8-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,25 @@ +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input9-0-8cc1539c21d92af8ea8c1431b0e3d85 b/sql/hive/src/test/resources/golden/input9-0-8cc1539c21d92af8ea8c1431b0e3d85 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input9-1-b30105391cb53915997a84ca3137bd0a b/sql/hive/src/test/resources/golden/input9-1-b30105391cb53915997a84ca3137bd0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input9-2-171ea277f05a642699a0f91bacffccd8 b/sql/hive/src/test/resources/golden/input9-2-171ea277f05a642699a0f91bacffccd8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input9-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input9-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_columnarserde-0-df919fd41f281bf7b45a2340d0c9d43e b/sql/hive/src/test/resources/golden/input_columnarserde-0-df919fd41f281bf7b45a2340d0c9d43e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_columnarserde-1-2db9e6115d209fabcb0c06e5e666fa3 b/sql/hive/src/test/resources/golden/input_columnarserde-1-2db9e6115d209fabcb0c06e5e666fa3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_columnarserde-2-ac60752a883d3204c215fa01811701be b/sql/hive/src/test/resources/golden/input_columnarserde-2-ac60752a883d3204c215fa01811701be new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_columnarserde-3-3455e6f385b0f60be5d0c842ade0f1d7 b/sql/hive/src/test/resources/golden/input_columnarserde-3-3455e6f385b0f60be5d0c842ade0f1d7 new file mode 100644 index 0000000000000..e782acd4d1e7f --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_columnarserde-3-3455e6f385b0f60be5d0c842ade0f1d7 @@ -0,0 +1,11 @@ +[0,0,0] ["0","0","0"] {"key_0":"value_0"} 1712634731 record_0 +[1,2,3] ["10","100","1000"] {"key_1":"value_1"} 465985200 record_1 +[2,4,6] ["20","200","2000"] {"key_2":"value_2"} -751827638 record_2 +[3,6,9] ["30","300","3000"] {"key_3":"value_3"} 477111222 record_3 +[4,8,12] ["40","400","4000"] {"key_4":"value_4"} -734328909 record_4 +[5,10,15] ["50","500","5000"] {"key_5":"value_5"} -1952710710 record_5 +[6,12,18] ["60","600","6000"] {"key_6":"value_6"} 1244525190 record_6 +[7,14,21] ["70","700","7000"] {"key_7":"value_7"} -1461153973 record_7 +[8,16,24] ["80","800","8000"] {"key_8":"value_8"} 1638581578 record_8 +[9,18,27] ["90","900","9000"] {"key_9":"value_9"} 336964413 record_9 +NULL NULL NULL 0 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_columnarserde-4-c471b057cdb4f3c3405b311ea2b92aa3 b/sql/hive/src/test/resources/golden/input_columnarserde-4-c471b057cdb4f3c3405b311ea2b92aa3 new file mode 100644 index 0000000000000..6038b8aa32884 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_columnarserde-4-c471b057cdb4f3c3405b311ea2b92aa3 @@ -0,0 +1,11 @@ +0 0 NULL 1712634731 record_0 +1 10 NULL 465985200 record_1 +2 20 NULL -751827638 record_2 +3 30 NULL 477111222 record_3 +4 40 NULL -734328909 record_4 +5 50 NULL -1952710710 record_5 +6 60 NULL 1244525190 record_6 +7 70 NULL -1461153973 record_7 +8 80 NULL 1638581578 record_8 +9 90 NULL 336964413 record_9 +NULL NULL NULL 0 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_dynamicserde-0-92c95af00fd419aa106571f72fcad67d b/sql/hive/src/test/resources/golden/input_dynamicserde-0-92c95af00fd419aa106571f72fcad67d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_dynamicserde-1-39bc8a2aea379563a62a465cc54aecbc b/sql/hive/src/test/resources/golden/input_dynamicserde-1-39bc8a2aea379563a62a465cc54aecbc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_dynamicserde-2-7bee1cc403a04b53d0a0324819e1d768 b/sql/hive/src/test/resources/golden/input_dynamicserde-2-7bee1cc403a04b53d0a0324819e1d768 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_dynamicserde-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input_dynamicserde-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..e782acd4d1e7f --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_dynamicserde-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,11 @@ +[0,0,0] ["0","0","0"] {"key_0":"value_0"} 1712634731 record_0 +[1,2,3] ["10","100","1000"] {"key_1":"value_1"} 465985200 record_1 +[2,4,6] ["20","200","2000"] {"key_2":"value_2"} -751827638 record_2 +[3,6,9] ["30","300","3000"] {"key_3":"value_3"} 477111222 record_3 +[4,8,12] ["40","400","4000"] {"key_4":"value_4"} -734328909 record_4 +[5,10,15] ["50","500","5000"] {"key_5":"value_5"} -1952710710 record_5 +[6,12,18] ["60","600","6000"] {"key_6":"value_6"} 1244525190 record_6 +[7,14,21] ["70","700","7000"] {"key_7":"value_7"} -1461153973 record_7 +[8,16,24] ["80","800","8000"] {"key_8":"value_8"} 1638581578 record_8 +[9,18,27] ["90","900","9000"] {"key_9":"value_9"} 336964413 record_9 +NULL NULL NULL 0 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_dynamicserde-4-8bf42e02f82b0ac58e7d0b525a993b31 b/sql/hive/src/test/resources/golden/input_dynamicserde-4-8bf42e02f82b0ac58e7d0b525a993b31 new file mode 100644 index 0000000000000..6038b8aa32884 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_dynamicserde-4-8bf42e02f82b0ac58e7d0b525a993b31 @@ -0,0 +1,11 @@ +0 0 NULL 1712634731 record_0 +1 10 NULL 465985200 record_1 +2 20 NULL -751827638 record_2 +3 30 NULL 477111222 record_3 +4 40 NULL -734328909 record_4 +5 50 NULL -1952710710 record_5 +6 60 NULL 1244525190 record_6 +7 70 NULL -1461153973 record_7 +8 80 NULL 1638581578 record_8 +9 90 NULL 336964413 record_9 +NULL NULL NULL 0 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-0-92c95af00fd419aa106571f72fcad67d b/sql/hive/src/test/resources/golden/input_lazyserde-0-92c95af00fd419aa106571f72fcad67d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-1-bf8ce1d1366256d5c07fc4b55dde7ba7 b/sql/hive/src/test/resources/golden/input_lazyserde-1-bf8ce1d1366256d5c07fc4b55dde7ba7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-10-d915efbc5233a49f48e81e74eef2a3c8 b/sql/hive/src/test/resources/golden/input_lazyserde-10-d915efbc5233a49f48e81e74eef2a3c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-11-6aaa88142e86a9a39e980caed145e32c b/sql/hive/src/test/resources/golden/input_lazyserde-11-6aaa88142e86a9a39e980caed145e32c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-12-abde20a4a37ed330bc7128576dd18d7c b/sql/hive/src/test/resources/golden/input_lazyserde-12-abde20a4a37ed330bc7128576dd18d7c new file mode 100644 index 0000000000000..6af528eab23a8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_lazyserde-12-abde20a4a37ed330bc7128576dd18d7c @@ -0,0 +1,11 @@ +{"key_0":"value_0"} +{"key_1":"value_1"} +{"key_2":"value_2"} +{"key_3":"value_3"} +{"key_4":"value_4"} +{"key_5":"value_5"} +{"key_6":"value_6"} +{"key_7":"value_7"} +{"key_8":"value_8"} +{"key_9":"value_9"} +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-2-7a165139976654640c86db8e4e5871cc b/sql/hive/src/test/resources/golden/input_lazyserde-2-7a165139976654640c86db8e4e5871cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-3-bdf93641b97ab6347ece67e2fb636e97 b/sql/hive/src/test/resources/golden/input_lazyserde-3-bdf93641b97ab6347ece67e2fb636e97 new file mode 100644 index 0000000000000..e782acd4d1e7f --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_lazyserde-3-bdf93641b97ab6347ece67e2fb636e97 @@ -0,0 +1,11 @@ +[0,0,0] ["0","0","0"] {"key_0":"value_0"} 1712634731 record_0 +[1,2,3] ["10","100","1000"] {"key_1":"value_1"} 465985200 record_1 +[2,4,6] ["20","200","2000"] {"key_2":"value_2"} -751827638 record_2 +[3,6,9] ["30","300","3000"] {"key_3":"value_3"} 477111222 record_3 +[4,8,12] ["40","400","4000"] {"key_4":"value_4"} -734328909 record_4 +[5,10,15] ["50","500","5000"] {"key_5":"value_5"} -1952710710 record_5 +[6,12,18] ["60","600","6000"] {"key_6":"value_6"} 1244525190 record_6 +[7,14,21] ["70","700","7000"] {"key_7":"value_7"} -1461153973 record_7 +[8,16,24] ["80","800","8000"] {"key_8":"value_8"} 1638581578 record_8 +[9,18,27] ["90","900","9000"] {"key_9":"value_9"} 336964413 record_9 +NULL NULL NULL 0 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-4-8cc058fb7986f59965976cad813267db b/sql/hive/src/test/resources/golden/input_lazyserde-4-8cc058fb7986f59965976cad813267db new file mode 100644 index 0000000000000..6038b8aa32884 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_lazyserde-4-8cc058fb7986f59965976cad813267db @@ -0,0 +1,11 @@ +0 0 NULL 1712634731 record_0 +1 10 NULL 465985200 record_1 +2 20 NULL -751827638 record_2 +3 30 NULL 477111222 record_3 +4 40 NULL -734328909 record_4 +5 50 NULL -1952710710 record_5 +6 60 NULL 1244525190 record_6 +7 70 NULL -1461153973 record_7 +8 80 NULL 1638581578 record_8 +9 90 NULL 336964413 record_9 +NULL NULL NULL 0 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-5-460dffb0f1ab0ac0ebc4fd545809aa9a b/sql/hive/src/test/resources/golden/input_lazyserde-5-460dffb0f1ab0ac0ebc4fd545809aa9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-6-42e2838ee69484bf5301475905cee12 b/sql/hive/src/test/resources/golden/input_lazyserde-6-42e2838ee69484bf5301475905cee12 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-7-b44a44827ad0dce044badd6b258eabd5 b/sql/hive/src/test/resources/golden/input_lazyserde-7-b44a44827ad0dce044badd6b258eabd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-8-abde20a4a37ed330bc7128576dd18d7c b/sql/hive/src/test/resources/golden/input_lazyserde-8-abde20a4a37ed330bc7128576dd18d7c new file mode 100644 index 0000000000000..1bb008b44d6ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_lazyserde-8-abde20a4a37ed330bc7128576dd18d7c @@ -0,0 +1,11 @@ +[0,0,0] +[1,2,3] +[2,4,6] +[3,6,9] +[4,8,12] +[5,10,15] +[6,12,18] +[7,14,21] +[8,16,24] +[9,18,27] +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_lazyserde-9-460dffb0f1ab0ac0ebc4fd545809aa9a b/sql/hive/src/test/resources/golden/input_lazyserde-9-460dffb0f1ab0ac0ebc4fd545809aa9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_limit-0-b2b4b45519484c8bac49d07debf678b9 b/sql/hive/src/test/resources/golden/input_limit-0-b2b4b45519484c8bac49d07debf678b9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_limit-1-77d7012bc901b0a9bcf9dae500ae2034 b/sql/hive/src/test/resources/golden/input_limit-1-77d7012bc901b0a9bcf9dae500ae2034 new file mode 100644 index 0000000000000..17f24d2991d14 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_limit-1-77d7012bc901b0a9bcf9dae500ae2034 @@ -0,0 +1,20 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part0-0-5f2f3118b9f61ac610b2d76f470e3e27 b/sql/hive/src/test/resources/golden/input_part0-0-5f2f3118b9f61ac610b2d76f470e3e27 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part0-1-1aa1486a207bedc275035acc3b37cbdb b/sql/hive/src/test/resources/golden/input_part0-1-1aa1486a207bedc275035acc3b37cbdb new file mode 100644 index 0000000000000..499e6b8ab6b7e --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part0-1-1aa1486a207bedc275035acc3b37cbdb @@ -0,0 +1,1000 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part1-0-55f89c73a00f0f23ee04239ad9fc909 b/sql/hive/src/test/resources/golden/input_part1-0-55f89c73a00f0f23ee04239ad9fc909 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part1-1-593e11f2ca748f3ae6b8fdf5da435229 b/sql/hive/src/test/resources/golden/input_part1-1-593e11f2ca748f3ae6b8fdf5da435229 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part1-2-4153379704a43162abf9dbdbd79a92bc b/sql/hive/src/test/resources/golden/input_part1-2-4153379704a43162abf9dbdbd79a92bc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part1-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input_part1-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..3e5ae10e4670a --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part1-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,84 @@ +86 val_86 12 2008-04-08 +27 val_27 12 2008-04-08 +98 val_98 12 2008-04-08 +66 val_66 12 2008-04-08 +37 val_37 12 2008-04-08 +15 val_15 12 2008-04-08 +82 val_82 12 2008-04-08 +17 val_17 12 2008-04-08 +0 val_0 12 2008-04-08 +57 val_57 12 2008-04-08 +20 val_20 12 2008-04-08 +92 val_92 12 2008-04-08 +47 val_47 12 2008-04-08 +72 val_72 12 2008-04-08 +4 val_4 12 2008-04-08 +35 val_35 12 2008-04-08 +54 val_54 12 2008-04-08 +51 val_51 12 2008-04-08 +65 val_65 12 2008-04-08 +83 val_83 12 2008-04-08 +12 val_12 12 2008-04-08 +67 val_67 12 2008-04-08 +84 val_84 12 2008-04-08 +58 val_58 12 2008-04-08 +8 val_8 12 2008-04-08 +24 val_24 12 2008-04-08 +42 val_42 12 2008-04-08 +0 val_0 12 2008-04-08 +96 val_96 12 2008-04-08 +26 val_26 12 2008-04-08 +51 val_51 12 2008-04-08 +43 val_43 12 2008-04-08 +95 val_95 12 2008-04-08 +98 val_98 12 2008-04-08 +85 val_85 12 2008-04-08 +77 val_77 12 2008-04-08 +0 val_0 12 2008-04-08 +87 val_87 12 2008-04-08 +15 val_15 12 2008-04-08 +72 val_72 12 2008-04-08 +90 val_90 12 2008-04-08 +19 val_19 12 2008-04-08 +10 val_10 12 2008-04-08 +5 val_5 12 2008-04-08 +58 val_58 12 2008-04-08 +35 val_35 12 2008-04-08 +95 val_95 12 2008-04-08 +11 val_11 12 2008-04-08 +34 val_34 12 2008-04-08 +42 val_42 12 2008-04-08 +78 val_78 12 2008-04-08 +76 val_76 12 2008-04-08 +41 val_41 12 2008-04-08 +30 val_30 12 2008-04-08 +64 val_64 12 2008-04-08 +76 val_76 12 2008-04-08 +74 val_74 12 2008-04-08 +69 val_69 12 2008-04-08 +33 val_33 12 2008-04-08 +70 val_70 12 2008-04-08 +5 val_5 12 2008-04-08 +2 val_2 12 2008-04-08 +35 val_35 12 2008-04-08 +80 val_80 12 2008-04-08 +44 val_44 12 2008-04-08 +53 val_53 12 2008-04-08 +90 val_90 12 2008-04-08 +12 val_12 12 2008-04-08 +5 val_5 12 2008-04-08 +70 val_70 12 2008-04-08 +24 val_24 12 2008-04-08 +70 val_70 12 2008-04-08 +83 val_83 12 2008-04-08 +26 val_26 12 2008-04-08 +67 val_67 12 2008-04-08 +18 val_18 12 2008-04-08 +9 val_9 12 2008-04-08 +18 val_18 12 2008-04-08 +97 val_97 12 2008-04-08 +84 val_84 12 2008-04-08 +28 val_28 12 2008-04-08 +37 val_37 12 2008-04-08 +90 val_90 12 2008-04-08 +97 val_97 12 2008-04-08 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part10-0-77d7f7c938d7827a2135d9391376a518 b/sql/hive/src/test/resources/golden/input_part10-0-77d7f7c938d7827a2135d9391376a518 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part10-1-35f67c0112026170d015b5f80a254bde b/sql/hive/src/test/resources/golden/input_part10-1-35f67c0112026170d015b5f80a254bde new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part10-2-40069c199502c2724ac2a2733f964248 b/sql/hive/src/test/resources/golden/input_part10-2-40069c199502c2724ac2a2733f964248 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part10-3-48b242bc305c9bf879e083fa11edc967 b/sql/hive/src/test/resources/golden/input_part10-3-48b242bc305c9bf879e083fa11edc967 new file mode 100644 index 0000000000000..82116102c1f54 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part10-3-48b242bc305c9bf879e083fa11edc967 @@ -0,0 +1,12 @@ +a string None +b string None +ds string None +ts string None + +# Partition Information +# col_name data_type comment + +ds string None +ts string None + +Detailed Partition Information Partition(values:[2008 04 08, 10:11:12=455], dbName:default, tableName:part_special, createTime:1388798899, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:ts, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6540137288252557391/part_special/ds=2008 04 08/ts=10%3A11%3A12%3D455, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1388798899}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part10-4-d0ba28297a8b73569d93605aa890aa09 b/sql/hive/src/test/resources/golden/input_part10-4-d0ba28297a8b73569d93605aa890aa09 new file mode 100644 index 0000000000000..c8d0d55930069 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part10-4-d0ba28297a8b73569d93605aa890aa09 @@ -0,0 +1 @@ +1 2 2008 04 08 10:11:12=455 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part10_win-0-93c438f3bbfa5c46514f0ab6b83a59bf b/sql/hive/src/test/resources/golden/input_part10_win-0-93c438f3bbfa5c46514f0ab6b83a59bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part10_win-1-35f67c0112026170d015b5f80a254bde b/sql/hive/src/test/resources/golden/input_part10_win-1-35f67c0112026170d015b5f80a254bde new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part10_win-2-40069c199502c2724ac2a2733f964248 b/sql/hive/src/test/resources/golden/input_part10_win-2-40069c199502c2724ac2a2733f964248 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part10_win-3-48b242bc305c9bf879e083fa11edc967 b/sql/hive/src/test/resources/golden/input_part10_win-3-48b242bc305c9bf879e083fa11edc967 new file mode 100644 index 0000000000000..869eb58e70d82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part10_win-3-48b242bc305c9bf879e083fa11edc967 @@ -0,0 +1,12 @@ +a string None +b string None +ds string None +ts string None + +# Partition Information +# col_name data_type comment + +ds string None +ts string None + +Detailed Partition Information Partition(values:[2008 04 08, 10:11:12=455], dbName:default, tableName:part_special, createTime:1388798920, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:ts, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6540137288252557391/part_special/ds=2008 04 08/ts=10%3A11%3A12%3D455, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1388798920, numRows=1, totalSize=4, rawDataSize=3}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part10_win-4-d0ba28297a8b73569d93605aa890aa09 b/sql/hive/src/test/resources/golden/input_part10_win-4-d0ba28297a8b73569d93605aa890aa09 new file mode 100644 index 0000000000000..c8d0d55930069 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part10_win-4-d0ba28297a8b73569d93605aa890aa09 @@ -0,0 +1 @@ +1 2 2008 04 08 10:11:12=455 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part2-0-55f89c73a00f0f23ee04239ad9fc909 b/sql/hive/src/test/resources/golden/input_part2-0-55f89c73a00f0f23ee04239ad9fc909 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part2-1-5fde770f3a672878b62d7c2e9e9a8f8e b/sql/hive/src/test/resources/golden/input_part2-1-5fde770f3a672878b62d7c2e9e9a8f8e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part2-2-a8684c5574f90c3db2fc8a269a7556cd b/sql/hive/src/test/resources/golden/input_part2-2-a8684c5574f90c3db2fc8a269a7556cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part2-3-fcb06513e757d4bf929ff681cb9f02b1 b/sql/hive/src/test/resources/golden/input_part2-3-fcb06513e757d4bf929ff681cb9f02b1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part2-4-93c97e1760e0d41b3791d6f08010a665 b/sql/hive/src/test/resources/golden/input_part2-4-93c97e1760e0d41b3791d6f08010a665 new file mode 100644 index 0000000000000..fd945cc15d9ca --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part2-4-93c97e1760e0d41b3791d6f08010a665 @@ -0,0 +1,84 @@ +0 val_0 12 2008-04-08 +0 val_0 12 2008-04-08 +0 val_0 12 2008-04-08 +2 val_2 12 2008-04-08 +4 val_4 12 2008-04-08 +5 val_5 12 2008-04-08 +5 val_5 12 2008-04-08 +5 val_5 12 2008-04-08 +8 val_8 12 2008-04-08 +9 val_9 12 2008-04-08 +10 val_10 12 2008-04-08 +11 val_11 12 2008-04-08 +12 val_12 12 2008-04-08 +12 val_12 12 2008-04-08 +15 val_15 12 2008-04-08 +15 val_15 12 2008-04-08 +17 val_17 12 2008-04-08 +18 val_18 12 2008-04-08 +18 val_18 12 2008-04-08 +19 val_19 12 2008-04-08 +20 val_20 12 2008-04-08 +24 val_24 12 2008-04-08 +24 val_24 12 2008-04-08 +26 val_26 12 2008-04-08 +26 val_26 12 2008-04-08 +27 val_27 12 2008-04-08 +28 val_28 12 2008-04-08 +30 val_30 12 2008-04-08 +33 val_33 12 2008-04-08 +34 val_34 12 2008-04-08 +35 val_35 12 2008-04-08 +35 val_35 12 2008-04-08 +35 val_35 12 2008-04-08 +37 val_37 12 2008-04-08 +37 val_37 12 2008-04-08 +41 val_41 12 2008-04-08 +42 val_42 12 2008-04-08 +42 val_42 12 2008-04-08 +43 val_43 12 2008-04-08 +44 val_44 12 2008-04-08 +47 val_47 12 2008-04-08 +51 val_51 12 2008-04-08 +51 val_51 12 2008-04-08 +53 val_53 12 2008-04-08 +54 val_54 12 2008-04-08 +57 val_57 12 2008-04-08 +58 val_58 12 2008-04-08 +58 val_58 12 2008-04-08 +64 val_64 12 2008-04-08 +65 val_65 12 2008-04-08 +66 val_66 12 2008-04-08 +67 val_67 12 2008-04-08 +67 val_67 12 2008-04-08 +69 val_69 12 2008-04-08 +70 val_70 12 2008-04-08 +70 val_70 12 2008-04-08 +70 val_70 12 2008-04-08 +72 val_72 12 2008-04-08 +72 val_72 12 2008-04-08 +74 val_74 12 2008-04-08 +76 val_76 12 2008-04-08 +76 val_76 12 2008-04-08 +77 val_77 12 2008-04-08 +78 val_78 12 2008-04-08 +80 val_80 12 2008-04-08 +82 val_82 12 2008-04-08 +83 val_83 12 2008-04-08 +83 val_83 12 2008-04-08 +84 val_84 12 2008-04-08 +84 val_84 12 2008-04-08 +85 val_85 12 2008-04-08 +86 val_86 12 2008-04-08 +87 val_87 12 2008-04-08 +90 val_90 12 2008-04-08 +90 val_90 12 2008-04-08 +90 val_90 12 2008-04-08 +92 val_92 12 2008-04-08 +95 val_95 12 2008-04-08 +95 val_95 12 2008-04-08 +96 val_96 12 2008-04-08 +97 val_97 12 2008-04-08 +97 val_97 12 2008-04-08 +98 val_98 12 2008-04-08 +98 val_98 12 2008-04-08 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part2-5-9d0992a91951e6e4242b5b4c38d4e861 b/sql/hive/src/test/resources/golden/input_part2-5-9d0992a91951e6e4242b5b4c38d4e861 new file mode 100644 index 0000000000000..f23877361f33b --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part2-5-9d0992a91951e6e4242b5b4c38d4e861 @@ -0,0 +1,84 @@ +0 val_0 12 2008-04-09 +0 val_0 12 2008-04-09 +0 val_0 12 2008-04-09 +2 val_2 12 2008-04-09 +4 val_4 12 2008-04-09 +5 val_5 12 2008-04-09 +5 val_5 12 2008-04-09 +5 val_5 12 2008-04-09 +8 val_8 12 2008-04-09 +9 val_9 12 2008-04-09 +10 val_10 12 2008-04-09 +11 val_11 12 2008-04-09 +12 val_12 12 2008-04-09 +12 val_12 12 2008-04-09 +15 val_15 12 2008-04-09 +15 val_15 12 2008-04-09 +17 val_17 12 2008-04-09 +18 val_18 12 2008-04-09 +18 val_18 12 2008-04-09 +19 val_19 12 2008-04-09 +20 val_20 12 2008-04-09 +24 val_24 12 2008-04-09 +24 val_24 12 2008-04-09 +26 val_26 12 2008-04-09 +26 val_26 12 2008-04-09 +27 val_27 12 2008-04-09 +28 val_28 12 2008-04-09 +30 val_30 12 2008-04-09 +33 val_33 12 2008-04-09 +34 val_34 12 2008-04-09 +35 val_35 12 2008-04-09 +35 val_35 12 2008-04-09 +35 val_35 12 2008-04-09 +37 val_37 12 2008-04-09 +37 val_37 12 2008-04-09 +41 val_41 12 2008-04-09 +42 val_42 12 2008-04-09 +42 val_42 12 2008-04-09 +43 val_43 12 2008-04-09 +44 val_44 12 2008-04-09 +47 val_47 12 2008-04-09 +51 val_51 12 2008-04-09 +51 val_51 12 2008-04-09 +53 val_53 12 2008-04-09 +54 val_54 12 2008-04-09 +57 val_57 12 2008-04-09 +58 val_58 12 2008-04-09 +58 val_58 12 2008-04-09 +64 val_64 12 2008-04-09 +65 val_65 12 2008-04-09 +66 val_66 12 2008-04-09 +67 val_67 12 2008-04-09 +67 val_67 12 2008-04-09 +69 val_69 12 2008-04-09 +70 val_70 12 2008-04-09 +70 val_70 12 2008-04-09 +70 val_70 12 2008-04-09 +72 val_72 12 2008-04-09 +72 val_72 12 2008-04-09 +74 val_74 12 2008-04-09 +76 val_76 12 2008-04-09 +76 val_76 12 2008-04-09 +77 val_77 12 2008-04-09 +78 val_78 12 2008-04-09 +80 val_80 12 2008-04-09 +82 val_82 12 2008-04-09 +83 val_83 12 2008-04-09 +83 val_83 12 2008-04-09 +84 val_84 12 2008-04-09 +84 val_84 12 2008-04-09 +85 val_85 12 2008-04-09 +86 val_86 12 2008-04-09 +87 val_87 12 2008-04-09 +90 val_90 12 2008-04-09 +90 val_90 12 2008-04-09 +90 val_90 12 2008-04-09 +92 val_92 12 2008-04-09 +95 val_95 12 2008-04-09 +95 val_95 12 2008-04-09 +96 val_96 12 2008-04-09 +97 val_97 12 2008-04-09 +97 val_97 12 2008-04-09 +98 val_98 12 2008-04-09 +98 val_98 12 2008-04-09 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part3-0-aed975ebb2a3dfee3f8747c00ea2c4ff b/sql/hive/src/test/resources/golden/input_part3-0-aed975ebb2a3dfee3f8747c00ea2c4ff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part3-1-ba5256285fb22a43b491253a2d519730 b/sql/hive/src/test/resources/golden/input_part3-1-ba5256285fb22a43b491253a2d519730 new file mode 100644 index 0000000000000..f4026a591a958 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part3-1-ba5256285fb22a43b491253a2d519730 @@ -0,0 +1,500 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part4-0-6c73b8b3f885b8fe0e61a7111f5cc4ef b/sql/hive/src/test/resources/golden/input_part4-0-6c73b8b3f885b8fe0e61a7111f5cc4ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part4-1-88be7d93e9a03ea76085111c18d437a5 b/sql/hive/src/test/resources/golden/input_part4-1-88be7d93e9a03ea76085111c18d437a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part5-0-679bf51b7de8df94fd2928744e887e3b b/sql/hive/src/test/resources/golden/input_part5-0-679bf51b7de8df94fd2928744e887e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part5-1-705301f0bf4fe9758e9f919d129dbc7c b/sql/hive/src/test/resources/golden/input_part5-1-705301f0bf4fe9758e9f919d129dbc7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part5-2-d678533566fba4b922f01284538ca484 b/sql/hive/src/test/resources/golden/input_part5-2-d678533566fba4b922f01284538ca484 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part5-3-e4419c33287ca1f48a43f61cca5b5928 b/sql/hive/src/test/resources/golden/input_part5-3-e4419c33287ca1f48a43f61cca5b5928 new file mode 100644 index 0000000000000..853c3bc8df7f0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part5-3-e4419c33287ca1f48a43f61cca5b5928 @@ -0,0 +1,168 @@ +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +10 val_10 2008-04-08 11 +10 val_10 2008-04-08 12 +11 val_11 2008-04-08 11 +11 val_11 2008-04-08 12 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 12 +12 val_12 2008-04-08 12 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 12 +15 val_15 2008-04-08 12 +17 val_17 2008-04-08 11 +17 val_17 2008-04-08 12 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 12 +18 val_18 2008-04-08 12 +19 val_19 2008-04-08 11 +19 val_19 2008-04-08 12 +2 val_2 2008-04-08 11 +2 val_2 2008-04-08 12 +20 val_20 2008-04-08 11 +20 val_20 2008-04-08 12 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 12 +24 val_24 2008-04-08 12 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 12 +26 val_26 2008-04-08 12 +27 val_27 2008-04-08 11 +27 val_27 2008-04-08 12 +28 val_28 2008-04-08 11 +28 val_28 2008-04-08 12 +30 val_30 2008-04-08 11 +30 val_30 2008-04-08 12 +33 val_33 2008-04-08 11 +33 val_33 2008-04-08 12 +34 val_34 2008-04-08 11 +34 val_34 2008-04-08 12 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 12 +37 val_37 2008-04-08 12 +4 val_4 2008-04-08 11 +4 val_4 2008-04-08 12 +41 val_41 2008-04-08 11 +41 val_41 2008-04-08 12 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 12 +42 val_42 2008-04-08 12 +43 val_43 2008-04-08 11 +43 val_43 2008-04-08 12 +44 val_44 2008-04-08 11 +44 val_44 2008-04-08 12 +47 val_47 2008-04-08 11 +47 val_47 2008-04-08 12 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 12 +51 val_51 2008-04-08 12 +53 val_53 2008-04-08 11 +53 val_53 2008-04-08 12 +54 val_54 2008-04-08 11 +54 val_54 2008-04-08 12 +57 val_57 2008-04-08 11 +57 val_57 2008-04-08 12 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 12 +58 val_58 2008-04-08 12 +64 val_64 2008-04-08 11 +64 val_64 2008-04-08 12 +65 val_65 2008-04-08 11 +65 val_65 2008-04-08 12 +66 val_66 2008-04-08 11 +66 val_66 2008-04-08 12 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 12 +67 val_67 2008-04-08 12 +69 val_69 2008-04-08 11 +69 val_69 2008-04-08 12 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 12 +72 val_72 2008-04-08 12 +74 val_74 2008-04-08 11 +74 val_74 2008-04-08 12 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 12 +76 val_76 2008-04-08 12 +77 val_77 2008-04-08 11 +77 val_77 2008-04-08 12 +78 val_78 2008-04-08 11 +78 val_78 2008-04-08 12 +8 val_8 2008-04-08 11 +8 val_8 2008-04-08 12 +80 val_80 2008-04-08 11 +80 val_80 2008-04-08 12 +82 val_82 2008-04-08 11 +82 val_82 2008-04-08 12 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 12 +83 val_83 2008-04-08 12 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 12 +84 val_84 2008-04-08 12 +85 val_85 2008-04-08 11 +85 val_85 2008-04-08 12 +86 val_86 2008-04-08 11 +86 val_86 2008-04-08 12 +87 val_87 2008-04-08 11 +87 val_87 2008-04-08 12 +9 val_9 2008-04-08 11 +9 val_9 2008-04-08 12 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +92 val_92 2008-04-08 11 +92 val_92 2008-04-08 12 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 12 +95 val_95 2008-04-08 12 +96 val_96 2008-04-08 11 +96 val_96 2008-04-08 12 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 12 +98 val_98 2008-04-08 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part6-0-6ec3d5a634d8c011f32a0277e654ae6d b/sql/hive/src/test/resources/golden/input_part6-0-6ec3d5a634d8c011f32a0277e654ae6d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part6-1-9ffee7a86f484eab399266efa6e086f6 b/sql/hive/src/test/resources/golden/input_part6-1-9ffee7a86f484eab399266efa6e086f6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part7-0-14448a12627b8bccf6828032f938f39e b/sql/hive/src/test/resources/golden/input_part7-0-14448a12627b8bccf6828032f938f39e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part7-1-affad4cedcd29bb136bc477fc07e6ea0 b/sql/hive/src/test/resources/golden/input_part7-1-affad4cedcd29bb136bc477fc07e6ea0 new file mode 100644 index 0000000000000..540ca86636f3c --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part7-1-affad4cedcd29bb136bc477fc07e6ea0 @@ -0,0 +1,336 @@ +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +2 val_2 2008-04-08 11 +2 val_2 2008-04-08 11 +2 val_2 2008-04-08 12 +2 val_2 2008-04-08 12 +4 val_4 2008-04-08 11 +4 val_4 2008-04-08 11 +4 val_4 2008-04-08 12 +4 val_4 2008-04-08 12 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +8 val_8 2008-04-08 11 +8 val_8 2008-04-08 11 +8 val_8 2008-04-08 12 +8 val_8 2008-04-08 12 +9 val_9 2008-04-08 11 +9 val_9 2008-04-08 11 +9 val_9 2008-04-08 12 +9 val_9 2008-04-08 12 +10 val_10 2008-04-08 11 +10 val_10 2008-04-08 11 +10 val_10 2008-04-08 12 +10 val_10 2008-04-08 12 +11 val_11 2008-04-08 11 +11 val_11 2008-04-08 11 +11 val_11 2008-04-08 12 +11 val_11 2008-04-08 12 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 12 +12 val_12 2008-04-08 12 +12 val_12 2008-04-08 12 +12 val_12 2008-04-08 12 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 12 +15 val_15 2008-04-08 12 +15 val_15 2008-04-08 12 +15 val_15 2008-04-08 12 +17 val_17 2008-04-08 11 +17 val_17 2008-04-08 11 +17 val_17 2008-04-08 12 +17 val_17 2008-04-08 12 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 12 +18 val_18 2008-04-08 12 +18 val_18 2008-04-08 12 +18 val_18 2008-04-08 12 +19 val_19 2008-04-08 11 +19 val_19 2008-04-08 11 +19 val_19 2008-04-08 12 +19 val_19 2008-04-08 12 +20 val_20 2008-04-08 11 +20 val_20 2008-04-08 11 +20 val_20 2008-04-08 12 +20 val_20 2008-04-08 12 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 12 +24 val_24 2008-04-08 12 +24 val_24 2008-04-08 12 +24 val_24 2008-04-08 12 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 12 +26 val_26 2008-04-08 12 +26 val_26 2008-04-08 12 +26 val_26 2008-04-08 12 +27 val_27 2008-04-08 11 +27 val_27 2008-04-08 11 +27 val_27 2008-04-08 12 +27 val_27 2008-04-08 12 +28 val_28 2008-04-08 11 +28 val_28 2008-04-08 11 +28 val_28 2008-04-08 12 +28 val_28 2008-04-08 12 +30 val_30 2008-04-08 11 +30 val_30 2008-04-08 11 +30 val_30 2008-04-08 12 +30 val_30 2008-04-08 12 +33 val_33 2008-04-08 11 +33 val_33 2008-04-08 11 +33 val_33 2008-04-08 12 +33 val_33 2008-04-08 12 +34 val_34 2008-04-08 11 +34 val_34 2008-04-08 11 +34 val_34 2008-04-08 12 +34 val_34 2008-04-08 12 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 12 +37 val_37 2008-04-08 12 +37 val_37 2008-04-08 12 +37 val_37 2008-04-08 12 +41 val_41 2008-04-08 11 +41 val_41 2008-04-08 11 +41 val_41 2008-04-08 12 +41 val_41 2008-04-08 12 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 12 +42 val_42 2008-04-08 12 +42 val_42 2008-04-08 12 +42 val_42 2008-04-08 12 +43 val_43 2008-04-08 11 +43 val_43 2008-04-08 11 +43 val_43 2008-04-08 12 +43 val_43 2008-04-08 12 +44 val_44 2008-04-08 11 +44 val_44 2008-04-08 11 +44 val_44 2008-04-08 12 +44 val_44 2008-04-08 12 +47 val_47 2008-04-08 11 +47 val_47 2008-04-08 11 +47 val_47 2008-04-08 12 +47 val_47 2008-04-08 12 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 12 +51 val_51 2008-04-08 12 +51 val_51 2008-04-08 12 +51 val_51 2008-04-08 12 +53 val_53 2008-04-08 11 +53 val_53 2008-04-08 11 +53 val_53 2008-04-08 12 +53 val_53 2008-04-08 12 +54 val_54 2008-04-08 11 +54 val_54 2008-04-08 11 +54 val_54 2008-04-08 12 +54 val_54 2008-04-08 12 +57 val_57 2008-04-08 11 +57 val_57 2008-04-08 11 +57 val_57 2008-04-08 12 +57 val_57 2008-04-08 12 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 12 +58 val_58 2008-04-08 12 +58 val_58 2008-04-08 12 +58 val_58 2008-04-08 12 +64 val_64 2008-04-08 11 +64 val_64 2008-04-08 11 +64 val_64 2008-04-08 12 +64 val_64 2008-04-08 12 +65 val_65 2008-04-08 11 +65 val_65 2008-04-08 11 +65 val_65 2008-04-08 12 +65 val_65 2008-04-08 12 +66 val_66 2008-04-08 11 +66 val_66 2008-04-08 11 +66 val_66 2008-04-08 12 +66 val_66 2008-04-08 12 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 12 +67 val_67 2008-04-08 12 +67 val_67 2008-04-08 12 +67 val_67 2008-04-08 12 +69 val_69 2008-04-08 11 +69 val_69 2008-04-08 11 +69 val_69 2008-04-08 12 +69 val_69 2008-04-08 12 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 12 +72 val_72 2008-04-08 12 +72 val_72 2008-04-08 12 +72 val_72 2008-04-08 12 +74 val_74 2008-04-08 11 +74 val_74 2008-04-08 11 +74 val_74 2008-04-08 12 +74 val_74 2008-04-08 12 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 12 +76 val_76 2008-04-08 12 +76 val_76 2008-04-08 12 +76 val_76 2008-04-08 12 +77 val_77 2008-04-08 11 +77 val_77 2008-04-08 11 +77 val_77 2008-04-08 12 +77 val_77 2008-04-08 12 +78 val_78 2008-04-08 11 +78 val_78 2008-04-08 11 +78 val_78 2008-04-08 12 +78 val_78 2008-04-08 12 +80 val_80 2008-04-08 11 +80 val_80 2008-04-08 11 +80 val_80 2008-04-08 12 +80 val_80 2008-04-08 12 +82 val_82 2008-04-08 11 +82 val_82 2008-04-08 11 +82 val_82 2008-04-08 12 +82 val_82 2008-04-08 12 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 12 +83 val_83 2008-04-08 12 +83 val_83 2008-04-08 12 +83 val_83 2008-04-08 12 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 12 +84 val_84 2008-04-08 12 +84 val_84 2008-04-08 12 +84 val_84 2008-04-08 12 +85 val_85 2008-04-08 11 +85 val_85 2008-04-08 11 +85 val_85 2008-04-08 12 +85 val_85 2008-04-08 12 +86 val_86 2008-04-08 11 +86 val_86 2008-04-08 11 +86 val_86 2008-04-08 12 +86 val_86 2008-04-08 12 +87 val_87 2008-04-08 11 +87 val_87 2008-04-08 11 +87 val_87 2008-04-08 12 +87 val_87 2008-04-08 12 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +92 val_92 2008-04-08 11 +92 val_92 2008-04-08 11 +92 val_92 2008-04-08 12 +92 val_92 2008-04-08 12 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 12 +95 val_95 2008-04-08 12 +95 val_95 2008-04-08 12 +95 val_95 2008-04-08 12 +96 val_96 2008-04-08 11 +96 val_96 2008-04-08 11 +96 val_96 2008-04-08 12 +96 val_96 2008-04-08 12 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 12 +98 val_98 2008-04-08 12 +98 val_98 2008-04-08 12 +98 val_98 2008-04-08 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part8-0-f60652796af548135f9e104b456840e3 b/sql/hive/src/test/resources/golden/input_part8-0-f60652796af548135f9e104b456840e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part8-1-60b409a520999ba50e8b7c6e30de3474 b/sql/hive/src/test/resources/golden/input_part8-1-60b409a520999ba50e8b7c6e30de3474 new file mode 100644 index 0000000000000..a1728c82f0b35 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part8-1-60b409a520999ba50e8b7c6e30de3474 @@ -0,0 +1,10 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_part9-0-726907a7cf62f5a79466caa0fa6eca01 b/sql/hive/src/test/resources/golden/input_part9-0-726907a7cf62f5a79466caa0fa6eca01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_part9-1-e60c60afc073367464898b8396e8f643 b/sql/hive/src/test/resources/golden/input_part9-1-e60c60afc073367464898b8396e8f643 new file mode 100644 index 0000000000000..438355d7b06f5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_part9-1-e60c60afc073367464898b8396e8f643 @@ -0,0 +1,1000 @@ +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +2 val_2 2008-04-08 11 +2 val_2 2008-04-08 12 +4 val_4 2008-04-08 11 +4 val_4 2008-04-08 12 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +8 val_8 2008-04-08 11 +8 val_8 2008-04-08 12 +9 val_9 2008-04-08 11 +9 val_9 2008-04-08 12 +10 val_10 2008-04-08 11 +10 val_10 2008-04-08 12 +11 val_11 2008-04-08 11 +11 val_11 2008-04-08 12 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 12 +12 val_12 2008-04-08 12 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 12 +15 val_15 2008-04-08 12 +17 val_17 2008-04-08 11 +17 val_17 2008-04-08 12 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 12 +18 val_18 2008-04-08 12 +19 val_19 2008-04-08 11 +19 val_19 2008-04-08 12 +20 val_20 2008-04-08 11 +20 val_20 2008-04-08 12 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 12 +24 val_24 2008-04-08 12 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 12 +26 val_26 2008-04-08 12 +27 val_27 2008-04-08 11 +27 val_27 2008-04-08 12 +28 val_28 2008-04-08 11 +28 val_28 2008-04-08 12 +30 val_30 2008-04-08 11 +30 val_30 2008-04-08 12 +33 val_33 2008-04-08 11 +33 val_33 2008-04-08 12 +34 val_34 2008-04-08 11 +34 val_34 2008-04-08 12 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 12 +37 val_37 2008-04-08 12 +41 val_41 2008-04-08 11 +41 val_41 2008-04-08 12 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 12 +42 val_42 2008-04-08 12 +43 val_43 2008-04-08 11 +43 val_43 2008-04-08 12 +44 val_44 2008-04-08 11 +44 val_44 2008-04-08 12 +47 val_47 2008-04-08 11 +47 val_47 2008-04-08 12 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 12 +51 val_51 2008-04-08 12 +53 val_53 2008-04-08 11 +53 val_53 2008-04-08 12 +54 val_54 2008-04-08 11 +54 val_54 2008-04-08 12 +57 val_57 2008-04-08 11 +57 val_57 2008-04-08 12 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 12 +58 val_58 2008-04-08 12 +64 val_64 2008-04-08 11 +64 val_64 2008-04-08 12 +65 val_65 2008-04-08 11 +65 val_65 2008-04-08 12 +66 val_66 2008-04-08 11 +66 val_66 2008-04-08 12 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 12 +67 val_67 2008-04-08 12 +69 val_69 2008-04-08 11 +69 val_69 2008-04-08 12 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 12 +72 val_72 2008-04-08 12 +74 val_74 2008-04-08 11 +74 val_74 2008-04-08 12 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 12 +76 val_76 2008-04-08 12 +77 val_77 2008-04-08 11 +77 val_77 2008-04-08 12 +78 val_78 2008-04-08 11 +78 val_78 2008-04-08 12 +80 val_80 2008-04-08 11 +80 val_80 2008-04-08 12 +82 val_82 2008-04-08 11 +82 val_82 2008-04-08 12 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 12 +83 val_83 2008-04-08 12 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 12 +84 val_84 2008-04-08 12 +85 val_85 2008-04-08 11 +85 val_85 2008-04-08 12 +86 val_86 2008-04-08 11 +86 val_86 2008-04-08 12 +87 val_87 2008-04-08 11 +87 val_87 2008-04-08 12 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +92 val_92 2008-04-08 11 +92 val_92 2008-04-08 12 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 12 +95 val_95 2008-04-08 12 +96 val_96 2008-04-08 11 +96 val_96 2008-04-08 12 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 12 +98 val_98 2008-04-08 12 +100 val_100 2008-04-08 11 +100 val_100 2008-04-08 11 +100 val_100 2008-04-08 12 +100 val_100 2008-04-08 12 +103 val_103 2008-04-08 11 +103 val_103 2008-04-08 11 +103 val_103 2008-04-08 12 +103 val_103 2008-04-08 12 +104 val_104 2008-04-08 11 +104 val_104 2008-04-08 11 +104 val_104 2008-04-08 12 +104 val_104 2008-04-08 12 +105 val_105 2008-04-08 11 +105 val_105 2008-04-08 12 +111 val_111 2008-04-08 11 +111 val_111 2008-04-08 12 +113 val_113 2008-04-08 11 +113 val_113 2008-04-08 11 +113 val_113 2008-04-08 12 +113 val_113 2008-04-08 12 +114 val_114 2008-04-08 11 +114 val_114 2008-04-08 12 +116 val_116 2008-04-08 11 +116 val_116 2008-04-08 12 +118 val_118 2008-04-08 11 +118 val_118 2008-04-08 11 +118 val_118 2008-04-08 12 +118 val_118 2008-04-08 12 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 12 +119 val_119 2008-04-08 12 +119 val_119 2008-04-08 12 +120 val_120 2008-04-08 11 +120 val_120 2008-04-08 11 +120 val_120 2008-04-08 12 +120 val_120 2008-04-08 12 +125 val_125 2008-04-08 11 +125 val_125 2008-04-08 11 +125 val_125 2008-04-08 12 +125 val_125 2008-04-08 12 +126 val_126 2008-04-08 11 +126 val_126 2008-04-08 12 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 12 +128 val_128 2008-04-08 12 +128 val_128 2008-04-08 12 +129 val_129 2008-04-08 11 +129 val_129 2008-04-08 11 +129 val_129 2008-04-08 12 +129 val_129 2008-04-08 12 +131 val_131 2008-04-08 11 +131 val_131 2008-04-08 12 +133 val_133 2008-04-08 11 +133 val_133 2008-04-08 12 +134 val_134 2008-04-08 11 +134 val_134 2008-04-08 11 +134 val_134 2008-04-08 12 +134 val_134 2008-04-08 12 +136 val_136 2008-04-08 11 +136 val_136 2008-04-08 12 +137 val_137 2008-04-08 11 +137 val_137 2008-04-08 11 +137 val_137 2008-04-08 12 +137 val_137 2008-04-08 12 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 12 +138 val_138 2008-04-08 12 +138 val_138 2008-04-08 12 +138 val_138 2008-04-08 12 +143 val_143 2008-04-08 11 +143 val_143 2008-04-08 12 +145 val_145 2008-04-08 11 +145 val_145 2008-04-08 12 +146 val_146 2008-04-08 11 +146 val_146 2008-04-08 11 +146 val_146 2008-04-08 12 +146 val_146 2008-04-08 12 +149 val_149 2008-04-08 11 +149 val_149 2008-04-08 11 +149 val_149 2008-04-08 12 +149 val_149 2008-04-08 12 +150 val_150 2008-04-08 11 +150 val_150 2008-04-08 12 +152 val_152 2008-04-08 11 +152 val_152 2008-04-08 11 +152 val_152 2008-04-08 12 +152 val_152 2008-04-08 12 +153 val_153 2008-04-08 11 +153 val_153 2008-04-08 12 +155 val_155 2008-04-08 11 +155 val_155 2008-04-08 12 +156 val_156 2008-04-08 11 +156 val_156 2008-04-08 12 +157 val_157 2008-04-08 11 +157 val_157 2008-04-08 12 +158 val_158 2008-04-08 11 +158 val_158 2008-04-08 12 +160 val_160 2008-04-08 11 +160 val_160 2008-04-08 12 +162 val_162 2008-04-08 11 +162 val_162 2008-04-08 12 +163 val_163 2008-04-08 11 +163 val_163 2008-04-08 12 +164 val_164 2008-04-08 11 +164 val_164 2008-04-08 11 +164 val_164 2008-04-08 12 +164 val_164 2008-04-08 12 +165 val_165 2008-04-08 11 +165 val_165 2008-04-08 11 +165 val_165 2008-04-08 12 +165 val_165 2008-04-08 12 +166 val_166 2008-04-08 11 +166 val_166 2008-04-08 12 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 12 +167 val_167 2008-04-08 12 +167 val_167 2008-04-08 12 +168 val_168 2008-04-08 11 +168 val_168 2008-04-08 12 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 12 +169 val_169 2008-04-08 12 +169 val_169 2008-04-08 12 +169 val_169 2008-04-08 12 +170 val_170 2008-04-08 11 +170 val_170 2008-04-08 12 +172 val_172 2008-04-08 11 +172 val_172 2008-04-08 11 +172 val_172 2008-04-08 12 +172 val_172 2008-04-08 12 +174 val_174 2008-04-08 11 +174 val_174 2008-04-08 11 +174 val_174 2008-04-08 12 +174 val_174 2008-04-08 12 +175 val_175 2008-04-08 11 +175 val_175 2008-04-08 11 +175 val_175 2008-04-08 12 +175 val_175 2008-04-08 12 +176 val_176 2008-04-08 11 +176 val_176 2008-04-08 11 +176 val_176 2008-04-08 12 +176 val_176 2008-04-08 12 +177 val_177 2008-04-08 11 +177 val_177 2008-04-08 12 +178 val_178 2008-04-08 11 +178 val_178 2008-04-08 12 +179 val_179 2008-04-08 11 +179 val_179 2008-04-08 11 +179 val_179 2008-04-08 12 +179 val_179 2008-04-08 12 +180 val_180 2008-04-08 11 +180 val_180 2008-04-08 12 +181 val_181 2008-04-08 11 +181 val_181 2008-04-08 12 +183 val_183 2008-04-08 11 +183 val_183 2008-04-08 12 +186 val_186 2008-04-08 11 +186 val_186 2008-04-08 12 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 12 +187 val_187 2008-04-08 12 +187 val_187 2008-04-08 12 +189 val_189 2008-04-08 11 +189 val_189 2008-04-08 12 +190 val_190 2008-04-08 11 +190 val_190 2008-04-08 12 +191 val_191 2008-04-08 11 +191 val_191 2008-04-08 11 +191 val_191 2008-04-08 12 +191 val_191 2008-04-08 12 +192 val_192 2008-04-08 11 +192 val_192 2008-04-08 12 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 12 +193 val_193 2008-04-08 12 +193 val_193 2008-04-08 12 +194 val_194 2008-04-08 11 +194 val_194 2008-04-08 12 +195 val_195 2008-04-08 11 +195 val_195 2008-04-08 11 +195 val_195 2008-04-08 12 +195 val_195 2008-04-08 12 +196 val_196 2008-04-08 11 +196 val_196 2008-04-08 12 +197 val_197 2008-04-08 11 +197 val_197 2008-04-08 11 +197 val_197 2008-04-08 12 +197 val_197 2008-04-08 12 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 12 +199 val_199 2008-04-08 12 +199 val_199 2008-04-08 12 +200 val_200 2008-04-08 11 +200 val_200 2008-04-08 11 +200 val_200 2008-04-08 12 +200 val_200 2008-04-08 12 +201 val_201 2008-04-08 11 +201 val_201 2008-04-08 12 +202 val_202 2008-04-08 11 +202 val_202 2008-04-08 12 +203 val_203 2008-04-08 11 +203 val_203 2008-04-08 11 +203 val_203 2008-04-08 12 +203 val_203 2008-04-08 12 +205 val_205 2008-04-08 11 +205 val_205 2008-04-08 11 +205 val_205 2008-04-08 12 +205 val_205 2008-04-08 12 +207 val_207 2008-04-08 11 +207 val_207 2008-04-08 11 +207 val_207 2008-04-08 12 +207 val_207 2008-04-08 12 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 12 +208 val_208 2008-04-08 12 +208 val_208 2008-04-08 12 +209 val_209 2008-04-08 11 +209 val_209 2008-04-08 11 +209 val_209 2008-04-08 12 +209 val_209 2008-04-08 12 +213 val_213 2008-04-08 11 +213 val_213 2008-04-08 11 +213 val_213 2008-04-08 12 +213 val_213 2008-04-08 12 +214 val_214 2008-04-08 11 +214 val_214 2008-04-08 12 +216 val_216 2008-04-08 11 +216 val_216 2008-04-08 11 +216 val_216 2008-04-08 12 +216 val_216 2008-04-08 12 +217 val_217 2008-04-08 11 +217 val_217 2008-04-08 11 +217 val_217 2008-04-08 12 +217 val_217 2008-04-08 12 +218 val_218 2008-04-08 11 +218 val_218 2008-04-08 12 +219 val_219 2008-04-08 11 +219 val_219 2008-04-08 11 +219 val_219 2008-04-08 12 +219 val_219 2008-04-08 12 +221 val_221 2008-04-08 11 +221 val_221 2008-04-08 11 +221 val_221 2008-04-08 12 +221 val_221 2008-04-08 12 +222 val_222 2008-04-08 11 +222 val_222 2008-04-08 12 +223 val_223 2008-04-08 11 +223 val_223 2008-04-08 11 +223 val_223 2008-04-08 12 +223 val_223 2008-04-08 12 +224 val_224 2008-04-08 11 +224 val_224 2008-04-08 11 +224 val_224 2008-04-08 12 +224 val_224 2008-04-08 12 +226 val_226 2008-04-08 11 +226 val_226 2008-04-08 12 +228 val_228 2008-04-08 11 +228 val_228 2008-04-08 12 +229 val_229 2008-04-08 11 +229 val_229 2008-04-08 11 +229 val_229 2008-04-08 12 +229 val_229 2008-04-08 12 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 12 +230 val_230 2008-04-08 12 +230 val_230 2008-04-08 12 +230 val_230 2008-04-08 12 +230 val_230 2008-04-08 12 +233 val_233 2008-04-08 11 +233 val_233 2008-04-08 11 +233 val_233 2008-04-08 12 +233 val_233 2008-04-08 12 +235 val_235 2008-04-08 11 +235 val_235 2008-04-08 12 +237 val_237 2008-04-08 11 +237 val_237 2008-04-08 11 +237 val_237 2008-04-08 12 +237 val_237 2008-04-08 12 +238 val_238 2008-04-08 11 +238 val_238 2008-04-08 11 +238 val_238 2008-04-08 12 +238 val_238 2008-04-08 12 +239 val_239 2008-04-08 11 +239 val_239 2008-04-08 11 +239 val_239 2008-04-08 12 +239 val_239 2008-04-08 12 +241 val_241 2008-04-08 11 +241 val_241 2008-04-08 12 +242 val_242 2008-04-08 11 +242 val_242 2008-04-08 11 +242 val_242 2008-04-08 12 +242 val_242 2008-04-08 12 +244 val_244 2008-04-08 11 +244 val_244 2008-04-08 12 +247 val_247 2008-04-08 11 +247 val_247 2008-04-08 12 +248 val_248 2008-04-08 11 +248 val_248 2008-04-08 12 +249 val_249 2008-04-08 11 +249 val_249 2008-04-08 12 +252 val_252 2008-04-08 11 +252 val_252 2008-04-08 12 +255 val_255 2008-04-08 11 +255 val_255 2008-04-08 11 +255 val_255 2008-04-08 12 +255 val_255 2008-04-08 12 +256 val_256 2008-04-08 11 +256 val_256 2008-04-08 11 +256 val_256 2008-04-08 12 +256 val_256 2008-04-08 12 +257 val_257 2008-04-08 11 +257 val_257 2008-04-08 12 +258 val_258 2008-04-08 11 +258 val_258 2008-04-08 12 +260 val_260 2008-04-08 11 +260 val_260 2008-04-08 12 +262 val_262 2008-04-08 11 +262 val_262 2008-04-08 12 +263 val_263 2008-04-08 11 +263 val_263 2008-04-08 12 +265 val_265 2008-04-08 11 +265 val_265 2008-04-08 11 +265 val_265 2008-04-08 12 +265 val_265 2008-04-08 12 +266 val_266 2008-04-08 11 +266 val_266 2008-04-08 12 +272 val_272 2008-04-08 11 +272 val_272 2008-04-08 11 +272 val_272 2008-04-08 12 +272 val_272 2008-04-08 12 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 12 +273 val_273 2008-04-08 12 +273 val_273 2008-04-08 12 +274 val_274 2008-04-08 11 +274 val_274 2008-04-08 12 +275 val_275 2008-04-08 11 +275 val_275 2008-04-08 12 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 12 +277 val_277 2008-04-08 12 +277 val_277 2008-04-08 12 +277 val_277 2008-04-08 12 +278 val_278 2008-04-08 11 +278 val_278 2008-04-08 11 +278 val_278 2008-04-08 12 +278 val_278 2008-04-08 12 +280 val_280 2008-04-08 11 +280 val_280 2008-04-08 11 +280 val_280 2008-04-08 12 +280 val_280 2008-04-08 12 +281 val_281 2008-04-08 11 +281 val_281 2008-04-08 11 +281 val_281 2008-04-08 12 +281 val_281 2008-04-08 12 +282 val_282 2008-04-08 11 +282 val_282 2008-04-08 11 +282 val_282 2008-04-08 12 +282 val_282 2008-04-08 12 +283 val_283 2008-04-08 11 +283 val_283 2008-04-08 12 +284 val_284 2008-04-08 11 +284 val_284 2008-04-08 12 +285 val_285 2008-04-08 11 +285 val_285 2008-04-08 12 +286 val_286 2008-04-08 11 +286 val_286 2008-04-08 12 +287 val_287 2008-04-08 11 +287 val_287 2008-04-08 12 +288 val_288 2008-04-08 11 +288 val_288 2008-04-08 11 +288 val_288 2008-04-08 12 +288 val_288 2008-04-08 12 +289 val_289 2008-04-08 11 +289 val_289 2008-04-08 12 +291 val_291 2008-04-08 11 +291 val_291 2008-04-08 12 +292 val_292 2008-04-08 11 +292 val_292 2008-04-08 12 +296 val_296 2008-04-08 11 +296 val_296 2008-04-08 12 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 12 +298 val_298 2008-04-08 12 +298 val_298 2008-04-08 12 +302 val_302 2008-04-08 11 +302 val_302 2008-04-08 12 +305 val_305 2008-04-08 11 +305 val_305 2008-04-08 12 +306 val_306 2008-04-08 11 +306 val_306 2008-04-08 12 +307 val_307 2008-04-08 11 +307 val_307 2008-04-08 11 +307 val_307 2008-04-08 12 +307 val_307 2008-04-08 12 +308 val_308 2008-04-08 11 +308 val_308 2008-04-08 12 +309 val_309 2008-04-08 11 +309 val_309 2008-04-08 11 +309 val_309 2008-04-08 12 +309 val_309 2008-04-08 12 +310 val_310 2008-04-08 11 +310 val_310 2008-04-08 12 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 12 +311 val_311 2008-04-08 12 +311 val_311 2008-04-08 12 +315 val_315 2008-04-08 11 +315 val_315 2008-04-08 12 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 12 +316 val_316 2008-04-08 12 +316 val_316 2008-04-08 12 +317 val_317 2008-04-08 11 +317 val_317 2008-04-08 11 +317 val_317 2008-04-08 12 +317 val_317 2008-04-08 12 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +321 val_321 2008-04-08 11 +321 val_321 2008-04-08 11 +321 val_321 2008-04-08 12 +321 val_321 2008-04-08 12 +322 val_322 2008-04-08 11 +322 val_322 2008-04-08 11 +322 val_322 2008-04-08 12 +322 val_322 2008-04-08 12 +323 val_323 2008-04-08 11 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 11 +325 val_325 2008-04-08 11 +325 val_325 2008-04-08 12 +325 val_325 2008-04-08 12 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 12 +327 val_327 2008-04-08 12 +327 val_327 2008-04-08 12 +331 val_331 2008-04-08 11 +331 val_331 2008-04-08 11 +331 val_331 2008-04-08 12 +331 val_331 2008-04-08 12 +332 val_332 2008-04-08 11 +332 val_332 2008-04-08 12 +333 val_333 2008-04-08 11 +333 val_333 2008-04-08 11 +333 val_333 2008-04-08 12 +333 val_333 2008-04-08 12 +335 val_335 2008-04-08 11 +335 val_335 2008-04-08 12 +336 val_336 2008-04-08 11 +336 val_336 2008-04-08 12 +338 val_338 2008-04-08 11 +338 val_338 2008-04-08 12 +339 val_339 2008-04-08 11 +339 val_339 2008-04-08 12 +341 val_341 2008-04-08 11 +341 val_341 2008-04-08 12 +342 val_342 2008-04-08 11 +342 val_342 2008-04-08 11 +342 val_342 2008-04-08 12 +342 val_342 2008-04-08 12 +344 val_344 2008-04-08 11 +344 val_344 2008-04-08 11 +344 val_344 2008-04-08 12 +344 val_344 2008-04-08 12 +345 val_345 2008-04-08 11 +345 val_345 2008-04-08 12 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 12 +348 val_348 2008-04-08 12 +348 val_348 2008-04-08 12 +348 val_348 2008-04-08 12 +348 val_348 2008-04-08 12 +351 val_351 2008-04-08 11 +351 val_351 2008-04-08 12 +353 val_353 2008-04-08 11 +353 val_353 2008-04-08 11 +353 val_353 2008-04-08 12 +353 val_353 2008-04-08 12 +356 val_356 2008-04-08 11 +356 val_356 2008-04-08 12 +360 val_360 2008-04-08 11 +360 val_360 2008-04-08 12 +362 val_362 2008-04-08 11 +362 val_362 2008-04-08 12 +364 val_364 2008-04-08 11 +364 val_364 2008-04-08 12 +365 val_365 2008-04-08 11 +365 val_365 2008-04-08 12 +366 val_366 2008-04-08 11 +366 val_366 2008-04-08 12 +367 val_367 2008-04-08 11 +367 val_367 2008-04-08 11 +367 val_367 2008-04-08 12 +367 val_367 2008-04-08 12 +368 val_368 2008-04-08 11 +368 val_368 2008-04-08 12 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 12 +369 val_369 2008-04-08 12 +369 val_369 2008-04-08 12 +373 val_373 2008-04-08 11 +373 val_373 2008-04-08 12 +374 val_374 2008-04-08 11 +374 val_374 2008-04-08 12 +375 val_375 2008-04-08 11 +375 val_375 2008-04-08 12 +377 val_377 2008-04-08 11 +377 val_377 2008-04-08 12 +378 val_378 2008-04-08 11 +378 val_378 2008-04-08 12 +379 val_379 2008-04-08 11 +379 val_379 2008-04-08 12 +382 val_382 2008-04-08 11 +382 val_382 2008-04-08 11 +382 val_382 2008-04-08 12 +382 val_382 2008-04-08 12 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 12 +384 val_384 2008-04-08 12 +384 val_384 2008-04-08 12 +386 val_386 2008-04-08 11 +386 val_386 2008-04-08 12 +389 val_389 2008-04-08 11 +389 val_389 2008-04-08 12 +392 val_392 2008-04-08 11 +392 val_392 2008-04-08 12 +393 val_393 2008-04-08 11 +393 val_393 2008-04-08 12 +394 val_394 2008-04-08 11 +394 val_394 2008-04-08 12 +395 val_395 2008-04-08 11 +395 val_395 2008-04-08 11 +395 val_395 2008-04-08 12 +395 val_395 2008-04-08 12 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 12 +396 val_396 2008-04-08 12 +396 val_396 2008-04-08 12 +397 val_397 2008-04-08 11 +397 val_397 2008-04-08 11 +397 val_397 2008-04-08 12 +397 val_397 2008-04-08 12 +399 val_399 2008-04-08 11 +399 val_399 2008-04-08 11 +399 val_399 2008-04-08 12 +399 val_399 2008-04-08 12 +400 val_400 2008-04-08 11 +400 val_400 2008-04-08 12 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 12 +401 val_401 2008-04-08 12 +401 val_401 2008-04-08 12 +401 val_401 2008-04-08 12 +401 val_401 2008-04-08 12 +402 val_402 2008-04-08 11 +402 val_402 2008-04-08 12 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 12 +403 val_403 2008-04-08 12 +403 val_403 2008-04-08 12 +404 val_404 2008-04-08 11 +404 val_404 2008-04-08 11 +404 val_404 2008-04-08 12 +404 val_404 2008-04-08 12 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 12 +406 val_406 2008-04-08 12 +406 val_406 2008-04-08 12 +406 val_406 2008-04-08 12 +407 val_407 2008-04-08 11 +407 val_407 2008-04-08 12 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 12 +409 val_409 2008-04-08 12 +409 val_409 2008-04-08 12 +411 val_411 2008-04-08 11 +411 val_411 2008-04-08 12 +413 val_413 2008-04-08 11 +413 val_413 2008-04-08 11 +413 val_413 2008-04-08 12 +413 val_413 2008-04-08 12 +414 val_414 2008-04-08 11 +414 val_414 2008-04-08 11 +414 val_414 2008-04-08 12 +414 val_414 2008-04-08 12 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 12 +417 val_417 2008-04-08 12 +417 val_417 2008-04-08 12 +418 val_418 2008-04-08 11 +418 val_418 2008-04-08 12 +419 val_419 2008-04-08 11 +419 val_419 2008-04-08 12 +421 val_421 2008-04-08 11 +421 val_421 2008-04-08 12 +424 val_424 2008-04-08 11 +424 val_424 2008-04-08 11 +424 val_424 2008-04-08 12 +424 val_424 2008-04-08 12 +427 val_427 2008-04-08 11 +427 val_427 2008-04-08 12 +429 val_429 2008-04-08 11 +429 val_429 2008-04-08 11 +429 val_429 2008-04-08 12 +429 val_429 2008-04-08 12 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 12 +430 val_430 2008-04-08 12 +430 val_430 2008-04-08 12 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 12 +431 val_431 2008-04-08 12 +431 val_431 2008-04-08 12 +432 val_432 2008-04-08 11 +432 val_432 2008-04-08 12 +435 val_435 2008-04-08 11 +435 val_435 2008-04-08 12 +436 val_436 2008-04-08 11 +436 val_436 2008-04-08 12 +437 val_437 2008-04-08 11 +437 val_437 2008-04-08 12 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 12 +438 val_438 2008-04-08 12 +438 val_438 2008-04-08 12 +439 val_439 2008-04-08 11 +439 val_439 2008-04-08 11 +439 val_439 2008-04-08 12 +439 val_439 2008-04-08 12 +443 val_443 2008-04-08 11 +443 val_443 2008-04-08 12 +444 val_444 2008-04-08 11 +444 val_444 2008-04-08 12 +446 val_446 2008-04-08 11 +446 val_446 2008-04-08 12 +448 val_448 2008-04-08 11 +448 val_448 2008-04-08 12 +449 val_449 2008-04-08 11 +449 val_449 2008-04-08 12 +452 val_452 2008-04-08 11 +452 val_452 2008-04-08 12 +453 val_453 2008-04-08 11 +453 val_453 2008-04-08 12 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 12 +454 val_454 2008-04-08 12 +454 val_454 2008-04-08 12 +455 val_455 2008-04-08 11 +455 val_455 2008-04-08 12 +457 val_457 2008-04-08 11 +457 val_457 2008-04-08 12 +458 val_458 2008-04-08 11 +458 val_458 2008-04-08 11 +458 val_458 2008-04-08 12 +458 val_458 2008-04-08 12 +459 val_459 2008-04-08 11 +459 val_459 2008-04-08 11 +459 val_459 2008-04-08 12 +459 val_459 2008-04-08 12 +460 val_460 2008-04-08 11 +460 val_460 2008-04-08 12 +462 val_462 2008-04-08 11 +462 val_462 2008-04-08 11 +462 val_462 2008-04-08 12 +462 val_462 2008-04-08 12 +463 val_463 2008-04-08 11 +463 val_463 2008-04-08 11 +463 val_463 2008-04-08 12 +463 val_463 2008-04-08 12 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 12 +466 val_466 2008-04-08 12 +466 val_466 2008-04-08 12 +467 val_467 2008-04-08 11 +467 val_467 2008-04-08 12 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 12 +468 val_468 2008-04-08 12 +468 val_468 2008-04-08 12 +468 val_468 2008-04-08 12 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 12 +469 val_469 2008-04-08 12 +469 val_469 2008-04-08 12 +469 val_469 2008-04-08 12 +469 val_469 2008-04-08 12 +470 val_470 2008-04-08 11 +470 val_470 2008-04-08 12 +472 val_472 2008-04-08 11 +472 val_472 2008-04-08 12 +475 val_475 2008-04-08 11 +475 val_475 2008-04-08 12 +477 val_477 2008-04-08 11 +477 val_477 2008-04-08 12 +478 val_478 2008-04-08 11 +478 val_478 2008-04-08 11 +478 val_478 2008-04-08 12 +478 val_478 2008-04-08 12 +479 val_479 2008-04-08 11 +479 val_479 2008-04-08 12 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 12 +480 val_480 2008-04-08 12 +480 val_480 2008-04-08 12 +481 val_481 2008-04-08 11 +481 val_481 2008-04-08 12 +482 val_482 2008-04-08 11 +482 val_482 2008-04-08 12 +483 val_483 2008-04-08 11 +483 val_483 2008-04-08 12 +484 val_484 2008-04-08 11 +484 val_484 2008-04-08 12 +485 val_485 2008-04-08 11 +485 val_485 2008-04-08 12 +487 val_487 2008-04-08 11 +487 val_487 2008-04-08 12 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 12 +489 val_489 2008-04-08 12 +489 val_489 2008-04-08 12 +489 val_489 2008-04-08 12 +490 val_490 2008-04-08 11 +490 val_490 2008-04-08 12 +491 val_491 2008-04-08 11 +491 val_491 2008-04-08 12 +492 val_492 2008-04-08 11 +492 val_492 2008-04-08 11 +492 val_492 2008-04-08 12 +492 val_492 2008-04-08 12 +493 val_493 2008-04-08 11 +493 val_493 2008-04-08 12 +494 val_494 2008-04-08 11 +494 val_494 2008-04-08 12 +495 val_495 2008-04-08 11 +495 val_495 2008-04-08 12 +496 val_496 2008-04-08 11 +496 val_496 2008-04-08 12 +497 val_497 2008-04-08 11 +497 val_497 2008-04-08 12 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 12 +498 val_498 2008-04-08 12 +498 val_498 2008-04-08 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testsequencefile-0-68975193b30cb34102b380e647d8d5f4 b/sql/hive/src/test/resources/golden/input_testsequencefile-0-68975193b30cb34102b380e647d8d5f4 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testsequencefile-0-68975193b30cb34102b380e647d8d5f4 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testsequencefile-1-1c0f3be2d837dee49312e0a80440447e b/sql/hive/src/test/resources/golden/input_testsequencefile-1-1c0f3be2d837dee49312e0a80440447e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testsequencefile-1-1c0f3be2d837dee49312e0a80440447e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testsequencefile-2-186e4009966778e765b18d6476cf5abf b/sql/hive/src/test/resources/golden/input_testsequencefile-2-186e4009966778e765b18d6476cf5abf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testsequencefile-3-d0fade04b658b0dc0caf3fe4b2d5d432 b/sql/hive/src/test/resources/golden/input_testsequencefile-3-d0fade04b658b0dc0caf3fe4b2d5d432 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testsequencefile-4-8ebe479eca517e80bf0348a1b3a89f42 b/sql/hive/src/test/resources/golden/input_testsequencefile-4-8ebe479eca517e80bf0348a1b3a89f42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testsequencefile-5-3708198aac609695b22e19e89306034c b/sql/hive/src/test/resources/golden/input_testsequencefile-5-3708198aac609695b22e19e89306034c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testsequencefile-5-3708198aac609695b22e19e89306034c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testsequencefile-6-6716fa5aec125f0f8e9520e4318f71b9 b/sql/hive/src/test/resources/golden/input_testsequencefile-6-6716fa5aec125f0f8e9520e4318f71b9 new file mode 100644 index 0000000000000..c5c8d29fdd13e --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testsequencefile-6-6716fa5aec125f0f8e9520e4318f71b9 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testxpath-0-3c8a098a179d578119f75e5d7b214bd5 b/sql/hive/src/test/resources/golden/input_testxpath-0-3c8a098a179d578119f75e5d7b214bd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath-1-ac18d29e8bd8aeed00296992edc17c0f b/sql/hive/src/test/resources/golden/input_testxpath-1-ac18d29e8bd8aeed00296992edc17c0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath-2-86b0a60940ffc4bdaafcc4f5a8c0972 b/sql/hive/src/test/resources/golden/input_testxpath-2-86b0a60940ffc4bdaafcc4f5a8c0972 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input_testxpath-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..c1a6abba038e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testxpath-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,11 @@ +0 0 NULL +2 1 NULL +4 8 value_2 +6 27 NULL +8 64 NULL +10 125 NULL +12 216 NULL +14 343 NULL +16 512 NULL +18 729 NULL +NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testxpath2-0-a1baa22f15f745a2dfe27ce52d363704 b/sql/hive/src/test/resources/golden/input_testxpath2-0-a1baa22f15f745a2dfe27ce52d363704 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath2-1-27b77465d23aebf66a50c8074a75b755 b/sql/hive/src/test/resources/golden/input_testxpath2-1-27b77465d23aebf66a50c8074a75b755 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath2-2-6b8b2daaeaa985a7de0e377ffc4436dd b/sql/hive/src/test/resources/golden/input_testxpath2-2-6b8b2daaeaa985a7de0e377ffc4436dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath2-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/input_testxpath2-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..51645b2a07a39 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testxpath2-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,10 @@ +3 1 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testxpath3-0-f05134d54292acd1f2067027889a4fac b/sql/hive/src/test/resources/golden/input_testxpath3-0-f05134d54292acd1f2067027889a4fac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath3-1-807b097ac2f785f774db03069ebbde11 b/sql/hive/src/test/resources/golden/input_testxpath3-1-807b097ac2f785f774db03069ebbde11 new file mode 100644 index 0000000000000..373a573714f4e --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testxpath3-1-807b097ac2f785f774db03069ebbde11 @@ -0,0 +1,11 @@ +NULL [0] +NULL [1] +NULL [4] +NULL [9] +NULL [16] +NULL [25] +NULL [36] +NULL [49] +NULL [64] +value_9 [81] +NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testxpath4-0-73819ea1a7c0653a61652b3766afb003 b/sql/hive/src/test/resources/golden/input_testxpath4-0-73819ea1a7c0653a61652b3766afb003 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testxpath4-0-73819ea1a7c0653a61652b3766afb003 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testxpath4-1-f746888141a38ba707fad01d86d41960 b/sql/hive/src/test/resources/golden/input_testxpath4-1-f746888141a38ba707fad01d86d41960 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath4-2-e4beab1294dcac60ff36e4f2561810b9 b/sql/hive/src/test/resources/golden/input_testxpath4-2-e4beab1294dcac60ff36e4f2561810b9 new file mode 100644 index 0000000000000..7490d2d44d71a --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testxpath4-2-e4beab1294dcac60ff36e4f2561810b9 @@ -0,0 +1,10 @@ +NULL [0] +NULL [1] +NULL [4] +NULL [9] +NULL [16] +NULL [25] +NULL [36] +NULL [49] +NULL [64] +value_9 [81] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testxpath4-3-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/input_testxpath4-3-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testxpath4-3-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/input_testxpath4-4-f746888141a38ba707fad01d86d41960 b/sql/hive/src/test/resources/golden/input_testxpath4-4-f746888141a38ba707fad01d86d41960 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/input_testxpath4-5-e4beab1294dcac60ff36e4f2561810b9 b/sql/hive/src/test/resources/golden/input_testxpath4-5-e4beab1294dcac60ff36e4f2561810b9 new file mode 100644 index 0000000000000..7490d2d44d71a --- /dev/null +++ b/sql/hive/src/test/resources/golden/input_testxpath4-5-e4beab1294dcac60ff36e4f2561810b9 @@ -0,0 +1,10 @@ +NULL [0] +NULL [1] +NULL [4] +NULL [9] +NULL [16] +NULL [25] +NULL [36] +NULL [49] +NULL [64] +value_9 [81] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl4-0-2f5570984afde1a30ff2f794d63d6ab3 b/sql/hive/src/test/resources/golden/inputddl4-0-2f5570984afde1a30ff2f794d63d6ab3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl4-1-dd94576788fa50ebcf950cdf837fbcf6 b/sql/hive/src/test/resources/golden/inputddl4-1-dd94576788fa50ebcf950cdf837fbcf6 new file mode 100644 index 0000000000000..d5a489a9a5ed5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl4-1-dd94576788fa50ebcf950cdf837fbcf6 @@ -0,0 +1,15 @@ +viewtime string None +userid int None +page_url string None +referrer_url string None +friends array None +properties map None +ip string IP Address of the User +ds string None +country string None + +# Partition Information +# col_name data_type comment + +ds string None +country string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl4-2-7fdf00ff5c22ae284728e0f035396865 b/sql/hive/src/test/resources/golden/inputddl4-2-7fdf00ff5c22ae284728e0f035396865 new file mode 100644 index 0000000000000..e0bedb0512cfc --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl4-2-7fdf00ff5c22ae284728e0f035396865 @@ -0,0 +1,17 @@ +viewtime string None +userid int None +page_url string None +referrer_url string None +friends array None +properties map None +ip string IP Address of the User +ds string None +country string None + +# Partition Information +# col_name data_type comment + +ds string None +country string None + +Detailed Table Information Table(tableName:inputddl4, dbName:default, owner:marmbrus, createTime:1389731336, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:viewtime, type:string, comment:null), FieldSchema(name:userid, type:int, comment:null), FieldSchema(name:page_url, type:string, comment:null), FieldSchema(name:referrer_url, type:string, comment:null), FieldSchema(name:friends, type:array, comment:null), FieldSchema(name:properties, type:map, comment:null), FieldSchema(name:ip, type:string, comment:IP Address of the User), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:country, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/inputddl4, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:32, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[userid], sortCols:[Order(col:viewtime, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:country, type:string, comment:null)], parameters:{transient_lastDdlTime=1389731336, comment=This is the page view table}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl6-0-baa412d895c4fc57d40b338944a0ecd8 b/sql/hive/src/test/resources/golden/inputddl6-0-baa412d895c4fc57d40b338944a0ecd8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl6-1-8b96b4fba4cf54c399a008d0f3be1edf b/sql/hive/src/test/resources/golden/inputddl6-1-8b96b4fba4cf54c399a008d0f3be1edf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl6-2-c4c902d39d8dd9568f1d95ac3a8e5c6c b/sql/hive/src/test/resources/golden/inputddl6-2-c4c902d39d8dd9568f1d95ac3a8e5c6c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl6-3-e81b962986706e1c16f059b407e3f05c b/sql/hive/src/test/resources/golden/inputddl6-3-e81b962986706e1c16f059b407e3f05c new file mode 100644 index 0000000000000..f1427896e8330 --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl6-3-e81b962986706e1c16f059b407e3f05c @@ -0,0 +1,10 @@ +key string None +value string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Table Information Table(tableName:inputddl6, dbName:default, owner:marmbrus, createTime:1389731342, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/inputddl6, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null)], parameters:{numPartitions=2, numFiles=2, transient_lastDdlTime=1389731342, numRows=0, totalSize=11624, rawDataSize=0}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl6-4-5855e2998e26f63e927854afa86c1f03 b/sql/hive/src/test/resources/golden/inputddl6-4-5855e2998e26f63e927854afa86c1f03 new file mode 100644 index 0000000000000..822897217e867 --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl6-4-5855e2998e26f63e927854afa86c1f03 @@ -0,0 +1,10 @@ +key string None +value string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Partition Information Partition(values:[2008-04-08], dbName:default, tableName:inputddl6, createTime:1389731342, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/inputddl6/ds=2008-04-08, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1389731342, numRows=0, totalSize=5812, rawDataSize=0}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl6-5-47e6a8d33932cb014830812e1f7b1f94 b/sql/hive/src/test/resources/golden/inputddl6-5-47e6a8d33932cb014830812e1f7b1f94 new file mode 100644 index 0000000000000..94bcaaee2408c --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl6-5-47e6a8d33932cb014830812e1f7b1f94 @@ -0,0 +1,2 @@ +ds=2008-04-08 +ds=2008-04-09 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl6-6-6eac06a114fe33c1278d47ad8652fe68 b/sql/hive/src/test/resources/golden/inputddl6-6-6eac06a114fe33c1278d47ad8652fe68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl6-7-47e6a8d33932cb014830812e1f7b1f94 b/sql/hive/src/test/resources/golden/inputddl6-7-47e6a8d33932cb014830812e1f7b1f94 new file mode 100644 index 0000000000000..b12a9f82cd90a --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl6-7-47e6a8d33932cb014830812e1f7b1f94 @@ -0,0 +1 @@ +ds=2008-04-09 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl6-8-f9e6ee98eb448f9ab68fa77bea027aa5 b/sql/hive/src/test/resources/golden/inputddl6-8-f9e6ee98eb448f9ab68fa77bea027aa5 new file mode 100644 index 0000000000000..a6c282ab6f573 --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl6-8-f9e6ee98eb448f9ab68fa77bea027aa5 @@ -0,0 +1,19 @@ +ABSTRACT SYNTAX TREE: + (TOK_DESCTABLE (TOK_TABTYPE INPUTDDL6 (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-09'))) EXTENDED) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Describe Table Operator: + Describe Table + partition: + ds 2008-04-09 + table: INPUTDDL6 + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/inputddl6-9-2164df0b7eab73cd8c4a553a762028e1 b/sql/hive/src/test/resources/golden/inputddl6-9-2164df0b7eab73cd8c4a553a762028e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl7-0-6a30e2d3fc23ec0c18513265bd8c987f b/sql/hive/src/test/resources/golden/inputddl7-0-6a30e2d3fc23ec0c18513265bd8c987f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl7-1-7b46b8baf9c7628da9c190c96b917057 b/sql/hive/src/test/resources/golden/inputddl7-1-7b46b8baf9c7628da9c190c96b917057 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl7-10-4eec8cef401b6bba00457dfbec58cc2d b/sql/hive/src/test/resources/golden/inputddl7-10-4eec8cef401b6bba00457dfbec58cc2d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl7-11-6e1f1709d770ed76aee6ff5f76856e63 b/sql/hive/src/test/resources/golden/inputddl7-11-6e1f1709d770ed76aee6ff5f76856e63 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl7-11-6e1f1709d770ed76aee6ff5f76856e63 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl7-12-2c56d4a781242b0521f82bb0d2cd277 b/sql/hive/src/test/resources/golden/inputddl7-12-2c56d4a781242b0521f82bb0d2cd277 new file mode 100644 index 0000000000000..ef633a4aa09e0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl7-12-2c56d4a781242b0521f82bb0d2cd277 @@ -0,0 +1,3 @@ +name string None + +Detailed Table Information Table(tableName:t1, dbName:default, owner:marmbrus, createTime:1389731349, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:name, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/t1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{numPartitions=0, numFiles=1, transient_lastDdlTime=1389731349, numRows=0, totalSize=5812, rawDataSize=0}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl7-13-45059a21c202b4658285738ee62a018a b/sql/hive/src/test/resources/golden/inputddl7-13-45059a21c202b4658285738ee62a018a new file mode 100644 index 0000000000000..86d5d8a125fbe --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl7-13-45059a21c202b4658285738ee62a018a @@ -0,0 +1,3 @@ +name string None + +Detailed Table Information Table(tableName:t2, dbName:default, owner:marmbrus, createTime:1389731362, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:name, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/t2, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{numPartitions=0, numFiles=1, transient_lastDdlTime=1389731362, numRows=0, totalSize=10508, rawDataSize=0}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl7-14-30c87bc734c2afa4fea0facdf7279145 b/sql/hive/src/test/resources/golden/inputddl7-14-30c87bc734c2afa4fea0facdf7279145 new file mode 100644 index 0000000000000..b14d78536150c --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl7-14-30c87bc734c2afa4fea0facdf7279145 @@ -0,0 +1,9 @@ +name string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Partition Information Partition(values:[2008-04-09], dbName:default, tableName:t3, createTime:1389731375, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:name, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/t3/ds=2008-04-09, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1389731375, numRows=0, totalSize=5812, rawDataSize=0}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl7-15-fed9badc255db68c3ed1cd1446d9fbe b/sql/hive/src/test/resources/golden/inputddl7-15-fed9badc255db68c3ed1cd1446d9fbe new file mode 100644 index 0000000000000..e476a7fa3959b --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl7-15-fed9badc255db68c3ed1cd1446d9fbe @@ -0,0 +1,9 @@ +name string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Partition Information Partition(values:[2008-04-09], dbName:default, tableName:t4, createTime:1389731388, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:name, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/t4/ds=2008-04-09, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1389731388, numRows=0, totalSize=10508, rawDataSize=0}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl7-2-7bc7f4f4a29dc0721ad4bb6fb9b64291 b/sql/hive/src/test/resources/golden/inputddl7-2-7bc7f4f4a29dc0721ad4bb6fb9b64291 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl7-2-7bc7f4f4a29dc0721ad4bb6fb9b64291 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl7-3-b44cf61cbfeb5a4ddf5acbff1429b466 b/sql/hive/src/test/resources/golden/inputddl7-3-b44cf61cbfeb5a4ddf5acbff1429b466 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl7-4-7513658e8abe9d9b72c7219321c56fa9 b/sql/hive/src/test/resources/golden/inputddl7-4-7513658e8abe9d9b72c7219321c56fa9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl7-5-e3c5d1248a06e6b33b15fc6ec8c67f68 b/sql/hive/src/test/resources/golden/inputddl7-5-e3c5d1248a06e6b33b15fc6ec8c67f68 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl7-5-e3c5d1248a06e6b33b15fc6ec8c67f68 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl7-6-a590512af0ed021d33e2d71b7932a20a b/sql/hive/src/test/resources/golden/inputddl7-6-a590512af0ed021d33e2d71b7932a20a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl7-7-48640fff8428a0dc6e90a7243adaf730 b/sql/hive/src/test/resources/golden/inputddl7-7-48640fff8428a0dc6e90a7243adaf730 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl7-8-495dc87b0bde752c890f213ff9531508 b/sql/hive/src/test/resources/golden/inputddl7-8-495dc87b0bde752c890f213ff9531508 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl7-8-495dc87b0bde752c890f213ff9531508 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/inputddl7-9-c943e781fb448aea5467251ee208fbac b/sql/hive/src/test/resources/golden/inputddl7-9-c943e781fb448aea5467251ee208fbac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl8-0-6de6ae6cbb97de8a2d5674b59a154cf3 b/sql/hive/src/test/resources/golden/inputddl8-0-6de6ae6cbb97de8a2d5674b59a154cf3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/inputddl8-1-c70f2d2544633366b76b92bcff18e995 b/sql/hive/src/test/resources/golden/inputddl8-1-c70f2d2544633366b76b92bcff18e995 new file mode 100644 index 0000000000000..66e6efceed3dc --- /dev/null +++ b/sql/hive/src/test/resources/golden/inputddl8-1-c70f2d2544633366b76b92bcff18e995 @@ -0,0 +1,16 @@ +aint int from deserializer +astring string from deserializer +lint array from deserializer +lstring array from deserializer +lintstring array> from deserializer +mstringstring map from deserializer +ds string None +country string None + +# Partition Information +# col_name data_type comment + +ds string None +country string None + +Detailed Table Information Table(tableName:inputddl8, dbName:default, owner:marmbrus, createTime:1389731407, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7216708901107607121/inputddl8, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:32, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer, parameters:{serialization.class=org.apache.hadoop.hive.serde2.thrift.test.Complex, serialization.format=com.facebook.thrift.protocol.TBinaryProtocol}), bucketCols:[aint], sortCols:[Order(col:lint, order:1)], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:country, type:string, comment:null)], parameters:{transient_lastDdlTime=1389731407, comment=This is a thrift based table}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert into and insert overwrite-0-2e2de36571343c0ebaf02c0c0c61ba8c b/sql/hive/src/test/resources/golden/insert into and insert overwrite-0-2e2de36571343c0ebaf02c0c0c61ba8c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert into and insert overwrite-1-548d5a45ef20e066df145944dce3415a b/sql/hive/src/test/resources/golden/insert into and insert overwrite-1-548d5a45ef20e066df145944dce3415a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert into and insert overwrite-2-77baf70da8adf8b4b82d076fee937fe1 b/sql/hive/src/test/resources/golden/insert into and insert overwrite-2-77baf70da8adf8b4b82d076fee937fe1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert into and insert overwrite-3-b9002c1d71895be765575b62656d1928 b/sql/hive/src/test/resources/golden/insert into and insert overwrite-3-b9002c1d71895be765575b62656d1928 new file mode 100644 index 0000000000000..813f70020af3e --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert into and insert overwrite-3-b9002c1d71895be765575b62656d1928 @@ -0,0 +1,525 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 +238 val_238 +NULL +311 val_311 +NULL val_27 +NULL val_165 +NULL val_409 +255 val_255 +278 val_278 +98 val_98 +NULL val_484 +NULL val_265 +NULL val_193 +401 val_401 +150 val_150 +273 val_273 +224 +369 +66 val_66 +128 +213 val_213 +146 val_146 +406 val_406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/insert into and insert overwrite-4-3b8e0155870264d89d275a1d5bd345d0 b/sql/hive/src/test/resources/golden/insert into and insert overwrite-4-3b8e0155870264d89d275a1d5bd345d0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert into and insert overwrite-5-b9002c1d71895be765575b62656d1928 b/sql/hive/src/test/resources/golden/insert into and insert overwrite-5-b9002c1d71895be765575b62656d1928 new file mode 100644 index 0000000000000..e87fb81a6f043 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert into and insert overwrite-5-b9002c1d71895be765575b62656d1928 @@ -0,0 +1 @@ +86 val_86 diff --git a/sql/hive/src/test/resources/golden/insert table with db name-0-a253b1ed35dbf503d1b8902dacbe23ac b/sql/hive/src/test/resources/golden/insert table with db name-0-a253b1ed35dbf503d1b8902dacbe23ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert table with db name-1-4f5be7056d8dc15cf2334a7cc146a636 b/sql/hive/src/test/resources/golden/insert table with db name-1-4f5be7056d8dc15cf2334a7cc146a636 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert table with db name-2-a81aea129f78bc05305b8e887ee88f86 b/sql/hive/src/test/resources/golden/insert table with db name-2-a81aea129f78bc05305b8e887ee88f86 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert table with db name-3-ce780d068b8d24786e639e361101a0c7 b/sql/hive/src/test/resources/golden/insert table with db name-3-ce780d068b8d24786e639e361101a0c7 new file mode 100644 index 0000000000000..7aae61e5eb82f --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert table with db name-3-ce780d068b8d24786e639e361101a0c7 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/insert table with db name-4-afd6e46b6a289c3c24a8eec75a94043c b/sql/hive/src/test/resources/golden/insert table with db name-4-afd6e46b6a289c3c24a8eec75a94043c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-0-7faa9807151781e4207103aa568e321c b/sql/hive/src/test/resources/golden/insert1-0-7faa9807151781e4207103aa568e321c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-1-91d7b05c9024bff60b55f415cbeacc8b b/sql/hive/src/test/resources/golden/insert1-1-91d7b05c9024bff60b55f415cbeacc8b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-10-64f83491a8fe675ef3a4a9a474ac0439 b/sql/hive/src/test/resources/golden/insert1-10-64f83491a8fe675ef3a4a9a474ac0439 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-11-6f2797b6f81943d3b53b8d247ae8512b b/sql/hive/src/test/resources/golden/insert1-11-6f2797b6f81943d3b53b8d247ae8512b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-12-7a3c0a3f06484c912b9e951d8a2d8ac6 b/sql/hive/src/test/resources/golden/insert1-12-7a3c0a3f06484c912b9e951d8a2d8ac6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-13-42b03f938894fdafc7fff640711a9b2f b/sql/hive/src/test/resources/golden/insert1-13-42b03f938894fdafc7fff640711a9b2f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-14-e021dfb28597811870c03b3242972927 b/sql/hive/src/test/resources/golden/insert1-14-e021dfb28597811870c03b3242972927 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-15-c7fca497a4580b54a0a13b3b72da5d7c b/sql/hive/src/test/resources/golden/insert1-15-c7fca497a4580b54a0a13b3b72da5d7c new file mode 100644 index 0000000000000..5be49cad9a8ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert1-15-c7fca497a4580b54a0a13b3b72da5d7c @@ -0,0 +1,2 @@ +db2_insert1 +db2_insert2 diff --git a/sql/hive/src/test/resources/golden/insert1-16-7a9e67189d3d4151f23b12c22bde06b5 b/sql/hive/src/test/resources/golden/insert1-16-7a9e67189d3d4151f23b12c22bde06b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-17-5528e36b3b0f5b14313898cc45f9c23a b/sql/hive/src/test/resources/golden/insert1-17-5528e36b3b0f5b14313898cc45f9c23a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-18-16d78fba2d86277bc2f804037cc0a8b4 b/sql/hive/src/test/resources/golden/insert1-18-16d78fba2d86277bc2f804037cc0a8b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-19-62518ff6810db9cdd8926702192a206b b/sql/hive/src/test/resources/golden/insert1-19-62518ff6810db9cdd8926702192a206b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-2-3f1de4475930285c3fdbe3a5ccd4e868 b/sql/hive/src/test/resources/golden/insert1-2-3f1de4475930285c3fdbe3a5ccd4e868 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-20-f4dc51ad64bb8662d066a8b9003da3d4 b/sql/hive/src/test/resources/golden/insert1-20-f4dc51ad64bb8662d066a8b9003da3d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-21-bb7624250ab556f2d40bfb8d419be487 b/sql/hive/src/test/resources/golden/insert1-21-bb7624250ab556f2d40bfb8d419be487 new file mode 100644 index 0000000000000..1e3637ebc6af2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert1-21-bb7624250ab556f2d40bfb8d419be487 @@ -0,0 +1,2 @@ +db1_insert1 +db1_insert2 diff --git a/sql/hive/src/test/resources/golden/insert1-3-89f8a028e32fae213b575b4df4e26e9c b/sql/hive/src/test/resources/golden/insert1-3-89f8a028e32fae213b575b4df4e26e9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-4-c7a68c0884785d0f5e62b287eb305d64 b/sql/hive/src/test/resources/golden/insert1-4-c7a68c0884785d0f5e62b287eb305d64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-5-cb87ee12092fdf05daed82485c32a285 b/sql/hive/src/test/resources/golden/insert1-5-cb87ee12092fdf05daed82485c32a285 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-6-b97ba93a2c9ae671ecfc4fa95c024dda b/sql/hive/src/test/resources/golden/insert1-6-b97ba93a2c9ae671ecfc4fa95c024dda new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-7-a2cd0615b9e79befd9c1842516150a61 b/sql/hive/src/test/resources/golden/insert1-7-a2cd0615b9e79befd9c1842516150a61 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-8-5942e331621fe522fc297844046d2370 b/sql/hive/src/test/resources/golden/insert1-8-5942e331621fe522fc297844046d2370 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert1-9-5c5132707d7a4fb6e6a3de1a6719721a b/sql/hive/src/test/resources/golden/insert1-9-5c5132707d7a4fb6e6a3de1a6719721a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-0-5528e36b3b0f5b14313898cc45f9c23a b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-0-5528e36b3b0f5b14313898cc45f9c23a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-1-deb504f4f70fd7db975950c3c47959ee b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-1-deb504f4f70fd7db975950c3c47959ee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-10-fda2e4be738186c0938f92d5072df55a b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-10-fda2e4be738186c0938f92d5072df55a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-11-9fb177236623d1b62acff28507033436 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-11-9fb177236623d1b62acff28507033436 new file mode 100644 index 0000000000000..01f2b7063f91b --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-11-9fb177236623d1b62acff28507033436 @@ -0,0 +1,5 @@ +98 val_98 +98 val_98 +98 val_98 +97 val_97 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-12-99d5ad32bb81640cb284312841b60000 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-12-99d5ad32bb81640cb284312841b60000 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-13-9dda06e1aae1860bd19eee97703a8217 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-13-9dda06e1aae1860bd19eee97703a8217 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-14-19daabdd4c0d403c8781967248d09c53 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-14-19daabdd4c0d403c8781967248d09c53 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-15-812006e1f11e005e5029866d1cf004f6 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-15-812006e1f11e005e5029866d1cf004f6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-2-bd042746328158822a25d711ffed18dd b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-2-bd042746328158822a25d711ffed18dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-3-b7aaedd7d624af4e48637ff1acabe485 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-3-b7aaedd7d624af4e48637ff1acabe485 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-4-dece2650bf0615e566cd6c84181ce026 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-4-dece2650bf0615e566cd6c84181ce026 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-5-1eb5c694e5a02aa292e24a0849350108 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-5-1eb5c694e5a02aa292e24a0849350108 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-6-ab49e0665a80a6b34dadc96f1d18ce26 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-6-ab49e0665a80a6b34dadc96f1d18ce26 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-7-fda2e4be738186c0938f92d5072df55a b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-7-fda2e4be738186c0938f92d5072df55a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-8-9fb177236623d1b62acff28507033436 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-8-9fb177236623d1b62acff28507033436 new file mode 100644 index 0000000000000..01f2b7063f91b --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-8-9fb177236623d1b62acff28507033436 @@ -0,0 +1,5 @@ +98 val_98 +98 val_98 +98 val_98 +97 val_97 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-9-ab49e0665a80a6b34dadc96f1d18ce26 b/sql/hive/src/test/resources/golden/insert2_overwrite_partitions-9-ab49e0665a80a6b34dadc96f1d18ce26 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_compressed-0-ea607fbed28d20e5726f4501285d698d b/sql/hive/src/test/resources/golden/insert_compressed-0-ea607fbed28d20e5726f4501285d698d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_compressed-0-ea607fbed28d20e5726f4501285d698d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_compressed-1-d20899578068ff4adfee5355cddca819 b/sql/hive/src/test/resources/golden/insert_compressed-1-d20899578068ff4adfee5355cddca819 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_compressed-2-8dec751fd4148a431af064b7317f1530 b/sql/hive/src/test/resources/golden/insert_compressed-2-8dec751fd4148a431af064b7317f1530 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_compressed-3-35f4fbde823a5664fe9928a685745b35 b/sql/hive/src/test/resources/golden/insert_compressed-3-35f4fbde823a5664fe9928a685745b35 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_compressed-4-5133d2457097962811a2adf0ecd9e4ef b/sql/hive/src/test/resources/golden/insert_compressed-4-5133d2457097962811a2adf0ecd9e4ef new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_compressed-4-5133d2457097962811a2adf0ecd9e4ef @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_compressed-5-a60ea2e04d6bcdc99238eeb6ac6365c3 b/sql/hive/src/test/resources/golden/insert_compressed-5-a60ea2e04d6bcdc99238eeb6ac6365c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_compressed-6-5133d2457097962811a2adf0ecd9e4ef b/sql/hive/src/test/resources/golden/insert_compressed-6-5133d2457097962811a2adf0ecd9e4ef new file mode 100644 index 0000000000000..e37d32abba426 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_compressed-6-5133d2457097962811a2adf0ecd9e4ef @@ -0,0 +1 @@ +1000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_compressed-7-a60ea2e04d6bcdc99238eeb6ac6365c3 b/sql/hive/src/test/resources/golden/insert_compressed-7-a60ea2e04d6bcdc99238eeb6ac6365c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_compressed-8-5133d2457097962811a2adf0ecd9e4ef b/sql/hive/src/test/resources/golden/insert_compressed-8-5133d2457097962811a2adf0ecd9e4ef new file mode 100644 index 0000000000000..37021f4a27201 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_compressed-8-5133d2457097962811a2adf0ecd9e4ef @@ -0,0 +1 @@ +1500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_compressed-9-d20899578068ff4adfee5355cddca819 b/sql/hive/src/test/resources/golden/insert_compressed-9-d20899578068ff4adfee5355cddca819 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-0-ae5ea07929262bde22fbe7ebe80d4992 b/sql/hive/src/test/resources/golden/insert_into1-0-ae5ea07929262bde22fbe7ebe80d4992 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-1-f1699bc0ef0a84dd9c23ccff37e13d7b b/sql/hive/src/test/resources/golden/insert_into1-1-f1699bc0ef0a84dd9c23ccff37e13d7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-10-c260979323c1ebdf68c6fbe003d43792 b/sql/hive/src/test/resources/golden/insert_into1-10-c260979323c1ebdf68c6fbe003d43792 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-11-41015d6409c5ebf670eed4999157fdb b/sql/hive/src/test/resources/golden/insert_into1-11-41015d6409c5ebf670eed4999157fdb new file mode 100644 index 0000000000000..5e96d815b6b78 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into1-11-41015d6409c5ebf670eed4999157fdb @@ -0,0 +1 @@ +-826625916 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into1-12-ae5ea07929262bde22fbe7ebe80d4992 b/sql/hive/src/test/resources/golden/insert_into1-12-ae5ea07929262bde22fbe7ebe80d4992 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-2-ff6a1b25c911def274921df1bae476b7 b/sql/hive/src/test/resources/golden/insert_into1-2-ff6a1b25c911def274921df1bae476b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-3-6687f7d58bd1faf1c2ee4f52f03ce048 b/sql/hive/src/test/resources/golden/insert_into1-3-6687f7d58bd1faf1c2ee4f52f03ce048 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-4-41015d6409c5ebf670eed4999157fdb b/sql/hive/src/test/resources/golden/insert_into1-4-41015d6409c5ebf670eed4999157fdb new file mode 100644 index 0000000000000..eb9dc5833c2f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into1-4-41015d6409c5ebf670eed4999157fdb @@ -0,0 +1 @@ +10226524244 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into1-5-d47a5e2ff879b37c8b6ca948ed47b7d2 b/sql/hive/src/test/resources/golden/insert_into1-5-d47a5e2ff879b37c8b6ca948ed47b7d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-6-4b2e32fe57b2297d22bccb4656bdee30 b/sql/hive/src/test/resources/golden/insert_into1-6-4b2e32fe57b2297d22bccb4656bdee30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into1-7-41015d6409c5ebf670eed4999157fdb b/sql/hive/src/test/resources/golden/insert_into1-7-41015d6409c5ebf670eed4999157fdb new file mode 100644 index 0000000000000..28ced898ab537 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into1-7-41015d6409c5ebf670eed4999157fdb @@ -0,0 +1 @@ +20453048488 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into1-8-2a2bd9dc41eaa041aff7eca70a72cb0d b/sql/hive/src/test/resources/golden/insert_into1-8-2a2bd9dc41eaa041aff7eca70a72cb0d new file mode 100644 index 0000000000000..ae4ee13c08e76 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into1-8-2a2bd9dc41eaa041aff7eca70a72cb0d @@ -0,0 +1 @@ +200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into1-9-31eb4770dc60e4765065ac7f84811d1b b/sql/hive/src/test/resources/golden/insert_into1-9-31eb4770dc60e4765065ac7f84811d1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-0-957c6402df0fd7d2fccbc688e49e9661 b/sql/hive/src/test/resources/golden/insert_into2-0-957c6402df0fd7d2fccbc688e49e9661 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-1-9828bb831fd11667b48678e5952a0941 b/sql/hive/src/test/resources/golden/insert_into2-1-9828bb831fd11667b48678e5952a0941 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-10-df53336f364fe09e9591e769c13b5519 b/sql/hive/src/test/resources/golden/insert_into2-10-df53336f364fe09e9591e769c13b5519 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-11-a19a7ab57f6ff69f1dff405bc3d4b7aa b/sql/hive/src/test/resources/golden/insert_into2-11-a19a7ab57f6ff69f1dff405bc3d4b7aa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-12-4cf03cb3982a457f2f72220265ecc844 b/sql/hive/src/test/resources/golden/insert_into2-12-4cf03cb3982a457f2f72220265ecc844 new file mode 100644 index 0000000000000..84d7f3929d86d --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into2-12-4cf03cb3982a457f2f72220265ecc844 @@ -0,0 +1 @@ +-27100860056 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into2-13-957c6402df0fd7d2fccbc688e49e9661 b/sql/hive/src/test/resources/golden/insert_into2-13-957c6402df0fd7d2fccbc688e49e9661 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-2-f83e3ad75a2c7b290f8cf5f6153b9671 b/sql/hive/src/test/resources/golden/insert_into2-2-f83e3ad75a2c7b290f8cf5f6153b9671 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-3-9d5556040de01fd02d5501d141effff2 b/sql/hive/src/test/resources/golden/insert_into2-3-9d5556040de01fd02d5501d141effff2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-4-9d5556040de01fd02d5501d141effff2 b/sql/hive/src/test/resources/golden/insert_into2-4-9d5556040de01fd02d5501d141effff2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-5-de6e50a2ae0ab5a9c466998b57f86b08 b/sql/hive/src/test/resources/golden/insert_into2-5-de6e50a2ae0ab5a9c466998b57f86b08 new file mode 100644 index 0000000000000..ae4ee13c08e76 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into2-5-de6e50a2ae0ab5a9c466998b57f86b08 @@ -0,0 +1 @@ +200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into2-6-4cf03cb3982a457f2f72220265ecc844 b/sql/hive/src/test/resources/golden/insert_into2-6-4cf03cb3982a457f2f72220265ecc844 new file mode 100644 index 0000000000000..3395f3bcc7b51 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into2-6-4cf03cb3982a457f2f72220265ecc844 @@ -0,0 +1 @@ +-24159954504 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into2-7-6db9da2d1a64be8cd58f0313c4970fc9 b/sql/hive/src/test/resources/golden/insert_into2-7-6db9da2d1a64be8cd58f0313c4970fc9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-8-452111285dda40205ee587de8e972896 b/sql/hive/src/test/resources/golden/insert_into2-8-452111285dda40205ee587de8e972896 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into2-9-4cf03cb3982a457f2f72220265ecc844 b/sql/hive/src/test/resources/golden/insert_into2-9-4cf03cb3982a457f2f72220265ecc844 new file mode 100644 index 0000000000000..ee0a47c9f6e00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into2-9-4cf03cb3982a457f2f72220265ecc844 @@ -0,0 +1 @@ +-36239931656 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into3-0-7e35c30348a53b0748bc1bb85f75c195 b/sql/hive/src/test/resources/golden/insert_into3-0-7e35c30348a53b0748bc1bb85f75c195 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-1-f6dd7262d45a21781d85bc343ede8fb5 b/sql/hive/src/test/resources/golden/insert_into3-1-f6dd7262d45a21781d85bc343ede8fb5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-10-40a108b4c89bc5d6424f21f3b8a2f5e7 b/sql/hive/src/test/resources/golden/insert_into3-10-40a108b4c89bc5d6424f21f3b8a2f5e7 new file mode 100644 index 0000000000000..5e96d815b6b78 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into3-10-40a108b4c89bc5d6424f21f3b8a2f5e7 @@ -0,0 +1 @@ +-826625916 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into3-11-9cfd2d054f84262eb74a870b6365db87 b/sql/hive/src/test/resources/golden/insert_into3-11-9cfd2d054f84262eb74a870b6365db87 new file mode 100644 index 0000000000000..2ed5a7da11dcd --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into3-11-9cfd2d054f84262eb74a870b6365db87 @@ -0,0 +1 @@ +9399898328 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into3-12-7e35c30348a53b0748bc1bb85f75c195 b/sql/hive/src/test/resources/golden/insert_into3-12-7e35c30348a53b0748bc1bb85f75c195 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-13-f6dd7262d45a21781d85bc343ede8fb5 b/sql/hive/src/test/resources/golden/insert_into3-13-f6dd7262d45a21781d85bc343ede8fb5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-2-e51c25bae2408422a56826a263479468 b/sql/hive/src/test/resources/golden/insert_into3-2-e51c25bae2408422a56826a263479468 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-3-c46699c465fefe6baab35499a32b452d b/sql/hive/src/test/resources/golden/insert_into3-3-c46699c465fefe6baab35499a32b452d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-4-e9f4f47686fe97482b0a769a15481dd b/sql/hive/src/test/resources/golden/insert_into3-4-e9f4f47686fe97482b0a769a15481dd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-5-a83d22fa3c2fb32bd08305a1729bf7f8 b/sql/hive/src/test/resources/golden/insert_into3-5-a83d22fa3c2fb32bd08305a1729bf7f8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-6-40a108b4c89bc5d6424f21f3b8a2f5e7 b/sql/hive/src/test/resources/golden/insert_into3-6-40a108b4c89bc5d6424f21f3b8a2f5e7 new file mode 100644 index 0000000000000..00ffdd24b0cff --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into3-6-40a108b4c89bc5d6424f21f3b8a2f5e7 @@ -0,0 +1 @@ +7813690682 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into3-7-9cfd2d054f84262eb74a870b6365db87 b/sql/hive/src/test/resources/golden/insert_into3-7-9cfd2d054f84262eb74a870b6365db87 new file mode 100644 index 0000000000000..eb9dc5833c2f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into3-7-9cfd2d054f84262eb74a870b6365db87 @@ -0,0 +1 @@ +10226524244 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into3-8-e3b8d90def4a6ec1e3b5ee9cdaf31c01 b/sql/hive/src/test/resources/golden/insert_into3-8-e3b8d90def4a6ec1e3b5ee9cdaf31c01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into3-9-19d1be183f7985f7066f86572abc82c8 b/sql/hive/src/test/resources/golden/insert_into3-9-19d1be183f7985f7066f86572abc82c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-0-b4831621b2a02fc4e8e655b03c289310 b/sql/hive/src/test/resources/golden/insert_into4-0-b4831621b2a02fc4e8e655b03c289310 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into4-0-b4831621b2a02fc4e8e655b03c289310 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into4-1-3d466d45197fcf1eff55d76ef0a29720 b/sql/hive/src/test/resources/golden/insert_into4-1-3d466d45197fcf1eff55d76ef0a29720 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-10-a8016ca816f7b362cf3a0384ca91b159 b/sql/hive/src/test/resources/golden/insert_into4-10-a8016ca816f7b362cf3a0384ca91b159 new file mode 100644 index 0000000000000..e2954bd63682e --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into4-10-a8016ca816f7b362cf3a0384ca91b159 @@ -0,0 +1 @@ +-1653251832 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into4-11-bdbfaf06bc4e323863db65fd29882eaa b/sql/hive/src/test/resources/golden/insert_into4-11-bdbfaf06bc4e323863db65fd29882eaa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-12-49b12993ebc1647b9dca8b9af19deca9 b/sql/hive/src/test/resources/golden/insert_into4-12-49b12993ebc1647b9dca8b9af19deca9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-13-a5bb41af609f38f01d8c71334cc8d71b b/sql/hive/src/test/resources/golden/insert_into4-13-a5bb41af609f38f01d8c71334cc8d71b new file mode 100644 index 0000000000000..e2954bd63682e --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into4-13-a5bb41af609f38f01d8c71334cc8d71b @@ -0,0 +1 @@ +-1653251832 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into4-14-3d466d45197fcf1eff55d76ef0a29720 b/sql/hive/src/test/resources/golden/insert_into4-14-3d466d45197fcf1eff55d76ef0a29720 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-15-f6ad1a49459fb6cd232fccc4a6062b25 b/sql/hive/src/test/resources/golden/insert_into4-15-f6ad1a49459fb6cd232fccc4a6062b25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-2-f6ad1a49459fb6cd232fccc4a6062b25 b/sql/hive/src/test/resources/golden/insert_into4-2-f6ad1a49459fb6cd232fccc4a6062b25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-3-43629aaa698fb6e2db4586124561e69b b/sql/hive/src/test/resources/golden/insert_into4-3-43629aaa698fb6e2db4586124561e69b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-4-8adba808fd505f4bf0ffcc61a618480a b/sql/hive/src/test/resources/golden/insert_into4-4-8adba808fd505f4bf0ffcc61a618480a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-5-6bc47894aa917051abb98d0b52f43881 b/sql/hive/src/test/resources/golden/insert_into4-5-6bc47894aa917051abb98d0b52f43881 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-6-8c1683bee2927da76bb0dbf44a373738 b/sql/hive/src/test/resources/golden/insert_into4-6-8c1683bee2927da76bb0dbf44a373738 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-7-a8016ca816f7b362cf3a0384ca91b159 b/sql/hive/src/test/resources/golden/insert_into4-7-a8016ca816f7b362cf3a0384ca91b159 new file mode 100644 index 0000000000000..5e96d815b6b78 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into4-7-a8016ca816f7b362cf3a0384ca91b159 @@ -0,0 +1 @@ +-826625916 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into4-8-6bc47894aa917051abb98d0b52f43881 b/sql/hive/src/test/resources/golden/insert_into4-8-6bc47894aa917051abb98d0b52f43881 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into4-9-8c1683bee2927da76bb0dbf44a373738 b/sql/hive/src/test/resources/golden/insert_into4-9-8c1683bee2927da76bb0dbf44a373738 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-0-9afa473f2111cf0d9ae62041bd97f840 b/sql/hive/src/test/resources/golden/insert_into5-0-9afa473f2111cf0d9ae62041bd97f840 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-1-8fc8db6a5564324339192f23208ffc1c b/sql/hive/src/test/resources/golden/insert_into5-1-8fc8db6a5564324339192f23208ffc1c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-10-375cae396c768c1efe5d17b9f5f45f8 b/sql/hive/src/test/resources/golden/insert_into5-10-375cae396c768c1efe5d17b9f5f45f8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-11-a36eeaf2fb0ef52b63a21f0f9b80b27d b/sql/hive/src/test/resources/golden/insert_into5-11-a36eeaf2fb0ef52b63a21f0f9b80b27d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-12-a49d025c7556a83f301b6ecf9ceb2ce7 b/sql/hive/src/test/resources/golden/insert_into5-12-a49d025c7556a83f301b6ecf9ceb2ce7 new file mode 100644 index 0000000000000..3b6ef434b37e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into5-12-a49d025c7556a83f301b6ecf9ceb2ce7 @@ -0,0 +1 @@ +-18626052920 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into5-13-e06a0b7252278141d50466e08f15b391 b/sql/hive/src/test/resources/golden/insert_into5-13-e06a0b7252278141d50466e08f15b391 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-14-a3a4c16b0b723f97f654b4b5e80575c2 b/sql/hive/src/test/resources/golden/insert_into5-14-a3a4c16b0b723f97f654b4b5e80575c2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-15-a49d025c7556a83f301b6ecf9ceb2ce7 b/sql/hive/src/test/resources/golden/insert_into5-15-a49d025c7556a83f301b6ecf9ceb2ce7 new file mode 100644 index 0000000000000..0744f3dae0e0a --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into5-15-a49d025c7556a83f301b6ecf9ceb2ce7 @@ -0,0 +1 @@ +-37252105840 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into5-16-9afa473f2111cf0d9ae62041bd97f840 b/sql/hive/src/test/resources/golden/insert_into5-16-9afa473f2111cf0d9ae62041bd97f840 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-2-548a3a10c15c333c63fc1c239ee8b62c b/sql/hive/src/test/resources/golden/insert_into5-2-548a3a10c15c333c63fc1c239ee8b62c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-3-a4b25f172af356ec98035329b95ddbd3 b/sql/hive/src/test/resources/golden/insert_into5-3-a4b25f172af356ec98035329b95ddbd3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-4-3d5343a79ee8b680f3b74b22db6658e6 b/sql/hive/src/test/resources/golden/insert_into5-4-3d5343a79ee8b680f3b74b22db6658e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-5-f382c5b31afe9e0251fa9457c46c12a5 b/sql/hive/src/test/resources/golden/insert_into5-5-f382c5b31afe9e0251fa9457c46c12a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-6-a058ba199b9777d48b6c6595f2388533 b/sql/hive/src/test/resources/golden/insert_into5-6-a058ba199b9777d48b6c6595f2388533 new file mode 100644 index 0000000000000..c0066b75af40e --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into5-6-a058ba199b9777d48b6c6595f2388533 @@ -0,0 +1 @@ +481928560 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into5-7-2004b4ecf6ceddb033727f8d5ebab42f b/sql/hive/src/test/resources/golden/insert_into5-7-2004b4ecf6ceddb033727f8d5ebab42f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-8-4e489b45a3dacf7fdf0b12e4f8ab7873 b/sql/hive/src/test/resources/golden/insert_into5-8-4e489b45a3dacf7fdf0b12e4f8ab7873 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into5-9-a058ba199b9777d48b6c6595f2388533 b/sql/hive/src/test/resources/golden/insert_into5-9-a058ba199b9777d48b6c6595f2388533 new file mode 100644 index 0000000000000..0b4a44e064f85 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into5-9-a058ba199b9777d48b6c6595f2388533 @@ -0,0 +1 @@ +963857120 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into6-0-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/insert_into6-0-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into6-0-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into6-1-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/insert_into6-1-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into6-1-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into6-10-16500f4af2c8638a670e867e59f6d457 b/sql/hive/src/test/resources/golden/insert_into6-10-16500f4af2c8638a670e867e59f6d457 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-11-95297f4dcc4dd6a51de4785ccd25fbba b/sql/hive/src/test/resources/golden/insert_into6-11-95297f4dcc4dd6a51de4785ccd25fbba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-12-29afaab2cf10eaa65afaa6c0fcca0902 b/sql/hive/src/test/resources/golden/insert_into6-12-29afaab2cf10eaa65afaa6c0fcca0902 new file mode 100644 index 0000000000000..d541b5d207233 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into6-12-29afaab2cf10eaa65afaa6c0fcca0902 @@ -0,0 +1 @@ +-35226404960 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into6-13-b357a845fb5f668b09dea94c6d2e7d66 b/sql/hive/src/test/resources/golden/insert_into6-13-b357a845fb5f668b09dea94c6d2e7d66 new file mode 100644 index 0000000000000..c21f4017362c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into6-13-b357a845fb5f668b09dea94c6d2e7d66 @@ -0,0 +1,2 @@ +ds=1 +ds=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insert_into6-14-1f00d9cc34225cb358a54c6d4008cb47 b/sql/hive/src/test/resources/golden/insert_into6-14-1f00d9cc34225cb358a54c6d4008cb47 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-15-14d4d62ee9a5da9fbd7c3e0c021fdc0d b/sql/hive/src/test/resources/golden/insert_into6-15-14d4d62ee9a5da9fbd7c3e0c021fdc0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-2-1f00d9cc34225cb358a54c6d4008cb47 b/sql/hive/src/test/resources/golden/insert_into6-2-1f00d9cc34225cb358a54c6d4008cb47 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-3-14d4d62ee9a5da9fbd7c3e0c021fdc0d b/sql/hive/src/test/resources/golden/insert_into6-3-14d4d62ee9a5da9fbd7c3e0c021fdc0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-4-5f12794e99c74355a23d2fda9c7c170f b/sql/hive/src/test/resources/golden/insert_into6-4-5f12794e99c74355a23d2fda9c7c170f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-5-de641eb41a9100e755a9ae641c752b30 b/sql/hive/src/test/resources/golden/insert_into6-5-de641eb41a9100e755a9ae641c752b30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-6-f6e7141a435922193937aa10085b0656 b/sql/hive/src/test/resources/golden/insert_into6-6-f6e7141a435922193937aa10085b0656 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-7-6826c610b8d04ab3464712bd9cddbcd3 b/sql/hive/src/test/resources/golden/insert_into6-7-6826c610b8d04ab3464712bd9cddbcd3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-8-33ec9514947e0b737e957bdcbbd87573 b/sql/hive/src/test/resources/golden/insert_into6-8-33ec9514947e0b737e957bdcbbd87573 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insert_into6-9-3ccb7bc735e406ad1723c758f01bcaab b/sql/hive/src/test/resources/golden/insert_into6-9-3ccb7bc735e406ad1723c758f01bcaab new file mode 100644 index 0000000000000..d541b5d207233 --- /dev/null +++ b/sql/hive/src/test/resources/golden/insert_into6-9-3ccb7bc735e406ad1723c758f01bcaab @@ -0,0 +1 @@ +-35226404960 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/insertexternal1-0-eb0745518b859c8497506a627bfd9860 b/sql/hive/src/test/resources/golden/insertexternal1-0-eb0745518b859c8497506a627bfd9860 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/insertexternal1-1-6d1b6c44f9f52ec67f9d4a3cdf580a1a b/sql/hive/src/test/resources/golden/insertexternal1-1-6d1b6c44f9f52ec67f9d4a3cdf580a1a new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/insertexternal1-1-6d1b6c44f9f52ec67f9d4a3cdf580a1a @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/insertexternal1-2-bc513eeb5cbba0b15c8f425b9cc3cd7b b/sql/hive/src/test/resources/golden/insertexternal1-2-bc513eeb5cbba0b15c8f425b9cc3cd7b new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/insertexternal1-2-bc513eeb5cbba0b15c8f425b9cc3cd7b @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/insertexternal1-3-f64289fb03ab105e12659fc3972ca241 b/sql/hive/src/test/resources/golden/insertexternal1-3-f64289fb03ab105e12659fc3972ca241 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/insertexternal1-3-f64289fb03ab105e12659fc3972ca241 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/join0-0-7fbd114e2fc7f55cf1421698eac39397 b/sql/hive/src/test/resources/golden/join0-0-7fbd114e2fc7f55cf1421698eac39397 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join0-1-83f5e512d6058a47f92b5218781f5070 b/sql/hive/src/test/resources/golden/join0-1-83f5e512d6058a47f92b5218781f5070 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join0-2-52055f2dce8eac4e5249d02c42c0da87 b/sql/hive/src/test/resources/golden/join0-2-52055f2dce8eac4e5249d02c42c0da87 new file mode 100644 index 0000000000000..5707ed08e7e54 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join0-2-52055f2dce8eac4e5249d02c42c0da87 @@ -0,0 +1,100 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 2 val_2 +0 val_0 2 val_2 +0 val_0 2 val_2 +0 val_0 4 val_4 +0 val_0 4 val_4 +0 val_0 4 val_4 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 8 val_8 +0 val_0 8 val_8 +0 val_0 8 val_8 +0 val_0 9 val_9 +0 val_0 9 val_9 +0 val_0 9 val_9 +2 val_2 0 val_0 +2 val_2 0 val_0 +2 val_2 0 val_0 +2 val_2 2 val_2 +2 val_2 4 val_4 +2 val_2 5 val_5 +2 val_2 5 val_5 +2 val_2 5 val_5 +2 val_2 8 val_8 +2 val_2 9 val_9 +4 val_4 0 val_0 +4 val_4 0 val_0 +4 val_4 0 val_0 +4 val_4 2 val_2 +4 val_4 4 val_4 +4 val_4 5 val_5 +4 val_4 5 val_5 +4 val_4 5 val_5 +4 val_4 8 val_8 +4 val_4 9 val_9 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 2 val_2 +5 val_5 2 val_2 +5 val_5 2 val_2 +5 val_5 4 val_4 +5 val_5 4 val_4 +5 val_5 4 val_4 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 8 val_8 +5 val_5 8 val_8 +5 val_5 8 val_8 +5 val_5 9 val_9 +5 val_5 9 val_9 +5 val_5 9 val_9 +8 val_8 0 val_0 +8 val_8 0 val_0 +8 val_8 0 val_0 +8 val_8 2 val_2 +8 val_8 4 val_4 +8 val_8 5 val_5 +8 val_8 5 val_5 +8 val_8 5 val_5 +8 val_8 8 val_8 +8 val_8 9 val_9 +9 val_9 0 val_0 +9 val_9 0 val_0 +9 val_9 0 val_0 +9 val_9 2 val_2 +9 val_9 4 val_4 +9 val_9 5 val_5 +9 val_9 5 val_5 +9 val_9 5 val_5 +9 val_9 8 val_8 +9 val_9 9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join1-0-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/join1-0-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join1-0-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join1-1-f1293ebf768eb04f2f0bfe6297c4509e b/sql/hive/src/test/resources/golden/join1-1-f1293ebf768eb04f2f0bfe6297c4509e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join1-2-7b07671864bbfdc627ee794932e32b1e b/sql/hive/src/test/resources/golden/join1-2-7b07671864bbfdc627ee794932e32b1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join1-3-f6046c5229e3b0aa21498a3872f43b2 b/sql/hive/src/test/resources/golden/join1-3-f6046c5229e3b0aa21498a3872f43b2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join1-4-35c7611180562dcd9dab834f41654095 b/sql/hive/src/test/resources/golden/join1-4-35c7611180562dcd9dab834f41654095 new file mode 100644 index 0000000000000..59821aeea3008 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join1-4-35c7611180562dcd9dab834f41654095 @@ -0,0 +1,1028 @@ +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +82 val_82 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +4 val_4 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +54 val_54 +459 val_459 +459 val_459 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +58 val_58 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +404 val_404 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +209 val_209 +64 val_64 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join10-0-1e7a0e1d539a39ed19833e6a6d0b1644 b/sql/hive/src/test/resources/golden/join10-0-1e7a0e1d539a39ed19833e6a6d0b1644 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join10-1-73136f8e6e9ba82f75570afd15c2828d b/sql/hive/src/test/resources/golden/join10-1-73136f8e6e9ba82f75570afd15c2828d new file mode 100644 index 0000000000000..59821aeea3008 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join10-1-73136f8e6e9ba82f75570afd15c2828d @@ -0,0 +1,1028 @@ +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +82 val_82 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +4 val_4 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +54 val_54 +459 val_459 +459 val_459 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +58 val_58 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +404 val_404 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +209 val_209 +64 val_64 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join11-0-e2cc67c543c1209ebcd3f9048c4cb29 b/sql/hive/src/test/resources/golden/join11-0-e2cc67c543c1209ebcd3f9048c4cb29 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join11-1-b580f87daf1763cd8c5e59ad5b271232 b/sql/hive/src/test/resources/golden/join11-1-b580f87daf1763cd8c5e59ad5b271232 new file mode 100644 index 0000000000000..c888cfd6a0479 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join11-1-b580f87daf1763cd8c5e59ad5b271232 @@ -0,0 +1,148 @@ +86 val_86 +27 val_27 +98 val_98 +98 val_98 +66 val_66 +37 val_37 +37 val_37 +15 val_15 +15 val_15 +82 val_82 +17 val_17 +0 val_0 +0 val_0 +0 val_0 +57 val_57 +20 val_20 +92 val_92 +47 val_47 +72 val_72 +72 val_72 +4 val_4 +35 val_35 +35 val_35 +35 val_35 +54 val_54 +51 val_51 +51 val_51 +65 val_65 +83 val_83 +83 val_83 +12 val_12 +12 val_12 +67 val_67 +67 val_67 +84 val_84 +84 val_84 +58 val_58 +58 val_58 +8 val_8 +24 val_24 +24 val_24 +42 val_42 +42 val_42 +0 val_0 +0 val_0 +0 val_0 +96 val_96 +26 val_26 +26 val_26 +51 val_51 +51 val_51 +43 val_43 +95 val_95 +95 val_95 +98 val_98 +98 val_98 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +87 val_87 +15 val_15 +15 val_15 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +19 val_19 +10 val_10 +5 val_5 +5 val_5 +5 val_5 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +95 val_95 +95 val_95 +11 val_11 +34 val_34 +42 val_42 +42 val_42 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +30 val_30 +64 val_64 +76 val_76 +76 val_76 +74 val_74 +69 val_69 +33 val_33 +70 val_70 +70 val_70 +70 val_70 +5 val_5 +5 val_5 +5 val_5 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +80 val_80 +44 val_44 +53 val_53 +90 val_90 +90 val_90 +90 val_90 +12 val_12 +12 val_12 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +24 val_24 +24 val_24 +70 val_70 +70 val_70 +70 val_70 +83 val_83 +83 val_83 +26 val_26 +26 val_26 +67 val_67 +67 val_67 +18 val_18 +18 val_18 +9 val_9 +18 val_18 +18 val_18 +97 val_97 +97 val_97 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +90 val_90 +90 val_90 +90 val_90 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join12-0-12fa53be2c0ddbcfc85212e573a46af1 b/sql/hive/src/test/resources/golden/join12-0-12fa53be2c0ddbcfc85212e573a46af1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join12-1-496c8aabaf3261e8fefd7b357f2ac7f b/sql/hive/src/test/resources/golden/join12-1-496c8aabaf3261e8fefd7b357f2ac7f new file mode 100644 index 0000000000000..1780076ae513f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join12-1-496c8aabaf3261e8fefd7b357f2ac7f @@ -0,0 +1,232 @@ +27 val_27 +66 val_66 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +17 val_17 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +57 val_57 +20 val_20 +47 val_47 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +4 val_4 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +54 val_54 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +65 val_65 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +8 val_8 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +43 val_43 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +19 val_19 +10 val_10 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +11 val_11 +34 val_34 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +78 val_78 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +41 val_41 +30 val_30 +64 val_64 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +74 val_74 +69 val_69 +33 val_33 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +44 val_44 +53 val_53 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +9 val_9 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +28 val_28 +37 val_37 +37 val_37 +37 val_37 +37 val_37 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join13-0-c4ebf24269e27919f4ba9ce3993e48f7 b/sql/hive/src/test/resources/golden/join13-0-c4ebf24269e27919f4ba9ce3993e48f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join13-1-696b36d15c4358145f77c2b15b7507d5 b/sql/hive/src/test/resources/golden/join13-1-696b36d15c4358145f77c2b15b7507d5 new file mode 100644 index 0000000000000..a82a9a22c6b87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join13-1-696b36d15c4358145f77c2b15b7507d5 @@ -0,0 +1,164 @@ +86 val_86 +86 val_86 +27 val_27 +98 val_98 +98 val_98 +37 val_37 +37 val_37 +15 val_15 +15 val_15 +82 val_82 +82 val_82 +17 val_17 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +57 val_57 +4 val_4 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +83 val_83 +83 val_83 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +84 val_84 +84 val_84 +58 val_58 +58 val_58 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +96 val_96 +43 val_43 +95 val_95 +95 val_95 +98 val_98 +98 val_98 +85 val_85 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +87 val_87 +87 val_87 +15 val_15 +15 val_15 +90 val_90 +90 val_90 +90 val_90 +10 val_10 +5 val_5 +5 val_5 +5 val_5 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +95 val_95 +95 val_95 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +78 val_78 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +41 val_41 +64 val_64 +64 val_64 +64 val_64 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +69 val_69 +69 val_69 +69 val_69 +69 val_69 +33 val_33 +5 val_5 +5 val_5 +5 val_5 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +80 val_80 +90 val_90 +90 val_90 +90 val_90 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +5 val_5 +5 val_5 +5 val_5 +83 val_83 +83 val_83 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +9 val_9 +9 val_9 +97 val_97 +97 val_97 +84 val_84 +84 val_84 +37 val_37 +37 val_37 +90 val_90 +90 val_90 +90 val_90 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join14-0-c85f3dcbab496811604ea0ab84d0e995 b/sql/hive/src/test/resources/golden/join14-0-c85f3dcbab496811604ea0ab84d0e995 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join14-1-9b141c1e5917ca82c6bc36a9a2950a1e b/sql/hive/src/test/resources/golden/join14-1-9b141c1e5917ca82c6bc36a9a2950a1e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join14-1-9b141c1e5917ca82c6bc36a9a2950a1e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join14-2-2b9ccaa793eae0e73bf76335d3d6880 b/sql/hive/src/test/resources/golden/join14-2-2b9ccaa793eae0e73bf76335d3d6880 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join14-2-2b9ccaa793eae0e73bf76335d3d6880 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join14-3-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/join14-3-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join14-3-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join14-4-27f1a57fbb815d169af86ae2f8305cb6 b/sql/hive/src/test/resources/golden/join14-4-27f1a57fbb815d169af86ae2f8305cb6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join14-4-27f1a57fbb815d169af86ae2f8305cb6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join14-5-4c3f537b4df1ef16788a53cf65574187 b/sql/hive/src/test/resources/golden/join14-5-4c3f537b4df1ef16788a53cf65574187 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join14-6-de39302191b63d7aa8f92885b089fe2 b/sql/hive/src/test/resources/golden/join14-6-de39302191b63d7aa8f92885b089fe2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join14-7-4e04dbb8b2e0ee18f6cb4bd89b0ae3d3 b/sql/hive/src/test/resources/golden/join14-7-4e04dbb8b2e0ee18f6cb4bd89b0ae3d3 new file mode 100644 index 0000000000000..941e6bb7c887e --- /dev/null +++ b/sql/hive/src/test/resources/golden/join14-7-4e04dbb8b2e0ee18f6cb4bd89b0ae3d3 @@ -0,0 +1,1752 @@ +238 val_238 +238 val_238 +311 val_311 +311 val_311 +311 val_311 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +111 val_111 +280 val_280 +280 val_280 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +459 val_459 +459 val_459 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +404 val_404 +404 val_404 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +490 val_490 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +118 val_118 +118 val_118 +307 val_307 +307 val_307 +435 val_435 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +336 val_336 +168 val_168 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +209 val_209 +209 val_209 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +342 val_342 +342 val_342 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +134 val_134 +134 val_134 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +298 val_298 +298 val_298 +298 val_298 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 +238 val_238 +238 val_238 +311 val_311 +311 val_311 +311 val_311 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +111 val_111 +280 val_280 +280 val_280 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +459 val_459 +459 val_459 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +404 val_404 +404 val_404 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +490 val_490 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +118 val_118 +118 val_118 +307 val_307 +307 val_307 +435 val_435 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +336 val_336 +168 val_168 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +209 val_209 +209 val_209 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +342 val_342 +342 val_342 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +134 val_134 +134 val_134 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +298 val_298 +298 val_298 +298 val_298 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join14_hadoop20-0-98b7542190092fafcc8b1ad5b0024a22 b/sql/hive/src/test/resources/golden/join14_hadoop20-0-98b7542190092fafcc8b1ad5b0024a22 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join14_hadoop20-1-db1cd54a4cb36de2087605f32e41824f b/sql/hive/src/test/resources/golden/join14_hadoop20-1-db1cd54a4cb36de2087605f32e41824f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join14_hadoop20-1-db1cd54a4cb36de2087605f32e41824f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join14_hadoop20-2-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/join14_hadoop20-2-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join14_hadoop20-2-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join14_hadoop20-3-4c3f537b4df1ef16788a53cf65574187 b/sql/hive/src/test/resources/golden/join14_hadoop20-3-4c3f537b4df1ef16788a53cf65574187 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join14_hadoop20-4-de39302191b63d7aa8f92885b089fe2 b/sql/hive/src/test/resources/golden/join14_hadoop20-4-de39302191b63d7aa8f92885b089fe2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join14_hadoop20-5-4e04dbb8b2e0ee18f6cb4bd89b0ae3d3 b/sql/hive/src/test/resources/golden/join14_hadoop20-5-4e04dbb8b2e0ee18f6cb4bd89b0ae3d3 new file mode 100644 index 0000000000000..941e6bb7c887e --- /dev/null +++ b/sql/hive/src/test/resources/golden/join14_hadoop20-5-4e04dbb8b2e0ee18f6cb4bd89b0ae3d3 @@ -0,0 +1,1752 @@ +238 val_238 +238 val_238 +311 val_311 +311 val_311 +311 val_311 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +111 val_111 +280 val_280 +280 val_280 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +459 val_459 +459 val_459 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +404 val_404 +404 val_404 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +490 val_490 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +118 val_118 +118 val_118 +307 val_307 +307 val_307 +435 val_435 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +336 val_336 +168 val_168 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +209 val_209 +209 val_209 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +342 val_342 +342 val_342 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +134 val_134 +134 val_134 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +298 val_298 +298 val_298 +298 val_298 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 +238 val_238 +238 val_238 +311 val_311 +311 val_311 +311 val_311 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +111 val_111 +280 val_280 +280 val_280 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +459 val_459 +459 val_459 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +404 val_404 +404 val_404 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +490 val_490 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +118 val_118 +118 val_118 +307 val_307 +307 val_307 +435 val_435 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +336 val_336 +168 val_168 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +209 val_209 +209 val_209 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +342 val_342 +342 val_342 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +134 val_134 +134 val_134 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +298 val_298 +298 val_298 +298 val_298 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join15-0-930db2823512f7f8f34cac104f2162e0 b/sql/hive/src/test/resources/golden/join15-0-930db2823512f7f8f34cac104f2162e0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join15-1-81d76d3bf59889b07b413b6f88772667 b/sql/hive/src/test/resources/golden/join15-1-81d76d3bf59889b07b413b6f88772667 new file mode 100644 index 0000000000000..c2e3ea8b0c8e2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join15-1-81d76d3bf59889b07b413b6f88772667 @@ -0,0 +1,1028 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +2 val_2 2 val_2 +4 val_4 4 val_4 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +8 val_8 8 val_8 +9 val_9 9 val_9 +10 val_10 10 val_10 +11 val_11 11 val_11 +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +15 val_15 15 val_15 +15 val_15 15 val_15 +15 val_15 15 val_15 +15 val_15 15 val_15 +17 val_17 17 val_17 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +19 val_19 19 val_19 +20 val_20 20 val_20 +24 val_24 24 val_24 +24 val_24 24 val_24 +24 val_24 24 val_24 +24 val_24 24 val_24 +26 val_26 26 val_26 +26 val_26 26 val_26 +26 val_26 26 val_26 +26 val_26 26 val_26 +27 val_27 27 val_27 +28 val_28 28 val_28 +30 val_30 30 val_30 +33 val_33 33 val_33 +34 val_34 34 val_34 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +41 val_41 41 val_41 +42 val_42 42 val_42 +42 val_42 42 val_42 +42 val_42 42 val_42 +42 val_42 42 val_42 +43 val_43 43 val_43 +44 val_44 44 val_44 +47 val_47 47 val_47 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +53 val_53 53 val_53 +54 val_54 54 val_54 +57 val_57 57 val_57 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +64 val_64 64 val_64 +65 val_65 65 val_65 +66 val_66 66 val_66 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +69 val_69 69 val_69 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +74 val_74 74 val_74 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +77 val_77 77 val_77 +78 val_78 78 val_78 +80 val_80 80 val_80 +82 val_82 82 val_82 +83 val_83 83 val_83 +83 val_83 83 val_83 +83 val_83 83 val_83 +83 val_83 83 val_83 +84 val_84 84 val_84 +84 val_84 84 val_84 +84 val_84 84 val_84 +84 val_84 84 val_84 +85 val_85 85 val_85 +86 val_86 86 val_86 +87 val_87 87 val_87 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +92 val_92 92 val_92 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +96 val_96 96 val_96 +97 val_97 97 val_97 +97 val_97 97 val_97 +97 val_97 97 val_97 +97 val_97 97 val_97 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +103 val_103 103 val_103 +103 val_103 103 val_103 +103 val_103 103 val_103 +103 val_103 103 val_103 +104 val_104 104 val_104 +104 val_104 104 val_104 +104 val_104 104 val_104 +104 val_104 104 val_104 +105 val_105 105 val_105 +111 val_111 111 val_111 +113 val_113 113 val_113 +113 val_113 113 val_113 +113 val_113 113 val_113 +113 val_113 113 val_113 +114 val_114 114 val_114 +116 val_116 116 val_116 +118 val_118 118 val_118 +118 val_118 118 val_118 +118 val_118 118 val_118 +118 val_118 118 val_118 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +120 val_120 120 val_120 +120 val_120 120 val_120 +120 val_120 120 val_120 +120 val_120 120 val_120 +125 val_125 125 val_125 +125 val_125 125 val_125 +125 val_125 125 val_125 +125 val_125 125 val_125 +126 val_126 126 val_126 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +129 val_129 129 val_129 +129 val_129 129 val_129 +129 val_129 129 val_129 +129 val_129 129 val_129 +131 val_131 131 val_131 +133 val_133 133 val_133 +134 val_134 134 val_134 +134 val_134 134 val_134 +134 val_134 134 val_134 +134 val_134 134 val_134 +136 val_136 136 val_136 +137 val_137 137 val_137 +137 val_137 137 val_137 +137 val_137 137 val_137 +137 val_137 137 val_137 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +143 val_143 143 val_143 +145 val_145 145 val_145 +146 val_146 146 val_146 +146 val_146 146 val_146 +146 val_146 146 val_146 +146 val_146 146 val_146 +149 val_149 149 val_149 +149 val_149 149 val_149 +149 val_149 149 val_149 +149 val_149 149 val_149 +150 val_150 150 val_150 +152 val_152 152 val_152 +152 val_152 152 val_152 +152 val_152 152 val_152 +152 val_152 152 val_152 +153 val_153 153 val_153 +155 val_155 155 val_155 +156 val_156 156 val_156 +157 val_157 157 val_157 +158 val_158 158 val_158 +160 val_160 160 val_160 +162 val_162 162 val_162 +163 val_163 163 val_163 +164 val_164 164 val_164 +164 val_164 164 val_164 +164 val_164 164 val_164 +164 val_164 164 val_164 +165 val_165 165 val_165 +165 val_165 165 val_165 +165 val_165 165 val_165 +165 val_165 165 val_165 +166 val_166 166 val_166 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +168 val_168 168 val_168 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +170 val_170 170 val_170 +172 val_172 172 val_172 +172 val_172 172 val_172 +172 val_172 172 val_172 +172 val_172 172 val_172 +174 val_174 174 val_174 +174 val_174 174 val_174 +174 val_174 174 val_174 +174 val_174 174 val_174 +175 val_175 175 val_175 +175 val_175 175 val_175 +175 val_175 175 val_175 +175 val_175 175 val_175 +176 val_176 176 val_176 +176 val_176 176 val_176 +176 val_176 176 val_176 +176 val_176 176 val_176 +177 val_177 177 val_177 +178 val_178 178 val_178 +179 val_179 179 val_179 +179 val_179 179 val_179 +179 val_179 179 val_179 +179 val_179 179 val_179 +180 val_180 180 val_180 +181 val_181 181 val_181 +183 val_183 183 val_183 +186 val_186 186 val_186 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +189 val_189 189 val_189 +190 val_190 190 val_190 +191 val_191 191 val_191 +191 val_191 191 val_191 +191 val_191 191 val_191 +191 val_191 191 val_191 +192 val_192 192 val_192 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +194 val_194 194 val_194 +195 val_195 195 val_195 +195 val_195 195 val_195 +195 val_195 195 val_195 +195 val_195 195 val_195 +196 val_196 196 val_196 +197 val_197 197 val_197 +197 val_197 197 val_197 +197 val_197 197 val_197 +197 val_197 197 val_197 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +200 val_200 200 val_200 +200 val_200 200 val_200 +200 val_200 200 val_200 +200 val_200 200 val_200 +201 val_201 201 val_201 +202 val_202 202 val_202 +203 val_203 203 val_203 +203 val_203 203 val_203 +203 val_203 203 val_203 +203 val_203 203 val_203 +205 val_205 205 val_205 +205 val_205 205 val_205 +205 val_205 205 val_205 +205 val_205 205 val_205 +207 val_207 207 val_207 +207 val_207 207 val_207 +207 val_207 207 val_207 +207 val_207 207 val_207 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +209 val_209 209 val_209 +209 val_209 209 val_209 +209 val_209 209 val_209 +209 val_209 209 val_209 +213 val_213 213 val_213 +213 val_213 213 val_213 +213 val_213 213 val_213 +213 val_213 213 val_213 +214 val_214 214 val_214 +216 val_216 216 val_216 +216 val_216 216 val_216 +216 val_216 216 val_216 +216 val_216 216 val_216 +217 val_217 217 val_217 +217 val_217 217 val_217 +217 val_217 217 val_217 +217 val_217 217 val_217 +218 val_218 218 val_218 +219 val_219 219 val_219 +219 val_219 219 val_219 +219 val_219 219 val_219 +219 val_219 219 val_219 +221 val_221 221 val_221 +221 val_221 221 val_221 +221 val_221 221 val_221 +221 val_221 221 val_221 +222 val_222 222 val_222 +223 val_223 223 val_223 +223 val_223 223 val_223 +223 val_223 223 val_223 +223 val_223 223 val_223 +224 val_224 224 val_224 +224 val_224 224 val_224 +224 val_224 224 val_224 +224 val_224 224 val_224 +226 val_226 226 val_226 +228 val_228 228 val_228 +229 val_229 229 val_229 +229 val_229 229 val_229 +229 val_229 229 val_229 +229 val_229 229 val_229 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +233 val_233 233 val_233 +233 val_233 233 val_233 +233 val_233 233 val_233 +233 val_233 233 val_233 +235 val_235 235 val_235 +237 val_237 237 val_237 +237 val_237 237 val_237 +237 val_237 237 val_237 +237 val_237 237 val_237 +238 val_238 238 val_238 +238 val_238 238 val_238 +238 val_238 238 val_238 +238 val_238 238 val_238 +239 val_239 239 val_239 +239 val_239 239 val_239 +239 val_239 239 val_239 +239 val_239 239 val_239 +241 val_241 241 val_241 +242 val_242 242 val_242 +242 val_242 242 val_242 +242 val_242 242 val_242 +242 val_242 242 val_242 +244 val_244 244 val_244 +247 val_247 247 val_247 +248 val_248 248 val_248 +249 val_249 249 val_249 +252 val_252 252 val_252 +255 val_255 255 val_255 +255 val_255 255 val_255 +255 val_255 255 val_255 +255 val_255 255 val_255 +256 val_256 256 val_256 +256 val_256 256 val_256 +256 val_256 256 val_256 +256 val_256 256 val_256 +257 val_257 257 val_257 +258 val_258 258 val_258 +260 val_260 260 val_260 +262 val_262 262 val_262 +263 val_263 263 val_263 +265 val_265 265 val_265 +265 val_265 265 val_265 +265 val_265 265 val_265 +265 val_265 265 val_265 +266 val_266 266 val_266 +272 val_272 272 val_272 +272 val_272 272 val_272 +272 val_272 272 val_272 +272 val_272 272 val_272 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +274 val_274 274 val_274 +275 val_275 275 val_275 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +278 val_278 278 val_278 +278 val_278 278 val_278 +278 val_278 278 val_278 +278 val_278 278 val_278 +280 val_280 280 val_280 +280 val_280 280 val_280 +280 val_280 280 val_280 +280 val_280 280 val_280 +281 val_281 281 val_281 +281 val_281 281 val_281 +281 val_281 281 val_281 +281 val_281 281 val_281 +282 val_282 282 val_282 +282 val_282 282 val_282 +282 val_282 282 val_282 +282 val_282 282 val_282 +283 val_283 283 val_283 +284 val_284 284 val_284 +285 val_285 285 val_285 +286 val_286 286 val_286 +287 val_287 287 val_287 +288 val_288 288 val_288 +288 val_288 288 val_288 +288 val_288 288 val_288 +288 val_288 288 val_288 +289 val_289 289 val_289 +291 val_291 291 val_291 +292 val_292 292 val_292 +296 val_296 296 val_296 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +302 val_302 302 val_302 +305 val_305 305 val_305 +306 val_306 306 val_306 +307 val_307 307 val_307 +307 val_307 307 val_307 +307 val_307 307 val_307 +307 val_307 307 val_307 +308 val_308 308 val_308 +309 val_309 309 val_309 +309 val_309 309 val_309 +309 val_309 309 val_309 +309 val_309 309 val_309 +310 val_310 310 val_310 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +315 val_315 315 val_315 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +317 val_317 317 val_317 +317 val_317 317 val_317 +317 val_317 317 val_317 +317 val_317 317 val_317 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +321 val_321 321 val_321 +321 val_321 321 val_321 +321 val_321 321 val_321 +321 val_321 321 val_321 +322 val_322 322 val_322 +322 val_322 322 val_322 +322 val_322 322 val_322 +322 val_322 322 val_322 +323 val_323 323 val_323 +325 val_325 325 val_325 +325 val_325 325 val_325 +325 val_325 325 val_325 +325 val_325 325 val_325 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +331 val_331 331 val_331 +331 val_331 331 val_331 +331 val_331 331 val_331 +331 val_331 331 val_331 +332 val_332 332 val_332 +333 val_333 333 val_333 +333 val_333 333 val_333 +333 val_333 333 val_333 +333 val_333 333 val_333 +335 val_335 335 val_335 +336 val_336 336 val_336 +338 val_338 338 val_338 +339 val_339 339 val_339 +341 val_341 341 val_341 +342 val_342 342 val_342 +342 val_342 342 val_342 +342 val_342 342 val_342 +342 val_342 342 val_342 +344 val_344 344 val_344 +344 val_344 344 val_344 +344 val_344 344 val_344 +344 val_344 344 val_344 +345 val_345 345 val_345 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +351 val_351 351 val_351 +353 val_353 353 val_353 +353 val_353 353 val_353 +353 val_353 353 val_353 +353 val_353 353 val_353 +356 val_356 356 val_356 +360 val_360 360 val_360 +362 val_362 362 val_362 +364 val_364 364 val_364 +365 val_365 365 val_365 +366 val_366 366 val_366 +367 val_367 367 val_367 +367 val_367 367 val_367 +367 val_367 367 val_367 +367 val_367 367 val_367 +368 val_368 368 val_368 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +373 val_373 373 val_373 +374 val_374 374 val_374 +375 val_375 375 val_375 +377 val_377 377 val_377 +378 val_378 378 val_378 +379 val_379 379 val_379 +382 val_382 382 val_382 +382 val_382 382 val_382 +382 val_382 382 val_382 +382 val_382 382 val_382 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +386 val_386 386 val_386 +389 val_389 389 val_389 +392 val_392 392 val_392 +393 val_393 393 val_393 +394 val_394 394 val_394 +395 val_395 395 val_395 +395 val_395 395 val_395 +395 val_395 395 val_395 +395 val_395 395 val_395 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +397 val_397 397 val_397 +397 val_397 397 val_397 +397 val_397 397 val_397 +397 val_397 397 val_397 +399 val_399 399 val_399 +399 val_399 399 val_399 +399 val_399 399 val_399 +399 val_399 399 val_399 +400 val_400 400 val_400 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +402 val_402 402 val_402 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +404 val_404 404 val_404 +404 val_404 404 val_404 +404 val_404 404 val_404 +404 val_404 404 val_404 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +407 val_407 407 val_407 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +411 val_411 411 val_411 +413 val_413 413 val_413 +413 val_413 413 val_413 +413 val_413 413 val_413 +413 val_413 413 val_413 +414 val_414 414 val_414 +414 val_414 414 val_414 +414 val_414 414 val_414 +414 val_414 414 val_414 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +418 val_418 418 val_418 +419 val_419 419 val_419 +421 val_421 421 val_421 +424 val_424 424 val_424 +424 val_424 424 val_424 +424 val_424 424 val_424 +424 val_424 424 val_424 +427 val_427 427 val_427 +429 val_429 429 val_429 +429 val_429 429 val_429 +429 val_429 429 val_429 +429 val_429 429 val_429 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +432 val_432 432 val_432 +435 val_435 435 val_435 +436 val_436 436 val_436 +437 val_437 437 val_437 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +439 val_439 439 val_439 +439 val_439 439 val_439 +439 val_439 439 val_439 +439 val_439 439 val_439 +443 val_443 443 val_443 +444 val_444 444 val_444 +446 val_446 446 val_446 +448 val_448 448 val_448 +449 val_449 449 val_449 +452 val_452 452 val_452 +453 val_453 453 val_453 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +455 val_455 455 val_455 +457 val_457 457 val_457 +458 val_458 458 val_458 +458 val_458 458 val_458 +458 val_458 458 val_458 +458 val_458 458 val_458 +459 val_459 459 val_459 +459 val_459 459 val_459 +459 val_459 459 val_459 +459 val_459 459 val_459 +460 val_460 460 val_460 +462 val_462 462 val_462 +462 val_462 462 val_462 +462 val_462 462 val_462 +462 val_462 462 val_462 +463 val_463 463 val_463 +463 val_463 463 val_463 +463 val_463 463 val_463 +463 val_463 463 val_463 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +467 val_467 467 val_467 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +470 val_470 470 val_470 +472 val_472 472 val_472 +475 val_475 475 val_475 +477 val_477 477 val_477 +478 val_478 478 val_478 +478 val_478 478 val_478 +478 val_478 478 val_478 +478 val_478 478 val_478 +479 val_479 479 val_479 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +481 val_481 481 val_481 +482 val_482 482 val_482 +483 val_483 483 val_483 +484 val_484 484 val_484 +485 val_485 485 val_485 +487 val_487 487 val_487 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +490 val_490 490 val_490 +491 val_491 491 val_491 +492 val_492 492 val_492 +492 val_492 492 val_492 +492 val_492 492 val_492 +492 val_492 492 val_492 +493 val_493 493 val_493 +494 val_494 494 val_494 +495 val_495 495 val_495 +496 val_496 496 val_496 +497 val_497 497 val_497 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join16-0-1bec3b0892d5c4a174d1b39f6d1b610c b/sql/hive/src/test/resources/golden/join16-0-1bec3b0892d5c4a174d1b39f6d1b610c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join17-0-387dd86b1e13f788ec677a08dc162c97 b/sql/hive/src/test/resources/golden/join17-0-387dd86b1e13f788ec677a08dc162c97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join17-1-37cef87fe56f66692799ccda8cda2e8b b/sql/hive/src/test/resources/golden/join17-1-37cef87fe56f66692799ccda8cda2e8b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join17-2-478a9f270a5d70f6f82f81e6962fb251 b/sql/hive/src/test/resources/golden/join17-2-478a9f270a5d70f6f82f81e6962fb251 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join17-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/join17-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..66fafbdf72b63 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join17-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,1028 @@ +238 val_238 238 val_238 +238 val_238 238 val_238 +86 val_86 86 val_86 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +27 val_27 27 val_27 +165 val_165 165 val_165 +165 val_165 165 val_165 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +255 val_255 255 val_255 +255 val_255 255 val_255 +278 val_278 278 val_278 +278 val_278 278 val_278 +98 val_98 98 val_98 +98 val_98 98 val_98 +484 val_484 484 val_484 +265 val_265 265 val_265 +265 val_265 265 val_265 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +150 val_150 150 val_150 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +224 val_224 224 val_224 +224 val_224 224 val_224 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +66 val_66 66 val_66 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +213 val_213 213 val_213 +213 val_213 213 val_213 +146 val_146 146 val_146 +146 val_146 146 val_146 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +429 val_429 429 val_429 +429 val_429 429 val_429 +374 val_374 374 val_374 +152 val_152 152 val_152 +152 val_152 152 val_152 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +145 val_145 145 val_145 +495 val_495 495 val_495 +37 val_37 37 val_37 +37 val_37 37 val_37 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +281 val_281 281 val_281 +281 val_281 281 val_281 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +209 val_209 209 val_209 +209 val_209 209 val_209 +15 val_15 15 val_15 +15 val_15 15 val_15 +82 val_82 82 val_82 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +166 val_166 166 val_166 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +252 val_252 252 val_252 +292 val_292 292 val_292 +219 val_219 219 val_219 +219 val_219 219 val_219 +287 val_287 287 val_287 +153 val_153 153 val_153 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +338 val_338 338 val_338 +446 val_446 446 val_446 +459 val_459 459 val_459 +459 val_459 459 val_459 +394 val_394 394 val_394 +237 val_237 237 val_237 +237 val_237 237 val_237 +482 val_482 482 val_482 +174 val_174 174 val_174 +174 val_174 174 val_174 +413 val_413 413 val_413 +413 val_413 413 val_413 +494 val_494 494 val_494 +207 val_207 207 val_207 +207 val_207 207 val_207 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +174 val_174 174 val_174 +174 val_174 174 val_174 +399 val_399 399 val_399 +399 val_399 399 val_399 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +247 val_247 247 val_247 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +162 val_162 162 val_162 +377 val_377 377 val_377 +397 val_397 397 val_397 +397 val_397 397 val_397 +309 val_309 309 val_309 +309 val_309 309 val_309 +365 val_365 365 val_365 +266 val_266 266 val_266 +439 val_439 439 val_439 +439 val_439 439 val_439 +342 val_342 342 val_342 +342 val_342 342 val_342 +367 val_367 367 val_367 +367 val_367 367 val_367 +325 val_325 325 val_325 +325 val_325 325 val_325 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +195 val_195 195 val_195 +195 val_195 195 val_195 +475 val_475 475 val_475 +17 val_17 17 val_17 +113 val_113 113 val_113 +113 val_113 113 val_113 +155 val_155 155 val_155 +203 val_203 203 val_203 +203 val_203 203 val_203 +339 val_339 339 val_339 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +455 val_455 455 val_455 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +57 val_57 57 val_57 +302 val_302 302 val_302 +205 val_205 205 val_205 +205 val_205 205 val_205 +149 val_149 149 val_149 +149 val_149 149 val_149 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +345 val_345 345 val_345 +129 val_129 129 val_129 +129 val_129 129 val_129 +170 val_170 170 val_170 +20 val_20 20 val_20 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +157 val_157 157 val_157 +378 val_378 378 val_378 +221 val_221 221 val_221 +221 val_221 221 val_221 +92 val_92 92 val_92 +111 val_111 111 val_111 +47 val_47 47 val_47 +72 val_72 72 val_72 +72 val_72 72 val_72 +4 val_4 4 val_4 +280 val_280 280 val_280 +280 val_280 280 val_280 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +427 val_427 427 val_427 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +356 val_356 356 val_356 +399 val_399 399 val_399 +399 val_399 399 val_399 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +382 val_382 382 val_382 +382 val_382 382 val_382 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +125 val_125 125 val_125 +125 val_125 125 val_125 +386 val_386 386 val_386 +437 val_437 437 val_437 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +192 val_192 192 val_192 +286 val_286 286 val_286 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +176 val_176 176 val_176 +176 val_176 176 val_176 +54 val_54 54 val_54 +459 val_459 459 val_459 +459 val_459 459 val_459 +51 val_51 51 val_51 +51 val_51 51 val_51 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +103 val_103 103 val_103 +103 val_103 103 val_103 +239 val_239 239 val_239 +239 val_239 239 val_239 +213 val_213 213 val_213 +213 val_213 213 val_213 +216 val_216 216 val_216 +216 val_216 216 val_216 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +278 val_278 278 val_278 +278 val_278 278 val_278 +176 val_176 176 val_176 +176 val_176 176 val_176 +289 val_289 289 val_289 +221 val_221 221 val_221 +221 val_221 221 val_221 +65 val_65 65 val_65 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +332 val_332 332 val_332 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +275 val_275 275 val_275 +137 val_137 137 val_137 +137 val_137 137 val_137 +241 val_241 241 val_241 +83 val_83 83 val_83 +83 val_83 83 val_83 +333 val_333 333 val_333 +333 val_333 333 val_333 +180 val_180 180 val_180 +284 val_284 284 val_284 +12 val_12 12 val_12 +12 val_12 12 val_12 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +181 val_181 181 val_181 +67 val_67 67 val_67 +67 val_67 67 val_67 +260 val_260 260 val_260 +404 val_404 404 val_404 +404 val_404 404 val_404 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +353 val_353 353 val_353 +353 val_353 353 val_353 +373 val_373 373 val_373 +272 val_272 272 val_272 +272 val_272 272 val_272 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +217 val_217 217 val_217 +217 val_217 217 val_217 +84 val_84 84 val_84 +84 val_84 84 val_84 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +58 val_58 58 val_58 +58 val_58 58 val_58 +8 val_8 8 val_8 +411 val_411 411 val_411 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +24 val_24 24 val_24 +24 val_24 24 val_24 +463 val_463 463 val_463 +463 val_463 463 val_463 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +179 val_179 179 val_179 +179 val_179 179 val_179 +172 val_172 172 val_172 +172 val_172 172 val_172 +42 val_42 42 val_42 +42 val_42 42 val_42 +129 val_129 129 val_129 +129 val_129 129 val_129 +158 val_158 158 val_158 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +496 val_496 496 val_496 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +322 val_322 322 val_322 +322 val_322 322 val_322 +197 val_197 197 val_197 +197 val_197 197 val_197 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +393 val_393 393 val_393 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +191 val_191 191 val_191 +191 val_191 191 val_191 +418 val_418 418 val_418 +96 val_96 96 val_96 +26 val_26 26 val_26 +26 val_26 26 val_26 +165 val_165 165 val_165 +165 val_165 165 val_165 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +205 val_205 205 val_205 +205 val_205 205 val_205 +120 val_120 120 val_120 +120 val_120 120 val_120 +131 val_131 131 val_131 +51 val_51 51 val_51 +51 val_51 51 val_51 +404 val_404 404 val_404 +404 val_404 404 val_404 +43 val_43 43 val_43 +436 val_436 436 val_436 +156 val_156 156 val_156 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +308 val_308 308 val_308 +95 val_95 95 val_95 +95 val_95 95 val_95 +196 val_196 196 val_196 +288 val_288 288 val_288 +288 val_288 288 val_288 +481 val_481 481 val_481 +457 val_457 457 val_457 +98 val_98 98 val_98 +98 val_98 98 val_98 +282 val_282 282 val_282 +282 val_282 282 val_282 +197 val_197 197 val_197 +197 val_197 197 val_197 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +470 val_470 470 val_470 +137 val_137 137 val_137 +137 val_137 137 val_137 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +413 val_413 413 val_413 +413 val_413 413 val_413 +85 val_85 85 val_85 +77 val_77 77 val_77 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +490 val_490 490 val_490 +87 val_87 87 val_87 +364 val_364 364 val_364 +179 val_179 179 val_179 +179 val_179 179 val_179 +118 val_118 118 val_118 +118 val_118 118 val_118 +134 val_134 134 val_134 +134 val_134 134 val_134 +395 val_395 395 val_395 +395 val_395 395 val_395 +282 val_282 282 val_282 +282 val_282 282 val_282 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +238 val_238 238 val_238 +238 val_238 238 val_238 +419 val_419 419 val_419 +15 val_15 15 val_15 +15 val_15 15 val_15 +118 val_118 118 val_118 +118 val_118 118 val_118 +72 val_72 72 val_72 +72 val_72 72 val_72 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +307 val_307 307 val_307 +307 val_307 307 val_307 +19 val_19 19 val_19 +435 val_435 435 val_435 +10 val_10 10 val_10 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +306 val_306 306 val_306 +224 val_224 224 val_224 +224 val_224 224 val_224 +309 val_309 309 val_309 +309 val_309 309 val_309 +389 val_389 389 val_389 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +242 val_242 242 val_242 +242 val_242 242 val_242 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +392 val_392 392 val_392 +272 val_272 272 val_272 +272 val_272 272 val_272 +331 val_331 331 val_331 +331 val_331 331 val_331 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +242 val_242 242 val_242 +242 val_242 242 val_242 +452 val_452 452 val_452 +177 val_177 177 val_177 +226 val_226 226 val_226 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +497 val_497 497 val_497 +402 val_402 402 val_402 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +317 val_317 317 val_317 +317 val_317 317 val_317 +395 val_395 395 val_395 +395 val_395 395 val_395 +58 val_58 58 val_58 +58 val_58 58 val_58 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +336 val_336 336 val_336 +95 val_95 95 val_95 +95 val_95 95 val_95 +11 val_11 11 val_11 +168 val_168 168 val_168 +34 val_34 34 val_34 +229 val_229 229 val_229 +229 val_229 229 val_229 +233 val_233 233 val_233 +233 val_233 233 val_233 +143 val_143 143 val_143 +472 val_472 472 val_472 +322 val_322 322 val_322 +322 val_322 322 val_322 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +160 val_160 160 val_160 +195 val_195 195 val_195 +195 val_195 195 val_195 +42 val_42 42 val_42 +42 val_42 42 val_42 +321 val_321 321 val_321 +321 val_321 321 val_321 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +458 val_458 458 val_458 +458 val_458 458 val_458 +78 val_78 78 val_78 +76 val_76 76 val_76 +76 val_76 76 val_76 +41 val_41 41 val_41 +223 val_223 223 val_223 +223 val_223 223 val_223 +492 val_492 492 val_492 +492 val_492 492 val_492 +149 val_149 149 val_149 +149 val_149 149 val_149 +449 val_449 449 val_449 +218 val_218 218 val_218 +228 val_228 228 val_228 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +453 val_453 453 val_453 +30 val_30 30 val_30 +209 val_209 209 val_209 +209 val_209 209 val_209 +64 val_64 64 val_64 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +76 val_76 76 val_76 +76 val_76 76 val_76 +74 val_74 74 val_74 +342 val_342 342 val_342 +342 val_342 342 val_342 +69 val_69 69 val_69 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +33 val_33 33 val_33 +368 val_368 368 val_368 +103 val_103 103 val_103 +103 val_103 103 val_103 +296 val_296 296 val_296 +113 val_113 113 val_113 +113 val_113 113 val_113 +216 val_216 216 val_216 +216 val_216 216 val_216 +367 val_367 367 val_367 +367 val_367 367 val_367 +344 val_344 344 val_344 +344 val_344 344 val_344 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +274 val_274 274 val_274 +219 val_219 219 val_219 +219 val_219 219 val_219 +239 val_239 239 val_239 +239 val_239 239 val_239 +485 val_485 485 val_485 +116 val_116 116 val_116 +223 val_223 223 val_223 +223 val_223 223 val_223 +256 val_256 256 val_256 +256 val_256 256 val_256 +263 val_263 263 val_263 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +487 val_487 487 val_487 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +288 val_288 288 val_288 +288 val_288 288 val_288 +191 val_191 191 val_191 +191 val_191 191 val_191 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +244 val_244 244 val_244 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +467 val_467 467 val_467 +432 val_432 432 val_432 +202 val_202 202 val_202 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +229 val_229 229 val_229 +229 val_229 229 val_229 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +463 val_463 463 val_463 +463 val_463 463 val_463 +280 val_280 280 val_280 +280 val_280 280 val_280 +2 val_2 2 val_2 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +283 val_283 283 val_283 +331 val_331 331 val_331 +331 val_331 331 val_331 +235 val_235 235 val_235 +80 val_80 80 val_80 +44 val_44 44 val_44 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +321 val_321 321 val_321 +321 val_321 321 val_321 +335 val_335 335 val_335 +104 val_104 104 val_104 +104 val_104 104 val_104 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +366 val_366 366 val_366 +175 val_175 175 val_175 +175 val_175 175 val_175 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +483 val_483 483 val_483 +53 val_53 53 val_53 +105 val_105 105 val_105 +257 val_257 257 val_257 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +190 val_190 190 val_190 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +114 val_114 114 val_114 +258 val_258 258 val_258 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +203 val_203 203 val_203 +203 val_203 203 val_203 +262 val_262 262 val_262 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +424 val_424 424 val_424 +424 val_424 424 val_424 +12 val_12 12 val_12 +12 val_12 12 val_12 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +201 val_201 201 val_201 +217 val_217 217 val_217 +217 val_217 217 val_217 +164 val_164 164 val_164 +164 val_164 164 val_164 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +478 val_478 478 val_478 +478 val_478 478 val_478 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +125 val_125 125 val_125 +125 val_125 125 val_125 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +164 val_164 164 val_164 +164 val_164 164 val_164 +424 val_424 424 val_424 +424 val_424 424 val_424 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +382 val_382 382 val_382 +382 val_382 382 val_382 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +397 val_397 397 val_397 +397 val_397 397 val_397 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +291 val_291 291 val_291 +24 val_24 24 val_24 +24 val_24 24 val_24 +351 val_351 351 val_351 +255 val_255 255 val_255 +255 val_255 255 val_255 +104 val_104 104 val_104 +104 val_104 104 val_104 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +163 val_163 163 val_163 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +414 val_414 414 val_414 +414 val_414 414 val_414 +200 val_200 200 val_200 +200 val_200 200 val_200 +491 val_491 491 val_491 +237 val_237 237 val_237 +237 val_237 237 val_237 +439 val_439 439 val_439 +439 val_439 439 val_439 +360 val_360 360 val_360 +248 val_248 248 val_248 +479 val_479 479 val_479 +305 val_305 305 val_305 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +444 val_444 444 val_444 +120 val_120 120 val_120 +120 val_120 120 val_120 +429 val_429 429 val_429 +429 val_429 429 val_429 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +443 val_443 443 val_443 +323 val_323 323 val_323 +325 val_325 325 val_325 +325 val_325 325 val_325 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +478 val_478 478 val_478 +478 val_478 478 val_478 +178 val_178 178 val_178 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +310 val_310 310 val_310 +317 val_317 317 val_317 +317 val_317 317 val_317 +333 val_333 333 val_333 +333 val_333 333 val_333 +493 val_493 493 val_493 +460 val_460 460 val_460 +207 val_207 207 val_207 +207 val_207 207 val_207 +249 val_249 249 val_249 +265 val_265 265 val_265 +265 val_265 265 val_265 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +83 val_83 83 val_83 +83 val_83 83 val_83 +136 val_136 136 val_136 +353 val_353 353 val_353 +353 val_353 353 val_353 +172 val_172 172 val_172 +172 val_172 172 val_172 +214 val_214 214 val_214 +462 val_462 462 val_462 +462 val_462 462 val_462 +233 val_233 233 val_233 +233 val_233 233 val_233 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +133 val_133 133 val_133 +175 val_175 175 val_175 +175 val_175 175 val_175 +189 val_189 189 val_189 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +375 val_375 375 val_375 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +421 val_421 421 val_421 +407 val_407 407 val_407 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +256 val_256 256 val_256 +256 val_256 256 val_256 +26 val_26 26 val_26 +26 val_26 26 val_26 +134 val_134 134 val_134 +134 val_134 134 val_134 +67 val_67 67 val_67 +67 val_67 67 val_67 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +379 val_379 379 val_379 +18 val_18 18 val_18 +18 val_18 18 val_18 +462 val_462 462 val_462 +462 val_462 462 val_462 +492 val_492 492 val_492 +492 val_492 492 val_492 +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +9 val_9 9 val_9 +341 val_341 341 val_341 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +146 val_146 146 val_146 +146 val_146 146 val_146 +458 val_458 458 val_458 +458 val_458 458 val_458 +362 val_362 362 val_362 +186 val_186 186 val_186 +285 val_285 285 val_285 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +18 val_18 18 val_18 +18 val_18 18 val_18 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +183 val_183 183 val_183 +281 val_281 281 val_281 +281 val_281 281 val_281 +344 val_344 344 val_344 +344 val_344 344 val_344 +97 val_97 97 val_97 +97 val_97 97 val_97 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +315 val_315 315 val_315 +84 val_84 84 val_84 +84 val_84 84 val_84 +28 val_28 28 val_28 +37 val_37 37 val_37 +37 val_37 37 val_37 +448 val_448 448 val_448 +152 val_152 152 val_152 +152 val_152 152 val_152 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +307 val_307 307 val_307 +307 val_307 307 val_307 +194 val_194 194 val_194 +414 val_414 414 val_414 +414 val_414 414 val_414 +477 val_477 477 val_477 +222 val_222 222 val_222 +126 val_126 126 val_126 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +400 val_400 400 val_400 +200 val_200 200 val_200 +200 val_200 200 val_200 +97 val_97 97 val_97 +97 val_97 97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join18-0-269843197b598569f4b50cbe911960a5 b/sql/hive/src/test/resources/golden/join18-0-269843197b598569f4b50cbe911960a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join18-1-49f8ba8d43a6bb1d892ba66a812304f5 b/sql/hive/src/test/resources/golden/join18-1-49f8ba8d43a6bb1d892ba66a812304f5 new file mode 100644 index 0000000000000..10628f6c64bd4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join18-1-49f8ba8d43a6bb1d892ba66a812304f5 @@ -0,0 +1,310 @@ +NULL NULL NULL 7 +0 3 NULL NULL +2 1 NULL NULL +4 1 NULL NULL +5 3 NULL NULL +8 1 NULL NULL +9 1 NULL NULL +10 1 NULL NULL +11 1 NULL NULL +12 2 NULL NULL +15 2 NULL NULL +17 1 NULL NULL +18 2 NULL NULL +19 1 NULL NULL +20 1 NULL NULL +24 2 NULL NULL +26 2 NULL NULL +27 1 NULL NULL +28 1 NULL NULL +30 1 NULL NULL +33 1 NULL NULL +34 1 NULL NULL +35 3 NULL NULL +37 2 NULL NULL +41 1 NULL NULL +42 2 NULL NULL +43 1 NULL NULL +44 1 NULL NULL +47 1 NULL NULL +51 2 NULL NULL +53 1 NULL NULL +54 1 NULL NULL +57 1 NULL NULL +58 2 NULL NULL +64 1 NULL NULL +65 1 NULL NULL +66 1 66 1 +67 2 NULL NULL +69 1 NULL NULL +70 3 NULL NULL +72 2 NULL NULL +74 1 NULL NULL +76 2 NULL NULL +77 1 NULL NULL +78 1 NULL NULL +80 1 NULL NULL +82 1 NULL NULL +83 2 NULL NULL +84 2 NULL NULL +85 1 NULL NULL +86 1 NULL NULL +87 1 NULL NULL +90 3 NULL NULL +92 1 NULL NULL +95 2 NULL NULL +96 1 NULL NULL +97 2 NULL NULL +98 2 98 1 +100 2 NULL NULL +103 2 NULL NULL +104 2 NULL NULL +105 1 NULL NULL +111 1 NULL NULL +113 2 NULL NULL +114 1 NULL NULL +116 1 NULL NULL +118 2 NULL NULL +119 3 NULL NULL +120 2 NULL NULL +125 2 NULL NULL +126 1 NULL NULL +128 3 128 1 +129 2 NULL NULL +131 1 NULL NULL +133 1 NULL NULL +134 2 NULL NULL +136 1 NULL NULL +137 2 NULL NULL +138 4 NULL NULL +143 1 NULL NULL +145 1 NULL NULL +146 2 146 1 +149 2 NULL NULL +150 1 150 1 +152 2 NULL NULL +153 1 NULL NULL +155 1 NULL NULL +156 1 NULL NULL +157 1 NULL NULL +158 1 NULL NULL +160 1 NULL NULL +162 1 NULL NULL +163 1 NULL NULL +164 2 NULL NULL +165 2 NULL NULL +166 1 NULL NULL +167 3 NULL NULL +168 1 NULL NULL +169 4 NULL NULL +170 1 NULL NULL +172 2 NULL NULL +174 2 NULL NULL +175 2 NULL NULL +176 2 NULL NULL +177 1 NULL NULL +178 1 NULL NULL +179 2 NULL NULL +180 1 NULL NULL +181 1 NULL NULL +183 1 NULL NULL +186 1 NULL NULL +187 3 NULL NULL +189 1 NULL NULL +190 1 NULL NULL +191 2 NULL NULL +192 1 NULL NULL +193 3 NULL NULL +194 1 NULL NULL +195 2 NULL NULL +196 1 NULL NULL +197 2 NULL NULL +199 3 NULL NULL +200 2 NULL NULL +201 1 NULL NULL +202 1 NULL NULL +203 2 NULL NULL +205 2 NULL NULL +207 2 NULL NULL +208 3 NULL NULL +209 2 NULL NULL +213 2 213 1 +214 1 NULL NULL +216 2 NULL NULL +217 2 NULL NULL +218 1 NULL NULL +219 2 NULL NULL +221 2 NULL NULL +222 1 NULL NULL +223 2 NULL NULL +224 2 224 1 +226 1 NULL NULL +228 1 NULL NULL +229 2 NULL NULL +230 5 NULL NULL +233 2 NULL NULL +235 1 NULL NULL +237 2 NULL NULL +238 2 238 1 +239 2 NULL NULL +241 1 NULL NULL +242 2 NULL NULL +244 1 NULL NULL +247 1 NULL NULL +248 1 NULL NULL +249 1 NULL NULL +252 1 NULL NULL +255 2 255 1 +256 2 NULL NULL +257 1 NULL NULL +258 1 NULL NULL +260 1 NULL NULL +262 1 NULL NULL +263 1 NULL NULL +265 2 NULL NULL +266 1 NULL NULL +272 2 NULL NULL +273 3 273 1 +274 1 NULL NULL +275 1 NULL NULL +277 4 NULL NULL +278 2 278 1 +280 2 NULL NULL +281 2 NULL NULL +282 2 NULL NULL +283 1 NULL NULL +284 1 NULL NULL +285 1 NULL NULL +286 1 NULL NULL +287 1 NULL NULL +288 2 NULL NULL +289 1 NULL NULL +291 1 NULL NULL +292 1 NULL NULL +296 1 NULL NULL +298 3 NULL NULL +302 1 NULL NULL +305 1 NULL NULL +306 1 NULL NULL +307 2 NULL NULL +308 1 NULL NULL +309 2 NULL NULL +310 1 NULL NULL +311 3 311 1 +315 1 NULL NULL +316 3 NULL NULL +317 2 NULL NULL +318 3 NULL NULL +321 2 NULL NULL +322 2 NULL NULL +323 1 NULL NULL +325 2 NULL NULL +327 3 NULL NULL +331 2 NULL NULL +332 1 NULL NULL +333 2 NULL NULL +335 1 NULL NULL +336 1 NULL NULL +338 1 NULL NULL +339 1 NULL NULL +341 1 NULL NULL +342 2 NULL NULL +344 2 NULL NULL +345 1 NULL NULL +348 5 NULL NULL +351 1 NULL NULL +353 2 NULL NULL +356 1 NULL NULL +360 1 NULL NULL +362 1 NULL NULL +364 1 NULL NULL +365 1 NULL NULL +366 1 NULL NULL +367 2 NULL NULL +368 1 NULL NULL +369 3 369 1 +373 1 NULL NULL +374 1 NULL NULL +375 1 NULL NULL +377 1 NULL NULL +378 1 NULL NULL +379 1 NULL NULL +382 2 NULL NULL +384 3 NULL NULL +386 1 NULL NULL +389 1 NULL NULL +392 1 NULL NULL +393 1 NULL NULL +394 1 NULL NULL +395 2 NULL NULL +396 3 NULL NULL +397 2 NULL NULL +399 2 NULL NULL +400 1 NULL NULL +401 5 401 1 +402 1 NULL NULL +403 3 NULL NULL +404 2 NULL NULL +406 4 406 1 +407 1 NULL NULL +409 3 NULL NULL +411 1 NULL NULL +413 2 NULL NULL +414 2 NULL NULL +417 3 NULL NULL +418 1 NULL NULL +419 1 NULL NULL +421 1 NULL NULL +424 2 NULL NULL +427 1 NULL NULL +429 2 NULL NULL +430 3 NULL NULL +431 3 NULL NULL +432 1 NULL NULL +435 1 NULL NULL +436 1 NULL NULL +437 1 NULL NULL +438 3 NULL NULL +439 2 NULL NULL +443 1 NULL NULL +444 1 NULL NULL +446 1 NULL NULL +448 1 NULL NULL +449 1 NULL NULL +452 1 NULL NULL +453 1 NULL NULL +454 3 NULL NULL +455 1 NULL NULL +457 1 NULL NULL +458 2 NULL NULL +459 2 NULL NULL +460 1 NULL NULL +462 2 NULL NULL +463 2 NULL NULL +466 3 NULL NULL +467 1 NULL NULL +468 4 NULL NULL +469 5 NULL NULL +470 1 NULL NULL +472 1 NULL NULL +475 1 NULL NULL +477 1 NULL NULL +478 2 NULL NULL +479 1 NULL NULL +480 3 NULL NULL +481 1 NULL NULL +482 1 NULL NULL +483 1 NULL NULL +484 1 NULL NULL +485 1 NULL NULL +487 1 NULL NULL +489 4 NULL NULL +490 1 NULL NULL +491 1 NULL NULL +492 2 NULL NULL +493 1 NULL NULL +494 1 NULL NULL +495 1 NULL NULL +496 1 NULL NULL +497 1 NULL NULL +498 3 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join19-0-26ba1cd9acfcd799239da60c38e68a39 b/sql/hive/src/test/resources/golden/join19-0-26ba1cd9acfcd799239da60c38e68a39 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join19-1-7e7d1f07c34dd4be5425264196201766 b/sql/hive/src/test/resources/golden/join19-1-7e7d1f07c34dd4be5425264196201766 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join2-0-3d1692c4710db1ff716d35e921f2bcca b/sql/hive/src/test/resources/golden/join2-0-3d1692c4710db1ff716d35e921f2bcca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join2-1-87896c3f04a259b81b1cfde3eec7d64c b/sql/hive/src/test/resources/golden/join2-1-87896c3f04a259b81b1cfde3eec7d64c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join2-2-d4673c03d04084b838fcd8149f59ad9a b/sql/hive/src/test/resources/golden/join2-2-d4673c03d04084b838fcd8149f59ad9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join2-3-cac2c9e0f8601dd56822c990774e0696 b/sql/hive/src/test/resources/golden/join2-3-cac2c9e0f8601dd56822c990774e0696 new file mode 100644 index 0000000000000..2945c31ed4f00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join2-3-cac2c9e0f8601dd56822c990774e0696 @@ -0,0 +1,472 @@ +86 val_172 +86 val_172 +27 val_54 +98 val_196 +98 val_196 +193 val_386 +193 val_386 +193 val_386 +224 val_448 +224 val_448 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +146 val_292 +146 val_292 +37 val_74 +37 val_74 +209 val_418 +209 val_418 +15 val_30 +15 val_30 +82 val_164 +82 val_164 +166 val_332 +219 val_438 +219 val_438 +219 val_438 +219 val_438 +219 val_438 +219 val_438 +153 val_306 +193 val_386 +193 val_386 +193 val_386 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +207 val_414 +207 val_414 +207 val_414 +207 val_414 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +174 val_348 +247 val_494 +17 val_34 +113 val_226 +113 val_226 +155 val_310 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +57 val_114 +149 val_298 +149 val_298 +149 val_298 +149 val_298 +149 val_298 +149 val_298 +129 val_258 +129 val_258 +111 val_222 +4 val_8 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +169 val_338 +169 val_338 +169 val_338 +169 val_338 +192 val_384 +192 val_384 +192 val_384 +187 val_374 +187 val_374 +187 val_374 +239 val_478 +239 val_478 +239 val_478 +239 val_478 +216 val_432 +216 val_432 +137 val_274 +137 val_274 +241 val_482 +83 val_166 +83 val_166 +180 val_360 +12 val_24 +12 val_24 +12 val_24 +12 val_24 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +181 val_362 +67 val_134 +67 val_134 +67 val_134 +67 val_134 +84 val_168 +84 val_168 +58 val_116 +58 val_116 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +172 val_344 +172 val_344 +172 val_344 +172 val_344 +42 val_84 +42 val_84 +42 val_84 +42 val_84 +129 val_258 +129 val_258 +158 val_316 +158 val_316 +158 val_316 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +197 val_394 +197 val_394 +100 val_200 +100 val_200 +100 val_200 +100 val_200 +191 val_382 +191 val_382 +191 val_382 +191 val_382 +96 val_192 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +131 val_262 +43 val_86 +95 val_190 +95 val_190 +196 val_392 +98 val_196 +98 val_196 +197 val_394 +197 val_394 +187 val_374 +187 val_374 +187 val_374 +137 val_274 +137 val_274 +169 val_338 +169 val_338 +169 val_338 +169 val_338 +85 val_170 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +87 val_174 +87 val_174 +15 val_30 +15 val_30 +90 val_180 +90 val_180 +90 val_180 +10 val_20 +224 val_448 +224 val_448 +242 val_484 +242 val_484 +242 val_484 +242 val_484 +226 val_452 +5 val_10 +5 val_10 +5 val_10 +58 val_116 +58 val_116 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +95 val_190 +95 val_190 +168 val_336 +229 val_458 +229 val_458 +229 val_458 +229 val_458 +233 val_466 +233 val_466 +233 val_466 +233 val_466 +233 val_466 +233 val_466 +143 val_286 +42 val_84 +42 val_84 +42 val_84 +42 val_84 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +78 val_156 +76 val_152 +76 val_152 +76 val_152 +76 val_152 +41 val_82 +223 val_446 +223 val_446 +149 val_298 +149 val_298 +149 val_298 +149 val_298 +149 val_298 +149 val_298 +218 val_436 +209 val_418 +209 val_418 +64 val_128 +64 val_128 +64 val_128 +76 val_152 +76 val_152 +76 val_152 +76 val_152 +69 val_138 +69 val_138 +69 val_138 +69 val_138 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +33 val_66 +113 val_226 +113 val_226 +216 val_432 +216 val_432 +219 val_438 +219 val_438 +219 val_438 +219 val_438 +219 val_438 +219 val_438 +239 val_478 +239 val_478 +239 val_478 +239 val_478 +223 val_446 +223 val_446 +191 val_382 +191 val_382 +191 val_382 +191 val_382 +5 val_10 +5 val_10 +5 val_10 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +128 val_256 +202 val_404 +202 val_404 +229 val_458 +229 val_458 +229 val_458 +229 val_458 +2 val_4 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +35 val_70 +235 val_470 +80 val_160 +193 val_386 +193 val_386 +193 val_386 +104 val_208 +104 val_208 +104 val_208 +104 val_208 +104 val_208 +104 val_208 +114 val_228 +90 val_180 +90 val_180 +90 val_180 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +203 val_406 +12 val_24 +12 val_24 +12 val_24 +12 val_24 +201 val_402 +187 val_374 +187 val_374 +187 val_374 +5 val_10 +5 val_10 +5 val_10 +104 val_208 +104 val_208 +104 val_208 +104 val_208 +104 val_208 +104 val_208 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +119 val_238 +200 val_400 +200 val_400 +248 val_496 +169 val_338 +169 val_338 +169 val_338 +169 val_338 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +230 val_460 +178 val_356 +207 val_414 +207 val_414 +207 val_414 +207 val_414 +249 val_498 +249 val_498 +249 val_498 +83 val_166 +83 val_166 +136 val_272 +136 val_272 +172 val_344 +172 val_344 +172 val_344 +172 val_344 +233 val_466 +233 val_466 +233 val_466 +233 val_466 +233 val_466 +233 val_466 +133 val_266 +189 val_378 +67 val_134 +67 val_134 +67 val_134 +67 val_134 +100 val_200 +100 val_200 +100 val_200 +100 val_200 +9 val_18 +9 val_18 +146 val_292 +146 val_292 +183 val_366 +97 val_194 +97 val_194 +84 val_168 +84 val_168 +37 val_74 +37 val_74 +222 val_444 +126 val_252 +90 val_180 +90 val_180 +90 val_180 +169 val_338 +169 val_338 +169 val_338 +169 val_338 +200 val_400 +200 val_400 +97 val_194 +97 val_194 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join20-0-16cda49c2b2cd0c0cdae40af4d5c900e b/sql/hive/src/test/resources/golden/join20-0-16cda49c2b2cd0c0cdae40af4d5c900e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join20-1-9685f2d31ffe922d3ea217de32ca3049 b/sql/hive/src/test/resources/golden/join20-1-9685f2d31ffe922d3ea217de32ca3049 new file mode 100644 index 0000000000000..bd6e20b8de1e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join20-1-9685f2d31ffe922d3ea217de32ca3049 @@ -0,0 +1,548 @@ +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +2 val_2 2 val_2 2 val_2 +4 val_4 4 val_4 4 val_4 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +8 val_8 8 val_8 8 val_8 +9 val_9 9 val_9 9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join20-2-222655137ca9242f063c7717acbe4c65 b/sql/hive/src/test/resources/golden/join20-2-222655137ca9242f063c7717acbe4c65 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join20-3-3331a020843caccf2fa32a1225c5c3a9 b/sql/hive/src/test/resources/golden/join20-3-3331a020843caccf2fa32a1225c5c3a9 new file mode 100644 index 0000000000000..bd6e20b8de1e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join20-3-3331a020843caccf2fa32a1225c5c3a9 @@ -0,0 +1,548 @@ +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +2 val_2 2 val_2 2 val_2 +4 val_4 4 val_4 4 val_4 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +8 val_8 8 val_8 8 val_8 +9 val_9 9 val_9 9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join21-0-d89bb8082a39fcaf8ed23a0f5b1cb410 b/sql/hive/src/test/resources/golden/join21-0-d89bb8082a39fcaf8ed23a0f5b1cb410 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join21-1-3536b7d78713e86ee67f5f6c9b88958f b/sql/hive/src/test/resources/golden/join21-1-3536b7d78713e86ee67f5f6c9b88958f new file mode 100644 index 0000000000000..9672e21fa0323 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join21-1-3536b7d78713e86ee67f5f6c9b88958f @@ -0,0 +1,500 @@ +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 0 val_0 +NULL NULL NULL NULL 2 val_2 +NULL NULL NULL NULL 4 val_4 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 5 val_5 +NULL NULL NULL NULL 8 val_8 +NULL NULL NULL NULL 9 val_9 +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join22-0-97081b5f73052a612fb391a57ad9b7b b/sql/hive/src/test/resources/golden/join22-0-97081b5f73052a612fb391a57ad9b7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join23-0-1fb76d3404f09a5c2b10422157c3cf5d b/sql/hive/src/test/resources/golden/join23-0-1fb76d3404f09a5c2b10422157c3cf5d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join23-1-91b8e7fe75a7e3ba8147c56734436681 b/sql/hive/src/test/resources/golden/join23-1-91b8e7fe75a7e3ba8147c56734436681 new file mode 100644 index 0000000000000..5707ed08e7e54 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join23-1-91b8e7fe75a7e3ba8147c56734436681 @@ -0,0 +1,100 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 2 val_2 +0 val_0 2 val_2 +0 val_0 2 val_2 +0 val_0 4 val_4 +0 val_0 4 val_4 +0 val_0 4 val_4 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 5 val_5 +0 val_0 8 val_8 +0 val_0 8 val_8 +0 val_0 8 val_8 +0 val_0 9 val_9 +0 val_0 9 val_9 +0 val_0 9 val_9 +2 val_2 0 val_0 +2 val_2 0 val_0 +2 val_2 0 val_0 +2 val_2 2 val_2 +2 val_2 4 val_4 +2 val_2 5 val_5 +2 val_2 5 val_5 +2 val_2 5 val_5 +2 val_2 8 val_8 +2 val_2 9 val_9 +4 val_4 0 val_0 +4 val_4 0 val_0 +4 val_4 0 val_0 +4 val_4 2 val_2 +4 val_4 4 val_4 +4 val_4 5 val_5 +4 val_4 5 val_5 +4 val_4 5 val_5 +4 val_4 8 val_8 +4 val_4 9 val_9 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 0 val_0 +5 val_5 2 val_2 +5 val_5 2 val_2 +5 val_5 2 val_2 +5 val_5 4 val_4 +5 val_5 4 val_4 +5 val_5 4 val_4 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 8 val_8 +5 val_5 8 val_8 +5 val_5 8 val_8 +5 val_5 9 val_9 +5 val_5 9 val_9 +5 val_5 9 val_9 +8 val_8 0 val_0 +8 val_8 0 val_0 +8 val_8 0 val_0 +8 val_8 2 val_2 +8 val_8 4 val_4 +8 val_8 5 val_5 +8 val_8 5 val_5 +8 val_8 5 val_5 +8 val_8 8 val_8 +8 val_8 9 val_9 +9 val_9 0 val_0 +9 val_9 0 val_0 +9 val_9 0 val_0 +9 val_9 2 val_2 +9 val_9 4 val_4 +9 val_9 5 val_5 +9 val_9 5 val_5 +9 val_9 5 val_5 +9 val_9 8 val_8 +9 val_9 9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join24-0-721dfa03bfea05e55506c571b6c3585b b/sql/hive/src/test/resources/golden/join24-0-721dfa03bfea05e55506c571b6c3585b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join24-1-36de83b0ed6c9fdc03661b2f65b23a3d b/sql/hive/src/test/resources/golden/join24-1-36de83b0ed6c9fdc03661b2f65b23a3d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join24-2-d79325ef6494aa87843fdfd78de7c812 b/sql/hive/src/test/resources/golden/join24-2-d79325ef6494aa87843fdfd78de7c812 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join24-2-d79325ef6494aa87843fdfd78de7c812 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join25-0-8934d9b821aa4b34b760f73eff56cd06 b/sql/hive/src/test/resources/golden/join25-0-8934d9b821aa4b34b760f73eff56cd06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join25-0-8934d9b821aa4b34b760f73eff56cd06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join25-1-360b3676605ccb3d89cf555342db87af b/sql/hive/src/test/resources/golden/join25-1-360b3676605ccb3d89cf555342db87af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join25-2-ef930bed933341636c71622e6f89e9e9 b/sql/hive/src/test/resources/golden/join25-2-ef930bed933341636c71622e6f89e9e9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join25-3-e39577008d28ddd5741d8518b92eaa94 b/sql/hive/src/test/resources/golden/join25-3-e39577008d28ddd5741d8518b92eaa94 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join25-4-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join25-4-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..183353e5c705b --- /dev/null +++ b/sql/hive/src/test/resources/golden/join25-4-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,37 @@ +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +128 val_128 +128 val_128 +128 val_128 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +224 val_224 +224 val_224 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +369 val_369 +369 val_369 +369 val_369 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join26-0-775b1af8eae9b2250052be1b72b4086 b/sql/hive/src/test/resources/golden/join26-0-775b1af8eae9b2250052be1b72b4086 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join26-1-10fbe6c99e93cfeafcd454261744728e b/sql/hive/src/test/resources/golden/join26-1-10fbe6c99e93cfeafcd454261744728e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join26-2-8aa0193a2a80d4efe4c66bca19218a4d b/sql/hive/src/test/resources/golden/join26-2-8aa0193a2a80d4efe4c66bca19218a4d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join26-3-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join26-3-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..4c88927e56579 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join26-3-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,107 @@ +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +224 val_224 val_224 +224 val_224 val_224 +224 val_224 val_224 +224 val_224 val_224 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join27-0-360b3676605ccb3d89cf555342db87af b/sql/hive/src/test/resources/golden/join27-0-360b3676605ccb3d89cf555342db87af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join27-1-d56d8bbececcf48417b7dde9292a9cc6 b/sql/hive/src/test/resources/golden/join27-1-d56d8bbececcf48417b7dde9292a9cc6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join27-2-6d139e1aa07ff8d02bdf52b409956879 b/sql/hive/src/test/resources/golden/join27-2-6d139e1aa07ff8d02bdf52b409956879 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join27-3-e86808fdbd54120d1e2356f8f61c02f9 b/sql/hive/src/test/resources/golden/join27-3-e86808fdbd54120d1e2356f8f61c02f9 new file mode 100644 index 0000000000000..2b75023ea4a9f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join27-3-e86808fdbd54120d1e2356f8f61c02f9 @@ -0,0 +1,41 @@ +NULL val_165 val_165 +NULL val_165 val_165 +NULL val_193 val_193 +NULL val_193 val_193 +NULL val_193 val_193 +NULL val_265 val_265 +NULL val_265 val_265 +NULL val_27 val_27 +NULL val_409 val_409 +NULL val_409 val_409 +NULL val_409 val_409 +NULL val_484 val_484 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join28-0-7f2c5c987bc8e918f7b6fc222e1abc62 b/sql/hive/src/test/resources/golden/join28-0-7f2c5c987bc8e918f7b6fc222e1abc62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join28-1-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join28-1-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join28-1-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join28-2-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join28-2-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join28-2-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join28-3-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/join28-3-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join28-3-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join28-4-bd4e19a3608681b0270668fe68b7d124 b/sql/hive/src/test/resources/golden/join28-4-bd4e19a3608681b0270668fe68b7d124 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join28-5-24cc9ff9485313ade08ee83ecc4c0621 b/sql/hive/src/test/resources/golden/join28-5-24cc9ff9485313ade08ee83ecc4c0621 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join28-6-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join28-6-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..da3c427cab73f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join28-6-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,107 @@ +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +150 val_150 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +66 val_66 +98 val_98 +98 val_98 +98 val_98 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join29-0-e78402f7585b17c76c32790571d749eb b/sql/hive/src/test/resources/golden/join29-0-e78402f7585b17c76c32790571d749eb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join29-1-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join29-1-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join29-1-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join29-2-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join29-2-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join29-2-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join29-3-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/join29-3-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join29-3-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join29-4-b0524de7985cdb7b57fd995721654856 b/sql/hive/src/test/resources/golden/join29-4-b0524de7985cdb7b57fd995721654856 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join29-5-9e35870a3bc8224cde6b1ab322568d2 b/sql/hive/src/test/resources/golden/join29-5-9e35870a3bc8224cde6b1ab322568d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join29-6-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join29-6-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..f553ce0ca41f3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join29-6-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,15 @@ +128 1 3 +146 1 2 +150 1 1 +213 1 2 +224 1 2 +238 1 2 +255 1 2 +273 1 3 +278 1 2 +311 1 3 +369 1 3 +401 1 5 +406 1 4 +66 1 1 +98 1 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join3-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/join3-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join3-1-4ef57a9e40b2e7fd01e1778bed71b5b2 b/sql/hive/src/test/resources/golden/join3-1-4ef57a9e40b2e7fd01e1778bed71b5b2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join3-2-e9f6d17b15064f953a588fb40aee2f90 b/sql/hive/src/test/resources/golden/join3-2-e9f6d17b15064f953a588fb40aee2f90 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join3-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/join3-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..8886dc7e8f229 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join3-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,2654 @@ +238 val_238 +238 val_238 +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +484 val_484 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +82 val_82 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +4 val_4 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +54 val_54 +459 val_459 +459 val_459 +459 val_459 +459 val_459 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +260 val_260 +404 val_404 +404 val_404 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +463 val_463 +463 val_463 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +404 val_404 +404 val_404 +404 val_404 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +413 val_413 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +419 val_419 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +458 val_458 +458 val_458 +78 val_78 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +64 val_64 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +424 val_424 +424 val_424 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +462 val_462 +462 val_462 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +492 val_492 +492 val_492 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +448 val_448 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +97 val_97 +97 val_97 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join30-0-54a7280ab9eed0d2e3b33df35a721b66 b/sql/hive/src/test/resources/golden/join30-0-54a7280ab9eed0d2e3b33df35a721b66 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join30-1-5859eba43fb180c2142035cd4c77ea4d b/sql/hive/src/test/resources/golden/join30-1-5859eba43fb180c2142035cd4c77ea4d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join30-2-194edec0592cf441617ca7caf9756baa b/sql/hive/src/test/resources/golden/join30-2-194edec0592cf441617ca7caf9756baa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join30-3-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join30-3-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..71094ee7360db --- /dev/null +++ b/sql/hive/src/test/resources/golden/join30-3-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,15 @@ +66 1 +98 2 +128 3 +146 2 +150 1 +213 2 +224 2 +238 2 +255 2 +273 3 +278 2 +311 3 +369 3 +401 5 +406 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join31-0-619db2f9dd69aa236aa804cced726c9a b/sql/hive/src/test/resources/golden/join31-0-619db2f9dd69aa236aa804cced726c9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join31-1-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join31-1-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join31-1-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join31-2-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join31-2-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join31-2-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join31-3-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/join31-3-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join31-3-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join31-4-34e30fa5d6f35a20561c7754197f0626 b/sql/hive/src/test/resources/golden/join31-4-34e30fa5d6f35a20561c7754197f0626 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join31-5-a2082be28be44e2bfa9a58fb45c23f07 b/sql/hive/src/test/resources/golden/join31-5-a2082be28be44e2bfa9a58fb45c23f07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join31-6-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join31-6-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..5d28208ab255c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join31-6-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,15 @@ +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 +66 1 +98 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32-0-775b1af8eae9b2250052be1b72b4086 b/sql/hive/src/test/resources/golden/join32-0-775b1af8eae9b2250052be1b72b4086 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32-1-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join32-1-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32-1-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32-2-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join32-2-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32-2-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32-3-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/join32-3-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32-3-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32-4-fc6880e4e0750a3daa7fc108b72d11bb b/sql/hive/src/test/resources/golden/join32-4-fc6880e4e0750a3daa7fc108b72d11bb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32-5-425c5c35b23c42254dabec49aa6613bf b/sql/hive/src/test/resources/golden/join32-5-425c5c35b23c42254dabec49aa6613bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32-6-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join32-6-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..a6538b605a817 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32-6-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,85 @@ +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-0-775b1af8eae9b2250052be1b72b4086 b/sql/hive/src/test/resources/golden/join32_lessSize-0-775b1af8eae9b2250052be1b72b4086 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-1-7a874b25490d3e1e186803646eb6a789 b/sql/hive/src/test/resources/golden/join32_lessSize-1-7a874b25490d3e1e186803646eb6a789 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-10-e4ca54ef5e9c845b5bd7fb6b56cdc45a b/sql/hive/src/test/resources/golden/join32_lessSize-10-e4ca54ef5e9c845b5bd7fb6b56cdc45a new file mode 100644 index 0000000000000..a6538b605a817 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-10-e4ca54ef5e9c845b5bd7fb6b56cdc45a @@ -0,0 +1,85 @@ +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-11-79c0e9faf5798c465fedee25c72e7ca b/sql/hive/src/test/resources/golden/join32_lessSize-11-79c0e9faf5798c465fedee25c72e7ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-12-83544f47197cccad30dd4f0ede433b8 b/sql/hive/src/test/resources/golden/join32_lessSize-12-83544f47197cccad30dd4f0ede433b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-13-ed70124968560328930327ecb108c4e9 b/sql/hive/src/test/resources/golden/join32_lessSize-13-ed70124968560328930327ecb108c4e9 new file mode 100644 index 0000000000000..a6538b605a817 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-13-ed70124968560328930327ecb108c4e9 @@ -0,0 +1,85 @@ +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-14-ac014eb214f762f1a61125af1964788a b/sql/hive/src/test/resources/golden/join32_lessSize-14-ac014eb214f762f1a61125af1964788a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-15-78edd67daa31711374b4c25faf89f77e b/sql/hive/src/test/resources/golden/join32_lessSize-15-78edd67daa31711374b4c25faf89f77e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-16-ed70124968560328930327ecb108c4e9 b/sql/hive/src/test/resources/golden/join32_lessSize-16-ed70124968560328930327ecb108c4e9 new file mode 100644 index 0000000000000..b1251794645ce --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-16-ed70124968560328930327ecb108c4e9 @@ -0,0 +1,97 @@ +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +NULL val_165 val_165 +NULL val_165 val_165 +NULL val_193 val_193 +NULL val_193 val_193 +NULL val_193 val_193 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +NULL val_265 val_265 +NULL val_265 val_265 +NULL val_27 val_27 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +NULL val_409 val_409 +NULL val_409 val_409 +NULL val_409 val_409 +NULL val_484 val_484 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-17-b6bd9e2ca2bfabec16846b4a1fa3ea20 b/sql/hive/src/test/resources/golden/join32_lessSize-17-b6bd9e2ca2bfabec16846b4a1fa3ea20 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-18-f9b31c552044d8e5cc193121eb71024d b/sql/hive/src/test/resources/golden/join32_lessSize-18-f9b31c552044d8e5cc193121eb71024d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-19-ed70124968560328930327ecb108c4e9 b/sql/hive/src/test/resources/golden/join32_lessSize-19-ed70124968560328930327ecb108c4e9 new file mode 100644 index 0000000000000..a6538b605a817 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-19-ed70124968560328930327ecb108c4e9 @@ -0,0 +1,85 @@ +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-2-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join32_lessSize-2-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-2-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-20-ecf04f68517b6104d9cc8995796b424 b/sql/hive/src/test/resources/golden/join32_lessSize-20-ecf04f68517b6104d9cc8995796b424 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-21-f6822e1bb0b193eec397ebb9c79fbf47 b/sql/hive/src/test/resources/golden/join32_lessSize-21-f6822e1bb0b193eec397ebb9c79fbf47 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-22-ed70124968560328930327ecb108c4e9 b/sql/hive/src/test/resources/golden/join32_lessSize-22-ed70124968560328930327ecb108c4e9 new file mode 100644 index 0000000000000..a6538b605a817 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-22-ed70124968560328930327ecb108c4e9 @@ -0,0 +1,85 @@ +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-3-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join32_lessSize-3-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-3-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-4-7f7f3daa7ff45944c3d534f9feff3bb6 b/sql/hive/src/test/resources/golden/join32_lessSize-4-7f7f3daa7ff45944c3d534f9feff3bb6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-4-7f7f3daa7ff45944c3d534f9feff3bb6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-5-fc6880e4e0750a3daa7fc108b72d11bb b/sql/hive/src/test/resources/golden/join32_lessSize-5-fc6880e4e0750a3daa7fc108b72d11bb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-6-425c5c35b23c42254dabec49aa6613bf b/sql/hive/src/test/resources/golden/join32_lessSize-6-425c5c35b23c42254dabec49aa6613bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-7-e4ca54ef5e9c845b5bd7fb6b56cdc45a b/sql/hive/src/test/resources/golden/join32_lessSize-7-e4ca54ef5e9c845b5bd7fb6b56cdc45a new file mode 100644 index 0000000000000..a6538b605a817 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join32_lessSize-7-e4ca54ef5e9c845b5bd7fb6b56cdc45a @@ -0,0 +1,85 @@ +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-8-5e277b322f831494ecd6f51a0c727c7b b/sql/hive/src/test/resources/golden/join32_lessSize-8-5e277b322f831494ecd6f51a0c727c7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join32_lessSize-9-e22030c2383aa7f16b7cf89bebb1e85 b/sql/hive/src/test/resources/golden/join32_lessSize-9-e22030c2383aa7f16b7cf89bebb1e85 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join33-0-775b1af8eae9b2250052be1b72b4086 b/sql/hive/src/test/resources/golden/join33-0-775b1af8eae9b2250052be1b72b4086 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join33-1-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join33-1-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join33-1-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join33-2-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join33-2-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join33-2-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join33-3-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/join33-3-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join33-3-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join33-4-fc6880e4e0750a3daa7fc108b72d11bb b/sql/hive/src/test/resources/golden/join33-4-fc6880e4e0750a3daa7fc108b72d11bb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join33-5-425c5c35b23c42254dabec49aa6613bf b/sql/hive/src/test/resources/golden/join33-5-425c5c35b23c42254dabec49aa6613bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join33-6-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join33-6-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..a6538b605a817 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join33-6-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,85 @@ +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join34-0-775b1af8eae9b2250052be1b72b4086 b/sql/hive/src/test/resources/golden/join34-0-775b1af8eae9b2250052be1b72b4086 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join34-1-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join34-1-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join34-1-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join34-2-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join34-2-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join34-2-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join34-3-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/join34-3-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join34-3-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join34-4-51cc5d253befd784a9d466c0b402f47a b/sql/hive/src/test/resources/golden/join34-4-51cc5d253befd784a9d466c0b402f47a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join34-5-abf5cf110d6a0eb85ae257768c805f39 b/sql/hive/src/test/resources/golden/join34-5-abf5cf110d6a0eb85ae257768c805f39 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join34-6-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join34-6-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..e18d1ff802c93 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join34-6-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,34 @@ +128 val_128 +128 val_128 +128 val_128 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +224 val_224 +224 val_224 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +369 val_369 +369 val_369 +369 val_369 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join35-0-1ef68e1b8dd5f69f4a5149f3ebec42b9 b/sql/hive/src/test/resources/golden/join35-0-1ef68e1b8dd5f69f4a5149f3ebec42b9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join35-1-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join35-1-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join35-1-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join35-2-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join35-2-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join35-2-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join35-3-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/join35-3-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join35-3-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join35-4-99cb704ccc2813400908a62571891dc7 b/sql/hive/src/test/resources/golden/join35-4-99cb704ccc2813400908a62571891dc7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join35-5-60956f3307651237f52ffbe41c827c1c b/sql/hive/src/test/resources/golden/join35-5-60956f3307651237f52ffbe41c827c1c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join35-6-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join35-6-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..efdd80c9f8b89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join35-6-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,13 @@ +128 3 +146 val_146 2 +150 val_150 1 +213 val_213 2 +224 2 +238 val_238 2 +255 val_255 2 +273 val_273 3 +278 val_278 2 +311 val_311 3 +369 3 +401 val_401 5 +406 val_406 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join36-0-8934d9b821aa4b34b760f73eff56cd06 b/sql/hive/src/test/resources/golden/join36-0-8934d9b821aa4b34b760f73eff56cd06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join36-0-8934d9b821aa4b34b760f73eff56cd06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join36-1-3aba153d62042206c0f001ea74980da b/sql/hive/src/test/resources/golden/join36-1-3aba153d62042206c0f001ea74980da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join36-2-5b1cac8ef7857d2f8c675ed6f0224471 b/sql/hive/src/test/resources/golden/join36-2-5b1cac8ef7857d2f8c675ed6f0224471 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join36-3-c87d5b10b6ce87ac8ee2ab0d2b3755e8 b/sql/hive/src/test/resources/golden/join36-3-c87d5b10b6ce87ac8ee2ab0d2b3755e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join36-4-fbe7d714e988877ebe6202a60e8ef776 b/sql/hive/src/test/resources/golden/join36-4-fbe7d714e988877ebe6202a60e8ef776 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join36-5-9353d3e0b11c781f782af4013e8569e3 b/sql/hive/src/test/resources/golden/join36-5-9353d3e0b11c781f782af4013e8569e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join36-6-d76aff886201d223c7dbed2b0f0d5512 b/sql/hive/src/test/resources/golden/join36-6-d76aff886201d223c7dbed2b0f0d5512 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join36-7-171ede21302050a33468d95e329a38a3 b/sql/hive/src/test/resources/golden/join36-7-171ede21302050a33468d95e329a38a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join36-8-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join36-8-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..a250f202c4df0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join36-8-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,309 @@ +0 3 3 +2 1 1 +4 1 1 +5 3 3 +8 1 1 +9 1 1 +10 1 1 +11 1 1 +12 2 2 +15 2 2 +17 1 1 +18 2 2 +19 1 1 +20 1 1 +24 2 2 +26 2 2 +27 1 1 +28 1 1 +30 1 1 +33 1 1 +34 1 1 +35 3 3 +37 2 2 +41 1 1 +42 2 2 +43 1 1 +44 1 1 +47 1 1 +51 2 2 +53 1 1 +54 1 1 +57 1 1 +58 2 2 +64 1 1 +65 1 1 +66 1 1 +67 2 2 +69 1 1 +70 3 3 +72 2 2 +74 1 1 +76 2 2 +77 1 1 +78 1 1 +80 1 1 +82 1 1 +83 2 2 +84 2 2 +85 1 1 +86 1 1 +87 1 1 +90 3 3 +92 1 1 +95 2 2 +96 1 1 +97 2 2 +98 2 2 +100 2 2 +103 2 2 +104 2 2 +105 1 1 +111 1 1 +113 2 2 +114 1 1 +116 1 1 +118 2 2 +119 3 3 +120 2 2 +125 2 2 +126 1 1 +128 3 3 +129 2 2 +131 1 1 +133 1 1 +134 2 2 +136 1 1 +137 2 2 +138 4 4 +143 1 1 +145 1 1 +146 2 2 +149 2 2 +150 1 1 +152 2 2 +153 1 1 +155 1 1 +156 1 1 +157 1 1 +158 1 1 +160 1 1 +162 1 1 +163 1 1 +164 2 2 +165 2 2 +166 1 1 +167 3 3 +168 1 1 +169 4 4 +170 1 1 +172 2 2 +174 2 2 +175 2 2 +176 2 2 +177 1 1 +178 1 1 +179 2 2 +180 1 1 +181 1 1 +183 1 1 +186 1 1 +187 3 3 +189 1 1 +190 1 1 +191 2 2 +192 1 1 +193 3 3 +194 1 1 +195 2 2 +196 1 1 +197 2 2 +199 3 3 +200 2 2 +201 1 1 +202 1 1 +203 2 2 +205 2 2 +207 2 2 +208 3 3 +209 2 2 +213 2 2 +214 1 1 +216 2 2 +217 2 2 +218 1 1 +219 2 2 +221 2 2 +222 1 1 +223 2 2 +224 2 2 +226 1 1 +228 1 1 +229 2 2 +230 5 5 +233 2 2 +235 1 1 +237 2 2 +238 2 2 +239 2 2 +241 1 1 +242 2 2 +244 1 1 +247 1 1 +248 1 1 +249 1 1 +252 1 1 +255 2 2 +256 2 2 +257 1 1 +258 1 1 +260 1 1 +262 1 1 +263 1 1 +265 2 2 +266 1 1 +272 2 2 +273 3 3 +274 1 1 +275 1 1 +277 4 4 +278 2 2 +280 2 2 +281 2 2 +282 2 2 +283 1 1 +284 1 1 +285 1 1 +286 1 1 +287 1 1 +288 2 2 +289 1 1 +291 1 1 +292 1 1 +296 1 1 +298 3 3 +302 1 1 +305 1 1 +306 1 1 +307 2 2 +308 1 1 +309 2 2 +310 1 1 +311 3 3 +315 1 1 +316 3 3 +317 2 2 +318 3 3 +321 2 2 +322 2 2 +323 1 1 +325 2 2 +327 3 3 +331 2 2 +332 1 1 +333 2 2 +335 1 1 +336 1 1 +338 1 1 +339 1 1 +341 1 1 +342 2 2 +344 2 2 +345 1 1 +348 5 5 +351 1 1 +353 2 2 +356 1 1 +360 1 1 +362 1 1 +364 1 1 +365 1 1 +366 1 1 +367 2 2 +368 1 1 +369 3 3 +373 1 1 +374 1 1 +375 1 1 +377 1 1 +378 1 1 +379 1 1 +382 2 2 +384 3 3 +386 1 1 +389 1 1 +392 1 1 +393 1 1 +394 1 1 +395 2 2 +396 3 3 +397 2 2 +399 2 2 +400 1 1 +401 5 5 +402 1 1 +403 3 3 +404 2 2 +406 4 4 +407 1 1 +409 3 3 +411 1 1 +413 2 2 +414 2 2 +417 3 3 +418 1 1 +419 1 1 +421 1 1 +424 2 2 +427 1 1 +429 2 2 +430 3 3 +431 3 3 +432 1 1 +435 1 1 +436 1 1 +437 1 1 +438 3 3 +439 2 2 +443 1 1 +444 1 1 +446 1 1 +448 1 1 +449 1 1 +452 1 1 +453 1 1 +454 3 3 +455 1 1 +457 1 1 +458 2 2 +459 2 2 +460 1 1 +462 2 2 +463 2 2 +466 3 3 +467 1 1 +468 4 4 +469 5 5 +470 1 1 +472 1 1 +475 1 1 +477 1 1 +478 2 2 +479 1 1 +480 3 3 +481 1 1 +482 1 1 +483 1 1 +484 1 1 +485 1 1 +487 1 1 +489 4 4 +490 1 1 +491 1 1 +492 2 2 +493 1 1 +494 1 1 +495 1 1 +496 1 1 +497 1 1 +498 3 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join37-0-8934d9b821aa4b34b760f73eff56cd06 b/sql/hive/src/test/resources/golden/join37-0-8934d9b821aa4b34b760f73eff56cd06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join37-0-8934d9b821aa4b34b760f73eff56cd06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join37-1-360b3676605ccb3d89cf555342db87af b/sql/hive/src/test/resources/golden/join37-1-360b3676605ccb3d89cf555342db87af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join37-2-2310f2b8726137811543e04db98dd1db b/sql/hive/src/test/resources/golden/join37-2-2310f2b8726137811543e04db98dd1db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join37-3-c4b3a85965108ad7013ac3931598af09 b/sql/hive/src/test/resources/golden/join37-3-c4b3a85965108ad7013ac3931598af09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join37-4-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join37-4-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..183353e5c705b --- /dev/null +++ b/sql/hive/src/test/resources/golden/join37-4-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,37 @@ +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +128 val_128 +128 val_128 +128 val_128 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +224 val_224 +224 val_224 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +369 val_369 +369 val_369 +369 val_369 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join38-0-42e6ad674a5142d05258a2d29578e046 b/sql/hive/src/test/resources/golden/join38-0-42e6ad674a5142d05258a2d29578e046 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join38-1-d8ba5ec8a5a0bb702958400a3b3e458f b/sql/hive/src/test/resources/golden/join38-1-d8ba5ec8a5a0bb702958400a3b3e458f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join38-2-eacdb3417c4a563982c488812d654c9 b/sql/hive/src/test/resources/golden/join38-2-eacdb3417c4a563982c488812d654c9 new file mode 100644 index 0000000000000..5e020e3aff653 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join38-2-eacdb3417c4a563982c488812d654c9 @@ -0,0 +1,2 @@ +100 101 102 103 104 105 106 107 108 109 110 111 +100 101 102 103 104 105 106 107 108 109 110 111 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join38-3-22ead86c36dcd9ac9403fb52ac752046 b/sql/hive/src/test/resources/golden/join38-3-22ead86c36dcd9ac9403fb52ac752046 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join38-4-53d219706847e890de1dcd369563ebef b/sql/hive/src/test/resources/golden/join38-4-53d219706847e890de1dcd369563ebef new file mode 100644 index 0000000000000..fce97c9211916 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join38-4-53d219706847e890de1dcd369563ebef @@ -0,0 +1 @@ +val_111 105 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join39-0-54e9f7924abb40d1c601de908de6f25b b/sql/hive/src/test/resources/golden/join39-0-54e9f7924abb40d1c601de908de6f25b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join39-1-60178dec03adcbccbd4e5cae936c38f2 b/sql/hive/src/test/resources/golden/join39-1-60178dec03adcbccbd4e5cae936c38f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join39-2-7fe3308e0a153b36c8eb21edcd3dbe96 b/sql/hive/src/test/resources/golden/join39-2-7fe3308e0a153b36c8eb21edcd3dbe96 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join39-3-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join39-3-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..5b45955ceb274 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join39-3-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,566 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +10 val_10 10 val_10 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +103 val_103 NULL NULL +103 val_103 NULL NULL +104 val_104 NULL NULL +104 val_104 NULL NULL +105 val_105 NULL NULL +11 val_11 11 val_11 +111 val_111 NULL NULL +113 val_113 NULL NULL +113 val_113 NULL NULL +114 val_114 NULL NULL +116 val_116 NULL NULL +118 val_118 NULL NULL +118 val_118 NULL NULL +119 val_119 NULL NULL +119 val_119 NULL NULL +119 val_119 NULL NULL +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +120 val_120 NULL NULL +120 val_120 NULL NULL +125 val_125 NULL NULL +125 val_125 NULL NULL +126 val_126 NULL NULL +128 val_128 NULL NULL +128 val_128 NULL NULL +128 val_128 NULL NULL +129 val_129 NULL NULL +129 val_129 NULL NULL +131 val_131 NULL NULL +133 val_133 NULL NULL +134 val_134 NULL NULL +134 val_134 NULL NULL +136 val_136 NULL NULL +137 val_137 NULL NULL +137 val_137 NULL NULL +138 val_138 NULL NULL +138 val_138 NULL NULL +138 val_138 NULL NULL +138 val_138 NULL NULL +143 val_143 NULL NULL +145 val_145 NULL NULL +146 val_146 NULL NULL +146 val_146 NULL NULL +149 val_149 NULL NULL +149 val_149 NULL NULL +15 val_15 15 val_15 +15 val_15 15 val_15 +15 val_15 15 val_15 +15 val_15 15 val_15 +150 val_150 NULL NULL +152 val_152 NULL NULL +152 val_152 NULL NULL +153 val_153 NULL NULL +155 val_155 NULL NULL +156 val_156 NULL NULL +157 val_157 NULL NULL +158 val_158 NULL NULL +160 val_160 NULL NULL +162 val_162 NULL NULL +163 val_163 NULL NULL +164 val_164 NULL NULL +164 val_164 NULL NULL +165 val_165 NULL NULL +165 val_165 NULL NULL +166 val_166 NULL NULL +167 val_167 NULL NULL +167 val_167 NULL NULL +167 val_167 NULL NULL +168 val_168 NULL NULL +169 val_169 NULL NULL +169 val_169 NULL NULL +169 val_169 NULL NULL +169 val_169 NULL NULL +17 val_17 17 val_17 +170 val_170 NULL NULL +172 val_172 NULL NULL +172 val_172 NULL NULL +174 val_174 NULL NULL +174 val_174 NULL NULL +175 val_175 NULL NULL +175 val_175 NULL NULL +176 val_176 NULL NULL +176 val_176 NULL NULL +177 val_177 NULL NULL +178 val_178 NULL NULL +179 val_179 NULL NULL +179 val_179 NULL NULL +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +180 val_180 NULL NULL +181 val_181 NULL NULL +183 val_183 NULL NULL +186 val_186 NULL NULL +187 val_187 NULL NULL +187 val_187 NULL NULL +187 val_187 NULL NULL +189 val_189 NULL NULL +19 val_19 19 val_19 +190 val_190 NULL NULL +191 val_191 NULL NULL +191 val_191 NULL NULL +192 val_192 NULL NULL +193 val_193 NULL NULL +193 val_193 NULL NULL +193 val_193 NULL NULL +194 val_194 NULL NULL +195 val_195 NULL NULL +195 val_195 NULL NULL +196 val_196 NULL NULL +197 val_197 NULL NULL +197 val_197 NULL NULL +199 val_199 NULL NULL +199 val_199 NULL NULL +199 val_199 NULL NULL +2 val_2 2 val_2 +20 val_20 20 val_20 +200 val_200 NULL NULL +200 val_200 NULL NULL +201 val_201 NULL NULL +202 val_202 NULL NULL +203 val_203 NULL NULL +203 val_203 NULL NULL +205 val_205 NULL NULL +205 val_205 NULL NULL +207 val_207 NULL NULL +207 val_207 NULL NULL +208 val_208 NULL NULL +208 val_208 NULL NULL +208 val_208 NULL NULL +209 val_209 NULL NULL +209 val_209 NULL NULL +213 val_213 NULL NULL +213 val_213 NULL NULL +214 val_214 NULL NULL +216 val_216 NULL NULL +216 val_216 NULL NULL +217 val_217 NULL NULL +217 val_217 NULL NULL +218 val_218 NULL NULL +219 val_219 NULL NULL +219 val_219 NULL NULL +221 val_221 NULL NULL +221 val_221 NULL NULL +222 val_222 NULL NULL +223 val_223 NULL NULL +223 val_223 NULL NULL +224 val_224 NULL NULL +224 val_224 NULL NULL +226 val_226 NULL NULL +228 val_228 NULL NULL +229 val_229 NULL NULL +229 val_229 NULL NULL +230 val_230 NULL NULL +230 val_230 NULL NULL +230 val_230 NULL NULL +230 val_230 NULL NULL +230 val_230 NULL NULL +233 val_233 NULL NULL +233 val_233 NULL NULL +235 val_235 NULL NULL +237 val_237 NULL NULL +237 val_237 NULL NULL +238 val_238 NULL NULL +238 val_238 NULL NULL +239 val_239 NULL NULL +239 val_239 NULL NULL +24 val_24 24 val_24 +24 val_24 24 val_24 +24 val_24 24 val_24 +24 val_24 24 val_24 +241 val_241 NULL NULL +242 val_242 NULL NULL +242 val_242 NULL NULL +244 val_244 NULL NULL +247 val_247 NULL NULL +248 val_248 NULL NULL +249 val_249 NULL NULL +252 val_252 NULL NULL +255 val_255 NULL NULL +255 val_255 NULL NULL +256 val_256 NULL NULL +256 val_256 NULL NULL +257 val_257 NULL NULL +258 val_258 NULL NULL +26 val_26 26 val_26 +26 val_26 26 val_26 +26 val_26 26 val_26 +26 val_26 26 val_26 +260 val_260 NULL NULL +262 val_262 NULL NULL +263 val_263 NULL NULL +265 val_265 NULL NULL +265 val_265 NULL NULL +266 val_266 NULL NULL +27 val_27 27 val_27 +272 val_272 NULL NULL +272 val_272 NULL NULL +273 val_273 NULL NULL +273 val_273 NULL NULL +273 val_273 NULL NULL +274 val_274 NULL NULL +275 val_275 NULL NULL +277 val_277 NULL NULL +277 val_277 NULL NULL +277 val_277 NULL NULL +277 val_277 NULL NULL +278 val_278 NULL NULL +278 val_278 NULL NULL +28 val_28 28 val_28 +280 val_280 NULL NULL +280 val_280 NULL NULL +281 val_281 NULL NULL +281 val_281 NULL NULL +282 val_282 NULL NULL +282 val_282 NULL NULL +283 val_283 NULL NULL +284 val_284 NULL NULL +285 val_285 NULL NULL +286 val_286 NULL NULL +287 val_287 NULL NULL +288 val_288 NULL NULL +288 val_288 NULL NULL +289 val_289 NULL NULL +291 val_291 NULL NULL +292 val_292 NULL NULL +296 val_296 NULL NULL +298 val_298 NULL NULL +298 val_298 NULL NULL +298 val_298 NULL NULL +30 val_30 30 val_30 +302 val_302 NULL NULL +305 val_305 NULL NULL +306 val_306 NULL NULL +307 val_307 NULL NULL +307 val_307 NULL NULL +308 val_308 NULL NULL +309 val_309 NULL NULL +309 val_309 NULL NULL +310 val_310 NULL NULL +311 val_311 NULL NULL +311 val_311 NULL NULL +311 val_311 NULL NULL +315 val_315 NULL NULL +316 val_316 NULL NULL +316 val_316 NULL NULL +316 val_316 NULL NULL +317 val_317 NULL NULL +317 val_317 NULL NULL +318 val_318 NULL NULL +318 val_318 NULL NULL +318 val_318 NULL NULL +321 val_321 NULL NULL +321 val_321 NULL NULL +322 val_322 NULL NULL +322 val_322 NULL NULL +323 val_323 NULL NULL +325 val_325 NULL NULL +325 val_325 NULL NULL +327 val_327 NULL NULL +327 val_327 NULL NULL +327 val_327 NULL NULL +33 val_33 33 val_33 +331 val_331 NULL NULL +331 val_331 NULL NULL +332 val_332 NULL NULL +333 val_333 NULL NULL +333 val_333 NULL NULL +335 val_335 NULL NULL +336 val_336 NULL NULL +338 val_338 NULL NULL +339 val_339 NULL NULL +34 val_34 34 val_34 +341 val_341 NULL NULL +342 val_342 NULL NULL +342 val_342 NULL NULL +344 val_344 NULL NULL +344 val_344 NULL NULL +345 val_345 NULL NULL +348 val_348 NULL NULL +348 val_348 NULL NULL +348 val_348 NULL NULL +348 val_348 NULL NULL +348 val_348 NULL NULL +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +351 val_351 NULL NULL +353 val_353 NULL NULL +353 val_353 NULL NULL +356 val_356 NULL NULL +360 val_360 NULL NULL +362 val_362 NULL NULL +364 val_364 NULL NULL +365 val_365 NULL NULL +366 val_366 NULL NULL +367 val_367 NULL NULL +367 val_367 NULL NULL +368 val_368 NULL NULL +369 val_369 NULL NULL +369 val_369 NULL NULL +369 val_369 NULL NULL +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +373 val_373 NULL NULL +374 val_374 NULL NULL +375 val_375 NULL NULL +377 val_377 NULL NULL +378 val_378 NULL NULL +379 val_379 NULL NULL +382 val_382 NULL NULL +382 val_382 NULL NULL +384 val_384 NULL NULL +384 val_384 NULL NULL +384 val_384 NULL NULL +386 val_386 NULL NULL +389 val_389 NULL NULL +392 val_392 NULL NULL +393 val_393 NULL NULL +394 val_394 NULL NULL +395 val_395 NULL NULL +395 val_395 NULL NULL +396 val_396 NULL NULL +396 val_396 NULL NULL +396 val_396 NULL NULL +397 val_397 NULL NULL +397 val_397 NULL NULL +399 val_399 NULL NULL +399 val_399 NULL NULL +4 val_4 4 val_4 +400 val_400 NULL NULL +401 val_401 NULL NULL +401 val_401 NULL NULL +401 val_401 NULL NULL +401 val_401 NULL NULL +401 val_401 NULL NULL +402 val_402 NULL NULL +403 val_403 NULL NULL +403 val_403 NULL NULL +403 val_403 NULL NULL +404 val_404 NULL NULL +404 val_404 NULL NULL +406 val_406 NULL NULL +406 val_406 NULL NULL +406 val_406 NULL NULL +406 val_406 NULL NULL +407 val_407 NULL NULL +409 val_409 NULL NULL +409 val_409 NULL NULL +409 val_409 NULL NULL +41 val_41 41 val_41 +411 val_411 NULL NULL +413 val_413 NULL NULL +413 val_413 NULL NULL +414 val_414 NULL NULL +414 val_414 NULL NULL +417 val_417 NULL NULL +417 val_417 NULL NULL +417 val_417 NULL NULL +418 val_418 NULL NULL +419 val_419 NULL NULL +42 val_42 42 val_42 +42 val_42 42 val_42 +42 val_42 42 val_42 +42 val_42 42 val_42 +421 val_421 NULL NULL +424 val_424 NULL NULL +424 val_424 NULL NULL +427 val_427 NULL NULL +429 val_429 NULL NULL +429 val_429 NULL NULL +43 val_43 43 val_43 +430 val_430 NULL NULL +430 val_430 NULL NULL +430 val_430 NULL NULL +431 val_431 NULL NULL +431 val_431 NULL NULL +431 val_431 NULL NULL +432 val_432 NULL NULL +435 val_435 NULL NULL +436 val_436 NULL NULL +437 val_437 NULL NULL +438 val_438 NULL NULL +438 val_438 NULL NULL +438 val_438 NULL NULL +439 val_439 NULL NULL +439 val_439 NULL NULL +44 val_44 44 val_44 +443 val_443 NULL NULL +444 val_444 NULL NULL +446 val_446 NULL NULL +448 val_448 NULL NULL +449 val_449 NULL NULL +452 val_452 NULL NULL +453 val_453 NULL NULL +454 val_454 NULL NULL +454 val_454 NULL NULL +454 val_454 NULL NULL +455 val_455 NULL NULL +457 val_457 NULL NULL +458 val_458 NULL NULL +458 val_458 NULL NULL +459 val_459 NULL NULL +459 val_459 NULL NULL +460 val_460 NULL NULL +462 val_462 NULL NULL +462 val_462 NULL NULL +463 val_463 NULL NULL +463 val_463 NULL NULL +466 val_466 NULL NULL +466 val_466 NULL NULL +466 val_466 NULL NULL +467 val_467 NULL NULL +468 val_468 NULL NULL +468 val_468 NULL NULL +468 val_468 NULL NULL +468 val_468 NULL NULL +469 val_469 NULL NULL +469 val_469 NULL NULL +469 val_469 NULL NULL +469 val_469 NULL NULL +469 val_469 NULL NULL +47 val_47 47 val_47 +470 val_470 NULL NULL +472 val_472 NULL NULL +475 val_475 NULL NULL +477 val_477 NULL NULL +478 val_478 NULL NULL +478 val_478 NULL NULL +479 val_479 NULL NULL +480 val_480 NULL NULL +480 val_480 NULL NULL +480 val_480 NULL NULL +481 val_481 NULL NULL +482 val_482 NULL NULL +483 val_483 NULL NULL +484 val_484 NULL NULL +485 val_485 NULL NULL +487 val_487 NULL NULL +489 val_489 NULL NULL +489 val_489 NULL NULL +489 val_489 NULL NULL +489 val_489 NULL NULL +490 val_490 NULL NULL +491 val_491 NULL NULL +492 val_492 NULL NULL +492 val_492 NULL NULL +493 val_493 NULL NULL +494 val_494 NULL NULL +495 val_495 NULL NULL +496 val_496 NULL NULL +497 val_497 NULL NULL +498 val_498 NULL NULL +498 val_498 NULL NULL +498 val_498 NULL NULL +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +53 val_53 53 val_53 +54 val_54 54 val_54 +57 val_57 57 val_57 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +64 val_64 64 val_64 +65 val_65 65 val_65 +66 val_66 66 val_66 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +69 val_69 69 val_69 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +74 val_74 74 val_74 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +77 val_77 77 val_77 +78 val_78 78 val_78 +8 val_8 8 val_8 +80 val_80 80 val_80 +82 val_82 82 val_82 +83 val_83 83 val_83 +83 val_83 83 val_83 +83 val_83 83 val_83 +83 val_83 83 val_83 +84 val_84 84 val_84 +84 val_84 84 val_84 +84 val_84 84 val_84 +84 val_84 84 val_84 +85 val_85 85 val_85 +86 val_86 86 val_86 +87 val_87 87 val_87 +9 val_9 9 val_9 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +92 val_92 92 val_92 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +96 val_96 96 val_96 +97 val_97 97 val_97 +97 val_97 97 val_97 +97 val_97 97 val_97 +97 val_97 97 val_97 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join4-0-531e91e11b3891627c2675935fda14cd b/sql/hive/src/test/resources/golden/join4-0-531e91e11b3891627c2675935fda14cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join4-1-8884a9b112b0c767aa0bd8e745bd7b21 b/sql/hive/src/test/resources/golden/join4-1-8884a9b112b0c767aa0bd8e745bd7b21 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join4-2-dc967001beb776f3a859e9360823c361 b/sql/hive/src/test/resources/golden/join4-2-dc967001beb776f3a859e9360823c361 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join4-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/join4-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..e45f3234d5a88 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join4-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,11 @@ +15 val_15 NULL NULL +17 val_17 17 val_17 +12 val_12 NULL NULL +15 val_15 NULL NULL +19 val_19 19 val_19 +11 val_11 NULL NULL +12 val_12 NULL NULL +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join40-0-d2b5e23edec42a62e61750b110ecbaac b/sql/hive/src/test/resources/golden/join40-0-d2b5e23edec42a62e61750b110ecbaac new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join40-0-d2b5e23edec42a62e61750b110ecbaac @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join40-1-4b663d50fee0a8afd32cdf25c3b82de8 b/sql/hive/src/test/resources/golden/join40-1-4b663d50fee0a8afd32cdf25c3b82de8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join40-10-1d1f79e8e773d630f355c1a89d84b5aa b/sql/hive/src/test/resources/golden/join40-10-1d1f79e8e773d630f355c1a89d84b5aa new file mode 100644 index 0000000000000..8543fe173f87f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join40-10-1d1f79e8e773d630f355c1a89d84b5aa @@ -0,0 +1,566 @@ +238 val_238 NULL NULL +86 val_86 86 val_86 +311 val_311 NULL NULL +27 val_27 27 val_27 +165 val_165 NULL NULL +409 val_409 NULL NULL +255 val_255 NULL NULL +278 val_278 NULL NULL +98 val_98 98 val_98 +98 val_98 98 val_98 +484 val_484 NULL NULL +265 val_265 NULL NULL +193 val_193 NULL NULL +401 val_401 NULL NULL +150 val_150 NULL NULL +273 val_273 NULL NULL +224 val_224 NULL NULL +369 val_369 NULL NULL +66 val_66 66 val_66 +128 val_128 NULL NULL +213 val_213 NULL NULL +146 val_146 NULL NULL +406 val_406 NULL NULL +429 val_429 NULL NULL +374 val_374 NULL NULL +152 val_152 NULL NULL +469 val_469 NULL NULL +145 val_145 NULL NULL +495 val_495 NULL NULL +37 val_37 37 val_37 +37 val_37 37 val_37 +327 val_327 NULL NULL +281 val_281 NULL NULL +277 val_277 NULL NULL +209 val_209 NULL NULL +15 val_15 15 val_15 +15 val_15 15 val_15 +82 val_82 82 val_82 +403 val_403 NULL NULL +166 val_166 NULL NULL +417 val_417 NULL NULL +430 val_430 NULL NULL +252 val_252 NULL NULL +292 val_292 NULL NULL +219 val_219 NULL NULL +287 val_287 NULL NULL +153 val_153 NULL NULL +193 val_193 NULL NULL +338 val_338 NULL NULL +446 val_446 NULL NULL +459 val_459 NULL NULL +394 val_394 NULL NULL +237 val_237 NULL NULL +482 val_482 NULL NULL +174 val_174 NULL NULL +413 val_413 NULL NULL +494 val_494 NULL NULL +207 val_207 NULL NULL +199 val_199 NULL NULL +466 val_466 NULL NULL +208 val_208 NULL NULL +174 val_174 NULL NULL +399 val_399 NULL NULL +396 val_396 NULL NULL +247 val_247 NULL NULL +417 val_417 NULL NULL +489 val_489 NULL NULL +162 val_162 NULL NULL +377 val_377 NULL NULL +397 val_397 NULL NULL +309 val_309 NULL NULL +365 val_365 NULL NULL +266 val_266 NULL NULL +439 val_439 NULL NULL +342 val_342 NULL NULL +367 val_367 NULL NULL +325 val_325 NULL NULL +167 val_167 NULL NULL +195 val_195 NULL NULL +475 val_475 NULL NULL +17 val_17 17 val_17 +113 val_113 NULL NULL +155 val_155 NULL NULL +203 val_203 NULL NULL +339 val_339 NULL NULL +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +455 val_455 NULL NULL +128 val_128 NULL NULL +311 val_311 NULL NULL +316 val_316 NULL NULL +57 val_57 57 val_57 +302 val_302 NULL NULL +205 val_205 NULL NULL +149 val_149 NULL NULL +438 val_438 NULL NULL +345 val_345 NULL NULL +129 val_129 NULL NULL +170 val_170 NULL NULL +20 val_20 20 val_20 +489 val_489 NULL NULL +157 val_157 NULL NULL +378 val_378 NULL NULL +221 val_221 NULL NULL +92 val_92 92 val_92 +111 val_111 NULL NULL +47 val_47 47 val_47 +72 val_72 72 val_72 +72 val_72 72 val_72 +4 val_4 4 val_4 +280 val_280 NULL NULL +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +427 val_427 NULL NULL +277 val_277 NULL NULL +208 val_208 NULL NULL +356 val_356 NULL NULL +399 val_399 NULL NULL +169 val_169 NULL NULL +382 val_382 NULL NULL +498 val_498 NULL NULL +125 val_125 NULL NULL +386 val_386 NULL NULL +437 val_437 NULL NULL +469 val_469 NULL NULL +192 val_192 NULL NULL +286 val_286 NULL NULL +187 val_187 NULL NULL +176 val_176 NULL NULL +54 val_54 54 val_54 +459 val_459 NULL NULL +51 val_51 51 val_51 +51 val_51 51 val_51 +138 val_138 NULL NULL +103 val_103 NULL NULL +239 val_239 NULL NULL +213 val_213 NULL NULL +216 val_216 NULL NULL +430 val_430 NULL NULL +278 val_278 NULL NULL +176 val_176 NULL NULL +289 val_289 NULL NULL +221 val_221 NULL NULL +65 val_65 65 val_65 +318 val_318 NULL NULL +332 val_332 NULL NULL +311 val_311 NULL NULL +275 val_275 NULL NULL +137 val_137 NULL NULL +241 val_241 NULL NULL +83 val_83 83 val_83 +83 val_83 83 val_83 +333 val_333 NULL NULL +180 val_180 NULL NULL +284 val_284 NULL NULL +12 val_12 12 val_12 +12 val_12 12 val_12 +230 val_230 NULL NULL +181 val_181 NULL NULL +67 val_67 67 val_67 +67 val_67 67 val_67 +260 val_260 NULL NULL +404 val_404 NULL NULL +384 val_384 NULL NULL +489 val_489 NULL NULL +353 val_353 NULL NULL +373 val_373 NULL NULL +272 val_272 NULL NULL +138 val_138 NULL NULL +217 val_217 NULL NULL +84 val_84 84 val_84 +84 val_84 84 val_84 +348 val_348 NULL NULL +466 val_466 NULL NULL +58 val_58 58 val_58 +58 val_58 58 val_58 +8 val_8 8 val_8 +411 val_411 NULL NULL +230 val_230 NULL NULL +208 val_208 NULL NULL +348 val_348 NULL NULL +24 val_24 24 val_24 +24 val_24 24 val_24 +463 val_463 NULL NULL +431 val_431 NULL NULL +179 val_179 NULL NULL +172 val_172 NULL NULL +42 val_42 42 val_42 +42 val_42 42 val_42 +129 val_129 NULL NULL +158 val_158 NULL NULL +119 val_119 NULL NULL +496 val_496 NULL NULL +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +322 val_322 NULL NULL +197 val_197 NULL NULL +468 val_468 NULL NULL +393 val_393 NULL NULL +454 val_454 NULL NULL +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 NULL NULL +199 val_199 NULL NULL +191 val_191 NULL NULL +418 val_418 NULL NULL +96 val_96 96 val_96 +26 val_26 26 val_26 +26 val_26 26 val_26 +165 val_165 NULL NULL +327 val_327 NULL NULL +230 val_230 NULL NULL +205 val_205 NULL NULL +120 val_120 NULL NULL +131 val_131 NULL NULL +51 val_51 51 val_51 +51 val_51 51 val_51 +404 val_404 NULL NULL +43 val_43 43 val_43 +436 val_436 NULL NULL +156 val_156 NULL NULL +469 val_469 NULL NULL +468 val_468 NULL NULL +308 val_308 NULL NULL +95 val_95 95 val_95 +95 val_95 95 val_95 +196 val_196 NULL NULL +288 val_288 NULL NULL +481 val_481 NULL NULL +457 val_457 NULL NULL +98 val_98 98 val_98 +98 val_98 98 val_98 +282 val_282 NULL NULL +197 val_197 NULL NULL +187 val_187 NULL NULL +318 val_318 NULL NULL +318 val_318 NULL NULL +409 val_409 NULL NULL +470 val_470 NULL NULL +137 val_137 NULL NULL +369 val_369 NULL NULL +316 val_316 NULL NULL +169 val_169 NULL NULL +413 val_413 NULL NULL +85 val_85 85 val_85 +77 val_77 77 val_77 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +490 val_490 NULL NULL +87 val_87 87 val_87 +364 val_364 NULL NULL +179 val_179 NULL NULL +118 val_118 NULL NULL +134 val_134 NULL NULL +395 val_395 NULL NULL +282 val_282 NULL NULL +138 val_138 NULL NULL +238 val_238 NULL NULL +419 val_419 NULL NULL +15 val_15 15 val_15 +15 val_15 15 val_15 +118 val_118 NULL NULL +72 val_72 72 val_72 +72 val_72 72 val_72 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +307 val_307 NULL NULL +19 val_19 19 val_19 +435 val_435 NULL NULL +10 val_10 10 val_10 +277 val_277 NULL NULL +273 val_273 NULL NULL +306 val_306 NULL NULL +224 val_224 NULL NULL +309 val_309 NULL NULL +389 val_389 NULL NULL +327 val_327 NULL NULL +242 val_242 NULL NULL +369 val_369 NULL NULL +392 val_392 NULL NULL +272 val_272 NULL NULL +331 val_331 NULL NULL +401 val_401 NULL NULL +242 val_242 NULL NULL +452 val_452 NULL NULL +177 val_177 NULL NULL +226 val_226 NULL NULL +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +497 val_497 NULL NULL +402 val_402 NULL NULL +396 val_396 NULL NULL +317 val_317 NULL NULL +395 val_395 NULL NULL +58 val_58 58 val_58 +58 val_58 58 val_58 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +336 val_336 NULL NULL +95 val_95 95 val_95 +95 val_95 95 val_95 +11 val_11 11 val_11 +168 val_168 NULL NULL +34 val_34 34 val_34 +229 val_229 NULL NULL +233 val_233 NULL NULL +143 val_143 NULL NULL +472 val_472 NULL NULL +322 val_322 NULL NULL +498 val_498 NULL NULL +160 val_160 NULL NULL +195 val_195 NULL NULL +42 val_42 42 val_42 +42 val_42 42 val_42 +321 val_321 NULL NULL +430 val_430 NULL NULL +119 val_119 NULL NULL +489 val_489 NULL NULL +458 val_458 NULL NULL +78 val_78 78 val_78 +76 val_76 76 val_76 +76 val_76 76 val_76 +41 val_41 41 val_41 +223 val_223 NULL NULL +492 val_492 NULL NULL +149 val_149 NULL NULL +449 val_449 NULL NULL +218 val_218 NULL NULL +228 val_228 NULL NULL +138 val_138 NULL NULL +453 val_453 NULL NULL +30 val_30 30 val_30 +209 val_209 NULL NULL +64 val_64 64 val_64 +468 val_468 NULL NULL +76 val_76 76 val_76 +76 val_76 76 val_76 +74 val_74 74 val_74 +342 val_342 NULL NULL +69 val_69 69 val_69 +230 val_230 NULL NULL +33 val_33 33 val_33 +368 val_368 NULL NULL +103 val_103 NULL NULL +296 val_296 NULL NULL +113 val_113 NULL NULL +216 val_216 NULL NULL +367 val_367 NULL NULL +344 val_344 NULL NULL +167 val_167 NULL NULL +274 val_274 NULL NULL +219 val_219 NULL NULL +239 val_239 NULL NULL +485 val_485 NULL NULL +116 val_116 NULL NULL +223 val_223 NULL NULL +256 val_256 NULL NULL +263 val_263 NULL NULL +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +487 val_487 NULL NULL +480 val_480 NULL NULL +401 val_401 NULL NULL +288 val_288 NULL NULL +191 val_191 NULL NULL +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +244 val_244 NULL NULL +438 val_438 NULL NULL +128 val_128 NULL NULL +467 val_467 NULL NULL +432 val_432 NULL NULL +202 val_202 NULL NULL +316 val_316 NULL NULL +229 val_229 NULL NULL +469 val_469 NULL NULL +463 val_463 NULL NULL +280 val_280 NULL NULL +2 val_2 2 val_2 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +283 val_283 NULL NULL +331 val_331 NULL NULL +235 val_235 NULL NULL +80 val_80 80 val_80 +44 val_44 44 val_44 +193 val_193 NULL NULL +321 val_321 NULL NULL +335 val_335 NULL NULL +104 val_104 NULL NULL +466 val_466 NULL NULL +366 val_366 NULL NULL +175 val_175 NULL NULL +403 val_403 NULL NULL +483 val_483 NULL NULL +53 val_53 53 val_53 +105 val_105 NULL NULL +257 val_257 NULL NULL +406 val_406 NULL NULL +409 val_409 NULL NULL +190 val_190 NULL NULL +406 val_406 NULL NULL +401 val_401 NULL NULL +114 val_114 NULL NULL +258 val_258 NULL NULL +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +203 val_203 NULL NULL +262 val_262 NULL NULL +348 val_348 NULL NULL +424 val_424 NULL NULL +12 val_12 12 val_12 +12 val_12 12 val_12 +396 val_396 NULL NULL +201 val_201 NULL NULL +217 val_217 NULL NULL +164 val_164 NULL NULL +431 val_431 NULL NULL +454 val_454 NULL NULL +478 val_478 NULL NULL +298 val_298 NULL NULL +125 val_125 NULL NULL +431 val_431 NULL NULL +164 val_164 NULL NULL +424 val_424 NULL NULL +187 val_187 NULL NULL +382 val_382 NULL NULL +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +397 val_397 NULL NULL +480 val_480 NULL NULL +291 val_291 NULL NULL +24 val_24 24 val_24 +24 val_24 24 val_24 +351 val_351 NULL NULL +255 val_255 NULL NULL +104 val_104 NULL NULL +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +163 val_163 NULL NULL +438 val_438 NULL NULL +119 val_119 NULL NULL +414 val_414 NULL NULL +200 val_200 NULL NULL +491 val_491 NULL NULL +237 val_237 NULL NULL +439 val_439 NULL NULL +360 val_360 NULL NULL +248 val_248 NULL NULL +479 val_479 NULL NULL +305 val_305 NULL NULL +417 val_417 NULL NULL +199 val_199 NULL NULL +444 val_444 NULL NULL +120 val_120 NULL NULL +429 val_429 NULL NULL +169 val_169 NULL NULL +443 val_443 NULL NULL +323 val_323 NULL NULL +325 val_325 NULL NULL +277 val_277 NULL NULL +230 val_230 NULL NULL +478 val_478 NULL NULL +178 val_178 NULL NULL +468 val_468 NULL NULL +310 val_310 NULL NULL +317 val_317 NULL NULL +333 val_333 NULL NULL +493 val_493 NULL NULL +460 val_460 NULL NULL +207 val_207 NULL NULL +249 val_249 NULL NULL +265 val_265 NULL NULL +480 val_480 NULL NULL +83 val_83 83 val_83 +83 val_83 83 val_83 +136 val_136 NULL NULL +353 val_353 NULL NULL +172 val_172 NULL NULL +214 val_214 NULL NULL +462 val_462 NULL NULL +233 val_233 NULL NULL +406 val_406 NULL NULL +133 val_133 NULL NULL +175 val_175 NULL NULL +189 val_189 NULL NULL +454 val_454 NULL NULL +375 val_375 NULL NULL +401 val_401 NULL NULL +421 val_421 NULL NULL +407 val_407 NULL NULL +384 val_384 NULL NULL +256 val_256 NULL NULL +26 val_26 26 val_26 +26 val_26 26 val_26 +134 val_134 NULL NULL +67 val_67 67 val_67 +67 val_67 67 val_67 +384 val_384 NULL NULL +379 val_379 NULL NULL +18 val_18 18 val_18 +18 val_18 18 val_18 +462 val_462 NULL NULL +492 val_492 NULL NULL +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 NULL NULL +9 val_9 9 val_9 +341 val_341 NULL NULL +498 val_498 NULL NULL +146 val_146 NULL NULL +458 val_458 NULL NULL +362 val_362 NULL NULL +186 val_186 NULL NULL +285 val_285 NULL NULL +348 val_348 NULL NULL +167 val_167 NULL NULL +18 val_18 18 val_18 +18 val_18 18 val_18 +273 val_273 NULL NULL +183 val_183 NULL NULL +281 val_281 NULL NULL +344 val_344 NULL NULL +97 val_97 97 val_97 +97 val_97 97 val_97 +469 val_469 NULL NULL +315 val_315 NULL NULL +84 val_84 84 val_84 +84 val_84 84 val_84 +28 val_28 28 val_28 +37 val_37 37 val_37 +37 val_37 37 val_37 +448 val_448 NULL NULL +152 val_152 NULL NULL +348 val_348 NULL NULL +307 val_307 NULL NULL +194 val_194 NULL NULL +414 val_414 NULL NULL +477 val_477 NULL NULL +222 val_222 NULL NULL +126 val_126 NULL NULL +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +169 val_169 NULL NULL +403 val_403 NULL NULL +400 val_400 NULL NULL +200 val_200 NULL NULL +97 val_97 97 val_97 +97 val_97 97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join40-11-c8c5b97a744acf897888ab2d51d33a80 b/sql/hive/src/test/resources/golden/join40-11-c8c5b97a744acf897888ab2d51d33a80 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join40-12-aaddbef9069aba3ebeb310be74671cda b/sql/hive/src/test/resources/golden/join40-12-aaddbef9069aba3ebeb310be74671cda new file mode 100644 index 0000000000000..67d892c80f493 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join40-12-aaddbef9069aba3ebeb310be74671cda @@ -0,0 +1 @@ +1028 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join40-2-507b1d9f6abbdb756a589d7bc4826251 b/sql/hive/src/test/resources/golden/join40-2-507b1d9f6abbdb756a589d7bc4826251 new file mode 100644 index 0000000000000..8543fe173f87f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join40-2-507b1d9f6abbdb756a589d7bc4826251 @@ -0,0 +1,566 @@ +238 val_238 NULL NULL +86 val_86 86 val_86 +311 val_311 NULL NULL +27 val_27 27 val_27 +165 val_165 NULL NULL +409 val_409 NULL NULL +255 val_255 NULL NULL +278 val_278 NULL NULL +98 val_98 98 val_98 +98 val_98 98 val_98 +484 val_484 NULL NULL +265 val_265 NULL NULL +193 val_193 NULL NULL +401 val_401 NULL NULL +150 val_150 NULL NULL +273 val_273 NULL NULL +224 val_224 NULL NULL +369 val_369 NULL NULL +66 val_66 66 val_66 +128 val_128 NULL NULL +213 val_213 NULL NULL +146 val_146 NULL NULL +406 val_406 NULL NULL +429 val_429 NULL NULL +374 val_374 NULL NULL +152 val_152 NULL NULL +469 val_469 NULL NULL +145 val_145 NULL NULL +495 val_495 NULL NULL +37 val_37 37 val_37 +37 val_37 37 val_37 +327 val_327 NULL NULL +281 val_281 NULL NULL +277 val_277 NULL NULL +209 val_209 NULL NULL +15 val_15 15 val_15 +15 val_15 15 val_15 +82 val_82 82 val_82 +403 val_403 NULL NULL +166 val_166 NULL NULL +417 val_417 NULL NULL +430 val_430 NULL NULL +252 val_252 NULL NULL +292 val_292 NULL NULL +219 val_219 NULL NULL +287 val_287 NULL NULL +153 val_153 NULL NULL +193 val_193 NULL NULL +338 val_338 NULL NULL +446 val_446 NULL NULL +459 val_459 NULL NULL +394 val_394 NULL NULL +237 val_237 NULL NULL +482 val_482 NULL NULL +174 val_174 NULL NULL +413 val_413 NULL NULL +494 val_494 NULL NULL +207 val_207 NULL NULL +199 val_199 NULL NULL +466 val_466 NULL NULL +208 val_208 NULL NULL +174 val_174 NULL NULL +399 val_399 NULL NULL +396 val_396 NULL NULL +247 val_247 NULL NULL +417 val_417 NULL NULL +489 val_489 NULL NULL +162 val_162 NULL NULL +377 val_377 NULL NULL +397 val_397 NULL NULL +309 val_309 NULL NULL +365 val_365 NULL NULL +266 val_266 NULL NULL +439 val_439 NULL NULL +342 val_342 NULL NULL +367 val_367 NULL NULL +325 val_325 NULL NULL +167 val_167 NULL NULL +195 val_195 NULL NULL +475 val_475 NULL NULL +17 val_17 17 val_17 +113 val_113 NULL NULL +155 val_155 NULL NULL +203 val_203 NULL NULL +339 val_339 NULL NULL +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +455 val_455 NULL NULL +128 val_128 NULL NULL +311 val_311 NULL NULL +316 val_316 NULL NULL +57 val_57 57 val_57 +302 val_302 NULL NULL +205 val_205 NULL NULL +149 val_149 NULL NULL +438 val_438 NULL NULL +345 val_345 NULL NULL +129 val_129 NULL NULL +170 val_170 NULL NULL +20 val_20 20 val_20 +489 val_489 NULL NULL +157 val_157 NULL NULL +378 val_378 NULL NULL +221 val_221 NULL NULL +92 val_92 92 val_92 +111 val_111 NULL NULL +47 val_47 47 val_47 +72 val_72 72 val_72 +72 val_72 72 val_72 +4 val_4 4 val_4 +280 val_280 NULL NULL +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +427 val_427 NULL NULL +277 val_277 NULL NULL +208 val_208 NULL NULL +356 val_356 NULL NULL +399 val_399 NULL NULL +169 val_169 NULL NULL +382 val_382 NULL NULL +498 val_498 NULL NULL +125 val_125 NULL NULL +386 val_386 NULL NULL +437 val_437 NULL NULL +469 val_469 NULL NULL +192 val_192 NULL NULL +286 val_286 NULL NULL +187 val_187 NULL NULL +176 val_176 NULL NULL +54 val_54 54 val_54 +459 val_459 NULL NULL +51 val_51 51 val_51 +51 val_51 51 val_51 +138 val_138 NULL NULL +103 val_103 NULL NULL +239 val_239 NULL NULL +213 val_213 NULL NULL +216 val_216 NULL NULL +430 val_430 NULL NULL +278 val_278 NULL NULL +176 val_176 NULL NULL +289 val_289 NULL NULL +221 val_221 NULL NULL +65 val_65 65 val_65 +318 val_318 NULL NULL +332 val_332 NULL NULL +311 val_311 NULL NULL +275 val_275 NULL NULL +137 val_137 NULL NULL +241 val_241 NULL NULL +83 val_83 83 val_83 +83 val_83 83 val_83 +333 val_333 NULL NULL +180 val_180 NULL NULL +284 val_284 NULL NULL +12 val_12 12 val_12 +12 val_12 12 val_12 +230 val_230 NULL NULL +181 val_181 NULL NULL +67 val_67 67 val_67 +67 val_67 67 val_67 +260 val_260 NULL NULL +404 val_404 NULL NULL +384 val_384 NULL NULL +489 val_489 NULL NULL +353 val_353 NULL NULL +373 val_373 NULL NULL +272 val_272 NULL NULL +138 val_138 NULL NULL +217 val_217 NULL NULL +84 val_84 84 val_84 +84 val_84 84 val_84 +348 val_348 NULL NULL +466 val_466 NULL NULL +58 val_58 58 val_58 +58 val_58 58 val_58 +8 val_8 8 val_8 +411 val_411 NULL NULL +230 val_230 NULL NULL +208 val_208 NULL NULL +348 val_348 NULL NULL +24 val_24 24 val_24 +24 val_24 24 val_24 +463 val_463 NULL NULL +431 val_431 NULL NULL +179 val_179 NULL NULL +172 val_172 NULL NULL +42 val_42 42 val_42 +42 val_42 42 val_42 +129 val_129 NULL NULL +158 val_158 NULL NULL +119 val_119 NULL NULL +496 val_496 NULL NULL +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +322 val_322 NULL NULL +197 val_197 NULL NULL +468 val_468 NULL NULL +393 val_393 NULL NULL +454 val_454 NULL NULL +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 NULL NULL +199 val_199 NULL NULL +191 val_191 NULL NULL +418 val_418 NULL NULL +96 val_96 96 val_96 +26 val_26 26 val_26 +26 val_26 26 val_26 +165 val_165 NULL NULL +327 val_327 NULL NULL +230 val_230 NULL NULL +205 val_205 NULL NULL +120 val_120 NULL NULL +131 val_131 NULL NULL +51 val_51 51 val_51 +51 val_51 51 val_51 +404 val_404 NULL NULL +43 val_43 43 val_43 +436 val_436 NULL NULL +156 val_156 NULL NULL +469 val_469 NULL NULL +468 val_468 NULL NULL +308 val_308 NULL NULL +95 val_95 95 val_95 +95 val_95 95 val_95 +196 val_196 NULL NULL +288 val_288 NULL NULL +481 val_481 NULL NULL +457 val_457 NULL NULL +98 val_98 98 val_98 +98 val_98 98 val_98 +282 val_282 NULL NULL +197 val_197 NULL NULL +187 val_187 NULL NULL +318 val_318 NULL NULL +318 val_318 NULL NULL +409 val_409 NULL NULL +470 val_470 NULL NULL +137 val_137 NULL NULL +369 val_369 NULL NULL +316 val_316 NULL NULL +169 val_169 NULL NULL +413 val_413 NULL NULL +85 val_85 85 val_85 +77 val_77 77 val_77 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +490 val_490 NULL NULL +87 val_87 87 val_87 +364 val_364 NULL NULL +179 val_179 NULL NULL +118 val_118 NULL NULL +134 val_134 NULL NULL +395 val_395 NULL NULL +282 val_282 NULL NULL +138 val_138 NULL NULL +238 val_238 NULL NULL +419 val_419 NULL NULL +15 val_15 15 val_15 +15 val_15 15 val_15 +118 val_118 NULL NULL +72 val_72 72 val_72 +72 val_72 72 val_72 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +307 val_307 NULL NULL +19 val_19 19 val_19 +435 val_435 NULL NULL +10 val_10 10 val_10 +277 val_277 NULL NULL +273 val_273 NULL NULL +306 val_306 NULL NULL +224 val_224 NULL NULL +309 val_309 NULL NULL +389 val_389 NULL NULL +327 val_327 NULL NULL +242 val_242 NULL NULL +369 val_369 NULL NULL +392 val_392 NULL NULL +272 val_272 NULL NULL +331 val_331 NULL NULL +401 val_401 NULL NULL +242 val_242 NULL NULL +452 val_452 NULL NULL +177 val_177 NULL NULL +226 val_226 NULL NULL +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +497 val_497 NULL NULL +402 val_402 NULL NULL +396 val_396 NULL NULL +317 val_317 NULL NULL +395 val_395 NULL NULL +58 val_58 58 val_58 +58 val_58 58 val_58 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +336 val_336 NULL NULL +95 val_95 95 val_95 +95 val_95 95 val_95 +11 val_11 11 val_11 +168 val_168 NULL NULL +34 val_34 34 val_34 +229 val_229 NULL NULL +233 val_233 NULL NULL +143 val_143 NULL NULL +472 val_472 NULL NULL +322 val_322 NULL NULL +498 val_498 NULL NULL +160 val_160 NULL NULL +195 val_195 NULL NULL +42 val_42 42 val_42 +42 val_42 42 val_42 +321 val_321 NULL NULL +430 val_430 NULL NULL +119 val_119 NULL NULL +489 val_489 NULL NULL +458 val_458 NULL NULL +78 val_78 78 val_78 +76 val_76 76 val_76 +76 val_76 76 val_76 +41 val_41 41 val_41 +223 val_223 NULL NULL +492 val_492 NULL NULL +149 val_149 NULL NULL +449 val_449 NULL NULL +218 val_218 NULL NULL +228 val_228 NULL NULL +138 val_138 NULL NULL +453 val_453 NULL NULL +30 val_30 30 val_30 +209 val_209 NULL NULL +64 val_64 64 val_64 +468 val_468 NULL NULL +76 val_76 76 val_76 +76 val_76 76 val_76 +74 val_74 74 val_74 +342 val_342 NULL NULL +69 val_69 69 val_69 +230 val_230 NULL NULL +33 val_33 33 val_33 +368 val_368 NULL NULL +103 val_103 NULL NULL +296 val_296 NULL NULL +113 val_113 NULL NULL +216 val_216 NULL NULL +367 val_367 NULL NULL +344 val_344 NULL NULL +167 val_167 NULL NULL +274 val_274 NULL NULL +219 val_219 NULL NULL +239 val_239 NULL NULL +485 val_485 NULL NULL +116 val_116 NULL NULL +223 val_223 NULL NULL +256 val_256 NULL NULL +263 val_263 NULL NULL +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +487 val_487 NULL NULL +480 val_480 NULL NULL +401 val_401 NULL NULL +288 val_288 NULL NULL +191 val_191 NULL NULL +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +244 val_244 NULL NULL +438 val_438 NULL NULL +128 val_128 NULL NULL +467 val_467 NULL NULL +432 val_432 NULL NULL +202 val_202 NULL NULL +316 val_316 NULL NULL +229 val_229 NULL NULL +469 val_469 NULL NULL +463 val_463 NULL NULL +280 val_280 NULL NULL +2 val_2 2 val_2 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +283 val_283 NULL NULL +331 val_331 NULL NULL +235 val_235 NULL NULL +80 val_80 80 val_80 +44 val_44 44 val_44 +193 val_193 NULL NULL +321 val_321 NULL NULL +335 val_335 NULL NULL +104 val_104 NULL NULL +466 val_466 NULL NULL +366 val_366 NULL NULL +175 val_175 NULL NULL +403 val_403 NULL NULL +483 val_483 NULL NULL +53 val_53 53 val_53 +105 val_105 NULL NULL +257 val_257 NULL NULL +406 val_406 NULL NULL +409 val_409 NULL NULL +190 val_190 NULL NULL +406 val_406 NULL NULL +401 val_401 NULL NULL +114 val_114 NULL NULL +258 val_258 NULL NULL +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +203 val_203 NULL NULL +262 val_262 NULL NULL +348 val_348 NULL NULL +424 val_424 NULL NULL +12 val_12 12 val_12 +12 val_12 12 val_12 +396 val_396 NULL NULL +201 val_201 NULL NULL +217 val_217 NULL NULL +164 val_164 NULL NULL +431 val_431 NULL NULL +454 val_454 NULL NULL +478 val_478 NULL NULL +298 val_298 NULL NULL +125 val_125 NULL NULL +431 val_431 NULL NULL +164 val_164 NULL NULL +424 val_424 NULL NULL +187 val_187 NULL NULL +382 val_382 NULL NULL +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +397 val_397 NULL NULL +480 val_480 NULL NULL +291 val_291 NULL NULL +24 val_24 24 val_24 +24 val_24 24 val_24 +351 val_351 NULL NULL +255 val_255 NULL NULL +104 val_104 NULL NULL +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +163 val_163 NULL NULL +438 val_438 NULL NULL +119 val_119 NULL NULL +414 val_414 NULL NULL +200 val_200 NULL NULL +491 val_491 NULL NULL +237 val_237 NULL NULL +439 val_439 NULL NULL +360 val_360 NULL NULL +248 val_248 NULL NULL +479 val_479 NULL NULL +305 val_305 NULL NULL +417 val_417 NULL NULL +199 val_199 NULL NULL +444 val_444 NULL NULL +120 val_120 NULL NULL +429 val_429 NULL NULL +169 val_169 NULL NULL +443 val_443 NULL NULL +323 val_323 NULL NULL +325 val_325 NULL NULL +277 val_277 NULL NULL +230 val_230 NULL NULL +478 val_478 NULL NULL +178 val_178 NULL NULL +468 val_468 NULL NULL +310 val_310 NULL NULL +317 val_317 NULL NULL +333 val_333 NULL NULL +493 val_493 NULL NULL +460 val_460 NULL NULL +207 val_207 NULL NULL +249 val_249 NULL NULL +265 val_265 NULL NULL +480 val_480 NULL NULL +83 val_83 83 val_83 +83 val_83 83 val_83 +136 val_136 NULL NULL +353 val_353 NULL NULL +172 val_172 NULL NULL +214 val_214 NULL NULL +462 val_462 NULL NULL +233 val_233 NULL NULL +406 val_406 NULL NULL +133 val_133 NULL NULL +175 val_175 NULL NULL +189 val_189 NULL NULL +454 val_454 NULL NULL +375 val_375 NULL NULL +401 val_401 NULL NULL +421 val_421 NULL NULL +407 val_407 NULL NULL +384 val_384 NULL NULL +256 val_256 NULL NULL +26 val_26 26 val_26 +26 val_26 26 val_26 +134 val_134 NULL NULL +67 val_67 67 val_67 +67 val_67 67 val_67 +384 val_384 NULL NULL +379 val_379 NULL NULL +18 val_18 18 val_18 +18 val_18 18 val_18 +462 val_462 NULL NULL +492 val_492 NULL NULL +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 NULL NULL +9 val_9 9 val_9 +341 val_341 NULL NULL +498 val_498 NULL NULL +146 val_146 NULL NULL +458 val_458 NULL NULL +362 val_362 NULL NULL +186 val_186 NULL NULL +285 val_285 NULL NULL +348 val_348 NULL NULL +167 val_167 NULL NULL +18 val_18 18 val_18 +18 val_18 18 val_18 +273 val_273 NULL NULL +183 val_183 NULL NULL +281 val_281 NULL NULL +344 val_344 NULL NULL +97 val_97 97 val_97 +97 val_97 97 val_97 +469 val_469 NULL NULL +315 val_315 NULL NULL +84 val_84 84 val_84 +84 val_84 84 val_84 +28 val_28 28 val_28 +37 val_37 37 val_37 +37 val_37 37 val_37 +448 val_448 NULL NULL +152 val_152 NULL NULL +348 val_348 NULL NULL +307 val_307 NULL NULL +194 val_194 NULL NULL +414 val_414 NULL NULL +477 val_477 NULL NULL +222 val_222 NULL NULL +126 val_126 NULL NULL +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +169 val_169 NULL NULL +403 val_403 NULL NULL +400 val_400 NULL NULL +200 val_200 NULL NULL +97 val_97 97 val_97 +97 val_97 97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join40-3-4ef939dcda3b87f66c1bb3b2ebe32ec6 b/sql/hive/src/test/resources/golden/join40-3-4ef939dcda3b87f66c1bb3b2ebe32ec6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join40-4-61fb097bda1751910de966d6a4a8f0b7 b/sql/hive/src/test/resources/golden/join40-4-61fb097bda1751910de966d6a4a8f0b7 new file mode 100644 index 0000000000000..59821aeea3008 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join40-4-61fb097bda1751910de966d6a4a8f0b7 @@ -0,0 +1,1028 @@ +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +82 val_82 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +4 val_4 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +54 val_54 +459 val_459 +459 val_459 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +58 val_58 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +404 val_404 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +209 val_209 +64 val_64 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join40-5-16cda49c2b2cd0c0cdae40af4d5c900e b/sql/hive/src/test/resources/golden/join40-5-16cda49c2b2cd0c0cdae40af4d5c900e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join40-6-9685f2d31ffe922d3ea217de32ca3049 b/sql/hive/src/test/resources/golden/join40-6-9685f2d31ffe922d3ea217de32ca3049 new file mode 100644 index 0000000000000..bd6e20b8de1e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join40-6-9685f2d31ffe922d3ea217de32ca3049 @@ -0,0 +1,548 @@ +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +2 val_2 2 val_2 2 val_2 +4 val_4 4 val_4 4 val_4 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +8 val_8 8 val_8 8 val_8 +9 val_9 9 val_9 9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join40-7-222655137ca9242f063c7717acbe4c65 b/sql/hive/src/test/resources/golden/join40-7-222655137ca9242f063c7717acbe4c65 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join40-8-3331a020843caccf2fa32a1225c5c3a9 b/sql/hive/src/test/resources/golden/join40-8-3331a020843caccf2fa32a1225c5c3a9 new file mode 100644 index 0000000000000..bd6e20b8de1e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join40-8-3331a020843caccf2fa32a1225c5c3a9 @@ -0,0 +1,548 @@ +NULL NULL NULL NULL 10 val_10 +NULL NULL NULL NULL 11 val_11 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 12 val_12 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 15 val_15 +NULL NULL NULL NULL 17 val_17 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 18 val_18 +NULL NULL NULL NULL 19 val_19 +NULL NULL NULL NULL 20 val_20 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 24 val_24 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 26 val_26 +NULL NULL NULL NULL 27 val_27 +NULL NULL NULL NULL 28 val_28 +NULL NULL NULL NULL 30 val_30 +NULL NULL NULL NULL 33 val_33 +NULL NULL NULL NULL 34 val_34 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 35 val_35 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 37 val_37 +NULL NULL NULL NULL 41 val_41 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 42 val_42 +NULL NULL NULL NULL 43 val_43 +NULL NULL NULL NULL 44 val_44 +NULL NULL NULL NULL 47 val_47 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 51 val_51 +NULL NULL NULL NULL 53 val_53 +NULL NULL NULL NULL 54 val_54 +NULL NULL NULL NULL 57 val_57 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 58 val_58 +NULL NULL NULL NULL 64 val_64 +NULL NULL NULL NULL 65 val_65 +NULL NULL NULL NULL 66 val_66 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 67 val_67 +NULL NULL NULL NULL 69 val_69 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 70 val_70 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 72 val_72 +NULL NULL NULL NULL 74 val_74 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 76 val_76 +NULL NULL NULL NULL 77 val_77 +NULL NULL NULL NULL 78 val_78 +NULL NULL NULL NULL 80 val_80 +NULL NULL NULL NULL 82 val_82 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 83 val_83 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 84 val_84 +NULL NULL NULL NULL 85 val_85 +NULL NULL NULL NULL 86 val_86 +NULL NULL NULL NULL 87 val_87 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 90 val_90 +NULL NULL NULL NULL 92 val_92 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 95 val_95 +NULL NULL NULL NULL 96 val_96 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 97 val_97 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 98 val_98 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 100 val_100 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 103 val_103 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 104 val_104 +NULL NULL NULL NULL 105 val_105 +NULL NULL NULL NULL 111 val_111 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 113 val_113 +NULL NULL NULL NULL 114 val_114 +NULL NULL NULL NULL 116 val_116 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 118 val_118 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 119 val_119 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 120 val_120 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 125 val_125 +NULL NULL NULL NULL 126 val_126 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 128 val_128 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 129 val_129 +NULL NULL NULL NULL 131 val_131 +NULL NULL NULL NULL 133 val_133 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 134 val_134 +NULL NULL NULL NULL 136 val_136 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 137 val_137 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 138 val_138 +NULL NULL NULL NULL 143 val_143 +NULL NULL NULL NULL 145 val_145 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 146 val_146 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 149 val_149 +NULL NULL NULL NULL 150 val_150 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 152 val_152 +NULL NULL NULL NULL 153 val_153 +NULL NULL NULL NULL 155 val_155 +NULL NULL NULL NULL 156 val_156 +NULL NULL NULL NULL 157 val_157 +NULL NULL NULL NULL 158 val_158 +NULL NULL NULL NULL 160 val_160 +NULL NULL NULL NULL 162 val_162 +NULL NULL NULL NULL 163 val_163 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 164 val_164 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 165 val_165 +NULL NULL NULL NULL 166 val_166 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 167 val_167 +NULL NULL NULL NULL 168 val_168 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 169 val_169 +NULL NULL NULL NULL 170 val_170 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 172 val_172 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 174 val_174 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 175 val_175 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 176 val_176 +NULL NULL NULL NULL 177 val_177 +NULL NULL NULL NULL 178 val_178 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 179 val_179 +NULL NULL NULL NULL 180 val_180 +NULL NULL NULL NULL 181 val_181 +NULL NULL NULL NULL 183 val_183 +NULL NULL NULL NULL 186 val_186 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 187 val_187 +NULL NULL NULL NULL 189 val_189 +NULL NULL NULL NULL 190 val_190 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 191 val_191 +NULL NULL NULL NULL 192 val_192 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 193 val_193 +NULL NULL NULL NULL 194 val_194 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 195 val_195 +NULL NULL NULL NULL 196 val_196 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 197 val_197 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 199 val_199 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 200 val_200 +NULL NULL NULL NULL 201 val_201 +NULL NULL NULL NULL 202 val_202 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 203 val_203 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 205 val_205 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 207 val_207 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 208 val_208 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 209 val_209 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 213 val_213 +NULL NULL NULL NULL 214 val_214 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 216 val_216 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 217 val_217 +NULL NULL NULL NULL 218 val_218 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 219 val_219 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 221 val_221 +NULL NULL NULL NULL 222 val_222 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 223 val_223 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 224 val_224 +NULL NULL NULL NULL 226 val_226 +NULL NULL NULL NULL 228 val_228 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 229 val_229 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 230 val_230 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 233 val_233 +NULL NULL NULL NULL 235 val_235 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 237 val_237 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 238 val_238 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 239 val_239 +NULL NULL NULL NULL 241 val_241 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 242 val_242 +NULL NULL NULL NULL 244 val_244 +NULL NULL NULL NULL 247 val_247 +NULL NULL NULL NULL 248 val_248 +NULL NULL NULL NULL 249 val_249 +NULL NULL NULL NULL 252 val_252 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 255 val_255 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 256 val_256 +NULL NULL NULL NULL 257 val_257 +NULL NULL NULL NULL 258 val_258 +NULL NULL NULL NULL 260 val_260 +NULL NULL NULL NULL 262 val_262 +NULL NULL NULL NULL 263 val_263 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 265 val_265 +NULL NULL NULL NULL 266 val_266 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 272 val_272 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 273 val_273 +NULL NULL NULL NULL 274 val_274 +NULL NULL NULL NULL 275 val_275 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 277 val_277 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 278 val_278 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 280 val_280 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 281 val_281 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 282 val_282 +NULL NULL NULL NULL 283 val_283 +NULL NULL NULL NULL 284 val_284 +NULL NULL NULL NULL 285 val_285 +NULL NULL NULL NULL 286 val_286 +NULL NULL NULL NULL 287 val_287 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 288 val_288 +NULL NULL NULL NULL 289 val_289 +NULL NULL NULL NULL 291 val_291 +NULL NULL NULL NULL 292 val_292 +NULL NULL NULL NULL 296 val_296 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 298 val_298 +NULL NULL NULL NULL 302 val_302 +NULL NULL NULL NULL 305 val_305 +NULL NULL NULL NULL 306 val_306 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 307 val_307 +NULL NULL NULL NULL 308 val_308 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 309 val_309 +NULL NULL NULL NULL 310 val_310 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 311 val_311 +NULL NULL NULL NULL 315 val_315 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 316 val_316 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 317 val_317 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 318 val_318 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 321 val_321 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 322 val_322 +NULL NULL NULL NULL 323 val_323 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 325 val_325 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 327 val_327 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 331 val_331 +NULL NULL NULL NULL 332 val_332 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 333 val_333 +NULL NULL NULL NULL 335 val_335 +NULL NULL NULL NULL 336 val_336 +NULL NULL NULL NULL 338 val_338 +NULL NULL NULL NULL 339 val_339 +NULL NULL NULL NULL 341 val_341 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 342 val_342 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 344 val_344 +NULL NULL NULL NULL 345 val_345 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 348 val_348 +NULL NULL NULL NULL 351 val_351 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 353 val_353 +NULL NULL NULL NULL 356 val_356 +NULL NULL NULL NULL 360 val_360 +NULL NULL NULL NULL 362 val_362 +NULL NULL NULL NULL 364 val_364 +NULL NULL NULL NULL 365 val_365 +NULL NULL NULL NULL 366 val_366 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 367 val_367 +NULL NULL NULL NULL 368 val_368 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 369 val_369 +NULL NULL NULL NULL 373 val_373 +NULL NULL NULL NULL 374 val_374 +NULL NULL NULL NULL 375 val_375 +NULL NULL NULL NULL 377 val_377 +NULL NULL NULL NULL 378 val_378 +NULL NULL NULL NULL 379 val_379 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 382 val_382 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 384 val_384 +NULL NULL NULL NULL 386 val_386 +NULL NULL NULL NULL 389 val_389 +NULL NULL NULL NULL 392 val_392 +NULL NULL NULL NULL 393 val_393 +NULL NULL NULL NULL 394 val_394 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 395 val_395 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 396 val_396 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 397 val_397 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 399 val_399 +NULL NULL NULL NULL 400 val_400 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 401 val_401 +NULL NULL NULL NULL 402 val_402 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 403 val_403 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 404 val_404 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 406 val_406 +NULL NULL NULL NULL 407 val_407 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 409 val_409 +NULL NULL NULL NULL 411 val_411 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 413 val_413 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 414 val_414 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 417 val_417 +NULL NULL NULL NULL 418 val_418 +NULL NULL NULL NULL 419 val_419 +NULL NULL NULL NULL 421 val_421 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 424 val_424 +NULL NULL NULL NULL 427 val_427 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 429 val_429 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 430 val_430 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 431 val_431 +NULL NULL NULL NULL 432 val_432 +NULL NULL NULL NULL 435 val_435 +NULL NULL NULL NULL 436 val_436 +NULL NULL NULL NULL 437 val_437 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 438 val_438 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 439 val_439 +NULL NULL NULL NULL 443 val_443 +NULL NULL NULL NULL 444 val_444 +NULL NULL NULL NULL 446 val_446 +NULL NULL NULL NULL 448 val_448 +NULL NULL NULL NULL 449 val_449 +NULL NULL NULL NULL 452 val_452 +NULL NULL NULL NULL 453 val_453 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 454 val_454 +NULL NULL NULL NULL 455 val_455 +NULL NULL NULL NULL 457 val_457 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 458 val_458 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 459 val_459 +NULL NULL NULL NULL 460 val_460 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 462 val_462 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 463 val_463 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 466 val_466 +NULL NULL NULL NULL 467 val_467 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 468 val_468 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 469 val_469 +NULL NULL NULL NULL 470 val_470 +NULL NULL NULL NULL 472 val_472 +NULL NULL NULL NULL 475 val_475 +NULL NULL NULL NULL 477 val_477 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 478 val_478 +NULL NULL NULL NULL 479 val_479 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 480 val_480 +NULL NULL NULL NULL 481 val_481 +NULL NULL NULL NULL 482 val_482 +NULL NULL NULL NULL 483 val_483 +NULL NULL NULL NULL 484 val_484 +NULL NULL NULL NULL 485 val_485 +NULL NULL NULL NULL 487 val_487 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 489 val_489 +NULL NULL NULL NULL 490 val_490 +NULL NULL NULL NULL 491 val_491 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 492 val_492 +NULL NULL NULL NULL 493 val_493 +NULL NULL NULL NULL 494 val_494 +NULL NULL NULL NULL 495 val_495 +NULL NULL NULL NULL 496 val_496 +NULL NULL NULL NULL 497 val_497 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +NULL NULL NULL NULL 498 val_498 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +0 val_0 0 val_0 0 val_0 +2 val_2 2 val_2 2 val_2 +4 val_4 4 val_4 4 val_4 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +5 val_5 5 val_5 5 val_5 +8 val_8 8 val_8 8 val_8 +9 val_9 9 val_9 9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join40-9-6b7404af014eeb4de196577f14ef18cc b/sql/hive/src/test/resources/golden/join40-9-6b7404af014eeb4de196577f14ef18cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join41-0-b74d94933c6670ccc4a1ad8161185686 b/sql/hive/src/test/resources/golden/join41-0-b74d94933c6670ccc4a1ad8161185686 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join41-1-25e434b6d05e08fdd5f4d9957438917 b/sql/hive/src/test/resources/golden/join41-1-25e434b6d05e08fdd5f4d9957438917 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join41-1-25e434b6d05e08fdd5f4d9957438917 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join41-2-e02c931c8bb07ad765d0a6cd73abc2a b/sql/hive/src/test/resources/golden/join41-2-e02c931c8bb07ad765d0a6cd73abc2a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join41-3-1dc98363e7da167dc45711a87ef3a988 b/sql/hive/src/test/resources/golden/join41-3-1dc98363e7da167dc45711a87ef3a988 new file mode 100644 index 0000000000000..7265626e5dbde --- /dev/null +++ b/sql/hive/src/test/resources/golden/join41-3-1dc98363e7da167dc45711a87ef3a988 @@ -0,0 +1,3 @@ +0 val_0 NULL NULL +0 val_0 NULL NULL +0 val_0 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join41-4-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join41-4-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join41-4-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join41-5-f18ea17bcfafde311a4bdc589362e00e b/sql/hive/src/test/resources/golden/join41-5-f18ea17bcfafde311a4bdc589362e00e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join41-6-1dc98363e7da167dc45711a87ef3a988 b/sql/hive/src/test/resources/golden/join41-6-1dc98363e7da167dc45711a87ef3a988 new file mode 100644 index 0000000000000..7265626e5dbde --- /dev/null +++ b/sql/hive/src/test/resources/golden/join41-6-1dc98363e7da167dc45711a87ef3a988 @@ -0,0 +1,3 @@ +0 val_0 NULL NULL +0 val_0 NULL NULL +0 val_0 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join5-0-531e91e11b3891627c2675935fda14cd b/sql/hive/src/test/resources/golden/join5-0-531e91e11b3891627c2675935fda14cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join5-1-76feff1282895f38b673f52acfd7429e b/sql/hive/src/test/resources/golden/join5-1-76feff1282895f38b673f52acfd7429e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join5-2-b07bb1fdcd0eeeb62a8f7acb70cd2330 b/sql/hive/src/test/resources/golden/join5-2-b07bb1fdcd0eeeb62a8f7acb70cd2330 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join5-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/join5-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..06b2b4d7e6d47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join5-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,9 @@ +17 val_17 17 val_17 +NULL NULL 20 val_20 +NULL NULL 24 val_24 +19 val_19 19 val_19 +NULL NULL 24 val_24 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join6-0-531e91e11b3891627c2675935fda14cd b/sql/hive/src/test/resources/golden/join6-0-531e91e11b3891627c2675935fda14cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join6-1-c3702956d2a1ff2bf1ae967b9f04bad3 b/sql/hive/src/test/resources/golden/join6-1-c3702956d2a1ff2bf1ae967b9f04bad3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join6-2-bc6b6640b266ebe9b73702d3baf09c20 b/sql/hive/src/test/resources/golden/join6-2-bc6b6640b266ebe9b73702d3baf09c20 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join6-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/join6-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..36ca4a0805f4b --- /dev/null +++ b/sql/hive/src/test/resources/golden/join6-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,14 @@ +11 val_11 NULL NULL +12 val_12 NULL NULL +12 val_12 NULL NULL +15 val_15 NULL NULL +15 val_15 NULL NULL +17 val_17 17 val_17 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +19 val_19 19 val_19 +NULL NULL 20 val_20 +NULL NULL 24 val_24 +NULL NULL 24 val_24 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join7-0-8f82881057bec4abf5a4d770a6f35838 b/sql/hive/src/test/resources/golden/join7-0-8f82881057bec4abf5a4d770a6f35838 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join7-1-1aa2f2b13c2522b0457c0dd2ceb615d8 b/sql/hive/src/test/resources/golden/join7-1-1aa2f2b13c2522b0457c0dd2ceb615d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join7-2-56a30a1aa948bcf5ee54481897fc2208 b/sql/hive/src/test/resources/golden/join7-2-56a30a1aa948bcf5ee54481897fc2208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join7-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/join7-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..eb0a6246c1988 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join7-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,14 @@ +11 val_11 NULL NULL NULL NULL +12 val_12 NULL NULL NULL NULL +12 val_12 NULL NULL NULL NULL +15 val_15 NULL NULL NULL NULL +15 val_15 NULL NULL NULL NULL +17 val_17 17 val_17 NULL NULL +18 val_18 18 val_18 NULL NULL +18 val_18 18 val_18 NULL NULL +18 val_18 18 val_18 NULL NULL +18 val_18 18 val_18 NULL NULL +19 val_19 19 val_19 NULL NULL +NULL NULL 20 val_20 NULL NULL +NULL NULL 24 val_24 NULL NULL +NULL NULL 24 val_24 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join8-0-531e91e11b3891627c2675935fda14cd b/sql/hive/src/test/resources/golden/join8-0-531e91e11b3891627c2675935fda14cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join8-1-13f11eaafaa42f8bdf0ed0a446f5bfa7 b/sql/hive/src/test/resources/golden/join8-1-13f11eaafaa42f8bdf0ed0a446f5bfa7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join8-2-f1196bca86a749375da35f134206a8ca b/sql/hive/src/test/resources/golden/join8-2-f1196bca86a749375da35f134206a8ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join8-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/join8-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..f2e6e07d8fa1f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join8-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,5 @@ +15 val_15 NULL NULL +12 val_12 NULL NULL +15 val_15 NULL NULL +11 val_11 NULL NULL +12 val_12 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join9-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/join9-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join9-1-fb3387ec28fc9d527e773c8b70bdf67a b/sql/hive/src/test/resources/golden/join9-1-fb3387ec28fc9d527e773c8b70bdf67a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join9-2-971c44e81ce17eb0849850b72ebd20f1 b/sql/hive/src/test/resources/golden/join9-2-971c44e81ce17eb0849850b72ebd20f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join9-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/join9-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..59821aeea3008 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join9-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,1028 @@ +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +82 val_82 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +4 val_4 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +54 val_54 +459 val_459 +459 val_459 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +58 val_58 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +404 val_404 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +209 val_209 +64 val_64 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-0-7ea7cf54372f262b952108113a97a294 b/sql/hive/src/test/resources/golden/join_1to1-0-7ea7cf54372f262b952108113a97a294 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_1to1-1-5bab379018a4fbef12cc93658f26580a b/sql/hive/src/test/resources/golden/join_1to1-1-5bab379018a4fbef12cc93658f26580a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_1to1-10-a1caf8c546f519e2dfb5e17c8addf62e b/sql/hive/src/test/resources/golden/join_1to1-10-a1caf8c546f519e2dfb5e17c8addf62e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-10-a1caf8c546f519e2dfb5e17c8addf62e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-11-ce1542ccec99ccfdc9b5c3f713ab1c0e b/sql/hive/src/test/resources/golden/join_1to1-11-ce1542ccec99ccfdc9b5c3f713ab1c0e new file mode 100644 index 0000000000000..52a4d2c18e701 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-11-ce1542ccec99ccfdc9b5c3f713ab1c0e @@ -0,0 +1,30 @@ +5 10005 66 5 10005 66 +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-12-6081eb976b4aef2132418510756a385b b/sql/hive/src/test/resources/golden/join_1to1-12-6081eb976b4aef2132418510756a385b new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-12-6081eb976b4aef2132418510756a385b @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-13-281b888188eac90c4bf670417f25cc0c b/sql/hive/src/test/resources/golden/join_1to1-13-281b888188eac90c4bf670417f25cc0c new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-13-281b888188eac90c4bf670417f25cc0c @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-14-2bc944d7dcc8eba8f25794d99ea35b84 b/sql/hive/src/test/resources/golden/join_1to1-14-2bc944d7dcc8eba8f25794d99ea35b84 new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-14-2bc944d7dcc8eba8f25794d99ea35b84 @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-15-5e48ba086f1376939535081b60f82727 b/sql/hive/src/test/resources/golden/join_1to1-15-5e48ba086f1376939535081b60f82727 new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-15-5e48ba086f1376939535081b60f82727 @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-16-9914f44ecb6ae7587b62e5349ff60d04 b/sql/hive/src/test/resources/golden/join_1to1-16-9914f44ecb6ae7587b62e5349ff60d04 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-16-9914f44ecb6ae7587b62e5349ff60d04 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-17-ce1542ccec99ccfdc9b5c3f713ab1c0e b/sql/hive/src/test/resources/golden/join_1to1-17-ce1542ccec99ccfdc9b5c3f713ab1c0e new file mode 100644 index 0000000000000..52a4d2c18e701 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-17-ce1542ccec99ccfdc9b5c3f713ab1c0e @@ -0,0 +1,30 @@ +5 10005 66 5 10005 66 +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-18-6081eb976b4aef2132418510756a385b b/sql/hive/src/test/resources/golden/join_1to1-18-6081eb976b4aef2132418510756a385b new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-18-6081eb976b4aef2132418510756a385b @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-19-281b888188eac90c4bf670417f25cc0c b/sql/hive/src/test/resources/golden/join_1to1-19-281b888188eac90c4bf670417f25cc0c new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-19-281b888188eac90c4bf670417f25cc0c @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-2-1c35d445eca04025196ea700d02f9987 b/sql/hive/src/test/resources/golden/join_1to1-2-1c35d445eca04025196ea700d02f9987 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_1to1-20-2bc944d7dcc8eba8f25794d99ea35b84 b/sql/hive/src/test/resources/golden/join_1to1-20-2bc944d7dcc8eba8f25794d99ea35b84 new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-20-2bc944d7dcc8eba8f25794d99ea35b84 @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-21-5e48ba086f1376939535081b60f82727 b/sql/hive/src/test/resources/golden/join_1to1-21-5e48ba086f1376939535081b60f82727 new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-21-5e48ba086f1376939535081b60f82727 @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-22-5a065a27a36bb0ff980fa7ffef3a2600 b/sql/hive/src/test/resources/golden/join_1to1-22-5a065a27a36bb0ff980fa7ffef3a2600 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-22-5a065a27a36bb0ff980fa7ffef3a2600 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-23-ce1542ccec99ccfdc9b5c3f713ab1c0e b/sql/hive/src/test/resources/golden/join_1to1-23-ce1542ccec99ccfdc9b5c3f713ab1c0e new file mode 100644 index 0000000000000..52a4d2c18e701 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-23-ce1542ccec99ccfdc9b5c3f713ab1c0e @@ -0,0 +1,30 @@ +5 10005 66 5 10005 66 +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-24-6081eb976b4aef2132418510756a385b b/sql/hive/src/test/resources/golden/join_1to1-24-6081eb976b4aef2132418510756a385b new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-24-6081eb976b4aef2132418510756a385b @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-25-281b888188eac90c4bf670417f25cc0c b/sql/hive/src/test/resources/golden/join_1to1-25-281b888188eac90c4bf670417f25cc0c new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-25-281b888188eac90c4bf670417f25cc0c @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-26-2bc944d7dcc8eba8f25794d99ea35b84 b/sql/hive/src/test/resources/golden/join_1to1-26-2bc944d7dcc8eba8f25794d99ea35b84 new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-26-2bc944d7dcc8eba8f25794d99ea35b84 @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-27-5e48ba086f1376939535081b60f82727 b/sql/hive/src/test/resources/golden/join_1to1-27-5e48ba086f1376939535081b60f82727 new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-27-5e48ba086f1376939535081b60f82727 @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-28-a1caf8c546f519e2dfb5e17c8addf62e b/sql/hive/src/test/resources/golden/join_1to1-28-a1caf8c546f519e2dfb5e17c8addf62e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-28-a1caf8c546f519e2dfb5e17c8addf62e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-29-ce1542ccec99ccfdc9b5c3f713ab1c0e b/sql/hive/src/test/resources/golden/join_1to1-29-ce1542ccec99ccfdc9b5c3f713ab1c0e new file mode 100644 index 0000000000000..52a4d2c18e701 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-29-ce1542ccec99ccfdc9b5c3f713ab1c0e @@ -0,0 +1,30 @@ +5 10005 66 5 10005 66 +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-3-ee6db4188755bf471a12316ec7301500 b/sql/hive/src/test/resources/golden/join_1to1-3-ee6db4188755bf471a12316ec7301500 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_1to1-30-6081eb976b4aef2132418510756a385b b/sql/hive/src/test/resources/golden/join_1to1-30-6081eb976b4aef2132418510756a385b new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-30-6081eb976b4aef2132418510756a385b @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-31-281b888188eac90c4bf670417f25cc0c b/sql/hive/src/test/resources/golden/join_1to1-31-281b888188eac90c4bf670417f25cc0c new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-31-281b888188eac90c4bf670417f25cc0c @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-32-2bc944d7dcc8eba8f25794d99ea35b84 b/sql/hive/src/test/resources/golden/join_1to1-32-2bc944d7dcc8eba8f25794d99ea35b84 new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-32-2bc944d7dcc8eba8f25794d99ea35b84 @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-33-5e48ba086f1376939535081b60f82727 b/sql/hive/src/test/resources/golden/join_1to1-33-5e48ba086f1376939535081b60f82727 new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-33-5e48ba086f1376939535081b60f82727 @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-34-9914f44ecb6ae7587b62e5349ff60d04 b/sql/hive/src/test/resources/golden/join_1to1-34-9914f44ecb6ae7587b62e5349ff60d04 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-34-9914f44ecb6ae7587b62e5349ff60d04 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-35-ce1542ccec99ccfdc9b5c3f713ab1c0e b/sql/hive/src/test/resources/golden/join_1to1-35-ce1542ccec99ccfdc9b5c3f713ab1c0e new file mode 100644 index 0000000000000..52a4d2c18e701 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-35-ce1542ccec99ccfdc9b5c3f713ab1c0e @@ -0,0 +1,30 @@ +5 10005 66 5 10005 66 +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-36-6081eb976b4aef2132418510756a385b b/sql/hive/src/test/resources/golden/join_1to1-36-6081eb976b4aef2132418510756a385b new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-36-6081eb976b4aef2132418510756a385b @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-37-281b888188eac90c4bf670417f25cc0c b/sql/hive/src/test/resources/golden/join_1to1-37-281b888188eac90c4bf670417f25cc0c new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-37-281b888188eac90c4bf670417f25cc0c @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-38-2bc944d7dcc8eba8f25794d99ea35b84 b/sql/hive/src/test/resources/golden/join_1to1-38-2bc944d7dcc8eba8f25794d99ea35b84 new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-38-2bc944d7dcc8eba8f25794d99ea35b84 @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-39-5e48ba086f1376939535081b60f82727 b/sql/hive/src/test/resources/golden/join_1to1-39-5e48ba086f1376939535081b60f82727 new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-39-5e48ba086f1376939535081b60f82727 @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-4-5a065a27a36bb0ff980fa7ffef3a2600 b/sql/hive/src/test/resources/golden/join_1to1-4-5a065a27a36bb0ff980fa7ffef3a2600 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-4-5a065a27a36bb0ff980fa7ffef3a2600 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-5-ce1542ccec99ccfdc9b5c3f713ab1c0e b/sql/hive/src/test/resources/golden/join_1to1-5-ce1542ccec99ccfdc9b5c3f713ab1c0e new file mode 100644 index 0000000000000..52a4d2c18e701 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-5-ce1542ccec99ccfdc9b5c3f713ab1c0e @@ -0,0 +1,30 @@ +5 10005 66 5 10005 66 +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-6-6081eb976b4aef2132418510756a385b b/sql/hive/src/test/resources/golden/join_1to1-6-6081eb976b4aef2132418510756a385b new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-6-6081eb976b4aef2132418510756a385b @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-7-281b888188eac90c4bf670417f25cc0c b/sql/hive/src/test/resources/golden/join_1to1-7-281b888188eac90c4bf670417f25cc0c new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-7-281b888188eac90c4bf670417f25cc0c @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-8-2bc944d7dcc8eba8f25794d99ea35b84 b/sql/hive/src/test/resources/golden/join_1to1-8-2bc944d7dcc8eba8f25794d99ea35b84 new file mode 100644 index 0000000000000..fb5560e2d006c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-8-2bc944d7dcc8eba8f25794d99ea35b84 @@ -0,0 +1,36 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_1to1-9-5e48ba086f1376939535081b60f82727 b/sql/hive/src/test/resources/golden/join_1to1-9-5e48ba086f1376939535081b60f82727 new file mode 100644 index 0000000000000..0ae4eb2d33595 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_1to1-9-5e48ba086f1376939535081b60f82727 @@ -0,0 +1,34 @@ +NULL NULL NULL NULL NULL 66 +NULL NULL NULL NULL 10050 66 +NULL NULL NULL 10 10010 66 +NULL NULL NULL 25 10025 66 +NULL NULL NULL 30 10030 88 +NULL NULL NULL 35 10035 88 +NULL NULL NULL 40 10040 88 +NULL NULL NULL 50 10050 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 70 10040 88 +NULL NULL NULL 80 10040 66 +NULL NULL NULL 80 10040 66 +NULL NULL 66 NULL NULL NULL +NULL 10050 66 NULL NULL NULL +5 10005 66 5 10005 66 +15 10015 66 NULL NULL NULL +20 10020 66 20 10020 66 +25 10025 88 NULL NULL NULL +30 10030 66 NULL NULL NULL +35 10035 88 NULL NULL NULL +40 10040 66 40 10040 66 +40 10040 88 NULL NULL NULL +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 88 NULL NULL NULL +50 10050 88 NULL NULL NULL +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +70 10040 66 NULL NULL NULL +70 10040 66 NULL NULL NULL +80 10040 88 NULL NULL NULL +80 10040 88 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_array-0-60904bf2bd7bbfa8739d8e047e83e038 b/sql/hive/src/test/resources/golden/join_array-0-60904bf2bd7bbfa8739d8e047e83e038 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_array-1-2c086fcf118fd2538bfa00724209091e b/sql/hive/src/test/resources/golden/join_array-1-2c086fcf118fd2538bfa00724209091e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_array-2-a4363f7c7e4b7d717ed90e77c37581de b/sql/hive/src/test/resources/golden/join_array-2-a4363f7c7e4b7d717ed90e77c37581de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_array-3-ddd65703cdad8959cd0cd831304b0ab9 b/sql/hive/src/test/resources/golden/join_array-3-ddd65703cdad8959cd0cd831304b0ab9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_array-4-b235265cd6bd58fd743c27b02e547d62 b/sql/hive/src/test/resources/golden/join_array-4-b235265cd6bd58fd743c27b02e547d62 new file mode 100644 index 0000000000000..ce9688a065b34 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_array-4-b235265cd6bd58fd743c27b02e547d62 @@ -0,0 +1 @@ +10320092026892491 3312 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_array-5-a9b9419b94631f8fe1c2297ebf103a9a b/sql/hive/src/test/resources/golden/join_array-5-a9b9419b94631f8fe1c2297ebf103a9a new file mode 100644 index 0000000000000..f937af554adef --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_array-5-a9b9419b94631f8fe1c2297ebf103a9a @@ -0,0 +1,2 @@ +10320092002467760 [0,23,37,48,53,55,55,56,60,66,72,76,77,78,80,81,87,88,90,90,91,90,92,97,100,103,104,107,108,108,109,110,113,113,113,113,113,113,114,116,116,116,117,116,117,117,117,115,115,117,117,117,121,120,131,131,131,125,125,124,124,128,128,131,131,132,133,134,134,134,134,26,26,null,null,null,null,116] +10320092026892491 [0,2,59,106,131,142,159,244,320,398,417,433,553,616,710,826,917,971,1046,1051,1093,1112,1142,1215,1220,1226,1232,1267,1364,1549,1646,1948,2170,2272,2325,2433,2534,2852,2925,2992,3119,3207,3279,3323,3412,3637,3645,3634,3450,3473,3638,3688,3736,3758,3812,3862,3873,3868,3883,4118,4134,4127,4170,4216,null,null,null,null,3139] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_array-6-6eded94bd39189ea6d67fe383f9b865c b/sql/hive/src/test/resources/golden/join_array-6-6eded94bd39189ea6d67fe383f9b865c new file mode 100644 index 0000000000000..f937af554adef --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_array-6-6eded94bd39189ea6d67fe383f9b865c @@ -0,0 +1,2 @@ +10320092002467760 [0,23,37,48,53,55,55,56,60,66,72,76,77,78,80,81,87,88,90,90,91,90,92,97,100,103,104,107,108,108,109,110,113,113,113,113,113,113,114,116,116,116,117,116,117,117,117,115,115,117,117,117,121,120,131,131,131,125,125,124,124,128,128,131,131,132,133,134,134,134,134,26,26,null,null,null,null,116] +10320092026892491 [0,2,59,106,131,142,159,244,320,398,417,433,553,616,710,826,917,971,1046,1051,1093,1112,1142,1215,1220,1226,1232,1267,1364,1549,1646,1948,2170,2272,2325,2433,2534,2852,2925,2992,3119,3207,3279,3323,3412,3637,3645,3634,3450,3473,3638,3688,3736,3758,3812,3862,3873,3868,3883,4118,4134,4127,4170,4216,null,null,null,null,3139] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_casesensitive-0-3c6c18f40c89c8fe9891869f2f6acb48 b/sql/hive/src/test/resources/golden/join_casesensitive-0-3c6c18f40c89c8fe9891869f2f6acb48 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_casesensitive-1-404d691e85c7b74bad73576ee80de290 b/sql/hive/src/test/resources/golden/join_casesensitive-1-404d691e85c7b74bad73576ee80de290 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_casesensitive-2-d508d777b4e4156bff9774925a6ca4d b/sql/hive/src/test/resources/golden/join_casesensitive-2-d508d777b4e4156bff9774925a6ca4d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_casesensitive-3-3c88c1f52d27e9fb093aaf10f97c7cfc b/sql/hive/src/test/resources/golden/join_casesensitive-3-3c88c1f52d27e9fb093aaf10f97c7cfc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_casesensitive-4-c880b2256f97413b8fe68d19d99747fd b/sql/hive/src/test/resources/golden/join_casesensitive-4-c880b2256f97413b8fe68d19d99747fd new file mode 100644 index 0000000000000..810f01f682c37 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_casesensitive-4-c880b2256f97413b8fe68d19d99747fd @@ -0,0 +1,85 @@ +NULL 10050 66 NULL 10050 66 +NULL 10050 66 50 10050 66 +NULL 10050 66 50 10050 66 +NULL 10050 66 50 10050 88 +5 10005 66 5 10005 66 +20 10020 66 20 10020 66 +25 10025 88 25 10025 66 +30 10030 66 30 10030 88 +35 10035 88 35 10035 88 +40 10040 66 40 10040 66 +40 10040 66 40 10040 88 +40 10040 66 60 10040 66 +40 10040 66 60 10040 66 +40 10040 66 70 10040 88 +40 10040 66 70 10040 88 +40 10040 66 80 10040 66 +40 10040 66 80 10040 66 +40 10040 88 40 10040 66 +40 10040 88 40 10040 88 +40 10040 88 60 10040 66 +40 10040 88 60 10040 66 +40 10040 88 70 10040 88 +40 10040 88 70 10040 88 +40 10040 88 80 10040 66 +40 10040 88 80 10040 66 +50 10050 66 NULL 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 66 +50 10050 66 50 10050 88 +50 10050 88 NULL 10050 66 +50 10050 88 NULL 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 66 +50 10050 88 50 10050 88 +50 10050 88 50 10050 88 +60 10040 66 40 10040 66 +60 10040 66 40 10040 66 +60 10040 66 40 10040 88 +60 10040 66 40 10040 88 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 60 10040 66 +60 10040 66 70 10040 88 +60 10040 66 70 10040 88 +60 10040 66 70 10040 88 +60 10040 66 70 10040 88 +60 10040 66 80 10040 66 +60 10040 66 80 10040 66 +60 10040 66 80 10040 66 +60 10040 66 80 10040 66 +70 10040 66 40 10040 66 +70 10040 66 40 10040 66 +70 10040 66 40 10040 88 +70 10040 66 40 10040 88 +70 10040 66 60 10040 66 +70 10040 66 60 10040 66 +70 10040 66 60 10040 66 +70 10040 66 60 10040 66 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 70 10040 88 +70 10040 66 80 10040 66 +70 10040 66 80 10040 66 +70 10040 66 80 10040 66 +70 10040 66 80 10040 66 +80 10040 88 40 10040 66 +80 10040 88 40 10040 66 +80 10040 88 40 10040 88 +80 10040 88 40 10040 88 +80 10040 88 60 10040 66 +80 10040 88 60 10040 66 +80 10040 88 60 10040 66 +80 10040 88 60 10040 66 +80 10040 88 70 10040 88 +80 10040 88 70 10040 88 +80 10040 88 70 10040 88 +80 10040 88 70 10040 88 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 +80 10040 88 80 10040 66 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_empty-0-3fef0a906d6618ab28406d1edf0dc9ad b/sql/hive/src/test/resources/golden/join_empty-0-3fef0a906d6618ab28406d1edf0dc9ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_empty-1-9bcf09f835d785760c0d4da0680837f2 b/sql/hive/src/test/resources/golden/join_empty-1-9bcf09f835d785760c0d4da0680837f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_empty-2-ff98d5f09dd67ae5f1bd8d09a3c4db8e b/sql/hive/src/test/resources/golden/join_empty-2-ff98d5f09dd67ae5f1bd8d09a3c4db8e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_empty-3-3b2231f25886c152f222856256ac3473 b/sql/hive/src/test/resources/golden/join_empty-3-3b2231f25886c152f222856256ac3473 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_empty-4-df2401785dfa257de49c3ad80b0f480a b/sql/hive/src/test/resources/golden/join_empty-4-df2401785dfa257de49c3ad80b0f480a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_empty-4-df2401785dfa257de49c3ad80b0f480a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_empty-5-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/join_empty-5-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_empty-5-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_empty-6-e807e73f2636bf03a572c9e0b8430b5a b/sql/hive/src/test/resources/golden/join_empty-6-e807e73f2636bf03a572c9e0b8430b5a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_empty-7-7d6e4e5bc4cae56192cc737fb6dc9c72 b/sql/hive/src/test/resources/golden/join_empty-7-7d6e4e5bc4cae56192cc737fb6dc9c72 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-0-5644ab44e5ba9f2941216b8d5dc33a99 b/sql/hive/src/test/resources/golden/join_filters-0-5644ab44e5ba9f2941216b8d5dc33a99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-1-100faa7fd01bfb4390c782bb262a9403 b/sql/hive/src/test/resources/golden/join_filters-1-100faa7fd01bfb4390c782bb262a9403 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-10-f0c5c51de4151a17a77c780be0c13e01 b/sql/hive/src/test/resources/golden/join_filters-10-f0c5c51de4151a17a77c780be0c13e01 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-10-f0c5c51de4151a17a77c780be0c13e01 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-100-a4c7cd87175222bea19fd33018890efe b/sql/hive/src/test/resources/golden/join_filters-100-a4c7cd87175222bea19fd33018890efe new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-100-a4c7cd87175222bea19fd33018890efe @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-101-f086409eb336282af5a00f4c7192ef2b b/sql/hive/src/test/resources/golden/join_filters-101-f086409eb336282af5a00f4c7192ef2b new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-101-f086409eb336282af5a00f4c7192ef2b @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-102-634888c4fa78ce10181c9514c6393554 b/sql/hive/src/test/resources/golden/join_filters-102-634888c4fa78ce10181c9514c6393554 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-102-634888c4fa78ce10181c9514c6393554 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-103-c020d3461658ae8e118281f40264ae5b b/sql/hive/src/test/resources/golden/join_filters-103-c020d3461658ae8e118281f40264ae5b new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-103-c020d3461658ae8e118281f40264ae5b @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-104-c9b79f30e1f25672ec89014f966b41b0 b/sql/hive/src/test/resources/golden/join_filters-104-c9b79f30e1f25672ec89014f966b41b0 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-104-c9b79f30e1f25672ec89014f966b41b0 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-105-b3d9dcbb7e1caef97646eb89edf82eb b/sql/hive/src/test/resources/golden/join_filters-105-b3d9dcbb7e1caef97646eb89edf82eb new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-105-b3d9dcbb7e1caef97646eb89edf82eb @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-106-870999978978b22f21997899f1e652b8 b/sql/hive/src/test/resources/golden/join_filters-106-870999978978b22f21997899f1e652b8 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-106-870999978978b22f21997899f1e652b8 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-107-94824a62d882227f270a66ec7ef28cd4 b/sql/hive/src/test/resources/golden/join_filters-107-94824a62d882227f270a66ec7ef28cd4 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-107-94824a62d882227f270a66ec7ef28cd4 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-108-d793c1514545499f58fb1b355cbd3f0e b/sql/hive/src/test/resources/golden/join_filters-108-d793c1514545499f58fb1b355cbd3f0e new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-108-d793c1514545499f58fb1b355cbd3f0e @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-109-2709001b4aa57ed01ba975e83b556475 b/sql/hive/src/test/resources/golden/join_filters-109-2709001b4aa57ed01ba975e83b556475 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-109-2709001b4aa57ed01ba975e83b556475 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-11-6fb35e1a65211e68de5df4a1cb9c7117 b/sql/hive/src/test/resources/golden/join_filters-11-6fb35e1a65211e68de5df4a1cb9c7117 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-11-6fb35e1a65211e68de5df4a1cb9c7117 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-110-86868ef0f28c5b42f04fb9ca64aaa3ba b/sql/hive/src/test/resources/golden/join_filters-110-86868ef0f28c5b42f04fb9ca64aaa3ba new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-110-86868ef0f28c5b42f04fb9ca64aaa3ba @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-111-fd3188d025e4c84d45cbb265d08ca569 b/sql/hive/src/test/resources/golden/join_filters-111-fd3188d025e4c84d45cbb265d08ca569 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-111-fd3188d025e4c84d45cbb265d08ca569 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-112-a0cd07949ff7dbc2287dc060bedb1942 b/sql/hive/src/test/resources/golden/join_filters-112-a0cd07949ff7dbc2287dc060bedb1942 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-112-a0cd07949ff7dbc2287dc060bedb1942 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-113-48c4978768872751832149d72cdf0ba b/sql/hive/src/test/resources/golden/join_filters-113-48c4978768872751832149d72cdf0ba new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-113-48c4978768872751832149d72cdf0ba @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-114-58b8db46ea5080791c7416838d3e8f95 b/sql/hive/src/test/resources/golden/join_filters-114-58b8db46ea5080791c7416838d3e8f95 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-114-58b8db46ea5080791c7416838d3e8f95 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-115-98e45a3167d19d09219076a2d93afa49 b/sql/hive/src/test/resources/golden/join_filters-115-98e45a3167d19d09219076a2d93afa49 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-115-98e45a3167d19d09219076a2d93afa49 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-116-bec2950fff2c1b3c4dc5be846653ea6 b/sql/hive/src/test/resources/golden/join_filters-116-bec2950fff2c1b3c4dc5be846653ea6 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-116-bec2950fff2c1b3c4dc5be846653ea6 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-117-ee8471d93c3778f4b48c5c59f473dd35 b/sql/hive/src/test/resources/golden/join_filters-117-ee8471d93c3778f4b48c5c59f473dd35 new file mode 100644 index 0000000000000..b81820f886894 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-117-ee8471d93c3778f4b48c5c59f473dd35 @@ -0,0 +1,6 @@ +NULL 35 NULL NULL +NULL 135 NULL NULL +48 NULL NULL NULL +100 100 100 100 +148 NULL NULL NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-118-9b395d7db8722a467d46588d0f27fc9e b/sql/hive/src/test/resources/golden/join_filters-118-9b395d7db8722a467d46588d0f27fc9e new file mode 100644 index 0000000000000..b81820f886894 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-118-9b395d7db8722a467d46588d0f27fc9e @@ -0,0 +1,6 @@ +NULL 35 NULL NULL +NULL 135 NULL NULL +48 NULL NULL NULL +100 100 100 100 +148 NULL NULL NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-119-7688784396db55ff148292a9755c918a b/sql/hive/src/test/resources/golden/join_filters-119-7688784396db55ff148292a9755c918a new file mode 100644 index 0000000000000..b81820f886894 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-119-7688784396db55ff148292a9755c918a @@ -0,0 +1,6 @@ +NULL 35 NULL NULL +NULL 135 NULL NULL +48 NULL NULL NULL +100 100 100 100 +148 NULL NULL NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-12-4c29d6be8717481332cd1ee7ca17690e b/sql/hive/src/test/resources/golden/join_filters-12-4c29d6be8717481332cd1ee7ca17690e new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-12-4c29d6be8717481332cd1ee7ca17690e @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-120-6578651ffbf95c0b02825e2125e32709 b/sql/hive/src/test/resources/golden/join_filters-120-6578651ffbf95c0b02825e2125e32709 new file mode 100644 index 0000000000000..71cd5ce0041b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-120-6578651ffbf95c0b02825e2125e32709 @@ -0,0 +1,6 @@ +NULL NULL NULL 35 +NULL NULL NULL 135 +NULL NULL 48 NULL +NULL NULL 148 NULL +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-121-6dc4977da7f8dc7c636a03d7ad892ada b/sql/hive/src/test/resources/golden/join_filters-121-6dc4977da7f8dc7c636a03d7ad892ada new file mode 100644 index 0000000000000..71cd5ce0041b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-121-6dc4977da7f8dc7c636a03d7ad892ada @@ -0,0 +1,6 @@ +NULL NULL NULL 35 +NULL NULL NULL 135 +NULL NULL 48 NULL +NULL NULL 148 NULL +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-122-64bb9f9a0eef32d2392b80b93c9b2c98 b/sql/hive/src/test/resources/golden/join_filters-122-64bb9f9a0eef32d2392b80b93c9b2c98 new file mode 100644 index 0000000000000..71cd5ce0041b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-122-64bb9f9a0eef32d2392b80b93c9b2c98 @@ -0,0 +1,6 @@ +NULL NULL NULL 35 +NULL NULL NULL 135 +NULL NULL 48 NULL +NULL NULL 148 NULL +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-13-c6a291879bdb37f0c84f6074f257d52 b/sql/hive/src/test/resources/golden/join_filters-13-c6a291879bdb37f0c84f6074f257d52 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-13-c6a291879bdb37f0c84f6074f257d52 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-14-ef8255dcad808f9128d79e6ee9f368cf b/sql/hive/src/test/resources/golden/join_filters-14-ef8255dcad808f9128d79e6ee9f368cf new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-14-ef8255dcad808f9128d79e6ee9f368cf @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-15-a83678913c62249c8fdf2dac1f6e3046 b/sql/hive/src/test/resources/golden/join_filters-15-a83678913c62249c8fdf2dac1f6e3046 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-15-a83678913c62249c8fdf2dac1f6e3046 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-16-a6511579b5e4c2d845664f0c4a6ce622 b/sql/hive/src/test/resources/golden/join_filters-16-a6511579b5e4c2d845664f0c4a6ce622 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-16-a6511579b5e4c2d845664f0c4a6ce622 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-17-c22aab929016fa6f4b6d1e14cc3a4940 b/sql/hive/src/test/resources/golden/join_filters-17-c22aab929016fa6f4b6d1e14cc3a4940 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-17-c22aab929016fa6f4b6d1e14cc3a4940 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-18-8ef51af7455eaeeaefff1c98e16dcc65 b/sql/hive/src/test/resources/golden/join_filters-18-8ef51af7455eaeeaefff1c98e16dcc65 new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-18-8ef51af7455eaeeaefff1c98e16dcc65 @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-19-e164192e6538b428c8b53e008a978d3f b/sql/hive/src/test/resources/golden/join_filters-19-e164192e6538b428c8b53e008a978d3f new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-19-e164192e6538b428c8b53e008a978d3f @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-2-67fff9e6931a7320444e857e01b3d496 b/sql/hive/src/test/resources/golden/join_filters-2-67fff9e6931a7320444e857e01b3d496 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-2-67fff9e6931a7320444e857e01b3d496 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-20-7a5da20822bf51ed69ccf640cbb816cf b/sql/hive/src/test/resources/golden/join_filters-20-7a5da20822bf51ed69ccf640cbb816cf new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-20-7a5da20822bf51ed69ccf640cbb816cf @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-21-13d6d5335625fc3386a8011dc557002e b/sql/hive/src/test/resources/golden/join_filters-21-13d6d5335625fc3386a8011dc557002e new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-21-13d6d5335625fc3386a8011dc557002e @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-22-f12ffd6cc9213d9c64cbea1b6db0632e b/sql/hive/src/test/resources/golden/join_filters-22-f12ffd6cc9213d9c64cbea1b6db0632e new file mode 100644 index 0000000000000..d735f349a9542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-22-f12ffd6cc9213d9c64cbea1b6db0632e @@ -0,0 +1,4 @@ +NULL NULL NULL NULL NULL 40 +NULL NULL NULL NULL 12 35 +NULL NULL NULL NULL 48 NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-23-a800b885358695758afdb719cdefa94f b/sql/hive/src/test/resources/golden/join_filters-23-a800b885358695758afdb719cdefa94f new file mode 100644 index 0000000000000..ea646edf6d143 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-23-a800b885358695758afdb719cdefa94f @@ -0,0 +1,4 @@ +NULL NULL NULL 40 NULL NULL +NULL NULL 12 35 NULL NULL +NULL NULL 48 NULL NULL NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-24-df3db5a91f3f4e88e18d2b1cc5b47113 b/sql/hive/src/test/resources/golden/join_filters-24-df3db5a91f3f4e88e18d2b1cc5b47113 new file mode 100644 index 0000000000000..d735f349a9542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-24-df3db5a91f3f4e88e18d2b1cc5b47113 @@ -0,0 +1,4 @@ +NULL NULL NULL NULL NULL 40 +NULL NULL NULL NULL 12 35 +NULL NULL NULL NULL 48 NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-25-435ecfc7f9cb5f32019fe498c21ccad3 b/sql/hive/src/test/resources/golden/join_filters-25-435ecfc7f9cb5f32019fe498c21ccad3 new file mode 100644 index 0000000000000..d735f349a9542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-25-435ecfc7f9cb5f32019fe498c21ccad3 @@ -0,0 +1,4 @@ +NULL NULL NULL NULL NULL 40 +NULL NULL NULL NULL 12 35 +NULL NULL NULL NULL 48 NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-26-da36fab3d1686aedd415a7a0f0253eca b/sql/hive/src/test/resources/golden/join_filters-26-da36fab3d1686aedd415a7a0f0253eca new file mode 100644 index 0000000000000..ea646edf6d143 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-26-da36fab3d1686aedd415a7a0f0253eca @@ -0,0 +1,4 @@ +NULL NULL NULL 40 NULL NULL +NULL NULL 12 35 NULL NULL +NULL NULL 48 NULL NULL NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-27-5f4a5437696f2a60bec9ac1443244242 b/sql/hive/src/test/resources/golden/join_filters-27-5f4a5437696f2a60bec9ac1443244242 new file mode 100644 index 0000000000000..d735f349a9542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-27-5f4a5437696f2a60bec9ac1443244242 @@ -0,0 +1,4 @@ +NULL NULL NULL NULL NULL 40 +NULL NULL NULL NULL 12 35 +NULL NULL NULL NULL 48 NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-28-2acf41a9f6efac0d800df557db716359 b/sql/hive/src/test/resources/golden/join_filters-28-2acf41a9f6efac0d800df557db716359 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-28-2acf41a9f6efac0d800df557db716359 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-29-cf5fef4ddc313209f5ab1e5ea3763e35 b/sql/hive/src/test/resources/golden/join_filters-29-cf5fef4ddc313209f5ab1e5ea3763e35 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-29-cf5fef4ddc313209f5ab1e5ea3763e35 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-3-989b3dbd15ba601ae80fe454e03213d7 b/sql/hive/src/test/resources/golden/join_filters-3-989b3dbd15ba601ae80fe454e03213d7 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-3-989b3dbd15ba601ae80fe454e03213d7 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-30-97f94f35ebc30f776a19bed59c7fb4bf b/sql/hive/src/test/resources/golden/join_filters-30-97f94f35ebc30f776a19bed59c7fb4bf new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-30-97f94f35ebc30f776a19bed59c7fb4bf @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-31-4923f8ba429f0c71ad9b6b9499e73a7f b/sql/hive/src/test/resources/golden/join_filters-31-4923f8ba429f0c71ad9b6b9499e73a7f new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-31-4923f8ba429f0c71ad9b6b9499e73a7f @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-32-5978cd7936c296493a16a31b926043ab b/sql/hive/src/test/resources/golden/join_filters-32-5978cd7936c296493a16a31b926043ab new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-32-5978cd7936c296493a16a31b926043ab @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-33-607d64d50ef9aad424bd22b358efe027 b/sql/hive/src/test/resources/golden/join_filters-33-607d64d50ef9aad424bd22b358efe027 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-33-607d64d50ef9aad424bd22b358efe027 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-34-35c2c8d74bc0ebc4710c81333cb254a9 b/sql/hive/src/test/resources/golden/join_filters-34-35c2c8d74bc0ebc4710c81333cb254a9 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-34-35c2c8d74bc0ebc4710c81333cb254a9 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-35-a4c7cd87175222bea19fd33018890efe b/sql/hive/src/test/resources/golden/join_filters-35-a4c7cd87175222bea19fd33018890efe new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-35-a4c7cd87175222bea19fd33018890efe @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-36-f086409eb336282af5a00f4c7192ef2b b/sql/hive/src/test/resources/golden/join_filters-36-f086409eb336282af5a00f4c7192ef2b new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-36-f086409eb336282af5a00f4c7192ef2b @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-37-634888c4fa78ce10181c9514c6393554 b/sql/hive/src/test/resources/golden/join_filters-37-634888c4fa78ce10181c9514c6393554 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-37-634888c4fa78ce10181c9514c6393554 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-38-c020d3461658ae8e118281f40264ae5b b/sql/hive/src/test/resources/golden/join_filters-38-c020d3461658ae8e118281f40264ae5b new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-38-c020d3461658ae8e118281f40264ae5b @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-39-c9b79f30e1f25672ec89014f966b41b0 b/sql/hive/src/test/resources/golden/join_filters-39-c9b79f30e1f25672ec89014f966b41b0 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-39-c9b79f30e1f25672ec89014f966b41b0 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-4-33bfcd576019d7e32683556f66e3757 b/sql/hive/src/test/resources/golden/join_filters-4-33bfcd576019d7e32683556f66e3757 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-4-33bfcd576019d7e32683556f66e3757 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-40-b3d9dcbb7e1caef97646eb89edf82eb b/sql/hive/src/test/resources/golden/join_filters-40-b3d9dcbb7e1caef97646eb89edf82eb new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-40-b3d9dcbb7e1caef97646eb89edf82eb @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-41-870999978978b22f21997899f1e652b8 b/sql/hive/src/test/resources/golden/join_filters-41-870999978978b22f21997899f1e652b8 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-41-870999978978b22f21997899f1e652b8 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-42-94824a62d882227f270a66ec7ef28cd4 b/sql/hive/src/test/resources/golden/join_filters-42-94824a62d882227f270a66ec7ef28cd4 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-42-94824a62d882227f270a66ec7ef28cd4 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-43-d793c1514545499f58fb1b355cbd3f0e b/sql/hive/src/test/resources/golden/join_filters-43-d793c1514545499f58fb1b355cbd3f0e new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-43-d793c1514545499f58fb1b355cbd3f0e @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-44-6d8955591f62d9cfc6af17df63d3d88e b/sql/hive/src/test/resources/golden/join_filters-44-6d8955591f62d9cfc6af17df63d3d88e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-45-23ab7ac8229a53d391195be7ca092429 b/sql/hive/src/test/resources/golden/join_filters-45-23ab7ac8229a53d391195be7ca092429 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-46-aa161b0d9fe9d1aad10654fce0e3670b b/sql/hive/src/test/resources/golden/join_filters-46-aa161b0d9fe9d1aad10654fce0e3670b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-47-3c52df82c7d78501610f3f898103f753 b/sql/hive/src/test/resources/golden/join_filters-47-3c52df82c7d78501610f3f898103f753 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-48-1d85bb008e02ef4025171a4bc0866a6c b/sql/hive/src/test/resources/golden/join_filters-48-1d85bb008e02ef4025171a4bc0866a6c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-49-e79c906b894fed049ddfab4496a4e3 b/sql/hive/src/test/resources/golden/join_filters-49-e79c906b894fed049ddfab4496a4e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters-5-f0c0d07019afb1bbe162e3183e18023e b/sql/hive/src/test/resources/golden/join_filters-5-f0c0d07019afb1bbe162e3183e18023e new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-5-f0c0d07019afb1bbe162e3183e18023e @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-50-3e6612a89e9124592e790594775054b1 b/sql/hive/src/test/resources/golden/join_filters-50-3e6612a89e9124592e790594775054b1 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-50-3e6612a89e9124592e790594775054b1 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-51-60a5f56f33fc8854a2b687005f0d96ac b/sql/hive/src/test/resources/golden/join_filters-51-60a5f56f33fc8854a2b687005f0d96ac new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-51-60a5f56f33fc8854a2b687005f0d96ac @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-52-64cabe5164130a94f387288f37b62d71 b/sql/hive/src/test/resources/golden/join_filters-52-64cabe5164130a94f387288f37b62d71 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-52-64cabe5164130a94f387288f37b62d71 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-53-2709001b4aa57ed01ba975e83b556475 b/sql/hive/src/test/resources/golden/join_filters-53-2709001b4aa57ed01ba975e83b556475 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-53-2709001b4aa57ed01ba975e83b556475 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-54-86868ef0f28c5b42f04fb9ca64aaa3ba b/sql/hive/src/test/resources/golden/join_filters-54-86868ef0f28c5b42f04fb9ca64aaa3ba new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-54-86868ef0f28c5b42f04fb9ca64aaa3ba @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-55-fd3188d025e4c84d45cbb265d08ca569 b/sql/hive/src/test/resources/golden/join_filters-55-fd3188d025e4c84d45cbb265d08ca569 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-55-fd3188d025e4c84d45cbb265d08ca569 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-56-a0cd07949ff7dbc2287dc060bedb1942 b/sql/hive/src/test/resources/golden/join_filters-56-a0cd07949ff7dbc2287dc060bedb1942 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-56-a0cd07949ff7dbc2287dc060bedb1942 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-57-48c4978768872751832149d72cdf0ba b/sql/hive/src/test/resources/golden/join_filters-57-48c4978768872751832149d72cdf0ba new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-57-48c4978768872751832149d72cdf0ba @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-58-58b8db46ea5080791c7416838d3e8f95 b/sql/hive/src/test/resources/golden/join_filters-58-58b8db46ea5080791c7416838d3e8f95 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-58-58b8db46ea5080791c7416838d3e8f95 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-59-98e45a3167d19d09219076a2d93afa49 b/sql/hive/src/test/resources/golden/join_filters-59-98e45a3167d19d09219076a2d93afa49 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-59-98e45a3167d19d09219076a2d93afa49 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-6-c0c40d001cac0bc91095dddda1513ad9 b/sql/hive/src/test/resources/golden/join_filters-6-c0c40d001cac0bc91095dddda1513ad9 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-6-c0c40d001cac0bc91095dddda1513ad9 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-60-bec2950fff2c1b3c4dc5be846653ea6 b/sql/hive/src/test/resources/golden/join_filters-60-bec2950fff2c1b3c4dc5be846653ea6 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-60-bec2950fff2c1b3c4dc5be846653ea6 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-61-ee8471d93c3778f4b48c5c59f473dd35 b/sql/hive/src/test/resources/golden/join_filters-61-ee8471d93c3778f4b48c5c59f473dd35 new file mode 100644 index 0000000000000..b81820f886894 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-61-ee8471d93c3778f4b48c5c59f473dd35 @@ -0,0 +1,6 @@ +NULL 35 NULL NULL +NULL 135 NULL NULL +48 NULL NULL NULL +100 100 100 100 +148 NULL NULL NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-62-9b395d7db8722a467d46588d0f27fc9e b/sql/hive/src/test/resources/golden/join_filters-62-9b395d7db8722a467d46588d0f27fc9e new file mode 100644 index 0000000000000..b81820f886894 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-62-9b395d7db8722a467d46588d0f27fc9e @@ -0,0 +1,6 @@ +NULL 35 NULL NULL +NULL 135 NULL NULL +48 NULL NULL NULL +100 100 100 100 +148 NULL NULL NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-63-7688784396db55ff148292a9755c918a b/sql/hive/src/test/resources/golden/join_filters-63-7688784396db55ff148292a9755c918a new file mode 100644 index 0000000000000..b81820f886894 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-63-7688784396db55ff148292a9755c918a @@ -0,0 +1,6 @@ +NULL 35 NULL NULL +NULL 135 NULL NULL +48 NULL NULL NULL +100 100 100 100 +148 NULL NULL NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-64-6578651ffbf95c0b02825e2125e32709 b/sql/hive/src/test/resources/golden/join_filters-64-6578651ffbf95c0b02825e2125e32709 new file mode 100644 index 0000000000000..71cd5ce0041b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-64-6578651ffbf95c0b02825e2125e32709 @@ -0,0 +1,6 @@ +NULL NULL NULL 35 +NULL NULL NULL 135 +NULL NULL 48 NULL +NULL NULL 148 NULL +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-65-6dc4977da7f8dc7c636a03d7ad892ada b/sql/hive/src/test/resources/golden/join_filters-65-6dc4977da7f8dc7c636a03d7ad892ada new file mode 100644 index 0000000000000..71cd5ce0041b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-65-6dc4977da7f8dc7c636a03d7ad892ada @@ -0,0 +1,6 @@ +NULL NULL NULL 35 +NULL NULL NULL 135 +NULL NULL 48 NULL +NULL NULL 148 NULL +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-66-64bb9f9a0eef32d2392b80b93c9b2c98 b/sql/hive/src/test/resources/golden/join_filters-66-64bb9f9a0eef32d2392b80b93c9b2c98 new file mode 100644 index 0000000000000..71cd5ce0041b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-66-64bb9f9a0eef32d2392b80b93c9b2c98 @@ -0,0 +1,6 @@ +NULL NULL NULL 35 +NULL NULL NULL 135 +NULL NULL 48 NULL +NULL NULL 148 NULL +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-67-67fff9e6931a7320444e857e01b3d496 b/sql/hive/src/test/resources/golden/join_filters-67-67fff9e6931a7320444e857e01b3d496 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-67-67fff9e6931a7320444e857e01b3d496 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-68-989b3dbd15ba601ae80fe454e03213d7 b/sql/hive/src/test/resources/golden/join_filters-68-989b3dbd15ba601ae80fe454e03213d7 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-68-989b3dbd15ba601ae80fe454e03213d7 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-69-33bfcd576019d7e32683556f66e3757 b/sql/hive/src/test/resources/golden/join_filters-69-33bfcd576019d7e32683556f66e3757 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-69-33bfcd576019d7e32683556f66e3757 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-7-89963646509154a2fb1ddbbf1f55349d b/sql/hive/src/test/resources/golden/join_filters-7-89963646509154a2fb1ddbbf1f55349d new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-7-89963646509154a2fb1ddbbf1f55349d @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-70-f0c0d07019afb1bbe162e3183e18023e b/sql/hive/src/test/resources/golden/join_filters-70-f0c0d07019afb1bbe162e3183e18023e new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-70-f0c0d07019afb1bbe162e3183e18023e @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-71-c0c40d001cac0bc91095dddda1513ad9 b/sql/hive/src/test/resources/golden/join_filters-71-c0c40d001cac0bc91095dddda1513ad9 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-71-c0c40d001cac0bc91095dddda1513ad9 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-72-89963646509154a2fb1ddbbf1f55349d b/sql/hive/src/test/resources/golden/join_filters-72-89963646509154a2fb1ddbbf1f55349d new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-72-89963646509154a2fb1ddbbf1f55349d @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-73-69e0235472d7cee7d83037cd083544a5 b/sql/hive/src/test/resources/golden/join_filters-73-69e0235472d7cee7d83037cd083544a5 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-73-69e0235472d7cee7d83037cd083544a5 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-74-b6372cc006844e8488a3b7836c67daaa b/sql/hive/src/test/resources/golden/join_filters-74-b6372cc006844e8488a3b7836c67daaa new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-74-b6372cc006844e8488a3b7836c67daaa @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-75-f0c5c51de4151a17a77c780be0c13e01 b/sql/hive/src/test/resources/golden/join_filters-75-f0c5c51de4151a17a77c780be0c13e01 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-75-f0c5c51de4151a17a77c780be0c13e01 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-76-6fb35e1a65211e68de5df4a1cb9c7117 b/sql/hive/src/test/resources/golden/join_filters-76-6fb35e1a65211e68de5df4a1cb9c7117 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-76-6fb35e1a65211e68de5df4a1cb9c7117 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-77-4c29d6be8717481332cd1ee7ca17690e b/sql/hive/src/test/resources/golden/join_filters-77-4c29d6be8717481332cd1ee7ca17690e new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-77-4c29d6be8717481332cd1ee7ca17690e @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-78-c6a291879bdb37f0c84f6074f257d52 b/sql/hive/src/test/resources/golden/join_filters-78-c6a291879bdb37f0c84f6074f257d52 new file mode 100644 index 0000000000000..51a29d71030ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-78-c6a291879bdb37f0c84f6074f257d52 @@ -0,0 +1,4 @@ +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-79-ef8255dcad808f9128d79e6ee9f368cf b/sql/hive/src/test/resources/golden/join_filters-79-ef8255dcad808f9128d79e6ee9f368cf new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-79-ef8255dcad808f9128d79e6ee9f368cf @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-8-69e0235472d7cee7d83037cd083544a5 b/sql/hive/src/test/resources/golden/join_filters-8-69e0235472d7cee7d83037cd083544a5 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-8-69e0235472d7cee7d83037cd083544a5 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-80-a83678913c62249c8fdf2dac1f6e3046 b/sql/hive/src/test/resources/golden/join_filters-80-a83678913c62249c8fdf2dac1f6e3046 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-80-a83678913c62249c8fdf2dac1f6e3046 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-81-a6511579b5e4c2d845664f0c4a6ce622 b/sql/hive/src/test/resources/golden/join_filters-81-a6511579b5e4c2d845664f0c4a6ce622 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-81-a6511579b5e4c2d845664f0c4a6ce622 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-82-c22aab929016fa6f4b6d1e14cc3a4940 b/sql/hive/src/test/resources/golden/join_filters-82-c22aab929016fa6f4b6d1e14cc3a4940 new file mode 100644 index 0000000000000..759113b3f1c96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-82-c22aab929016fa6f4b6d1e14cc3a4940 @@ -0,0 +1,4 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-83-8ef51af7455eaeeaefff1c98e16dcc65 b/sql/hive/src/test/resources/golden/join_filters-83-8ef51af7455eaeeaefff1c98e16dcc65 new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-83-8ef51af7455eaeeaefff1c98e16dcc65 @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-84-e164192e6538b428c8b53e008a978d3f b/sql/hive/src/test/resources/golden/join_filters-84-e164192e6538b428c8b53e008a978d3f new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-84-e164192e6538b428c8b53e008a978d3f @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-85-7a5da20822bf51ed69ccf640cbb816cf b/sql/hive/src/test/resources/golden/join_filters-85-7a5da20822bf51ed69ccf640cbb816cf new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-85-7a5da20822bf51ed69ccf640cbb816cf @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-86-13d6d5335625fc3386a8011dc557002e b/sql/hive/src/test/resources/golden/join_filters-86-13d6d5335625fc3386a8011dc557002e new file mode 100644 index 0000000000000..24a0c79d42923 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-86-13d6d5335625fc3386a8011dc557002e @@ -0,0 +1,7 @@ +NULL NULL NULL 40 +NULL NULL 12 35 +NULL NULL 48 NULL +NULL 40 NULL NULL +12 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-87-f12ffd6cc9213d9c64cbea1b6db0632e b/sql/hive/src/test/resources/golden/join_filters-87-f12ffd6cc9213d9c64cbea1b6db0632e new file mode 100644 index 0000000000000..d735f349a9542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-87-f12ffd6cc9213d9c64cbea1b6db0632e @@ -0,0 +1,4 @@ +NULL NULL NULL NULL NULL 40 +NULL NULL NULL NULL 12 35 +NULL NULL NULL NULL 48 NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-88-a800b885358695758afdb719cdefa94f b/sql/hive/src/test/resources/golden/join_filters-88-a800b885358695758afdb719cdefa94f new file mode 100644 index 0000000000000..ea646edf6d143 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-88-a800b885358695758afdb719cdefa94f @@ -0,0 +1,4 @@ +NULL NULL NULL 40 NULL NULL +NULL NULL 12 35 NULL NULL +NULL NULL 48 NULL NULL NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-89-df3db5a91f3f4e88e18d2b1cc5b47113 b/sql/hive/src/test/resources/golden/join_filters-89-df3db5a91f3f4e88e18d2b1cc5b47113 new file mode 100644 index 0000000000000..d735f349a9542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-89-df3db5a91f3f4e88e18d2b1cc5b47113 @@ -0,0 +1,4 @@ +NULL NULL NULL NULL NULL 40 +NULL NULL NULL NULL 12 35 +NULL NULL NULL NULL 48 NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-9-b6372cc006844e8488a3b7836c67daaa b/sql/hive/src/test/resources/golden/join_filters-9-b6372cc006844e8488a3b7836c67daaa new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-9-b6372cc006844e8488a3b7836c67daaa @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-90-435ecfc7f9cb5f32019fe498c21ccad3 b/sql/hive/src/test/resources/golden/join_filters-90-435ecfc7f9cb5f32019fe498c21ccad3 new file mode 100644 index 0000000000000..d735f349a9542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-90-435ecfc7f9cb5f32019fe498c21ccad3 @@ -0,0 +1,4 @@ +NULL NULL NULL NULL NULL 40 +NULL NULL NULL NULL 12 35 +NULL NULL NULL NULL 48 NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-91-da36fab3d1686aedd415a7a0f0253eca b/sql/hive/src/test/resources/golden/join_filters-91-da36fab3d1686aedd415a7a0f0253eca new file mode 100644 index 0000000000000..ea646edf6d143 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-91-da36fab3d1686aedd415a7a0f0253eca @@ -0,0 +1,4 @@ +NULL NULL NULL 40 NULL NULL +NULL NULL 12 35 NULL NULL +NULL NULL 48 NULL NULL NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-92-5f4a5437696f2a60bec9ac1443244242 b/sql/hive/src/test/resources/golden/join_filters-92-5f4a5437696f2a60bec9ac1443244242 new file mode 100644 index 0000000000000..d735f349a9542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-92-5f4a5437696f2a60bec9ac1443244242 @@ -0,0 +1,4 @@ +NULL NULL NULL NULL NULL 40 +NULL NULL NULL NULL 12 35 +NULL NULL NULL NULL 48 NULL +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-93-2acf41a9f6efac0d800df557db716359 b/sql/hive/src/test/resources/golden/join_filters-93-2acf41a9f6efac0d800df557db716359 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-93-2acf41a9f6efac0d800df557db716359 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-94-cf5fef4ddc313209f5ab1e5ea3763e35 b/sql/hive/src/test/resources/golden/join_filters-94-cf5fef4ddc313209f5ab1e5ea3763e35 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-94-cf5fef4ddc313209f5ab1e5ea3763e35 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-95-97f94f35ebc30f776a19bed59c7fb4bf b/sql/hive/src/test/resources/golden/join_filters-95-97f94f35ebc30f776a19bed59c7fb4bf new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-95-97f94f35ebc30f776a19bed59c7fb4bf @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-96-4923f8ba429f0c71ad9b6b9499e73a7f b/sql/hive/src/test/resources/golden/join_filters-96-4923f8ba429f0c71ad9b6b9499e73a7f new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-96-4923f8ba429f0c71ad9b6b9499e73a7f @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-97-5978cd7936c296493a16a31b926043ab b/sql/hive/src/test/resources/golden/join_filters-97-5978cd7936c296493a16a31b926043ab new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-97-5978cd7936c296493a16a31b926043ab @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-98-607d64d50ef9aad424bd22b358efe027 b/sql/hive/src/test/resources/golden/join_filters-98-607d64d50ef9aad424bd22b358efe027 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-98-607d64d50ef9aad424bd22b358efe027 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters-99-35c2c8d74bc0ebc4710c81333cb254a9 b/sql/hive/src/test/resources/golden/join_filters-99-35c2c8d74bc0ebc4710c81333cb254a9 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_filters-99-35c2c8d74bc0ebc4710c81333cb254a9 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_filters_overlap-0-990e447b6447ced0d9684eb7db9e63ce b/sql/hive/src/test/resources/golden/join_filters_overlap-0-990e447b6447ced0d9684eb7db9e63ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_filters_overlap-1-a7336cd2d643f92715b42f9c6eb2c108 b/sql/hive/src/test/resources/golden/join_filters_overlap-1-a7336cd2d643f92715b42f9c6eb2c108 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_hive_626-0-3491c764e44ee92af3a88d301a1bd498 b/sql/hive/src/test/resources/golden/join_hive_626-0-3491c764e44ee92af3a88d301a1bd498 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_hive_626-1-2b67cd3c7cec844a7ceb19e8dbb0e164 b/sql/hive/src/test/resources/golden/join_hive_626-1-2b67cd3c7cec844a7ceb19e8dbb0e164 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_hive_626-2-42997e626819de9cdad544d7fe132c6e b/sql/hive/src/test/resources/golden/join_hive_626-2-42997e626819de9cdad544d7fe132c6e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_hive_626-3-2609f2809e0c6ae1ca93806e37960990 b/sql/hive/src/test/resources/golden/join_hive_626-3-2609f2809e0c6ae1ca93806e37960990 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_hive_626-4-387e3bc517b49d4e1c9752c07b72b790 b/sql/hive/src/test/resources/golden/join_hive_626-4-387e3bc517b49d4e1c9752c07b72b790 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_hive_626-5-a0eb25c15b6ca1a04da14781b1213e11 b/sql/hive/src/test/resources/golden/join_hive_626-5-a0eb25c15b6ca1a04da14781b1213e11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_hive_626-6-392f6f482886b2e7be5903d44bfba3f1 b/sql/hive/src/test/resources/golden/join_hive_626-6-392f6f482886b2e7be5903d44bfba3f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_hive_626-7-d9c817eebc533bedc3ef9172d325a2c2 b/sql/hive/src/test/resources/golden/join_hive_626-7-d9c817eebc533bedc3ef9172d325a2c2 new file mode 100644 index 0000000000000..e3143e49c2bad --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_hive_626-7-d9c817eebc533bedc3ef9172d325a2c2 @@ -0,0 +1 @@ +foo1 bar10 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-0-775b1af8eae9b2250052be1b72b4086 b/sql/hive/src/test/resources/golden/join_map_ppr-0-775b1af8eae9b2250052be1b72b4086 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-1-7b9086c721214279a2f0c64d6d35df77 b/sql/hive/src/test/resources/golden/join_map_ppr-1-7b9086c721214279a2f0c64d6d35df77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-10-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join_map_ppr-10-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..4c88927e56579 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_map_ppr-10-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,107 @@ +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +224 val_224 val_224 +224 val_224 val_224 +224 val_224 val_224 +224 val_224 val_224 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-2-e3e5db334ed33b17026b43f776daee1e b/sql/hive/src/test/resources/golden/join_map_ppr-2-e3e5db334ed33b17026b43f776daee1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-3-c9859bf9c9942c59f3b19d82bd1a3afa b/sql/hive/src/test/resources/golden/join_map_ppr-3-c9859bf9c9942c59f3b19d82bd1a3afa new file mode 100644 index 0000000000000..4c88927e56579 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_map_ppr-3-c9859bf9c9942c59f3b19d82bd1a3afa @@ -0,0 +1,107 @@ +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +146 val_146 val_146 +150 val_150 val_150 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +213 val_213 val_213 +224 val_224 val_224 +224 val_224 val_224 +224 val_224 val_224 +224 val_224 val_224 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +238 val_238 val_238 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +255 val_255 val_255 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +278 val_278 val_278 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +66 val_66 val_66 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 +98 val_98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-4-1230f694ae20d2a21e41ac609471b8c5 b/sql/hive/src/test/resources/golden/join_map_ppr-4-1230f694ae20d2a21e41ac609471b8c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-5-b7e6358104eceede7389c7d2a212b058 b/sql/hive/src/test/resources/golden/join_map_ppr-5-b7e6358104eceede7389c7d2a212b058 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-6-6aab4a0b43b769d7f6b6f5ad6dc0558a b/sql/hive/src/test/resources/golden/join_map_ppr-6-6aab4a0b43b769d7f6b6f5ad6dc0558a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-7-45704df71b70e3f5aa31966ac96b9db b/sql/hive/src/test/resources/golden/join_map_ppr-7-45704df71b70e3f5aa31966ac96b9db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-8-e790d28a6c0818b1bafbe252879bd8ed b/sql/hive/src/test/resources/golden/join_map_ppr-8-e790d28a6c0818b1bafbe252879bd8ed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_map_ppr-9-921ba3c3c23751ac1d724319a1b9b22a b/sql/hive/src/test/resources/golden/join_map_ppr-9-921ba3c3c23751ac1d724319a1b9b22a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-0-5644ab44e5ba9f2941216b8d5dc33a99 b/sql/hive/src/test/resources/golden/join_nulls-0-5644ab44e5ba9f2941216b8d5dc33a99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-1-97641998eb9ddf2dff56de6758486aa0 b/sql/hive/src/test/resources/golden/join_nulls-1-97641998eb9ddf2dff56de6758486aa0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-10-39071d8e6b246cfd405714dbf0b5337b b/sql/hive/src/test/resources/golden/join_nulls-10-39071d8e6b246cfd405714dbf0b5337b new file mode 100644 index 0000000000000..4bc2d3969f17f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-10-39071d8e6b246cfd405714dbf0b5337b @@ -0,0 +1,3 @@ +NULL 35 NULL 35 +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-11-545dff878ea0d79cdfee517572c9e0c8 b/sql/hive/src/test/resources/golden/join_nulls-11-545dff878ea0d79cdfee517572c9e0c8 new file mode 100644 index 0000000000000..8414cfbede40a --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-11-545dff878ea0d79cdfee517572c9e0c8 @@ -0,0 +1,3 @@ +NULL 35 NULL NULL +48 NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-12-5e1ca8627aa685435142d8e339e77062 b/sql/hive/src/test/resources/golden/join_nulls-12-5e1ca8627aa685435142d8e339e77062 new file mode 100644 index 0000000000000..c11ae6cce7abb --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-12-5e1ca8627aa685435142d8e339e77062 @@ -0,0 +1,3 @@ +NULL 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-13-5f670a20cbec42a34685ee0398ad7e2d b/sql/hive/src/test/resources/golden/join_nulls-13-5f670a20cbec42a34685ee0398ad7e2d new file mode 100644 index 0000000000000..e28e1b1e5e8b1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-13-5f670a20cbec42a34685ee0398ad7e2d @@ -0,0 +1,3 @@ +NULL NULL NULL 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-14-e97ba69145da387a4a66635b8499077 b/sql/hive/src/test/resources/golden/join_nulls-14-e97ba69145da387a4a66635b8499077 new file mode 100644 index 0000000000000..85192b86801e2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-14-e97ba69145da387a4a66635b8499077 @@ -0,0 +1,3 @@ +NULL NULL NULL 35 +48 NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-15-e9f9be8be6e936fb832483dfa0be5126 b/sql/hive/src/test/resources/golden/join_nulls-15-e9f9be8be6e936fb832483dfa0be5126 new file mode 100644 index 0000000000000..c19237d5d4309 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-15-e9f9be8be6e936fb832483dfa0be5126 @@ -0,0 +1,3 @@ +NULL NULL 48 NULL +NULL 35 NULL 35 +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-16-b000ccd6c2c05af1875e21428aa3d9b9 b/sql/hive/src/test/resources/golden/join_nulls-16-b000ccd6c2c05af1875e21428aa3d9b9 new file mode 100644 index 0000000000000..e28e1b1e5e8b1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-16-b000ccd6c2c05af1875e21428aa3d9b9 @@ -0,0 +1,3 @@ +NULL NULL NULL 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-17-2b0bfe5754456475ceb6af4694165f b/sql/hive/src/test/resources/golden/join_nulls-17-2b0bfe5754456475ceb6af4694165f new file mode 100644 index 0000000000000..56ca29ffe263c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-17-2b0bfe5754456475ceb6af4694165f @@ -0,0 +1,5 @@ +NULL NULL NULL 35 +NULL NULL 48 NULL +NULL 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-18-321cf9d31dac835c3def6ca3b3b860a2 b/sql/hive/src/test/resources/golden/join_nulls-18-321cf9d31dac835c3def6ca3b3b860a2 new file mode 100644 index 0000000000000..92e228d381628 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-18-321cf9d31dac835c3def6ca3b3b860a2 @@ -0,0 +1,4 @@ +NULL NULL NULL 35 +NULL 35 NULL NULL +48 NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-19-739bf8e440e698540d18c29226c3564c b/sql/hive/src/test/resources/golden/join_nulls-19-739bf8e440e698540d18c29226c3564c new file mode 100644 index 0000000000000..f57bbd5152852 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-19-739bf8e440e698540d18c29226c3564c @@ -0,0 +1,4 @@ +NULL NULL 48 NULL +NULL 35 NULL 35 +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-2-f4b71841cfff5294bc1e5ac163eadbe5 b/sql/hive/src/test/resources/golden/join_nulls-2-f4b71841cfff5294bc1e5ac163eadbe5 new file mode 100644 index 0000000000000..0d14bf4e38509 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-2-f4b71841cfff5294bc1e5ac163eadbe5 @@ -0,0 +1,9 @@ +NULL 35 NULL 35 +NULL 35 48 NULL +NULL 35 100 100 +48 NULL NULL 35 +48 NULL 48 NULL +48 NULL 100 100 +100 100 NULL 35 +100 100 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-20-fff960f1cb832bc93e3d1de519e573d5 b/sql/hive/src/test/resources/golden/join_nulls-20-fff960f1cb832bc93e3d1de519e573d5 new file mode 100644 index 0000000000000..56ca29ffe263c --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-20-fff960f1cb832bc93e3d1de519e573d5 @@ -0,0 +1,5 @@ +NULL NULL NULL 35 +NULL NULL 48 NULL +NULL 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-21-62a25fb819ae5c1ea757b6e759082a2e b/sql/hive/src/test/resources/golden/join_nulls-21-62a25fb819ae5c1ea757b6e759082a2e new file mode 100644 index 0000000000000..0db9ffd61a3ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-21-62a25fb819ae5c1ea757b6e759082a2e @@ -0,0 +1,3 @@ +NULL NULL NULL NULL 48 NULL +NULL 35 NULL 35 NULL 35 +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-22-5b2df5518994ae86c041484561857da0 b/sql/hive/src/test/resources/golden/join_nulls-22-5b2df5518994ae86c041484561857da0 new file mode 100644 index 0000000000000..ed1b35fbe80ae --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-22-5b2df5518994ae86c041484561857da0 @@ -0,0 +1,3 @@ +NULL NULL 48 NULL NULL NULL +NULL 35 NULL 35 NULL 35 +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-23-982c3e55235cafa3d89b5dee4366fdf8 b/sql/hive/src/test/resources/golden/join_nulls-23-982c3e55235cafa3d89b5dee4366fdf8 new file mode 100644 index 0000000000000..0db9ffd61a3ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-23-982c3e55235cafa3d89b5dee4366fdf8 @@ -0,0 +1,3 @@ +NULL NULL NULL NULL 48 NULL +NULL 35 NULL 35 NULL 35 +100 100 100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-24-86ad66543a735d396f7336cb5bdfa495 b/sql/hive/src/test/resources/golden/join_nulls-24-86ad66543a735d396f7336cb5bdfa495 new file mode 100644 index 0000000000000..0d14bf4e38509 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-24-86ad66543a735d396f7336cb5bdfa495 @@ -0,0 +1,9 @@ +NULL 35 NULL 35 +NULL 35 48 NULL +NULL 35 100 100 +48 NULL NULL 35 +48 NULL 48 NULL +48 NULL 100 100 +100 100 NULL 35 +100 100 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-25-45bd90c71bc44c2accf0009f1ceb5f56 b/sql/hive/src/test/resources/golden/join_nulls-25-45bd90c71bc44c2accf0009f1ceb5f56 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-25-45bd90c71bc44c2accf0009f1ceb5f56 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-26-3fb736c1d060bbf9ec7ce58be4531dc9 b/sql/hive/src/test/resources/golden/join_nulls-26-3fb736c1d060bbf9ec7ce58be4531dc9 new file mode 100644 index 0000000000000..bdd09da460bbe --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-26-3fb736c1d060bbf9ec7ce58be4531dc9 @@ -0,0 +1,2 @@ +48 NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-27-6ee7affed896b1c539628ab081842b83 b/sql/hive/src/test/resources/golden/join_nulls-27-6ee7affed896b1c539628ab081842b83 new file mode 100644 index 0000000000000..dfe4f4318fc66 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-27-6ee7affed896b1c539628ab081842b83 @@ -0,0 +1,2 @@ +NULL 35 NULL 35 +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-28-455aace3472c5840a885b6fab6a046cb b/sql/hive/src/test/resources/golden/join_nulls-28-455aace3472c5840a885b6fab6a046cb new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-28-455aace3472c5840a885b6fab6a046cb @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-29-2c278a88713aef5cd30ff3720ef3eeeb b/sql/hive/src/test/resources/golden/join_nulls-29-2c278a88713aef5cd30ff3720ef3eeeb new file mode 100644 index 0000000000000..bdd09da460bbe --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-29-2c278a88713aef5cd30ff3720ef3eeeb @@ -0,0 +1,2 @@ +48 NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-3-88d2da3bcb2c8b04df1b6f18ff2226c4 b/sql/hive/src/test/resources/golden/join_nulls-3-88d2da3bcb2c8b04df1b6f18ff2226c4 new file mode 100644 index 0000000000000..0d14bf4e38509 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-3-88d2da3bcb2c8b04df1b6f18ff2226c4 @@ -0,0 +1,9 @@ +NULL 35 NULL 35 +NULL 35 48 NULL +NULL 35 100 100 +48 NULL NULL 35 +48 NULL 48 NULL +48 NULL 100 100 +100 100 NULL 35 +100 100 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-30-2c0c41da38714d1b16feffb00fa08bb1 b/sql/hive/src/test/resources/golden/join_nulls-30-2c0c41da38714d1b16feffb00fa08bb1 new file mode 100644 index 0000000000000..dfe4f4318fc66 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-30-2c0c41da38714d1b16feffb00fa08bb1 @@ -0,0 +1,2 @@ +NULL 35 NULL 35 +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-31-a33c48d38817ee3a7aca511dc7793486 b/sql/hive/src/test/resources/golden/join_nulls-31-a33c48d38817ee3a7aca511dc7793486 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-31-a33c48d38817ee3a7aca511dc7793486 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-32-e6b104ae96622ff75d510efc6efc9352 b/sql/hive/src/test/resources/golden/join_nulls-32-e6b104ae96622ff75d510efc6efc9352 new file mode 100644 index 0000000000000..c11ae6cce7abb --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-32-e6b104ae96622ff75d510efc6efc9352 @@ -0,0 +1,3 @@ +NULL 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-33-1284a11bf6aeef8ff87b471d41985f26 b/sql/hive/src/test/resources/golden/join_nulls-33-1284a11bf6aeef8ff87b471d41985f26 new file mode 100644 index 0000000000000..8414cfbede40a --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-33-1284a11bf6aeef8ff87b471d41985f26 @@ -0,0 +1,3 @@ +NULL 35 NULL NULL +48 NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-34-aeb90811861431cadc5512637793afc1 b/sql/hive/src/test/resources/golden/join_nulls-34-aeb90811861431cadc5512637793afc1 new file mode 100644 index 0000000000000..4bc2d3969f17f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-34-aeb90811861431cadc5512637793afc1 @@ -0,0 +1,3 @@ +NULL 35 NULL 35 +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-35-2d1d18d4e9775ec69333947fbd62bc82 b/sql/hive/src/test/resources/golden/join_nulls-35-2d1d18d4e9775ec69333947fbd62bc82 new file mode 100644 index 0000000000000..e28e1b1e5e8b1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-35-2d1d18d4e9775ec69333947fbd62bc82 @@ -0,0 +1,3 @@ +NULL NULL NULL 35 +NULL NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-36-7c029c91141b36af79ba0dc1de73a257 b/sql/hive/src/test/resources/golden/join_nulls-36-7c029c91141b36af79ba0dc1de73a257 new file mode 100644 index 0000000000000..85192b86801e2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-36-7c029c91141b36af79ba0dc1de73a257 @@ -0,0 +1,3 @@ +NULL NULL NULL 35 +48 NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-37-fa84731f5a6beec20d64a7981815b9bc b/sql/hive/src/test/resources/golden/join_nulls-37-fa84731f5a6beec20d64a7981815b9bc new file mode 100644 index 0000000000000..c19237d5d4309 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-37-fa84731f5a6beec20d64a7981815b9bc @@ -0,0 +1,3 @@ +NULL NULL 48 NULL +NULL 35 NULL 35 +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-38-6d8955591f62d9cfc6af17df63d3d88e b/sql/hive/src/test/resources/golden/join_nulls-38-6d8955591f62d9cfc6af17df63d3d88e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-39-23ab7ac8229a53d391195be7ca092429 b/sql/hive/src/test/resources/golden/join_nulls-39-23ab7ac8229a53d391195be7ca092429 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-4-a1f20b4863428627bae1316755cc2d94 b/sql/hive/src/test/resources/golden/join_nulls-4-a1f20b4863428627bae1316755cc2d94 new file mode 100644 index 0000000000000..0d14bf4e38509 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-4-a1f20b4863428627bae1316755cc2d94 @@ -0,0 +1,9 @@ +NULL 35 NULL 35 +NULL 35 48 NULL +NULL 35 100 100 +48 NULL NULL 35 +48 NULL 48 NULL +48 NULL 100 100 +100 100 NULL 35 +100 100 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-40-aa161b0d9fe9d1aad10654fce0e3670b b/sql/hive/src/test/resources/golden/join_nulls-40-aa161b0d9fe9d1aad10654fce0e3670b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-41-3c52df82c7d78501610f3f898103f753 b/sql/hive/src/test/resources/golden/join_nulls-41-3c52df82c7d78501610f3f898103f753 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-42-1d85bb008e02ef4025171a4bc0866a6c b/sql/hive/src/test/resources/golden/join_nulls-42-1d85bb008e02ef4025171a4bc0866a6c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-43-e79c906b894fed049ddfab4496a4e3 b/sql/hive/src/test/resources/golden/join_nulls-43-e79c906b894fed049ddfab4496a4e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_nulls-44-2db30531137611e06fdba478ca7a8412 b/sql/hive/src/test/resources/golden/join_nulls-44-2db30531137611e06fdba478ca7a8412 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-44-2db30531137611e06fdba478ca7a8412 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-45-e58b2754e8d9c56a473557a549d0d2b9 b/sql/hive/src/test/resources/golden/join_nulls-45-e58b2754e8d9c56a473557a549d0d2b9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-45-e58b2754e8d9c56a473557a549d0d2b9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-46-64cabe5164130a94f387288f37b62d71 b/sql/hive/src/test/resources/golden/join_nulls-46-64cabe5164130a94f387288f37b62d71 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-46-64cabe5164130a94f387288f37b62d71 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-47-ebf794e8b51be738e2d664f249869de1 b/sql/hive/src/test/resources/golden/join_nulls-47-ebf794e8b51be738e2d664f249869de1 new file mode 100644 index 0000000000000..7d9efd15fa287 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-47-ebf794e8b51be738e2d664f249869de1 @@ -0,0 +1,4 @@ +48 NULL 48 NULL +100 100 100 100 +148 NULL 148 NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-48-979c3ee0ee49bfd246d5372b8873fd3 b/sql/hive/src/test/resources/golden/join_nulls-48-979c3ee0ee49bfd246d5372b8873fd3 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-48-979c3ee0ee49bfd246d5372b8873fd3 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-49-2d20d8f4221281a6b1cd579e761f81b7 b/sql/hive/src/test/resources/golden/join_nulls-49-2d20d8f4221281a6b1cd579e761f81b7 new file mode 100644 index 0000000000000..4d2ff6a237416 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-49-2d20d8f4221281a6b1cd579e761f81b7 @@ -0,0 +1,6 @@ +NULL NULL NULL 35 +NULL NULL NULL 135 +48 NULL 48 NULL +100 100 100 100 +148 NULL 148 NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-5-5ec6e3df7181e0738244623cc01bf22c b/sql/hive/src/test/resources/golden/join_nulls-5-5ec6e3df7181e0738244623cc01bf22c new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-5-5ec6e3df7181e0738244623cc01bf22c @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-50-8b26343e74c161cf74ece5f0bd21470 b/sql/hive/src/test/resources/golden/join_nulls-50-8b26343e74c161cf74ece5f0bd21470 new file mode 100644 index 0000000000000..7d9efd15fa287 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-50-8b26343e74c161cf74ece5f0bd21470 @@ -0,0 +1,4 @@ +48 NULL 48 NULL +100 100 100 100 +148 NULL 148 NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-51-75339d2eb2afabf5dd088074b2563d8f b/sql/hive/src/test/resources/golden/join_nulls-51-75339d2eb2afabf5dd088074b2563d8f new file mode 100644 index 0000000000000..695bb1544ec89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-51-75339d2eb2afabf5dd088074b2563d8f @@ -0,0 +1,6 @@ +NULL 35 NULL NULL +NULL 135 NULL NULL +48 NULL 48 NULL +100 100 100 100 +148 NULL 148 NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-52-caad1db99085760daaf8f96c0ce5564 b/sql/hive/src/test/resources/golden/join_nulls-52-caad1db99085760daaf8f96c0ce5564 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-52-caad1db99085760daaf8f96c0ce5564 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-53-ec965e66e7fad403cd0ea388c3e70363 b/sql/hive/src/test/resources/golden/join_nulls-53-ec965e66e7fad403cd0ea388c3e70363 new file mode 100644 index 0000000000000..b89f5e6d42a0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-53-ec965e66e7fad403cd0ea388c3e70363 @@ -0,0 +1,2 @@ +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-54-6f15c794b5587430ebb685cc61c502 b/sql/hive/src/test/resources/golden/join_nulls-54-6f15c794b5587430ebb685cc61c502 new file mode 100644 index 0000000000000..b81820f886894 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-54-6f15c794b5587430ebb685cc61c502 @@ -0,0 +1,6 @@ +NULL 35 NULL NULL +NULL 135 NULL NULL +48 NULL NULL NULL +100 100 100 100 +148 NULL NULL NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-55-a1c73326f8c8d9beccda3ba365352564 b/sql/hive/src/test/resources/golden/join_nulls-55-a1c73326f8c8d9beccda3ba365352564 new file mode 100644 index 0000000000000..71cd5ce0041b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-55-a1c73326f8c8d9beccda3ba365352564 @@ -0,0 +1,6 @@ +NULL NULL NULL 35 +NULL NULL NULL 135 +NULL NULL 48 NULL +NULL NULL 148 NULL +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-56-f7b9629093c818b6c384c79d1458d178 b/sql/hive/src/test/resources/golden/join_nulls-56-f7b9629093c818b6c384c79d1458d178 new file mode 100644 index 0000000000000..86b3dab6bffc8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-56-f7b9629093c818b6c384c79d1458d178 @@ -0,0 +1,4 @@ +NULL 35 NULL 35 +NULL 135 NULL 135 +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-57-cf353446d7f358a508f17d0984b90158 b/sql/hive/src/test/resources/golden/join_nulls-57-cf353446d7f358a508f17d0984b90158 new file mode 100644 index 0000000000000..169df31887b96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-57-cf353446d7f358a508f17d0984b90158 @@ -0,0 +1,6 @@ +NULL NULL 48 NULL +NULL NULL 148 NULL +NULL 35 NULL 35 +NULL 135 NULL 135 +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-58-5f9a59160a76f9b649102a97987ed33a b/sql/hive/src/test/resources/golden/join_nulls-58-5f9a59160a76f9b649102a97987ed33a new file mode 100644 index 0000000000000..86b3dab6bffc8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-58-5f9a59160a76f9b649102a97987ed33a @@ -0,0 +1,4 @@ +NULL 35 NULL 35 +NULL 135 NULL 135 +100 100 100 100 +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-59-8753a39412ac59c7a05951aeeea73b24 b/sql/hive/src/test/resources/golden/join_nulls-59-8753a39412ac59c7a05951aeeea73b24 new file mode 100644 index 0000000000000..bdd5dcf63fd00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-59-8753a39412ac59c7a05951aeeea73b24 @@ -0,0 +1,6 @@ +NULL 35 NULL 35 +NULL 135 NULL 135 +48 NULL NULL NULL +100 100 100 100 +148 NULL NULL NULL +200 200 200 200 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-6-7eea211c80e7f1146098e80ffb890d67 b/sql/hive/src/test/resources/golden/join_nulls-6-7eea211c80e7f1146098e80ffb890d67 new file mode 100644 index 0000000000000..bdd09da460bbe --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-6-7eea211c80e7f1146098e80ffb890d67 @@ -0,0 +1,2 @@ +48 NULL 48 NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-7-1692e12155c37a8d94d63d274a9eb8e0 b/sql/hive/src/test/resources/golden/join_nulls-7-1692e12155c37a8d94d63d274a9eb8e0 new file mode 100644 index 0000000000000..dfe4f4318fc66 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-7-1692e12155c37a8d94d63d274a9eb8e0 @@ -0,0 +1,2 @@ +NULL 35 NULL 35 +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-8-609f6bd812a44b20da0a39c827e4d870 b/sql/hive/src/test/resources/golden/join_nulls-8-609f6bd812a44b20da0a39c827e4d870 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-8-609f6bd812a44b20da0a39c827e4d870 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_nulls-9-ef4b27a877efc377cd5750af6725194b b/sql/hive/src/test/resources/golden/join_nulls-9-ef4b27a877efc377cd5750af6725194b new file mode 100644 index 0000000000000..c11ae6cce7abb --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_nulls-9-ef4b27a877efc377cd5750af6725194b @@ -0,0 +1,3 @@ +NULL 35 NULL NULL +48 NULL NULL NULL +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_rc-0-fcbbe26c6881f81800fe86abbfe6aa87 b/sql/hive/src/test/resources/golden/join_rc-0-fcbbe26c6881f81800fe86abbfe6aa87 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_rc-1-6a7685f30de00ebb4867a4002d641a5e b/sql/hive/src/test/resources/golden/join_rc-1-6a7685f30de00ebb4867a4002d641a5e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_rc-2-88aabbe1fcd7735ae8cc97418b4a59a3 b/sql/hive/src/test/resources/golden/join_rc-2-88aabbe1fcd7735ae8cc97418b4a59a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_rc-3-4a737f3e518f5322ba41a189e79c1dee b/sql/hive/src/test/resources/golden/join_rc-3-4a737f3e518f5322ba41a189e79c1dee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_rc-4-f60f7fdd08e85fae90af59475192b725 b/sql/hive/src/test/resources/golden/join_rc-4-f60f7fdd08e85fae90af59475192b725 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_rc-5-1aef75afe38d512addb44dbf9a650263 b/sql/hive/src/test/resources/golden/join_rc-5-1aef75afe38d512addb44dbf9a650263 new file mode 100644 index 0000000000000..59821aeea3008 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_rc-5-1aef75afe38d512addb44dbf9a650263 @@ -0,0 +1,1028 @@ +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +82 val_82 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +4 val_4 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +54 val_54 +459 val_459 +459 val_459 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +58 val_58 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +404 val_404 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +209 val_209 +64 val_64 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +200 val_200 +200 val_200 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder2-0-caf1c5fd299fdbdb655234d01d44caf2 b/sql/hive/src/test/resources/golden/join_reorder2-0-caf1c5fd299fdbdb655234d01d44caf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-1-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/join_reorder2-1-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-10-45349471e0e919bd2185f584e87b891d b/sql/hive/src/test/resources/golden/join_reorder2-10-45349471e0e919bd2185f584e87b891d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-11-f8460b061fa00f6afbfe8eeccf4d3564 b/sql/hive/src/test/resources/golden/join_reorder2-11-f8460b061fa00f6afbfe8eeccf4d3564 new file mode 100644 index 0000000000000..06a83e95d4f79 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_reorder2-11-f8460b061fa00f6afbfe8eeccf4d3564 @@ -0,0 +1 @@ +2 12 2 22 2 12 2 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder2-2-fa53198d9eecb9d274b09d4351b9274e b/sql/hive/src/test/resources/golden/join_reorder2-2-fa53198d9eecb9d274b09d4351b9274e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-3-38a5e7f36d579835f9c2b1c52efd9643 b/sql/hive/src/test/resources/golden/join_reorder2-3-38a5e7f36d579835f9c2b1c52efd9643 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/join_reorder2-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-5-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/join_reorder2-5-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-6-3fda17e4414d191f837631438a19e700 b/sql/hive/src/test/resources/golden/join_reorder2-6-3fda17e4414d191f837631438a19e700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-7-512b75ccb9459a6334da1d9699f4a5ec b/sql/hive/src/test/resources/golden/join_reorder2-7-512b75ccb9459a6334da1d9699f4a5ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-8-68b763a6f1f673daa35fee55aeae84a1 b/sql/hive/src/test/resources/golden/join_reorder2-8-68b763a6f1f673daa35fee55aeae84a1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder2-9-26ffed826eceda953b7124ee39ace828 b/sql/hive/src/test/resources/golden/join_reorder2-9-26ffed826eceda953b7124ee39ace828 new file mode 100644 index 0000000000000..06a83e95d4f79 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_reorder2-9-26ffed826eceda953b7124ee39ace828 @@ -0,0 +1 @@ +2 12 2 22 2 12 2 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder3-0-caf1c5fd299fdbdb655234d01d44caf2 b/sql/hive/src/test/resources/golden/join_reorder3-0-caf1c5fd299fdbdb655234d01d44caf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-1-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/join_reorder3-1-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-10-ff036400019164ed743ecd9cfc222ce1 b/sql/hive/src/test/resources/golden/join_reorder3-10-ff036400019164ed743ecd9cfc222ce1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-11-d6392b851f7dd5e3705e8ff51e1c6583 b/sql/hive/src/test/resources/golden/join_reorder3-11-d6392b851f7dd5e3705e8ff51e1c6583 new file mode 100644 index 0000000000000..06a83e95d4f79 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_reorder3-11-d6392b851f7dd5e3705e8ff51e1c6583 @@ -0,0 +1 @@ +2 12 2 22 2 12 2 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder3-2-fa53198d9eecb9d274b09d4351b9274e b/sql/hive/src/test/resources/golden/join_reorder3-2-fa53198d9eecb9d274b09d4351b9274e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-3-38a5e7f36d579835f9c2b1c52efd9643 b/sql/hive/src/test/resources/golden/join_reorder3-3-38a5e7f36d579835f9c2b1c52efd9643 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/join_reorder3-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-5-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/join_reorder3-5-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-6-3fda17e4414d191f837631438a19e700 b/sql/hive/src/test/resources/golden/join_reorder3-6-3fda17e4414d191f837631438a19e700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-7-512b75ccb9459a6334da1d9699f4a5ec b/sql/hive/src/test/resources/golden/join_reorder3-7-512b75ccb9459a6334da1d9699f4a5ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-8-743fefaadfe31ce43cd2dead85b7d741 b/sql/hive/src/test/resources/golden/join_reorder3-8-743fefaadfe31ce43cd2dead85b7d741 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder3-9-9d45e66a3990b7c53fd780f07cd52e13 b/sql/hive/src/test/resources/golden/join_reorder3-9-9d45e66a3990b7c53fd780f07cd52e13 new file mode 100644 index 0000000000000..06a83e95d4f79 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_reorder3-9-9d45e66a3990b7c53fd780f07cd52e13 @@ -0,0 +1 @@ +2 12 2 22 2 12 2 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder4-0-799a471861f35cb065a6b1105c7d9ccf b/sql/hive/src/test/resources/golden/join_reorder4-0-799a471861f35cb065a6b1105c7d9ccf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder4-1-ee3326e9aa49562ac854bbd0b3f3d90a b/sql/hive/src/test/resources/golden/join_reorder4-1-ee3326e9aa49562ac854bbd0b3f3d90a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder4-10-1d6b948747ac31296710a491a5652e3f b/sql/hive/src/test/resources/golden/join_reorder4-10-1d6b948747ac31296710a491a5652e3f new file mode 100644 index 0000000000000..872146532307a --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_reorder4-10-1d6b948747ac31296710a491a5652e3f @@ -0,0 +1 @@ +2 12 2 22 2 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder4-11-7ec0f5b60991a54d86ec9f8a27809c3 b/sql/hive/src/test/resources/golden/join_reorder4-11-7ec0f5b60991a54d86ec9f8a27809c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder4-12-203aed2c4298eba4a3c51816a21a1c1 b/sql/hive/src/test/resources/golden/join_reorder4-12-203aed2c4298eba4a3c51816a21a1c1 new file mode 100644 index 0000000000000..872146532307a --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_reorder4-12-203aed2c4298eba4a3c51816a21a1c1 @@ -0,0 +1 @@ +2 12 2 22 2 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder4-2-8b4643dd260f09d32af5d79de7359c0c b/sql/hive/src/test/resources/golden/join_reorder4-2-8b4643dd260f09d32af5d79de7359c0c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder4-3-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/join_reorder4-3-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder4-4-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/join_reorder4-4-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder4-5-3fda17e4414d191f837631438a19e700 b/sql/hive/src/test/resources/golden/join_reorder4-5-3fda17e4414d191f837631438a19e700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder4-6-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join_reorder4-6-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_reorder4-6-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder4-7-58a3ea3c82886b1eb7cee7403b1f96a5 b/sql/hive/src/test/resources/golden/join_reorder4-7-58a3ea3c82886b1eb7cee7403b1f96a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_reorder4-8-4bbb8e937245e2fa7cafbb423814754 b/sql/hive/src/test/resources/golden/join_reorder4-8-4bbb8e937245e2fa7cafbb423814754 new file mode 100644 index 0000000000000..872146532307a --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_reorder4-8-4bbb8e937245e2fa7cafbb423814754 @@ -0,0 +1 @@ +2 12 2 22 2 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_reorder4-9-b401eef67c1c04f875c084c9e0fda9ba b/sql/hive/src/test/resources/golden/join_reorder4-9-b401eef67c1c04f875c084c9e0fda9ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-0-6001f83f7780835737e3262a34c2b832 b/sql/hive/src/test/resources/golden/join_star-0-6001f83f7780835737e3262a34c2b832 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-1-9f29849fe78f15b7594378a10fe3ed9d b/sql/hive/src/test/resources/golden/join_star-1-9f29849fe78f15b7594378a10fe3ed9d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-10-57ce75f989b3b3bfd2f2eceb228e892e b/sql/hive/src/test/resources/golden/join_star-10-57ce75f989b3b3bfd2f2eceb228e892e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-11-eba1397e66f25cba4fd264209cc92bae b/sql/hive/src/test/resources/golden/join_star-11-eba1397e66f25cba4fd264209cc92bae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-12-89b53ae954ec88171ef87e0459f6eb82 b/sql/hive/src/test/resources/golden/join_star-12-89b53ae954ec88171ef87e0459f6eb82 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-13-342b7249c9ce1484869169b1b33191cb b/sql/hive/src/test/resources/golden/join_star-13-342b7249c9ce1484869169b1b33191cb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-14-75513308d30b781fd2e06d81963c4363 b/sql/hive/src/test/resources/golden/join_star-14-75513308d30b781fd2e06d81963c4363 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-15-24a0b1d0257bad4f85b3a122acf6bef9 b/sql/hive/src/test/resources/golden/join_star-15-24a0b1d0257bad4f85b3a122acf6bef9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-16-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/join_star-16-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_star-16-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_star-17-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/join_star-17-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_star-17-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_star-18-1c22e451845667bd6b4eac3c49c36965 b/sql/hive/src/test/resources/golden/join_star-18-1c22e451845667bd6b4eac3c49c36965 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_star-18-1c22e451845667bd6b4eac3c49c36965 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_star-19-a1209595ce68e24a111c2a0d27863bfa b/sql/hive/src/test/resources/golden/join_star-19-a1209595ce68e24a111c2a0d27863bfa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-2-75d7e03808482c11361ce72f2dd38de0 b/sql/hive/src/test/resources/golden/join_star-2-75d7e03808482c11361ce72f2dd38de0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-20-76473cb68a69b9408207fd43ddae9339 b/sql/hive/src/test/resources/golden/join_star-20-76473cb68a69b9408207fd43ddae9339 new file mode 100644 index 0000000000000..e60bca6269264 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_star-20-76473cb68a69b9408207fd43ddae9339 @@ -0,0 +1,10 @@ +1 2 1 +11 12 1 +21 22 1 +31 32 1 +41 42 1 +51 52 3 +61 62 3 +71 72 3 +81 82 3 +91 92 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_star-21-6b8dbb1dbcf0096f0af3209bb6efd2c6 b/sql/hive/src/test/resources/golden/join_star-21-6b8dbb1dbcf0096f0af3209bb6efd2c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-22-429cfd140488242d569aee6594aae76b b/sql/hive/src/test/resources/golden/join_star-22-429cfd140488242d569aee6594aae76b new file mode 100644 index 0000000000000..e08d04997c56b --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_star-22-429cfd140488242d569aee6594aae76b @@ -0,0 +1,10 @@ +1 2 1 2 +11 12 1 2 +21 22 1 2 +31 32 1 2 +41 42 1 2 +51 52 3 4 +61 62 3 4 +71 72 3 4 +81 82 3 4 +91 92 3 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_star-23-bada259628918dbfb4837bcb58258530 b/sql/hive/src/test/resources/golden/join_star-23-bada259628918dbfb4837bcb58258530 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-24-e11ab68d72d874c7c6c658c1018f5a49 b/sql/hive/src/test/resources/golden/join_star-24-e11ab68d72d874c7c6c658c1018f5a49 new file mode 100644 index 0000000000000..b89911131bd13 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_star-24-e11ab68d72d874c7c6c658c1018f5a49 @@ -0,0 +1,10 @@ +1 2 1 1 +11 12 1 1 +21 22 1 1 +31 32 1 1 +41 42 1 1 +51 52 3 3 +61 62 3 3 +71 72 3 3 +81 82 3 3 +91 92 3 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_star-25-be5af28b6bccf529a31ef68619de699e b/sql/hive/src/test/resources/golden/join_star-25-be5af28b6bccf529a31ef68619de699e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-26-a412a0620a359a62e2ab4e45fa8e0330 b/sql/hive/src/test/resources/golden/join_star-26-a412a0620a359a62e2ab4e45fa8e0330 new file mode 100644 index 0000000000000..b89911131bd13 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_star-26-a412a0620a359a62e2ab4e45fa8e0330 @@ -0,0 +1,10 @@ +1 2 1 1 +11 12 1 1 +21 22 1 1 +31 32 1 1 +41 42 1 1 +51 52 3 3 +61 62 3 3 +71 72 3 3 +81 82 3 3 +91 92 3 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_star-27-9ae4ebb8ceaa724bdbc88126f86692f1 b/sql/hive/src/test/resources/golden/join_star-27-9ae4ebb8ceaa724bdbc88126f86692f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-28-98a3f4d8a2209e771c57462d4b723ff9 b/sql/hive/src/test/resources/golden/join_star-28-98a3f4d8a2209e771c57462d4b723ff9 new file mode 100644 index 0000000000000..19611e75e33c3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_star-28-98a3f4d8a2209e771c57462d4b723ff9 @@ -0,0 +1,10 @@ +1 2 1 1 2 2 2 2 2 +11 12 1 1 2 2 2 2 2 +21 22 1 1 2 2 2 2 2 +31 32 1 1 2 2 2 2 2 +41 42 1 1 2 2 2 2 2 +51 52 3 3 4 4 4 4 4 +61 62 3 3 4 4 4 4 4 +71 72 3 3 4 4 4 4 4 +81 82 3 3 4 4 4 4 4 +91 92 3 3 4 4 4 4 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_star-3-4f4ca11033af3894cc2e720ebb69e5da b/sql/hive/src/test/resources/golden/join_star-3-4f4ca11033af3894cc2e720ebb69e5da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-4-aaba115af7543b214820a48a694f2463 b/sql/hive/src/test/resources/golden/join_star-4-aaba115af7543b214820a48a694f2463 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-5-c72a8aff3a51f9e59bb62fd99807d8da b/sql/hive/src/test/resources/golden/join_star-5-c72a8aff3a51f9e59bb62fd99807d8da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-6-73d96ed451a4964e5c364dbdb56d487a b/sql/hive/src/test/resources/golden/join_star-6-73d96ed451a4964e5c364dbdb56d487a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-7-b007c3d4b6ed10df9e875e23644b673a b/sql/hive/src/test/resources/golden/join_star-7-b007c3d4b6ed10df9e875e23644b673a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-8-a957982d8981ff0a35397ca449297024 b/sql/hive/src/test/resources/golden/join_star-8-a957982d8981ff0a35397ca449297024 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_star-9-904e30d8615eb411fb24c2cc08df94f4 b/sql/hive/src/test/resources/golden/join_star-9-904e30d8615eb411fb24c2cc08df94f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_thrift-0-811b62ecbacdb26c67fa260ff3747a41 b/sql/hive/src/test/resources/golden/join_thrift-0-811b62ecbacdb26c67fa260ff3747a41 new file mode 100644 index 0000000000000..07433297e6de1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_thrift-0-811b62ecbacdb26c67fa260ff3747a41 @@ -0,0 +1,6 @@ +aint int from deserializer +astring string from deserializer +lint array from deserializer +lstring array from deserializer +lintstring array> from deserializer +mstringstring map from deserializer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_thrift-1-4f47dd107d2be1212411bda214c0d1db b/sql/hive/src/test/resources/golden/join_thrift-1-4f47dd107d2be1212411bda214c0d1db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_thrift-2-d4bfb7bab262dc2898431680711dec1b b/sql/hive/src/test/resources/golden/join_thrift-2-d4bfb7bab262dc2898431680711dec1b new file mode 100644 index 0000000000000..4aeaf4ff1f1b0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_thrift-2-d4bfb7bab262dc2898431680711dec1b @@ -0,0 +1,11 @@ +1712634731 [{"myint":0,"mystring":"0","underscore_int":0}] +465985200 [{"myint":1,"mystring":"1","underscore_int":1}] +-751827638 [{"myint":4,"mystring":"8","underscore_int":2}] +477111222 [{"myint":9,"mystring":"27","underscore_int":3}] +-734328909 [{"myint":16,"mystring":"64","underscore_int":4}] +-1952710710 [{"myint":25,"mystring":"125","underscore_int":5}] +1244525190 [{"myint":36,"mystring":"216","underscore_int":6}] +-1461153973 [{"myint":49,"mystring":"343","underscore_int":7}] +1638581578 [{"myint":64,"mystring":"512","underscore_int":8}] +336964413 [{"myint":81,"mystring":"729","underscore_int":9}] +0 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/join_vc-0-f6269c9b545c9f908ef9aebf1a2ac097 b/sql/hive/src/test/resources/golden/join_vc-0-f6269c9b545c9f908ef9aebf1a2ac097 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-0-d286410aa1d5f5c8d91b863a6d6e29c5 b/sql/hive/src/test/resources/golden/join_view-0-d286410aa1d5f5c8d91b863a6d6e29c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-1-4e6a4fd729bac739f5f9b9e2c42b2467 b/sql/hive/src/test/resources/golden/join_view-1-4e6a4fd729bac739f5f9b9e2c42b2467 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-2-eda40dba9678df62dde73fc5dafb2b44 b/sql/hive/src/test/resources/golden/join_view-2-eda40dba9678df62dde73fc5dafb2b44 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-3-eccb00d8dada8ab56a48c373e381e02b b/sql/hive/src/test/resources/golden/join_view-3-eccb00d8dada8ab56a48c373e381e02b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-4-763ab5853bff619e6525c01e46b2a923 b/sql/hive/src/test/resources/golden/join_view-4-763ab5853bff619e6525c01e46b2a923 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/join_view-4-763ab5853bff619e6525c01e46b2a923 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/join_view-5-85baeea910adc4589bc3ec2ce0b1e856 b/sql/hive/src/test/resources/golden/join_view-5-85baeea910adc4589bc3ec2ce0b1e856 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-6-c37b7962ab7371f94a9c54d61f7638ef b/sql/hive/src/test/resources/golden/join_view-6-c37b7962ab7371f94a9c54d61f7638ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-7-a14cfe3eff322066e61023ec06c7735d b/sql/hive/src/test/resources/golden/join_view-7-a14cfe3eff322066e61023ec06c7735d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-8-d286410aa1d5f5c8d91b863a6d6e29c5 b/sql/hive/src/test/resources/golden/join_view-8-d286410aa1d5f5c8d91b863a6d6e29c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/join_view-9-4e6a4fd729bac739f5f9b9e2c42b2467 b/sql/hive/src/test/resources/golden/join_view-9-4e6a4fd729bac739f5f9b9e2c42b2467 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral view1-0-85bfbfd635aee807ede359073fb26dee b/sql/hive/src/test/resources/golden/lateral view1-0-85bfbfd635aee807ede359073fb26dee new file mode 100644 index 0000000000000..1b8942763520b --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral view1-0-85bfbfd635aee807ede359073fb26dee @@ -0,0 +1,1000 @@ +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 +1 +2 diff --git a/sql/hive/src/test/resources/golden/lateral view2-0-6d92d10040c715df89db0f61ae4250bb b/sql/hive/src/test/resources/golden/lateral view2-0-6d92d10040c715df89db0f61ae4250bb new file mode 100644 index 0000000000000..86296b92d98ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral view2-0-6d92d10040c715df89db0f61ae4250bb @@ -0,0 +1,1000 @@ +238 val_238 1 +238 val_238 2 +86 val_86 1 +86 val_86 2 +311 val_311 1 +311 val_311 2 +27 val_27 1 +27 val_27 2 +165 val_165 1 +165 val_165 2 +409 val_409 1 +409 val_409 2 +255 val_255 1 +255 val_255 2 +278 val_278 1 +278 val_278 2 +98 val_98 1 +98 val_98 2 +484 val_484 1 +484 val_484 2 +265 val_265 1 +265 val_265 2 +193 val_193 1 +193 val_193 2 +401 val_401 1 +401 val_401 2 +150 val_150 1 +150 val_150 2 +273 val_273 1 +273 val_273 2 +224 val_224 1 +224 val_224 2 +369 val_369 1 +369 val_369 2 +66 val_66 1 +66 val_66 2 +128 val_128 1 +128 val_128 2 +213 val_213 1 +213 val_213 2 +146 val_146 1 +146 val_146 2 +406 val_406 1 +406 val_406 2 +429 val_429 1 +429 val_429 2 +374 val_374 1 +374 val_374 2 +152 val_152 1 +152 val_152 2 +469 val_469 1 +469 val_469 2 +145 val_145 1 +145 val_145 2 +495 val_495 1 +495 val_495 2 +37 val_37 1 +37 val_37 2 +327 val_327 1 +327 val_327 2 +281 val_281 1 +281 val_281 2 +277 val_277 1 +277 val_277 2 +209 val_209 1 +209 val_209 2 +15 val_15 1 +15 val_15 2 +82 val_82 1 +82 val_82 2 +403 val_403 1 +403 val_403 2 +166 val_166 1 +166 val_166 2 +417 val_417 1 +417 val_417 2 +430 val_430 1 +430 val_430 2 +252 val_252 1 +252 val_252 2 +292 val_292 1 +292 val_292 2 +219 val_219 1 +219 val_219 2 +287 val_287 1 +287 val_287 2 +153 val_153 1 +153 val_153 2 +193 val_193 1 +193 val_193 2 +338 val_338 1 +338 val_338 2 +446 val_446 1 +446 val_446 2 +459 val_459 1 +459 val_459 2 +394 val_394 1 +394 val_394 2 +237 val_237 1 +237 val_237 2 +482 val_482 1 +482 val_482 2 +174 val_174 1 +174 val_174 2 +413 val_413 1 +413 val_413 2 +494 val_494 1 +494 val_494 2 +207 val_207 1 +207 val_207 2 +199 val_199 1 +199 val_199 2 +466 val_466 1 +466 val_466 2 +208 val_208 1 +208 val_208 2 +174 val_174 1 +174 val_174 2 +399 val_399 1 +399 val_399 2 +396 val_396 1 +396 val_396 2 +247 val_247 1 +247 val_247 2 +417 val_417 1 +417 val_417 2 +489 val_489 1 +489 val_489 2 +162 val_162 1 +162 val_162 2 +377 val_377 1 +377 val_377 2 +397 val_397 1 +397 val_397 2 +309 val_309 1 +309 val_309 2 +365 val_365 1 +365 val_365 2 +266 val_266 1 +266 val_266 2 +439 val_439 1 +439 val_439 2 +342 val_342 1 +342 val_342 2 +367 val_367 1 +367 val_367 2 +325 val_325 1 +325 val_325 2 +167 val_167 1 +167 val_167 2 +195 val_195 1 +195 val_195 2 +475 val_475 1 +475 val_475 2 +17 val_17 1 +17 val_17 2 +113 val_113 1 +113 val_113 2 +155 val_155 1 +155 val_155 2 +203 val_203 1 +203 val_203 2 +339 val_339 1 +339 val_339 2 +0 val_0 1 +0 val_0 2 +455 val_455 1 +455 val_455 2 +128 val_128 1 +128 val_128 2 +311 val_311 1 +311 val_311 2 +316 val_316 1 +316 val_316 2 +57 val_57 1 +57 val_57 2 +302 val_302 1 +302 val_302 2 +205 val_205 1 +205 val_205 2 +149 val_149 1 +149 val_149 2 +438 val_438 1 +438 val_438 2 +345 val_345 1 +345 val_345 2 +129 val_129 1 +129 val_129 2 +170 val_170 1 +170 val_170 2 +20 val_20 1 +20 val_20 2 +489 val_489 1 +489 val_489 2 +157 val_157 1 +157 val_157 2 +378 val_378 1 +378 val_378 2 +221 val_221 1 +221 val_221 2 +92 val_92 1 +92 val_92 2 +111 val_111 1 +111 val_111 2 +47 val_47 1 +47 val_47 2 +72 val_72 1 +72 val_72 2 +4 val_4 1 +4 val_4 2 +280 val_280 1 +280 val_280 2 +35 val_35 1 +35 val_35 2 +427 val_427 1 +427 val_427 2 +277 val_277 1 +277 val_277 2 +208 val_208 1 +208 val_208 2 +356 val_356 1 +356 val_356 2 +399 val_399 1 +399 val_399 2 +169 val_169 1 +169 val_169 2 +382 val_382 1 +382 val_382 2 +498 val_498 1 +498 val_498 2 +125 val_125 1 +125 val_125 2 +386 val_386 1 +386 val_386 2 +437 val_437 1 +437 val_437 2 +469 val_469 1 +469 val_469 2 +192 val_192 1 +192 val_192 2 +286 val_286 1 +286 val_286 2 +187 val_187 1 +187 val_187 2 +176 val_176 1 +176 val_176 2 +54 val_54 1 +54 val_54 2 +459 val_459 1 +459 val_459 2 +51 val_51 1 +51 val_51 2 +138 val_138 1 +138 val_138 2 +103 val_103 1 +103 val_103 2 +239 val_239 1 +239 val_239 2 +213 val_213 1 +213 val_213 2 +216 val_216 1 +216 val_216 2 +430 val_430 1 +430 val_430 2 +278 val_278 1 +278 val_278 2 +176 val_176 1 +176 val_176 2 +289 val_289 1 +289 val_289 2 +221 val_221 1 +221 val_221 2 +65 val_65 1 +65 val_65 2 +318 val_318 1 +318 val_318 2 +332 val_332 1 +332 val_332 2 +311 val_311 1 +311 val_311 2 +275 val_275 1 +275 val_275 2 +137 val_137 1 +137 val_137 2 +241 val_241 1 +241 val_241 2 +83 val_83 1 +83 val_83 2 +333 val_333 1 +333 val_333 2 +180 val_180 1 +180 val_180 2 +284 val_284 1 +284 val_284 2 +12 val_12 1 +12 val_12 2 +230 val_230 1 +230 val_230 2 +181 val_181 1 +181 val_181 2 +67 val_67 1 +67 val_67 2 +260 val_260 1 +260 val_260 2 +404 val_404 1 +404 val_404 2 +384 val_384 1 +384 val_384 2 +489 val_489 1 +489 val_489 2 +353 val_353 1 +353 val_353 2 +373 val_373 1 +373 val_373 2 +272 val_272 1 +272 val_272 2 +138 val_138 1 +138 val_138 2 +217 val_217 1 +217 val_217 2 +84 val_84 1 +84 val_84 2 +348 val_348 1 +348 val_348 2 +466 val_466 1 +466 val_466 2 +58 val_58 1 +58 val_58 2 +8 val_8 1 +8 val_8 2 +411 val_411 1 +411 val_411 2 +230 val_230 1 +230 val_230 2 +208 val_208 1 +208 val_208 2 +348 val_348 1 +348 val_348 2 +24 val_24 1 +24 val_24 2 +463 val_463 1 +463 val_463 2 +431 val_431 1 +431 val_431 2 +179 val_179 1 +179 val_179 2 +172 val_172 1 +172 val_172 2 +42 val_42 1 +42 val_42 2 +129 val_129 1 +129 val_129 2 +158 val_158 1 +158 val_158 2 +119 val_119 1 +119 val_119 2 +496 val_496 1 +496 val_496 2 +0 val_0 1 +0 val_0 2 +322 val_322 1 +322 val_322 2 +197 val_197 1 +197 val_197 2 +468 val_468 1 +468 val_468 2 +393 val_393 1 +393 val_393 2 +454 val_454 1 +454 val_454 2 +100 val_100 1 +100 val_100 2 +298 val_298 1 +298 val_298 2 +199 val_199 1 +199 val_199 2 +191 val_191 1 +191 val_191 2 +418 val_418 1 +418 val_418 2 +96 val_96 1 +96 val_96 2 +26 val_26 1 +26 val_26 2 +165 val_165 1 +165 val_165 2 +327 val_327 1 +327 val_327 2 +230 val_230 1 +230 val_230 2 +205 val_205 1 +205 val_205 2 +120 val_120 1 +120 val_120 2 +131 val_131 1 +131 val_131 2 +51 val_51 1 +51 val_51 2 +404 val_404 1 +404 val_404 2 +43 val_43 1 +43 val_43 2 +436 val_436 1 +436 val_436 2 +156 val_156 1 +156 val_156 2 +469 val_469 1 +469 val_469 2 +468 val_468 1 +468 val_468 2 +308 val_308 1 +308 val_308 2 +95 val_95 1 +95 val_95 2 +196 val_196 1 +196 val_196 2 +288 val_288 1 +288 val_288 2 +481 val_481 1 +481 val_481 2 +457 val_457 1 +457 val_457 2 +98 val_98 1 +98 val_98 2 +282 val_282 1 +282 val_282 2 +197 val_197 1 +197 val_197 2 +187 val_187 1 +187 val_187 2 +318 val_318 1 +318 val_318 2 +318 val_318 1 +318 val_318 2 +409 val_409 1 +409 val_409 2 +470 val_470 1 +470 val_470 2 +137 val_137 1 +137 val_137 2 +369 val_369 1 +369 val_369 2 +316 val_316 1 +316 val_316 2 +169 val_169 1 +169 val_169 2 +413 val_413 1 +413 val_413 2 +85 val_85 1 +85 val_85 2 +77 val_77 1 +77 val_77 2 +0 val_0 1 +0 val_0 2 +490 val_490 1 +490 val_490 2 +87 val_87 1 +87 val_87 2 +364 val_364 1 +364 val_364 2 +179 val_179 1 +179 val_179 2 +118 val_118 1 +118 val_118 2 +134 val_134 1 +134 val_134 2 +395 val_395 1 +395 val_395 2 +282 val_282 1 +282 val_282 2 +138 val_138 1 +138 val_138 2 +238 val_238 1 +238 val_238 2 +419 val_419 1 +419 val_419 2 +15 val_15 1 +15 val_15 2 +118 val_118 1 +118 val_118 2 +72 val_72 1 +72 val_72 2 +90 val_90 1 +90 val_90 2 +307 val_307 1 +307 val_307 2 +19 val_19 1 +19 val_19 2 +435 val_435 1 +435 val_435 2 +10 val_10 1 +10 val_10 2 +277 val_277 1 +277 val_277 2 +273 val_273 1 +273 val_273 2 +306 val_306 1 +306 val_306 2 +224 val_224 1 +224 val_224 2 +309 val_309 1 +309 val_309 2 +389 val_389 1 +389 val_389 2 +327 val_327 1 +327 val_327 2 +242 val_242 1 +242 val_242 2 +369 val_369 1 +369 val_369 2 +392 val_392 1 +392 val_392 2 +272 val_272 1 +272 val_272 2 +331 val_331 1 +331 val_331 2 +401 val_401 1 +401 val_401 2 +242 val_242 1 +242 val_242 2 +452 val_452 1 +452 val_452 2 +177 val_177 1 +177 val_177 2 +226 val_226 1 +226 val_226 2 +5 val_5 1 +5 val_5 2 +497 val_497 1 +497 val_497 2 +402 val_402 1 +402 val_402 2 +396 val_396 1 +396 val_396 2 +317 val_317 1 +317 val_317 2 +395 val_395 1 +395 val_395 2 +58 val_58 1 +58 val_58 2 +35 val_35 1 +35 val_35 2 +336 val_336 1 +336 val_336 2 +95 val_95 1 +95 val_95 2 +11 val_11 1 +11 val_11 2 +168 val_168 1 +168 val_168 2 +34 val_34 1 +34 val_34 2 +229 val_229 1 +229 val_229 2 +233 val_233 1 +233 val_233 2 +143 val_143 1 +143 val_143 2 +472 val_472 1 +472 val_472 2 +322 val_322 1 +322 val_322 2 +498 val_498 1 +498 val_498 2 +160 val_160 1 +160 val_160 2 +195 val_195 1 +195 val_195 2 +42 val_42 1 +42 val_42 2 +321 val_321 1 +321 val_321 2 +430 val_430 1 +430 val_430 2 +119 val_119 1 +119 val_119 2 +489 val_489 1 +489 val_489 2 +458 val_458 1 +458 val_458 2 +78 val_78 1 +78 val_78 2 +76 val_76 1 +76 val_76 2 +41 val_41 1 +41 val_41 2 +223 val_223 1 +223 val_223 2 +492 val_492 1 +492 val_492 2 +149 val_149 1 +149 val_149 2 +449 val_449 1 +449 val_449 2 +218 val_218 1 +218 val_218 2 +228 val_228 1 +228 val_228 2 +138 val_138 1 +138 val_138 2 +453 val_453 1 +453 val_453 2 +30 val_30 1 +30 val_30 2 +209 val_209 1 +209 val_209 2 +64 val_64 1 +64 val_64 2 +468 val_468 1 +468 val_468 2 +76 val_76 1 +76 val_76 2 +74 val_74 1 +74 val_74 2 +342 val_342 1 +342 val_342 2 +69 val_69 1 +69 val_69 2 +230 val_230 1 +230 val_230 2 +33 val_33 1 +33 val_33 2 +368 val_368 1 +368 val_368 2 +103 val_103 1 +103 val_103 2 +296 val_296 1 +296 val_296 2 +113 val_113 1 +113 val_113 2 +216 val_216 1 +216 val_216 2 +367 val_367 1 +367 val_367 2 +344 val_344 1 +344 val_344 2 +167 val_167 1 +167 val_167 2 +274 val_274 1 +274 val_274 2 +219 val_219 1 +219 val_219 2 +239 val_239 1 +239 val_239 2 +485 val_485 1 +485 val_485 2 +116 val_116 1 +116 val_116 2 +223 val_223 1 +223 val_223 2 +256 val_256 1 +256 val_256 2 +263 val_263 1 +263 val_263 2 +70 val_70 1 +70 val_70 2 +487 val_487 1 +487 val_487 2 +480 val_480 1 +480 val_480 2 +401 val_401 1 +401 val_401 2 +288 val_288 1 +288 val_288 2 +191 val_191 1 +191 val_191 2 +5 val_5 1 +5 val_5 2 +244 val_244 1 +244 val_244 2 +438 val_438 1 +438 val_438 2 +128 val_128 1 +128 val_128 2 +467 val_467 1 +467 val_467 2 +432 val_432 1 +432 val_432 2 +202 val_202 1 +202 val_202 2 +316 val_316 1 +316 val_316 2 +229 val_229 1 +229 val_229 2 +469 val_469 1 +469 val_469 2 +463 val_463 1 +463 val_463 2 +280 val_280 1 +280 val_280 2 +2 val_2 1 +2 val_2 2 +35 val_35 1 +35 val_35 2 +283 val_283 1 +283 val_283 2 +331 val_331 1 +331 val_331 2 +235 val_235 1 +235 val_235 2 +80 val_80 1 +80 val_80 2 +44 val_44 1 +44 val_44 2 +193 val_193 1 +193 val_193 2 +321 val_321 1 +321 val_321 2 +335 val_335 1 +335 val_335 2 +104 val_104 1 +104 val_104 2 +466 val_466 1 +466 val_466 2 +366 val_366 1 +366 val_366 2 +175 val_175 1 +175 val_175 2 +403 val_403 1 +403 val_403 2 +483 val_483 1 +483 val_483 2 +53 val_53 1 +53 val_53 2 +105 val_105 1 +105 val_105 2 +257 val_257 1 +257 val_257 2 +406 val_406 1 +406 val_406 2 +409 val_409 1 +409 val_409 2 +190 val_190 1 +190 val_190 2 +406 val_406 1 +406 val_406 2 +401 val_401 1 +401 val_401 2 +114 val_114 1 +114 val_114 2 +258 val_258 1 +258 val_258 2 +90 val_90 1 +90 val_90 2 +203 val_203 1 +203 val_203 2 +262 val_262 1 +262 val_262 2 +348 val_348 1 +348 val_348 2 +424 val_424 1 +424 val_424 2 +12 val_12 1 +12 val_12 2 +396 val_396 1 +396 val_396 2 +201 val_201 1 +201 val_201 2 +217 val_217 1 +217 val_217 2 +164 val_164 1 +164 val_164 2 +431 val_431 1 +431 val_431 2 +454 val_454 1 +454 val_454 2 +478 val_478 1 +478 val_478 2 +298 val_298 1 +298 val_298 2 +125 val_125 1 +125 val_125 2 +431 val_431 1 +431 val_431 2 +164 val_164 1 +164 val_164 2 +424 val_424 1 +424 val_424 2 +187 val_187 1 +187 val_187 2 +382 val_382 1 +382 val_382 2 +5 val_5 1 +5 val_5 2 +70 val_70 1 +70 val_70 2 +397 val_397 1 +397 val_397 2 +480 val_480 1 +480 val_480 2 +291 val_291 1 +291 val_291 2 +24 val_24 1 +24 val_24 2 +351 val_351 1 +351 val_351 2 +255 val_255 1 +255 val_255 2 +104 val_104 1 +104 val_104 2 +70 val_70 1 +70 val_70 2 +163 val_163 1 +163 val_163 2 +438 val_438 1 +438 val_438 2 +119 val_119 1 +119 val_119 2 +414 val_414 1 +414 val_414 2 +200 val_200 1 +200 val_200 2 +491 val_491 1 +491 val_491 2 +237 val_237 1 +237 val_237 2 +439 val_439 1 +439 val_439 2 +360 val_360 1 +360 val_360 2 +248 val_248 1 +248 val_248 2 +479 val_479 1 +479 val_479 2 +305 val_305 1 +305 val_305 2 +417 val_417 1 +417 val_417 2 +199 val_199 1 +199 val_199 2 +444 val_444 1 +444 val_444 2 +120 val_120 1 +120 val_120 2 +429 val_429 1 +429 val_429 2 +169 val_169 1 +169 val_169 2 +443 val_443 1 +443 val_443 2 +323 val_323 1 +323 val_323 2 +325 val_325 1 +325 val_325 2 +277 val_277 1 +277 val_277 2 +230 val_230 1 +230 val_230 2 +478 val_478 1 +478 val_478 2 +178 val_178 1 +178 val_178 2 +468 val_468 1 +468 val_468 2 +310 val_310 1 +310 val_310 2 +317 val_317 1 +317 val_317 2 +333 val_333 1 +333 val_333 2 +493 val_493 1 +493 val_493 2 +460 val_460 1 +460 val_460 2 +207 val_207 1 +207 val_207 2 +249 val_249 1 +249 val_249 2 +265 val_265 1 +265 val_265 2 +480 val_480 1 +480 val_480 2 +83 val_83 1 +83 val_83 2 +136 val_136 1 +136 val_136 2 +353 val_353 1 +353 val_353 2 +172 val_172 1 +172 val_172 2 +214 val_214 1 +214 val_214 2 +462 val_462 1 +462 val_462 2 +233 val_233 1 +233 val_233 2 +406 val_406 1 +406 val_406 2 +133 val_133 1 +133 val_133 2 +175 val_175 1 +175 val_175 2 +189 val_189 1 +189 val_189 2 +454 val_454 1 +454 val_454 2 +375 val_375 1 +375 val_375 2 +401 val_401 1 +401 val_401 2 +421 val_421 1 +421 val_421 2 +407 val_407 1 +407 val_407 2 +384 val_384 1 +384 val_384 2 +256 val_256 1 +256 val_256 2 +26 val_26 1 +26 val_26 2 +134 val_134 1 +134 val_134 2 +67 val_67 1 +67 val_67 2 +384 val_384 1 +384 val_384 2 +379 val_379 1 +379 val_379 2 +18 val_18 1 +18 val_18 2 +462 val_462 1 +462 val_462 2 +492 val_492 1 +492 val_492 2 +100 val_100 1 +100 val_100 2 +298 val_298 1 +298 val_298 2 +9 val_9 1 +9 val_9 2 +341 val_341 1 +341 val_341 2 +498 val_498 1 +498 val_498 2 +146 val_146 1 +146 val_146 2 +458 val_458 1 +458 val_458 2 +362 val_362 1 +362 val_362 2 +186 val_186 1 +186 val_186 2 +285 val_285 1 +285 val_285 2 +348 val_348 1 +348 val_348 2 +167 val_167 1 +167 val_167 2 +18 val_18 1 +18 val_18 2 +273 val_273 1 +273 val_273 2 +183 val_183 1 +183 val_183 2 +281 val_281 1 +281 val_281 2 +344 val_344 1 +344 val_344 2 +97 val_97 1 +97 val_97 2 +469 val_469 1 +469 val_469 2 +315 val_315 1 +315 val_315 2 +84 val_84 1 +84 val_84 2 +28 val_28 1 +28 val_28 2 +37 val_37 1 +37 val_37 2 +448 val_448 1 +448 val_448 2 +152 val_152 1 +152 val_152 2 +348 val_348 1 +348 val_348 2 +307 val_307 1 +307 val_307 2 +194 val_194 1 +194 val_194 2 +414 val_414 1 +414 val_414 2 +477 val_477 1 +477 val_477 2 +222 val_222 1 +222 val_222 2 +126 val_126 1 +126 val_126 2 +90 val_90 1 +90 val_90 2 +169 val_169 1 +169 val_169 2 +403 val_403 1 +403 val_403 2 +400 val_400 1 +400 val_400 2 +200 val_200 1 +200 val_200 2 +97 val_97 1 +97 val_97 2 diff --git a/sql/hive/src/test/resources/golden/lateral view3-0-55b6de1dbad92682804e98524c0d6c12 b/sql/hive/src/test/resources/golden/lateral view3-0-55b6de1dbad92682804e98524c0d6c12 new file mode 100644 index 0000000000000..8216956a5c636 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral view3-0-55b6de1dbad92682804e98524c0d6c12 @@ -0,0 +1,1000 @@ +238 241 +238 242 +86 89 +86 90 +311 314 +311 315 +27 30 +27 31 +165 168 +165 169 +409 412 +409 413 +255 258 +255 259 +278 281 +278 282 +98 101 +98 102 +484 487 +484 488 +265 268 +265 269 +193 196 +193 197 +401 404 +401 405 +150 153 +150 154 +273 276 +273 277 +224 227 +224 228 +369 372 +369 373 +66 69 +66 70 +128 131 +128 132 +213 216 +213 217 +146 149 +146 150 +406 409 +406 410 +429 432 +429 433 +374 377 +374 378 +152 155 +152 156 +469 472 +469 473 +145 148 +145 149 +495 498 +495 499 +37 40 +37 41 +327 330 +327 331 +281 284 +281 285 +277 280 +277 281 +209 212 +209 213 +15 18 +15 19 +82 85 +82 86 +403 406 +403 407 +166 169 +166 170 +417 420 +417 421 +430 433 +430 434 +252 255 +252 256 +292 295 +292 296 +219 222 +219 223 +287 290 +287 291 +153 156 +153 157 +193 196 +193 197 +338 341 +338 342 +446 449 +446 450 +459 462 +459 463 +394 397 +394 398 +237 240 +237 241 +482 485 +482 486 +174 177 +174 178 +413 416 +413 417 +494 497 +494 498 +207 210 +207 211 +199 202 +199 203 +466 469 +466 470 +208 211 +208 212 +174 177 +174 178 +399 402 +399 403 +396 399 +396 400 +247 250 +247 251 +417 420 +417 421 +489 492 +489 493 +162 165 +162 166 +377 380 +377 381 +397 400 +397 401 +309 312 +309 313 +365 368 +365 369 +266 269 +266 270 +439 442 +439 443 +342 345 +342 346 +367 370 +367 371 +325 328 +325 329 +167 170 +167 171 +195 198 +195 199 +475 478 +475 479 +17 20 +17 21 +113 116 +113 117 +155 158 +155 159 +203 206 +203 207 +339 342 +339 343 +0 3 +0 4 +455 458 +455 459 +128 131 +128 132 +311 314 +311 315 +316 319 +316 320 +57 60 +57 61 +302 305 +302 306 +205 208 +205 209 +149 152 +149 153 +438 441 +438 442 +345 348 +345 349 +129 132 +129 133 +170 173 +170 174 +20 23 +20 24 +489 492 +489 493 +157 160 +157 161 +378 381 +378 382 +221 224 +221 225 +92 95 +92 96 +111 114 +111 115 +47 50 +47 51 +72 75 +72 76 +4 7 +4 8 +280 283 +280 284 +35 38 +35 39 +427 430 +427 431 +277 280 +277 281 +208 211 +208 212 +356 359 +356 360 +399 402 +399 403 +169 172 +169 173 +382 385 +382 386 +498 501 +498 502 +125 128 +125 129 +386 389 +386 390 +437 440 +437 441 +469 472 +469 473 +192 195 +192 196 +286 289 +286 290 +187 190 +187 191 +176 179 +176 180 +54 57 +54 58 +459 462 +459 463 +51 54 +51 55 +138 141 +138 142 +103 106 +103 107 +239 242 +239 243 +213 216 +213 217 +216 219 +216 220 +430 433 +430 434 +278 281 +278 282 +176 179 +176 180 +289 292 +289 293 +221 224 +221 225 +65 68 +65 69 +318 321 +318 322 +332 335 +332 336 +311 314 +311 315 +275 278 +275 279 +137 140 +137 141 +241 244 +241 245 +83 86 +83 87 +333 336 +333 337 +180 183 +180 184 +284 287 +284 288 +12 15 +12 16 +230 233 +230 234 +181 184 +181 185 +67 70 +67 71 +260 263 +260 264 +404 407 +404 408 +384 387 +384 388 +489 492 +489 493 +353 356 +353 357 +373 376 +373 377 +272 275 +272 276 +138 141 +138 142 +217 220 +217 221 +84 87 +84 88 +348 351 +348 352 +466 469 +466 470 +58 61 +58 62 +8 11 +8 12 +411 414 +411 415 +230 233 +230 234 +208 211 +208 212 +348 351 +348 352 +24 27 +24 28 +463 466 +463 467 +431 434 +431 435 +179 182 +179 183 +172 175 +172 176 +42 45 +42 46 +129 132 +129 133 +158 161 +158 162 +119 122 +119 123 +496 499 +496 500 +0 3 +0 4 +322 325 +322 326 +197 200 +197 201 +468 471 +468 472 +393 396 +393 397 +454 457 +454 458 +100 103 +100 104 +298 301 +298 302 +199 202 +199 203 +191 194 +191 195 +418 421 +418 422 +96 99 +96 100 +26 29 +26 30 +165 168 +165 169 +327 330 +327 331 +230 233 +230 234 +205 208 +205 209 +120 123 +120 124 +131 134 +131 135 +51 54 +51 55 +404 407 +404 408 +43 46 +43 47 +436 439 +436 440 +156 159 +156 160 +469 472 +469 473 +468 471 +468 472 +308 311 +308 312 +95 98 +95 99 +196 199 +196 200 +288 291 +288 292 +481 484 +481 485 +457 460 +457 461 +98 101 +98 102 +282 285 +282 286 +197 200 +197 201 +187 190 +187 191 +318 321 +318 322 +318 321 +318 322 +409 412 +409 413 +470 473 +470 474 +137 140 +137 141 +369 372 +369 373 +316 319 +316 320 +169 172 +169 173 +413 416 +413 417 +85 88 +85 89 +77 80 +77 81 +0 3 +0 4 +490 493 +490 494 +87 90 +87 91 +364 367 +364 368 +179 182 +179 183 +118 121 +118 122 +134 137 +134 138 +395 398 +395 399 +282 285 +282 286 +138 141 +138 142 +238 241 +238 242 +419 422 +419 423 +15 18 +15 19 +118 121 +118 122 +72 75 +72 76 +90 93 +90 94 +307 310 +307 311 +19 22 +19 23 +435 438 +435 439 +10 13 +10 14 +277 280 +277 281 +273 276 +273 277 +306 309 +306 310 +224 227 +224 228 +309 312 +309 313 +389 392 +389 393 +327 330 +327 331 +242 245 +242 246 +369 372 +369 373 +392 395 +392 396 +272 275 +272 276 +331 334 +331 335 +401 404 +401 405 +242 245 +242 246 +452 455 +452 456 +177 180 +177 181 +226 229 +226 230 +5 8 +5 9 +497 500 +497 501 +402 405 +402 406 +396 399 +396 400 +317 320 +317 321 +395 398 +395 399 +58 61 +58 62 +35 38 +35 39 +336 339 +336 340 +95 98 +95 99 +11 14 +11 15 +168 171 +168 172 +34 37 +34 38 +229 232 +229 233 +233 236 +233 237 +143 146 +143 147 +472 475 +472 476 +322 325 +322 326 +498 501 +498 502 +160 163 +160 164 +195 198 +195 199 +42 45 +42 46 +321 324 +321 325 +430 433 +430 434 +119 122 +119 123 +489 492 +489 493 +458 461 +458 462 +78 81 +78 82 +76 79 +76 80 +41 44 +41 45 +223 226 +223 227 +492 495 +492 496 +149 152 +149 153 +449 452 +449 453 +218 221 +218 222 +228 231 +228 232 +138 141 +138 142 +453 456 +453 457 +30 33 +30 34 +209 212 +209 213 +64 67 +64 68 +468 471 +468 472 +76 79 +76 80 +74 77 +74 78 +342 345 +342 346 +69 72 +69 73 +230 233 +230 234 +33 36 +33 37 +368 371 +368 372 +103 106 +103 107 +296 299 +296 300 +113 116 +113 117 +216 219 +216 220 +367 370 +367 371 +344 347 +344 348 +167 170 +167 171 +274 277 +274 278 +219 222 +219 223 +239 242 +239 243 +485 488 +485 489 +116 119 +116 120 +223 226 +223 227 +256 259 +256 260 +263 266 +263 267 +70 73 +70 74 +487 490 +487 491 +480 483 +480 484 +401 404 +401 405 +288 291 +288 292 +191 194 +191 195 +5 8 +5 9 +244 247 +244 248 +438 441 +438 442 +128 131 +128 132 +467 470 +467 471 +432 435 +432 436 +202 205 +202 206 +316 319 +316 320 +229 232 +229 233 +469 472 +469 473 +463 466 +463 467 +280 283 +280 284 +2 5 +2 6 +35 38 +35 39 +283 286 +283 287 +331 334 +331 335 +235 238 +235 239 +80 83 +80 84 +44 47 +44 48 +193 196 +193 197 +321 324 +321 325 +335 338 +335 339 +104 107 +104 108 +466 469 +466 470 +366 369 +366 370 +175 178 +175 179 +403 406 +403 407 +483 486 +483 487 +53 56 +53 57 +105 108 +105 109 +257 260 +257 261 +406 409 +406 410 +409 412 +409 413 +190 193 +190 194 +406 409 +406 410 +401 404 +401 405 +114 117 +114 118 +258 261 +258 262 +90 93 +90 94 +203 206 +203 207 +262 265 +262 266 +348 351 +348 352 +424 427 +424 428 +12 15 +12 16 +396 399 +396 400 +201 204 +201 205 +217 220 +217 221 +164 167 +164 168 +431 434 +431 435 +454 457 +454 458 +478 481 +478 482 +298 301 +298 302 +125 128 +125 129 +431 434 +431 435 +164 167 +164 168 +424 427 +424 428 +187 190 +187 191 +382 385 +382 386 +5 8 +5 9 +70 73 +70 74 +397 400 +397 401 +480 483 +480 484 +291 294 +291 295 +24 27 +24 28 +351 354 +351 355 +255 258 +255 259 +104 107 +104 108 +70 73 +70 74 +163 166 +163 167 +438 441 +438 442 +119 122 +119 123 +414 417 +414 418 +200 203 +200 204 +491 494 +491 495 +237 240 +237 241 +439 442 +439 443 +360 363 +360 364 +248 251 +248 252 +479 482 +479 483 +305 308 +305 309 +417 420 +417 421 +199 202 +199 203 +444 447 +444 448 +120 123 +120 124 +429 432 +429 433 +169 172 +169 173 +443 446 +443 447 +323 326 +323 327 +325 328 +325 329 +277 280 +277 281 +230 233 +230 234 +478 481 +478 482 +178 181 +178 182 +468 471 +468 472 +310 313 +310 314 +317 320 +317 321 +333 336 +333 337 +493 496 +493 497 +460 463 +460 464 +207 210 +207 211 +249 252 +249 253 +265 268 +265 269 +480 483 +480 484 +83 86 +83 87 +136 139 +136 140 +353 356 +353 357 +172 175 +172 176 +214 217 +214 218 +462 465 +462 466 +233 236 +233 237 +406 409 +406 410 +133 136 +133 137 +175 178 +175 179 +189 192 +189 193 +454 457 +454 458 +375 378 +375 379 +401 404 +401 405 +421 424 +421 425 +407 410 +407 411 +384 387 +384 388 +256 259 +256 260 +26 29 +26 30 +134 137 +134 138 +67 70 +67 71 +384 387 +384 388 +379 382 +379 383 +18 21 +18 22 +462 465 +462 466 +492 495 +492 496 +100 103 +100 104 +298 301 +298 302 +9 12 +9 13 +341 344 +341 345 +498 501 +498 502 +146 149 +146 150 +458 461 +458 462 +362 365 +362 366 +186 189 +186 190 +285 288 +285 289 +348 351 +348 352 +167 170 +167 171 +18 21 +18 22 +273 276 +273 277 +183 186 +183 187 +281 284 +281 285 +344 347 +344 348 +97 100 +97 101 +469 472 +469 473 +315 318 +315 319 +84 87 +84 88 +28 31 +28 32 +37 40 +37 41 +448 451 +448 452 +152 155 +152 156 +348 351 +348 352 +307 310 +307 311 +194 197 +194 198 +414 417 +414 418 +477 480 +477 481 +222 225 +222 226 +126 129 +126 130 +90 93 +90 94 +169 172 +169 173 +403 406 +403 407 +400 403 +400 404 +200 203 +200 204 +97 100 +97 101 diff --git a/sql/hive/src/test/resources/golden/lateral view4-0-3ed6bfa23add415990b443fc232b4ba0 b/sql/hive/src/test/resources/golden/lateral view4-0-3ed6bfa23add415990b443fc232b4ba0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral view4-1-6ced0ab5d543a2c5c6c7f7e27ed04814 b/sql/hive/src/test/resources/golden/lateral view4-1-6ced0ab5d543a2c5c6c7f7e27ed04814 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral view4-2-ed9961425eee97a5f35c5b6e69dc368e b/sql/hive/src/test/resources/golden/lateral view4-2-ed9961425eee97a5f35c5b6e69dc368e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral view5-0-f797cf9d04a98cfe477d14703aeb294b b/sql/hive/src/test/resources/golden/lateral view5-0-f797cf9d04a98cfe477d14703aeb294b new file mode 100644 index 0000000000000..4895558ca6142 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral view5-0-f797cf9d04a98cfe477d14703aeb294b @@ -0,0 +1,1000 @@ +241 +242 +89 +90 +314 +315 +30 +31 +168 +169 +412 +413 +258 +259 +281 +282 +101 +102 +487 +488 +268 +269 +196 +197 +404 +405 +153 +154 +276 +277 +227 +228 +372 +373 +69 +70 +131 +132 +216 +217 +149 +150 +409 +410 +432 +433 +377 +378 +155 +156 +472 +473 +148 +149 +498 +499 +40 +41 +330 +331 +284 +285 +280 +281 +212 +213 +18 +19 +85 +86 +406 +407 +169 +170 +420 +421 +433 +434 +255 +256 +295 +296 +222 +223 +290 +291 +156 +157 +196 +197 +341 +342 +449 +450 +462 +463 +397 +398 +240 +241 +485 +486 +177 +178 +416 +417 +497 +498 +210 +211 +202 +203 +469 +470 +211 +212 +177 +178 +402 +403 +399 +400 +250 +251 +420 +421 +492 +493 +165 +166 +380 +381 +400 +401 +312 +313 +368 +369 +269 +270 +442 +443 +345 +346 +370 +371 +328 +329 +170 +171 +198 +199 +478 +479 +20 +21 +116 +117 +158 +159 +206 +207 +342 +343 +3 +4 +458 +459 +131 +132 +314 +315 +319 +320 +60 +61 +305 +306 +208 +209 +152 +153 +441 +442 +348 +349 +132 +133 +173 +174 +23 +24 +492 +493 +160 +161 +381 +382 +224 +225 +95 +96 +114 +115 +50 +51 +75 +76 +7 +8 +283 +284 +38 +39 +430 +431 +280 +281 +211 +212 +359 +360 +402 +403 +172 +173 +385 +386 +501 +502 +128 +129 +389 +390 +440 +441 +472 +473 +195 +196 +289 +290 +190 +191 +179 +180 +57 +58 +462 +463 +54 +55 +141 +142 +106 +107 +242 +243 +216 +217 +219 +220 +433 +434 +281 +282 +179 +180 +292 +293 +224 +225 +68 +69 +321 +322 +335 +336 +314 +315 +278 +279 +140 +141 +244 +245 +86 +87 +336 +337 +183 +184 +287 +288 +15 +16 +233 +234 +184 +185 +70 +71 +263 +264 +407 +408 +387 +388 +492 +493 +356 +357 +376 +377 +275 +276 +141 +142 +220 +221 +87 +88 +351 +352 +469 +470 +61 +62 +11 +12 +414 +415 +233 +234 +211 +212 +351 +352 +27 +28 +466 +467 +434 +435 +182 +183 +175 +176 +45 +46 +132 +133 +161 +162 +122 +123 +499 +500 +3 +4 +325 +326 +200 +201 +471 +472 +396 +397 +457 +458 +103 +104 +301 +302 +202 +203 +194 +195 +421 +422 +99 +100 +29 +30 +168 +169 +330 +331 +233 +234 +208 +209 +123 +124 +134 +135 +54 +55 +407 +408 +46 +47 +439 +440 +159 +160 +472 +473 +471 +472 +311 +312 +98 +99 +199 +200 +291 +292 +484 +485 +460 +461 +101 +102 +285 +286 +200 +201 +190 +191 +321 +322 +321 +322 +412 +413 +473 +474 +140 +141 +372 +373 +319 +320 +172 +173 +416 +417 +88 +89 +80 +81 +3 +4 +493 +494 +90 +91 +367 +368 +182 +183 +121 +122 +137 +138 +398 +399 +285 +286 +141 +142 +241 +242 +422 +423 +18 +19 +121 +122 +75 +76 +93 +94 +310 +311 +22 +23 +438 +439 +13 +14 +280 +281 +276 +277 +309 +310 +227 +228 +312 +313 +392 +393 +330 +331 +245 +246 +372 +373 +395 +396 +275 +276 +334 +335 +404 +405 +245 +246 +455 +456 +180 +181 +229 +230 +8 +9 +500 +501 +405 +406 +399 +400 +320 +321 +398 +399 +61 +62 +38 +39 +339 +340 +98 +99 +14 +15 +171 +172 +37 +38 +232 +233 +236 +237 +146 +147 +475 +476 +325 +326 +501 +502 +163 +164 +198 +199 +45 +46 +324 +325 +433 +434 +122 +123 +492 +493 +461 +462 +81 +82 +79 +80 +44 +45 +226 +227 +495 +496 +152 +153 +452 +453 +221 +222 +231 +232 +141 +142 +456 +457 +33 +34 +212 +213 +67 +68 +471 +472 +79 +80 +77 +78 +345 +346 +72 +73 +233 +234 +36 +37 +371 +372 +106 +107 +299 +300 +116 +117 +219 +220 +370 +371 +347 +348 +170 +171 +277 +278 +222 +223 +242 +243 +488 +489 +119 +120 +226 +227 +259 +260 +266 +267 +73 +74 +490 +491 +483 +484 +404 +405 +291 +292 +194 +195 +8 +9 +247 +248 +441 +442 +131 +132 +470 +471 +435 +436 +205 +206 +319 +320 +232 +233 +472 +473 +466 +467 +283 +284 +5 +6 +38 +39 +286 +287 +334 +335 +238 +239 +83 +84 +47 +48 +196 +197 +324 +325 +338 +339 +107 +108 +469 +470 +369 +370 +178 +179 +406 +407 +486 +487 +56 +57 +108 +109 +260 +261 +409 +410 +412 +413 +193 +194 +409 +410 +404 +405 +117 +118 +261 +262 +93 +94 +206 +207 +265 +266 +351 +352 +427 +428 +15 +16 +399 +400 +204 +205 +220 +221 +167 +168 +434 +435 +457 +458 +481 +482 +301 +302 +128 +129 +434 +435 +167 +168 +427 +428 +190 +191 +385 +386 +8 +9 +73 +74 +400 +401 +483 +484 +294 +295 +27 +28 +354 +355 +258 +259 +107 +108 +73 +74 +166 +167 +441 +442 +122 +123 +417 +418 +203 +204 +494 +495 +240 +241 +442 +443 +363 +364 +251 +252 +482 +483 +308 +309 +420 +421 +202 +203 +447 +448 +123 +124 +432 +433 +172 +173 +446 +447 +326 +327 +328 +329 +280 +281 +233 +234 +481 +482 +181 +182 +471 +472 +313 +314 +320 +321 +336 +337 +496 +497 +463 +464 +210 +211 +252 +253 +268 +269 +483 +484 +86 +87 +139 +140 +356 +357 +175 +176 +217 +218 +465 +466 +236 +237 +409 +410 +136 +137 +178 +179 +192 +193 +457 +458 +378 +379 +404 +405 +424 +425 +410 +411 +387 +388 +259 +260 +29 +30 +137 +138 +70 +71 +387 +388 +382 +383 +21 +22 +465 +466 +495 +496 +103 +104 +301 +302 +12 +13 +344 +345 +501 +502 +149 +150 +461 +462 +365 +366 +189 +190 +288 +289 +351 +352 +170 +171 +21 +22 +276 +277 +186 +187 +284 +285 +347 +348 +100 +101 +472 +473 +318 +319 +87 +88 +31 +32 +40 +41 +451 +452 +155 +156 +351 +352 +310 +311 +197 +198 +417 +418 +480 +481 +225 +226 +129 +130 +93 +94 +172 +173 +406 +407 +403 +404 +203 +204 +100 +101 diff --git a/sql/hive/src/test/resources/golden/lateral view6-0-f92fe6429a6630d4991f8ad76ff1d79a b/sql/hive/src/test/resources/golden/lateral view6-0-f92fe6429a6630d4991f8ad76ff1d79a new file mode 100644 index 0000000000000..269df08795dc9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral view6-0-f92fe6429a6630d4991f8ad76ff1d79a @@ -0,0 +1,500 @@ +238 val_238 241 242 +86 val_86 89 90 +311 val_311 314 315 +27 val_27 30 31 +165 val_165 168 169 +409 val_409 412 413 +255 val_255 258 259 +278 val_278 281 282 +98 val_98 101 102 +484 val_484 487 488 +265 val_265 268 269 +193 val_193 196 197 +401 val_401 404 405 +150 val_150 153 154 +273 val_273 276 277 +224 val_224 227 228 +369 val_369 372 373 +66 val_66 69 70 +128 val_128 131 132 +213 val_213 216 217 +146 val_146 149 150 +406 val_406 409 410 +429 val_429 432 433 +374 val_374 377 378 +152 val_152 155 156 +469 val_469 472 473 +145 val_145 148 149 +495 val_495 498 499 +37 val_37 40 41 +327 val_327 330 331 +281 val_281 284 285 +277 val_277 280 281 +209 val_209 212 213 +15 val_15 18 19 +82 val_82 85 86 +403 val_403 406 407 +166 val_166 169 170 +417 val_417 420 421 +430 val_430 433 434 +252 val_252 255 256 +292 val_292 295 296 +219 val_219 222 223 +287 val_287 290 291 +153 val_153 156 157 +193 val_193 196 197 +338 val_338 341 342 +446 val_446 449 450 +459 val_459 462 463 +394 val_394 397 398 +237 val_237 240 241 +482 val_482 485 486 +174 val_174 177 178 +413 val_413 416 417 +494 val_494 497 498 +207 val_207 210 211 +199 val_199 202 203 +466 val_466 469 470 +208 val_208 211 212 +174 val_174 177 178 +399 val_399 402 403 +396 val_396 399 400 +247 val_247 250 251 +417 val_417 420 421 +489 val_489 492 493 +162 val_162 165 166 +377 val_377 380 381 +397 val_397 400 401 +309 val_309 312 313 +365 val_365 368 369 +266 val_266 269 270 +439 val_439 442 443 +342 val_342 345 346 +367 val_367 370 371 +325 val_325 328 329 +167 val_167 170 171 +195 val_195 198 199 +475 val_475 478 479 +17 val_17 20 21 +113 val_113 116 117 +155 val_155 158 159 +203 val_203 206 207 +339 val_339 342 343 +0 val_0 3 4 +455 val_455 458 459 +128 val_128 131 132 +311 val_311 314 315 +316 val_316 319 320 +57 val_57 60 61 +302 val_302 305 306 +205 val_205 208 209 +149 val_149 152 153 +438 val_438 441 442 +345 val_345 348 349 +129 val_129 132 133 +170 val_170 173 174 +20 val_20 23 24 +489 val_489 492 493 +157 val_157 160 161 +378 val_378 381 382 +221 val_221 224 225 +92 val_92 95 96 +111 val_111 114 115 +47 val_47 50 51 +72 val_72 75 76 +4 val_4 7 8 +280 val_280 283 284 +35 val_35 38 39 +427 val_427 430 431 +277 val_277 280 281 +208 val_208 211 212 +356 val_356 359 360 +399 val_399 402 403 +169 val_169 172 173 +382 val_382 385 386 +498 val_498 501 502 +125 val_125 128 129 +386 val_386 389 390 +437 val_437 440 441 +469 val_469 472 473 +192 val_192 195 196 +286 val_286 289 290 +187 val_187 190 191 +176 val_176 179 180 +54 val_54 57 58 +459 val_459 462 463 +51 val_51 54 55 +138 val_138 141 142 +103 val_103 106 107 +239 val_239 242 243 +213 val_213 216 217 +216 val_216 219 220 +430 val_430 433 434 +278 val_278 281 282 +176 val_176 179 180 +289 val_289 292 293 +221 val_221 224 225 +65 val_65 68 69 +318 val_318 321 322 +332 val_332 335 336 +311 val_311 314 315 +275 val_275 278 279 +137 val_137 140 141 +241 val_241 244 245 +83 val_83 86 87 +333 val_333 336 337 +180 val_180 183 184 +284 val_284 287 288 +12 val_12 15 16 +230 val_230 233 234 +181 val_181 184 185 +67 val_67 70 71 +260 val_260 263 264 +404 val_404 407 408 +384 val_384 387 388 +489 val_489 492 493 +353 val_353 356 357 +373 val_373 376 377 +272 val_272 275 276 +138 val_138 141 142 +217 val_217 220 221 +84 val_84 87 88 +348 val_348 351 352 +466 val_466 469 470 +58 val_58 61 62 +8 val_8 11 12 +411 val_411 414 415 +230 val_230 233 234 +208 val_208 211 212 +348 val_348 351 352 +24 val_24 27 28 +463 val_463 466 467 +431 val_431 434 435 +179 val_179 182 183 +172 val_172 175 176 +42 val_42 45 46 +129 val_129 132 133 +158 val_158 161 162 +119 val_119 122 123 +496 val_496 499 500 +0 val_0 3 4 +322 val_322 325 326 +197 val_197 200 201 +468 val_468 471 472 +393 val_393 396 397 +454 val_454 457 458 +100 val_100 103 104 +298 val_298 301 302 +199 val_199 202 203 +191 val_191 194 195 +418 val_418 421 422 +96 val_96 99 100 +26 val_26 29 30 +165 val_165 168 169 +327 val_327 330 331 +230 val_230 233 234 +205 val_205 208 209 +120 val_120 123 124 +131 val_131 134 135 +51 val_51 54 55 +404 val_404 407 408 +43 val_43 46 47 +436 val_436 439 440 +156 val_156 159 160 +469 val_469 472 473 +468 val_468 471 472 +308 val_308 311 312 +95 val_95 98 99 +196 val_196 199 200 +288 val_288 291 292 +481 val_481 484 485 +457 val_457 460 461 +98 val_98 101 102 +282 val_282 285 286 +197 val_197 200 201 +187 val_187 190 191 +318 val_318 321 322 +318 val_318 321 322 +409 val_409 412 413 +470 val_470 473 474 +137 val_137 140 141 +369 val_369 372 373 +316 val_316 319 320 +169 val_169 172 173 +413 val_413 416 417 +85 val_85 88 89 +77 val_77 80 81 +0 val_0 3 4 +490 val_490 493 494 +87 val_87 90 91 +364 val_364 367 368 +179 val_179 182 183 +118 val_118 121 122 +134 val_134 137 138 +395 val_395 398 399 +282 val_282 285 286 +138 val_138 141 142 +238 val_238 241 242 +419 val_419 422 423 +15 val_15 18 19 +118 val_118 121 122 +72 val_72 75 76 +90 val_90 93 94 +307 val_307 310 311 +19 val_19 22 23 +435 val_435 438 439 +10 val_10 13 14 +277 val_277 280 281 +273 val_273 276 277 +306 val_306 309 310 +224 val_224 227 228 +309 val_309 312 313 +389 val_389 392 393 +327 val_327 330 331 +242 val_242 245 246 +369 val_369 372 373 +392 val_392 395 396 +272 val_272 275 276 +331 val_331 334 335 +401 val_401 404 405 +242 val_242 245 246 +452 val_452 455 456 +177 val_177 180 181 +226 val_226 229 230 +5 val_5 8 9 +497 val_497 500 501 +402 val_402 405 406 +396 val_396 399 400 +317 val_317 320 321 +395 val_395 398 399 +58 val_58 61 62 +35 val_35 38 39 +336 val_336 339 340 +95 val_95 98 99 +11 val_11 14 15 +168 val_168 171 172 +34 val_34 37 38 +229 val_229 232 233 +233 val_233 236 237 +143 val_143 146 147 +472 val_472 475 476 +322 val_322 325 326 +498 val_498 501 502 +160 val_160 163 164 +195 val_195 198 199 +42 val_42 45 46 +321 val_321 324 325 +430 val_430 433 434 +119 val_119 122 123 +489 val_489 492 493 +458 val_458 461 462 +78 val_78 81 82 +76 val_76 79 80 +41 val_41 44 45 +223 val_223 226 227 +492 val_492 495 496 +149 val_149 152 153 +449 val_449 452 453 +218 val_218 221 222 +228 val_228 231 232 +138 val_138 141 142 +453 val_453 456 457 +30 val_30 33 34 +209 val_209 212 213 +64 val_64 67 68 +468 val_468 471 472 +76 val_76 79 80 +74 val_74 77 78 +342 val_342 345 346 +69 val_69 72 73 +230 val_230 233 234 +33 val_33 36 37 +368 val_368 371 372 +103 val_103 106 107 +296 val_296 299 300 +113 val_113 116 117 +216 val_216 219 220 +367 val_367 370 371 +344 val_344 347 348 +167 val_167 170 171 +274 val_274 277 278 +219 val_219 222 223 +239 val_239 242 243 +485 val_485 488 489 +116 val_116 119 120 +223 val_223 226 227 +256 val_256 259 260 +263 val_263 266 267 +70 val_70 73 74 +487 val_487 490 491 +480 val_480 483 484 +401 val_401 404 405 +288 val_288 291 292 +191 val_191 194 195 +5 val_5 8 9 +244 val_244 247 248 +438 val_438 441 442 +128 val_128 131 132 +467 val_467 470 471 +432 val_432 435 436 +202 val_202 205 206 +316 val_316 319 320 +229 val_229 232 233 +469 val_469 472 473 +463 val_463 466 467 +280 val_280 283 284 +2 val_2 5 6 +35 val_35 38 39 +283 val_283 286 287 +331 val_331 334 335 +235 val_235 238 239 +80 val_80 83 84 +44 val_44 47 48 +193 val_193 196 197 +321 val_321 324 325 +335 val_335 338 339 +104 val_104 107 108 +466 val_466 469 470 +366 val_366 369 370 +175 val_175 178 179 +403 val_403 406 407 +483 val_483 486 487 +53 val_53 56 57 +105 val_105 108 109 +257 val_257 260 261 +406 val_406 409 410 +409 val_409 412 413 +190 val_190 193 194 +406 val_406 409 410 +401 val_401 404 405 +114 val_114 117 118 +258 val_258 261 262 +90 val_90 93 94 +203 val_203 206 207 +262 val_262 265 266 +348 val_348 351 352 +424 val_424 427 428 +12 val_12 15 16 +396 val_396 399 400 +201 val_201 204 205 +217 val_217 220 221 +164 val_164 167 168 +431 val_431 434 435 +454 val_454 457 458 +478 val_478 481 482 +298 val_298 301 302 +125 val_125 128 129 +431 val_431 434 435 +164 val_164 167 168 +424 val_424 427 428 +187 val_187 190 191 +382 val_382 385 386 +5 val_5 8 9 +70 val_70 73 74 +397 val_397 400 401 +480 val_480 483 484 +291 val_291 294 295 +24 val_24 27 28 +351 val_351 354 355 +255 val_255 258 259 +104 val_104 107 108 +70 val_70 73 74 +163 val_163 166 167 +438 val_438 441 442 +119 val_119 122 123 +414 val_414 417 418 +200 val_200 203 204 +491 val_491 494 495 +237 val_237 240 241 +439 val_439 442 443 +360 val_360 363 364 +248 val_248 251 252 +479 val_479 482 483 +305 val_305 308 309 +417 val_417 420 421 +199 val_199 202 203 +444 val_444 447 448 +120 val_120 123 124 +429 val_429 432 433 +169 val_169 172 173 +443 val_443 446 447 +323 val_323 326 327 +325 val_325 328 329 +277 val_277 280 281 +230 val_230 233 234 +478 val_478 481 482 +178 val_178 181 182 +468 val_468 471 472 +310 val_310 313 314 +317 val_317 320 321 +333 val_333 336 337 +493 val_493 496 497 +460 val_460 463 464 +207 val_207 210 211 +249 val_249 252 253 +265 val_265 268 269 +480 val_480 483 484 +83 val_83 86 87 +136 val_136 139 140 +353 val_353 356 357 +172 val_172 175 176 +214 val_214 217 218 +462 val_462 465 466 +233 val_233 236 237 +406 val_406 409 410 +133 val_133 136 137 +175 val_175 178 179 +189 val_189 192 193 +454 val_454 457 458 +375 val_375 378 379 +401 val_401 404 405 +421 val_421 424 425 +407 val_407 410 411 +384 val_384 387 388 +256 val_256 259 260 +26 val_26 29 30 +134 val_134 137 138 +67 val_67 70 71 +384 val_384 387 388 +379 val_379 382 383 +18 val_18 21 22 +462 val_462 465 466 +492 val_492 495 496 +100 val_100 103 104 +298 val_298 301 302 +9 val_9 12 13 +341 val_341 344 345 +498 val_498 501 502 +146 val_146 149 150 +458 val_458 461 462 +362 val_362 365 366 +186 val_186 189 190 +285 val_285 288 289 +348 val_348 351 352 +167 val_167 170 171 +18 val_18 21 22 +273 val_273 276 277 +183 val_183 186 187 +281 val_281 284 285 +344 val_344 347 348 +97 val_97 100 101 +469 val_469 472 473 +315 val_315 318 319 +84 val_84 87 88 +28 val_28 31 32 +37 val_37 40 41 +448 val_448 451 452 +152 val_152 155 156 +348 val_348 351 352 +307 val_307 310 311 +194 val_194 197 198 +414 val_414 417 418 +477 val_477 480 481 +222 val_222 225 226 +126 val_126 129 130 +90 val_90 93 94 +169 val_169 172 173 +403 val_403 406 407 +400 val_400 403 404 +200 val_200 203 204 +97 val_97 100 101 diff --git a/sql/hive/src/test/resources/golden/lateral_view-0-bc2e73d1da334f7bf550244ce6f6e77b b/sql/hive/src/test/resources/golden/lateral_view-0-bc2e73d1da334f7bf550244ce6f6e77b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-1-82287db1270c77c3af7a60d65c4bdc80 b/sql/hive/src/test/resources/golden/lateral_view-1-82287db1270c77c3af7a60d65c4bdc80 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-10-1f2df08433fe12a9ae086e3d9309039e b/sql/hive/src/test/resources/golden/lateral_view-10-1f2df08433fe12a9ae086e3d9309039e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-11-d884acac077c5a02ef048069dd8c16d7 b/sql/hive/src/test/resources/golden/lateral_view-11-d884acac077c5a02ef048069dd8c16d7 new file mode 100644 index 0000000000000..01e79c32a8c99 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-11-d884acac077c5a02ef048069dd8c16d7 @@ -0,0 +1,3 @@ +1 +2 +3 diff --git a/sql/hive/src/test/resources/golden/lateral_view-12-f539cc98118a276d38c61fcc0ad0b09 b/sql/hive/src/test/resources/golden/lateral_view-12-f539cc98118a276d38c61fcc0ad0b09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-13-f1ca785bf643a4a3cd1f2f823da158ba b/sql/hive/src/test/resources/golden/lateral_view-13-f1ca785bf643a4a3cd1f2f823da158ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-14-f29001fbaafbdc4aaa1e0a0c18481aa7 b/sql/hive/src/test/resources/golden/lateral_view-14-f29001fbaafbdc4aaa1e0a0c18481aa7 new file mode 100644 index 0000000000000..fd859feff393b --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-14-f29001fbaafbdc4aaa1e0a0c18481aa7 @@ -0,0 +1,20 @@ +0 ["val_0"] +0 ["val_0"] +0 ["val_0"] +2 ["val_2"] +4 ["val_4"] +5 ["val_5"] +5 ["val_5"] +5 ["val_5"] +8 ["val_8"] +9 ["val_9"] +10 ["val_10"] +11 ["val_11"] +12 ["val_12"] +12 ["val_12"] +15 ["val_15"] +15 ["val_15"] +17 ["val_17"] +18 ["val_18"] +18 ["val_18"] +19 ["val_19"] diff --git a/sql/hive/src/test/resources/golden/lateral_view-15-e1fad51e2f77de35d5781d788d70057e b/sql/hive/src/test/resources/golden/lateral_view-15-e1fad51e2f77de35d5781d788d70057e new file mode 100644 index 0000000000000..512cb498a2f6a --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-15-e1fad51e2f77de35d5781d788d70057e @@ -0,0 +1,20 @@ +val_0 +val_0 +val_0 +val_2 +val_4 +val_5 +val_5 +val_5 +val_8 +val_9 +val_10 +val_11 +val_12 +val_12 +val_15 +val_15 +val_17 +val_18 +val_18 +val_19 diff --git a/sql/hive/src/test/resources/golden/lateral_view-16-5eafb0317b6974eb588075d152719a79 b/sql/hive/src/test/resources/golden/lateral_view-16-5eafb0317b6974eb588075d152719a79 new file mode 100644 index 0000000000000..1f752ac7f4a39 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-16-5eafb0317b6974eb588075d152719a79 @@ -0,0 +1,20 @@ +0 ["val_0"] val_0 +0 ["val_0"] val_0 +0 ["val_0"] val_0 +2 ["val_2"] val_2 +4 ["val_4"] val_4 +5 ["val_5"] val_5 +5 ["val_5"] val_5 +5 ["val_5"] val_5 +8 ["val_8"] val_8 +9 ["val_9"] val_9 +10 ["val_10"] val_10 +11 ["val_11"] val_11 +12 ["val_12"] val_12 +12 ["val_12"] val_12 +15 ["val_15"] val_15 +15 ["val_15"] val_15 +17 ["val_17"] val_17 +18 ["val_18"] val_18 +18 ["val_18"] val_18 +19 ["val_19"] val_19 diff --git a/sql/hive/src/test/resources/golden/lateral_view-17-4c6ff06840694c274bf8a91bade677ab b/sql/hive/src/test/resources/golden/lateral_view-17-4c6ff06840694c274bf8a91bade677ab new file mode 100644 index 0000000000000..fd859feff393b --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-17-4c6ff06840694c274bf8a91bade677ab @@ -0,0 +1,20 @@ +0 ["val_0"] +0 ["val_0"] +0 ["val_0"] +2 ["val_2"] +4 ["val_4"] +5 ["val_5"] +5 ["val_5"] +5 ["val_5"] +8 ["val_8"] +9 ["val_9"] +10 ["val_10"] +11 ["val_11"] +12 ["val_12"] +12 ["val_12"] +15 ["val_15"] +15 ["val_15"] +17 ["val_17"] +18 ["val_18"] +18 ["val_18"] +19 ["val_19"] diff --git a/sql/hive/src/test/resources/golden/lateral_view-18-a98a136672c920c0463bd49b4ec7b65e b/sql/hive/src/test/resources/golden/lateral_view-18-a98a136672c920c0463bd49b4ec7b65e new file mode 100644 index 0000000000000..512cb498a2f6a --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-18-a98a136672c920c0463bd49b4ec7b65e @@ -0,0 +1,20 @@ +val_0 +val_0 +val_0 +val_2 +val_4 +val_5 +val_5 +val_5 +val_8 +val_9 +val_10 +val_11 +val_12 +val_12 +val_15 +val_15 +val_17 +val_18 +val_18 +val_19 diff --git a/sql/hive/src/test/resources/golden/lateral_view-19-9b417d5554cbeb8f536a1613879295f7 b/sql/hive/src/test/resources/golden/lateral_view-19-9b417d5554cbeb8f536a1613879295f7 new file mode 100644 index 0000000000000..f372b042130e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-19-9b417d5554cbeb8f536a1613879295f7 @@ -0,0 +1,20 @@ +0 +0 +0 +2 +4 +5 +5 +5 +8 +9 +10 +11 +12 +12 +15 +15 +17 +18 +18 +19 diff --git a/sql/hive/src/test/resources/golden/lateral_view-2-bfd7354229ac8a934c8f978b43b28565 b/sql/hive/src/test/resources/golden/lateral_view-2-bfd7354229ac8a934c8f978b43b28565 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-20-d75015d8e44499526fec784ec00b905 b/sql/hive/src/test/resources/golden/lateral_view-20-d75015d8e44499526fec784ec00b905 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-21-9eec1a93e07de6acbc36b1156424ca11 b/sql/hive/src/test/resources/golden/lateral_view-21-9eec1a93e07de6acbc36b1156424ca11 new file mode 100644 index 0000000000000..30e4fa100f778 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-21-9eec1a93e07de6acbc36b1156424ca11 @@ -0,0 +1,13 @@ +["val_0"] val_0 +["val_10"] val_10 +["val_11"] val_11 +["val_12"] val_12 +["val_15"] val_15 +["val_17"] val_17 +["val_18"] val_18 +["val_19"] val_19 +["val_2"] val_2 +["val_4"] val_4 +["val_5"] val_5 +["val_8"] val_8 +["val_9"] val_9 diff --git a/sql/hive/src/test/resources/golden/lateral_view-3-16a7be14adbb71fb9e6c7e0f00cfe86e b/sql/hive/src/test/resources/golden/lateral_view-3-16a7be14adbb71fb9e6c7e0f00cfe86e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-4-f5855ce2bc7877c698e7f94504d12d62 b/sql/hive/src/test/resources/golden/lateral_view-4-f5855ce2bc7877c698e7f94504d12d62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-5-857f93a5c8d5ba00d214384117147bae b/sql/hive/src/test/resources/golden/lateral_view-5-857f93a5c8d5ba00d214384117147bae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view-6-e78723941c3b42349f9eb804b4b82d15 b/sql/hive/src/test/resources/golden/lateral_view-6-e78723941c3b42349f9eb804b4b82d15 new file mode 100644 index 0000000000000..d6426b33c4d5d --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-6-e78723941c3b42349f9eb804b4b82d15 @@ -0,0 +1 @@ +0 val_0 1 diff --git a/sql/hive/src/test/resources/golden/lateral_view-7-7c88418f83112c55d08a0727d6248825 b/sql/hive/src/test/resources/golden/lateral_view-7-7c88418f83112c55d08a0727d6248825 new file mode 100644 index 0000000000000..01e79c32a8c99 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-7-7c88418f83112c55d08a0727d6248825 @@ -0,0 +1,3 @@ +1 +2 +3 diff --git a/sql/hive/src/test/resources/golden/lateral_view-8-d2bff21465d3db7bbff8b9913c012452 b/sql/hive/src/test/resources/golden/lateral_view-8-d2bff21465d3db7bbff8b9913c012452 new file mode 100644 index 0000000000000..423bb3e88a24e --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-8-d2bff21465d3db7bbff8b9913c012452 @@ -0,0 +1,9 @@ +1 a +1 b +1 c +2 a +2 b +2 c +3 a +3 b +3 c diff --git a/sql/hive/src/test/resources/golden/lateral_view-9-60290e9a3b75a39c21dd44817d90d4a7 b/sql/hive/src/test/resources/golden/lateral_view-9-60290e9a3b75a39c21dd44817d90d4a7 new file mode 100644 index 0000000000000..01e79c32a8c99 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view-9-60290e9a3b75a39c21dd44817d90d4a7 @@ -0,0 +1,3 @@ +1 +2 +3 diff --git a/sql/hive/src/test/resources/golden/lateral_view_cp-0-6ae48c990343343aad4145203c364f79 b/sql/hive/src/test/resources/golden/lateral_view_cp-0-6ae48c990343343aad4145203c364f79 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_cp-1-72a14433dd2f25dd8c38107235fe1756 b/sql/hive/src/test/resources/golden/lateral_view_cp-1-72a14433dd2f25dd8c38107235fe1756 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_cp-2-647d019098d676b2fdb8a5127b633287 b/sql/hive/src/test/resources/golden/lateral_view_cp-2-647d019098d676b2fdb8a5127b633287 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_cp-3-3622d591963e6a7f021d07c7c35a1cd2 b/sql/hive/src/test/resources/golden/lateral_view_cp-3-3622d591963e6a7f021d07c7c35a1cd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_cp-4-507876b610812506343e9d251645170b b/sql/hive/src/test/resources/golden/lateral_view_cp-4-507876b610812506343e9d251645170b new file mode 100644 index 0000000000000..1f3d8a7a1fc08 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_cp-4-507876b610812506343e9d251645170b @@ -0,0 +1 @@ +1028 diff --git a/sql/hive/src/test/resources/golden/lateral_view_noalias-0-72509f06e1f7c5d5ccc292f775f8eea7 b/sql/hive/src/test/resources/golden/lateral_view_noalias-0-72509f06e1f7c5d5ccc292f775f8eea7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_noalias-1-6d5806dd1d2511911a5de1e205523f42 b/sql/hive/src/test/resources/golden/lateral_view_noalias-1-6d5806dd1d2511911a5de1e205523f42 new file mode 100644 index 0000000000000..0da0d93886e01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_noalias-1-6d5806dd1d2511911a5de1e205523f42 @@ -0,0 +1,2 @@ +key1 100 +key2 200 diff --git a/sql/hive/src/test/resources/golden/lateral_view_noalias-2-155b3cc2f5054725a9c2acca3c38c00a b/sql/hive/src/test/resources/golden/lateral_view_noalias-2-155b3cc2f5054725a9c2acca3c38c00a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_noalias-3-3b7045ace234af8e5e86d8ac23ccee56 b/sql/hive/src/test/resources/golden/lateral_view_noalias-3-3b7045ace234af8e5e86d8ac23ccee56 new file mode 100644 index 0000000000000..0da0d93886e01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_noalias-3-3b7045ace234af8e5e86d8ac23ccee56 @@ -0,0 +1,2 @@ +key1 100 +key2 200 diff --git a/sql/hive/src/test/resources/golden/lateral_view_noalias-4-e1eca4e08216897d090259d4fd1e3fe b/sql/hive/src/test/resources/golden/lateral_view_noalias-4-e1eca4e08216897d090259d4fd1e3fe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_noalias-5-16d227442dd775615c6ecfceedc6c612 b/sql/hive/src/test/resources/golden/lateral_view_noalias-5-16d227442dd775615c6ecfceedc6c612 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_outer-0-b66c363516d1f717765df9b91da3b5b4 b/sql/hive/src/test/resources/golden/lateral_view_outer-0-b66c363516d1f717765df9b91da3b5b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_outer-1-8d4332785ff69bb86607700c133d0baa b/sql/hive/src/test/resources/golden/lateral_view_outer-1-8d4332785ff69bb86607700c133d0baa new file mode 100644 index 0000000000000..a2a7fdd233a2a --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_outer-1-8d4332785ff69bb86607700c133d0baa @@ -0,0 +1,10 @@ +238 val_238 NULL +86 val_86 NULL +311 val_311 NULL +27 val_27 NULL +165 val_165 NULL +409 val_409 NULL +255 val_255 NULL +278 val_278 NULL +98 val_98 NULL +484 val_484 NULL diff --git a/sql/hive/src/test/resources/golden/lateral_view_outer-2-b4474ec12d042fca7a21a2cd551c1068 b/sql/hive/src/test/resources/golden/lateral_view_outer-2-b4474ec12d042fca7a21a2cd551c1068 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_outer-3-57b2ffd7b60708551238c491a2a8685d b/sql/hive/src/test/resources/golden/lateral_view_outer-3-57b2ffd7b60708551238c491a2a8685d new file mode 100644 index 0000000000000..37d918a386d7d --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_outer-3-57b2ffd7b60708551238c491a2a8685d @@ -0,0 +1,10 @@ +238 val_238 4 +238 val_238 5 +86 val_86 4 +86 val_86 5 +311 val_311 4 +311 val_311 5 +27 val_27 4 +27 val_27 5 +165 val_165 4 +165 val_165 5 diff --git a/sql/hive/src/test/resources/golden/lateral_view_outer-4-96fe3dc4f8116e535c322437a59b5e4e b/sql/hive/src/test/resources/golden/lateral_view_outer-4-96fe3dc4f8116e535c322437a59b5e4e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_outer-5-2ec3aeb923621c64da042402709e64e9 b/sql/hive/src/test/resources/golden/lateral_view_outer-5-2ec3aeb923621c64da042402709e64e9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_outer-6-511e4df505342e04c20e50fda8962120 b/sql/hive/src/test/resources/golden/lateral_view_outer-6-511e4df505342e04c20e50fda8962120 new file mode 100644 index 0000000000000..3ad56f646ed85 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_outer-6-511e4df505342e04c20e50fda8962120 @@ -0,0 +1,10 @@ +238 NULL NULL +86 NULL NULL +311 ["val_311","val_311"] val_311 +311 ["val_311","val_311"] val_311 +27 NULL NULL +165 NULL NULL +409 ["val_409","val_409"] val_409 +409 ["val_409","val_409"] val_409 +255 NULL NULL +278 NULL NULL diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/lateral_view_ppd-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_ppd-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-1-cd326124717660a333f0915395f96768 b/sql/hive/src/test/resources/golden/lateral_view_ppd-1-cd326124717660a333f0915395f96768 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-2-25c2f5138fc88cf7fc34339a501de05f b/sql/hive/src/test/resources/golden/lateral_view_ppd-2-25c2f5138fc88cf7fc34339a501de05f new file mode 100644 index 0000000000000..f0a72370f697b --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_ppd-2-25c2f5138fc88cf7fc34339a501de05f @@ -0,0 +1,9 @@ +val_0 1 +val_0 2 +val_0 3 +val_0 1 +val_0 2 +val_0 3 +val_0 1 +val_0 2 +val_0 3 diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-3-a7d1b9240892d32ae3adf6ff2289a760 b/sql/hive/src/test/resources/golden/lateral_view_ppd-3-a7d1b9240892d32ae3adf6ff2289a760 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-4-c746547306ed67a5e8a0fce57023c9c9 b/sql/hive/src/test/resources/golden/lateral_view_ppd-4-c746547306ed67a5e8a0fce57023c9c9 new file mode 100644 index 0000000000000..1c7ec3df89594 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_ppd-4-c746547306ed67a5e8a0fce57023c9c9 @@ -0,0 +1,3 @@ +val_0 1 +val_0 1 +val_0 1 diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-5-2d087c55c7ad9f3dc51d8406833feb1f b/sql/hive/src/test/resources/golden/lateral_view_ppd-5-2d087c55c7ad9f3dc51d8406833feb1f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-6-63f8025bbf66831e84b98f9429e6c7fa b/sql/hive/src/test/resources/golden/lateral_view_ppd-6-63f8025bbf66831e84b98f9429e6c7fa new file mode 100644 index 0000000000000..3c52da67708d8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_ppd-6-63f8025bbf66831e84b98f9429e6c7fa @@ -0,0 +1,12 @@ +val_238 1 +val_238 2 +val_238 3 +val_86 1 +val_86 2 +val_86 3 +val_311 1 +val_311 2 +val_311 3 +val_27 1 +val_27 2 +val_27 3 diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-7-b8eb877331710c06ebc7dbaab5a7155b b/sql/hive/src/test/resources/golden/lateral_view_ppd-7-b8eb877331710c06ebc7dbaab5a7155b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lateral_view_ppd-8-fe627f796b01fe05ef7ccc30afe7c510 b/sql/hive/src/test/resources/golden/lateral_view_ppd-8-fe627f796b01fe05ef7ccc30afe7c510 new file mode 100644 index 0000000000000..78b21ab365aac --- /dev/null +++ b/sql/hive/src/test/resources/golden/lateral_view_ppd-8-fe627f796b01fe05ef7ccc30afe7c510 @@ -0,0 +1,27 @@ +val_0 1 +val_0 1 +val_0 1 +val_0 2 +val_0 2 +val_0 2 +val_0 3 +val_0 3 +val_0 3 +val_0 1 +val_0 1 +val_0 1 +val_0 2 +val_0 2 +val_0 2 +val_0 3 +val_0 3 +val_0 3 +val_0 1 +val_0 1 +val_0 1 +val_0 2 +val_0 2 +val_0 2 +val_0 3 +val_0 3 +val_0 3 diff --git a/sql/hive/src/test/resources/golden/length.udf-0-e85ebb8ce5d939964fd87bd13b326c02 b/sql/hive/src/test/resources/golden/length.udf-0-e85ebb8ce5d939964fd87bd13b326c02 new file mode 100644 index 0000000000000..bf0d87ab1b2b0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/length.udf-0-e85ebb8ce5d939964fd87bd13b326c02 @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-0-79b294d0081c3dfd36c5b8b5e78dc7fb b/sql/hive/src/test/resources/golden/limit_pushdown-0-79b294d0081c3dfd36c5b8b5e78dc7fb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-0-79b294d0081c3dfd36c5b8b5e78dc7fb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-1-d0a93f40892e3894460553b443c77428 b/sql/hive/src/test/resources/golden/limit_pushdown-1-d0a93f40892e3894460553b443c77428 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-1-d0a93f40892e3894460553b443c77428 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-10-19842c7708a0787e59cc5e6b8c3a4250 b/sql/hive/src/test/resources/golden/limit_pushdown-10-19842c7708a0787e59cc5e6b8c3a4250 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-11-b435672262fc3c02d1ed1a93ff8d856f b/sql/hive/src/test/resources/golden/limit_pushdown-11-b435672262fc3c02d1ed1a93ff8d856f new file mode 100644 index 0000000000000..9e3b31ad52c13 --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-11-b435672262fc3c02d1ed1a93ff8d856f @@ -0,0 +1,20 @@ +0 +2 +4 +5 +8 +9 +10 +11 +12 +15 +17 +18 +19 +20 +24 +26 +27 +28 +30 +33 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-12-a3516c212d6c79986536edbd9c961098 b/sql/hive/src/test/resources/golden/limit_pushdown-12-a3516c212d6c79986536edbd9c961098 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-13-93906f7e87e5e3dc4b9590ec13b6af78 b/sql/hive/src/test/resources/golden/limit_pushdown-13-93906f7e87e5e3dc4b9590ec13b6af78 new file mode 100644 index 0000000000000..ebf6c0424c26d --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-13-93906f7e87e5e3dc4b9590ec13b6af78 @@ -0,0 +1,20 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-14-cfae77212d164efb18208f71332fd368 b/sql/hive/src/test/resources/golden/limit_pushdown-14-cfae77212d164efb18208f71332fd368 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-15-62a90d3ba54cc68055b3502c3864a3c1 b/sql/hive/src/test/resources/golden/limit_pushdown-15-62a90d3ba54cc68055b3502c3864a3c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-16-b618008e10acc4ee96b6ea2dbdf0f32 b/sql/hive/src/test/resources/golden/limit_pushdown-16-b618008e10acc4ee96b6ea2dbdf0f32 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-17-11c349c0db0f869be88351256650fe60 b/sql/hive/src/test/resources/golden/limit_pushdown-17-11c349c0db0f869be88351256650fe60 new file mode 100644 index 0000000000000..153dcec21bc5b --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-17-11c349c0db0f869be88351256650fe60 @@ -0,0 +1,20 @@ +val_0 0 +val_2 2 +val_4 4 +val_8 8 +val_9 9 +val_10 10 +val_11 11 +val_5 15 +val_17 17 +val_19 19 +val_20 20 +val_12 24 +val_27 27 +val_28 28 +val_30 30 +val_15 30 +val_33 33 +val_34 34 +val_18 36 +val_41 41 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-18-66ecdd019c936dec1ab5c9389c9071b3 b/sql/hive/src/test/resources/golden/limit_pushdown-18-66ecdd019c936dec1ab5c9389c9071b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-19-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/limit_pushdown-19-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-19-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-2-4d1e292b00635298240ff909be64dce4 b/sql/hive/src/test/resources/golden/limit_pushdown-2-4d1e292b00635298240ff909be64dce4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-20-d4de935f7a059cce44889c6ba69cfddb b/sql/hive/src/test/resources/golden/limit_pushdown-20-d4de935f7a059cce44889c6ba69cfddb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-21-f04dee0f94443ca01320657897cbb914 b/sql/hive/src/test/resources/golden/limit_pushdown-21-f04dee0f94443ca01320657897cbb914 new file mode 100644 index 0000000000000..ae8f0265b71ca --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-21-f04dee0f94443ca01320657897cbb914 @@ -0,0 +1,20 @@ +val_0 0 +val_10 10 +val_100 200 +val_103 206 +val_104 208 +val_105 105 +val_11 11 +val_111 111 +val_113 226 +val_114 114 +val_116 116 +val_118 236 +val_119 357 +val_12 24 +val_120 240 +val_125 250 +val_126 126 +val_128 384 +val_129 258 +val_131 131 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-22-4d378725e22e7e48c861983ba935bf5e b/sql/hive/src/test/resources/golden/limit_pushdown-22-4d378725e22e7e48c861983ba935bf5e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-22-4d378725e22e7e48c861983ba935bf5e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-23-53b4dd4899cb2ba681a801a3b5ca155a b/sql/hive/src/test/resources/golden/limit_pushdown-23-53b4dd4899cb2ba681a801a3b5ca155a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-24-cb58113b9dfd3e93d4623cba6a090976 b/sql/hive/src/test/resources/golden/limit_pushdown-24-cb58113b9dfd3e93d4623cba6a090976 new file mode 100644 index 0000000000000..e604892422d59 --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-24-cb58113b9dfd3e93d4623cba6a090976 @@ -0,0 +1,100 @@ +0 val_0 val_0 val_0 val_0 val_0 val_0 val_0 val_0 +0 val_0 val_0 val_0 val_0 val_0 val_0 val_0 val_0 +0 val_0 val_0 val_0 val_0 val_0 val_0 val_0 val_0 +2 val_2 val_2 val_2 val_2 val_2 val_2 val_2 val_2 +4 val_4 val_4 val_4 val_4 val_4 val_4 val_4 val_4 +5 val_5 val_5 val_5 val_5 val_5 val_5 val_5 val_5 +5 val_5 val_5 val_5 val_5 val_5 val_5 val_5 val_5 +5 val_5 val_5 val_5 val_5 val_5 val_5 val_5 val_5 +8 val_8 val_8 val_8 val_8 val_8 val_8 val_8 val_8 +9 val_9 val_9 val_9 val_9 val_9 val_9 val_9 val_9 +10 val_10 val_10 val_10 val_10 val_10 val_10 val_10 val_10 +11 val_11 val_11 val_11 val_11 val_11 val_11 val_11 val_11 +12 val_12 val_12 val_12 val_12 val_12 val_12 val_12 val_12 +12 val_12 val_12 val_12 val_12 val_12 val_12 val_12 val_12 +15 val_15 val_15 val_15 val_15 val_15 val_15 val_15 val_15 +15 val_15 val_15 val_15 val_15 val_15 val_15 val_15 val_15 +17 val_17 val_17 val_17 val_17 val_17 val_17 val_17 val_17 +18 val_18 val_18 val_18 val_18 val_18 val_18 val_18 val_18 +18 val_18 val_18 val_18 val_18 val_18 val_18 val_18 val_18 +19 val_19 val_19 val_19 val_19 val_19 val_19 val_19 val_19 +20 val_20 val_20 val_20 val_20 val_20 val_20 val_20 val_20 +24 val_24 val_24 val_24 val_24 val_24 val_24 val_24 val_24 +24 val_24 val_24 val_24 val_24 val_24 val_24 val_24 val_24 +26 val_26 val_26 val_26 val_26 val_26 val_26 val_26 val_26 +26 val_26 val_26 val_26 val_26 val_26 val_26 val_26 val_26 +27 val_27 val_27 val_27 val_27 val_27 val_27 val_27 val_27 +28 val_28 val_28 val_28 val_28 val_28 val_28 val_28 val_28 +30 val_30 val_30 val_30 val_30 val_30 val_30 val_30 val_30 +33 val_33 val_33 val_33 val_33 val_33 val_33 val_33 val_33 +34 val_34 val_34 val_34 val_34 val_34 val_34 val_34 val_34 +35 val_35 val_35 val_35 val_35 val_35 val_35 val_35 val_35 +35 val_35 val_35 val_35 val_35 val_35 val_35 val_35 val_35 +35 val_35 val_35 val_35 val_35 val_35 val_35 val_35 val_35 +37 val_37 val_37 val_37 val_37 val_37 val_37 val_37 val_37 +37 val_37 val_37 val_37 val_37 val_37 val_37 val_37 val_37 +41 val_41 val_41 val_41 val_41 val_41 val_41 val_41 val_41 +42 val_42 val_42 val_42 val_42 val_42 val_42 val_42 val_42 +42 val_42 val_42 val_42 val_42 val_42 val_42 val_42 val_42 +43 val_43 val_43 val_43 val_43 val_43 val_43 val_43 val_43 +44 val_44 val_44 val_44 val_44 val_44 val_44 val_44 val_44 +47 val_47 val_47 val_47 val_47 val_47 val_47 val_47 val_47 +51 val_51 val_51 val_51 val_51 val_51 val_51 val_51 val_51 +51 val_51 val_51 val_51 val_51 val_51 val_51 val_51 val_51 +53 val_53 val_53 val_53 val_53 val_53 val_53 val_53 val_53 +54 val_54 val_54 val_54 val_54 val_54 val_54 val_54 val_54 +57 val_57 val_57 val_57 val_57 val_57 val_57 val_57 val_57 +58 val_58 val_58 val_58 val_58 val_58 val_58 val_58 val_58 +58 val_58 val_58 val_58 val_58 val_58 val_58 val_58 val_58 +64 val_64 val_64 val_64 val_64 val_64 val_64 val_64 val_64 +65 val_65 val_65 val_65 val_65 val_65 val_65 val_65 val_65 +66 val_66 val_66 val_66 val_66 val_66 val_66 val_66 val_66 +67 val_67 val_67 val_67 val_67 val_67 val_67 val_67 val_67 +67 val_67 val_67 val_67 val_67 val_67 val_67 val_67 val_67 +69 val_69 val_69 val_69 val_69 val_69 val_69 val_69 val_69 +70 val_70 val_70 val_70 val_70 val_70 val_70 val_70 val_70 +70 val_70 val_70 val_70 val_70 val_70 val_70 val_70 val_70 +70 val_70 val_70 val_70 val_70 val_70 val_70 val_70 val_70 +72 val_72 val_72 val_72 val_72 val_72 val_72 val_72 val_72 +72 val_72 val_72 val_72 val_72 val_72 val_72 val_72 val_72 +74 val_74 val_74 val_74 val_74 val_74 val_74 val_74 val_74 +76 val_76 val_76 val_76 val_76 val_76 val_76 val_76 val_76 +76 val_76 val_76 val_76 val_76 val_76 val_76 val_76 val_76 +77 val_77 val_77 val_77 val_77 val_77 val_77 val_77 val_77 +78 val_78 val_78 val_78 val_78 val_78 val_78 val_78 val_78 +80 val_80 val_80 val_80 val_80 val_80 val_80 val_80 val_80 +82 val_82 val_82 val_82 val_82 val_82 val_82 val_82 val_82 +83 val_83 val_83 val_83 val_83 val_83 val_83 val_83 val_83 +83 val_83 val_83 val_83 val_83 val_83 val_83 val_83 val_83 +84 val_84 val_84 val_84 val_84 val_84 val_84 val_84 val_84 +84 val_84 val_84 val_84 val_84 val_84 val_84 val_84 val_84 +85 val_85 val_85 val_85 val_85 val_85 val_85 val_85 val_85 +86 val_86 val_86 val_86 val_86 val_86 val_86 val_86 val_86 +87 val_87 val_87 val_87 val_87 val_87 val_87 val_87 val_87 +90 val_90 val_90 val_90 val_90 val_90 val_90 val_90 val_90 +90 val_90 val_90 val_90 val_90 val_90 val_90 val_90 val_90 +90 val_90 val_90 val_90 val_90 val_90 val_90 val_90 val_90 +92 val_92 val_92 val_92 val_92 val_92 val_92 val_92 val_92 +95 val_95 val_95 val_95 val_95 val_95 val_95 val_95 val_95 +95 val_95 val_95 val_95 val_95 val_95 val_95 val_95 val_95 +96 val_96 val_96 val_96 val_96 val_96 val_96 val_96 val_96 +97 val_97 val_97 val_97 val_97 val_97 val_97 val_97 val_97 +97 val_97 val_97 val_97 val_97 val_97 val_97 val_97 val_97 +98 val_98 val_98 val_98 val_98 val_98 val_98 val_98 val_98 +98 val_98 val_98 val_98 val_98 val_98 val_98 val_98 val_98 +100 val_100 val_100 val_100 val_100 val_100 val_100 val_100 val_100 +100 val_100 val_100 val_100 val_100 val_100 val_100 val_100 val_100 +103 val_103 val_103 val_103 val_103 val_103 val_103 val_103 val_103 +103 val_103 val_103 val_103 val_103 val_103 val_103 val_103 val_103 +104 val_104 val_104 val_104 val_104 val_104 val_104 val_104 val_104 +104 val_104 val_104 val_104 val_104 val_104 val_104 val_104 val_104 +105 val_105 val_105 val_105 val_105 val_105 val_105 val_105 val_105 +111 val_111 val_111 val_111 val_111 val_111 val_111 val_111 val_111 +113 val_113 val_113 val_113 val_113 val_113 val_113 val_113 val_113 +113 val_113 val_113 val_113 val_113 val_113 val_113 val_113 val_113 +114 val_114 val_114 val_114 val_114 val_114 val_114 val_114 val_114 +116 val_116 val_116 val_116 val_116 val_116 val_116 val_116 val_116 +118 val_118 val_118 val_118 val_118 val_118 val_118 val_118 val_118 +118 val_118 val_118 val_118 val_118 val_118 val_118 val_118 val_118 +119 val_119 val_119 val_119 val_119 val_119 val_119 val_119 val_119 +119 val_119 val_119 val_119 val_119 val_119 val_119 val_119 val_119 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-25-1b6cdcbc002f5f1bde0f369a0dd1632a b/sql/hive/src/test/resources/golden/limit_pushdown-25-1b6cdcbc002f5f1bde0f369a0dd1632a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-26-e691b284f1b830d7b83a36750105737c b/sql/hive/src/test/resources/golden/limit_pushdown-26-e691b284f1b830d7b83a36750105737c new file mode 100644 index 0000000000000..92dc6ce9dbf9e --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-26-e691b284f1b830d7b83a36750105737c @@ -0,0 +1,100 @@ +0 +200 +206 +208 +105 +10 +111 +226 +114 +116 +236 +357 +11 +240 +250 +126 +384 +258 +24 +131 +133 +268 +136 +274 +552 +143 +145 +292 +298 +150 +304 +153 +155 +156 +157 +158 +30 +160 +162 +163 +328 +330 +166 +501 +168 +676 +170 +344 +348 +350 +352 +177 +178 +358 +17 +180 +181 +183 +186 +561 +189 +36 +190 +382 +192 +579 +194 +390 +196 +394 +597 +19 +400 +201 +202 +406 +410 +414 +624 +418 +20 +426 +214 +432 +434 +218 +438 +442 +222 +446 +448 +226 +228 +458 +1150 +466 +235 +474 +476 +478 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-3-cc674af3ce71c06670e366932df43462 b/sql/hive/src/test/resources/golden/limit_pushdown-3-cc674af3ce71c06670e366932df43462 new file mode 100644 index 0000000000000..95f5492558a9b --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-3-cc674af3ce71c06670e366932df43462 @@ -0,0 +1,20 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-4-81bbb7300da27bc63f7a139677faac3f b/sql/hive/src/test/resources/golden/limit_pushdown-4-81bbb7300da27bc63f7a139677faac3f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-5-c0664bc5bff121823ac2f37df13d6bd7 b/sql/hive/src/test/resources/golden/limit_pushdown-5-c0664bc5bff121823ac2f37df13d6bd7 new file mode 100644 index 0000000000000..0bac402cfa497 --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-5-c0664bc5bff121823ac2f37df13d6bd7 @@ -0,0 +1,20 @@ +498 val_498 +498 val_498 +498 val_498 +497 val_497 +496 val_496 +495 val_495 +494 val_494 +493 val_493 +492 val_492 +492 val_492 +491 val_491 +490 val_490 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +487 val_487 +485 val_485 +484 val_484 +483 val_483 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-6-b722630e977a5ca509234fc417d7b30 b/sql/hive/src/test/resources/golden/limit_pushdown-6-b722630e977a5ca509234fc417d7b30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-7-e8c8087a3910ea53a725b01b9d05b921 b/sql/hive/src/test/resources/golden/limit_pushdown-7-e8c8087a3910ea53a725b01b9d05b921 new file mode 100644 index 0000000000000..b57d0cc951566 --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-7-e8c8087a3910ea53a725b01b9d05b921 @@ -0,0 +1,20 @@ +val_0 3 +val_10 11 +val_100 202 +val_103 208 +val_104 210 +val_105 106 +val_11 12 +val_111 112 +val_113 228 +val_114 115 +val_116 117 +val_118 238 +val_119 360 +val_12 26 +val_120 242 +val_125 252 +val_126 127 +val_128 387 +val_129 260 +val_131 132 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-8-6194a19c1d5065731ec26ea1d5a390e1 b/sql/hive/src/test/resources/golden/limit_pushdown-8-6194a19c1d5065731ec26ea1d5a390e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/limit_pushdown-9-1446f634128a1c3e7cd224ea82452d0a b/sql/hive/src/test/resources/golden/limit_pushdown-9-1446f634128a1c3e7cd224ea82452d0a new file mode 100644 index 0000000000000..0e95c446f3b0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/limit_pushdown-9-1446f634128a1c3e7cd224ea82452d0a @@ -0,0 +1,20 @@ +val_0 1.0 +val_10 11.0 +val_100 101.0 +val_103 104.0 +val_104 105.0 +val_105 106.0 +val_11 12.0 +val_111 112.0 +val_113 114.0 +val_114 115.0 +val_116 117.0 +val_118 119.0 +val_119 120.0 +val_12 13.0 +val_120 121.0 +val_125 126.0 +val_126 127.0 +val_128 129.0 +val_129 130.0 +val_131 132.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/lineage1-0-c021950f995f1d6a7b83ffe044daa750 b/sql/hive/src/test/resources/golden/lineage1-0-c021950f995f1d6a7b83ffe044daa750 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lineage1-1-aeb863486b8fe899ee741fc8c8418fc9 b/sql/hive/src/test/resources/golden/lineage1-1-aeb863486b8fe899ee741fc8c8418fc9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lineage1-2-f92e96c6357273ea6cbb2195a418df9c b/sql/hive/src/test/resources/golden/lineage1-2-f92e96c6357273ea6cbb2195a418df9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/literal_double-0-10ef1098e35d900983be3814de8f974f b/sql/hive/src/test/resources/golden/literal_double-0-10ef1098e35d900983be3814de8f974f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/literal_double-1-3863c17e03c9c1cd68452106a8721d13 b/sql/hive/src/test/resources/golden/literal_double-1-3863c17e03c9c1cd68452106a8721d13 new file mode 100644 index 0000000000000..69505e73feb1d --- /dev/null +++ b/sql/hive/src/test/resources/golden/literal_double-1-3863c17e03c9c1cd68452106a8721d13 @@ -0,0 +1 @@ +3.14 -3.14 3.14E8 3.14E-8 -3.14E8 -3.14E-8 3.14E8 3.14E8 3.14E-8 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/literal_ints-0-5ffd1b49cdda4149aef2c61c53a56890 b/sql/hive/src/test/resources/golden/literal_ints-0-5ffd1b49cdda4149aef2c61c53a56890 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/literal_ints-1-b41c42ce2f6ba483b68bb08752b95ec4 b/sql/hive/src/test/resources/golden/literal_ints-1-b41c42ce2f6ba483b68bb08752b95ec4 new file mode 100644 index 0000000000000..6dc85dd550540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/literal_ints-1-b41c42ce2f6ba483b68bb08752b95ec4 @@ -0,0 +1 @@ +100 100 100 100 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/literal_string-0-9b48d41e5c9e41ddc070e2fd31ace15 b/sql/hive/src/test/resources/golden/literal_string-0-9b48d41e5c9e41ddc070e2fd31ace15 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/literal_string-1-2cf4b7268b47246afdf6c792acca379d b/sql/hive/src/test/resources/golden/literal_string-1-2cf4b7268b47246afdf6c792acca379d new file mode 100644 index 0000000000000..6323f4efa99c7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/literal_string-1-2cf4b7268b47246afdf6c792acca379d @@ -0,0 +1 @@ +facebook facebook facebook facebook facebook facebook facebook facebook facebook facebook \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_binary_data-0-491edd0c42ceb79e799ba50555bc8c15 b/sql/hive/src/test/resources/golden/load_binary_data-0-491edd0c42ceb79e799ba50555bc8c15 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_binary_data-1-5d72f8449b69df3c08e3f444f09428bc b/sql/hive/src/test/resources/golden/load_binary_data-1-5d72f8449b69df3c08e3f444f09428bc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_binary_data-2-242b1655c7e7325ee9f26552ea8fc25 b/sql/hive/src/test/resources/golden/load_binary_data-2-242b1655c7e7325ee9f26552ea8fc25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_binary_data-3-2a72df8d3e398d0963ef91162ce7d268 b/sql/hive/src/test/resources/golden/load_binary_data-3-2a72df8d3e398d0963ef91162ce7d268 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part1-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..8c43153cf66f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part1-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-1-cd849c4fe1229428da98947e3e43b46d b/sql/hive/src/test/resources/golden/load_dyn_part1-1-cd849c4fe1229428da98947e3e43b46d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-10-fca9513ea05bfb8b7e0e6f337d184d66 b/sql/hive/src/test/resources/golden/load_dyn_part1-10-fca9513ea05bfb8b7e0e6f337d184d66 new file mode 100644 index 0000000000000..d7a8f25b41301 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part1-10-fca9513ea05bfb8b7e0e6f337d184d66 @@ -0,0 +1,1000 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-11-9c82167763a771c175c656786d545798 b/sql/hive/src/test/resources/golden/load_dyn_part1-11-9c82167763a771c175c656786d545798 new file mode 100644 index 0000000000000..653516475da22 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part1-11-9c82167763a771c175c656786d545798 @@ -0,0 +1,1000 @@ +238 val_238 2008-12-31 11 +86 val_86 2008-12-31 11 +311 val_311 2008-12-31 11 +27 val_27 2008-12-31 11 +165 val_165 2008-12-31 11 +409 val_409 2008-12-31 11 +255 val_255 2008-12-31 11 +278 val_278 2008-12-31 11 +98 val_98 2008-12-31 11 +484 val_484 2008-12-31 11 +265 val_265 2008-12-31 11 +193 val_193 2008-12-31 11 +401 val_401 2008-12-31 11 +150 val_150 2008-12-31 11 +273 val_273 2008-12-31 11 +224 val_224 2008-12-31 11 +369 val_369 2008-12-31 11 +66 val_66 2008-12-31 11 +128 val_128 2008-12-31 11 +213 val_213 2008-12-31 11 +146 val_146 2008-12-31 11 +406 val_406 2008-12-31 11 +429 val_429 2008-12-31 11 +374 val_374 2008-12-31 11 +152 val_152 2008-12-31 11 +469 val_469 2008-12-31 11 +145 val_145 2008-12-31 11 +495 val_495 2008-12-31 11 +37 val_37 2008-12-31 11 +327 val_327 2008-12-31 11 +281 val_281 2008-12-31 11 +277 val_277 2008-12-31 11 +209 val_209 2008-12-31 11 +15 val_15 2008-12-31 11 +82 val_82 2008-12-31 11 +403 val_403 2008-12-31 11 +166 val_166 2008-12-31 11 +417 val_417 2008-12-31 11 +430 val_430 2008-12-31 11 +252 val_252 2008-12-31 11 +292 val_292 2008-12-31 11 +219 val_219 2008-12-31 11 +287 val_287 2008-12-31 11 +153 val_153 2008-12-31 11 +193 val_193 2008-12-31 11 +338 val_338 2008-12-31 11 +446 val_446 2008-12-31 11 +459 val_459 2008-12-31 11 +394 val_394 2008-12-31 11 +237 val_237 2008-12-31 11 +482 val_482 2008-12-31 11 +174 val_174 2008-12-31 11 +413 val_413 2008-12-31 11 +494 val_494 2008-12-31 11 +207 val_207 2008-12-31 11 +199 val_199 2008-12-31 11 +466 val_466 2008-12-31 11 +208 val_208 2008-12-31 11 +174 val_174 2008-12-31 11 +399 val_399 2008-12-31 11 +396 val_396 2008-12-31 11 +247 val_247 2008-12-31 11 +417 val_417 2008-12-31 11 +489 val_489 2008-12-31 11 +162 val_162 2008-12-31 11 +377 val_377 2008-12-31 11 +397 val_397 2008-12-31 11 +309 val_309 2008-12-31 11 +365 val_365 2008-12-31 11 +266 val_266 2008-12-31 11 +439 val_439 2008-12-31 11 +342 val_342 2008-12-31 11 +367 val_367 2008-12-31 11 +325 val_325 2008-12-31 11 +167 val_167 2008-12-31 11 +195 val_195 2008-12-31 11 +475 val_475 2008-12-31 11 +17 val_17 2008-12-31 11 +113 val_113 2008-12-31 11 +155 val_155 2008-12-31 11 +203 val_203 2008-12-31 11 +339 val_339 2008-12-31 11 +0 val_0 2008-12-31 11 +455 val_455 2008-12-31 11 +128 val_128 2008-12-31 11 +311 val_311 2008-12-31 11 +316 val_316 2008-12-31 11 +57 val_57 2008-12-31 11 +302 val_302 2008-12-31 11 +205 val_205 2008-12-31 11 +149 val_149 2008-12-31 11 +438 val_438 2008-12-31 11 +345 val_345 2008-12-31 11 +129 val_129 2008-12-31 11 +170 val_170 2008-12-31 11 +20 val_20 2008-12-31 11 +489 val_489 2008-12-31 11 +157 val_157 2008-12-31 11 +378 val_378 2008-12-31 11 +221 val_221 2008-12-31 11 +92 val_92 2008-12-31 11 +111 val_111 2008-12-31 11 +47 val_47 2008-12-31 11 +72 val_72 2008-12-31 11 +4 val_4 2008-12-31 11 +280 val_280 2008-12-31 11 +35 val_35 2008-12-31 11 +427 val_427 2008-12-31 11 +277 val_277 2008-12-31 11 +208 val_208 2008-12-31 11 +356 val_356 2008-12-31 11 +399 val_399 2008-12-31 11 +169 val_169 2008-12-31 11 +382 val_382 2008-12-31 11 +498 val_498 2008-12-31 11 +125 val_125 2008-12-31 11 +386 val_386 2008-12-31 11 +437 val_437 2008-12-31 11 +469 val_469 2008-12-31 11 +192 val_192 2008-12-31 11 +286 val_286 2008-12-31 11 +187 val_187 2008-12-31 11 +176 val_176 2008-12-31 11 +54 val_54 2008-12-31 11 +459 val_459 2008-12-31 11 +51 val_51 2008-12-31 11 +138 val_138 2008-12-31 11 +103 val_103 2008-12-31 11 +239 val_239 2008-12-31 11 +213 val_213 2008-12-31 11 +216 val_216 2008-12-31 11 +430 val_430 2008-12-31 11 +278 val_278 2008-12-31 11 +176 val_176 2008-12-31 11 +289 val_289 2008-12-31 11 +221 val_221 2008-12-31 11 +65 val_65 2008-12-31 11 +318 val_318 2008-12-31 11 +332 val_332 2008-12-31 11 +311 val_311 2008-12-31 11 +275 val_275 2008-12-31 11 +137 val_137 2008-12-31 11 +241 val_241 2008-12-31 11 +83 val_83 2008-12-31 11 +333 val_333 2008-12-31 11 +180 val_180 2008-12-31 11 +284 val_284 2008-12-31 11 +12 val_12 2008-12-31 11 +230 val_230 2008-12-31 11 +181 val_181 2008-12-31 11 +67 val_67 2008-12-31 11 +260 val_260 2008-12-31 11 +404 val_404 2008-12-31 11 +384 val_384 2008-12-31 11 +489 val_489 2008-12-31 11 +353 val_353 2008-12-31 11 +373 val_373 2008-12-31 11 +272 val_272 2008-12-31 11 +138 val_138 2008-12-31 11 +217 val_217 2008-12-31 11 +84 val_84 2008-12-31 11 +348 val_348 2008-12-31 11 +466 val_466 2008-12-31 11 +58 val_58 2008-12-31 11 +8 val_8 2008-12-31 11 +411 val_411 2008-12-31 11 +230 val_230 2008-12-31 11 +208 val_208 2008-12-31 11 +348 val_348 2008-12-31 11 +24 val_24 2008-12-31 11 +463 val_463 2008-12-31 11 +431 val_431 2008-12-31 11 +179 val_179 2008-12-31 11 +172 val_172 2008-12-31 11 +42 val_42 2008-12-31 11 +129 val_129 2008-12-31 11 +158 val_158 2008-12-31 11 +119 val_119 2008-12-31 11 +496 val_496 2008-12-31 11 +0 val_0 2008-12-31 11 +322 val_322 2008-12-31 11 +197 val_197 2008-12-31 11 +468 val_468 2008-12-31 11 +393 val_393 2008-12-31 11 +454 val_454 2008-12-31 11 +100 val_100 2008-12-31 11 +298 val_298 2008-12-31 11 +199 val_199 2008-12-31 11 +191 val_191 2008-12-31 11 +418 val_418 2008-12-31 11 +96 val_96 2008-12-31 11 +26 val_26 2008-12-31 11 +165 val_165 2008-12-31 11 +327 val_327 2008-12-31 11 +230 val_230 2008-12-31 11 +205 val_205 2008-12-31 11 +120 val_120 2008-12-31 11 +131 val_131 2008-12-31 11 +51 val_51 2008-12-31 11 +404 val_404 2008-12-31 11 +43 val_43 2008-12-31 11 +436 val_436 2008-12-31 11 +156 val_156 2008-12-31 11 +469 val_469 2008-12-31 11 +468 val_468 2008-12-31 11 +308 val_308 2008-12-31 11 +95 val_95 2008-12-31 11 +196 val_196 2008-12-31 11 +288 val_288 2008-12-31 11 +481 val_481 2008-12-31 11 +457 val_457 2008-12-31 11 +98 val_98 2008-12-31 11 +282 val_282 2008-12-31 11 +197 val_197 2008-12-31 11 +187 val_187 2008-12-31 11 +318 val_318 2008-12-31 11 +318 val_318 2008-12-31 11 +409 val_409 2008-12-31 11 +470 val_470 2008-12-31 11 +137 val_137 2008-12-31 11 +369 val_369 2008-12-31 11 +316 val_316 2008-12-31 11 +169 val_169 2008-12-31 11 +413 val_413 2008-12-31 11 +85 val_85 2008-12-31 11 +77 val_77 2008-12-31 11 +0 val_0 2008-12-31 11 +490 val_490 2008-12-31 11 +87 val_87 2008-12-31 11 +364 val_364 2008-12-31 11 +179 val_179 2008-12-31 11 +118 val_118 2008-12-31 11 +134 val_134 2008-12-31 11 +395 val_395 2008-12-31 11 +282 val_282 2008-12-31 11 +138 val_138 2008-12-31 11 +238 val_238 2008-12-31 11 +419 val_419 2008-12-31 11 +15 val_15 2008-12-31 11 +118 val_118 2008-12-31 11 +72 val_72 2008-12-31 11 +90 val_90 2008-12-31 11 +307 val_307 2008-12-31 11 +19 val_19 2008-12-31 11 +435 val_435 2008-12-31 11 +10 val_10 2008-12-31 11 +277 val_277 2008-12-31 11 +273 val_273 2008-12-31 11 +306 val_306 2008-12-31 11 +224 val_224 2008-12-31 11 +309 val_309 2008-12-31 11 +389 val_389 2008-12-31 11 +327 val_327 2008-12-31 11 +242 val_242 2008-12-31 11 +369 val_369 2008-12-31 11 +392 val_392 2008-12-31 11 +272 val_272 2008-12-31 11 +331 val_331 2008-12-31 11 +401 val_401 2008-12-31 11 +242 val_242 2008-12-31 11 +452 val_452 2008-12-31 11 +177 val_177 2008-12-31 11 +226 val_226 2008-12-31 11 +5 val_5 2008-12-31 11 +497 val_497 2008-12-31 11 +402 val_402 2008-12-31 11 +396 val_396 2008-12-31 11 +317 val_317 2008-12-31 11 +395 val_395 2008-12-31 11 +58 val_58 2008-12-31 11 +35 val_35 2008-12-31 11 +336 val_336 2008-12-31 11 +95 val_95 2008-12-31 11 +11 val_11 2008-12-31 11 +168 val_168 2008-12-31 11 +34 val_34 2008-12-31 11 +229 val_229 2008-12-31 11 +233 val_233 2008-12-31 11 +143 val_143 2008-12-31 11 +472 val_472 2008-12-31 11 +322 val_322 2008-12-31 11 +498 val_498 2008-12-31 11 +160 val_160 2008-12-31 11 +195 val_195 2008-12-31 11 +42 val_42 2008-12-31 11 +321 val_321 2008-12-31 11 +430 val_430 2008-12-31 11 +119 val_119 2008-12-31 11 +489 val_489 2008-12-31 11 +458 val_458 2008-12-31 11 +78 val_78 2008-12-31 11 +76 val_76 2008-12-31 11 +41 val_41 2008-12-31 11 +223 val_223 2008-12-31 11 +492 val_492 2008-12-31 11 +149 val_149 2008-12-31 11 +449 val_449 2008-12-31 11 +218 val_218 2008-12-31 11 +228 val_228 2008-12-31 11 +138 val_138 2008-12-31 11 +453 val_453 2008-12-31 11 +30 val_30 2008-12-31 11 +209 val_209 2008-12-31 11 +64 val_64 2008-12-31 11 +468 val_468 2008-12-31 11 +76 val_76 2008-12-31 11 +74 val_74 2008-12-31 11 +342 val_342 2008-12-31 11 +69 val_69 2008-12-31 11 +230 val_230 2008-12-31 11 +33 val_33 2008-12-31 11 +368 val_368 2008-12-31 11 +103 val_103 2008-12-31 11 +296 val_296 2008-12-31 11 +113 val_113 2008-12-31 11 +216 val_216 2008-12-31 11 +367 val_367 2008-12-31 11 +344 val_344 2008-12-31 11 +167 val_167 2008-12-31 11 +274 val_274 2008-12-31 11 +219 val_219 2008-12-31 11 +239 val_239 2008-12-31 11 +485 val_485 2008-12-31 11 +116 val_116 2008-12-31 11 +223 val_223 2008-12-31 11 +256 val_256 2008-12-31 11 +263 val_263 2008-12-31 11 +70 val_70 2008-12-31 11 +487 val_487 2008-12-31 11 +480 val_480 2008-12-31 11 +401 val_401 2008-12-31 11 +288 val_288 2008-12-31 11 +191 val_191 2008-12-31 11 +5 val_5 2008-12-31 11 +244 val_244 2008-12-31 11 +438 val_438 2008-12-31 11 +128 val_128 2008-12-31 11 +467 val_467 2008-12-31 11 +432 val_432 2008-12-31 11 +202 val_202 2008-12-31 11 +316 val_316 2008-12-31 11 +229 val_229 2008-12-31 11 +469 val_469 2008-12-31 11 +463 val_463 2008-12-31 11 +280 val_280 2008-12-31 11 +2 val_2 2008-12-31 11 +35 val_35 2008-12-31 11 +283 val_283 2008-12-31 11 +331 val_331 2008-12-31 11 +235 val_235 2008-12-31 11 +80 val_80 2008-12-31 11 +44 val_44 2008-12-31 11 +193 val_193 2008-12-31 11 +321 val_321 2008-12-31 11 +335 val_335 2008-12-31 11 +104 val_104 2008-12-31 11 +466 val_466 2008-12-31 11 +366 val_366 2008-12-31 11 +175 val_175 2008-12-31 11 +403 val_403 2008-12-31 11 +483 val_483 2008-12-31 11 +53 val_53 2008-12-31 11 +105 val_105 2008-12-31 11 +257 val_257 2008-12-31 11 +406 val_406 2008-12-31 11 +409 val_409 2008-12-31 11 +190 val_190 2008-12-31 11 +406 val_406 2008-12-31 11 +401 val_401 2008-12-31 11 +114 val_114 2008-12-31 11 +258 val_258 2008-12-31 11 +90 val_90 2008-12-31 11 +203 val_203 2008-12-31 11 +262 val_262 2008-12-31 11 +348 val_348 2008-12-31 11 +424 val_424 2008-12-31 11 +12 val_12 2008-12-31 11 +396 val_396 2008-12-31 11 +201 val_201 2008-12-31 11 +217 val_217 2008-12-31 11 +164 val_164 2008-12-31 11 +431 val_431 2008-12-31 11 +454 val_454 2008-12-31 11 +478 val_478 2008-12-31 11 +298 val_298 2008-12-31 11 +125 val_125 2008-12-31 11 +431 val_431 2008-12-31 11 +164 val_164 2008-12-31 11 +424 val_424 2008-12-31 11 +187 val_187 2008-12-31 11 +382 val_382 2008-12-31 11 +5 val_5 2008-12-31 11 +70 val_70 2008-12-31 11 +397 val_397 2008-12-31 11 +480 val_480 2008-12-31 11 +291 val_291 2008-12-31 11 +24 val_24 2008-12-31 11 +351 val_351 2008-12-31 11 +255 val_255 2008-12-31 11 +104 val_104 2008-12-31 11 +70 val_70 2008-12-31 11 +163 val_163 2008-12-31 11 +438 val_438 2008-12-31 11 +119 val_119 2008-12-31 11 +414 val_414 2008-12-31 11 +200 val_200 2008-12-31 11 +491 val_491 2008-12-31 11 +237 val_237 2008-12-31 11 +439 val_439 2008-12-31 11 +360 val_360 2008-12-31 11 +248 val_248 2008-12-31 11 +479 val_479 2008-12-31 11 +305 val_305 2008-12-31 11 +417 val_417 2008-12-31 11 +199 val_199 2008-12-31 11 +444 val_444 2008-12-31 11 +120 val_120 2008-12-31 11 +429 val_429 2008-12-31 11 +169 val_169 2008-12-31 11 +443 val_443 2008-12-31 11 +323 val_323 2008-12-31 11 +325 val_325 2008-12-31 11 +277 val_277 2008-12-31 11 +230 val_230 2008-12-31 11 +478 val_478 2008-12-31 11 +178 val_178 2008-12-31 11 +468 val_468 2008-12-31 11 +310 val_310 2008-12-31 11 +317 val_317 2008-12-31 11 +333 val_333 2008-12-31 11 +493 val_493 2008-12-31 11 +460 val_460 2008-12-31 11 +207 val_207 2008-12-31 11 +249 val_249 2008-12-31 11 +265 val_265 2008-12-31 11 +480 val_480 2008-12-31 11 +83 val_83 2008-12-31 11 +136 val_136 2008-12-31 11 +353 val_353 2008-12-31 11 +172 val_172 2008-12-31 11 +214 val_214 2008-12-31 11 +462 val_462 2008-12-31 11 +233 val_233 2008-12-31 11 +406 val_406 2008-12-31 11 +133 val_133 2008-12-31 11 +175 val_175 2008-12-31 11 +189 val_189 2008-12-31 11 +454 val_454 2008-12-31 11 +375 val_375 2008-12-31 11 +401 val_401 2008-12-31 11 +421 val_421 2008-12-31 11 +407 val_407 2008-12-31 11 +384 val_384 2008-12-31 11 +256 val_256 2008-12-31 11 +26 val_26 2008-12-31 11 +134 val_134 2008-12-31 11 +67 val_67 2008-12-31 11 +384 val_384 2008-12-31 11 +379 val_379 2008-12-31 11 +18 val_18 2008-12-31 11 +462 val_462 2008-12-31 11 +492 val_492 2008-12-31 11 +100 val_100 2008-12-31 11 +298 val_298 2008-12-31 11 +9 val_9 2008-12-31 11 +341 val_341 2008-12-31 11 +498 val_498 2008-12-31 11 +146 val_146 2008-12-31 11 +458 val_458 2008-12-31 11 +362 val_362 2008-12-31 11 +186 val_186 2008-12-31 11 +285 val_285 2008-12-31 11 +348 val_348 2008-12-31 11 +167 val_167 2008-12-31 11 +18 val_18 2008-12-31 11 +273 val_273 2008-12-31 11 +183 val_183 2008-12-31 11 +281 val_281 2008-12-31 11 +344 val_344 2008-12-31 11 +97 val_97 2008-12-31 11 +469 val_469 2008-12-31 11 +315 val_315 2008-12-31 11 +84 val_84 2008-12-31 11 +28 val_28 2008-12-31 11 +37 val_37 2008-12-31 11 +448 val_448 2008-12-31 11 +152 val_152 2008-12-31 11 +348 val_348 2008-12-31 11 +307 val_307 2008-12-31 11 +194 val_194 2008-12-31 11 +414 val_414 2008-12-31 11 +477 val_477 2008-12-31 11 +222 val_222 2008-12-31 11 +126 val_126 2008-12-31 11 +90 val_90 2008-12-31 11 +169 val_169 2008-12-31 11 +403 val_403 2008-12-31 11 +400 val_400 2008-12-31 11 +200 val_200 2008-12-31 11 +97 val_97 2008-12-31 11 +238 val_238 2008-12-31 12 +86 val_86 2008-12-31 12 +311 val_311 2008-12-31 12 +27 val_27 2008-12-31 12 +165 val_165 2008-12-31 12 +409 val_409 2008-12-31 12 +255 val_255 2008-12-31 12 +278 val_278 2008-12-31 12 +98 val_98 2008-12-31 12 +484 val_484 2008-12-31 12 +265 val_265 2008-12-31 12 +193 val_193 2008-12-31 12 +401 val_401 2008-12-31 12 +150 val_150 2008-12-31 12 +273 val_273 2008-12-31 12 +224 val_224 2008-12-31 12 +369 val_369 2008-12-31 12 +66 val_66 2008-12-31 12 +128 val_128 2008-12-31 12 +213 val_213 2008-12-31 12 +146 val_146 2008-12-31 12 +406 val_406 2008-12-31 12 +429 val_429 2008-12-31 12 +374 val_374 2008-12-31 12 +152 val_152 2008-12-31 12 +469 val_469 2008-12-31 12 +145 val_145 2008-12-31 12 +495 val_495 2008-12-31 12 +37 val_37 2008-12-31 12 +327 val_327 2008-12-31 12 +281 val_281 2008-12-31 12 +277 val_277 2008-12-31 12 +209 val_209 2008-12-31 12 +15 val_15 2008-12-31 12 +82 val_82 2008-12-31 12 +403 val_403 2008-12-31 12 +166 val_166 2008-12-31 12 +417 val_417 2008-12-31 12 +430 val_430 2008-12-31 12 +252 val_252 2008-12-31 12 +292 val_292 2008-12-31 12 +219 val_219 2008-12-31 12 +287 val_287 2008-12-31 12 +153 val_153 2008-12-31 12 +193 val_193 2008-12-31 12 +338 val_338 2008-12-31 12 +446 val_446 2008-12-31 12 +459 val_459 2008-12-31 12 +394 val_394 2008-12-31 12 +237 val_237 2008-12-31 12 +482 val_482 2008-12-31 12 +174 val_174 2008-12-31 12 +413 val_413 2008-12-31 12 +494 val_494 2008-12-31 12 +207 val_207 2008-12-31 12 +199 val_199 2008-12-31 12 +466 val_466 2008-12-31 12 +208 val_208 2008-12-31 12 +174 val_174 2008-12-31 12 +399 val_399 2008-12-31 12 +396 val_396 2008-12-31 12 +247 val_247 2008-12-31 12 +417 val_417 2008-12-31 12 +489 val_489 2008-12-31 12 +162 val_162 2008-12-31 12 +377 val_377 2008-12-31 12 +397 val_397 2008-12-31 12 +309 val_309 2008-12-31 12 +365 val_365 2008-12-31 12 +266 val_266 2008-12-31 12 +439 val_439 2008-12-31 12 +342 val_342 2008-12-31 12 +367 val_367 2008-12-31 12 +325 val_325 2008-12-31 12 +167 val_167 2008-12-31 12 +195 val_195 2008-12-31 12 +475 val_475 2008-12-31 12 +17 val_17 2008-12-31 12 +113 val_113 2008-12-31 12 +155 val_155 2008-12-31 12 +203 val_203 2008-12-31 12 +339 val_339 2008-12-31 12 +0 val_0 2008-12-31 12 +455 val_455 2008-12-31 12 +128 val_128 2008-12-31 12 +311 val_311 2008-12-31 12 +316 val_316 2008-12-31 12 +57 val_57 2008-12-31 12 +302 val_302 2008-12-31 12 +205 val_205 2008-12-31 12 +149 val_149 2008-12-31 12 +438 val_438 2008-12-31 12 +345 val_345 2008-12-31 12 +129 val_129 2008-12-31 12 +170 val_170 2008-12-31 12 +20 val_20 2008-12-31 12 +489 val_489 2008-12-31 12 +157 val_157 2008-12-31 12 +378 val_378 2008-12-31 12 +221 val_221 2008-12-31 12 +92 val_92 2008-12-31 12 +111 val_111 2008-12-31 12 +47 val_47 2008-12-31 12 +72 val_72 2008-12-31 12 +4 val_4 2008-12-31 12 +280 val_280 2008-12-31 12 +35 val_35 2008-12-31 12 +427 val_427 2008-12-31 12 +277 val_277 2008-12-31 12 +208 val_208 2008-12-31 12 +356 val_356 2008-12-31 12 +399 val_399 2008-12-31 12 +169 val_169 2008-12-31 12 +382 val_382 2008-12-31 12 +498 val_498 2008-12-31 12 +125 val_125 2008-12-31 12 +386 val_386 2008-12-31 12 +437 val_437 2008-12-31 12 +469 val_469 2008-12-31 12 +192 val_192 2008-12-31 12 +286 val_286 2008-12-31 12 +187 val_187 2008-12-31 12 +176 val_176 2008-12-31 12 +54 val_54 2008-12-31 12 +459 val_459 2008-12-31 12 +51 val_51 2008-12-31 12 +138 val_138 2008-12-31 12 +103 val_103 2008-12-31 12 +239 val_239 2008-12-31 12 +213 val_213 2008-12-31 12 +216 val_216 2008-12-31 12 +430 val_430 2008-12-31 12 +278 val_278 2008-12-31 12 +176 val_176 2008-12-31 12 +289 val_289 2008-12-31 12 +221 val_221 2008-12-31 12 +65 val_65 2008-12-31 12 +318 val_318 2008-12-31 12 +332 val_332 2008-12-31 12 +311 val_311 2008-12-31 12 +275 val_275 2008-12-31 12 +137 val_137 2008-12-31 12 +241 val_241 2008-12-31 12 +83 val_83 2008-12-31 12 +333 val_333 2008-12-31 12 +180 val_180 2008-12-31 12 +284 val_284 2008-12-31 12 +12 val_12 2008-12-31 12 +230 val_230 2008-12-31 12 +181 val_181 2008-12-31 12 +67 val_67 2008-12-31 12 +260 val_260 2008-12-31 12 +404 val_404 2008-12-31 12 +384 val_384 2008-12-31 12 +489 val_489 2008-12-31 12 +353 val_353 2008-12-31 12 +373 val_373 2008-12-31 12 +272 val_272 2008-12-31 12 +138 val_138 2008-12-31 12 +217 val_217 2008-12-31 12 +84 val_84 2008-12-31 12 +348 val_348 2008-12-31 12 +466 val_466 2008-12-31 12 +58 val_58 2008-12-31 12 +8 val_8 2008-12-31 12 +411 val_411 2008-12-31 12 +230 val_230 2008-12-31 12 +208 val_208 2008-12-31 12 +348 val_348 2008-12-31 12 +24 val_24 2008-12-31 12 +463 val_463 2008-12-31 12 +431 val_431 2008-12-31 12 +179 val_179 2008-12-31 12 +172 val_172 2008-12-31 12 +42 val_42 2008-12-31 12 +129 val_129 2008-12-31 12 +158 val_158 2008-12-31 12 +119 val_119 2008-12-31 12 +496 val_496 2008-12-31 12 +0 val_0 2008-12-31 12 +322 val_322 2008-12-31 12 +197 val_197 2008-12-31 12 +468 val_468 2008-12-31 12 +393 val_393 2008-12-31 12 +454 val_454 2008-12-31 12 +100 val_100 2008-12-31 12 +298 val_298 2008-12-31 12 +199 val_199 2008-12-31 12 +191 val_191 2008-12-31 12 +418 val_418 2008-12-31 12 +96 val_96 2008-12-31 12 +26 val_26 2008-12-31 12 +165 val_165 2008-12-31 12 +327 val_327 2008-12-31 12 +230 val_230 2008-12-31 12 +205 val_205 2008-12-31 12 +120 val_120 2008-12-31 12 +131 val_131 2008-12-31 12 +51 val_51 2008-12-31 12 +404 val_404 2008-12-31 12 +43 val_43 2008-12-31 12 +436 val_436 2008-12-31 12 +156 val_156 2008-12-31 12 +469 val_469 2008-12-31 12 +468 val_468 2008-12-31 12 +308 val_308 2008-12-31 12 +95 val_95 2008-12-31 12 +196 val_196 2008-12-31 12 +288 val_288 2008-12-31 12 +481 val_481 2008-12-31 12 +457 val_457 2008-12-31 12 +98 val_98 2008-12-31 12 +282 val_282 2008-12-31 12 +197 val_197 2008-12-31 12 +187 val_187 2008-12-31 12 +318 val_318 2008-12-31 12 +318 val_318 2008-12-31 12 +409 val_409 2008-12-31 12 +470 val_470 2008-12-31 12 +137 val_137 2008-12-31 12 +369 val_369 2008-12-31 12 +316 val_316 2008-12-31 12 +169 val_169 2008-12-31 12 +413 val_413 2008-12-31 12 +85 val_85 2008-12-31 12 +77 val_77 2008-12-31 12 +0 val_0 2008-12-31 12 +490 val_490 2008-12-31 12 +87 val_87 2008-12-31 12 +364 val_364 2008-12-31 12 +179 val_179 2008-12-31 12 +118 val_118 2008-12-31 12 +134 val_134 2008-12-31 12 +395 val_395 2008-12-31 12 +282 val_282 2008-12-31 12 +138 val_138 2008-12-31 12 +238 val_238 2008-12-31 12 +419 val_419 2008-12-31 12 +15 val_15 2008-12-31 12 +118 val_118 2008-12-31 12 +72 val_72 2008-12-31 12 +90 val_90 2008-12-31 12 +307 val_307 2008-12-31 12 +19 val_19 2008-12-31 12 +435 val_435 2008-12-31 12 +10 val_10 2008-12-31 12 +277 val_277 2008-12-31 12 +273 val_273 2008-12-31 12 +306 val_306 2008-12-31 12 +224 val_224 2008-12-31 12 +309 val_309 2008-12-31 12 +389 val_389 2008-12-31 12 +327 val_327 2008-12-31 12 +242 val_242 2008-12-31 12 +369 val_369 2008-12-31 12 +392 val_392 2008-12-31 12 +272 val_272 2008-12-31 12 +331 val_331 2008-12-31 12 +401 val_401 2008-12-31 12 +242 val_242 2008-12-31 12 +452 val_452 2008-12-31 12 +177 val_177 2008-12-31 12 +226 val_226 2008-12-31 12 +5 val_5 2008-12-31 12 +497 val_497 2008-12-31 12 +402 val_402 2008-12-31 12 +396 val_396 2008-12-31 12 +317 val_317 2008-12-31 12 +395 val_395 2008-12-31 12 +58 val_58 2008-12-31 12 +35 val_35 2008-12-31 12 +336 val_336 2008-12-31 12 +95 val_95 2008-12-31 12 +11 val_11 2008-12-31 12 +168 val_168 2008-12-31 12 +34 val_34 2008-12-31 12 +229 val_229 2008-12-31 12 +233 val_233 2008-12-31 12 +143 val_143 2008-12-31 12 +472 val_472 2008-12-31 12 +322 val_322 2008-12-31 12 +498 val_498 2008-12-31 12 +160 val_160 2008-12-31 12 +195 val_195 2008-12-31 12 +42 val_42 2008-12-31 12 +321 val_321 2008-12-31 12 +430 val_430 2008-12-31 12 +119 val_119 2008-12-31 12 +489 val_489 2008-12-31 12 +458 val_458 2008-12-31 12 +78 val_78 2008-12-31 12 +76 val_76 2008-12-31 12 +41 val_41 2008-12-31 12 +223 val_223 2008-12-31 12 +492 val_492 2008-12-31 12 +149 val_149 2008-12-31 12 +449 val_449 2008-12-31 12 +218 val_218 2008-12-31 12 +228 val_228 2008-12-31 12 +138 val_138 2008-12-31 12 +453 val_453 2008-12-31 12 +30 val_30 2008-12-31 12 +209 val_209 2008-12-31 12 +64 val_64 2008-12-31 12 +468 val_468 2008-12-31 12 +76 val_76 2008-12-31 12 +74 val_74 2008-12-31 12 +342 val_342 2008-12-31 12 +69 val_69 2008-12-31 12 +230 val_230 2008-12-31 12 +33 val_33 2008-12-31 12 +368 val_368 2008-12-31 12 +103 val_103 2008-12-31 12 +296 val_296 2008-12-31 12 +113 val_113 2008-12-31 12 +216 val_216 2008-12-31 12 +367 val_367 2008-12-31 12 +344 val_344 2008-12-31 12 +167 val_167 2008-12-31 12 +274 val_274 2008-12-31 12 +219 val_219 2008-12-31 12 +239 val_239 2008-12-31 12 +485 val_485 2008-12-31 12 +116 val_116 2008-12-31 12 +223 val_223 2008-12-31 12 +256 val_256 2008-12-31 12 +263 val_263 2008-12-31 12 +70 val_70 2008-12-31 12 +487 val_487 2008-12-31 12 +480 val_480 2008-12-31 12 +401 val_401 2008-12-31 12 +288 val_288 2008-12-31 12 +191 val_191 2008-12-31 12 +5 val_5 2008-12-31 12 +244 val_244 2008-12-31 12 +438 val_438 2008-12-31 12 +128 val_128 2008-12-31 12 +467 val_467 2008-12-31 12 +432 val_432 2008-12-31 12 +202 val_202 2008-12-31 12 +316 val_316 2008-12-31 12 +229 val_229 2008-12-31 12 +469 val_469 2008-12-31 12 +463 val_463 2008-12-31 12 +280 val_280 2008-12-31 12 +2 val_2 2008-12-31 12 +35 val_35 2008-12-31 12 +283 val_283 2008-12-31 12 +331 val_331 2008-12-31 12 +235 val_235 2008-12-31 12 +80 val_80 2008-12-31 12 +44 val_44 2008-12-31 12 +193 val_193 2008-12-31 12 +321 val_321 2008-12-31 12 +335 val_335 2008-12-31 12 +104 val_104 2008-12-31 12 +466 val_466 2008-12-31 12 +366 val_366 2008-12-31 12 +175 val_175 2008-12-31 12 +403 val_403 2008-12-31 12 +483 val_483 2008-12-31 12 +53 val_53 2008-12-31 12 +105 val_105 2008-12-31 12 +257 val_257 2008-12-31 12 +406 val_406 2008-12-31 12 +409 val_409 2008-12-31 12 +190 val_190 2008-12-31 12 +406 val_406 2008-12-31 12 +401 val_401 2008-12-31 12 +114 val_114 2008-12-31 12 +258 val_258 2008-12-31 12 +90 val_90 2008-12-31 12 +203 val_203 2008-12-31 12 +262 val_262 2008-12-31 12 +348 val_348 2008-12-31 12 +424 val_424 2008-12-31 12 +12 val_12 2008-12-31 12 +396 val_396 2008-12-31 12 +201 val_201 2008-12-31 12 +217 val_217 2008-12-31 12 +164 val_164 2008-12-31 12 +431 val_431 2008-12-31 12 +454 val_454 2008-12-31 12 +478 val_478 2008-12-31 12 +298 val_298 2008-12-31 12 +125 val_125 2008-12-31 12 +431 val_431 2008-12-31 12 +164 val_164 2008-12-31 12 +424 val_424 2008-12-31 12 +187 val_187 2008-12-31 12 +382 val_382 2008-12-31 12 +5 val_5 2008-12-31 12 +70 val_70 2008-12-31 12 +397 val_397 2008-12-31 12 +480 val_480 2008-12-31 12 +291 val_291 2008-12-31 12 +24 val_24 2008-12-31 12 +351 val_351 2008-12-31 12 +255 val_255 2008-12-31 12 +104 val_104 2008-12-31 12 +70 val_70 2008-12-31 12 +163 val_163 2008-12-31 12 +438 val_438 2008-12-31 12 +119 val_119 2008-12-31 12 +414 val_414 2008-12-31 12 +200 val_200 2008-12-31 12 +491 val_491 2008-12-31 12 +237 val_237 2008-12-31 12 +439 val_439 2008-12-31 12 +360 val_360 2008-12-31 12 +248 val_248 2008-12-31 12 +479 val_479 2008-12-31 12 +305 val_305 2008-12-31 12 +417 val_417 2008-12-31 12 +199 val_199 2008-12-31 12 +444 val_444 2008-12-31 12 +120 val_120 2008-12-31 12 +429 val_429 2008-12-31 12 +169 val_169 2008-12-31 12 +443 val_443 2008-12-31 12 +323 val_323 2008-12-31 12 +325 val_325 2008-12-31 12 +277 val_277 2008-12-31 12 +230 val_230 2008-12-31 12 +478 val_478 2008-12-31 12 +178 val_178 2008-12-31 12 +468 val_468 2008-12-31 12 +310 val_310 2008-12-31 12 +317 val_317 2008-12-31 12 +333 val_333 2008-12-31 12 +493 val_493 2008-12-31 12 +460 val_460 2008-12-31 12 +207 val_207 2008-12-31 12 +249 val_249 2008-12-31 12 +265 val_265 2008-12-31 12 +480 val_480 2008-12-31 12 +83 val_83 2008-12-31 12 +136 val_136 2008-12-31 12 +353 val_353 2008-12-31 12 +172 val_172 2008-12-31 12 +214 val_214 2008-12-31 12 +462 val_462 2008-12-31 12 +233 val_233 2008-12-31 12 +406 val_406 2008-12-31 12 +133 val_133 2008-12-31 12 +175 val_175 2008-12-31 12 +189 val_189 2008-12-31 12 +454 val_454 2008-12-31 12 +375 val_375 2008-12-31 12 +401 val_401 2008-12-31 12 +421 val_421 2008-12-31 12 +407 val_407 2008-12-31 12 +384 val_384 2008-12-31 12 +256 val_256 2008-12-31 12 +26 val_26 2008-12-31 12 +134 val_134 2008-12-31 12 +67 val_67 2008-12-31 12 +384 val_384 2008-12-31 12 +379 val_379 2008-12-31 12 +18 val_18 2008-12-31 12 +462 val_462 2008-12-31 12 +492 val_492 2008-12-31 12 +100 val_100 2008-12-31 12 +298 val_298 2008-12-31 12 +9 val_9 2008-12-31 12 +341 val_341 2008-12-31 12 +498 val_498 2008-12-31 12 +146 val_146 2008-12-31 12 +458 val_458 2008-12-31 12 +362 val_362 2008-12-31 12 +186 val_186 2008-12-31 12 +285 val_285 2008-12-31 12 +348 val_348 2008-12-31 12 +167 val_167 2008-12-31 12 +18 val_18 2008-12-31 12 +273 val_273 2008-12-31 12 +183 val_183 2008-12-31 12 +281 val_281 2008-12-31 12 +344 val_344 2008-12-31 12 +97 val_97 2008-12-31 12 +469 val_469 2008-12-31 12 +315 val_315 2008-12-31 12 +84 val_84 2008-12-31 12 +28 val_28 2008-12-31 12 +37 val_37 2008-12-31 12 +448 val_448 2008-12-31 12 +152 val_152 2008-12-31 12 +348 val_348 2008-12-31 12 +307 val_307 2008-12-31 12 +194 val_194 2008-12-31 12 +414 val_414 2008-12-31 12 +477 val_477 2008-12-31 12 +222 val_222 2008-12-31 12 +126 val_126 2008-12-31 12 +90 val_90 2008-12-31 12 +169 val_169 2008-12-31 12 +403 val_403 2008-12-31 12 +400 val_400 2008-12-31 12 +200 val_200 2008-12-31 12 +97 val_97 2008-12-31 12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-2-9c0d4354b6a9be351fa32a66ff58a177 b/sql/hive/src/test/resources/golden/load_dyn_part1-2-9c0d4354b6a9be351fa32a66ff58a177 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-3-e17dba1884f6a1d2b5002925afd7c2d3 b/sql/hive/src/test/resources/golden/load_dyn_part1-3-e17dba1884f6a1d2b5002925afd7c2d3 new file mode 100644 index 0000000000000..e0dcec0869734 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part1-3-e17dba1884f6a1d2b5002925afd7c2d3 @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part1, dbName:default, owner:marmbrus, createTime:1390899591, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{p3=v3, transient_lastDdlTime=1390899591}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-4-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part1-4-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part1-4-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-5-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part1-5-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part1-5-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-6-255ad4511130fb8c9ee9d65b7c95743f b/sql/hive/src/test/resources/golden/load_dyn_part1-6-255ad4511130fb8c9ee9d65b7c95743f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-7-a33b2c9d962e4921c98e62387f3989f7 b/sql/hive/src/test/resources/golden/load_dyn_part1-7-a33b2c9d962e4921c98e62387f3989f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-8-ea921e0af59a4940a11c94143b1c4b32 b/sql/hive/src/test/resources/golden/load_dyn_part1-8-ea921e0af59a4940a11c94143b1c4b32 new file mode 100644 index 0000000000000..0a88e449f625a --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part1-8-ea921e0af59a4940a11c94143b1c4b32 @@ -0,0 +1,2 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part1-9-30bc31441828a053d1a675b225a5d617 b/sql/hive/src/test/resources/golden/load_dyn_part1-9-30bc31441828a053d1a675b225a5d617 new file mode 100644 index 0000000000000..1634adfc4d70d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part1-9-30bc31441828a053d1a675b225a5d617 @@ -0,0 +1,2 @@ +ds=2008-12-31/hr=11 +ds=2008-12-31/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part10-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..e9c723bbd136e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part10-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-1-a5b30075b6c79d1a02e240f46ea1d318 b/sql/hive/src/test/resources/golden/load_dyn_part10-1-a5b30075b6c79d1a02e240f46ea1d318 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-2-151ba0c3b8317902f1235ac07d58135e b/sql/hive/src/test/resources/golden/load_dyn_part10-2-151ba0c3b8317902f1235ac07d58135e new file mode 100644 index 0000000000000..9d3a522ff81dc --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part10-2-151ba0c3b8317902f1235ac07d58135e @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part10, dbName:default, owner:marmbrus, createTime:1389738873, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4075462935071533647/nzhang_part10, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{transient_lastDdlTime=1389738873}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part10-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part10-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-4-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part10-4-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part10-4-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-5-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part10-5-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part10-5-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-6-48d24be440fbbd48f82efeeb05f663c9 b/sql/hive/src/test/resources/golden/load_dyn_part10-6-48d24be440fbbd48f82efeeb05f663c9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-7-17d0630e1125ac326c5a7a83e6b8bcc3 b/sql/hive/src/test/resources/golden/load_dyn_part10-7-17d0630e1125ac326c5a7a83e6b8bcc3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-8-245027204484e281e1cfaf74386d2967 b/sql/hive/src/test/resources/golden/load_dyn_part10-8-245027204484e281e1cfaf74386d2967 new file mode 100644 index 0000000000000..574727266b183 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part10-8-245027204484e281e1cfaf74386d2967 @@ -0,0 +1,2 @@ +ds=2008-12-31/hr=11 +ds=2008-12-31/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part10-9-eb29a5b2392bf821b2ff51b70863d531 b/sql/hive/src/test/resources/golden/load_dyn_part10-9-eb29a5b2392bf821b2ff51b70863d531 new file mode 100644 index 0000000000000..3994499f92576 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part10-9-eb29a5b2392bf821b2ff51b70863d531 @@ -0,0 +1,1000 @@ +238 val_238 2008-12-31 11 +86 val_86 2008-12-31 11 +311 val_311 2008-12-31 11 +27 val_27 2008-12-31 11 +165 val_165 2008-12-31 11 +409 val_409 2008-12-31 11 +255 val_255 2008-12-31 11 +278 val_278 2008-12-31 11 +98 val_98 2008-12-31 11 +484 val_484 2008-12-31 11 +265 val_265 2008-12-31 11 +193 val_193 2008-12-31 11 +401 val_401 2008-12-31 11 +150 val_150 2008-12-31 11 +273 val_273 2008-12-31 11 +224 val_224 2008-12-31 11 +369 val_369 2008-12-31 11 +66 val_66 2008-12-31 11 +128 val_128 2008-12-31 11 +213 val_213 2008-12-31 11 +146 val_146 2008-12-31 11 +406 val_406 2008-12-31 11 +429 val_429 2008-12-31 11 +374 val_374 2008-12-31 11 +152 val_152 2008-12-31 11 +469 val_469 2008-12-31 11 +145 val_145 2008-12-31 11 +495 val_495 2008-12-31 11 +37 val_37 2008-12-31 11 +327 val_327 2008-12-31 11 +281 val_281 2008-12-31 11 +277 val_277 2008-12-31 11 +209 val_209 2008-12-31 11 +15 val_15 2008-12-31 11 +82 val_82 2008-12-31 11 +403 val_403 2008-12-31 11 +166 val_166 2008-12-31 11 +417 val_417 2008-12-31 11 +430 val_430 2008-12-31 11 +252 val_252 2008-12-31 11 +292 val_292 2008-12-31 11 +219 val_219 2008-12-31 11 +287 val_287 2008-12-31 11 +153 val_153 2008-12-31 11 +193 val_193 2008-12-31 11 +338 val_338 2008-12-31 11 +446 val_446 2008-12-31 11 +459 val_459 2008-12-31 11 +394 val_394 2008-12-31 11 +237 val_237 2008-12-31 11 +482 val_482 2008-12-31 11 +174 val_174 2008-12-31 11 +413 val_413 2008-12-31 11 +494 val_494 2008-12-31 11 +207 val_207 2008-12-31 11 +199 val_199 2008-12-31 11 +466 val_466 2008-12-31 11 +208 val_208 2008-12-31 11 +174 val_174 2008-12-31 11 +399 val_399 2008-12-31 11 +396 val_396 2008-12-31 11 +247 val_247 2008-12-31 11 +417 val_417 2008-12-31 11 +489 val_489 2008-12-31 11 +162 val_162 2008-12-31 11 +377 val_377 2008-12-31 11 +397 val_397 2008-12-31 11 +309 val_309 2008-12-31 11 +365 val_365 2008-12-31 11 +266 val_266 2008-12-31 11 +439 val_439 2008-12-31 11 +342 val_342 2008-12-31 11 +367 val_367 2008-12-31 11 +325 val_325 2008-12-31 11 +167 val_167 2008-12-31 11 +195 val_195 2008-12-31 11 +475 val_475 2008-12-31 11 +17 val_17 2008-12-31 11 +113 val_113 2008-12-31 11 +155 val_155 2008-12-31 11 +203 val_203 2008-12-31 11 +339 val_339 2008-12-31 11 +0 val_0 2008-12-31 11 +455 val_455 2008-12-31 11 +128 val_128 2008-12-31 11 +311 val_311 2008-12-31 11 +316 val_316 2008-12-31 11 +57 val_57 2008-12-31 11 +302 val_302 2008-12-31 11 +205 val_205 2008-12-31 11 +149 val_149 2008-12-31 11 +438 val_438 2008-12-31 11 +345 val_345 2008-12-31 11 +129 val_129 2008-12-31 11 +170 val_170 2008-12-31 11 +20 val_20 2008-12-31 11 +489 val_489 2008-12-31 11 +157 val_157 2008-12-31 11 +378 val_378 2008-12-31 11 +221 val_221 2008-12-31 11 +92 val_92 2008-12-31 11 +111 val_111 2008-12-31 11 +47 val_47 2008-12-31 11 +72 val_72 2008-12-31 11 +4 val_4 2008-12-31 11 +280 val_280 2008-12-31 11 +35 val_35 2008-12-31 11 +427 val_427 2008-12-31 11 +277 val_277 2008-12-31 11 +208 val_208 2008-12-31 11 +356 val_356 2008-12-31 11 +399 val_399 2008-12-31 11 +169 val_169 2008-12-31 11 +382 val_382 2008-12-31 11 +498 val_498 2008-12-31 11 +125 val_125 2008-12-31 11 +386 val_386 2008-12-31 11 +437 val_437 2008-12-31 11 +469 val_469 2008-12-31 11 +192 val_192 2008-12-31 11 +286 val_286 2008-12-31 11 +187 val_187 2008-12-31 11 +176 val_176 2008-12-31 11 +54 val_54 2008-12-31 11 +459 val_459 2008-12-31 11 +51 val_51 2008-12-31 11 +138 val_138 2008-12-31 11 +103 val_103 2008-12-31 11 +239 val_239 2008-12-31 11 +213 val_213 2008-12-31 11 +216 val_216 2008-12-31 11 +430 val_430 2008-12-31 11 +278 val_278 2008-12-31 11 +176 val_176 2008-12-31 11 +289 val_289 2008-12-31 11 +221 val_221 2008-12-31 11 +65 val_65 2008-12-31 11 +318 val_318 2008-12-31 11 +332 val_332 2008-12-31 11 +311 val_311 2008-12-31 11 +275 val_275 2008-12-31 11 +137 val_137 2008-12-31 11 +241 val_241 2008-12-31 11 +83 val_83 2008-12-31 11 +333 val_333 2008-12-31 11 +180 val_180 2008-12-31 11 +284 val_284 2008-12-31 11 +12 val_12 2008-12-31 11 +230 val_230 2008-12-31 11 +181 val_181 2008-12-31 11 +67 val_67 2008-12-31 11 +260 val_260 2008-12-31 11 +404 val_404 2008-12-31 11 +384 val_384 2008-12-31 11 +489 val_489 2008-12-31 11 +353 val_353 2008-12-31 11 +373 val_373 2008-12-31 11 +272 val_272 2008-12-31 11 +138 val_138 2008-12-31 11 +217 val_217 2008-12-31 11 +84 val_84 2008-12-31 11 +348 val_348 2008-12-31 11 +466 val_466 2008-12-31 11 +58 val_58 2008-12-31 11 +8 val_8 2008-12-31 11 +411 val_411 2008-12-31 11 +230 val_230 2008-12-31 11 +208 val_208 2008-12-31 11 +348 val_348 2008-12-31 11 +24 val_24 2008-12-31 11 +463 val_463 2008-12-31 11 +431 val_431 2008-12-31 11 +179 val_179 2008-12-31 11 +172 val_172 2008-12-31 11 +42 val_42 2008-12-31 11 +129 val_129 2008-12-31 11 +158 val_158 2008-12-31 11 +119 val_119 2008-12-31 11 +496 val_496 2008-12-31 11 +0 val_0 2008-12-31 11 +322 val_322 2008-12-31 11 +197 val_197 2008-12-31 11 +468 val_468 2008-12-31 11 +393 val_393 2008-12-31 11 +454 val_454 2008-12-31 11 +100 val_100 2008-12-31 11 +298 val_298 2008-12-31 11 +199 val_199 2008-12-31 11 +191 val_191 2008-12-31 11 +418 val_418 2008-12-31 11 +96 val_96 2008-12-31 11 +26 val_26 2008-12-31 11 +165 val_165 2008-12-31 11 +327 val_327 2008-12-31 11 +230 val_230 2008-12-31 11 +205 val_205 2008-12-31 11 +120 val_120 2008-12-31 11 +131 val_131 2008-12-31 11 +51 val_51 2008-12-31 11 +404 val_404 2008-12-31 11 +43 val_43 2008-12-31 11 +436 val_436 2008-12-31 11 +156 val_156 2008-12-31 11 +469 val_469 2008-12-31 11 +468 val_468 2008-12-31 11 +308 val_308 2008-12-31 11 +95 val_95 2008-12-31 11 +196 val_196 2008-12-31 11 +288 val_288 2008-12-31 11 +481 val_481 2008-12-31 11 +457 val_457 2008-12-31 11 +98 val_98 2008-12-31 11 +282 val_282 2008-12-31 11 +197 val_197 2008-12-31 11 +187 val_187 2008-12-31 11 +318 val_318 2008-12-31 11 +318 val_318 2008-12-31 11 +409 val_409 2008-12-31 11 +470 val_470 2008-12-31 11 +137 val_137 2008-12-31 11 +369 val_369 2008-12-31 11 +316 val_316 2008-12-31 11 +169 val_169 2008-12-31 11 +413 val_413 2008-12-31 11 +85 val_85 2008-12-31 11 +77 val_77 2008-12-31 11 +0 val_0 2008-12-31 11 +490 val_490 2008-12-31 11 +87 val_87 2008-12-31 11 +364 val_364 2008-12-31 11 +179 val_179 2008-12-31 11 +118 val_118 2008-12-31 11 +134 val_134 2008-12-31 11 +395 val_395 2008-12-31 11 +282 val_282 2008-12-31 11 +138 val_138 2008-12-31 11 +238 val_238 2008-12-31 11 +419 val_419 2008-12-31 11 +15 val_15 2008-12-31 11 +118 val_118 2008-12-31 11 +72 val_72 2008-12-31 11 +90 val_90 2008-12-31 11 +307 val_307 2008-12-31 11 +19 val_19 2008-12-31 11 +435 val_435 2008-12-31 11 +10 val_10 2008-12-31 11 +277 val_277 2008-12-31 11 +273 val_273 2008-12-31 11 +306 val_306 2008-12-31 11 +224 val_224 2008-12-31 11 +309 val_309 2008-12-31 11 +389 val_389 2008-12-31 11 +327 val_327 2008-12-31 11 +242 val_242 2008-12-31 11 +369 val_369 2008-12-31 11 +392 val_392 2008-12-31 11 +272 val_272 2008-12-31 11 +331 val_331 2008-12-31 11 +401 val_401 2008-12-31 11 +242 val_242 2008-12-31 11 +452 val_452 2008-12-31 11 +177 val_177 2008-12-31 11 +226 val_226 2008-12-31 11 +5 val_5 2008-12-31 11 +497 val_497 2008-12-31 11 +402 val_402 2008-12-31 11 +396 val_396 2008-12-31 11 +317 val_317 2008-12-31 11 +395 val_395 2008-12-31 11 +58 val_58 2008-12-31 11 +35 val_35 2008-12-31 11 +336 val_336 2008-12-31 11 +95 val_95 2008-12-31 11 +11 val_11 2008-12-31 11 +168 val_168 2008-12-31 11 +34 val_34 2008-12-31 11 +229 val_229 2008-12-31 11 +233 val_233 2008-12-31 11 +143 val_143 2008-12-31 11 +472 val_472 2008-12-31 11 +322 val_322 2008-12-31 11 +498 val_498 2008-12-31 11 +160 val_160 2008-12-31 11 +195 val_195 2008-12-31 11 +42 val_42 2008-12-31 11 +321 val_321 2008-12-31 11 +430 val_430 2008-12-31 11 +119 val_119 2008-12-31 11 +489 val_489 2008-12-31 11 +458 val_458 2008-12-31 11 +78 val_78 2008-12-31 11 +76 val_76 2008-12-31 11 +41 val_41 2008-12-31 11 +223 val_223 2008-12-31 11 +492 val_492 2008-12-31 11 +149 val_149 2008-12-31 11 +449 val_449 2008-12-31 11 +218 val_218 2008-12-31 11 +228 val_228 2008-12-31 11 +138 val_138 2008-12-31 11 +453 val_453 2008-12-31 11 +30 val_30 2008-12-31 11 +209 val_209 2008-12-31 11 +64 val_64 2008-12-31 11 +468 val_468 2008-12-31 11 +76 val_76 2008-12-31 11 +74 val_74 2008-12-31 11 +342 val_342 2008-12-31 11 +69 val_69 2008-12-31 11 +230 val_230 2008-12-31 11 +33 val_33 2008-12-31 11 +368 val_368 2008-12-31 11 +103 val_103 2008-12-31 11 +296 val_296 2008-12-31 11 +113 val_113 2008-12-31 11 +216 val_216 2008-12-31 11 +367 val_367 2008-12-31 11 +344 val_344 2008-12-31 11 +167 val_167 2008-12-31 11 +274 val_274 2008-12-31 11 +219 val_219 2008-12-31 11 +239 val_239 2008-12-31 11 +485 val_485 2008-12-31 11 +116 val_116 2008-12-31 11 +223 val_223 2008-12-31 11 +256 val_256 2008-12-31 11 +263 val_263 2008-12-31 11 +70 val_70 2008-12-31 11 +487 val_487 2008-12-31 11 +480 val_480 2008-12-31 11 +401 val_401 2008-12-31 11 +288 val_288 2008-12-31 11 +191 val_191 2008-12-31 11 +5 val_5 2008-12-31 11 +244 val_244 2008-12-31 11 +438 val_438 2008-12-31 11 +128 val_128 2008-12-31 11 +467 val_467 2008-12-31 11 +432 val_432 2008-12-31 11 +202 val_202 2008-12-31 11 +316 val_316 2008-12-31 11 +229 val_229 2008-12-31 11 +469 val_469 2008-12-31 11 +463 val_463 2008-12-31 11 +280 val_280 2008-12-31 11 +2 val_2 2008-12-31 11 +35 val_35 2008-12-31 11 +283 val_283 2008-12-31 11 +331 val_331 2008-12-31 11 +235 val_235 2008-12-31 11 +80 val_80 2008-12-31 11 +44 val_44 2008-12-31 11 +193 val_193 2008-12-31 11 +321 val_321 2008-12-31 11 +335 val_335 2008-12-31 11 +104 val_104 2008-12-31 11 +466 val_466 2008-12-31 11 +366 val_366 2008-12-31 11 +175 val_175 2008-12-31 11 +403 val_403 2008-12-31 11 +483 val_483 2008-12-31 11 +53 val_53 2008-12-31 11 +105 val_105 2008-12-31 11 +257 val_257 2008-12-31 11 +406 val_406 2008-12-31 11 +409 val_409 2008-12-31 11 +190 val_190 2008-12-31 11 +406 val_406 2008-12-31 11 +401 val_401 2008-12-31 11 +114 val_114 2008-12-31 11 +258 val_258 2008-12-31 11 +90 val_90 2008-12-31 11 +203 val_203 2008-12-31 11 +262 val_262 2008-12-31 11 +348 val_348 2008-12-31 11 +424 val_424 2008-12-31 11 +12 val_12 2008-12-31 11 +396 val_396 2008-12-31 11 +201 val_201 2008-12-31 11 +217 val_217 2008-12-31 11 +164 val_164 2008-12-31 11 +431 val_431 2008-12-31 11 +454 val_454 2008-12-31 11 +478 val_478 2008-12-31 11 +298 val_298 2008-12-31 11 +125 val_125 2008-12-31 11 +431 val_431 2008-12-31 11 +164 val_164 2008-12-31 11 +424 val_424 2008-12-31 11 +187 val_187 2008-12-31 11 +382 val_382 2008-12-31 11 +5 val_5 2008-12-31 11 +70 val_70 2008-12-31 11 +397 val_397 2008-12-31 11 +480 val_480 2008-12-31 11 +291 val_291 2008-12-31 11 +24 val_24 2008-12-31 11 +351 val_351 2008-12-31 11 +255 val_255 2008-12-31 11 +104 val_104 2008-12-31 11 +70 val_70 2008-12-31 11 +163 val_163 2008-12-31 11 +438 val_438 2008-12-31 11 +119 val_119 2008-12-31 11 +414 val_414 2008-12-31 11 +200 val_200 2008-12-31 11 +491 val_491 2008-12-31 11 +237 val_237 2008-12-31 11 +439 val_439 2008-12-31 11 +360 val_360 2008-12-31 11 +248 val_248 2008-12-31 11 +479 val_479 2008-12-31 11 +305 val_305 2008-12-31 11 +417 val_417 2008-12-31 11 +199 val_199 2008-12-31 11 +444 val_444 2008-12-31 11 +120 val_120 2008-12-31 11 +429 val_429 2008-12-31 11 +169 val_169 2008-12-31 11 +443 val_443 2008-12-31 11 +323 val_323 2008-12-31 11 +325 val_325 2008-12-31 11 +277 val_277 2008-12-31 11 +230 val_230 2008-12-31 11 +478 val_478 2008-12-31 11 +178 val_178 2008-12-31 11 +468 val_468 2008-12-31 11 +310 val_310 2008-12-31 11 +317 val_317 2008-12-31 11 +333 val_333 2008-12-31 11 +493 val_493 2008-12-31 11 +460 val_460 2008-12-31 11 +207 val_207 2008-12-31 11 +249 val_249 2008-12-31 11 +265 val_265 2008-12-31 11 +480 val_480 2008-12-31 11 +83 val_83 2008-12-31 11 +136 val_136 2008-12-31 11 +353 val_353 2008-12-31 11 +172 val_172 2008-12-31 11 +214 val_214 2008-12-31 11 +462 val_462 2008-12-31 11 +233 val_233 2008-12-31 11 +406 val_406 2008-12-31 11 +133 val_133 2008-12-31 11 +175 val_175 2008-12-31 11 +189 val_189 2008-12-31 11 +454 val_454 2008-12-31 11 +375 val_375 2008-12-31 11 +401 val_401 2008-12-31 11 +421 val_421 2008-12-31 11 +407 val_407 2008-12-31 11 +384 val_384 2008-12-31 11 +256 val_256 2008-12-31 11 +26 val_26 2008-12-31 11 +134 val_134 2008-12-31 11 +67 val_67 2008-12-31 11 +384 val_384 2008-12-31 11 +379 val_379 2008-12-31 11 +18 val_18 2008-12-31 11 +462 val_462 2008-12-31 11 +492 val_492 2008-12-31 11 +100 val_100 2008-12-31 11 +298 val_298 2008-12-31 11 +9 val_9 2008-12-31 11 +341 val_341 2008-12-31 11 +498 val_498 2008-12-31 11 +146 val_146 2008-12-31 11 +458 val_458 2008-12-31 11 +362 val_362 2008-12-31 11 +186 val_186 2008-12-31 11 +285 val_285 2008-12-31 11 +348 val_348 2008-12-31 11 +167 val_167 2008-12-31 11 +18 val_18 2008-12-31 11 +273 val_273 2008-12-31 11 +183 val_183 2008-12-31 11 +281 val_281 2008-12-31 11 +344 val_344 2008-12-31 11 +97 val_97 2008-12-31 11 +469 val_469 2008-12-31 11 +315 val_315 2008-12-31 11 +84 val_84 2008-12-31 11 +28 val_28 2008-12-31 11 +37 val_37 2008-12-31 11 +448 val_448 2008-12-31 11 +152 val_152 2008-12-31 11 +348 val_348 2008-12-31 11 +307 val_307 2008-12-31 11 +194 val_194 2008-12-31 11 +414 val_414 2008-12-31 11 +477 val_477 2008-12-31 11 +222 val_222 2008-12-31 11 +126 val_126 2008-12-31 11 +90 val_90 2008-12-31 11 +169 val_169 2008-12-31 11 +403 val_403 2008-12-31 11 +400 val_400 2008-12-31 11 +200 val_200 2008-12-31 11 +97 val_97 2008-12-31 11 +238 val_238 2008-12-31 12 +86 val_86 2008-12-31 12 +311 val_311 2008-12-31 12 +27 val_27 2008-12-31 12 +165 val_165 2008-12-31 12 +409 val_409 2008-12-31 12 +255 val_255 2008-12-31 12 +278 val_278 2008-12-31 12 +98 val_98 2008-12-31 12 +484 val_484 2008-12-31 12 +265 val_265 2008-12-31 12 +193 val_193 2008-12-31 12 +401 val_401 2008-12-31 12 +150 val_150 2008-12-31 12 +273 val_273 2008-12-31 12 +224 val_224 2008-12-31 12 +369 val_369 2008-12-31 12 +66 val_66 2008-12-31 12 +128 val_128 2008-12-31 12 +213 val_213 2008-12-31 12 +146 val_146 2008-12-31 12 +406 val_406 2008-12-31 12 +429 val_429 2008-12-31 12 +374 val_374 2008-12-31 12 +152 val_152 2008-12-31 12 +469 val_469 2008-12-31 12 +145 val_145 2008-12-31 12 +495 val_495 2008-12-31 12 +37 val_37 2008-12-31 12 +327 val_327 2008-12-31 12 +281 val_281 2008-12-31 12 +277 val_277 2008-12-31 12 +209 val_209 2008-12-31 12 +15 val_15 2008-12-31 12 +82 val_82 2008-12-31 12 +403 val_403 2008-12-31 12 +166 val_166 2008-12-31 12 +417 val_417 2008-12-31 12 +430 val_430 2008-12-31 12 +252 val_252 2008-12-31 12 +292 val_292 2008-12-31 12 +219 val_219 2008-12-31 12 +287 val_287 2008-12-31 12 +153 val_153 2008-12-31 12 +193 val_193 2008-12-31 12 +338 val_338 2008-12-31 12 +446 val_446 2008-12-31 12 +459 val_459 2008-12-31 12 +394 val_394 2008-12-31 12 +237 val_237 2008-12-31 12 +482 val_482 2008-12-31 12 +174 val_174 2008-12-31 12 +413 val_413 2008-12-31 12 +494 val_494 2008-12-31 12 +207 val_207 2008-12-31 12 +199 val_199 2008-12-31 12 +466 val_466 2008-12-31 12 +208 val_208 2008-12-31 12 +174 val_174 2008-12-31 12 +399 val_399 2008-12-31 12 +396 val_396 2008-12-31 12 +247 val_247 2008-12-31 12 +417 val_417 2008-12-31 12 +489 val_489 2008-12-31 12 +162 val_162 2008-12-31 12 +377 val_377 2008-12-31 12 +397 val_397 2008-12-31 12 +309 val_309 2008-12-31 12 +365 val_365 2008-12-31 12 +266 val_266 2008-12-31 12 +439 val_439 2008-12-31 12 +342 val_342 2008-12-31 12 +367 val_367 2008-12-31 12 +325 val_325 2008-12-31 12 +167 val_167 2008-12-31 12 +195 val_195 2008-12-31 12 +475 val_475 2008-12-31 12 +17 val_17 2008-12-31 12 +113 val_113 2008-12-31 12 +155 val_155 2008-12-31 12 +203 val_203 2008-12-31 12 +339 val_339 2008-12-31 12 +0 val_0 2008-12-31 12 +455 val_455 2008-12-31 12 +128 val_128 2008-12-31 12 +311 val_311 2008-12-31 12 +316 val_316 2008-12-31 12 +57 val_57 2008-12-31 12 +302 val_302 2008-12-31 12 +205 val_205 2008-12-31 12 +149 val_149 2008-12-31 12 +438 val_438 2008-12-31 12 +345 val_345 2008-12-31 12 +129 val_129 2008-12-31 12 +170 val_170 2008-12-31 12 +20 val_20 2008-12-31 12 +489 val_489 2008-12-31 12 +157 val_157 2008-12-31 12 +378 val_378 2008-12-31 12 +221 val_221 2008-12-31 12 +92 val_92 2008-12-31 12 +111 val_111 2008-12-31 12 +47 val_47 2008-12-31 12 +72 val_72 2008-12-31 12 +4 val_4 2008-12-31 12 +280 val_280 2008-12-31 12 +35 val_35 2008-12-31 12 +427 val_427 2008-12-31 12 +277 val_277 2008-12-31 12 +208 val_208 2008-12-31 12 +356 val_356 2008-12-31 12 +399 val_399 2008-12-31 12 +169 val_169 2008-12-31 12 +382 val_382 2008-12-31 12 +498 val_498 2008-12-31 12 +125 val_125 2008-12-31 12 +386 val_386 2008-12-31 12 +437 val_437 2008-12-31 12 +469 val_469 2008-12-31 12 +192 val_192 2008-12-31 12 +286 val_286 2008-12-31 12 +187 val_187 2008-12-31 12 +176 val_176 2008-12-31 12 +54 val_54 2008-12-31 12 +459 val_459 2008-12-31 12 +51 val_51 2008-12-31 12 +138 val_138 2008-12-31 12 +103 val_103 2008-12-31 12 +239 val_239 2008-12-31 12 +213 val_213 2008-12-31 12 +216 val_216 2008-12-31 12 +430 val_430 2008-12-31 12 +278 val_278 2008-12-31 12 +176 val_176 2008-12-31 12 +289 val_289 2008-12-31 12 +221 val_221 2008-12-31 12 +65 val_65 2008-12-31 12 +318 val_318 2008-12-31 12 +332 val_332 2008-12-31 12 +311 val_311 2008-12-31 12 +275 val_275 2008-12-31 12 +137 val_137 2008-12-31 12 +241 val_241 2008-12-31 12 +83 val_83 2008-12-31 12 +333 val_333 2008-12-31 12 +180 val_180 2008-12-31 12 +284 val_284 2008-12-31 12 +12 val_12 2008-12-31 12 +230 val_230 2008-12-31 12 +181 val_181 2008-12-31 12 +67 val_67 2008-12-31 12 +260 val_260 2008-12-31 12 +404 val_404 2008-12-31 12 +384 val_384 2008-12-31 12 +489 val_489 2008-12-31 12 +353 val_353 2008-12-31 12 +373 val_373 2008-12-31 12 +272 val_272 2008-12-31 12 +138 val_138 2008-12-31 12 +217 val_217 2008-12-31 12 +84 val_84 2008-12-31 12 +348 val_348 2008-12-31 12 +466 val_466 2008-12-31 12 +58 val_58 2008-12-31 12 +8 val_8 2008-12-31 12 +411 val_411 2008-12-31 12 +230 val_230 2008-12-31 12 +208 val_208 2008-12-31 12 +348 val_348 2008-12-31 12 +24 val_24 2008-12-31 12 +463 val_463 2008-12-31 12 +431 val_431 2008-12-31 12 +179 val_179 2008-12-31 12 +172 val_172 2008-12-31 12 +42 val_42 2008-12-31 12 +129 val_129 2008-12-31 12 +158 val_158 2008-12-31 12 +119 val_119 2008-12-31 12 +496 val_496 2008-12-31 12 +0 val_0 2008-12-31 12 +322 val_322 2008-12-31 12 +197 val_197 2008-12-31 12 +468 val_468 2008-12-31 12 +393 val_393 2008-12-31 12 +454 val_454 2008-12-31 12 +100 val_100 2008-12-31 12 +298 val_298 2008-12-31 12 +199 val_199 2008-12-31 12 +191 val_191 2008-12-31 12 +418 val_418 2008-12-31 12 +96 val_96 2008-12-31 12 +26 val_26 2008-12-31 12 +165 val_165 2008-12-31 12 +327 val_327 2008-12-31 12 +230 val_230 2008-12-31 12 +205 val_205 2008-12-31 12 +120 val_120 2008-12-31 12 +131 val_131 2008-12-31 12 +51 val_51 2008-12-31 12 +404 val_404 2008-12-31 12 +43 val_43 2008-12-31 12 +436 val_436 2008-12-31 12 +156 val_156 2008-12-31 12 +469 val_469 2008-12-31 12 +468 val_468 2008-12-31 12 +308 val_308 2008-12-31 12 +95 val_95 2008-12-31 12 +196 val_196 2008-12-31 12 +288 val_288 2008-12-31 12 +481 val_481 2008-12-31 12 +457 val_457 2008-12-31 12 +98 val_98 2008-12-31 12 +282 val_282 2008-12-31 12 +197 val_197 2008-12-31 12 +187 val_187 2008-12-31 12 +318 val_318 2008-12-31 12 +318 val_318 2008-12-31 12 +409 val_409 2008-12-31 12 +470 val_470 2008-12-31 12 +137 val_137 2008-12-31 12 +369 val_369 2008-12-31 12 +316 val_316 2008-12-31 12 +169 val_169 2008-12-31 12 +413 val_413 2008-12-31 12 +85 val_85 2008-12-31 12 +77 val_77 2008-12-31 12 +0 val_0 2008-12-31 12 +490 val_490 2008-12-31 12 +87 val_87 2008-12-31 12 +364 val_364 2008-12-31 12 +179 val_179 2008-12-31 12 +118 val_118 2008-12-31 12 +134 val_134 2008-12-31 12 +395 val_395 2008-12-31 12 +282 val_282 2008-12-31 12 +138 val_138 2008-12-31 12 +238 val_238 2008-12-31 12 +419 val_419 2008-12-31 12 +15 val_15 2008-12-31 12 +118 val_118 2008-12-31 12 +72 val_72 2008-12-31 12 +90 val_90 2008-12-31 12 +307 val_307 2008-12-31 12 +19 val_19 2008-12-31 12 +435 val_435 2008-12-31 12 +10 val_10 2008-12-31 12 +277 val_277 2008-12-31 12 +273 val_273 2008-12-31 12 +306 val_306 2008-12-31 12 +224 val_224 2008-12-31 12 +309 val_309 2008-12-31 12 +389 val_389 2008-12-31 12 +327 val_327 2008-12-31 12 +242 val_242 2008-12-31 12 +369 val_369 2008-12-31 12 +392 val_392 2008-12-31 12 +272 val_272 2008-12-31 12 +331 val_331 2008-12-31 12 +401 val_401 2008-12-31 12 +242 val_242 2008-12-31 12 +452 val_452 2008-12-31 12 +177 val_177 2008-12-31 12 +226 val_226 2008-12-31 12 +5 val_5 2008-12-31 12 +497 val_497 2008-12-31 12 +402 val_402 2008-12-31 12 +396 val_396 2008-12-31 12 +317 val_317 2008-12-31 12 +395 val_395 2008-12-31 12 +58 val_58 2008-12-31 12 +35 val_35 2008-12-31 12 +336 val_336 2008-12-31 12 +95 val_95 2008-12-31 12 +11 val_11 2008-12-31 12 +168 val_168 2008-12-31 12 +34 val_34 2008-12-31 12 +229 val_229 2008-12-31 12 +233 val_233 2008-12-31 12 +143 val_143 2008-12-31 12 +472 val_472 2008-12-31 12 +322 val_322 2008-12-31 12 +498 val_498 2008-12-31 12 +160 val_160 2008-12-31 12 +195 val_195 2008-12-31 12 +42 val_42 2008-12-31 12 +321 val_321 2008-12-31 12 +430 val_430 2008-12-31 12 +119 val_119 2008-12-31 12 +489 val_489 2008-12-31 12 +458 val_458 2008-12-31 12 +78 val_78 2008-12-31 12 +76 val_76 2008-12-31 12 +41 val_41 2008-12-31 12 +223 val_223 2008-12-31 12 +492 val_492 2008-12-31 12 +149 val_149 2008-12-31 12 +449 val_449 2008-12-31 12 +218 val_218 2008-12-31 12 +228 val_228 2008-12-31 12 +138 val_138 2008-12-31 12 +453 val_453 2008-12-31 12 +30 val_30 2008-12-31 12 +209 val_209 2008-12-31 12 +64 val_64 2008-12-31 12 +468 val_468 2008-12-31 12 +76 val_76 2008-12-31 12 +74 val_74 2008-12-31 12 +342 val_342 2008-12-31 12 +69 val_69 2008-12-31 12 +230 val_230 2008-12-31 12 +33 val_33 2008-12-31 12 +368 val_368 2008-12-31 12 +103 val_103 2008-12-31 12 +296 val_296 2008-12-31 12 +113 val_113 2008-12-31 12 +216 val_216 2008-12-31 12 +367 val_367 2008-12-31 12 +344 val_344 2008-12-31 12 +167 val_167 2008-12-31 12 +274 val_274 2008-12-31 12 +219 val_219 2008-12-31 12 +239 val_239 2008-12-31 12 +485 val_485 2008-12-31 12 +116 val_116 2008-12-31 12 +223 val_223 2008-12-31 12 +256 val_256 2008-12-31 12 +263 val_263 2008-12-31 12 +70 val_70 2008-12-31 12 +487 val_487 2008-12-31 12 +480 val_480 2008-12-31 12 +401 val_401 2008-12-31 12 +288 val_288 2008-12-31 12 +191 val_191 2008-12-31 12 +5 val_5 2008-12-31 12 +244 val_244 2008-12-31 12 +438 val_438 2008-12-31 12 +128 val_128 2008-12-31 12 +467 val_467 2008-12-31 12 +432 val_432 2008-12-31 12 +202 val_202 2008-12-31 12 +316 val_316 2008-12-31 12 +229 val_229 2008-12-31 12 +469 val_469 2008-12-31 12 +463 val_463 2008-12-31 12 +280 val_280 2008-12-31 12 +2 val_2 2008-12-31 12 +35 val_35 2008-12-31 12 +283 val_283 2008-12-31 12 +331 val_331 2008-12-31 12 +235 val_235 2008-12-31 12 +80 val_80 2008-12-31 12 +44 val_44 2008-12-31 12 +193 val_193 2008-12-31 12 +321 val_321 2008-12-31 12 +335 val_335 2008-12-31 12 +104 val_104 2008-12-31 12 +466 val_466 2008-12-31 12 +366 val_366 2008-12-31 12 +175 val_175 2008-12-31 12 +403 val_403 2008-12-31 12 +483 val_483 2008-12-31 12 +53 val_53 2008-12-31 12 +105 val_105 2008-12-31 12 +257 val_257 2008-12-31 12 +406 val_406 2008-12-31 12 +409 val_409 2008-12-31 12 +190 val_190 2008-12-31 12 +406 val_406 2008-12-31 12 +401 val_401 2008-12-31 12 +114 val_114 2008-12-31 12 +258 val_258 2008-12-31 12 +90 val_90 2008-12-31 12 +203 val_203 2008-12-31 12 +262 val_262 2008-12-31 12 +348 val_348 2008-12-31 12 +424 val_424 2008-12-31 12 +12 val_12 2008-12-31 12 +396 val_396 2008-12-31 12 +201 val_201 2008-12-31 12 +217 val_217 2008-12-31 12 +164 val_164 2008-12-31 12 +431 val_431 2008-12-31 12 +454 val_454 2008-12-31 12 +478 val_478 2008-12-31 12 +298 val_298 2008-12-31 12 +125 val_125 2008-12-31 12 +431 val_431 2008-12-31 12 +164 val_164 2008-12-31 12 +424 val_424 2008-12-31 12 +187 val_187 2008-12-31 12 +382 val_382 2008-12-31 12 +5 val_5 2008-12-31 12 +70 val_70 2008-12-31 12 +397 val_397 2008-12-31 12 +480 val_480 2008-12-31 12 +291 val_291 2008-12-31 12 +24 val_24 2008-12-31 12 +351 val_351 2008-12-31 12 +255 val_255 2008-12-31 12 +104 val_104 2008-12-31 12 +70 val_70 2008-12-31 12 +163 val_163 2008-12-31 12 +438 val_438 2008-12-31 12 +119 val_119 2008-12-31 12 +414 val_414 2008-12-31 12 +200 val_200 2008-12-31 12 +491 val_491 2008-12-31 12 +237 val_237 2008-12-31 12 +439 val_439 2008-12-31 12 +360 val_360 2008-12-31 12 +248 val_248 2008-12-31 12 +479 val_479 2008-12-31 12 +305 val_305 2008-12-31 12 +417 val_417 2008-12-31 12 +199 val_199 2008-12-31 12 +444 val_444 2008-12-31 12 +120 val_120 2008-12-31 12 +429 val_429 2008-12-31 12 +169 val_169 2008-12-31 12 +443 val_443 2008-12-31 12 +323 val_323 2008-12-31 12 +325 val_325 2008-12-31 12 +277 val_277 2008-12-31 12 +230 val_230 2008-12-31 12 +478 val_478 2008-12-31 12 +178 val_178 2008-12-31 12 +468 val_468 2008-12-31 12 +310 val_310 2008-12-31 12 +317 val_317 2008-12-31 12 +333 val_333 2008-12-31 12 +493 val_493 2008-12-31 12 +460 val_460 2008-12-31 12 +207 val_207 2008-12-31 12 +249 val_249 2008-12-31 12 +265 val_265 2008-12-31 12 +480 val_480 2008-12-31 12 +83 val_83 2008-12-31 12 +136 val_136 2008-12-31 12 +353 val_353 2008-12-31 12 +172 val_172 2008-12-31 12 +214 val_214 2008-12-31 12 +462 val_462 2008-12-31 12 +233 val_233 2008-12-31 12 +406 val_406 2008-12-31 12 +133 val_133 2008-12-31 12 +175 val_175 2008-12-31 12 +189 val_189 2008-12-31 12 +454 val_454 2008-12-31 12 +375 val_375 2008-12-31 12 +401 val_401 2008-12-31 12 +421 val_421 2008-12-31 12 +407 val_407 2008-12-31 12 +384 val_384 2008-12-31 12 +256 val_256 2008-12-31 12 +26 val_26 2008-12-31 12 +134 val_134 2008-12-31 12 +67 val_67 2008-12-31 12 +384 val_384 2008-12-31 12 +379 val_379 2008-12-31 12 +18 val_18 2008-12-31 12 +462 val_462 2008-12-31 12 +492 val_492 2008-12-31 12 +100 val_100 2008-12-31 12 +298 val_298 2008-12-31 12 +9 val_9 2008-12-31 12 +341 val_341 2008-12-31 12 +498 val_498 2008-12-31 12 +146 val_146 2008-12-31 12 +458 val_458 2008-12-31 12 +362 val_362 2008-12-31 12 +186 val_186 2008-12-31 12 +285 val_285 2008-12-31 12 +348 val_348 2008-12-31 12 +167 val_167 2008-12-31 12 +18 val_18 2008-12-31 12 +273 val_273 2008-12-31 12 +183 val_183 2008-12-31 12 +281 val_281 2008-12-31 12 +344 val_344 2008-12-31 12 +97 val_97 2008-12-31 12 +469 val_469 2008-12-31 12 +315 val_315 2008-12-31 12 +84 val_84 2008-12-31 12 +28 val_28 2008-12-31 12 +37 val_37 2008-12-31 12 +448 val_448 2008-12-31 12 +152 val_152 2008-12-31 12 +348 val_348 2008-12-31 12 +307 val_307 2008-12-31 12 +194 val_194 2008-12-31 12 +414 val_414 2008-12-31 12 +477 val_477 2008-12-31 12 +222 val_222 2008-12-31 12 +126 val_126 2008-12-31 12 +90 val_90 2008-12-31 12 +169 val_169 2008-12-31 12 +403 val_403 2008-12-31 12 +400 val_400 2008-12-31 12 +200 val_200 2008-12-31 12 +97 val_97 2008-12-31 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part11-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..e9c723bbd136e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part11-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-1-bcf9e49f6a630b18108da59b243455f7 b/sql/hive/src/test/resources/golden/load_dyn_part11-1-bcf9e49f6a630b18108da59b243455f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-2-4301f87a8dbf9576788637386e26f9a2 b/sql/hive/src/test/resources/golden/load_dyn_part11-2-4301f87a8dbf9576788637386e26f9a2 new file mode 100644 index 0000000000000..6aa67737fa92d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part11-2-4301f87a8dbf9576788637386e26f9a2 @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part, dbName:default, owner:marmbrus, createTime:1389738838, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2847673635801001933/nzhang_part, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{transient_lastDdlTime=1389738838}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part11-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part11-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/load_dyn_part11-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part11-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-5-ea607fbed28d20e5726f4501285d698d b/sql/hive/src/test/resources/golden/load_dyn_part11-5-ea607fbed28d20e5726f4501285d698d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part11-5-ea607fbed28d20e5726f4501285d698d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-6-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part11-6-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part11-6-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-7-b377ea0092e921e5c07e8f34d7c9f920 b/sql/hive/src/test/resources/golden/load_dyn_part11-7-b377ea0092e921e5c07e8f34d7c9f920 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-8-9a4433518ac9ff49cb4b71812705adbb b/sql/hive/src/test/resources/golden/load_dyn_part11-8-9a4433518ac9ff49cb4b71812705adbb new file mode 100644 index 0000000000000..29ade2aff0542 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part11-8-9a4433518ac9ff49cb4b71812705adbb @@ -0,0 +1,1000 @@ +238 val_238 2010-03-03 11 +86 val_86 2010-03-03 11 +311 val_311 2010-03-03 11 +27 val_27 2010-03-03 11 +165 val_165 2010-03-03 11 +409 val_409 2010-03-03 11 +255 val_255 2010-03-03 11 +278 val_278 2010-03-03 11 +98 val_98 2010-03-03 11 +484 val_484 2010-03-03 11 +265 val_265 2010-03-03 11 +193 val_193 2010-03-03 11 +401 val_401 2010-03-03 11 +150 val_150 2010-03-03 11 +273 val_273 2010-03-03 11 +224 val_224 2010-03-03 11 +369 val_369 2010-03-03 11 +66 val_66 2010-03-03 11 +128 val_128 2010-03-03 11 +213 val_213 2010-03-03 11 +146 val_146 2010-03-03 11 +406 val_406 2010-03-03 11 +429 val_429 2010-03-03 11 +374 val_374 2010-03-03 11 +152 val_152 2010-03-03 11 +469 val_469 2010-03-03 11 +145 val_145 2010-03-03 11 +495 val_495 2010-03-03 11 +37 val_37 2010-03-03 11 +327 val_327 2010-03-03 11 +281 val_281 2010-03-03 11 +277 val_277 2010-03-03 11 +209 val_209 2010-03-03 11 +15 val_15 2010-03-03 11 +82 val_82 2010-03-03 11 +403 val_403 2010-03-03 11 +166 val_166 2010-03-03 11 +417 val_417 2010-03-03 11 +430 val_430 2010-03-03 11 +252 val_252 2010-03-03 11 +292 val_292 2010-03-03 11 +219 val_219 2010-03-03 11 +287 val_287 2010-03-03 11 +153 val_153 2010-03-03 11 +193 val_193 2010-03-03 11 +338 val_338 2010-03-03 11 +446 val_446 2010-03-03 11 +459 val_459 2010-03-03 11 +394 val_394 2010-03-03 11 +237 val_237 2010-03-03 11 +482 val_482 2010-03-03 11 +174 val_174 2010-03-03 11 +413 val_413 2010-03-03 11 +494 val_494 2010-03-03 11 +207 val_207 2010-03-03 11 +199 val_199 2010-03-03 11 +466 val_466 2010-03-03 11 +208 val_208 2010-03-03 11 +174 val_174 2010-03-03 11 +399 val_399 2010-03-03 11 +396 val_396 2010-03-03 11 +247 val_247 2010-03-03 11 +417 val_417 2010-03-03 11 +489 val_489 2010-03-03 11 +162 val_162 2010-03-03 11 +377 val_377 2010-03-03 11 +397 val_397 2010-03-03 11 +309 val_309 2010-03-03 11 +365 val_365 2010-03-03 11 +266 val_266 2010-03-03 11 +439 val_439 2010-03-03 11 +342 val_342 2010-03-03 11 +367 val_367 2010-03-03 11 +325 val_325 2010-03-03 11 +167 val_167 2010-03-03 11 +195 val_195 2010-03-03 11 +475 val_475 2010-03-03 11 +17 val_17 2010-03-03 11 +113 val_113 2010-03-03 11 +155 val_155 2010-03-03 11 +203 val_203 2010-03-03 11 +339 val_339 2010-03-03 11 +0 val_0 2010-03-03 11 +455 val_455 2010-03-03 11 +128 val_128 2010-03-03 11 +311 val_311 2010-03-03 11 +316 val_316 2010-03-03 11 +57 val_57 2010-03-03 11 +302 val_302 2010-03-03 11 +205 val_205 2010-03-03 11 +149 val_149 2010-03-03 11 +438 val_438 2010-03-03 11 +345 val_345 2010-03-03 11 +129 val_129 2010-03-03 11 +170 val_170 2010-03-03 11 +20 val_20 2010-03-03 11 +489 val_489 2010-03-03 11 +157 val_157 2010-03-03 11 +378 val_378 2010-03-03 11 +221 val_221 2010-03-03 11 +92 val_92 2010-03-03 11 +111 val_111 2010-03-03 11 +47 val_47 2010-03-03 11 +72 val_72 2010-03-03 11 +4 val_4 2010-03-03 11 +280 val_280 2010-03-03 11 +35 val_35 2010-03-03 11 +427 val_427 2010-03-03 11 +277 val_277 2010-03-03 11 +208 val_208 2010-03-03 11 +356 val_356 2010-03-03 11 +399 val_399 2010-03-03 11 +169 val_169 2010-03-03 11 +382 val_382 2010-03-03 11 +498 val_498 2010-03-03 11 +125 val_125 2010-03-03 11 +386 val_386 2010-03-03 11 +437 val_437 2010-03-03 11 +469 val_469 2010-03-03 11 +192 val_192 2010-03-03 11 +286 val_286 2010-03-03 11 +187 val_187 2010-03-03 11 +176 val_176 2010-03-03 11 +54 val_54 2010-03-03 11 +459 val_459 2010-03-03 11 +51 val_51 2010-03-03 11 +138 val_138 2010-03-03 11 +103 val_103 2010-03-03 11 +239 val_239 2010-03-03 11 +213 val_213 2010-03-03 11 +216 val_216 2010-03-03 11 +430 val_430 2010-03-03 11 +278 val_278 2010-03-03 11 +176 val_176 2010-03-03 11 +289 val_289 2010-03-03 11 +221 val_221 2010-03-03 11 +65 val_65 2010-03-03 11 +318 val_318 2010-03-03 11 +332 val_332 2010-03-03 11 +311 val_311 2010-03-03 11 +275 val_275 2010-03-03 11 +137 val_137 2010-03-03 11 +241 val_241 2010-03-03 11 +83 val_83 2010-03-03 11 +333 val_333 2010-03-03 11 +180 val_180 2010-03-03 11 +284 val_284 2010-03-03 11 +12 val_12 2010-03-03 11 +230 val_230 2010-03-03 11 +181 val_181 2010-03-03 11 +67 val_67 2010-03-03 11 +260 val_260 2010-03-03 11 +404 val_404 2010-03-03 11 +384 val_384 2010-03-03 11 +489 val_489 2010-03-03 11 +353 val_353 2010-03-03 11 +373 val_373 2010-03-03 11 +272 val_272 2010-03-03 11 +138 val_138 2010-03-03 11 +217 val_217 2010-03-03 11 +84 val_84 2010-03-03 11 +348 val_348 2010-03-03 11 +466 val_466 2010-03-03 11 +58 val_58 2010-03-03 11 +8 val_8 2010-03-03 11 +411 val_411 2010-03-03 11 +230 val_230 2010-03-03 11 +208 val_208 2010-03-03 11 +348 val_348 2010-03-03 11 +24 val_24 2010-03-03 11 +463 val_463 2010-03-03 11 +431 val_431 2010-03-03 11 +179 val_179 2010-03-03 11 +172 val_172 2010-03-03 11 +42 val_42 2010-03-03 11 +129 val_129 2010-03-03 11 +158 val_158 2010-03-03 11 +119 val_119 2010-03-03 11 +496 val_496 2010-03-03 11 +0 val_0 2010-03-03 11 +322 val_322 2010-03-03 11 +197 val_197 2010-03-03 11 +468 val_468 2010-03-03 11 +393 val_393 2010-03-03 11 +454 val_454 2010-03-03 11 +100 val_100 2010-03-03 11 +298 val_298 2010-03-03 11 +199 val_199 2010-03-03 11 +191 val_191 2010-03-03 11 +418 val_418 2010-03-03 11 +96 val_96 2010-03-03 11 +26 val_26 2010-03-03 11 +165 val_165 2010-03-03 11 +327 val_327 2010-03-03 11 +230 val_230 2010-03-03 11 +205 val_205 2010-03-03 11 +120 val_120 2010-03-03 11 +131 val_131 2010-03-03 11 +51 val_51 2010-03-03 11 +404 val_404 2010-03-03 11 +43 val_43 2010-03-03 11 +436 val_436 2010-03-03 11 +156 val_156 2010-03-03 11 +469 val_469 2010-03-03 11 +468 val_468 2010-03-03 11 +308 val_308 2010-03-03 11 +95 val_95 2010-03-03 11 +196 val_196 2010-03-03 11 +288 val_288 2010-03-03 11 +481 val_481 2010-03-03 11 +457 val_457 2010-03-03 11 +98 val_98 2010-03-03 11 +282 val_282 2010-03-03 11 +197 val_197 2010-03-03 11 +187 val_187 2010-03-03 11 +318 val_318 2010-03-03 11 +318 val_318 2010-03-03 11 +409 val_409 2010-03-03 11 +470 val_470 2010-03-03 11 +137 val_137 2010-03-03 11 +369 val_369 2010-03-03 11 +316 val_316 2010-03-03 11 +169 val_169 2010-03-03 11 +413 val_413 2010-03-03 11 +85 val_85 2010-03-03 11 +77 val_77 2010-03-03 11 +0 val_0 2010-03-03 11 +490 val_490 2010-03-03 11 +87 val_87 2010-03-03 11 +364 val_364 2010-03-03 11 +179 val_179 2010-03-03 11 +118 val_118 2010-03-03 11 +134 val_134 2010-03-03 11 +395 val_395 2010-03-03 11 +282 val_282 2010-03-03 11 +138 val_138 2010-03-03 11 +238 val_238 2010-03-03 11 +419 val_419 2010-03-03 11 +15 val_15 2010-03-03 11 +118 val_118 2010-03-03 11 +72 val_72 2010-03-03 11 +90 val_90 2010-03-03 11 +307 val_307 2010-03-03 11 +19 val_19 2010-03-03 11 +435 val_435 2010-03-03 11 +10 val_10 2010-03-03 11 +277 val_277 2010-03-03 11 +273 val_273 2010-03-03 11 +306 val_306 2010-03-03 11 +224 val_224 2010-03-03 11 +309 val_309 2010-03-03 11 +389 val_389 2010-03-03 11 +327 val_327 2010-03-03 11 +242 val_242 2010-03-03 11 +369 val_369 2010-03-03 11 +392 val_392 2010-03-03 11 +272 val_272 2010-03-03 11 +331 val_331 2010-03-03 11 +401 val_401 2010-03-03 11 +242 val_242 2010-03-03 11 +452 val_452 2010-03-03 11 +177 val_177 2010-03-03 11 +226 val_226 2010-03-03 11 +5 val_5 2010-03-03 11 +497 val_497 2010-03-03 11 +402 val_402 2010-03-03 11 +396 val_396 2010-03-03 11 +317 val_317 2010-03-03 11 +395 val_395 2010-03-03 11 +58 val_58 2010-03-03 11 +35 val_35 2010-03-03 11 +336 val_336 2010-03-03 11 +95 val_95 2010-03-03 11 +11 val_11 2010-03-03 11 +168 val_168 2010-03-03 11 +34 val_34 2010-03-03 11 +229 val_229 2010-03-03 11 +233 val_233 2010-03-03 11 +143 val_143 2010-03-03 11 +472 val_472 2010-03-03 11 +322 val_322 2010-03-03 11 +498 val_498 2010-03-03 11 +160 val_160 2010-03-03 11 +195 val_195 2010-03-03 11 +42 val_42 2010-03-03 11 +321 val_321 2010-03-03 11 +430 val_430 2010-03-03 11 +119 val_119 2010-03-03 11 +489 val_489 2010-03-03 11 +458 val_458 2010-03-03 11 +78 val_78 2010-03-03 11 +76 val_76 2010-03-03 11 +41 val_41 2010-03-03 11 +223 val_223 2010-03-03 11 +492 val_492 2010-03-03 11 +149 val_149 2010-03-03 11 +449 val_449 2010-03-03 11 +218 val_218 2010-03-03 11 +228 val_228 2010-03-03 11 +138 val_138 2010-03-03 11 +453 val_453 2010-03-03 11 +30 val_30 2010-03-03 11 +209 val_209 2010-03-03 11 +64 val_64 2010-03-03 11 +468 val_468 2010-03-03 11 +76 val_76 2010-03-03 11 +74 val_74 2010-03-03 11 +342 val_342 2010-03-03 11 +69 val_69 2010-03-03 11 +230 val_230 2010-03-03 11 +33 val_33 2010-03-03 11 +368 val_368 2010-03-03 11 +103 val_103 2010-03-03 11 +296 val_296 2010-03-03 11 +113 val_113 2010-03-03 11 +216 val_216 2010-03-03 11 +367 val_367 2010-03-03 11 +344 val_344 2010-03-03 11 +167 val_167 2010-03-03 11 +274 val_274 2010-03-03 11 +219 val_219 2010-03-03 11 +239 val_239 2010-03-03 11 +485 val_485 2010-03-03 11 +116 val_116 2010-03-03 11 +223 val_223 2010-03-03 11 +256 val_256 2010-03-03 11 +263 val_263 2010-03-03 11 +70 val_70 2010-03-03 11 +487 val_487 2010-03-03 11 +480 val_480 2010-03-03 11 +401 val_401 2010-03-03 11 +288 val_288 2010-03-03 11 +191 val_191 2010-03-03 11 +5 val_5 2010-03-03 11 +244 val_244 2010-03-03 11 +438 val_438 2010-03-03 11 +128 val_128 2010-03-03 11 +467 val_467 2010-03-03 11 +432 val_432 2010-03-03 11 +202 val_202 2010-03-03 11 +316 val_316 2010-03-03 11 +229 val_229 2010-03-03 11 +469 val_469 2010-03-03 11 +463 val_463 2010-03-03 11 +280 val_280 2010-03-03 11 +2 val_2 2010-03-03 11 +35 val_35 2010-03-03 11 +283 val_283 2010-03-03 11 +331 val_331 2010-03-03 11 +235 val_235 2010-03-03 11 +80 val_80 2010-03-03 11 +44 val_44 2010-03-03 11 +193 val_193 2010-03-03 11 +321 val_321 2010-03-03 11 +335 val_335 2010-03-03 11 +104 val_104 2010-03-03 11 +466 val_466 2010-03-03 11 +366 val_366 2010-03-03 11 +175 val_175 2010-03-03 11 +403 val_403 2010-03-03 11 +483 val_483 2010-03-03 11 +53 val_53 2010-03-03 11 +105 val_105 2010-03-03 11 +257 val_257 2010-03-03 11 +406 val_406 2010-03-03 11 +409 val_409 2010-03-03 11 +190 val_190 2010-03-03 11 +406 val_406 2010-03-03 11 +401 val_401 2010-03-03 11 +114 val_114 2010-03-03 11 +258 val_258 2010-03-03 11 +90 val_90 2010-03-03 11 +203 val_203 2010-03-03 11 +262 val_262 2010-03-03 11 +348 val_348 2010-03-03 11 +424 val_424 2010-03-03 11 +12 val_12 2010-03-03 11 +396 val_396 2010-03-03 11 +201 val_201 2010-03-03 11 +217 val_217 2010-03-03 11 +164 val_164 2010-03-03 11 +431 val_431 2010-03-03 11 +454 val_454 2010-03-03 11 +478 val_478 2010-03-03 11 +298 val_298 2010-03-03 11 +125 val_125 2010-03-03 11 +431 val_431 2010-03-03 11 +164 val_164 2010-03-03 11 +424 val_424 2010-03-03 11 +187 val_187 2010-03-03 11 +382 val_382 2010-03-03 11 +5 val_5 2010-03-03 11 +70 val_70 2010-03-03 11 +397 val_397 2010-03-03 11 +480 val_480 2010-03-03 11 +291 val_291 2010-03-03 11 +24 val_24 2010-03-03 11 +351 val_351 2010-03-03 11 +255 val_255 2010-03-03 11 +104 val_104 2010-03-03 11 +70 val_70 2010-03-03 11 +163 val_163 2010-03-03 11 +438 val_438 2010-03-03 11 +119 val_119 2010-03-03 11 +414 val_414 2010-03-03 11 +200 val_200 2010-03-03 11 +491 val_491 2010-03-03 11 +237 val_237 2010-03-03 11 +439 val_439 2010-03-03 11 +360 val_360 2010-03-03 11 +248 val_248 2010-03-03 11 +479 val_479 2010-03-03 11 +305 val_305 2010-03-03 11 +417 val_417 2010-03-03 11 +199 val_199 2010-03-03 11 +444 val_444 2010-03-03 11 +120 val_120 2010-03-03 11 +429 val_429 2010-03-03 11 +169 val_169 2010-03-03 11 +443 val_443 2010-03-03 11 +323 val_323 2010-03-03 11 +325 val_325 2010-03-03 11 +277 val_277 2010-03-03 11 +230 val_230 2010-03-03 11 +478 val_478 2010-03-03 11 +178 val_178 2010-03-03 11 +468 val_468 2010-03-03 11 +310 val_310 2010-03-03 11 +317 val_317 2010-03-03 11 +333 val_333 2010-03-03 11 +493 val_493 2010-03-03 11 +460 val_460 2010-03-03 11 +207 val_207 2010-03-03 11 +249 val_249 2010-03-03 11 +265 val_265 2010-03-03 11 +480 val_480 2010-03-03 11 +83 val_83 2010-03-03 11 +136 val_136 2010-03-03 11 +353 val_353 2010-03-03 11 +172 val_172 2010-03-03 11 +214 val_214 2010-03-03 11 +462 val_462 2010-03-03 11 +233 val_233 2010-03-03 11 +406 val_406 2010-03-03 11 +133 val_133 2010-03-03 11 +175 val_175 2010-03-03 11 +189 val_189 2010-03-03 11 +454 val_454 2010-03-03 11 +375 val_375 2010-03-03 11 +401 val_401 2010-03-03 11 +421 val_421 2010-03-03 11 +407 val_407 2010-03-03 11 +384 val_384 2010-03-03 11 +256 val_256 2010-03-03 11 +26 val_26 2010-03-03 11 +134 val_134 2010-03-03 11 +67 val_67 2010-03-03 11 +384 val_384 2010-03-03 11 +379 val_379 2010-03-03 11 +18 val_18 2010-03-03 11 +462 val_462 2010-03-03 11 +492 val_492 2010-03-03 11 +100 val_100 2010-03-03 11 +298 val_298 2010-03-03 11 +9 val_9 2010-03-03 11 +341 val_341 2010-03-03 11 +498 val_498 2010-03-03 11 +146 val_146 2010-03-03 11 +458 val_458 2010-03-03 11 +362 val_362 2010-03-03 11 +186 val_186 2010-03-03 11 +285 val_285 2010-03-03 11 +348 val_348 2010-03-03 11 +167 val_167 2010-03-03 11 +18 val_18 2010-03-03 11 +273 val_273 2010-03-03 11 +183 val_183 2010-03-03 11 +281 val_281 2010-03-03 11 +344 val_344 2010-03-03 11 +97 val_97 2010-03-03 11 +469 val_469 2010-03-03 11 +315 val_315 2010-03-03 11 +84 val_84 2010-03-03 11 +28 val_28 2010-03-03 11 +37 val_37 2010-03-03 11 +448 val_448 2010-03-03 11 +152 val_152 2010-03-03 11 +348 val_348 2010-03-03 11 +307 val_307 2010-03-03 11 +194 val_194 2010-03-03 11 +414 val_414 2010-03-03 11 +477 val_477 2010-03-03 11 +222 val_222 2010-03-03 11 +126 val_126 2010-03-03 11 +90 val_90 2010-03-03 11 +169 val_169 2010-03-03 11 +403 val_403 2010-03-03 11 +400 val_400 2010-03-03 11 +200 val_200 2010-03-03 11 +97 val_97 2010-03-03 11 +238 val_238 2010-03-03 11 +86 val_86 2010-03-03 11 +311 val_311 2010-03-03 11 +27 val_27 2010-03-03 11 +165 val_165 2010-03-03 11 +409 val_409 2010-03-03 11 +255 val_255 2010-03-03 11 +278 val_278 2010-03-03 11 +98 val_98 2010-03-03 11 +484 val_484 2010-03-03 11 +265 val_265 2010-03-03 11 +193 val_193 2010-03-03 11 +401 val_401 2010-03-03 11 +150 val_150 2010-03-03 11 +273 val_273 2010-03-03 11 +224 val_224 2010-03-03 11 +369 val_369 2010-03-03 11 +66 val_66 2010-03-03 11 +128 val_128 2010-03-03 11 +213 val_213 2010-03-03 11 +146 val_146 2010-03-03 11 +406 val_406 2010-03-03 11 +429 val_429 2010-03-03 11 +374 val_374 2010-03-03 11 +152 val_152 2010-03-03 11 +469 val_469 2010-03-03 11 +145 val_145 2010-03-03 11 +495 val_495 2010-03-03 11 +37 val_37 2010-03-03 11 +327 val_327 2010-03-03 11 +281 val_281 2010-03-03 11 +277 val_277 2010-03-03 11 +209 val_209 2010-03-03 11 +15 val_15 2010-03-03 11 +82 val_82 2010-03-03 11 +403 val_403 2010-03-03 11 +166 val_166 2010-03-03 11 +417 val_417 2010-03-03 11 +430 val_430 2010-03-03 11 +252 val_252 2010-03-03 11 +292 val_292 2010-03-03 11 +219 val_219 2010-03-03 11 +287 val_287 2010-03-03 11 +153 val_153 2010-03-03 11 +193 val_193 2010-03-03 11 +338 val_338 2010-03-03 11 +446 val_446 2010-03-03 11 +459 val_459 2010-03-03 11 +394 val_394 2010-03-03 11 +237 val_237 2010-03-03 11 +482 val_482 2010-03-03 11 +174 val_174 2010-03-03 11 +413 val_413 2010-03-03 11 +494 val_494 2010-03-03 11 +207 val_207 2010-03-03 11 +199 val_199 2010-03-03 11 +466 val_466 2010-03-03 11 +208 val_208 2010-03-03 11 +174 val_174 2010-03-03 11 +399 val_399 2010-03-03 11 +396 val_396 2010-03-03 11 +247 val_247 2010-03-03 11 +417 val_417 2010-03-03 11 +489 val_489 2010-03-03 11 +162 val_162 2010-03-03 11 +377 val_377 2010-03-03 11 +397 val_397 2010-03-03 11 +309 val_309 2010-03-03 11 +365 val_365 2010-03-03 11 +266 val_266 2010-03-03 11 +439 val_439 2010-03-03 11 +342 val_342 2010-03-03 11 +367 val_367 2010-03-03 11 +325 val_325 2010-03-03 11 +167 val_167 2010-03-03 11 +195 val_195 2010-03-03 11 +475 val_475 2010-03-03 11 +17 val_17 2010-03-03 11 +113 val_113 2010-03-03 11 +155 val_155 2010-03-03 11 +203 val_203 2010-03-03 11 +339 val_339 2010-03-03 11 +0 val_0 2010-03-03 11 +455 val_455 2010-03-03 11 +128 val_128 2010-03-03 11 +311 val_311 2010-03-03 11 +316 val_316 2010-03-03 11 +57 val_57 2010-03-03 11 +302 val_302 2010-03-03 11 +205 val_205 2010-03-03 11 +149 val_149 2010-03-03 11 +438 val_438 2010-03-03 11 +345 val_345 2010-03-03 11 +129 val_129 2010-03-03 11 +170 val_170 2010-03-03 11 +20 val_20 2010-03-03 11 +489 val_489 2010-03-03 11 +157 val_157 2010-03-03 11 +378 val_378 2010-03-03 11 +221 val_221 2010-03-03 11 +92 val_92 2010-03-03 11 +111 val_111 2010-03-03 11 +47 val_47 2010-03-03 11 +72 val_72 2010-03-03 11 +4 val_4 2010-03-03 11 +280 val_280 2010-03-03 11 +35 val_35 2010-03-03 11 +427 val_427 2010-03-03 11 +277 val_277 2010-03-03 11 +208 val_208 2010-03-03 11 +356 val_356 2010-03-03 11 +399 val_399 2010-03-03 11 +169 val_169 2010-03-03 11 +382 val_382 2010-03-03 11 +498 val_498 2010-03-03 11 +125 val_125 2010-03-03 11 +386 val_386 2010-03-03 11 +437 val_437 2010-03-03 11 +469 val_469 2010-03-03 11 +192 val_192 2010-03-03 11 +286 val_286 2010-03-03 11 +187 val_187 2010-03-03 11 +176 val_176 2010-03-03 11 +54 val_54 2010-03-03 11 +459 val_459 2010-03-03 11 +51 val_51 2010-03-03 11 +138 val_138 2010-03-03 11 +103 val_103 2010-03-03 11 +239 val_239 2010-03-03 11 +213 val_213 2010-03-03 11 +216 val_216 2010-03-03 11 +430 val_430 2010-03-03 11 +278 val_278 2010-03-03 11 +176 val_176 2010-03-03 11 +289 val_289 2010-03-03 11 +221 val_221 2010-03-03 11 +65 val_65 2010-03-03 11 +318 val_318 2010-03-03 11 +332 val_332 2010-03-03 11 +311 val_311 2010-03-03 11 +275 val_275 2010-03-03 11 +137 val_137 2010-03-03 11 +241 val_241 2010-03-03 11 +83 val_83 2010-03-03 11 +333 val_333 2010-03-03 11 +180 val_180 2010-03-03 11 +284 val_284 2010-03-03 11 +12 val_12 2010-03-03 11 +230 val_230 2010-03-03 11 +181 val_181 2010-03-03 11 +67 val_67 2010-03-03 11 +260 val_260 2010-03-03 11 +404 val_404 2010-03-03 11 +384 val_384 2010-03-03 11 +489 val_489 2010-03-03 11 +353 val_353 2010-03-03 11 +373 val_373 2010-03-03 11 +272 val_272 2010-03-03 11 +138 val_138 2010-03-03 11 +217 val_217 2010-03-03 11 +84 val_84 2010-03-03 11 +348 val_348 2010-03-03 11 +466 val_466 2010-03-03 11 +58 val_58 2010-03-03 11 +8 val_8 2010-03-03 11 +411 val_411 2010-03-03 11 +230 val_230 2010-03-03 11 +208 val_208 2010-03-03 11 +348 val_348 2010-03-03 11 +24 val_24 2010-03-03 11 +463 val_463 2010-03-03 11 +431 val_431 2010-03-03 11 +179 val_179 2010-03-03 11 +172 val_172 2010-03-03 11 +42 val_42 2010-03-03 11 +129 val_129 2010-03-03 11 +158 val_158 2010-03-03 11 +119 val_119 2010-03-03 11 +496 val_496 2010-03-03 11 +0 val_0 2010-03-03 11 +322 val_322 2010-03-03 11 +197 val_197 2010-03-03 11 +468 val_468 2010-03-03 11 +393 val_393 2010-03-03 11 +454 val_454 2010-03-03 11 +100 val_100 2010-03-03 11 +298 val_298 2010-03-03 11 +199 val_199 2010-03-03 11 +191 val_191 2010-03-03 11 +418 val_418 2010-03-03 11 +96 val_96 2010-03-03 11 +26 val_26 2010-03-03 11 +165 val_165 2010-03-03 11 +327 val_327 2010-03-03 11 +230 val_230 2010-03-03 11 +205 val_205 2010-03-03 11 +120 val_120 2010-03-03 11 +131 val_131 2010-03-03 11 +51 val_51 2010-03-03 11 +404 val_404 2010-03-03 11 +43 val_43 2010-03-03 11 +436 val_436 2010-03-03 11 +156 val_156 2010-03-03 11 +469 val_469 2010-03-03 11 +468 val_468 2010-03-03 11 +308 val_308 2010-03-03 11 +95 val_95 2010-03-03 11 +196 val_196 2010-03-03 11 +288 val_288 2010-03-03 11 +481 val_481 2010-03-03 11 +457 val_457 2010-03-03 11 +98 val_98 2010-03-03 11 +282 val_282 2010-03-03 11 +197 val_197 2010-03-03 11 +187 val_187 2010-03-03 11 +318 val_318 2010-03-03 11 +318 val_318 2010-03-03 11 +409 val_409 2010-03-03 11 +470 val_470 2010-03-03 11 +137 val_137 2010-03-03 11 +369 val_369 2010-03-03 11 +316 val_316 2010-03-03 11 +169 val_169 2010-03-03 11 +413 val_413 2010-03-03 11 +85 val_85 2010-03-03 11 +77 val_77 2010-03-03 11 +0 val_0 2010-03-03 11 +490 val_490 2010-03-03 11 +87 val_87 2010-03-03 11 +364 val_364 2010-03-03 11 +179 val_179 2010-03-03 11 +118 val_118 2010-03-03 11 +134 val_134 2010-03-03 11 +395 val_395 2010-03-03 11 +282 val_282 2010-03-03 11 +138 val_138 2010-03-03 11 +238 val_238 2010-03-03 11 +419 val_419 2010-03-03 11 +15 val_15 2010-03-03 11 +118 val_118 2010-03-03 11 +72 val_72 2010-03-03 11 +90 val_90 2010-03-03 11 +307 val_307 2010-03-03 11 +19 val_19 2010-03-03 11 +435 val_435 2010-03-03 11 +10 val_10 2010-03-03 11 +277 val_277 2010-03-03 11 +273 val_273 2010-03-03 11 +306 val_306 2010-03-03 11 +224 val_224 2010-03-03 11 +309 val_309 2010-03-03 11 +389 val_389 2010-03-03 11 +327 val_327 2010-03-03 11 +242 val_242 2010-03-03 11 +369 val_369 2010-03-03 11 +392 val_392 2010-03-03 11 +272 val_272 2010-03-03 11 +331 val_331 2010-03-03 11 +401 val_401 2010-03-03 11 +242 val_242 2010-03-03 11 +452 val_452 2010-03-03 11 +177 val_177 2010-03-03 11 +226 val_226 2010-03-03 11 +5 val_5 2010-03-03 11 +497 val_497 2010-03-03 11 +402 val_402 2010-03-03 11 +396 val_396 2010-03-03 11 +317 val_317 2010-03-03 11 +395 val_395 2010-03-03 11 +58 val_58 2010-03-03 11 +35 val_35 2010-03-03 11 +336 val_336 2010-03-03 11 +95 val_95 2010-03-03 11 +11 val_11 2010-03-03 11 +168 val_168 2010-03-03 11 +34 val_34 2010-03-03 11 +229 val_229 2010-03-03 11 +233 val_233 2010-03-03 11 +143 val_143 2010-03-03 11 +472 val_472 2010-03-03 11 +322 val_322 2010-03-03 11 +498 val_498 2010-03-03 11 +160 val_160 2010-03-03 11 +195 val_195 2010-03-03 11 +42 val_42 2010-03-03 11 +321 val_321 2010-03-03 11 +430 val_430 2010-03-03 11 +119 val_119 2010-03-03 11 +489 val_489 2010-03-03 11 +458 val_458 2010-03-03 11 +78 val_78 2010-03-03 11 +76 val_76 2010-03-03 11 +41 val_41 2010-03-03 11 +223 val_223 2010-03-03 11 +492 val_492 2010-03-03 11 +149 val_149 2010-03-03 11 +449 val_449 2010-03-03 11 +218 val_218 2010-03-03 11 +228 val_228 2010-03-03 11 +138 val_138 2010-03-03 11 +453 val_453 2010-03-03 11 +30 val_30 2010-03-03 11 +209 val_209 2010-03-03 11 +64 val_64 2010-03-03 11 +468 val_468 2010-03-03 11 +76 val_76 2010-03-03 11 +74 val_74 2010-03-03 11 +342 val_342 2010-03-03 11 +69 val_69 2010-03-03 11 +230 val_230 2010-03-03 11 +33 val_33 2010-03-03 11 +368 val_368 2010-03-03 11 +103 val_103 2010-03-03 11 +296 val_296 2010-03-03 11 +113 val_113 2010-03-03 11 +216 val_216 2010-03-03 11 +367 val_367 2010-03-03 11 +344 val_344 2010-03-03 11 +167 val_167 2010-03-03 11 +274 val_274 2010-03-03 11 +219 val_219 2010-03-03 11 +239 val_239 2010-03-03 11 +485 val_485 2010-03-03 11 +116 val_116 2010-03-03 11 +223 val_223 2010-03-03 11 +256 val_256 2010-03-03 11 +263 val_263 2010-03-03 11 +70 val_70 2010-03-03 11 +487 val_487 2010-03-03 11 +480 val_480 2010-03-03 11 +401 val_401 2010-03-03 11 +288 val_288 2010-03-03 11 +191 val_191 2010-03-03 11 +5 val_5 2010-03-03 11 +244 val_244 2010-03-03 11 +438 val_438 2010-03-03 11 +128 val_128 2010-03-03 11 +467 val_467 2010-03-03 11 +432 val_432 2010-03-03 11 +202 val_202 2010-03-03 11 +316 val_316 2010-03-03 11 +229 val_229 2010-03-03 11 +469 val_469 2010-03-03 11 +463 val_463 2010-03-03 11 +280 val_280 2010-03-03 11 +2 val_2 2010-03-03 11 +35 val_35 2010-03-03 11 +283 val_283 2010-03-03 11 +331 val_331 2010-03-03 11 +235 val_235 2010-03-03 11 +80 val_80 2010-03-03 11 +44 val_44 2010-03-03 11 +193 val_193 2010-03-03 11 +321 val_321 2010-03-03 11 +335 val_335 2010-03-03 11 +104 val_104 2010-03-03 11 +466 val_466 2010-03-03 11 +366 val_366 2010-03-03 11 +175 val_175 2010-03-03 11 +403 val_403 2010-03-03 11 +483 val_483 2010-03-03 11 +53 val_53 2010-03-03 11 +105 val_105 2010-03-03 11 +257 val_257 2010-03-03 11 +406 val_406 2010-03-03 11 +409 val_409 2010-03-03 11 +190 val_190 2010-03-03 11 +406 val_406 2010-03-03 11 +401 val_401 2010-03-03 11 +114 val_114 2010-03-03 11 +258 val_258 2010-03-03 11 +90 val_90 2010-03-03 11 +203 val_203 2010-03-03 11 +262 val_262 2010-03-03 11 +348 val_348 2010-03-03 11 +424 val_424 2010-03-03 11 +12 val_12 2010-03-03 11 +396 val_396 2010-03-03 11 +201 val_201 2010-03-03 11 +217 val_217 2010-03-03 11 +164 val_164 2010-03-03 11 +431 val_431 2010-03-03 11 +454 val_454 2010-03-03 11 +478 val_478 2010-03-03 11 +298 val_298 2010-03-03 11 +125 val_125 2010-03-03 11 +431 val_431 2010-03-03 11 +164 val_164 2010-03-03 11 +424 val_424 2010-03-03 11 +187 val_187 2010-03-03 11 +382 val_382 2010-03-03 11 +5 val_5 2010-03-03 11 +70 val_70 2010-03-03 11 +397 val_397 2010-03-03 11 +480 val_480 2010-03-03 11 +291 val_291 2010-03-03 11 +24 val_24 2010-03-03 11 +351 val_351 2010-03-03 11 +255 val_255 2010-03-03 11 +104 val_104 2010-03-03 11 +70 val_70 2010-03-03 11 +163 val_163 2010-03-03 11 +438 val_438 2010-03-03 11 +119 val_119 2010-03-03 11 +414 val_414 2010-03-03 11 +200 val_200 2010-03-03 11 +491 val_491 2010-03-03 11 +237 val_237 2010-03-03 11 +439 val_439 2010-03-03 11 +360 val_360 2010-03-03 11 +248 val_248 2010-03-03 11 +479 val_479 2010-03-03 11 +305 val_305 2010-03-03 11 +417 val_417 2010-03-03 11 +199 val_199 2010-03-03 11 +444 val_444 2010-03-03 11 +120 val_120 2010-03-03 11 +429 val_429 2010-03-03 11 +169 val_169 2010-03-03 11 +443 val_443 2010-03-03 11 +323 val_323 2010-03-03 11 +325 val_325 2010-03-03 11 +277 val_277 2010-03-03 11 +230 val_230 2010-03-03 11 +478 val_478 2010-03-03 11 +178 val_178 2010-03-03 11 +468 val_468 2010-03-03 11 +310 val_310 2010-03-03 11 +317 val_317 2010-03-03 11 +333 val_333 2010-03-03 11 +493 val_493 2010-03-03 11 +460 val_460 2010-03-03 11 +207 val_207 2010-03-03 11 +249 val_249 2010-03-03 11 +265 val_265 2010-03-03 11 +480 val_480 2010-03-03 11 +83 val_83 2010-03-03 11 +136 val_136 2010-03-03 11 +353 val_353 2010-03-03 11 +172 val_172 2010-03-03 11 +214 val_214 2010-03-03 11 +462 val_462 2010-03-03 11 +233 val_233 2010-03-03 11 +406 val_406 2010-03-03 11 +133 val_133 2010-03-03 11 +175 val_175 2010-03-03 11 +189 val_189 2010-03-03 11 +454 val_454 2010-03-03 11 +375 val_375 2010-03-03 11 +401 val_401 2010-03-03 11 +421 val_421 2010-03-03 11 +407 val_407 2010-03-03 11 +384 val_384 2010-03-03 11 +256 val_256 2010-03-03 11 +26 val_26 2010-03-03 11 +134 val_134 2010-03-03 11 +67 val_67 2010-03-03 11 +384 val_384 2010-03-03 11 +379 val_379 2010-03-03 11 +18 val_18 2010-03-03 11 +462 val_462 2010-03-03 11 +492 val_492 2010-03-03 11 +100 val_100 2010-03-03 11 +298 val_298 2010-03-03 11 +9 val_9 2010-03-03 11 +341 val_341 2010-03-03 11 +498 val_498 2010-03-03 11 +146 val_146 2010-03-03 11 +458 val_458 2010-03-03 11 +362 val_362 2010-03-03 11 +186 val_186 2010-03-03 11 +285 val_285 2010-03-03 11 +348 val_348 2010-03-03 11 +167 val_167 2010-03-03 11 +18 val_18 2010-03-03 11 +273 val_273 2010-03-03 11 +183 val_183 2010-03-03 11 +281 val_281 2010-03-03 11 +344 val_344 2010-03-03 11 +97 val_97 2010-03-03 11 +469 val_469 2010-03-03 11 +315 val_315 2010-03-03 11 +84 val_84 2010-03-03 11 +28 val_28 2010-03-03 11 +37 val_37 2010-03-03 11 +448 val_448 2010-03-03 11 +152 val_152 2010-03-03 11 +348 val_348 2010-03-03 11 +307 val_307 2010-03-03 11 +194 val_194 2010-03-03 11 +414 val_414 2010-03-03 11 +477 val_477 2010-03-03 11 +222 val_222 2010-03-03 11 +126 val_126 2010-03-03 11 +90 val_90 2010-03-03 11 +169 val_169 2010-03-03 11 +403 val_403 2010-03-03 11 +400 val_400 2010-03-03 11 +200 val_200 2010-03-03 11 +97 val_97 2010-03-03 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part11-9-3889a0cba1cf3c8f8c2e67957e69406a b/sql/hive/src/test/resources/golden/load_dyn_part11-9-3889a0cba1cf3c8f8c2e67957e69406a new file mode 100644 index 0000000000000..b7b1b914db857 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part11-9-3889a0cba1cf3c8f8c2e67957e69406a @@ -0,0 +1,1000 @@ +238 val_238 2010-03-03 12 +86 val_86 2010-03-03 12 +311 val_311 2010-03-03 12 +27 val_27 2010-03-03 12 +165 val_165 2010-03-03 12 +409 val_409 2010-03-03 12 +255 val_255 2010-03-03 12 +278 val_278 2010-03-03 12 +98 val_98 2010-03-03 12 +484 val_484 2010-03-03 12 +265 val_265 2010-03-03 12 +193 val_193 2010-03-03 12 +401 val_401 2010-03-03 12 +150 val_150 2010-03-03 12 +273 val_273 2010-03-03 12 +224 val_224 2010-03-03 12 +369 val_369 2010-03-03 12 +66 val_66 2010-03-03 12 +128 val_128 2010-03-03 12 +213 val_213 2010-03-03 12 +146 val_146 2010-03-03 12 +406 val_406 2010-03-03 12 +429 val_429 2010-03-03 12 +374 val_374 2010-03-03 12 +152 val_152 2010-03-03 12 +469 val_469 2010-03-03 12 +145 val_145 2010-03-03 12 +495 val_495 2010-03-03 12 +37 val_37 2010-03-03 12 +327 val_327 2010-03-03 12 +281 val_281 2010-03-03 12 +277 val_277 2010-03-03 12 +209 val_209 2010-03-03 12 +15 val_15 2010-03-03 12 +82 val_82 2010-03-03 12 +403 val_403 2010-03-03 12 +166 val_166 2010-03-03 12 +417 val_417 2010-03-03 12 +430 val_430 2010-03-03 12 +252 val_252 2010-03-03 12 +292 val_292 2010-03-03 12 +219 val_219 2010-03-03 12 +287 val_287 2010-03-03 12 +153 val_153 2010-03-03 12 +193 val_193 2010-03-03 12 +338 val_338 2010-03-03 12 +446 val_446 2010-03-03 12 +459 val_459 2010-03-03 12 +394 val_394 2010-03-03 12 +237 val_237 2010-03-03 12 +482 val_482 2010-03-03 12 +174 val_174 2010-03-03 12 +413 val_413 2010-03-03 12 +494 val_494 2010-03-03 12 +207 val_207 2010-03-03 12 +199 val_199 2010-03-03 12 +466 val_466 2010-03-03 12 +208 val_208 2010-03-03 12 +174 val_174 2010-03-03 12 +399 val_399 2010-03-03 12 +396 val_396 2010-03-03 12 +247 val_247 2010-03-03 12 +417 val_417 2010-03-03 12 +489 val_489 2010-03-03 12 +162 val_162 2010-03-03 12 +377 val_377 2010-03-03 12 +397 val_397 2010-03-03 12 +309 val_309 2010-03-03 12 +365 val_365 2010-03-03 12 +266 val_266 2010-03-03 12 +439 val_439 2010-03-03 12 +342 val_342 2010-03-03 12 +367 val_367 2010-03-03 12 +325 val_325 2010-03-03 12 +167 val_167 2010-03-03 12 +195 val_195 2010-03-03 12 +475 val_475 2010-03-03 12 +17 val_17 2010-03-03 12 +113 val_113 2010-03-03 12 +155 val_155 2010-03-03 12 +203 val_203 2010-03-03 12 +339 val_339 2010-03-03 12 +0 val_0 2010-03-03 12 +455 val_455 2010-03-03 12 +128 val_128 2010-03-03 12 +311 val_311 2010-03-03 12 +316 val_316 2010-03-03 12 +57 val_57 2010-03-03 12 +302 val_302 2010-03-03 12 +205 val_205 2010-03-03 12 +149 val_149 2010-03-03 12 +438 val_438 2010-03-03 12 +345 val_345 2010-03-03 12 +129 val_129 2010-03-03 12 +170 val_170 2010-03-03 12 +20 val_20 2010-03-03 12 +489 val_489 2010-03-03 12 +157 val_157 2010-03-03 12 +378 val_378 2010-03-03 12 +221 val_221 2010-03-03 12 +92 val_92 2010-03-03 12 +111 val_111 2010-03-03 12 +47 val_47 2010-03-03 12 +72 val_72 2010-03-03 12 +4 val_4 2010-03-03 12 +280 val_280 2010-03-03 12 +35 val_35 2010-03-03 12 +427 val_427 2010-03-03 12 +277 val_277 2010-03-03 12 +208 val_208 2010-03-03 12 +356 val_356 2010-03-03 12 +399 val_399 2010-03-03 12 +169 val_169 2010-03-03 12 +382 val_382 2010-03-03 12 +498 val_498 2010-03-03 12 +125 val_125 2010-03-03 12 +386 val_386 2010-03-03 12 +437 val_437 2010-03-03 12 +469 val_469 2010-03-03 12 +192 val_192 2010-03-03 12 +286 val_286 2010-03-03 12 +187 val_187 2010-03-03 12 +176 val_176 2010-03-03 12 +54 val_54 2010-03-03 12 +459 val_459 2010-03-03 12 +51 val_51 2010-03-03 12 +138 val_138 2010-03-03 12 +103 val_103 2010-03-03 12 +239 val_239 2010-03-03 12 +213 val_213 2010-03-03 12 +216 val_216 2010-03-03 12 +430 val_430 2010-03-03 12 +278 val_278 2010-03-03 12 +176 val_176 2010-03-03 12 +289 val_289 2010-03-03 12 +221 val_221 2010-03-03 12 +65 val_65 2010-03-03 12 +318 val_318 2010-03-03 12 +332 val_332 2010-03-03 12 +311 val_311 2010-03-03 12 +275 val_275 2010-03-03 12 +137 val_137 2010-03-03 12 +241 val_241 2010-03-03 12 +83 val_83 2010-03-03 12 +333 val_333 2010-03-03 12 +180 val_180 2010-03-03 12 +284 val_284 2010-03-03 12 +12 val_12 2010-03-03 12 +230 val_230 2010-03-03 12 +181 val_181 2010-03-03 12 +67 val_67 2010-03-03 12 +260 val_260 2010-03-03 12 +404 val_404 2010-03-03 12 +384 val_384 2010-03-03 12 +489 val_489 2010-03-03 12 +353 val_353 2010-03-03 12 +373 val_373 2010-03-03 12 +272 val_272 2010-03-03 12 +138 val_138 2010-03-03 12 +217 val_217 2010-03-03 12 +84 val_84 2010-03-03 12 +348 val_348 2010-03-03 12 +466 val_466 2010-03-03 12 +58 val_58 2010-03-03 12 +8 val_8 2010-03-03 12 +411 val_411 2010-03-03 12 +230 val_230 2010-03-03 12 +208 val_208 2010-03-03 12 +348 val_348 2010-03-03 12 +24 val_24 2010-03-03 12 +463 val_463 2010-03-03 12 +431 val_431 2010-03-03 12 +179 val_179 2010-03-03 12 +172 val_172 2010-03-03 12 +42 val_42 2010-03-03 12 +129 val_129 2010-03-03 12 +158 val_158 2010-03-03 12 +119 val_119 2010-03-03 12 +496 val_496 2010-03-03 12 +0 val_0 2010-03-03 12 +322 val_322 2010-03-03 12 +197 val_197 2010-03-03 12 +468 val_468 2010-03-03 12 +393 val_393 2010-03-03 12 +454 val_454 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +199 val_199 2010-03-03 12 +191 val_191 2010-03-03 12 +418 val_418 2010-03-03 12 +96 val_96 2010-03-03 12 +26 val_26 2010-03-03 12 +165 val_165 2010-03-03 12 +327 val_327 2010-03-03 12 +230 val_230 2010-03-03 12 +205 val_205 2010-03-03 12 +120 val_120 2010-03-03 12 +131 val_131 2010-03-03 12 +51 val_51 2010-03-03 12 +404 val_404 2010-03-03 12 +43 val_43 2010-03-03 12 +436 val_436 2010-03-03 12 +156 val_156 2010-03-03 12 +469 val_469 2010-03-03 12 +468 val_468 2010-03-03 12 +308 val_308 2010-03-03 12 +95 val_95 2010-03-03 12 +196 val_196 2010-03-03 12 +288 val_288 2010-03-03 12 +481 val_481 2010-03-03 12 +457 val_457 2010-03-03 12 +98 val_98 2010-03-03 12 +282 val_282 2010-03-03 12 +197 val_197 2010-03-03 12 +187 val_187 2010-03-03 12 +318 val_318 2010-03-03 12 +318 val_318 2010-03-03 12 +409 val_409 2010-03-03 12 +470 val_470 2010-03-03 12 +137 val_137 2010-03-03 12 +369 val_369 2010-03-03 12 +316 val_316 2010-03-03 12 +169 val_169 2010-03-03 12 +413 val_413 2010-03-03 12 +85 val_85 2010-03-03 12 +77 val_77 2010-03-03 12 +0 val_0 2010-03-03 12 +490 val_490 2010-03-03 12 +87 val_87 2010-03-03 12 +364 val_364 2010-03-03 12 +179 val_179 2010-03-03 12 +118 val_118 2010-03-03 12 +134 val_134 2010-03-03 12 +395 val_395 2010-03-03 12 +282 val_282 2010-03-03 12 +138 val_138 2010-03-03 12 +238 val_238 2010-03-03 12 +419 val_419 2010-03-03 12 +15 val_15 2010-03-03 12 +118 val_118 2010-03-03 12 +72 val_72 2010-03-03 12 +90 val_90 2010-03-03 12 +307 val_307 2010-03-03 12 +19 val_19 2010-03-03 12 +435 val_435 2010-03-03 12 +10 val_10 2010-03-03 12 +277 val_277 2010-03-03 12 +273 val_273 2010-03-03 12 +306 val_306 2010-03-03 12 +224 val_224 2010-03-03 12 +309 val_309 2010-03-03 12 +389 val_389 2010-03-03 12 +327 val_327 2010-03-03 12 +242 val_242 2010-03-03 12 +369 val_369 2010-03-03 12 +392 val_392 2010-03-03 12 +272 val_272 2010-03-03 12 +331 val_331 2010-03-03 12 +401 val_401 2010-03-03 12 +242 val_242 2010-03-03 12 +452 val_452 2010-03-03 12 +177 val_177 2010-03-03 12 +226 val_226 2010-03-03 12 +5 val_5 2010-03-03 12 +497 val_497 2010-03-03 12 +402 val_402 2010-03-03 12 +396 val_396 2010-03-03 12 +317 val_317 2010-03-03 12 +395 val_395 2010-03-03 12 +58 val_58 2010-03-03 12 +35 val_35 2010-03-03 12 +336 val_336 2010-03-03 12 +95 val_95 2010-03-03 12 +11 val_11 2010-03-03 12 +168 val_168 2010-03-03 12 +34 val_34 2010-03-03 12 +229 val_229 2010-03-03 12 +233 val_233 2010-03-03 12 +143 val_143 2010-03-03 12 +472 val_472 2010-03-03 12 +322 val_322 2010-03-03 12 +498 val_498 2010-03-03 12 +160 val_160 2010-03-03 12 +195 val_195 2010-03-03 12 +42 val_42 2010-03-03 12 +321 val_321 2010-03-03 12 +430 val_430 2010-03-03 12 +119 val_119 2010-03-03 12 +489 val_489 2010-03-03 12 +458 val_458 2010-03-03 12 +78 val_78 2010-03-03 12 +76 val_76 2010-03-03 12 +41 val_41 2010-03-03 12 +223 val_223 2010-03-03 12 +492 val_492 2010-03-03 12 +149 val_149 2010-03-03 12 +449 val_449 2010-03-03 12 +218 val_218 2010-03-03 12 +228 val_228 2010-03-03 12 +138 val_138 2010-03-03 12 +453 val_453 2010-03-03 12 +30 val_30 2010-03-03 12 +209 val_209 2010-03-03 12 +64 val_64 2010-03-03 12 +468 val_468 2010-03-03 12 +76 val_76 2010-03-03 12 +74 val_74 2010-03-03 12 +342 val_342 2010-03-03 12 +69 val_69 2010-03-03 12 +230 val_230 2010-03-03 12 +33 val_33 2010-03-03 12 +368 val_368 2010-03-03 12 +103 val_103 2010-03-03 12 +296 val_296 2010-03-03 12 +113 val_113 2010-03-03 12 +216 val_216 2010-03-03 12 +367 val_367 2010-03-03 12 +344 val_344 2010-03-03 12 +167 val_167 2010-03-03 12 +274 val_274 2010-03-03 12 +219 val_219 2010-03-03 12 +239 val_239 2010-03-03 12 +485 val_485 2010-03-03 12 +116 val_116 2010-03-03 12 +223 val_223 2010-03-03 12 +256 val_256 2010-03-03 12 +263 val_263 2010-03-03 12 +70 val_70 2010-03-03 12 +487 val_487 2010-03-03 12 +480 val_480 2010-03-03 12 +401 val_401 2010-03-03 12 +288 val_288 2010-03-03 12 +191 val_191 2010-03-03 12 +5 val_5 2010-03-03 12 +244 val_244 2010-03-03 12 +438 val_438 2010-03-03 12 +128 val_128 2010-03-03 12 +467 val_467 2010-03-03 12 +432 val_432 2010-03-03 12 +202 val_202 2010-03-03 12 +316 val_316 2010-03-03 12 +229 val_229 2010-03-03 12 +469 val_469 2010-03-03 12 +463 val_463 2010-03-03 12 +280 val_280 2010-03-03 12 +2 val_2 2010-03-03 12 +35 val_35 2010-03-03 12 +283 val_283 2010-03-03 12 +331 val_331 2010-03-03 12 +235 val_235 2010-03-03 12 +80 val_80 2010-03-03 12 +44 val_44 2010-03-03 12 +193 val_193 2010-03-03 12 +321 val_321 2010-03-03 12 +335 val_335 2010-03-03 12 +104 val_104 2010-03-03 12 +466 val_466 2010-03-03 12 +366 val_366 2010-03-03 12 +175 val_175 2010-03-03 12 +403 val_403 2010-03-03 12 +483 val_483 2010-03-03 12 +53 val_53 2010-03-03 12 +105 val_105 2010-03-03 12 +257 val_257 2010-03-03 12 +406 val_406 2010-03-03 12 +409 val_409 2010-03-03 12 +190 val_190 2010-03-03 12 +406 val_406 2010-03-03 12 +401 val_401 2010-03-03 12 +114 val_114 2010-03-03 12 +258 val_258 2010-03-03 12 +90 val_90 2010-03-03 12 +203 val_203 2010-03-03 12 +262 val_262 2010-03-03 12 +348 val_348 2010-03-03 12 +424 val_424 2010-03-03 12 +12 val_12 2010-03-03 12 +396 val_396 2010-03-03 12 +201 val_201 2010-03-03 12 +217 val_217 2010-03-03 12 +164 val_164 2010-03-03 12 +431 val_431 2010-03-03 12 +454 val_454 2010-03-03 12 +478 val_478 2010-03-03 12 +298 val_298 2010-03-03 12 +125 val_125 2010-03-03 12 +431 val_431 2010-03-03 12 +164 val_164 2010-03-03 12 +424 val_424 2010-03-03 12 +187 val_187 2010-03-03 12 +382 val_382 2010-03-03 12 +5 val_5 2010-03-03 12 +70 val_70 2010-03-03 12 +397 val_397 2010-03-03 12 +480 val_480 2010-03-03 12 +291 val_291 2010-03-03 12 +24 val_24 2010-03-03 12 +351 val_351 2010-03-03 12 +255 val_255 2010-03-03 12 +104 val_104 2010-03-03 12 +70 val_70 2010-03-03 12 +163 val_163 2010-03-03 12 +438 val_438 2010-03-03 12 +119 val_119 2010-03-03 12 +414 val_414 2010-03-03 12 +200 val_200 2010-03-03 12 +491 val_491 2010-03-03 12 +237 val_237 2010-03-03 12 +439 val_439 2010-03-03 12 +360 val_360 2010-03-03 12 +248 val_248 2010-03-03 12 +479 val_479 2010-03-03 12 +305 val_305 2010-03-03 12 +417 val_417 2010-03-03 12 +199 val_199 2010-03-03 12 +444 val_444 2010-03-03 12 +120 val_120 2010-03-03 12 +429 val_429 2010-03-03 12 +169 val_169 2010-03-03 12 +443 val_443 2010-03-03 12 +323 val_323 2010-03-03 12 +325 val_325 2010-03-03 12 +277 val_277 2010-03-03 12 +230 val_230 2010-03-03 12 +478 val_478 2010-03-03 12 +178 val_178 2010-03-03 12 +468 val_468 2010-03-03 12 +310 val_310 2010-03-03 12 +317 val_317 2010-03-03 12 +333 val_333 2010-03-03 12 +493 val_493 2010-03-03 12 +460 val_460 2010-03-03 12 +207 val_207 2010-03-03 12 +249 val_249 2010-03-03 12 +265 val_265 2010-03-03 12 +480 val_480 2010-03-03 12 +83 val_83 2010-03-03 12 +136 val_136 2010-03-03 12 +353 val_353 2010-03-03 12 +172 val_172 2010-03-03 12 +214 val_214 2010-03-03 12 +462 val_462 2010-03-03 12 +233 val_233 2010-03-03 12 +406 val_406 2010-03-03 12 +133 val_133 2010-03-03 12 +175 val_175 2010-03-03 12 +189 val_189 2010-03-03 12 +454 val_454 2010-03-03 12 +375 val_375 2010-03-03 12 +401 val_401 2010-03-03 12 +421 val_421 2010-03-03 12 +407 val_407 2010-03-03 12 +384 val_384 2010-03-03 12 +256 val_256 2010-03-03 12 +26 val_26 2010-03-03 12 +134 val_134 2010-03-03 12 +67 val_67 2010-03-03 12 +384 val_384 2010-03-03 12 +379 val_379 2010-03-03 12 +18 val_18 2010-03-03 12 +462 val_462 2010-03-03 12 +492 val_492 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +9 val_9 2010-03-03 12 +341 val_341 2010-03-03 12 +498 val_498 2010-03-03 12 +146 val_146 2010-03-03 12 +458 val_458 2010-03-03 12 +362 val_362 2010-03-03 12 +186 val_186 2010-03-03 12 +285 val_285 2010-03-03 12 +348 val_348 2010-03-03 12 +167 val_167 2010-03-03 12 +18 val_18 2010-03-03 12 +273 val_273 2010-03-03 12 +183 val_183 2010-03-03 12 +281 val_281 2010-03-03 12 +344 val_344 2010-03-03 12 +97 val_97 2010-03-03 12 +469 val_469 2010-03-03 12 +315 val_315 2010-03-03 12 +84 val_84 2010-03-03 12 +28 val_28 2010-03-03 12 +37 val_37 2010-03-03 12 +448 val_448 2010-03-03 12 +152 val_152 2010-03-03 12 +348 val_348 2010-03-03 12 +307 val_307 2010-03-03 12 +194 val_194 2010-03-03 12 +414 val_414 2010-03-03 12 +477 val_477 2010-03-03 12 +222 val_222 2010-03-03 12 +126 val_126 2010-03-03 12 +90 val_90 2010-03-03 12 +169 val_169 2010-03-03 12 +403 val_403 2010-03-03 12 +400 val_400 2010-03-03 12 +200 val_200 2010-03-03 12 +97 val_97 2010-03-03 12 +238 val_238 2010-03-03 12 +86 val_86 2010-03-03 12 +311 val_311 2010-03-03 12 +27 val_27 2010-03-03 12 +165 val_165 2010-03-03 12 +409 val_409 2010-03-03 12 +255 val_255 2010-03-03 12 +278 val_278 2010-03-03 12 +98 val_98 2010-03-03 12 +484 val_484 2010-03-03 12 +265 val_265 2010-03-03 12 +193 val_193 2010-03-03 12 +401 val_401 2010-03-03 12 +150 val_150 2010-03-03 12 +273 val_273 2010-03-03 12 +224 val_224 2010-03-03 12 +369 val_369 2010-03-03 12 +66 val_66 2010-03-03 12 +128 val_128 2010-03-03 12 +213 val_213 2010-03-03 12 +146 val_146 2010-03-03 12 +406 val_406 2010-03-03 12 +429 val_429 2010-03-03 12 +374 val_374 2010-03-03 12 +152 val_152 2010-03-03 12 +469 val_469 2010-03-03 12 +145 val_145 2010-03-03 12 +495 val_495 2010-03-03 12 +37 val_37 2010-03-03 12 +327 val_327 2010-03-03 12 +281 val_281 2010-03-03 12 +277 val_277 2010-03-03 12 +209 val_209 2010-03-03 12 +15 val_15 2010-03-03 12 +82 val_82 2010-03-03 12 +403 val_403 2010-03-03 12 +166 val_166 2010-03-03 12 +417 val_417 2010-03-03 12 +430 val_430 2010-03-03 12 +252 val_252 2010-03-03 12 +292 val_292 2010-03-03 12 +219 val_219 2010-03-03 12 +287 val_287 2010-03-03 12 +153 val_153 2010-03-03 12 +193 val_193 2010-03-03 12 +338 val_338 2010-03-03 12 +446 val_446 2010-03-03 12 +459 val_459 2010-03-03 12 +394 val_394 2010-03-03 12 +237 val_237 2010-03-03 12 +482 val_482 2010-03-03 12 +174 val_174 2010-03-03 12 +413 val_413 2010-03-03 12 +494 val_494 2010-03-03 12 +207 val_207 2010-03-03 12 +199 val_199 2010-03-03 12 +466 val_466 2010-03-03 12 +208 val_208 2010-03-03 12 +174 val_174 2010-03-03 12 +399 val_399 2010-03-03 12 +396 val_396 2010-03-03 12 +247 val_247 2010-03-03 12 +417 val_417 2010-03-03 12 +489 val_489 2010-03-03 12 +162 val_162 2010-03-03 12 +377 val_377 2010-03-03 12 +397 val_397 2010-03-03 12 +309 val_309 2010-03-03 12 +365 val_365 2010-03-03 12 +266 val_266 2010-03-03 12 +439 val_439 2010-03-03 12 +342 val_342 2010-03-03 12 +367 val_367 2010-03-03 12 +325 val_325 2010-03-03 12 +167 val_167 2010-03-03 12 +195 val_195 2010-03-03 12 +475 val_475 2010-03-03 12 +17 val_17 2010-03-03 12 +113 val_113 2010-03-03 12 +155 val_155 2010-03-03 12 +203 val_203 2010-03-03 12 +339 val_339 2010-03-03 12 +0 val_0 2010-03-03 12 +455 val_455 2010-03-03 12 +128 val_128 2010-03-03 12 +311 val_311 2010-03-03 12 +316 val_316 2010-03-03 12 +57 val_57 2010-03-03 12 +302 val_302 2010-03-03 12 +205 val_205 2010-03-03 12 +149 val_149 2010-03-03 12 +438 val_438 2010-03-03 12 +345 val_345 2010-03-03 12 +129 val_129 2010-03-03 12 +170 val_170 2010-03-03 12 +20 val_20 2010-03-03 12 +489 val_489 2010-03-03 12 +157 val_157 2010-03-03 12 +378 val_378 2010-03-03 12 +221 val_221 2010-03-03 12 +92 val_92 2010-03-03 12 +111 val_111 2010-03-03 12 +47 val_47 2010-03-03 12 +72 val_72 2010-03-03 12 +4 val_4 2010-03-03 12 +280 val_280 2010-03-03 12 +35 val_35 2010-03-03 12 +427 val_427 2010-03-03 12 +277 val_277 2010-03-03 12 +208 val_208 2010-03-03 12 +356 val_356 2010-03-03 12 +399 val_399 2010-03-03 12 +169 val_169 2010-03-03 12 +382 val_382 2010-03-03 12 +498 val_498 2010-03-03 12 +125 val_125 2010-03-03 12 +386 val_386 2010-03-03 12 +437 val_437 2010-03-03 12 +469 val_469 2010-03-03 12 +192 val_192 2010-03-03 12 +286 val_286 2010-03-03 12 +187 val_187 2010-03-03 12 +176 val_176 2010-03-03 12 +54 val_54 2010-03-03 12 +459 val_459 2010-03-03 12 +51 val_51 2010-03-03 12 +138 val_138 2010-03-03 12 +103 val_103 2010-03-03 12 +239 val_239 2010-03-03 12 +213 val_213 2010-03-03 12 +216 val_216 2010-03-03 12 +430 val_430 2010-03-03 12 +278 val_278 2010-03-03 12 +176 val_176 2010-03-03 12 +289 val_289 2010-03-03 12 +221 val_221 2010-03-03 12 +65 val_65 2010-03-03 12 +318 val_318 2010-03-03 12 +332 val_332 2010-03-03 12 +311 val_311 2010-03-03 12 +275 val_275 2010-03-03 12 +137 val_137 2010-03-03 12 +241 val_241 2010-03-03 12 +83 val_83 2010-03-03 12 +333 val_333 2010-03-03 12 +180 val_180 2010-03-03 12 +284 val_284 2010-03-03 12 +12 val_12 2010-03-03 12 +230 val_230 2010-03-03 12 +181 val_181 2010-03-03 12 +67 val_67 2010-03-03 12 +260 val_260 2010-03-03 12 +404 val_404 2010-03-03 12 +384 val_384 2010-03-03 12 +489 val_489 2010-03-03 12 +353 val_353 2010-03-03 12 +373 val_373 2010-03-03 12 +272 val_272 2010-03-03 12 +138 val_138 2010-03-03 12 +217 val_217 2010-03-03 12 +84 val_84 2010-03-03 12 +348 val_348 2010-03-03 12 +466 val_466 2010-03-03 12 +58 val_58 2010-03-03 12 +8 val_8 2010-03-03 12 +411 val_411 2010-03-03 12 +230 val_230 2010-03-03 12 +208 val_208 2010-03-03 12 +348 val_348 2010-03-03 12 +24 val_24 2010-03-03 12 +463 val_463 2010-03-03 12 +431 val_431 2010-03-03 12 +179 val_179 2010-03-03 12 +172 val_172 2010-03-03 12 +42 val_42 2010-03-03 12 +129 val_129 2010-03-03 12 +158 val_158 2010-03-03 12 +119 val_119 2010-03-03 12 +496 val_496 2010-03-03 12 +0 val_0 2010-03-03 12 +322 val_322 2010-03-03 12 +197 val_197 2010-03-03 12 +468 val_468 2010-03-03 12 +393 val_393 2010-03-03 12 +454 val_454 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +199 val_199 2010-03-03 12 +191 val_191 2010-03-03 12 +418 val_418 2010-03-03 12 +96 val_96 2010-03-03 12 +26 val_26 2010-03-03 12 +165 val_165 2010-03-03 12 +327 val_327 2010-03-03 12 +230 val_230 2010-03-03 12 +205 val_205 2010-03-03 12 +120 val_120 2010-03-03 12 +131 val_131 2010-03-03 12 +51 val_51 2010-03-03 12 +404 val_404 2010-03-03 12 +43 val_43 2010-03-03 12 +436 val_436 2010-03-03 12 +156 val_156 2010-03-03 12 +469 val_469 2010-03-03 12 +468 val_468 2010-03-03 12 +308 val_308 2010-03-03 12 +95 val_95 2010-03-03 12 +196 val_196 2010-03-03 12 +288 val_288 2010-03-03 12 +481 val_481 2010-03-03 12 +457 val_457 2010-03-03 12 +98 val_98 2010-03-03 12 +282 val_282 2010-03-03 12 +197 val_197 2010-03-03 12 +187 val_187 2010-03-03 12 +318 val_318 2010-03-03 12 +318 val_318 2010-03-03 12 +409 val_409 2010-03-03 12 +470 val_470 2010-03-03 12 +137 val_137 2010-03-03 12 +369 val_369 2010-03-03 12 +316 val_316 2010-03-03 12 +169 val_169 2010-03-03 12 +413 val_413 2010-03-03 12 +85 val_85 2010-03-03 12 +77 val_77 2010-03-03 12 +0 val_0 2010-03-03 12 +490 val_490 2010-03-03 12 +87 val_87 2010-03-03 12 +364 val_364 2010-03-03 12 +179 val_179 2010-03-03 12 +118 val_118 2010-03-03 12 +134 val_134 2010-03-03 12 +395 val_395 2010-03-03 12 +282 val_282 2010-03-03 12 +138 val_138 2010-03-03 12 +238 val_238 2010-03-03 12 +419 val_419 2010-03-03 12 +15 val_15 2010-03-03 12 +118 val_118 2010-03-03 12 +72 val_72 2010-03-03 12 +90 val_90 2010-03-03 12 +307 val_307 2010-03-03 12 +19 val_19 2010-03-03 12 +435 val_435 2010-03-03 12 +10 val_10 2010-03-03 12 +277 val_277 2010-03-03 12 +273 val_273 2010-03-03 12 +306 val_306 2010-03-03 12 +224 val_224 2010-03-03 12 +309 val_309 2010-03-03 12 +389 val_389 2010-03-03 12 +327 val_327 2010-03-03 12 +242 val_242 2010-03-03 12 +369 val_369 2010-03-03 12 +392 val_392 2010-03-03 12 +272 val_272 2010-03-03 12 +331 val_331 2010-03-03 12 +401 val_401 2010-03-03 12 +242 val_242 2010-03-03 12 +452 val_452 2010-03-03 12 +177 val_177 2010-03-03 12 +226 val_226 2010-03-03 12 +5 val_5 2010-03-03 12 +497 val_497 2010-03-03 12 +402 val_402 2010-03-03 12 +396 val_396 2010-03-03 12 +317 val_317 2010-03-03 12 +395 val_395 2010-03-03 12 +58 val_58 2010-03-03 12 +35 val_35 2010-03-03 12 +336 val_336 2010-03-03 12 +95 val_95 2010-03-03 12 +11 val_11 2010-03-03 12 +168 val_168 2010-03-03 12 +34 val_34 2010-03-03 12 +229 val_229 2010-03-03 12 +233 val_233 2010-03-03 12 +143 val_143 2010-03-03 12 +472 val_472 2010-03-03 12 +322 val_322 2010-03-03 12 +498 val_498 2010-03-03 12 +160 val_160 2010-03-03 12 +195 val_195 2010-03-03 12 +42 val_42 2010-03-03 12 +321 val_321 2010-03-03 12 +430 val_430 2010-03-03 12 +119 val_119 2010-03-03 12 +489 val_489 2010-03-03 12 +458 val_458 2010-03-03 12 +78 val_78 2010-03-03 12 +76 val_76 2010-03-03 12 +41 val_41 2010-03-03 12 +223 val_223 2010-03-03 12 +492 val_492 2010-03-03 12 +149 val_149 2010-03-03 12 +449 val_449 2010-03-03 12 +218 val_218 2010-03-03 12 +228 val_228 2010-03-03 12 +138 val_138 2010-03-03 12 +453 val_453 2010-03-03 12 +30 val_30 2010-03-03 12 +209 val_209 2010-03-03 12 +64 val_64 2010-03-03 12 +468 val_468 2010-03-03 12 +76 val_76 2010-03-03 12 +74 val_74 2010-03-03 12 +342 val_342 2010-03-03 12 +69 val_69 2010-03-03 12 +230 val_230 2010-03-03 12 +33 val_33 2010-03-03 12 +368 val_368 2010-03-03 12 +103 val_103 2010-03-03 12 +296 val_296 2010-03-03 12 +113 val_113 2010-03-03 12 +216 val_216 2010-03-03 12 +367 val_367 2010-03-03 12 +344 val_344 2010-03-03 12 +167 val_167 2010-03-03 12 +274 val_274 2010-03-03 12 +219 val_219 2010-03-03 12 +239 val_239 2010-03-03 12 +485 val_485 2010-03-03 12 +116 val_116 2010-03-03 12 +223 val_223 2010-03-03 12 +256 val_256 2010-03-03 12 +263 val_263 2010-03-03 12 +70 val_70 2010-03-03 12 +487 val_487 2010-03-03 12 +480 val_480 2010-03-03 12 +401 val_401 2010-03-03 12 +288 val_288 2010-03-03 12 +191 val_191 2010-03-03 12 +5 val_5 2010-03-03 12 +244 val_244 2010-03-03 12 +438 val_438 2010-03-03 12 +128 val_128 2010-03-03 12 +467 val_467 2010-03-03 12 +432 val_432 2010-03-03 12 +202 val_202 2010-03-03 12 +316 val_316 2010-03-03 12 +229 val_229 2010-03-03 12 +469 val_469 2010-03-03 12 +463 val_463 2010-03-03 12 +280 val_280 2010-03-03 12 +2 val_2 2010-03-03 12 +35 val_35 2010-03-03 12 +283 val_283 2010-03-03 12 +331 val_331 2010-03-03 12 +235 val_235 2010-03-03 12 +80 val_80 2010-03-03 12 +44 val_44 2010-03-03 12 +193 val_193 2010-03-03 12 +321 val_321 2010-03-03 12 +335 val_335 2010-03-03 12 +104 val_104 2010-03-03 12 +466 val_466 2010-03-03 12 +366 val_366 2010-03-03 12 +175 val_175 2010-03-03 12 +403 val_403 2010-03-03 12 +483 val_483 2010-03-03 12 +53 val_53 2010-03-03 12 +105 val_105 2010-03-03 12 +257 val_257 2010-03-03 12 +406 val_406 2010-03-03 12 +409 val_409 2010-03-03 12 +190 val_190 2010-03-03 12 +406 val_406 2010-03-03 12 +401 val_401 2010-03-03 12 +114 val_114 2010-03-03 12 +258 val_258 2010-03-03 12 +90 val_90 2010-03-03 12 +203 val_203 2010-03-03 12 +262 val_262 2010-03-03 12 +348 val_348 2010-03-03 12 +424 val_424 2010-03-03 12 +12 val_12 2010-03-03 12 +396 val_396 2010-03-03 12 +201 val_201 2010-03-03 12 +217 val_217 2010-03-03 12 +164 val_164 2010-03-03 12 +431 val_431 2010-03-03 12 +454 val_454 2010-03-03 12 +478 val_478 2010-03-03 12 +298 val_298 2010-03-03 12 +125 val_125 2010-03-03 12 +431 val_431 2010-03-03 12 +164 val_164 2010-03-03 12 +424 val_424 2010-03-03 12 +187 val_187 2010-03-03 12 +382 val_382 2010-03-03 12 +5 val_5 2010-03-03 12 +70 val_70 2010-03-03 12 +397 val_397 2010-03-03 12 +480 val_480 2010-03-03 12 +291 val_291 2010-03-03 12 +24 val_24 2010-03-03 12 +351 val_351 2010-03-03 12 +255 val_255 2010-03-03 12 +104 val_104 2010-03-03 12 +70 val_70 2010-03-03 12 +163 val_163 2010-03-03 12 +438 val_438 2010-03-03 12 +119 val_119 2010-03-03 12 +414 val_414 2010-03-03 12 +200 val_200 2010-03-03 12 +491 val_491 2010-03-03 12 +237 val_237 2010-03-03 12 +439 val_439 2010-03-03 12 +360 val_360 2010-03-03 12 +248 val_248 2010-03-03 12 +479 val_479 2010-03-03 12 +305 val_305 2010-03-03 12 +417 val_417 2010-03-03 12 +199 val_199 2010-03-03 12 +444 val_444 2010-03-03 12 +120 val_120 2010-03-03 12 +429 val_429 2010-03-03 12 +169 val_169 2010-03-03 12 +443 val_443 2010-03-03 12 +323 val_323 2010-03-03 12 +325 val_325 2010-03-03 12 +277 val_277 2010-03-03 12 +230 val_230 2010-03-03 12 +478 val_478 2010-03-03 12 +178 val_178 2010-03-03 12 +468 val_468 2010-03-03 12 +310 val_310 2010-03-03 12 +317 val_317 2010-03-03 12 +333 val_333 2010-03-03 12 +493 val_493 2010-03-03 12 +460 val_460 2010-03-03 12 +207 val_207 2010-03-03 12 +249 val_249 2010-03-03 12 +265 val_265 2010-03-03 12 +480 val_480 2010-03-03 12 +83 val_83 2010-03-03 12 +136 val_136 2010-03-03 12 +353 val_353 2010-03-03 12 +172 val_172 2010-03-03 12 +214 val_214 2010-03-03 12 +462 val_462 2010-03-03 12 +233 val_233 2010-03-03 12 +406 val_406 2010-03-03 12 +133 val_133 2010-03-03 12 +175 val_175 2010-03-03 12 +189 val_189 2010-03-03 12 +454 val_454 2010-03-03 12 +375 val_375 2010-03-03 12 +401 val_401 2010-03-03 12 +421 val_421 2010-03-03 12 +407 val_407 2010-03-03 12 +384 val_384 2010-03-03 12 +256 val_256 2010-03-03 12 +26 val_26 2010-03-03 12 +134 val_134 2010-03-03 12 +67 val_67 2010-03-03 12 +384 val_384 2010-03-03 12 +379 val_379 2010-03-03 12 +18 val_18 2010-03-03 12 +462 val_462 2010-03-03 12 +492 val_492 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +9 val_9 2010-03-03 12 +341 val_341 2010-03-03 12 +498 val_498 2010-03-03 12 +146 val_146 2010-03-03 12 +458 val_458 2010-03-03 12 +362 val_362 2010-03-03 12 +186 val_186 2010-03-03 12 +285 val_285 2010-03-03 12 +348 val_348 2010-03-03 12 +167 val_167 2010-03-03 12 +18 val_18 2010-03-03 12 +273 val_273 2010-03-03 12 +183 val_183 2010-03-03 12 +281 val_281 2010-03-03 12 +344 val_344 2010-03-03 12 +97 val_97 2010-03-03 12 +469 val_469 2010-03-03 12 +315 val_315 2010-03-03 12 +84 val_84 2010-03-03 12 +28 val_28 2010-03-03 12 +37 val_37 2010-03-03 12 +448 val_448 2010-03-03 12 +152 val_152 2010-03-03 12 +348 val_348 2010-03-03 12 +307 val_307 2010-03-03 12 +194 val_194 2010-03-03 12 +414 val_414 2010-03-03 12 +477 val_477 2010-03-03 12 +222 val_222 2010-03-03 12 +126 val_126 2010-03-03 12 +90 val_90 2010-03-03 12 +169 val_169 2010-03-03 12 +403 val_403 2010-03-03 12 +400 val_400 2010-03-03 12 +200 val_200 2010-03-03 12 +97 val_97 2010-03-03 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part12-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..e9c723bbd136e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part12-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-1-37e5641a1239a05bbd1fb9707f69cd59 b/sql/hive/src/test/resources/golden/load_dyn_part12-1-37e5641a1239a05bbd1fb9707f69cd59 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-2-4a10b19bdc478379bb8c8c9e5fe52c9b b/sql/hive/src/test/resources/golden/load_dyn_part12-2-4a10b19bdc478379bb8c8c9e5fe52c9b new file mode 100644 index 0000000000000..0c283c5378a6f --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part12-2-4a10b19bdc478379bb8c8c9e5fe52c9b @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part12, dbName:default, owner:marmbrus, createTime:1389738821, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1431818582215388621/nzhang_part12, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{transient_lastDdlTime=1389738821}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part12-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part12-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/load_dyn_part12-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part12-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-5-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part12-5-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part12-5-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-6-e5c79bdfc92b7b754b003d718d9717a1 b/sql/hive/src/test/resources/golden/load_dyn_part12-6-e5c79bdfc92b7b754b003d718d9717a1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-7-fd1422a86c9b12ce915a7fa2f2b7fc97 b/sql/hive/src/test/resources/golden/load_dyn_part12-7-fd1422a86c9b12ce915a7fa2f2b7fc97 new file mode 100644 index 0000000000000..8eb67466a7a89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part12-7-fd1422a86c9b12ce915a7fa2f2b7fc97 @@ -0,0 +1,2 @@ +ds=2010-03-03/hr=22 +ds=2010-03-03/hr=24 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part12-8-fd656b581b8f8fbb8ac22f444dbc345 b/sql/hive/src/test/resources/golden/load_dyn_part12-8-fd656b581b8f8fbb8ac22f444dbc345 new file mode 100644 index 0000000000000..9f50245c18177 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part12-8-fd656b581b8f8fbb8ac22f444dbc345 @@ -0,0 +1,2000 @@ +238 val_238 2010-03-03 22 +86 val_86 2010-03-03 22 +311 val_311 2010-03-03 22 +27 val_27 2010-03-03 22 +165 val_165 2010-03-03 22 +409 val_409 2010-03-03 22 +255 val_255 2010-03-03 22 +278 val_278 2010-03-03 22 +98 val_98 2010-03-03 22 +484 val_484 2010-03-03 22 +265 val_265 2010-03-03 22 +193 val_193 2010-03-03 22 +401 val_401 2010-03-03 22 +150 val_150 2010-03-03 22 +273 val_273 2010-03-03 22 +224 val_224 2010-03-03 22 +369 val_369 2010-03-03 22 +66 val_66 2010-03-03 22 +128 val_128 2010-03-03 22 +213 val_213 2010-03-03 22 +146 val_146 2010-03-03 22 +406 val_406 2010-03-03 22 +429 val_429 2010-03-03 22 +374 val_374 2010-03-03 22 +152 val_152 2010-03-03 22 +469 val_469 2010-03-03 22 +145 val_145 2010-03-03 22 +495 val_495 2010-03-03 22 +37 val_37 2010-03-03 22 +327 val_327 2010-03-03 22 +281 val_281 2010-03-03 22 +277 val_277 2010-03-03 22 +209 val_209 2010-03-03 22 +15 val_15 2010-03-03 22 +82 val_82 2010-03-03 22 +403 val_403 2010-03-03 22 +166 val_166 2010-03-03 22 +417 val_417 2010-03-03 22 +430 val_430 2010-03-03 22 +252 val_252 2010-03-03 22 +292 val_292 2010-03-03 22 +219 val_219 2010-03-03 22 +287 val_287 2010-03-03 22 +153 val_153 2010-03-03 22 +193 val_193 2010-03-03 22 +338 val_338 2010-03-03 22 +446 val_446 2010-03-03 22 +459 val_459 2010-03-03 22 +394 val_394 2010-03-03 22 +237 val_237 2010-03-03 22 +482 val_482 2010-03-03 22 +174 val_174 2010-03-03 22 +413 val_413 2010-03-03 22 +494 val_494 2010-03-03 22 +207 val_207 2010-03-03 22 +199 val_199 2010-03-03 22 +466 val_466 2010-03-03 22 +208 val_208 2010-03-03 22 +174 val_174 2010-03-03 22 +399 val_399 2010-03-03 22 +396 val_396 2010-03-03 22 +247 val_247 2010-03-03 22 +417 val_417 2010-03-03 22 +489 val_489 2010-03-03 22 +162 val_162 2010-03-03 22 +377 val_377 2010-03-03 22 +397 val_397 2010-03-03 22 +309 val_309 2010-03-03 22 +365 val_365 2010-03-03 22 +266 val_266 2010-03-03 22 +439 val_439 2010-03-03 22 +342 val_342 2010-03-03 22 +367 val_367 2010-03-03 22 +325 val_325 2010-03-03 22 +167 val_167 2010-03-03 22 +195 val_195 2010-03-03 22 +475 val_475 2010-03-03 22 +17 val_17 2010-03-03 22 +113 val_113 2010-03-03 22 +155 val_155 2010-03-03 22 +203 val_203 2010-03-03 22 +339 val_339 2010-03-03 22 +0 val_0 2010-03-03 22 +455 val_455 2010-03-03 22 +128 val_128 2010-03-03 22 +311 val_311 2010-03-03 22 +316 val_316 2010-03-03 22 +57 val_57 2010-03-03 22 +302 val_302 2010-03-03 22 +205 val_205 2010-03-03 22 +149 val_149 2010-03-03 22 +438 val_438 2010-03-03 22 +345 val_345 2010-03-03 22 +129 val_129 2010-03-03 22 +170 val_170 2010-03-03 22 +20 val_20 2010-03-03 22 +489 val_489 2010-03-03 22 +157 val_157 2010-03-03 22 +378 val_378 2010-03-03 22 +221 val_221 2010-03-03 22 +92 val_92 2010-03-03 22 +111 val_111 2010-03-03 22 +47 val_47 2010-03-03 22 +72 val_72 2010-03-03 22 +4 val_4 2010-03-03 22 +280 val_280 2010-03-03 22 +35 val_35 2010-03-03 22 +427 val_427 2010-03-03 22 +277 val_277 2010-03-03 22 +208 val_208 2010-03-03 22 +356 val_356 2010-03-03 22 +399 val_399 2010-03-03 22 +169 val_169 2010-03-03 22 +382 val_382 2010-03-03 22 +498 val_498 2010-03-03 22 +125 val_125 2010-03-03 22 +386 val_386 2010-03-03 22 +437 val_437 2010-03-03 22 +469 val_469 2010-03-03 22 +192 val_192 2010-03-03 22 +286 val_286 2010-03-03 22 +187 val_187 2010-03-03 22 +176 val_176 2010-03-03 22 +54 val_54 2010-03-03 22 +459 val_459 2010-03-03 22 +51 val_51 2010-03-03 22 +138 val_138 2010-03-03 22 +103 val_103 2010-03-03 22 +239 val_239 2010-03-03 22 +213 val_213 2010-03-03 22 +216 val_216 2010-03-03 22 +430 val_430 2010-03-03 22 +278 val_278 2010-03-03 22 +176 val_176 2010-03-03 22 +289 val_289 2010-03-03 22 +221 val_221 2010-03-03 22 +65 val_65 2010-03-03 22 +318 val_318 2010-03-03 22 +332 val_332 2010-03-03 22 +311 val_311 2010-03-03 22 +275 val_275 2010-03-03 22 +137 val_137 2010-03-03 22 +241 val_241 2010-03-03 22 +83 val_83 2010-03-03 22 +333 val_333 2010-03-03 22 +180 val_180 2010-03-03 22 +284 val_284 2010-03-03 22 +12 val_12 2010-03-03 22 +230 val_230 2010-03-03 22 +181 val_181 2010-03-03 22 +67 val_67 2010-03-03 22 +260 val_260 2010-03-03 22 +404 val_404 2010-03-03 22 +384 val_384 2010-03-03 22 +489 val_489 2010-03-03 22 +353 val_353 2010-03-03 22 +373 val_373 2010-03-03 22 +272 val_272 2010-03-03 22 +138 val_138 2010-03-03 22 +217 val_217 2010-03-03 22 +84 val_84 2010-03-03 22 +348 val_348 2010-03-03 22 +466 val_466 2010-03-03 22 +58 val_58 2010-03-03 22 +8 val_8 2010-03-03 22 +411 val_411 2010-03-03 22 +230 val_230 2010-03-03 22 +208 val_208 2010-03-03 22 +348 val_348 2010-03-03 22 +24 val_24 2010-03-03 22 +463 val_463 2010-03-03 22 +431 val_431 2010-03-03 22 +179 val_179 2010-03-03 22 +172 val_172 2010-03-03 22 +42 val_42 2010-03-03 22 +129 val_129 2010-03-03 22 +158 val_158 2010-03-03 22 +119 val_119 2010-03-03 22 +496 val_496 2010-03-03 22 +0 val_0 2010-03-03 22 +322 val_322 2010-03-03 22 +197 val_197 2010-03-03 22 +468 val_468 2010-03-03 22 +393 val_393 2010-03-03 22 +454 val_454 2010-03-03 22 +100 val_100 2010-03-03 22 +298 val_298 2010-03-03 22 +199 val_199 2010-03-03 22 +191 val_191 2010-03-03 22 +418 val_418 2010-03-03 22 +96 val_96 2010-03-03 22 +26 val_26 2010-03-03 22 +165 val_165 2010-03-03 22 +327 val_327 2010-03-03 22 +230 val_230 2010-03-03 22 +205 val_205 2010-03-03 22 +120 val_120 2010-03-03 22 +131 val_131 2010-03-03 22 +51 val_51 2010-03-03 22 +404 val_404 2010-03-03 22 +43 val_43 2010-03-03 22 +436 val_436 2010-03-03 22 +156 val_156 2010-03-03 22 +469 val_469 2010-03-03 22 +468 val_468 2010-03-03 22 +308 val_308 2010-03-03 22 +95 val_95 2010-03-03 22 +196 val_196 2010-03-03 22 +288 val_288 2010-03-03 22 +481 val_481 2010-03-03 22 +457 val_457 2010-03-03 22 +98 val_98 2010-03-03 22 +282 val_282 2010-03-03 22 +197 val_197 2010-03-03 22 +187 val_187 2010-03-03 22 +318 val_318 2010-03-03 22 +318 val_318 2010-03-03 22 +409 val_409 2010-03-03 22 +470 val_470 2010-03-03 22 +137 val_137 2010-03-03 22 +369 val_369 2010-03-03 22 +316 val_316 2010-03-03 22 +169 val_169 2010-03-03 22 +413 val_413 2010-03-03 22 +85 val_85 2010-03-03 22 +77 val_77 2010-03-03 22 +0 val_0 2010-03-03 22 +490 val_490 2010-03-03 22 +87 val_87 2010-03-03 22 +364 val_364 2010-03-03 22 +179 val_179 2010-03-03 22 +118 val_118 2010-03-03 22 +134 val_134 2010-03-03 22 +395 val_395 2010-03-03 22 +282 val_282 2010-03-03 22 +138 val_138 2010-03-03 22 +238 val_238 2010-03-03 22 +419 val_419 2010-03-03 22 +15 val_15 2010-03-03 22 +118 val_118 2010-03-03 22 +72 val_72 2010-03-03 22 +90 val_90 2010-03-03 22 +307 val_307 2010-03-03 22 +19 val_19 2010-03-03 22 +435 val_435 2010-03-03 22 +10 val_10 2010-03-03 22 +277 val_277 2010-03-03 22 +273 val_273 2010-03-03 22 +306 val_306 2010-03-03 22 +224 val_224 2010-03-03 22 +309 val_309 2010-03-03 22 +389 val_389 2010-03-03 22 +327 val_327 2010-03-03 22 +242 val_242 2010-03-03 22 +369 val_369 2010-03-03 22 +392 val_392 2010-03-03 22 +272 val_272 2010-03-03 22 +331 val_331 2010-03-03 22 +401 val_401 2010-03-03 22 +242 val_242 2010-03-03 22 +452 val_452 2010-03-03 22 +177 val_177 2010-03-03 22 +226 val_226 2010-03-03 22 +5 val_5 2010-03-03 22 +497 val_497 2010-03-03 22 +402 val_402 2010-03-03 22 +396 val_396 2010-03-03 22 +317 val_317 2010-03-03 22 +395 val_395 2010-03-03 22 +58 val_58 2010-03-03 22 +35 val_35 2010-03-03 22 +336 val_336 2010-03-03 22 +95 val_95 2010-03-03 22 +11 val_11 2010-03-03 22 +168 val_168 2010-03-03 22 +34 val_34 2010-03-03 22 +229 val_229 2010-03-03 22 +233 val_233 2010-03-03 22 +143 val_143 2010-03-03 22 +472 val_472 2010-03-03 22 +322 val_322 2010-03-03 22 +498 val_498 2010-03-03 22 +160 val_160 2010-03-03 22 +195 val_195 2010-03-03 22 +42 val_42 2010-03-03 22 +321 val_321 2010-03-03 22 +430 val_430 2010-03-03 22 +119 val_119 2010-03-03 22 +489 val_489 2010-03-03 22 +458 val_458 2010-03-03 22 +78 val_78 2010-03-03 22 +76 val_76 2010-03-03 22 +41 val_41 2010-03-03 22 +223 val_223 2010-03-03 22 +492 val_492 2010-03-03 22 +149 val_149 2010-03-03 22 +449 val_449 2010-03-03 22 +218 val_218 2010-03-03 22 +228 val_228 2010-03-03 22 +138 val_138 2010-03-03 22 +453 val_453 2010-03-03 22 +30 val_30 2010-03-03 22 +209 val_209 2010-03-03 22 +64 val_64 2010-03-03 22 +468 val_468 2010-03-03 22 +76 val_76 2010-03-03 22 +74 val_74 2010-03-03 22 +342 val_342 2010-03-03 22 +69 val_69 2010-03-03 22 +230 val_230 2010-03-03 22 +33 val_33 2010-03-03 22 +368 val_368 2010-03-03 22 +103 val_103 2010-03-03 22 +296 val_296 2010-03-03 22 +113 val_113 2010-03-03 22 +216 val_216 2010-03-03 22 +367 val_367 2010-03-03 22 +344 val_344 2010-03-03 22 +167 val_167 2010-03-03 22 +274 val_274 2010-03-03 22 +219 val_219 2010-03-03 22 +239 val_239 2010-03-03 22 +485 val_485 2010-03-03 22 +116 val_116 2010-03-03 22 +223 val_223 2010-03-03 22 +256 val_256 2010-03-03 22 +263 val_263 2010-03-03 22 +70 val_70 2010-03-03 22 +487 val_487 2010-03-03 22 +480 val_480 2010-03-03 22 +401 val_401 2010-03-03 22 +288 val_288 2010-03-03 22 +191 val_191 2010-03-03 22 +5 val_5 2010-03-03 22 +244 val_244 2010-03-03 22 +438 val_438 2010-03-03 22 +128 val_128 2010-03-03 22 +467 val_467 2010-03-03 22 +432 val_432 2010-03-03 22 +202 val_202 2010-03-03 22 +316 val_316 2010-03-03 22 +229 val_229 2010-03-03 22 +469 val_469 2010-03-03 22 +463 val_463 2010-03-03 22 +280 val_280 2010-03-03 22 +2 val_2 2010-03-03 22 +35 val_35 2010-03-03 22 +283 val_283 2010-03-03 22 +331 val_331 2010-03-03 22 +235 val_235 2010-03-03 22 +80 val_80 2010-03-03 22 +44 val_44 2010-03-03 22 +193 val_193 2010-03-03 22 +321 val_321 2010-03-03 22 +335 val_335 2010-03-03 22 +104 val_104 2010-03-03 22 +466 val_466 2010-03-03 22 +366 val_366 2010-03-03 22 +175 val_175 2010-03-03 22 +403 val_403 2010-03-03 22 +483 val_483 2010-03-03 22 +53 val_53 2010-03-03 22 +105 val_105 2010-03-03 22 +257 val_257 2010-03-03 22 +406 val_406 2010-03-03 22 +409 val_409 2010-03-03 22 +190 val_190 2010-03-03 22 +406 val_406 2010-03-03 22 +401 val_401 2010-03-03 22 +114 val_114 2010-03-03 22 +258 val_258 2010-03-03 22 +90 val_90 2010-03-03 22 +203 val_203 2010-03-03 22 +262 val_262 2010-03-03 22 +348 val_348 2010-03-03 22 +424 val_424 2010-03-03 22 +12 val_12 2010-03-03 22 +396 val_396 2010-03-03 22 +201 val_201 2010-03-03 22 +217 val_217 2010-03-03 22 +164 val_164 2010-03-03 22 +431 val_431 2010-03-03 22 +454 val_454 2010-03-03 22 +478 val_478 2010-03-03 22 +298 val_298 2010-03-03 22 +125 val_125 2010-03-03 22 +431 val_431 2010-03-03 22 +164 val_164 2010-03-03 22 +424 val_424 2010-03-03 22 +187 val_187 2010-03-03 22 +382 val_382 2010-03-03 22 +5 val_5 2010-03-03 22 +70 val_70 2010-03-03 22 +397 val_397 2010-03-03 22 +480 val_480 2010-03-03 22 +291 val_291 2010-03-03 22 +24 val_24 2010-03-03 22 +351 val_351 2010-03-03 22 +255 val_255 2010-03-03 22 +104 val_104 2010-03-03 22 +70 val_70 2010-03-03 22 +163 val_163 2010-03-03 22 +438 val_438 2010-03-03 22 +119 val_119 2010-03-03 22 +414 val_414 2010-03-03 22 +200 val_200 2010-03-03 22 +491 val_491 2010-03-03 22 +237 val_237 2010-03-03 22 +439 val_439 2010-03-03 22 +360 val_360 2010-03-03 22 +248 val_248 2010-03-03 22 +479 val_479 2010-03-03 22 +305 val_305 2010-03-03 22 +417 val_417 2010-03-03 22 +199 val_199 2010-03-03 22 +444 val_444 2010-03-03 22 +120 val_120 2010-03-03 22 +429 val_429 2010-03-03 22 +169 val_169 2010-03-03 22 +443 val_443 2010-03-03 22 +323 val_323 2010-03-03 22 +325 val_325 2010-03-03 22 +277 val_277 2010-03-03 22 +230 val_230 2010-03-03 22 +478 val_478 2010-03-03 22 +178 val_178 2010-03-03 22 +468 val_468 2010-03-03 22 +310 val_310 2010-03-03 22 +317 val_317 2010-03-03 22 +333 val_333 2010-03-03 22 +493 val_493 2010-03-03 22 +460 val_460 2010-03-03 22 +207 val_207 2010-03-03 22 +249 val_249 2010-03-03 22 +265 val_265 2010-03-03 22 +480 val_480 2010-03-03 22 +83 val_83 2010-03-03 22 +136 val_136 2010-03-03 22 +353 val_353 2010-03-03 22 +172 val_172 2010-03-03 22 +214 val_214 2010-03-03 22 +462 val_462 2010-03-03 22 +233 val_233 2010-03-03 22 +406 val_406 2010-03-03 22 +133 val_133 2010-03-03 22 +175 val_175 2010-03-03 22 +189 val_189 2010-03-03 22 +454 val_454 2010-03-03 22 +375 val_375 2010-03-03 22 +401 val_401 2010-03-03 22 +421 val_421 2010-03-03 22 +407 val_407 2010-03-03 22 +384 val_384 2010-03-03 22 +256 val_256 2010-03-03 22 +26 val_26 2010-03-03 22 +134 val_134 2010-03-03 22 +67 val_67 2010-03-03 22 +384 val_384 2010-03-03 22 +379 val_379 2010-03-03 22 +18 val_18 2010-03-03 22 +462 val_462 2010-03-03 22 +492 val_492 2010-03-03 22 +100 val_100 2010-03-03 22 +298 val_298 2010-03-03 22 +9 val_9 2010-03-03 22 +341 val_341 2010-03-03 22 +498 val_498 2010-03-03 22 +146 val_146 2010-03-03 22 +458 val_458 2010-03-03 22 +362 val_362 2010-03-03 22 +186 val_186 2010-03-03 22 +285 val_285 2010-03-03 22 +348 val_348 2010-03-03 22 +167 val_167 2010-03-03 22 +18 val_18 2010-03-03 22 +273 val_273 2010-03-03 22 +183 val_183 2010-03-03 22 +281 val_281 2010-03-03 22 +344 val_344 2010-03-03 22 +97 val_97 2010-03-03 22 +469 val_469 2010-03-03 22 +315 val_315 2010-03-03 22 +84 val_84 2010-03-03 22 +28 val_28 2010-03-03 22 +37 val_37 2010-03-03 22 +448 val_448 2010-03-03 22 +152 val_152 2010-03-03 22 +348 val_348 2010-03-03 22 +307 val_307 2010-03-03 22 +194 val_194 2010-03-03 22 +414 val_414 2010-03-03 22 +477 val_477 2010-03-03 22 +222 val_222 2010-03-03 22 +126 val_126 2010-03-03 22 +90 val_90 2010-03-03 22 +169 val_169 2010-03-03 22 +403 val_403 2010-03-03 22 +400 val_400 2010-03-03 22 +200 val_200 2010-03-03 22 +97 val_97 2010-03-03 22 +238 val_238 2010-03-03 22 +86 val_86 2010-03-03 22 +311 val_311 2010-03-03 22 +27 val_27 2010-03-03 22 +165 val_165 2010-03-03 22 +409 val_409 2010-03-03 22 +255 val_255 2010-03-03 22 +278 val_278 2010-03-03 22 +98 val_98 2010-03-03 22 +484 val_484 2010-03-03 22 +265 val_265 2010-03-03 22 +193 val_193 2010-03-03 22 +401 val_401 2010-03-03 22 +150 val_150 2010-03-03 22 +273 val_273 2010-03-03 22 +224 val_224 2010-03-03 22 +369 val_369 2010-03-03 22 +66 val_66 2010-03-03 22 +128 val_128 2010-03-03 22 +213 val_213 2010-03-03 22 +146 val_146 2010-03-03 22 +406 val_406 2010-03-03 22 +429 val_429 2010-03-03 22 +374 val_374 2010-03-03 22 +152 val_152 2010-03-03 22 +469 val_469 2010-03-03 22 +145 val_145 2010-03-03 22 +495 val_495 2010-03-03 22 +37 val_37 2010-03-03 22 +327 val_327 2010-03-03 22 +281 val_281 2010-03-03 22 +277 val_277 2010-03-03 22 +209 val_209 2010-03-03 22 +15 val_15 2010-03-03 22 +82 val_82 2010-03-03 22 +403 val_403 2010-03-03 22 +166 val_166 2010-03-03 22 +417 val_417 2010-03-03 22 +430 val_430 2010-03-03 22 +252 val_252 2010-03-03 22 +292 val_292 2010-03-03 22 +219 val_219 2010-03-03 22 +287 val_287 2010-03-03 22 +153 val_153 2010-03-03 22 +193 val_193 2010-03-03 22 +338 val_338 2010-03-03 22 +446 val_446 2010-03-03 22 +459 val_459 2010-03-03 22 +394 val_394 2010-03-03 22 +237 val_237 2010-03-03 22 +482 val_482 2010-03-03 22 +174 val_174 2010-03-03 22 +413 val_413 2010-03-03 22 +494 val_494 2010-03-03 22 +207 val_207 2010-03-03 22 +199 val_199 2010-03-03 22 +466 val_466 2010-03-03 22 +208 val_208 2010-03-03 22 +174 val_174 2010-03-03 22 +399 val_399 2010-03-03 22 +396 val_396 2010-03-03 22 +247 val_247 2010-03-03 22 +417 val_417 2010-03-03 22 +489 val_489 2010-03-03 22 +162 val_162 2010-03-03 22 +377 val_377 2010-03-03 22 +397 val_397 2010-03-03 22 +309 val_309 2010-03-03 22 +365 val_365 2010-03-03 22 +266 val_266 2010-03-03 22 +439 val_439 2010-03-03 22 +342 val_342 2010-03-03 22 +367 val_367 2010-03-03 22 +325 val_325 2010-03-03 22 +167 val_167 2010-03-03 22 +195 val_195 2010-03-03 22 +475 val_475 2010-03-03 22 +17 val_17 2010-03-03 22 +113 val_113 2010-03-03 22 +155 val_155 2010-03-03 22 +203 val_203 2010-03-03 22 +339 val_339 2010-03-03 22 +0 val_0 2010-03-03 22 +455 val_455 2010-03-03 22 +128 val_128 2010-03-03 22 +311 val_311 2010-03-03 22 +316 val_316 2010-03-03 22 +57 val_57 2010-03-03 22 +302 val_302 2010-03-03 22 +205 val_205 2010-03-03 22 +149 val_149 2010-03-03 22 +438 val_438 2010-03-03 22 +345 val_345 2010-03-03 22 +129 val_129 2010-03-03 22 +170 val_170 2010-03-03 22 +20 val_20 2010-03-03 22 +489 val_489 2010-03-03 22 +157 val_157 2010-03-03 22 +378 val_378 2010-03-03 22 +221 val_221 2010-03-03 22 +92 val_92 2010-03-03 22 +111 val_111 2010-03-03 22 +47 val_47 2010-03-03 22 +72 val_72 2010-03-03 22 +4 val_4 2010-03-03 22 +280 val_280 2010-03-03 22 +35 val_35 2010-03-03 22 +427 val_427 2010-03-03 22 +277 val_277 2010-03-03 22 +208 val_208 2010-03-03 22 +356 val_356 2010-03-03 22 +399 val_399 2010-03-03 22 +169 val_169 2010-03-03 22 +382 val_382 2010-03-03 22 +498 val_498 2010-03-03 22 +125 val_125 2010-03-03 22 +386 val_386 2010-03-03 22 +437 val_437 2010-03-03 22 +469 val_469 2010-03-03 22 +192 val_192 2010-03-03 22 +286 val_286 2010-03-03 22 +187 val_187 2010-03-03 22 +176 val_176 2010-03-03 22 +54 val_54 2010-03-03 22 +459 val_459 2010-03-03 22 +51 val_51 2010-03-03 22 +138 val_138 2010-03-03 22 +103 val_103 2010-03-03 22 +239 val_239 2010-03-03 22 +213 val_213 2010-03-03 22 +216 val_216 2010-03-03 22 +430 val_430 2010-03-03 22 +278 val_278 2010-03-03 22 +176 val_176 2010-03-03 22 +289 val_289 2010-03-03 22 +221 val_221 2010-03-03 22 +65 val_65 2010-03-03 22 +318 val_318 2010-03-03 22 +332 val_332 2010-03-03 22 +311 val_311 2010-03-03 22 +275 val_275 2010-03-03 22 +137 val_137 2010-03-03 22 +241 val_241 2010-03-03 22 +83 val_83 2010-03-03 22 +333 val_333 2010-03-03 22 +180 val_180 2010-03-03 22 +284 val_284 2010-03-03 22 +12 val_12 2010-03-03 22 +230 val_230 2010-03-03 22 +181 val_181 2010-03-03 22 +67 val_67 2010-03-03 22 +260 val_260 2010-03-03 22 +404 val_404 2010-03-03 22 +384 val_384 2010-03-03 22 +489 val_489 2010-03-03 22 +353 val_353 2010-03-03 22 +373 val_373 2010-03-03 22 +272 val_272 2010-03-03 22 +138 val_138 2010-03-03 22 +217 val_217 2010-03-03 22 +84 val_84 2010-03-03 22 +348 val_348 2010-03-03 22 +466 val_466 2010-03-03 22 +58 val_58 2010-03-03 22 +8 val_8 2010-03-03 22 +411 val_411 2010-03-03 22 +230 val_230 2010-03-03 22 +208 val_208 2010-03-03 22 +348 val_348 2010-03-03 22 +24 val_24 2010-03-03 22 +463 val_463 2010-03-03 22 +431 val_431 2010-03-03 22 +179 val_179 2010-03-03 22 +172 val_172 2010-03-03 22 +42 val_42 2010-03-03 22 +129 val_129 2010-03-03 22 +158 val_158 2010-03-03 22 +119 val_119 2010-03-03 22 +496 val_496 2010-03-03 22 +0 val_0 2010-03-03 22 +322 val_322 2010-03-03 22 +197 val_197 2010-03-03 22 +468 val_468 2010-03-03 22 +393 val_393 2010-03-03 22 +454 val_454 2010-03-03 22 +100 val_100 2010-03-03 22 +298 val_298 2010-03-03 22 +199 val_199 2010-03-03 22 +191 val_191 2010-03-03 22 +418 val_418 2010-03-03 22 +96 val_96 2010-03-03 22 +26 val_26 2010-03-03 22 +165 val_165 2010-03-03 22 +327 val_327 2010-03-03 22 +230 val_230 2010-03-03 22 +205 val_205 2010-03-03 22 +120 val_120 2010-03-03 22 +131 val_131 2010-03-03 22 +51 val_51 2010-03-03 22 +404 val_404 2010-03-03 22 +43 val_43 2010-03-03 22 +436 val_436 2010-03-03 22 +156 val_156 2010-03-03 22 +469 val_469 2010-03-03 22 +468 val_468 2010-03-03 22 +308 val_308 2010-03-03 22 +95 val_95 2010-03-03 22 +196 val_196 2010-03-03 22 +288 val_288 2010-03-03 22 +481 val_481 2010-03-03 22 +457 val_457 2010-03-03 22 +98 val_98 2010-03-03 22 +282 val_282 2010-03-03 22 +197 val_197 2010-03-03 22 +187 val_187 2010-03-03 22 +318 val_318 2010-03-03 22 +318 val_318 2010-03-03 22 +409 val_409 2010-03-03 22 +470 val_470 2010-03-03 22 +137 val_137 2010-03-03 22 +369 val_369 2010-03-03 22 +316 val_316 2010-03-03 22 +169 val_169 2010-03-03 22 +413 val_413 2010-03-03 22 +85 val_85 2010-03-03 22 +77 val_77 2010-03-03 22 +0 val_0 2010-03-03 22 +490 val_490 2010-03-03 22 +87 val_87 2010-03-03 22 +364 val_364 2010-03-03 22 +179 val_179 2010-03-03 22 +118 val_118 2010-03-03 22 +134 val_134 2010-03-03 22 +395 val_395 2010-03-03 22 +282 val_282 2010-03-03 22 +138 val_138 2010-03-03 22 +238 val_238 2010-03-03 22 +419 val_419 2010-03-03 22 +15 val_15 2010-03-03 22 +118 val_118 2010-03-03 22 +72 val_72 2010-03-03 22 +90 val_90 2010-03-03 22 +307 val_307 2010-03-03 22 +19 val_19 2010-03-03 22 +435 val_435 2010-03-03 22 +10 val_10 2010-03-03 22 +277 val_277 2010-03-03 22 +273 val_273 2010-03-03 22 +306 val_306 2010-03-03 22 +224 val_224 2010-03-03 22 +309 val_309 2010-03-03 22 +389 val_389 2010-03-03 22 +327 val_327 2010-03-03 22 +242 val_242 2010-03-03 22 +369 val_369 2010-03-03 22 +392 val_392 2010-03-03 22 +272 val_272 2010-03-03 22 +331 val_331 2010-03-03 22 +401 val_401 2010-03-03 22 +242 val_242 2010-03-03 22 +452 val_452 2010-03-03 22 +177 val_177 2010-03-03 22 +226 val_226 2010-03-03 22 +5 val_5 2010-03-03 22 +497 val_497 2010-03-03 22 +402 val_402 2010-03-03 22 +396 val_396 2010-03-03 22 +317 val_317 2010-03-03 22 +395 val_395 2010-03-03 22 +58 val_58 2010-03-03 22 +35 val_35 2010-03-03 22 +336 val_336 2010-03-03 22 +95 val_95 2010-03-03 22 +11 val_11 2010-03-03 22 +168 val_168 2010-03-03 22 +34 val_34 2010-03-03 22 +229 val_229 2010-03-03 22 +233 val_233 2010-03-03 22 +143 val_143 2010-03-03 22 +472 val_472 2010-03-03 22 +322 val_322 2010-03-03 22 +498 val_498 2010-03-03 22 +160 val_160 2010-03-03 22 +195 val_195 2010-03-03 22 +42 val_42 2010-03-03 22 +321 val_321 2010-03-03 22 +430 val_430 2010-03-03 22 +119 val_119 2010-03-03 22 +489 val_489 2010-03-03 22 +458 val_458 2010-03-03 22 +78 val_78 2010-03-03 22 +76 val_76 2010-03-03 22 +41 val_41 2010-03-03 22 +223 val_223 2010-03-03 22 +492 val_492 2010-03-03 22 +149 val_149 2010-03-03 22 +449 val_449 2010-03-03 22 +218 val_218 2010-03-03 22 +228 val_228 2010-03-03 22 +138 val_138 2010-03-03 22 +453 val_453 2010-03-03 22 +30 val_30 2010-03-03 22 +209 val_209 2010-03-03 22 +64 val_64 2010-03-03 22 +468 val_468 2010-03-03 22 +76 val_76 2010-03-03 22 +74 val_74 2010-03-03 22 +342 val_342 2010-03-03 22 +69 val_69 2010-03-03 22 +230 val_230 2010-03-03 22 +33 val_33 2010-03-03 22 +368 val_368 2010-03-03 22 +103 val_103 2010-03-03 22 +296 val_296 2010-03-03 22 +113 val_113 2010-03-03 22 +216 val_216 2010-03-03 22 +367 val_367 2010-03-03 22 +344 val_344 2010-03-03 22 +167 val_167 2010-03-03 22 +274 val_274 2010-03-03 22 +219 val_219 2010-03-03 22 +239 val_239 2010-03-03 22 +485 val_485 2010-03-03 22 +116 val_116 2010-03-03 22 +223 val_223 2010-03-03 22 +256 val_256 2010-03-03 22 +263 val_263 2010-03-03 22 +70 val_70 2010-03-03 22 +487 val_487 2010-03-03 22 +480 val_480 2010-03-03 22 +401 val_401 2010-03-03 22 +288 val_288 2010-03-03 22 +191 val_191 2010-03-03 22 +5 val_5 2010-03-03 22 +244 val_244 2010-03-03 22 +438 val_438 2010-03-03 22 +128 val_128 2010-03-03 22 +467 val_467 2010-03-03 22 +432 val_432 2010-03-03 22 +202 val_202 2010-03-03 22 +316 val_316 2010-03-03 22 +229 val_229 2010-03-03 22 +469 val_469 2010-03-03 22 +463 val_463 2010-03-03 22 +280 val_280 2010-03-03 22 +2 val_2 2010-03-03 22 +35 val_35 2010-03-03 22 +283 val_283 2010-03-03 22 +331 val_331 2010-03-03 22 +235 val_235 2010-03-03 22 +80 val_80 2010-03-03 22 +44 val_44 2010-03-03 22 +193 val_193 2010-03-03 22 +321 val_321 2010-03-03 22 +335 val_335 2010-03-03 22 +104 val_104 2010-03-03 22 +466 val_466 2010-03-03 22 +366 val_366 2010-03-03 22 +175 val_175 2010-03-03 22 +403 val_403 2010-03-03 22 +483 val_483 2010-03-03 22 +53 val_53 2010-03-03 22 +105 val_105 2010-03-03 22 +257 val_257 2010-03-03 22 +406 val_406 2010-03-03 22 +409 val_409 2010-03-03 22 +190 val_190 2010-03-03 22 +406 val_406 2010-03-03 22 +401 val_401 2010-03-03 22 +114 val_114 2010-03-03 22 +258 val_258 2010-03-03 22 +90 val_90 2010-03-03 22 +203 val_203 2010-03-03 22 +262 val_262 2010-03-03 22 +348 val_348 2010-03-03 22 +424 val_424 2010-03-03 22 +12 val_12 2010-03-03 22 +396 val_396 2010-03-03 22 +201 val_201 2010-03-03 22 +217 val_217 2010-03-03 22 +164 val_164 2010-03-03 22 +431 val_431 2010-03-03 22 +454 val_454 2010-03-03 22 +478 val_478 2010-03-03 22 +298 val_298 2010-03-03 22 +125 val_125 2010-03-03 22 +431 val_431 2010-03-03 22 +164 val_164 2010-03-03 22 +424 val_424 2010-03-03 22 +187 val_187 2010-03-03 22 +382 val_382 2010-03-03 22 +5 val_5 2010-03-03 22 +70 val_70 2010-03-03 22 +397 val_397 2010-03-03 22 +480 val_480 2010-03-03 22 +291 val_291 2010-03-03 22 +24 val_24 2010-03-03 22 +351 val_351 2010-03-03 22 +255 val_255 2010-03-03 22 +104 val_104 2010-03-03 22 +70 val_70 2010-03-03 22 +163 val_163 2010-03-03 22 +438 val_438 2010-03-03 22 +119 val_119 2010-03-03 22 +414 val_414 2010-03-03 22 +200 val_200 2010-03-03 22 +491 val_491 2010-03-03 22 +237 val_237 2010-03-03 22 +439 val_439 2010-03-03 22 +360 val_360 2010-03-03 22 +248 val_248 2010-03-03 22 +479 val_479 2010-03-03 22 +305 val_305 2010-03-03 22 +417 val_417 2010-03-03 22 +199 val_199 2010-03-03 22 +444 val_444 2010-03-03 22 +120 val_120 2010-03-03 22 +429 val_429 2010-03-03 22 +169 val_169 2010-03-03 22 +443 val_443 2010-03-03 22 +323 val_323 2010-03-03 22 +325 val_325 2010-03-03 22 +277 val_277 2010-03-03 22 +230 val_230 2010-03-03 22 +478 val_478 2010-03-03 22 +178 val_178 2010-03-03 22 +468 val_468 2010-03-03 22 +310 val_310 2010-03-03 22 +317 val_317 2010-03-03 22 +333 val_333 2010-03-03 22 +493 val_493 2010-03-03 22 +460 val_460 2010-03-03 22 +207 val_207 2010-03-03 22 +249 val_249 2010-03-03 22 +265 val_265 2010-03-03 22 +480 val_480 2010-03-03 22 +83 val_83 2010-03-03 22 +136 val_136 2010-03-03 22 +353 val_353 2010-03-03 22 +172 val_172 2010-03-03 22 +214 val_214 2010-03-03 22 +462 val_462 2010-03-03 22 +233 val_233 2010-03-03 22 +406 val_406 2010-03-03 22 +133 val_133 2010-03-03 22 +175 val_175 2010-03-03 22 +189 val_189 2010-03-03 22 +454 val_454 2010-03-03 22 +375 val_375 2010-03-03 22 +401 val_401 2010-03-03 22 +421 val_421 2010-03-03 22 +407 val_407 2010-03-03 22 +384 val_384 2010-03-03 22 +256 val_256 2010-03-03 22 +26 val_26 2010-03-03 22 +134 val_134 2010-03-03 22 +67 val_67 2010-03-03 22 +384 val_384 2010-03-03 22 +379 val_379 2010-03-03 22 +18 val_18 2010-03-03 22 +462 val_462 2010-03-03 22 +492 val_492 2010-03-03 22 +100 val_100 2010-03-03 22 +298 val_298 2010-03-03 22 +9 val_9 2010-03-03 22 +341 val_341 2010-03-03 22 +498 val_498 2010-03-03 22 +146 val_146 2010-03-03 22 +458 val_458 2010-03-03 22 +362 val_362 2010-03-03 22 +186 val_186 2010-03-03 22 +285 val_285 2010-03-03 22 +348 val_348 2010-03-03 22 +167 val_167 2010-03-03 22 +18 val_18 2010-03-03 22 +273 val_273 2010-03-03 22 +183 val_183 2010-03-03 22 +281 val_281 2010-03-03 22 +344 val_344 2010-03-03 22 +97 val_97 2010-03-03 22 +469 val_469 2010-03-03 22 +315 val_315 2010-03-03 22 +84 val_84 2010-03-03 22 +28 val_28 2010-03-03 22 +37 val_37 2010-03-03 22 +448 val_448 2010-03-03 22 +152 val_152 2010-03-03 22 +348 val_348 2010-03-03 22 +307 val_307 2010-03-03 22 +194 val_194 2010-03-03 22 +414 val_414 2010-03-03 22 +477 val_477 2010-03-03 22 +222 val_222 2010-03-03 22 +126 val_126 2010-03-03 22 +90 val_90 2010-03-03 22 +169 val_169 2010-03-03 22 +403 val_403 2010-03-03 22 +400 val_400 2010-03-03 22 +200 val_200 2010-03-03 22 +97 val_97 2010-03-03 22 +238 val_238 2010-03-03 24 +86 val_86 2010-03-03 24 +311 val_311 2010-03-03 24 +27 val_27 2010-03-03 24 +165 val_165 2010-03-03 24 +409 val_409 2010-03-03 24 +255 val_255 2010-03-03 24 +278 val_278 2010-03-03 24 +98 val_98 2010-03-03 24 +484 val_484 2010-03-03 24 +265 val_265 2010-03-03 24 +193 val_193 2010-03-03 24 +401 val_401 2010-03-03 24 +150 val_150 2010-03-03 24 +273 val_273 2010-03-03 24 +224 val_224 2010-03-03 24 +369 val_369 2010-03-03 24 +66 val_66 2010-03-03 24 +128 val_128 2010-03-03 24 +213 val_213 2010-03-03 24 +146 val_146 2010-03-03 24 +406 val_406 2010-03-03 24 +429 val_429 2010-03-03 24 +374 val_374 2010-03-03 24 +152 val_152 2010-03-03 24 +469 val_469 2010-03-03 24 +145 val_145 2010-03-03 24 +495 val_495 2010-03-03 24 +37 val_37 2010-03-03 24 +327 val_327 2010-03-03 24 +281 val_281 2010-03-03 24 +277 val_277 2010-03-03 24 +209 val_209 2010-03-03 24 +15 val_15 2010-03-03 24 +82 val_82 2010-03-03 24 +403 val_403 2010-03-03 24 +166 val_166 2010-03-03 24 +417 val_417 2010-03-03 24 +430 val_430 2010-03-03 24 +252 val_252 2010-03-03 24 +292 val_292 2010-03-03 24 +219 val_219 2010-03-03 24 +287 val_287 2010-03-03 24 +153 val_153 2010-03-03 24 +193 val_193 2010-03-03 24 +338 val_338 2010-03-03 24 +446 val_446 2010-03-03 24 +459 val_459 2010-03-03 24 +394 val_394 2010-03-03 24 +237 val_237 2010-03-03 24 +482 val_482 2010-03-03 24 +174 val_174 2010-03-03 24 +413 val_413 2010-03-03 24 +494 val_494 2010-03-03 24 +207 val_207 2010-03-03 24 +199 val_199 2010-03-03 24 +466 val_466 2010-03-03 24 +208 val_208 2010-03-03 24 +174 val_174 2010-03-03 24 +399 val_399 2010-03-03 24 +396 val_396 2010-03-03 24 +247 val_247 2010-03-03 24 +417 val_417 2010-03-03 24 +489 val_489 2010-03-03 24 +162 val_162 2010-03-03 24 +377 val_377 2010-03-03 24 +397 val_397 2010-03-03 24 +309 val_309 2010-03-03 24 +365 val_365 2010-03-03 24 +266 val_266 2010-03-03 24 +439 val_439 2010-03-03 24 +342 val_342 2010-03-03 24 +367 val_367 2010-03-03 24 +325 val_325 2010-03-03 24 +167 val_167 2010-03-03 24 +195 val_195 2010-03-03 24 +475 val_475 2010-03-03 24 +17 val_17 2010-03-03 24 +113 val_113 2010-03-03 24 +155 val_155 2010-03-03 24 +203 val_203 2010-03-03 24 +339 val_339 2010-03-03 24 +0 val_0 2010-03-03 24 +455 val_455 2010-03-03 24 +128 val_128 2010-03-03 24 +311 val_311 2010-03-03 24 +316 val_316 2010-03-03 24 +57 val_57 2010-03-03 24 +302 val_302 2010-03-03 24 +205 val_205 2010-03-03 24 +149 val_149 2010-03-03 24 +438 val_438 2010-03-03 24 +345 val_345 2010-03-03 24 +129 val_129 2010-03-03 24 +170 val_170 2010-03-03 24 +20 val_20 2010-03-03 24 +489 val_489 2010-03-03 24 +157 val_157 2010-03-03 24 +378 val_378 2010-03-03 24 +221 val_221 2010-03-03 24 +92 val_92 2010-03-03 24 +111 val_111 2010-03-03 24 +47 val_47 2010-03-03 24 +72 val_72 2010-03-03 24 +4 val_4 2010-03-03 24 +280 val_280 2010-03-03 24 +35 val_35 2010-03-03 24 +427 val_427 2010-03-03 24 +277 val_277 2010-03-03 24 +208 val_208 2010-03-03 24 +356 val_356 2010-03-03 24 +399 val_399 2010-03-03 24 +169 val_169 2010-03-03 24 +382 val_382 2010-03-03 24 +498 val_498 2010-03-03 24 +125 val_125 2010-03-03 24 +386 val_386 2010-03-03 24 +437 val_437 2010-03-03 24 +469 val_469 2010-03-03 24 +192 val_192 2010-03-03 24 +286 val_286 2010-03-03 24 +187 val_187 2010-03-03 24 +176 val_176 2010-03-03 24 +54 val_54 2010-03-03 24 +459 val_459 2010-03-03 24 +51 val_51 2010-03-03 24 +138 val_138 2010-03-03 24 +103 val_103 2010-03-03 24 +239 val_239 2010-03-03 24 +213 val_213 2010-03-03 24 +216 val_216 2010-03-03 24 +430 val_430 2010-03-03 24 +278 val_278 2010-03-03 24 +176 val_176 2010-03-03 24 +289 val_289 2010-03-03 24 +221 val_221 2010-03-03 24 +65 val_65 2010-03-03 24 +318 val_318 2010-03-03 24 +332 val_332 2010-03-03 24 +311 val_311 2010-03-03 24 +275 val_275 2010-03-03 24 +137 val_137 2010-03-03 24 +241 val_241 2010-03-03 24 +83 val_83 2010-03-03 24 +333 val_333 2010-03-03 24 +180 val_180 2010-03-03 24 +284 val_284 2010-03-03 24 +12 val_12 2010-03-03 24 +230 val_230 2010-03-03 24 +181 val_181 2010-03-03 24 +67 val_67 2010-03-03 24 +260 val_260 2010-03-03 24 +404 val_404 2010-03-03 24 +384 val_384 2010-03-03 24 +489 val_489 2010-03-03 24 +353 val_353 2010-03-03 24 +373 val_373 2010-03-03 24 +272 val_272 2010-03-03 24 +138 val_138 2010-03-03 24 +217 val_217 2010-03-03 24 +84 val_84 2010-03-03 24 +348 val_348 2010-03-03 24 +466 val_466 2010-03-03 24 +58 val_58 2010-03-03 24 +8 val_8 2010-03-03 24 +411 val_411 2010-03-03 24 +230 val_230 2010-03-03 24 +208 val_208 2010-03-03 24 +348 val_348 2010-03-03 24 +24 val_24 2010-03-03 24 +463 val_463 2010-03-03 24 +431 val_431 2010-03-03 24 +179 val_179 2010-03-03 24 +172 val_172 2010-03-03 24 +42 val_42 2010-03-03 24 +129 val_129 2010-03-03 24 +158 val_158 2010-03-03 24 +119 val_119 2010-03-03 24 +496 val_496 2010-03-03 24 +0 val_0 2010-03-03 24 +322 val_322 2010-03-03 24 +197 val_197 2010-03-03 24 +468 val_468 2010-03-03 24 +393 val_393 2010-03-03 24 +454 val_454 2010-03-03 24 +100 val_100 2010-03-03 24 +298 val_298 2010-03-03 24 +199 val_199 2010-03-03 24 +191 val_191 2010-03-03 24 +418 val_418 2010-03-03 24 +96 val_96 2010-03-03 24 +26 val_26 2010-03-03 24 +165 val_165 2010-03-03 24 +327 val_327 2010-03-03 24 +230 val_230 2010-03-03 24 +205 val_205 2010-03-03 24 +120 val_120 2010-03-03 24 +131 val_131 2010-03-03 24 +51 val_51 2010-03-03 24 +404 val_404 2010-03-03 24 +43 val_43 2010-03-03 24 +436 val_436 2010-03-03 24 +156 val_156 2010-03-03 24 +469 val_469 2010-03-03 24 +468 val_468 2010-03-03 24 +308 val_308 2010-03-03 24 +95 val_95 2010-03-03 24 +196 val_196 2010-03-03 24 +288 val_288 2010-03-03 24 +481 val_481 2010-03-03 24 +457 val_457 2010-03-03 24 +98 val_98 2010-03-03 24 +282 val_282 2010-03-03 24 +197 val_197 2010-03-03 24 +187 val_187 2010-03-03 24 +318 val_318 2010-03-03 24 +318 val_318 2010-03-03 24 +409 val_409 2010-03-03 24 +470 val_470 2010-03-03 24 +137 val_137 2010-03-03 24 +369 val_369 2010-03-03 24 +316 val_316 2010-03-03 24 +169 val_169 2010-03-03 24 +413 val_413 2010-03-03 24 +85 val_85 2010-03-03 24 +77 val_77 2010-03-03 24 +0 val_0 2010-03-03 24 +490 val_490 2010-03-03 24 +87 val_87 2010-03-03 24 +364 val_364 2010-03-03 24 +179 val_179 2010-03-03 24 +118 val_118 2010-03-03 24 +134 val_134 2010-03-03 24 +395 val_395 2010-03-03 24 +282 val_282 2010-03-03 24 +138 val_138 2010-03-03 24 +238 val_238 2010-03-03 24 +419 val_419 2010-03-03 24 +15 val_15 2010-03-03 24 +118 val_118 2010-03-03 24 +72 val_72 2010-03-03 24 +90 val_90 2010-03-03 24 +307 val_307 2010-03-03 24 +19 val_19 2010-03-03 24 +435 val_435 2010-03-03 24 +10 val_10 2010-03-03 24 +277 val_277 2010-03-03 24 +273 val_273 2010-03-03 24 +306 val_306 2010-03-03 24 +224 val_224 2010-03-03 24 +309 val_309 2010-03-03 24 +389 val_389 2010-03-03 24 +327 val_327 2010-03-03 24 +242 val_242 2010-03-03 24 +369 val_369 2010-03-03 24 +392 val_392 2010-03-03 24 +272 val_272 2010-03-03 24 +331 val_331 2010-03-03 24 +401 val_401 2010-03-03 24 +242 val_242 2010-03-03 24 +452 val_452 2010-03-03 24 +177 val_177 2010-03-03 24 +226 val_226 2010-03-03 24 +5 val_5 2010-03-03 24 +497 val_497 2010-03-03 24 +402 val_402 2010-03-03 24 +396 val_396 2010-03-03 24 +317 val_317 2010-03-03 24 +395 val_395 2010-03-03 24 +58 val_58 2010-03-03 24 +35 val_35 2010-03-03 24 +336 val_336 2010-03-03 24 +95 val_95 2010-03-03 24 +11 val_11 2010-03-03 24 +168 val_168 2010-03-03 24 +34 val_34 2010-03-03 24 +229 val_229 2010-03-03 24 +233 val_233 2010-03-03 24 +143 val_143 2010-03-03 24 +472 val_472 2010-03-03 24 +322 val_322 2010-03-03 24 +498 val_498 2010-03-03 24 +160 val_160 2010-03-03 24 +195 val_195 2010-03-03 24 +42 val_42 2010-03-03 24 +321 val_321 2010-03-03 24 +430 val_430 2010-03-03 24 +119 val_119 2010-03-03 24 +489 val_489 2010-03-03 24 +458 val_458 2010-03-03 24 +78 val_78 2010-03-03 24 +76 val_76 2010-03-03 24 +41 val_41 2010-03-03 24 +223 val_223 2010-03-03 24 +492 val_492 2010-03-03 24 +149 val_149 2010-03-03 24 +449 val_449 2010-03-03 24 +218 val_218 2010-03-03 24 +228 val_228 2010-03-03 24 +138 val_138 2010-03-03 24 +453 val_453 2010-03-03 24 +30 val_30 2010-03-03 24 +209 val_209 2010-03-03 24 +64 val_64 2010-03-03 24 +468 val_468 2010-03-03 24 +76 val_76 2010-03-03 24 +74 val_74 2010-03-03 24 +342 val_342 2010-03-03 24 +69 val_69 2010-03-03 24 +230 val_230 2010-03-03 24 +33 val_33 2010-03-03 24 +368 val_368 2010-03-03 24 +103 val_103 2010-03-03 24 +296 val_296 2010-03-03 24 +113 val_113 2010-03-03 24 +216 val_216 2010-03-03 24 +367 val_367 2010-03-03 24 +344 val_344 2010-03-03 24 +167 val_167 2010-03-03 24 +274 val_274 2010-03-03 24 +219 val_219 2010-03-03 24 +239 val_239 2010-03-03 24 +485 val_485 2010-03-03 24 +116 val_116 2010-03-03 24 +223 val_223 2010-03-03 24 +256 val_256 2010-03-03 24 +263 val_263 2010-03-03 24 +70 val_70 2010-03-03 24 +487 val_487 2010-03-03 24 +480 val_480 2010-03-03 24 +401 val_401 2010-03-03 24 +288 val_288 2010-03-03 24 +191 val_191 2010-03-03 24 +5 val_5 2010-03-03 24 +244 val_244 2010-03-03 24 +438 val_438 2010-03-03 24 +128 val_128 2010-03-03 24 +467 val_467 2010-03-03 24 +432 val_432 2010-03-03 24 +202 val_202 2010-03-03 24 +316 val_316 2010-03-03 24 +229 val_229 2010-03-03 24 +469 val_469 2010-03-03 24 +463 val_463 2010-03-03 24 +280 val_280 2010-03-03 24 +2 val_2 2010-03-03 24 +35 val_35 2010-03-03 24 +283 val_283 2010-03-03 24 +331 val_331 2010-03-03 24 +235 val_235 2010-03-03 24 +80 val_80 2010-03-03 24 +44 val_44 2010-03-03 24 +193 val_193 2010-03-03 24 +321 val_321 2010-03-03 24 +335 val_335 2010-03-03 24 +104 val_104 2010-03-03 24 +466 val_466 2010-03-03 24 +366 val_366 2010-03-03 24 +175 val_175 2010-03-03 24 +403 val_403 2010-03-03 24 +483 val_483 2010-03-03 24 +53 val_53 2010-03-03 24 +105 val_105 2010-03-03 24 +257 val_257 2010-03-03 24 +406 val_406 2010-03-03 24 +409 val_409 2010-03-03 24 +190 val_190 2010-03-03 24 +406 val_406 2010-03-03 24 +401 val_401 2010-03-03 24 +114 val_114 2010-03-03 24 +258 val_258 2010-03-03 24 +90 val_90 2010-03-03 24 +203 val_203 2010-03-03 24 +262 val_262 2010-03-03 24 +348 val_348 2010-03-03 24 +424 val_424 2010-03-03 24 +12 val_12 2010-03-03 24 +396 val_396 2010-03-03 24 +201 val_201 2010-03-03 24 +217 val_217 2010-03-03 24 +164 val_164 2010-03-03 24 +431 val_431 2010-03-03 24 +454 val_454 2010-03-03 24 +478 val_478 2010-03-03 24 +298 val_298 2010-03-03 24 +125 val_125 2010-03-03 24 +431 val_431 2010-03-03 24 +164 val_164 2010-03-03 24 +424 val_424 2010-03-03 24 +187 val_187 2010-03-03 24 +382 val_382 2010-03-03 24 +5 val_5 2010-03-03 24 +70 val_70 2010-03-03 24 +397 val_397 2010-03-03 24 +480 val_480 2010-03-03 24 +291 val_291 2010-03-03 24 +24 val_24 2010-03-03 24 +351 val_351 2010-03-03 24 +255 val_255 2010-03-03 24 +104 val_104 2010-03-03 24 +70 val_70 2010-03-03 24 +163 val_163 2010-03-03 24 +438 val_438 2010-03-03 24 +119 val_119 2010-03-03 24 +414 val_414 2010-03-03 24 +200 val_200 2010-03-03 24 +491 val_491 2010-03-03 24 +237 val_237 2010-03-03 24 +439 val_439 2010-03-03 24 +360 val_360 2010-03-03 24 +248 val_248 2010-03-03 24 +479 val_479 2010-03-03 24 +305 val_305 2010-03-03 24 +417 val_417 2010-03-03 24 +199 val_199 2010-03-03 24 +444 val_444 2010-03-03 24 +120 val_120 2010-03-03 24 +429 val_429 2010-03-03 24 +169 val_169 2010-03-03 24 +443 val_443 2010-03-03 24 +323 val_323 2010-03-03 24 +325 val_325 2010-03-03 24 +277 val_277 2010-03-03 24 +230 val_230 2010-03-03 24 +478 val_478 2010-03-03 24 +178 val_178 2010-03-03 24 +468 val_468 2010-03-03 24 +310 val_310 2010-03-03 24 +317 val_317 2010-03-03 24 +333 val_333 2010-03-03 24 +493 val_493 2010-03-03 24 +460 val_460 2010-03-03 24 +207 val_207 2010-03-03 24 +249 val_249 2010-03-03 24 +265 val_265 2010-03-03 24 +480 val_480 2010-03-03 24 +83 val_83 2010-03-03 24 +136 val_136 2010-03-03 24 +353 val_353 2010-03-03 24 +172 val_172 2010-03-03 24 +214 val_214 2010-03-03 24 +462 val_462 2010-03-03 24 +233 val_233 2010-03-03 24 +406 val_406 2010-03-03 24 +133 val_133 2010-03-03 24 +175 val_175 2010-03-03 24 +189 val_189 2010-03-03 24 +454 val_454 2010-03-03 24 +375 val_375 2010-03-03 24 +401 val_401 2010-03-03 24 +421 val_421 2010-03-03 24 +407 val_407 2010-03-03 24 +384 val_384 2010-03-03 24 +256 val_256 2010-03-03 24 +26 val_26 2010-03-03 24 +134 val_134 2010-03-03 24 +67 val_67 2010-03-03 24 +384 val_384 2010-03-03 24 +379 val_379 2010-03-03 24 +18 val_18 2010-03-03 24 +462 val_462 2010-03-03 24 +492 val_492 2010-03-03 24 +100 val_100 2010-03-03 24 +298 val_298 2010-03-03 24 +9 val_9 2010-03-03 24 +341 val_341 2010-03-03 24 +498 val_498 2010-03-03 24 +146 val_146 2010-03-03 24 +458 val_458 2010-03-03 24 +362 val_362 2010-03-03 24 +186 val_186 2010-03-03 24 +285 val_285 2010-03-03 24 +348 val_348 2010-03-03 24 +167 val_167 2010-03-03 24 +18 val_18 2010-03-03 24 +273 val_273 2010-03-03 24 +183 val_183 2010-03-03 24 +281 val_281 2010-03-03 24 +344 val_344 2010-03-03 24 +97 val_97 2010-03-03 24 +469 val_469 2010-03-03 24 +315 val_315 2010-03-03 24 +84 val_84 2010-03-03 24 +28 val_28 2010-03-03 24 +37 val_37 2010-03-03 24 +448 val_448 2010-03-03 24 +152 val_152 2010-03-03 24 +348 val_348 2010-03-03 24 +307 val_307 2010-03-03 24 +194 val_194 2010-03-03 24 +414 val_414 2010-03-03 24 +477 val_477 2010-03-03 24 +222 val_222 2010-03-03 24 +126 val_126 2010-03-03 24 +90 val_90 2010-03-03 24 +169 val_169 2010-03-03 24 +403 val_403 2010-03-03 24 +400 val_400 2010-03-03 24 +200 val_200 2010-03-03 24 +97 val_97 2010-03-03 24 +238 val_238 2010-03-03 24 +86 val_86 2010-03-03 24 +311 val_311 2010-03-03 24 +27 val_27 2010-03-03 24 +165 val_165 2010-03-03 24 +409 val_409 2010-03-03 24 +255 val_255 2010-03-03 24 +278 val_278 2010-03-03 24 +98 val_98 2010-03-03 24 +484 val_484 2010-03-03 24 +265 val_265 2010-03-03 24 +193 val_193 2010-03-03 24 +401 val_401 2010-03-03 24 +150 val_150 2010-03-03 24 +273 val_273 2010-03-03 24 +224 val_224 2010-03-03 24 +369 val_369 2010-03-03 24 +66 val_66 2010-03-03 24 +128 val_128 2010-03-03 24 +213 val_213 2010-03-03 24 +146 val_146 2010-03-03 24 +406 val_406 2010-03-03 24 +429 val_429 2010-03-03 24 +374 val_374 2010-03-03 24 +152 val_152 2010-03-03 24 +469 val_469 2010-03-03 24 +145 val_145 2010-03-03 24 +495 val_495 2010-03-03 24 +37 val_37 2010-03-03 24 +327 val_327 2010-03-03 24 +281 val_281 2010-03-03 24 +277 val_277 2010-03-03 24 +209 val_209 2010-03-03 24 +15 val_15 2010-03-03 24 +82 val_82 2010-03-03 24 +403 val_403 2010-03-03 24 +166 val_166 2010-03-03 24 +417 val_417 2010-03-03 24 +430 val_430 2010-03-03 24 +252 val_252 2010-03-03 24 +292 val_292 2010-03-03 24 +219 val_219 2010-03-03 24 +287 val_287 2010-03-03 24 +153 val_153 2010-03-03 24 +193 val_193 2010-03-03 24 +338 val_338 2010-03-03 24 +446 val_446 2010-03-03 24 +459 val_459 2010-03-03 24 +394 val_394 2010-03-03 24 +237 val_237 2010-03-03 24 +482 val_482 2010-03-03 24 +174 val_174 2010-03-03 24 +413 val_413 2010-03-03 24 +494 val_494 2010-03-03 24 +207 val_207 2010-03-03 24 +199 val_199 2010-03-03 24 +466 val_466 2010-03-03 24 +208 val_208 2010-03-03 24 +174 val_174 2010-03-03 24 +399 val_399 2010-03-03 24 +396 val_396 2010-03-03 24 +247 val_247 2010-03-03 24 +417 val_417 2010-03-03 24 +489 val_489 2010-03-03 24 +162 val_162 2010-03-03 24 +377 val_377 2010-03-03 24 +397 val_397 2010-03-03 24 +309 val_309 2010-03-03 24 +365 val_365 2010-03-03 24 +266 val_266 2010-03-03 24 +439 val_439 2010-03-03 24 +342 val_342 2010-03-03 24 +367 val_367 2010-03-03 24 +325 val_325 2010-03-03 24 +167 val_167 2010-03-03 24 +195 val_195 2010-03-03 24 +475 val_475 2010-03-03 24 +17 val_17 2010-03-03 24 +113 val_113 2010-03-03 24 +155 val_155 2010-03-03 24 +203 val_203 2010-03-03 24 +339 val_339 2010-03-03 24 +0 val_0 2010-03-03 24 +455 val_455 2010-03-03 24 +128 val_128 2010-03-03 24 +311 val_311 2010-03-03 24 +316 val_316 2010-03-03 24 +57 val_57 2010-03-03 24 +302 val_302 2010-03-03 24 +205 val_205 2010-03-03 24 +149 val_149 2010-03-03 24 +438 val_438 2010-03-03 24 +345 val_345 2010-03-03 24 +129 val_129 2010-03-03 24 +170 val_170 2010-03-03 24 +20 val_20 2010-03-03 24 +489 val_489 2010-03-03 24 +157 val_157 2010-03-03 24 +378 val_378 2010-03-03 24 +221 val_221 2010-03-03 24 +92 val_92 2010-03-03 24 +111 val_111 2010-03-03 24 +47 val_47 2010-03-03 24 +72 val_72 2010-03-03 24 +4 val_4 2010-03-03 24 +280 val_280 2010-03-03 24 +35 val_35 2010-03-03 24 +427 val_427 2010-03-03 24 +277 val_277 2010-03-03 24 +208 val_208 2010-03-03 24 +356 val_356 2010-03-03 24 +399 val_399 2010-03-03 24 +169 val_169 2010-03-03 24 +382 val_382 2010-03-03 24 +498 val_498 2010-03-03 24 +125 val_125 2010-03-03 24 +386 val_386 2010-03-03 24 +437 val_437 2010-03-03 24 +469 val_469 2010-03-03 24 +192 val_192 2010-03-03 24 +286 val_286 2010-03-03 24 +187 val_187 2010-03-03 24 +176 val_176 2010-03-03 24 +54 val_54 2010-03-03 24 +459 val_459 2010-03-03 24 +51 val_51 2010-03-03 24 +138 val_138 2010-03-03 24 +103 val_103 2010-03-03 24 +239 val_239 2010-03-03 24 +213 val_213 2010-03-03 24 +216 val_216 2010-03-03 24 +430 val_430 2010-03-03 24 +278 val_278 2010-03-03 24 +176 val_176 2010-03-03 24 +289 val_289 2010-03-03 24 +221 val_221 2010-03-03 24 +65 val_65 2010-03-03 24 +318 val_318 2010-03-03 24 +332 val_332 2010-03-03 24 +311 val_311 2010-03-03 24 +275 val_275 2010-03-03 24 +137 val_137 2010-03-03 24 +241 val_241 2010-03-03 24 +83 val_83 2010-03-03 24 +333 val_333 2010-03-03 24 +180 val_180 2010-03-03 24 +284 val_284 2010-03-03 24 +12 val_12 2010-03-03 24 +230 val_230 2010-03-03 24 +181 val_181 2010-03-03 24 +67 val_67 2010-03-03 24 +260 val_260 2010-03-03 24 +404 val_404 2010-03-03 24 +384 val_384 2010-03-03 24 +489 val_489 2010-03-03 24 +353 val_353 2010-03-03 24 +373 val_373 2010-03-03 24 +272 val_272 2010-03-03 24 +138 val_138 2010-03-03 24 +217 val_217 2010-03-03 24 +84 val_84 2010-03-03 24 +348 val_348 2010-03-03 24 +466 val_466 2010-03-03 24 +58 val_58 2010-03-03 24 +8 val_8 2010-03-03 24 +411 val_411 2010-03-03 24 +230 val_230 2010-03-03 24 +208 val_208 2010-03-03 24 +348 val_348 2010-03-03 24 +24 val_24 2010-03-03 24 +463 val_463 2010-03-03 24 +431 val_431 2010-03-03 24 +179 val_179 2010-03-03 24 +172 val_172 2010-03-03 24 +42 val_42 2010-03-03 24 +129 val_129 2010-03-03 24 +158 val_158 2010-03-03 24 +119 val_119 2010-03-03 24 +496 val_496 2010-03-03 24 +0 val_0 2010-03-03 24 +322 val_322 2010-03-03 24 +197 val_197 2010-03-03 24 +468 val_468 2010-03-03 24 +393 val_393 2010-03-03 24 +454 val_454 2010-03-03 24 +100 val_100 2010-03-03 24 +298 val_298 2010-03-03 24 +199 val_199 2010-03-03 24 +191 val_191 2010-03-03 24 +418 val_418 2010-03-03 24 +96 val_96 2010-03-03 24 +26 val_26 2010-03-03 24 +165 val_165 2010-03-03 24 +327 val_327 2010-03-03 24 +230 val_230 2010-03-03 24 +205 val_205 2010-03-03 24 +120 val_120 2010-03-03 24 +131 val_131 2010-03-03 24 +51 val_51 2010-03-03 24 +404 val_404 2010-03-03 24 +43 val_43 2010-03-03 24 +436 val_436 2010-03-03 24 +156 val_156 2010-03-03 24 +469 val_469 2010-03-03 24 +468 val_468 2010-03-03 24 +308 val_308 2010-03-03 24 +95 val_95 2010-03-03 24 +196 val_196 2010-03-03 24 +288 val_288 2010-03-03 24 +481 val_481 2010-03-03 24 +457 val_457 2010-03-03 24 +98 val_98 2010-03-03 24 +282 val_282 2010-03-03 24 +197 val_197 2010-03-03 24 +187 val_187 2010-03-03 24 +318 val_318 2010-03-03 24 +318 val_318 2010-03-03 24 +409 val_409 2010-03-03 24 +470 val_470 2010-03-03 24 +137 val_137 2010-03-03 24 +369 val_369 2010-03-03 24 +316 val_316 2010-03-03 24 +169 val_169 2010-03-03 24 +413 val_413 2010-03-03 24 +85 val_85 2010-03-03 24 +77 val_77 2010-03-03 24 +0 val_0 2010-03-03 24 +490 val_490 2010-03-03 24 +87 val_87 2010-03-03 24 +364 val_364 2010-03-03 24 +179 val_179 2010-03-03 24 +118 val_118 2010-03-03 24 +134 val_134 2010-03-03 24 +395 val_395 2010-03-03 24 +282 val_282 2010-03-03 24 +138 val_138 2010-03-03 24 +238 val_238 2010-03-03 24 +419 val_419 2010-03-03 24 +15 val_15 2010-03-03 24 +118 val_118 2010-03-03 24 +72 val_72 2010-03-03 24 +90 val_90 2010-03-03 24 +307 val_307 2010-03-03 24 +19 val_19 2010-03-03 24 +435 val_435 2010-03-03 24 +10 val_10 2010-03-03 24 +277 val_277 2010-03-03 24 +273 val_273 2010-03-03 24 +306 val_306 2010-03-03 24 +224 val_224 2010-03-03 24 +309 val_309 2010-03-03 24 +389 val_389 2010-03-03 24 +327 val_327 2010-03-03 24 +242 val_242 2010-03-03 24 +369 val_369 2010-03-03 24 +392 val_392 2010-03-03 24 +272 val_272 2010-03-03 24 +331 val_331 2010-03-03 24 +401 val_401 2010-03-03 24 +242 val_242 2010-03-03 24 +452 val_452 2010-03-03 24 +177 val_177 2010-03-03 24 +226 val_226 2010-03-03 24 +5 val_5 2010-03-03 24 +497 val_497 2010-03-03 24 +402 val_402 2010-03-03 24 +396 val_396 2010-03-03 24 +317 val_317 2010-03-03 24 +395 val_395 2010-03-03 24 +58 val_58 2010-03-03 24 +35 val_35 2010-03-03 24 +336 val_336 2010-03-03 24 +95 val_95 2010-03-03 24 +11 val_11 2010-03-03 24 +168 val_168 2010-03-03 24 +34 val_34 2010-03-03 24 +229 val_229 2010-03-03 24 +233 val_233 2010-03-03 24 +143 val_143 2010-03-03 24 +472 val_472 2010-03-03 24 +322 val_322 2010-03-03 24 +498 val_498 2010-03-03 24 +160 val_160 2010-03-03 24 +195 val_195 2010-03-03 24 +42 val_42 2010-03-03 24 +321 val_321 2010-03-03 24 +430 val_430 2010-03-03 24 +119 val_119 2010-03-03 24 +489 val_489 2010-03-03 24 +458 val_458 2010-03-03 24 +78 val_78 2010-03-03 24 +76 val_76 2010-03-03 24 +41 val_41 2010-03-03 24 +223 val_223 2010-03-03 24 +492 val_492 2010-03-03 24 +149 val_149 2010-03-03 24 +449 val_449 2010-03-03 24 +218 val_218 2010-03-03 24 +228 val_228 2010-03-03 24 +138 val_138 2010-03-03 24 +453 val_453 2010-03-03 24 +30 val_30 2010-03-03 24 +209 val_209 2010-03-03 24 +64 val_64 2010-03-03 24 +468 val_468 2010-03-03 24 +76 val_76 2010-03-03 24 +74 val_74 2010-03-03 24 +342 val_342 2010-03-03 24 +69 val_69 2010-03-03 24 +230 val_230 2010-03-03 24 +33 val_33 2010-03-03 24 +368 val_368 2010-03-03 24 +103 val_103 2010-03-03 24 +296 val_296 2010-03-03 24 +113 val_113 2010-03-03 24 +216 val_216 2010-03-03 24 +367 val_367 2010-03-03 24 +344 val_344 2010-03-03 24 +167 val_167 2010-03-03 24 +274 val_274 2010-03-03 24 +219 val_219 2010-03-03 24 +239 val_239 2010-03-03 24 +485 val_485 2010-03-03 24 +116 val_116 2010-03-03 24 +223 val_223 2010-03-03 24 +256 val_256 2010-03-03 24 +263 val_263 2010-03-03 24 +70 val_70 2010-03-03 24 +487 val_487 2010-03-03 24 +480 val_480 2010-03-03 24 +401 val_401 2010-03-03 24 +288 val_288 2010-03-03 24 +191 val_191 2010-03-03 24 +5 val_5 2010-03-03 24 +244 val_244 2010-03-03 24 +438 val_438 2010-03-03 24 +128 val_128 2010-03-03 24 +467 val_467 2010-03-03 24 +432 val_432 2010-03-03 24 +202 val_202 2010-03-03 24 +316 val_316 2010-03-03 24 +229 val_229 2010-03-03 24 +469 val_469 2010-03-03 24 +463 val_463 2010-03-03 24 +280 val_280 2010-03-03 24 +2 val_2 2010-03-03 24 +35 val_35 2010-03-03 24 +283 val_283 2010-03-03 24 +331 val_331 2010-03-03 24 +235 val_235 2010-03-03 24 +80 val_80 2010-03-03 24 +44 val_44 2010-03-03 24 +193 val_193 2010-03-03 24 +321 val_321 2010-03-03 24 +335 val_335 2010-03-03 24 +104 val_104 2010-03-03 24 +466 val_466 2010-03-03 24 +366 val_366 2010-03-03 24 +175 val_175 2010-03-03 24 +403 val_403 2010-03-03 24 +483 val_483 2010-03-03 24 +53 val_53 2010-03-03 24 +105 val_105 2010-03-03 24 +257 val_257 2010-03-03 24 +406 val_406 2010-03-03 24 +409 val_409 2010-03-03 24 +190 val_190 2010-03-03 24 +406 val_406 2010-03-03 24 +401 val_401 2010-03-03 24 +114 val_114 2010-03-03 24 +258 val_258 2010-03-03 24 +90 val_90 2010-03-03 24 +203 val_203 2010-03-03 24 +262 val_262 2010-03-03 24 +348 val_348 2010-03-03 24 +424 val_424 2010-03-03 24 +12 val_12 2010-03-03 24 +396 val_396 2010-03-03 24 +201 val_201 2010-03-03 24 +217 val_217 2010-03-03 24 +164 val_164 2010-03-03 24 +431 val_431 2010-03-03 24 +454 val_454 2010-03-03 24 +478 val_478 2010-03-03 24 +298 val_298 2010-03-03 24 +125 val_125 2010-03-03 24 +431 val_431 2010-03-03 24 +164 val_164 2010-03-03 24 +424 val_424 2010-03-03 24 +187 val_187 2010-03-03 24 +382 val_382 2010-03-03 24 +5 val_5 2010-03-03 24 +70 val_70 2010-03-03 24 +397 val_397 2010-03-03 24 +480 val_480 2010-03-03 24 +291 val_291 2010-03-03 24 +24 val_24 2010-03-03 24 +351 val_351 2010-03-03 24 +255 val_255 2010-03-03 24 +104 val_104 2010-03-03 24 +70 val_70 2010-03-03 24 +163 val_163 2010-03-03 24 +438 val_438 2010-03-03 24 +119 val_119 2010-03-03 24 +414 val_414 2010-03-03 24 +200 val_200 2010-03-03 24 +491 val_491 2010-03-03 24 +237 val_237 2010-03-03 24 +439 val_439 2010-03-03 24 +360 val_360 2010-03-03 24 +248 val_248 2010-03-03 24 +479 val_479 2010-03-03 24 +305 val_305 2010-03-03 24 +417 val_417 2010-03-03 24 +199 val_199 2010-03-03 24 +444 val_444 2010-03-03 24 +120 val_120 2010-03-03 24 +429 val_429 2010-03-03 24 +169 val_169 2010-03-03 24 +443 val_443 2010-03-03 24 +323 val_323 2010-03-03 24 +325 val_325 2010-03-03 24 +277 val_277 2010-03-03 24 +230 val_230 2010-03-03 24 +478 val_478 2010-03-03 24 +178 val_178 2010-03-03 24 +468 val_468 2010-03-03 24 +310 val_310 2010-03-03 24 +317 val_317 2010-03-03 24 +333 val_333 2010-03-03 24 +493 val_493 2010-03-03 24 +460 val_460 2010-03-03 24 +207 val_207 2010-03-03 24 +249 val_249 2010-03-03 24 +265 val_265 2010-03-03 24 +480 val_480 2010-03-03 24 +83 val_83 2010-03-03 24 +136 val_136 2010-03-03 24 +353 val_353 2010-03-03 24 +172 val_172 2010-03-03 24 +214 val_214 2010-03-03 24 +462 val_462 2010-03-03 24 +233 val_233 2010-03-03 24 +406 val_406 2010-03-03 24 +133 val_133 2010-03-03 24 +175 val_175 2010-03-03 24 +189 val_189 2010-03-03 24 +454 val_454 2010-03-03 24 +375 val_375 2010-03-03 24 +401 val_401 2010-03-03 24 +421 val_421 2010-03-03 24 +407 val_407 2010-03-03 24 +384 val_384 2010-03-03 24 +256 val_256 2010-03-03 24 +26 val_26 2010-03-03 24 +134 val_134 2010-03-03 24 +67 val_67 2010-03-03 24 +384 val_384 2010-03-03 24 +379 val_379 2010-03-03 24 +18 val_18 2010-03-03 24 +462 val_462 2010-03-03 24 +492 val_492 2010-03-03 24 +100 val_100 2010-03-03 24 +298 val_298 2010-03-03 24 +9 val_9 2010-03-03 24 +341 val_341 2010-03-03 24 +498 val_498 2010-03-03 24 +146 val_146 2010-03-03 24 +458 val_458 2010-03-03 24 +362 val_362 2010-03-03 24 +186 val_186 2010-03-03 24 +285 val_285 2010-03-03 24 +348 val_348 2010-03-03 24 +167 val_167 2010-03-03 24 +18 val_18 2010-03-03 24 +273 val_273 2010-03-03 24 +183 val_183 2010-03-03 24 +281 val_281 2010-03-03 24 +344 val_344 2010-03-03 24 +97 val_97 2010-03-03 24 +469 val_469 2010-03-03 24 +315 val_315 2010-03-03 24 +84 val_84 2010-03-03 24 +28 val_28 2010-03-03 24 +37 val_37 2010-03-03 24 +448 val_448 2010-03-03 24 +152 val_152 2010-03-03 24 +348 val_348 2010-03-03 24 +307 val_307 2010-03-03 24 +194 val_194 2010-03-03 24 +414 val_414 2010-03-03 24 +477 val_477 2010-03-03 24 +222 val_222 2010-03-03 24 +126 val_126 2010-03-03 24 +90 val_90 2010-03-03 24 +169 val_169 2010-03-03 24 +403 val_403 2010-03-03 24 +400 val_400 2010-03-03 24 +200 val_200 2010-03-03 24 +97 val_97 2010-03-03 24 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part13-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..e9c723bbd136e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part13-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-1-55bf30e1b5f1aeac9ef284e5e4f19c28 b/sql/hive/src/test/resources/golden/load_dyn_part13-1-55bf30e1b5f1aeac9ef284e5e4f19c28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-2-d52536b8ac62f6e8152e394fe135a3e0 b/sql/hive/src/test/resources/golden/load_dyn_part13-2-d52536b8ac62f6e8152e394fe135a3e0 new file mode 100644 index 0000000000000..08699f286e384 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part13-2-d52536b8ac62f6e8152e394fe135a3e0 @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part13, dbName:default, owner:marmbrus, createTime:1389739606, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5344690580869150883/nzhang_part13, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{transient_lastDdlTime=1389739606}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part13-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part13-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/load_dyn_part13-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part13-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-5-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part13-5-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part13-5-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-6-67ee926bc6b325a6bfc952bb81752a3d b/sql/hive/src/test/resources/golden/load_dyn_part13-6-67ee926bc6b325a6bfc952bb81752a3d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-7-99993811a25b02e7904a9403f51775d5 b/sql/hive/src/test/resources/golden/load_dyn_part13-7-99993811a25b02e7904a9403f51775d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-8-930d8e7a94f0cdf922322dae4a02e16 b/sql/hive/src/test/resources/golden/load_dyn_part13-8-930d8e7a94f0cdf922322dae4a02e16 new file mode 100644 index 0000000000000..dfe9bcc93bcd3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part13-8-930d8e7a94f0cdf922322dae4a02e16 @@ -0,0 +1,2 @@ +ds=2010-03-03/hr=22 +ds=2010-03-03/hr=33 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part13-9-c8de411bc094b37b59a2eb0baf6de55d b/sql/hive/src/test/resources/golden/load_dyn_part13-9-c8de411bc094b37b59a2eb0baf6de55d new file mode 100644 index 0000000000000..88fe75804e584 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part13-9-c8de411bc094b37b59a2eb0baf6de55d @@ -0,0 +1,34 @@ +15 val_15 2010-03-03 22 +17 val_17 2010-03-03 22 +0 val_0 2010-03-03 22 +4 val_4 2010-03-03 22 +12 val_12 2010-03-03 22 +8 val_8 2010-03-03 22 +0 val_0 2010-03-03 22 +0 val_0 2010-03-03 22 +15 val_15 2010-03-03 22 +19 val_19 2010-03-03 22 +10 val_10 2010-03-03 22 +5 val_5 2010-03-03 22 +11 val_11 2010-03-03 22 +5 val_5 2010-03-03 22 +2 val_2 2010-03-03 22 +12 val_12 2010-03-03 22 +5 val_5 2010-03-03 22 +18 val_18 2010-03-03 22 +9 val_9 2010-03-03 22 +18 val_18 2010-03-03 22 +27 val_27 2010-03-03 33 +37 val_37 2010-03-03 33 +35 val_35 2010-03-03 33 +24 val_24 2010-03-03 33 +26 val_26 2010-03-03 33 +35 val_35 2010-03-03 33 +34 val_34 2010-03-03 33 +30 val_30 2010-03-03 33 +33 val_33 2010-03-03 33 +35 val_35 2010-03-03 33 +24 val_24 2010-03-03 33 +26 val_26 2010-03-03 33 +28 val_28 2010-03-03 33 +37 val_37 2010-03-03 33 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14-0-ff0d0473e56406f7cb66e83b9af25a6a b/sql/hive/src/test/resources/golden/load_dyn_part14-0-ff0d0473e56406f7cb66e83b9af25a6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14-1-253e2a15bfaef9aa781dc29fa324b51e b/sql/hive/src/test/resources/golden/load_dyn_part14-1-253e2a15bfaef9aa781dc29fa324b51e new file mode 100644 index 0000000000000..170e3b095c5a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14-1-253e2a15bfaef9aa781dc29fa324b51e @@ -0,0 +1,9 @@ +key string None +value string None + +# Partition Information +# col_name data_type comment + +value string None + +Detailed Table Information Table(tableName:nzhang_part14, dbName:default, owner:marmbrus, createTime:1389739459, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1999157106458385464/nzhang_part14, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:value, type:string, comment:null)], parameters:{transient_lastDdlTime=1389739459}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part14-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part14-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14-4-584fc7f440280f67bf5bfdb23370cafd b/sql/hive/src/test/resources/golden/load_dyn_part14-4-584fc7f440280f67bf5bfdb23370cafd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14-5-ce75e50bda381af53c8549b0d8662d94 b/sql/hive/src/test/resources/golden/load_dyn_part14-5-ce75e50bda381af53c8549b0d8662d94 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14-6-3fd73cd9f8f9b991b7e72405c00cf5d6 b/sql/hive/src/test/resources/golden/load_dyn_part14-6-3fd73cd9f8f9b991b7e72405c00cf5d6 new file mode 100644 index 0000000000000..538ed22d29976 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14-6-3fd73cd9f8f9b991b7e72405c00cf5d6 @@ -0,0 +1,2 @@ +value= +value=__HIVE_DEFAULT_PARTITION__ \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14-7-7c931249465f330d51ef0610f214429e b/sql/hive/src/test/resources/golden/load_dyn_part14-7-7c931249465f330d51ef0610f214429e new file mode 100644 index 0000000000000..9e1bc82fe15f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14-7-7c931249465f330d51ef0610f214429e @@ -0,0 +1,6 @@ +k1 __HIVE_DEFAULT_PARTITION__ +k1 __HIVE_DEFAULT_PARTITION__ +k2 __HIVE_DEFAULT_PARTITION__ +k2 __HIVE_DEFAULT_PARTITION__ +k3 +k3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14_win-0-a58efbee279cc96fb5738e6ab389927 b/sql/hive/src/test/resources/golden/load_dyn_part14_win-0-a58efbee279cc96fb5738e6ab389927 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14_win-1-253e2a15bfaef9aa781dc29fa324b51e b/sql/hive/src/test/resources/golden/load_dyn_part14_win-1-253e2a15bfaef9aa781dc29fa324b51e new file mode 100644 index 0000000000000..df0090edb6b9e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14_win-1-253e2a15bfaef9aa781dc29fa324b51e @@ -0,0 +1,9 @@ +key string None +value string None + +# Partition Information +# col_name data_type comment + +value string None + +Detailed Table Information Table(tableName:nzhang_part14, dbName:default, owner:marmbrus, createTime:1389738860, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2847673635801001933/nzhang_part14, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:value, type:string, comment:null)], parameters:{transient_lastDdlTime=1389738860}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14_win-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part14_win-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14_win-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14_win-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part14_win-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14_win-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14_win-4-584fc7f440280f67bf5bfdb23370cafd b/sql/hive/src/test/resources/golden/load_dyn_part14_win-4-584fc7f440280f67bf5bfdb23370cafd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14_win-5-ce75e50bda381af53c8549b0d8662d94 b/sql/hive/src/test/resources/golden/load_dyn_part14_win-5-ce75e50bda381af53c8549b0d8662d94 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14_win-6-3fd73cd9f8f9b991b7e72405c00cf5d6 b/sql/hive/src/test/resources/golden/load_dyn_part14_win-6-3fd73cd9f8f9b991b7e72405c00cf5d6 new file mode 100644 index 0000000000000..538ed22d29976 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14_win-6-3fd73cd9f8f9b991b7e72405c00cf5d6 @@ -0,0 +1,2 @@ +value= +value=__HIVE_DEFAULT_PARTITION__ \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part14_win-7-7c931249465f330d51ef0610f214429e b/sql/hive/src/test/resources/golden/load_dyn_part14_win-7-7c931249465f330d51ef0610f214429e new file mode 100644 index 0000000000000..9e1bc82fe15f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part14_win-7-7c931249465f330d51ef0610f214429e @@ -0,0 +1,6 @@ +k1 __HIVE_DEFAULT_PARTITION__ +k1 __HIVE_DEFAULT_PARTITION__ +k2 __HIVE_DEFAULT_PARTITION__ +k2 __HIVE_DEFAULT_PARTITION__ +k3 +k3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part15-0-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part15-0-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part15-0-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part15-1-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part15-1-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part15-1-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part15-2-1379abc2de057dc6d240a526f0dd8a3c b/sql/hive/src/test/resources/golden/load_dyn_part15-2-1379abc2de057dc6d240a526f0dd8a3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part15-3-9940fad8d8590e60bd726e9503ae4fa9 b/sql/hive/src/test/resources/golden/load_dyn_part15-3-9940fad8d8590e60bd726e9503ae4fa9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part15-4-fa01199bab3e6aa47a82c9aec88aa76a b/sql/hive/src/test/resources/golden/load_dyn_part15-4-fa01199bab3e6aa47a82c9aec88aa76a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part15-5-9940fad8d8590e60bd726e9503ae4fa9 b/sql/hive/src/test/resources/golden/load_dyn_part15-5-9940fad8d8590e60bd726e9503ae4fa9 new file mode 100644 index 0000000000000..99a66d603300d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part15-5-9940fad8d8590e60bd726e9503ae4fa9 @@ -0,0 +1,3 @@ +part_key=%7B2 +part_key=1 +part_key=3%5D diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-0-294e3beb0241f9f8eac7f54e1bfd775f b/sql/hive/src/test/resources/golden/load_dyn_part2-0-294e3beb0241f9f8eac7f54e1bfd775f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-1-845923af04bb331c9f5995a3a3e84424 b/sql/hive/src/test/resources/golden/load_dyn_part2-1-845923af04bb331c9f5995a3a3e84424 new file mode 100644 index 0000000000000..def850839a47b --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part2-1-845923af04bb331c9f5995a3a3e84424 @@ -0,0 +1,12 @@ +key string None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part_bucket, dbName:default, owner:marmbrus, createTime:1389739342, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/nzhang_part_bucket, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:10, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[key], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{transient_lastDdlTime=1389739342}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-2-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part2-2-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part2-2-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-3-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/load_dyn_part2-3-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part2-3-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-4-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part2-4-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part2-4-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-5-fdb342199af53c5c18529c3a0472a38b b/sql/hive/src/test/resources/golden/load_dyn_part2-5-fdb342199af53c5c18529c3a0472a38b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-6-60864ea22e1173981ed651ddc2d944c4 b/sql/hive/src/test/resources/golden/load_dyn_part2-6-60864ea22e1173981ed651ddc2d944c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-7-86ffa99b03fa88235b61bf1af7062c33 b/sql/hive/src/test/resources/golden/load_dyn_part2-7-86ffa99b03fa88235b61bf1af7062c33 new file mode 100644 index 0000000000000..1f345dad614ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part2-7-86ffa99b03fa88235b61bf1af7062c33 @@ -0,0 +1,2 @@ +ds=2010-03-23/hr=11 +ds=2010-03-23/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-8-a1ff8a12d94378e7e1165bd78cf724cf b/sql/hive/src/test/resources/golden/load_dyn_part2-8-a1ff8a12d94378e7e1165bd78cf724cf new file mode 100644 index 0000000000000..5f936fa91d2f5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part2-8-a1ff8a12d94378e7e1165bd78cf724cf @@ -0,0 +1,1000 @@ +0 val_0 2010-03-23 11 +0 val_0 2010-03-23 11 +0 val_0 2010-03-23 11 +0 val_0 2010-03-23 11 +0 val_0 2010-03-23 11 +0 val_0 2010-03-23 11 +10 val_10 2010-03-23 11 +10 val_10 2010-03-23 11 +100 val_100 2010-03-23 11 +100 val_100 2010-03-23 11 +100 val_100 2010-03-23 11 +100 val_100 2010-03-23 11 +103 val_103 2010-03-23 11 +103 val_103 2010-03-23 11 +103 val_103 2010-03-23 11 +103 val_103 2010-03-23 11 +104 val_104 2010-03-23 11 +104 val_104 2010-03-23 11 +104 val_104 2010-03-23 11 +104 val_104 2010-03-23 11 +105 val_105 2010-03-23 11 +105 val_105 2010-03-23 11 +11 val_11 2010-03-23 11 +11 val_11 2010-03-23 11 +111 val_111 2010-03-23 11 +111 val_111 2010-03-23 11 +113 val_113 2010-03-23 11 +113 val_113 2010-03-23 11 +113 val_113 2010-03-23 11 +113 val_113 2010-03-23 11 +114 val_114 2010-03-23 11 +114 val_114 2010-03-23 11 +116 val_116 2010-03-23 11 +116 val_116 2010-03-23 11 +118 val_118 2010-03-23 11 +118 val_118 2010-03-23 11 +118 val_118 2010-03-23 11 +118 val_118 2010-03-23 11 +119 val_119 2010-03-23 11 +119 val_119 2010-03-23 11 +119 val_119 2010-03-23 11 +119 val_119 2010-03-23 11 +119 val_119 2010-03-23 11 +119 val_119 2010-03-23 11 +12 val_12 2010-03-23 11 +12 val_12 2010-03-23 11 +12 val_12 2010-03-23 11 +12 val_12 2010-03-23 11 +120 val_120 2010-03-23 11 +120 val_120 2010-03-23 11 +120 val_120 2010-03-23 11 +120 val_120 2010-03-23 11 +125 val_125 2010-03-23 11 +125 val_125 2010-03-23 11 +125 val_125 2010-03-23 11 +125 val_125 2010-03-23 11 +126 val_126 2010-03-23 11 +126 val_126 2010-03-23 11 +128 val_128 2010-03-23 11 +128 val_128 2010-03-23 11 +128 val_128 2010-03-23 11 +128 val_128 2010-03-23 11 +128 val_128 2010-03-23 11 +128 val_128 2010-03-23 11 +129 val_129 2010-03-23 11 +129 val_129 2010-03-23 11 +129 val_129 2010-03-23 11 +129 val_129 2010-03-23 11 +131 val_131 2010-03-23 11 +131 val_131 2010-03-23 11 +133 val_133 2010-03-23 11 +133 val_133 2010-03-23 11 +134 val_134 2010-03-23 11 +134 val_134 2010-03-23 11 +134 val_134 2010-03-23 11 +134 val_134 2010-03-23 11 +136 val_136 2010-03-23 11 +136 val_136 2010-03-23 11 +137 val_137 2010-03-23 11 +137 val_137 2010-03-23 11 +137 val_137 2010-03-23 11 +137 val_137 2010-03-23 11 +138 val_138 2010-03-23 11 +138 val_138 2010-03-23 11 +138 val_138 2010-03-23 11 +138 val_138 2010-03-23 11 +138 val_138 2010-03-23 11 +138 val_138 2010-03-23 11 +138 val_138 2010-03-23 11 +138 val_138 2010-03-23 11 +143 val_143 2010-03-23 11 +143 val_143 2010-03-23 11 +145 val_145 2010-03-23 11 +145 val_145 2010-03-23 11 +146 val_146 2010-03-23 11 +146 val_146 2010-03-23 11 +146 val_146 2010-03-23 11 +146 val_146 2010-03-23 11 +149 val_149 2010-03-23 11 +149 val_149 2010-03-23 11 +149 val_149 2010-03-23 11 +149 val_149 2010-03-23 11 +15 val_15 2010-03-23 11 +15 val_15 2010-03-23 11 +15 val_15 2010-03-23 11 +15 val_15 2010-03-23 11 +150 val_150 2010-03-23 11 +150 val_150 2010-03-23 11 +152 val_152 2010-03-23 11 +152 val_152 2010-03-23 11 +152 val_152 2010-03-23 11 +152 val_152 2010-03-23 11 +153 val_153 2010-03-23 11 +153 val_153 2010-03-23 11 +155 val_155 2010-03-23 11 +155 val_155 2010-03-23 11 +156 val_156 2010-03-23 11 +156 val_156 2010-03-23 11 +157 val_157 2010-03-23 11 +157 val_157 2010-03-23 11 +158 val_158 2010-03-23 11 +158 val_158 2010-03-23 11 +160 val_160 2010-03-23 11 +160 val_160 2010-03-23 11 +162 val_162 2010-03-23 11 +162 val_162 2010-03-23 11 +163 val_163 2010-03-23 11 +163 val_163 2010-03-23 11 +164 val_164 2010-03-23 11 +164 val_164 2010-03-23 11 +164 val_164 2010-03-23 11 +164 val_164 2010-03-23 11 +165 val_165 2010-03-23 11 +165 val_165 2010-03-23 11 +165 val_165 2010-03-23 11 +165 val_165 2010-03-23 11 +166 val_166 2010-03-23 11 +166 val_166 2010-03-23 11 +167 val_167 2010-03-23 11 +167 val_167 2010-03-23 11 +167 val_167 2010-03-23 11 +167 val_167 2010-03-23 11 +167 val_167 2010-03-23 11 +167 val_167 2010-03-23 11 +168 val_168 2010-03-23 11 +168 val_168 2010-03-23 11 +169 val_169 2010-03-23 11 +169 val_169 2010-03-23 11 +169 val_169 2010-03-23 11 +169 val_169 2010-03-23 11 +169 val_169 2010-03-23 11 +169 val_169 2010-03-23 11 +169 val_169 2010-03-23 11 +169 val_169 2010-03-23 11 +17 val_17 2010-03-23 11 +17 val_17 2010-03-23 11 +170 val_170 2010-03-23 11 +170 val_170 2010-03-23 11 +172 val_172 2010-03-23 11 +172 val_172 2010-03-23 11 +172 val_172 2010-03-23 11 +172 val_172 2010-03-23 11 +174 val_174 2010-03-23 11 +174 val_174 2010-03-23 11 +174 val_174 2010-03-23 11 +174 val_174 2010-03-23 11 +175 val_175 2010-03-23 11 +175 val_175 2010-03-23 11 +175 val_175 2010-03-23 11 +175 val_175 2010-03-23 11 +176 val_176 2010-03-23 11 +176 val_176 2010-03-23 11 +176 val_176 2010-03-23 11 +176 val_176 2010-03-23 11 +177 val_177 2010-03-23 11 +177 val_177 2010-03-23 11 +178 val_178 2010-03-23 11 +178 val_178 2010-03-23 11 +179 val_179 2010-03-23 11 +179 val_179 2010-03-23 11 +179 val_179 2010-03-23 11 +179 val_179 2010-03-23 11 +18 val_18 2010-03-23 11 +18 val_18 2010-03-23 11 +18 val_18 2010-03-23 11 +18 val_18 2010-03-23 11 +180 val_180 2010-03-23 11 +180 val_180 2010-03-23 11 +181 val_181 2010-03-23 11 +181 val_181 2010-03-23 11 +183 val_183 2010-03-23 11 +183 val_183 2010-03-23 11 +186 val_186 2010-03-23 11 +186 val_186 2010-03-23 11 +187 val_187 2010-03-23 11 +187 val_187 2010-03-23 11 +187 val_187 2010-03-23 11 +187 val_187 2010-03-23 11 +187 val_187 2010-03-23 11 +187 val_187 2010-03-23 11 +189 val_189 2010-03-23 11 +189 val_189 2010-03-23 11 +19 val_19 2010-03-23 11 +19 val_19 2010-03-23 11 +190 val_190 2010-03-23 11 +190 val_190 2010-03-23 11 +191 val_191 2010-03-23 11 +191 val_191 2010-03-23 11 +191 val_191 2010-03-23 11 +191 val_191 2010-03-23 11 +192 val_192 2010-03-23 11 +192 val_192 2010-03-23 11 +193 val_193 2010-03-23 11 +193 val_193 2010-03-23 11 +193 val_193 2010-03-23 11 +193 val_193 2010-03-23 11 +193 val_193 2010-03-23 11 +193 val_193 2010-03-23 11 +194 val_194 2010-03-23 11 +194 val_194 2010-03-23 11 +195 val_195 2010-03-23 11 +195 val_195 2010-03-23 11 +195 val_195 2010-03-23 11 +195 val_195 2010-03-23 11 +196 val_196 2010-03-23 11 +196 val_196 2010-03-23 11 +197 val_197 2010-03-23 11 +197 val_197 2010-03-23 11 +197 val_197 2010-03-23 11 +197 val_197 2010-03-23 11 +199 val_199 2010-03-23 11 +199 val_199 2010-03-23 11 +199 val_199 2010-03-23 11 +199 val_199 2010-03-23 11 +199 val_199 2010-03-23 11 +199 val_199 2010-03-23 11 +2 val_2 2010-03-23 11 +2 val_2 2010-03-23 11 +20 val_20 2010-03-23 11 +20 val_20 2010-03-23 11 +200 val_200 2010-03-23 11 +200 val_200 2010-03-23 11 +200 val_200 2010-03-23 11 +200 val_200 2010-03-23 11 +201 val_201 2010-03-23 11 +201 val_201 2010-03-23 11 +202 val_202 2010-03-23 11 +202 val_202 2010-03-23 11 +203 val_203 2010-03-23 11 +203 val_203 2010-03-23 11 +203 val_203 2010-03-23 11 +203 val_203 2010-03-23 11 +205 val_205 2010-03-23 11 +205 val_205 2010-03-23 11 +205 val_205 2010-03-23 11 +205 val_205 2010-03-23 11 +207 val_207 2010-03-23 11 +207 val_207 2010-03-23 11 +207 val_207 2010-03-23 11 +207 val_207 2010-03-23 11 +208 val_208 2010-03-23 11 +208 val_208 2010-03-23 11 +208 val_208 2010-03-23 11 +208 val_208 2010-03-23 11 +208 val_208 2010-03-23 11 +208 val_208 2010-03-23 11 +209 val_209 2010-03-23 11 +209 val_209 2010-03-23 11 +209 val_209 2010-03-23 11 +209 val_209 2010-03-23 11 +213 val_213 2010-03-23 11 +213 val_213 2010-03-23 11 +213 val_213 2010-03-23 11 +213 val_213 2010-03-23 11 +214 val_214 2010-03-23 11 +214 val_214 2010-03-23 11 +216 val_216 2010-03-23 11 +216 val_216 2010-03-23 11 +216 val_216 2010-03-23 11 +216 val_216 2010-03-23 11 +217 val_217 2010-03-23 11 +217 val_217 2010-03-23 11 +217 val_217 2010-03-23 11 +217 val_217 2010-03-23 11 +218 val_218 2010-03-23 11 +218 val_218 2010-03-23 11 +219 val_219 2010-03-23 11 +219 val_219 2010-03-23 11 +219 val_219 2010-03-23 11 +219 val_219 2010-03-23 11 +221 val_221 2010-03-23 11 +221 val_221 2010-03-23 11 +221 val_221 2010-03-23 11 +221 val_221 2010-03-23 11 +222 val_222 2010-03-23 11 +222 val_222 2010-03-23 11 +223 val_223 2010-03-23 11 +223 val_223 2010-03-23 11 +223 val_223 2010-03-23 11 +223 val_223 2010-03-23 11 +224 val_224 2010-03-23 11 +224 val_224 2010-03-23 11 +224 val_224 2010-03-23 11 +224 val_224 2010-03-23 11 +226 val_226 2010-03-23 11 +226 val_226 2010-03-23 11 +228 val_228 2010-03-23 11 +228 val_228 2010-03-23 11 +229 val_229 2010-03-23 11 +229 val_229 2010-03-23 11 +229 val_229 2010-03-23 11 +229 val_229 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +230 val_230 2010-03-23 11 +233 val_233 2010-03-23 11 +233 val_233 2010-03-23 11 +233 val_233 2010-03-23 11 +233 val_233 2010-03-23 11 +235 val_235 2010-03-23 11 +235 val_235 2010-03-23 11 +237 val_237 2010-03-23 11 +237 val_237 2010-03-23 11 +237 val_237 2010-03-23 11 +237 val_237 2010-03-23 11 +238 val_238 2010-03-23 11 +238 val_238 2010-03-23 11 +238 val_238 2010-03-23 11 +238 val_238 2010-03-23 11 +239 val_239 2010-03-23 11 +239 val_239 2010-03-23 11 +239 val_239 2010-03-23 11 +239 val_239 2010-03-23 11 +24 val_24 2010-03-23 11 +24 val_24 2010-03-23 11 +24 val_24 2010-03-23 11 +24 val_24 2010-03-23 11 +241 val_241 2010-03-23 11 +241 val_241 2010-03-23 11 +242 val_242 2010-03-23 11 +242 val_242 2010-03-23 11 +242 val_242 2010-03-23 11 +242 val_242 2010-03-23 11 +244 val_244 2010-03-23 11 +244 val_244 2010-03-23 11 +247 val_247 2010-03-23 11 +247 val_247 2010-03-23 11 +248 val_248 2010-03-23 11 +248 val_248 2010-03-23 11 +249 val_249 2010-03-23 11 +249 val_249 2010-03-23 11 +252 val_252 2010-03-23 11 +252 val_252 2010-03-23 11 +255 val_255 2010-03-23 11 +255 val_255 2010-03-23 11 +255 val_255 2010-03-23 11 +255 val_255 2010-03-23 11 +256 val_256 2010-03-23 11 +256 val_256 2010-03-23 11 +256 val_256 2010-03-23 11 +256 val_256 2010-03-23 11 +257 val_257 2010-03-23 11 +257 val_257 2010-03-23 11 +258 val_258 2010-03-23 11 +258 val_258 2010-03-23 11 +26 val_26 2010-03-23 11 +26 val_26 2010-03-23 11 +26 val_26 2010-03-23 11 +26 val_26 2010-03-23 11 +260 val_260 2010-03-23 11 +260 val_260 2010-03-23 11 +262 val_262 2010-03-23 11 +262 val_262 2010-03-23 11 +263 val_263 2010-03-23 11 +263 val_263 2010-03-23 11 +265 val_265 2010-03-23 11 +265 val_265 2010-03-23 11 +265 val_265 2010-03-23 11 +265 val_265 2010-03-23 11 +266 val_266 2010-03-23 11 +266 val_266 2010-03-23 11 +27 val_27 2010-03-23 11 +27 val_27 2010-03-23 11 +272 val_272 2010-03-23 11 +272 val_272 2010-03-23 11 +272 val_272 2010-03-23 11 +272 val_272 2010-03-23 11 +273 val_273 2010-03-23 11 +273 val_273 2010-03-23 11 +273 val_273 2010-03-23 11 +273 val_273 2010-03-23 11 +273 val_273 2010-03-23 11 +273 val_273 2010-03-23 11 +274 val_274 2010-03-23 11 +274 val_274 2010-03-23 11 +275 val_275 2010-03-23 11 +275 val_275 2010-03-23 11 +277 val_277 2010-03-23 11 +277 val_277 2010-03-23 11 +277 val_277 2010-03-23 11 +277 val_277 2010-03-23 11 +277 val_277 2010-03-23 11 +277 val_277 2010-03-23 11 +277 val_277 2010-03-23 11 +277 val_277 2010-03-23 11 +278 val_278 2010-03-23 11 +278 val_278 2010-03-23 11 +278 val_278 2010-03-23 11 +278 val_278 2010-03-23 11 +28 val_28 2010-03-23 11 +28 val_28 2010-03-23 11 +280 val_280 2010-03-23 11 +280 val_280 2010-03-23 11 +280 val_280 2010-03-23 11 +280 val_280 2010-03-23 11 +281 val_281 2010-03-23 11 +281 val_281 2010-03-23 11 +281 val_281 2010-03-23 11 +281 val_281 2010-03-23 11 +282 val_282 2010-03-23 11 +282 val_282 2010-03-23 11 +282 val_282 2010-03-23 11 +282 val_282 2010-03-23 11 +283 val_283 2010-03-23 11 +283 val_283 2010-03-23 11 +284 val_284 2010-03-23 11 +284 val_284 2010-03-23 11 +285 val_285 2010-03-23 11 +285 val_285 2010-03-23 11 +286 val_286 2010-03-23 11 +286 val_286 2010-03-23 11 +287 val_287 2010-03-23 11 +287 val_287 2010-03-23 11 +288 val_288 2010-03-23 11 +288 val_288 2010-03-23 11 +288 val_288 2010-03-23 11 +288 val_288 2010-03-23 11 +289 val_289 2010-03-23 11 +289 val_289 2010-03-23 11 +291 val_291 2010-03-23 11 +291 val_291 2010-03-23 11 +292 val_292 2010-03-23 11 +292 val_292 2010-03-23 11 +296 val_296 2010-03-23 11 +296 val_296 2010-03-23 11 +298 val_298 2010-03-23 11 +298 val_298 2010-03-23 11 +298 val_298 2010-03-23 11 +298 val_298 2010-03-23 11 +298 val_298 2010-03-23 11 +298 val_298 2010-03-23 11 +30 val_30 2010-03-23 11 +30 val_30 2010-03-23 11 +302 val_302 2010-03-23 11 +302 val_302 2010-03-23 11 +305 val_305 2010-03-23 11 +305 val_305 2010-03-23 11 +306 val_306 2010-03-23 11 +306 val_306 2010-03-23 11 +307 val_307 2010-03-23 11 +307 val_307 2010-03-23 11 +307 val_307 2010-03-23 11 +307 val_307 2010-03-23 11 +308 val_308 2010-03-23 11 +308 val_308 2010-03-23 11 +309 val_309 2010-03-23 11 +309 val_309 2010-03-23 11 +309 val_309 2010-03-23 11 +309 val_309 2010-03-23 11 +310 val_310 2010-03-23 11 +310 val_310 2010-03-23 11 +311 val_311 2010-03-23 11 +311 val_311 2010-03-23 11 +311 val_311 2010-03-23 11 +311 val_311 2010-03-23 11 +311 val_311 2010-03-23 11 +311 val_311 2010-03-23 11 +315 val_315 2010-03-23 11 +315 val_315 2010-03-23 11 +316 val_316 2010-03-23 11 +316 val_316 2010-03-23 11 +316 val_316 2010-03-23 11 +316 val_316 2010-03-23 11 +316 val_316 2010-03-23 11 +316 val_316 2010-03-23 11 +317 val_317 2010-03-23 11 +317 val_317 2010-03-23 11 +317 val_317 2010-03-23 11 +317 val_317 2010-03-23 11 +318 val_318 2010-03-23 11 +318 val_318 2010-03-23 11 +318 val_318 2010-03-23 11 +318 val_318 2010-03-23 11 +318 val_318 2010-03-23 11 +318 val_318 2010-03-23 11 +321 val_321 2010-03-23 11 +321 val_321 2010-03-23 11 +321 val_321 2010-03-23 11 +321 val_321 2010-03-23 11 +322 val_322 2010-03-23 11 +322 val_322 2010-03-23 11 +322 val_322 2010-03-23 11 +322 val_322 2010-03-23 11 +323 val_323 2010-03-23 11 +323 val_323 2010-03-23 11 +325 val_325 2010-03-23 11 +325 val_325 2010-03-23 11 +325 val_325 2010-03-23 11 +325 val_325 2010-03-23 11 +327 val_327 2010-03-23 11 +327 val_327 2010-03-23 11 +327 val_327 2010-03-23 11 +327 val_327 2010-03-23 11 +327 val_327 2010-03-23 11 +327 val_327 2010-03-23 11 +33 val_33 2010-03-23 11 +33 val_33 2010-03-23 11 +331 val_331 2010-03-23 11 +331 val_331 2010-03-23 11 +331 val_331 2010-03-23 11 +331 val_331 2010-03-23 11 +332 val_332 2010-03-23 11 +332 val_332 2010-03-23 11 +333 val_333 2010-03-23 11 +333 val_333 2010-03-23 11 +333 val_333 2010-03-23 11 +333 val_333 2010-03-23 11 +335 val_335 2010-03-23 11 +335 val_335 2010-03-23 11 +336 val_336 2010-03-23 11 +336 val_336 2010-03-23 11 +338 val_338 2010-03-23 11 +338 val_338 2010-03-23 11 +339 val_339 2010-03-23 11 +339 val_339 2010-03-23 11 +34 val_34 2010-03-23 11 +34 val_34 2010-03-23 11 +341 val_341 2010-03-23 11 +341 val_341 2010-03-23 11 +342 val_342 2010-03-23 11 +342 val_342 2010-03-23 11 +342 val_342 2010-03-23 11 +342 val_342 2010-03-23 11 +344 val_344 2010-03-23 11 +344 val_344 2010-03-23 11 +344 val_344 2010-03-23 11 +344 val_344 2010-03-23 11 +345 val_345 2010-03-23 11 +345 val_345 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +348 val_348 2010-03-23 11 +35 val_35 2010-03-23 11 +35 val_35 2010-03-23 11 +35 val_35 2010-03-23 11 +35 val_35 2010-03-23 11 +35 val_35 2010-03-23 11 +35 val_35 2010-03-23 11 +351 val_351 2010-03-23 11 +351 val_351 2010-03-23 11 +353 val_353 2010-03-23 11 +353 val_353 2010-03-23 11 +353 val_353 2010-03-23 11 +353 val_353 2010-03-23 11 +356 val_356 2010-03-23 11 +356 val_356 2010-03-23 11 +360 val_360 2010-03-23 11 +360 val_360 2010-03-23 11 +362 val_362 2010-03-23 11 +362 val_362 2010-03-23 11 +364 val_364 2010-03-23 11 +364 val_364 2010-03-23 11 +365 val_365 2010-03-23 11 +365 val_365 2010-03-23 11 +366 val_366 2010-03-23 11 +366 val_366 2010-03-23 11 +367 val_367 2010-03-23 11 +367 val_367 2010-03-23 11 +367 val_367 2010-03-23 11 +367 val_367 2010-03-23 11 +368 val_368 2010-03-23 11 +368 val_368 2010-03-23 11 +369 val_369 2010-03-23 11 +369 val_369 2010-03-23 11 +369 val_369 2010-03-23 11 +369 val_369 2010-03-23 11 +369 val_369 2010-03-23 11 +369 val_369 2010-03-23 11 +37 val_37 2010-03-23 11 +37 val_37 2010-03-23 11 +37 val_37 2010-03-23 11 +37 val_37 2010-03-23 11 +373 val_373 2010-03-23 11 +373 val_373 2010-03-23 11 +374 val_374 2010-03-23 11 +374 val_374 2010-03-23 11 +375 val_375 2010-03-23 11 +375 val_375 2010-03-23 11 +377 val_377 2010-03-23 11 +377 val_377 2010-03-23 11 +378 val_378 2010-03-23 11 +378 val_378 2010-03-23 11 +379 val_379 2010-03-23 11 +379 val_379 2010-03-23 11 +382 val_382 2010-03-23 11 +382 val_382 2010-03-23 11 +382 val_382 2010-03-23 11 +382 val_382 2010-03-23 11 +384 val_384 2010-03-23 11 +384 val_384 2010-03-23 11 +384 val_384 2010-03-23 11 +384 val_384 2010-03-23 11 +384 val_384 2010-03-23 11 +384 val_384 2010-03-23 11 +386 val_386 2010-03-23 11 +386 val_386 2010-03-23 11 +389 val_389 2010-03-23 11 +389 val_389 2010-03-23 11 +392 val_392 2010-03-23 11 +392 val_392 2010-03-23 11 +393 val_393 2010-03-23 11 +393 val_393 2010-03-23 11 +394 val_394 2010-03-23 11 +394 val_394 2010-03-23 11 +395 val_395 2010-03-23 11 +395 val_395 2010-03-23 11 +395 val_395 2010-03-23 11 +395 val_395 2010-03-23 11 +396 val_396 2010-03-23 11 +396 val_396 2010-03-23 11 +396 val_396 2010-03-23 11 +396 val_396 2010-03-23 11 +396 val_396 2010-03-23 11 +396 val_396 2010-03-23 11 +397 val_397 2010-03-23 11 +397 val_397 2010-03-23 11 +397 val_397 2010-03-23 11 +397 val_397 2010-03-23 11 +399 val_399 2010-03-23 11 +399 val_399 2010-03-23 11 +399 val_399 2010-03-23 11 +399 val_399 2010-03-23 11 +4 val_4 2010-03-23 11 +4 val_4 2010-03-23 11 +400 val_400 2010-03-23 11 +400 val_400 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +401 val_401 2010-03-23 11 +402 val_402 2010-03-23 11 +402 val_402 2010-03-23 11 +403 val_403 2010-03-23 11 +403 val_403 2010-03-23 11 +403 val_403 2010-03-23 11 +403 val_403 2010-03-23 11 +403 val_403 2010-03-23 11 +403 val_403 2010-03-23 11 +404 val_404 2010-03-23 11 +404 val_404 2010-03-23 11 +404 val_404 2010-03-23 11 +404 val_404 2010-03-23 11 +406 val_406 2010-03-23 11 +406 val_406 2010-03-23 11 +406 val_406 2010-03-23 11 +406 val_406 2010-03-23 11 +406 val_406 2010-03-23 11 +406 val_406 2010-03-23 11 +406 val_406 2010-03-23 11 +406 val_406 2010-03-23 11 +407 val_407 2010-03-23 11 +407 val_407 2010-03-23 11 +409 val_409 2010-03-23 11 +409 val_409 2010-03-23 11 +409 val_409 2010-03-23 11 +409 val_409 2010-03-23 11 +409 val_409 2010-03-23 11 +409 val_409 2010-03-23 11 +41 val_41 2010-03-23 11 +41 val_41 2010-03-23 11 +411 val_411 2010-03-23 11 +411 val_411 2010-03-23 11 +413 val_413 2010-03-23 11 +413 val_413 2010-03-23 11 +413 val_413 2010-03-23 11 +413 val_413 2010-03-23 11 +414 val_414 2010-03-23 11 +414 val_414 2010-03-23 11 +414 val_414 2010-03-23 11 +414 val_414 2010-03-23 11 +417 val_417 2010-03-23 11 +417 val_417 2010-03-23 11 +417 val_417 2010-03-23 11 +417 val_417 2010-03-23 11 +417 val_417 2010-03-23 11 +417 val_417 2010-03-23 11 +418 val_418 2010-03-23 11 +418 val_418 2010-03-23 11 +419 val_419 2010-03-23 11 +419 val_419 2010-03-23 11 +42 val_42 2010-03-23 11 +42 val_42 2010-03-23 11 +42 val_42 2010-03-23 11 +42 val_42 2010-03-23 11 +421 val_421 2010-03-23 11 +421 val_421 2010-03-23 11 +424 val_424 2010-03-23 11 +424 val_424 2010-03-23 11 +424 val_424 2010-03-23 11 +424 val_424 2010-03-23 11 +427 val_427 2010-03-23 11 +427 val_427 2010-03-23 11 +429 val_429 2010-03-23 11 +429 val_429 2010-03-23 11 +429 val_429 2010-03-23 11 +429 val_429 2010-03-23 11 +43 val_43 2010-03-23 11 +43 val_43 2010-03-23 11 +430 val_430 2010-03-23 11 +430 val_430 2010-03-23 11 +430 val_430 2010-03-23 11 +430 val_430 2010-03-23 11 +430 val_430 2010-03-23 11 +430 val_430 2010-03-23 11 +431 val_431 2010-03-23 11 +431 val_431 2010-03-23 11 +431 val_431 2010-03-23 11 +431 val_431 2010-03-23 11 +431 val_431 2010-03-23 11 +431 val_431 2010-03-23 11 +432 val_432 2010-03-23 11 +432 val_432 2010-03-23 11 +435 val_435 2010-03-23 11 +435 val_435 2010-03-23 11 +436 val_436 2010-03-23 11 +436 val_436 2010-03-23 11 +437 val_437 2010-03-23 11 +437 val_437 2010-03-23 11 +438 val_438 2010-03-23 11 +438 val_438 2010-03-23 11 +438 val_438 2010-03-23 11 +438 val_438 2010-03-23 11 +438 val_438 2010-03-23 11 +438 val_438 2010-03-23 11 +439 val_439 2010-03-23 11 +439 val_439 2010-03-23 11 +439 val_439 2010-03-23 11 +439 val_439 2010-03-23 11 +44 val_44 2010-03-23 11 +44 val_44 2010-03-23 11 +443 val_443 2010-03-23 11 +443 val_443 2010-03-23 11 +444 val_444 2010-03-23 11 +444 val_444 2010-03-23 11 +446 val_446 2010-03-23 11 +446 val_446 2010-03-23 11 +448 val_448 2010-03-23 11 +448 val_448 2010-03-23 11 +449 val_449 2010-03-23 11 +449 val_449 2010-03-23 11 +452 val_452 2010-03-23 11 +452 val_452 2010-03-23 11 +453 val_453 2010-03-23 11 +453 val_453 2010-03-23 11 +454 val_454 2010-03-23 11 +454 val_454 2010-03-23 11 +454 val_454 2010-03-23 11 +454 val_454 2010-03-23 11 +454 val_454 2010-03-23 11 +454 val_454 2010-03-23 11 +455 val_455 2010-03-23 11 +455 val_455 2010-03-23 11 +457 val_457 2010-03-23 11 +457 val_457 2010-03-23 11 +458 val_458 2010-03-23 11 +458 val_458 2010-03-23 11 +458 val_458 2010-03-23 11 +458 val_458 2010-03-23 11 +459 val_459 2010-03-23 11 +459 val_459 2010-03-23 11 +459 val_459 2010-03-23 11 +459 val_459 2010-03-23 11 +460 val_460 2010-03-23 11 +460 val_460 2010-03-23 11 +462 val_462 2010-03-23 11 +462 val_462 2010-03-23 11 +462 val_462 2010-03-23 11 +462 val_462 2010-03-23 11 +463 val_463 2010-03-23 11 +463 val_463 2010-03-23 11 +463 val_463 2010-03-23 11 +463 val_463 2010-03-23 11 +466 val_466 2010-03-23 11 +466 val_466 2010-03-23 11 +466 val_466 2010-03-23 11 +466 val_466 2010-03-23 11 +466 val_466 2010-03-23 11 +466 val_466 2010-03-23 11 +467 val_467 2010-03-23 11 +467 val_467 2010-03-23 11 +468 val_468 2010-03-23 11 +468 val_468 2010-03-23 11 +468 val_468 2010-03-23 11 +468 val_468 2010-03-23 11 +468 val_468 2010-03-23 11 +468 val_468 2010-03-23 11 +468 val_468 2010-03-23 11 +468 val_468 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +469 val_469 2010-03-23 11 +47 val_47 2010-03-23 11 +47 val_47 2010-03-23 11 +470 val_470 2010-03-23 11 +470 val_470 2010-03-23 11 +472 val_472 2010-03-23 11 +472 val_472 2010-03-23 11 +475 val_475 2010-03-23 11 +475 val_475 2010-03-23 11 +477 val_477 2010-03-23 11 +477 val_477 2010-03-23 11 +478 val_478 2010-03-23 11 +478 val_478 2010-03-23 11 +478 val_478 2010-03-23 11 +478 val_478 2010-03-23 11 +479 val_479 2010-03-23 11 +479 val_479 2010-03-23 11 +480 val_480 2010-03-23 11 +480 val_480 2010-03-23 11 +480 val_480 2010-03-23 11 +480 val_480 2010-03-23 11 +480 val_480 2010-03-23 11 +480 val_480 2010-03-23 11 +481 val_481 2010-03-23 11 +481 val_481 2010-03-23 11 +482 val_482 2010-03-23 11 +482 val_482 2010-03-23 11 +483 val_483 2010-03-23 11 +483 val_483 2010-03-23 11 +484 val_484 2010-03-23 11 +484 val_484 2010-03-23 11 +485 val_485 2010-03-23 11 +485 val_485 2010-03-23 11 +487 val_487 2010-03-23 11 +487 val_487 2010-03-23 11 +489 val_489 2010-03-23 11 +489 val_489 2010-03-23 11 +489 val_489 2010-03-23 11 +489 val_489 2010-03-23 11 +489 val_489 2010-03-23 11 +489 val_489 2010-03-23 11 +489 val_489 2010-03-23 11 +489 val_489 2010-03-23 11 +490 val_490 2010-03-23 11 +490 val_490 2010-03-23 11 +491 val_491 2010-03-23 11 +491 val_491 2010-03-23 11 +492 val_492 2010-03-23 11 +492 val_492 2010-03-23 11 +492 val_492 2010-03-23 11 +492 val_492 2010-03-23 11 +493 val_493 2010-03-23 11 +493 val_493 2010-03-23 11 +494 val_494 2010-03-23 11 +494 val_494 2010-03-23 11 +495 val_495 2010-03-23 11 +495 val_495 2010-03-23 11 +496 val_496 2010-03-23 11 +496 val_496 2010-03-23 11 +497 val_497 2010-03-23 11 +497 val_497 2010-03-23 11 +498 val_498 2010-03-23 11 +498 val_498 2010-03-23 11 +498 val_498 2010-03-23 11 +498 val_498 2010-03-23 11 +498 val_498 2010-03-23 11 +498 val_498 2010-03-23 11 +5 val_5 2010-03-23 11 +5 val_5 2010-03-23 11 +5 val_5 2010-03-23 11 +5 val_5 2010-03-23 11 +5 val_5 2010-03-23 11 +5 val_5 2010-03-23 11 +51 val_51 2010-03-23 11 +51 val_51 2010-03-23 11 +51 val_51 2010-03-23 11 +51 val_51 2010-03-23 11 +53 val_53 2010-03-23 11 +53 val_53 2010-03-23 11 +54 val_54 2010-03-23 11 +54 val_54 2010-03-23 11 +57 val_57 2010-03-23 11 +57 val_57 2010-03-23 11 +58 val_58 2010-03-23 11 +58 val_58 2010-03-23 11 +58 val_58 2010-03-23 11 +58 val_58 2010-03-23 11 +64 val_64 2010-03-23 11 +64 val_64 2010-03-23 11 +65 val_65 2010-03-23 11 +65 val_65 2010-03-23 11 +66 val_66 2010-03-23 11 +66 val_66 2010-03-23 11 +67 val_67 2010-03-23 11 +67 val_67 2010-03-23 11 +67 val_67 2010-03-23 11 +67 val_67 2010-03-23 11 +69 val_69 2010-03-23 11 +69 val_69 2010-03-23 11 +70 val_70 2010-03-23 11 +70 val_70 2010-03-23 11 +70 val_70 2010-03-23 11 +70 val_70 2010-03-23 11 +70 val_70 2010-03-23 11 +70 val_70 2010-03-23 11 +72 val_72 2010-03-23 11 +72 val_72 2010-03-23 11 +72 val_72 2010-03-23 11 +72 val_72 2010-03-23 11 +74 val_74 2010-03-23 11 +74 val_74 2010-03-23 11 +76 val_76 2010-03-23 11 +76 val_76 2010-03-23 11 +76 val_76 2010-03-23 11 +76 val_76 2010-03-23 11 +77 val_77 2010-03-23 11 +77 val_77 2010-03-23 11 +78 val_78 2010-03-23 11 +78 val_78 2010-03-23 11 +8 val_8 2010-03-23 11 +8 val_8 2010-03-23 11 +80 val_80 2010-03-23 11 +80 val_80 2010-03-23 11 +82 val_82 2010-03-23 11 +82 val_82 2010-03-23 11 +83 val_83 2010-03-23 11 +83 val_83 2010-03-23 11 +83 val_83 2010-03-23 11 +83 val_83 2010-03-23 11 +84 val_84 2010-03-23 11 +84 val_84 2010-03-23 11 +84 val_84 2010-03-23 11 +84 val_84 2010-03-23 11 +85 val_85 2010-03-23 11 +85 val_85 2010-03-23 11 +86 val_86 2010-03-23 11 +86 val_86 2010-03-23 11 +87 val_87 2010-03-23 11 +87 val_87 2010-03-23 11 +9 val_9 2010-03-23 11 +9 val_9 2010-03-23 11 +90 val_90 2010-03-23 11 +90 val_90 2010-03-23 11 +90 val_90 2010-03-23 11 +90 val_90 2010-03-23 11 +90 val_90 2010-03-23 11 +90 val_90 2010-03-23 11 +92 val_92 2010-03-23 11 +92 val_92 2010-03-23 11 +95 val_95 2010-03-23 11 +95 val_95 2010-03-23 11 +95 val_95 2010-03-23 11 +95 val_95 2010-03-23 11 +96 val_96 2010-03-23 11 +96 val_96 2010-03-23 11 +97 val_97 2010-03-23 11 +97 val_97 2010-03-23 11 +97 val_97 2010-03-23 11 +97 val_97 2010-03-23 11 +98 val_98 2010-03-23 11 +98 val_98 2010-03-23 11 +98 val_98 2010-03-23 11 +98 val_98 2010-03-23 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part2-9-3f29de9877006f9448272ef2422d6132 b/sql/hive/src/test/resources/golden/load_dyn_part2-9-3f29de9877006f9448272ef2422d6132 new file mode 100644 index 0000000000000..45c45d0082ee3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part2-9-3f29de9877006f9448272ef2422d6132 @@ -0,0 +1,1000 @@ +0 val_0 2010-03-23 12 +0 val_0 2010-03-23 12 +0 val_0 2010-03-23 12 +0 val_0 2010-03-23 12 +0 val_0 2010-03-23 12 +0 val_0 2010-03-23 12 +10 val_10 2010-03-23 12 +10 val_10 2010-03-23 12 +100 val_100 2010-03-23 12 +100 val_100 2010-03-23 12 +100 val_100 2010-03-23 12 +100 val_100 2010-03-23 12 +103 val_103 2010-03-23 12 +103 val_103 2010-03-23 12 +103 val_103 2010-03-23 12 +103 val_103 2010-03-23 12 +104 val_104 2010-03-23 12 +104 val_104 2010-03-23 12 +104 val_104 2010-03-23 12 +104 val_104 2010-03-23 12 +105 val_105 2010-03-23 12 +105 val_105 2010-03-23 12 +11 val_11 2010-03-23 12 +11 val_11 2010-03-23 12 +111 val_111 2010-03-23 12 +111 val_111 2010-03-23 12 +113 val_113 2010-03-23 12 +113 val_113 2010-03-23 12 +113 val_113 2010-03-23 12 +113 val_113 2010-03-23 12 +114 val_114 2010-03-23 12 +114 val_114 2010-03-23 12 +116 val_116 2010-03-23 12 +116 val_116 2010-03-23 12 +118 val_118 2010-03-23 12 +118 val_118 2010-03-23 12 +118 val_118 2010-03-23 12 +118 val_118 2010-03-23 12 +119 val_119 2010-03-23 12 +119 val_119 2010-03-23 12 +119 val_119 2010-03-23 12 +119 val_119 2010-03-23 12 +119 val_119 2010-03-23 12 +119 val_119 2010-03-23 12 +12 val_12 2010-03-23 12 +12 val_12 2010-03-23 12 +12 val_12 2010-03-23 12 +12 val_12 2010-03-23 12 +120 val_120 2010-03-23 12 +120 val_120 2010-03-23 12 +120 val_120 2010-03-23 12 +120 val_120 2010-03-23 12 +125 val_125 2010-03-23 12 +125 val_125 2010-03-23 12 +125 val_125 2010-03-23 12 +125 val_125 2010-03-23 12 +126 val_126 2010-03-23 12 +126 val_126 2010-03-23 12 +128 val_128 2010-03-23 12 +128 val_128 2010-03-23 12 +128 val_128 2010-03-23 12 +128 val_128 2010-03-23 12 +128 val_128 2010-03-23 12 +128 val_128 2010-03-23 12 +129 val_129 2010-03-23 12 +129 val_129 2010-03-23 12 +129 val_129 2010-03-23 12 +129 val_129 2010-03-23 12 +131 val_131 2010-03-23 12 +131 val_131 2010-03-23 12 +133 val_133 2010-03-23 12 +133 val_133 2010-03-23 12 +134 val_134 2010-03-23 12 +134 val_134 2010-03-23 12 +134 val_134 2010-03-23 12 +134 val_134 2010-03-23 12 +136 val_136 2010-03-23 12 +136 val_136 2010-03-23 12 +137 val_137 2010-03-23 12 +137 val_137 2010-03-23 12 +137 val_137 2010-03-23 12 +137 val_137 2010-03-23 12 +138 val_138 2010-03-23 12 +138 val_138 2010-03-23 12 +138 val_138 2010-03-23 12 +138 val_138 2010-03-23 12 +138 val_138 2010-03-23 12 +138 val_138 2010-03-23 12 +138 val_138 2010-03-23 12 +138 val_138 2010-03-23 12 +143 val_143 2010-03-23 12 +143 val_143 2010-03-23 12 +145 val_145 2010-03-23 12 +145 val_145 2010-03-23 12 +146 val_146 2010-03-23 12 +146 val_146 2010-03-23 12 +146 val_146 2010-03-23 12 +146 val_146 2010-03-23 12 +149 val_149 2010-03-23 12 +149 val_149 2010-03-23 12 +149 val_149 2010-03-23 12 +149 val_149 2010-03-23 12 +15 val_15 2010-03-23 12 +15 val_15 2010-03-23 12 +15 val_15 2010-03-23 12 +15 val_15 2010-03-23 12 +150 val_150 2010-03-23 12 +150 val_150 2010-03-23 12 +152 val_152 2010-03-23 12 +152 val_152 2010-03-23 12 +152 val_152 2010-03-23 12 +152 val_152 2010-03-23 12 +153 val_153 2010-03-23 12 +153 val_153 2010-03-23 12 +155 val_155 2010-03-23 12 +155 val_155 2010-03-23 12 +156 val_156 2010-03-23 12 +156 val_156 2010-03-23 12 +157 val_157 2010-03-23 12 +157 val_157 2010-03-23 12 +158 val_158 2010-03-23 12 +158 val_158 2010-03-23 12 +160 val_160 2010-03-23 12 +160 val_160 2010-03-23 12 +162 val_162 2010-03-23 12 +162 val_162 2010-03-23 12 +163 val_163 2010-03-23 12 +163 val_163 2010-03-23 12 +164 val_164 2010-03-23 12 +164 val_164 2010-03-23 12 +164 val_164 2010-03-23 12 +164 val_164 2010-03-23 12 +165 val_165 2010-03-23 12 +165 val_165 2010-03-23 12 +165 val_165 2010-03-23 12 +165 val_165 2010-03-23 12 +166 val_166 2010-03-23 12 +166 val_166 2010-03-23 12 +167 val_167 2010-03-23 12 +167 val_167 2010-03-23 12 +167 val_167 2010-03-23 12 +167 val_167 2010-03-23 12 +167 val_167 2010-03-23 12 +167 val_167 2010-03-23 12 +168 val_168 2010-03-23 12 +168 val_168 2010-03-23 12 +169 val_169 2010-03-23 12 +169 val_169 2010-03-23 12 +169 val_169 2010-03-23 12 +169 val_169 2010-03-23 12 +169 val_169 2010-03-23 12 +169 val_169 2010-03-23 12 +169 val_169 2010-03-23 12 +169 val_169 2010-03-23 12 +17 val_17 2010-03-23 12 +17 val_17 2010-03-23 12 +170 val_170 2010-03-23 12 +170 val_170 2010-03-23 12 +172 val_172 2010-03-23 12 +172 val_172 2010-03-23 12 +172 val_172 2010-03-23 12 +172 val_172 2010-03-23 12 +174 val_174 2010-03-23 12 +174 val_174 2010-03-23 12 +174 val_174 2010-03-23 12 +174 val_174 2010-03-23 12 +175 val_175 2010-03-23 12 +175 val_175 2010-03-23 12 +175 val_175 2010-03-23 12 +175 val_175 2010-03-23 12 +176 val_176 2010-03-23 12 +176 val_176 2010-03-23 12 +176 val_176 2010-03-23 12 +176 val_176 2010-03-23 12 +177 val_177 2010-03-23 12 +177 val_177 2010-03-23 12 +178 val_178 2010-03-23 12 +178 val_178 2010-03-23 12 +179 val_179 2010-03-23 12 +179 val_179 2010-03-23 12 +179 val_179 2010-03-23 12 +179 val_179 2010-03-23 12 +18 val_18 2010-03-23 12 +18 val_18 2010-03-23 12 +18 val_18 2010-03-23 12 +18 val_18 2010-03-23 12 +180 val_180 2010-03-23 12 +180 val_180 2010-03-23 12 +181 val_181 2010-03-23 12 +181 val_181 2010-03-23 12 +183 val_183 2010-03-23 12 +183 val_183 2010-03-23 12 +186 val_186 2010-03-23 12 +186 val_186 2010-03-23 12 +187 val_187 2010-03-23 12 +187 val_187 2010-03-23 12 +187 val_187 2010-03-23 12 +187 val_187 2010-03-23 12 +187 val_187 2010-03-23 12 +187 val_187 2010-03-23 12 +189 val_189 2010-03-23 12 +189 val_189 2010-03-23 12 +19 val_19 2010-03-23 12 +19 val_19 2010-03-23 12 +190 val_190 2010-03-23 12 +190 val_190 2010-03-23 12 +191 val_191 2010-03-23 12 +191 val_191 2010-03-23 12 +191 val_191 2010-03-23 12 +191 val_191 2010-03-23 12 +192 val_192 2010-03-23 12 +192 val_192 2010-03-23 12 +193 val_193 2010-03-23 12 +193 val_193 2010-03-23 12 +193 val_193 2010-03-23 12 +193 val_193 2010-03-23 12 +193 val_193 2010-03-23 12 +193 val_193 2010-03-23 12 +194 val_194 2010-03-23 12 +194 val_194 2010-03-23 12 +195 val_195 2010-03-23 12 +195 val_195 2010-03-23 12 +195 val_195 2010-03-23 12 +195 val_195 2010-03-23 12 +196 val_196 2010-03-23 12 +196 val_196 2010-03-23 12 +197 val_197 2010-03-23 12 +197 val_197 2010-03-23 12 +197 val_197 2010-03-23 12 +197 val_197 2010-03-23 12 +199 val_199 2010-03-23 12 +199 val_199 2010-03-23 12 +199 val_199 2010-03-23 12 +199 val_199 2010-03-23 12 +199 val_199 2010-03-23 12 +199 val_199 2010-03-23 12 +2 val_2 2010-03-23 12 +2 val_2 2010-03-23 12 +20 val_20 2010-03-23 12 +20 val_20 2010-03-23 12 +200 val_200 2010-03-23 12 +200 val_200 2010-03-23 12 +200 val_200 2010-03-23 12 +200 val_200 2010-03-23 12 +201 val_201 2010-03-23 12 +201 val_201 2010-03-23 12 +202 val_202 2010-03-23 12 +202 val_202 2010-03-23 12 +203 val_203 2010-03-23 12 +203 val_203 2010-03-23 12 +203 val_203 2010-03-23 12 +203 val_203 2010-03-23 12 +205 val_205 2010-03-23 12 +205 val_205 2010-03-23 12 +205 val_205 2010-03-23 12 +205 val_205 2010-03-23 12 +207 val_207 2010-03-23 12 +207 val_207 2010-03-23 12 +207 val_207 2010-03-23 12 +207 val_207 2010-03-23 12 +208 val_208 2010-03-23 12 +208 val_208 2010-03-23 12 +208 val_208 2010-03-23 12 +208 val_208 2010-03-23 12 +208 val_208 2010-03-23 12 +208 val_208 2010-03-23 12 +209 val_209 2010-03-23 12 +209 val_209 2010-03-23 12 +209 val_209 2010-03-23 12 +209 val_209 2010-03-23 12 +213 val_213 2010-03-23 12 +213 val_213 2010-03-23 12 +213 val_213 2010-03-23 12 +213 val_213 2010-03-23 12 +214 val_214 2010-03-23 12 +214 val_214 2010-03-23 12 +216 val_216 2010-03-23 12 +216 val_216 2010-03-23 12 +216 val_216 2010-03-23 12 +216 val_216 2010-03-23 12 +217 val_217 2010-03-23 12 +217 val_217 2010-03-23 12 +217 val_217 2010-03-23 12 +217 val_217 2010-03-23 12 +218 val_218 2010-03-23 12 +218 val_218 2010-03-23 12 +219 val_219 2010-03-23 12 +219 val_219 2010-03-23 12 +219 val_219 2010-03-23 12 +219 val_219 2010-03-23 12 +221 val_221 2010-03-23 12 +221 val_221 2010-03-23 12 +221 val_221 2010-03-23 12 +221 val_221 2010-03-23 12 +222 val_222 2010-03-23 12 +222 val_222 2010-03-23 12 +223 val_223 2010-03-23 12 +223 val_223 2010-03-23 12 +223 val_223 2010-03-23 12 +223 val_223 2010-03-23 12 +224 val_224 2010-03-23 12 +224 val_224 2010-03-23 12 +224 val_224 2010-03-23 12 +224 val_224 2010-03-23 12 +226 val_226 2010-03-23 12 +226 val_226 2010-03-23 12 +228 val_228 2010-03-23 12 +228 val_228 2010-03-23 12 +229 val_229 2010-03-23 12 +229 val_229 2010-03-23 12 +229 val_229 2010-03-23 12 +229 val_229 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +230 val_230 2010-03-23 12 +233 val_233 2010-03-23 12 +233 val_233 2010-03-23 12 +233 val_233 2010-03-23 12 +233 val_233 2010-03-23 12 +235 val_235 2010-03-23 12 +235 val_235 2010-03-23 12 +237 val_237 2010-03-23 12 +237 val_237 2010-03-23 12 +237 val_237 2010-03-23 12 +237 val_237 2010-03-23 12 +238 val_238 2010-03-23 12 +238 val_238 2010-03-23 12 +238 val_238 2010-03-23 12 +238 val_238 2010-03-23 12 +239 val_239 2010-03-23 12 +239 val_239 2010-03-23 12 +239 val_239 2010-03-23 12 +239 val_239 2010-03-23 12 +24 val_24 2010-03-23 12 +24 val_24 2010-03-23 12 +24 val_24 2010-03-23 12 +24 val_24 2010-03-23 12 +241 val_241 2010-03-23 12 +241 val_241 2010-03-23 12 +242 val_242 2010-03-23 12 +242 val_242 2010-03-23 12 +242 val_242 2010-03-23 12 +242 val_242 2010-03-23 12 +244 val_244 2010-03-23 12 +244 val_244 2010-03-23 12 +247 val_247 2010-03-23 12 +247 val_247 2010-03-23 12 +248 val_248 2010-03-23 12 +248 val_248 2010-03-23 12 +249 val_249 2010-03-23 12 +249 val_249 2010-03-23 12 +252 val_252 2010-03-23 12 +252 val_252 2010-03-23 12 +255 val_255 2010-03-23 12 +255 val_255 2010-03-23 12 +255 val_255 2010-03-23 12 +255 val_255 2010-03-23 12 +256 val_256 2010-03-23 12 +256 val_256 2010-03-23 12 +256 val_256 2010-03-23 12 +256 val_256 2010-03-23 12 +257 val_257 2010-03-23 12 +257 val_257 2010-03-23 12 +258 val_258 2010-03-23 12 +258 val_258 2010-03-23 12 +26 val_26 2010-03-23 12 +26 val_26 2010-03-23 12 +26 val_26 2010-03-23 12 +26 val_26 2010-03-23 12 +260 val_260 2010-03-23 12 +260 val_260 2010-03-23 12 +262 val_262 2010-03-23 12 +262 val_262 2010-03-23 12 +263 val_263 2010-03-23 12 +263 val_263 2010-03-23 12 +265 val_265 2010-03-23 12 +265 val_265 2010-03-23 12 +265 val_265 2010-03-23 12 +265 val_265 2010-03-23 12 +266 val_266 2010-03-23 12 +266 val_266 2010-03-23 12 +27 val_27 2010-03-23 12 +27 val_27 2010-03-23 12 +272 val_272 2010-03-23 12 +272 val_272 2010-03-23 12 +272 val_272 2010-03-23 12 +272 val_272 2010-03-23 12 +273 val_273 2010-03-23 12 +273 val_273 2010-03-23 12 +273 val_273 2010-03-23 12 +273 val_273 2010-03-23 12 +273 val_273 2010-03-23 12 +273 val_273 2010-03-23 12 +274 val_274 2010-03-23 12 +274 val_274 2010-03-23 12 +275 val_275 2010-03-23 12 +275 val_275 2010-03-23 12 +277 val_277 2010-03-23 12 +277 val_277 2010-03-23 12 +277 val_277 2010-03-23 12 +277 val_277 2010-03-23 12 +277 val_277 2010-03-23 12 +277 val_277 2010-03-23 12 +277 val_277 2010-03-23 12 +277 val_277 2010-03-23 12 +278 val_278 2010-03-23 12 +278 val_278 2010-03-23 12 +278 val_278 2010-03-23 12 +278 val_278 2010-03-23 12 +28 val_28 2010-03-23 12 +28 val_28 2010-03-23 12 +280 val_280 2010-03-23 12 +280 val_280 2010-03-23 12 +280 val_280 2010-03-23 12 +280 val_280 2010-03-23 12 +281 val_281 2010-03-23 12 +281 val_281 2010-03-23 12 +281 val_281 2010-03-23 12 +281 val_281 2010-03-23 12 +282 val_282 2010-03-23 12 +282 val_282 2010-03-23 12 +282 val_282 2010-03-23 12 +282 val_282 2010-03-23 12 +283 val_283 2010-03-23 12 +283 val_283 2010-03-23 12 +284 val_284 2010-03-23 12 +284 val_284 2010-03-23 12 +285 val_285 2010-03-23 12 +285 val_285 2010-03-23 12 +286 val_286 2010-03-23 12 +286 val_286 2010-03-23 12 +287 val_287 2010-03-23 12 +287 val_287 2010-03-23 12 +288 val_288 2010-03-23 12 +288 val_288 2010-03-23 12 +288 val_288 2010-03-23 12 +288 val_288 2010-03-23 12 +289 val_289 2010-03-23 12 +289 val_289 2010-03-23 12 +291 val_291 2010-03-23 12 +291 val_291 2010-03-23 12 +292 val_292 2010-03-23 12 +292 val_292 2010-03-23 12 +296 val_296 2010-03-23 12 +296 val_296 2010-03-23 12 +298 val_298 2010-03-23 12 +298 val_298 2010-03-23 12 +298 val_298 2010-03-23 12 +298 val_298 2010-03-23 12 +298 val_298 2010-03-23 12 +298 val_298 2010-03-23 12 +30 val_30 2010-03-23 12 +30 val_30 2010-03-23 12 +302 val_302 2010-03-23 12 +302 val_302 2010-03-23 12 +305 val_305 2010-03-23 12 +305 val_305 2010-03-23 12 +306 val_306 2010-03-23 12 +306 val_306 2010-03-23 12 +307 val_307 2010-03-23 12 +307 val_307 2010-03-23 12 +307 val_307 2010-03-23 12 +307 val_307 2010-03-23 12 +308 val_308 2010-03-23 12 +308 val_308 2010-03-23 12 +309 val_309 2010-03-23 12 +309 val_309 2010-03-23 12 +309 val_309 2010-03-23 12 +309 val_309 2010-03-23 12 +310 val_310 2010-03-23 12 +310 val_310 2010-03-23 12 +311 val_311 2010-03-23 12 +311 val_311 2010-03-23 12 +311 val_311 2010-03-23 12 +311 val_311 2010-03-23 12 +311 val_311 2010-03-23 12 +311 val_311 2010-03-23 12 +315 val_315 2010-03-23 12 +315 val_315 2010-03-23 12 +316 val_316 2010-03-23 12 +316 val_316 2010-03-23 12 +316 val_316 2010-03-23 12 +316 val_316 2010-03-23 12 +316 val_316 2010-03-23 12 +316 val_316 2010-03-23 12 +317 val_317 2010-03-23 12 +317 val_317 2010-03-23 12 +317 val_317 2010-03-23 12 +317 val_317 2010-03-23 12 +318 val_318 2010-03-23 12 +318 val_318 2010-03-23 12 +318 val_318 2010-03-23 12 +318 val_318 2010-03-23 12 +318 val_318 2010-03-23 12 +318 val_318 2010-03-23 12 +321 val_321 2010-03-23 12 +321 val_321 2010-03-23 12 +321 val_321 2010-03-23 12 +321 val_321 2010-03-23 12 +322 val_322 2010-03-23 12 +322 val_322 2010-03-23 12 +322 val_322 2010-03-23 12 +322 val_322 2010-03-23 12 +323 val_323 2010-03-23 12 +323 val_323 2010-03-23 12 +325 val_325 2010-03-23 12 +325 val_325 2010-03-23 12 +325 val_325 2010-03-23 12 +325 val_325 2010-03-23 12 +327 val_327 2010-03-23 12 +327 val_327 2010-03-23 12 +327 val_327 2010-03-23 12 +327 val_327 2010-03-23 12 +327 val_327 2010-03-23 12 +327 val_327 2010-03-23 12 +33 val_33 2010-03-23 12 +33 val_33 2010-03-23 12 +331 val_331 2010-03-23 12 +331 val_331 2010-03-23 12 +331 val_331 2010-03-23 12 +331 val_331 2010-03-23 12 +332 val_332 2010-03-23 12 +332 val_332 2010-03-23 12 +333 val_333 2010-03-23 12 +333 val_333 2010-03-23 12 +333 val_333 2010-03-23 12 +333 val_333 2010-03-23 12 +335 val_335 2010-03-23 12 +335 val_335 2010-03-23 12 +336 val_336 2010-03-23 12 +336 val_336 2010-03-23 12 +338 val_338 2010-03-23 12 +338 val_338 2010-03-23 12 +339 val_339 2010-03-23 12 +339 val_339 2010-03-23 12 +34 val_34 2010-03-23 12 +34 val_34 2010-03-23 12 +341 val_341 2010-03-23 12 +341 val_341 2010-03-23 12 +342 val_342 2010-03-23 12 +342 val_342 2010-03-23 12 +342 val_342 2010-03-23 12 +342 val_342 2010-03-23 12 +344 val_344 2010-03-23 12 +344 val_344 2010-03-23 12 +344 val_344 2010-03-23 12 +344 val_344 2010-03-23 12 +345 val_345 2010-03-23 12 +345 val_345 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +348 val_348 2010-03-23 12 +35 val_35 2010-03-23 12 +35 val_35 2010-03-23 12 +35 val_35 2010-03-23 12 +35 val_35 2010-03-23 12 +35 val_35 2010-03-23 12 +35 val_35 2010-03-23 12 +351 val_351 2010-03-23 12 +351 val_351 2010-03-23 12 +353 val_353 2010-03-23 12 +353 val_353 2010-03-23 12 +353 val_353 2010-03-23 12 +353 val_353 2010-03-23 12 +356 val_356 2010-03-23 12 +356 val_356 2010-03-23 12 +360 val_360 2010-03-23 12 +360 val_360 2010-03-23 12 +362 val_362 2010-03-23 12 +362 val_362 2010-03-23 12 +364 val_364 2010-03-23 12 +364 val_364 2010-03-23 12 +365 val_365 2010-03-23 12 +365 val_365 2010-03-23 12 +366 val_366 2010-03-23 12 +366 val_366 2010-03-23 12 +367 val_367 2010-03-23 12 +367 val_367 2010-03-23 12 +367 val_367 2010-03-23 12 +367 val_367 2010-03-23 12 +368 val_368 2010-03-23 12 +368 val_368 2010-03-23 12 +369 val_369 2010-03-23 12 +369 val_369 2010-03-23 12 +369 val_369 2010-03-23 12 +369 val_369 2010-03-23 12 +369 val_369 2010-03-23 12 +369 val_369 2010-03-23 12 +37 val_37 2010-03-23 12 +37 val_37 2010-03-23 12 +37 val_37 2010-03-23 12 +37 val_37 2010-03-23 12 +373 val_373 2010-03-23 12 +373 val_373 2010-03-23 12 +374 val_374 2010-03-23 12 +374 val_374 2010-03-23 12 +375 val_375 2010-03-23 12 +375 val_375 2010-03-23 12 +377 val_377 2010-03-23 12 +377 val_377 2010-03-23 12 +378 val_378 2010-03-23 12 +378 val_378 2010-03-23 12 +379 val_379 2010-03-23 12 +379 val_379 2010-03-23 12 +382 val_382 2010-03-23 12 +382 val_382 2010-03-23 12 +382 val_382 2010-03-23 12 +382 val_382 2010-03-23 12 +384 val_384 2010-03-23 12 +384 val_384 2010-03-23 12 +384 val_384 2010-03-23 12 +384 val_384 2010-03-23 12 +384 val_384 2010-03-23 12 +384 val_384 2010-03-23 12 +386 val_386 2010-03-23 12 +386 val_386 2010-03-23 12 +389 val_389 2010-03-23 12 +389 val_389 2010-03-23 12 +392 val_392 2010-03-23 12 +392 val_392 2010-03-23 12 +393 val_393 2010-03-23 12 +393 val_393 2010-03-23 12 +394 val_394 2010-03-23 12 +394 val_394 2010-03-23 12 +395 val_395 2010-03-23 12 +395 val_395 2010-03-23 12 +395 val_395 2010-03-23 12 +395 val_395 2010-03-23 12 +396 val_396 2010-03-23 12 +396 val_396 2010-03-23 12 +396 val_396 2010-03-23 12 +396 val_396 2010-03-23 12 +396 val_396 2010-03-23 12 +396 val_396 2010-03-23 12 +397 val_397 2010-03-23 12 +397 val_397 2010-03-23 12 +397 val_397 2010-03-23 12 +397 val_397 2010-03-23 12 +399 val_399 2010-03-23 12 +399 val_399 2010-03-23 12 +399 val_399 2010-03-23 12 +399 val_399 2010-03-23 12 +4 val_4 2010-03-23 12 +4 val_4 2010-03-23 12 +400 val_400 2010-03-23 12 +400 val_400 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +401 val_401 2010-03-23 12 +402 val_402 2010-03-23 12 +402 val_402 2010-03-23 12 +403 val_403 2010-03-23 12 +403 val_403 2010-03-23 12 +403 val_403 2010-03-23 12 +403 val_403 2010-03-23 12 +403 val_403 2010-03-23 12 +403 val_403 2010-03-23 12 +404 val_404 2010-03-23 12 +404 val_404 2010-03-23 12 +404 val_404 2010-03-23 12 +404 val_404 2010-03-23 12 +406 val_406 2010-03-23 12 +406 val_406 2010-03-23 12 +406 val_406 2010-03-23 12 +406 val_406 2010-03-23 12 +406 val_406 2010-03-23 12 +406 val_406 2010-03-23 12 +406 val_406 2010-03-23 12 +406 val_406 2010-03-23 12 +407 val_407 2010-03-23 12 +407 val_407 2010-03-23 12 +409 val_409 2010-03-23 12 +409 val_409 2010-03-23 12 +409 val_409 2010-03-23 12 +409 val_409 2010-03-23 12 +409 val_409 2010-03-23 12 +409 val_409 2010-03-23 12 +41 val_41 2010-03-23 12 +41 val_41 2010-03-23 12 +411 val_411 2010-03-23 12 +411 val_411 2010-03-23 12 +413 val_413 2010-03-23 12 +413 val_413 2010-03-23 12 +413 val_413 2010-03-23 12 +413 val_413 2010-03-23 12 +414 val_414 2010-03-23 12 +414 val_414 2010-03-23 12 +414 val_414 2010-03-23 12 +414 val_414 2010-03-23 12 +417 val_417 2010-03-23 12 +417 val_417 2010-03-23 12 +417 val_417 2010-03-23 12 +417 val_417 2010-03-23 12 +417 val_417 2010-03-23 12 +417 val_417 2010-03-23 12 +418 val_418 2010-03-23 12 +418 val_418 2010-03-23 12 +419 val_419 2010-03-23 12 +419 val_419 2010-03-23 12 +42 val_42 2010-03-23 12 +42 val_42 2010-03-23 12 +42 val_42 2010-03-23 12 +42 val_42 2010-03-23 12 +421 val_421 2010-03-23 12 +421 val_421 2010-03-23 12 +424 val_424 2010-03-23 12 +424 val_424 2010-03-23 12 +424 val_424 2010-03-23 12 +424 val_424 2010-03-23 12 +427 val_427 2010-03-23 12 +427 val_427 2010-03-23 12 +429 val_429 2010-03-23 12 +429 val_429 2010-03-23 12 +429 val_429 2010-03-23 12 +429 val_429 2010-03-23 12 +43 val_43 2010-03-23 12 +43 val_43 2010-03-23 12 +430 val_430 2010-03-23 12 +430 val_430 2010-03-23 12 +430 val_430 2010-03-23 12 +430 val_430 2010-03-23 12 +430 val_430 2010-03-23 12 +430 val_430 2010-03-23 12 +431 val_431 2010-03-23 12 +431 val_431 2010-03-23 12 +431 val_431 2010-03-23 12 +431 val_431 2010-03-23 12 +431 val_431 2010-03-23 12 +431 val_431 2010-03-23 12 +432 val_432 2010-03-23 12 +432 val_432 2010-03-23 12 +435 val_435 2010-03-23 12 +435 val_435 2010-03-23 12 +436 val_436 2010-03-23 12 +436 val_436 2010-03-23 12 +437 val_437 2010-03-23 12 +437 val_437 2010-03-23 12 +438 val_438 2010-03-23 12 +438 val_438 2010-03-23 12 +438 val_438 2010-03-23 12 +438 val_438 2010-03-23 12 +438 val_438 2010-03-23 12 +438 val_438 2010-03-23 12 +439 val_439 2010-03-23 12 +439 val_439 2010-03-23 12 +439 val_439 2010-03-23 12 +439 val_439 2010-03-23 12 +44 val_44 2010-03-23 12 +44 val_44 2010-03-23 12 +443 val_443 2010-03-23 12 +443 val_443 2010-03-23 12 +444 val_444 2010-03-23 12 +444 val_444 2010-03-23 12 +446 val_446 2010-03-23 12 +446 val_446 2010-03-23 12 +448 val_448 2010-03-23 12 +448 val_448 2010-03-23 12 +449 val_449 2010-03-23 12 +449 val_449 2010-03-23 12 +452 val_452 2010-03-23 12 +452 val_452 2010-03-23 12 +453 val_453 2010-03-23 12 +453 val_453 2010-03-23 12 +454 val_454 2010-03-23 12 +454 val_454 2010-03-23 12 +454 val_454 2010-03-23 12 +454 val_454 2010-03-23 12 +454 val_454 2010-03-23 12 +454 val_454 2010-03-23 12 +455 val_455 2010-03-23 12 +455 val_455 2010-03-23 12 +457 val_457 2010-03-23 12 +457 val_457 2010-03-23 12 +458 val_458 2010-03-23 12 +458 val_458 2010-03-23 12 +458 val_458 2010-03-23 12 +458 val_458 2010-03-23 12 +459 val_459 2010-03-23 12 +459 val_459 2010-03-23 12 +459 val_459 2010-03-23 12 +459 val_459 2010-03-23 12 +460 val_460 2010-03-23 12 +460 val_460 2010-03-23 12 +462 val_462 2010-03-23 12 +462 val_462 2010-03-23 12 +462 val_462 2010-03-23 12 +462 val_462 2010-03-23 12 +463 val_463 2010-03-23 12 +463 val_463 2010-03-23 12 +463 val_463 2010-03-23 12 +463 val_463 2010-03-23 12 +466 val_466 2010-03-23 12 +466 val_466 2010-03-23 12 +466 val_466 2010-03-23 12 +466 val_466 2010-03-23 12 +466 val_466 2010-03-23 12 +466 val_466 2010-03-23 12 +467 val_467 2010-03-23 12 +467 val_467 2010-03-23 12 +468 val_468 2010-03-23 12 +468 val_468 2010-03-23 12 +468 val_468 2010-03-23 12 +468 val_468 2010-03-23 12 +468 val_468 2010-03-23 12 +468 val_468 2010-03-23 12 +468 val_468 2010-03-23 12 +468 val_468 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +469 val_469 2010-03-23 12 +47 val_47 2010-03-23 12 +47 val_47 2010-03-23 12 +470 val_470 2010-03-23 12 +470 val_470 2010-03-23 12 +472 val_472 2010-03-23 12 +472 val_472 2010-03-23 12 +475 val_475 2010-03-23 12 +475 val_475 2010-03-23 12 +477 val_477 2010-03-23 12 +477 val_477 2010-03-23 12 +478 val_478 2010-03-23 12 +478 val_478 2010-03-23 12 +478 val_478 2010-03-23 12 +478 val_478 2010-03-23 12 +479 val_479 2010-03-23 12 +479 val_479 2010-03-23 12 +480 val_480 2010-03-23 12 +480 val_480 2010-03-23 12 +480 val_480 2010-03-23 12 +480 val_480 2010-03-23 12 +480 val_480 2010-03-23 12 +480 val_480 2010-03-23 12 +481 val_481 2010-03-23 12 +481 val_481 2010-03-23 12 +482 val_482 2010-03-23 12 +482 val_482 2010-03-23 12 +483 val_483 2010-03-23 12 +483 val_483 2010-03-23 12 +484 val_484 2010-03-23 12 +484 val_484 2010-03-23 12 +485 val_485 2010-03-23 12 +485 val_485 2010-03-23 12 +487 val_487 2010-03-23 12 +487 val_487 2010-03-23 12 +489 val_489 2010-03-23 12 +489 val_489 2010-03-23 12 +489 val_489 2010-03-23 12 +489 val_489 2010-03-23 12 +489 val_489 2010-03-23 12 +489 val_489 2010-03-23 12 +489 val_489 2010-03-23 12 +489 val_489 2010-03-23 12 +490 val_490 2010-03-23 12 +490 val_490 2010-03-23 12 +491 val_491 2010-03-23 12 +491 val_491 2010-03-23 12 +492 val_492 2010-03-23 12 +492 val_492 2010-03-23 12 +492 val_492 2010-03-23 12 +492 val_492 2010-03-23 12 +493 val_493 2010-03-23 12 +493 val_493 2010-03-23 12 +494 val_494 2010-03-23 12 +494 val_494 2010-03-23 12 +495 val_495 2010-03-23 12 +495 val_495 2010-03-23 12 +496 val_496 2010-03-23 12 +496 val_496 2010-03-23 12 +497 val_497 2010-03-23 12 +497 val_497 2010-03-23 12 +498 val_498 2010-03-23 12 +498 val_498 2010-03-23 12 +498 val_498 2010-03-23 12 +498 val_498 2010-03-23 12 +498 val_498 2010-03-23 12 +498 val_498 2010-03-23 12 +5 val_5 2010-03-23 12 +5 val_5 2010-03-23 12 +5 val_5 2010-03-23 12 +5 val_5 2010-03-23 12 +5 val_5 2010-03-23 12 +5 val_5 2010-03-23 12 +51 val_51 2010-03-23 12 +51 val_51 2010-03-23 12 +51 val_51 2010-03-23 12 +51 val_51 2010-03-23 12 +53 val_53 2010-03-23 12 +53 val_53 2010-03-23 12 +54 val_54 2010-03-23 12 +54 val_54 2010-03-23 12 +57 val_57 2010-03-23 12 +57 val_57 2010-03-23 12 +58 val_58 2010-03-23 12 +58 val_58 2010-03-23 12 +58 val_58 2010-03-23 12 +58 val_58 2010-03-23 12 +64 val_64 2010-03-23 12 +64 val_64 2010-03-23 12 +65 val_65 2010-03-23 12 +65 val_65 2010-03-23 12 +66 val_66 2010-03-23 12 +66 val_66 2010-03-23 12 +67 val_67 2010-03-23 12 +67 val_67 2010-03-23 12 +67 val_67 2010-03-23 12 +67 val_67 2010-03-23 12 +69 val_69 2010-03-23 12 +69 val_69 2010-03-23 12 +70 val_70 2010-03-23 12 +70 val_70 2010-03-23 12 +70 val_70 2010-03-23 12 +70 val_70 2010-03-23 12 +70 val_70 2010-03-23 12 +70 val_70 2010-03-23 12 +72 val_72 2010-03-23 12 +72 val_72 2010-03-23 12 +72 val_72 2010-03-23 12 +72 val_72 2010-03-23 12 +74 val_74 2010-03-23 12 +74 val_74 2010-03-23 12 +76 val_76 2010-03-23 12 +76 val_76 2010-03-23 12 +76 val_76 2010-03-23 12 +76 val_76 2010-03-23 12 +77 val_77 2010-03-23 12 +77 val_77 2010-03-23 12 +78 val_78 2010-03-23 12 +78 val_78 2010-03-23 12 +8 val_8 2010-03-23 12 +8 val_8 2010-03-23 12 +80 val_80 2010-03-23 12 +80 val_80 2010-03-23 12 +82 val_82 2010-03-23 12 +82 val_82 2010-03-23 12 +83 val_83 2010-03-23 12 +83 val_83 2010-03-23 12 +83 val_83 2010-03-23 12 +83 val_83 2010-03-23 12 +84 val_84 2010-03-23 12 +84 val_84 2010-03-23 12 +84 val_84 2010-03-23 12 +84 val_84 2010-03-23 12 +85 val_85 2010-03-23 12 +85 val_85 2010-03-23 12 +86 val_86 2010-03-23 12 +86 val_86 2010-03-23 12 +87 val_87 2010-03-23 12 +87 val_87 2010-03-23 12 +9 val_9 2010-03-23 12 +9 val_9 2010-03-23 12 +90 val_90 2010-03-23 12 +90 val_90 2010-03-23 12 +90 val_90 2010-03-23 12 +90 val_90 2010-03-23 12 +90 val_90 2010-03-23 12 +90 val_90 2010-03-23 12 +92 val_92 2010-03-23 12 +92 val_92 2010-03-23 12 +95 val_95 2010-03-23 12 +95 val_95 2010-03-23 12 +95 val_95 2010-03-23 12 +95 val_95 2010-03-23 12 +96 val_96 2010-03-23 12 +96 val_96 2010-03-23 12 +97 val_97 2010-03-23 12 +97 val_97 2010-03-23 12 +97 val_97 2010-03-23 12 +97 val_97 2010-03-23 12 +98 val_98 2010-03-23 12 +98 val_98 2010-03-23 12 +98 val_98 2010-03-23 12 +98 val_98 2010-03-23 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part3-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..8c43153cf66f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part3-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-1-ce25d1f46dd5e5d9147e39566581514f b/sql/hive/src/test/resources/golden/load_dyn_part3-1-ce25d1f46dd5e5d9147e39566581514f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-2-dbbba335c008a61a13c1472b34470397 b/sql/hive/src/test/resources/golden/load_dyn_part3-2-dbbba335c008a61a13c1472b34470397 new file mode 100644 index 0000000000000..d35fbec80c19e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part3-2-dbbba335c008a61a13c1472b34470397 @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part3, dbName:default, owner:marmbrus, createTime:1390899609, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part3, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{p3=v3, transient_lastDdlTime=1390899609}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part3-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part3-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-4-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part3-4-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part3-4-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-5-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part3-5-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part3-5-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-6-17dee8c004f1e7db4542fbf4241edce3 b/sql/hive/src/test/resources/golden/load_dyn_part3-6-17dee8c004f1e7db4542fbf4241edce3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-7-867958e24e25ad098c5001bbc7102762 b/sql/hive/src/test/resources/golden/load_dyn_part3-7-867958e24e25ad098c5001bbc7102762 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part3-8-c3b6f0cc860b84851dd60c53b36a6437 b/sql/hive/src/test/resources/golden/load_dyn_part3-8-c3b6f0cc860b84851dd60c53b36a6437 new file mode 100644 index 0000000000000..2857cdf0aba86 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part3-8-c3b6f0cc860b84851dd60c53b36a6437 @@ -0,0 +1,2000 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 +238 val_238 2008-04-09 11 +86 val_86 2008-04-09 11 +311 val_311 2008-04-09 11 +27 val_27 2008-04-09 11 +165 val_165 2008-04-09 11 +409 val_409 2008-04-09 11 +255 val_255 2008-04-09 11 +278 val_278 2008-04-09 11 +98 val_98 2008-04-09 11 +484 val_484 2008-04-09 11 +265 val_265 2008-04-09 11 +193 val_193 2008-04-09 11 +401 val_401 2008-04-09 11 +150 val_150 2008-04-09 11 +273 val_273 2008-04-09 11 +224 val_224 2008-04-09 11 +369 val_369 2008-04-09 11 +66 val_66 2008-04-09 11 +128 val_128 2008-04-09 11 +213 val_213 2008-04-09 11 +146 val_146 2008-04-09 11 +406 val_406 2008-04-09 11 +429 val_429 2008-04-09 11 +374 val_374 2008-04-09 11 +152 val_152 2008-04-09 11 +469 val_469 2008-04-09 11 +145 val_145 2008-04-09 11 +495 val_495 2008-04-09 11 +37 val_37 2008-04-09 11 +327 val_327 2008-04-09 11 +281 val_281 2008-04-09 11 +277 val_277 2008-04-09 11 +209 val_209 2008-04-09 11 +15 val_15 2008-04-09 11 +82 val_82 2008-04-09 11 +403 val_403 2008-04-09 11 +166 val_166 2008-04-09 11 +417 val_417 2008-04-09 11 +430 val_430 2008-04-09 11 +252 val_252 2008-04-09 11 +292 val_292 2008-04-09 11 +219 val_219 2008-04-09 11 +287 val_287 2008-04-09 11 +153 val_153 2008-04-09 11 +193 val_193 2008-04-09 11 +338 val_338 2008-04-09 11 +446 val_446 2008-04-09 11 +459 val_459 2008-04-09 11 +394 val_394 2008-04-09 11 +237 val_237 2008-04-09 11 +482 val_482 2008-04-09 11 +174 val_174 2008-04-09 11 +413 val_413 2008-04-09 11 +494 val_494 2008-04-09 11 +207 val_207 2008-04-09 11 +199 val_199 2008-04-09 11 +466 val_466 2008-04-09 11 +208 val_208 2008-04-09 11 +174 val_174 2008-04-09 11 +399 val_399 2008-04-09 11 +396 val_396 2008-04-09 11 +247 val_247 2008-04-09 11 +417 val_417 2008-04-09 11 +489 val_489 2008-04-09 11 +162 val_162 2008-04-09 11 +377 val_377 2008-04-09 11 +397 val_397 2008-04-09 11 +309 val_309 2008-04-09 11 +365 val_365 2008-04-09 11 +266 val_266 2008-04-09 11 +439 val_439 2008-04-09 11 +342 val_342 2008-04-09 11 +367 val_367 2008-04-09 11 +325 val_325 2008-04-09 11 +167 val_167 2008-04-09 11 +195 val_195 2008-04-09 11 +475 val_475 2008-04-09 11 +17 val_17 2008-04-09 11 +113 val_113 2008-04-09 11 +155 val_155 2008-04-09 11 +203 val_203 2008-04-09 11 +339 val_339 2008-04-09 11 +0 val_0 2008-04-09 11 +455 val_455 2008-04-09 11 +128 val_128 2008-04-09 11 +311 val_311 2008-04-09 11 +316 val_316 2008-04-09 11 +57 val_57 2008-04-09 11 +302 val_302 2008-04-09 11 +205 val_205 2008-04-09 11 +149 val_149 2008-04-09 11 +438 val_438 2008-04-09 11 +345 val_345 2008-04-09 11 +129 val_129 2008-04-09 11 +170 val_170 2008-04-09 11 +20 val_20 2008-04-09 11 +489 val_489 2008-04-09 11 +157 val_157 2008-04-09 11 +378 val_378 2008-04-09 11 +221 val_221 2008-04-09 11 +92 val_92 2008-04-09 11 +111 val_111 2008-04-09 11 +47 val_47 2008-04-09 11 +72 val_72 2008-04-09 11 +4 val_4 2008-04-09 11 +280 val_280 2008-04-09 11 +35 val_35 2008-04-09 11 +427 val_427 2008-04-09 11 +277 val_277 2008-04-09 11 +208 val_208 2008-04-09 11 +356 val_356 2008-04-09 11 +399 val_399 2008-04-09 11 +169 val_169 2008-04-09 11 +382 val_382 2008-04-09 11 +498 val_498 2008-04-09 11 +125 val_125 2008-04-09 11 +386 val_386 2008-04-09 11 +437 val_437 2008-04-09 11 +469 val_469 2008-04-09 11 +192 val_192 2008-04-09 11 +286 val_286 2008-04-09 11 +187 val_187 2008-04-09 11 +176 val_176 2008-04-09 11 +54 val_54 2008-04-09 11 +459 val_459 2008-04-09 11 +51 val_51 2008-04-09 11 +138 val_138 2008-04-09 11 +103 val_103 2008-04-09 11 +239 val_239 2008-04-09 11 +213 val_213 2008-04-09 11 +216 val_216 2008-04-09 11 +430 val_430 2008-04-09 11 +278 val_278 2008-04-09 11 +176 val_176 2008-04-09 11 +289 val_289 2008-04-09 11 +221 val_221 2008-04-09 11 +65 val_65 2008-04-09 11 +318 val_318 2008-04-09 11 +332 val_332 2008-04-09 11 +311 val_311 2008-04-09 11 +275 val_275 2008-04-09 11 +137 val_137 2008-04-09 11 +241 val_241 2008-04-09 11 +83 val_83 2008-04-09 11 +333 val_333 2008-04-09 11 +180 val_180 2008-04-09 11 +284 val_284 2008-04-09 11 +12 val_12 2008-04-09 11 +230 val_230 2008-04-09 11 +181 val_181 2008-04-09 11 +67 val_67 2008-04-09 11 +260 val_260 2008-04-09 11 +404 val_404 2008-04-09 11 +384 val_384 2008-04-09 11 +489 val_489 2008-04-09 11 +353 val_353 2008-04-09 11 +373 val_373 2008-04-09 11 +272 val_272 2008-04-09 11 +138 val_138 2008-04-09 11 +217 val_217 2008-04-09 11 +84 val_84 2008-04-09 11 +348 val_348 2008-04-09 11 +466 val_466 2008-04-09 11 +58 val_58 2008-04-09 11 +8 val_8 2008-04-09 11 +411 val_411 2008-04-09 11 +230 val_230 2008-04-09 11 +208 val_208 2008-04-09 11 +348 val_348 2008-04-09 11 +24 val_24 2008-04-09 11 +463 val_463 2008-04-09 11 +431 val_431 2008-04-09 11 +179 val_179 2008-04-09 11 +172 val_172 2008-04-09 11 +42 val_42 2008-04-09 11 +129 val_129 2008-04-09 11 +158 val_158 2008-04-09 11 +119 val_119 2008-04-09 11 +496 val_496 2008-04-09 11 +0 val_0 2008-04-09 11 +322 val_322 2008-04-09 11 +197 val_197 2008-04-09 11 +468 val_468 2008-04-09 11 +393 val_393 2008-04-09 11 +454 val_454 2008-04-09 11 +100 val_100 2008-04-09 11 +298 val_298 2008-04-09 11 +199 val_199 2008-04-09 11 +191 val_191 2008-04-09 11 +418 val_418 2008-04-09 11 +96 val_96 2008-04-09 11 +26 val_26 2008-04-09 11 +165 val_165 2008-04-09 11 +327 val_327 2008-04-09 11 +230 val_230 2008-04-09 11 +205 val_205 2008-04-09 11 +120 val_120 2008-04-09 11 +131 val_131 2008-04-09 11 +51 val_51 2008-04-09 11 +404 val_404 2008-04-09 11 +43 val_43 2008-04-09 11 +436 val_436 2008-04-09 11 +156 val_156 2008-04-09 11 +469 val_469 2008-04-09 11 +468 val_468 2008-04-09 11 +308 val_308 2008-04-09 11 +95 val_95 2008-04-09 11 +196 val_196 2008-04-09 11 +288 val_288 2008-04-09 11 +481 val_481 2008-04-09 11 +457 val_457 2008-04-09 11 +98 val_98 2008-04-09 11 +282 val_282 2008-04-09 11 +197 val_197 2008-04-09 11 +187 val_187 2008-04-09 11 +318 val_318 2008-04-09 11 +318 val_318 2008-04-09 11 +409 val_409 2008-04-09 11 +470 val_470 2008-04-09 11 +137 val_137 2008-04-09 11 +369 val_369 2008-04-09 11 +316 val_316 2008-04-09 11 +169 val_169 2008-04-09 11 +413 val_413 2008-04-09 11 +85 val_85 2008-04-09 11 +77 val_77 2008-04-09 11 +0 val_0 2008-04-09 11 +490 val_490 2008-04-09 11 +87 val_87 2008-04-09 11 +364 val_364 2008-04-09 11 +179 val_179 2008-04-09 11 +118 val_118 2008-04-09 11 +134 val_134 2008-04-09 11 +395 val_395 2008-04-09 11 +282 val_282 2008-04-09 11 +138 val_138 2008-04-09 11 +238 val_238 2008-04-09 11 +419 val_419 2008-04-09 11 +15 val_15 2008-04-09 11 +118 val_118 2008-04-09 11 +72 val_72 2008-04-09 11 +90 val_90 2008-04-09 11 +307 val_307 2008-04-09 11 +19 val_19 2008-04-09 11 +435 val_435 2008-04-09 11 +10 val_10 2008-04-09 11 +277 val_277 2008-04-09 11 +273 val_273 2008-04-09 11 +306 val_306 2008-04-09 11 +224 val_224 2008-04-09 11 +309 val_309 2008-04-09 11 +389 val_389 2008-04-09 11 +327 val_327 2008-04-09 11 +242 val_242 2008-04-09 11 +369 val_369 2008-04-09 11 +392 val_392 2008-04-09 11 +272 val_272 2008-04-09 11 +331 val_331 2008-04-09 11 +401 val_401 2008-04-09 11 +242 val_242 2008-04-09 11 +452 val_452 2008-04-09 11 +177 val_177 2008-04-09 11 +226 val_226 2008-04-09 11 +5 val_5 2008-04-09 11 +497 val_497 2008-04-09 11 +402 val_402 2008-04-09 11 +396 val_396 2008-04-09 11 +317 val_317 2008-04-09 11 +395 val_395 2008-04-09 11 +58 val_58 2008-04-09 11 +35 val_35 2008-04-09 11 +336 val_336 2008-04-09 11 +95 val_95 2008-04-09 11 +11 val_11 2008-04-09 11 +168 val_168 2008-04-09 11 +34 val_34 2008-04-09 11 +229 val_229 2008-04-09 11 +233 val_233 2008-04-09 11 +143 val_143 2008-04-09 11 +472 val_472 2008-04-09 11 +322 val_322 2008-04-09 11 +498 val_498 2008-04-09 11 +160 val_160 2008-04-09 11 +195 val_195 2008-04-09 11 +42 val_42 2008-04-09 11 +321 val_321 2008-04-09 11 +430 val_430 2008-04-09 11 +119 val_119 2008-04-09 11 +489 val_489 2008-04-09 11 +458 val_458 2008-04-09 11 +78 val_78 2008-04-09 11 +76 val_76 2008-04-09 11 +41 val_41 2008-04-09 11 +223 val_223 2008-04-09 11 +492 val_492 2008-04-09 11 +149 val_149 2008-04-09 11 +449 val_449 2008-04-09 11 +218 val_218 2008-04-09 11 +228 val_228 2008-04-09 11 +138 val_138 2008-04-09 11 +453 val_453 2008-04-09 11 +30 val_30 2008-04-09 11 +209 val_209 2008-04-09 11 +64 val_64 2008-04-09 11 +468 val_468 2008-04-09 11 +76 val_76 2008-04-09 11 +74 val_74 2008-04-09 11 +342 val_342 2008-04-09 11 +69 val_69 2008-04-09 11 +230 val_230 2008-04-09 11 +33 val_33 2008-04-09 11 +368 val_368 2008-04-09 11 +103 val_103 2008-04-09 11 +296 val_296 2008-04-09 11 +113 val_113 2008-04-09 11 +216 val_216 2008-04-09 11 +367 val_367 2008-04-09 11 +344 val_344 2008-04-09 11 +167 val_167 2008-04-09 11 +274 val_274 2008-04-09 11 +219 val_219 2008-04-09 11 +239 val_239 2008-04-09 11 +485 val_485 2008-04-09 11 +116 val_116 2008-04-09 11 +223 val_223 2008-04-09 11 +256 val_256 2008-04-09 11 +263 val_263 2008-04-09 11 +70 val_70 2008-04-09 11 +487 val_487 2008-04-09 11 +480 val_480 2008-04-09 11 +401 val_401 2008-04-09 11 +288 val_288 2008-04-09 11 +191 val_191 2008-04-09 11 +5 val_5 2008-04-09 11 +244 val_244 2008-04-09 11 +438 val_438 2008-04-09 11 +128 val_128 2008-04-09 11 +467 val_467 2008-04-09 11 +432 val_432 2008-04-09 11 +202 val_202 2008-04-09 11 +316 val_316 2008-04-09 11 +229 val_229 2008-04-09 11 +469 val_469 2008-04-09 11 +463 val_463 2008-04-09 11 +280 val_280 2008-04-09 11 +2 val_2 2008-04-09 11 +35 val_35 2008-04-09 11 +283 val_283 2008-04-09 11 +331 val_331 2008-04-09 11 +235 val_235 2008-04-09 11 +80 val_80 2008-04-09 11 +44 val_44 2008-04-09 11 +193 val_193 2008-04-09 11 +321 val_321 2008-04-09 11 +335 val_335 2008-04-09 11 +104 val_104 2008-04-09 11 +466 val_466 2008-04-09 11 +366 val_366 2008-04-09 11 +175 val_175 2008-04-09 11 +403 val_403 2008-04-09 11 +483 val_483 2008-04-09 11 +53 val_53 2008-04-09 11 +105 val_105 2008-04-09 11 +257 val_257 2008-04-09 11 +406 val_406 2008-04-09 11 +409 val_409 2008-04-09 11 +190 val_190 2008-04-09 11 +406 val_406 2008-04-09 11 +401 val_401 2008-04-09 11 +114 val_114 2008-04-09 11 +258 val_258 2008-04-09 11 +90 val_90 2008-04-09 11 +203 val_203 2008-04-09 11 +262 val_262 2008-04-09 11 +348 val_348 2008-04-09 11 +424 val_424 2008-04-09 11 +12 val_12 2008-04-09 11 +396 val_396 2008-04-09 11 +201 val_201 2008-04-09 11 +217 val_217 2008-04-09 11 +164 val_164 2008-04-09 11 +431 val_431 2008-04-09 11 +454 val_454 2008-04-09 11 +478 val_478 2008-04-09 11 +298 val_298 2008-04-09 11 +125 val_125 2008-04-09 11 +431 val_431 2008-04-09 11 +164 val_164 2008-04-09 11 +424 val_424 2008-04-09 11 +187 val_187 2008-04-09 11 +382 val_382 2008-04-09 11 +5 val_5 2008-04-09 11 +70 val_70 2008-04-09 11 +397 val_397 2008-04-09 11 +480 val_480 2008-04-09 11 +291 val_291 2008-04-09 11 +24 val_24 2008-04-09 11 +351 val_351 2008-04-09 11 +255 val_255 2008-04-09 11 +104 val_104 2008-04-09 11 +70 val_70 2008-04-09 11 +163 val_163 2008-04-09 11 +438 val_438 2008-04-09 11 +119 val_119 2008-04-09 11 +414 val_414 2008-04-09 11 +200 val_200 2008-04-09 11 +491 val_491 2008-04-09 11 +237 val_237 2008-04-09 11 +439 val_439 2008-04-09 11 +360 val_360 2008-04-09 11 +248 val_248 2008-04-09 11 +479 val_479 2008-04-09 11 +305 val_305 2008-04-09 11 +417 val_417 2008-04-09 11 +199 val_199 2008-04-09 11 +444 val_444 2008-04-09 11 +120 val_120 2008-04-09 11 +429 val_429 2008-04-09 11 +169 val_169 2008-04-09 11 +443 val_443 2008-04-09 11 +323 val_323 2008-04-09 11 +325 val_325 2008-04-09 11 +277 val_277 2008-04-09 11 +230 val_230 2008-04-09 11 +478 val_478 2008-04-09 11 +178 val_178 2008-04-09 11 +468 val_468 2008-04-09 11 +310 val_310 2008-04-09 11 +317 val_317 2008-04-09 11 +333 val_333 2008-04-09 11 +493 val_493 2008-04-09 11 +460 val_460 2008-04-09 11 +207 val_207 2008-04-09 11 +249 val_249 2008-04-09 11 +265 val_265 2008-04-09 11 +480 val_480 2008-04-09 11 +83 val_83 2008-04-09 11 +136 val_136 2008-04-09 11 +353 val_353 2008-04-09 11 +172 val_172 2008-04-09 11 +214 val_214 2008-04-09 11 +462 val_462 2008-04-09 11 +233 val_233 2008-04-09 11 +406 val_406 2008-04-09 11 +133 val_133 2008-04-09 11 +175 val_175 2008-04-09 11 +189 val_189 2008-04-09 11 +454 val_454 2008-04-09 11 +375 val_375 2008-04-09 11 +401 val_401 2008-04-09 11 +421 val_421 2008-04-09 11 +407 val_407 2008-04-09 11 +384 val_384 2008-04-09 11 +256 val_256 2008-04-09 11 +26 val_26 2008-04-09 11 +134 val_134 2008-04-09 11 +67 val_67 2008-04-09 11 +384 val_384 2008-04-09 11 +379 val_379 2008-04-09 11 +18 val_18 2008-04-09 11 +462 val_462 2008-04-09 11 +492 val_492 2008-04-09 11 +100 val_100 2008-04-09 11 +298 val_298 2008-04-09 11 +9 val_9 2008-04-09 11 +341 val_341 2008-04-09 11 +498 val_498 2008-04-09 11 +146 val_146 2008-04-09 11 +458 val_458 2008-04-09 11 +362 val_362 2008-04-09 11 +186 val_186 2008-04-09 11 +285 val_285 2008-04-09 11 +348 val_348 2008-04-09 11 +167 val_167 2008-04-09 11 +18 val_18 2008-04-09 11 +273 val_273 2008-04-09 11 +183 val_183 2008-04-09 11 +281 val_281 2008-04-09 11 +344 val_344 2008-04-09 11 +97 val_97 2008-04-09 11 +469 val_469 2008-04-09 11 +315 val_315 2008-04-09 11 +84 val_84 2008-04-09 11 +28 val_28 2008-04-09 11 +37 val_37 2008-04-09 11 +448 val_448 2008-04-09 11 +152 val_152 2008-04-09 11 +348 val_348 2008-04-09 11 +307 val_307 2008-04-09 11 +194 val_194 2008-04-09 11 +414 val_414 2008-04-09 11 +477 val_477 2008-04-09 11 +222 val_222 2008-04-09 11 +126 val_126 2008-04-09 11 +90 val_90 2008-04-09 11 +169 val_169 2008-04-09 11 +403 val_403 2008-04-09 11 +400 val_400 2008-04-09 11 +200 val_200 2008-04-09 11 +97 val_97 2008-04-09 11 +238 val_238 2008-04-09 12 +86 val_86 2008-04-09 12 +311 val_311 2008-04-09 12 +27 val_27 2008-04-09 12 +165 val_165 2008-04-09 12 +409 val_409 2008-04-09 12 +255 val_255 2008-04-09 12 +278 val_278 2008-04-09 12 +98 val_98 2008-04-09 12 +484 val_484 2008-04-09 12 +265 val_265 2008-04-09 12 +193 val_193 2008-04-09 12 +401 val_401 2008-04-09 12 +150 val_150 2008-04-09 12 +273 val_273 2008-04-09 12 +224 val_224 2008-04-09 12 +369 val_369 2008-04-09 12 +66 val_66 2008-04-09 12 +128 val_128 2008-04-09 12 +213 val_213 2008-04-09 12 +146 val_146 2008-04-09 12 +406 val_406 2008-04-09 12 +429 val_429 2008-04-09 12 +374 val_374 2008-04-09 12 +152 val_152 2008-04-09 12 +469 val_469 2008-04-09 12 +145 val_145 2008-04-09 12 +495 val_495 2008-04-09 12 +37 val_37 2008-04-09 12 +327 val_327 2008-04-09 12 +281 val_281 2008-04-09 12 +277 val_277 2008-04-09 12 +209 val_209 2008-04-09 12 +15 val_15 2008-04-09 12 +82 val_82 2008-04-09 12 +403 val_403 2008-04-09 12 +166 val_166 2008-04-09 12 +417 val_417 2008-04-09 12 +430 val_430 2008-04-09 12 +252 val_252 2008-04-09 12 +292 val_292 2008-04-09 12 +219 val_219 2008-04-09 12 +287 val_287 2008-04-09 12 +153 val_153 2008-04-09 12 +193 val_193 2008-04-09 12 +338 val_338 2008-04-09 12 +446 val_446 2008-04-09 12 +459 val_459 2008-04-09 12 +394 val_394 2008-04-09 12 +237 val_237 2008-04-09 12 +482 val_482 2008-04-09 12 +174 val_174 2008-04-09 12 +413 val_413 2008-04-09 12 +494 val_494 2008-04-09 12 +207 val_207 2008-04-09 12 +199 val_199 2008-04-09 12 +466 val_466 2008-04-09 12 +208 val_208 2008-04-09 12 +174 val_174 2008-04-09 12 +399 val_399 2008-04-09 12 +396 val_396 2008-04-09 12 +247 val_247 2008-04-09 12 +417 val_417 2008-04-09 12 +489 val_489 2008-04-09 12 +162 val_162 2008-04-09 12 +377 val_377 2008-04-09 12 +397 val_397 2008-04-09 12 +309 val_309 2008-04-09 12 +365 val_365 2008-04-09 12 +266 val_266 2008-04-09 12 +439 val_439 2008-04-09 12 +342 val_342 2008-04-09 12 +367 val_367 2008-04-09 12 +325 val_325 2008-04-09 12 +167 val_167 2008-04-09 12 +195 val_195 2008-04-09 12 +475 val_475 2008-04-09 12 +17 val_17 2008-04-09 12 +113 val_113 2008-04-09 12 +155 val_155 2008-04-09 12 +203 val_203 2008-04-09 12 +339 val_339 2008-04-09 12 +0 val_0 2008-04-09 12 +455 val_455 2008-04-09 12 +128 val_128 2008-04-09 12 +311 val_311 2008-04-09 12 +316 val_316 2008-04-09 12 +57 val_57 2008-04-09 12 +302 val_302 2008-04-09 12 +205 val_205 2008-04-09 12 +149 val_149 2008-04-09 12 +438 val_438 2008-04-09 12 +345 val_345 2008-04-09 12 +129 val_129 2008-04-09 12 +170 val_170 2008-04-09 12 +20 val_20 2008-04-09 12 +489 val_489 2008-04-09 12 +157 val_157 2008-04-09 12 +378 val_378 2008-04-09 12 +221 val_221 2008-04-09 12 +92 val_92 2008-04-09 12 +111 val_111 2008-04-09 12 +47 val_47 2008-04-09 12 +72 val_72 2008-04-09 12 +4 val_4 2008-04-09 12 +280 val_280 2008-04-09 12 +35 val_35 2008-04-09 12 +427 val_427 2008-04-09 12 +277 val_277 2008-04-09 12 +208 val_208 2008-04-09 12 +356 val_356 2008-04-09 12 +399 val_399 2008-04-09 12 +169 val_169 2008-04-09 12 +382 val_382 2008-04-09 12 +498 val_498 2008-04-09 12 +125 val_125 2008-04-09 12 +386 val_386 2008-04-09 12 +437 val_437 2008-04-09 12 +469 val_469 2008-04-09 12 +192 val_192 2008-04-09 12 +286 val_286 2008-04-09 12 +187 val_187 2008-04-09 12 +176 val_176 2008-04-09 12 +54 val_54 2008-04-09 12 +459 val_459 2008-04-09 12 +51 val_51 2008-04-09 12 +138 val_138 2008-04-09 12 +103 val_103 2008-04-09 12 +239 val_239 2008-04-09 12 +213 val_213 2008-04-09 12 +216 val_216 2008-04-09 12 +430 val_430 2008-04-09 12 +278 val_278 2008-04-09 12 +176 val_176 2008-04-09 12 +289 val_289 2008-04-09 12 +221 val_221 2008-04-09 12 +65 val_65 2008-04-09 12 +318 val_318 2008-04-09 12 +332 val_332 2008-04-09 12 +311 val_311 2008-04-09 12 +275 val_275 2008-04-09 12 +137 val_137 2008-04-09 12 +241 val_241 2008-04-09 12 +83 val_83 2008-04-09 12 +333 val_333 2008-04-09 12 +180 val_180 2008-04-09 12 +284 val_284 2008-04-09 12 +12 val_12 2008-04-09 12 +230 val_230 2008-04-09 12 +181 val_181 2008-04-09 12 +67 val_67 2008-04-09 12 +260 val_260 2008-04-09 12 +404 val_404 2008-04-09 12 +384 val_384 2008-04-09 12 +489 val_489 2008-04-09 12 +353 val_353 2008-04-09 12 +373 val_373 2008-04-09 12 +272 val_272 2008-04-09 12 +138 val_138 2008-04-09 12 +217 val_217 2008-04-09 12 +84 val_84 2008-04-09 12 +348 val_348 2008-04-09 12 +466 val_466 2008-04-09 12 +58 val_58 2008-04-09 12 +8 val_8 2008-04-09 12 +411 val_411 2008-04-09 12 +230 val_230 2008-04-09 12 +208 val_208 2008-04-09 12 +348 val_348 2008-04-09 12 +24 val_24 2008-04-09 12 +463 val_463 2008-04-09 12 +431 val_431 2008-04-09 12 +179 val_179 2008-04-09 12 +172 val_172 2008-04-09 12 +42 val_42 2008-04-09 12 +129 val_129 2008-04-09 12 +158 val_158 2008-04-09 12 +119 val_119 2008-04-09 12 +496 val_496 2008-04-09 12 +0 val_0 2008-04-09 12 +322 val_322 2008-04-09 12 +197 val_197 2008-04-09 12 +468 val_468 2008-04-09 12 +393 val_393 2008-04-09 12 +454 val_454 2008-04-09 12 +100 val_100 2008-04-09 12 +298 val_298 2008-04-09 12 +199 val_199 2008-04-09 12 +191 val_191 2008-04-09 12 +418 val_418 2008-04-09 12 +96 val_96 2008-04-09 12 +26 val_26 2008-04-09 12 +165 val_165 2008-04-09 12 +327 val_327 2008-04-09 12 +230 val_230 2008-04-09 12 +205 val_205 2008-04-09 12 +120 val_120 2008-04-09 12 +131 val_131 2008-04-09 12 +51 val_51 2008-04-09 12 +404 val_404 2008-04-09 12 +43 val_43 2008-04-09 12 +436 val_436 2008-04-09 12 +156 val_156 2008-04-09 12 +469 val_469 2008-04-09 12 +468 val_468 2008-04-09 12 +308 val_308 2008-04-09 12 +95 val_95 2008-04-09 12 +196 val_196 2008-04-09 12 +288 val_288 2008-04-09 12 +481 val_481 2008-04-09 12 +457 val_457 2008-04-09 12 +98 val_98 2008-04-09 12 +282 val_282 2008-04-09 12 +197 val_197 2008-04-09 12 +187 val_187 2008-04-09 12 +318 val_318 2008-04-09 12 +318 val_318 2008-04-09 12 +409 val_409 2008-04-09 12 +470 val_470 2008-04-09 12 +137 val_137 2008-04-09 12 +369 val_369 2008-04-09 12 +316 val_316 2008-04-09 12 +169 val_169 2008-04-09 12 +413 val_413 2008-04-09 12 +85 val_85 2008-04-09 12 +77 val_77 2008-04-09 12 +0 val_0 2008-04-09 12 +490 val_490 2008-04-09 12 +87 val_87 2008-04-09 12 +364 val_364 2008-04-09 12 +179 val_179 2008-04-09 12 +118 val_118 2008-04-09 12 +134 val_134 2008-04-09 12 +395 val_395 2008-04-09 12 +282 val_282 2008-04-09 12 +138 val_138 2008-04-09 12 +238 val_238 2008-04-09 12 +419 val_419 2008-04-09 12 +15 val_15 2008-04-09 12 +118 val_118 2008-04-09 12 +72 val_72 2008-04-09 12 +90 val_90 2008-04-09 12 +307 val_307 2008-04-09 12 +19 val_19 2008-04-09 12 +435 val_435 2008-04-09 12 +10 val_10 2008-04-09 12 +277 val_277 2008-04-09 12 +273 val_273 2008-04-09 12 +306 val_306 2008-04-09 12 +224 val_224 2008-04-09 12 +309 val_309 2008-04-09 12 +389 val_389 2008-04-09 12 +327 val_327 2008-04-09 12 +242 val_242 2008-04-09 12 +369 val_369 2008-04-09 12 +392 val_392 2008-04-09 12 +272 val_272 2008-04-09 12 +331 val_331 2008-04-09 12 +401 val_401 2008-04-09 12 +242 val_242 2008-04-09 12 +452 val_452 2008-04-09 12 +177 val_177 2008-04-09 12 +226 val_226 2008-04-09 12 +5 val_5 2008-04-09 12 +497 val_497 2008-04-09 12 +402 val_402 2008-04-09 12 +396 val_396 2008-04-09 12 +317 val_317 2008-04-09 12 +395 val_395 2008-04-09 12 +58 val_58 2008-04-09 12 +35 val_35 2008-04-09 12 +336 val_336 2008-04-09 12 +95 val_95 2008-04-09 12 +11 val_11 2008-04-09 12 +168 val_168 2008-04-09 12 +34 val_34 2008-04-09 12 +229 val_229 2008-04-09 12 +233 val_233 2008-04-09 12 +143 val_143 2008-04-09 12 +472 val_472 2008-04-09 12 +322 val_322 2008-04-09 12 +498 val_498 2008-04-09 12 +160 val_160 2008-04-09 12 +195 val_195 2008-04-09 12 +42 val_42 2008-04-09 12 +321 val_321 2008-04-09 12 +430 val_430 2008-04-09 12 +119 val_119 2008-04-09 12 +489 val_489 2008-04-09 12 +458 val_458 2008-04-09 12 +78 val_78 2008-04-09 12 +76 val_76 2008-04-09 12 +41 val_41 2008-04-09 12 +223 val_223 2008-04-09 12 +492 val_492 2008-04-09 12 +149 val_149 2008-04-09 12 +449 val_449 2008-04-09 12 +218 val_218 2008-04-09 12 +228 val_228 2008-04-09 12 +138 val_138 2008-04-09 12 +453 val_453 2008-04-09 12 +30 val_30 2008-04-09 12 +209 val_209 2008-04-09 12 +64 val_64 2008-04-09 12 +468 val_468 2008-04-09 12 +76 val_76 2008-04-09 12 +74 val_74 2008-04-09 12 +342 val_342 2008-04-09 12 +69 val_69 2008-04-09 12 +230 val_230 2008-04-09 12 +33 val_33 2008-04-09 12 +368 val_368 2008-04-09 12 +103 val_103 2008-04-09 12 +296 val_296 2008-04-09 12 +113 val_113 2008-04-09 12 +216 val_216 2008-04-09 12 +367 val_367 2008-04-09 12 +344 val_344 2008-04-09 12 +167 val_167 2008-04-09 12 +274 val_274 2008-04-09 12 +219 val_219 2008-04-09 12 +239 val_239 2008-04-09 12 +485 val_485 2008-04-09 12 +116 val_116 2008-04-09 12 +223 val_223 2008-04-09 12 +256 val_256 2008-04-09 12 +263 val_263 2008-04-09 12 +70 val_70 2008-04-09 12 +487 val_487 2008-04-09 12 +480 val_480 2008-04-09 12 +401 val_401 2008-04-09 12 +288 val_288 2008-04-09 12 +191 val_191 2008-04-09 12 +5 val_5 2008-04-09 12 +244 val_244 2008-04-09 12 +438 val_438 2008-04-09 12 +128 val_128 2008-04-09 12 +467 val_467 2008-04-09 12 +432 val_432 2008-04-09 12 +202 val_202 2008-04-09 12 +316 val_316 2008-04-09 12 +229 val_229 2008-04-09 12 +469 val_469 2008-04-09 12 +463 val_463 2008-04-09 12 +280 val_280 2008-04-09 12 +2 val_2 2008-04-09 12 +35 val_35 2008-04-09 12 +283 val_283 2008-04-09 12 +331 val_331 2008-04-09 12 +235 val_235 2008-04-09 12 +80 val_80 2008-04-09 12 +44 val_44 2008-04-09 12 +193 val_193 2008-04-09 12 +321 val_321 2008-04-09 12 +335 val_335 2008-04-09 12 +104 val_104 2008-04-09 12 +466 val_466 2008-04-09 12 +366 val_366 2008-04-09 12 +175 val_175 2008-04-09 12 +403 val_403 2008-04-09 12 +483 val_483 2008-04-09 12 +53 val_53 2008-04-09 12 +105 val_105 2008-04-09 12 +257 val_257 2008-04-09 12 +406 val_406 2008-04-09 12 +409 val_409 2008-04-09 12 +190 val_190 2008-04-09 12 +406 val_406 2008-04-09 12 +401 val_401 2008-04-09 12 +114 val_114 2008-04-09 12 +258 val_258 2008-04-09 12 +90 val_90 2008-04-09 12 +203 val_203 2008-04-09 12 +262 val_262 2008-04-09 12 +348 val_348 2008-04-09 12 +424 val_424 2008-04-09 12 +12 val_12 2008-04-09 12 +396 val_396 2008-04-09 12 +201 val_201 2008-04-09 12 +217 val_217 2008-04-09 12 +164 val_164 2008-04-09 12 +431 val_431 2008-04-09 12 +454 val_454 2008-04-09 12 +478 val_478 2008-04-09 12 +298 val_298 2008-04-09 12 +125 val_125 2008-04-09 12 +431 val_431 2008-04-09 12 +164 val_164 2008-04-09 12 +424 val_424 2008-04-09 12 +187 val_187 2008-04-09 12 +382 val_382 2008-04-09 12 +5 val_5 2008-04-09 12 +70 val_70 2008-04-09 12 +397 val_397 2008-04-09 12 +480 val_480 2008-04-09 12 +291 val_291 2008-04-09 12 +24 val_24 2008-04-09 12 +351 val_351 2008-04-09 12 +255 val_255 2008-04-09 12 +104 val_104 2008-04-09 12 +70 val_70 2008-04-09 12 +163 val_163 2008-04-09 12 +438 val_438 2008-04-09 12 +119 val_119 2008-04-09 12 +414 val_414 2008-04-09 12 +200 val_200 2008-04-09 12 +491 val_491 2008-04-09 12 +237 val_237 2008-04-09 12 +439 val_439 2008-04-09 12 +360 val_360 2008-04-09 12 +248 val_248 2008-04-09 12 +479 val_479 2008-04-09 12 +305 val_305 2008-04-09 12 +417 val_417 2008-04-09 12 +199 val_199 2008-04-09 12 +444 val_444 2008-04-09 12 +120 val_120 2008-04-09 12 +429 val_429 2008-04-09 12 +169 val_169 2008-04-09 12 +443 val_443 2008-04-09 12 +323 val_323 2008-04-09 12 +325 val_325 2008-04-09 12 +277 val_277 2008-04-09 12 +230 val_230 2008-04-09 12 +478 val_478 2008-04-09 12 +178 val_178 2008-04-09 12 +468 val_468 2008-04-09 12 +310 val_310 2008-04-09 12 +317 val_317 2008-04-09 12 +333 val_333 2008-04-09 12 +493 val_493 2008-04-09 12 +460 val_460 2008-04-09 12 +207 val_207 2008-04-09 12 +249 val_249 2008-04-09 12 +265 val_265 2008-04-09 12 +480 val_480 2008-04-09 12 +83 val_83 2008-04-09 12 +136 val_136 2008-04-09 12 +353 val_353 2008-04-09 12 +172 val_172 2008-04-09 12 +214 val_214 2008-04-09 12 +462 val_462 2008-04-09 12 +233 val_233 2008-04-09 12 +406 val_406 2008-04-09 12 +133 val_133 2008-04-09 12 +175 val_175 2008-04-09 12 +189 val_189 2008-04-09 12 +454 val_454 2008-04-09 12 +375 val_375 2008-04-09 12 +401 val_401 2008-04-09 12 +421 val_421 2008-04-09 12 +407 val_407 2008-04-09 12 +384 val_384 2008-04-09 12 +256 val_256 2008-04-09 12 +26 val_26 2008-04-09 12 +134 val_134 2008-04-09 12 +67 val_67 2008-04-09 12 +384 val_384 2008-04-09 12 +379 val_379 2008-04-09 12 +18 val_18 2008-04-09 12 +462 val_462 2008-04-09 12 +492 val_492 2008-04-09 12 +100 val_100 2008-04-09 12 +298 val_298 2008-04-09 12 +9 val_9 2008-04-09 12 +341 val_341 2008-04-09 12 +498 val_498 2008-04-09 12 +146 val_146 2008-04-09 12 +458 val_458 2008-04-09 12 +362 val_362 2008-04-09 12 +186 val_186 2008-04-09 12 +285 val_285 2008-04-09 12 +348 val_348 2008-04-09 12 +167 val_167 2008-04-09 12 +18 val_18 2008-04-09 12 +273 val_273 2008-04-09 12 +183 val_183 2008-04-09 12 +281 val_281 2008-04-09 12 +344 val_344 2008-04-09 12 +97 val_97 2008-04-09 12 +469 val_469 2008-04-09 12 +315 val_315 2008-04-09 12 +84 val_84 2008-04-09 12 +28 val_28 2008-04-09 12 +37 val_37 2008-04-09 12 +448 val_448 2008-04-09 12 +152 val_152 2008-04-09 12 +348 val_348 2008-04-09 12 +307 val_307 2008-04-09 12 +194 val_194 2008-04-09 12 +414 val_414 2008-04-09 12 +477 val_477 2008-04-09 12 +222 val_222 2008-04-09 12 +126 val_126 2008-04-09 12 +90 val_90 2008-04-09 12 +169 val_169 2008-04-09 12 +403 val_403 2008-04-09 12 +400 val_400 2008-04-09 12 +200 val_200 2008-04-09 12 +97 val_97 2008-04-09 12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part4-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..8c43153cf66f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part4-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-1-50822afef6986cfea20523ea6092e455 b/sql/hive/src/test/resources/golden/load_dyn_part4-1-50822afef6986cfea20523ea6092e455 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-10-7f0c1e54518d4d1d345577a100e670e8 b/sql/hive/src/test/resources/golden/load_dyn_part4-10-7f0c1e54518d4d1d345577a100e670e8 new file mode 100644 index 0000000000000..3bbd322e374ff --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part4-10-7f0c1e54518d4d1d345577a100e670e8 @@ -0,0 +1,1500 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 +238 val_238 2008-04-08 existing_value +86 val_86 2008-04-08 existing_value +311 val_311 2008-04-08 existing_value +27 val_27 2008-04-08 existing_value +165 val_165 2008-04-08 existing_value +409 val_409 2008-04-08 existing_value +255 val_255 2008-04-08 existing_value +278 val_278 2008-04-08 existing_value +98 val_98 2008-04-08 existing_value +484 val_484 2008-04-08 existing_value +265 val_265 2008-04-08 existing_value +193 val_193 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +150 val_150 2008-04-08 existing_value +273 val_273 2008-04-08 existing_value +224 val_224 2008-04-08 existing_value +369 val_369 2008-04-08 existing_value +66 val_66 2008-04-08 existing_value +128 val_128 2008-04-08 existing_value +213 val_213 2008-04-08 existing_value +146 val_146 2008-04-08 existing_value +406 val_406 2008-04-08 existing_value +429 val_429 2008-04-08 existing_value +374 val_374 2008-04-08 existing_value +152 val_152 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +145 val_145 2008-04-08 existing_value +495 val_495 2008-04-08 existing_value +37 val_37 2008-04-08 existing_value +327 val_327 2008-04-08 existing_value +281 val_281 2008-04-08 existing_value +277 val_277 2008-04-08 existing_value +209 val_209 2008-04-08 existing_value +15 val_15 2008-04-08 existing_value +82 val_82 2008-04-08 existing_value +403 val_403 2008-04-08 existing_value +166 val_166 2008-04-08 existing_value +417 val_417 2008-04-08 existing_value +430 val_430 2008-04-08 existing_value +252 val_252 2008-04-08 existing_value +292 val_292 2008-04-08 existing_value +219 val_219 2008-04-08 existing_value +287 val_287 2008-04-08 existing_value +153 val_153 2008-04-08 existing_value +193 val_193 2008-04-08 existing_value +338 val_338 2008-04-08 existing_value +446 val_446 2008-04-08 existing_value +459 val_459 2008-04-08 existing_value +394 val_394 2008-04-08 existing_value +237 val_237 2008-04-08 existing_value +482 val_482 2008-04-08 existing_value +174 val_174 2008-04-08 existing_value +413 val_413 2008-04-08 existing_value +494 val_494 2008-04-08 existing_value +207 val_207 2008-04-08 existing_value +199 val_199 2008-04-08 existing_value +466 val_466 2008-04-08 existing_value +208 val_208 2008-04-08 existing_value +174 val_174 2008-04-08 existing_value +399 val_399 2008-04-08 existing_value +396 val_396 2008-04-08 existing_value +247 val_247 2008-04-08 existing_value +417 val_417 2008-04-08 existing_value +489 val_489 2008-04-08 existing_value +162 val_162 2008-04-08 existing_value +377 val_377 2008-04-08 existing_value +397 val_397 2008-04-08 existing_value +309 val_309 2008-04-08 existing_value +365 val_365 2008-04-08 existing_value +266 val_266 2008-04-08 existing_value +439 val_439 2008-04-08 existing_value +342 val_342 2008-04-08 existing_value +367 val_367 2008-04-08 existing_value +325 val_325 2008-04-08 existing_value +167 val_167 2008-04-08 existing_value +195 val_195 2008-04-08 existing_value +475 val_475 2008-04-08 existing_value +17 val_17 2008-04-08 existing_value +113 val_113 2008-04-08 existing_value +155 val_155 2008-04-08 existing_value +203 val_203 2008-04-08 existing_value +339 val_339 2008-04-08 existing_value +0 val_0 2008-04-08 existing_value +455 val_455 2008-04-08 existing_value +128 val_128 2008-04-08 existing_value +311 val_311 2008-04-08 existing_value +316 val_316 2008-04-08 existing_value +57 val_57 2008-04-08 existing_value +302 val_302 2008-04-08 existing_value +205 val_205 2008-04-08 existing_value +149 val_149 2008-04-08 existing_value +438 val_438 2008-04-08 existing_value +345 val_345 2008-04-08 existing_value +129 val_129 2008-04-08 existing_value +170 val_170 2008-04-08 existing_value +20 val_20 2008-04-08 existing_value +489 val_489 2008-04-08 existing_value +157 val_157 2008-04-08 existing_value +378 val_378 2008-04-08 existing_value +221 val_221 2008-04-08 existing_value +92 val_92 2008-04-08 existing_value +111 val_111 2008-04-08 existing_value +47 val_47 2008-04-08 existing_value +72 val_72 2008-04-08 existing_value +4 val_4 2008-04-08 existing_value +280 val_280 2008-04-08 existing_value +35 val_35 2008-04-08 existing_value +427 val_427 2008-04-08 existing_value +277 val_277 2008-04-08 existing_value +208 val_208 2008-04-08 existing_value +356 val_356 2008-04-08 existing_value +399 val_399 2008-04-08 existing_value +169 val_169 2008-04-08 existing_value +382 val_382 2008-04-08 existing_value +498 val_498 2008-04-08 existing_value +125 val_125 2008-04-08 existing_value +386 val_386 2008-04-08 existing_value +437 val_437 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +192 val_192 2008-04-08 existing_value +286 val_286 2008-04-08 existing_value +187 val_187 2008-04-08 existing_value +176 val_176 2008-04-08 existing_value +54 val_54 2008-04-08 existing_value +459 val_459 2008-04-08 existing_value +51 val_51 2008-04-08 existing_value +138 val_138 2008-04-08 existing_value +103 val_103 2008-04-08 existing_value +239 val_239 2008-04-08 existing_value +213 val_213 2008-04-08 existing_value +216 val_216 2008-04-08 existing_value +430 val_430 2008-04-08 existing_value +278 val_278 2008-04-08 existing_value +176 val_176 2008-04-08 existing_value +289 val_289 2008-04-08 existing_value +221 val_221 2008-04-08 existing_value +65 val_65 2008-04-08 existing_value +318 val_318 2008-04-08 existing_value +332 val_332 2008-04-08 existing_value +311 val_311 2008-04-08 existing_value +275 val_275 2008-04-08 existing_value +137 val_137 2008-04-08 existing_value +241 val_241 2008-04-08 existing_value +83 val_83 2008-04-08 existing_value +333 val_333 2008-04-08 existing_value +180 val_180 2008-04-08 existing_value +284 val_284 2008-04-08 existing_value +12 val_12 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +181 val_181 2008-04-08 existing_value +67 val_67 2008-04-08 existing_value +260 val_260 2008-04-08 existing_value +404 val_404 2008-04-08 existing_value +384 val_384 2008-04-08 existing_value +489 val_489 2008-04-08 existing_value +353 val_353 2008-04-08 existing_value +373 val_373 2008-04-08 existing_value +272 val_272 2008-04-08 existing_value +138 val_138 2008-04-08 existing_value +217 val_217 2008-04-08 existing_value +84 val_84 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +466 val_466 2008-04-08 existing_value +58 val_58 2008-04-08 existing_value +8 val_8 2008-04-08 existing_value +411 val_411 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +208 val_208 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +24 val_24 2008-04-08 existing_value +463 val_463 2008-04-08 existing_value +431 val_431 2008-04-08 existing_value +179 val_179 2008-04-08 existing_value +172 val_172 2008-04-08 existing_value +42 val_42 2008-04-08 existing_value +129 val_129 2008-04-08 existing_value +158 val_158 2008-04-08 existing_value +119 val_119 2008-04-08 existing_value +496 val_496 2008-04-08 existing_value +0 val_0 2008-04-08 existing_value +322 val_322 2008-04-08 existing_value +197 val_197 2008-04-08 existing_value +468 val_468 2008-04-08 existing_value +393 val_393 2008-04-08 existing_value +454 val_454 2008-04-08 existing_value +100 val_100 2008-04-08 existing_value +298 val_298 2008-04-08 existing_value +199 val_199 2008-04-08 existing_value +191 val_191 2008-04-08 existing_value +418 val_418 2008-04-08 existing_value +96 val_96 2008-04-08 existing_value +26 val_26 2008-04-08 existing_value +165 val_165 2008-04-08 existing_value +327 val_327 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +205 val_205 2008-04-08 existing_value +120 val_120 2008-04-08 existing_value +131 val_131 2008-04-08 existing_value +51 val_51 2008-04-08 existing_value +404 val_404 2008-04-08 existing_value +43 val_43 2008-04-08 existing_value +436 val_436 2008-04-08 existing_value +156 val_156 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +468 val_468 2008-04-08 existing_value +308 val_308 2008-04-08 existing_value +95 val_95 2008-04-08 existing_value +196 val_196 2008-04-08 existing_value +288 val_288 2008-04-08 existing_value +481 val_481 2008-04-08 existing_value +457 val_457 2008-04-08 existing_value +98 val_98 2008-04-08 existing_value +282 val_282 2008-04-08 existing_value +197 val_197 2008-04-08 existing_value +187 val_187 2008-04-08 existing_value +318 val_318 2008-04-08 existing_value +318 val_318 2008-04-08 existing_value +409 val_409 2008-04-08 existing_value +470 val_470 2008-04-08 existing_value +137 val_137 2008-04-08 existing_value +369 val_369 2008-04-08 existing_value +316 val_316 2008-04-08 existing_value +169 val_169 2008-04-08 existing_value +413 val_413 2008-04-08 existing_value +85 val_85 2008-04-08 existing_value +77 val_77 2008-04-08 existing_value +0 val_0 2008-04-08 existing_value +490 val_490 2008-04-08 existing_value +87 val_87 2008-04-08 existing_value +364 val_364 2008-04-08 existing_value +179 val_179 2008-04-08 existing_value +118 val_118 2008-04-08 existing_value +134 val_134 2008-04-08 existing_value +395 val_395 2008-04-08 existing_value +282 val_282 2008-04-08 existing_value +138 val_138 2008-04-08 existing_value +238 val_238 2008-04-08 existing_value +419 val_419 2008-04-08 existing_value +15 val_15 2008-04-08 existing_value +118 val_118 2008-04-08 existing_value +72 val_72 2008-04-08 existing_value +90 val_90 2008-04-08 existing_value +307 val_307 2008-04-08 existing_value +19 val_19 2008-04-08 existing_value +435 val_435 2008-04-08 existing_value +10 val_10 2008-04-08 existing_value +277 val_277 2008-04-08 existing_value +273 val_273 2008-04-08 existing_value +306 val_306 2008-04-08 existing_value +224 val_224 2008-04-08 existing_value +309 val_309 2008-04-08 existing_value +389 val_389 2008-04-08 existing_value +327 val_327 2008-04-08 existing_value +242 val_242 2008-04-08 existing_value +369 val_369 2008-04-08 existing_value +392 val_392 2008-04-08 existing_value +272 val_272 2008-04-08 existing_value +331 val_331 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +242 val_242 2008-04-08 existing_value +452 val_452 2008-04-08 existing_value +177 val_177 2008-04-08 existing_value +226 val_226 2008-04-08 existing_value +5 val_5 2008-04-08 existing_value +497 val_497 2008-04-08 existing_value +402 val_402 2008-04-08 existing_value +396 val_396 2008-04-08 existing_value +317 val_317 2008-04-08 existing_value +395 val_395 2008-04-08 existing_value +58 val_58 2008-04-08 existing_value +35 val_35 2008-04-08 existing_value +336 val_336 2008-04-08 existing_value +95 val_95 2008-04-08 existing_value +11 val_11 2008-04-08 existing_value +168 val_168 2008-04-08 existing_value +34 val_34 2008-04-08 existing_value +229 val_229 2008-04-08 existing_value +233 val_233 2008-04-08 existing_value +143 val_143 2008-04-08 existing_value +472 val_472 2008-04-08 existing_value +322 val_322 2008-04-08 existing_value +498 val_498 2008-04-08 existing_value +160 val_160 2008-04-08 existing_value +195 val_195 2008-04-08 existing_value +42 val_42 2008-04-08 existing_value +321 val_321 2008-04-08 existing_value +430 val_430 2008-04-08 existing_value +119 val_119 2008-04-08 existing_value +489 val_489 2008-04-08 existing_value +458 val_458 2008-04-08 existing_value +78 val_78 2008-04-08 existing_value +76 val_76 2008-04-08 existing_value +41 val_41 2008-04-08 existing_value +223 val_223 2008-04-08 existing_value +492 val_492 2008-04-08 existing_value +149 val_149 2008-04-08 existing_value +449 val_449 2008-04-08 existing_value +218 val_218 2008-04-08 existing_value +228 val_228 2008-04-08 existing_value +138 val_138 2008-04-08 existing_value +453 val_453 2008-04-08 existing_value +30 val_30 2008-04-08 existing_value +209 val_209 2008-04-08 existing_value +64 val_64 2008-04-08 existing_value +468 val_468 2008-04-08 existing_value +76 val_76 2008-04-08 existing_value +74 val_74 2008-04-08 existing_value +342 val_342 2008-04-08 existing_value +69 val_69 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +33 val_33 2008-04-08 existing_value +368 val_368 2008-04-08 existing_value +103 val_103 2008-04-08 existing_value +296 val_296 2008-04-08 existing_value +113 val_113 2008-04-08 existing_value +216 val_216 2008-04-08 existing_value +367 val_367 2008-04-08 existing_value +344 val_344 2008-04-08 existing_value +167 val_167 2008-04-08 existing_value +274 val_274 2008-04-08 existing_value +219 val_219 2008-04-08 existing_value +239 val_239 2008-04-08 existing_value +485 val_485 2008-04-08 existing_value +116 val_116 2008-04-08 existing_value +223 val_223 2008-04-08 existing_value +256 val_256 2008-04-08 existing_value +263 val_263 2008-04-08 existing_value +70 val_70 2008-04-08 existing_value +487 val_487 2008-04-08 existing_value +480 val_480 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +288 val_288 2008-04-08 existing_value +191 val_191 2008-04-08 existing_value +5 val_5 2008-04-08 existing_value +244 val_244 2008-04-08 existing_value +438 val_438 2008-04-08 existing_value +128 val_128 2008-04-08 existing_value +467 val_467 2008-04-08 existing_value +432 val_432 2008-04-08 existing_value +202 val_202 2008-04-08 existing_value +316 val_316 2008-04-08 existing_value +229 val_229 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +463 val_463 2008-04-08 existing_value +280 val_280 2008-04-08 existing_value +2 val_2 2008-04-08 existing_value +35 val_35 2008-04-08 existing_value +283 val_283 2008-04-08 existing_value +331 val_331 2008-04-08 existing_value +235 val_235 2008-04-08 existing_value +80 val_80 2008-04-08 existing_value +44 val_44 2008-04-08 existing_value +193 val_193 2008-04-08 existing_value +321 val_321 2008-04-08 existing_value +335 val_335 2008-04-08 existing_value +104 val_104 2008-04-08 existing_value +466 val_466 2008-04-08 existing_value +366 val_366 2008-04-08 existing_value +175 val_175 2008-04-08 existing_value +403 val_403 2008-04-08 existing_value +483 val_483 2008-04-08 existing_value +53 val_53 2008-04-08 existing_value +105 val_105 2008-04-08 existing_value +257 val_257 2008-04-08 existing_value +406 val_406 2008-04-08 existing_value +409 val_409 2008-04-08 existing_value +190 val_190 2008-04-08 existing_value +406 val_406 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +114 val_114 2008-04-08 existing_value +258 val_258 2008-04-08 existing_value +90 val_90 2008-04-08 existing_value +203 val_203 2008-04-08 existing_value +262 val_262 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +424 val_424 2008-04-08 existing_value +12 val_12 2008-04-08 existing_value +396 val_396 2008-04-08 existing_value +201 val_201 2008-04-08 existing_value +217 val_217 2008-04-08 existing_value +164 val_164 2008-04-08 existing_value +431 val_431 2008-04-08 existing_value +454 val_454 2008-04-08 existing_value +478 val_478 2008-04-08 existing_value +298 val_298 2008-04-08 existing_value +125 val_125 2008-04-08 existing_value +431 val_431 2008-04-08 existing_value +164 val_164 2008-04-08 existing_value +424 val_424 2008-04-08 existing_value +187 val_187 2008-04-08 existing_value +382 val_382 2008-04-08 existing_value +5 val_5 2008-04-08 existing_value +70 val_70 2008-04-08 existing_value +397 val_397 2008-04-08 existing_value +480 val_480 2008-04-08 existing_value +291 val_291 2008-04-08 existing_value +24 val_24 2008-04-08 existing_value +351 val_351 2008-04-08 existing_value +255 val_255 2008-04-08 existing_value +104 val_104 2008-04-08 existing_value +70 val_70 2008-04-08 existing_value +163 val_163 2008-04-08 existing_value +438 val_438 2008-04-08 existing_value +119 val_119 2008-04-08 existing_value +414 val_414 2008-04-08 existing_value +200 val_200 2008-04-08 existing_value +491 val_491 2008-04-08 existing_value +237 val_237 2008-04-08 existing_value +439 val_439 2008-04-08 existing_value +360 val_360 2008-04-08 existing_value +248 val_248 2008-04-08 existing_value +479 val_479 2008-04-08 existing_value +305 val_305 2008-04-08 existing_value +417 val_417 2008-04-08 existing_value +199 val_199 2008-04-08 existing_value +444 val_444 2008-04-08 existing_value +120 val_120 2008-04-08 existing_value +429 val_429 2008-04-08 existing_value +169 val_169 2008-04-08 existing_value +443 val_443 2008-04-08 existing_value +323 val_323 2008-04-08 existing_value +325 val_325 2008-04-08 existing_value +277 val_277 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +478 val_478 2008-04-08 existing_value +178 val_178 2008-04-08 existing_value +468 val_468 2008-04-08 existing_value +310 val_310 2008-04-08 existing_value +317 val_317 2008-04-08 existing_value +333 val_333 2008-04-08 existing_value +493 val_493 2008-04-08 existing_value +460 val_460 2008-04-08 existing_value +207 val_207 2008-04-08 existing_value +249 val_249 2008-04-08 existing_value +265 val_265 2008-04-08 existing_value +480 val_480 2008-04-08 existing_value +83 val_83 2008-04-08 existing_value +136 val_136 2008-04-08 existing_value +353 val_353 2008-04-08 existing_value +172 val_172 2008-04-08 existing_value +214 val_214 2008-04-08 existing_value +462 val_462 2008-04-08 existing_value +233 val_233 2008-04-08 existing_value +406 val_406 2008-04-08 existing_value +133 val_133 2008-04-08 existing_value +175 val_175 2008-04-08 existing_value +189 val_189 2008-04-08 existing_value +454 val_454 2008-04-08 existing_value +375 val_375 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +421 val_421 2008-04-08 existing_value +407 val_407 2008-04-08 existing_value +384 val_384 2008-04-08 existing_value +256 val_256 2008-04-08 existing_value +26 val_26 2008-04-08 existing_value +134 val_134 2008-04-08 existing_value +67 val_67 2008-04-08 existing_value +384 val_384 2008-04-08 existing_value +379 val_379 2008-04-08 existing_value +18 val_18 2008-04-08 existing_value +462 val_462 2008-04-08 existing_value +492 val_492 2008-04-08 existing_value +100 val_100 2008-04-08 existing_value +298 val_298 2008-04-08 existing_value +9 val_9 2008-04-08 existing_value +341 val_341 2008-04-08 existing_value +498 val_498 2008-04-08 existing_value +146 val_146 2008-04-08 existing_value +458 val_458 2008-04-08 existing_value +362 val_362 2008-04-08 existing_value +186 val_186 2008-04-08 existing_value +285 val_285 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +167 val_167 2008-04-08 existing_value +18 val_18 2008-04-08 existing_value +273 val_273 2008-04-08 existing_value +183 val_183 2008-04-08 existing_value +281 val_281 2008-04-08 existing_value +344 val_344 2008-04-08 existing_value +97 val_97 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +315 val_315 2008-04-08 existing_value +84 val_84 2008-04-08 existing_value +28 val_28 2008-04-08 existing_value +37 val_37 2008-04-08 existing_value +448 val_448 2008-04-08 existing_value +152 val_152 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +307 val_307 2008-04-08 existing_value +194 val_194 2008-04-08 existing_value +414 val_414 2008-04-08 existing_value +477 val_477 2008-04-08 existing_value +222 val_222 2008-04-08 existing_value +126 val_126 2008-04-08 existing_value +90 val_90 2008-04-08 existing_value +169 val_169 2008-04-08 existing_value +403 val_403 2008-04-08 existing_value +400 val_400 2008-04-08 existing_value +200 val_200 2008-04-08 existing_value +97 val_97 2008-04-08 existing_value diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-11-1313644c9dad948bfcebd7386c309ab7 b/sql/hive/src/test/resources/golden/load_dyn_part4-11-1313644c9dad948bfcebd7386c309ab7 new file mode 100644 index 0000000000000..f1801743dd4e1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part4-11-1313644c9dad948bfcebd7386c309ab7 @@ -0,0 +1,2500 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 +238 val_238 2008-04-08 existing_value +86 val_86 2008-04-08 existing_value +311 val_311 2008-04-08 existing_value +27 val_27 2008-04-08 existing_value +165 val_165 2008-04-08 existing_value +409 val_409 2008-04-08 existing_value +255 val_255 2008-04-08 existing_value +278 val_278 2008-04-08 existing_value +98 val_98 2008-04-08 existing_value +484 val_484 2008-04-08 existing_value +265 val_265 2008-04-08 existing_value +193 val_193 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +150 val_150 2008-04-08 existing_value +273 val_273 2008-04-08 existing_value +224 val_224 2008-04-08 existing_value +369 val_369 2008-04-08 existing_value +66 val_66 2008-04-08 existing_value +128 val_128 2008-04-08 existing_value +213 val_213 2008-04-08 existing_value +146 val_146 2008-04-08 existing_value +406 val_406 2008-04-08 existing_value +429 val_429 2008-04-08 existing_value +374 val_374 2008-04-08 existing_value +152 val_152 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +145 val_145 2008-04-08 existing_value +495 val_495 2008-04-08 existing_value +37 val_37 2008-04-08 existing_value +327 val_327 2008-04-08 existing_value +281 val_281 2008-04-08 existing_value +277 val_277 2008-04-08 existing_value +209 val_209 2008-04-08 existing_value +15 val_15 2008-04-08 existing_value +82 val_82 2008-04-08 existing_value +403 val_403 2008-04-08 existing_value +166 val_166 2008-04-08 existing_value +417 val_417 2008-04-08 existing_value +430 val_430 2008-04-08 existing_value +252 val_252 2008-04-08 existing_value +292 val_292 2008-04-08 existing_value +219 val_219 2008-04-08 existing_value +287 val_287 2008-04-08 existing_value +153 val_153 2008-04-08 existing_value +193 val_193 2008-04-08 existing_value +338 val_338 2008-04-08 existing_value +446 val_446 2008-04-08 existing_value +459 val_459 2008-04-08 existing_value +394 val_394 2008-04-08 existing_value +237 val_237 2008-04-08 existing_value +482 val_482 2008-04-08 existing_value +174 val_174 2008-04-08 existing_value +413 val_413 2008-04-08 existing_value +494 val_494 2008-04-08 existing_value +207 val_207 2008-04-08 existing_value +199 val_199 2008-04-08 existing_value +466 val_466 2008-04-08 existing_value +208 val_208 2008-04-08 existing_value +174 val_174 2008-04-08 existing_value +399 val_399 2008-04-08 existing_value +396 val_396 2008-04-08 existing_value +247 val_247 2008-04-08 existing_value +417 val_417 2008-04-08 existing_value +489 val_489 2008-04-08 existing_value +162 val_162 2008-04-08 existing_value +377 val_377 2008-04-08 existing_value +397 val_397 2008-04-08 existing_value +309 val_309 2008-04-08 existing_value +365 val_365 2008-04-08 existing_value +266 val_266 2008-04-08 existing_value +439 val_439 2008-04-08 existing_value +342 val_342 2008-04-08 existing_value +367 val_367 2008-04-08 existing_value +325 val_325 2008-04-08 existing_value +167 val_167 2008-04-08 existing_value +195 val_195 2008-04-08 existing_value +475 val_475 2008-04-08 existing_value +17 val_17 2008-04-08 existing_value +113 val_113 2008-04-08 existing_value +155 val_155 2008-04-08 existing_value +203 val_203 2008-04-08 existing_value +339 val_339 2008-04-08 existing_value +0 val_0 2008-04-08 existing_value +455 val_455 2008-04-08 existing_value +128 val_128 2008-04-08 existing_value +311 val_311 2008-04-08 existing_value +316 val_316 2008-04-08 existing_value +57 val_57 2008-04-08 existing_value +302 val_302 2008-04-08 existing_value +205 val_205 2008-04-08 existing_value +149 val_149 2008-04-08 existing_value +438 val_438 2008-04-08 existing_value +345 val_345 2008-04-08 existing_value +129 val_129 2008-04-08 existing_value +170 val_170 2008-04-08 existing_value +20 val_20 2008-04-08 existing_value +489 val_489 2008-04-08 existing_value +157 val_157 2008-04-08 existing_value +378 val_378 2008-04-08 existing_value +221 val_221 2008-04-08 existing_value +92 val_92 2008-04-08 existing_value +111 val_111 2008-04-08 existing_value +47 val_47 2008-04-08 existing_value +72 val_72 2008-04-08 existing_value +4 val_4 2008-04-08 existing_value +280 val_280 2008-04-08 existing_value +35 val_35 2008-04-08 existing_value +427 val_427 2008-04-08 existing_value +277 val_277 2008-04-08 existing_value +208 val_208 2008-04-08 existing_value +356 val_356 2008-04-08 existing_value +399 val_399 2008-04-08 existing_value +169 val_169 2008-04-08 existing_value +382 val_382 2008-04-08 existing_value +498 val_498 2008-04-08 existing_value +125 val_125 2008-04-08 existing_value +386 val_386 2008-04-08 existing_value +437 val_437 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +192 val_192 2008-04-08 existing_value +286 val_286 2008-04-08 existing_value +187 val_187 2008-04-08 existing_value +176 val_176 2008-04-08 existing_value +54 val_54 2008-04-08 existing_value +459 val_459 2008-04-08 existing_value +51 val_51 2008-04-08 existing_value +138 val_138 2008-04-08 existing_value +103 val_103 2008-04-08 existing_value +239 val_239 2008-04-08 existing_value +213 val_213 2008-04-08 existing_value +216 val_216 2008-04-08 existing_value +430 val_430 2008-04-08 existing_value +278 val_278 2008-04-08 existing_value +176 val_176 2008-04-08 existing_value +289 val_289 2008-04-08 existing_value +221 val_221 2008-04-08 existing_value +65 val_65 2008-04-08 existing_value +318 val_318 2008-04-08 existing_value +332 val_332 2008-04-08 existing_value +311 val_311 2008-04-08 existing_value +275 val_275 2008-04-08 existing_value +137 val_137 2008-04-08 existing_value +241 val_241 2008-04-08 existing_value +83 val_83 2008-04-08 existing_value +333 val_333 2008-04-08 existing_value +180 val_180 2008-04-08 existing_value +284 val_284 2008-04-08 existing_value +12 val_12 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +181 val_181 2008-04-08 existing_value +67 val_67 2008-04-08 existing_value +260 val_260 2008-04-08 existing_value +404 val_404 2008-04-08 existing_value +384 val_384 2008-04-08 existing_value +489 val_489 2008-04-08 existing_value +353 val_353 2008-04-08 existing_value +373 val_373 2008-04-08 existing_value +272 val_272 2008-04-08 existing_value +138 val_138 2008-04-08 existing_value +217 val_217 2008-04-08 existing_value +84 val_84 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +466 val_466 2008-04-08 existing_value +58 val_58 2008-04-08 existing_value +8 val_8 2008-04-08 existing_value +411 val_411 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +208 val_208 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +24 val_24 2008-04-08 existing_value +463 val_463 2008-04-08 existing_value +431 val_431 2008-04-08 existing_value +179 val_179 2008-04-08 existing_value +172 val_172 2008-04-08 existing_value +42 val_42 2008-04-08 existing_value +129 val_129 2008-04-08 existing_value +158 val_158 2008-04-08 existing_value +119 val_119 2008-04-08 existing_value +496 val_496 2008-04-08 existing_value +0 val_0 2008-04-08 existing_value +322 val_322 2008-04-08 existing_value +197 val_197 2008-04-08 existing_value +468 val_468 2008-04-08 existing_value +393 val_393 2008-04-08 existing_value +454 val_454 2008-04-08 existing_value +100 val_100 2008-04-08 existing_value +298 val_298 2008-04-08 existing_value +199 val_199 2008-04-08 existing_value +191 val_191 2008-04-08 existing_value +418 val_418 2008-04-08 existing_value +96 val_96 2008-04-08 existing_value +26 val_26 2008-04-08 existing_value +165 val_165 2008-04-08 existing_value +327 val_327 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +205 val_205 2008-04-08 existing_value +120 val_120 2008-04-08 existing_value +131 val_131 2008-04-08 existing_value +51 val_51 2008-04-08 existing_value +404 val_404 2008-04-08 existing_value +43 val_43 2008-04-08 existing_value +436 val_436 2008-04-08 existing_value +156 val_156 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +468 val_468 2008-04-08 existing_value +308 val_308 2008-04-08 existing_value +95 val_95 2008-04-08 existing_value +196 val_196 2008-04-08 existing_value +288 val_288 2008-04-08 existing_value +481 val_481 2008-04-08 existing_value +457 val_457 2008-04-08 existing_value +98 val_98 2008-04-08 existing_value +282 val_282 2008-04-08 existing_value +197 val_197 2008-04-08 existing_value +187 val_187 2008-04-08 existing_value +318 val_318 2008-04-08 existing_value +318 val_318 2008-04-08 existing_value +409 val_409 2008-04-08 existing_value +470 val_470 2008-04-08 existing_value +137 val_137 2008-04-08 existing_value +369 val_369 2008-04-08 existing_value +316 val_316 2008-04-08 existing_value +169 val_169 2008-04-08 existing_value +413 val_413 2008-04-08 existing_value +85 val_85 2008-04-08 existing_value +77 val_77 2008-04-08 existing_value +0 val_0 2008-04-08 existing_value +490 val_490 2008-04-08 existing_value +87 val_87 2008-04-08 existing_value +364 val_364 2008-04-08 existing_value +179 val_179 2008-04-08 existing_value +118 val_118 2008-04-08 existing_value +134 val_134 2008-04-08 existing_value +395 val_395 2008-04-08 existing_value +282 val_282 2008-04-08 existing_value +138 val_138 2008-04-08 existing_value +238 val_238 2008-04-08 existing_value +419 val_419 2008-04-08 existing_value +15 val_15 2008-04-08 existing_value +118 val_118 2008-04-08 existing_value +72 val_72 2008-04-08 existing_value +90 val_90 2008-04-08 existing_value +307 val_307 2008-04-08 existing_value +19 val_19 2008-04-08 existing_value +435 val_435 2008-04-08 existing_value +10 val_10 2008-04-08 existing_value +277 val_277 2008-04-08 existing_value +273 val_273 2008-04-08 existing_value +306 val_306 2008-04-08 existing_value +224 val_224 2008-04-08 existing_value +309 val_309 2008-04-08 existing_value +389 val_389 2008-04-08 existing_value +327 val_327 2008-04-08 existing_value +242 val_242 2008-04-08 existing_value +369 val_369 2008-04-08 existing_value +392 val_392 2008-04-08 existing_value +272 val_272 2008-04-08 existing_value +331 val_331 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +242 val_242 2008-04-08 existing_value +452 val_452 2008-04-08 existing_value +177 val_177 2008-04-08 existing_value +226 val_226 2008-04-08 existing_value +5 val_5 2008-04-08 existing_value +497 val_497 2008-04-08 existing_value +402 val_402 2008-04-08 existing_value +396 val_396 2008-04-08 existing_value +317 val_317 2008-04-08 existing_value +395 val_395 2008-04-08 existing_value +58 val_58 2008-04-08 existing_value +35 val_35 2008-04-08 existing_value +336 val_336 2008-04-08 existing_value +95 val_95 2008-04-08 existing_value +11 val_11 2008-04-08 existing_value +168 val_168 2008-04-08 existing_value +34 val_34 2008-04-08 existing_value +229 val_229 2008-04-08 existing_value +233 val_233 2008-04-08 existing_value +143 val_143 2008-04-08 existing_value +472 val_472 2008-04-08 existing_value +322 val_322 2008-04-08 existing_value +498 val_498 2008-04-08 existing_value +160 val_160 2008-04-08 existing_value +195 val_195 2008-04-08 existing_value +42 val_42 2008-04-08 existing_value +321 val_321 2008-04-08 existing_value +430 val_430 2008-04-08 existing_value +119 val_119 2008-04-08 existing_value +489 val_489 2008-04-08 existing_value +458 val_458 2008-04-08 existing_value +78 val_78 2008-04-08 existing_value +76 val_76 2008-04-08 existing_value +41 val_41 2008-04-08 existing_value +223 val_223 2008-04-08 existing_value +492 val_492 2008-04-08 existing_value +149 val_149 2008-04-08 existing_value +449 val_449 2008-04-08 existing_value +218 val_218 2008-04-08 existing_value +228 val_228 2008-04-08 existing_value +138 val_138 2008-04-08 existing_value +453 val_453 2008-04-08 existing_value +30 val_30 2008-04-08 existing_value +209 val_209 2008-04-08 existing_value +64 val_64 2008-04-08 existing_value +468 val_468 2008-04-08 existing_value +76 val_76 2008-04-08 existing_value +74 val_74 2008-04-08 existing_value +342 val_342 2008-04-08 existing_value +69 val_69 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +33 val_33 2008-04-08 existing_value +368 val_368 2008-04-08 existing_value +103 val_103 2008-04-08 existing_value +296 val_296 2008-04-08 existing_value +113 val_113 2008-04-08 existing_value +216 val_216 2008-04-08 existing_value +367 val_367 2008-04-08 existing_value +344 val_344 2008-04-08 existing_value +167 val_167 2008-04-08 existing_value +274 val_274 2008-04-08 existing_value +219 val_219 2008-04-08 existing_value +239 val_239 2008-04-08 existing_value +485 val_485 2008-04-08 existing_value +116 val_116 2008-04-08 existing_value +223 val_223 2008-04-08 existing_value +256 val_256 2008-04-08 existing_value +263 val_263 2008-04-08 existing_value +70 val_70 2008-04-08 existing_value +487 val_487 2008-04-08 existing_value +480 val_480 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +288 val_288 2008-04-08 existing_value +191 val_191 2008-04-08 existing_value +5 val_5 2008-04-08 existing_value +244 val_244 2008-04-08 existing_value +438 val_438 2008-04-08 existing_value +128 val_128 2008-04-08 existing_value +467 val_467 2008-04-08 existing_value +432 val_432 2008-04-08 existing_value +202 val_202 2008-04-08 existing_value +316 val_316 2008-04-08 existing_value +229 val_229 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +463 val_463 2008-04-08 existing_value +280 val_280 2008-04-08 existing_value +2 val_2 2008-04-08 existing_value +35 val_35 2008-04-08 existing_value +283 val_283 2008-04-08 existing_value +331 val_331 2008-04-08 existing_value +235 val_235 2008-04-08 existing_value +80 val_80 2008-04-08 existing_value +44 val_44 2008-04-08 existing_value +193 val_193 2008-04-08 existing_value +321 val_321 2008-04-08 existing_value +335 val_335 2008-04-08 existing_value +104 val_104 2008-04-08 existing_value +466 val_466 2008-04-08 existing_value +366 val_366 2008-04-08 existing_value +175 val_175 2008-04-08 existing_value +403 val_403 2008-04-08 existing_value +483 val_483 2008-04-08 existing_value +53 val_53 2008-04-08 existing_value +105 val_105 2008-04-08 existing_value +257 val_257 2008-04-08 existing_value +406 val_406 2008-04-08 existing_value +409 val_409 2008-04-08 existing_value +190 val_190 2008-04-08 existing_value +406 val_406 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +114 val_114 2008-04-08 existing_value +258 val_258 2008-04-08 existing_value +90 val_90 2008-04-08 existing_value +203 val_203 2008-04-08 existing_value +262 val_262 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +424 val_424 2008-04-08 existing_value +12 val_12 2008-04-08 existing_value +396 val_396 2008-04-08 existing_value +201 val_201 2008-04-08 existing_value +217 val_217 2008-04-08 existing_value +164 val_164 2008-04-08 existing_value +431 val_431 2008-04-08 existing_value +454 val_454 2008-04-08 existing_value +478 val_478 2008-04-08 existing_value +298 val_298 2008-04-08 existing_value +125 val_125 2008-04-08 existing_value +431 val_431 2008-04-08 existing_value +164 val_164 2008-04-08 existing_value +424 val_424 2008-04-08 existing_value +187 val_187 2008-04-08 existing_value +382 val_382 2008-04-08 existing_value +5 val_5 2008-04-08 existing_value +70 val_70 2008-04-08 existing_value +397 val_397 2008-04-08 existing_value +480 val_480 2008-04-08 existing_value +291 val_291 2008-04-08 existing_value +24 val_24 2008-04-08 existing_value +351 val_351 2008-04-08 existing_value +255 val_255 2008-04-08 existing_value +104 val_104 2008-04-08 existing_value +70 val_70 2008-04-08 existing_value +163 val_163 2008-04-08 existing_value +438 val_438 2008-04-08 existing_value +119 val_119 2008-04-08 existing_value +414 val_414 2008-04-08 existing_value +200 val_200 2008-04-08 existing_value +491 val_491 2008-04-08 existing_value +237 val_237 2008-04-08 existing_value +439 val_439 2008-04-08 existing_value +360 val_360 2008-04-08 existing_value +248 val_248 2008-04-08 existing_value +479 val_479 2008-04-08 existing_value +305 val_305 2008-04-08 existing_value +417 val_417 2008-04-08 existing_value +199 val_199 2008-04-08 existing_value +444 val_444 2008-04-08 existing_value +120 val_120 2008-04-08 existing_value +429 val_429 2008-04-08 existing_value +169 val_169 2008-04-08 existing_value +443 val_443 2008-04-08 existing_value +323 val_323 2008-04-08 existing_value +325 val_325 2008-04-08 existing_value +277 val_277 2008-04-08 existing_value +230 val_230 2008-04-08 existing_value +478 val_478 2008-04-08 existing_value +178 val_178 2008-04-08 existing_value +468 val_468 2008-04-08 existing_value +310 val_310 2008-04-08 existing_value +317 val_317 2008-04-08 existing_value +333 val_333 2008-04-08 existing_value +493 val_493 2008-04-08 existing_value +460 val_460 2008-04-08 existing_value +207 val_207 2008-04-08 existing_value +249 val_249 2008-04-08 existing_value +265 val_265 2008-04-08 existing_value +480 val_480 2008-04-08 existing_value +83 val_83 2008-04-08 existing_value +136 val_136 2008-04-08 existing_value +353 val_353 2008-04-08 existing_value +172 val_172 2008-04-08 existing_value +214 val_214 2008-04-08 existing_value +462 val_462 2008-04-08 existing_value +233 val_233 2008-04-08 existing_value +406 val_406 2008-04-08 existing_value +133 val_133 2008-04-08 existing_value +175 val_175 2008-04-08 existing_value +189 val_189 2008-04-08 existing_value +454 val_454 2008-04-08 existing_value +375 val_375 2008-04-08 existing_value +401 val_401 2008-04-08 existing_value +421 val_421 2008-04-08 existing_value +407 val_407 2008-04-08 existing_value +384 val_384 2008-04-08 existing_value +256 val_256 2008-04-08 existing_value +26 val_26 2008-04-08 existing_value +134 val_134 2008-04-08 existing_value +67 val_67 2008-04-08 existing_value +384 val_384 2008-04-08 existing_value +379 val_379 2008-04-08 existing_value +18 val_18 2008-04-08 existing_value +462 val_462 2008-04-08 existing_value +492 val_492 2008-04-08 existing_value +100 val_100 2008-04-08 existing_value +298 val_298 2008-04-08 existing_value +9 val_9 2008-04-08 existing_value +341 val_341 2008-04-08 existing_value +498 val_498 2008-04-08 existing_value +146 val_146 2008-04-08 existing_value +458 val_458 2008-04-08 existing_value +362 val_362 2008-04-08 existing_value +186 val_186 2008-04-08 existing_value +285 val_285 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +167 val_167 2008-04-08 existing_value +18 val_18 2008-04-08 existing_value +273 val_273 2008-04-08 existing_value +183 val_183 2008-04-08 existing_value +281 val_281 2008-04-08 existing_value +344 val_344 2008-04-08 existing_value +97 val_97 2008-04-08 existing_value +469 val_469 2008-04-08 existing_value +315 val_315 2008-04-08 existing_value +84 val_84 2008-04-08 existing_value +28 val_28 2008-04-08 existing_value +37 val_37 2008-04-08 existing_value +448 val_448 2008-04-08 existing_value +152 val_152 2008-04-08 existing_value +348 val_348 2008-04-08 existing_value +307 val_307 2008-04-08 existing_value +194 val_194 2008-04-08 existing_value +414 val_414 2008-04-08 existing_value +477 val_477 2008-04-08 existing_value +222 val_222 2008-04-08 existing_value +126 val_126 2008-04-08 existing_value +90 val_90 2008-04-08 existing_value +169 val_169 2008-04-08 existing_value +403 val_403 2008-04-08 existing_value +400 val_400 2008-04-08 existing_value +200 val_200 2008-04-08 existing_value +97 val_97 2008-04-08 existing_value +238 val_238 2008-04-09 11 +86 val_86 2008-04-09 11 +311 val_311 2008-04-09 11 +27 val_27 2008-04-09 11 +165 val_165 2008-04-09 11 +409 val_409 2008-04-09 11 +255 val_255 2008-04-09 11 +278 val_278 2008-04-09 11 +98 val_98 2008-04-09 11 +484 val_484 2008-04-09 11 +265 val_265 2008-04-09 11 +193 val_193 2008-04-09 11 +401 val_401 2008-04-09 11 +150 val_150 2008-04-09 11 +273 val_273 2008-04-09 11 +224 val_224 2008-04-09 11 +369 val_369 2008-04-09 11 +66 val_66 2008-04-09 11 +128 val_128 2008-04-09 11 +213 val_213 2008-04-09 11 +146 val_146 2008-04-09 11 +406 val_406 2008-04-09 11 +429 val_429 2008-04-09 11 +374 val_374 2008-04-09 11 +152 val_152 2008-04-09 11 +469 val_469 2008-04-09 11 +145 val_145 2008-04-09 11 +495 val_495 2008-04-09 11 +37 val_37 2008-04-09 11 +327 val_327 2008-04-09 11 +281 val_281 2008-04-09 11 +277 val_277 2008-04-09 11 +209 val_209 2008-04-09 11 +15 val_15 2008-04-09 11 +82 val_82 2008-04-09 11 +403 val_403 2008-04-09 11 +166 val_166 2008-04-09 11 +417 val_417 2008-04-09 11 +430 val_430 2008-04-09 11 +252 val_252 2008-04-09 11 +292 val_292 2008-04-09 11 +219 val_219 2008-04-09 11 +287 val_287 2008-04-09 11 +153 val_153 2008-04-09 11 +193 val_193 2008-04-09 11 +338 val_338 2008-04-09 11 +446 val_446 2008-04-09 11 +459 val_459 2008-04-09 11 +394 val_394 2008-04-09 11 +237 val_237 2008-04-09 11 +482 val_482 2008-04-09 11 +174 val_174 2008-04-09 11 +413 val_413 2008-04-09 11 +494 val_494 2008-04-09 11 +207 val_207 2008-04-09 11 +199 val_199 2008-04-09 11 +466 val_466 2008-04-09 11 +208 val_208 2008-04-09 11 +174 val_174 2008-04-09 11 +399 val_399 2008-04-09 11 +396 val_396 2008-04-09 11 +247 val_247 2008-04-09 11 +417 val_417 2008-04-09 11 +489 val_489 2008-04-09 11 +162 val_162 2008-04-09 11 +377 val_377 2008-04-09 11 +397 val_397 2008-04-09 11 +309 val_309 2008-04-09 11 +365 val_365 2008-04-09 11 +266 val_266 2008-04-09 11 +439 val_439 2008-04-09 11 +342 val_342 2008-04-09 11 +367 val_367 2008-04-09 11 +325 val_325 2008-04-09 11 +167 val_167 2008-04-09 11 +195 val_195 2008-04-09 11 +475 val_475 2008-04-09 11 +17 val_17 2008-04-09 11 +113 val_113 2008-04-09 11 +155 val_155 2008-04-09 11 +203 val_203 2008-04-09 11 +339 val_339 2008-04-09 11 +0 val_0 2008-04-09 11 +455 val_455 2008-04-09 11 +128 val_128 2008-04-09 11 +311 val_311 2008-04-09 11 +316 val_316 2008-04-09 11 +57 val_57 2008-04-09 11 +302 val_302 2008-04-09 11 +205 val_205 2008-04-09 11 +149 val_149 2008-04-09 11 +438 val_438 2008-04-09 11 +345 val_345 2008-04-09 11 +129 val_129 2008-04-09 11 +170 val_170 2008-04-09 11 +20 val_20 2008-04-09 11 +489 val_489 2008-04-09 11 +157 val_157 2008-04-09 11 +378 val_378 2008-04-09 11 +221 val_221 2008-04-09 11 +92 val_92 2008-04-09 11 +111 val_111 2008-04-09 11 +47 val_47 2008-04-09 11 +72 val_72 2008-04-09 11 +4 val_4 2008-04-09 11 +280 val_280 2008-04-09 11 +35 val_35 2008-04-09 11 +427 val_427 2008-04-09 11 +277 val_277 2008-04-09 11 +208 val_208 2008-04-09 11 +356 val_356 2008-04-09 11 +399 val_399 2008-04-09 11 +169 val_169 2008-04-09 11 +382 val_382 2008-04-09 11 +498 val_498 2008-04-09 11 +125 val_125 2008-04-09 11 +386 val_386 2008-04-09 11 +437 val_437 2008-04-09 11 +469 val_469 2008-04-09 11 +192 val_192 2008-04-09 11 +286 val_286 2008-04-09 11 +187 val_187 2008-04-09 11 +176 val_176 2008-04-09 11 +54 val_54 2008-04-09 11 +459 val_459 2008-04-09 11 +51 val_51 2008-04-09 11 +138 val_138 2008-04-09 11 +103 val_103 2008-04-09 11 +239 val_239 2008-04-09 11 +213 val_213 2008-04-09 11 +216 val_216 2008-04-09 11 +430 val_430 2008-04-09 11 +278 val_278 2008-04-09 11 +176 val_176 2008-04-09 11 +289 val_289 2008-04-09 11 +221 val_221 2008-04-09 11 +65 val_65 2008-04-09 11 +318 val_318 2008-04-09 11 +332 val_332 2008-04-09 11 +311 val_311 2008-04-09 11 +275 val_275 2008-04-09 11 +137 val_137 2008-04-09 11 +241 val_241 2008-04-09 11 +83 val_83 2008-04-09 11 +333 val_333 2008-04-09 11 +180 val_180 2008-04-09 11 +284 val_284 2008-04-09 11 +12 val_12 2008-04-09 11 +230 val_230 2008-04-09 11 +181 val_181 2008-04-09 11 +67 val_67 2008-04-09 11 +260 val_260 2008-04-09 11 +404 val_404 2008-04-09 11 +384 val_384 2008-04-09 11 +489 val_489 2008-04-09 11 +353 val_353 2008-04-09 11 +373 val_373 2008-04-09 11 +272 val_272 2008-04-09 11 +138 val_138 2008-04-09 11 +217 val_217 2008-04-09 11 +84 val_84 2008-04-09 11 +348 val_348 2008-04-09 11 +466 val_466 2008-04-09 11 +58 val_58 2008-04-09 11 +8 val_8 2008-04-09 11 +411 val_411 2008-04-09 11 +230 val_230 2008-04-09 11 +208 val_208 2008-04-09 11 +348 val_348 2008-04-09 11 +24 val_24 2008-04-09 11 +463 val_463 2008-04-09 11 +431 val_431 2008-04-09 11 +179 val_179 2008-04-09 11 +172 val_172 2008-04-09 11 +42 val_42 2008-04-09 11 +129 val_129 2008-04-09 11 +158 val_158 2008-04-09 11 +119 val_119 2008-04-09 11 +496 val_496 2008-04-09 11 +0 val_0 2008-04-09 11 +322 val_322 2008-04-09 11 +197 val_197 2008-04-09 11 +468 val_468 2008-04-09 11 +393 val_393 2008-04-09 11 +454 val_454 2008-04-09 11 +100 val_100 2008-04-09 11 +298 val_298 2008-04-09 11 +199 val_199 2008-04-09 11 +191 val_191 2008-04-09 11 +418 val_418 2008-04-09 11 +96 val_96 2008-04-09 11 +26 val_26 2008-04-09 11 +165 val_165 2008-04-09 11 +327 val_327 2008-04-09 11 +230 val_230 2008-04-09 11 +205 val_205 2008-04-09 11 +120 val_120 2008-04-09 11 +131 val_131 2008-04-09 11 +51 val_51 2008-04-09 11 +404 val_404 2008-04-09 11 +43 val_43 2008-04-09 11 +436 val_436 2008-04-09 11 +156 val_156 2008-04-09 11 +469 val_469 2008-04-09 11 +468 val_468 2008-04-09 11 +308 val_308 2008-04-09 11 +95 val_95 2008-04-09 11 +196 val_196 2008-04-09 11 +288 val_288 2008-04-09 11 +481 val_481 2008-04-09 11 +457 val_457 2008-04-09 11 +98 val_98 2008-04-09 11 +282 val_282 2008-04-09 11 +197 val_197 2008-04-09 11 +187 val_187 2008-04-09 11 +318 val_318 2008-04-09 11 +318 val_318 2008-04-09 11 +409 val_409 2008-04-09 11 +470 val_470 2008-04-09 11 +137 val_137 2008-04-09 11 +369 val_369 2008-04-09 11 +316 val_316 2008-04-09 11 +169 val_169 2008-04-09 11 +413 val_413 2008-04-09 11 +85 val_85 2008-04-09 11 +77 val_77 2008-04-09 11 +0 val_0 2008-04-09 11 +490 val_490 2008-04-09 11 +87 val_87 2008-04-09 11 +364 val_364 2008-04-09 11 +179 val_179 2008-04-09 11 +118 val_118 2008-04-09 11 +134 val_134 2008-04-09 11 +395 val_395 2008-04-09 11 +282 val_282 2008-04-09 11 +138 val_138 2008-04-09 11 +238 val_238 2008-04-09 11 +419 val_419 2008-04-09 11 +15 val_15 2008-04-09 11 +118 val_118 2008-04-09 11 +72 val_72 2008-04-09 11 +90 val_90 2008-04-09 11 +307 val_307 2008-04-09 11 +19 val_19 2008-04-09 11 +435 val_435 2008-04-09 11 +10 val_10 2008-04-09 11 +277 val_277 2008-04-09 11 +273 val_273 2008-04-09 11 +306 val_306 2008-04-09 11 +224 val_224 2008-04-09 11 +309 val_309 2008-04-09 11 +389 val_389 2008-04-09 11 +327 val_327 2008-04-09 11 +242 val_242 2008-04-09 11 +369 val_369 2008-04-09 11 +392 val_392 2008-04-09 11 +272 val_272 2008-04-09 11 +331 val_331 2008-04-09 11 +401 val_401 2008-04-09 11 +242 val_242 2008-04-09 11 +452 val_452 2008-04-09 11 +177 val_177 2008-04-09 11 +226 val_226 2008-04-09 11 +5 val_5 2008-04-09 11 +497 val_497 2008-04-09 11 +402 val_402 2008-04-09 11 +396 val_396 2008-04-09 11 +317 val_317 2008-04-09 11 +395 val_395 2008-04-09 11 +58 val_58 2008-04-09 11 +35 val_35 2008-04-09 11 +336 val_336 2008-04-09 11 +95 val_95 2008-04-09 11 +11 val_11 2008-04-09 11 +168 val_168 2008-04-09 11 +34 val_34 2008-04-09 11 +229 val_229 2008-04-09 11 +233 val_233 2008-04-09 11 +143 val_143 2008-04-09 11 +472 val_472 2008-04-09 11 +322 val_322 2008-04-09 11 +498 val_498 2008-04-09 11 +160 val_160 2008-04-09 11 +195 val_195 2008-04-09 11 +42 val_42 2008-04-09 11 +321 val_321 2008-04-09 11 +430 val_430 2008-04-09 11 +119 val_119 2008-04-09 11 +489 val_489 2008-04-09 11 +458 val_458 2008-04-09 11 +78 val_78 2008-04-09 11 +76 val_76 2008-04-09 11 +41 val_41 2008-04-09 11 +223 val_223 2008-04-09 11 +492 val_492 2008-04-09 11 +149 val_149 2008-04-09 11 +449 val_449 2008-04-09 11 +218 val_218 2008-04-09 11 +228 val_228 2008-04-09 11 +138 val_138 2008-04-09 11 +453 val_453 2008-04-09 11 +30 val_30 2008-04-09 11 +209 val_209 2008-04-09 11 +64 val_64 2008-04-09 11 +468 val_468 2008-04-09 11 +76 val_76 2008-04-09 11 +74 val_74 2008-04-09 11 +342 val_342 2008-04-09 11 +69 val_69 2008-04-09 11 +230 val_230 2008-04-09 11 +33 val_33 2008-04-09 11 +368 val_368 2008-04-09 11 +103 val_103 2008-04-09 11 +296 val_296 2008-04-09 11 +113 val_113 2008-04-09 11 +216 val_216 2008-04-09 11 +367 val_367 2008-04-09 11 +344 val_344 2008-04-09 11 +167 val_167 2008-04-09 11 +274 val_274 2008-04-09 11 +219 val_219 2008-04-09 11 +239 val_239 2008-04-09 11 +485 val_485 2008-04-09 11 +116 val_116 2008-04-09 11 +223 val_223 2008-04-09 11 +256 val_256 2008-04-09 11 +263 val_263 2008-04-09 11 +70 val_70 2008-04-09 11 +487 val_487 2008-04-09 11 +480 val_480 2008-04-09 11 +401 val_401 2008-04-09 11 +288 val_288 2008-04-09 11 +191 val_191 2008-04-09 11 +5 val_5 2008-04-09 11 +244 val_244 2008-04-09 11 +438 val_438 2008-04-09 11 +128 val_128 2008-04-09 11 +467 val_467 2008-04-09 11 +432 val_432 2008-04-09 11 +202 val_202 2008-04-09 11 +316 val_316 2008-04-09 11 +229 val_229 2008-04-09 11 +469 val_469 2008-04-09 11 +463 val_463 2008-04-09 11 +280 val_280 2008-04-09 11 +2 val_2 2008-04-09 11 +35 val_35 2008-04-09 11 +283 val_283 2008-04-09 11 +331 val_331 2008-04-09 11 +235 val_235 2008-04-09 11 +80 val_80 2008-04-09 11 +44 val_44 2008-04-09 11 +193 val_193 2008-04-09 11 +321 val_321 2008-04-09 11 +335 val_335 2008-04-09 11 +104 val_104 2008-04-09 11 +466 val_466 2008-04-09 11 +366 val_366 2008-04-09 11 +175 val_175 2008-04-09 11 +403 val_403 2008-04-09 11 +483 val_483 2008-04-09 11 +53 val_53 2008-04-09 11 +105 val_105 2008-04-09 11 +257 val_257 2008-04-09 11 +406 val_406 2008-04-09 11 +409 val_409 2008-04-09 11 +190 val_190 2008-04-09 11 +406 val_406 2008-04-09 11 +401 val_401 2008-04-09 11 +114 val_114 2008-04-09 11 +258 val_258 2008-04-09 11 +90 val_90 2008-04-09 11 +203 val_203 2008-04-09 11 +262 val_262 2008-04-09 11 +348 val_348 2008-04-09 11 +424 val_424 2008-04-09 11 +12 val_12 2008-04-09 11 +396 val_396 2008-04-09 11 +201 val_201 2008-04-09 11 +217 val_217 2008-04-09 11 +164 val_164 2008-04-09 11 +431 val_431 2008-04-09 11 +454 val_454 2008-04-09 11 +478 val_478 2008-04-09 11 +298 val_298 2008-04-09 11 +125 val_125 2008-04-09 11 +431 val_431 2008-04-09 11 +164 val_164 2008-04-09 11 +424 val_424 2008-04-09 11 +187 val_187 2008-04-09 11 +382 val_382 2008-04-09 11 +5 val_5 2008-04-09 11 +70 val_70 2008-04-09 11 +397 val_397 2008-04-09 11 +480 val_480 2008-04-09 11 +291 val_291 2008-04-09 11 +24 val_24 2008-04-09 11 +351 val_351 2008-04-09 11 +255 val_255 2008-04-09 11 +104 val_104 2008-04-09 11 +70 val_70 2008-04-09 11 +163 val_163 2008-04-09 11 +438 val_438 2008-04-09 11 +119 val_119 2008-04-09 11 +414 val_414 2008-04-09 11 +200 val_200 2008-04-09 11 +491 val_491 2008-04-09 11 +237 val_237 2008-04-09 11 +439 val_439 2008-04-09 11 +360 val_360 2008-04-09 11 +248 val_248 2008-04-09 11 +479 val_479 2008-04-09 11 +305 val_305 2008-04-09 11 +417 val_417 2008-04-09 11 +199 val_199 2008-04-09 11 +444 val_444 2008-04-09 11 +120 val_120 2008-04-09 11 +429 val_429 2008-04-09 11 +169 val_169 2008-04-09 11 +443 val_443 2008-04-09 11 +323 val_323 2008-04-09 11 +325 val_325 2008-04-09 11 +277 val_277 2008-04-09 11 +230 val_230 2008-04-09 11 +478 val_478 2008-04-09 11 +178 val_178 2008-04-09 11 +468 val_468 2008-04-09 11 +310 val_310 2008-04-09 11 +317 val_317 2008-04-09 11 +333 val_333 2008-04-09 11 +493 val_493 2008-04-09 11 +460 val_460 2008-04-09 11 +207 val_207 2008-04-09 11 +249 val_249 2008-04-09 11 +265 val_265 2008-04-09 11 +480 val_480 2008-04-09 11 +83 val_83 2008-04-09 11 +136 val_136 2008-04-09 11 +353 val_353 2008-04-09 11 +172 val_172 2008-04-09 11 +214 val_214 2008-04-09 11 +462 val_462 2008-04-09 11 +233 val_233 2008-04-09 11 +406 val_406 2008-04-09 11 +133 val_133 2008-04-09 11 +175 val_175 2008-04-09 11 +189 val_189 2008-04-09 11 +454 val_454 2008-04-09 11 +375 val_375 2008-04-09 11 +401 val_401 2008-04-09 11 +421 val_421 2008-04-09 11 +407 val_407 2008-04-09 11 +384 val_384 2008-04-09 11 +256 val_256 2008-04-09 11 +26 val_26 2008-04-09 11 +134 val_134 2008-04-09 11 +67 val_67 2008-04-09 11 +384 val_384 2008-04-09 11 +379 val_379 2008-04-09 11 +18 val_18 2008-04-09 11 +462 val_462 2008-04-09 11 +492 val_492 2008-04-09 11 +100 val_100 2008-04-09 11 +298 val_298 2008-04-09 11 +9 val_9 2008-04-09 11 +341 val_341 2008-04-09 11 +498 val_498 2008-04-09 11 +146 val_146 2008-04-09 11 +458 val_458 2008-04-09 11 +362 val_362 2008-04-09 11 +186 val_186 2008-04-09 11 +285 val_285 2008-04-09 11 +348 val_348 2008-04-09 11 +167 val_167 2008-04-09 11 +18 val_18 2008-04-09 11 +273 val_273 2008-04-09 11 +183 val_183 2008-04-09 11 +281 val_281 2008-04-09 11 +344 val_344 2008-04-09 11 +97 val_97 2008-04-09 11 +469 val_469 2008-04-09 11 +315 val_315 2008-04-09 11 +84 val_84 2008-04-09 11 +28 val_28 2008-04-09 11 +37 val_37 2008-04-09 11 +448 val_448 2008-04-09 11 +152 val_152 2008-04-09 11 +348 val_348 2008-04-09 11 +307 val_307 2008-04-09 11 +194 val_194 2008-04-09 11 +414 val_414 2008-04-09 11 +477 val_477 2008-04-09 11 +222 val_222 2008-04-09 11 +126 val_126 2008-04-09 11 +90 val_90 2008-04-09 11 +169 val_169 2008-04-09 11 +403 val_403 2008-04-09 11 +400 val_400 2008-04-09 11 +200 val_200 2008-04-09 11 +97 val_97 2008-04-09 11 +238 val_238 2008-04-09 12 +86 val_86 2008-04-09 12 +311 val_311 2008-04-09 12 +27 val_27 2008-04-09 12 +165 val_165 2008-04-09 12 +409 val_409 2008-04-09 12 +255 val_255 2008-04-09 12 +278 val_278 2008-04-09 12 +98 val_98 2008-04-09 12 +484 val_484 2008-04-09 12 +265 val_265 2008-04-09 12 +193 val_193 2008-04-09 12 +401 val_401 2008-04-09 12 +150 val_150 2008-04-09 12 +273 val_273 2008-04-09 12 +224 val_224 2008-04-09 12 +369 val_369 2008-04-09 12 +66 val_66 2008-04-09 12 +128 val_128 2008-04-09 12 +213 val_213 2008-04-09 12 +146 val_146 2008-04-09 12 +406 val_406 2008-04-09 12 +429 val_429 2008-04-09 12 +374 val_374 2008-04-09 12 +152 val_152 2008-04-09 12 +469 val_469 2008-04-09 12 +145 val_145 2008-04-09 12 +495 val_495 2008-04-09 12 +37 val_37 2008-04-09 12 +327 val_327 2008-04-09 12 +281 val_281 2008-04-09 12 +277 val_277 2008-04-09 12 +209 val_209 2008-04-09 12 +15 val_15 2008-04-09 12 +82 val_82 2008-04-09 12 +403 val_403 2008-04-09 12 +166 val_166 2008-04-09 12 +417 val_417 2008-04-09 12 +430 val_430 2008-04-09 12 +252 val_252 2008-04-09 12 +292 val_292 2008-04-09 12 +219 val_219 2008-04-09 12 +287 val_287 2008-04-09 12 +153 val_153 2008-04-09 12 +193 val_193 2008-04-09 12 +338 val_338 2008-04-09 12 +446 val_446 2008-04-09 12 +459 val_459 2008-04-09 12 +394 val_394 2008-04-09 12 +237 val_237 2008-04-09 12 +482 val_482 2008-04-09 12 +174 val_174 2008-04-09 12 +413 val_413 2008-04-09 12 +494 val_494 2008-04-09 12 +207 val_207 2008-04-09 12 +199 val_199 2008-04-09 12 +466 val_466 2008-04-09 12 +208 val_208 2008-04-09 12 +174 val_174 2008-04-09 12 +399 val_399 2008-04-09 12 +396 val_396 2008-04-09 12 +247 val_247 2008-04-09 12 +417 val_417 2008-04-09 12 +489 val_489 2008-04-09 12 +162 val_162 2008-04-09 12 +377 val_377 2008-04-09 12 +397 val_397 2008-04-09 12 +309 val_309 2008-04-09 12 +365 val_365 2008-04-09 12 +266 val_266 2008-04-09 12 +439 val_439 2008-04-09 12 +342 val_342 2008-04-09 12 +367 val_367 2008-04-09 12 +325 val_325 2008-04-09 12 +167 val_167 2008-04-09 12 +195 val_195 2008-04-09 12 +475 val_475 2008-04-09 12 +17 val_17 2008-04-09 12 +113 val_113 2008-04-09 12 +155 val_155 2008-04-09 12 +203 val_203 2008-04-09 12 +339 val_339 2008-04-09 12 +0 val_0 2008-04-09 12 +455 val_455 2008-04-09 12 +128 val_128 2008-04-09 12 +311 val_311 2008-04-09 12 +316 val_316 2008-04-09 12 +57 val_57 2008-04-09 12 +302 val_302 2008-04-09 12 +205 val_205 2008-04-09 12 +149 val_149 2008-04-09 12 +438 val_438 2008-04-09 12 +345 val_345 2008-04-09 12 +129 val_129 2008-04-09 12 +170 val_170 2008-04-09 12 +20 val_20 2008-04-09 12 +489 val_489 2008-04-09 12 +157 val_157 2008-04-09 12 +378 val_378 2008-04-09 12 +221 val_221 2008-04-09 12 +92 val_92 2008-04-09 12 +111 val_111 2008-04-09 12 +47 val_47 2008-04-09 12 +72 val_72 2008-04-09 12 +4 val_4 2008-04-09 12 +280 val_280 2008-04-09 12 +35 val_35 2008-04-09 12 +427 val_427 2008-04-09 12 +277 val_277 2008-04-09 12 +208 val_208 2008-04-09 12 +356 val_356 2008-04-09 12 +399 val_399 2008-04-09 12 +169 val_169 2008-04-09 12 +382 val_382 2008-04-09 12 +498 val_498 2008-04-09 12 +125 val_125 2008-04-09 12 +386 val_386 2008-04-09 12 +437 val_437 2008-04-09 12 +469 val_469 2008-04-09 12 +192 val_192 2008-04-09 12 +286 val_286 2008-04-09 12 +187 val_187 2008-04-09 12 +176 val_176 2008-04-09 12 +54 val_54 2008-04-09 12 +459 val_459 2008-04-09 12 +51 val_51 2008-04-09 12 +138 val_138 2008-04-09 12 +103 val_103 2008-04-09 12 +239 val_239 2008-04-09 12 +213 val_213 2008-04-09 12 +216 val_216 2008-04-09 12 +430 val_430 2008-04-09 12 +278 val_278 2008-04-09 12 +176 val_176 2008-04-09 12 +289 val_289 2008-04-09 12 +221 val_221 2008-04-09 12 +65 val_65 2008-04-09 12 +318 val_318 2008-04-09 12 +332 val_332 2008-04-09 12 +311 val_311 2008-04-09 12 +275 val_275 2008-04-09 12 +137 val_137 2008-04-09 12 +241 val_241 2008-04-09 12 +83 val_83 2008-04-09 12 +333 val_333 2008-04-09 12 +180 val_180 2008-04-09 12 +284 val_284 2008-04-09 12 +12 val_12 2008-04-09 12 +230 val_230 2008-04-09 12 +181 val_181 2008-04-09 12 +67 val_67 2008-04-09 12 +260 val_260 2008-04-09 12 +404 val_404 2008-04-09 12 +384 val_384 2008-04-09 12 +489 val_489 2008-04-09 12 +353 val_353 2008-04-09 12 +373 val_373 2008-04-09 12 +272 val_272 2008-04-09 12 +138 val_138 2008-04-09 12 +217 val_217 2008-04-09 12 +84 val_84 2008-04-09 12 +348 val_348 2008-04-09 12 +466 val_466 2008-04-09 12 +58 val_58 2008-04-09 12 +8 val_8 2008-04-09 12 +411 val_411 2008-04-09 12 +230 val_230 2008-04-09 12 +208 val_208 2008-04-09 12 +348 val_348 2008-04-09 12 +24 val_24 2008-04-09 12 +463 val_463 2008-04-09 12 +431 val_431 2008-04-09 12 +179 val_179 2008-04-09 12 +172 val_172 2008-04-09 12 +42 val_42 2008-04-09 12 +129 val_129 2008-04-09 12 +158 val_158 2008-04-09 12 +119 val_119 2008-04-09 12 +496 val_496 2008-04-09 12 +0 val_0 2008-04-09 12 +322 val_322 2008-04-09 12 +197 val_197 2008-04-09 12 +468 val_468 2008-04-09 12 +393 val_393 2008-04-09 12 +454 val_454 2008-04-09 12 +100 val_100 2008-04-09 12 +298 val_298 2008-04-09 12 +199 val_199 2008-04-09 12 +191 val_191 2008-04-09 12 +418 val_418 2008-04-09 12 +96 val_96 2008-04-09 12 +26 val_26 2008-04-09 12 +165 val_165 2008-04-09 12 +327 val_327 2008-04-09 12 +230 val_230 2008-04-09 12 +205 val_205 2008-04-09 12 +120 val_120 2008-04-09 12 +131 val_131 2008-04-09 12 +51 val_51 2008-04-09 12 +404 val_404 2008-04-09 12 +43 val_43 2008-04-09 12 +436 val_436 2008-04-09 12 +156 val_156 2008-04-09 12 +469 val_469 2008-04-09 12 +468 val_468 2008-04-09 12 +308 val_308 2008-04-09 12 +95 val_95 2008-04-09 12 +196 val_196 2008-04-09 12 +288 val_288 2008-04-09 12 +481 val_481 2008-04-09 12 +457 val_457 2008-04-09 12 +98 val_98 2008-04-09 12 +282 val_282 2008-04-09 12 +197 val_197 2008-04-09 12 +187 val_187 2008-04-09 12 +318 val_318 2008-04-09 12 +318 val_318 2008-04-09 12 +409 val_409 2008-04-09 12 +470 val_470 2008-04-09 12 +137 val_137 2008-04-09 12 +369 val_369 2008-04-09 12 +316 val_316 2008-04-09 12 +169 val_169 2008-04-09 12 +413 val_413 2008-04-09 12 +85 val_85 2008-04-09 12 +77 val_77 2008-04-09 12 +0 val_0 2008-04-09 12 +490 val_490 2008-04-09 12 +87 val_87 2008-04-09 12 +364 val_364 2008-04-09 12 +179 val_179 2008-04-09 12 +118 val_118 2008-04-09 12 +134 val_134 2008-04-09 12 +395 val_395 2008-04-09 12 +282 val_282 2008-04-09 12 +138 val_138 2008-04-09 12 +238 val_238 2008-04-09 12 +419 val_419 2008-04-09 12 +15 val_15 2008-04-09 12 +118 val_118 2008-04-09 12 +72 val_72 2008-04-09 12 +90 val_90 2008-04-09 12 +307 val_307 2008-04-09 12 +19 val_19 2008-04-09 12 +435 val_435 2008-04-09 12 +10 val_10 2008-04-09 12 +277 val_277 2008-04-09 12 +273 val_273 2008-04-09 12 +306 val_306 2008-04-09 12 +224 val_224 2008-04-09 12 +309 val_309 2008-04-09 12 +389 val_389 2008-04-09 12 +327 val_327 2008-04-09 12 +242 val_242 2008-04-09 12 +369 val_369 2008-04-09 12 +392 val_392 2008-04-09 12 +272 val_272 2008-04-09 12 +331 val_331 2008-04-09 12 +401 val_401 2008-04-09 12 +242 val_242 2008-04-09 12 +452 val_452 2008-04-09 12 +177 val_177 2008-04-09 12 +226 val_226 2008-04-09 12 +5 val_5 2008-04-09 12 +497 val_497 2008-04-09 12 +402 val_402 2008-04-09 12 +396 val_396 2008-04-09 12 +317 val_317 2008-04-09 12 +395 val_395 2008-04-09 12 +58 val_58 2008-04-09 12 +35 val_35 2008-04-09 12 +336 val_336 2008-04-09 12 +95 val_95 2008-04-09 12 +11 val_11 2008-04-09 12 +168 val_168 2008-04-09 12 +34 val_34 2008-04-09 12 +229 val_229 2008-04-09 12 +233 val_233 2008-04-09 12 +143 val_143 2008-04-09 12 +472 val_472 2008-04-09 12 +322 val_322 2008-04-09 12 +498 val_498 2008-04-09 12 +160 val_160 2008-04-09 12 +195 val_195 2008-04-09 12 +42 val_42 2008-04-09 12 +321 val_321 2008-04-09 12 +430 val_430 2008-04-09 12 +119 val_119 2008-04-09 12 +489 val_489 2008-04-09 12 +458 val_458 2008-04-09 12 +78 val_78 2008-04-09 12 +76 val_76 2008-04-09 12 +41 val_41 2008-04-09 12 +223 val_223 2008-04-09 12 +492 val_492 2008-04-09 12 +149 val_149 2008-04-09 12 +449 val_449 2008-04-09 12 +218 val_218 2008-04-09 12 +228 val_228 2008-04-09 12 +138 val_138 2008-04-09 12 +453 val_453 2008-04-09 12 +30 val_30 2008-04-09 12 +209 val_209 2008-04-09 12 +64 val_64 2008-04-09 12 +468 val_468 2008-04-09 12 +76 val_76 2008-04-09 12 +74 val_74 2008-04-09 12 +342 val_342 2008-04-09 12 +69 val_69 2008-04-09 12 +230 val_230 2008-04-09 12 +33 val_33 2008-04-09 12 +368 val_368 2008-04-09 12 +103 val_103 2008-04-09 12 +296 val_296 2008-04-09 12 +113 val_113 2008-04-09 12 +216 val_216 2008-04-09 12 +367 val_367 2008-04-09 12 +344 val_344 2008-04-09 12 +167 val_167 2008-04-09 12 +274 val_274 2008-04-09 12 +219 val_219 2008-04-09 12 +239 val_239 2008-04-09 12 +485 val_485 2008-04-09 12 +116 val_116 2008-04-09 12 +223 val_223 2008-04-09 12 +256 val_256 2008-04-09 12 +263 val_263 2008-04-09 12 +70 val_70 2008-04-09 12 +487 val_487 2008-04-09 12 +480 val_480 2008-04-09 12 +401 val_401 2008-04-09 12 +288 val_288 2008-04-09 12 +191 val_191 2008-04-09 12 +5 val_5 2008-04-09 12 +244 val_244 2008-04-09 12 +438 val_438 2008-04-09 12 +128 val_128 2008-04-09 12 +467 val_467 2008-04-09 12 +432 val_432 2008-04-09 12 +202 val_202 2008-04-09 12 +316 val_316 2008-04-09 12 +229 val_229 2008-04-09 12 +469 val_469 2008-04-09 12 +463 val_463 2008-04-09 12 +280 val_280 2008-04-09 12 +2 val_2 2008-04-09 12 +35 val_35 2008-04-09 12 +283 val_283 2008-04-09 12 +331 val_331 2008-04-09 12 +235 val_235 2008-04-09 12 +80 val_80 2008-04-09 12 +44 val_44 2008-04-09 12 +193 val_193 2008-04-09 12 +321 val_321 2008-04-09 12 +335 val_335 2008-04-09 12 +104 val_104 2008-04-09 12 +466 val_466 2008-04-09 12 +366 val_366 2008-04-09 12 +175 val_175 2008-04-09 12 +403 val_403 2008-04-09 12 +483 val_483 2008-04-09 12 +53 val_53 2008-04-09 12 +105 val_105 2008-04-09 12 +257 val_257 2008-04-09 12 +406 val_406 2008-04-09 12 +409 val_409 2008-04-09 12 +190 val_190 2008-04-09 12 +406 val_406 2008-04-09 12 +401 val_401 2008-04-09 12 +114 val_114 2008-04-09 12 +258 val_258 2008-04-09 12 +90 val_90 2008-04-09 12 +203 val_203 2008-04-09 12 +262 val_262 2008-04-09 12 +348 val_348 2008-04-09 12 +424 val_424 2008-04-09 12 +12 val_12 2008-04-09 12 +396 val_396 2008-04-09 12 +201 val_201 2008-04-09 12 +217 val_217 2008-04-09 12 +164 val_164 2008-04-09 12 +431 val_431 2008-04-09 12 +454 val_454 2008-04-09 12 +478 val_478 2008-04-09 12 +298 val_298 2008-04-09 12 +125 val_125 2008-04-09 12 +431 val_431 2008-04-09 12 +164 val_164 2008-04-09 12 +424 val_424 2008-04-09 12 +187 val_187 2008-04-09 12 +382 val_382 2008-04-09 12 +5 val_5 2008-04-09 12 +70 val_70 2008-04-09 12 +397 val_397 2008-04-09 12 +480 val_480 2008-04-09 12 +291 val_291 2008-04-09 12 +24 val_24 2008-04-09 12 +351 val_351 2008-04-09 12 +255 val_255 2008-04-09 12 +104 val_104 2008-04-09 12 +70 val_70 2008-04-09 12 +163 val_163 2008-04-09 12 +438 val_438 2008-04-09 12 +119 val_119 2008-04-09 12 +414 val_414 2008-04-09 12 +200 val_200 2008-04-09 12 +491 val_491 2008-04-09 12 +237 val_237 2008-04-09 12 +439 val_439 2008-04-09 12 +360 val_360 2008-04-09 12 +248 val_248 2008-04-09 12 +479 val_479 2008-04-09 12 +305 val_305 2008-04-09 12 +417 val_417 2008-04-09 12 +199 val_199 2008-04-09 12 +444 val_444 2008-04-09 12 +120 val_120 2008-04-09 12 +429 val_429 2008-04-09 12 +169 val_169 2008-04-09 12 +443 val_443 2008-04-09 12 +323 val_323 2008-04-09 12 +325 val_325 2008-04-09 12 +277 val_277 2008-04-09 12 +230 val_230 2008-04-09 12 +478 val_478 2008-04-09 12 +178 val_178 2008-04-09 12 +468 val_468 2008-04-09 12 +310 val_310 2008-04-09 12 +317 val_317 2008-04-09 12 +333 val_333 2008-04-09 12 +493 val_493 2008-04-09 12 +460 val_460 2008-04-09 12 +207 val_207 2008-04-09 12 +249 val_249 2008-04-09 12 +265 val_265 2008-04-09 12 +480 val_480 2008-04-09 12 +83 val_83 2008-04-09 12 +136 val_136 2008-04-09 12 +353 val_353 2008-04-09 12 +172 val_172 2008-04-09 12 +214 val_214 2008-04-09 12 +462 val_462 2008-04-09 12 +233 val_233 2008-04-09 12 +406 val_406 2008-04-09 12 +133 val_133 2008-04-09 12 +175 val_175 2008-04-09 12 +189 val_189 2008-04-09 12 +454 val_454 2008-04-09 12 +375 val_375 2008-04-09 12 +401 val_401 2008-04-09 12 +421 val_421 2008-04-09 12 +407 val_407 2008-04-09 12 +384 val_384 2008-04-09 12 +256 val_256 2008-04-09 12 +26 val_26 2008-04-09 12 +134 val_134 2008-04-09 12 +67 val_67 2008-04-09 12 +384 val_384 2008-04-09 12 +379 val_379 2008-04-09 12 +18 val_18 2008-04-09 12 +462 val_462 2008-04-09 12 +492 val_492 2008-04-09 12 +100 val_100 2008-04-09 12 +298 val_298 2008-04-09 12 +9 val_9 2008-04-09 12 +341 val_341 2008-04-09 12 +498 val_498 2008-04-09 12 +146 val_146 2008-04-09 12 +458 val_458 2008-04-09 12 +362 val_362 2008-04-09 12 +186 val_186 2008-04-09 12 +285 val_285 2008-04-09 12 +348 val_348 2008-04-09 12 +167 val_167 2008-04-09 12 +18 val_18 2008-04-09 12 +273 val_273 2008-04-09 12 +183 val_183 2008-04-09 12 +281 val_281 2008-04-09 12 +344 val_344 2008-04-09 12 +97 val_97 2008-04-09 12 +469 val_469 2008-04-09 12 +315 val_315 2008-04-09 12 +84 val_84 2008-04-09 12 +28 val_28 2008-04-09 12 +37 val_37 2008-04-09 12 +448 val_448 2008-04-09 12 +152 val_152 2008-04-09 12 +348 val_348 2008-04-09 12 +307 val_307 2008-04-09 12 +194 val_194 2008-04-09 12 +414 val_414 2008-04-09 12 +477 val_477 2008-04-09 12 +222 val_222 2008-04-09 12 +126 val_126 2008-04-09 12 +90 val_90 2008-04-09 12 +169 val_169 2008-04-09 12 +403 val_403 2008-04-09 12 +400 val_400 2008-04-09 12 +200 val_200 2008-04-09 12 +97 val_97 2008-04-09 12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-2-9893d8c02ab8bd59d3e9fb0665f508bd b/sql/hive/src/test/resources/golden/load_dyn_part4-2-9893d8c02ab8bd59d3e9fb0665f508bd new file mode 100644 index 0000000000000..8017948fc5f2f --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part4-2-9893d8c02ab8bd59d3e9fb0665f508bd @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part4, dbName:default, owner:marmbrus, createTime:1390899619, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part4, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{p3=v3, transient_lastDdlTime=1390899619}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part4-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part4-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-4-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part4-4-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part4-4-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-5-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part4-5-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part4-5-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-6-2869679fad49c57ba08169ea32271379 b/sql/hive/src/test/resources/golden/load_dyn_part4-6-2869679fad49c57ba08169ea32271379 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-7-f31c7a56b50a5ba425e85480e13c39e1 b/sql/hive/src/test/resources/golden/load_dyn_part4-7-f31c7a56b50a5ba425e85480e13c39e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-8-cdff1da8e9e1e9242c49d895751af0a9 b/sql/hive/src/test/resources/golden/load_dyn_part4-8-cdff1da8e9e1e9242c49d895751af0a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part4-9-3c344e5840c1df354a2a71722c27f0a0 b/sql/hive/src/test/resources/golden/load_dyn_part4-9-3c344e5840c1df354a2a71722c27f0a0 new file mode 100644 index 0000000000000..4cf846d3d3559 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part4-9-3c344e5840c1df354a2a71722c27f0a0 @@ -0,0 +1,5 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-08/hr=existing_value +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-0-d9a2e2fa436aaf37e91ccf52e04226b3 b/sql/hive/src/test/resources/golden/load_dyn_part5-0-d9a2e2fa436aaf37e91ccf52e04226b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-1-9a4d1f6a14227bb66bd01557a464da8b b/sql/hive/src/test/resources/golden/load_dyn_part5-1-9a4d1f6a14227bb66bd01557a464da8b new file mode 100644 index 0000000000000..3f5f6b6f83715 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-1-9a4d1f6a14227bb66bd01557a464da8b @@ -0,0 +1,9 @@ +key string None +value string None + +# Partition Information +# col_name data_type comment + +value string None + +Detailed Table Information Table(tableName:nzhang_part5, dbName:default, owner:marmbrus, createTime:1390899637, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part5, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:value, type:string, comment:null)], parameters:{p3=v3, transient_lastDdlTime=1390899637}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-10-be7953ca7bd26623d3897f5060e13737 b/sql/hive/src/test/resources/golden/load_dyn_part5-10-be7953ca7bd26623d3897f5060e13737 new file mode 100644 index 0000000000000..2dcdfd1217ced --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-10-be7953ca7bd26623d3897f5060e13737 @@ -0,0 +1,3 @@ +0 val_0 +0 val_0 +0 val_0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-11-6da8fa1e639db104128ba7e2f88f764d b/sql/hive/src/test/resources/golden/load_dyn_part5-11-6da8fa1e639db104128ba7e2f88f764d new file mode 100644 index 0000000000000..dcd1d8643e3cb --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-11-6da8fa1e639db104128ba7e2f88f764d @@ -0,0 +1 @@ +2 val_2 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-2-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part5-2-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-2-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-3-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part5-3-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-3-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-4-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part5-4-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-4-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-5-67f2c7448db01b6804c846f9f4f76928 b/sql/hive/src/test/resources/golden/load_dyn_part5-5-67f2c7448db01b6804c846f9f4f76928 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-5-67f2c7448db01b6804c846f9f4f76928 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-6-f6dcb13dead8bb4c003eb19099908190 b/sql/hive/src/test/resources/golden/load_dyn_part5-6-f6dcb13dead8bb4c003eb19099908190 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-6-f6dcb13dead8bb4c003eb19099908190 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-7-3ca3cc56a27939d62db1b52d86309df b/sql/hive/src/test/resources/golden/load_dyn_part5-7-3ca3cc56a27939d62db1b52d86309df new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-8-669ccdcc0e0f3162ee44d51ff449fdd9 b/sql/hive/src/test/resources/golden/load_dyn_part5-8-669ccdcc0e0f3162ee44d51ff449fdd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part5-9-854026d1c2add692f2f90ad74668bbf6 b/sql/hive/src/test/resources/golden/load_dyn_part5-9-854026d1c2add692f2f90ad74668bbf6 new file mode 100644 index 0000000000000..414ce6d5a4941 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part5-9-854026d1c2add692f2f90ad74668bbf6 @@ -0,0 +1,309 @@ +value=val_0 +value=val_10 +value=val_100 +value=val_103 +value=val_104 +value=val_105 +value=val_11 +value=val_111 +value=val_113 +value=val_114 +value=val_116 +value=val_118 +value=val_119 +value=val_12 +value=val_120 +value=val_125 +value=val_126 +value=val_128 +value=val_129 +value=val_131 +value=val_133 +value=val_134 +value=val_136 +value=val_137 +value=val_138 +value=val_143 +value=val_145 +value=val_146 +value=val_149 +value=val_15 +value=val_150 +value=val_152 +value=val_153 +value=val_155 +value=val_156 +value=val_157 +value=val_158 +value=val_160 +value=val_162 +value=val_163 +value=val_164 +value=val_165 +value=val_166 +value=val_167 +value=val_168 +value=val_169 +value=val_17 +value=val_170 +value=val_172 +value=val_174 +value=val_175 +value=val_176 +value=val_177 +value=val_178 +value=val_179 +value=val_18 +value=val_180 +value=val_181 +value=val_183 +value=val_186 +value=val_187 +value=val_189 +value=val_19 +value=val_190 +value=val_191 +value=val_192 +value=val_193 +value=val_194 +value=val_195 +value=val_196 +value=val_197 +value=val_199 +value=val_2 +value=val_20 +value=val_200 +value=val_201 +value=val_202 +value=val_203 +value=val_205 +value=val_207 +value=val_208 +value=val_209 +value=val_213 +value=val_214 +value=val_216 +value=val_217 +value=val_218 +value=val_219 +value=val_221 +value=val_222 +value=val_223 +value=val_224 +value=val_226 +value=val_228 +value=val_229 +value=val_230 +value=val_233 +value=val_235 +value=val_237 +value=val_238 +value=val_239 +value=val_24 +value=val_241 +value=val_242 +value=val_244 +value=val_247 +value=val_248 +value=val_249 +value=val_252 +value=val_255 +value=val_256 +value=val_257 +value=val_258 +value=val_26 +value=val_260 +value=val_262 +value=val_263 +value=val_265 +value=val_266 +value=val_27 +value=val_272 +value=val_273 +value=val_274 +value=val_275 +value=val_277 +value=val_278 +value=val_28 +value=val_280 +value=val_281 +value=val_282 +value=val_283 +value=val_284 +value=val_285 +value=val_286 +value=val_287 +value=val_288 +value=val_289 +value=val_291 +value=val_292 +value=val_296 +value=val_298 +value=val_30 +value=val_302 +value=val_305 +value=val_306 +value=val_307 +value=val_308 +value=val_309 +value=val_310 +value=val_311 +value=val_315 +value=val_316 +value=val_317 +value=val_318 +value=val_321 +value=val_322 +value=val_323 +value=val_325 +value=val_327 +value=val_33 +value=val_331 +value=val_332 +value=val_333 +value=val_335 +value=val_336 +value=val_338 +value=val_339 +value=val_34 +value=val_341 +value=val_342 +value=val_344 +value=val_345 +value=val_348 +value=val_35 +value=val_351 +value=val_353 +value=val_356 +value=val_360 +value=val_362 +value=val_364 +value=val_365 +value=val_366 +value=val_367 +value=val_368 +value=val_369 +value=val_37 +value=val_373 +value=val_374 +value=val_375 +value=val_377 +value=val_378 +value=val_379 +value=val_382 +value=val_384 +value=val_386 +value=val_389 +value=val_392 +value=val_393 +value=val_394 +value=val_395 +value=val_396 +value=val_397 +value=val_399 +value=val_4 +value=val_400 +value=val_401 +value=val_402 +value=val_403 +value=val_404 +value=val_406 +value=val_407 +value=val_409 +value=val_41 +value=val_411 +value=val_413 +value=val_414 +value=val_417 +value=val_418 +value=val_419 +value=val_42 +value=val_421 +value=val_424 +value=val_427 +value=val_429 +value=val_43 +value=val_430 +value=val_431 +value=val_432 +value=val_435 +value=val_436 +value=val_437 +value=val_438 +value=val_439 +value=val_44 +value=val_443 +value=val_444 +value=val_446 +value=val_448 +value=val_449 +value=val_452 +value=val_453 +value=val_454 +value=val_455 +value=val_457 +value=val_458 +value=val_459 +value=val_460 +value=val_462 +value=val_463 +value=val_466 +value=val_467 +value=val_468 +value=val_469 +value=val_47 +value=val_470 +value=val_472 +value=val_475 +value=val_477 +value=val_478 +value=val_479 +value=val_480 +value=val_481 +value=val_482 +value=val_483 +value=val_484 +value=val_485 +value=val_487 +value=val_489 +value=val_490 +value=val_491 +value=val_492 +value=val_493 +value=val_494 +value=val_495 +value=val_496 +value=val_497 +value=val_498 +value=val_5 +value=val_51 +value=val_53 +value=val_54 +value=val_57 +value=val_58 +value=val_64 +value=val_65 +value=val_66 +value=val_67 +value=val_69 +value=val_70 +value=val_72 +value=val_74 +value=val_76 +value=val_77 +value=val_78 +value=val_8 +value=val_80 +value=val_82 +value=val_83 +value=val_84 +value=val_85 +value=val_86 +value=val_87 +value=val_9 +value=val_90 +value=val_92 +value=val_95 +value=val_96 +value=val_97 +value=val_98 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part6-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..8c43153cf66f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part6-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-1-9657a48a4266c176f84c7aaf115fbc30 b/sql/hive/src/test/resources/golden/load_dyn_part6-1-9657a48a4266c176f84c7aaf115fbc30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-2-779aa345cf2875089312ec26b046415d b/sql/hive/src/test/resources/golden/load_dyn_part6-2-779aa345cf2875089312ec26b046415d new file mode 100644 index 0000000000000..4b9e5b31f4401 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part6-2-779aa345cf2875089312ec26b046415d @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part6, dbName:default, owner:marmbrus, createTime:1390899654, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part6, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{p3=v3, transient_lastDdlTime=1390899654}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part6-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part6-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/load_dyn_part6-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part6-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-5-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part6-5-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part6-5-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-6-559ff31031a6a0ff6959655c6acd07a3 b/sql/hive/src/test/resources/golden/load_dyn_part6-6-559ff31031a6a0ff6959655c6acd07a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-7-17cbb9aeb8dfaa3f4ba31f4b5d871dd1 b/sql/hive/src/test/resources/golden/load_dyn_part6-7-17cbb9aeb8dfaa3f4ba31f4b5d871dd1 new file mode 100644 index 0000000000000..7df5f90186db3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part6-7-17cbb9aeb8dfaa3f4ba31f4b5d871dd1 @@ -0,0 +1,1000 @@ +238 val_238 2010-03-03 11 +86 val_86 2010-03-03 11 +311 val_311 2010-03-03 11 +27 val_27 2010-03-03 11 +165 val_165 2010-03-03 11 +409 val_409 2010-03-03 11 +255 val_255 2010-03-03 11 +278 val_278 2010-03-03 11 +98 val_98 2010-03-03 11 +484 val_484 2010-03-03 11 +265 val_265 2010-03-03 11 +193 val_193 2010-03-03 11 +401 val_401 2010-03-03 11 +150 val_150 2010-03-03 11 +273 val_273 2010-03-03 11 +224 val_224 2010-03-03 11 +369 val_369 2010-03-03 11 +66 val_66 2010-03-03 11 +128 val_128 2010-03-03 11 +213 val_213 2010-03-03 11 +146 val_146 2010-03-03 11 +406 val_406 2010-03-03 11 +429 val_429 2010-03-03 11 +374 val_374 2010-03-03 11 +152 val_152 2010-03-03 11 +469 val_469 2010-03-03 11 +145 val_145 2010-03-03 11 +495 val_495 2010-03-03 11 +37 val_37 2010-03-03 11 +327 val_327 2010-03-03 11 +281 val_281 2010-03-03 11 +277 val_277 2010-03-03 11 +209 val_209 2010-03-03 11 +15 val_15 2010-03-03 11 +82 val_82 2010-03-03 11 +403 val_403 2010-03-03 11 +166 val_166 2010-03-03 11 +417 val_417 2010-03-03 11 +430 val_430 2010-03-03 11 +252 val_252 2010-03-03 11 +292 val_292 2010-03-03 11 +219 val_219 2010-03-03 11 +287 val_287 2010-03-03 11 +153 val_153 2010-03-03 11 +193 val_193 2010-03-03 11 +338 val_338 2010-03-03 11 +446 val_446 2010-03-03 11 +459 val_459 2010-03-03 11 +394 val_394 2010-03-03 11 +237 val_237 2010-03-03 11 +482 val_482 2010-03-03 11 +174 val_174 2010-03-03 11 +413 val_413 2010-03-03 11 +494 val_494 2010-03-03 11 +207 val_207 2010-03-03 11 +199 val_199 2010-03-03 11 +466 val_466 2010-03-03 11 +208 val_208 2010-03-03 11 +174 val_174 2010-03-03 11 +399 val_399 2010-03-03 11 +396 val_396 2010-03-03 11 +247 val_247 2010-03-03 11 +417 val_417 2010-03-03 11 +489 val_489 2010-03-03 11 +162 val_162 2010-03-03 11 +377 val_377 2010-03-03 11 +397 val_397 2010-03-03 11 +309 val_309 2010-03-03 11 +365 val_365 2010-03-03 11 +266 val_266 2010-03-03 11 +439 val_439 2010-03-03 11 +342 val_342 2010-03-03 11 +367 val_367 2010-03-03 11 +325 val_325 2010-03-03 11 +167 val_167 2010-03-03 11 +195 val_195 2010-03-03 11 +475 val_475 2010-03-03 11 +17 val_17 2010-03-03 11 +113 val_113 2010-03-03 11 +155 val_155 2010-03-03 11 +203 val_203 2010-03-03 11 +339 val_339 2010-03-03 11 +0 val_0 2010-03-03 11 +455 val_455 2010-03-03 11 +128 val_128 2010-03-03 11 +311 val_311 2010-03-03 11 +316 val_316 2010-03-03 11 +57 val_57 2010-03-03 11 +302 val_302 2010-03-03 11 +205 val_205 2010-03-03 11 +149 val_149 2010-03-03 11 +438 val_438 2010-03-03 11 +345 val_345 2010-03-03 11 +129 val_129 2010-03-03 11 +170 val_170 2010-03-03 11 +20 val_20 2010-03-03 11 +489 val_489 2010-03-03 11 +157 val_157 2010-03-03 11 +378 val_378 2010-03-03 11 +221 val_221 2010-03-03 11 +92 val_92 2010-03-03 11 +111 val_111 2010-03-03 11 +47 val_47 2010-03-03 11 +72 val_72 2010-03-03 11 +4 val_4 2010-03-03 11 +280 val_280 2010-03-03 11 +35 val_35 2010-03-03 11 +427 val_427 2010-03-03 11 +277 val_277 2010-03-03 11 +208 val_208 2010-03-03 11 +356 val_356 2010-03-03 11 +399 val_399 2010-03-03 11 +169 val_169 2010-03-03 11 +382 val_382 2010-03-03 11 +498 val_498 2010-03-03 11 +125 val_125 2010-03-03 11 +386 val_386 2010-03-03 11 +437 val_437 2010-03-03 11 +469 val_469 2010-03-03 11 +192 val_192 2010-03-03 11 +286 val_286 2010-03-03 11 +187 val_187 2010-03-03 11 +176 val_176 2010-03-03 11 +54 val_54 2010-03-03 11 +459 val_459 2010-03-03 11 +51 val_51 2010-03-03 11 +138 val_138 2010-03-03 11 +103 val_103 2010-03-03 11 +239 val_239 2010-03-03 11 +213 val_213 2010-03-03 11 +216 val_216 2010-03-03 11 +430 val_430 2010-03-03 11 +278 val_278 2010-03-03 11 +176 val_176 2010-03-03 11 +289 val_289 2010-03-03 11 +221 val_221 2010-03-03 11 +65 val_65 2010-03-03 11 +318 val_318 2010-03-03 11 +332 val_332 2010-03-03 11 +311 val_311 2010-03-03 11 +275 val_275 2010-03-03 11 +137 val_137 2010-03-03 11 +241 val_241 2010-03-03 11 +83 val_83 2010-03-03 11 +333 val_333 2010-03-03 11 +180 val_180 2010-03-03 11 +284 val_284 2010-03-03 11 +12 val_12 2010-03-03 11 +230 val_230 2010-03-03 11 +181 val_181 2010-03-03 11 +67 val_67 2010-03-03 11 +260 val_260 2010-03-03 11 +404 val_404 2010-03-03 11 +384 val_384 2010-03-03 11 +489 val_489 2010-03-03 11 +353 val_353 2010-03-03 11 +373 val_373 2010-03-03 11 +272 val_272 2010-03-03 11 +138 val_138 2010-03-03 11 +217 val_217 2010-03-03 11 +84 val_84 2010-03-03 11 +348 val_348 2010-03-03 11 +466 val_466 2010-03-03 11 +58 val_58 2010-03-03 11 +8 val_8 2010-03-03 11 +411 val_411 2010-03-03 11 +230 val_230 2010-03-03 11 +208 val_208 2010-03-03 11 +348 val_348 2010-03-03 11 +24 val_24 2010-03-03 11 +463 val_463 2010-03-03 11 +431 val_431 2010-03-03 11 +179 val_179 2010-03-03 11 +172 val_172 2010-03-03 11 +42 val_42 2010-03-03 11 +129 val_129 2010-03-03 11 +158 val_158 2010-03-03 11 +119 val_119 2010-03-03 11 +496 val_496 2010-03-03 11 +0 val_0 2010-03-03 11 +322 val_322 2010-03-03 11 +197 val_197 2010-03-03 11 +468 val_468 2010-03-03 11 +393 val_393 2010-03-03 11 +454 val_454 2010-03-03 11 +100 val_100 2010-03-03 11 +298 val_298 2010-03-03 11 +199 val_199 2010-03-03 11 +191 val_191 2010-03-03 11 +418 val_418 2010-03-03 11 +96 val_96 2010-03-03 11 +26 val_26 2010-03-03 11 +165 val_165 2010-03-03 11 +327 val_327 2010-03-03 11 +230 val_230 2010-03-03 11 +205 val_205 2010-03-03 11 +120 val_120 2010-03-03 11 +131 val_131 2010-03-03 11 +51 val_51 2010-03-03 11 +404 val_404 2010-03-03 11 +43 val_43 2010-03-03 11 +436 val_436 2010-03-03 11 +156 val_156 2010-03-03 11 +469 val_469 2010-03-03 11 +468 val_468 2010-03-03 11 +308 val_308 2010-03-03 11 +95 val_95 2010-03-03 11 +196 val_196 2010-03-03 11 +288 val_288 2010-03-03 11 +481 val_481 2010-03-03 11 +457 val_457 2010-03-03 11 +98 val_98 2010-03-03 11 +282 val_282 2010-03-03 11 +197 val_197 2010-03-03 11 +187 val_187 2010-03-03 11 +318 val_318 2010-03-03 11 +318 val_318 2010-03-03 11 +409 val_409 2010-03-03 11 +470 val_470 2010-03-03 11 +137 val_137 2010-03-03 11 +369 val_369 2010-03-03 11 +316 val_316 2010-03-03 11 +169 val_169 2010-03-03 11 +413 val_413 2010-03-03 11 +85 val_85 2010-03-03 11 +77 val_77 2010-03-03 11 +0 val_0 2010-03-03 11 +490 val_490 2010-03-03 11 +87 val_87 2010-03-03 11 +364 val_364 2010-03-03 11 +179 val_179 2010-03-03 11 +118 val_118 2010-03-03 11 +134 val_134 2010-03-03 11 +395 val_395 2010-03-03 11 +282 val_282 2010-03-03 11 +138 val_138 2010-03-03 11 +238 val_238 2010-03-03 11 +419 val_419 2010-03-03 11 +15 val_15 2010-03-03 11 +118 val_118 2010-03-03 11 +72 val_72 2010-03-03 11 +90 val_90 2010-03-03 11 +307 val_307 2010-03-03 11 +19 val_19 2010-03-03 11 +435 val_435 2010-03-03 11 +10 val_10 2010-03-03 11 +277 val_277 2010-03-03 11 +273 val_273 2010-03-03 11 +306 val_306 2010-03-03 11 +224 val_224 2010-03-03 11 +309 val_309 2010-03-03 11 +389 val_389 2010-03-03 11 +327 val_327 2010-03-03 11 +242 val_242 2010-03-03 11 +369 val_369 2010-03-03 11 +392 val_392 2010-03-03 11 +272 val_272 2010-03-03 11 +331 val_331 2010-03-03 11 +401 val_401 2010-03-03 11 +242 val_242 2010-03-03 11 +452 val_452 2010-03-03 11 +177 val_177 2010-03-03 11 +226 val_226 2010-03-03 11 +5 val_5 2010-03-03 11 +497 val_497 2010-03-03 11 +402 val_402 2010-03-03 11 +396 val_396 2010-03-03 11 +317 val_317 2010-03-03 11 +395 val_395 2010-03-03 11 +58 val_58 2010-03-03 11 +35 val_35 2010-03-03 11 +336 val_336 2010-03-03 11 +95 val_95 2010-03-03 11 +11 val_11 2010-03-03 11 +168 val_168 2010-03-03 11 +34 val_34 2010-03-03 11 +229 val_229 2010-03-03 11 +233 val_233 2010-03-03 11 +143 val_143 2010-03-03 11 +472 val_472 2010-03-03 11 +322 val_322 2010-03-03 11 +498 val_498 2010-03-03 11 +160 val_160 2010-03-03 11 +195 val_195 2010-03-03 11 +42 val_42 2010-03-03 11 +321 val_321 2010-03-03 11 +430 val_430 2010-03-03 11 +119 val_119 2010-03-03 11 +489 val_489 2010-03-03 11 +458 val_458 2010-03-03 11 +78 val_78 2010-03-03 11 +76 val_76 2010-03-03 11 +41 val_41 2010-03-03 11 +223 val_223 2010-03-03 11 +492 val_492 2010-03-03 11 +149 val_149 2010-03-03 11 +449 val_449 2010-03-03 11 +218 val_218 2010-03-03 11 +228 val_228 2010-03-03 11 +138 val_138 2010-03-03 11 +453 val_453 2010-03-03 11 +30 val_30 2010-03-03 11 +209 val_209 2010-03-03 11 +64 val_64 2010-03-03 11 +468 val_468 2010-03-03 11 +76 val_76 2010-03-03 11 +74 val_74 2010-03-03 11 +342 val_342 2010-03-03 11 +69 val_69 2010-03-03 11 +230 val_230 2010-03-03 11 +33 val_33 2010-03-03 11 +368 val_368 2010-03-03 11 +103 val_103 2010-03-03 11 +296 val_296 2010-03-03 11 +113 val_113 2010-03-03 11 +216 val_216 2010-03-03 11 +367 val_367 2010-03-03 11 +344 val_344 2010-03-03 11 +167 val_167 2010-03-03 11 +274 val_274 2010-03-03 11 +219 val_219 2010-03-03 11 +239 val_239 2010-03-03 11 +485 val_485 2010-03-03 11 +116 val_116 2010-03-03 11 +223 val_223 2010-03-03 11 +256 val_256 2010-03-03 11 +263 val_263 2010-03-03 11 +70 val_70 2010-03-03 11 +487 val_487 2010-03-03 11 +480 val_480 2010-03-03 11 +401 val_401 2010-03-03 11 +288 val_288 2010-03-03 11 +191 val_191 2010-03-03 11 +5 val_5 2010-03-03 11 +244 val_244 2010-03-03 11 +438 val_438 2010-03-03 11 +128 val_128 2010-03-03 11 +467 val_467 2010-03-03 11 +432 val_432 2010-03-03 11 +202 val_202 2010-03-03 11 +316 val_316 2010-03-03 11 +229 val_229 2010-03-03 11 +469 val_469 2010-03-03 11 +463 val_463 2010-03-03 11 +280 val_280 2010-03-03 11 +2 val_2 2010-03-03 11 +35 val_35 2010-03-03 11 +283 val_283 2010-03-03 11 +331 val_331 2010-03-03 11 +235 val_235 2010-03-03 11 +80 val_80 2010-03-03 11 +44 val_44 2010-03-03 11 +193 val_193 2010-03-03 11 +321 val_321 2010-03-03 11 +335 val_335 2010-03-03 11 +104 val_104 2010-03-03 11 +466 val_466 2010-03-03 11 +366 val_366 2010-03-03 11 +175 val_175 2010-03-03 11 +403 val_403 2010-03-03 11 +483 val_483 2010-03-03 11 +53 val_53 2010-03-03 11 +105 val_105 2010-03-03 11 +257 val_257 2010-03-03 11 +406 val_406 2010-03-03 11 +409 val_409 2010-03-03 11 +190 val_190 2010-03-03 11 +406 val_406 2010-03-03 11 +401 val_401 2010-03-03 11 +114 val_114 2010-03-03 11 +258 val_258 2010-03-03 11 +90 val_90 2010-03-03 11 +203 val_203 2010-03-03 11 +262 val_262 2010-03-03 11 +348 val_348 2010-03-03 11 +424 val_424 2010-03-03 11 +12 val_12 2010-03-03 11 +396 val_396 2010-03-03 11 +201 val_201 2010-03-03 11 +217 val_217 2010-03-03 11 +164 val_164 2010-03-03 11 +431 val_431 2010-03-03 11 +454 val_454 2010-03-03 11 +478 val_478 2010-03-03 11 +298 val_298 2010-03-03 11 +125 val_125 2010-03-03 11 +431 val_431 2010-03-03 11 +164 val_164 2010-03-03 11 +424 val_424 2010-03-03 11 +187 val_187 2010-03-03 11 +382 val_382 2010-03-03 11 +5 val_5 2010-03-03 11 +70 val_70 2010-03-03 11 +397 val_397 2010-03-03 11 +480 val_480 2010-03-03 11 +291 val_291 2010-03-03 11 +24 val_24 2010-03-03 11 +351 val_351 2010-03-03 11 +255 val_255 2010-03-03 11 +104 val_104 2010-03-03 11 +70 val_70 2010-03-03 11 +163 val_163 2010-03-03 11 +438 val_438 2010-03-03 11 +119 val_119 2010-03-03 11 +414 val_414 2010-03-03 11 +200 val_200 2010-03-03 11 +491 val_491 2010-03-03 11 +237 val_237 2010-03-03 11 +439 val_439 2010-03-03 11 +360 val_360 2010-03-03 11 +248 val_248 2010-03-03 11 +479 val_479 2010-03-03 11 +305 val_305 2010-03-03 11 +417 val_417 2010-03-03 11 +199 val_199 2010-03-03 11 +444 val_444 2010-03-03 11 +120 val_120 2010-03-03 11 +429 val_429 2010-03-03 11 +169 val_169 2010-03-03 11 +443 val_443 2010-03-03 11 +323 val_323 2010-03-03 11 +325 val_325 2010-03-03 11 +277 val_277 2010-03-03 11 +230 val_230 2010-03-03 11 +478 val_478 2010-03-03 11 +178 val_178 2010-03-03 11 +468 val_468 2010-03-03 11 +310 val_310 2010-03-03 11 +317 val_317 2010-03-03 11 +333 val_333 2010-03-03 11 +493 val_493 2010-03-03 11 +460 val_460 2010-03-03 11 +207 val_207 2010-03-03 11 +249 val_249 2010-03-03 11 +265 val_265 2010-03-03 11 +480 val_480 2010-03-03 11 +83 val_83 2010-03-03 11 +136 val_136 2010-03-03 11 +353 val_353 2010-03-03 11 +172 val_172 2010-03-03 11 +214 val_214 2010-03-03 11 +462 val_462 2010-03-03 11 +233 val_233 2010-03-03 11 +406 val_406 2010-03-03 11 +133 val_133 2010-03-03 11 +175 val_175 2010-03-03 11 +189 val_189 2010-03-03 11 +454 val_454 2010-03-03 11 +375 val_375 2010-03-03 11 +401 val_401 2010-03-03 11 +421 val_421 2010-03-03 11 +407 val_407 2010-03-03 11 +384 val_384 2010-03-03 11 +256 val_256 2010-03-03 11 +26 val_26 2010-03-03 11 +134 val_134 2010-03-03 11 +67 val_67 2010-03-03 11 +384 val_384 2010-03-03 11 +379 val_379 2010-03-03 11 +18 val_18 2010-03-03 11 +462 val_462 2010-03-03 11 +492 val_492 2010-03-03 11 +100 val_100 2010-03-03 11 +298 val_298 2010-03-03 11 +9 val_9 2010-03-03 11 +341 val_341 2010-03-03 11 +498 val_498 2010-03-03 11 +146 val_146 2010-03-03 11 +458 val_458 2010-03-03 11 +362 val_362 2010-03-03 11 +186 val_186 2010-03-03 11 +285 val_285 2010-03-03 11 +348 val_348 2010-03-03 11 +167 val_167 2010-03-03 11 +18 val_18 2010-03-03 11 +273 val_273 2010-03-03 11 +183 val_183 2010-03-03 11 +281 val_281 2010-03-03 11 +344 val_344 2010-03-03 11 +97 val_97 2010-03-03 11 +469 val_469 2010-03-03 11 +315 val_315 2010-03-03 11 +84 val_84 2010-03-03 11 +28 val_28 2010-03-03 11 +37 val_37 2010-03-03 11 +448 val_448 2010-03-03 11 +152 val_152 2010-03-03 11 +348 val_348 2010-03-03 11 +307 val_307 2010-03-03 11 +194 val_194 2010-03-03 11 +414 val_414 2010-03-03 11 +477 val_477 2010-03-03 11 +222 val_222 2010-03-03 11 +126 val_126 2010-03-03 11 +90 val_90 2010-03-03 11 +169 val_169 2010-03-03 11 +403 val_403 2010-03-03 11 +400 val_400 2010-03-03 11 +200 val_200 2010-03-03 11 +97 val_97 2010-03-03 11 +238 val_238 2010-03-03 11 +86 val_86 2010-03-03 11 +311 val_311 2010-03-03 11 +27 val_27 2010-03-03 11 +165 val_165 2010-03-03 11 +409 val_409 2010-03-03 11 +255 val_255 2010-03-03 11 +278 val_278 2010-03-03 11 +98 val_98 2010-03-03 11 +484 val_484 2010-03-03 11 +265 val_265 2010-03-03 11 +193 val_193 2010-03-03 11 +401 val_401 2010-03-03 11 +150 val_150 2010-03-03 11 +273 val_273 2010-03-03 11 +224 val_224 2010-03-03 11 +369 val_369 2010-03-03 11 +66 val_66 2010-03-03 11 +128 val_128 2010-03-03 11 +213 val_213 2010-03-03 11 +146 val_146 2010-03-03 11 +406 val_406 2010-03-03 11 +429 val_429 2010-03-03 11 +374 val_374 2010-03-03 11 +152 val_152 2010-03-03 11 +469 val_469 2010-03-03 11 +145 val_145 2010-03-03 11 +495 val_495 2010-03-03 11 +37 val_37 2010-03-03 11 +327 val_327 2010-03-03 11 +281 val_281 2010-03-03 11 +277 val_277 2010-03-03 11 +209 val_209 2010-03-03 11 +15 val_15 2010-03-03 11 +82 val_82 2010-03-03 11 +403 val_403 2010-03-03 11 +166 val_166 2010-03-03 11 +417 val_417 2010-03-03 11 +430 val_430 2010-03-03 11 +252 val_252 2010-03-03 11 +292 val_292 2010-03-03 11 +219 val_219 2010-03-03 11 +287 val_287 2010-03-03 11 +153 val_153 2010-03-03 11 +193 val_193 2010-03-03 11 +338 val_338 2010-03-03 11 +446 val_446 2010-03-03 11 +459 val_459 2010-03-03 11 +394 val_394 2010-03-03 11 +237 val_237 2010-03-03 11 +482 val_482 2010-03-03 11 +174 val_174 2010-03-03 11 +413 val_413 2010-03-03 11 +494 val_494 2010-03-03 11 +207 val_207 2010-03-03 11 +199 val_199 2010-03-03 11 +466 val_466 2010-03-03 11 +208 val_208 2010-03-03 11 +174 val_174 2010-03-03 11 +399 val_399 2010-03-03 11 +396 val_396 2010-03-03 11 +247 val_247 2010-03-03 11 +417 val_417 2010-03-03 11 +489 val_489 2010-03-03 11 +162 val_162 2010-03-03 11 +377 val_377 2010-03-03 11 +397 val_397 2010-03-03 11 +309 val_309 2010-03-03 11 +365 val_365 2010-03-03 11 +266 val_266 2010-03-03 11 +439 val_439 2010-03-03 11 +342 val_342 2010-03-03 11 +367 val_367 2010-03-03 11 +325 val_325 2010-03-03 11 +167 val_167 2010-03-03 11 +195 val_195 2010-03-03 11 +475 val_475 2010-03-03 11 +17 val_17 2010-03-03 11 +113 val_113 2010-03-03 11 +155 val_155 2010-03-03 11 +203 val_203 2010-03-03 11 +339 val_339 2010-03-03 11 +0 val_0 2010-03-03 11 +455 val_455 2010-03-03 11 +128 val_128 2010-03-03 11 +311 val_311 2010-03-03 11 +316 val_316 2010-03-03 11 +57 val_57 2010-03-03 11 +302 val_302 2010-03-03 11 +205 val_205 2010-03-03 11 +149 val_149 2010-03-03 11 +438 val_438 2010-03-03 11 +345 val_345 2010-03-03 11 +129 val_129 2010-03-03 11 +170 val_170 2010-03-03 11 +20 val_20 2010-03-03 11 +489 val_489 2010-03-03 11 +157 val_157 2010-03-03 11 +378 val_378 2010-03-03 11 +221 val_221 2010-03-03 11 +92 val_92 2010-03-03 11 +111 val_111 2010-03-03 11 +47 val_47 2010-03-03 11 +72 val_72 2010-03-03 11 +4 val_4 2010-03-03 11 +280 val_280 2010-03-03 11 +35 val_35 2010-03-03 11 +427 val_427 2010-03-03 11 +277 val_277 2010-03-03 11 +208 val_208 2010-03-03 11 +356 val_356 2010-03-03 11 +399 val_399 2010-03-03 11 +169 val_169 2010-03-03 11 +382 val_382 2010-03-03 11 +498 val_498 2010-03-03 11 +125 val_125 2010-03-03 11 +386 val_386 2010-03-03 11 +437 val_437 2010-03-03 11 +469 val_469 2010-03-03 11 +192 val_192 2010-03-03 11 +286 val_286 2010-03-03 11 +187 val_187 2010-03-03 11 +176 val_176 2010-03-03 11 +54 val_54 2010-03-03 11 +459 val_459 2010-03-03 11 +51 val_51 2010-03-03 11 +138 val_138 2010-03-03 11 +103 val_103 2010-03-03 11 +239 val_239 2010-03-03 11 +213 val_213 2010-03-03 11 +216 val_216 2010-03-03 11 +430 val_430 2010-03-03 11 +278 val_278 2010-03-03 11 +176 val_176 2010-03-03 11 +289 val_289 2010-03-03 11 +221 val_221 2010-03-03 11 +65 val_65 2010-03-03 11 +318 val_318 2010-03-03 11 +332 val_332 2010-03-03 11 +311 val_311 2010-03-03 11 +275 val_275 2010-03-03 11 +137 val_137 2010-03-03 11 +241 val_241 2010-03-03 11 +83 val_83 2010-03-03 11 +333 val_333 2010-03-03 11 +180 val_180 2010-03-03 11 +284 val_284 2010-03-03 11 +12 val_12 2010-03-03 11 +230 val_230 2010-03-03 11 +181 val_181 2010-03-03 11 +67 val_67 2010-03-03 11 +260 val_260 2010-03-03 11 +404 val_404 2010-03-03 11 +384 val_384 2010-03-03 11 +489 val_489 2010-03-03 11 +353 val_353 2010-03-03 11 +373 val_373 2010-03-03 11 +272 val_272 2010-03-03 11 +138 val_138 2010-03-03 11 +217 val_217 2010-03-03 11 +84 val_84 2010-03-03 11 +348 val_348 2010-03-03 11 +466 val_466 2010-03-03 11 +58 val_58 2010-03-03 11 +8 val_8 2010-03-03 11 +411 val_411 2010-03-03 11 +230 val_230 2010-03-03 11 +208 val_208 2010-03-03 11 +348 val_348 2010-03-03 11 +24 val_24 2010-03-03 11 +463 val_463 2010-03-03 11 +431 val_431 2010-03-03 11 +179 val_179 2010-03-03 11 +172 val_172 2010-03-03 11 +42 val_42 2010-03-03 11 +129 val_129 2010-03-03 11 +158 val_158 2010-03-03 11 +119 val_119 2010-03-03 11 +496 val_496 2010-03-03 11 +0 val_0 2010-03-03 11 +322 val_322 2010-03-03 11 +197 val_197 2010-03-03 11 +468 val_468 2010-03-03 11 +393 val_393 2010-03-03 11 +454 val_454 2010-03-03 11 +100 val_100 2010-03-03 11 +298 val_298 2010-03-03 11 +199 val_199 2010-03-03 11 +191 val_191 2010-03-03 11 +418 val_418 2010-03-03 11 +96 val_96 2010-03-03 11 +26 val_26 2010-03-03 11 +165 val_165 2010-03-03 11 +327 val_327 2010-03-03 11 +230 val_230 2010-03-03 11 +205 val_205 2010-03-03 11 +120 val_120 2010-03-03 11 +131 val_131 2010-03-03 11 +51 val_51 2010-03-03 11 +404 val_404 2010-03-03 11 +43 val_43 2010-03-03 11 +436 val_436 2010-03-03 11 +156 val_156 2010-03-03 11 +469 val_469 2010-03-03 11 +468 val_468 2010-03-03 11 +308 val_308 2010-03-03 11 +95 val_95 2010-03-03 11 +196 val_196 2010-03-03 11 +288 val_288 2010-03-03 11 +481 val_481 2010-03-03 11 +457 val_457 2010-03-03 11 +98 val_98 2010-03-03 11 +282 val_282 2010-03-03 11 +197 val_197 2010-03-03 11 +187 val_187 2010-03-03 11 +318 val_318 2010-03-03 11 +318 val_318 2010-03-03 11 +409 val_409 2010-03-03 11 +470 val_470 2010-03-03 11 +137 val_137 2010-03-03 11 +369 val_369 2010-03-03 11 +316 val_316 2010-03-03 11 +169 val_169 2010-03-03 11 +413 val_413 2010-03-03 11 +85 val_85 2010-03-03 11 +77 val_77 2010-03-03 11 +0 val_0 2010-03-03 11 +490 val_490 2010-03-03 11 +87 val_87 2010-03-03 11 +364 val_364 2010-03-03 11 +179 val_179 2010-03-03 11 +118 val_118 2010-03-03 11 +134 val_134 2010-03-03 11 +395 val_395 2010-03-03 11 +282 val_282 2010-03-03 11 +138 val_138 2010-03-03 11 +238 val_238 2010-03-03 11 +419 val_419 2010-03-03 11 +15 val_15 2010-03-03 11 +118 val_118 2010-03-03 11 +72 val_72 2010-03-03 11 +90 val_90 2010-03-03 11 +307 val_307 2010-03-03 11 +19 val_19 2010-03-03 11 +435 val_435 2010-03-03 11 +10 val_10 2010-03-03 11 +277 val_277 2010-03-03 11 +273 val_273 2010-03-03 11 +306 val_306 2010-03-03 11 +224 val_224 2010-03-03 11 +309 val_309 2010-03-03 11 +389 val_389 2010-03-03 11 +327 val_327 2010-03-03 11 +242 val_242 2010-03-03 11 +369 val_369 2010-03-03 11 +392 val_392 2010-03-03 11 +272 val_272 2010-03-03 11 +331 val_331 2010-03-03 11 +401 val_401 2010-03-03 11 +242 val_242 2010-03-03 11 +452 val_452 2010-03-03 11 +177 val_177 2010-03-03 11 +226 val_226 2010-03-03 11 +5 val_5 2010-03-03 11 +497 val_497 2010-03-03 11 +402 val_402 2010-03-03 11 +396 val_396 2010-03-03 11 +317 val_317 2010-03-03 11 +395 val_395 2010-03-03 11 +58 val_58 2010-03-03 11 +35 val_35 2010-03-03 11 +336 val_336 2010-03-03 11 +95 val_95 2010-03-03 11 +11 val_11 2010-03-03 11 +168 val_168 2010-03-03 11 +34 val_34 2010-03-03 11 +229 val_229 2010-03-03 11 +233 val_233 2010-03-03 11 +143 val_143 2010-03-03 11 +472 val_472 2010-03-03 11 +322 val_322 2010-03-03 11 +498 val_498 2010-03-03 11 +160 val_160 2010-03-03 11 +195 val_195 2010-03-03 11 +42 val_42 2010-03-03 11 +321 val_321 2010-03-03 11 +430 val_430 2010-03-03 11 +119 val_119 2010-03-03 11 +489 val_489 2010-03-03 11 +458 val_458 2010-03-03 11 +78 val_78 2010-03-03 11 +76 val_76 2010-03-03 11 +41 val_41 2010-03-03 11 +223 val_223 2010-03-03 11 +492 val_492 2010-03-03 11 +149 val_149 2010-03-03 11 +449 val_449 2010-03-03 11 +218 val_218 2010-03-03 11 +228 val_228 2010-03-03 11 +138 val_138 2010-03-03 11 +453 val_453 2010-03-03 11 +30 val_30 2010-03-03 11 +209 val_209 2010-03-03 11 +64 val_64 2010-03-03 11 +468 val_468 2010-03-03 11 +76 val_76 2010-03-03 11 +74 val_74 2010-03-03 11 +342 val_342 2010-03-03 11 +69 val_69 2010-03-03 11 +230 val_230 2010-03-03 11 +33 val_33 2010-03-03 11 +368 val_368 2010-03-03 11 +103 val_103 2010-03-03 11 +296 val_296 2010-03-03 11 +113 val_113 2010-03-03 11 +216 val_216 2010-03-03 11 +367 val_367 2010-03-03 11 +344 val_344 2010-03-03 11 +167 val_167 2010-03-03 11 +274 val_274 2010-03-03 11 +219 val_219 2010-03-03 11 +239 val_239 2010-03-03 11 +485 val_485 2010-03-03 11 +116 val_116 2010-03-03 11 +223 val_223 2010-03-03 11 +256 val_256 2010-03-03 11 +263 val_263 2010-03-03 11 +70 val_70 2010-03-03 11 +487 val_487 2010-03-03 11 +480 val_480 2010-03-03 11 +401 val_401 2010-03-03 11 +288 val_288 2010-03-03 11 +191 val_191 2010-03-03 11 +5 val_5 2010-03-03 11 +244 val_244 2010-03-03 11 +438 val_438 2010-03-03 11 +128 val_128 2010-03-03 11 +467 val_467 2010-03-03 11 +432 val_432 2010-03-03 11 +202 val_202 2010-03-03 11 +316 val_316 2010-03-03 11 +229 val_229 2010-03-03 11 +469 val_469 2010-03-03 11 +463 val_463 2010-03-03 11 +280 val_280 2010-03-03 11 +2 val_2 2010-03-03 11 +35 val_35 2010-03-03 11 +283 val_283 2010-03-03 11 +331 val_331 2010-03-03 11 +235 val_235 2010-03-03 11 +80 val_80 2010-03-03 11 +44 val_44 2010-03-03 11 +193 val_193 2010-03-03 11 +321 val_321 2010-03-03 11 +335 val_335 2010-03-03 11 +104 val_104 2010-03-03 11 +466 val_466 2010-03-03 11 +366 val_366 2010-03-03 11 +175 val_175 2010-03-03 11 +403 val_403 2010-03-03 11 +483 val_483 2010-03-03 11 +53 val_53 2010-03-03 11 +105 val_105 2010-03-03 11 +257 val_257 2010-03-03 11 +406 val_406 2010-03-03 11 +409 val_409 2010-03-03 11 +190 val_190 2010-03-03 11 +406 val_406 2010-03-03 11 +401 val_401 2010-03-03 11 +114 val_114 2010-03-03 11 +258 val_258 2010-03-03 11 +90 val_90 2010-03-03 11 +203 val_203 2010-03-03 11 +262 val_262 2010-03-03 11 +348 val_348 2010-03-03 11 +424 val_424 2010-03-03 11 +12 val_12 2010-03-03 11 +396 val_396 2010-03-03 11 +201 val_201 2010-03-03 11 +217 val_217 2010-03-03 11 +164 val_164 2010-03-03 11 +431 val_431 2010-03-03 11 +454 val_454 2010-03-03 11 +478 val_478 2010-03-03 11 +298 val_298 2010-03-03 11 +125 val_125 2010-03-03 11 +431 val_431 2010-03-03 11 +164 val_164 2010-03-03 11 +424 val_424 2010-03-03 11 +187 val_187 2010-03-03 11 +382 val_382 2010-03-03 11 +5 val_5 2010-03-03 11 +70 val_70 2010-03-03 11 +397 val_397 2010-03-03 11 +480 val_480 2010-03-03 11 +291 val_291 2010-03-03 11 +24 val_24 2010-03-03 11 +351 val_351 2010-03-03 11 +255 val_255 2010-03-03 11 +104 val_104 2010-03-03 11 +70 val_70 2010-03-03 11 +163 val_163 2010-03-03 11 +438 val_438 2010-03-03 11 +119 val_119 2010-03-03 11 +414 val_414 2010-03-03 11 +200 val_200 2010-03-03 11 +491 val_491 2010-03-03 11 +237 val_237 2010-03-03 11 +439 val_439 2010-03-03 11 +360 val_360 2010-03-03 11 +248 val_248 2010-03-03 11 +479 val_479 2010-03-03 11 +305 val_305 2010-03-03 11 +417 val_417 2010-03-03 11 +199 val_199 2010-03-03 11 +444 val_444 2010-03-03 11 +120 val_120 2010-03-03 11 +429 val_429 2010-03-03 11 +169 val_169 2010-03-03 11 +443 val_443 2010-03-03 11 +323 val_323 2010-03-03 11 +325 val_325 2010-03-03 11 +277 val_277 2010-03-03 11 +230 val_230 2010-03-03 11 +478 val_478 2010-03-03 11 +178 val_178 2010-03-03 11 +468 val_468 2010-03-03 11 +310 val_310 2010-03-03 11 +317 val_317 2010-03-03 11 +333 val_333 2010-03-03 11 +493 val_493 2010-03-03 11 +460 val_460 2010-03-03 11 +207 val_207 2010-03-03 11 +249 val_249 2010-03-03 11 +265 val_265 2010-03-03 11 +480 val_480 2010-03-03 11 +83 val_83 2010-03-03 11 +136 val_136 2010-03-03 11 +353 val_353 2010-03-03 11 +172 val_172 2010-03-03 11 +214 val_214 2010-03-03 11 +462 val_462 2010-03-03 11 +233 val_233 2010-03-03 11 +406 val_406 2010-03-03 11 +133 val_133 2010-03-03 11 +175 val_175 2010-03-03 11 +189 val_189 2010-03-03 11 +454 val_454 2010-03-03 11 +375 val_375 2010-03-03 11 +401 val_401 2010-03-03 11 +421 val_421 2010-03-03 11 +407 val_407 2010-03-03 11 +384 val_384 2010-03-03 11 +256 val_256 2010-03-03 11 +26 val_26 2010-03-03 11 +134 val_134 2010-03-03 11 +67 val_67 2010-03-03 11 +384 val_384 2010-03-03 11 +379 val_379 2010-03-03 11 +18 val_18 2010-03-03 11 +462 val_462 2010-03-03 11 +492 val_492 2010-03-03 11 +100 val_100 2010-03-03 11 +298 val_298 2010-03-03 11 +9 val_9 2010-03-03 11 +341 val_341 2010-03-03 11 +498 val_498 2010-03-03 11 +146 val_146 2010-03-03 11 +458 val_458 2010-03-03 11 +362 val_362 2010-03-03 11 +186 val_186 2010-03-03 11 +285 val_285 2010-03-03 11 +348 val_348 2010-03-03 11 +167 val_167 2010-03-03 11 +18 val_18 2010-03-03 11 +273 val_273 2010-03-03 11 +183 val_183 2010-03-03 11 +281 val_281 2010-03-03 11 +344 val_344 2010-03-03 11 +97 val_97 2010-03-03 11 +469 val_469 2010-03-03 11 +315 val_315 2010-03-03 11 +84 val_84 2010-03-03 11 +28 val_28 2010-03-03 11 +37 val_37 2010-03-03 11 +448 val_448 2010-03-03 11 +152 val_152 2010-03-03 11 +348 val_348 2010-03-03 11 +307 val_307 2010-03-03 11 +194 val_194 2010-03-03 11 +414 val_414 2010-03-03 11 +477 val_477 2010-03-03 11 +222 val_222 2010-03-03 11 +126 val_126 2010-03-03 11 +90 val_90 2010-03-03 11 +169 val_169 2010-03-03 11 +403 val_403 2010-03-03 11 +400 val_400 2010-03-03 11 +200 val_200 2010-03-03 11 +97 val_97 2010-03-03 11 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part6-8-1009bd2cbd88ddba97186fb76e96a4f b/sql/hive/src/test/resources/golden/load_dyn_part6-8-1009bd2cbd88ddba97186fb76e96a4f new file mode 100644 index 0000000000000..c869646753baa --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part6-8-1009bd2cbd88ddba97186fb76e96a4f @@ -0,0 +1,1000 @@ +238 val_238 2010-03-03 12 +86 val_86 2010-03-03 12 +311 val_311 2010-03-03 12 +27 val_27 2010-03-03 12 +165 val_165 2010-03-03 12 +409 val_409 2010-03-03 12 +255 val_255 2010-03-03 12 +278 val_278 2010-03-03 12 +98 val_98 2010-03-03 12 +484 val_484 2010-03-03 12 +265 val_265 2010-03-03 12 +193 val_193 2010-03-03 12 +401 val_401 2010-03-03 12 +150 val_150 2010-03-03 12 +273 val_273 2010-03-03 12 +224 val_224 2010-03-03 12 +369 val_369 2010-03-03 12 +66 val_66 2010-03-03 12 +128 val_128 2010-03-03 12 +213 val_213 2010-03-03 12 +146 val_146 2010-03-03 12 +406 val_406 2010-03-03 12 +429 val_429 2010-03-03 12 +374 val_374 2010-03-03 12 +152 val_152 2010-03-03 12 +469 val_469 2010-03-03 12 +145 val_145 2010-03-03 12 +495 val_495 2010-03-03 12 +37 val_37 2010-03-03 12 +327 val_327 2010-03-03 12 +281 val_281 2010-03-03 12 +277 val_277 2010-03-03 12 +209 val_209 2010-03-03 12 +15 val_15 2010-03-03 12 +82 val_82 2010-03-03 12 +403 val_403 2010-03-03 12 +166 val_166 2010-03-03 12 +417 val_417 2010-03-03 12 +430 val_430 2010-03-03 12 +252 val_252 2010-03-03 12 +292 val_292 2010-03-03 12 +219 val_219 2010-03-03 12 +287 val_287 2010-03-03 12 +153 val_153 2010-03-03 12 +193 val_193 2010-03-03 12 +338 val_338 2010-03-03 12 +446 val_446 2010-03-03 12 +459 val_459 2010-03-03 12 +394 val_394 2010-03-03 12 +237 val_237 2010-03-03 12 +482 val_482 2010-03-03 12 +174 val_174 2010-03-03 12 +413 val_413 2010-03-03 12 +494 val_494 2010-03-03 12 +207 val_207 2010-03-03 12 +199 val_199 2010-03-03 12 +466 val_466 2010-03-03 12 +208 val_208 2010-03-03 12 +174 val_174 2010-03-03 12 +399 val_399 2010-03-03 12 +396 val_396 2010-03-03 12 +247 val_247 2010-03-03 12 +417 val_417 2010-03-03 12 +489 val_489 2010-03-03 12 +162 val_162 2010-03-03 12 +377 val_377 2010-03-03 12 +397 val_397 2010-03-03 12 +309 val_309 2010-03-03 12 +365 val_365 2010-03-03 12 +266 val_266 2010-03-03 12 +439 val_439 2010-03-03 12 +342 val_342 2010-03-03 12 +367 val_367 2010-03-03 12 +325 val_325 2010-03-03 12 +167 val_167 2010-03-03 12 +195 val_195 2010-03-03 12 +475 val_475 2010-03-03 12 +17 val_17 2010-03-03 12 +113 val_113 2010-03-03 12 +155 val_155 2010-03-03 12 +203 val_203 2010-03-03 12 +339 val_339 2010-03-03 12 +0 val_0 2010-03-03 12 +455 val_455 2010-03-03 12 +128 val_128 2010-03-03 12 +311 val_311 2010-03-03 12 +316 val_316 2010-03-03 12 +57 val_57 2010-03-03 12 +302 val_302 2010-03-03 12 +205 val_205 2010-03-03 12 +149 val_149 2010-03-03 12 +438 val_438 2010-03-03 12 +345 val_345 2010-03-03 12 +129 val_129 2010-03-03 12 +170 val_170 2010-03-03 12 +20 val_20 2010-03-03 12 +489 val_489 2010-03-03 12 +157 val_157 2010-03-03 12 +378 val_378 2010-03-03 12 +221 val_221 2010-03-03 12 +92 val_92 2010-03-03 12 +111 val_111 2010-03-03 12 +47 val_47 2010-03-03 12 +72 val_72 2010-03-03 12 +4 val_4 2010-03-03 12 +280 val_280 2010-03-03 12 +35 val_35 2010-03-03 12 +427 val_427 2010-03-03 12 +277 val_277 2010-03-03 12 +208 val_208 2010-03-03 12 +356 val_356 2010-03-03 12 +399 val_399 2010-03-03 12 +169 val_169 2010-03-03 12 +382 val_382 2010-03-03 12 +498 val_498 2010-03-03 12 +125 val_125 2010-03-03 12 +386 val_386 2010-03-03 12 +437 val_437 2010-03-03 12 +469 val_469 2010-03-03 12 +192 val_192 2010-03-03 12 +286 val_286 2010-03-03 12 +187 val_187 2010-03-03 12 +176 val_176 2010-03-03 12 +54 val_54 2010-03-03 12 +459 val_459 2010-03-03 12 +51 val_51 2010-03-03 12 +138 val_138 2010-03-03 12 +103 val_103 2010-03-03 12 +239 val_239 2010-03-03 12 +213 val_213 2010-03-03 12 +216 val_216 2010-03-03 12 +430 val_430 2010-03-03 12 +278 val_278 2010-03-03 12 +176 val_176 2010-03-03 12 +289 val_289 2010-03-03 12 +221 val_221 2010-03-03 12 +65 val_65 2010-03-03 12 +318 val_318 2010-03-03 12 +332 val_332 2010-03-03 12 +311 val_311 2010-03-03 12 +275 val_275 2010-03-03 12 +137 val_137 2010-03-03 12 +241 val_241 2010-03-03 12 +83 val_83 2010-03-03 12 +333 val_333 2010-03-03 12 +180 val_180 2010-03-03 12 +284 val_284 2010-03-03 12 +12 val_12 2010-03-03 12 +230 val_230 2010-03-03 12 +181 val_181 2010-03-03 12 +67 val_67 2010-03-03 12 +260 val_260 2010-03-03 12 +404 val_404 2010-03-03 12 +384 val_384 2010-03-03 12 +489 val_489 2010-03-03 12 +353 val_353 2010-03-03 12 +373 val_373 2010-03-03 12 +272 val_272 2010-03-03 12 +138 val_138 2010-03-03 12 +217 val_217 2010-03-03 12 +84 val_84 2010-03-03 12 +348 val_348 2010-03-03 12 +466 val_466 2010-03-03 12 +58 val_58 2010-03-03 12 +8 val_8 2010-03-03 12 +411 val_411 2010-03-03 12 +230 val_230 2010-03-03 12 +208 val_208 2010-03-03 12 +348 val_348 2010-03-03 12 +24 val_24 2010-03-03 12 +463 val_463 2010-03-03 12 +431 val_431 2010-03-03 12 +179 val_179 2010-03-03 12 +172 val_172 2010-03-03 12 +42 val_42 2010-03-03 12 +129 val_129 2010-03-03 12 +158 val_158 2010-03-03 12 +119 val_119 2010-03-03 12 +496 val_496 2010-03-03 12 +0 val_0 2010-03-03 12 +322 val_322 2010-03-03 12 +197 val_197 2010-03-03 12 +468 val_468 2010-03-03 12 +393 val_393 2010-03-03 12 +454 val_454 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +199 val_199 2010-03-03 12 +191 val_191 2010-03-03 12 +418 val_418 2010-03-03 12 +96 val_96 2010-03-03 12 +26 val_26 2010-03-03 12 +165 val_165 2010-03-03 12 +327 val_327 2010-03-03 12 +230 val_230 2010-03-03 12 +205 val_205 2010-03-03 12 +120 val_120 2010-03-03 12 +131 val_131 2010-03-03 12 +51 val_51 2010-03-03 12 +404 val_404 2010-03-03 12 +43 val_43 2010-03-03 12 +436 val_436 2010-03-03 12 +156 val_156 2010-03-03 12 +469 val_469 2010-03-03 12 +468 val_468 2010-03-03 12 +308 val_308 2010-03-03 12 +95 val_95 2010-03-03 12 +196 val_196 2010-03-03 12 +288 val_288 2010-03-03 12 +481 val_481 2010-03-03 12 +457 val_457 2010-03-03 12 +98 val_98 2010-03-03 12 +282 val_282 2010-03-03 12 +197 val_197 2010-03-03 12 +187 val_187 2010-03-03 12 +318 val_318 2010-03-03 12 +318 val_318 2010-03-03 12 +409 val_409 2010-03-03 12 +470 val_470 2010-03-03 12 +137 val_137 2010-03-03 12 +369 val_369 2010-03-03 12 +316 val_316 2010-03-03 12 +169 val_169 2010-03-03 12 +413 val_413 2010-03-03 12 +85 val_85 2010-03-03 12 +77 val_77 2010-03-03 12 +0 val_0 2010-03-03 12 +490 val_490 2010-03-03 12 +87 val_87 2010-03-03 12 +364 val_364 2010-03-03 12 +179 val_179 2010-03-03 12 +118 val_118 2010-03-03 12 +134 val_134 2010-03-03 12 +395 val_395 2010-03-03 12 +282 val_282 2010-03-03 12 +138 val_138 2010-03-03 12 +238 val_238 2010-03-03 12 +419 val_419 2010-03-03 12 +15 val_15 2010-03-03 12 +118 val_118 2010-03-03 12 +72 val_72 2010-03-03 12 +90 val_90 2010-03-03 12 +307 val_307 2010-03-03 12 +19 val_19 2010-03-03 12 +435 val_435 2010-03-03 12 +10 val_10 2010-03-03 12 +277 val_277 2010-03-03 12 +273 val_273 2010-03-03 12 +306 val_306 2010-03-03 12 +224 val_224 2010-03-03 12 +309 val_309 2010-03-03 12 +389 val_389 2010-03-03 12 +327 val_327 2010-03-03 12 +242 val_242 2010-03-03 12 +369 val_369 2010-03-03 12 +392 val_392 2010-03-03 12 +272 val_272 2010-03-03 12 +331 val_331 2010-03-03 12 +401 val_401 2010-03-03 12 +242 val_242 2010-03-03 12 +452 val_452 2010-03-03 12 +177 val_177 2010-03-03 12 +226 val_226 2010-03-03 12 +5 val_5 2010-03-03 12 +497 val_497 2010-03-03 12 +402 val_402 2010-03-03 12 +396 val_396 2010-03-03 12 +317 val_317 2010-03-03 12 +395 val_395 2010-03-03 12 +58 val_58 2010-03-03 12 +35 val_35 2010-03-03 12 +336 val_336 2010-03-03 12 +95 val_95 2010-03-03 12 +11 val_11 2010-03-03 12 +168 val_168 2010-03-03 12 +34 val_34 2010-03-03 12 +229 val_229 2010-03-03 12 +233 val_233 2010-03-03 12 +143 val_143 2010-03-03 12 +472 val_472 2010-03-03 12 +322 val_322 2010-03-03 12 +498 val_498 2010-03-03 12 +160 val_160 2010-03-03 12 +195 val_195 2010-03-03 12 +42 val_42 2010-03-03 12 +321 val_321 2010-03-03 12 +430 val_430 2010-03-03 12 +119 val_119 2010-03-03 12 +489 val_489 2010-03-03 12 +458 val_458 2010-03-03 12 +78 val_78 2010-03-03 12 +76 val_76 2010-03-03 12 +41 val_41 2010-03-03 12 +223 val_223 2010-03-03 12 +492 val_492 2010-03-03 12 +149 val_149 2010-03-03 12 +449 val_449 2010-03-03 12 +218 val_218 2010-03-03 12 +228 val_228 2010-03-03 12 +138 val_138 2010-03-03 12 +453 val_453 2010-03-03 12 +30 val_30 2010-03-03 12 +209 val_209 2010-03-03 12 +64 val_64 2010-03-03 12 +468 val_468 2010-03-03 12 +76 val_76 2010-03-03 12 +74 val_74 2010-03-03 12 +342 val_342 2010-03-03 12 +69 val_69 2010-03-03 12 +230 val_230 2010-03-03 12 +33 val_33 2010-03-03 12 +368 val_368 2010-03-03 12 +103 val_103 2010-03-03 12 +296 val_296 2010-03-03 12 +113 val_113 2010-03-03 12 +216 val_216 2010-03-03 12 +367 val_367 2010-03-03 12 +344 val_344 2010-03-03 12 +167 val_167 2010-03-03 12 +274 val_274 2010-03-03 12 +219 val_219 2010-03-03 12 +239 val_239 2010-03-03 12 +485 val_485 2010-03-03 12 +116 val_116 2010-03-03 12 +223 val_223 2010-03-03 12 +256 val_256 2010-03-03 12 +263 val_263 2010-03-03 12 +70 val_70 2010-03-03 12 +487 val_487 2010-03-03 12 +480 val_480 2010-03-03 12 +401 val_401 2010-03-03 12 +288 val_288 2010-03-03 12 +191 val_191 2010-03-03 12 +5 val_5 2010-03-03 12 +244 val_244 2010-03-03 12 +438 val_438 2010-03-03 12 +128 val_128 2010-03-03 12 +467 val_467 2010-03-03 12 +432 val_432 2010-03-03 12 +202 val_202 2010-03-03 12 +316 val_316 2010-03-03 12 +229 val_229 2010-03-03 12 +469 val_469 2010-03-03 12 +463 val_463 2010-03-03 12 +280 val_280 2010-03-03 12 +2 val_2 2010-03-03 12 +35 val_35 2010-03-03 12 +283 val_283 2010-03-03 12 +331 val_331 2010-03-03 12 +235 val_235 2010-03-03 12 +80 val_80 2010-03-03 12 +44 val_44 2010-03-03 12 +193 val_193 2010-03-03 12 +321 val_321 2010-03-03 12 +335 val_335 2010-03-03 12 +104 val_104 2010-03-03 12 +466 val_466 2010-03-03 12 +366 val_366 2010-03-03 12 +175 val_175 2010-03-03 12 +403 val_403 2010-03-03 12 +483 val_483 2010-03-03 12 +53 val_53 2010-03-03 12 +105 val_105 2010-03-03 12 +257 val_257 2010-03-03 12 +406 val_406 2010-03-03 12 +409 val_409 2010-03-03 12 +190 val_190 2010-03-03 12 +406 val_406 2010-03-03 12 +401 val_401 2010-03-03 12 +114 val_114 2010-03-03 12 +258 val_258 2010-03-03 12 +90 val_90 2010-03-03 12 +203 val_203 2010-03-03 12 +262 val_262 2010-03-03 12 +348 val_348 2010-03-03 12 +424 val_424 2010-03-03 12 +12 val_12 2010-03-03 12 +396 val_396 2010-03-03 12 +201 val_201 2010-03-03 12 +217 val_217 2010-03-03 12 +164 val_164 2010-03-03 12 +431 val_431 2010-03-03 12 +454 val_454 2010-03-03 12 +478 val_478 2010-03-03 12 +298 val_298 2010-03-03 12 +125 val_125 2010-03-03 12 +431 val_431 2010-03-03 12 +164 val_164 2010-03-03 12 +424 val_424 2010-03-03 12 +187 val_187 2010-03-03 12 +382 val_382 2010-03-03 12 +5 val_5 2010-03-03 12 +70 val_70 2010-03-03 12 +397 val_397 2010-03-03 12 +480 val_480 2010-03-03 12 +291 val_291 2010-03-03 12 +24 val_24 2010-03-03 12 +351 val_351 2010-03-03 12 +255 val_255 2010-03-03 12 +104 val_104 2010-03-03 12 +70 val_70 2010-03-03 12 +163 val_163 2010-03-03 12 +438 val_438 2010-03-03 12 +119 val_119 2010-03-03 12 +414 val_414 2010-03-03 12 +200 val_200 2010-03-03 12 +491 val_491 2010-03-03 12 +237 val_237 2010-03-03 12 +439 val_439 2010-03-03 12 +360 val_360 2010-03-03 12 +248 val_248 2010-03-03 12 +479 val_479 2010-03-03 12 +305 val_305 2010-03-03 12 +417 val_417 2010-03-03 12 +199 val_199 2010-03-03 12 +444 val_444 2010-03-03 12 +120 val_120 2010-03-03 12 +429 val_429 2010-03-03 12 +169 val_169 2010-03-03 12 +443 val_443 2010-03-03 12 +323 val_323 2010-03-03 12 +325 val_325 2010-03-03 12 +277 val_277 2010-03-03 12 +230 val_230 2010-03-03 12 +478 val_478 2010-03-03 12 +178 val_178 2010-03-03 12 +468 val_468 2010-03-03 12 +310 val_310 2010-03-03 12 +317 val_317 2010-03-03 12 +333 val_333 2010-03-03 12 +493 val_493 2010-03-03 12 +460 val_460 2010-03-03 12 +207 val_207 2010-03-03 12 +249 val_249 2010-03-03 12 +265 val_265 2010-03-03 12 +480 val_480 2010-03-03 12 +83 val_83 2010-03-03 12 +136 val_136 2010-03-03 12 +353 val_353 2010-03-03 12 +172 val_172 2010-03-03 12 +214 val_214 2010-03-03 12 +462 val_462 2010-03-03 12 +233 val_233 2010-03-03 12 +406 val_406 2010-03-03 12 +133 val_133 2010-03-03 12 +175 val_175 2010-03-03 12 +189 val_189 2010-03-03 12 +454 val_454 2010-03-03 12 +375 val_375 2010-03-03 12 +401 val_401 2010-03-03 12 +421 val_421 2010-03-03 12 +407 val_407 2010-03-03 12 +384 val_384 2010-03-03 12 +256 val_256 2010-03-03 12 +26 val_26 2010-03-03 12 +134 val_134 2010-03-03 12 +67 val_67 2010-03-03 12 +384 val_384 2010-03-03 12 +379 val_379 2010-03-03 12 +18 val_18 2010-03-03 12 +462 val_462 2010-03-03 12 +492 val_492 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +9 val_9 2010-03-03 12 +341 val_341 2010-03-03 12 +498 val_498 2010-03-03 12 +146 val_146 2010-03-03 12 +458 val_458 2010-03-03 12 +362 val_362 2010-03-03 12 +186 val_186 2010-03-03 12 +285 val_285 2010-03-03 12 +348 val_348 2010-03-03 12 +167 val_167 2010-03-03 12 +18 val_18 2010-03-03 12 +273 val_273 2010-03-03 12 +183 val_183 2010-03-03 12 +281 val_281 2010-03-03 12 +344 val_344 2010-03-03 12 +97 val_97 2010-03-03 12 +469 val_469 2010-03-03 12 +315 val_315 2010-03-03 12 +84 val_84 2010-03-03 12 +28 val_28 2010-03-03 12 +37 val_37 2010-03-03 12 +448 val_448 2010-03-03 12 +152 val_152 2010-03-03 12 +348 val_348 2010-03-03 12 +307 val_307 2010-03-03 12 +194 val_194 2010-03-03 12 +414 val_414 2010-03-03 12 +477 val_477 2010-03-03 12 +222 val_222 2010-03-03 12 +126 val_126 2010-03-03 12 +90 val_90 2010-03-03 12 +169 val_169 2010-03-03 12 +403 val_403 2010-03-03 12 +400 val_400 2010-03-03 12 +200 val_200 2010-03-03 12 +97 val_97 2010-03-03 12 +238 val_238 2010-03-03 12 +86 val_86 2010-03-03 12 +311 val_311 2010-03-03 12 +27 val_27 2010-03-03 12 +165 val_165 2010-03-03 12 +409 val_409 2010-03-03 12 +255 val_255 2010-03-03 12 +278 val_278 2010-03-03 12 +98 val_98 2010-03-03 12 +484 val_484 2010-03-03 12 +265 val_265 2010-03-03 12 +193 val_193 2010-03-03 12 +401 val_401 2010-03-03 12 +150 val_150 2010-03-03 12 +273 val_273 2010-03-03 12 +224 val_224 2010-03-03 12 +369 val_369 2010-03-03 12 +66 val_66 2010-03-03 12 +128 val_128 2010-03-03 12 +213 val_213 2010-03-03 12 +146 val_146 2010-03-03 12 +406 val_406 2010-03-03 12 +429 val_429 2010-03-03 12 +374 val_374 2010-03-03 12 +152 val_152 2010-03-03 12 +469 val_469 2010-03-03 12 +145 val_145 2010-03-03 12 +495 val_495 2010-03-03 12 +37 val_37 2010-03-03 12 +327 val_327 2010-03-03 12 +281 val_281 2010-03-03 12 +277 val_277 2010-03-03 12 +209 val_209 2010-03-03 12 +15 val_15 2010-03-03 12 +82 val_82 2010-03-03 12 +403 val_403 2010-03-03 12 +166 val_166 2010-03-03 12 +417 val_417 2010-03-03 12 +430 val_430 2010-03-03 12 +252 val_252 2010-03-03 12 +292 val_292 2010-03-03 12 +219 val_219 2010-03-03 12 +287 val_287 2010-03-03 12 +153 val_153 2010-03-03 12 +193 val_193 2010-03-03 12 +338 val_338 2010-03-03 12 +446 val_446 2010-03-03 12 +459 val_459 2010-03-03 12 +394 val_394 2010-03-03 12 +237 val_237 2010-03-03 12 +482 val_482 2010-03-03 12 +174 val_174 2010-03-03 12 +413 val_413 2010-03-03 12 +494 val_494 2010-03-03 12 +207 val_207 2010-03-03 12 +199 val_199 2010-03-03 12 +466 val_466 2010-03-03 12 +208 val_208 2010-03-03 12 +174 val_174 2010-03-03 12 +399 val_399 2010-03-03 12 +396 val_396 2010-03-03 12 +247 val_247 2010-03-03 12 +417 val_417 2010-03-03 12 +489 val_489 2010-03-03 12 +162 val_162 2010-03-03 12 +377 val_377 2010-03-03 12 +397 val_397 2010-03-03 12 +309 val_309 2010-03-03 12 +365 val_365 2010-03-03 12 +266 val_266 2010-03-03 12 +439 val_439 2010-03-03 12 +342 val_342 2010-03-03 12 +367 val_367 2010-03-03 12 +325 val_325 2010-03-03 12 +167 val_167 2010-03-03 12 +195 val_195 2010-03-03 12 +475 val_475 2010-03-03 12 +17 val_17 2010-03-03 12 +113 val_113 2010-03-03 12 +155 val_155 2010-03-03 12 +203 val_203 2010-03-03 12 +339 val_339 2010-03-03 12 +0 val_0 2010-03-03 12 +455 val_455 2010-03-03 12 +128 val_128 2010-03-03 12 +311 val_311 2010-03-03 12 +316 val_316 2010-03-03 12 +57 val_57 2010-03-03 12 +302 val_302 2010-03-03 12 +205 val_205 2010-03-03 12 +149 val_149 2010-03-03 12 +438 val_438 2010-03-03 12 +345 val_345 2010-03-03 12 +129 val_129 2010-03-03 12 +170 val_170 2010-03-03 12 +20 val_20 2010-03-03 12 +489 val_489 2010-03-03 12 +157 val_157 2010-03-03 12 +378 val_378 2010-03-03 12 +221 val_221 2010-03-03 12 +92 val_92 2010-03-03 12 +111 val_111 2010-03-03 12 +47 val_47 2010-03-03 12 +72 val_72 2010-03-03 12 +4 val_4 2010-03-03 12 +280 val_280 2010-03-03 12 +35 val_35 2010-03-03 12 +427 val_427 2010-03-03 12 +277 val_277 2010-03-03 12 +208 val_208 2010-03-03 12 +356 val_356 2010-03-03 12 +399 val_399 2010-03-03 12 +169 val_169 2010-03-03 12 +382 val_382 2010-03-03 12 +498 val_498 2010-03-03 12 +125 val_125 2010-03-03 12 +386 val_386 2010-03-03 12 +437 val_437 2010-03-03 12 +469 val_469 2010-03-03 12 +192 val_192 2010-03-03 12 +286 val_286 2010-03-03 12 +187 val_187 2010-03-03 12 +176 val_176 2010-03-03 12 +54 val_54 2010-03-03 12 +459 val_459 2010-03-03 12 +51 val_51 2010-03-03 12 +138 val_138 2010-03-03 12 +103 val_103 2010-03-03 12 +239 val_239 2010-03-03 12 +213 val_213 2010-03-03 12 +216 val_216 2010-03-03 12 +430 val_430 2010-03-03 12 +278 val_278 2010-03-03 12 +176 val_176 2010-03-03 12 +289 val_289 2010-03-03 12 +221 val_221 2010-03-03 12 +65 val_65 2010-03-03 12 +318 val_318 2010-03-03 12 +332 val_332 2010-03-03 12 +311 val_311 2010-03-03 12 +275 val_275 2010-03-03 12 +137 val_137 2010-03-03 12 +241 val_241 2010-03-03 12 +83 val_83 2010-03-03 12 +333 val_333 2010-03-03 12 +180 val_180 2010-03-03 12 +284 val_284 2010-03-03 12 +12 val_12 2010-03-03 12 +230 val_230 2010-03-03 12 +181 val_181 2010-03-03 12 +67 val_67 2010-03-03 12 +260 val_260 2010-03-03 12 +404 val_404 2010-03-03 12 +384 val_384 2010-03-03 12 +489 val_489 2010-03-03 12 +353 val_353 2010-03-03 12 +373 val_373 2010-03-03 12 +272 val_272 2010-03-03 12 +138 val_138 2010-03-03 12 +217 val_217 2010-03-03 12 +84 val_84 2010-03-03 12 +348 val_348 2010-03-03 12 +466 val_466 2010-03-03 12 +58 val_58 2010-03-03 12 +8 val_8 2010-03-03 12 +411 val_411 2010-03-03 12 +230 val_230 2010-03-03 12 +208 val_208 2010-03-03 12 +348 val_348 2010-03-03 12 +24 val_24 2010-03-03 12 +463 val_463 2010-03-03 12 +431 val_431 2010-03-03 12 +179 val_179 2010-03-03 12 +172 val_172 2010-03-03 12 +42 val_42 2010-03-03 12 +129 val_129 2010-03-03 12 +158 val_158 2010-03-03 12 +119 val_119 2010-03-03 12 +496 val_496 2010-03-03 12 +0 val_0 2010-03-03 12 +322 val_322 2010-03-03 12 +197 val_197 2010-03-03 12 +468 val_468 2010-03-03 12 +393 val_393 2010-03-03 12 +454 val_454 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +199 val_199 2010-03-03 12 +191 val_191 2010-03-03 12 +418 val_418 2010-03-03 12 +96 val_96 2010-03-03 12 +26 val_26 2010-03-03 12 +165 val_165 2010-03-03 12 +327 val_327 2010-03-03 12 +230 val_230 2010-03-03 12 +205 val_205 2010-03-03 12 +120 val_120 2010-03-03 12 +131 val_131 2010-03-03 12 +51 val_51 2010-03-03 12 +404 val_404 2010-03-03 12 +43 val_43 2010-03-03 12 +436 val_436 2010-03-03 12 +156 val_156 2010-03-03 12 +469 val_469 2010-03-03 12 +468 val_468 2010-03-03 12 +308 val_308 2010-03-03 12 +95 val_95 2010-03-03 12 +196 val_196 2010-03-03 12 +288 val_288 2010-03-03 12 +481 val_481 2010-03-03 12 +457 val_457 2010-03-03 12 +98 val_98 2010-03-03 12 +282 val_282 2010-03-03 12 +197 val_197 2010-03-03 12 +187 val_187 2010-03-03 12 +318 val_318 2010-03-03 12 +318 val_318 2010-03-03 12 +409 val_409 2010-03-03 12 +470 val_470 2010-03-03 12 +137 val_137 2010-03-03 12 +369 val_369 2010-03-03 12 +316 val_316 2010-03-03 12 +169 val_169 2010-03-03 12 +413 val_413 2010-03-03 12 +85 val_85 2010-03-03 12 +77 val_77 2010-03-03 12 +0 val_0 2010-03-03 12 +490 val_490 2010-03-03 12 +87 val_87 2010-03-03 12 +364 val_364 2010-03-03 12 +179 val_179 2010-03-03 12 +118 val_118 2010-03-03 12 +134 val_134 2010-03-03 12 +395 val_395 2010-03-03 12 +282 val_282 2010-03-03 12 +138 val_138 2010-03-03 12 +238 val_238 2010-03-03 12 +419 val_419 2010-03-03 12 +15 val_15 2010-03-03 12 +118 val_118 2010-03-03 12 +72 val_72 2010-03-03 12 +90 val_90 2010-03-03 12 +307 val_307 2010-03-03 12 +19 val_19 2010-03-03 12 +435 val_435 2010-03-03 12 +10 val_10 2010-03-03 12 +277 val_277 2010-03-03 12 +273 val_273 2010-03-03 12 +306 val_306 2010-03-03 12 +224 val_224 2010-03-03 12 +309 val_309 2010-03-03 12 +389 val_389 2010-03-03 12 +327 val_327 2010-03-03 12 +242 val_242 2010-03-03 12 +369 val_369 2010-03-03 12 +392 val_392 2010-03-03 12 +272 val_272 2010-03-03 12 +331 val_331 2010-03-03 12 +401 val_401 2010-03-03 12 +242 val_242 2010-03-03 12 +452 val_452 2010-03-03 12 +177 val_177 2010-03-03 12 +226 val_226 2010-03-03 12 +5 val_5 2010-03-03 12 +497 val_497 2010-03-03 12 +402 val_402 2010-03-03 12 +396 val_396 2010-03-03 12 +317 val_317 2010-03-03 12 +395 val_395 2010-03-03 12 +58 val_58 2010-03-03 12 +35 val_35 2010-03-03 12 +336 val_336 2010-03-03 12 +95 val_95 2010-03-03 12 +11 val_11 2010-03-03 12 +168 val_168 2010-03-03 12 +34 val_34 2010-03-03 12 +229 val_229 2010-03-03 12 +233 val_233 2010-03-03 12 +143 val_143 2010-03-03 12 +472 val_472 2010-03-03 12 +322 val_322 2010-03-03 12 +498 val_498 2010-03-03 12 +160 val_160 2010-03-03 12 +195 val_195 2010-03-03 12 +42 val_42 2010-03-03 12 +321 val_321 2010-03-03 12 +430 val_430 2010-03-03 12 +119 val_119 2010-03-03 12 +489 val_489 2010-03-03 12 +458 val_458 2010-03-03 12 +78 val_78 2010-03-03 12 +76 val_76 2010-03-03 12 +41 val_41 2010-03-03 12 +223 val_223 2010-03-03 12 +492 val_492 2010-03-03 12 +149 val_149 2010-03-03 12 +449 val_449 2010-03-03 12 +218 val_218 2010-03-03 12 +228 val_228 2010-03-03 12 +138 val_138 2010-03-03 12 +453 val_453 2010-03-03 12 +30 val_30 2010-03-03 12 +209 val_209 2010-03-03 12 +64 val_64 2010-03-03 12 +468 val_468 2010-03-03 12 +76 val_76 2010-03-03 12 +74 val_74 2010-03-03 12 +342 val_342 2010-03-03 12 +69 val_69 2010-03-03 12 +230 val_230 2010-03-03 12 +33 val_33 2010-03-03 12 +368 val_368 2010-03-03 12 +103 val_103 2010-03-03 12 +296 val_296 2010-03-03 12 +113 val_113 2010-03-03 12 +216 val_216 2010-03-03 12 +367 val_367 2010-03-03 12 +344 val_344 2010-03-03 12 +167 val_167 2010-03-03 12 +274 val_274 2010-03-03 12 +219 val_219 2010-03-03 12 +239 val_239 2010-03-03 12 +485 val_485 2010-03-03 12 +116 val_116 2010-03-03 12 +223 val_223 2010-03-03 12 +256 val_256 2010-03-03 12 +263 val_263 2010-03-03 12 +70 val_70 2010-03-03 12 +487 val_487 2010-03-03 12 +480 val_480 2010-03-03 12 +401 val_401 2010-03-03 12 +288 val_288 2010-03-03 12 +191 val_191 2010-03-03 12 +5 val_5 2010-03-03 12 +244 val_244 2010-03-03 12 +438 val_438 2010-03-03 12 +128 val_128 2010-03-03 12 +467 val_467 2010-03-03 12 +432 val_432 2010-03-03 12 +202 val_202 2010-03-03 12 +316 val_316 2010-03-03 12 +229 val_229 2010-03-03 12 +469 val_469 2010-03-03 12 +463 val_463 2010-03-03 12 +280 val_280 2010-03-03 12 +2 val_2 2010-03-03 12 +35 val_35 2010-03-03 12 +283 val_283 2010-03-03 12 +331 val_331 2010-03-03 12 +235 val_235 2010-03-03 12 +80 val_80 2010-03-03 12 +44 val_44 2010-03-03 12 +193 val_193 2010-03-03 12 +321 val_321 2010-03-03 12 +335 val_335 2010-03-03 12 +104 val_104 2010-03-03 12 +466 val_466 2010-03-03 12 +366 val_366 2010-03-03 12 +175 val_175 2010-03-03 12 +403 val_403 2010-03-03 12 +483 val_483 2010-03-03 12 +53 val_53 2010-03-03 12 +105 val_105 2010-03-03 12 +257 val_257 2010-03-03 12 +406 val_406 2010-03-03 12 +409 val_409 2010-03-03 12 +190 val_190 2010-03-03 12 +406 val_406 2010-03-03 12 +401 val_401 2010-03-03 12 +114 val_114 2010-03-03 12 +258 val_258 2010-03-03 12 +90 val_90 2010-03-03 12 +203 val_203 2010-03-03 12 +262 val_262 2010-03-03 12 +348 val_348 2010-03-03 12 +424 val_424 2010-03-03 12 +12 val_12 2010-03-03 12 +396 val_396 2010-03-03 12 +201 val_201 2010-03-03 12 +217 val_217 2010-03-03 12 +164 val_164 2010-03-03 12 +431 val_431 2010-03-03 12 +454 val_454 2010-03-03 12 +478 val_478 2010-03-03 12 +298 val_298 2010-03-03 12 +125 val_125 2010-03-03 12 +431 val_431 2010-03-03 12 +164 val_164 2010-03-03 12 +424 val_424 2010-03-03 12 +187 val_187 2010-03-03 12 +382 val_382 2010-03-03 12 +5 val_5 2010-03-03 12 +70 val_70 2010-03-03 12 +397 val_397 2010-03-03 12 +480 val_480 2010-03-03 12 +291 val_291 2010-03-03 12 +24 val_24 2010-03-03 12 +351 val_351 2010-03-03 12 +255 val_255 2010-03-03 12 +104 val_104 2010-03-03 12 +70 val_70 2010-03-03 12 +163 val_163 2010-03-03 12 +438 val_438 2010-03-03 12 +119 val_119 2010-03-03 12 +414 val_414 2010-03-03 12 +200 val_200 2010-03-03 12 +491 val_491 2010-03-03 12 +237 val_237 2010-03-03 12 +439 val_439 2010-03-03 12 +360 val_360 2010-03-03 12 +248 val_248 2010-03-03 12 +479 val_479 2010-03-03 12 +305 val_305 2010-03-03 12 +417 val_417 2010-03-03 12 +199 val_199 2010-03-03 12 +444 val_444 2010-03-03 12 +120 val_120 2010-03-03 12 +429 val_429 2010-03-03 12 +169 val_169 2010-03-03 12 +443 val_443 2010-03-03 12 +323 val_323 2010-03-03 12 +325 val_325 2010-03-03 12 +277 val_277 2010-03-03 12 +230 val_230 2010-03-03 12 +478 val_478 2010-03-03 12 +178 val_178 2010-03-03 12 +468 val_468 2010-03-03 12 +310 val_310 2010-03-03 12 +317 val_317 2010-03-03 12 +333 val_333 2010-03-03 12 +493 val_493 2010-03-03 12 +460 val_460 2010-03-03 12 +207 val_207 2010-03-03 12 +249 val_249 2010-03-03 12 +265 val_265 2010-03-03 12 +480 val_480 2010-03-03 12 +83 val_83 2010-03-03 12 +136 val_136 2010-03-03 12 +353 val_353 2010-03-03 12 +172 val_172 2010-03-03 12 +214 val_214 2010-03-03 12 +462 val_462 2010-03-03 12 +233 val_233 2010-03-03 12 +406 val_406 2010-03-03 12 +133 val_133 2010-03-03 12 +175 val_175 2010-03-03 12 +189 val_189 2010-03-03 12 +454 val_454 2010-03-03 12 +375 val_375 2010-03-03 12 +401 val_401 2010-03-03 12 +421 val_421 2010-03-03 12 +407 val_407 2010-03-03 12 +384 val_384 2010-03-03 12 +256 val_256 2010-03-03 12 +26 val_26 2010-03-03 12 +134 val_134 2010-03-03 12 +67 val_67 2010-03-03 12 +384 val_384 2010-03-03 12 +379 val_379 2010-03-03 12 +18 val_18 2010-03-03 12 +462 val_462 2010-03-03 12 +492 val_492 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +9 val_9 2010-03-03 12 +341 val_341 2010-03-03 12 +498 val_498 2010-03-03 12 +146 val_146 2010-03-03 12 +458 val_458 2010-03-03 12 +362 val_362 2010-03-03 12 +186 val_186 2010-03-03 12 +285 val_285 2010-03-03 12 +348 val_348 2010-03-03 12 +167 val_167 2010-03-03 12 +18 val_18 2010-03-03 12 +273 val_273 2010-03-03 12 +183 val_183 2010-03-03 12 +281 val_281 2010-03-03 12 +344 val_344 2010-03-03 12 +97 val_97 2010-03-03 12 +469 val_469 2010-03-03 12 +315 val_315 2010-03-03 12 +84 val_84 2010-03-03 12 +28 val_28 2010-03-03 12 +37 val_37 2010-03-03 12 +448 val_448 2010-03-03 12 +152 val_152 2010-03-03 12 +348 val_348 2010-03-03 12 +307 val_307 2010-03-03 12 +194 val_194 2010-03-03 12 +414 val_414 2010-03-03 12 +477 val_477 2010-03-03 12 +222 val_222 2010-03-03 12 +126 val_126 2010-03-03 12 +90 val_90 2010-03-03 12 +169 val_169 2010-03-03 12 +403 val_403 2010-03-03 12 +400 val_400 2010-03-03 12 +200 val_200 2010-03-03 12 +97 val_97 2010-03-03 12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part7-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part7-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..8c43153cf66f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part7-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part7-1-e31d34a1b14d706d2b78d083ea858c81 b/sql/hive/src/test/resources/golden/load_dyn_part7-1-e31d34a1b14d706d2b78d083ea858c81 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part7-2-5d4c3c48f53d55e26ca142ee70d1706a b/sql/hive/src/test/resources/golden/load_dyn_part7-2-5d4c3c48f53d55e26ca142ee70d1706a new file mode 100644 index 0000000000000..d62156d392d5e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part7-2-5d4c3c48f53d55e26ca142ee70d1706a @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part7, dbName:default, owner:marmbrus, createTime:1390899664, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part7, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{p3=v3, transient_lastDdlTime=1390899664}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/load_dyn_part7-3-ad94ac1192dbace6b5cf5915387e94e2 b/sql/hive/src/test/resources/golden/load_dyn_part7-3-ad94ac1192dbace6b5cf5915387e94e2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part7-4-e98039d0d4ef775fb5594bebffacf4f6 b/sql/hive/src/test/resources/golden/load_dyn_part7-4-e98039d0d4ef775fb5594bebffacf4f6 new file mode 100644 index 0000000000000..ed0d81e7a9d44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part7-4-e98039d0d4ef775fb5594bebffacf4f6 @@ -0,0 +1 @@ +ds=2010-03-03/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part7-5-b3615ce72a55dba805303145030c8a93 b/sql/hive/src/test/resources/golden/load_dyn_part7-5-b3615ce72a55dba805303145030c8a93 new file mode 100644 index 0000000000000..542a689ea8311 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part7-5-b3615ce72a55dba805303145030c8a93 @@ -0,0 +1,500 @@ +238 val_238 2010-03-03 12 +86 val_86 2010-03-03 12 +311 val_311 2010-03-03 12 +27 val_27 2010-03-03 12 +165 val_165 2010-03-03 12 +409 val_409 2010-03-03 12 +255 val_255 2010-03-03 12 +278 val_278 2010-03-03 12 +98 val_98 2010-03-03 12 +484 val_484 2010-03-03 12 +265 val_265 2010-03-03 12 +193 val_193 2010-03-03 12 +401 val_401 2010-03-03 12 +150 val_150 2010-03-03 12 +273 val_273 2010-03-03 12 +224 val_224 2010-03-03 12 +369 val_369 2010-03-03 12 +66 val_66 2010-03-03 12 +128 val_128 2010-03-03 12 +213 val_213 2010-03-03 12 +146 val_146 2010-03-03 12 +406 val_406 2010-03-03 12 +429 val_429 2010-03-03 12 +374 val_374 2010-03-03 12 +152 val_152 2010-03-03 12 +469 val_469 2010-03-03 12 +145 val_145 2010-03-03 12 +495 val_495 2010-03-03 12 +37 val_37 2010-03-03 12 +327 val_327 2010-03-03 12 +281 val_281 2010-03-03 12 +277 val_277 2010-03-03 12 +209 val_209 2010-03-03 12 +15 val_15 2010-03-03 12 +82 val_82 2010-03-03 12 +403 val_403 2010-03-03 12 +166 val_166 2010-03-03 12 +417 val_417 2010-03-03 12 +430 val_430 2010-03-03 12 +252 val_252 2010-03-03 12 +292 val_292 2010-03-03 12 +219 val_219 2010-03-03 12 +287 val_287 2010-03-03 12 +153 val_153 2010-03-03 12 +193 val_193 2010-03-03 12 +338 val_338 2010-03-03 12 +446 val_446 2010-03-03 12 +459 val_459 2010-03-03 12 +394 val_394 2010-03-03 12 +237 val_237 2010-03-03 12 +482 val_482 2010-03-03 12 +174 val_174 2010-03-03 12 +413 val_413 2010-03-03 12 +494 val_494 2010-03-03 12 +207 val_207 2010-03-03 12 +199 val_199 2010-03-03 12 +466 val_466 2010-03-03 12 +208 val_208 2010-03-03 12 +174 val_174 2010-03-03 12 +399 val_399 2010-03-03 12 +396 val_396 2010-03-03 12 +247 val_247 2010-03-03 12 +417 val_417 2010-03-03 12 +489 val_489 2010-03-03 12 +162 val_162 2010-03-03 12 +377 val_377 2010-03-03 12 +397 val_397 2010-03-03 12 +309 val_309 2010-03-03 12 +365 val_365 2010-03-03 12 +266 val_266 2010-03-03 12 +439 val_439 2010-03-03 12 +342 val_342 2010-03-03 12 +367 val_367 2010-03-03 12 +325 val_325 2010-03-03 12 +167 val_167 2010-03-03 12 +195 val_195 2010-03-03 12 +475 val_475 2010-03-03 12 +17 val_17 2010-03-03 12 +113 val_113 2010-03-03 12 +155 val_155 2010-03-03 12 +203 val_203 2010-03-03 12 +339 val_339 2010-03-03 12 +0 val_0 2010-03-03 12 +455 val_455 2010-03-03 12 +128 val_128 2010-03-03 12 +311 val_311 2010-03-03 12 +316 val_316 2010-03-03 12 +57 val_57 2010-03-03 12 +302 val_302 2010-03-03 12 +205 val_205 2010-03-03 12 +149 val_149 2010-03-03 12 +438 val_438 2010-03-03 12 +345 val_345 2010-03-03 12 +129 val_129 2010-03-03 12 +170 val_170 2010-03-03 12 +20 val_20 2010-03-03 12 +489 val_489 2010-03-03 12 +157 val_157 2010-03-03 12 +378 val_378 2010-03-03 12 +221 val_221 2010-03-03 12 +92 val_92 2010-03-03 12 +111 val_111 2010-03-03 12 +47 val_47 2010-03-03 12 +72 val_72 2010-03-03 12 +4 val_4 2010-03-03 12 +280 val_280 2010-03-03 12 +35 val_35 2010-03-03 12 +427 val_427 2010-03-03 12 +277 val_277 2010-03-03 12 +208 val_208 2010-03-03 12 +356 val_356 2010-03-03 12 +399 val_399 2010-03-03 12 +169 val_169 2010-03-03 12 +382 val_382 2010-03-03 12 +498 val_498 2010-03-03 12 +125 val_125 2010-03-03 12 +386 val_386 2010-03-03 12 +437 val_437 2010-03-03 12 +469 val_469 2010-03-03 12 +192 val_192 2010-03-03 12 +286 val_286 2010-03-03 12 +187 val_187 2010-03-03 12 +176 val_176 2010-03-03 12 +54 val_54 2010-03-03 12 +459 val_459 2010-03-03 12 +51 val_51 2010-03-03 12 +138 val_138 2010-03-03 12 +103 val_103 2010-03-03 12 +239 val_239 2010-03-03 12 +213 val_213 2010-03-03 12 +216 val_216 2010-03-03 12 +430 val_430 2010-03-03 12 +278 val_278 2010-03-03 12 +176 val_176 2010-03-03 12 +289 val_289 2010-03-03 12 +221 val_221 2010-03-03 12 +65 val_65 2010-03-03 12 +318 val_318 2010-03-03 12 +332 val_332 2010-03-03 12 +311 val_311 2010-03-03 12 +275 val_275 2010-03-03 12 +137 val_137 2010-03-03 12 +241 val_241 2010-03-03 12 +83 val_83 2010-03-03 12 +333 val_333 2010-03-03 12 +180 val_180 2010-03-03 12 +284 val_284 2010-03-03 12 +12 val_12 2010-03-03 12 +230 val_230 2010-03-03 12 +181 val_181 2010-03-03 12 +67 val_67 2010-03-03 12 +260 val_260 2010-03-03 12 +404 val_404 2010-03-03 12 +384 val_384 2010-03-03 12 +489 val_489 2010-03-03 12 +353 val_353 2010-03-03 12 +373 val_373 2010-03-03 12 +272 val_272 2010-03-03 12 +138 val_138 2010-03-03 12 +217 val_217 2010-03-03 12 +84 val_84 2010-03-03 12 +348 val_348 2010-03-03 12 +466 val_466 2010-03-03 12 +58 val_58 2010-03-03 12 +8 val_8 2010-03-03 12 +411 val_411 2010-03-03 12 +230 val_230 2010-03-03 12 +208 val_208 2010-03-03 12 +348 val_348 2010-03-03 12 +24 val_24 2010-03-03 12 +463 val_463 2010-03-03 12 +431 val_431 2010-03-03 12 +179 val_179 2010-03-03 12 +172 val_172 2010-03-03 12 +42 val_42 2010-03-03 12 +129 val_129 2010-03-03 12 +158 val_158 2010-03-03 12 +119 val_119 2010-03-03 12 +496 val_496 2010-03-03 12 +0 val_0 2010-03-03 12 +322 val_322 2010-03-03 12 +197 val_197 2010-03-03 12 +468 val_468 2010-03-03 12 +393 val_393 2010-03-03 12 +454 val_454 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +199 val_199 2010-03-03 12 +191 val_191 2010-03-03 12 +418 val_418 2010-03-03 12 +96 val_96 2010-03-03 12 +26 val_26 2010-03-03 12 +165 val_165 2010-03-03 12 +327 val_327 2010-03-03 12 +230 val_230 2010-03-03 12 +205 val_205 2010-03-03 12 +120 val_120 2010-03-03 12 +131 val_131 2010-03-03 12 +51 val_51 2010-03-03 12 +404 val_404 2010-03-03 12 +43 val_43 2010-03-03 12 +436 val_436 2010-03-03 12 +156 val_156 2010-03-03 12 +469 val_469 2010-03-03 12 +468 val_468 2010-03-03 12 +308 val_308 2010-03-03 12 +95 val_95 2010-03-03 12 +196 val_196 2010-03-03 12 +288 val_288 2010-03-03 12 +481 val_481 2010-03-03 12 +457 val_457 2010-03-03 12 +98 val_98 2010-03-03 12 +282 val_282 2010-03-03 12 +197 val_197 2010-03-03 12 +187 val_187 2010-03-03 12 +318 val_318 2010-03-03 12 +318 val_318 2010-03-03 12 +409 val_409 2010-03-03 12 +470 val_470 2010-03-03 12 +137 val_137 2010-03-03 12 +369 val_369 2010-03-03 12 +316 val_316 2010-03-03 12 +169 val_169 2010-03-03 12 +413 val_413 2010-03-03 12 +85 val_85 2010-03-03 12 +77 val_77 2010-03-03 12 +0 val_0 2010-03-03 12 +490 val_490 2010-03-03 12 +87 val_87 2010-03-03 12 +364 val_364 2010-03-03 12 +179 val_179 2010-03-03 12 +118 val_118 2010-03-03 12 +134 val_134 2010-03-03 12 +395 val_395 2010-03-03 12 +282 val_282 2010-03-03 12 +138 val_138 2010-03-03 12 +238 val_238 2010-03-03 12 +419 val_419 2010-03-03 12 +15 val_15 2010-03-03 12 +118 val_118 2010-03-03 12 +72 val_72 2010-03-03 12 +90 val_90 2010-03-03 12 +307 val_307 2010-03-03 12 +19 val_19 2010-03-03 12 +435 val_435 2010-03-03 12 +10 val_10 2010-03-03 12 +277 val_277 2010-03-03 12 +273 val_273 2010-03-03 12 +306 val_306 2010-03-03 12 +224 val_224 2010-03-03 12 +309 val_309 2010-03-03 12 +389 val_389 2010-03-03 12 +327 val_327 2010-03-03 12 +242 val_242 2010-03-03 12 +369 val_369 2010-03-03 12 +392 val_392 2010-03-03 12 +272 val_272 2010-03-03 12 +331 val_331 2010-03-03 12 +401 val_401 2010-03-03 12 +242 val_242 2010-03-03 12 +452 val_452 2010-03-03 12 +177 val_177 2010-03-03 12 +226 val_226 2010-03-03 12 +5 val_5 2010-03-03 12 +497 val_497 2010-03-03 12 +402 val_402 2010-03-03 12 +396 val_396 2010-03-03 12 +317 val_317 2010-03-03 12 +395 val_395 2010-03-03 12 +58 val_58 2010-03-03 12 +35 val_35 2010-03-03 12 +336 val_336 2010-03-03 12 +95 val_95 2010-03-03 12 +11 val_11 2010-03-03 12 +168 val_168 2010-03-03 12 +34 val_34 2010-03-03 12 +229 val_229 2010-03-03 12 +233 val_233 2010-03-03 12 +143 val_143 2010-03-03 12 +472 val_472 2010-03-03 12 +322 val_322 2010-03-03 12 +498 val_498 2010-03-03 12 +160 val_160 2010-03-03 12 +195 val_195 2010-03-03 12 +42 val_42 2010-03-03 12 +321 val_321 2010-03-03 12 +430 val_430 2010-03-03 12 +119 val_119 2010-03-03 12 +489 val_489 2010-03-03 12 +458 val_458 2010-03-03 12 +78 val_78 2010-03-03 12 +76 val_76 2010-03-03 12 +41 val_41 2010-03-03 12 +223 val_223 2010-03-03 12 +492 val_492 2010-03-03 12 +149 val_149 2010-03-03 12 +449 val_449 2010-03-03 12 +218 val_218 2010-03-03 12 +228 val_228 2010-03-03 12 +138 val_138 2010-03-03 12 +453 val_453 2010-03-03 12 +30 val_30 2010-03-03 12 +209 val_209 2010-03-03 12 +64 val_64 2010-03-03 12 +468 val_468 2010-03-03 12 +76 val_76 2010-03-03 12 +74 val_74 2010-03-03 12 +342 val_342 2010-03-03 12 +69 val_69 2010-03-03 12 +230 val_230 2010-03-03 12 +33 val_33 2010-03-03 12 +368 val_368 2010-03-03 12 +103 val_103 2010-03-03 12 +296 val_296 2010-03-03 12 +113 val_113 2010-03-03 12 +216 val_216 2010-03-03 12 +367 val_367 2010-03-03 12 +344 val_344 2010-03-03 12 +167 val_167 2010-03-03 12 +274 val_274 2010-03-03 12 +219 val_219 2010-03-03 12 +239 val_239 2010-03-03 12 +485 val_485 2010-03-03 12 +116 val_116 2010-03-03 12 +223 val_223 2010-03-03 12 +256 val_256 2010-03-03 12 +263 val_263 2010-03-03 12 +70 val_70 2010-03-03 12 +487 val_487 2010-03-03 12 +480 val_480 2010-03-03 12 +401 val_401 2010-03-03 12 +288 val_288 2010-03-03 12 +191 val_191 2010-03-03 12 +5 val_5 2010-03-03 12 +244 val_244 2010-03-03 12 +438 val_438 2010-03-03 12 +128 val_128 2010-03-03 12 +467 val_467 2010-03-03 12 +432 val_432 2010-03-03 12 +202 val_202 2010-03-03 12 +316 val_316 2010-03-03 12 +229 val_229 2010-03-03 12 +469 val_469 2010-03-03 12 +463 val_463 2010-03-03 12 +280 val_280 2010-03-03 12 +2 val_2 2010-03-03 12 +35 val_35 2010-03-03 12 +283 val_283 2010-03-03 12 +331 val_331 2010-03-03 12 +235 val_235 2010-03-03 12 +80 val_80 2010-03-03 12 +44 val_44 2010-03-03 12 +193 val_193 2010-03-03 12 +321 val_321 2010-03-03 12 +335 val_335 2010-03-03 12 +104 val_104 2010-03-03 12 +466 val_466 2010-03-03 12 +366 val_366 2010-03-03 12 +175 val_175 2010-03-03 12 +403 val_403 2010-03-03 12 +483 val_483 2010-03-03 12 +53 val_53 2010-03-03 12 +105 val_105 2010-03-03 12 +257 val_257 2010-03-03 12 +406 val_406 2010-03-03 12 +409 val_409 2010-03-03 12 +190 val_190 2010-03-03 12 +406 val_406 2010-03-03 12 +401 val_401 2010-03-03 12 +114 val_114 2010-03-03 12 +258 val_258 2010-03-03 12 +90 val_90 2010-03-03 12 +203 val_203 2010-03-03 12 +262 val_262 2010-03-03 12 +348 val_348 2010-03-03 12 +424 val_424 2010-03-03 12 +12 val_12 2010-03-03 12 +396 val_396 2010-03-03 12 +201 val_201 2010-03-03 12 +217 val_217 2010-03-03 12 +164 val_164 2010-03-03 12 +431 val_431 2010-03-03 12 +454 val_454 2010-03-03 12 +478 val_478 2010-03-03 12 +298 val_298 2010-03-03 12 +125 val_125 2010-03-03 12 +431 val_431 2010-03-03 12 +164 val_164 2010-03-03 12 +424 val_424 2010-03-03 12 +187 val_187 2010-03-03 12 +382 val_382 2010-03-03 12 +5 val_5 2010-03-03 12 +70 val_70 2010-03-03 12 +397 val_397 2010-03-03 12 +480 val_480 2010-03-03 12 +291 val_291 2010-03-03 12 +24 val_24 2010-03-03 12 +351 val_351 2010-03-03 12 +255 val_255 2010-03-03 12 +104 val_104 2010-03-03 12 +70 val_70 2010-03-03 12 +163 val_163 2010-03-03 12 +438 val_438 2010-03-03 12 +119 val_119 2010-03-03 12 +414 val_414 2010-03-03 12 +200 val_200 2010-03-03 12 +491 val_491 2010-03-03 12 +237 val_237 2010-03-03 12 +439 val_439 2010-03-03 12 +360 val_360 2010-03-03 12 +248 val_248 2010-03-03 12 +479 val_479 2010-03-03 12 +305 val_305 2010-03-03 12 +417 val_417 2010-03-03 12 +199 val_199 2010-03-03 12 +444 val_444 2010-03-03 12 +120 val_120 2010-03-03 12 +429 val_429 2010-03-03 12 +169 val_169 2010-03-03 12 +443 val_443 2010-03-03 12 +323 val_323 2010-03-03 12 +325 val_325 2010-03-03 12 +277 val_277 2010-03-03 12 +230 val_230 2010-03-03 12 +478 val_478 2010-03-03 12 +178 val_178 2010-03-03 12 +468 val_468 2010-03-03 12 +310 val_310 2010-03-03 12 +317 val_317 2010-03-03 12 +333 val_333 2010-03-03 12 +493 val_493 2010-03-03 12 +460 val_460 2010-03-03 12 +207 val_207 2010-03-03 12 +249 val_249 2010-03-03 12 +265 val_265 2010-03-03 12 +480 val_480 2010-03-03 12 +83 val_83 2010-03-03 12 +136 val_136 2010-03-03 12 +353 val_353 2010-03-03 12 +172 val_172 2010-03-03 12 +214 val_214 2010-03-03 12 +462 val_462 2010-03-03 12 +233 val_233 2010-03-03 12 +406 val_406 2010-03-03 12 +133 val_133 2010-03-03 12 +175 val_175 2010-03-03 12 +189 val_189 2010-03-03 12 +454 val_454 2010-03-03 12 +375 val_375 2010-03-03 12 +401 val_401 2010-03-03 12 +421 val_421 2010-03-03 12 +407 val_407 2010-03-03 12 +384 val_384 2010-03-03 12 +256 val_256 2010-03-03 12 +26 val_26 2010-03-03 12 +134 val_134 2010-03-03 12 +67 val_67 2010-03-03 12 +384 val_384 2010-03-03 12 +379 val_379 2010-03-03 12 +18 val_18 2010-03-03 12 +462 val_462 2010-03-03 12 +492 val_492 2010-03-03 12 +100 val_100 2010-03-03 12 +298 val_298 2010-03-03 12 +9 val_9 2010-03-03 12 +341 val_341 2010-03-03 12 +498 val_498 2010-03-03 12 +146 val_146 2010-03-03 12 +458 val_458 2010-03-03 12 +362 val_362 2010-03-03 12 +186 val_186 2010-03-03 12 +285 val_285 2010-03-03 12 +348 val_348 2010-03-03 12 +167 val_167 2010-03-03 12 +18 val_18 2010-03-03 12 +273 val_273 2010-03-03 12 +183 val_183 2010-03-03 12 +281 val_281 2010-03-03 12 +344 val_344 2010-03-03 12 +97 val_97 2010-03-03 12 +469 val_469 2010-03-03 12 +315 val_315 2010-03-03 12 +84 val_84 2010-03-03 12 +28 val_28 2010-03-03 12 +37 val_37 2010-03-03 12 +448 val_448 2010-03-03 12 +152 val_152 2010-03-03 12 +348 val_348 2010-03-03 12 +307 val_307 2010-03-03 12 +194 val_194 2010-03-03 12 +414 val_414 2010-03-03 12 +477 val_477 2010-03-03 12 +222 val_222 2010-03-03 12 +126 val_126 2010-03-03 12 +90 val_90 2010-03-03 12 +169 val_169 2010-03-03 12 +403 val_403 2010-03-03 12 +400 val_400 2010-03-03 12 +200 val_200 2010-03-03 12 +97 val_97 2010-03-03 12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part8-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..8c43153cf66f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part8-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-1-ff5ce932ae5ba496badee7f2465f272c b/sql/hive/src/test/resources/golden/load_dyn_part8-1-ff5ce932ae5ba496badee7f2465f272c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-2-9e1df41acabef83f62464f52c2396c8a b/sql/hive/src/test/resources/golden/load_dyn_part8-2-9e1df41acabef83f62464f52c2396c8a new file mode 100644 index 0000000000000..91fa51871a4b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part8-2-9e1df41acabef83f62464f52c2396c8a @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part8, dbName:default, owner:marmbrus, createTime:1390899674, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part8, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{p3=v3, transient_lastDdlTime=1390899674}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part8-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part8-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-4-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part8-4-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part8-4-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-5-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part8-5-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part8-5-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-6-86db06cb739ceef70c8885469d847495 b/sql/hive/src/test/resources/golden/load_dyn_part8-6-86db06cb739ceef70c8885469d847495 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-7-be6ace08b68bc4346456103640308cf7 b/sql/hive/src/test/resources/golden/load_dyn_part8-7-be6ace08b68bc4346456103640308cf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-8-cc6aa0fc59ede89158d4f19752660b8b b/sql/hive/src/test/resources/golden/load_dyn_part8-8-cc6aa0fc59ede89158d4f19752660b8b new file mode 100644 index 0000000000000..a3c07bb68d96d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part8-8-cc6aa0fc59ede89158d4f19752660b8b @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-12-31/hr=11 +ds=2008-12-31/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part8-9-a7456fceb35f62a282db750384f480db b/sql/hive/src/test/resources/golden/load_dyn_part8-9-a7456fceb35f62a282db750384f480db new file mode 100644 index 0000000000000..4c0ed5d6fc5f1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part8-9-a7456fceb35f62a282db750384f480db @@ -0,0 +1,2000 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 +238 val_238 2008-12-31 11 +86 val_86 2008-12-31 11 +311 val_311 2008-12-31 11 +27 val_27 2008-12-31 11 +165 val_165 2008-12-31 11 +409 val_409 2008-12-31 11 +255 val_255 2008-12-31 11 +278 val_278 2008-12-31 11 +98 val_98 2008-12-31 11 +484 val_484 2008-12-31 11 +265 val_265 2008-12-31 11 +193 val_193 2008-12-31 11 +401 val_401 2008-12-31 11 +150 val_150 2008-12-31 11 +273 val_273 2008-12-31 11 +224 val_224 2008-12-31 11 +369 val_369 2008-12-31 11 +66 val_66 2008-12-31 11 +128 val_128 2008-12-31 11 +213 val_213 2008-12-31 11 +146 val_146 2008-12-31 11 +406 val_406 2008-12-31 11 +429 val_429 2008-12-31 11 +374 val_374 2008-12-31 11 +152 val_152 2008-12-31 11 +469 val_469 2008-12-31 11 +145 val_145 2008-12-31 11 +495 val_495 2008-12-31 11 +37 val_37 2008-12-31 11 +327 val_327 2008-12-31 11 +281 val_281 2008-12-31 11 +277 val_277 2008-12-31 11 +209 val_209 2008-12-31 11 +15 val_15 2008-12-31 11 +82 val_82 2008-12-31 11 +403 val_403 2008-12-31 11 +166 val_166 2008-12-31 11 +417 val_417 2008-12-31 11 +430 val_430 2008-12-31 11 +252 val_252 2008-12-31 11 +292 val_292 2008-12-31 11 +219 val_219 2008-12-31 11 +287 val_287 2008-12-31 11 +153 val_153 2008-12-31 11 +193 val_193 2008-12-31 11 +338 val_338 2008-12-31 11 +446 val_446 2008-12-31 11 +459 val_459 2008-12-31 11 +394 val_394 2008-12-31 11 +237 val_237 2008-12-31 11 +482 val_482 2008-12-31 11 +174 val_174 2008-12-31 11 +413 val_413 2008-12-31 11 +494 val_494 2008-12-31 11 +207 val_207 2008-12-31 11 +199 val_199 2008-12-31 11 +466 val_466 2008-12-31 11 +208 val_208 2008-12-31 11 +174 val_174 2008-12-31 11 +399 val_399 2008-12-31 11 +396 val_396 2008-12-31 11 +247 val_247 2008-12-31 11 +417 val_417 2008-12-31 11 +489 val_489 2008-12-31 11 +162 val_162 2008-12-31 11 +377 val_377 2008-12-31 11 +397 val_397 2008-12-31 11 +309 val_309 2008-12-31 11 +365 val_365 2008-12-31 11 +266 val_266 2008-12-31 11 +439 val_439 2008-12-31 11 +342 val_342 2008-12-31 11 +367 val_367 2008-12-31 11 +325 val_325 2008-12-31 11 +167 val_167 2008-12-31 11 +195 val_195 2008-12-31 11 +475 val_475 2008-12-31 11 +17 val_17 2008-12-31 11 +113 val_113 2008-12-31 11 +155 val_155 2008-12-31 11 +203 val_203 2008-12-31 11 +339 val_339 2008-12-31 11 +0 val_0 2008-12-31 11 +455 val_455 2008-12-31 11 +128 val_128 2008-12-31 11 +311 val_311 2008-12-31 11 +316 val_316 2008-12-31 11 +57 val_57 2008-12-31 11 +302 val_302 2008-12-31 11 +205 val_205 2008-12-31 11 +149 val_149 2008-12-31 11 +438 val_438 2008-12-31 11 +345 val_345 2008-12-31 11 +129 val_129 2008-12-31 11 +170 val_170 2008-12-31 11 +20 val_20 2008-12-31 11 +489 val_489 2008-12-31 11 +157 val_157 2008-12-31 11 +378 val_378 2008-12-31 11 +221 val_221 2008-12-31 11 +92 val_92 2008-12-31 11 +111 val_111 2008-12-31 11 +47 val_47 2008-12-31 11 +72 val_72 2008-12-31 11 +4 val_4 2008-12-31 11 +280 val_280 2008-12-31 11 +35 val_35 2008-12-31 11 +427 val_427 2008-12-31 11 +277 val_277 2008-12-31 11 +208 val_208 2008-12-31 11 +356 val_356 2008-12-31 11 +399 val_399 2008-12-31 11 +169 val_169 2008-12-31 11 +382 val_382 2008-12-31 11 +498 val_498 2008-12-31 11 +125 val_125 2008-12-31 11 +386 val_386 2008-12-31 11 +437 val_437 2008-12-31 11 +469 val_469 2008-12-31 11 +192 val_192 2008-12-31 11 +286 val_286 2008-12-31 11 +187 val_187 2008-12-31 11 +176 val_176 2008-12-31 11 +54 val_54 2008-12-31 11 +459 val_459 2008-12-31 11 +51 val_51 2008-12-31 11 +138 val_138 2008-12-31 11 +103 val_103 2008-12-31 11 +239 val_239 2008-12-31 11 +213 val_213 2008-12-31 11 +216 val_216 2008-12-31 11 +430 val_430 2008-12-31 11 +278 val_278 2008-12-31 11 +176 val_176 2008-12-31 11 +289 val_289 2008-12-31 11 +221 val_221 2008-12-31 11 +65 val_65 2008-12-31 11 +318 val_318 2008-12-31 11 +332 val_332 2008-12-31 11 +311 val_311 2008-12-31 11 +275 val_275 2008-12-31 11 +137 val_137 2008-12-31 11 +241 val_241 2008-12-31 11 +83 val_83 2008-12-31 11 +333 val_333 2008-12-31 11 +180 val_180 2008-12-31 11 +284 val_284 2008-12-31 11 +12 val_12 2008-12-31 11 +230 val_230 2008-12-31 11 +181 val_181 2008-12-31 11 +67 val_67 2008-12-31 11 +260 val_260 2008-12-31 11 +404 val_404 2008-12-31 11 +384 val_384 2008-12-31 11 +489 val_489 2008-12-31 11 +353 val_353 2008-12-31 11 +373 val_373 2008-12-31 11 +272 val_272 2008-12-31 11 +138 val_138 2008-12-31 11 +217 val_217 2008-12-31 11 +84 val_84 2008-12-31 11 +348 val_348 2008-12-31 11 +466 val_466 2008-12-31 11 +58 val_58 2008-12-31 11 +8 val_8 2008-12-31 11 +411 val_411 2008-12-31 11 +230 val_230 2008-12-31 11 +208 val_208 2008-12-31 11 +348 val_348 2008-12-31 11 +24 val_24 2008-12-31 11 +463 val_463 2008-12-31 11 +431 val_431 2008-12-31 11 +179 val_179 2008-12-31 11 +172 val_172 2008-12-31 11 +42 val_42 2008-12-31 11 +129 val_129 2008-12-31 11 +158 val_158 2008-12-31 11 +119 val_119 2008-12-31 11 +496 val_496 2008-12-31 11 +0 val_0 2008-12-31 11 +322 val_322 2008-12-31 11 +197 val_197 2008-12-31 11 +468 val_468 2008-12-31 11 +393 val_393 2008-12-31 11 +454 val_454 2008-12-31 11 +100 val_100 2008-12-31 11 +298 val_298 2008-12-31 11 +199 val_199 2008-12-31 11 +191 val_191 2008-12-31 11 +418 val_418 2008-12-31 11 +96 val_96 2008-12-31 11 +26 val_26 2008-12-31 11 +165 val_165 2008-12-31 11 +327 val_327 2008-12-31 11 +230 val_230 2008-12-31 11 +205 val_205 2008-12-31 11 +120 val_120 2008-12-31 11 +131 val_131 2008-12-31 11 +51 val_51 2008-12-31 11 +404 val_404 2008-12-31 11 +43 val_43 2008-12-31 11 +436 val_436 2008-12-31 11 +156 val_156 2008-12-31 11 +469 val_469 2008-12-31 11 +468 val_468 2008-12-31 11 +308 val_308 2008-12-31 11 +95 val_95 2008-12-31 11 +196 val_196 2008-12-31 11 +288 val_288 2008-12-31 11 +481 val_481 2008-12-31 11 +457 val_457 2008-12-31 11 +98 val_98 2008-12-31 11 +282 val_282 2008-12-31 11 +197 val_197 2008-12-31 11 +187 val_187 2008-12-31 11 +318 val_318 2008-12-31 11 +318 val_318 2008-12-31 11 +409 val_409 2008-12-31 11 +470 val_470 2008-12-31 11 +137 val_137 2008-12-31 11 +369 val_369 2008-12-31 11 +316 val_316 2008-12-31 11 +169 val_169 2008-12-31 11 +413 val_413 2008-12-31 11 +85 val_85 2008-12-31 11 +77 val_77 2008-12-31 11 +0 val_0 2008-12-31 11 +490 val_490 2008-12-31 11 +87 val_87 2008-12-31 11 +364 val_364 2008-12-31 11 +179 val_179 2008-12-31 11 +118 val_118 2008-12-31 11 +134 val_134 2008-12-31 11 +395 val_395 2008-12-31 11 +282 val_282 2008-12-31 11 +138 val_138 2008-12-31 11 +238 val_238 2008-12-31 11 +419 val_419 2008-12-31 11 +15 val_15 2008-12-31 11 +118 val_118 2008-12-31 11 +72 val_72 2008-12-31 11 +90 val_90 2008-12-31 11 +307 val_307 2008-12-31 11 +19 val_19 2008-12-31 11 +435 val_435 2008-12-31 11 +10 val_10 2008-12-31 11 +277 val_277 2008-12-31 11 +273 val_273 2008-12-31 11 +306 val_306 2008-12-31 11 +224 val_224 2008-12-31 11 +309 val_309 2008-12-31 11 +389 val_389 2008-12-31 11 +327 val_327 2008-12-31 11 +242 val_242 2008-12-31 11 +369 val_369 2008-12-31 11 +392 val_392 2008-12-31 11 +272 val_272 2008-12-31 11 +331 val_331 2008-12-31 11 +401 val_401 2008-12-31 11 +242 val_242 2008-12-31 11 +452 val_452 2008-12-31 11 +177 val_177 2008-12-31 11 +226 val_226 2008-12-31 11 +5 val_5 2008-12-31 11 +497 val_497 2008-12-31 11 +402 val_402 2008-12-31 11 +396 val_396 2008-12-31 11 +317 val_317 2008-12-31 11 +395 val_395 2008-12-31 11 +58 val_58 2008-12-31 11 +35 val_35 2008-12-31 11 +336 val_336 2008-12-31 11 +95 val_95 2008-12-31 11 +11 val_11 2008-12-31 11 +168 val_168 2008-12-31 11 +34 val_34 2008-12-31 11 +229 val_229 2008-12-31 11 +233 val_233 2008-12-31 11 +143 val_143 2008-12-31 11 +472 val_472 2008-12-31 11 +322 val_322 2008-12-31 11 +498 val_498 2008-12-31 11 +160 val_160 2008-12-31 11 +195 val_195 2008-12-31 11 +42 val_42 2008-12-31 11 +321 val_321 2008-12-31 11 +430 val_430 2008-12-31 11 +119 val_119 2008-12-31 11 +489 val_489 2008-12-31 11 +458 val_458 2008-12-31 11 +78 val_78 2008-12-31 11 +76 val_76 2008-12-31 11 +41 val_41 2008-12-31 11 +223 val_223 2008-12-31 11 +492 val_492 2008-12-31 11 +149 val_149 2008-12-31 11 +449 val_449 2008-12-31 11 +218 val_218 2008-12-31 11 +228 val_228 2008-12-31 11 +138 val_138 2008-12-31 11 +453 val_453 2008-12-31 11 +30 val_30 2008-12-31 11 +209 val_209 2008-12-31 11 +64 val_64 2008-12-31 11 +468 val_468 2008-12-31 11 +76 val_76 2008-12-31 11 +74 val_74 2008-12-31 11 +342 val_342 2008-12-31 11 +69 val_69 2008-12-31 11 +230 val_230 2008-12-31 11 +33 val_33 2008-12-31 11 +368 val_368 2008-12-31 11 +103 val_103 2008-12-31 11 +296 val_296 2008-12-31 11 +113 val_113 2008-12-31 11 +216 val_216 2008-12-31 11 +367 val_367 2008-12-31 11 +344 val_344 2008-12-31 11 +167 val_167 2008-12-31 11 +274 val_274 2008-12-31 11 +219 val_219 2008-12-31 11 +239 val_239 2008-12-31 11 +485 val_485 2008-12-31 11 +116 val_116 2008-12-31 11 +223 val_223 2008-12-31 11 +256 val_256 2008-12-31 11 +263 val_263 2008-12-31 11 +70 val_70 2008-12-31 11 +487 val_487 2008-12-31 11 +480 val_480 2008-12-31 11 +401 val_401 2008-12-31 11 +288 val_288 2008-12-31 11 +191 val_191 2008-12-31 11 +5 val_5 2008-12-31 11 +244 val_244 2008-12-31 11 +438 val_438 2008-12-31 11 +128 val_128 2008-12-31 11 +467 val_467 2008-12-31 11 +432 val_432 2008-12-31 11 +202 val_202 2008-12-31 11 +316 val_316 2008-12-31 11 +229 val_229 2008-12-31 11 +469 val_469 2008-12-31 11 +463 val_463 2008-12-31 11 +280 val_280 2008-12-31 11 +2 val_2 2008-12-31 11 +35 val_35 2008-12-31 11 +283 val_283 2008-12-31 11 +331 val_331 2008-12-31 11 +235 val_235 2008-12-31 11 +80 val_80 2008-12-31 11 +44 val_44 2008-12-31 11 +193 val_193 2008-12-31 11 +321 val_321 2008-12-31 11 +335 val_335 2008-12-31 11 +104 val_104 2008-12-31 11 +466 val_466 2008-12-31 11 +366 val_366 2008-12-31 11 +175 val_175 2008-12-31 11 +403 val_403 2008-12-31 11 +483 val_483 2008-12-31 11 +53 val_53 2008-12-31 11 +105 val_105 2008-12-31 11 +257 val_257 2008-12-31 11 +406 val_406 2008-12-31 11 +409 val_409 2008-12-31 11 +190 val_190 2008-12-31 11 +406 val_406 2008-12-31 11 +401 val_401 2008-12-31 11 +114 val_114 2008-12-31 11 +258 val_258 2008-12-31 11 +90 val_90 2008-12-31 11 +203 val_203 2008-12-31 11 +262 val_262 2008-12-31 11 +348 val_348 2008-12-31 11 +424 val_424 2008-12-31 11 +12 val_12 2008-12-31 11 +396 val_396 2008-12-31 11 +201 val_201 2008-12-31 11 +217 val_217 2008-12-31 11 +164 val_164 2008-12-31 11 +431 val_431 2008-12-31 11 +454 val_454 2008-12-31 11 +478 val_478 2008-12-31 11 +298 val_298 2008-12-31 11 +125 val_125 2008-12-31 11 +431 val_431 2008-12-31 11 +164 val_164 2008-12-31 11 +424 val_424 2008-12-31 11 +187 val_187 2008-12-31 11 +382 val_382 2008-12-31 11 +5 val_5 2008-12-31 11 +70 val_70 2008-12-31 11 +397 val_397 2008-12-31 11 +480 val_480 2008-12-31 11 +291 val_291 2008-12-31 11 +24 val_24 2008-12-31 11 +351 val_351 2008-12-31 11 +255 val_255 2008-12-31 11 +104 val_104 2008-12-31 11 +70 val_70 2008-12-31 11 +163 val_163 2008-12-31 11 +438 val_438 2008-12-31 11 +119 val_119 2008-12-31 11 +414 val_414 2008-12-31 11 +200 val_200 2008-12-31 11 +491 val_491 2008-12-31 11 +237 val_237 2008-12-31 11 +439 val_439 2008-12-31 11 +360 val_360 2008-12-31 11 +248 val_248 2008-12-31 11 +479 val_479 2008-12-31 11 +305 val_305 2008-12-31 11 +417 val_417 2008-12-31 11 +199 val_199 2008-12-31 11 +444 val_444 2008-12-31 11 +120 val_120 2008-12-31 11 +429 val_429 2008-12-31 11 +169 val_169 2008-12-31 11 +443 val_443 2008-12-31 11 +323 val_323 2008-12-31 11 +325 val_325 2008-12-31 11 +277 val_277 2008-12-31 11 +230 val_230 2008-12-31 11 +478 val_478 2008-12-31 11 +178 val_178 2008-12-31 11 +468 val_468 2008-12-31 11 +310 val_310 2008-12-31 11 +317 val_317 2008-12-31 11 +333 val_333 2008-12-31 11 +493 val_493 2008-12-31 11 +460 val_460 2008-12-31 11 +207 val_207 2008-12-31 11 +249 val_249 2008-12-31 11 +265 val_265 2008-12-31 11 +480 val_480 2008-12-31 11 +83 val_83 2008-12-31 11 +136 val_136 2008-12-31 11 +353 val_353 2008-12-31 11 +172 val_172 2008-12-31 11 +214 val_214 2008-12-31 11 +462 val_462 2008-12-31 11 +233 val_233 2008-12-31 11 +406 val_406 2008-12-31 11 +133 val_133 2008-12-31 11 +175 val_175 2008-12-31 11 +189 val_189 2008-12-31 11 +454 val_454 2008-12-31 11 +375 val_375 2008-12-31 11 +401 val_401 2008-12-31 11 +421 val_421 2008-12-31 11 +407 val_407 2008-12-31 11 +384 val_384 2008-12-31 11 +256 val_256 2008-12-31 11 +26 val_26 2008-12-31 11 +134 val_134 2008-12-31 11 +67 val_67 2008-12-31 11 +384 val_384 2008-12-31 11 +379 val_379 2008-12-31 11 +18 val_18 2008-12-31 11 +462 val_462 2008-12-31 11 +492 val_492 2008-12-31 11 +100 val_100 2008-12-31 11 +298 val_298 2008-12-31 11 +9 val_9 2008-12-31 11 +341 val_341 2008-12-31 11 +498 val_498 2008-12-31 11 +146 val_146 2008-12-31 11 +458 val_458 2008-12-31 11 +362 val_362 2008-12-31 11 +186 val_186 2008-12-31 11 +285 val_285 2008-12-31 11 +348 val_348 2008-12-31 11 +167 val_167 2008-12-31 11 +18 val_18 2008-12-31 11 +273 val_273 2008-12-31 11 +183 val_183 2008-12-31 11 +281 val_281 2008-12-31 11 +344 val_344 2008-12-31 11 +97 val_97 2008-12-31 11 +469 val_469 2008-12-31 11 +315 val_315 2008-12-31 11 +84 val_84 2008-12-31 11 +28 val_28 2008-12-31 11 +37 val_37 2008-12-31 11 +448 val_448 2008-12-31 11 +152 val_152 2008-12-31 11 +348 val_348 2008-12-31 11 +307 val_307 2008-12-31 11 +194 val_194 2008-12-31 11 +414 val_414 2008-12-31 11 +477 val_477 2008-12-31 11 +222 val_222 2008-12-31 11 +126 val_126 2008-12-31 11 +90 val_90 2008-12-31 11 +169 val_169 2008-12-31 11 +403 val_403 2008-12-31 11 +400 val_400 2008-12-31 11 +200 val_200 2008-12-31 11 +97 val_97 2008-12-31 11 +238 val_238 2008-12-31 12 +86 val_86 2008-12-31 12 +311 val_311 2008-12-31 12 +27 val_27 2008-12-31 12 +165 val_165 2008-12-31 12 +409 val_409 2008-12-31 12 +255 val_255 2008-12-31 12 +278 val_278 2008-12-31 12 +98 val_98 2008-12-31 12 +484 val_484 2008-12-31 12 +265 val_265 2008-12-31 12 +193 val_193 2008-12-31 12 +401 val_401 2008-12-31 12 +150 val_150 2008-12-31 12 +273 val_273 2008-12-31 12 +224 val_224 2008-12-31 12 +369 val_369 2008-12-31 12 +66 val_66 2008-12-31 12 +128 val_128 2008-12-31 12 +213 val_213 2008-12-31 12 +146 val_146 2008-12-31 12 +406 val_406 2008-12-31 12 +429 val_429 2008-12-31 12 +374 val_374 2008-12-31 12 +152 val_152 2008-12-31 12 +469 val_469 2008-12-31 12 +145 val_145 2008-12-31 12 +495 val_495 2008-12-31 12 +37 val_37 2008-12-31 12 +327 val_327 2008-12-31 12 +281 val_281 2008-12-31 12 +277 val_277 2008-12-31 12 +209 val_209 2008-12-31 12 +15 val_15 2008-12-31 12 +82 val_82 2008-12-31 12 +403 val_403 2008-12-31 12 +166 val_166 2008-12-31 12 +417 val_417 2008-12-31 12 +430 val_430 2008-12-31 12 +252 val_252 2008-12-31 12 +292 val_292 2008-12-31 12 +219 val_219 2008-12-31 12 +287 val_287 2008-12-31 12 +153 val_153 2008-12-31 12 +193 val_193 2008-12-31 12 +338 val_338 2008-12-31 12 +446 val_446 2008-12-31 12 +459 val_459 2008-12-31 12 +394 val_394 2008-12-31 12 +237 val_237 2008-12-31 12 +482 val_482 2008-12-31 12 +174 val_174 2008-12-31 12 +413 val_413 2008-12-31 12 +494 val_494 2008-12-31 12 +207 val_207 2008-12-31 12 +199 val_199 2008-12-31 12 +466 val_466 2008-12-31 12 +208 val_208 2008-12-31 12 +174 val_174 2008-12-31 12 +399 val_399 2008-12-31 12 +396 val_396 2008-12-31 12 +247 val_247 2008-12-31 12 +417 val_417 2008-12-31 12 +489 val_489 2008-12-31 12 +162 val_162 2008-12-31 12 +377 val_377 2008-12-31 12 +397 val_397 2008-12-31 12 +309 val_309 2008-12-31 12 +365 val_365 2008-12-31 12 +266 val_266 2008-12-31 12 +439 val_439 2008-12-31 12 +342 val_342 2008-12-31 12 +367 val_367 2008-12-31 12 +325 val_325 2008-12-31 12 +167 val_167 2008-12-31 12 +195 val_195 2008-12-31 12 +475 val_475 2008-12-31 12 +17 val_17 2008-12-31 12 +113 val_113 2008-12-31 12 +155 val_155 2008-12-31 12 +203 val_203 2008-12-31 12 +339 val_339 2008-12-31 12 +0 val_0 2008-12-31 12 +455 val_455 2008-12-31 12 +128 val_128 2008-12-31 12 +311 val_311 2008-12-31 12 +316 val_316 2008-12-31 12 +57 val_57 2008-12-31 12 +302 val_302 2008-12-31 12 +205 val_205 2008-12-31 12 +149 val_149 2008-12-31 12 +438 val_438 2008-12-31 12 +345 val_345 2008-12-31 12 +129 val_129 2008-12-31 12 +170 val_170 2008-12-31 12 +20 val_20 2008-12-31 12 +489 val_489 2008-12-31 12 +157 val_157 2008-12-31 12 +378 val_378 2008-12-31 12 +221 val_221 2008-12-31 12 +92 val_92 2008-12-31 12 +111 val_111 2008-12-31 12 +47 val_47 2008-12-31 12 +72 val_72 2008-12-31 12 +4 val_4 2008-12-31 12 +280 val_280 2008-12-31 12 +35 val_35 2008-12-31 12 +427 val_427 2008-12-31 12 +277 val_277 2008-12-31 12 +208 val_208 2008-12-31 12 +356 val_356 2008-12-31 12 +399 val_399 2008-12-31 12 +169 val_169 2008-12-31 12 +382 val_382 2008-12-31 12 +498 val_498 2008-12-31 12 +125 val_125 2008-12-31 12 +386 val_386 2008-12-31 12 +437 val_437 2008-12-31 12 +469 val_469 2008-12-31 12 +192 val_192 2008-12-31 12 +286 val_286 2008-12-31 12 +187 val_187 2008-12-31 12 +176 val_176 2008-12-31 12 +54 val_54 2008-12-31 12 +459 val_459 2008-12-31 12 +51 val_51 2008-12-31 12 +138 val_138 2008-12-31 12 +103 val_103 2008-12-31 12 +239 val_239 2008-12-31 12 +213 val_213 2008-12-31 12 +216 val_216 2008-12-31 12 +430 val_430 2008-12-31 12 +278 val_278 2008-12-31 12 +176 val_176 2008-12-31 12 +289 val_289 2008-12-31 12 +221 val_221 2008-12-31 12 +65 val_65 2008-12-31 12 +318 val_318 2008-12-31 12 +332 val_332 2008-12-31 12 +311 val_311 2008-12-31 12 +275 val_275 2008-12-31 12 +137 val_137 2008-12-31 12 +241 val_241 2008-12-31 12 +83 val_83 2008-12-31 12 +333 val_333 2008-12-31 12 +180 val_180 2008-12-31 12 +284 val_284 2008-12-31 12 +12 val_12 2008-12-31 12 +230 val_230 2008-12-31 12 +181 val_181 2008-12-31 12 +67 val_67 2008-12-31 12 +260 val_260 2008-12-31 12 +404 val_404 2008-12-31 12 +384 val_384 2008-12-31 12 +489 val_489 2008-12-31 12 +353 val_353 2008-12-31 12 +373 val_373 2008-12-31 12 +272 val_272 2008-12-31 12 +138 val_138 2008-12-31 12 +217 val_217 2008-12-31 12 +84 val_84 2008-12-31 12 +348 val_348 2008-12-31 12 +466 val_466 2008-12-31 12 +58 val_58 2008-12-31 12 +8 val_8 2008-12-31 12 +411 val_411 2008-12-31 12 +230 val_230 2008-12-31 12 +208 val_208 2008-12-31 12 +348 val_348 2008-12-31 12 +24 val_24 2008-12-31 12 +463 val_463 2008-12-31 12 +431 val_431 2008-12-31 12 +179 val_179 2008-12-31 12 +172 val_172 2008-12-31 12 +42 val_42 2008-12-31 12 +129 val_129 2008-12-31 12 +158 val_158 2008-12-31 12 +119 val_119 2008-12-31 12 +496 val_496 2008-12-31 12 +0 val_0 2008-12-31 12 +322 val_322 2008-12-31 12 +197 val_197 2008-12-31 12 +468 val_468 2008-12-31 12 +393 val_393 2008-12-31 12 +454 val_454 2008-12-31 12 +100 val_100 2008-12-31 12 +298 val_298 2008-12-31 12 +199 val_199 2008-12-31 12 +191 val_191 2008-12-31 12 +418 val_418 2008-12-31 12 +96 val_96 2008-12-31 12 +26 val_26 2008-12-31 12 +165 val_165 2008-12-31 12 +327 val_327 2008-12-31 12 +230 val_230 2008-12-31 12 +205 val_205 2008-12-31 12 +120 val_120 2008-12-31 12 +131 val_131 2008-12-31 12 +51 val_51 2008-12-31 12 +404 val_404 2008-12-31 12 +43 val_43 2008-12-31 12 +436 val_436 2008-12-31 12 +156 val_156 2008-12-31 12 +469 val_469 2008-12-31 12 +468 val_468 2008-12-31 12 +308 val_308 2008-12-31 12 +95 val_95 2008-12-31 12 +196 val_196 2008-12-31 12 +288 val_288 2008-12-31 12 +481 val_481 2008-12-31 12 +457 val_457 2008-12-31 12 +98 val_98 2008-12-31 12 +282 val_282 2008-12-31 12 +197 val_197 2008-12-31 12 +187 val_187 2008-12-31 12 +318 val_318 2008-12-31 12 +318 val_318 2008-12-31 12 +409 val_409 2008-12-31 12 +470 val_470 2008-12-31 12 +137 val_137 2008-12-31 12 +369 val_369 2008-12-31 12 +316 val_316 2008-12-31 12 +169 val_169 2008-12-31 12 +413 val_413 2008-12-31 12 +85 val_85 2008-12-31 12 +77 val_77 2008-12-31 12 +0 val_0 2008-12-31 12 +490 val_490 2008-12-31 12 +87 val_87 2008-12-31 12 +364 val_364 2008-12-31 12 +179 val_179 2008-12-31 12 +118 val_118 2008-12-31 12 +134 val_134 2008-12-31 12 +395 val_395 2008-12-31 12 +282 val_282 2008-12-31 12 +138 val_138 2008-12-31 12 +238 val_238 2008-12-31 12 +419 val_419 2008-12-31 12 +15 val_15 2008-12-31 12 +118 val_118 2008-12-31 12 +72 val_72 2008-12-31 12 +90 val_90 2008-12-31 12 +307 val_307 2008-12-31 12 +19 val_19 2008-12-31 12 +435 val_435 2008-12-31 12 +10 val_10 2008-12-31 12 +277 val_277 2008-12-31 12 +273 val_273 2008-12-31 12 +306 val_306 2008-12-31 12 +224 val_224 2008-12-31 12 +309 val_309 2008-12-31 12 +389 val_389 2008-12-31 12 +327 val_327 2008-12-31 12 +242 val_242 2008-12-31 12 +369 val_369 2008-12-31 12 +392 val_392 2008-12-31 12 +272 val_272 2008-12-31 12 +331 val_331 2008-12-31 12 +401 val_401 2008-12-31 12 +242 val_242 2008-12-31 12 +452 val_452 2008-12-31 12 +177 val_177 2008-12-31 12 +226 val_226 2008-12-31 12 +5 val_5 2008-12-31 12 +497 val_497 2008-12-31 12 +402 val_402 2008-12-31 12 +396 val_396 2008-12-31 12 +317 val_317 2008-12-31 12 +395 val_395 2008-12-31 12 +58 val_58 2008-12-31 12 +35 val_35 2008-12-31 12 +336 val_336 2008-12-31 12 +95 val_95 2008-12-31 12 +11 val_11 2008-12-31 12 +168 val_168 2008-12-31 12 +34 val_34 2008-12-31 12 +229 val_229 2008-12-31 12 +233 val_233 2008-12-31 12 +143 val_143 2008-12-31 12 +472 val_472 2008-12-31 12 +322 val_322 2008-12-31 12 +498 val_498 2008-12-31 12 +160 val_160 2008-12-31 12 +195 val_195 2008-12-31 12 +42 val_42 2008-12-31 12 +321 val_321 2008-12-31 12 +430 val_430 2008-12-31 12 +119 val_119 2008-12-31 12 +489 val_489 2008-12-31 12 +458 val_458 2008-12-31 12 +78 val_78 2008-12-31 12 +76 val_76 2008-12-31 12 +41 val_41 2008-12-31 12 +223 val_223 2008-12-31 12 +492 val_492 2008-12-31 12 +149 val_149 2008-12-31 12 +449 val_449 2008-12-31 12 +218 val_218 2008-12-31 12 +228 val_228 2008-12-31 12 +138 val_138 2008-12-31 12 +453 val_453 2008-12-31 12 +30 val_30 2008-12-31 12 +209 val_209 2008-12-31 12 +64 val_64 2008-12-31 12 +468 val_468 2008-12-31 12 +76 val_76 2008-12-31 12 +74 val_74 2008-12-31 12 +342 val_342 2008-12-31 12 +69 val_69 2008-12-31 12 +230 val_230 2008-12-31 12 +33 val_33 2008-12-31 12 +368 val_368 2008-12-31 12 +103 val_103 2008-12-31 12 +296 val_296 2008-12-31 12 +113 val_113 2008-12-31 12 +216 val_216 2008-12-31 12 +367 val_367 2008-12-31 12 +344 val_344 2008-12-31 12 +167 val_167 2008-12-31 12 +274 val_274 2008-12-31 12 +219 val_219 2008-12-31 12 +239 val_239 2008-12-31 12 +485 val_485 2008-12-31 12 +116 val_116 2008-12-31 12 +223 val_223 2008-12-31 12 +256 val_256 2008-12-31 12 +263 val_263 2008-12-31 12 +70 val_70 2008-12-31 12 +487 val_487 2008-12-31 12 +480 val_480 2008-12-31 12 +401 val_401 2008-12-31 12 +288 val_288 2008-12-31 12 +191 val_191 2008-12-31 12 +5 val_5 2008-12-31 12 +244 val_244 2008-12-31 12 +438 val_438 2008-12-31 12 +128 val_128 2008-12-31 12 +467 val_467 2008-12-31 12 +432 val_432 2008-12-31 12 +202 val_202 2008-12-31 12 +316 val_316 2008-12-31 12 +229 val_229 2008-12-31 12 +469 val_469 2008-12-31 12 +463 val_463 2008-12-31 12 +280 val_280 2008-12-31 12 +2 val_2 2008-12-31 12 +35 val_35 2008-12-31 12 +283 val_283 2008-12-31 12 +331 val_331 2008-12-31 12 +235 val_235 2008-12-31 12 +80 val_80 2008-12-31 12 +44 val_44 2008-12-31 12 +193 val_193 2008-12-31 12 +321 val_321 2008-12-31 12 +335 val_335 2008-12-31 12 +104 val_104 2008-12-31 12 +466 val_466 2008-12-31 12 +366 val_366 2008-12-31 12 +175 val_175 2008-12-31 12 +403 val_403 2008-12-31 12 +483 val_483 2008-12-31 12 +53 val_53 2008-12-31 12 +105 val_105 2008-12-31 12 +257 val_257 2008-12-31 12 +406 val_406 2008-12-31 12 +409 val_409 2008-12-31 12 +190 val_190 2008-12-31 12 +406 val_406 2008-12-31 12 +401 val_401 2008-12-31 12 +114 val_114 2008-12-31 12 +258 val_258 2008-12-31 12 +90 val_90 2008-12-31 12 +203 val_203 2008-12-31 12 +262 val_262 2008-12-31 12 +348 val_348 2008-12-31 12 +424 val_424 2008-12-31 12 +12 val_12 2008-12-31 12 +396 val_396 2008-12-31 12 +201 val_201 2008-12-31 12 +217 val_217 2008-12-31 12 +164 val_164 2008-12-31 12 +431 val_431 2008-12-31 12 +454 val_454 2008-12-31 12 +478 val_478 2008-12-31 12 +298 val_298 2008-12-31 12 +125 val_125 2008-12-31 12 +431 val_431 2008-12-31 12 +164 val_164 2008-12-31 12 +424 val_424 2008-12-31 12 +187 val_187 2008-12-31 12 +382 val_382 2008-12-31 12 +5 val_5 2008-12-31 12 +70 val_70 2008-12-31 12 +397 val_397 2008-12-31 12 +480 val_480 2008-12-31 12 +291 val_291 2008-12-31 12 +24 val_24 2008-12-31 12 +351 val_351 2008-12-31 12 +255 val_255 2008-12-31 12 +104 val_104 2008-12-31 12 +70 val_70 2008-12-31 12 +163 val_163 2008-12-31 12 +438 val_438 2008-12-31 12 +119 val_119 2008-12-31 12 +414 val_414 2008-12-31 12 +200 val_200 2008-12-31 12 +491 val_491 2008-12-31 12 +237 val_237 2008-12-31 12 +439 val_439 2008-12-31 12 +360 val_360 2008-12-31 12 +248 val_248 2008-12-31 12 +479 val_479 2008-12-31 12 +305 val_305 2008-12-31 12 +417 val_417 2008-12-31 12 +199 val_199 2008-12-31 12 +444 val_444 2008-12-31 12 +120 val_120 2008-12-31 12 +429 val_429 2008-12-31 12 +169 val_169 2008-12-31 12 +443 val_443 2008-12-31 12 +323 val_323 2008-12-31 12 +325 val_325 2008-12-31 12 +277 val_277 2008-12-31 12 +230 val_230 2008-12-31 12 +478 val_478 2008-12-31 12 +178 val_178 2008-12-31 12 +468 val_468 2008-12-31 12 +310 val_310 2008-12-31 12 +317 val_317 2008-12-31 12 +333 val_333 2008-12-31 12 +493 val_493 2008-12-31 12 +460 val_460 2008-12-31 12 +207 val_207 2008-12-31 12 +249 val_249 2008-12-31 12 +265 val_265 2008-12-31 12 +480 val_480 2008-12-31 12 +83 val_83 2008-12-31 12 +136 val_136 2008-12-31 12 +353 val_353 2008-12-31 12 +172 val_172 2008-12-31 12 +214 val_214 2008-12-31 12 +462 val_462 2008-12-31 12 +233 val_233 2008-12-31 12 +406 val_406 2008-12-31 12 +133 val_133 2008-12-31 12 +175 val_175 2008-12-31 12 +189 val_189 2008-12-31 12 +454 val_454 2008-12-31 12 +375 val_375 2008-12-31 12 +401 val_401 2008-12-31 12 +421 val_421 2008-12-31 12 +407 val_407 2008-12-31 12 +384 val_384 2008-12-31 12 +256 val_256 2008-12-31 12 +26 val_26 2008-12-31 12 +134 val_134 2008-12-31 12 +67 val_67 2008-12-31 12 +384 val_384 2008-12-31 12 +379 val_379 2008-12-31 12 +18 val_18 2008-12-31 12 +462 val_462 2008-12-31 12 +492 val_492 2008-12-31 12 +100 val_100 2008-12-31 12 +298 val_298 2008-12-31 12 +9 val_9 2008-12-31 12 +341 val_341 2008-12-31 12 +498 val_498 2008-12-31 12 +146 val_146 2008-12-31 12 +458 val_458 2008-12-31 12 +362 val_362 2008-12-31 12 +186 val_186 2008-12-31 12 +285 val_285 2008-12-31 12 +348 val_348 2008-12-31 12 +167 val_167 2008-12-31 12 +18 val_18 2008-12-31 12 +273 val_273 2008-12-31 12 +183 val_183 2008-12-31 12 +281 val_281 2008-12-31 12 +344 val_344 2008-12-31 12 +97 val_97 2008-12-31 12 +469 val_469 2008-12-31 12 +315 val_315 2008-12-31 12 +84 val_84 2008-12-31 12 +28 val_28 2008-12-31 12 +37 val_37 2008-12-31 12 +448 val_448 2008-12-31 12 +152 val_152 2008-12-31 12 +348 val_348 2008-12-31 12 +307 val_307 2008-12-31 12 +194 val_194 2008-12-31 12 +414 val_414 2008-12-31 12 +477 val_477 2008-12-31 12 +222 val_222 2008-12-31 12 +126 val_126 2008-12-31 12 +90 val_90 2008-12-31 12 +169 val_169 2008-12-31 12 +403 val_403 2008-12-31 12 +400 val_400 2008-12-31 12 +200 val_200 2008-12-31 12 +97 val_97 2008-12-31 12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-0-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/load_dyn_part9-0-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..8c43153cf66f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part9-0-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-1-2c61920dcd46ece096fd12875871709f b/sql/hive/src/test/resources/golden/load_dyn_part9-1-2c61920dcd46ece096fd12875871709f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-2-748ac33315295f8e55f2480f7714c27a b/sql/hive/src/test/resources/golden/load_dyn_part9-2-748ac33315295f8e55f2480f7714c27a new file mode 100644 index 0000000000000..267cb634d6bd3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part9-2-748ac33315295f8e55f2480f7714c27a @@ -0,0 +1,12 @@ +key int None +value string None +ds string None +hr string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +Detailed Table Information Table(tableName:nzhang_part9, dbName:default, owner:marmbrus, createTime:1390899685, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:int, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part9, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null), FieldSchema(name:hr, type:string, comment:null)], parameters:{p3=v3, transient_lastDdlTime=1390899685}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/load_dyn_part9-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part9-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-4-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/load_dyn_part9-4-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part9-4-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-5-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/load_dyn_part9-5-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part9-5-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-6-3c2f7b27f021441c1d6b174a6e2c3045 b/sql/hive/src/test/resources/golden/load_dyn_part9-6-3c2f7b27f021441c1d6b174a6e2c3045 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-7-ffe5e03b1884bf7285a7e5463bf31e1b b/sql/hive/src/test/resources/golden/load_dyn_part9-7-ffe5e03b1884bf7285a7e5463bf31e1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-8-504a475a583d33f7c71db57e6774919 b/sql/hive/src/test/resources/golden/load_dyn_part9-8-504a475a583d33f7c71db57e6774919 new file mode 100644 index 0000000000000..0a88e449f625a --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part9-8-504a475a583d33f7c71db57e6774919 @@ -0,0 +1,2 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 diff --git a/sql/hive/src/test/resources/golden/load_dyn_part9-9-72b1ad2231269b704130903b35ac04bb b/sql/hive/src/test/resources/golden/load_dyn_part9-9-72b1ad2231269b704130903b35ac04bb new file mode 100644 index 0000000000000..d7a8f25b41301 --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_dyn_part9-9-72b1ad2231269b704130903b35ac04bb @@ -0,0 +1,1000 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 diff --git a/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-0-84028c4ca541d126baffc20d6d876810 b/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-0-84028c4ca541d126baffc20d6d876810 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-1-c84cd1b5b491bded8ac3b0521de599c5 b/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-1-c84cd1b5b491bded8ac3b0521de599c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-2-7368973ec1870dd3b237c37eb3857b1e b/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-2-7368973ec1870dd3b237c37eb3857b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-2-7368973ec1870dd3b237c37eb3857b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-3-9ee887603dcba5200918ae5200afa5d5 b/sql/hive/src/test/resources/golden/load_exist_part_authsuccess-3-9ee887603dcba5200918ae5200afa5d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_file_with_space_in_the_name-0-8b3d200fd29aeafd07f16e7a732585a6 b/sql/hive/src/test/resources/golden/load_file_with_space_in_the_name-0-8b3d200fd29aeafd07f16e7a732585a6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_file_with_space_in_the_name-1-4399d9b3f970d3c5a34d1f9bf7b7447f b/sql/hive/src/test/resources/golden/load_file_with_space_in_the_name-1-4399d9b3f970d3c5a34d1f9bf7b7447f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_fs2-0-517732da2c84ae17095b0e1d96f74d97 b/sql/hive/src/test/resources/golden/load_fs2-0-517732da2c84ae17095b0e1d96f74d97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_fs2-1-5018c84e09be70bf663594a89f3ad731 b/sql/hive/src/test/resources/golden/load_fs2-1-5018c84e09be70bf663594a89f3ad731 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_fs2-2-94d2317b453b3b49bb9f2b58040b4748 b/sql/hive/src/test/resources/golden/load_fs2-2-94d2317b453b3b49bb9f2b58040b4748 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_hdfs_file_with_space_in_the_name-0-f99b4f29506d65c841fb1db18263fbcc b/sql/hive/src/test/resources/golden/load_hdfs_file_with_space_in_the_name-0-f99b4f29506d65c841fb1db18263fbcc new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_hdfs_file_with_space_in_the_name-0-f99b4f29506d65c841fb1db18263fbcc @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/load_hdfs_file_with_space_in_the_name-1-b64a19f7101a4fb3b5d08b2f6e296400 b/sql/hive/src/test/resources/golden/load_hdfs_file_with_space_in_the_name-1-b64a19f7101a4fb3b5d08b2f6e296400 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_hdfs_file_with_space_in_the_name-1-b64a19f7101a4fb3b5d08b2f6e296400 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/load_hdfs_file_with_space_in_the_name-2-2087e00fe000e00f64e819dca59be450 b/sql/hive/src/test/resources/golden/load_hdfs_file_with_space_in_the_name-2-2087e00fe000e00f64e819dca59be450 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_nonpart_authsuccess-0-fa705a031ff5d97558f29c2b5b9de282 b/sql/hive/src/test/resources/golden/load_nonpart_authsuccess-0-fa705a031ff5d97558f29c2b5b9de282 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_nonpart_authsuccess-1-7368973ec1870dd3b237c37eb3857b1e b/sql/hive/src/test/resources/golden/load_nonpart_authsuccess-1-7368973ec1870dd3b237c37eb3857b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_nonpart_authsuccess-1-7368973ec1870dd3b237c37eb3857b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_nonpart_authsuccess-2-9ee887603dcba5200918ae5200afa5d5 b/sql/hive/src/test/resources/golden/load_nonpart_authsuccess-2-9ee887603dcba5200918ae5200afa5d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_part_authsuccess-0-84028c4ca541d126baffc20d6d876810 b/sql/hive/src/test/resources/golden/load_part_authsuccess-0-84028c4ca541d126baffc20d6d876810 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/load_part_authsuccess-1-7368973ec1870dd3b237c37eb3857b1e b/sql/hive/src/test/resources/golden/load_part_authsuccess-1-7368973ec1870dd3b237c37eb3857b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/load_part_authsuccess-1-7368973ec1870dd3b237c37eb3857b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/load_part_authsuccess-2-9ee887603dcba5200918ae5200afa5d5 b/sql/hive/src/test/resources/golden/load_part_authsuccess-2-9ee887603dcba5200918ae5200afa5d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart1-0-fa705a031ff5d97558f29c2b5b9de282 b/sql/hive/src/test/resources/golden/loadpart1-0-fa705a031ff5d97558f29c2b5b9de282 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart1-1-4bf1504274319c44d370b58092fe016c b/sql/hive/src/test/resources/golden/loadpart1-1-4bf1504274319c44d370b58092fe016c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart1-2-b0ebbe71c220979b8fd4a36ffa501bf6 b/sql/hive/src/test/resources/golden/loadpart1-2-b0ebbe71c220979b8fd4a36ffa501bf6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart1-3-21f4ee91fa1c65e8579e4cbe4777d7a0 b/sql/hive/src/test/resources/golden/loadpart1-3-21f4ee91fa1c65e8579e4cbe4777d7a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart1-4-e2e5e7a0378c6f0c28391c447ec9cee9 b/sql/hive/src/test/resources/golden/loadpart1-4-e2e5e7a0378c6f0c28391c447ec9cee9 new file mode 100644 index 0000000000000..cf367dacbdf0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/loadpart1-4-e2e5e7a0378c6f0c28391c447ec9cee9 @@ -0,0 +1,6 @@ +1 test_part test_Part +2 test_part test_Part +3 test_part test_Part +4 test_part test_Part +5 test_part test_Part +6 test_part test_Part \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/loadpart1-5-892cb7ecc26e84f1c033b95a3ee3edc b/sql/hive/src/test/resources/golden/loadpart1-5-892cb7ecc26e84f1c033b95a3ee3edc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart1-6-ca5e3149f2b190d7df923a3e5c1cb07 b/sql/hive/src/test/resources/golden/loadpart1-6-ca5e3149f2b190d7df923a3e5c1cb07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart1-7-c6493490f898e72dc7ed1bc2d4721aa4 b/sql/hive/src/test/resources/golden/loadpart1-7-c6493490f898e72dc7ed1bc2d4721aa4 new file mode 100644 index 0000000000000..cf367dacbdf0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/loadpart1-7-c6493490f898e72dc7ed1bc2d4721aa4 @@ -0,0 +1,6 @@ +1 test_part test_Part +2 test_part test_Part +3 test_part test_Part +4 test_part test_Part +5 test_part test_Part +6 test_part test_Part \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/loadpart1-8-ca5e3149f2b190d7df923a3e5c1cb07 b/sql/hive/src/test/resources/golden/loadpart1-8-ca5e3149f2b190d7df923a3e5c1cb07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart1-9-c012b29f0d7720fbc515aa5fe2759ac7 b/sql/hive/src/test/resources/golden/loadpart1-9-c012b29f0d7720fbc515aa5fe2759ac7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/loadpart_err-0-8d7fa992960b4c8ec2cb874be479de37 b/sql/hive/src/test/resources/golden/loadpart_err-0-8d7fa992960b4c8ec2cb874be479de37 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/loadpart_err-0-8d7fa992960b4c8ec2cb874be479de37 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/loadpart_err-1-8e68053c7f96f268ae1e25082e9b7517 b/sql/hive/src/test/resources/golden/loadpart_err-1-8e68053c7f96f268ae1e25082e9b7517 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/loadpart_err-1-8e68053c7f96f268ae1e25082e9b7517 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/loadpart_err-2-21fe8ff9059167209647e7ea086f483e b/sql/hive/src/test/resources/golden/loadpart_err-2-21fe8ff9059167209647e7ea086f483e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock1-0-cd46bc635e3010cf1b990a652a584a09 b/sql/hive/src/test/resources/golden/lock1-0-cd46bc635e3010cf1b990a652a584a09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock1-1-3e95421993ab28d18245ec2340f580a3 b/sql/hive/src/test/resources/golden/lock1-1-3e95421993ab28d18245ec2340f580a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock1-2-c0c18ac884677231a41eea8d980d0451 b/sql/hive/src/test/resources/golden/lock1-2-c0c18ac884677231a41eea8d980d0451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock2-0-cd46bc635e3010cf1b990a652a584a09 b/sql/hive/src/test/resources/golden/lock2-0-cd46bc635e3010cf1b990a652a584a09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock2-1-3e95421993ab28d18245ec2340f580a3 b/sql/hive/src/test/resources/golden/lock2-1-3e95421993ab28d18245ec2340f580a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock2-2-c0c18ac884677231a41eea8d980d0451 b/sql/hive/src/test/resources/golden/lock2-2-c0c18ac884677231a41eea8d980d0451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock2-3-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/lock2-3-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock2-4-c06da7f8c1e98dc22e3171018e357f6a b/sql/hive/src/test/resources/golden/lock2-4-c06da7f8c1e98dc22e3171018e357f6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock2-5-e8d1d10c308a73eef78dde414a5e40ca b/sql/hive/src/test/resources/golden/lock2-5-e8d1d10c308a73eef78dde414a5e40ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock3-0-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/lock3-0-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock3-1-c06da7f8c1e98dc22e3171018e357f6a b/sql/hive/src/test/resources/golden/lock3-1-c06da7f8c1e98dc22e3171018e357f6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock3-2-b1ca816784e88f105b2fce1175340c33 b/sql/hive/src/test/resources/golden/lock3-2-b1ca816784e88f105b2fce1175340c33 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock3-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/lock3-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/lock3-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/lock3-4-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/lock3-4-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/lock3-4-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/lock3-5-8096935c5c1755f9b88583e8c72921ac b/sql/hive/src/test/resources/golden/lock3-5-8096935c5c1755f9b88583e8c72921ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock3-6-598ba296ba1c6931f4161a9f50b00cbe b/sql/hive/src/test/resources/golden/lock3-6-598ba296ba1c6931f4161a9f50b00cbe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock4-0-9583a6f9fe5ca6c74ff44d7d064fed92 b/sql/hive/src/test/resources/golden/lock4-0-9583a6f9fe5ca6c74ff44d7d064fed92 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/lock4-0-9583a6f9fe5ca6c74ff44d7d064fed92 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/lock4-1-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/lock4-1-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock4-2-c06da7f8c1e98dc22e3171018e357f6a b/sql/hive/src/test/resources/golden/lock4-2-c06da7f8c1e98dc22e3171018e357f6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock4-3-b1ca816784e88f105b2fce1175340c33 b/sql/hive/src/test/resources/golden/lock4-3-b1ca816784e88f105b2fce1175340c33 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock4-4-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/lock4-4-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/lock4-4-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/lock4-5-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/lock4-5-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/lock4-5-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/lock4-6-8096935c5c1755f9b88583e8c72921ac b/sql/hive/src/test/resources/golden/lock4-6-8096935c5c1755f9b88583e8c72921ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/lock4-7-598ba296ba1c6931f4161a9f50b00cbe b/sql/hive/src/test/resources/golden/lock4-7-598ba296ba1c6931f4161a9f50b00cbe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/louter_join_ppr-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/louter_join_ppr-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-1-498e526f13a05a053a338d766f7351cd b/sql/hive/src/test/resources/golden/louter_join_ppr-1-498e526f13a05a053a338d766f7351cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-2-3d41e966f69a64babb783d1aad0f1b73 b/sql/hive/src/test/resources/golden/louter_join_ppr-2-3d41e966f69a64babb783d1aad0f1b73 new file mode 100644 index 0000000000000..19492fd335bcb --- /dev/null +++ b/sql/hive/src/test/resources/golden/louter_join_ppr-2-3d41e966f69a64babb783d1aad0f1b73 @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +17 val_17 17 val_17 +19 val_19 19 val_19 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-3-ac75aeb98d142f514ed7b9b44e78c7c2 b/sql/hive/src/test/resources/golden/louter_join_ppr-3-ac75aeb98d142f514ed7b9b44e78c7c2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-4-a4f0ff6d2a367242836379fa9e3fe3ef b/sql/hive/src/test/resources/golden/louter_join_ppr-4-a4f0ff6d2a367242836379fa9e3fe3ef new file mode 100644 index 0000000000000..3a57720041fb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/louter_join_ppr-4-a4f0ff6d2a367242836379fa9e3fe3ef @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-5-1209db6544b421ea32a360d863becd94 b/sql/hive/src/test/resources/golden/louter_join_ppr-5-1209db6544b421ea32a360d863becd94 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-6-dedfbaea184f5e3a29226e6e6bc6735 b/sql/hive/src/test/resources/golden/louter_join_ppr-6-dedfbaea184f5e3a29226e6e6bc6735 new file mode 100644 index 0000000000000..19492fd335bcb --- /dev/null +++ b/sql/hive/src/test/resources/golden/louter_join_ppr-6-dedfbaea184f5e3a29226e6e6bc6735 @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +17 val_17 17 val_17 +19 val_19 19 val_19 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-7-9548b9e389f361ac8eccb3de7255da42 b/sql/hive/src/test/resources/golden/louter_join_ppr-7-9548b9e389f361ac8eccb3de7255da42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/louter_join_ppr-8-6fca189c46645f124d5fcb82564b703 b/sql/hive/src/test/resources/golden/louter_join_ppr-8-6fca189c46645f124d5fcb82564b703 new file mode 100644 index 0000000000000..3a57720041fb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/louter_join_ppr-8-6fca189c46645f124d5fcb82564b703 @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin1-0-a267d586eb00766a0ac1b16f5b45cf9d b/sql/hive/src/test/resources/golden/mapjoin1-0-a267d586eb00766a0ac1b16f5b45cf9d new file mode 100644 index 0000000000000..657eea30d475f --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin1-0-a267d586eb00766a0ac1b16f5b45cf9d @@ -0,0 +1 @@ +1114788 diff --git a/sql/hive/src/test/resources/golden/mapjoin1-1-abd9364d276ec89352232da5e2237768 b/sql/hive/src/test/resources/golden/mapjoin1-1-abd9364d276ec89352232da5e2237768 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin1-10-c08fefa00b89f50dd365208151593505 b/sql/hive/src/test/resources/golden/mapjoin1-10-c08fefa00b89f50dd365208151593505 new file mode 100644 index 0000000000000..cfae441c4a10a --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin1-10-c08fefa00b89f50dd365208151593505 @@ -0,0 +1,10 @@ +NULL NULL 238 val_238 +86 val_86 86 val_86 +NULL NULL 311 val_311 +27 val_27 27 val_27 +NULL NULL 165 val_165 +NULL NULL 409 val_409 +NULL NULL 255 val_255 +NULL NULL 278 val_278 +98 val_98 98 val_98 +98 val_98 98 val_98 diff --git a/sql/hive/src/test/resources/golden/mapjoin1-11-fb5e414c98754b7e79c744606aa6ccb7 b/sql/hive/src/test/resources/golden/mapjoin1-11-fb5e414c98754b7e79c744606aa6ccb7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin1-12-6fa8df1d49ba571bb9d2615ad22958d9 b/sql/hive/src/test/resources/golden/mapjoin1-12-6fa8df1d49ba571bb9d2615ad22958d9 new file mode 100644 index 0000000000000..6d8155efd76cd --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin1-12-6fa8df1d49ba571bb9d2615ad22958d9 @@ -0,0 +1,10 @@ +238 val_238 238 {"key":238,"value":"val_238"} +238 val_238 238 {"key":238,"value":"val_238"} +NULL NULL 86 {"key":86,"value":"val_86"} +311 val_311 311 {"key":311,"value":"val_311"} +311 val_311 311 {"key":311,"value":"val_311"} +311 val_311 311 {"key":311,"value":"val_311"} +NULL NULL 27 {"key":27,"value":"val_27"} +NULL NULL 165 {"key":165,"value":"val_165"} +409 val_409 409 {"key":409,"value":"val_409"} +409 val_409 409 {"key":409,"value":"val_409"} diff --git a/sql/hive/src/test/resources/golden/mapjoin1-2-fe84593f006c85e68fbb797394cdccd0 b/sql/hive/src/test/resources/golden/mapjoin1-2-fe84593f006c85e68fbb797394cdccd0 new file mode 100644 index 0000000000000..44f1acd59de68 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin1-2-fe84593f006c85e68fbb797394cdccd0 @@ -0,0 +1,10 @@ +238 val_238 238 val_238 +238 val_238 238 val_238 +86 val_86 86 val_86 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +27 val_27 27 val_27 +165 val_165 165 val_165 +165 val_165 165 val_165 +409 val_409 409 val_409 diff --git a/sql/hive/src/test/resources/golden/mapjoin1-3-8439a0592619790b64d16d2506f2233d b/sql/hive/src/test/resources/golden/mapjoin1-3-8439a0592619790b64d16d2506f2233d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin1-4-c08fefa00b89f50dd365208151593505 b/sql/hive/src/test/resources/golden/mapjoin1-4-c08fefa00b89f50dd365208151593505 new file mode 100644 index 0000000000000..cfae441c4a10a --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin1-4-c08fefa00b89f50dd365208151593505 @@ -0,0 +1,10 @@ +NULL NULL 238 val_238 +86 val_86 86 val_86 +NULL NULL 311 val_311 +27 val_27 27 val_27 +NULL NULL 165 val_165 +NULL NULL 409 val_409 +NULL NULL 255 val_255 +NULL NULL 278 val_278 +98 val_98 98 val_98 +98 val_98 98 val_98 diff --git a/sql/hive/src/test/resources/golden/mapjoin1-5-72068bd4cdac40e4d18fd729f39855ba b/sql/hive/src/test/resources/golden/mapjoin1-5-72068bd4cdac40e4d18fd729f39855ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin1-6-6fa8df1d49ba571bb9d2615ad22958d9 b/sql/hive/src/test/resources/golden/mapjoin1-6-6fa8df1d49ba571bb9d2615ad22958d9 new file mode 100644 index 0000000000000..6d8155efd76cd --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin1-6-6fa8df1d49ba571bb9d2615ad22958d9 @@ -0,0 +1,10 @@ +238 val_238 238 {"key":238,"value":"val_238"} +238 val_238 238 {"key":238,"value":"val_238"} +NULL NULL 86 {"key":86,"value":"val_86"} +311 val_311 311 {"key":311,"value":"val_311"} +311 val_311 311 {"key":311,"value":"val_311"} +311 val_311 311 {"key":311,"value":"val_311"} +NULL NULL 27 {"key":27,"value":"val_27"} +NULL NULL 165 {"key":165,"value":"val_165"} +409 val_409 409 {"key":409,"value":"val_409"} +409 val_409 409 {"key":409,"value":"val_409"} diff --git a/sql/hive/src/test/resources/golden/mapjoin1-7-757dfb540b8a49b3663f8caba7476ec5 b/sql/hive/src/test/resources/golden/mapjoin1-7-757dfb540b8a49b3663f8caba7476ec5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin1-8-fe84593f006c85e68fbb797394cdccd0 b/sql/hive/src/test/resources/golden/mapjoin1-8-fe84593f006c85e68fbb797394cdccd0 new file mode 100644 index 0000000000000..44f1acd59de68 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin1-8-fe84593f006c85e68fbb797394cdccd0 @@ -0,0 +1,10 @@ +238 val_238 238 val_238 +238 val_238 238 val_238 +86 val_86 86 val_86 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +27 val_27 27 val_27 +165 val_165 165 val_165 +165 val_165 165 val_165 +409 val_409 409 val_409 diff --git a/sql/hive/src/test/resources/golden/mapjoin1-9-5eabdf151ff9fedb64559d2fbd1ae266 b/sql/hive/src/test/resources/golden/mapjoin1-9-5eabdf151ff9fedb64559d2fbd1ae266 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/mapjoin_distinct-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-1-a00d1791b7fa7ac5a0505d95c3d12257 b/sql/hive/src/test/resources/golden/mapjoin_distinct-1-a00d1791b7fa7ac5a0505d95c3d12257 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-1-a00d1791b7fa7ac5a0505d95c3d12257 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-10-53a3e706e797dc6b9e7f5ee8b100fa56 b/sql/hive/src/test/resources/golden/mapjoin_distinct-10-53a3e706e797dc6b9e7f5ee8b100fa56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-11-4489654b888efc588b13ee1cda1b6a9f b/sql/hive/src/test/resources/golden/mapjoin_distinct-11-4489654b888efc588b13ee1cda1b6a9f new file mode 100644 index 0000000000000..eab7fd7a51ea4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-11-4489654b888efc588b13ee1cda1b6a9f @@ -0,0 +1,10 @@ +val_0 +val_10 +val_100 +val_103 +val_104 +val_105 +val_11 +val_111 +val_113 +val_114 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-12-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/mapjoin_distinct-12-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-12-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-13-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/mapjoin_distinct-13-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-13-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-14-53a3e706e797dc6b9e7f5ee8b100fa56 b/sql/hive/src/test/resources/golden/mapjoin_distinct-14-53a3e706e797dc6b9e7f5ee8b100fa56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-15-4489654b888efc588b13ee1cda1b6a9f b/sql/hive/src/test/resources/golden/mapjoin_distinct-15-4489654b888efc588b13ee1cda1b6a9f new file mode 100644 index 0000000000000..eab7fd7a51ea4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-15-4489654b888efc588b13ee1cda1b6a9f @@ -0,0 +1,10 @@ +val_0 +val_10 +val_100 +val_103 +val_104 +val_105 +val_11 +val_111 +val_113 +val_114 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-2-53a3e706e797dc6b9e7f5ee8b100fa56 b/sql/hive/src/test/resources/golden/mapjoin_distinct-2-53a3e706e797dc6b9e7f5ee8b100fa56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-3-4489654b888efc588b13ee1cda1b6a9f b/sql/hive/src/test/resources/golden/mapjoin_distinct-3-4489654b888efc588b13ee1cda1b6a9f new file mode 100644 index 0000000000000..eab7fd7a51ea4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-3-4489654b888efc588b13ee1cda1b6a9f @@ -0,0 +1,10 @@ +val_0 +val_10 +val_100 +val_103 +val_104 +val_105 +val_11 +val_111 +val_113 +val_114 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-4-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/mapjoin_distinct-4-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-4-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-5-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/mapjoin_distinct-5-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-5-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-6-53a3e706e797dc6b9e7f5ee8b100fa56 b/sql/hive/src/test/resources/golden/mapjoin_distinct-6-53a3e706e797dc6b9e7f5ee8b100fa56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-7-4489654b888efc588b13ee1cda1b6a9f b/sql/hive/src/test/resources/golden/mapjoin_distinct-7-4489654b888efc588b13ee1cda1b6a9f new file mode 100644 index 0000000000000..eab7fd7a51ea4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-7-4489654b888efc588b13ee1cda1b6a9f @@ -0,0 +1,10 @@ +val_0 +val_10 +val_100 +val_103 +val_104 +val_105 +val_11 +val_111 +val_113 +val_114 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-8-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/mapjoin_distinct-8-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-8-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_distinct-9-a00d1791b7fa7ac5a0505d95c3d12257 b/sql/hive/src/test/resources/golden/mapjoin_distinct-9-a00d1791b7fa7ac5a0505d95c3d12257 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_distinct-9-a00d1791b7fa7ac5a0505d95c3d12257 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_filter_on_outerjoin-0-407016bf2679fb9e9d076a2d115e859d b/sql/hive/src/test/resources/golden/mapjoin_filter_on_outerjoin-0-407016bf2679fb9e9d076a2d115e859d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_filter_on_outerjoin-0-407016bf2679fb9e9d076a2d115e859d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/mapjoin_mapjoin-0-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-0-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-0-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_mapjoin-1-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-1-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-1-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_mapjoin-2-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-2-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-2-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_mapjoin-3-cb38700198e89779e4dc1b25026d92a1 b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-3-cb38700198e89779e4dc1b25026d92a1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_mapjoin-4-f9a2e0792bfe37c48895b8044a3a3702 b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-4-f9a2e0792bfe37c48895b8044a3a3702 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_mapjoin-5-c47698bac140454637a999e583941ce7 b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-5-c47698bac140454637a999e583941ce7 new file mode 100644 index 0000000000000..8e7fe1e4cae08 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_mapjoin-5-c47698bac140454637a999e583941ce7 @@ -0,0 +1,2 @@ +5308 +5308 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery-0-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/mapjoin_subquery-0-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery-0-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery-1-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/mapjoin_subquery-1-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery-1-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery-2-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/mapjoin_subquery-2-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery-2-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery-3-4422532005e909173a4799d8d5091f1b b/sql/hive/src/test/resources/golden/mapjoin_subquery-3-4422532005e909173a4799d8d5091f1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery-4-7df121f9774cb23edc557b98ad1e1924 b/sql/hive/src/test/resources/golden/mapjoin_subquery-4-7df121f9774cb23edc557b98ad1e1924 new file mode 100644 index 0000000000000..482848c1ef8aa --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery-4-7df121f9774cb23edc557b98ad1e1924 @@ -0,0 +1,107 @@ +66 val_66 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +150 val_150 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery-5-d9e59bfa950495629b7ba4bc6700405c b/sql/hive/src/test/resources/golden/mapjoin_subquery-5-d9e59bfa950495629b7ba4bc6700405c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery-6-dcdc6b87a9b87b0ab10ad0e44a197f1b b/sql/hive/src/test/resources/golden/mapjoin_subquery-6-dcdc6b87a9b87b0ab10ad0e44a197f1b new file mode 100644 index 0000000000000..482848c1ef8aa --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery-6-dcdc6b87a9b87b0ab10ad0e44a197f1b @@ -0,0 +1,107 @@ +66 val_66 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +150 val_150 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-0-59fdb2842fbf4f530366f0237ff235e2 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-0-59fdb2842fbf4f530366f0237ff235e2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-1-c0a9763a930555f846a2576d003fb517 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-1-c0a9763a930555f846a2576d003fb517 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-10-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-10-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery2-10-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-11-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-11-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery2-11-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-12-7ebf0bee394756c0e0c78bdd1034f183 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-12-7ebf0bee394756c0e0c78bdd1034f183 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-13-c876a518451059f17fc15e29f6f57951 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-13-c876a518451059f17fc15e29f6f57951 new file mode 100644 index 0000000000000..5c62121a6600c --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery2-13-c876a518451059f17fc15e29f6f57951 @@ -0,0 +1,2 @@ +2 Joe 2 Tie 2 Tie +2 Hank 2 Tie 2 Tie \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-14-59fdb2842fbf4f530366f0237ff235e2 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-14-59fdb2842fbf4f530366f0237ff235e2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-15-c0a9763a930555f846a2576d003fb517 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-15-c0a9763a930555f846a2576d003fb517 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-16-2f8ecc54049960ee4707f5e6f491fdf4 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-16-2f8ecc54049960ee4707f5e6f491fdf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-2-2f8ecc54049960ee4707f5e6f491fdf4 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-2-2f8ecc54049960ee4707f5e6f491fdf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-3-681c6f08aac965e4156dbd5800064a68 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-3-681c6f08aac965e4156dbd5800064a68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-4-ab6020d67f5a99c0a87e630790507345 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-4-ab6020d67f5a99c0a87e630790507345 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-5-c0e460b0c5bceeeb5820a1240fa9f7d9 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-5-c0e460b0c5bceeeb5820a1240fa9f7d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-6-5353ee601eb42d5842690d3941683be1 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-6-5353ee601eb42d5842690d3941683be1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-7-fb516ed5906b1f485d3e7e7eeaedd862 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-7-fb516ed5906b1f485d3e7e7eeaedd862 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-8-d524906728fef9f559709fe0922ab24e b/sql/hive/src/test/resources/golden/mapjoin_subquery2-8-d524906728fef9f559709fe0922ab24e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_subquery2-9-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/mapjoin_subquery2-9-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_subquery2-9-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-0-407016bf2679fb9e9d076a2d115e859d b/sql/hive/src/test/resources/golden/mapjoin_test_outer-0-407016bf2679fb9e9d076a2d115e859d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_test_outer-0-407016bf2679fb9e9d076a2d115e859d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-1-b1ac944eac23eb8af1f1f659659c7bcc b/sql/hive/src/test/resources/golden/mapjoin_test_outer-1-b1ac944eac23eb8af1f1f659659c7bcc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-10-ce1ef910fff98f174931cc641f7cef3a b/sql/hive/src/test/resources/golden/mapjoin_test_outer-10-ce1ef910fff98f174931cc641f7cef3a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_test_outer-10-ce1ef910fff98f174931cc641f7cef3a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-11-cfaaae6c3ef2a5eb8cd7ec5065ca7795 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-11-cfaaae6c3ef2a5eb8cd7ec5065ca7795 new file mode 100644 index 0000000000000..271f3e168fd23 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_test_outer-11-cfaaae6c3ef2a5eb8cd7ec5065ca7795 @@ -0,0 +1,4 @@ +128 128 128 +146 val_146 146 val_146 146 val_146 +224 224 224 +369 369 369 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-12-80993ab7f757001e1f058bf8609f8420 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-12-80993ab7f757001e1f058bf8609f8420 new file mode 100644 index 0000000000000..271f3e168fd23 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_test_outer-12-80993ab7f757001e1f058bf8609f8420 @@ -0,0 +1,4 @@ +128 128 128 +146 val_146 146 val_146 146 val_146 +224 224 224 +369 369 369 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-13-a5d200c74f7000ad3e36fac90c980d34 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-13-a5d200c74f7000ad3e36fac90c980d34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-14-7fe52008c4a98853d086d17fc3c21906 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-14-7fe52008c4a98853d086d17fc3c21906 new file mode 100644 index 0000000000000..f00666f6113d2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_test_outer-14-7fe52008c4a98853d086d17fc3c21906 @@ -0,0 +1,5 @@ +NULL NULL 333444 555666 333444 555666 +128 128 128 +146 val_146 146 val_146 146 val_146 +224 224 224 +369 369 369 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-2-43561759b314d02b2dba5eb49a65c515 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-2-43561759b314d02b2dba5eb49a65c515 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-3-6ee8075ac3ad15ad1ac103d815544e7f b/sql/hive/src/test/resources/golden/mapjoin_test_outer-3-6ee8075ac3ad15ad1ac103d815544e7f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-4-9e1f369b391b4a050250e0a954ffbb8 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-4-9e1f369b391b4a050250e0a954ffbb8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-5-c95eb9bb8b40a43691c4ef432d8f38b0 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-5-c95eb9bb8b40a43691c4ef432d8f38b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-6-7fe52008c4a98853d086d17fc3c21906 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-6-7fe52008c4a98853d086d17fc3c21906 new file mode 100644 index 0000000000000..f00666f6113d2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_test_outer-6-7fe52008c4a98853d086d17fc3c21906 @@ -0,0 +1,5 @@ +NULL NULL 333444 555666 333444 555666 +128 128 128 +146 val_146 146 val_146 146 val_146 +224 224 224 +369 369 369 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-7-ab7726921abfa43bb20ddfbc05f73c24 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-7-ab7726921abfa43bb20ddfbc05f73c24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-8-dfb08d397d3fe163d75c3b758097b68a b/sql/hive/src/test/resources/golden/mapjoin_test_outer-8-dfb08d397d3fe163d75c3b758097b68a new file mode 100644 index 0000000000000..f00666f6113d2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_test_outer-8-dfb08d397d3fe163d75c3b758097b68a @@ -0,0 +1,5 @@ +NULL NULL 333444 555666 333444 555666 +128 128 128 +146 val_146 146 val_146 146 val_146 +224 224 224 +369 369 369 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapjoin_test_outer-9-6c45ce60b3dfce0e8bd19eedd57ee017 b/sql/hive/src/test/resources/golden/mapjoin_test_outer-9-6c45ce60b3dfce0e8bd19eedd57ee017 new file mode 100644 index 0000000000000..271f3e168fd23 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapjoin_test_outer-9-6c45ce60b3dfce0e8bd19eedd57ee017 @@ -0,0 +1,4 @@ +128 128 128 +146 val_146 146 val_146 146 val_146 +224 224 224 +369 369 369 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapreduce1-0-904b34e86c266384dc261655162dde3c b/sql/hive/src/test/resources/golden/mapreduce1-0-904b34e86c266384dc261655162dde3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce1-1-e43492b1834d823a66b0f6499b7d2fe b/sql/hive/src/test/resources/golden/mapreduce1-1-e43492b1834d823a66b0f6499b7d2fe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce1-2-c32bd8b1734c410b3686469a7a3500e b/sql/hive/src/test/resources/golden/mapreduce1-2-c32bd8b1734c410b3686469a7a3500e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce1-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/mapreduce1-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..3af52be3cd1fc --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapreduce1-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,500 @@ +0 0 0 val_0 +0 0 0 val_0 +0 0 0 val_0 +2 0 2 val_2 +4 0 4 val_4 +5 0 5 val_5 +5 0 5 val_5 +5 0 5 val_5 +8 0 8 val_8 +9 0 9 val_9 +10 1 0 val_10 +11 1 1 val_11 +12 1 2 val_12 +12 1 2 val_12 +15 1 5 val_15 +15 1 5 val_15 +17 1 7 val_17 +18 1 8 val_18 +18 1 8 val_18 +19 1 9 val_19 +100 10 0 val_100 +100 10 0 val_100 +103 10 3 val_103 +103 10 3 val_103 +104 10 4 val_104 +104 10 4 val_104 +105 10 5 val_105 +111 11 1 val_111 +113 11 3 val_113 +113 11 3 val_113 +114 11 4 val_114 +116 11 6 val_116 +118 11 8 val_118 +118 11 8 val_118 +119 11 9 val_119 +119 11 9 val_119 +119 11 9 val_119 +120 12 0 val_120 +120 12 0 val_120 +125 12 5 val_125 +125 12 5 val_125 +126 12 6 val_126 +128 12 8 val_128 +128 12 8 val_128 +128 12 8 val_128 +129 12 9 val_129 +129 12 9 val_129 +131 13 1 val_131 +133 13 3 val_133 +134 13 4 val_134 +134 13 4 val_134 +136 13 6 val_136 +137 13 7 val_137 +137 13 7 val_137 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +143 14 3 val_143 +145 14 5 val_145 +146 14 6 val_146 +146 14 6 val_146 +149 14 9 val_149 +149 14 9 val_149 +150 15 0 val_150 +152 15 2 val_152 +152 15 2 val_152 +153 15 3 val_153 +155 15 5 val_155 +156 15 6 val_156 +157 15 7 val_157 +158 15 8 val_158 +160 16 0 val_160 +162 16 2 val_162 +163 16 3 val_163 +164 16 4 val_164 +164 16 4 val_164 +165 16 5 val_165 +165 16 5 val_165 +166 16 6 val_166 +167 16 7 val_167 +167 16 7 val_167 +167 16 7 val_167 +168 16 8 val_168 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +170 17 0 val_170 +172 17 2 val_172 +172 17 2 val_172 +174 17 4 val_174 +174 17 4 val_174 +175 17 5 val_175 +175 17 5 val_175 +176 17 6 val_176 +176 17 6 val_176 +177 17 7 val_177 +178 17 8 val_178 +179 17 9 val_179 +179 17 9 val_179 +180 18 0 val_180 +181 18 1 val_181 +183 18 3 val_183 +186 18 6 val_186 +187 18 7 val_187 +187 18 7 val_187 +187 18 7 val_187 +189 18 9 val_189 +190 19 0 val_190 +191 19 1 val_191 +191 19 1 val_191 +192 19 2 val_192 +193 19 3 val_193 +193 19 3 val_193 +193 19 3 val_193 +194 19 4 val_194 +195 19 5 val_195 +195 19 5 val_195 +196 19 6 val_196 +197 19 7 val_197 +197 19 7 val_197 +199 19 9 val_199 +199 19 9 val_199 +199 19 9 val_199 +20 2 0 val_20 +24 2 4 val_24 +24 2 4 val_24 +26 2 6 val_26 +26 2 6 val_26 +27 2 7 val_27 +28 2 8 val_28 +200 20 0 val_200 +200 20 0 val_200 +201 20 1 val_201 +202 20 2 val_202 +203 20 3 val_203 +203 20 3 val_203 +205 20 5 val_205 +205 20 5 val_205 +207 20 7 val_207 +207 20 7 val_207 +208 20 8 val_208 +208 20 8 val_208 +208 20 8 val_208 +209 20 9 val_209 +209 20 9 val_209 +213 21 3 val_213 +213 21 3 val_213 +214 21 4 val_214 +216 21 6 val_216 +216 21 6 val_216 +217 21 7 val_217 +217 21 7 val_217 +218 21 8 val_218 +219 21 9 val_219 +219 21 9 val_219 +221 22 1 val_221 +221 22 1 val_221 +222 22 2 val_222 +223 22 3 val_223 +223 22 3 val_223 +224 22 4 val_224 +224 22 4 val_224 +226 22 6 val_226 +228 22 8 val_228 +229 22 9 val_229 +229 22 9 val_229 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +233 23 3 val_233 +233 23 3 val_233 +235 23 5 val_235 +237 23 7 val_237 +237 23 7 val_237 +238 23 8 val_238 +238 23 8 val_238 +239 23 9 val_239 +239 23 9 val_239 +241 24 1 val_241 +242 24 2 val_242 +242 24 2 val_242 +244 24 4 val_244 +247 24 7 val_247 +248 24 8 val_248 +249 24 9 val_249 +252 25 2 val_252 +255 25 5 val_255 +255 25 5 val_255 +256 25 6 val_256 +256 25 6 val_256 +257 25 7 val_257 +258 25 8 val_258 +260 26 0 val_260 +262 26 2 val_262 +263 26 3 val_263 +265 26 5 val_265 +265 26 5 val_265 +266 26 6 val_266 +272 27 2 val_272 +272 27 2 val_272 +273 27 3 val_273 +273 27 3 val_273 +273 27 3 val_273 +274 27 4 val_274 +275 27 5 val_275 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +278 27 8 val_278 +278 27 8 val_278 +280 28 0 val_280 +280 28 0 val_280 +281 28 1 val_281 +281 28 1 val_281 +282 28 2 val_282 +282 28 2 val_282 +283 28 3 val_283 +284 28 4 val_284 +285 28 5 val_285 +286 28 6 val_286 +287 28 7 val_287 +288 28 8 val_288 +288 28 8 val_288 +289 28 9 val_289 +291 29 1 val_291 +292 29 2 val_292 +296 29 6 val_296 +298 29 8 val_298 +298 29 8 val_298 +298 29 8 val_298 +30 3 0 val_30 +33 3 3 val_33 +34 3 4 val_34 +35 3 5 val_35 +35 3 5 val_35 +35 3 5 val_35 +37 3 7 val_37 +37 3 7 val_37 +302 30 2 val_302 +305 30 5 val_305 +306 30 6 val_306 +307 30 7 val_307 +307 30 7 val_307 +308 30 8 val_308 +309 30 9 val_309 +309 30 9 val_309 +310 31 0 val_310 +311 31 1 val_311 +311 31 1 val_311 +311 31 1 val_311 +315 31 5 val_315 +316 31 6 val_316 +316 31 6 val_316 +316 31 6 val_316 +317 31 7 val_317 +317 31 7 val_317 +318 31 8 val_318 +318 31 8 val_318 +318 31 8 val_318 +321 32 1 val_321 +321 32 1 val_321 +322 32 2 val_322 +322 32 2 val_322 +323 32 3 val_323 +325 32 5 val_325 +325 32 5 val_325 +327 32 7 val_327 +327 32 7 val_327 +327 32 7 val_327 +331 33 1 val_331 +331 33 1 val_331 +332 33 2 val_332 +333 33 3 val_333 +333 33 3 val_333 +335 33 5 val_335 +336 33 6 val_336 +338 33 8 val_338 +339 33 9 val_339 +341 34 1 val_341 +342 34 2 val_342 +342 34 2 val_342 +344 34 4 val_344 +344 34 4 val_344 +345 34 5 val_345 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +351 35 1 val_351 +353 35 3 val_353 +353 35 3 val_353 +356 35 6 val_356 +360 36 0 val_360 +362 36 2 val_362 +364 36 4 val_364 +365 36 5 val_365 +366 36 6 val_366 +367 36 7 val_367 +367 36 7 val_367 +368 36 8 val_368 +369 36 9 val_369 +369 36 9 val_369 +369 36 9 val_369 +373 37 3 val_373 +374 37 4 val_374 +375 37 5 val_375 +377 37 7 val_377 +378 37 8 val_378 +379 37 9 val_379 +382 38 2 val_382 +382 38 2 val_382 +384 38 4 val_384 +384 38 4 val_384 +384 38 4 val_384 +386 38 6 val_386 +389 38 9 val_389 +392 39 2 val_392 +393 39 3 val_393 +394 39 4 val_394 +395 39 5 val_395 +395 39 5 val_395 +396 39 6 val_396 +396 39 6 val_396 +396 39 6 val_396 +397 39 7 val_397 +397 39 7 val_397 +399 39 9 val_399 +399 39 9 val_399 +41 4 1 val_41 +42 4 2 val_42 +42 4 2 val_42 +43 4 3 val_43 +44 4 4 val_44 +47 4 7 val_47 +400 40 0 val_400 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +402 40 2 val_402 +403 40 3 val_403 +403 40 3 val_403 +403 40 3 val_403 +404 40 4 val_404 +404 40 4 val_404 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +407 40 7 val_407 +409 40 9 val_409 +409 40 9 val_409 +409 40 9 val_409 +411 41 1 val_411 +413 41 3 val_413 +413 41 3 val_413 +414 41 4 val_414 +414 41 4 val_414 +417 41 7 val_417 +417 41 7 val_417 +417 41 7 val_417 +418 41 8 val_418 +419 41 9 val_419 +421 42 1 val_421 +424 42 4 val_424 +424 42 4 val_424 +427 42 7 val_427 +429 42 9 val_429 +429 42 9 val_429 +430 43 0 val_430 +430 43 0 val_430 +430 43 0 val_430 +431 43 1 val_431 +431 43 1 val_431 +431 43 1 val_431 +432 43 2 val_432 +435 43 5 val_435 +436 43 6 val_436 +437 43 7 val_437 +438 43 8 val_438 +438 43 8 val_438 +438 43 8 val_438 +439 43 9 val_439 +439 43 9 val_439 +443 44 3 val_443 +444 44 4 val_444 +446 44 6 val_446 +448 44 8 val_448 +449 44 9 val_449 +452 45 2 val_452 +453 45 3 val_453 +454 45 4 val_454 +454 45 4 val_454 +454 45 4 val_454 +455 45 5 val_455 +457 45 7 val_457 +458 45 8 val_458 +458 45 8 val_458 +459 45 9 val_459 +459 45 9 val_459 +460 46 0 val_460 +462 46 2 val_462 +462 46 2 val_462 +463 46 3 val_463 +463 46 3 val_463 +466 46 6 val_466 +466 46 6 val_466 +466 46 6 val_466 +467 46 7 val_467 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +470 47 0 val_470 +472 47 2 val_472 +475 47 5 val_475 +477 47 7 val_477 +478 47 8 val_478 +478 47 8 val_478 +479 47 9 val_479 +480 48 0 val_480 +480 48 0 val_480 +480 48 0 val_480 +481 48 1 val_481 +482 48 2 val_482 +483 48 3 val_483 +484 48 4 val_484 +485 48 5 val_485 +487 48 7 val_487 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +490 49 0 val_490 +491 49 1 val_491 +492 49 2 val_492 +492 49 2 val_492 +493 49 3 val_493 +494 49 4 val_494 +495 49 5 val_495 +496 49 6 val_496 +497 49 7 val_497 +498 49 8 val_498 +498 49 8 val_498 +498 49 8 val_498 +51 5 1 val_51 +51 5 1 val_51 +53 5 3 val_53 +54 5 4 val_54 +57 5 7 val_57 +58 5 8 val_58 +58 5 8 val_58 +64 6 4 val_64 +65 6 5 val_65 +66 6 6 val_66 +67 6 7 val_67 +67 6 7 val_67 +69 6 9 val_69 +70 7 0 val_70 +70 7 0 val_70 +70 7 0 val_70 +72 7 2 val_72 +72 7 2 val_72 +74 7 4 val_74 +76 7 6 val_76 +76 7 6 val_76 +77 7 7 val_77 +78 7 8 val_78 +80 8 0 val_80 +82 8 2 val_82 +83 8 3 val_83 +83 8 3 val_83 +84 8 4 val_84 +84 8 4 val_84 +85 8 5 val_85 +86 8 6 val_86 +87 8 7 val_87 +90 9 0 val_90 +90 9 0 val_90 +90 9 0 val_90 +92 9 2 val_92 +95 9 5 val_95 +95 9 5 val_95 +96 9 6 val_96 +97 9 7 val_97 +97 9 7 val_97 +98 9 8 val_98 +98 9 8 val_98 diff --git a/sql/hive/src/test/resources/golden/mapreduce2-0-904b34e86c266384dc261655162dde3c b/sql/hive/src/test/resources/golden/mapreduce2-0-904b34e86c266384dc261655162dde3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce2-1-22edb61e7c8a162887c58ebbdc4e4a45 b/sql/hive/src/test/resources/golden/mapreduce2-1-22edb61e7c8a162887c58ebbdc4e4a45 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce2-2-3442d32acb17e007a8f844b38fda9a1b b/sql/hive/src/test/resources/golden/mapreduce2-2-3442d32acb17e007a8f844b38fda9a1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce2-3-adea843673e541da8a735a5a34e7c7dc b/sql/hive/src/test/resources/golden/mapreduce2-3-adea843673e541da8a735a5a34e7c7dc new file mode 100644 index 0000000000000..4ab18ace38f46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapreduce2-3-adea843673e541da8a735a5a34e7c7dc @@ -0,0 +1,500 @@ +0 0 0 val_0 +0 0 0 val_0 +0 0 0 val_0 +2 0 2 val_2 +4 0 4 val_4 +5 0 5 val_5 +5 0 5 val_5 +5 0 5 val_5 +8 0 8 val_8 +9 0 9 val_9 +10 1 0 val_10 +11 1 1 val_11 +12 1 2 val_12 +12 1 2 val_12 +15 1 5 val_15 +15 1 5 val_15 +17 1 7 val_17 +18 1 8 val_18 +18 1 8 val_18 +19 1 9 val_19 +20 2 0 val_20 +24 2 4 val_24 +24 2 4 val_24 +26 2 6 val_26 +26 2 6 val_26 +27 2 7 val_27 +28 2 8 val_28 +30 3 0 val_30 +33 3 3 val_33 +34 3 4 val_34 +35 3 5 val_35 +35 3 5 val_35 +35 3 5 val_35 +37 3 7 val_37 +37 3 7 val_37 +41 4 1 val_41 +42 4 2 val_42 +42 4 2 val_42 +43 4 3 val_43 +44 4 4 val_44 +47 4 7 val_47 +51 5 1 val_51 +51 5 1 val_51 +53 5 3 val_53 +54 5 4 val_54 +57 5 7 val_57 +58 5 8 val_58 +58 5 8 val_58 +64 6 4 val_64 +65 6 5 val_65 +66 6 6 val_66 +67 6 7 val_67 +67 6 7 val_67 +69 6 9 val_69 +70 7 0 val_70 +70 7 0 val_70 +70 7 0 val_70 +72 7 2 val_72 +72 7 2 val_72 +74 7 4 val_74 +76 7 6 val_76 +76 7 6 val_76 +77 7 7 val_77 +78 7 8 val_78 +80 8 0 val_80 +82 8 2 val_82 +83 8 3 val_83 +83 8 3 val_83 +84 8 4 val_84 +84 8 4 val_84 +85 8 5 val_85 +86 8 6 val_86 +87 8 7 val_87 +90 9 0 val_90 +90 9 0 val_90 +90 9 0 val_90 +92 9 2 val_92 +95 9 5 val_95 +95 9 5 val_95 +96 9 6 val_96 +97 9 7 val_97 +97 9 7 val_97 +98 9 8 val_98 +98 9 8 val_98 +100 10 0 val_100 +100 10 0 val_100 +103 10 3 val_103 +103 10 3 val_103 +104 10 4 val_104 +104 10 4 val_104 +105 10 5 val_105 +111 11 1 val_111 +113 11 3 val_113 +113 11 3 val_113 +114 11 4 val_114 +116 11 6 val_116 +118 11 8 val_118 +118 11 8 val_118 +119 11 9 val_119 +119 11 9 val_119 +119 11 9 val_119 +120 12 0 val_120 +120 12 0 val_120 +125 12 5 val_125 +125 12 5 val_125 +126 12 6 val_126 +128 12 8 val_128 +128 12 8 val_128 +128 12 8 val_128 +129 12 9 val_129 +129 12 9 val_129 +131 13 1 val_131 +133 13 3 val_133 +134 13 4 val_134 +134 13 4 val_134 +136 13 6 val_136 +137 13 7 val_137 +137 13 7 val_137 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +143 14 3 val_143 +145 14 5 val_145 +146 14 6 val_146 +146 14 6 val_146 +149 14 9 val_149 +149 14 9 val_149 +150 15 0 val_150 +152 15 2 val_152 +152 15 2 val_152 +153 15 3 val_153 +155 15 5 val_155 +156 15 6 val_156 +157 15 7 val_157 +158 15 8 val_158 +160 16 0 val_160 +162 16 2 val_162 +163 16 3 val_163 +164 16 4 val_164 +164 16 4 val_164 +165 16 5 val_165 +165 16 5 val_165 +166 16 6 val_166 +167 16 7 val_167 +167 16 7 val_167 +167 16 7 val_167 +168 16 8 val_168 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +170 17 0 val_170 +172 17 2 val_172 +172 17 2 val_172 +174 17 4 val_174 +174 17 4 val_174 +175 17 5 val_175 +175 17 5 val_175 +176 17 6 val_176 +176 17 6 val_176 +177 17 7 val_177 +178 17 8 val_178 +179 17 9 val_179 +179 17 9 val_179 +180 18 0 val_180 +181 18 1 val_181 +183 18 3 val_183 +186 18 6 val_186 +187 18 7 val_187 +187 18 7 val_187 +187 18 7 val_187 +189 18 9 val_189 +190 19 0 val_190 +191 19 1 val_191 +191 19 1 val_191 +192 19 2 val_192 +193 19 3 val_193 +193 19 3 val_193 +193 19 3 val_193 +194 19 4 val_194 +195 19 5 val_195 +195 19 5 val_195 +196 19 6 val_196 +197 19 7 val_197 +197 19 7 val_197 +199 19 9 val_199 +199 19 9 val_199 +199 19 9 val_199 +200 20 0 val_200 +200 20 0 val_200 +201 20 1 val_201 +202 20 2 val_202 +203 20 3 val_203 +203 20 3 val_203 +205 20 5 val_205 +205 20 5 val_205 +207 20 7 val_207 +207 20 7 val_207 +208 20 8 val_208 +208 20 8 val_208 +208 20 8 val_208 +209 20 9 val_209 +209 20 9 val_209 +213 21 3 val_213 +213 21 3 val_213 +214 21 4 val_214 +216 21 6 val_216 +216 21 6 val_216 +217 21 7 val_217 +217 21 7 val_217 +218 21 8 val_218 +219 21 9 val_219 +219 21 9 val_219 +221 22 1 val_221 +221 22 1 val_221 +222 22 2 val_222 +223 22 3 val_223 +223 22 3 val_223 +224 22 4 val_224 +224 22 4 val_224 +226 22 6 val_226 +228 22 8 val_228 +229 22 9 val_229 +229 22 9 val_229 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +233 23 3 val_233 +233 23 3 val_233 +235 23 5 val_235 +237 23 7 val_237 +237 23 7 val_237 +238 23 8 val_238 +238 23 8 val_238 +239 23 9 val_239 +239 23 9 val_239 +241 24 1 val_241 +242 24 2 val_242 +242 24 2 val_242 +244 24 4 val_244 +247 24 7 val_247 +248 24 8 val_248 +249 24 9 val_249 +252 25 2 val_252 +255 25 5 val_255 +255 25 5 val_255 +256 25 6 val_256 +256 25 6 val_256 +257 25 7 val_257 +258 25 8 val_258 +260 26 0 val_260 +262 26 2 val_262 +263 26 3 val_263 +265 26 5 val_265 +265 26 5 val_265 +266 26 6 val_266 +272 27 2 val_272 +272 27 2 val_272 +273 27 3 val_273 +273 27 3 val_273 +273 27 3 val_273 +274 27 4 val_274 +275 27 5 val_275 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +278 27 8 val_278 +278 27 8 val_278 +280 28 0 val_280 +280 28 0 val_280 +281 28 1 val_281 +281 28 1 val_281 +282 28 2 val_282 +282 28 2 val_282 +283 28 3 val_283 +284 28 4 val_284 +285 28 5 val_285 +286 28 6 val_286 +287 28 7 val_287 +288 28 8 val_288 +288 28 8 val_288 +289 28 9 val_289 +291 29 1 val_291 +292 29 2 val_292 +296 29 6 val_296 +298 29 8 val_298 +298 29 8 val_298 +298 29 8 val_298 +302 30 2 val_302 +305 30 5 val_305 +306 30 6 val_306 +307 30 7 val_307 +307 30 7 val_307 +308 30 8 val_308 +309 30 9 val_309 +309 30 9 val_309 +310 31 0 val_310 +311 31 1 val_311 +311 31 1 val_311 +311 31 1 val_311 +315 31 5 val_315 +316 31 6 val_316 +316 31 6 val_316 +316 31 6 val_316 +317 31 7 val_317 +317 31 7 val_317 +318 31 8 val_318 +318 31 8 val_318 +318 31 8 val_318 +321 32 1 val_321 +321 32 1 val_321 +322 32 2 val_322 +322 32 2 val_322 +323 32 3 val_323 +325 32 5 val_325 +325 32 5 val_325 +327 32 7 val_327 +327 32 7 val_327 +327 32 7 val_327 +331 33 1 val_331 +331 33 1 val_331 +332 33 2 val_332 +333 33 3 val_333 +333 33 3 val_333 +335 33 5 val_335 +336 33 6 val_336 +338 33 8 val_338 +339 33 9 val_339 +341 34 1 val_341 +342 34 2 val_342 +342 34 2 val_342 +344 34 4 val_344 +344 34 4 val_344 +345 34 5 val_345 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +351 35 1 val_351 +353 35 3 val_353 +353 35 3 val_353 +356 35 6 val_356 +360 36 0 val_360 +362 36 2 val_362 +364 36 4 val_364 +365 36 5 val_365 +366 36 6 val_366 +367 36 7 val_367 +367 36 7 val_367 +368 36 8 val_368 +369 36 9 val_369 +369 36 9 val_369 +369 36 9 val_369 +373 37 3 val_373 +374 37 4 val_374 +375 37 5 val_375 +377 37 7 val_377 +378 37 8 val_378 +379 37 9 val_379 +382 38 2 val_382 +382 38 2 val_382 +384 38 4 val_384 +384 38 4 val_384 +384 38 4 val_384 +386 38 6 val_386 +389 38 9 val_389 +392 39 2 val_392 +393 39 3 val_393 +394 39 4 val_394 +395 39 5 val_395 +395 39 5 val_395 +396 39 6 val_396 +396 39 6 val_396 +396 39 6 val_396 +397 39 7 val_397 +397 39 7 val_397 +399 39 9 val_399 +399 39 9 val_399 +400 40 0 val_400 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +402 40 2 val_402 +403 40 3 val_403 +403 40 3 val_403 +403 40 3 val_403 +404 40 4 val_404 +404 40 4 val_404 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +407 40 7 val_407 +409 40 9 val_409 +409 40 9 val_409 +409 40 9 val_409 +411 41 1 val_411 +413 41 3 val_413 +413 41 3 val_413 +414 41 4 val_414 +414 41 4 val_414 +417 41 7 val_417 +417 41 7 val_417 +417 41 7 val_417 +418 41 8 val_418 +419 41 9 val_419 +421 42 1 val_421 +424 42 4 val_424 +424 42 4 val_424 +427 42 7 val_427 +429 42 9 val_429 +429 42 9 val_429 +430 43 0 val_430 +430 43 0 val_430 +430 43 0 val_430 +431 43 1 val_431 +431 43 1 val_431 +431 43 1 val_431 +432 43 2 val_432 +435 43 5 val_435 +436 43 6 val_436 +437 43 7 val_437 +438 43 8 val_438 +438 43 8 val_438 +438 43 8 val_438 +439 43 9 val_439 +439 43 9 val_439 +443 44 3 val_443 +444 44 4 val_444 +446 44 6 val_446 +448 44 8 val_448 +449 44 9 val_449 +452 45 2 val_452 +453 45 3 val_453 +454 45 4 val_454 +454 45 4 val_454 +454 45 4 val_454 +455 45 5 val_455 +457 45 7 val_457 +458 45 8 val_458 +458 45 8 val_458 +459 45 9 val_459 +459 45 9 val_459 +460 46 0 val_460 +462 46 2 val_462 +462 46 2 val_462 +463 46 3 val_463 +463 46 3 val_463 +466 46 6 val_466 +466 46 6 val_466 +466 46 6 val_466 +467 46 7 val_467 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +470 47 0 val_470 +472 47 2 val_472 +475 47 5 val_475 +477 47 7 val_477 +478 47 8 val_478 +478 47 8 val_478 +479 47 9 val_479 +480 48 0 val_480 +480 48 0 val_480 +480 48 0 val_480 +481 48 1 val_481 +482 48 2 val_482 +483 48 3 val_483 +484 48 4 val_484 +485 48 5 val_485 +487 48 7 val_487 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +490 49 0 val_490 +491 49 1 val_491 +492 49 2 val_492 +492 49 2 val_492 +493 49 3 val_493 +494 49 4 val_494 +495 49 5 val_495 +496 49 6 val_496 +497 49 7 val_497 +498 49 8 val_498 +498 49 8 val_498 +498 49 8 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapreduce3-0-904b34e86c266384dc261655162dde3c b/sql/hive/src/test/resources/golden/mapreduce3-0-904b34e86c266384dc261655162dde3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce3-1-efaeccafc3db890b344dc6037266b71b b/sql/hive/src/test/resources/golden/mapreduce3-1-efaeccafc3db890b344dc6037266b71b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce3-2-51905797c8299159dc1cf1ef69cd7a9a b/sql/hive/src/test/resources/golden/mapreduce3-2-51905797c8299159dc1cf1ef69cd7a9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce3-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/mapreduce3-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..1504c19f78eb2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapreduce3-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,500 @@ +0 0 0 val_0 +0 0 0 val_0 +0 0 0 val_0 +10 1 0 val_10 +100 10 0 val_100 +100 10 0 val_100 +103 10 3 val_103 +103 10 3 val_103 +104 10 4 val_104 +104 10 4 val_104 +105 10 5 val_105 +11 1 1 val_11 +111 11 1 val_111 +113 11 3 val_113 +113 11 3 val_113 +114 11 4 val_114 +116 11 6 val_116 +118 11 8 val_118 +118 11 8 val_118 +119 11 9 val_119 +119 11 9 val_119 +119 11 9 val_119 +12 1 2 val_12 +12 1 2 val_12 +120 12 0 val_120 +120 12 0 val_120 +125 12 5 val_125 +125 12 5 val_125 +126 12 6 val_126 +128 12 8 val_128 +128 12 8 val_128 +128 12 8 val_128 +129 12 9 val_129 +129 12 9 val_129 +131 13 1 val_131 +133 13 3 val_133 +134 13 4 val_134 +134 13 4 val_134 +136 13 6 val_136 +137 13 7 val_137 +137 13 7 val_137 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +143 14 3 val_143 +145 14 5 val_145 +146 14 6 val_146 +146 14 6 val_146 +149 14 9 val_149 +149 14 9 val_149 +15 1 5 val_15 +15 1 5 val_15 +150 15 0 val_150 +152 15 2 val_152 +152 15 2 val_152 +153 15 3 val_153 +155 15 5 val_155 +156 15 6 val_156 +157 15 7 val_157 +158 15 8 val_158 +160 16 0 val_160 +162 16 2 val_162 +163 16 3 val_163 +164 16 4 val_164 +164 16 4 val_164 +165 16 5 val_165 +165 16 5 val_165 +166 16 6 val_166 +167 16 7 val_167 +167 16 7 val_167 +167 16 7 val_167 +168 16 8 val_168 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +17 1 7 val_17 +170 17 0 val_170 +172 17 2 val_172 +172 17 2 val_172 +174 17 4 val_174 +174 17 4 val_174 +175 17 5 val_175 +175 17 5 val_175 +176 17 6 val_176 +176 17 6 val_176 +177 17 7 val_177 +178 17 8 val_178 +179 17 9 val_179 +179 17 9 val_179 +18 1 8 val_18 +18 1 8 val_18 +180 18 0 val_180 +181 18 1 val_181 +183 18 3 val_183 +186 18 6 val_186 +187 18 7 val_187 +187 18 7 val_187 +187 18 7 val_187 +189 18 9 val_189 +19 1 9 val_19 +190 19 0 val_190 +191 19 1 val_191 +191 19 1 val_191 +192 19 2 val_192 +193 19 3 val_193 +193 19 3 val_193 +193 19 3 val_193 +194 19 4 val_194 +195 19 5 val_195 +195 19 5 val_195 +196 19 6 val_196 +197 19 7 val_197 +197 19 7 val_197 +199 19 9 val_199 +199 19 9 val_199 +199 19 9 val_199 +2 0 2 val_2 +20 2 0 val_20 +200 20 0 val_200 +200 20 0 val_200 +201 20 1 val_201 +202 20 2 val_202 +203 20 3 val_203 +203 20 3 val_203 +205 20 5 val_205 +205 20 5 val_205 +207 20 7 val_207 +207 20 7 val_207 +208 20 8 val_208 +208 20 8 val_208 +208 20 8 val_208 +209 20 9 val_209 +209 20 9 val_209 +213 21 3 val_213 +213 21 3 val_213 +214 21 4 val_214 +216 21 6 val_216 +216 21 6 val_216 +217 21 7 val_217 +217 21 7 val_217 +218 21 8 val_218 +219 21 9 val_219 +219 21 9 val_219 +221 22 1 val_221 +221 22 1 val_221 +222 22 2 val_222 +223 22 3 val_223 +223 22 3 val_223 +224 22 4 val_224 +224 22 4 val_224 +226 22 6 val_226 +228 22 8 val_228 +229 22 9 val_229 +229 22 9 val_229 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +233 23 3 val_233 +233 23 3 val_233 +235 23 5 val_235 +237 23 7 val_237 +237 23 7 val_237 +238 23 8 val_238 +238 23 8 val_238 +239 23 9 val_239 +239 23 9 val_239 +24 2 4 val_24 +24 2 4 val_24 +241 24 1 val_241 +242 24 2 val_242 +242 24 2 val_242 +244 24 4 val_244 +247 24 7 val_247 +248 24 8 val_248 +249 24 9 val_249 +252 25 2 val_252 +255 25 5 val_255 +255 25 5 val_255 +256 25 6 val_256 +256 25 6 val_256 +257 25 7 val_257 +258 25 8 val_258 +26 2 6 val_26 +26 2 6 val_26 +260 26 0 val_260 +262 26 2 val_262 +263 26 3 val_263 +265 26 5 val_265 +265 26 5 val_265 +266 26 6 val_266 +27 2 7 val_27 +272 27 2 val_272 +272 27 2 val_272 +273 27 3 val_273 +273 27 3 val_273 +273 27 3 val_273 +274 27 4 val_274 +275 27 5 val_275 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +278 27 8 val_278 +278 27 8 val_278 +28 2 8 val_28 +280 28 0 val_280 +280 28 0 val_280 +281 28 1 val_281 +281 28 1 val_281 +282 28 2 val_282 +282 28 2 val_282 +283 28 3 val_283 +284 28 4 val_284 +285 28 5 val_285 +286 28 6 val_286 +287 28 7 val_287 +288 28 8 val_288 +288 28 8 val_288 +289 28 9 val_289 +291 29 1 val_291 +292 29 2 val_292 +296 29 6 val_296 +298 29 8 val_298 +298 29 8 val_298 +298 29 8 val_298 +30 3 0 val_30 +302 30 2 val_302 +305 30 5 val_305 +306 30 6 val_306 +307 30 7 val_307 +307 30 7 val_307 +308 30 8 val_308 +309 30 9 val_309 +309 30 9 val_309 +310 31 0 val_310 +311 31 1 val_311 +311 31 1 val_311 +311 31 1 val_311 +315 31 5 val_315 +316 31 6 val_316 +316 31 6 val_316 +316 31 6 val_316 +317 31 7 val_317 +317 31 7 val_317 +318 31 8 val_318 +318 31 8 val_318 +318 31 8 val_318 +321 32 1 val_321 +321 32 1 val_321 +322 32 2 val_322 +322 32 2 val_322 +323 32 3 val_323 +325 32 5 val_325 +325 32 5 val_325 +327 32 7 val_327 +327 32 7 val_327 +327 32 7 val_327 +33 3 3 val_33 +331 33 1 val_331 +331 33 1 val_331 +332 33 2 val_332 +333 33 3 val_333 +333 33 3 val_333 +335 33 5 val_335 +336 33 6 val_336 +338 33 8 val_338 +339 33 9 val_339 +34 3 4 val_34 +341 34 1 val_341 +342 34 2 val_342 +342 34 2 val_342 +344 34 4 val_344 +344 34 4 val_344 +345 34 5 val_345 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +35 3 5 val_35 +35 3 5 val_35 +35 3 5 val_35 +351 35 1 val_351 +353 35 3 val_353 +353 35 3 val_353 +356 35 6 val_356 +360 36 0 val_360 +362 36 2 val_362 +364 36 4 val_364 +365 36 5 val_365 +366 36 6 val_366 +367 36 7 val_367 +367 36 7 val_367 +368 36 8 val_368 +369 36 9 val_369 +369 36 9 val_369 +369 36 9 val_369 +37 3 7 val_37 +37 3 7 val_37 +373 37 3 val_373 +374 37 4 val_374 +375 37 5 val_375 +377 37 7 val_377 +378 37 8 val_378 +379 37 9 val_379 +382 38 2 val_382 +382 38 2 val_382 +384 38 4 val_384 +384 38 4 val_384 +384 38 4 val_384 +386 38 6 val_386 +389 38 9 val_389 +392 39 2 val_392 +393 39 3 val_393 +394 39 4 val_394 +395 39 5 val_395 +395 39 5 val_395 +396 39 6 val_396 +396 39 6 val_396 +396 39 6 val_396 +397 39 7 val_397 +397 39 7 val_397 +399 39 9 val_399 +399 39 9 val_399 +4 0 4 val_4 +400 40 0 val_400 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +402 40 2 val_402 +403 40 3 val_403 +403 40 3 val_403 +403 40 3 val_403 +404 40 4 val_404 +404 40 4 val_404 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +407 40 7 val_407 +409 40 9 val_409 +409 40 9 val_409 +409 40 9 val_409 +41 4 1 val_41 +411 41 1 val_411 +413 41 3 val_413 +413 41 3 val_413 +414 41 4 val_414 +414 41 4 val_414 +417 41 7 val_417 +417 41 7 val_417 +417 41 7 val_417 +418 41 8 val_418 +419 41 9 val_419 +42 4 2 val_42 +42 4 2 val_42 +421 42 1 val_421 +424 42 4 val_424 +424 42 4 val_424 +427 42 7 val_427 +429 42 9 val_429 +429 42 9 val_429 +43 4 3 val_43 +430 43 0 val_430 +430 43 0 val_430 +430 43 0 val_430 +431 43 1 val_431 +431 43 1 val_431 +431 43 1 val_431 +432 43 2 val_432 +435 43 5 val_435 +436 43 6 val_436 +437 43 7 val_437 +438 43 8 val_438 +438 43 8 val_438 +438 43 8 val_438 +439 43 9 val_439 +439 43 9 val_439 +44 4 4 val_44 +443 44 3 val_443 +444 44 4 val_444 +446 44 6 val_446 +448 44 8 val_448 +449 44 9 val_449 +452 45 2 val_452 +453 45 3 val_453 +454 45 4 val_454 +454 45 4 val_454 +454 45 4 val_454 +455 45 5 val_455 +457 45 7 val_457 +458 45 8 val_458 +458 45 8 val_458 +459 45 9 val_459 +459 45 9 val_459 +460 46 0 val_460 +462 46 2 val_462 +462 46 2 val_462 +463 46 3 val_463 +463 46 3 val_463 +466 46 6 val_466 +466 46 6 val_466 +466 46 6 val_466 +467 46 7 val_467 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +47 4 7 val_47 +470 47 0 val_470 +472 47 2 val_472 +475 47 5 val_475 +477 47 7 val_477 +478 47 8 val_478 +478 47 8 val_478 +479 47 9 val_479 +480 48 0 val_480 +480 48 0 val_480 +480 48 0 val_480 +481 48 1 val_481 +482 48 2 val_482 +483 48 3 val_483 +484 48 4 val_484 +485 48 5 val_485 +487 48 7 val_487 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +490 49 0 val_490 +491 49 1 val_491 +492 49 2 val_492 +492 49 2 val_492 +493 49 3 val_493 +494 49 4 val_494 +495 49 5 val_495 +496 49 6 val_496 +497 49 7 val_497 +498 49 8 val_498 +498 49 8 val_498 +498 49 8 val_498 +5 0 5 val_5 +5 0 5 val_5 +5 0 5 val_5 +51 5 1 val_51 +51 5 1 val_51 +53 5 3 val_53 +54 5 4 val_54 +57 5 7 val_57 +58 5 8 val_58 +58 5 8 val_58 +64 6 4 val_64 +65 6 5 val_65 +66 6 6 val_66 +67 6 7 val_67 +67 6 7 val_67 +69 6 9 val_69 +70 7 0 val_70 +70 7 0 val_70 +70 7 0 val_70 +72 7 2 val_72 +72 7 2 val_72 +74 7 4 val_74 +76 7 6 val_76 +76 7 6 val_76 +77 7 7 val_77 +78 7 8 val_78 +8 0 8 val_8 +80 8 0 val_80 +82 8 2 val_82 +83 8 3 val_83 +83 8 3 val_83 +84 8 4 val_84 +84 8 4 val_84 +85 8 5 val_85 +86 8 6 val_86 +87 8 7 val_87 +9 0 9 val_9 +90 9 0 val_90 +90 9 0 val_90 +90 9 0 val_90 +92 9 2 val_92 +95 9 5 val_95 +95 9 5 val_95 +96 9 6 val_96 +97 9 7 val_97 +97 9 7 val_97 +98 9 8 val_98 +98 9 8 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mapreduce4-0-904b34e86c266384dc261655162dde3c b/sql/hive/src/test/resources/golden/mapreduce4-0-904b34e86c266384dc261655162dde3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce4-1-7fed3aa9a8e544556f5b58f301d8bd2f b/sql/hive/src/test/resources/golden/mapreduce4-1-7fed3aa9a8e544556f5b58f301d8bd2f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce4-2-6906be683bdd3666075760de019ac5ab b/sql/hive/src/test/resources/golden/mapreduce4-2-6906be683bdd3666075760de019ac5ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce4-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/mapreduce4-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..bf6c49af3ba4e --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapreduce4-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,500 @@ +90 9 0 val_90 +90 9 0 val_90 +90 9 0 val_90 +92 9 2 val_92 +95 9 5 val_95 +95 9 5 val_95 +96 9 6 val_96 +97 9 7 val_97 +97 9 7 val_97 +98 9 8 val_98 +98 9 8 val_98 +80 8 0 val_80 +82 8 2 val_82 +83 8 3 val_83 +83 8 3 val_83 +84 8 4 val_84 +84 8 4 val_84 +85 8 5 val_85 +86 8 6 val_86 +87 8 7 val_87 +70 7 0 val_70 +70 7 0 val_70 +70 7 0 val_70 +72 7 2 val_72 +72 7 2 val_72 +74 7 4 val_74 +76 7 6 val_76 +76 7 6 val_76 +77 7 7 val_77 +78 7 8 val_78 +64 6 4 val_64 +65 6 5 val_65 +66 6 6 val_66 +67 6 7 val_67 +67 6 7 val_67 +69 6 9 val_69 +51 5 1 val_51 +51 5 1 val_51 +53 5 3 val_53 +54 5 4 val_54 +57 5 7 val_57 +58 5 8 val_58 +58 5 8 val_58 +490 49 0 val_490 +491 49 1 val_491 +492 49 2 val_492 +492 49 2 val_492 +493 49 3 val_493 +494 49 4 val_494 +495 49 5 val_495 +496 49 6 val_496 +497 49 7 val_497 +498 49 8 val_498 +498 49 8 val_498 +498 49 8 val_498 +480 48 0 val_480 +480 48 0 val_480 +480 48 0 val_480 +481 48 1 val_481 +482 48 2 val_482 +483 48 3 val_483 +484 48 4 val_484 +485 48 5 val_485 +487 48 7 val_487 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +470 47 0 val_470 +472 47 2 val_472 +475 47 5 val_475 +477 47 7 val_477 +478 47 8 val_478 +478 47 8 val_478 +479 47 9 val_479 +460 46 0 val_460 +462 46 2 val_462 +462 46 2 val_462 +463 46 3 val_463 +463 46 3 val_463 +466 46 6 val_466 +466 46 6 val_466 +466 46 6 val_466 +467 46 7 val_467 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +452 45 2 val_452 +453 45 3 val_453 +454 45 4 val_454 +454 45 4 val_454 +454 45 4 val_454 +455 45 5 val_455 +457 45 7 val_457 +458 45 8 val_458 +458 45 8 val_458 +459 45 9 val_459 +459 45 9 val_459 +443 44 3 val_443 +444 44 4 val_444 +446 44 6 val_446 +448 44 8 val_448 +449 44 9 val_449 +430 43 0 val_430 +430 43 0 val_430 +430 43 0 val_430 +431 43 1 val_431 +431 43 1 val_431 +431 43 1 val_431 +432 43 2 val_432 +435 43 5 val_435 +436 43 6 val_436 +437 43 7 val_437 +438 43 8 val_438 +438 43 8 val_438 +438 43 8 val_438 +439 43 9 val_439 +439 43 9 val_439 +421 42 1 val_421 +424 42 4 val_424 +424 42 4 val_424 +427 42 7 val_427 +429 42 9 val_429 +429 42 9 val_429 +411 41 1 val_411 +413 41 3 val_413 +413 41 3 val_413 +414 41 4 val_414 +414 41 4 val_414 +417 41 7 val_417 +417 41 7 val_417 +417 41 7 val_417 +418 41 8 val_418 +419 41 9 val_419 +400 40 0 val_400 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +402 40 2 val_402 +403 40 3 val_403 +403 40 3 val_403 +403 40 3 val_403 +404 40 4 val_404 +404 40 4 val_404 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +407 40 7 val_407 +409 40 9 val_409 +409 40 9 val_409 +409 40 9 val_409 +41 4 1 val_41 +42 4 2 val_42 +42 4 2 val_42 +43 4 3 val_43 +44 4 4 val_44 +47 4 7 val_47 +392 39 2 val_392 +393 39 3 val_393 +394 39 4 val_394 +395 39 5 val_395 +395 39 5 val_395 +396 39 6 val_396 +396 39 6 val_396 +396 39 6 val_396 +397 39 7 val_397 +397 39 7 val_397 +399 39 9 val_399 +399 39 9 val_399 +382 38 2 val_382 +382 38 2 val_382 +384 38 4 val_384 +384 38 4 val_384 +384 38 4 val_384 +386 38 6 val_386 +389 38 9 val_389 +373 37 3 val_373 +374 37 4 val_374 +375 37 5 val_375 +377 37 7 val_377 +378 37 8 val_378 +379 37 9 val_379 +360 36 0 val_360 +362 36 2 val_362 +364 36 4 val_364 +365 36 5 val_365 +366 36 6 val_366 +367 36 7 val_367 +367 36 7 val_367 +368 36 8 val_368 +369 36 9 val_369 +369 36 9 val_369 +369 36 9 val_369 +351 35 1 val_351 +353 35 3 val_353 +353 35 3 val_353 +356 35 6 val_356 +341 34 1 val_341 +342 34 2 val_342 +342 34 2 val_342 +344 34 4 val_344 +344 34 4 val_344 +345 34 5 val_345 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +331 33 1 val_331 +331 33 1 val_331 +332 33 2 val_332 +333 33 3 val_333 +333 33 3 val_333 +335 33 5 val_335 +336 33 6 val_336 +338 33 8 val_338 +339 33 9 val_339 +321 32 1 val_321 +321 32 1 val_321 +322 32 2 val_322 +322 32 2 val_322 +323 32 3 val_323 +325 32 5 val_325 +325 32 5 val_325 +327 32 7 val_327 +327 32 7 val_327 +327 32 7 val_327 +310 31 0 val_310 +311 31 1 val_311 +311 31 1 val_311 +311 31 1 val_311 +315 31 5 val_315 +316 31 6 val_316 +316 31 6 val_316 +316 31 6 val_316 +317 31 7 val_317 +317 31 7 val_317 +318 31 8 val_318 +318 31 8 val_318 +318 31 8 val_318 +302 30 2 val_302 +305 30 5 val_305 +306 30 6 val_306 +307 30 7 val_307 +307 30 7 val_307 +308 30 8 val_308 +309 30 9 val_309 +309 30 9 val_309 +30 3 0 val_30 +33 3 3 val_33 +34 3 4 val_34 +35 3 5 val_35 +35 3 5 val_35 +35 3 5 val_35 +37 3 7 val_37 +37 3 7 val_37 +291 29 1 val_291 +292 29 2 val_292 +296 29 6 val_296 +298 29 8 val_298 +298 29 8 val_298 +298 29 8 val_298 +280 28 0 val_280 +280 28 0 val_280 +281 28 1 val_281 +281 28 1 val_281 +282 28 2 val_282 +282 28 2 val_282 +283 28 3 val_283 +284 28 4 val_284 +285 28 5 val_285 +286 28 6 val_286 +287 28 7 val_287 +288 28 8 val_288 +288 28 8 val_288 +289 28 9 val_289 +272 27 2 val_272 +272 27 2 val_272 +273 27 3 val_273 +273 27 3 val_273 +273 27 3 val_273 +274 27 4 val_274 +275 27 5 val_275 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +278 27 8 val_278 +278 27 8 val_278 +260 26 0 val_260 +262 26 2 val_262 +263 26 3 val_263 +265 26 5 val_265 +265 26 5 val_265 +266 26 6 val_266 +252 25 2 val_252 +255 25 5 val_255 +255 25 5 val_255 +256 25 6 val_256 +256 25 6 val_256 +257 25 7 val_257 +258 25 8 val_258 +241 24 1 val_241 +242 24 2 val_242 +242 24 2 val_242 +244 24 4 val_244 +247 24 7 val_247 +248 24 8 val_248 +249 24 9 val_249 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +233 23 3 val_233 +233 23 3 val_233 +235 23 5 val_235 +237 23 7 val_237 +237 23 7 val_237 +238 23 8 val_238 +238 23 8 val_238 +239 23 9 val_239 +239 23 9 val_239 +221 22 1 val_221 +221 22 1 val_221 +222 22 2 val_222 +223 22 3 val_223 +223 22 3 val_223 +224 22 4 val_224 +224 22 4 val_224 +226 22 6 val_226 +228 22 8 val_228 +229 22 9 val_229 +229 22 9 val_229 +213 21 3 val_213 +213 21 3 val_213 +214 21 4 val_214 +216 21 6 val_216 +216 21 6 val_216 +217 21 7 val_217 +217 21 7 val_217 +218 21 8 val_218 +219 21 9 val_219 +219 21 9 val_219 +200 20 0 val_200 +200 20 0 val_200 +201 20 1 val_201 +202 20 2 val_202 +203 20 3 val_203 +203 20 3 val_203 +205 20 5 val_205 +205 20 5 val_205 +207 20 7 val_207 +207 20 7 val_207 +208 20 8 val_208 +208 20 8 val_208 +208 20 8 val_208 +209 20 9 val_209 +209 20 9 val_209 +20 2 0 val_20 +24 2 4 val_24 +24 2 4 val_24 +26 2 6 val_26 +26 2 6 val_26 +27 2 7 val_27 +28 2 8 val_28 +190 19 0 val_190 +191 19 1 val_191 +191 19 1 val_191 +192 19 2 val_192 +193 19 3 val_193 +193 19 3 val_193 +193 19 3 val_193 +194 19 4 val_194 +195 19 5 val_195 +195 19 5 val_195 +196 19 6 val_196 +197 19 7 val_197 +197 19 7 val_197 +199 19 9 val_199 +199 19 9 val_199 +199 19 9 val_199 +180 18 0 val_180 +181 18 1 val_181 +183 18 3 val_183 +186 18 6 val_186 +187 18 7 val_187 +187 18 7 val_187 +187 18 7 val_187 +189 18 9 val_189 +170 17 0 val_170 +172 17 2 val_172 +172 17 2 val_172 +174 17 4 val_174 +174 17 4 val_174 +175 17 5 val_175 +175 17 5 val_175 +176 17 6 val_176 +176 17 6 val_176 +177 17 7 val_177 +178 17 8 val_178 +179 17 9 val_179 +179 17 9 val_179 +160 16 0 val_160 +162 16 2 val_162 +163 16 3 val_163 +164 16 4 val_164 +164 16 4 val_164 +165 16 5 val_165 +165 16 5 val_165 +166 16 6 val_166 +167 16 7 val_167 +167 16 7 val_167 +167 16 7 val_167 +168 16 8 val_168 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +150 15 0 val_150 +152 15 2 val_152 +152 15 2 val_152 +153 15 3 val_153 +155 15 5 val_155 +156 15 6 val_156 +157 15 7 val_157 +158 15 8 val_158 +143 14 3 val_143 +145 14 5 val_145 +146 14 6 val_146 +146 14 6 val_146 +149 14 9 val_149 +149 14 9 val_149 +131 13 1 val_131 +133 13 3 val_133 +134 13 4 val_134 +134 13 4 val_134 +136 13 6 val_136 +137 13 7 val_137 +137 13 7 val_137 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +120 12 0 val_120 +120 12 0 val_120 +125 12 5 val_125 +125 12 5 val_125 +126 12 6 val_126 +128 12 8 val_128 +128 12 8 val_128 +128 12 8 val_128 +129 12 9 val_129 +129 12 9 val_129 +111 11 1 val_111 +113 11 3 val_113 +113 11 3 val_113 +114 11 4 val_114 +116 11 6 val_116 +118 11 8 val_118 +118 11 8 val_118 +119 11 9 val_119 +119 11 9 val_119 +119 11 9 val_119 +100 10 0 val_100 +100 10 0 val_100 +103 10 3 val_103 +103 10 3 val_103 +104 10 4 val_104 +104 10 4 val_104 +105 10 5 val_105 +10 1 0 val_10 +11 1 1 val_11 +12 1 2 val_12 +12 1 2 val_12 +15 1 5 val_15 +15 1 5 val_15 +17 1 7 val_17 +18 1 8 val_18 +18 1 8 val_18 +19 1 9 val_19 +0 0 0 val_0 +0 0 0 val_0 +0 0 0 val_0 +2 0 2 val_2 +4 0 4 val_4 +5 0 5 val_5 +5 0 5 val_5 +5 0 5 val_5 +8 0 8 val_8 +9 0 9 val_9 diff --git a/sql/hive/src/test/resources/golden/mapreduce5-0-904b34e86c266384dc261655162dde3c b/sql/hive/src/test/resources/golden/mapreduce5-0-904b34e86c266384dc261655162dde3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce5-1-52bff54eba53868ef3fd026cc6301a13 b/sql/hive/src/test/resources/golden/mapreduce5-1-52bff54eba53868ef3fd026cc6301a13 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce5-2-2cfcb0d4e390cd5fdd6d8a9bb26555ca b/sql/hive/src/test/resources/golden/mapreduce5-2-2cfcb0d4e390cd5fdd6d8a9bb26555ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce5-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/mapreduce5-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..1ecd5ad908e74 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapreduce5-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,500 @@ +490 49 0 val_490 +491 49 1 val_491 +492 49 2 val_492 +492 49 2 val_492 +493 49 3 val_493 +494 49 4 val_494 +495 49 5 val_495 +496 49 6 val_496 +497 49 7 val_497 +498 49 8 val_498 +498 49 8 val_498 +498 49 8 val_498 +480 48 0 val_480 +480 48 0 val_480 +480 48 0 val_480 +481 48 1 val_481 +482 48 2 val_482 +483 48 3 val_483 +484 48 4 val_484 +485 48 5 val_485 +487 48 7 val_487 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +470 47 0 val_470 +472 47 2 val_472 +475 47 5 val_475 +477 47 7 val_477 +478 47 8 val_478 +478 47 8 val_478 +479 47 9 val_479 +460 46 0 val_460 +462 46 2 val_462 +462 46 2 val_462 +463 46 3 val_463 +463 46 3 val_463 +466 46 6 val_466 +466 46 6 val_466 +466 46 6 val_466 +467 46 7 val_467 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +452 45 2 val_452 +453 45 3 val_453 +454 45 4 val_454 +454 45 4 val_454 +454 45 4 val_454 +455 45 5 val_455 +457 45 7 val_457 +458 45 8 val_458 +458 45 8 val_458 +459 45 9 val_459 +459 45 9 val_459 +443 44 3 val_443 +444 44 4 val_444 +446 44 6 val_446 +448 44 8 val_448 +449 44 9 val_449 +430 43 0 val_430 +430 43 0 val_430 +430 43 0 val_430 +431 43 1 val_431 +431 43 1 val_431 +431 43 1 val_431 +432 43 2 val_432 +435 43 5 val_435 +436 43 6 val_436 +437 43 7 val_437 +438 43 8 val_438 +438 43 8 val_438 +438 43 8 val_438 +439 43 9 val_439 +439 43 9 val_439 +421 42 1 val_421 +424 42 4 val_424 +424 42 4 val_424 +427 42 7 val_427 +429 42 9 val_429 +429 42 9 val_429 +411 41 1 val_411 +413 41 3 val_413 +413 41 3 val_413 +414 41 4 val_414 +414 41 4 val_414 +417 41 7 val_417 +417 41 7 val_417 +417 41 7 val_417 +418 41 8 val_418 +419 41 9 val_419 +400 40 0 val_400 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +402 40 2 val_402 +403 40 3 val_403 +403 40 3 val_403 +403 40 3 val_403 +404 40 4 val_404 +404 40 4 val_404 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +407 40 7 val_407 +409 40 9 val_409 +409 40 9 val_409 +409 40 9 val_409 +392 39 2 val_392 +393 39 3 val_393 +394 39 4 val_394 +395 39 5 val_395 +395 39 5 val_395 +396 39 6 val_396 +396 39 6 val_396 +396 39 6 val_396 +397 39 7 val_397 +397 39 7 val_397 +399 39 9 val_399 +399 39 9 val_399 +382 38 2 val_382 +382 38 2 val_382 +384 38 4 val_384 +384 38 4 val_384 +384 38 4 val_384 +386 38 6 val_386 +389 38 9 val_389 +373 37 3 val_373 +374 37 4 val_374 +375 37 5 val_375 +377 37 7 val_377 +378 37 8 val_378 +379 37 9 val_379 +360 36 0 val_360 +362 36 2 val_362 +364 36 4 val_364 +365 36 5 val_365 +366 36 6 val_366 +367 36 7 val_367 +367 36 7 val_367 +368 36 8 val_368 +369 36 9 val_369 +369 36 9 val_369 +369 36 9 val_369 +351 35 1 val_351 +353 35 3 val_353 +353 35 3 val_353 +356 35 6 val_356 +341 34 1 val_341 +342 34 2 val_342 +342 34 2 val_342 +344 34 4 val_344 +344 34 4 val_344 +345 34 5 val_345 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +331 33 1 val_331 +331 33 1 val_331 +332 33 2 val_332 +333 33 3 val_333 +333 33 3 val_333 +335 33 5 val_335 +336 33 6 val_336 +338 33 8 val_338 +339 33 9 val_339 +321 32 1 val_321 +321 32 1 val_321 +322 32 2 val_322 +322 32 2 val_322 +323 32 3 val_323 +325 32 5 val_325 +325 32 5 val_325 +327 32 7 val_327 +327 32 7 val_327 +327 32 7 val_327 +310 31 0 val_310 +311 31 1 val_311 +311 31 1 val_311 +311 31 1 val_311 +315 31 5 val_315 +316 31 6 val_316 +316 31 6 val_316 +316 31 6 val_316 +317 31 7 val_317 +317 31 7 val_317 +318 31 8 val_318 +318 31 8 val_318 +318 31 8 val_318 +302 30 2 val_302 +305 30 5 val_305 +306 30 6 val_306 +307 30 7 val_307 +307 30 7 val_307 +308 30 8 val_308 +309 30 9 val_309 +309 30 9 val_309 +291 29 1 val_291 +292 29 2 val_292 +296 29 6 val_296 +298 29 8 val_298 +298 29 8 val_298 +298 29 8 val_298 +280 28 0 val_280 +280 28 0 val_280 +281 28 1 val_281 +281 28 1 val_281 +282 28 2 val_282 +282 28 2 val_282 +283 28 3 val_283 +284 28 4 val_284 +285 28 5 val_285 +286 28 6 val_286 +287 28 7 val_287 +288 28 8 val_288 +288 28 8 val_288 +289 28 9 val_289 +272 27 2 val_272 +272 27 2 val_272 +273 27 3 val_273 +273 27 3 val_273 +273 27 3 val_273 +274 27 4 val_274 +275 27 5 val_275 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +278 27 8 val_278 +278 27 8 val_278 +260 26 0 val_260 +262 26 2 val_262 +263 26 3 val_263 +265 26 5 val_265 +265 26 5 val_265 +266 26 6 val_266 +252 25 2 val_252 +255 25 5 val_255 +255 25 5 val_255 +256 25 6 val_256 +256 25 6 val_256 +257 25 7 val_257 +258 25 8 val_258 +241 24 1 val_241 +242 24 2 val_242 +242 24 2 val_242 +244 24 4 val_244 +247 24 7 val_247 +248 24 8 val_248 +249 24 9 val_249 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +233 23 3 val_233 +233 23 3 val_233 +235 23 5 val_235 +237 23 7 val_237 +237 23 7 val_237 +238 23 8 val_238 +238 23 8 val_238 +239 23 9 val_239 +239 23 9 val_239 +221 22 1 val_221 +221 22 1 val_221 +222 22 2 val_222 +223 22 3 val_223 +223 22 3 val_223 +224 22 4 val_224 +224 22 4 val_224 +226 22 6 val_226 +228 22 8 val_228 +229 22 9 val_229 +229 22 9 val_229 +213 21 3 val_213 +213 21 3 val_213 +214 21 4 val_214 +216 21 6 val_216 +216 21 6 val_216 +217 21 7 val_217 +217 21 7 val_217 +218 21 8 val_218 +219 21 9 val_219 +219 21 9 val_219 +200 20 0 val_200 +200 20 0 val_200 +201 20 1 val_201 +202 20 2 val_202 +203 20 3 val_203 +203 20 3 val_203 +205 20 5 val_205 +205 20 5 val_205 +207 20 7 val_207 +207 20 7 val_207 +208 20 8 val_208 +208 20 8 val_208 +208 20 8 val_208 +209 20 9 val_209 +209 20 9 val_209 +190 19 0 val_190 +191 19 1 val_191 +191 19 1 val_191 +192 19 2 val_192 +193 19 3 val_193 +193 19 3 val_193 +193 19 3 val_193 +194 19 4 val_194 +195 19 5 val_195 +195 19 5 val_195 +196 19 6 val_196 +197 19 7 val_197 +197 19 7 val_197 +199 19 9 val_199 +199 19 9 val_199 +199 19 9 val_199 +180 18 0 val_180 +181 18 1 val_181 +183 18 3 val_183 +186 18 6 val_186 +187 18 7 val_187 +187 18 7 val_187 +187 18 7 val_187 +189 18 9 val_189 +170 17 0 val_170 +172 17 2 val_172 +172 17 2 val_172 +174 17 4 val_174 +174 17 4 val_174 +175 17 5 val_175 +175 17 5 val_175 +176 17 6 val_176 +176 17 6 val_176 +177 17 7 val_177 +178 17 8 val_178 +179 17 9 val_179 +179 17 9 val_179 +160 16 0 val_160 +162 16 2 val_162 +163 16 3 val_163 +164 16 4 val_164 +164 16 4 val_164 +165 16 5 val_165 +165 16 5 val_165 +166 16 6 val_166 +167 16 7 val_167 +167 16 7 val_167 +167 16 7 val_167 +168 16 8 val_168 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +150 15 0 val_150 +152 15 2 val_152 +152 15 2 val_152 +153 15 3 val_153 +155 15 5 val_155 +156 15 6 val_156 +157 15 7 val_157 +158 15 8 val_158 +143 14 3 val_143 +145 14 5 val_145 +146 14 6 val_146 +146 14 6 val_146 +149 14 9 val_149 +149 14 9 val_149 +131 13 1 val_131 +133 13 3 val_133 +134 13 4 val_134 +134 13 4 val_134 +136 13 6 val_136 +137 13 7 val_137 +137 13 7 val_137 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +120 12 0 val_120 +120 12 0 val_120 +125 12 5 val_125 +125 12 5 val_125 +126 12 6 val_126 +128 12 8 val_128 +128 12 8 val_128 +128 12 8 val_128 +129 12 9 val_129 +129 12 9 val_129 +111 11 1 val_111 +113 11 3 val_113 +113 11 3 val_113 +114 11 4 val_114 +116 11 6 val_116 +118 11 8 val_118 +118 11 8 val_118 +119 11 9 val_119 +119 11 9 val_119 +119 11 9 val_119 +100 10 0 val_100 +100 10 0 val_100 +103 10 3 val_103 +103 10 3 val_103 +104 10 4 val_104 +104 10 4 val_104 +105 10 5 val_105 +90 9 0 val_90 +90 9 0 val_90 +90 9 0 val_90 +92 9 2 val_92 +95 9 5 val_95 +95 9 5 val_95 +96 9 6 val_96 +97 9 7 val_97 +97 9 7 val_97 +98 9 8 val_98 +98 9 8 val_98 +80 8 0 val_80 +82 8 2 val_82 +83 8 3 val_83 +83 8 3 val_83 +84 8 4 val_84 +84 8 4 val_84 +85 8 5 val_85 +86 8 6 val_86 +87 8 7 val_87 +70 7 0 val_70 +70 7 0 val_70 +70 7 0 val_70 +72 7 2 val_72 +72 7 2 val_72 +74 7 4 val_74 +76 7 6 val_76 +76 7 6 val_76 +77 7 7 val_77 +78 7 8 val_78 +64 6 4 val_64 +65 6 5 val_65 +66 6 6 val_66 +67 6 7 val_67 +67 6 7 val_67 +69 6 9 val_69 +51 5 1 val_51 +51 5 1 val_51 +53 5 3 val_53 +54 5 4 val_54 +57 5 7 val_57 +58 5 8 val_58 +58 5 8 val_58 +41 4 1 val_41 +42 4 2 val_42 +42 4 2 val_42 +43 4 3 val_43 +44 4 4 val_44 +47 4 7 val_47 +30 3 0 val_30 +33 3 3 val_33 +34 3 4 val_34 +35 3 5 val_35 +35 3 5 val_35 +35 3 5 val_35 +37 3 7 val_37 +37 3 7 val_37 +20 2 0 val_20 +24 2 4 val_24 +24 2 4 val_24 +26 2 6 val_26 +26 2 6 val_26 +27 2 7 val_27 +28 2 8 val_28 +10 1 0 val_10 +11 1 1 val_11 +12 1 2 val_12 +12 1 2 val_12 +15 1 5 val_15 +15 1 5 val_15 +17 1 7 val_17 +18 1 8 val_18 +18 1 8 val_18 +19 1 9 val_19 +0 0 0 val_0 +0 0 0 val_0 +0 0 0 val_0 +2 0 2 val_2 +4 0 4 val_4 +5 0 5 val_5 +5 0 5 val_5 +5 0 5 val_5 +8 0 8 val_8 +9 0 9 val_9 diff --git a/sql/hive/src/test/resources/golden/mapreduce6-0-904b34e86c266384dc261655162dde3c b/sql/hive/src/test/resources/golden/mapreduce6-0-904b34e86c266384dc261655162dde3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce6-1-d5ed2c0aafd39b76fa414194add93ffb b/sql/hive/src/test/resources/golden/mapreduce6-1-d5ed2c0aafd39b76fa414194add93ffb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce6-2-c55bb2d4c519d62331671a5d7685f2b8 b/sql/hive/src/test/resources/golden/mapreduce6-2-c55bb2d4c519d62331671a5d7685f2b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce6-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/mapreduce6-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..1ecd5ad908e74 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapreduce6-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,500 @@ +490 49 0 val_490 +491 49 1 val_491 +492 49 2 val_492 +492 49 2 val_492 +493 49 3 val_493 +494 49 4 val_494 +495 49 5 val_495 +496 49 6 val_496 +497 49 7 val_497 +498 49 8 val_498 +498 49 8 val_498 +498 49 8 val_498 +480 48 0 val_480 +480 48 0 val_480 +480 48 0 val_480 +481 48 1 val_481 +482 48 2 val_482 +483 48 3 val_483 +484 48 4 val_484 +485 48 5 val_485 +487 48 7 val_487 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +489 48 9 val_489 +470 47 0 val_470 +472 47 2 val_472 +475 47 5 val_475 +477 47 7 val_477 +478 47 8 val_478 +478 47 8 val_478 +479 47 9 val_479 +460 46 0 val_460 +462 46 2 val_462 +462 46 2 val_462 +463 46 3 val_463 +463 46 3 val_463 +466 46 6 val_466 +466 46 6 val_466 +466 46 6 val_466 +467 46 7 val_467 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +468 46 8 val_468 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +469 46 9 val_469 +452 45 2 val_452 +453 45 3 val_453 +454 45 4 val_454 +454 45 4 val_454 +454 45 4 val_454 +455 45 5 val_455 +457 45 7 val_457 +458 45 8 val_458 +458 45 8 val_458 +459 45 9 val_459 +459 45 9 val_459 +443 44 3 val_443 +444 44 4 val_444 +446 44 6 val_446 +448 44 8 val_448 +449 44 9 val_449 +430 43 0 val_430 +430 43 0 val_430 +430 43 0 val_430 +431 43 1 val_431 +431 43 1 val_431 +431 43 1 val_431 +432 43 2 val_432 +435 43 5 val_435 +436 43 6 val_436 +437 43 7 val_437 +438 43 8 val_438 +438 43 8 val_438 +438 43 8 val_438 +439 43 9 val_439 +439 43 9 val_439 +421 42 1 val_421 +424 42 4 val_424 +424 42 4 val_424 +427 42 7 val_427 +429 42 9 val_429 +429 42 9 val_429 +411 41 1 val_411 +413 41 3 val_413 +413 41 3 val_413 +414 41 4 val_414 +414 41 4 val_414 +417 41 7 val_417 +417 41 7 val_417 +417 41 7 val_417 +418 41 8 val_418 +419 41 9 val_419 +400 40 0 val_400 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +401 40 1 val_401 +402 40 2 val_402 +403 40 3 val_403 +403 40 3 val_403 +403 40 3 val_403 +404 40 4 val_404 +404 40 4 val_404 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +406 40 6 val_406 +407 40 7 val_407 +409 40 9 val_409 +409 40 9 val_409 +409 40 9 val_409 +392 39 2 val_392 +393 39 3 val_393 +394 39 4 val_394 +395 39 5 val_395 +395 39 5 val_395 +396 39 6 val_396 +396 39 6 val_396 +396 39 6 val_396 +397 39 7 val_397 +397 39 7 val_397 +399 39 9 val_399 +399 39 9 val_399 +382 38 2 val_382 +382 38 2 val_382 +384 38 4 val_384 +384 38 4 val_384 +384 38 4 val_384 +386 38 6 val_386 +389 38 9 val_389 +373 37 3 val_373 +374 37 4 val_374 +375 37 5 val_375 +377 37 7 val_377 +378 37 8 val_378 +379 37 9 val_379 +360 36 0 val_360 +362 36 2 val_362 +364 36 4 val_364 +365 36 5 val_365 +366 36 6 val_366 +367 36 7 val_367 +367 36 7 val_367 +368 36 8 val_368 +369 36 9 val_369 +369 36 9 val_369 +369 36 9 val_369 +351 35 1 val_351 +353 35 3 val_353 +353 35 3 val_353 +356 35 6 val_356 +341 34 1 val_341 +342 34 2 val_342 +342 34 2 val_342 +344 34 4 val_344 +344 34 4 val_344 +345 34 5 val_345 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +348 34 8 val_348 +331 33 1 val_331 +331 33 1 val_331 +332 33 2 val_332 +333 33 3 val_333 +333 33 3 val_333 +335 33 5 val_335 +336 33 6 val_336 +338 33 8 val_338 +339 33 9 val_339 +321 32 1 val_321 +321 32 1 val_321 +322 32 2 val_322 +322 32 2 val_322 +323 32 3 val_323 +325 32 5 val_325 +325 32 5 val_325 +327 32 7 val_327 +327 32 7 val_327 +327 32 7 val_327 +310 31 0 val_310 +311 31 1 val_311 +311 31 1 val_311 +311 31 1 val_311 +315 31 5 val_315 +316 31 6 val_316 +316 31 6 val_316 +316 31 6 val_316 +317 31 7 val_317 +317 31 7 val_317 +318 31 8 val_318 +318 31 8 val_318 +318 31 8 val_318 +302 30 2 val_302 +305 30 5 val_305 +306 30 6 val_306 +307 30 7 val_307 +307 30 7 val_307 +308 30 8 val_308 +309 30 9 val_309 +309 30 9 val_309 +291 29 1 val_291 +292 29 2 val_292 +296 29 6 val_296 +298 29 8 val_298 +298 29 8 val_298 +298 29 8 val_298 +280 28 0 val_280 +280 28 0 val_280 +281 28 1 val_281 +281 28 1 val_281 +282 28 2 val_282 +282 28 2 val_282 +283 28 3 val_283 +284 28 4 val_284 +285 28 5 val_285 +286 28 6 val_286 +287 28 7 val_287 +288 28 8 val_288 +288 28 8 val_288 +289 28 9 val_289 +272 27 2 val_272 +272 27 2 val_272 +273 27 3 val_273 +273 27 3 val_273 +273 27 3 val_273 +274 27 4 val_274 +275 27 5 val_275 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +277 27 7 val_277 +278 27 8 val_278 +278 27 8 val_278 +260 26 0 val_260 +262 26 2 val_262 +263 26 3 val_263 +265 26 5 val_265 +265 26 5 val_265 +266 26 6 val_266 +252 25 2 val_252 +255 25 5 val_255 +255 25 5 val_255 +256 25 6 val_256 +256 25 6 val_256 +257 25 7 val_257 +258 25 8 val_258 +241 24 1 val_241 +242 24 2 val_242 +242 24 2 val_242 +244 24 4 val_244 +247 24 7 val_247 +248 24 8 val_248 +249 24 9 val_249 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +230 23 0 val_230 +233 23 3 val_233 +233 23 3 val_233 +235 23 5 val_235 +237 23 7 val_237 +237 23 7 val_237 +238 23 8 val_238 +238 23 8 val_238 +239 23 9 val_239 +239 23 9 val_239 +221 22 1 val_221 +221 22 1 val_221 +222 22 2 val_222 +223 22 3 val_223 +223 22 3 val_223 +224 22 4 val_224 +224 22 4 val_224 +226 22 6 val_226 +228 22 8 val_228 +229 22 9 val_229 +229 22 9 val_229 +213 21 3 val_213 +213 21 3 val_213 +214 21 4 val_214 +216 21 6 val_216 +216 21 6 val_216 +217 21 7 val_217 +217 21 7 val_217 +218 21 8 val_218 +219 21 9 val_219 +219 21 9 val_219 +200 20 0 val_200 +200 20 0 val_200 +201 20 1 val_201 +202 20 2 val_202 +203 20 3 val_203 +203 20 3 val_203 +205 20 5 val_205 +205 20 5 val_205 +207 20 7 val_207 +207 20 7 val_207 +208 20 8 val_208 +208 20 8 val_208 +208 20 8 val_208 +209 20 9 val_209 +209 20 9 val_209 +190 19 0 val_190 +191 19 1 val_191 +191 19 1 val_191 +192 19 2 val_192 +193 19 3 val_193 +193 19 3 val_193 +193 19 3 val_193 +194 19 4 val_194 +195 19 5 val_195 +195 19 5 val_195 +196 19 6 val_196 +197 19 7 val_197 +197 19 7 val_197 +199 19 9 val_199 +199 19 9 val_199 +199 19 9 val_199 +180 18 0 val_180 +181 18 1 val_181 +183 18 3 val_183 +186 18 6 val_186 +187 18 7 val_187 +187 18 7 val_187 +187 18 7 val_187 +189 18 9 val_189 +170 17 0 val_170 +172 17 2 val_172 +172 17 2 val_172 +174 17 4 val_174 +174 17 4 val_174 +175 17 5 val_175 +175 17 5 val_175 +176 17 6 val_176 +176 17 6 val_176 +177 17 7 val_177 +178 17 8 val_178 +179 17 9 val_179 +179 17 9 val_179 +160 16 0 val_160 +162 16 2 val_162 +163 16 3 val_163 +164 16 4 val_164 +164 16 4 val_164 +165 16 5 val_165 +165 16 5 val_165 +166 16 6 val_166 +167 16 7 val_167 +167 16 7 val_167 +167 16 7 val_167 +168 16 8 val_168 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +169 16 9 val_169 +150 15 0 val_150 +152 15 2 val_152 +152 15 2 val_152 +153 15 3 val_153 +155 15 5 val_155 +156 15 6 val_156 +157 15 7 val_157 +158 15 8 val_158 +143 14 3 val_143 +145 14 5 val_145 +146 14 6 val_146 +146 14 6 val_146 +149 14 9 val_149 +149 14 9 val_149 +131 13 1 val_131 +133 13 3 val_133 +134 13 4 val_134 +134 13 4 val_134 +136 13 6 val_136 +137 13 7 val_137 +137 13 7 val_137 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +138 13 8 val_138 +120 12 0 val_120 +120 12 0 val_120 +125 12 5 val_125 +125 12 5 val_125 +126 12 6 val_126 +128 12 8 val_128 +128 12 8 val_128 +128 12 8 val_128 +129 12 9 val_129 +129 12 9 val_129 +111 11 1 val_111 +113 11 3 val_113 +113 11 3 val_113 +114 11 4 val_114 +116 11 6 val_116 +118 11 8 val_118 +118 11 8 val_118 +119 11 9 val_119 +119 11 9 val_119 +119 11 9 val_119 +100 10 0 val_100 +100 10 0 val_100 +103 10 3 val_103 +103 10 3 val_103 +104 10 4 val_104 +104 10 4 val_104 +105 10 5 val_105 +90 9 0 val_90 +90 9 0 val_90 +90 9 0 val_90 +92 9 2 val_92 +95 9 5 val_95 +95 9 5 val_95 +96 9 6 val_96 +97 9 7 val_97 +97 9 7 val_97 +98 9 8 val_98 +98 9 8 val_98 +80 8 0 val_80 +82 8 2 val_82 +83 8 3 val_83 +83 8 3 val_83 +84 8 4 val_84 +84 8 4 val_84 +85 8 5 val_85 +86 8 6 val_86 +87 8 7 val_87 +70 7 0 val_70 +70 7 0 val_70 +70 7 0 val_70 +72 7 2 val_72 +72 7 2 val_72 +74 7 4 val_74 +76 7 6 val_76 +76 7 6 val_76 +77 7 7 val_77 +78 7 8 val_78 +64 6 4 val_64 +65 6 5 val_65 +66 6 6 val_66 +67 6 7 val_67 +67 6 7 val_67 +69 6 9 val_69 +51 5 1 val_51 +51 5 1 val_51 +53 5 3 val_53 +54 5 4 val_54 +57 5 7 val_57 +58 5 8 val_58 +58 5 8 val_58 +41 4 1 val_41 +42 4 2 val_42 +42 4 2 val_42 +43 4 3 val_43 +44 4 4 val_44 +47 4 7 val_47 +30 3 0 val_30 +33 3 3 val_33 +34 3 4 val_34 +35 3 5 val_35 +35 3 5 val_35 +35 3 5 val_35 +37 3 7 val_37 +37 3 7 val_37 +20 2 0 val_20 +24 2 4 val_24 +24 2 4 val_24 +26 2 6 val_26 +26 2 6 val_26 +27 2 7 val_27 +28 2 8 val_28 +10 1 0 val_10 +11 1 1 val_11 +12 1 2 val_12 +12 1 2 val_12 +15 1 5 val_15 +15 1 5 val_15 +17 1 7 val_17 +18 1 8 val_18 +18 1 8 val_18 +19 1 9 val_19 +0 0 0 val_0 +0 0 0 val_0 +0 0 0 val_0 +2 0 2 val_2 +4 0 4 val_4 +5 0 5 val_5 +5 0 5 val_5 +5 0 5 val_5 +8 0 8 val_8 +9 0 9 val_9 diff --git a/sql/hive/src/test/resources/golden/mapreduce7-0-78c8b5bf2d2a258066786ba03696ab82 b/sql/hive/src/test/resources/golden/mapreduce7-0-78c8b5bf2d2a258066786ba03696ab82 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce7-1-8b7f1f886b749e43460052c98acd082a b/sql/hive/src/test/resources/golden/mapreduce7-1-8b7f1f886b749e43460052c98acd082a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce7-2-b57470174a24aa3861df022375754e90 b/sql/hive/src/test/resources/golden/mapreduce7-2-b57470174a24aa3861df022375754e90 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce7-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/mapreduce7-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..7fcf1a078a3da --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapreduce7-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,500 @@ +0 val_0 0 0 0 val_0 +0 val_0 0 0 0 val_0 +0 val_0 0 0 0 val_0 +10 val_10 10 1 0 val_10 +100 val_100 100 10 0 val_100 +100 val_100 100 10 0 val_100 +103 val_103 103 10 3 val_103 +103 val_103 103 10 3 val_103 +104 val_104 104 10 4 val_104 +104 val_104 104 10 4 val_104 +105 val_105 105 10 5 val_105 +11 val_11 11 1 1 val_11 +111 val_111 111 11 1 val_111 +113 val_113 113 11 3 val_113 +113 val_113 113 11 3 val_113 +114 val_114 114 11 4 val_114 +116 val_116 116 11 6 val_116 +118 val_118 118 11 8 val_118 +118 val_118 118 11 8 val_118 +119 val_119 119 11 9 val_119 +119 val_119 119 11 9 val_119 +119 val_119 119 11 9 val_119 +12 val_12 12 1 2 val_12 +12 val_12 12 1 2 val_12 +120 val_120 120 12 0 val_120 +120 val_120 120 12 0 val_120 +125 val_125 125 12 5 val_125 +125 val_125 125 12 5 val_125 +126 val_126 126 12 6 val_126 +128 val_128 128 12 8 val_128 +128 val_128 128 12 8 val_128 +128 val_128 128 12 8 val_128 +129 val_129 129 12 9 val_129 +129 val_129 129 12 9 val_129 +131 val_131 131 13 1 val_131 +133 val_133 133 13 3 val_133 +134 val_134 134 13 4 val_134 +134 val_134 134 13 4 val_134 +136 val_136 136 13 6 val_136 +137 val_137 137 13 7 val_137 +137 val_137 137 13 7 val_137 +138 val_138 138 13 8 val_138 +138 val_138 138 13 8 val_138 +138 val_138 138 13 8 val_138 +138 val_138 138 13 8 val_138 +143 val_143 143 14 3 val_143 +145 val_145 145 14 5 val_145 +146 val_146 146 14 6 val_146 +146 val_146 146 14 6 val_146 +149 val_149 149 14 9 val_149 +149 val_149 149 14 9 val_149 +15 val_15 15 1 5 val_15 +15 val_15 15 1 5 val_15 +150 val_150 150 15 0 val_150 +152 val_152 152 15 2 val_152 +152 val_152 152 15 2 val_152 +153 val_153 153 15 3 val_153 +155 val_155 155 15 5 val_155 +156 val_156 156 15 6 val_156 +157 val_157 157 15 7 val_157 +158 val_158 158 15 8 val_158 +160 val_160 160 16 0 val_160 +162 val_162 162 16 2 val_162 +163 val_163 163 16 3 val_163 +164 val_164 164 16 4 val_164 +164 val_164 164 16 4 val_164 +165 val_165 165 16 5 val_165 +165 val_165 165 16 5 val_165 +166 val_166 166 16 6 val_166 +167 val_167 167 16 7 val_167 +167 val_167 167 16 7 val_167 +167 val_167 167 16 7 val_167 +168 val_168 168 16 8 val_168 +169 val_169 169 16 9 val_169 +169 val_169 169 16 9 val_169 +169 val_169 169 16 9 val_169 +169 val_169 169 16 9 val_169 +17 val_17 17 1 7 val_17 +170 val_170 170 17 0 val_170 +172 val_172 172 17 2 val_172 +172 val_172 172 17 2 val_172 +174 val_174 174 17 4 val_174 +174 val_174 174 17 4 val_174 +175 val_175 175 17 5 val_175 +175 val_175 175 17 5 val_175 +176 val_176 176 17 6 val_176 +176 val_176 176 17 6 val_176 +177 val_177 177 17 7 val_177 +178 val_178 178 17 8 val_178 +179 val_179 179 17 9 val_179 +179 val_179 179 17 9 val_179 +18 val_18 18 1 8 val_18 +18 val_18 18 1 8 val_18 +180 val_180 180 18 0 val_180 +181 val_181 181 18 1 val_181 +183 val_183 183 18 3 val_183 +186 val_186 186 18 6 val_186 +187 val_187 187 18 7 val_187 +187 val_187 187 18 7 val_187 +187 val_187 187 18 7 val_187 +189 val_189 189 18 9 val_189 +19 val_19 19 1 9 val_19 +190 val_190 190 19 0 val_190 +191 val_191 191 19 1 val_191 +191 val_191 191 19 1 val_191 +192 val_192 192 19 2 val_192 +193 val_193 193 19 3 val_193 +193 val_193 193 19 3 val_193 +193 val_193 193 19 3 val_193 +194 val_194 194 19 4 val_194 +195 val_195 195 19 5 val_195 +195 val_195 195 19 5 val_195 +196 val_196 196 19 6 val_196 +197 val_197 197 19 7 val_197 +197 val_197 197 19 7 val_197 +199 val_199 199 19 9 val_199 +199 val_199 199 19 9 val_199 +199 val_199 199 19 9 val_199 +2 val_2 2 0 2 val_2 +20 val_20 20 2 0 val_20 +200 val_200 200 20 0 val_200 +200 val_200 200 20 0 val_200 +201 val_201 201 20 1 val_201 +202 val_202 202 20 2 val_202 +203 val_203 203 20 3 val_203 +203 val_203 203 20 3 val_203 +205 val_205 205 20 5 val_205 +205 val_205 205 20 5 val_205 +207 val_207 207 20 7 val_207 +207 val_207 207 20 7 val_207 +208 val_208 208 20 8 val_208 +208 val_208 208 20 8 val_208 +208 val_208 208 20 8 val_208 +209 val_209 209 20 9 val_209 +209 val_209 209 20 9 val_209 +213 val_213 213 21 3 val_213 +213 val_213 213 21 3 val_213 +214 val_214 214 21 4 val_214 +216 val_216 216 21 6 val_216 +216 val_216 216 21 6 val_216 +217 val_217 217 21 7 val_217 +217 val_217 217 21 7 val_217 +218 val_218 218 21 8 val_218 +219 val_219 219 21 9 val_219 +219 val_219 219 21 9 val_219 +221 val_221 221 22 1 val_221 +221 val_221 221 22 1 val_221 +222 val_222 222 22 2 val_222 +223 val_223 223 22 3 val_223 +223 val_223 223 22 3 val_223 +224 val_224 224 22 4 val_224 +224 val_224 224 22 4 val_224 +226 val_226 226 22 6 val_226 +228 val_228 228 22 8 val_228 +229 val_229 229 22 9 val_229 +229 val_229 229 22 9 val_229 +230 val_230 230 23 0 val_230 +230 val_230 230 23 0 val_230 +230 val_230 230 23 0 val_230 +230 val_230 230 23 0 val_230 +230 val_230 230 23 0 val_230 +233 val_233 233 23 3 val_233 +233 val_233 233 23 3 val_233 +235 val_235 235 23 5 val_235 +237 val_237 237 23 7 val_237 +237 val_237 237 23 7 val_237 +238 val_238 238 23 8 val_238 +238 val_238 238 23 8 val_238 +239 val_239 239 23 9 val_239 +239 val_239 239 23 9 val_239 +24 val_24 24 2 4 val_24 +24 val_24 24 2 4 val_24 +241 val_241 241 24 1 val_241 +242 val_242 242 24 2 val_242 +242 val_242 242 24 2 val_242 +244 val_244 244 24 4 val_244 +247 val_247 247 24 7 val_247 +248 val_248 248 24 8 val_248 +249 val_249 249 24 9 val_249 +252 val_252 252 25 2 val_252 +255 val_255 255 25 5 val_255 +255 val_255 255 25 5 val_255 +256 val_256 256 25 6 val_256 +256 val_256 256 25 6 val_256 +257 val_257 257 25 7 val_257 +258 val_258 258 25 8 val_258 +26 val_26 26 2 6 val_26 +26 val_26 26 2 6 val_26 +260 val_260 260 26 0 val_260 +262 val_262 262 26 2 val_262 +263 val_263 263 26 3 val_263 +265 val_265 265 26 5 val_265 +265 val_265 265 26 5 val_265 +266 val_266 266 26 6 val_266 +27 val_27 27 2 7 val_27 +272 val_272 272 27 2 val_272 +272 val_272 272 27 2 val_272 +273 val_273 273 27 3 val_273 +273 val_273 273 27 3 val_273 +273 val_273 273 27 3 val_273 +274 val_274 274 27 4 val_274 +275 val_275 275 27 5 val_275 +277 val_277 277 27 7 val_277 +277 val_277 277 27 7 val_277 +277 val_277 277 27 7 val_277 +277 val_277 277 27 7 val_277 +278 val_278 278 27 8 val_278 +278 val_278 278 27 8 val_278 +28 val_28 28 2 8 val_28 +280 val_280 280 28 0 val_280 +280 val_280 280 28 0 val_280 +281 val_281 281 28 1 val_281 +281 val_281 281 28 1 val_281 +282 val_282 282 28 2 val_282 +282 val_282 282 28 2 val_282 +283 val_283 283 28 3 val_283 +284 val_284 284 28 4 val_284 +285 val_285 285 28 5 val_285 +286 val_286 286 28 6 val_286 +287 val_287 287 28 7 val_287 +288 val_288 288 28 8 val_288 +288 val_288 288 28 8 val_288 +289 val_289 289 28 9 val_289 +291 val_291 291 29 1 val_291 +292 val_292 292 29 2 val_292 +296 val_296 296 29 6 val_296 +298 val_298 298 29 8 val_298 +298 val_298 298 29 8 val_298 +298 val_298 298 29 8 val_298 +30 val_30 30 3 0 val_30 +302 val_302 302 30 2 val_302 +305 val_305 305 30 5 val_305 +306 val_306 306 30 6 val_306 +307 val_307 307 30 7 val_307 +307 val_307 307 30 7 val_307 +308 val_308 308 30 8 val_308 +309 val_309 309 30 9 val_309 +309 val_309 309 30 9 val_309 +310 val_310 310 31 0 val_310 +311 val_311 311 31 1 val_311 +311 val_311 311 31 1 val_311 +311 val_311 311 31 1 val_311 +315 val_315 315 31 5 val_315 +316 val_316 316 31 6 val_316 +316 val_316 316 31 6 val_316 +316 val_316 316 31 6 val_316 +317 val_317 317 31 7 val_317 +317 val_317 317 31 7 val_317 +318 val_318 318 31 8 val_318 +318 val_318 318 31 8 val_318 +318 val_318 318 31 8 val_318 +321 val_321 321 32 1 val_321 +321 val_321 321 32 1 val_321 +322 val_322 322 32 2 val_322 +322 val_322 322 32 2 val_322 +323 val_323 323 32 3 val_323 +325 val_325 325 32 5 val_325 +325 val_325 325 32 5 val_325 +327 val_327 327 32 7 val_327 +327 val_327 327 32 7 val_327 +327 val_327 327 32 7 val_327 +33 val_33 33 3 3 val_33 +331 val_331 331 33 1 val_331 +331 val_331 331 33 1 val_331 +332 val_332 332 33 2 val_332 +333 val_333 333 33 3 val_333 +333 val_333 333 33 3 val_333 +335 val_335 335 33 5 val_335 +336 val_336 336 33 6 val_336 +338 val_338 338 33 8 val_338 +339 val_339 339 33 9 val_339 +34 val_34 34 3 4 val_34 +341 val_341 341 34 1 val_341 +342 val_342 342 34 2 val_342 +342 val_342 342 34 2 val_342 +344 val_344 344 34 4 val_344 +344 val_344 344 34 4 val_344 +345 val_345 345 34 5 val_345 +348 val_348 348 34 8 val_348 +348 val_348 348 34 8 val_348 +348 val_348 348 34 8 val_348 +348 val_348 348 34 8 val_348 +348 val_348 348 34 8 val_348 +35 val_35 35 3 5 val_35 +35 val_35 35 3 5 val_35 +35 val_35 35 3 5 val_35 +351 val_351 351 35 1 val_351 +353 val_353 353 35 3 val_353 +353 val_353 353 35 3 val_353 +356 val_356 356 35 6 val_356 +360 val_360 360 36 0 val_360 +362 val_362 362 36 2 val_362 +364 val_364 364 36 4 val_364 +365 val_365 365 36 5 val_365 +366 val_366 366 36 6 val_366 +367 val_367 367 36 7 val_367 +367 val_367 367 36 7 val_367 +368 val_368 368 36 8 val_368 +369 val_369 369 36 9 val_369 +369 val_369 369 36 9 val_369 +369 val_369 369 36 9 val_369 +37 val_37 37 3 7 val_37 +37 val_37 37 3 7 val_37 +373 val_373 373 37 3 val_373 +374 val_374 374 37 4 val_374 +375 val_375 375 37 5 val_375 +377 val_377 377 37 7 val_377 +378 val_378 378 37 8 val_378 +379 val_379 379 37 9 val_379 +382 val_382 382 38 2 val_382 +382 val_382 382 38 2 val_382 +384 val_384 384 38 4 val_384 +384 val_384 384 38 4 val_384 +384 val_384 384 38 4 val_384 +386 val_386 386 38 6 val_386 +389 val_389 389 38 9 val_389 +392 val_392 392 39 2 val_392 +393 val_393 393 39 3 val_393 +394 val_394 394 39 4 val_394 +395 val_395 395 39 5 val_395 +395 val_395 395 39 5 val_395 +396 val_396 396 39 6 val_396 +396 val_396 396 39 6 val_396 +396 val_396 396 39 6 val_396 +397 val_397 397 39 7 val_397 +397 val_397 397 39 7 val_397 +399 val_399 399 39 9 val_399 +399 val_399 399 39 9 val_399 +4 val_4 4 0 4 val_4 +400 val_400 400 40 0 val_400 +401 val_401 401 40 1 val_401 +401 val_401 401 40 1 val_401 +401 val_401 401 40 1 val_401 +401 val_401 401 40 1 val_401 +401 val_401 401 40 1 val_401 +402 val_402 402 40 2 val_402 +403 val_403 403 40 3 val_403 +403 val_403 403 40 3 val_403 +403 val_403 403 40 3 val_403 +404 val_404 404 40 4 val_404 +404 val_404 404 40 4 val_404 +406 val_406 406 40 6 val_406 +406 val_406 406 40 6 val_406 +406 val_406 406 40 6 val_406 +406 val_406 406 40 6 val_406 +407 val_407 407 40 7 val_407 +409 val_409 409 40 9 val_409 +409 val_409 409 40 9 val_409 +409 val_409 409 40 9 val_409 +41 val_41 41 4 1 val_41 +411 val_411 411 41 1 val_411 +413 val_413 413 41 3 val_413 +413 val_413 413 41 3 val_413 +414 val_414 414 41 4 val_414 +414 val_414 414 41 4 val_414 +417 val_417 417 41 7 val_417 +417 val_417 417 41 7 val_417 +417 val_417 417 41 7 val_417 +418 val_418 418 41 8 val_418 +419 val_419 419 41 9 val_419 +42 val_42 42 4 2 val_42 +42 val_42 42 4 2 val_42 +421 val_421 421 42 1 val_421 +424 val_424 424 42 4 val_424 +424 val_424 424 42 4 val_424 +427 val_427 427 42 7 val_427 +429 val_429 429 42 9 val_429 +429 val_429 429 42 9 val_429 +43 val_43 43 4 3 val_43 +430 val_430 430 43 0 val_430 +430 val_430 430 43 0 val_430 +430 val_430 430 43 0 val_430 +431 val_431 431 43 1 val_431 +431 val_431 431 43 1 val_431 +431 val_431 431 43 1 val_431 +432 val_432 432 43 2 val_432 +435 val_435 435 43 5 val_435 +436 val_436 436 43 6 val_436 +437 val_437 437 43 7 val_437 +438 val_438 438 43 8 val_438 +438 val_438 438 43 8 val_438 +438 val_438 438 43 8 val_438 +439 val_439 439 43 9 val_439 +439 val_439 439 43 9 val_439 +44 val_44 44 4 4 val_44 +443 val_443 443 44 3 val_443 +444 val_444 444 44 4 val_444 +446 val_446 446 44 6 val_446 +448 val_448 448 44 8 val_448 +449 val_449 449 44 9 val_449 +452 val_452 452 45 2 val_452 +453 val_453 453 45 3 val_453 +454 val_454 454 45 4 val_454 +454 val_454 454 45 4 val_454 +454 val_454 454 45 4 val_454 +455 val_455 455 45 5 val_455 +457 val_457 457 45 7 val_457 +458 val_458 458 45 8 val_458 +458 val_458 458 45 8 val_458 +459 val_459 459 45 9 val_459 +459 val_459 459 45 9 val_459 +460 val_460 460 46 0 val_460 +462 val_462 462 46 2 val_462 +462 val_462 462 46 2 val_462 +463 val_463 463 46 3 val_463 +463 val_463 463 46 3 val_463 +466 val_466 466 46 6 val_466 +466 val_466 466 46 6 val_466 +466 val_466 466 46 6 val_466 +467 val_467 467 46 7 val_467 +468 val_468 468 46 8 val_468 +468 val_468 468 46 8 val_468 +468 val_468 468 46 8 val_468 +468 val_468 468 46 8 val_468 +469 val_469 469 46 9 val_469 +469 val_469 469 46 9 val_469 +469 val_469 469 46 9 val_469 +469 val_469 469 46 9 val_469 +469 val_469 469 46 9 val_469 +47 val_47 47 4 7 val_47 +470 val_470 470 47 0 val_470 +472 val_472 472 47 2 val_472 +475 val_475 475 47 5 val_475 +477 val_477 477 47 7 val_477 +478 val_478 478 47 8 val_478 +478 val_478 478 47 8 val_478 +479 val_479 479 47 9 val_479 +480 val_480 480 48 0 val_480 +480 val_480 480 48 0 val_480 +480 val_480 480 48 0 val_480 +481 val_481 481 48 1 val_481 +482 val_482 482 48 2 val_482 +483 val_483 483 48 3 val_483 +484 val_484 484 48 4 val_484 +485 val_485 485 48 5 val_485 +487 val_487 487 48 7 val_487 +489 val_489 489 48 9 val_489 +489 val_489 489 48 9 val_489 +489 val_489 489 48 9 val_489 +489 val_489 489 48 9 val_489 +490 val_490 490 49 0 val_490 +491 val_491 491 49 1 val_491 +492 val_492 492 49 2 val_492 +492 val_492 492 49 2 val_492 +493 val_493 493 49 3 val_493 +494 val_494 494 49 4 val_494 +495 val_495 495 49 5 val_495 +496 val_496 496 49 6 val_496 +497 val_497 497 49 7 val_497 +498 val_498 498 49 8 val_498 +498 val_498 498 49 8 val_498 +498 val_498 498 49 8 val_498 +5 val_5 5 0 5 val_5 +5 val_5 5 0 5 val_5 +5 val_5 5 0 5 val_5 +51 val_51 51 5 1 val_51 +51 val_51 51 5 1 val_51 +53 val_53 53 5 3 val_53 +54 val_54 54 5 4 val_54 +57 val_57 57 5 7 val_57 +58 val_58 58 5 8 val_58 +58 val_58 58 5 8 val_58 +64 val_64 64 6 4 val_64 +65 val_65 65 6 5 val_65 +66 val_66 66 6 6 val_66 +67 val_67 67 6 7 val_67 +67 val_67 67 6 7 val_67 +69 val_69 69 6 9 val_69 +70 val_70 70 7 0 val_70 +70 val_70 70 7 0 val_70 +70 val_70 70 7 0 val_70 +72 val_72 72 7 2 val_72 +72 val_72 72 7 2 val_72 +74 val_74 74 7 4 val_74 +76 val_76 76 7 6 val_76 +76 val_76 76 7 6 val_76 +77 val_77 77 7 7 val_77 +78 val_78 78 7 8 val_78 +8 val_8 8 0 8 val_8 +80 val_80 80 8 0 val_80 +82 val_82 82 8 2 val_82 +83 val_83 83 8 3 val_83 +83 val_83 83 8 3 val_83 +84 val_84 84 8 4 val_84 +84 val_84 84 8 4 val_84 +85 val_85 85 8 5 val_85 +86 val_86 86 8 6 val_86 +87 val_87 87 8 7 val_87 +9 val_9 9 0 9 val_9 +90 val_90 90 9 0 val_90 +90 val_90 90 9 0 val_90 +90 val_90 90 9 0 val_90 +92 val_92 92 9 2 val_92 +95 val_95 95 9 5 val_95 +95 val_95 95 9 5 val_95 +96 val_96 96 9 6 val_96 +97 val_97 97 9 7 val_97 +97 val_97 97 9 7 val_97 +98 val_98 98 9 8 val_98 +98 val_98 98 9 8 val_98 diff --git a/sql/hive/src/test/resources/golden/mapreduce8-0-78c8b5bf2d2a258066786ba03696ab82 b/sql/hive/src/test/resources/golden/mapreduce8-0-78c8b5bf2d2a258066786ba03696ab82 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce8-1-301e5bdcbbcdaea60348b3c24336629b b/sql/hive/src/test/resources/golden/mapreduce8-1-301e5bdcbbcdaea60348b3c24336629b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce8-2-ec9012d7823a6b1d0e97315c275e2ad8 b/sql/hive/src/test/resources/golden/mapreduce8-2-ec9012d7823a6b1d0e97315c275e2ad8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mapreduce8-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/mapreduce8-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..7fcf1a078a3da --- /dev/null +++ b/sql/hive/src/test/resources/golden/mapreduce8-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,500 @@ +0 val_0 0 0 0 val_0 +0 val_0 0 0 0 val_0 +0 val_0 0 0 0 val_0 +10 val_10 10 1 0 val_10 +100 val_100 100 10 0 val_100 +100 val_100 100 10 0 val_100 +103 val_103 103 10 3 val_103 +103 val_103 103 10 3 val_103 +104 val_104 104 10 4 val_104 +104 val_104 104 10 4 val_104 +105 val_105 105 10 5 val_105 +11 val_11 11 1 1 val_11 +111 val_111 111 11 1 val_111 +113 val_113 113 11 3 val_113 +113 val_113 113 11 3 val_113 +114 val_114 114 11 4 val_114 +116 val_116 116 11 6 val_116 +118 val_118 118 11 8 val_118 +118 val_118 118 11 8 val_118 +119 val_119 119 11 9 val_119 +119 val_119 119 11 9 val_119 +119 val_119 119 11 9 val_119 +12 val_12 12 1 2 val_12 +12 val_12 12 1 2 val_12 +120 val_120 120 12 0 val_120 +120 val_120 120 12 0 val_120 +125 val_125 125 12 5 val_125 +125 val_125 125 12 5 val_125 +126 val_126 126 12 6 val_126 +128 val_128 128 12 8 val_128 +128 val_128 128 12 8 val_128 +128 val_128 128 12 8 val_128 +129 val_129 129 12 9 val_129 +129 val_129 129 12 9 val_129 +131 val_131 131 13 1 val_131 +133 val_133 133 13 3 val_133 +134 val_134 134 13 4 val_134 +134 val_134 134 13 4 val_134 +136 val_136 136 13 6 val_136 +137 val_137 137 13 7 val_137 +137 val_137 137 13 7 val_137 +138 val_138 138 13 8 val_138 +138 val_138 138 13 8 val_138 +138 val_138 138 13 8 val_138 +138 val_138 138 13 8 val_138 +143 val_143 143 14 3 val_143 +145 val_145 145 14 5 val_145 +146 val_146 146 14 6 val_146 +146 val_146 146 14 6 val_146 +149 val_149 149 14 9 val_149 +149 val_149 149 14 9 val_149 +15 val_15 15 1 5 val_15 +15 val_15 15 1 5 val_15 +150 val_150 150 15 0 val_150 +152 val_152 152 15 2 val_152 +152 val_152 152 15 2 val_152 +153 val_153 153 15 3 val_153 +155 val_155 155 15 5 val_155 +156 val_156 156 15 6 val_156 +157 val_157 157 15 7 val_157 +158 val_158 158 15 8 val_158 +160 val_160 160 16 0 val_160 +162 val_162 162 16 2 val_162 +163 val_163 163 16 3 val_163 +164 val_164 164 16 4 val_164 +164 val_164 164 16 4 val_164 +165 val_165 165 16 5 val_165 +165 val_165 165 16 5 val_165 +166 val_166 166 16 6 val_166 +167 val_167 167 16 7 val_167 +167 val_167 167 16 7 val_167 +167 val_167 167 16 7 val_167 +168 val_168 168 16 8 val_168 +169 val_169 169 16 9 val_169 +169 val_169 169 16 9 val_169 +169 val_169 169 16 9 val_169 +169 val_169 169 16 9 val_169 +17 val_17 17 1 7 val_17 +170 val_170 170 17 0 val_170 +172 val_172 172 17 2 val_172 +172 val_172 172 17 2 val_172 +174 val_174 174 17 4 val_174 +174 val_174 174 17 4 val_174 +175 val_175 175 17 5 val_175 +175 val_175 175 17 5 val_175 +176 val_176 176 17 6 val_176 +176 val_176 176 17 6 val_176 +177 val_177 177 17 7 val_177 +178 val_178 178 17 8 val_178 +179 val_179 179 17 9 val_179 +179 val_179 179 17 9 val_179 +18 val_18 18 1 8 val_18 +18 val_18 18 1 8 val_18 +180 val_180 180 18 0 val_180 +181 val_181 181 18 1 val_181 +183 val_183 183 18 3 val_183 +186 val_186 186 18 6 val_186 +187 val_187 187 18 7 val_187 +187 val_187 187 18 7 val_187 +187 val_187 187 18 7 val_187 +189 val_189 189 18 9 val_189 +19 val_19 19 1 9 val_19 +190 val_190 190 19 0 val_190 +191 val_191 191 19 1 val_191 +191 val_191 191 19 1 val_191 +192 val_192 192 19 2 val_192 +193 val_193 193 19 3 val_193 +193 val_193 193 19 3 val_193 +193 val_193 193 19 3 val_193 +194 val_194 194 19 4 val_194 +195 val_195 195 19 5 val_195 +195 val_195 195 19 5 val_195 +196 val_196 196 19 6 val_196 +197 val_197 197 19 7 val_197 +197 val_197 197 19 7 val_197 +199 val_199 199 19 9 val_199 +199 val_199 199 19 9 val_199 +199 val_199 199 19 9 val_199 +2 val_2 2 0 2 val_2 +20 val_20 20 2 0 val_20 +200 val_200 200 20 0 val_200 +200 val_200 200 20 0 val_200 +201 val_201 201 20 1 val_201 +202 val_202 202 20 2 val_202 +203 val_203 203 20 3 val_203 +203 val_203 203 20 3 val_203 +205 val_205 205 20 5 val_205 +205 val_205 205 20 5 val_205 +207 val_207 207 20 7 val_207 +207 val_207 207 20 7 val_207 +208 val_208 208 20 8 val_208 +208 val_208 208 20 8 val_208 +208 val_208 208 20 8 val_208 +209 val_209 209 20 9 val_209 +209 val_209 209 20 9 val_209 +213 val_213 213 21 3 val_213 +213 val_213 213 21 3 val_213 +214 val_214 214 21 4 val_214 +216 val_216 216 21 6 val_216 +216 val_216 216 21 6 val_216 +217 val_217 217 21 7 val_217 +217 val_217 217 21 7 val_217 +218 val_218 218 21 8 val_218 +219 val_219 219 21 9 val_219 +219 val_219 219 21 9 val_219 +221 val_221 221 22 1 val_221 +221 val_221 221 22 1 val_221 +222 val_222 222 22 2 val_222 +223 val_223 223 22 3 val_223 +223 val_223 223 22 3 val_223 +224 val_224 224 22 4 val_224 +224 val_224 224 22 4 val_224 +226 val_226 226 22 6 val_226 +228 val_228 228 22 8 val_228 +229 val_229 229 22 9 val_229 +229 val_229 229 22 9 val_229 +230 val_230 230 23 0 val_230 +230 val_230 230 23 0 val_230 +230 val_230 230 23 0 val_230 +230 val_230 230 23 0 val_230 +230 val_230 230 23 0 val_230 +233 val_233 233 23 3 val_233 +233 val_233 233 23 3 val_233 +235 val_235 235 23 5 val_235 +237 val_237 237 23 7 val_237 +237 val_237 237 23 7 val_237 +238 val_238 238 23 8 val_238 +238 val_238 238 23 8 val_238 +239 val_239 239 23 9 val_239 +239 val_239 239 23 9 val_239 +24 val_24 24 2 4 val_24 +24 val_24 24 2 4 val_24 +241 val_241 241 24 1 val_241 +242 val_242 242 24 2 val_242 +242 val_242 242 24 2 val_242 +244 val_244 244 24 4 val_244 +247 val_247 247 24 7 val_247 +248 val_248 248 24 8 val_248 +249 val_249 249 24 9 val_249 +252 val_252 252 25 2 val_252 +255 val_255 255 25 5 val_255 +255 val_255 255 25 5 val_255 +256 val_256 256 25 6 val_256 +256 val_256 256 25 6 val_256 +257 val_257 257 25 7 val_257 +258 val_258 258 25 8 val_258 +26 val_26 26 2 6 val_26 +26 val_26 26 2 6 val_26 +260 val_260 260 26 0 val_260 +262 val_262 262 26 2 val_262 +263 val_263 263 26 3 val_263 +265 val_265 265 26 5 val_265 +265 val_265 265 26 5 val_265 +266 val_266 266 26 6 val_266 +27 val_27 27 2 7 val_27 +272 val_272 272 27 2 val_272 +272 val_272 272 27 2 val_272 +273 val_273 273 27 3 val_273 +273 val_273 273 27 3 val_273 +273 val_273 273 27 3 val_273 +274 val_274 274 27 4 val_274 +275 val_275 275 27 5 val_275 +277 val_277 277 27 7 val_277 +277 val_277 277 27 7 val_277 +277 val_277 277 27 7 val_277 +277 val_277 277 27 7 val_277 +278 val_278 278 27 8 val_278 +278 val_278 278 27 8 val_278 +28 val_28 28 2 8 val_28 +280 val_280 280 28 0 val_280 +280 val_280 280 28 0 val_280 +281 val_281 281 28 1 val_281 +281 val_281 281 28 1 val_281 +282 val_282 282 28 2 val_282 +282 val_282 282 28 2 val_282 +283 val_283 283 28 3 val_283 +284 val_284 284 28 4 val_284 +285 val_285 285 28 5 val_285 +286 val_286 286 28 6 val_286 +287 val_287 287 28 7 val_287 +288 val_288 288 28 8 val_288 +288 val_288 288 28 8 val_288 +289 val_289 289 28 9 val_289 +291 val_291 291 29 1 val_291 +292 val_292 292 29 2 val_292 +296 val_296 296 29 6 val_296 +298 val_298 298 29 8 val_298 +298 val_298 298 29 8 val_298 +298 val_298 298 29 8 val_298 +30 val_30 30 3 0 val_30 +302 val_302 302 30 2 val_302 +305 val_305 305 30 5 val_305 +306 val_306 306 30 6 val_306 +307 val_307 307 30 7 val_307 +307 val_307 307 30 7 val_307 +308 val_308 308 30 8 val_308 +309 val_309 309 30 9 val_309 +309 val_309 309 30 9 val_309 +310 val_310 310 31 0 val_310 +311 val_311 311 31 1 val_311 +311 val_311 311 31 1 val_311 +311 val_311 311 31 1 val_311 +315 val_315 315 31 5 val_315 +316 val_316 316 31 6 val_316 +316 val_316 316 31 6 val_316 +316 val_316 316 31 6 val_316 +317 val_317 317 31 7 val_317 +317 val_317 317 31 7 val_317 +318 val_318 318 31 8 val_318 +318 val_318 318 31 8 val_318 +318 val_318 318 31 8 val_318 +321 val_321 321 32 1 val_321 +321 val_321 321 32 1 val_321 +322 val_322 322 32 2 val_322 +322 val_322 322 32 2 val_322 +323 val_323 323 32 3 val_323 +325 val_325 325 32 5 val_325 +325 val_325 325 32 5 val_325 +327 val_327 327 32 7 val_327 +327 val_327 327 32 7 val_327 +327 val_327 327 32 7 val_327 +33 val_33 33 3 3 val_33 +331 val_331 331 33 1 val_331 +331 val_331 331 33 1 val_331 +332 val_332 332 33 2 val_332 +333 val_333 333 33 3 val_333 +333 val_333 333 33 3 val_333 +335 val_335 335 33 5 val_335 +336 val_336 336 33 6 val_336 +338 val_338 338 33 8 val_338 +339 val_339 339 33 9 val_339 +34 val_34 34 3 4 val_34 +341 val_341 341 34 1 val_341 +342 val_342 342 34 2 val_342 +342 val_342 342 34 2 val_342 +344 val_344 344 34 4 val_344 +344 val_344 344 34 4 val_344 +345 val_345 345 34 5 val_345 +348 val_348 348 34 8 val_348 +348 val_348 348 34 8 val_348 +348 val_348 348 34 8 val_348 +348 val_348 348 34 8 val_348 +348 val_348 348 34 8 val_348 +35 val_35 35 3 5 val_35 +35 val_35 35 3 5 val_35 +35 val_35 35 3 5 val_35 +351 val_351 351 35 1 val_351 +353 val_353 353 35 3 val_353 +353 val_353 353 35 3 val_353 +356 val_356 356 35 6 val_356 +360 val_360 360 36 0 val_360 +362 val_362 362 36 2 val_362 +364 val_364 364 36 4 val_364 +365 val_365 365 36 5 val_365 +366 val_366 366 36 6 val_366 +367 val_367 367 36 7 val_367 +367 val_367 367 36 7 val_367 +368 val_368 368 36 8 val_368 +369 val_369 369 36 9 val_369 +369 val_369 369 36 9 val_369 +369 val_369 369 36 9 val_369 +37 val_37 37 3 7 val_37 +37 val_37 37 3 7 val_37 +373 val_373 373 37 3 val_373 +374 val_374 374 37 4 val_374 +375 val_375 375 37 5 val_375 +377 val_377 377 37 7 val_377 +378 val_378 378 37 8 val_378 +379 val_379 379 37 9 val_379 +382 val_382 382 38 2 val_382 +382 val_382 382 38 2 val_382 +384 val_384 384 38 4 val_384 +384 val_384 384 38 4 val_384 +384 val_384 384 38 4 val_384 +386 val_386 386 38 6 val_386 +389 val_389 389 38 9 val_389 +392 val_392 392 39 2 val_392 +393 val_393 393 39 3 val_393 +394 val_394 394 39 4 val_394 +395 val_395 395 39 5 val_395 +395 val_395 395 39 5 val_395 +396 val_396 396 39 6 val_396 +396 val_396 396 39 6 val_396 +396 val_396 396 39 6 val_396 +397 val_397 397 39 7 val_397 +397 val_397 397 39 7 val_397 +399 val_399 399 39 9 val_399 +399 val_399 399 39 9 val_399 +4 val_4 4 0 4 val_4 +400 val_400 400 40 0 val_400 +401 val_401 401 40 1 val_401 +401 val_401 401 40 1 val_401 +401 val_401 401 40 1 val_401 +401 val_401 401 40 1 val_401 +401 val_401 401 40 1 val_401 +402 val_402 402 40 2 val_402 +403 val_403 403 40 3 val_403 +403 val_403 403 40 3 val_403 +403 val_403 403 40 3 val_403 +404 val_404 404 40 4 val_404 +404 val_404 404 40 4 val_404 +406 val_406 406 40 6 val_406 +406 val_406 406 40 6 val_406 +406 val_406 406 40 6 val_406 +406 val_406 406 40 6 val_406 +407 val_407 407 40 7 val_407 +409 val_409 409 40 9 val_409 +409 val_409 409 40 9 val_409 +409 val_409 409 40 9 val_409 +41 val_41 41 4 1 val_41 +411 val_411 411 41 1 val_411 +413 val_413 413 41 3 val_413 +413 val_413 413 41 3 val_413 +414 val_414 414 41 4 val_414 +414 val_414 414 41 4 val_414 +417 val_417 417 41 7 val_417 +417 val_417 417 41 7 val_417 +417 val_417 417 41 7 val_417 +418 val_418 418 41 8 val_418 +419 val_419 419 41 9 val_419 +42 val_42 42 4 2 val_42 +42 val_42 42 4 2 val_42 +421 val_421 421 42 1 val_421 +424 val_424 424 42 4 val_424 +424 val_424 424 42 4 val_424 +427 val_427 427 42 7 val_427 +429 val_429 429 42 9 val_429 +429 val_429 429 42 9 val_429 +43 val_43 43 4 3 val_43 +430 val_430 430 43 0 val_430 +430 val_430 430 43 0 val_430 +430 val_430 430 43 0 val_430 +431 val_431 431 43 1 val_431 +431 val_431 431 43 1 val_431 +431 val_431 431 43 1 val_431 +432 val_432 432 43 2 val_432 +435 val_435 435 43 5 val_435 +436 val_436 436 43 6 val_436 +437 val_437 437 43 7 val_437 +438 val_438 438 43 8 val_438 +438 val_438 438 43 8 val_438 +438 val_438 438 43 8 val_438 +439 val_439 439 43 9 val_439 +439 val_439 439 43 9 val_439 +44 val_44 44 4 4 val_44 +443 val_443 443 44 3 val_443 +444 val_444 444 44 4 val_444 +446 val_446 446 44 6 val_446 +448 val_448 448 44 8 val_448 +449 val_449 449 44 9 val_449 +452 val_452 452 45 2 val_452 +453 val_453 453 45 3 val_453 +454 val_454 454 45 4 val_454 +454 val_454 454 45 4 val_454 +454 val_454 454 45 4 val_454 +455 val_455 455 45 5 val_455 +457 val_457 457 45 7 val_457 +458 val_458 458 45 8 val_458 +458 val_458 458 45 8 val_458 +459 val_459 459 45 9 val_459 +459 val_459 459 45 9 val_459 +460 val_460 460 46 0 val_460 +462 val_462 462 46 2 val_462 +462 val_462 462 46 2 val_462 +463 val_463 463 46 3 val_463 +463 val_463 463 46 3 val_463 +466 val_466 466 46 6 val_466 +466 val_466 466 46 6 val_466 +466 val_466 466 46 6 val_466 +467 val_467 467 46 7 val_467 +468 val_468 468 46 8 val_468 +468 val_468 468 46 8 val_468 +468 val_468 468 46 8 val_468 +468 val_468 468 46 8 val_468 +469 val_469 469 46 9 val_469 +469 val_469 469 46 9 val_469 +469 val_469 469 46 9 val_469 +469 val_469 469 46 9 val_469 +469 val_469 469 46 9 val_469 +47 val_47 47 4 7 val_47 +470 val_470 470 47 0 val_470 +472 val_472 472 47 2 val_472 +475 val_475 475 47 5 val_475 +477 val_477 477 47 7 val_477 +478 val_478 478 47 8 val_478 +478 val_478 478 47 8 val_478 +479 val_479 479 47 9 val_479 +480 val_480 480 48 0 val_480 +480 val_480 480 48 0 val_480 +480 val_480 480 48 0 val_480 +481 val_481 481 48 1 val_481 +482 val_482 482 48 2 val_482 +483 val_483 483 48 3 val_483 +484 val_484 484 48 4 val_484 +485 val_485 485 48 5 val_485 +487 val_487 487 48 7 val_487 +489 val_489 489 48 9 val_489 +489 val_489 489 48 9 val_489 +489 val_489 489 48 9 val_489 +489 val_489 489 48 9 val_489 +490 val_490 490 49 0 val_490 +491 val_491 491 49 1 val_491 +492 val_492 492 49 2 val_492 +492 val_492 492 49 2 val_492 +493 val_493 493 49 3 val_493 +494 val_494 494 49 4 val_494 +495 val_495 495 49 5 val_495 +496 val_496 496 49 6 val_496 +497 val_497 497 49 7 val_497 +498 val_498 498 49 8 val_498 +498 val_498 498 49 8 val_498 +498 val_498 498 49 8 val_498 +5 val_5 5 0 5 val_5 +5 val_5 5 0 5 val_5 +5 val_5 5 0 5 val_5 +51 val_51 51 5 1 val_51 +51 val_51 51 5 1 val_51 +53 val_53 53 5 3 val_53 +54 val_54 54 5 4 val_54 +57 val_57 57 5 7 val_57 +58 val_58 58 5 8 val_58 +58 val_58 58 5 8 val_58 +64 val_64 64 6 4 val_64 +65 val_65 65 6 5 val_65 +66 val_66 66 6 6 val_66 +67 val_67 67 6 7 val_67 +67 val_67 67 6 7 val_67 +69 val_69 69 6 9 val_69 +70 val_70 70 7 0 val_70 +70 val_70 70 7 0 val_70 +70 val_70 70 7 0 val_70 +72 val_72 72 7 2 val_72 +72 val_72 72 7 2 val_72 +74 val_74 74 7 4 val_74 +76 val_76 76 7 6 val_76 +76 val_76 76 7 6 val_76 +77 val_77 77 7 7 val_77 +78 val_78 78 7 8 val_78 +8 val_8 8 0 8 val_8 +80 val_80 80 8 0 val_80 +82 val_82 82 8 2 val_82 +83 val_83 83 8 3 val_83 +83 val_83 83 8 3 val_83 +84 val_84 84 8 4 val_84 +84 val_84 84 8 4 val_84 +85 val_85 85 8 5 val_85 +86 val_86 86 8 6 val_86 +87 val_87 87 8 7 val_87 +9 val_9 9 0 9 val_9 +90 val_90 90 9 0 val_90 +90 val_90 90 9 0 val_90 +90 val_90 90 9 0 val_90 +92 val_92 92 9 2 val_92 +95 val_95 95 9 5 val_95 +95 val_95 95 9 5 val_95 +96 val_96 96 9 6 val_96 +97 val_97 97 9 7 val_97 +97 val_97 97 9 7 val_97 +98 val_98 98 9 8 val_98 +98 val_98 98 9 8 val_98 diff --git a/sql/hive/src/test/resources/golden/merge1-0-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/merge1-0-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge1-0-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge1-1-2c73c923962b91afdf0004a705432550 b/sql/hive/src/test/resources/golden/merge1-1-2c73c923962b91afdf0004a705432550 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-10-49d94c94e0a08155c9e5cb6e4efc6501 b/sql/hive/src/test/resources/golden/merge1-10-49d94c94e0a08155c9e5cb6e4efc6501 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-11-dcc5d9564bb8df6bac382c82c33ccd87 b/sql/hive/src/test/resources/golden/merge1-11-dcc5d9564bb8df6bac382c82c33ccd87 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-12-2e8e4adbfb21f25e7557dd86363c7138 b/sql/hive/src/test/resources/golden/merge1-12-2e8e4adbfb21f25e7557dd86363c7138 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge1-12-2e8e4adbfb21f25e7557dd86363c7138 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge1-13-cb13a05d07f9f1ad6c43edfc8b0e9359 b/sql/hive/src/test/resources/golden/merge1-13-cb13a05d07f9f1ad6c43edfc8b0e9359 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-14-dcc5d9564bb8df6bac382c82c33ccd87 b/sql/hive/src/test/resources/golden/merge1-14-dcc5d9564bb8df6bac382c82c33ccd87 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-2-34854e1283de8e9ada3edd6bf897bc67 b/sql/hive/src/test/resources/golden/merge1-2-34854e1283de8e9ada3edd6bf897bc67 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-3-1f560722f18ef618a0343313a0cac462 b/sql/hive/src/test/resources/golden/merge1-3-1f560722f18ef618a0343313a0cac462 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-4-3277fe538b66923cd879b45371838d2b b/sql/hive/src/test/resources/golden/merge1-4-3277fe538b66923cd879b45371838d2b new file mode 100644 index 0000000000000..df07a9da29f01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge1-4-3277fe538b66923cd879b45371838d2b @@ -0,0 +1,309 @@ +0 3 +2 1 +4 1 +5 3 +8 1 +9 1 +10 1 +11 1 +12 2 +15 2 +17 1 +18 2 +19 1 +20 1 +24 2 +26 2 +27 1 +28 1 +30 1 +33 1 +34 1 +35 3 +37 2 +41 1 +42 2 +43 1 +44 1 +47 1 +51 2 +53 1 +54 1 +57 1 +58 2 +64 1 +65 1 +66 1 +67 2 +69 1 +70 3 +72 2 +74 1 +76 2 +77 1 +78 1 +80 1 +82 1 +83 2 +84 2 +85 1 +86 1 +87 1 +90 3 +92 1 +95 2 +96 1 +97 2 +98 2 +100 2 +103 2 +104 2 +105 1 +111 1 +113 2 +114 1 +116 1 +118 2 +119 3 +120 2 +125 2 +126 1 +128 3 +129 2 +131 1 +133 1 +134 2 +136 1 +137 2 +138 4 +143 1 +145 1 +146 2 +149 2 +150 1 +152 2 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 2 +165 2 +166 1 +167 3 +168 1 +169 4 +170 1 +172 2 +174 2 +175 2 +176 2 +177 1 +178 1 +179 2 +180 1 +181 1 +183 1 +186 1 +187 3 +189 1 +190 1 +191 2 +192 1 +193 3 +194 1 +195 2 +196 1 +197 2 +199 3 +200 2 +201 1 +202 1 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +214 1 +216 2 +217 2 +218 1 +219 2 +221 2 +222 1 +223 2 +224 2 +226 1 +228 1 +229 2 +230 5 +233 2 +235 1 +237 2 +238 2 +239 2 +241 1 +242 2 +244 1 +247 1 +248 1 +249 1 +252 1 +255 2 +256 2 +257 1 +258 1 +260 1 +262 1 +263 1 +265 2 +266 1 +272 2 +273 3 +274 1 +275 1 +277 4 +278 2 +280 2 +281 2 +282 2 +283 1 +284 1 +285 1 +286 1 +287 1 +288 2 +289 1 +291 1 +292 1 +296 1 +298 3 +302 1 +305 1 +306 1 +307 2 +308 1 +309 2 +310 1 +311 3 +315 1 +316 3 +317 2 +318 3 +321 2 +322 2 +323 1 +325 2 +327 3 +331 2 +332 1 +333 2 +335 1 +336 1 +338 1 +339 1 +341 1 +342 2 +344 2 +345 1 +348 5 +351 1 +353 2 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 2 +368 1 +369 3 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 2 +384 3 +386 1 +389 1 +392 1 +393 1 +394 1 +395 2 +396 3 +397 2 +399 2 +400 1 +401 5 +402 1 +403 3 +404 2 +406 4 +407 1 +409 3 +411 1 +413 2 +414 2 +417 3 +418 1 +419 1 +421 1 +424 2 +427 1 +429 2 +430 3 +431 3 +432 1 +435 1 +436 1 +437 1 +438 3 +439 2 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge1-5-2f16345a20407b01e5cc5ae26ea902b0 b/sql/hive/src/test/resources/golden/merge1-5-2f16345a20407b01e5cc5ae26ea902b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-6-1c02b26792354eae7fb53fa3cb752ac1 b/sql/hive/src/test/resources/golden/merge1-6-1c02b26792354eae7fb53fa3cb752ac1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-7-5570ef5461d4a5cd01ec91da3a474dd2 b/sql/hive/src/test/resources/golden/merge1-7-5570ef5461d4a5cd01ec91da3a474dd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-8-37bd183ad3b7ad1e8550a138f7beb88a b/sql/hive/src/test/resources/golden/merge1-8-37bd183ad3b7ad1e8550a138f7beb88a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge1-9-64678b0928c4fd054e1578458001c86 b/sql/hive/src/test/resources/golden/merge1-9-64678b0928c4fd054e1578458001c86 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-0-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/merge2-0-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge2-0-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge2-1-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/merge2-1-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge2-1-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge2-10-9f60e54bc4add2b1aff8473e2a756c79 b/sql/hive/src/test/resources/golden/merge2-10-9f60e54bc4add2b1aff8473e2a756c79 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-11-1c02b26792354eae7fb53fa3cb752ac1 b/sql/hive/src/test/resources/golden/merge2-11-1c02b26792354eae7fb53fa3cb752ac1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-12-d2a36a13f8531cde3c66d4003048416 b/sql/hive/src/test/resources/golden/merge2-12-d2a36a13f8531cde3c66d4003048416 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-13-37bd183ad3b7ad1e8550a138f7beb88a b/sql/hive/src/test/resources/golden/merge2-13-37bd183ad3b7ad1e8550a138f7beb88a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-14-64678b0928c4fd054e1578458001c86 b/sql/hive/src/test/resources/golden/merge2-14-64678b0928c4fd054e1578458001c86 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-15-aaaf38f80d7313738a51a49bd5aa14c3 b/sql/hive/src/test/resources/golden/merge2-15-aaaf38f80d7313738a51a49bd5aa14c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-16-d75f4405b860e4187882a72418ed6c83 b/sql/hive/src/test/resources/golden/merge2-16-d75f4405b860e4187882a72418ed6c83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-17-2e8e4adbfb21f25e7557dd86363c7138 b/sql/hive/src/test/resources/golden/merge2-17-2e8e4adbfb21f25e7557dd86363c7138 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge2-17-2e8e4adbfb21f25e7557dd86363c7138 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge2-18-945682265ce2c1fe7fa69aeb57b4290f b/sql/hive/src/test/resources/golden/merge2-18-945682265ce2c1fe7fa69aeb57b4290f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-19-d75f4405b860e4187882a72418ed6c83 b/sql/hive/src/test/resources/golden/merge2-19-d75f4405b860e4187882a72418ed6c83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-2-c95dc367df88c9e5cf77157f29ba2daf b/sql/hive/src/test/resources/golden/merge2-2-c95dc367df88c9e5cf77157f29ba2daf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge2-2-c95dc367df88c9e5cf77157f29ba2daf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge2-3-6e53a3ac93113f20db3a12f1dcf30e86 b/sql/hive/src/test/resources/golden/merge2-3-6e53a3ac93113f20db3a12f1dcf30e86 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge2-3-6e53a3ac93113f20db3a12f1dcf30e86 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge2-4-84967075baa3e56fff2a23f8ab9ba076 b/sql/hive/src/test/resources/golden/merge2-4-84967075baa3e56fff2a23f8ab9ba076 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge2-4-84967075baa3e56fff2a23f8ab9ba076 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge2-5-2ee5d706fe3a3bcc38b795f6e94970ea b/sql/hive/src/test/resources/golden/merge2-5-2ee5d706fe3a3bcc38b795f6e94970ea new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge2-5-2ee5d706fe3a3bcc38b795f6e94970ea @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge2-6-319e3c6b684d2abd4dfd7314a05d4307 b/sql/hive/src/test/resources/golden/merge2-6-319e3c6b684d2abd4dfd7314a05d4307 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-7-fa2f100bc67426120cb97cfc75a5fb36 b/sql/hive/src/test/resources/golden/merge2-7-fa2f100bc67426120cb97cfc75a5fb36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-8-7435e0bf03e747705b0858d5dcccfcc1 b/sql/hive/src/test/resources/golden/merge2-8-7435e0bf03e747705b0858d5dcccfcc1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge2-9-b81efaa65e1263e48278ef9062cca1dd b/sql/hive/src/test/resources/golden/merge2-9-b81efaa65e1263e48278ef9062cca1dd new file mode 100644 index 0000000000000..df07a9da29f01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge2-9-b81efaa65e1263e48278ef9062cca1dd @@ -0,0 +1,309 @@ +0 3 +2 1 +4 1 +5 3 +8 1 +9 1 +10 1 +11 1 +12 2 +15 2 +17 1 +18 2 +19 1 +20 1 +24 2 +26 2 +27 1 +28 1 +30 1 +33 1 +34 1 +35 3 +37 2 +41 1 +42 2 +43 1 +44 1 +47 1 +51 2 +53 1 +54 1 +57 1 +58 2 +64 1 +65 1 +66 1 +67 2 +69 1 +70 3 +72 2 +74 1 +76 2 +77 1 +78 1 +80 1 +82 1 +83 2 +84 2 +85 1 +86 1 +87 1 +90 3 +92 1 +95 2 +96 1 +97 2 +98 2 +100 2 +103 2 +104 2 +105 1 +111 1 +113 2 +114 1 +116 1 +118 2 +119 3 +120 2 +125 2 +126 1 +128 3 +129 2 +131 1 +133 1 +134 2 +136 1 +137 2 +138 4 +143 1 +145 1 +146 2 +149 2 +150 1 +152 2 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 2 +165 2 +166 1 +167 3 +168 1 +169 4 +170 1 +172 2 +174 2 +175 2 +176 2 +177 1 +178 1 +179 2 +180 1 +181 1 +183 1 +186 1 +187 3 +189 1 +190 1 +191 2 +192 1 +193 3 +194 1 +195 2 +196 1 +197 2 +199 3 +200 2 +201 1 +202 1 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +214 1 +216 2 +217 2 +218 1 +219 2 +221 2 +222 1 +223 2 +224 2 +226 1 +228 1 +229 2 +230 5 +233 2 +235 1 +237 2 +238 2 +239 2 +241 1 +242 2 +244 1 +247 1 +248 1 +249 1 +252 1 +255 2 +256 2 +257 1 +258 1 +260 1 +262 1 +263 1 +265 2 +266 1 +272 2 +273 3 +274 1 +275 1 +277 4 +278 2 +280 2 +281 2 +282 2 +283 1 +284 1 +285 1 +286 1 +287 1 +288 2 +289 1 +291 1 +292 1 +296 1 +298 3 +302 1 +305 1 +306 1 +307 2 +308 1 +309 2 +310 1 +311 3 +315 1 +316 3 +317 2 +318 3 +321 2 +322 2 +323 1 +325 2 +327 3 +331 2 +332 1 +333 2 +335 1 +336 1 +338 1 +339 1 +341 1 +342 2 +344 2 +345 1 +348 5 +351 1 +353 2 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 2 +368 1 +369 3 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 2 +384 3 +386 1 +389 1 +392 1 +393 1 +394 1 +395 2 +396 3 +397 2 +399 2 +400 1 +401 5 +402 1 +403 3 +404 2 +406 4 +407 1 +409 3 +411 1 +413 2 +414 2 +417 3 +418 1 +419 1 +421 1 +424 2 +427 1 +429 2 +430 3 +431 3 +432 1 +435 1 +436 1 +437 1 +438 3 +439 2 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge4-0-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/merge4-0-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-0-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/merge4-1-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/merge4-1-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-1-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/merge4-10-692a197bd688b48f762e72978f54aa32 b/sql/hive/src/test/resources/golden/merge4-10-692a197bd688b48f762e72978f54aa32 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge4-11-ca0336ac3f600cb8b4230d9904686868 b/sql/hive/src/test/resources/golden/merge4-11-ca0336ac3f600cb8b4230d9904686868 new file mode 100644 index 0000000000000..67c6db8591549 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-11-ca0336ac3f600cb8b4230d9904686868 @@ -0,0 +1,1500 @@ +238 val_238 2010-08-15 11 +86 val_86 2010-08-15 11 +311 val_311 2010-08-15 11 +27 val_27 2010-08-15 11 +165 val_165 2010-08-15 11 +409 val_409 2010-08-15 11 +255 val_255 2010-08-15 11 +278 val_278 2010-08-15 11 +98 val_98 2010-08-15 11 +484 val_484 2010-08-15 11 +265 val_265 2010-08-15 11 +193 val_193 2010-08-15 11 +401 val_401 2010-08-15 11 +150 val_150 2010-08-15 11 +273 val_273 2010-08-15 11 +224 val_224 2010-08-15 11 +369 val_369 2010-08-15 11 +66 val_66 2010-08-15 11 +128 val_128 2010-08-15 11 +213 val_213 2010-08-15 11 +146 val_146 2010-08-15 11 +406 val_406 2010-08-15 11 +429 val_429 2010-08-15 11 +374 val_374 2010-08-15 11 +152 val_152 2010-08-15 11 +469 val_469 2010-08-15 11 +145 val_145 2010-08-15 11 +495 val_495 2010-08-15 11 +37 val_37 2010-08-15 11 +327 val_327 2010-08-15 11 +281 val_281 2010-08-15 11 +277 val_277 2010-08-15 11 +209 val_209 2010-08-15 11 +15 val_15 2010-08-15 11 +82 val_82 2010-08-15 11 +403 val_403 2010-08-15 11 +166 val_166 2010-08-15 11 +417 val_417 2010-08-15 11 +430 val_430 2010-08-15 11 +252 val_252 2010-08-15 11 +292 val_292 2010-08-15 11 +219 val_219 2010-08-15 11 +287 val_287 2010-08-15 11 +153 val_153 2010-08-15 11 +193 val_193 2010-08-15 11 +338 val_338 2010-08-15 11 +446 val_446 2010-08-15 11 +459 val_459 2010-08-15 11 +394 val_394 2010-08-15 11 +237 val_237 2010-08-15 11 +482 val_482 2010-08-15 11 +174 val_174 2010-08-15 11 +413 val_413 2010-08-15 11 +494 val_494 2010-08-15 11 +207 val_207 2010-08-15 11 +199 val_199 2010-08-15 11 +466 val_466 2010-08-15 11 +208 val_208 2010-08-15 11 +174 val_174 2010-08-15 11 +399 val_399 2010-08-15 11 +396 val_396 2010-08-15 11 +247 val_247 2010-08-15 11 +417 val_417 2010-08-15 11 +489 val_489 2010-08-15 11 +162 val_162 2010-08-15 11 +377 val_377 2010-08-15 11 +397 val_397 2010-08-15 11 +309 val_309 2010-08-15 11 +365 val_365 2010-08-15 11 +266 val_266 2010-08-15 11 +439 val_439 2010-08-15 11 +342 val_342 2010-08-15 11 +367 val_367 2010-08-15 11 +325 val_325 2010-08-15 11 +167 val_167 2010-08-15 11 +195 val_195 2010-08-15 11 +475 val_475 2010-08-15 11 +17 val_17 2010-08-15 11 +113 val_113 2010-08-15 11 +155 val_155 2010-08-15 11 +203 val_203 2010-08-15 11 +339 val_339 2010-08-15 11 +0 val_0 2010-08-15 11 +455 val_455 2010-08-15 11 +128 val_128 2010-08-15 11 +311 val_311 2010-08-15 11 +316 val_316 2010-08-15 11 +57 val_57 2010-08-15 11 +302 val_302 2010-08-15 11 +205 val_205 2010-08-15 11 +149 val_149 2010-08-15 11 +438 val_438 2010-08-15 11 +345 val_345 2010-08-15 11 +129 val_129 2010-08-15 11 +170 val_170 2010-08-15 11 +20 val_20 2010-08-15 11 +489 val_489 2010-08-15 11 +157 val_157 2010-08-15 11 +378 val_378 2010-08-15 11 +221 val_221 2010-08-15 11 +92 val_92 2010-08-15 11 +111 val_111 2010-08-15 11 +47 val_47 2010-08-15 11 +72 val_72 2010-08-15 11 +4 val_4 2010-08-15 11 +280 val_280 2010-08-15 11 +35 val_35 2010-08-15 11 +427 val_427 2010-08-15 11 +277 val_277 2010-08-15 11 +208 val_208 2010-08-15 11 +356 val_356 2010-08-15 11 +399 val_399 2010-08-15 11 +169 val_169 2010-08-15 11 +382 val_382 2010-08-15 11 +498 val_498 2010-08-15 11 +125 val_125 2010-08-15 11 +386 val_386 2010-08-15 11 +437 val_437 2010-08-15 11 +469 val_469 2010-08-15 11 +192 val_192 2010-08-15 11 +286 val_286 2010-08-15 11 +187 val_187 2010-08-15 11 +176 val_176 2010-08-15 11 +54 val_54 2010-08-15 11 +459 val_459 2010-08-15 11 +51 val_51 2010-08-15 11 +138 val_138 2010-08-15 11 +103 val_103 2010-08-15 11 +239 val_239 2010-08-15 11 +213 val_213 2010-08-15 11 +216 val_216 2010-08-15 11 +430 val_430 2010-08-15 11 +278 val_278 2010-08-15 11 +176 val_176 2010-08-15 11 +289 val_289 2010-08-15 11 +221 val_221 2010-08-15 11 +65 val_65 2010-08-15 11 +318 val_318 2010-08-15 11 +332 val_332 2010-08-15 11 +311 val_311 2010-08-15 11 +275 val_275 2010-08-15 11 +137 val_137 2010-08-15 11 +241 val_241 2010-08-15 11 +83 val_83 2010-08-15 11 +333 val_333 2010-08-15 11 +180 val_180 2010-08-15 11 +284 val_284 2010-08-15 11 +12 val_12 2010-08-15 11 +230 val_230 2010-08-15 11 +181 val_181 2010-08-15 11 +67 val_67 2010-08-15 11 +260 val_260 2010-08-15 11 +404 val_404 2010-08-15 11 +384 val_384 2010-08-15 11 +489 val_489 2010-08-15 11 +353 val_353 2010-08-15 11 +373 val_373 2010-08-15 11 +272 val_272 2010-08-15 11 +138 val_138 2010-08-15 11 +217 val_217 2010-08-15 11 +84 val_84 2010-08-15 11 +348 val_348 2010-08-15 11 +466 val_466 2010-08-15 11 +58 val_58 2010-08-15 11 +8 val_8 2010-08-15 11 +411 val_411 2010-08-15 11 +230 val_230 2010-08-15 11 +208 val_208 2010-08-15 11 +348 val_348 2010-08-15 11 +24 val_24 2010-08-15 11 +463 val_463 2010-08-15 11 +431 val_431 2010-08-15 11 +179 val_179 2010-08-15 11 +172 val_172 2010-08-15 11 +42 val_42 2010-08-15 11 +129 val_129 2010-08-15 11 +158 val_158 2010-08-15 11 +119 val_119 2010-08-15 11 +496 val_496 2010-08-15 11 +0 val_0 2010-08-15 11 +322 val_322 2010-08-15 11 +197 val_197 2010-08-15 11 +468 val_468 2010-08-15 11 +393 val_393 2010-08-15 11 +454 val_454 2010-08-15 11 +100 val_100 2010-08-15 11 +298 val_298 2010-08-15 11 +199 val_199 2010-08-15 11 +191 val_191 2010-08-15 11 +418 val_418 2010-08-15 11 +96 val_96 2010-08-15 11 +26 val_26 2010-08-15 11 +165 val_165 2010-08-15 11 +327 val_327 2010-08-15 11 +230 val_230 2010-08-15 11 +205 val_205 2010-08-15 11 +120 val_120 2010-08-15 11 +131 val_131 2010-08-15 11 +51 val_51 2010-08-15 11 +404 val_404 2010-08-15 11 +43 val_43 2010-08-15 11 +436 val_436 2010-08-15 11 +156 val_156 2010-08-15 11 +469 val_469 2010-08-15 11 +468 val_468 2010-08-15 11 +308 val_308 2010-08-15 11 +95 val_95 2010-08-15 11 +196 val_196 2010-08-15 11 +288 val_288 2010-08-15 11 +481 val_481 2010-08-15 11 +457 val_457 2010-08-15 11 +98 val_98 2010-08-15 11 +282 val_282 2010-08-15 11 +197 val_197 2010-08-15 11 +187 val_187 2010-08-15 11 +318 val_318 2010-08-15 11 +318 val_318 2010-08-15 11 +409 val_409 2010-08-15 11 +470 val_470 2010-08-15 11 +137 val_137 2010-08-15 11 +369 val_369 2010-08-15 11 +316 val_316 2010-08-15 11 +169 val_169 2010-08-15 11 +413 val_413 2010-08-15 11 +85 val_85 2010-08-15 11 +77 val_77 2010-08-15 11 +0 val_0 2010-08-15 11 +490 val_490 2010-08-15 11 +87 val_87 2010-08-15 11 +364 val_364 2010-08-15 11 +179 val_179 2010-08-15 11 +118 val_118 2010-08-15 11 +134 val_134 2010-08-15 11 +395 val_395 2010-08-15 11 +282 val_282 2010-08-15 11 +138 val_138 2010-08-15 11 +238 val_238 2010-08-15 11 +419 val_419 2010-08-15 11 +15 val_15 2010-08-15 11 +118 val_118 2010-08-15 11 +72 val_72 2010-08-15 11 +90 val_90 2010-08-15 11 +307 val_307 2010-08-15 11 +19 val_19 2010-08-15 11 +435 val_435 2010-08-15 11 +10 val_10 2010-08-15 11 +277 val_277 2010-08-15 11 +273 val_273 2010-08-15 11 +306 val_306 2010-08-15 11 +224 val_224 2010-08-15 11 +309 val_309 2010-08-15 11 +389 val_389 2010-08-15 11 +327 val_327 2010-08-15 11 +242 val_242 2010-08-15 11 +369 val_369 2010-08-15 11 +392 val_392 2010-08-15 11 +272 val_272 2010-08-15 11 +331 val_331 2010-08-15 11 +401 val_401 2010-08-15 11 +242 val_242 2010-08-15 11 +452 val_452 2010-08-15 11 +177 val_177 2010-08-15 11 +226 val_226 2010-08-15 11 +5 val_5 2010-08-15 11 +497 val_497 2010-08-15 11 +402 val_402 2010-08-15 11 +396 val_396 2010-08-15 11 +317 val_317 2010-08-15 11 +395 val_395 2010-08-15 11 +58 val_58 2010-08-15 11 +35 val_35 2010-08-15 11 +336 val_336 2010-08-15 11 +95 val_95 2010-08-15 11 +11 val_11 2010-08-15 11 +168 val_168 2010-08-15 11 +34 val_34 2010-08-15 11 +229 val_229 2010-08-15 11 +233 val_233 2010-08-15 11 +143 val_143 2010-08-15 11 +472 val_472 2010-08-15 11 +322 val_322 2010-08-15 11 +498 val_498 2010-08-15 11 +160 val_160 2010-08-15 11 +195 val_195 2010-08-15 11 +42 val_42 2010-08-15 11 +321 val_321 2010-08-15 11 +430 val_430 2010-08-15 11 +119 val_119 2010-08-15 11 +489 val_489 2010-08-15 11 +458 val_458 2010-08-15 11 +78 val_78 2010-08-15 11 +76 val_76 2010-08-15 11 +41 val_41 2010-08-15 11 +223 val_223 2010-08-15 11 +492 val_492 2010-08-15 11 +149 val_149 2010-08-15 11 +449 val_449 2010-08-15 11 +218 val_218 2010-08-15 11 +228 val_228 2010-08-15 11 +138 val_138 2010-08-15 11 +453 val_453 2010-08-15 11 +30 val_30 2010-08-15 11 +209 val_209 2010-08-15 11 +64 val_64 2010-08-15 11 +468 val_468 2010-08-15 11 +76 val_76 2010-08-15 11 +74 val_74 2010-08-15 11 +342 val_342 2010-08-15 11 +69 val_69 2010-08-15 11 +230 val_230 2010-08-15 11 +33 val_33 2010-08-15 11 +368 val_368 2010-08-15 11 +103 val_103 2010-08-15 11 +296 val_296 2010-08-15 11 +113 val_113 2010-08-15 11 +216 val_216 2010-08-15 11 +367 val_367 2010-08-15 11 +344 val_344 2010-08-15 11 +167 val_167 2010-08-15 11 +274 val_274 2010-08-15 11 +219 val_219 2010-08-15 11 +239 val_239 2010-08-15 11 +485 val_485 2010-08-15 11 +116 val_116 2010-08-15 11 +223 val_223 2010-08-15 11 +256 val_256 2010-08-15 11 +263 val_263 2010-08-15 11 +70 val_70 2010-08-15 11 +487 val_487 2010-08-15 11 +480 val_480 2010-08-15 11 +401 val_401 2010-08-15 11 +288 val_288 2010-08-15 11 +191 val_191 2010-08-15 11 +5 val_5 2010-08-15 11 +244 val_244 2010-08-15 11 +438 val_438 2010-08-15 11 +128 val_128 2010-08-15 11 +467 val_467 2010-08-15 11 +432 val_432 2010-08-15 11 +202 val_202 2010-08-15 11 +316 val_316 2010-08-15 11 +229 val_229 2010-08-15 11 +469 val_469 2010-08-15 11 +463 val_463 2010-08-15 11 +280 val_280 2010-08-15 11 +2 val_2 2010-08-15 11 +35 val_35 2010-08-15 11 +283 val_283 2010-08-15 11 +331 val_331 2010-08-15 11 +235 val_235 2010-08-15 11 +80 val_80 2010-08-15 11 +44 val_44 2010-08-15 11 +193 val_193 2010-08-15 11 +321 val_321 2010-08-15 11 +335 val_335 2010-08-15 11 +104 val_104 2010-08-15 11 +466 val_466 2010-08-15 11 +366 val_366 2010-08-15 11 +175 val_175 2010-08-15 11 +403 val_403 2010-08-15 11 +483 val_483 2010-08-15 11 +53 val_53 2010-08-15 11 +105 val_105 2010-08-15 11 +257 val_257 2010-08-15 11 +406 val_406 2010-08-15 11 +409 val_409 2010-08-15 11 +190 val_190 2010-08-15 11 +406 val_406 2010-08-15 11 +401 val_401 2010-08-15 11 +114 val_114 2010-08-15 11 +258 val_258 2010-08-15 11 +90 val_90 2010-08-15 11 +203 val_203 2010-08-15 11 +262 val_262 2010-08-15 11 +348 val_348 2010-08-15 11 +424 val_424 2010-08-15 11 +12 val_12 2010-08-15 11 +396 val_396 2010-08-15 11 +201 val_201 2010-08-15 11 +217 val_217 2010-08-15 11 +164 val_164 2010-08-15 11 +431 val_431 2010-08-15 11 +454 val_454 2010-08-15 11 +478 val_478 2010-08-15 11 +298 val_298 2010-08-15 11 +125 val_125 2010-08-15 11 +431 val_431 2010-08-15 11 +164 val_164 2010-08-15 11 +424 val_424 2010-08-15 11 +187 val_187 2010-08-15 11 +382 val_382 2010-08-15 11 +5 val_5 2010-08-15 11 +70 val_70 2010-08-15 11 +397 val_397 2010-08-15 11 +480 val_480 2010-08-15 11 +291 val_291 2010-08-15 11 +24 val_24 2010-08-15 11 +351 val_351 2010-08-15 11 +255 val_255 2010-08-15 11 +104 val_104 2010-08-15 11 +70 val_70 2010-08-15 11 +163 val_163 2010-08-15 11 +438 val_438 2010-08-15 11 +119 val_119 2010-08-15 11 +414 val_414 2010-08-15 11 +200 val_200 2010-08-15 11 +491 val_491 2010-08-15 11 +237 val_237 2010-08-15 11 +439 val_439 2010-08-15 11 +360 val_360 2010-08-15 11 +248 val_248 2010-08-15 11 +479 val_479 2010-08-15 11 +305 val_305 2010-08-15 11 +417 val_417 2010-08-15 11 +199 val_199 2010-08-15 11 +444 val_444 2010-08-15 11 +120 val_120 2010-08-15 11 +429 val_429 2010-08-15 11 +169 val_169 2010-08-15 11 +443 val_443 2010-08-15 11 +323 val_323 2010-08-15 11 +325 val_325 2010-08-15 11 +277 val_277 2010-08-15 11 +230 val_230 2010-08-15 11 +478 val_478 2010-08-15 11 +178 val_178 2010-08-15 11 +468 val_468 2010-08-15 11 +310 val_310 2010-08-15 11 +317 val_317 2010-08-15 11 +333 val_333 2010-08-15 11 +493 val_493 2010-08-15 11 +460 val_460 2010-08-15 11 +207 val_207 2010-08-15 11 +249 val_249 2010-08-15 11 +265 val_265 2010-08-15 11 +480 val_480 2010-08-15 11 +83 val_83 2010-08-15 11 +136 val_136 2010-08-15 11 +353 val_353 2010-08-15 11 +172 val_172 2010-08-15 11 +214 val_214 2010-08-15 11 +462 val_462 2010-08-15 11 +233 val_233 2010-08-15 11 +406 val_406 2010-08-15 11 +133 val_133 2010-08-15 11 +175 val_175 2010-08-15 11 +189 val_189 2010-08-15 11 +454 val_454 2010-08-15 11 +375 val_375 2010-08-15 11 +401 val_401 2010-08-15 11 +421 val_421 2010-08-15 11 +407 val_407 2010-08-15 11 +384 val_384 2010-08-15 11 +256 val_256 2010-08-15 11 +26 val_26 2010-08-15 11 +134 val_134 2010-08-15 11 +67 val_67 2010-08-15 11 +384 val_384 2010-08-15 11 +379 val_379 2010-08-15 11 +18 val_18 2010-08-15 11 +462 val_462 2010-08-15 11 +492 val_492 2010-08-15 11 +100 val_100 2010-08-15 11 +298 val_298 2010-08-15 11 +9 val_9 2010-08-15 11 +341 val_341 2010-08-15 11 +498 val_498 2010-08-15 11 +146 val_146 2010-08-15 11 +458 val_458 2010-08-15 11 +362 val_362 2010-08-15 11 +186 val_186 2010-08-15 11 +285 val_285 2010-08-15 11 +348 val_348 2010-08-15 11 +167 val_167 2010-08-15 11 +18 val_18 2010-08-15 11 +273 val_273 2010-08-15 11 +183 val_183 2010-08-15 11 +281 val_281 2010-08-15 11 +344 val_344 2010-08-15 11 +97 val_97 2010-08-15 11 +469 val_469 2010-08-15 11 +315 val_315 2010-08-15 11 +84 val_84 2010-08-15 11 +28 val_28 2010-08-15 11 +37 val_37 2010-08-15 11 +448 val_448 2010-08-15 11 +152 val_152 2010-08-15 11 +348 val_348 2010-08-15 11 +307 val_307 2010-08-15 11 +194 val_194 2010-08-15 11 +414 val_414 2010-08-15 11 +477 val_477 2010-08-15 11 +222 val_222 2010-08-15 11 +126 val_126 2010-08-15 11 +90 val_90 2010-08-15 11 +169 val_169 2010-08-15 11 +403 val_403 2010-08-15 11 +400 val_400 2010-08-15 11 +200 val_200 2010-08-15 11 +97 val_97 2010-08-15 11 +238 val_238 2010-08-15 11 +86 val_86 2010-08-15 11 +311 val_311 2010-08-15 11 +27 val_27 2010-08-15 11 +165 val_165 2010-08-15 11 +409 val_409 2010-08-15 11 +255 val_255 2010-08-15 11 +278 val_278 2010-08-15 11 +98 val_98 2010-08-15 11 +484 val_484 2010-08-15 11 +265 val_265 2010-08-15 11 +193 val_193 2010-08-15 11 +401 val_401 2010-08-15 11 +150 val_150 2010-08-15 11 +273 val_273 2010-08-15 11 +224 val_224 2010-08-15 11 +369 val_369 2010-08-15 11 +66 val_66 2010-08-15 11 +128 val_128 2010-08-15 11 +213 val_213 2010-08-15 11 +146 val_146 2010-08-15 11 +406 val_406 2010-08-15 11 +429 val_429 2010-08-15 11 +374 val_374 2010-08-15 11 +152 val_152 2010-08-15 11 +469 val_469 2010-08-15 11 +145 val_145 2010-08-15 11 +495 val_495 2010-08-15 11 +37 val_37 2010-08-15 11 +327 val_327 2010-08-15 11 +281 val_281 2010-08-15 11 +277 val_277 2010-08-15 11 +209 val_209 2010-08-15 11 +15 val_15 2010-08-15 11 +82 val_82 2010-08-15 11 +403 val_403 2010-08-15 11 +166 val_166 2010-08-15 11 +417 val_417 2010-08-15 11 +430 val_430 2010-08-15 11 +252 val_252 2010-08-15 11 +292 val_292 2010-08-15 11 +219 val_219 2010-08-15 11 +287 val_287 2010-08-15 11 +153 val_153 2010-08-15 11 +193 val_193 2010-08-15 11 +338 val_338 2010-08-15 11 +446 val_446 2010-08-15 11 +459 val_459 2010-08-15 11 +394 val_394 2010-08-15 11 +237 val_237 2010-08-15 11 +482 val_482 2010-08-15 11 +174 val_174 2010-08-15 11 +413 val_413 2010-08-15 11 +494 val_494 2010-08-15 11 +207 val_207 2010-08-15 11 +199 val_199 2010-08-15 11 +466 val_466 2010-08-15 11 +208 val_208 2010-08-15 11 +174 val_174 2010-08-15 11 +399 val_399 2010-08-15 11 +396 val_396 2010-08-15 11 +247 val_247 2010-08-15 11 +417 val_417 2010-08-15 11 +489 val_489 2010-08-15 11 +162 val_162 2010-08-15 11 +377 val_377 2010-08-15 11 +397 val_397 2010-08-15 11 +309 val_309 2010-08-15 11 +365 val_365 2010-08-15 11 +266 val_266 2010-08-15 11 +439 val_439 2010-08-15 11 +342 val_342 2010-08-15 11 +367 val_367 2010-08-15 11 +325 val_325 2010-08-15 11 +167 val_167 2010-08-15 11 +195 val_195 2010-08-15 11 +475 val_475 2010-08-15 11 +17 val_17 2010-08-15 11 +113 val_113 2010-08-15 11 +155 val_155 2010-08-15 11 +203 val_203 2010-08-15 11 +339 val_339 2010-08-15 11 +0 val_0 2010-08-15 11 +455 val_455 2010-08-15 11 +128 val_128 2010-08-15 11 +311 val_311 2010-08-15 11 +316 val_316 2010-08-15 11 +57 val_57 2010-08-15 11 +302 val_302 2010-08-15 11 +205 val_205 2010-08-15 11 +149 val_149 2010-08-15 11 +438 val_438 2010-08-15 11 +345 val_345 2010-08-15 11 +129 val_129 2010-08-15 11 +170 val_170 2010-08-15 11 +20 val_20 2010-08-15 11 +489 val_489 2010-08-15 11 +157 val_157 2010-08-15 11 +378 val_378 2010-08-15 11 +221 val_221 2010-08-15 11 +92 val_92 2010-08-15 11 +111 val_111 2010-08-15 11 +47 val_47 2010-08-15 11 +72 val_72 2010-08-15 11 +4 val_4 2010-08-15 11 +280 val_280 2010-08-15 11 +35 val_35 2010-08-15 11 +427 val_427 2010-08-15 11 +277 val_277 2010-08-15 11 +208 val_208 2010-08-15 11 +356 val_356 2010-08-15 11 +399 val_399 2010-08-15 11 +169 val_169 2010-08-15 11 +382 val_382 2010-08-15 11 +498 val_498 2010-08-15 11 +125 val_125 2010-08-15 11 +386 val_386 2010-08-15 11 +437 val_437 2010-08-15 11 +469 val_469 2010-08-15 11 +192 val_192 2010-08-15 11 +286 val_286 2010-08-15 11 +187 val_187 2010-08-15 11 +176 val_176 2010-08-15 11 +54 val_54 2010-08-15 11 +459 val_459 2010-08-15 11 +51 val_51 2010-08-15 11 +138 val_138 2010-08-15 11 +103 val_103 2010-08-15 11 +239 val_239 2010-08-15 11 +213 val_213 2010-08-15 11 +216 val_216 2010-08-15 11 +430 val_430 2010-08-15 11 +278 val_278 2010-08-15 11 +176 val_176 2010-08-15 11 +289 val_289 2010-08-15 11 +221 val_221 2010-08-15 11 +65 val_65 2010-08-15 11 +318 val_318 2010-08-15 11 +332 val_332 2010-08-15 11 +311 val_311 2010-08-15 11 +275 val_275 2010-08-15 11 +137 val_137 2010-08-15 11 +241 val_241 2010-08-15 11 +83 val_83 2010-08-15 11 +333 val_333 2010-08-15 11 +180 val_180 2010-08-15 11 +284 val_284 2010-08-15 11 +12 val_12 2010-08-15 11 +230 val_230 2010-08-15 11 +181 val_181 2010-08-15 11 +67 val_67 2010-08-15 11 +260 val_260 2010-08-15 11 +404 val_404 2010-08-15 11 +384 val_384 2010-08-15 11 +489 val_489 2010-08-15 11 +353 val_353 2010-08-15 11 +373 val_373 2010-08-15 11 +272 val_272 2010-08-15 11 +138 val_138 2010-08-15 11 +217 val_217 2010-08-15 11 +84 val_84 2010-08-15 11 +348 val_348 2010-08-15 11 +466 val_466 2010-08-15 11 +58 val_58 2010-08-15 11 +8 val_8 2010-08-15 11 +411 val_411 2010-08-15 11 +230 val_230 2010-08-15 11 +208 val_208 2010-08-15 11 +348 val_348 2010-08-15 11 +24 val_24 2010-08-15 11 +463 val_463 2010-08-15 11 +431 val_431 2010-08-15 11 +179 val_179 2010-08-15 11 +172 val_172 2010-08-15 11 +42 val_42 2010-08-15 11 +129 val_129 2010-08-15 11 +158 val_158 2010-08-15 11 +119 val_119 2010-08-15 11 +496 val_496 2010-08-15 11 +0 val_0 2010-08-15 11 +322 val_322 2010-08-15 11 +197 val_197 2010-08-15 11 +468 val_468 2010-08-15 11 +393 val_393 2010-08-15 11 +454 val_454 2010-08-15 11 +100 val_100 2010-08-15 11 +298 val_298 2010-08-15 11 +199 val_199 2010-08-15 11 +191 val_191 2010-08-15 11 +418 val_418 2010-08-15 11 +96 val_96 2010-08-15 11 +26 val_26 2010-08-15 11 +165 val_165 2010-08-15 11 +327 val_327 2010-08-15 11 +230 val_230 2010-08-15 11 +205 val_205 2010-08-15 11 +120 val_120 2010-08-15 11 +131 val_131 2010-08-15 11 +51 val_51 2010-08-15 11 +404 val_404 2010-08-15 11 +43 val_43 2010-08-15 11 +436 val_436 2010-08-15 11 +156 val_156 2010-08-15 11 +469 val_469 2010-08-15 11 +468 val_468 2010-08-15 11 +308 val_308 2010-08-15 11 +95 val_95 2010-08-15 11 +196 val_196 2010-08-15 11 +288 val_288 2010-08-15 11 +481 val_481 2010-08-15 11 +457 val_457 2010-08-15 11 +98 val_98 2010-08-15 11 +282 val_282 2010-08-15 11 +197 val_197 2010-08-15 11 +187 val_187 2010-08-15 11 +318 val_318 2010-08-15 11 +318 val_318 2010-08-15 11 +409 val_409 2010-08-15 11 +470 val_470 2010-08-15 11 +137 val_137 2010-08-15 11 +369 val_369 2010-08-15 11 +316 val_316 2010-08-15 11 +169 val_169 2010-08-15 11 +413 val_413 2010-08-15 11 +85 val_85 2010-08-15 11 +77 val_77 2010-08-15 11 +0 val_0 2010-08-15 11 +490 val_490 2010-08-15 11 +87 val_87 2010-08-15 11 +364 val_364 2010-08-15 11 +179 val_179 2010-08-15 11 +118 val_118 2010-08-15 11 +134 val_134 2010-08-15 11 +395 val_395 2010-08-15 11 +282 val_282 2010-08-15 11 +138 val_138 2010-08-15 11 +238 val_238 2010-08-15 11 +419 val_419 2010-08-15 11 +15 val_15 2010-08-15 11 +118 val_118 2010-08-15 11 +72 val_72 2010-08-15 11 +90 val_90 2010-08-15 11 +307 val_307 2010-08-15 11 +19 val_19 2010-08-15 11 +435 val_435 2010-08-15 11 +10 val_10 2010-08-15 11 +277 val_277 2010-08-15 11 +273 val_273 2010-08-15 11 +306 val_306 2010-08-15 11 +224 val_224 2010-08-15 11 +309 val_309 2010-08-15 11 +389 val_389 2010-08-15 11 +327 val_327 2010-08-15 11 +242 val_242 2010-08-15 11 +369 val_369 2010-08-15 11 +392 val_392 2010-08-15 11 +272 val_272 2010-08-15 11 +331 val_331 2010-08-15 11 +401 val_401 2010-08-15 11 +242 val_242 2010-08-15 11 +452 val_452 2010-08-15 11 +177 val_177 2010-08-15 11 +226 val_226 2010-08-15 11 +5 val_5 2010-08-15 11 +497 val_497 2010-08-15 11 +402 val_402 2010-08-15 11 +396 val_396 2010-08-15 11 +317 val_317 2010-08-15 11 +395 val_395 2010-08-15 11 +58 val_58 2010-08-15 11 +35 val_35 2010-08-15 11 +336 val_336 2010-08-15 11 +95 val_95 2010-08-15 11 +11 val_11 2010-08-15 11 +168 val_168 2010-08-15 11 +34 val_34 2010-08-15 11 +229 val_229 2010-08-15 11 +233 val_233 2010-08-15 11 +143 val_143 2010-08-15 11 +472 val_472 2010-08-15 11 +322 val_322 2010-08-15 11 +498 val_498 2010-08-15 11 +160 val_160 2010-08-15 11 +195 val_195 2010-08-15 11 +42 val_42 2010-08-15 11 +321 val_321 2010-08-15 11 +430 val_430 2010-08-15 11 +119 val_119 2010-08-15 11 +489 val_489 2010-08-15 11 +458 val_458 2010-08-15 11 +78 val_78 2010-08-15 11 +76 val_76 2010-08-15 11 +41 val_41 2010-08-15 11 +223 val_223 2010-08-15 11 +492 val_492 2010-08-15 11 +149 val_149 2010-08-15 11 +449 val_449 2010-08-15 11 +218 val_218 2010-08-15 11 +228 val_228 2010-08-15 11 +138 val_138 2010-08-15 11 +453 val_453 2010-08-15 11 +30 val_30 2010-08-15 11 +209 val_209 2010-08-15 11 +64 val_64 2010-08-15 11 +468 val_468 2010-08-15 11 +76 val_76 2010-08-15 11 +74 val_74 2010-08-15 11 +342 val_342 2010-08-15 11 +69 val_69 2010-08-15 11 +230 val_230 2010-08-15 11 +33 val_33 2010-08-15 11 +368 val_368 2010-08-15 11 +103 val_103 2010-08-15 11 +296 val_296 2010-08-15 11 +113 val_113 2010-08-15 11 +216 val_216 2010-08-15 11 +367 val_367 2010-08-15 11 +344 val_344 2010-08-15 11 +167 val_167 2010-08-15 11 +274 val_274 2010-08-15 11 +219 val_219 2010-08-15 11 +239 val_239 2010-08-15 11 +485 val_485 2010-08-15 11 +116 val_116 2010-08-15 11 +223 val_223 2010-08-15 11 +256 val_256 2010-08-15 11 +263 val_263 2010-08-15 11 +70 val_70 2010-08-15 11 +487 val_487 2010-08-15 11 +480 val_480 2010-08-15 11 +401 val_401 2010-08-15 11 +288 val_288 2010-08-15 11 +191 val_191 2010-08-15 11 +5 val_5 2010-08-15 11 +244 val_244 2010-08-15 11 +438 val_438 2010-08-15 11 +128 val_128 2010-08-15 11 +467 val_467 2010-08-15 11 +432 val_432 2010-08-15 11 +202 val_202 2010-08-15 11 +316 val_316 2010-08-15 11 +229 val_229 2010-08-15 11 +469 val_469 2010-08-15 11 +463 val_463 2010-08-15 11 +280 val_280 2010-08-15 11 +2 val_2 2010-08-15 11 +35 val_35 2010-08-15 11 +283 val_283 2010-08-15 11 +331 val_331 2010-08-15 11 +235 val_235 2010-08-15 11 +80 val_80 2010-08-15 11 +44 val_44 2010-08-15 11 +193 val_193 2010-08-15 11 +321 val_321 2010-08-15 11 +335 val_335 2010-08-15 11 +104 val_104 2010-08-15 11 +466 val_466 2010-08-15 11 +366 val_366 2010-08-15 11 +175 val_175 2010-08-15 11 +403 val_403 2010-08-15 11 +483 val_483 2010-08-15 11 +53 val_53 2010-08-15 11 +105 val_105 2010-08-15 11 +257 val_257 2010-08-15 11 +406 val_406 2010-08-15 11 +409 val_409 2010-08-15 11 +190 val_190 2010-08-15 11 +406 val_406 2010-08-15 11 +401 val_401 2010-08-15 11 +114 val_114 2010-08-15 11 +258 val_258 2010-08-15 11 +90 val_90 2010-08-15 11 +203 val_203 2010-08-15 11 +262 val_262 2010-08-15 11 +348 val_348 2010-08-15 11 +424 val_424 2010-08-15 11 +12 val_12 2010-08-15 11 +396 val_396 2010-08-15 11 +201 val_201 2010-08-15 11 +217 val_217 2010-08-15 11 +164 val_164 2010-08-15 11 +431 val_431 2010-08-15 11 +454 val_454 2010-08-15 11 +478 val_478 2010-08-15 11 +298 val_298 2010-08-15 11 +125 val_125 2010-08-15 11 +431 val_431 2010-08-15 11 +164 val_164 2010-08-15 11 +424 val_424 2010-08-15 11 +187 val_187 2010-08-15 11 +382 val_382 2010-08-15 11 +5 val_5 2010-08-15 11 +70 val_70 2010-08-15 11 +397 val_397 2010-08-15 11 +480 val_480 2010-08-15 11 +291 val_291 2010-08-15 11 +24 val_24 2010-08-15 11 +351 val_351 2010-08-15 11 +255 val_255 2010-08-15 11 +104 val_104 2010-08-15 11 +70 val_70 2010-08-15 11 +163 val_163 2010-08-15 11 +438 val_438 2010-08-15 11 +119 val_119 2010-08-15 11 +414 val_414 2010-08-15 11 +200 val_200 2010-08-15 11 +491 val_491 2010-08-15 11 +237 val_237 2010-08-15 11 +439 val_439 2010-08-15 11 +360 val_360 2010-08-15 11 +248 val_248 2010-08-15 11 +479 val_479 2010-08-15 11 +305 val_305 2010-08-15 11 +417 val_417 2010-08-15 11 +199 val_199 2010-08-15 11 +444 val_444 2010-08-15 11 +120 val_120 2010-08-15 11 +429 val_429 2010-08-15 11 +169 val_169 2010-08-15 11 +443 val_443 2010-08-15 11 +323 val_323 2010-08-15 11 +325 val_325 2010-08-15 11 +277 val_277 2010-08-15 11 +230 val_230 2010-08-15 11 +478 val_478 2010-08-15 11 +178 val_178 2010-08-15 11 +468 val_468 2010-08-15 11 +310 val_310 2010-08-15 11 +317 val_317 2010-08-15 11 +333 val_333 2010-08-15 11 +493 val_493 2010-08-15 11 +460 val_460 2010-08-15 11 +207 val_207 2010-08-15 11 +249 val_249 2010-08-15 11 +265 val_265 2010-08-15 11 +480 val_480 2010-08-15 11 +83 val_83 2010-08-15 11 +136 val_136 2010-08-15 11 +353 val_353 2010-08-15 11 +172 val_172 2010-08-15 11 +214 val_214 2010-08-15 11 +462 val_462 2010-08-15 11 +233 val_233 2010-08-15 11 +406 val_406 2010-08-15 11 +133 val_133 2010-08-15 11 +175 val_175 2010-08-15 11 +189 val_189 2010-08-15 11 +454 val_454 2010-08-15 11 +375 val_375 2010-08-15 11 +401 val_401 2010-08-15 11 +421 val_421 2010-08-15 11 +407 val_407 2010-08-15 11 +384 val_384 2010-08-15 11 +256 val_256 2010-08-15 11 +26 val_26 2010-08-15 11 +134 val_134 2010-08-15 11 +67 val_67 2010-08-15 11 +384 val_384 2010-08-15 11 +379 val_379 2010-08-15 11 +18 val_18 2010-08-15 11 +462 val_462 2010-08-15 11 +492 val_492 2010-08-15 11 +100 val_100 2010-08-15 11 +298 val_298 2010-08-15 11 +9 val_9 2010-08-15 11 +341 val_341 2010-08-15 11 +498 val_498 2010-08-15 11 +146 val_146 2010-08-15 11 +458 val_458 2010-08-15 11 +362 val_362 2010-08-15 11 +186 val_186 2010-08-15 11 +285 val_285 2010-08-15 11 +348 val_348 2010-08-15 11 +167 val_167 2010-08-15 11 +18 val_18 2010-08-15 11 +273 val_273 2010-08-15 11 +183 val_183 2010-08-15 11 +281 val_281 2010-08-15 11 +344 val_344 2010-08-15 11 +97 val_97 2010-08-15 11 +469 val_469 2010-08-15 11 +315 val_315 2010-08-15 11 +84 val_84 2010-08-15 11 +28 val_28 2010-08-15 11 +37 val_37 2010-08-15 11 +448 val_448 2010-08-15 11 +152 val_152 2010-08-15 11 +348 val_348 2010-08-15 11 +307 val_307 2010-08-15 11 +194 val_194 2010-08-15 11 +414 val_414 2010-08-15 11 +477 val_477 2010-08-15 11 +222 val_222 2010-08-15 11 +126 val_126 2010-08-15 11 +90 val_90 2010-08-15 11 +169 val_169 2010-08-15 11 +403 val_403 2010-08-15 11 +400 val_400 2010-08-15 11 +200 val_200 2010-08-15 11 +97 val_97 2010-08-15 11 +238 val_238 2010-08-15 12 +86 val_86 2010-08-15 12 +311 val_311 2010-08-15 12 +27 val_27 2010-08-15 12 +165 val_165 2010-08-15 12 +409 val_409 2010-08-15 12 +255 val_255 2010-08-15 12 +278 val_278 2010-08-15 12 +98 val_98 2010-08-15 12 +484 val_484 2010-08-15 12 +265 val_265 2010-08-15 12 +193 val_193 2010-08-15 12 +401 val_401 2010-08-15 12 +150 val_150 2010-08-15 12 +273 val_273 2010-08-15 12 +224 val_224 2010-08-15 12 +369 val_369 2010-08-15 12 +66 val_66 2010-08-15 12 +128 val_128 2010-08-15 12 +213 val_213 2010-08-15 12 +146 val_146 2010-08-15 12 +406 val_406 2010-08-15 12 +429 val_429 2010-08-15 12 +374 val_374 2010-08-15 12 +152 val_152 2010-08-15 12 +469 val_469 2010-08-15 12 +145 val_145 2010-08-15 12 +495 val_495 2010-08-15 12 +37 val_37 2010-08-15 12 +327 val_327 2010-08-15 12 +281 val_281 2010-08-15 12 +277 val_277 2010-08-15 12 +209 val_209 2010-08-15 12 +15 val_15 2010-08-15 12 +82 val_82 2010-08-15 12 +403 val_403 2010-08-15 12 +166 val_166 2010-08-15 12 +417 val_417 2010-08-15 12 +430 val_430 2010-08-15 12 +252 val_252 2010-08-15 12 +292 val_292 2010-08-15 12 +219 val_219 2010-08-15 12 +287 val_287 2010-08-15 12 +153 val_153 2010-08-15 12 +193 val_193 2010-08-15 12 +338 val_338 2010-08-15 12 +446 val_446 2010-08-15 12 +459 val_459 2010-08-15 12 +394 val_394 2010-08-15 12 +237 val_237 2010-08-15 12 +482 val_482 2010-08-15 12 +174 val_174 2010-08-15 12 +413 val_413 2010-08-15 12 +494 val_494 2010-08-15 12 +207 val_207 2010-08-15 12 +199 val_199 2010-08-15 12 +466 val_466 2010-08-15 12 +208 val_208 2010-08-15 12 +174 val_174 2010-08-15 12 +399 val_399 2010-08-15 12 +396 val_396 2010-08-15 12 +247 val_247 2010-08-15 12 +417 val_417 2010-08-15 12 +489 val_489 2010-08-15 12 +162 val_162 2010-08-15 12 +377 val_377 2010-08-15 12 +397 val_397 2010-08-15 12 +309 val_309 2010-08-15 12 +365 val_365 2010-08-15 12 +266 val_266 2010-08-15 12 +439 val_439 2010-08-15 12 +342 val_342 2010-08-15 12 +367 val_367 2010-08-15 12 +325 val_325 2010-08-15 12 +167 val_167 2010-08-15 12 +195 val_195 2010-08-15 12 +475 val_475 2010-08-15 12 +17 val_17 2010-08-15 12 +113 val_113 2010-08-15 12 +155 val_155 2010-08-15 12 +203 val_203 2010-08-15 12 +339 val_339 2010-08-15 12 +0 val_0 2010-08-15 12 +455 val_455 2010-08-15 12 +128 val_128 2010-08-15 12 +311 val_311 2010-08-15 12 +316 val_316 2010-08-15 12 +57 val_57 2010-08-15 12 +302 val_302 2010-08-15 12 +205 val_205 2010-08-15 12 +149 val_149 2010-08-15 12 +438 val_438 2010-08-15 12 +345 val_345 2010-08-15 12 +129 val_129 2010-08-15 12 +170 val_170 2010-08-15 12 +20 val_20 2010-08-15 12 +489 val_489 2010-08-15 12 +157 val_157 2010-08-15 12 +378 val_378 2010-08-15 12 +221 val_221 2010-08-15 12 +92 val_92 2010-08-15 12 +111 val_111 2010-08-15 12 +47 val_47 2010-08-15 12 +72 val_72 2010-08-15 12 +4 val_4 2010-08-15 12 +280 val_280 2010-08-15 12 +35 val_35 2010-08-15 12 +427 val_427 2010-08-15 12 +277 val_277 2010-08-15 12 +208 val_208 2010-08-15 12 +356 val_356 2010-08-15 12 +399 val_399 2010-08-15 12 +169 val_169 2010-08-15 12 +382 val_382 2010-08-15 12 +498 val_498 2010-08-15 12 +125 val_125 2010-08-15 12 +386 val_386 2010-08-15 12 +437 val_437 2010-08-15 12 +469 val_469 2010-08-15 12 +192 val_192 2010-08-15 12 +286 val_286 2010-08-15 12 +187 val_187 2010-08-15 12 +176 val_176 2010-08-15 12 +54 val_54 2010-08-15 12 +459 val_459 2010-08-15 12 +51 val_51 2010-08-15 12 +138 val_138 2010-08-15 12 +103 val_103 2010-08-15 12 +239 val_239 2010-08-15 12 +213 val_213 2010-08-15 12 +216 val_216 2010-08-15 12 +430 val_430 2010-08-15 12 +278 val_278 2010-08-15 12 +176 val_176 2010-08-15 12 +289 val_289 2010-08-15 12 +221 val_221 2010-08-15 12 +65 val_65 2010-08-15 12 +318 val_318 2010-08-15 12 +332 val_332 2010-08-15 12 +311 val_311 2010-08-15 12 +275 val_275 2010-08-15 12 +137 val_137 2010-08-15 12 +241 val_241 2010-08-15 12 +83 val_83 2010-08-15 12 +333 val_333 2010-08-15 12 +180 val_180 2010-08-15 12 +284 val_284 2010-08-15 12 +12 val_12 2010-08-15 12 +230 val_230 2010-08-15 12 +181 val_181 2010-08-15 12 +67 val_67 2010-08-15 12 +260 val_260 2010-08-15 12 +404 val_404 2010-08-15 12 +384 val_384 2010-08-15 12 +489 val_489 2010-08-15 12 +353 val_353 2010-08-15 12 +373 val_373 2010-08-15 12 +272 val_272 2010-08-15 12 +138 val_138 2010-08-15 12 +217 val_217 2010-08-15 12 +84 val_84 2010-08-15 12 +348 val_348 2010-08-15 12 +466 val_466 2010-08-15 12 +58 val_58 2010-08-15 12 +8 val_8 2010-08-15 12 +411 val_411 2010-08-15 12 +230 val_230 2010-08-15 12 +208 val_208 2010-08-15 12 +348 val_348 2010-08-15 12 +24 val_24 2010-08-15 12 +463 val_463 2010-08-15 12 +431 val_431 2010-08-15 12 +179 val_179 2010-08-15 12 +172 val_172 2010-08-15 12 +42 val_42 2010-08-15 12 +129 val_129 2010-08-15 12 +158 val_158 2010-08-15 12 +119 val_119 2010-08-15 12 +496 val_496 2010-08-15 12 +0 val_0 2010-08-15 12 +322 val_322 2010-08-15 12 +197 val_197 2010-08-15 12 +468 val_468 2010-08-15 12 +393 val_393 2010-08-15 12 +454 val_454 2010-08-15 12 +100 val_100 2010-08-15 12 +298 val_298 2010-08-15 12 +199 val_199 2010-08-15 12 +191 val_191 2010-08-15 12 +418 val_418 2010-08-15 12 +96 val_96 2010-08-15 12 +26 val_26 2010-08-15 12 +165 val_165 2010-08-15 12 +327 val_327 2010-08-15 12 +230 val_230 2010-08-15 12 +205 val_205 2010-08-15 12 +120 val_120 2010-08-15 12 +131 val_131 2010-08-15 12 +51 val_51 2010-08-15 12 +404 val_404 2010-08-15 12 +43 val_43 2010-08-15 12 +436 val_436 2010-08-15 12 +156 val_156 2010-08-15 12 +469 val_469 2010-08-15 12 +468 val_468 2010-08-15 12 +308 val_308 2010-08-15 12 +95 val_95 2010-08-15 12 +196 val_196 2010-08-15 12 +288 val_288 2010-08-15 12 +481 val_481 2010-08-15 12 +457 val_457 2010-08-15 12 +98 val_98 2010-08-15 12 +282 val_282 2010-08-15 12 +197 val_197 2010-08-15 12 +187 val_187 2010-08-15 12 +318 val_318 2010-08-15 12 +318 val_318 2010-08-15 12 +409 val_409 2010-08-15 12 +470 val_470 2010-08-15 12 +137 val_137 2010-08-15 12 +369 val_369 2010-08-15 12 +316 val_316 2010-08-15 12 +169 val_169 2010-08-15 12 +413 val_413 2010-08-15 12 +85 val_85 2010-08-15 12 +77 val_77 2010-08-15 12 +0 val_0 2010-08-15 12 +490 val_490 2010-08-15 12 +87 val_87 2010-08-15 12 +364 val_364 2010-08-15 12 +179 val_179 2010-08-15 12 +118 val_118 2010-08-15 12 +134 val_134 2010-08-15 12 +395 val_395 2010-08-15 12 +282 val_282 2010-08-15 12 +138 val_138 2010-08-15 12 +238 val_238 2010-08-15 12 +419 val_419 2010-08-15 12 +15 val_15 2010-08-15 12 +118 val_118 2010-08-15 12 +72 val_72 2010-08-15 12 +90 val_90 2010-08-15 12 +307 val_307 2010-08-15 12 +19 val_19 2010-08-15 12 +435 val_435 2010-08-15 12 +10 val_10 2010-08-15 12 +277 val_277 2010-08-15 12 +273 val_273 2010-08-15 12 +306 val_306 2010-08-15 12 +224 val_224 2010-08-15 12 +309 val_309 2010-08-15 12 +389 val_389 2010-08-15 12 +327 val_327 2010-08-15 12 +242 val_242 2010-08-15 12 +369 val_369 2010-08-15 12 +392 val_392 2010-08-15 12 +272 val_272 2010-08-15 12 +331 val_331 2010-08-15 12 +401 val_401 2010-08-15 12 +242 val_242 2010-08-15 12 +452 val_452 2010-08-15 12 +177 val_177 2010-08-15 12 +226 val_226 2010-08-15 12 +5 val_5 2010-08-15 12 +497 val_497 2010-08-15 12 +402 val_402 2010-08-15 12 +396 val_396 2010-08-15 12 +317 val_317 2010-08-15 12 +395 val_395 2010-08-15 12 +58 val_58 2010-08-15 12 +35 val_35 2010-08-15 12 +336 val_336 2010-08-15 12 +95 val_95 2010-08-15 12 +11 val_11 2010-08-15 12 +168 val_168 2010-08-15 12 +34 val_34 2010-08-15 12 +229 val_229 2010-08-15 12 +233 val_233 2010-08-15 12 +143 val_143 2010-08-15 12 +472 val_472 2010-08-15 12 +322 val_322 2010-08-15 12 +498 val_498 2010-08-15 12 +160 val_160 2010-08-15 12 +195 val_195 2010-08-15 12 +42 val_42 2010-08-15 12 +321 val_321 2010-08-15 12 +430 val_430 2010-08-15 12 +119 val_119 2010-08-15 12 +489 val_489 2010-08-15 12 +458 val_458 2010-08-15 12 +78 val_78 2010-08-15 12 +76 val_76 2010-08-15 12 +41 val_41 2010-08-15 12 +223 val_223 2010-08-15 12 +492 val_492 2010-08-15 12 +149 val_149 2010-08-15 12 +449 val_449 2010-08-15 12 +218 val_218 2010-08-15 12 +228 val_228 2010-08-15 12 +138 val_138 2010-08-15 12 +453 val_453 2010-08-15 12 +30 val_30 2010-08-15 12 +209 val_209 2010-08-15 12 +64 val_64 2010-08-15 12 +468 val_468 2010-08-15 12 +76 val_76 2010-08-15 12 +74 val_74 2010-08-15 12 +342 val_342 2010-08-15 12 +69 val_69 2010-08-15 12 +230 val_230 2010-08-15 12 +33 val_33 2010-08-15 12 +368 val_368 2010-08-15 12 +103 val_103 2010-08-15 12 +296 val_296 2010-08-15 12 +113 val_113 2010-08-15 12 +216 val_216 2010-08-15 12 +367 val_367 2010-08-15 12 +344 val_344 2010-08-15 12 +167 val_167 2010-08-15 12 +274 val_274 2010-08-15 12 +219 val_219 2010-08-15 12 +239 val_239 2010-08-15 12 +485 val_485 2010-08-15 12 +116 val_116 2010-08-15 12 +223 val_223 2010-08-15 12 +256 val_256 2010-08-15 12 +263 val_263 2010-08-15 12 +70 val_70 2010-08-15 12 +487 val_487 2010-08-15 12 +480 val_480 2010-08-15 12 +401 val_401 2010-08-15 12 +288 val_288 2010-08-15 12 +191 val_191 2010-08-15 12 +5 val_5 2010-08-15 12 +244 val_244 2010-08-15 12 +438 val_438 2010-08-15 12 +128 val_128 2010-08-15 12 +467 val_467 2010-08-15 12 +432 val_432 2010-08-15 12 +202 val_202 2010-08-15 12 +316 val_316 2010-08-15 12 +229 val_229 2010-08-15 12 +469 val_469 2010-08-15 12 +463 val_463 2010-08-15 12 +280 val_280 2010-08-15 12 +2 val_2 2010-08-15 12 +35 val_35 2010-08-15 12 +283 val_283 2010-08-15 12 +331 val_331 2010-08-15 12 +235 val_235 2010-08-15 12 +80 val_80 2010-08-15 12 +44 val_44 2010-08-15 12 +193 val_193 2010-08-15 12 +321 val_321 2010-08-15 12 +335 val_335 2010-08-15 12 +104 val_104 2010-08-15 12 +466 val_466 2010-08-15 12 +366 val_366 2010-08-15 12 +175 val_175 2010-08-15 12 +403 val_403 2010-08-15 12 +483 val_483 2010-08-15 12 +53 val_53 2010-08-15 12 +105 val_105 2010-08-15 12 +257 val_257 2010-08-15 12 +406 val_406 2010-08-15 12 +409 val_409 2010-08-15 12 +190 val_190 2010-08-15 12 +406 val_406 2010-08-15 12 +401 val_401 2010-08-15 12 +114 val_114 2010-08-15 12 +258 val_258 2010-08-15 12 +90 val_90 2010-08-15 12 +203 val_203 2010-08-15 12 +262 val_262 2010-08-15 12 +348 val_348 2010-08-15 12 +424 val_424 2010-08-15 12 +12 val_12 2010-08-15 12 +396 val_396 2010-08-15 12 +201 val_201 2010-08-15 12 +217 val_217 2010-08-15 12 +164 val_164 2010-08-15 12 +431 val_431 2010-08-15 12 +454 val_454 2010-08-15 12 +478 val_478 2010-08-15 12 +298 val_298 2010-08-15 12 +125 val_125 2010-08-15 12 +431 val_431 2010-08-15 12 +164 val_164 2010-08-15 12 +424 val_424 2010-08-15 12 +187 val_187 2010-08-15 12 +382 val_382 2010-08-15 12 +5 val_5 2010-08-15 12 +70 val_70 2010-08-15 12 +397 val_397 2010-08-15 12 +480 val_480 2010-08-15 12 +291 val_291 2010-08-15 12 +24 val_24 2010-08-15 12 +351 val_351 2010-08-15 12 +255 val_255 2010-08-15 12 +104 val_104 2010-08-15 12 +70 val_70 2010-08-15 12 +163 val_163 2010-08-15 12 +438 val_438 2010-08-15 12 +119 val_119 2010-08-15 12 +414 val_414 2010-08-15 12 +200 val_200 2010-08-15 12 +491 val_491 2010-08-15 12 +237 val_237 2010-08-15 12 +439 val_439 2010-08-15 12 +360 val_360 2010-08-15 12 +248 val_248 2010-08-15 12 +479 val_479 2010-08-15 12 +305 val_305 2010-08-15 12 +417 val_417 2010-08-15 12 +199 val_199 2010-08-15 12 +444 val_444 2010-08-15 12 +120 val_120 2010-08-15 12 +429 val_429 2010-08-15 12 +169 val_169 2010-08-15 12 +443 val_443 2010-08-15 12 +323 val_323 2010-08-15 12 +325 val_325 2010-08-15 12 +277 val_277 2010-08-15 12 +230 val_230 2010-08-15 12 +478 val_478 2010-08-15 12 +178 val_178 2010-08-15 12 +468 val_468 2010-08-15 12 +310 val_310 2010-08-15 12 +317 val_317 2010-08-15 12 +333 val_333 2010-08-15 12 +493 val_493 2010-08-15 12 +460 val_460 2010-08-15 12 +207 val_207 2010-08-15 12 +249 val_249 2010-08-15 12 +265 val_265 2010-08-15 12 +480 val_480 2010-08-15 12 +83 val_83 2010-08-15 12 +136 val_136 2010-08-15 12 +353 val_353 2010-08-15 12 +172 val_172 2010-08-15 12 +214 val_214 2010-08-15 12 +462 val_462 2010-08-15 12 +233 val_233 2010-08-15 12 +406 val_406 2010-08-15 12 +133 val_133 2010-08-15 12 +175 val_175 2010-08-15 12 +189 val_189 2010-08-15 12 +454 val_454 2010-08-15 12 +375 val_375 2010-08-15 12 +401 val_401 2010-08-15 12 +421 val_421 2010-08-15 12 +407 val_407 2010-08-15 12 +384 val_384 2010-08-15 12 +256 val_256 2010-08-15 12 +26 val_26 2010-08-15 12 +134 val_134 2010-08-15 12 +67 val_67 2010-08-15 12 +384 val_384 2010-08-15 12 +379 val_379 2010-08-15 12 +18 val_18 2010-08-15 12 +462 val_462 2010-08-15 12 +492 val_492 2010-08-15 12 +100 val_100 2010-08-15 12 +298 val_298 2010-08-15 12 +9 val_9 2010-08-15 12 +341 val_341 2010-08-15 12 +498 val_498 2010-08-15 12 +146 val_146 2010-08-15 12 +458 val_458 2010-08-15 12 +362 val_362 2010-08-15 12 +186 val_186 2010-08-15 12 +285 val_285 2010-08-15 12 +348 val_348 2010-08-15 12 +167 val_167 2010-08-15 12 +18 val_18 2010-08-15 12 +273 val_273 2010-08-15 12 +183 val_183 2010-08-15 12 +281 val_281 2010-08-15 12 +344 val_344 2010-08-15 12 +97 val_97 2010-08-15 12 +469 val_469 2010-08-15 12 +315 val_315 2010-08-15 12 +84 val_84 2010-08-15 12 +28 val_28 2010-08-15 12 +37 val_37 2010-08-15 12 +448 val_448 2010-08-15 12 +152 val_152 2010-08-15 12 +348 val_348 2010-08-15 12 +307 val_307 2010-08-15 12 +194 val_194 2010-08-15 12 +414 val_414 2010-08-15 12 +477 val_477 2010-08-15 12 +222 val_222 2010-08-15 12 +126 val_126 2010-08-15 12 +90 val_90 2010-08-15 12 +169 val_169 2010-08-15 12 +403 val_403 2010-08-15 12 +400 val_400 2010-08-15 12 +200 val_200 2010-08-15 12 +97 val_97 2010-08-15 12 diff --git a/sql/hive/src/test/resources/golden/merge4-12-62541540a18d68a3cb8497a741061d11 b/sql/hive/src/test/resources/golden/merge4-12-62541540a18d68a3cb8497a741061d11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge4-13-ed1103f06609365b40e78d13c654cc71 b/sql/hive/src/test/resources/golden/merge4-13-ed1103f06609365b40e78d13c654cc71 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge4-14-ba5dbcd0527b8ddab284bc322255bfc7 b/sql/hive/src/test/resources/golden/merge4-14-ba5dbcd0527b8ddab284bc322255bfc7 new file mode 100644 index 0000000000000..30becc42d7b5a --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-14-ba5dbcd0527b8ddab284bc322255bfc7 @@ -0,0 +1,3 @@ +ds=2010-08-15/hr=11 +ds=2010-08-15/hr=12 +ds=2010-08-15/hr=file, diff --git a/sql/hive/src/test/resources/golden/merge4-15-68f50dc2ad6ff803a372bdd88dd8e19a b/sql/hive/src/test/resources/golden/merge4-15-68f50dc2ad6ff803a372bdd88dd8e19a new file mode 100644 index 0000000000000..4c867a5deff08 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-15-68f50dc2ad6ff803a372bdd88dd8e19a @@ -0,0 +1 @@ +1 1 2010-08-15 file, diff --git a/sql/hive/src/test/resources/golden/merge4-2-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/merge4-2-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-2-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/merge4-3-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/merge4-3-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-3-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/merge4-4-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/merge4-4-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-4-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/merge4-5-3d24d877366c42030f6d9a596665720d b/sql/hive/src/test/resources/golden/merge4-5-3d24d877366c42030f6d9a596665720d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge4-6-b3a76420183795720ab3a384046e5af b/sql/hive/src/test/resources/golden/merge4-6-b3a76420183795720ab3a384046e5af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge4-7-631a45828eae3f5f562d992efe4cd56d b/sql/hive/src/test/resources/golden/merge4-7-631a45828eae3f5f562d992efe4cd56d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge4-8-ca0336ac3f600cb8b4230d9904686868 b/sql/hive/src/test/resources/golden/merge4-8-ca0336ac3f600cb8b4230d9904686868 new file mode 100644 index 0000000000000..9feba1dea5fd8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge4-8-ca0336ac3f600cb8b4230d9904686868 @@ -0,0 +1,1000 @@ +238 val_238 2010-08-15 11 +86 val_86 2010-08-15 11 +311 val_311 2010-08-15 11 +27 val_27 2010-08-15 11 +165 val_165 2010-08-15 11 +409 val_409 2010-08-15 11 +255 val_255 2010-08-15 11 +278 val_278 2010-08-15 11 +98 val_98 2010-08-15 11 +484 val_484 2010-08-15 11 +265 val_265 2010-08-15 11 +193 val_193 2010-08-15 11 +401 val_401 2010-08-15 11 +150 val_150 2010-08-15 11 +273 val_273 2010-08-15 11 +224 val_224 2010-08-15 11 +369 val_369 2010-08-15 11 +66 val_66 2010-08-15 11 +128 val_128 2010-08-15 11 +213 val_213 2010-08-15 11 +146 val_146 2010-08-15 11 +406 val_406 2010-08-15 11 +429 val_429 2010-08-15 11 +374 val_374 2010-08-15 11 +152 val_152 2010-08-15 11 +469 val_469 2010-08-15 11 +145 val_145 2010-08-15 11 +495 val_495 2010-08-15 11 +37 val_37 2010-08-15 11 +327 val_327 2010-08-15 11 +281 val_281 2010-08-15 11 +277 val_277 2010-08-15 11 +209 val_209 2010-08-15 11 +15 val_15 2010-08-15 11 +82 val_82 2010-08-15 11 +403 val_403 2010-08-15 11 +166 val_166 2010-08-15 11 +417 val_417 2010-08-15 11 +430 val_430 2010-08-15 11 +252 val_252 2010-08-15 11 +292 val_292 2010-08-15 11 +219 val_219 2010-08-15 11 +287 val_287 2010-08-15 11 +153 val_153 2010-08-15 11 +193 val_193 2010-08-15 11 +338 val_338 2010-08-15 11 +446 val_446 2010-08-15 11 +459 val_459 2010-08-15 11 +394 val_394 2010-08-15 11 +237 val_237 2010-08-15 11 +482 val_482 2010-08-15 11 +174 val_174 2010-08-15 11 +413 val_413 2010-08-15 11 +494 val_494 2010-08-15 11 +207 val_207 2010-08-15 11 +199 val_199 2010-08-15 11 +466 val_466 2010-08-15 11 +208 val_208 2010-08-15 11 +174 val_174 2010-08-15 11 +399 val_399 2010-08-15 11 +396 val_396 2010-08-15 11 +247 val_247 2010-08-15 11 +417 val_417 2010-08-15 11 +489 val_489 2010-08-15 11 +162 val_162 2010-08-15 11 +377 val_377 2010-08-15 11 +397 val_397 2010-08-15 11 +309 val_309 2010-08-15 11 +365 val_365 2010-08-15 11 +266 val_266 2010-08-15 11 +439 val_439 2010-08-15 11 +342 val_342 2010-08-15 11 +367 val_367 2010-08-15 11 +325 val_325 2010-08-15 11 +167 val_167 2010-08-15 11 +195 val_195 2010-08-15 11 +475 val_475 2010-08-15 11 +17 val_17 2010-08-15 11 +113 val_113 2010-08-15 11 +155 val_155 2010-08-15 11 +203 val_203 2010-08-15 11 +339 val_339 2010-08-15 11 +0 val_0 2010-08-15 11 +455 val_455 2010-08-15 11 +128 val_128 2010-08-15 11 +311 val_311 2010-08-15 11 +316 val_316 2010-08-15 11 +57 val_57 2010-08-15 11 +302 val_302 2010-08-15 11 +205 val_205 2010-08-15 11 +149 val_149 2010-08-15 11 +438 val_438 2010-08-15 11 +345 val_345 2010-08-15 11 +129 val_129 2010-08-15 11 +170 val_170 2010-08-15 11 +20 val_20 2010-08-15 11 +489 val_489 2010-08-15 11 +157 val_157 2010-08-15 11 +378 val_378 2010-08-15 11 +221 val_221 2010-08-15 11 +92 val_92 2010-08-15 11 +111 val_111 2010-08-15 11 +47 val_47 2010-08-15 11 +72 val_72 2010-08-15 11 +4 val_4 2010-08-15 11 +280 val_280 2010-08-15 11 +35 val_35 2010-08-15 11 +427 val_427 2010-08-15 11 +277 val_277 2010-08-15 11 +208 val_208 2010-08-15 11 +356 val_356 2010-08-15 11 +399 val_399 2010-08-15 11 +169 val_169 2010-08-15 11 +382 val_382 2010-08-15 11 +498 val_498 2010-08-15 11 +125 val_125 2010-08-15 11 +386 val_386 2010-08-15 11 +437 val_437 2010-08-15 11 +469 val_469 2010-08-15 11 +192 val_192 2010-08-15 11 +286 val_286 2010-08-15 11 +187 val_187 2010-08-15 11 +176 val_176 2010-08-15 11 +54 val_54 2010-08-15 11 +459 val_459 2010-08-15 11 +51 val_51 2010-08-15 11 +138 val_138 2010-08-15 11 +103 val_103 2010-08-15 11 +239 val_239 2010-08-15 11 +213 val_213 2010-08-15 11 +216 val_216 2010-08-15 11 +430 val_430 2010-08-15 11 +278 val_278 2010-08-15 11 +176 val_176 2010-08-15 11 +289 val_289 2010-08-15 11 +221 val_221 2010-08-15 11 +65 val_65 2010-08-15 11 +318 val_318 2010-08-15 11 +332 val_332 2010-08-15 11 +311 val_311 2010-08-15 11 +275 val_275 2010-08-15 11 +137 val_137 2010-08-15 11 +241 val_241 2010-08-15 11 +83 val_83 2010-08-15 11 +333 val_333 2010-08-15 11 +180 val_180 2010-08-15 11 +284 val_284 2010-08-15 11 +12 val_12 2010-08-15 11 +230 val_230 2010-08-15 11 +181 val_181 2010-08-15 11 +67 val_67 2010-08-15 11 +260 val_260 2010-08-15 11 +404 val_404 2010-08-15 11 +384 val_384 2010-08-15 11 +489 val_489 2010-08-15 11 +353 val_353 2010-08-15 11 +373 val_373 2010-08-15 11 +272 val_272 2010-08-15 11 +138 val_138 2010-08-15 11 +217 val_217 2010-08-15 11 +84 val_84 2010-08-15 11 +348 val_348 2010-08-15 11 +466 val_466 2010-08-15 11 +58 val_58 2010-08-15 11 +8 val_8 2010-08-15 11 +411 val_411 2010-08-15 11 +230 val_230 2010-08-15 11 +208 val_208 2010-08-15 11 +348 val_348 2010-08-15 11 +24 val_24 2010-08-15 11 +463 val_463 2010-08-15 11 +431 val_431 2010-08-15 11 +179 val_179 2010-08-15 11 +172 val_172 2010-08-15 11 +42 val_42 2010-08-15 11 +129 val_129 2010-08-15 11 +158 val_158 2010-08-15 11 +119 val_119 2010-08-15 11 +496 val_496 2010-08-15 11 +0 val_0 2010-08-15 11 +322 val_322 2010-08-15 11 +197 val_197 2010-08-15 11 +468 val_468 2010-08-15 11 +393 val_393 2010-08-15 11 +454 val_454 2010-08-15 11 +100 val_100 2010-08-15 11 +298 val_298 2010-08-15 11 +199 val_199 2010-08-15 11 +191 val_191 2010-08-15 11 +418 val_418 2010-08-15 11 +96 val_96 2010-08-15 11 +26 val_26 2010-08-15 11 +165 val_165 2010-08-15 11 +327 val_327 2010-08-15 11 +230 val_230 2010-08-15 11 +205 val_205 2010-08-15 11 +120 val_120 2010-08-15 11 +131 val_131 2010-08-15 11 +51 val_51 2010-08-15 11 +404 val_404 2010-08-15 11 +43 val_43 2010-08-15 11 +436 val_436 2010-08-15 11 +156 val_156 2010-08-15 11 +469 val_469 2010-08-15 11 +468 val_468 2010-08-15 11 +308 val_308 2010-08-15 11 +95 val_95 2010-08-15 11 +196 val_196 2010-08-15 11 +288 val_288 2010-08-15 11 +481 val_481 2010-08-15 11 +457 val_457 2010-08-15 11 +98 val_98 2010-08-15 11 +282 val_282 2010-08-15 11 +197 val_197 2010-08-15 11 +187 val_187 2010-08-15 11 +318 val_318 2010-08-15 11 +318 val_318 2010-08-15 11 +409 val_409 2010-08-15 11 +470 val_470 2010-08-15 11 +137 val_137 2010-08-15 11 +369 val_369 2010-08-15 11 +316 val_316 2010-08-15 11 +169 val_169 2010-08-15 11 +413 val_413 2010-08-15 11 +85 val_85 2010-08-15 11 +77 val_77 2010-08-15 11 +0 val_0 2010-08-15 11 +490 val_490 2010-08-15 11 +87 val_87 2010-08-15 11 +364 val_364 2010-08-15 11 +179 val_179 2010-08-15 11 +118 val_118 2010-08-15 11 +134 val_134 2010-08-15 11 +395 val_395 2010-08-15 11 +282 val_282 2010-08-15 11 +138 val_138 2010-08-15 11 +238 val_238 2010-08-15 11 +419 val_419 2010-08-15 11 +15 val_15 2010-08-15 11 +118 val_118 2010-08-15 11 +72 val_72 2010-08-15 11 +90 val_90 2010-08-15 11 +307 val_307 2010-08-15 11 +19 val_19 2010-08-15 11 +435 val_435 2010-08-15 11 +10 val_10 2010-08-15 11 +277 val_277 2010-08-15 11 +273 val_273 2010-08-15 11 +306 val_306 2010-08-15 11 +224 val_224 2010-08-15 11 +309 val_309 2010-08-15 11 +389 val_389 2010-08-15 11 +327 val_327 2010-08-15 11 +242 val_242 2010-08-15 11 +369 val_369 2010-08-15 11 +392 val_392 2010-08-15 11 +272 val_272 2010-08-15 11 +331 val_331 2010-08-15 11 +401 val_401 2010-08-15 11 +242 val_242 2010-08-15 11 +452 val_452 2010-08-15 11 +177 val_177 2010-08-15 11 +226 val_226 2010-08-15 11 +5 val_5 2010-08-15 11 +497 val_497 2010-08-15 11 +402 val_402 2010-08-15 11 +396 val_396 2010-08-15 11 +317 val_317 2010-08-15 11 +395 val_395 2010-08-15 11 +58 val_58 2010-08-15 11 +35 val_35 2010-08-15 11 +336 val_336 2010-08-15 11 +95 val_95 2010-08-15 11 +11 val_11 2010-08-15 11 +168 val_168 2010-08-15 11 +34 val_34 2010-08-15 11 +229 val_229 2010-08-15 11 +233 val_233 2010-08-15 11 +143 val_143 2010-08-15 11 +472 val_472 2010-08-15 11 +322 val_322 2010-08-15 11 +498 val_498 2010-08-15 11 +160 val_160 2010-08-15 11 +195 val_195 2010-08-15 11 +42 val_42 2010-08-15 11 +321 val_321 2010-08-15 11 +430 val_430 2010-08-15 11 +119 val_119 2010-08-15 11 +489 val_489 2010-08-15 11 +458 val_458 2010-08-15 11 +78 val_78 2010-08-15 11 +76 val_76 2010-08-15 11 +41 val_41 2010-08-15 11 +223 val_223 2010-08-15 11 +492 val_492 2010-08-15 11 +149 val_149 2010-08-15 11 +449 val_449 2010-08-15 11 +218 val_218 2010-08-15 11 +228 val_228 2010-08-15 11 +138 val_138 2010-08-15 11 +453 val_453 2010-08-15 11 +30 val_30 2010-08-15 11 +209 val_209 2010-08-15 11 +64 val_64 2010-08-15 11 +468 val_468 2010-08-15 11 +76 val_76 2010-08-15 11 +74 val_74 2010-08-15 11 +342 val_342 2010-08-15 11 +69 val_69 2010-08-15 11 +230 val_230 2010-08-15 11 +33 val_33 2010-08-15 11 +368 val_368 2010-08-15 11 +103 val_103 2010-08-15 11 +296 val_296 2010-08-15 11 +113 val_113 2010-08-15 11 +216 val_216 2010-08-15 11 +367 val_367 2010-08-15 11 +344 val_344 2010-08-15 11 +167 val_167 2010-08-15 11 +274 val_274 2010-08-15 11 +219 val_219 2010-08-15 11 +239 val_239 2010-08-15 11 +485 val_485 2010-08-15 11 +116 val_116 2010-08-15 11 +223 val_223 2010-08-15 11 +256 val_256 2010-08-15 11 +263 val_263 2010-08-15 11 +70 val_70 2010-08-15 11 +487 val_487 2010-08-15 11 +480 val_480 2010-08-15 11 +401 val_401 2010-08-15 11 +288 val_288 2010-08-15 11 +191 val_191 2010-08-15 11 +5 val_5 2010-08-15 11 +244 val_244 2010-08-15 11 +438 val_438 2010-08-15 11 +128 val_128 2010-08-15 11 +467 val_467 2010-08-15 11 +432 val_432 2010-08-15 11 +202 val_202 2010-08-15 11 +316 val_316 2010-08-15 11 +229 val_229 2010-08-15 11 +469 val_469 2010-08-15 11 +463 val_463 2010-08-15 11 +280 val_280 2010-08-15 11 +2 val_2 2010-08-15 11 +35 val_35 2010-08-15 11 +283 val_283 2010-08-15 11 +331 val_331 2010-08-15 11 +235 val_235 2010-08-15 11 +80 val_80 2010-08-15 11 +44 val_44 2010-08-15 11 +193 val_193 2010-08-15 11 +321 val_321 2010-08-15 11 +335 val_335 2010-08-15 11 +104 val_104 2010-08-15 11 +466 val_466 2010-08-15 11 +366 val_366 2010-08-15 11 +175 val_175 2010-08-15 11 +403 val_403 2010-08-15 11 +483 val_483 2010-08-15 11 +53 val_53 2010-08-15 11 +105 val_105 2010-08-15 11 +257 val_257 2010-08-15 11 +406 val_406 2010-08-15 11 +409 val_409 2010-08-15 11 +190 val_190 2010-08-15 11 +406 val_406 2010-08-15 11 +401 val_401 2010-08-15 11 +114 val_114 2010-08-15 11 +258 val_258 2010-08-15 11 +90 val_90 2010-08-15 11 +203 val_203 2010-08-15 11 +262 val_262 2010-08-15 11 +348 val_348 2010-08-15 11 +424 val_424 2010-08-15 11 +12 val_12 2010-08-15 11 +396 val_396 2010-08-15 11 +201 val_201 2010-08-15 11 +217 val_217 2010-08-15 11 +164 val_164 2010-08-15 11 +431 val_431 2010-08-15 11 +454 val_454 2010-08-15 11 +478 val_478 2010-08-15 11 +298 val_298 2010-08-15 11 +125 val_125 2010-08-15 11 +431 val_431 2010-08-15 11 +164 val_164 2010-08-15 11 +424 val_424 2010-08-15 11 +187 val_187 2010-08-15 11 +382 val_382 2010-08-15 11 +5 val_5 2010-08-15 11 +70 val_70 2010-08-15 11 +397 val_397 2010-08-15 11 +480 val_480 2010-08-15 11 +291 val_291 2010-08-15 11 +24 val_24 2010-08-15 11 +351 val_351 2010-08-15 11 +255 val_255 2010-08-15 11 +104 val_104 2010-08-15 11 +70 val_70 2010-08-15 11 +163 val_163 2010-08-15 11 +438 val_438 2010-08-15 11 +119 val_119 2010-08-15 11 +414 val_414 2010-08-15 11 +200 val_200 2010-08-15 11 +491 val_491 2010-08-15 11 +237 val_237 2010-08-15 11 +439 val_439 2010-08-15 11 +360 val_360 2010-08-15 11 +248 val_248 2010-08-15 11 +479 val_479 2010-08-15 11 +305 val_305 2010-08-15 11 +417 val_417 2010-08-15 11 +199 val_199 2010-08-15 11 +444 val_444 2010-08-15 11 +120 val_120 2010-08-15 11 +429 val_429 2010-08-15 11 +169 val_169 2010-08-15 11 +443 val_443 2010-08-15 11 +323 val_323 2010-08-15 11 +325 val_325 2010-08-15 11 +277 val_277 2010-08-15 11 +230 val_230 2010-08-15 11 +478 val_478 2010-08-15 11 +178 val_178 2010-08-15 11 +468 val_468 2010-08-15 11 +310 val_310 2010-08-15 11 +317 val_317 2010-08-15 11 +333 val_333 2010-08-15 11 +493 val_493 2010-08-15 11 +460 val_460 2010-08-15 11 +207 val_207 2010-08-15 11 +249 val_249 2010-08-15 11 +265 val_265 2010-08-15 11 +480 val_480 2010-08-15 11 +83 val_83 2010-08-15 11 +136 val_136 2010-08-15 11 +353 val_353 2010-08-15 11 +172 val_172 2010-08-15 11 +214 val_214 2010-08-15 11 +462 val_462 2010-08-15 11 +233 val_233 2010-08-15 11 +406 val_406 2010-08-15 11 +133 val_133 2010-08-15 11 +175 val_175 2010-08-15 11 +189 val_189 2010-08-15 11 +454 val_454 2010-08-15 11 +375 val_375 2010-08-15 11 +401 val_401 2010-08-15 11 +421 val_421 2010-08-15 11 +407 val_407 2010-08-15 11 +384 val_384 2010-08-15 11 +256 val_256 2010-08-15 11 +26 val_26 2010-08-15 11 +134 val_134 2010-08-15 11 +67 val_67 2010-08-15 11 +384 val_384 2010-08-15 11 +379 val_379 2010-08-15 11 +18 val_18 2010-08-15 11 +462 val_462 2010-08-15 11 +492 val_492 2010-08-15 11 +100 val_100 2010-08-15 11 +298 val_298 2010-08-15 11 +9 val_9 2010-08-15 11 +341 val_341 2010-08-15 11 +498 val_498 2010-08-15 11 +146 val_146 2010-08-15 11 +458 val_458 2010-08-15 11 +362 val_362 2010-08-15 11 +186 val_186 2010-08-15 11 +285 val_285 2010-08-15 11 +348 val_348 2010-08-15 11 +167 val_167 2010-08-15 11 +18 val_18 2010-08-15 11 +273 val_273 2010-08-15 11 +183 val_183 2010-08-15 11 +281 val_281 2010-08-15 11 +344 val_344 2010-08-15 11 +97 val_97 2010-08-15 11 +469 val_469 2010-08-15 11 +315 val_315 2010-08-15 11 +84 val_84 2010-08-15 11 +28 val_28 2010-08-15 11 +37 val_37 2010-08-15 11 +448 val_448 2010-08-15 11 +152 val_152 2010-08-15 11 +348 val_348 2010-08-15 11 +307 val_307 2010-08-15 11 +194 val_194 2010-08-15 11 +414 val_414 2010-08-15 11 +477 val_477 2010-08-15 11 +222 val_222 2010-08-15 11 +126 val_126 2010-08-15 11 +90 val_90 2010-08-15 11 +169 val_169 2010-08-15 11 +403 val_403 2010-08-15 11 +400 val_400 2010-08-15 11 +200 val_200 2010-08-15 11 +97 val_97 2010-08-15 11 +238 val_238 2010-08-15 12 +86 val_86 2010-08-15 12 +311 val_311 2010-08-15 12 +27 val_27 2010-08-15 12 +165 val_165 2010-08-15 12 +409 val_409 2010-08-15 12 +255 val_255 2010-08-15 12 +278 val_278 2010-08-15 12 +98 val_98 2010-08-15 12 +484 val_484 2010-08-15 12 +265 val_265 2010-08-15 12 +193 val_193 2010-08-15 12 +401 val_401 2010-08-15 12 +150 val_150 2010-08-15 12 +273 val_273 2010-08-15 12 +224 val_224 2010-08-15 12 +369 val_369 2010-08-15 12 +66 val_66 2010-08-15 12 +128 val_128 2010-08-15 12 +213 val_213 2010-08-15 12 +146 val_146 2010-08-15 12 +406 val_406 2010-08-15 12 +429 val_429 2010-08-15 12 +374 val_374 2010-08-15 12 +152 val_152 2010-08-15 12 +469 val_469 2010-08-15 12 +145 val_145 2010-08-15 12 +495 val_495 2010-08-15 12 +37 val_37 2010-08-15 12 +327 val_327 2010-08-15 12 +281 val_281 2010-08-15 12 +277 val_277 2010-08-15 12 +209 val_209 2010-08-15 12 +15 val_15 2010-08-15 12 +82 val_82 2010-08-15 12 +403 val_403 2010-08-15 12 +166 val_166 2010-08-15 12 +417 val_417 2010-08-15 12 +430 val_430 2010-08-15 12 +252 val_252 2010-08-15 12 +292 val_292 2010-08-15 12 +219 val_219 2010-08-15 12 +287 val_287 2010-08-15 12 +153 val_153 2010-08-15 12 +193 val_193 2010-08-15 12 +338 val_338 2010-08-15 12 +446 val_446 2010-08-15 12 +459 val_459 2010-08-15 12 +394 val_394 2010-08-15 12 +237 val_237 2010-08-15 12 +482 val_482 2010-08-15 12 +174 val_174 2010-08-15 12 +413 val_413 2010-08-15 12 +494 val_494 2010-08-15 12 +207 val_207 2010-08-15 12 +199 val_199 2010-08-15 12 +466 val_466 2010-08-15 12 +208 val_208 2010-08-15 12 +174 val_174 2010-08-15 12 +399 val_399 2010-08-15 12 +396 val_396 2010-08-15 12 +247 val_247 2010-08-15 12 +417 val_417 2010-08-15 12 +489 val_489 2010-08-15 12 +162 val_162 2010-08-15 12 +377 val_377 2010-08-15 12 +397 val_397 2010-08-15 12 +309 val_309 2010-08-15 12 +365 val_365 2010-08-15 12 +266 val_266 2010-08-15 12 +439 val_439 2010-08-15 12 +342 val_342 2010-08-15 12 +367 val_367 2010-08-15 12 +325 val_325 2010-08-15 12 +167 val_167 2010-08-15 12 +195 val_195 2010-08-15 12 +475 val_475 2010-08-15 12 +17 val_17 2010-08-15 12 +113 val_113 2010-08-15 12 +155 val_155 2010-08-15 12 +203 val_203 2010-08-15 12 +339 val_339 2010-08-15 12 +0 val_0 2010-08-15 12 +455 val_455 2010-08-15 12 +128 val_128 2010-08-15 12 +311 val_311 2010-08-15 12 +316 val_316 2010-08-15 12 +57 val_57 2010-08-15 12 +302 val_302 2010-08-15 12 +205 val_205 2010-08-15 12 +149 val_149 2010-08-15 12 +438 val_438 2010-08-15 12 +345 val_345 2010-08-15 12 +129 val_129 2010-08-15 12 +170 val_170 2010-08-15 12 +20 val_20 2010-08-15 12 +489 val_489 2010-08-15 12 +157 val_157 2010-08-15 12 +378 val_378 2010-08-15 12 +221 val_221 2010-08-15 12 +92 val_92 2010-08-15 12 +111 val_111 2010-08-15 12 +47 val_47 2010-08-15 12 +72 val_72 2010-08-15 12 +4 val_4 2010-08-15 12 +280 val_280 2010-08-15 12 +35 val_35 2010-08-15 12 +427 val_427 2010-08-15 12 +277 val_277 2010-08-15 12 +208 val_208 2010-08-15 12 +356 val_356 2010-08-15 12 +399 val_399 2010-08-15 12 +169 val_169 2010-08-15 12 +382 val_382 2010-08-15 12 +498 val_498 2010-08-15 12 +125 val_125 2010-08-15 12 +386 val_386 2010-08-15 12 +437 val_437 2010-08-15 12 +469 val_469 2010-08-15 12 +192 val_192 2010-08-15 12 +286 val_286 2010-08-15 12 +187 val_187 2010-08-15 12 +176 val_176 2010-08-15 12 +54 val_54 2010-08-15 12 +459 val_459 2010-08-15 12 +51 val_51 2010-08-15 12 +138 val_138 2010-08-15 12 +103 val_103 2010-08-15 12 +239 val_239 2010-08-15 12 +213 val_213 2010-08-15 12 +216 val_216 2010-08-15 12 +430 val_430 2010-08-15 12 +278 val_278 2010-08-15 12 +176 val_176 2010-08-15 12 +289 val_289 2010-08-15 12 +221 val_221 2010-08-15 12 +65 val_65 2010-08-15 12 +318 val_318 2010-08-15 12 +332 val_332 2010-08-15 12 +311 val_311 2010-08-15 12 +275 val_275 2010-08-15 12 +137 val_137 2010-08-15 12 +241 val_241 2010-08-15 12 +83 val_83 2010-08-15 12 +333 val_333 2010-08-15 12 +180 val_180 2010-08-15 12 +284 val_284 2010-08-15 12 +12 val_12 2010-08-15 12 +230 val_230 2010-08-15 12 +181 val_181 2010-08-15 12 +67 val_67 2010-08-15 12 +260 val_260 2010-08-15 12 +404 val_404 2010-08-15 12 +384 val_384 2010-08-15 12 +489 val_489 2010-08-15 12 +353 val_353 2010-08-15 12 +373 val_373 2010-08-15 12 +272 val_272 2010-08-15 12 +138 val_138 2010-08-15 12 +217 val_217 2010-08-15 12 +84 val_84 2010-08-15 12 +348 val_348 2010-08-15 12 +466 val_466 2010-08-15 12 +58 val_58 2010-08-15 12 +8 val_8 2010-08-15 12 +411 val_411 2010-08-15 12 +230 val_230 2010-08-15 12 +208 val_208 2010-08-15 12 +348 val_348 2010-08-15 12 +24 val_24 2010-08-15 12 +463 val_463 2010-08-15 12 +431 val_431 2010-08-15 12 +179 val_179 2010-08-15 12 +172 val_172 2010-08-15 12 +42 val_42 2010-08-15 12 +129 val_129 2010-08-15 12 +158 val_158 2010-08-15 12 +119 val_119 2010-08-15 12 +496 val_496 2010-08-15 12 +0 val_0 2010-08-15 12 +322 val_322 2010-08-15 12 +197 val_197 2010-08-15 12 +468 val_468 2010-08-15 12 +393 val_393 2010-08-15 12 +454 val_454 2010-08-15 12 +100 val_100 2010-08-15 12 +298 val_298 2010-08-15 12 +199 val_199 2010-08-15 12 +191 val_191 2010-08-15 12 +418 val_418 2010-08-15 12 +96 val_96 2010-08-15 12 +26 val_26 2010-08-15 12 +165 val_165 2010-08-15 12 +327 val_327 2010-08-15 12 +230 val_230 2010-08-15 12 +205 val_205 2010-08-15 12 +120 val_120 2010-08-15 12 +131 val_131 2010-08-15 12 +51 val_51 2010-08-15 12 +404 val_404 2010-08-15 12 +43 val_43 2010-08-15 12 +436 val_436 2010-08-15 12 +156 val_156 2010-08-15 12 +469 val_469 2010-08-15 12 +468 val_468 2010-08-15 12 +308 val_308 2010-08-15 12 +95 val_95 2010-08-15 12 +196 val_196 2010-08-15 12 +288 val_288 2010-08-15 12 +481 val_481 2010-08-15 12 +457 val_457 2010-08-15 12 +98 val_98 2010-08-15 12 +282 val_282 2010-08-15 12 +197 val_197 2010-08-15 12 +187 val_187 2010-08-15 12 +318 val_318 2010-08-15 12 +318 val_318 2010-08-15 12 +409 val_409 2010-08-15 12 +470 val_470 2010-08-15 12 +137 val_137 2010-08-15 12 +369 val_369 2010-08-15 12 +316 val_316 2010-08-15 12 +169 val_169 2010-08-15 12 +413 val_413 2010-08-15 12 +85 val_85 2010-08-15 12 +77 val_77 2010-08-15 12 +0 val_0 2010-08-15 12 +490 val_490 2010-08-15 12 +87 val_87 2010-08-15 12 +364 val_364 2010-08-15 12 +179 val_179 2010-08-15 12 +118 val_118 2010-08-15 12 +134 val_134 2010-08-15 12 +395 val_395 2010-08-15 12 +282 val_282 2010-08-15 12 +138 val_138 2010-08-15 12 +238 val_238 2010-08-15 12 +419 val_419 2010-08-15 12 +15 val_15 2010-08-15 12 +118 val_118 2010-08-15 12 +72 val_72 2010-08-15 12 +90 val_90 2010-08-15 12 +307 val_307 2010-08-15 12 +19 val_19 2010-08-15 12 +435 val_435 2010-08-15 12 +10 val_10 2010-08-15 12 +277 val_277 2010-08-15 12 +273 val_273 2010-08-15 12 +306 val_306 2010-08-15 12 +224 val_224 2010-08-15 12 +309 val_309 2010-08-15 12 +389 val_389 2010-08-15 12 +327 val_327 2010-08-15 12 +242 val_242 2010-08-15 12 +369 val_369 2010-08-15 12 +392 val_392 2010-08-15 12 +272 val_272 2010-08-15 12 +331 val_331 2010-08-15 12 +401 val_401 2010-08-15 12 +242 val_242 2010-08-15 12 +452 val_452 2010-08-15 12 +177 val_177 2010-08-15 12 +226 val_226 2010-08-15 12 +5 val_5 2010-08-15 12 +497 val_497 2010-08-15 12 +402 val_402 2010-08-15 12 +396 val_396 2010-08-15 12 +317 val_317 2010-08-15 12 +395 val_395 2010-08-15 12 +58 val_58 2010-08-15 12 +35 val_35 2010-08-15 12 +336 val_336 2010-08-15 12 +95 val_95 2010-08-15 12 +11 val_11 2010-08-15 12 +168 val_168 2010-08-15 12 +34 val_34 2010-08-15 12 +229 val_229 2010-08-15 12 +233 val_233 2010-08-15 12 +143 val_143 2010-08-15 12 +472 val_472 2010-08-15 12 +322 val_322 2010-08-15 12 +498 val_498 2010-08-15 12 +160 val_160 2010-08-15 12 +195 val_195 2010-08-15 12 +42 val_42 2010-08-15 12 +321 val_321 2010-08-15 12 +430 val_430 2010-08-15 12 +119 val_119 2010-08-15 12 +489 val_489 2010-08-15 12 +458 val_458 2010-08-15 12 +78 val_78 2010-08-15 12 +76 val_76 2010-08-15 12 +41 val_41 2010-08-15 12 +223 val_223 2010-08-15 12 +492 val_492 2010-08-15 12 +149 val_149 2010-08-15 12 +449 val_449 2010-08-15 12 +218 val_218 2010-08-15 12 +228 val_228 2010-08-15 12 +138 val_138 2010-08-15 12 +453 val_453 2010-08-15 12 +30 val_30 2010-08-15 12 +209 val_209 2010-08-15 12 +64 val_64 2010-08-15 12 +468 val_468 2010-08-15 12 +76 val_76 2010-08-15 12 +74 val_74 2010-08-15 12 +342 val_342 2010-08-15 12 +69 val_69 2010-08-15 12 +230 val_230 2010-08-15 12 +33 val_33 2010-08-15 12 +368 val_368 2010-08-15 12 +103 val_103 2010-08-15 12 +296 val_296 2010-08-15 12 +113 val_113 2010-08-15 12 +216 val_216 2010-08-15 12 +367 val_367 2010-08-15 12 +344 val_344 2010-08-15 12 +167 val_167 2010-08-15 12 +274 val_274 2010-08-15 12 +219 val_219 2010-08-15 12 +239 val_239 2010-08-15 12 +485 val_485 2010-08-15 12 +116 val_116 2010-08-15 12 +223 val_223 2010-08-15 12 +256 val_256 2010-08-15 12 +263 val_263 2010-08-15 12 +70 val_70 2010-08-15 12 +487 val_487 2010-08-15 12 +480 val_480 2010-08-15 12 +401 val_401 2010-08-15 12 +288 val_288 2010-08-15 12 +191 val_191 2010-08-15 12 +5 val_5 2010-08-15 12 +244 val_244 2010-08-15 12 +438 val_438 2010-08-15 12 +128 val_128 2010-08-15 12 +467 val_467 2010-08-15 12 +432 val_432 2010-08-15 12 +202 val_202 2010-08-15 12 +316 val_316 2010-08-15 12 +229 val_229 2010-08-15 12 +469 val_469 2010-08-15 12 +463 val_463 2010-08-15 12 +280 val_280 2010-08-15 12 +2 val_2 2010-08-15 12 +35 val_35 2010-08-15 12 +283 val_283 2010-08-15 12 +331 val_331 2010-08-15 12 +235 val_235 2010-08-15 12 +80 val_80 2010-08-15 12 +44 val_44 2010-08-15 12 +193 val_193 2010-08-15 12 +321 val_321 2010-08-15 12 +335 val_335 2010-08-15 12 +104 val_104 2010-08-15 12 +466 val_466 2010-08-15 12 +366 val_366 2010-08-15 12 +175 val_175 2010-08-15 12 +403 val_403 2010-08-15 12 +483 val_483 2010-08-15 12 +53 val_53 2010-08-15 12 +105 val_105 2010-08-15 12 +257 val_257 2010-08-15 12 +406 val_406 2010-08-15 12 +409 val_409 2010-08-15 12 +190 val_190 2010-08-15 12 +406 val_406 2010-08-15 12 +401 val_401 2010-08-15 12 +114 val_114 2010-08-15 12 +258 val_258 2010-08-15 12 +90 val_90 2010-08-15 12 +203 val_203 2010-08-15 12 +262 val_262 2010-08-15 12 +348 val_348 2010-08-15 12 +424 val_424 2010-08-15 12 +12 val_12 2010-08-15 12 +396 val_396 2010-08-15 12 +201 val_201 2010-08-15 12 +217 val_217 2010-08-15 12 +164 val_164 2010-08-15 12 +431 val_431 2010-08-15 12 +454 val_454 2010-08-15 12 +478 val_478 2010-08-15 12 +298 val_298 2010-08-15 12 +125 val_125 2010-08-15 12 +431 val_431 2010-08-15 12 +164 val_164 2010-08-15 12 +424 val_424 2010-08-15 12 +187 val_187 2010-08-15 12 +382 val_382 2010-08-15 12 +5 val_5 2010-08-15 12 +70 val_70 2010-08-15 12 +397 val_397 2010-08-15 12 +480 val_480 2010-08-15 12 +291 val_291 2010-08-15 12 +24 val_24 2010-08-15 12 +351 val_351 2010-08-15 12 +255 val_255 2010-08-15 12 +104 val_104 2010-08-15 12 +70 val_70 2010-08-15 12 +163 val_163 2010-08-15 12 +438 val_438 2010-08-15 12 +119 val_119 2010-08-15 12 +414 val_414 2010-08-15 12 +200 val_200 2010-08-15 12 +491 val_491 2010-08-15 12 +237 val_237 2010-08-15 12 +439 val_439 2010-08-15 12 +360 val_360 2010-08-15 12 +248 val_248 2010-08-15 12 +479 val_479 2010-08-15 12 +305 val_305 2010-08-15 12 +417 val_417 2010-08-15 12 +199 val_199 2010-08-15 12 +444 val_444 2010-08-15 12 +120 val_120 2010-08-15 12 +429 val_429 2010-08-15 12 +169 val_169 2010-08-15 12 +443 val_443 2010-08-15 12 +323 val_323 2010-08-15 12 +325 val_325 2010-08-15 12 +277 val_277 2010-08-15 12 +230 val_230 2010-08-15 12 +478 val_478 2010-08-15 12 +178 val_178 2010-08-15 12 +468 val_468 2010-08-15 12 +310 val_310 2010-08-15 12 +317 val_317 2010-08-15 12 +333 val_333 2010-08-15 12 +493 val_493 2010-08-15 12 +460 val_460 2010-08-15 12 +207 val_207 2010-08-15 12 +249 val_249 2010-08-15 12 +265 val_265 2010-08-15 12 +480 val_480 2010-08-15 12 +83 val_83 2010-08-15 12 +136 val_136 2010-08-15 12 +353 val_353 2010-08-15 12 +172 val_172 2010-08-15 12 +214 val_214 2010-08-15 12 +462 val_462 2010-08-15 12 +233 val_233 2010-08-15 12 +406 val_406 2010-08-15 12 +133 val_133 2010-08-15 12 +175 val_175 2010-08-15 12 +189 val_189 2010-08-15 12 +454 val_454 2010-08-15 12 +375 val_375 2010-08-15 12 +401 val_401 2010-08-15 12 +421 val_421 2010-08-15 12 +407 val_407 2010-08-15 12 +384 val_384 2010-08-15 12 +256 val_256 2010-08-15 12 +26 val_26 2010-08-15 12 +134 val_134 2010-08-15 12 +67 val_67 2010-08-15 12 +384 val_384 2010-08-15 12 +379 val_379 2010-08-15 12 +18 val_18 2010-08-15 12 +462 val_462 2010-08-15 12 +492 val_492 2010-08-15 12 +100 val_100 2010-08-15 12 +298 val_298 2010-08-15 12 +9 val_9 2010-08-15 12 +341 val_341 2010-08-15 12 +498 val_498 2010-08-15 12 +146 val_146 2010-08-15 12 +458 val_458 2010-08-15 12 +362 val_362 2010-08-15 12 +186 val_186 2010-08-15 12 +285 val_285 2010-08-15 12 +348 val_348 2010-08-15 12 +167 val_167 2010-08-15 12 +18 val_18 2010-08-15 12 +273 val_273 2010-08-15 12 +183 val_183 2010-08-15 12 +281 val_281 2010-08-15 12 +344 val_344 2010-08-15 12 +97 val_97 2010-08-15 12 +469 val_469 2010-08-15 12 +315 val_315 2010-08-15 12 +84 val_84 2010-08-15 12 +28 val_28 2010-08-15 12 +37 val_37 2010-08-15 12 +448 val_448 2010-08-15 12 +152 val_152 2010-08-15 12 +348 val_348 2010-08-15 12 +307 val_307 2010-08-15 12 +194 val_194 2010-08-15 12 +414 val_414 2010-08-15 12 +477 val_477 2010-08-15 12 +222 val_222 2010-08-15 12 +126 val_126 2010-08-15 12 +90 val_90 2010-08-15 12 +169 val_169 2010-08-15 12 +403 val_403 2010-08-15 12 +400 val_400 2010-08-15 12 +200 val_200 2010-08-15 12 +97 val_97 2010-08-15 12 diff --git a/sql/hive/src/test/resources/golden/merge4-9-ad3dc168c8b6f048717e39ab16b0a319 b/sql/hive/src/test/resources/golden/merge4-9-ad3dc168c8b6f048717e39ab16b0a319 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-0-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-0-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-0-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-1-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/merge_dynamic_partition-1-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-1-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-10-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/merge_dynamic_partition-10-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-10-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-11-a49c9ee01ce8858a5f00c05523329200 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-11-a49c9ee01ce8858a5f00c05523329200 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-11-a49c9ee01ce8858a5f00c05523329200 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-12-dbf4eae8430a97a6e70b1c6222218cd3 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-12-dbf4eae8430a97a6e70b1c6222218cd3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-13-16adcdb0e324ad233769e124b5b349da b/sql/hive/src/test/resources/golden/merge_dynamic_partition-13-16adcdb0e324ad233769e124b5b349da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-14-79da9a1ce5c2d058b924387ac9fcde92 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-14-79da9a1ce5c2d058b924387ac9fcde92 new file mode 100644 index 0000000000000..a4c81ff9f99cd --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-14-79da9a1ce5c2d058b924387ac9fcde92 @@ -0,0 +1,500 @@ +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +2 val_2 2008-04-08 11 +4 val_4 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +8 val_8 2008-04-08 11 +9 val_9 2008-04-08 11 +10 val_10 2008-04-08 11 +11 val_11 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +17 val_17 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +19 val_19 2008-04-08 11 +20 val_20 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +27 val_27 2008-04-08 11 +28 val_28 2008-04-08 11 +30 val_30 2008-04-08 11 +33 val_33 2008-04-08 11 +34 val_34 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +41 val_41 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +43 val_43 2008-04-08 11 +44 val_44 2008-04-08 11 +47 val_47 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +53 val_53 2008-04-08 11 +54 val_54 2008-04-08 11 +57 val_57 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +64 val_64 2008-04-08 11 +65 val_65 2008-04-08 11 +66 val_66 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +69 val_69 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +74 val_74 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +77 val_77 2008-04-08 11 +78 val_78 2008-04-08 11 +80 val_80 2008-04-08 11 +82 val_82 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +85 val_85 2008-04-08 11 +86 val_86 2008-04-08 11 +87 val_87 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +92 val_92 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +96 val_96 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +100 val_100 2008-04-08 11 +100 val_100 2008-04-08 11 +103 val_103 2008-04-08 11 +103 val_103 2008-04-08 11 +104 val_104 2008-04-08 11 +104 val_104 2008-04-08 11 +105 val_105 2008-04-08 11 +111 val_111 2008-04-08 11 +113 val_113 2008-04-08 11 +113 val_113 2008-04-08 11 +114 val_114 2008-04-08 11 +116 val_116 2008-04-08 11 +118 val_118 2008-04-08 11 +118 val_118 2008-04-08 11 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 11 +120 val_120 2008-04-08 11 +120 val_120 2008-04-08 11 +125 val_125 2008-04-08 11 +125 val_125 2008-04-08 11 +126 val_126 2008-04-08 11 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 11 +129 val_129 2008-04-08 11 +129 val_129 2008-04-08 11 +131 val_131 2008-04-08 11 +133 val_133 2008-04-08 11 +134 val_134 2008-04-08 11 +134 val_134 2008-04-08 11 +136 val_136 2008-04-08 11 +137 val_137 2008-04-08 11 +137 val_137 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +143 val_143 2008-04-08 11 +145 val_145 2008-04-08 11 +146 val_146 2008-04-08 11 +146 val_146 2008-04-08 11 +149 val_149 2008-04-08 11 +149 val_149 2008-04-08 11 +150 val_150 2008-04-08 11 +152 val_152 2008-04-08 11 +152 val_152 2008-04-08 11 +153 val_153 2008-04-08 11 +155 val_155 2008-04-08 11 +156 val_156 2008-04-08 11 +157 val_157 2008-04-08 11 +158 val_158 2008-04-08 11 +160 val_160 2008-04-08 11 +162 val_162 2008-04-08 11 +163 val_163 2008-04-08 11 +164 val_164 2008-04-08 11 +164 val_164 2008-04-08 11 +165 val_165 2008-04-08 11 +165 val_165 2008-04-08 11 +166 val_166 2008-04-08 11 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 11 +168 val_168 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +170 val_170 2008-04-08 11 +172 val_172 2008-04-08 11 +172 val_172 2008-04-08 11 +174 val_174 2008-04-08 11 +174 val_174 2008-04-08 11 +175 val_175 2008-04-08 11 +175 val_175 2008-04-08 11 +176 val_176 2008-04-08 11 +176 val_176 2008-04-08 11 +177 val_177 2008-04-08 11 +178 val_178 2008-04-08 11 +179 val_179 2008-04-08 11 +179 val_179 2008-04-08 11 +180 val_180 2008-04-08 11 +181 val_181 2008-04-08 11 +183 val_183 2008-04-08 11 +186 val_186 2008-04-08 11 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 11 +189 val_189 2008-04-08 11 +190 val_190 2008-04-08 11 +191 val_191 2008-04-08 11 +191 val_191 2008-04-08 11 +192 val_192 2008-04-08 11 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 11 +194 val_194 2008-04-08 11 +195 val_195 2008-04-08 11 +195 val_195 2008-04-08 11 +196 val_196 2008-04-08 11 +197 val_197 2008-04-08 11 +197 val_197 2008-04-08 11 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 11 +200 val_200 2008-04-08 11 +200 val_200 2008-04-08 11 +201 val_201 2008-04-08 11 +202 val_202 2008-04-08 11 +203 val_203 2008-04-08 11 +203 val_203 2008-04-08 11 +205 val_205 2008-04-08 11 +205 val_205 2008-04-08 11 +207 val_207 2008-04-08 11 +207 val_207 2008-04-08 11 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 11 +209 val_209 2008-04-08 11 +209 val_209 2008-04-08 11 +213 val_213 2008-04-08 11 +213 val_213 2008-04-08 11 +214 val_214 2008-04-08 11 +216 val_216 2008-04-08 11 +216 val_216 2008-04-08 11 +217 val_217 2008-04-08 11 +217 val_217 2008-04-08 11 +218 val_218 2008-04-08 11 +219 val_219 2008-04-08 11 +219 val_219 2008-04-08 11 +221 val_221 2008-04-08 11 +221 val_221 2008-04-08 11 +222 val_222 2008-04-08 11 +223 val_223 2008-04-08 11 +223 val_223 2008-04-08 11 +224 val_224 2008-04-08 11 +224 val_224 2008-04-08 11 +226 val_226 2008-04-08 11 +228 val_228 2008-04-08 11 +229 val_229 2008-04-08 11 +229 val_229 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +233 val_233 2008-04-08 11 +233 val_233 2008-04-08 11 +235 val_235 2008-04-08 11 +237 val_237 2008-04-08 11 +237 val_237 2008-04-08 11 +238 val_238 2008-04-08 11 +238 val_238 2008-04-08 11 +239 val_239 2008-04-08 11 +239 val_239 2008-04-08 11 +241 val_241 2008-04-08 11 +242 val_242 2008-04-08 11 +242 val_242 2008-04-08 11 +244 val_244 2008-04-08 11 +247 val_247 2008-04-08 11 +248 val_248 2008-04-08 11 +249 val_249 2008-04-08 11 +252 val_252 2008-04-08 11 +255 val_255 2008-04-08 11 +255 val_255 2008-04-08 11 +256 val_256 2008-04-08 11 +256 val_256 2008-04-08 11 +257 val_257 2008-04-08 11 +258 val_258 2008-04-08 11 +260 val_260 2008-04-08 11 +262 val_262 2008-04-08 11 +263 val_263 2008-04-08 11 +265 val_265 2008-04-08 11 +265 val_265 2008-04-08 11 +266 val_266 2008-04-08 11 +272 val_272 2008-04-08 11 +272 val_272 2008-04-08 11 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 11 +274 val_274 2008-04-08 11 +275 val_275 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +278 val_278 2008-04-08 11 +278 val_278 2008-04-08 11 +280 val_280 2008-04-08 11 +280 val_280 2008-04-08 11 +281 val_281 2008-04-08 11 +281 val_281 2008-04-08 11 +282 val_282 2008-04-08 11 +282 val_282 2008-04-08 11 +283 val_283 2008-04-08 11 +284 val_284 2008-04-08 11 +285 val_285 2008-04-08 11 +286 val_286 2008-04-08 11 +287 val_287 2008-04-08 11 +288 val_288 2008-04-08 11 +288 val_288 2008-04-08 11 +289 val_289 2008-04-08 11 +291 val_291 2008-04-08 11 +292 val_292 2008-04-08 11 +296 val_296 2008-04-08 11 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 11 +302 val_302 2008-04-08 11 +305 val_305 2008-04-08 11 +306 val_306 2008-04-08 11 +307 val_307 2008-04-08 11 +307 val_307 2008-04-08 11 +308 val_308 2008-04-08 11 +309 val_309 2008-04-08 11 +309 val_309 2008-04-08 11 +310 val_310 2008-04-08 11 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 11 +315 val_315 2008-04-08 11 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 11 +317 val_317 2008-04-08 11 +317 val_317 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +321 val_321 2008-04-08 11 +321 val_321 2008-04-08 11 +322 val_322 2008-04-08 11 +322 val_322 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +325 val_325 2008-04-08 11 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 11 +331 val_331 2008-04-08 11 +331 val_331 2008-04-08 11 +332 val_332 2008-04-08 11 +333 val_333 2008-04-08 11 +333 val_333 2008-04-08 11 +335 val_335 2008-04-08 11 +336 val_336 2008-04-08 11 +338 val_338 2008-04-08 11 +339 val_339 2008-04-08 11 +341 val_341 2008-04-08 11 +342 val_342 2008-04-08 11 +342 val_342 2008-04-08 11 +344 val_344 2008-04-08 11 +344 val_344 2008-04-08 11 +345 val_345 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +351 val_351 2008-04-08 11 +353 val_353 2008-04-08 11 +353 val_353 2008-04-08 11 +356 val_356 2008-04-08 11 +360 val_360 2008-04-08 11 +362 val_362 2008-04-08 11 +364 val_364 2008-04-08 11 +365 val_365 2008-04-08 11 +366 val_366 2008-04-08 11 +367 val_367 2008-04-08 11 +367 val_367 2008-04-08 11 +368 val_368 2008-04-08 11 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 11 +373 val_373 2008-04-08 11 +374 val_374 2008-04-08 11 +375 val_375 2008-04-08 11 +377 val_377 2008-04-08 11 +378 val_378 2008-04-08 11 +379 val_379 2008-04-08 11 +382 val_382 2008-04-08 11 +382 val_382 2008-04-08 11 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 11 +386 val_386 2008-04-08 11 +389 val_389 2008-04-08 11 +392 val_392 2008-04-08 11 +393 val_393 2008-04-08 11 +394 val_394 2008-04-08 11 +395 val_395 2008-04-08 11 +395 val_395 2008-04-08 11 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 11 +397 val_397 2008-04-08 11 +397 val_397 2008-04-08 11 +399 val_399 2008-04-08 11 +399 val_399 2008-04-08 11 +400 val_400 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +402 val_402 2008-04-08 11 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 11 +404 val_404 2008-04-08 11 +404 val_404 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +407 val_407 2008-04-08 11 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 11 +411 val_411 2008-04-08 11 +413 val_413 2008-04-08 11 +413 val_413 2008-04-08 11 +414 val_414 2008-04-08 11 +414 val_414 2008-04-08 11 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 11 +418 val_418 2008-04-08 11 +419 val_419 2008-04-08 11 +421 val_421 2008-04-08 11 +424 val_424 2008-04-08 11 +424 val_424 2008-04-08 11 +427 val_427 2008-04-08 11 +429 val_429 2008-04-08 11 +429 val_429 2008-04-08 11 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 11 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 11 +432 val_432 2008-04-08 11 +435 val_435 2008-04-08 11 +436 val_436 2008-04-08 11 +437 val_437 2008-04-08 11 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 11 +439 val_439 2008-04-08 11 +439 val_439 2008-04-08 11 +443 val_443 2008-04-08 11 +444 val_444 2008-04-08 11 +446 val_446 2008-04-08 11 +448 val_448 2008-04-08 11 +449 val_449 2008-04-08 11 +452 val_452 2008-04-08 11 +453 val_453 2008-04-08 11 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 11 +455 val_455 2008-04-08 11 +457 val_457 2008-04-08 11 +458 val_458 2008-04-08 11 +458 val_458 2008-04-08 11 +459 val_459 2008-04-08 11 +459 val_459 2008-04-08 11 +460 val_460 2008-04-08 11 +462 val_462 2008-04-08 11 +462 val_462 2008-04-08 11 +463 val_463 2008-04-08 11 +463 val_463 2008-04-08 11 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 11 +467 val_467 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +470 val_470 2008-04-08 11 +472 val_472 2008-04-08 11 +475 val_475 2008-04-08 11 +477 val_477 2008-04-08 11 +478 val_478 2008-04-08 11 +478 val_478 2008-04-08 11 +479 val_479 2008-04-08 11 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 11 +481 val_481 2008-04-08 11 +482 val_482 2008-04-08 11 +483 val_483 2008-04-08 11 +484 val_484 2008-04-08 11 +485 val_485 2008-04-08 11 +487 val_487 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +490 val_490 2008-04-08 11 +491 val_491 2008-04-08 11 +492 val_492 2008-04-08 11 +492 val_492 2008-04-08 11 +493 val_493 2008-04-08 11 +494 val_494 2008-04-08 11 +495 val_495 2008-04-08 11 +496 val_496 2008-04-08 11 +497 val_497 2008-04-08 11 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-15-d60297fed03b455c29daa4afb4d1e858 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-15-d60297fed03b455c29daa4afb4d1e858 new file mode 100644 index 0000000000000..d66ce5d097ce6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-15-d60297fed03b455c29daa4afb4d1e858 @@ -0,0 +1,14 @@ +tableName:merge_dynamic_part +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1431818582215388621/merge_dynamic_part +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:true +partitionColumns:struct partition_columns { string ds, string hr} +totalNumberFiles:4 +totalFileSize:5812 +maxFileSize:1612 +minFileSize:1358 +lastAccessTime:0 +lastUpdateTime:1389738875000 diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-16-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/merge_dynamic_partition-16-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-16-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-17-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/merge_dynamic_partition-17-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-17-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-18-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-18-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-18-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-19-a49c9ee01ce8858a5f00c05523329200 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-19-a49c9ee01ce8858a5f00c05523329200 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-19-a49c9ee01ce8858a5f00c05523329200 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-2-190cefc93e46906e404039de0fd5f513 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-2-190cefc93e46906e404039de0fd5f513 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-20-d295db835d4fdeea34298702295ff7c5 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-20-d295db835d4fdeea34298702295ff7c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-21-9b9493a68ef7663e95ad86d02c45ec88 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-21-9b9493a68ef7663e95ad86d02c45ec88 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-22-79da9a1ce5c2d058b924387ac9fcde92 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-22-79da9a1ce5c2d058b924387ac9fcde92 new file mode 100644 index 0000000000000..a4c81ff9f99cd --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-22-79da9a1ce5c2d058b924387ac9fcde92 @@ -0,0 +1,500 @@ +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +2 val_2 2008-04-08 11 +4 val_4 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +8 val_8 2008-04-08 11 +9 val_9 2008-04-08 11 +10 val_10 2008-04-08 11 +11 val_11 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +17 val_17 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +19 val_19 2008-04-08 11 +20 val_20 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +27 val_27 2008-04-08 11 +28 val_28 2008-04-08 11 +30 val_30 2008-04-08 11 +33 val_33 2008-04-08 11 +34 val_34 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +41 val_41 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +43 val_43 2008-04-08 11 +44 val_44 2008-04-08 11 +47 val_47 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +53 val_53 2008-04-08 11 +54 val_54 2008-04-08 11 +57 val_57 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +64 val_64 2008-04-08 11 +65 val_65 2008-04-08 11 +66 val_66 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +69 val_69 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +74 val_74 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +77 val_77 2008-04-08 11 +78 val_78 2008-04-08 11 +80 val_80 2008-04-08 11 +82 val_82 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +85 val_85 2008-04-08 11 +86 val_86 2008-04-08 11 +87 val_87 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +92 val_92 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +96 val_96 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +100 val_100 2008-04-08 11 +100 val_100 2008-04-08 11 +103 val_103 2008-04-08 11 +103 val_103 2008-04-08 11 +104 val_104 2008-04-08 11 +104 val_104 2008-04-08 11 +105 val_105 2008-04-08 11 +111 val_111 2008-04-08 11 +113 val_113 2008-04-08 11 +113 val_113 2008-04-08 11 +114 val_114 2008-04-08 11 +116 val_116 2008-04-08 11 +118 val_118 2008-04-08 11 +118 val_118 2008-04-08 11 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 11 +120 val_120 2008-04-08 11 +120 val_120 2008-04-08 11 +125 val_125 2008-04-08 11 +125 val_125 2008-04-08 11 +126 val_126 2008-04-08 11 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 11 +129 val_129 2008-04-08 11 +129 val_129 2008-04-08 11 +131 val_131 2008-04-08 11 +133 val_133 2008-04-08 11 +134 val_134 2008-04-08 11 +134 val_134 2008-04-08 11 +136 val_136 2008-04-08 11 +137 val_137 2008-04-08 11 +137 val_137 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +143 val_143 2008-04-08 11 +145 val_145 2008-04-08 11 +146 val_146 2008-04-08 11 +146 val_146 2008-04-08 11 +149 val_149 2008-04-08 11 +149 val_149 2008-04-08 11 +150 val_150 2008-04-08 11 +152 val_152 2008-04-08 11 +152 val_152 2008-04-08 11 +153 val_153 2008-04-08 11 +155 val_155 2008-04-08 11 +156 val_156 2008-04-08 11 +157 val_157 2008-04-08 11 +158 val_158 2008-04-08 11 +160 val_160 2008-04-08 11 +162 val_162 2008-04-08 11 +163 val_163 2008-04-08 11 +164 val_164 2008-04-08 11 +164 val_164 2008-04-08 11 +165 val_165 2008-04-08 11 +165 val_165 2008-04-08 11 +166 val_166 2008-04-08 11 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 11 +168 val_168 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +170 val_170 2008-04-08 11 +172 val_172 2008-04-08 11 +172 val_172 2008-04-08 11 +174 val_174 2008-04-08 11 +174 val_174 2008-04-08 11 +175 val_175 2008-04-08 11 +175 val_175 2008-04-08 11 +176 val_176 2008-04-08 11 +176 val_176 2008-04-08 11 +177 val_177 2008-04-08 11 +178 val_178 2008-04-08 11 +179 val_179 2008-04-08 11 +179 val_179 2008-04-08 11 +180 val_180 2008-04-08 11 +181 val_181 2008-04-08 11 +183 val_183 2008-04-08 11 +186 val_186 2008-04-08 11 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 11 +189 val_189 2008-04-08 11 +190 val_190 2008-04-08 11 +191 val_191 2008-04-08 11 +191 val_191 2008-04-08 11 +192 val_192 2008-04-08 11 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 11 +194 val_194 2008-04-08 11 +195 val_195 2008-04-08 11 +195 val_195 2008-04-08 11 +196 val_196 2008-04-08 11 +197 val_197 2008-04-08 11 +197 val_197 2008-04-08 11 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 11 +200 val_200 2008-04-08 11 +200 val_200 2008-04-08 11 +201 val_201 2008-04-08 11 +202 val_202 2008-04-08 11 +203 val_203 2008-04-08 11 +203 val_203 2008-04-08 11 +205 val_205 2008-04-08 11 +205 val_205 2008-04-08 11 +207 val_207 2008-04-08 11 +207 val_207 2008-04-08 11 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 11 +209 val_209 2008-04-08 11 +209 val_209 2008-04-08 11 +213 val_213 2008-04-08 11 +213 val_213 2008-04-08 11 +214 val_214 2008-04-08 11 +216 val_216 2008-04-08 11 +216 val_216 2008-04-08 11 +217 val_217 2008-04-08 11 +217 val_217 2008-04-08 11 +218 val_218 2008-04-08 11 +219 val_219 2008-04-08 11 +219 val_219 2008-04-08 11 +221 val_221 2008-04-08 11 +221 val_221 2008-04-08 11 +222 val_222 2008-04-08 11 +223 val_223 2008-04-08 11 +223 val_223 2008-04-08 11 +224 val_224 2008-04-08 11 +224 val_224 2008-04-08 11 +226 val_226 2008-04-08 11 +228 val_228 2008-04-08 11 +229 val_229 2008-04-08 11 +229 val_229 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +233 val_233 2008-04-08 11 +233 val_233 2008-04-08 11 +235 val_235 2008-04-08 11 +237 val_237 2008-04-08 11 +237 val_237 2008-04-08 11 +238 val_238 2008-04-08 11 +238 val_238 2008-04-08 11 +239 val_239 2008-04-08 11 +239 val_239 2008-04-08 11 +241 val_241 2008-04-08 11 +242 val_242 2008-04-08 11 +242 val_242 2008-04-08 11 +244 val_244 2008-04-08 11 +247 val_247 2008-04-08 11 +248 val_248 2008-04-08 11 +249 val_249 2008-04-08 11 +252 val_252 2008-04-08 11 +255 val_255 2008-04-08 11 +255 val_255 2008-04-08 11 +256 val_256 2008-04-08 11 +256 val_256 2008-04-08 11 +257 val_257 2008-04-08 11 +258 val_258 2008-04-08 11 +260 val_260 2008-04-08 11 +262 val_262 2008-04-08 11 +263 val_263 2008-04-08 11 +265 val_265 2008-04-08 11 +265 val_265 2008-04-08 11 +266 val_266 2008-04-08 11 +272 val_272 2008-04-08 11 +272 val_272 2008-04-08 11 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 11 +274 val_274 2008-04-08 11 +275 val_275 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +278 val_278 2008-04-08 11 +278 val_278 2008-04-08 11 +280 val_280 2008-04-08 11 +280 val_280 2008-04-08 11 +281 val_281 2008-04-08 11 +281 val_281 2008-04-08 11 +282 val_282 2008-04-08 11 +282 val_282 2008-04-08 11 +283 val_283 2008-04-08 11 +284 val_284 2008-04-08 11 +285 val_285 2008-04-08 11 +286 val_286 2008-04-08 11 +287 val_287 2008-04-08 11 +288 val_288 2008-04-08 11 +288 val_288 2008-04-08 11 +289 val_289 2008-04-08 11 +291 val_291 2008-04-08 11 +292 val_292 2008-04-08 11 +296 val_296 2008-04-08 11 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 11 +302 val_302 2008-04-08 11 +305 val_305 2008-04-08 11 +306 val_306 2008-04-08 11 +307 val_307 2008-04-08 11 +307 val_307 2008-04-08 11 +308 val_308 2008-04-08 11 +309 val_309 2008-04-08 11 +309 val_309 2008-04-08 11 +310 val_310 2008-04-08 11 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 11 +315 val_315 2008-04-08 11 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 11 +317 val_317 2008-04-08 11 +317 val_317 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +321 val_321 2008-04-08 11 +321 val_321 2008-04-08 11 +322 val_322 2008-04-08 11 +322 val_322 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +325 val_325 2008-04-08 11 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 11 +331 val_331 2008-04-08 11 +331 val_331 2008-04-08 11 +332 val_332 2008-04-08 11 +333 val_333 2008-04-08 11 +333 val_333 2008-04-08 11 +335 val_335 2008-04-08 11 +336 val_336 2008-04-08 11 +338 val_338 2008-04-08 11 +339 val_339 2008-04-08 11 +341 val_341 2008-04-08 11 +342 val_342 2008-04-08 11 +342 val_342 2008-04-08 11 +344 val_344 2008-04-08 11 +344 val_344 2008-04-08 11 +345 val_345 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +351 val_351 2008-04-08 11 +353 val_353 2008-04-08 11 +353 val_353 2008-04-08 11 +356 val_356 2008-04-08 11 +360 val_360 2008-04-08 11 +362 val_362 2008-04-08 11 +364 val_364 2008-04-08 11 +365 val_365 2008-04-08 11 +366 val_366 2008-04-08 11 +367 val_367 2008-04-08 11 +367 val_367 2008-04-08 11 +368 val_368 2008-04-08 11 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 11 +373 val_373 2008-04-08 11 +374 val_374 2008-04-08 11 +375 val_375 2008-04-08 11 +377 val_377 2008-04-08 11 +378 val_378 2008-04-08 11 +379 val_379 2008-04-08 11 +382 val_382 2008-04-08 11 +382 val_382 2008-04-08 11 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 11 +386 val_386 2008-04-08 11 +389 val_389 2008-04-08 11 +392 val_392 2008-04-08 11 +393 val_393 2008-04-08 11 +394 val_394 2008-04-08 11 +395 val_395 2008-04-08 11 +395 val_395 2008-04-08 11 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 11 +397 val_397 2008-04-08 11 +397 val_397 2008-04-08 11 +399 val_399 2008-04-08 11 +399 val_399 2008-04-08 11 +400 val_400 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +402 val_402 2008-04-08 11 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 11 +404 val_404 2008-04-08 11 +404 val_404 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +407 val_407 2008-04-08 11 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 11 +411 val_411 2008-04-08 11 +413 val_413 2008-04-08 11 +413 val_413 2008-04-08 11 +414 val_414 2008-04-08 11 +414 val_414 2008-04-08 11 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 11 +418 val_418 2008-04-08 11 +419 val_419 2008-04-08 11 +421 val_421 2008-04-08 11 +424 val_424 2008-04-08 11 +424 val_424 2008-04-08 11 +427 val_427 2008-04-08 11 +429 val_429 2008-04-08 11 +429 val_429 2008-04-08 11 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 11 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 11 +432 val_432 2008-04-08 11 +435 val_435 2008-04-08 11 +436 val_436 2008-04-08 11 +437 val_437 2008-04-08 11 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 11 +439 val_439 2008-04-08 11 +439 val_439 2008-04-08 11 +443 val_443 2008-04-08 11 +444 val_444 2008-04-08 11 +446 val_446 2008-04-08 11 +448 val_448 2008-04-08 11 +449 val_449 2008-04-08 11 +452 val_452 2008-04-08 11 +453 val_453 2008-04-08 11 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 11 +455 val_455 2008-04-08 11 +457 val_457 2008-04-08 11 +458 val_458 2008-04-08 11 +458 val_458 2008-04-08 11 +459 val_459 2008-04-08 11 +459 val_459 2008-04-08 11 +460 val_460 2008-04-08 11 +462 val_462 2008-04-08 11 +462 val_462 2008-04-08 11 +463 val_463 2008-04-08 11 +463 val_463 2008-04-08 11 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 11 +467 val_467 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +470 val_470 2008-04-08 11 +472 val_472 2008-04-08 11 +475 val_475 2008-04-08 11 +477 val_477 2008-04-08 11 +478 val_478 2008-04-08 11 +478 val_478 2008-04-08 11 +479 val_479 2008-04-08 11 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 11 +481 val_481 2008-04-08 11 +482 val_482 2008-04-08 11 +483 val_483 2008-04-08 11 +484 val_484 2008-04-08 11 +485 val_485 2008-04-08 11 +487 val_487 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +490 val_490 2008-04-08 11 +491 val_491 2008-04-08 11 +492 val_492 2008-04-08 11 +492 val_492 2008-04-08 11 +493 val_493 2008-04-08 11 +494 val_494 2008-04-08 11 +495 val_495 2008-04-08 11 +496 val_496 2008-04-08 11 +497 val_497 2008-04-08 11 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-23-d60297fed03b455c29daa4afb4d1e858 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-23-d60297fed03b455c29daa4afb4d1e858 new file mode 100644 index 0000000000000..06444f372bd60 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-23-d60297fed03b455c29daa4afb4d1e858 @@ -0,0 +1,14 @@ +tableName:merge_dynamic_part +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1431818582215388621/merge_dynamic_part +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:true +partitionColumns:struct partition_columns { string ds, string hr} +totalNumberFiles:1 +totalFileSize:5812 +maxFileSize:5812 +minFileSize:5812 +lastAccessTime:0 +lastUpdateTime:1389738910000 diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-24-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/merge_dynamic_partition-24-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-24-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-25-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/merge_dynamic_partition-25-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-25-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-26-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-26-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-26-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-27-a49c9ee01ce8858a5f00c05523329200 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-27-a49c9ee01ce8858a5f00c05523329200 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-27-a49c9ee01ce8858a5f00c05523329200 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-28-ef7b35be7210f099d46448994d9dc605 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-28-ef7b35be7210f099d46448994d9dc605 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-29-876c8fa15a32ac5bfcc6cb60993f6a4d b/sql/hive/src/test/resources/golden/merge_dynamic_partition-29-876c8fa15a32ac5bfcc6cb60993f6a4d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-3-25401dd2c1c258e06f1b96fefd19e27f b/sql/hive/src/test/resources/golden/merge_dynamic_partition-3-25401dd2c1c258e06f1b96fefd19e27f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-30-79da9a1ce5c2d058b924387ac9fcde92 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-30-79da9a1ce5c2d058b924387ac9fcde92 new file mode 100644 index 0000000000000..a4c81ff9f99cd --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-30-79da9a1ce5c2d058b924387ac9fcde92 @@ -0,0 +1,500 @@ +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +2 val_2 2008-04-08 11 +4 val_4 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +8 val_8 2008-04-08 11 +9 val_9 2008-04-08 11 +10 val_10 2008-04-08 11 +11 val_11 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +17 val_17 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +19 val_19 2008-04-08 11 +20 val_20 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +27 val_27 2008-04-08 11 +28 val_28 2008-04-08 11 +30 val_30 2008-04-08 11 +33 val_33 2008-04-08 11 +34 val_34 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +41 val_41 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +43 val_43 2008-04-08 11 +44 val_44 2008-04-08 11 +47 val_47 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +53 val_53 2008-04-08 11 +54 val_54 2008-04-08 11 +57 val_57 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +64 val_64 2008-04-08 11 +65 val_65 2008-04-08 11 +66 val_66 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +69 val_69 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +74 val_74 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +77 val_77 2008-04-08 11 +78 val_78 2008-04-08 11 +80 val_80 2008-04-08 11 +82 val_82 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +85 val_85 2008-04-08 11 +86 val_86 2008-04-08 11 +87 val_87 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +92 val_92 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +96 val_96 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +100 val_100 2008-04-08 11 +100 val_100 2008-04-08 11 +103 val_103 2008-04-08 11 +103 val_103 2008-04-08 11 +104 val_104 2008-04-08 11 +104 val_104 2008-04-08 11 +105 val_105 2008-04-08 11 +111 val_111 2008-04-08 11 +113 val_113 2008-04-08 11 +113 val_113 2008-04-08 11 +114 val_114 2008-04-08 11 +116 val_116 2008-04-08 11 +118 val_118 2008-04-08 11 +118 val_118 2008-04-08 11 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 11 +119 val_119 2008-04-08 11 +120 val_120 2008-04-08 11 +120 val_120 2008-04-08 11 +125 val_125 2008-04-08 11 +125 val_125 2008-04-08 11 +126 val_126 2008-04-08 11 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 11 +128 val_128 2008-04-08 11 +129 val_129 2008-04-08 11 +129 val_129 2008-04-08 11 +131 val_131 2008-04-08 11 +133 val_133 2008-04-08 11 +134 val_134 2008-04-08 11 +134 val_134 2008-04-08 11 +136 val_136 2008-04-08 11 +137 val_137 2008-04-08 11 +137 val_137 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +138 val_138 2008-04-08 11 +143 val_143 2008-04-08 11 +145 val_145 2008-04-08 11 +146 val_146 2008-04-08 11 +146 val_146 2008-04-08 11 +149 val_149 2008-04-08 11 +149 val_149 2008-04-08 11 +150 val_150 2008-04-08 11 +152 val_152 2008-04-08 11 +152 val_152 2008-04-08 11 +153 val_153 2008-04-08 11 +155 val_155 2008-04-08 11 +156 val_156 2008-04-08 11 +157 val_157 2008-04-08 11 +158 val_158 2008-04-08 11 +160 val_160 2008-04-08 11 +162 val_162 2008-04-08 11 +163 val_163 2008-04-08 11 +164 val_164 2008-04-08 11 +164 val_164 2008-04-08 11 +165 val_165 2008-04-08 11 +165 val_165 2008-04-08 11 +166 val_166 2008-04-08 11 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 11 +167 val_167 2008-04-08 11 +168 val_168 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +169 val_169 2008-04-08 11 +170 val_170 2008-04-08 11 +172 val_172 2008-04-08 11 +172 val_172 2008-04-08 11 +174 val_174 2008-04-08 11 +174 val_174 2008-04-08 11 +175 val_175 2008-04-08 11 +175 val_175 2008-04-08 11 +176 val_176 2008-04-08 11 +176 val_176 2008-04-08 11 +177 val_177 2008-04-08 11 +178 val_178 2008-04-08 11 +179 val_179 2008-04-08 11 +179 val_179 2008-04-08 11 +180 val_180 2008-04-08 11 +181 val_181 2008-04-08 11 +183 val_183 2008-04-08 11 +186 val_186 2008-04-08 11 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 11 +187 val_187 2008-04-08 11 +189 val_189 2008-04-08 11 +190 val_190 2008-04-08 11 +191 val_191 2008-04-08 11 +191 val_191 2008-04-08 11 +192 val_192 2008-04-08 11 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 11 +193 val_193 2008-04-08 11 +194 val_194 2008-04-08 11 +195 val_195 2008-04-08 11 +195 val_195 2008-04-08 11 +196 val_196 2008-04-08 11 +197 val_197 2008-04-08 11 +197 val_197 2008-04-08 11 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 11 +199 val_199 2008-04-08 11 +200 val_200 2008-04-08 11 +200 val_200 2008-04-08 11 +201 val_201 2008-04-08 11 +202 val_202 2008-04-08 11 +203 val_203 2008-04-08 11 +203 val_203 2008-04-08 11 +205 val_205 2008-04-08 11 +205 val_205 2008-04-08 11 +207 val_207 2008-04-08 11 +207 val_207 2008-04-08 11 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 11 +208 val_208 2008-04-08 11 +209 val_209 2008-04-08 11 +209 val_209 2008-04-08 11 +213 val_213 2008-04-08 11 +213 val_213 2008-04-08 11 +214 val_214 2008-04-08 11 +216 val_216 2008-04-08 11 +216 val_216 2008-04-08 11 +217 val_217 2008-04-08 11 +217 val_217 2008-04-08 11 +218 val_218 2008-04-08 11 +219 val_219 2008-04-08 11 +219 val_219 2008-04-08 11 +221 val_221 2008-04-08 11 +221 val_221 2008-04-08 11 +222 val_222 2008-04-08 11 +223 val_223 2008-04-08 11 +223 val_223 2008-04-08 11 +224 val_224 2008-04-08 11 +224 val_224 2008-04-08 11 +226 val_226 2008-04-08 11 +228 val_228 2008-04-08 11 +229 val_229 2008-04-08 11 +229 val_229 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +230 val_230 2008-04-08 11 +233 val_233 2008-04-08 11 +233 val_233 2008-04-08 11 +235 val_235 2008-04-08 11 +237 val_237 2008-04-08 11 +237 val_237 2008-04-08 11 +238 val_238 2008-04-08 11 +238 val_238 2008-04-08 11 +239 val_239 2008-04-08 11 +239 val_239 2008-04-08 11 +241 val_241 2008-04-08 11 +242 val_242 2008-04-08 11 +242 val_242 2008-04-08 11 +244 val_244 2008-04-08 11 +247 val_247 2008-04-08 11 +248 val_248 2008-04-08 11 +249 val_249 2008-04-08 11 +252 val_252 2008-04-08 11 +255 val_255 2008-04-08 11 +255 val_255 2008-04-08 11 +256 val_256 2008-04-08 11 +256 val_256 2008-04-08 11 +257 val_257 2008-04-08 11 +258 val_258 2008-04-08 11 +260 val_260 2008-04-08 11 +262 val_262 2008-04-08 11 +263 val_263 2008-04-08 11 +265 val_265 2008-04-08 11 +265 val_265 2008-04-08 11 +266 val_266 2008-04-08 11 +272 val_272 2008-04-08 11 +272 val_272 2008-04-08 11 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 11 +273 val_273 2008-04-08 11 +274 val_274 2008-04-08 11 +275 val_275 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 11 +278 val_278 2008-04-08 11 +278 val_278 2008-04-08 11 +280 val_280 2008-04-08 11 +280 val_280 2008-04-08 11 +281 val_281 2008-04-08 11 +281 val_281 2008-04-08 11 +282 val_282 2008-04-08 11 +282 val_282 2008-04-08 11 +283 val_283 2008-04-08 11 +284 val_284 2008-04-08 11 +285 val_285 2008-04-08 11 +286 val_286 2008-04-08 11 +287 val_287 2008-04-08 11 +288 val_288 2008-04-08 11 +288 val_288 2008-04-08 11 +289 val_289 2008-04-08 11 +291 val_291 2008-04-08 11 +292 val_292 2008-04-08 11 +296 val_296 2008-04-08 11 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 11 +298 val_298 2008-04-08 11 +302 val_302 2008-04-08 11 +305 val_305 2008-04-08 11 +306 val_306 2008-04-08 11 +307 val_307 2008-04-08 11 +307 val_307 2008-04-08 11 +308 val_308 2008-04-08 11 +309 val_309 2008-04-08 11 +309 val_309 2008-04-08 11 +310 val_310 2008-04-08 11 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 11 +311 val_311 2008-04-08 11 +315 val_315 2008-04-08 11 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 11 +316 val_316 2008-04-08 11 +317 val_317 2008-04-08 11 +317 val_317 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +321 val_321 2008-04-08 11 +321 val_321 2008-04-08 11 +322 val_322 2008-04-08 11 +322 val_322 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +325 val_325 2008-04-08 11 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 11 +327 val_327 2008-04-08 11 +331 val_331 2008-04-08 11 +331 val_331 2008-04-08 11 +332 val_332 2008-04-08 11 +333 val_333 2008-04-08 11 +333 val_333 2008-04-08 11 +335 val_335 2008-04-08 11 +336 val_336 2008-04-08 11 +338 val_338 2008-04-08 11 +339 val_339 2008-04-08 11 +341 val_341 2008-04-08 11 +342 val_342 2008-04-08 11 +342 val_342 2008-04-08 11 +344 val_344 2008-04-08 11 +344 val_344 2008-04-08 11 +345 val_345 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 11 +351 val_351 2008-04-08 11 +353 val_353 2008-04-08 11 +353 val_353 2008-04-08 11 +356 val_356 2008-04-08 11 +360 val_360 2008-04-08 11 +362 val_362 2008-04-08 11 +364 val_364 2008-04-08 11 +365 val_365 2008-04-08 11 +366 val_366 2008-04-08 11 +367 val_367 2008-04-08 11 +367 val_367 2008-04-08 11 +368 val_368 2008-04-08 11 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 11 +369 val_369 2008-04-08 11 +373 val_373 2008-04-08 11 +374 val_374 2008-04-08 11 +375 val_375 2008-04-08 11 +377 val_377 2008-04-08 11 +378 val_378 2008-04-08 11 +379 val_379 2008-04-08 11 +382 val_382 2008-04-08 11 +382 val_382 2008-04-08 11 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 11 +384 val_384 2008-04-08 11 +386 val_386 2008-04-08 11 +389 val_389 2008-04-08 11 +392 val_392 2008-04-08 11 +393 val_393 2008-04-08 11 +394 val_394 2008-04-08 11 +395 val_395 2008-04-08 11 +395 val_395 2008-04-08 11 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 11 +396 val_396 2008-04-08 11 +397 val_397 2008-04-08 11 +397 val_397 2008-04-08 11 +399 val_399 2008-04-08 11 +399 val_399 2008-04-08 11 +400 val_400 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +401 val_401 2008-04-08 11 +402 val_402 2008-04-08 11 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 11 +403 val_403 2008-04-08 11 +404 val_404 2008-04-08 11 +404 val_404 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +406 val_406 2008-04-08 11 +407 val_407 2008-04-08 11 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 11 +409 val_409 2008-04-08 11 +411 val_411 2008-04-08 11 +413 val_413 2008-04-08 11 +413 val_413 2008-04-08 11 +414 val_414 2008-04-08 11 +414 val_414 2008-04-08 11 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 11 +417 val_417 2008-04-08 11 +418 val_418 2008-04-08 11 +419 val_419 2008-04-08 11 +421 val_421 2008-04-08 11 +424 val_424 2008-04-08 11 +424 val_424 2008-04-08 11 +427 val_427 2008-04-08 11 +429 val_429 2008-04-08 11 +429 val_429 2008-04-08 11 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 11 +430 val_430 2008-04-08 11 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 11 +431 val_431 2008-04-08 11 +432 val_432 2008-04-08 11 +435 val_435 2008-04-08 11 +436 val_436 2008-04-08 11 +437 val_437 2008-04-08 11 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 11 +438 val_438 2008-04-08 11 +439 val_439 2008-04-08 11 +439 val_439 2008-04-08 11 +443 val_443 2008-04-08 11 +444 val_444 2008-04-08 11 +446 val_446 2008-04-08 11 +448 val_448 2008-04-08 11 +449 val_449 2008-04-08 11 +452 val_452 2008-04-08 11 +453 val_453 2008-04-08 11 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 11 +454 val_454 2008-04-08 11 +455 val_455 2008-04-08 11 +457 val_457 2008-04-08 11 +458 val_458 2008-04-08 11 +458 val_458 2008-04-08 11 +459 val_459 2008-04-08 11 +459 val_459 2008-04-08 11 +460 val_460 2008-04-08 11 +462 val_462 2008-04-08 11 +462 val_462 2008-04-08 11 +463 val_463 2008-04-08 11 +463 val_463 2008-04-08 11 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 11 +466 val_466 2008-04-08 11 +467 val_467 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +468 val_468 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +470 val_470 2008-04-08 11 +472 val_472 2008-04-08 11 +475 val_475 2008-04-08 11 +477 val_477 2008-04-08 11 +478 val_478 2008-04-08 11 +478 val_478 2008-04-08 11 +479 val_479 2008-04-08 11 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 11 +480 val_480 2008-04-08 11 +481 val_481 2008-04-08 11 +482 val_482 2008-04-08 11 +483 val_483 2008-04-08 11 +484 val_484 2008-04-08 11 +485 val_485 2008-04-08 11 +487 val_487 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +489 val_489 2008-04-08 11 +490 val_490 2008-04-08 11 +491 val_491 2008-04-08 11 +492 val_492 2008-04-08 11 +492 val_492 2008-04-08 11 +493 val_493 2008-04-08 11 +494 val_494 2008-04-08 11 +495 val_495 2008-04-08 11 +496 val_496 2008-04-08 11 +497 val_497 2008-04-08 11 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-31-d60297fed03b455c29daa4afb4d1e858 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-31-d60297fed03b455c29daa4afb4d1e858 new file mode 100644 index 0000000000000..352ab5a6b96a4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-31-d60297fed03b455c29daa4afb4d1e858 @@ -0,0 +1,14 @@ +tableName:merge_dynamic_part +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1431818582215388621/merge_dynamic_part +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:true +partitionColumns:struct partition_columns { string ds, string hr} +totalNumberFiles:1 +totalFileSize:5812 +maxFileSize:5812 +minFileSize:5812 +lastAccessTime:0 +lastUpdateTime:1389738939000 diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-4-41df7b4938cff8b7ebffc3f5c701dccf b/sql/hive/src/test/resources/golden/merge_dynamic_partition-4-41df7b4938cff8b7ebffc3f5c701dccf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-5-8026cdd2390eec2c72a0591ae5668185 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-5-8026cdd2390eec2c72a0591ae5668185 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-6-3b57c0e3fccea5322373f3725c95ec00 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-6-3b57c0e3fccea5322373f3725c95ec00 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-7-777de794b7f27ea63f29a9784663393b b/sql/hive/src/test/resources/golden/merge_dynamic_partition-7-777de794b7f27ea63f29a9784663393b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-8-2f1578dbc029b62daa9d47d8fa473960 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-8-2f1578dbc029b62daa9d47d8fa473960 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-8-2f1578dbc029b62daa9d47d8fa473960 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition-9-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/merge_dynamic_partition-9-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition-9-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-0-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-0-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-0-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-1-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-1-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-1-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-10-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-10-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-10-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-11-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-11-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-11-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-12-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-12-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-12-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-13-2a9cffbef1ebd3df8e4de4eb22777cf9 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-13-2a9cffbef1ebd3df8e4de4eb22777cf9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-13-2a9cffbef1ebd3df8e4de4eb22777cf9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-14-3a4c24fd561f459025264baa3fb6d87 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-14-3a4c24fd561f459025264baa3fb6d87 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-14-3a4c24fd561f459025264baa3fb6d87 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-15-dbf4eae8430a97a6e70b1c6222218cd3 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-15-dbf4eae8430a97a6e70b1c6222218cd3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-16-16adcdb0e324ad233769e124b5b349da b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-16-16adcdb0e324ad233769e124b5b349da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-17-d60297fed03b455c29daa4afb4d1e858 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-17-d60297fed03b455c29daa4afb4d1e858 new file mode 100644 index 0000000000000..f3812861b3d6d --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-17-d60297fed03b455c29daa4afb4d1e858 @@ -0,0 +1,14 @@ +tableName:merge_dynamic_part +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5646492510204438812/merge_dynamic_part +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:true +partitionColumns:struct partition_columns { string ds, string hr} +totalNumberFiles:3 +totalFileSize:17415 +maxFileSize:5901 +minFileSize:5702 +lastAccessTime:0 +lastUpdateTime:1389740265000 diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-2-190cefc93e46906e404039de0fd5f513 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-2-190cefc93e46906e404039de0fd5f513 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-3-25401dd2c1c258e06f1b96fefd19e27f b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-3-25401dd2c1c258e06f1b96fefd19e27f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-4-41df7b4938cff8b7ebffc3f5c701dccf b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-4-41df7b4938cff8b7ebffc3f5c701dccf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-5-8026cdd2390eec2c72a0591ae5668185 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-5-8026cdd2390eec2c72a0591ae5668185 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-6-3b57c0e3fccea5322373f3725c95ec00 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-6-3b57c0e3fccea5322373f3725c95ec00 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-7-777de794b7f27ea63f29a9784663393b b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-7-777de794b7f27ea63f29a9784663393b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-8-6f7f59de1fbd607e844a2dc9394a2df8 b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-8-6f7f59de1fbd607e844a2dc9394a2df8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition2-9-982f10fc4e4f6bab9d4ca5f3cecca2ba b/sql/hive/src/test/resources/golden/merge_dynamic_partition2-9-982f10fc4e4f6bab9d4ca5f3cecca2ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-0-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-0-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-0-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-1-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-1-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-1-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-10-d176a1b243ac7190fbc319d73a164e2d b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-10-d176a1b243ac7190fbc319d73a164e2d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-11-f64c176e6e3b2d9ffa1b9e14491dc4c6 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-11-f64c176e6e3b2d9ffa1b9e14491dc4c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-12-a37d4d5c4eec82d56f91754e5fdb0f9a b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-12-a37d4d5c4eec82d56f91754e5fdb0f9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-13-c512eee654e7313ff9c6efb35c5b0a88 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-13-c512eee654e7313ff9c6efb35c5b0a88 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-14-ea3e89ffe987e20dffd8388a2dbcc260 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-14-ea3e89ffe987e20dffd8388a2dbcc260 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-15-e525a096de36a3d157db1b4947e1fbb0 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-15-e525a096de36a3d157db1b4947e1fbb0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-16-5621a4ac88bf8cffea061cb7cb9f8d73 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-16-5621a4ac88bf8cffea061cb7cb9f8d73 new file mode 100644 index 0000000000000..e9c723bbd136e --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-16-5621a4ac88bf8cffea061cb7cb9f8d73 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-17-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-17-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-17-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-18-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-18-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-18-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-19-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-19-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-19-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-2-190cefc93e46906e404039de0fd5f513 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-2-190cefc93e46906e404039de0fd5f513 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-20-2a9cffbef1ebd3df8e4de4eb22777cf9 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-20-2a9cffbef1ebd3df8e4de4eb22777cf9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-20-2a9cffbef1ebd3df8e4de4eb22777cf9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-21-3a4c24fd561f459025264baa3fb6d87 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-21-3a4c24fd561f459025264baa3fb6d87 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-21-3a4c24fd561f459025264baa3fb6d87 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-22-bf8877c86d4b4cd7da2939cdf517acc5 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-22-bf8877c86d4b4cd7da2939cdf517acc5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-23-3ffba3098571099bc2b13614ae3defc5 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-23-3ffba3098571099bc2b13614ae3defc5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-24-c9f91a11d9be1e981e6ec284572bbb2a b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-24-c9f91a11d9be1e981e6ec284572bbb2a new file mode 100644 index 0000000000000..5e44ab6b5cef9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-24-c9f91a11d9be1e981e6ec284572bbb2a @@ -0,0 +1,4 @@ +2008-04-08 11 500 +2008-04-08 12 500 +2008-04-09 11 1000 +2008-04-09 12 1000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-25-d60297fed03b455c29daa4afb4d1e858 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-25-d60297fed03b455c29daa4afb4d1e858 new file mode 100644 index 0000000000000..8cd9e4d2c201a --- /dev/null +++ b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-25-d60297fed03b455c29daa4afb4d1e858 @@ -0,0 +1,14 @@ +tableName:merge_dynamic_part +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/merge_dynamic_part +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:true +partitionColumns:struct partition_columns { string ds, string hr} +totalNumberFiles:6 +totalFileSize:34830 +maxFileSize:5812 +minFileSize:5791 +lastAccessTime:0 +lastUpdateTime:1389739573000 diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-3-25401dd2c1c258e06f1b96fefd19e27f b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-3-25401dd2c1c258e06f1b96fefd19e27f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-4-41df7b4938cff8b7ebffc3f5c701dccf b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-4-41df7b4938cff8b7ebffc3f5c701dccf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-5-8026cdd2390eec2c72a0591ae5668185 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-5-8026cdd2390eec2c72a0591ae5668185 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-6-3b57c0e3fccea5322373f3725c95ec00 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-6-3b57c0e3fccea5322373f3725c95ec00 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-7-777de794b7f27ea63f29a9784663393b b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-7-777de794b7f27ea63f29a9784663393b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-8-6916eceaa04091d1453a7d0d5257213c b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-8-6916eceaa04091d1453a7d0d5257213c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/merge_dynamic_partition3-9-8d0305d089aa5198601cc39073fff528 b/sql/hive/src/test/resources/golden/merge_dynamic_partition3-9-8d0305d089aa5198601cc39073fff528 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins-0-90c36ed2dea064c1951856a1a2cd3d38 b/sql/hive/src/test/resources/golden/mergejoins-0-90c36ed2dea064c1951856a1a2cd3d38 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins-1-63de7fdfd7513d63a4eadafc8534f69b b/sql/hive/src/test/resources/golden/mergejoins-1-63de7fdfd7513d63a4eadafc8534f69b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins-2-6b9f3810606db1e9036561f1173ac75c b/sql/hive/src/test/resources/golden/mergejoins-2-6b9f3810606db1e9036561f1173ac75c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins-3-c408f69470d652da283442a62b384e46 b/sql/hive/src/test/resources/golden/mergejoins-3-c408f69470d652da283442a62b384e46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins-4-80b6c6ce31a4d4e26f6d4be49beae996 b/sql/hive/src/test/resources/golden/mergejoins-4-80b6c6ce31a4d4e26f6d4be49beae996 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins-5-adae80fe415023783fca5499e3edf6e b/sql/hive/src/test/resources/golden/mergejoins-5-adae80fe415023783fca5499e3edf6e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins-6-6169410e9f077097d1a766724dfc51df b/sql/hive/src/test/resources/golden/mergejoins-6-6169410e9f077097d1a766724dfc51df new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-0-7537f6537cfced8ba5bd203e3d1c8a87 b/sql/hive/src/test/resources/golden/mergejoins_mixed-0-7537f6537cfced8ba5bd203e3d1c8a87 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-1-bd83c916b6b06b6e813d7ecc6ada1d03 b/sql/hive/src/test/resources/golden/mergejoins_mixed-1-bd83c916b6b06b6e813d7ecc6ada1d03 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-10-abb02d2cadc535ff51660d83e6609dc8 b/sql/hive/src/test/resources/golden/mergejoins_mixed-10-abb02d2cadc535ff51660d83e6609dc8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-11-725ed77dd110398f461926f190b4b5c8 b/sql/hive/src/test/resources/golden/mergejoins_mixed-11-725ed77dd110398f461926f190b4b5c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-12-b5d5c30fab0edd7cb5dc535000d20e3b b/sql/hive/src/test/resources/golden/mergejoins_mixed-12-b5d5c30fab0edd7cb5dc535000d20e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-2-de24edb80e51049d241fa0ce2e3165ff b/sql/hive/src/test/resources/golden/mergejoins_mixed-2-de24edb80e51049d241fa0ce2e3165ff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-3-5d4bbcec2f91b849642725fa843bf4e8 b/sql/hive/src/test/resources/golden/mergejoins_mixed-3-5d4bbcec2f91b849642725fa843bf4e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-4-24a8048db8d561e28bcb4941498b9687 b/sql/hive/src/test/resources/golden/mergejoins_mixed-4-24a8048db8d561e28bcb4941498b9687 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-5-ab187bec261e23cca73a144d4ffcb4d8 b/sql/hive/src/test/resources/golden/mergejoins_mixed-5-ab187bec261e23cca73a144d4ffcb4d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-6-e108b1560a601946194cecaf4da12491 b/sql/hive/src/test/resources/golden/mergejoins_mixed-6-e108b1560a601946194cecaf4da12491 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-7-d2068e6569b5d253932ce9d59be5221 b/sql/hive/src/test/resources/golden/mergejoins_mixed-7-d2068e6569b5d253932ce9d59be5221 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-8-bdba45fc8a7bd7af0a8f983160d550b0 b/sql/hive/src/test/resources/golden/mergejoins_mixed-8-bdba45fc8a7bd7af0a8f983160d550b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mergejoins_mixed-9-b7a719a0596b89bf6c35b3dc5dfbe1e6 b/sql/hive/src/test/resources/golden/mergejoins_mixed-9-b7a719a0596b89bf6c35b3dc5dfbe1e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-0-f0c7b56d5ad529ae6c98875501a9548d b/sql/hive/src/test/resources/golden/metadataonly1-0-f0c7b56d5ad529ae6c98875501a9548d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-1-4d93504b19d34fd360de6af7fb1f3715 b/sql/hive/src/test/resources/golden/metadataonly1-1-4d93504b19d34fd360de6af7fb1f3715 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-10-1c7bb3877b2e1e7bb9166537715d442d b/sql/hive/src/test/resources/golden/metadataonly1-10-1c7bb3877b2e1e7bb9166537715d442d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-11-30df79b460916f3f67ccf1d7b7a076f2 b/sql/hive/src/test/resources/golden/metadataonly1-11-30df79b460916f3f67ccf1d7b7a076f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-2-9eadfd16be30c653625fce7b74048d9d b/sql/hive/src/test/resources/golden/metadataonly1-2-9eadfd16be30c653625fce7b74048d9d new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/metadataonly1-2-9eadfd16be30c653625fce7b74048d9d @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/metadataonly1-3-7980a98d580a002b7ad7eef780039f67 b/sql/hive/src/test/resources/golden/metadataonly1-3-7980a98d580a002b7ad7eef780039f67 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-4-4d93504b19d34fd360de6af7fb1f3715 b/sql/hive/src/test/resources/golden/metadataonly1-4-4d93504b19d34fd360de6af7fb1f3715 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-5-9eadfd16be30c653625fce7b74048d9d b/sql/hive/src/test/resources/golden/metadataonly1-5-9eadfd16be30c653625fce7b74048d9d new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/metadataonly1-5-9eadfd16be30c653625fce7b74048d9d @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/metadataonly1-6-537256f669bc9101d4834df67aae8cdf b/sql/hive/src/test/resources/golden/metadataonly1-6-537256f669bc9101d4834df67aae8cdf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-7-92512b7ba2cb393d1335dcc2bcf5c2bc b/sql/hive/src/test/resources/golden/metadataonly1-7-92512b7ba2cb393d1335dcc2bcf5c2bc new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/metadataonly1-7-92512b7ba2cb393d1335dcc2bcf5c2bc @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/metadataonly1-8-b140da3b2e7f4bdf101a8bfb0db88999 b/sql/hive/src/test/resources/golden/metadataonly1-8-b140da3b2e7f4bdf101a8bfb0db88999 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/metadataonly1-9-2c3b29a3df9b07e7add15e4e7c561644 b/sql/hive/src/test/resources/golden/metadataonly1-9-2c3b29a3df9b07e7add15e4e7c561644 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/metadataonly1-9-2c3b29a3df9b07e7add15e4e7c561644 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/mi-0-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/mi-0-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mi-0-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mi-1-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/mi-1-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mi-1-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mi-2-abf8847fb25b96e0f9477808d8378e5e b/sql/hive/src/test/resources/golden/mi-2-abf8847fb25b96e0f9477808d8378e5e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mi-3-b66a495f7bdf106a7886b72267b8659d b/sql/hive/src/test/resources/golden/mi-3-b66a495f7bdf106a7886b72267b8659d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mi-4-ba6a06aef35cbd1e7c5a3c253f757b2c b/sql/hive/src/test/resources/golden/mi-4-ba6a06aef35cbd1e7c5a3c253f757b2c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/mi-5-4aad9be12cbe4e7be5540924e6b5e7dc b/sql/hive/src/test/resources/golden/mi-5-4aad9be12cbe4e7be5540924e6b5e7dc new file mode 100644 index 0000000000000..3b011a048ba42 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mi-5-4aad9be12cbe4e7be5540924e6b5e7dc @@ -0,0 +1 @@ +ds=2008-04-08/hr=11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mi-6-b331d7aa963adac3b2e1de803f90e199 b/sql/hive/src/test/resources/golden/mi-6-b331d7aa963adac3b2e1de803f90e199 new file mode 100644 index 0000000000000..0cdd3e8594c59 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mi-6-b331d7aa963adac3b2e1de803f90e199 @@ -0,0 +1 @@ +ds=2008-04-08/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mi-7-fca4e06de103c3cbb675fa43e7077800 b/sql/hive/src/test/resources/golden/mi-7-fca4e06de103c3cbb675fa43e7077800 new file mode 100644 index 0000000000000..f4026a591a958 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mi-7-fca4e06de103c3cbb675fa43e7077800 @@ -0,0 +1,500 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/mi-8-e946bdb81b0a831908c1c8196fdff215 b/sql/hive/src/test/resources/golden/mi-8-e946bdb81b0a831908c1c8196fdff215 new file mode 100644 index 0000000000000..f132aba9f3ee1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/mi-8-e946bdb81b0a831908c1c8196fdff215 @@ -0,0 +1,309 @@ +0 val_0 2008-04-08 12 +2 val_2 2008-04-08 12 +4 val_4 2008-04-08 12 +5 val_5 2008-04-08 12 +8 val_8 2008-04-08 12 +9 val_9 2008-04-08 12 +10 val_10 2008-04-08 12 +11 val_11 2008-04-08 12 +12 val_12 2008-04-08 12 +15 val_15 2008-04-08 12 +17 val_17 2008-04-08 12 +18 val_18 2008-04-08 12 +19 val_19 2008-04-08 12 +20 val_20 2008-04-08 12 +24 val_24 2008-04-08 12 +26 val_26 2008-04-08 12 +27 val_27 2008-04-08 12 +28 val_28 2008-04-08 12 +30 val_30 2008-04-08 12 +33 val_33 2008-04-08 12 +34 val_34 2008-04-08 12 +35 val_35 2008-04-08 12 +37 val_37 2008-04-08 12 +41 val_41 2008-04-08 12 +42 val_42 2008-04-08 12 +43 val_43 2008-04-08 12 +44 val_44 2008-04-08 12 +47 val_47 2008-04-08 12 +51 val_51 2008-04-08 12 +53 val_53 2008-04-08 12 +54 val_54 2008-04-08 12 +57 val_57 2008-04-08 12 +58 val_58 2008-04-08 12 +64 val_64 2008-04-08 12 +65 val_65 2008-04-08 12 +66 val_66 2008-04-08 12 +67 val_67 2008-04-08 12 +69 val_69 2008-04-08 12 +70 val_70 2008-04-08 12 +72 val_72 2008-04-08 12 +74 val_74 2008-04-08 12 +76 val_76 2008-04-08 12 +77 val_77 2008-04-08 12 +78 val_78 2008-04-08 12 +80 val_80 2008-04-08 12 +82 val_82 2008-04-08 12 +83 val_83 2008-04-08 12 +84 val_84 2008-04-08 12 +85 val_85 2008-04-08 12 +86 val_86 2008-04-08 12 +87 val_87 2008-04-08 12 +90 val_90 2008-04-08 12 +92 val_92 2008-04-08 12 +95 val_95 2008-04-08 12 +96 val_96 2008-04-08 12 +97 val_97 2008-04-08 12 +98 val_98 2008-04-08 12 +100 val_100 2008-04-08 12 +103 val_103 2008-04-08 12 +104 val_104 2008-04-08 12 +105 val_105 2008-04-08 12 +111 val_111 2008-04-08 12 +113 val_113 2008-04-08 12 +114 val_114 2008-04-08 12 +116 val_116 2008-04-08 12 +118 val_118 2008-04-08 12 +119 val_119 2008-04-08 12 +120 val_120 2008-04-08 12 +125 val_125 2008-04-08 12 +126 val_126 2008-04-08 12 +128 val_128 2008-04-08 12 +129 val_129 2008-04-08 12 +131 val_131 2008-04-08 12 +133 val_133 2008-04-08 12 +134 val_134 2008-04-08 12 +136 val_136 2008-04-08 12 +137 val_137 2008-04-08 12 +138 val_138 2008-04-08 12 +143 val_143 2008-04-08 12 +145 val_145 2008-04-08 12 +146 val_146 2008-04-08 12 +149 val_149 2008-04-08 12 +150 val_150 2008-04-08 12 +152 val_152 2008-04-08 12 +153 val_153 2008-04-08 12 +155 val_155 2008-04-08 12 +156 val_156 2008-04-08 12 +157 val_157 2008-04-08 12 +158 val_158 2008-04-08 12 +160 val_160 2008-04-08 12 +162 val_162 2008-04-08 12 +163 val_163 2008-04-08 12 +164 val_164 2008-04-08 12 +165 val_165 2008-04-08 12 +166 val_166 2008-04-08 12 +167 val_167 2008-04-08 12 +168 val_168 2008-04-08 12 +169 val_169 2008-04-08 12 +170 val_170 2008-04-08 12 +172 val_172 2008-04-08 12 +174 val_174 2008-04-08 12 +175 val_175 2008-04-08 12 +176 val_176 2008-04-08 12 +177 val_177 2008-04-08 12 +178 val_178 2008-04-08 12 +179 val_179 2008-04-08 12 +180 val_180 2008-04-08 12 +181 val_181 2008-04-08 12 +183 val_183 2008-04-08 12 +186 val_186 2008-04-08 12 +187 val_187 2008-04-08 12 +189 val_189 2008-04-08 12 +190 val_190 2008-04-08 12 +191 val_191 2008-04-08 12 +192 val_192 2008-04-08 12 +193 val_193 2008-04-08 12 +194 val_194 2008-04-08 12 +195 val_195 2008-04-08 12 +196 val_196 2008-04-08 12 +197 val_197 2008-04-08 12 +199 val_199 2008-04-08 12 +200 val_200 2008-04-08 12 +201 val_201 2008-04-08 12 +202 val_202 2008-04-08 12 +203 val_203 2008-04-08 12 +205 val_205 2008-04-08 12 +207 val_207 2008-04-08 12 +208 val_208 2008-04-08 12 +209 val_209 2008-04-08 12 +213 val_213 2008-04-08 12 +214 val_214 2008-04-08 12 +216 val_216 2008-04-08 12 +217 val_217 2008-04-08 12 +218 val_218 2008-04-08 12 +219 val_219 2008-04-08 12 +221 val_221 2008-04-08 12 +222 val_222 2008-04-08 12 +223 val_223 2008-04-08 12 +224 val_224 2008-04-08 12 +226 val_226 2008-04-08 12 +228 val_228 2008-04-08 12 +229 val_229 2008-04-08 12 +230 val_230 2008-04-08 12 +233 val_233 2008-04-08 12 +235 val_235 2008-04-08 12 +237 val_237 2008-04-08 12 +238 val_238 2008-04-08 12 +239 val_239 2008-04-08 12 +241 val_241 2008-04-08 12 +242 val_242 2008-04-08 12 +244 val_244 2008-04-08 12 +247 val_247 2008-04-08 12 +248 val_248 2008-04-08 12 +249 val_249 2008-04-08 12 +252 val_252 2008-04-08 12 +255 val_255 2008-04-08 12 +256 val_256 2008-04-08 12 +257 val_257 2008-04-08 12 +258 val_258 2008-04-08 12 +260 val_260 2008-04-08 12 +262 val_262 2008-04-08 12 +263 val_263 2008-04-08 12 +265 val_265 2008-04-08 12 +266 val_266 2008-04-08 12 +272 val_272 2008-04-08 12 +273 val_273 2008-04-08 12 +274 val_274 2008-04-08 12 +275 val_275 2008-04-08 12 +277 val_277 2008-04-08 12 +278 val_278 2008-04-08 12 +280 val_280 2008-04-08 12 +281 val_281 2008-04-08 12 +282 val_282 2008-04-08 12 +283 val_283 2008-04-08 12 +284 val_284 2008-04-08 12 +285 val_285 2008-04-08 12 +286 val_286 2008-04-08 12 +287 val_287 2008-04-08 12 +288 val_288 2008-04-08 12 +289 val_289 2008-04-08 12 +291 val_291 2008-04-08 12 +292 val_292 2008-04-08 12 +296 val_296 2008-04-08 12 +298 val_298 2008-04-08 12 +302 val_302 2008-04-08 12 +305 val_305 2008-04-08 12 +306 val_306 2008-04-08 12 +307 val_307 2008-04-08 12 +308 val_308 2008-04-08 12 +309 val_309 2008-04-08 12 +310 val_310 2008-04-08 12 +311 val_311 2008-04-08 12 +315 val_315 2008-04-08 12 +316 val_316 2008-04-08 12 +317 val_317 2008-04-08 12 +318 val_318 2008-04-08 12 +321 val_321 2008-04-08 12 +322 val_322 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +327 val_327 2008-04-08 12 +331 val_331 2008-04-08 12 +332 val_332 2008-04-08 12 +333 val_333 2008-04-08 12 +335 val_335 2008-04-08 12 +336 val_336 2008-04-08 12 +338 val_338 2008-04-08 12 +339 val_339 2008-04-08 12 +341 val_341 2008-04-08 12 +342 val_342 2008-04-08 12 +344 val_344 2008-04-08 12 +345 val_345 2008-04-08 12 +348 val_348 2008-04-08 12 +351 val_351 2008-04-08 12 +353 val_353 2008-04-08 12 +356 val_356 2008-04-08 12 +360 val_360 2008-04-08 12 +362 val_362 2008-04-08 12 +364 val_364 2008-04-08 12 +365 val_365 2008-04-08 12 +366 val_366 2008-04-08 12 +367 val_367 2008-04-08 12 +368 val_368 2008-04-08 12 +369 val_369 2008-04-08 12 +373 val_373 2008-04-08 12 +374 val_374 2008-04-08 12 +375 val_375 2008-04-08 12 +377 val_377 2008-04-08 12 +378 val_378 2008-04-08 12 +379 val_379 2008-04-08 12 +382 val_382 2008-04-08 12 +384 val_384 2008-04-08 12 +386 val_386 2008-04-08 12 +389 val_389 2008-04-08 12 +392 val_392 2008-04-08 12 +393 val_393 2008-04-08 12 +394 val_394 2008-04-08 12 +395 val_395 2008-04-08 12 +396 val_396 2008-04-08 12 +397 val_397 2008-04-08 12 +399 val_399 2008-04-08 12 +400 val_400 2008-04-08 12 +401 val_401 2008-04-08 12 +402 val_402 2008-04-08 12 +403 val_403 2008-04-08 12 +404 val_404 2008-04-08 12 +406 val_406 2008-04-08 12 +407 val_407 2008-04-08 12 +409 val_409 2008-04-08 12 +411 val_411 2008-04-08 12 +413 val_413 2008-04-08 12 +414 val_414 2008-04-08 12 +417 val_417 2008-04-08 12 +418 val_418 2008-04-08 12 +419 val_419 2008-04-08 12 +421 val_421 2008-04-08 12 +424 val_424 2008-04-08 12 +427 val_427 2008-04-08 12 +429 val_429 2008-04-08 12 +430 val_430 2008-04-08 12 +431 val_431 2008-04-08 12 +432 val_432 2008-04-08 12 +435 val_435 2008-04-08 12 +436 val_436 2008-04-08 12 +437 val_437 2008-04-08 12 +438 val_438 2008-04-08 12 +439 val_439 2008-04-08 12 +443 val_443 2008-04-08 12 +444 val_444 2008-04-08 12 +446 val_446 2008-04-08 12 +448 val_448 2008-04-08 12 +449 val_449 2008-04-08 12 +452 val_452 2008-04-08 12 +453 val_453 2008-04-08 12 +454 val_454 2008-04-08 12 +455 val_455 2008-04-08 12 +457 val_457 2008-04-08 12 +458 val_458 2008-04-08 12 +459 val_459 2008-04-08 12 +460 val_460 2008-04-08 12 +462 val_462 2008-04-08 12 +463 val_463 2008-04-08 12 +466 val_466 2008-04-08 12 +467 val_467 2008-04-08 12 +468 val_468 2008-04-08 12 +469 val_469 2008-04-08 12 +470 val_470 2008-04-08 12 +472 val_472 2008-04-08 12 +475 val_475 2008-04-08 12 +477 val_477 2008-04-08 12 +478 val_478 2008-04-08 12 +479 val_479 2008-04-08 12 +480 val_480 2008-04-08 12 +481 val_481 2008-04-08 12 +482 val_482 2008-04-08 12 +483 val_483 2008-04-08 12 +484 val_484 2008-04-08 12 +485 val_485 2008-04-08 12 +487 val_487 2008-04-08 12 +489 val_489 2008-04-08 12 +490 val_490 2008-04-08 12 +491 val_491 2008-04-08 12 +492 val_492 2008-04-08 12 +493 val_493 2008-04-08 12 +494 val_494 2008-04-08 12 +495 val_495 2008-04-08 12 +496 val_496 2008-04-08 12 +497 val_497 2008-04-08 12 +498 val_498 2008-04-08 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-0-d2ea84f719d9ae2fb19e9e2a72c3d834 b/sql/hive/src/test/resources/golden/multiMapJoin1-0-d2ea84f719d9ae2fb19e9e2a72c3d834 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-1-10b9657a205f63e6127e29e8b477b30a b/sql/hive/src/test/resources/golden/multiMapJoin1-1-10b9657a205f63e6127e29e8b477b30a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-10-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/multiMapJoin1-10-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-10-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-11-d814d6eb99b04dc19ae83dadf372c7aa b/sql/hive/src/test/resources/golden/multiMapJoin1-11-d814d6eb99b04dc19ae83dadf372c7aa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-12-204073e1287b0582d50e652d466f1e66 b/sql/hive/src/test/resources/golden/multiMapJoin1-12-204073e1287b0582d50e652d466f1e66 new file mode 100644 index 0000000000000..55b22b1aa9f24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-12-204073e1287b0582d50e652d466f1e66 @@ -0,0 +1 @@ +580 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-13-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/multiMapJoin1-13-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-13-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-14-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/multiMapJoin1-14-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-14-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-15-4ab52efffec4d72a5b01bd253eeddcf4 b/sql/hive/src/test/resources/golden/multiMapJoin1-15-4ab52efffec4d72a5b01bd253eeddcf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-16-c14b300770b329ecb71e0275c88532d3 b/sql/hive/src/test/resources/golden/multiMapJoin1-16-c14b300770b329ecb71e0275c88532d3 new file mode 100644 index 0000000000000..55b22b1aa9f24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-16-c14b300770b329ecb71e0275c88532d3 @@ -0,0 +1 @@ +580 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-17-17e0bad549b265f8237e6c539b848dd5 b/sql/hive/src/test/resources/golden/multiMapJoin1-17-17e0bad549b265f8237e6c539b848dd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-18-49bc7f430b2591978067ca8f7d181cee b/sql/hive/src/test/resources/golden/multiMapJoin1-18-49bc7f430b2591978067ca8f7d181cee new file mode 100644 index 0000000000000..fa8ef14301a13 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-18-49bc7f430b2591978067ca8f7d181cee @@ -0,0 +1,6 @@ +270 +10 +10 +270 +10 +10 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-19-51acc9734833601aa37e8da9f3a06b91 b/sql/hive/src/test/resources/golden/multiMapJoin1-19-51acc9734833601aa37e8da9f3a06b91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-2-feca2d1242cf09e54dc177881a708842 b/sql/hive/src/test/resources/golden/multiMapJoin1-2-feca2d1242cf09e54dc177881a708842 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-20-6fb5b848305f559c6377cb7d34cc3216 b/sql/hive/src/test/resources/golden/multiMapJoin1-20-6fb5b848305f559c6377cb7d34cc3216 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-21-79973475ca07cb9932f752f6547779ac b/sql/hive/src/test/resources/golden/multiMapJoin1-21-79973475ca07cb9932f752f6547779ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-22-25e434b6d05e08fdd5f4d9957438917 b/sql/hive/src/test/resources/golden/multiMapJoin1-22-25e434b6d05e08fdd5f4d9957438917 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-22-25e434b6d05e08fdd5f4d9957438917 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-23-be8d26e5f6d5d41d5ce20b0ad443f0a b/sql/hive/src/test/resources/golden/multiMapJoin1-23-be8d26e5f6d5d41d5ce20b0ad443f0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-24-feed626e3216bcbda66b17f48305b5a1 b/sql/hive/src/test/resources/golden/multiMapJoin1-24-feed626e3216bcbda66b17f48305b5a1 new file mode 100644 index 0000000000000..a3a38a80b7910 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-24-feed626e3216bcbda66b17f48305b5a1 @@ -0,0 +1 @@ +247580 247580 247580 247580 247580 247580 548662743780 548662743780 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-25-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/multiMapJoin1-25-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-25-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-26-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/multiMapJoin1-26-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-26-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-27-36bd62bd41b1a0dd13f12d8d813f1943 b/sql/hive/src/test/resources/golden/multiMapJoin1-27-36bd62bd41b1a0dd13f12d8d813f1943 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-28-feed626e3216bcbda66b17f48305b5a1 b/sql/hive/src/test/resources/golden/multiMapJoin1-28-feed626e3216bcbda66b17f48305b5a1 new file mode 100644 index 0000000000000..a3a38a80b7910 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-28-feed626e3216bcbda66b17f48305b5a1 @@ -0,0 +1 @@ +247580 247580 247580 247580 247580 247580 548662743780 548662743780 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-29-ea23403b9eb55e8b06d1c198e439569f b/sql/hive/src/test/resources/golden/multiMapJoin1-29-ea23403b9eb55e8b06d1c198e439569f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-29-ea23403b9eb55e8b06d1c198e439569f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-3-9280a4b7f1087dda801c81f3a5827785 b/sql/hive/src/test/resources/golden/multiMapJoin1-3-9280a4b7f1087dda801c81f3a5827785 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-30-d8c886592f60bedef5d8cb967adcead3 b/sql/hive/src/test/resources/golden/multiMapJoin1-30-d8c886592f60bedef5d8cb967adcead3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-31-feed626e3216bcbda66b17f48305b5a1 b/sql/hive/src/test/resources/golden/multiMapJoin1-31-feed626e3216bcbda66b17f48305b5a1 new file mode 100644 index 0000000000000..a3a38a80b7910 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-31-feed626e3216bcbda66b17f48305b5a1 @@ -0,0 +1 @@ +247580 247580 247580 247580 247580 247580 548662743780 548662743780 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-32-e93301ee4ba157b466d7460775f3d350 b/sql/hive/src/test/resources/golden/multiMapJoin1-32-e93301ee4ba157b466d7460775f3d350 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-32-e93301ee4ba157b466d7460775f3d350 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-33-7be587cefa8323cbe42cbf469b998f7b b/sql/hive/src/test/resources/golden/multiMapJoin1-33-7be587cefa8323cbe42cbf469b998f7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-34-feed626e3216bcbda66b17f48305b5a1 b/sql/hive/src/test/resources/golden/multiMapJoin1-34-feed626e3216bcbda66b17f48305b5a1 new file mode 100644 index 0000000000000..a3a38a80b7910 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin1-34-feed626e3216bcbda66b17f48305b5a1 @@ -0,0 +1 @@ +247580 247580 247580 247580 247580 247580 548662743780 548662743780 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-4-53b81d2e161acea2ee58b7ac849ffe48 b/sql/hive/src/test/resources/golden/multiMapJoin1-4-53b81d2e161acea2ee58b7ac849ffe48 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-5-1e0b02b515a588ea99f6027f0aca36fe b/sql/hive/src/test/resources/golden/multiMapJoin1-5-1e0b02b515a588ea99f6027f0aca36fe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-6-74628c956e66e192e0cfeb7bd09f8b73 b/sql/hive/src/test/resources/golden/multiMapJoin1-6-74628c956e66e192e0cfeb7bd09f8b73 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-7-23813f3b8b47a1f5c4a8ee57cc8a66ba b/sql/hive/src/test/resources/golden/multiMapJoin1-7-23813f3b8b47a1f5c4a8ee57cc8a66ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-8-273de5cc585b04ea2210d90c1755568c b/sql/hive/src/test/resources/golden/multiMapJoin1-8-273de5cc585b04ea2210d90c1755568c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin1-9-3df5ed60d70bc1a826a0e32c8019dc49 b/sql/hive/src/test/resources/golden/multiMapJoin1-9-3df5ed60d70bc1a826a0e32c8019dc49 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-0-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/multiMapJoin2-0-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-0-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-1-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/multiMapJoin2-1-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-1-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-10-1905c7759350b107679aef86226739f8 b/sql/hive/src/test/resources/golden/multiMapJoin2-10-1905c7759350b107679aef86226739f8 new file mode 100644 index 0000000000000..3c505d9663010 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-10-1905c7759350b107679aef86226739f8 @@ -0,0 +1,53 @@ +NULL +66 +66 +98 +98 +98 +128 +128 +128 +128 +146 +146 +146 +150 +150 +213 +213 +213 +224 +224 +224 +238 +238 +238 +255 +255 +255 +273 +273 +273 +273 +278 +278 +278 +311 +311 +311 +311 +369 +369 +369 +369 +401 +401 +401 +401 +401 +401 +406 +406 +406 +406 +406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-11-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/multiMapJoin2-11-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-11-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-12-1d4f22cb25ffe3d84e73fe2acc81a92e b/sql/hive/src/test/resources/golden/multiMapJoin2-12-1d4f22cb25ffe3d84e73fe2acc81a92e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-13-6b984427a771fe650fa875be98722cbe b/sql/hive/src/test/resources/golden/multiMapJoin2-13-6b984427a771fe650fa875be98722cbe new file mode 100644 index 0000000000000..a877195ef3ab1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-13-6b984427a771fe650fa875be98722cbe @@ -0,0 +1,15 @@ +66 1 +98 1 +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-14-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/multiMapJoin2-14-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-14-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-15-a4ac00f2a50cd08e7dd5543adb81972b b/sql/hive/src/test/resources/golden/multiMapJoin2-15-a4ac00f2a50cd08e7dd5543adb81972b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-16-6b984427a771fe650fa875be98722cbe b/sql/hive/src/test/resources/golden/multiMapJoin2-16-6b984427a771fe650fa875be98722cbe new file mode 100644 index 0000000000000..a877195ef3ab1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-16-6b984427a771fe650fa875be98722cbe @@ -0,0 +1,15 @@ +66 1 +98 1 +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-17-b9d963d24994c47c3776dda6f7d3881f b/sql/hive/src/test/resources/golden/multiMapJoin2-17-b9d963d24994c47c3776dda6f7d3881f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-17-b9d963d24994c47c3776dda6f7d3881f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-18-cb1f964731ee7ac045db89266a919586 b/sql/hive/src/test/resources/golden/multiMapJoin2-18-cb1f964731ee7ac045db89266a919586 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-19-77324702b091d514ca16d029f65d3d56 b/sql/hive/src/test/resources/golden/multiMapJoin2-19-77324702b091d514ca16d029f65d3d56 new file mode 100644 index 0000000000000..a877195ef3ab1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-19-77324702b091d514ca16d029f65d3d56 @@ -0,0 +1,15 @@ +66 1 +98 1 +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-2-7f7f3daa7ff45944c3d534f9feff3bb6 b/sql/hive/src/test/resources/golden/multiMapJoin2-2-7f7f3daa7ff45944c3d534f9feff3bb6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-2-7f7f3daa7ff45944c3d534f9feff3bb6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-20-777edd9d575f3480ca6cebe4be57b1f6 b/sql/hive/src/test/resources/golden/multiMapJoin2-20-777edd9d575f3480ca6cebe4be57b1f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-20-777edd9d575f3480ca6cebe4be57b1f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-21-3db633aa7d2c47682bb15024d6abdd33 b/sql/hive/src/test/resources/golden/multiMapJoin2-21-3db633aa7d2c47682bb15024d6abdd33 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-22-77324702b091d514ca16d029f65d3d56 b/sql/hive/src/test/resources/golden/multiMapJoin2-22-77324702b091d514ca16d029f65d3d56 new file mode 100644 index 0000000000000..a877195ef3ab1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-22-77324702b091d514ca16d029f65d3d56 @@ -0,0 +1,15 @@ +66 1 +98 1 +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-23-18139096bb78fa5080054686f27e5e9 b/sql/hive/src/test/resources/golden/multiMapJoin2-23-18139096bb78fa5080054686f27e5e9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-24-e148026f8994e22ca756c68753a0cc26 b/sql/hive/src/test/resources/golden/multiMapJoin2-24-e148026f8994e22ca756c68753a0cc26 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-25-b04195464e014cb47fd20a76b5f9ac0 b/sql/hive/src/test/resources/golden/multiMapJoin2-25-b04195464e014cb47fd20a76b5f9ac0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-26-2136f3783a9764de762e49c1ca28637f b/sql/hive/src/test/resources/golden/multiMapJoin2-26-2136f3783a9764de762e49c1ca28637f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-27-d28d0f671f5d913a56d75812d24cca8e b/sql/hive/src/test/resources/golden/multiMapJoin2-27-d28d0f671f5d913a56d75812d24cca8e new file mode 100644 index 0000000000000..25bf17fc5aaab --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-27-d28d0f671f5d913a56d75812d24cca8e @@ -0,0 +1 @@ +18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-3-622f276b2eb5d55649a7a8689aacea5d b/sql/hive/src/test/resources/golden/multiMapJoin2-3-622f276b2eb5d55649a7a8689aacea5d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-4-5ede8243cc4ba2fbd24a77578502a656 b/sql/hive/src/test/resources/golden/multiMapJoin2-4-5ede8243cc4ba2fbd24a77578502a656 new file mode 100644 index 0000000000000..8984af9eb83dd --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-4-5ede8243cc4ba2fbd24a77578502a656 @@ -0,0 +1,74 @@ +66 +66 +98 +98 +98 +98 +128 +128 +128 +128 +128 +128 +146 +146 +146 +146 +150 +150 +213 +213 +213 +213 +224 +224 +224 +224 +238 +238 +238 +238 +255 +255 +255 +255 +273 +273 +273 +273 +273 +273 +278 +278 +278 +278 +311 +311 +311 +311 +311 +311 +369 +369 +369 +369 +369 +369 +401 +401 +401 +401 +401 +401 +401 +401 +401 +401 +406 +406 +406 +406 +406 +406 +406 +406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-5-21f96f651fb4f28ae5e2999fc1f82192 b/sql/hive/src/test/resources/golden/multiMapJoin2-5-21f96f651fb4f28ae5e2999fc1f82192 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-5-21f96f651fb4f28ae5e2999fc1f82192 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-6-d7733ae25ad6fcb1bac1135271732502 b/sql/hive/src/test/resources/golden/multiMapJoin2-6-d7733ae25ad6fcb1bac1135271732502 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-7-5ede8243cc4ba2fbd24a77578502a656 b/sql/hive/src/test/resources/golden/multiMapJoin2-7-5ede8243cc4ba2fbd24a77578502a656 new file mode 100644 index 0000000000000..8984af9eb83dd --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-7-5ede8243cc4ba2fbd24a77578502a656 @@ -0,0 +1,74 @@ +66 +66 +98 +98 +98 +98 +128 +128 +128 +128 +128 +128 +146 +146 +146 +146 +150 +150 +213 +213 +213 +213 +224 +224 +224 +224 +238 +238 +238 +238 +255 +255 +255 +255 +273 +273 +273 +273 +273 +273 +278 +278 +278 +278 +311 +311 +311 +311 +311 +311 +369 +369 +369 +369 +369 +369 +401 +401 +401 +401 +401 +401 +401 +401 +401 +401 +406 +406 +406 +406 +406 +406 +406 +406 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-8-7f7f3daa7ff45944c3d534f9feff3bb6 b/sql/hive/src/test/resources/golden/multiMapJoin2-8-7f7f3daa7ff45944c3d534f9feff3bb6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multiMapJoin2-8-7f7f3daa7ff45944c3d534f9feff3bb6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multiMapJoin2-9-e14b355524f37fe25ebbb59b52e12c74 b/sql/hive/src/test/resources/golden/multiMapJoin2-9-e14b355524f37fe25ebbb59b52e12c74 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-0-18cb60d5d7080d1eda9b830f50cfa782 b/sql/hive/src/test/resources/golden/multi_insert_gby-0-18cb60d5d7080d1eda9b830f50cfa782 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-1-9e61989d717403353689cbbb2816210d b/sql/hive/src/test/resources/golden/multi_insert_gby-1-9e61989d717403353689cbbb2816210d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-2-fdf89a7c60b9edcb2250efdfd1033a17 b/sql/hive/src/test/resources/golden/multi_insert_gby-2-fdf89a7c60b9edcb2250efdfd1033a17 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-3-ed2c89fc9e4cfc07730c312b9e07d721 b/sql/hive/src/test/resources/golden/multi_insert_gby-3-ed2c89fc9e4cfc07730c312b9e07d721 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-4-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/multi_insert_gby-4-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..0e3cc2ad6a4e6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby-4-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1,37 @@ +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-5-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/multi_insert_gby-5-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-6-b601e40a9c3bb8144a0447ec829ae49c b/sql/hive/src/test/resources/golden/multi_insert_gby-6-b601e40a9c3bb8144a0447ec829ae49c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-7-6c0583ab6194b67a00b19a8ec9deec5f b/sql/hive/src/test/resources/golden/multi_insert_gby-7-6c0583ab6194b67a00b19a8ec9deec5f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-8-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/multi_insert_gby-8-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..0e3cc2ad6a4e6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby-8-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1,37 @@ +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby-9-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/multi_insert_gby-9-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..df07a9da29f01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby-9-a9a491ed99b4629ee15bce994d5c6c63 @@ -0,0 +1,309 @@ +0 3 +2 1 +4 1 +5 3 +8 1 +9 1 +10 1 +11 1 +12 2 +15 2 +17 1 +18 2 +19 1 +20 1 +24 2 +26 2 +27 1 +28 1 +30 1 +33 1 +34 1 +35 3 +37 2 +41 1 +42 2 +43 1 +44 1 +47 1 +51 2 +53 1 +54 1 +57 1 +58 2 +64 1 +65 1 +66 1 +67 2 +69 1 +70 3 +72 2 +74 1 +76 2 +77 1 +78 1 +80 1 +82 1 +83 2 +84 2 +85 1 +86 1 +87 1 +90 3 +92 1 +95 2 +96 1 +97 2 +98 2 +100 2 +103 2 +104 2 +105 1 +111 1 +113 2 +114 1 +116 1 +118 2 +119 3 +120 2 +125 2 +126 1 +128 3 +129 2 +131 1 +133 1 +134 2 +136 1 +137 2 +138 4 +143 1 +145 1 +146 2 +149 2 +150 1 +152 2 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 2 +165 2 +166 1 +167 3 +168 1 +169 4 +170 1 +172 2 +174 2 +175 2 +176 2 +177 1 +178 1 +179 2 +180 1 +181 1 +183 1 +186 1 +187 3 +189 1 +190 1 +191 2 +192 1 +193 3 +194 1 +195 2 +196 1 +197 2 +199 3 +200 2 +201 1 +202 1 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +214 1 +216 2 +217 2 +218 1 +219 2 +221 2 +222 1 +223 2 +224 2 +226 1 +228 1 +229 2 +230 5 +233 2 +235 1 +237 2 +238 2 +239 2 +241 1 +242 2 +244 1 +247 1 +248 1 +249 1 +252 1 +255 2 +256 2 +257 1 +258 1 +260 1 +262 1 +263 1 +265 2 +266 1 +272 2 +273 3 +274 1 +275 1 +277 4 +278 2 +280 2 +281 2 +282 2 +283 1 +284 1 +285 1 +286 1 +287 1 +288 2 +289 1 +291 1 +292 1 +296 1 +298 3 +302 1 +305 1 +306 1 +307 2 +308 1 +309 2 +310 1 +311 3 +315 1 +316 3 +317 2 +318 3 +321 2 +322 2 +323 1 +325 2 +327 3 +331 2 +332 1 +333 2 +335 1 +336 1 +338 1 +339 1 +341 1 +342 2 +344 2 +345 1 +348 5 +351 1 +353 2 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 2 +368 1 +369 3 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 2 +384 3 +386 1 +389 1 +392 1 +393 1 +394 1 +395 2 +396 3 +397 2 +399 2 +400 1 +401 5 +402 1 +403 3 +404 2 +406 4 +407 1 +409 3 +411 1 +413 2 +414 2 +417 3 +418 1 +419 1 +421 1 +424 2 +427 1 +429 2 +430 3 +431 3 +432 1 +435 1 +436 1 +437 1 +438 3 +439 2 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby2-0-b3ee4be40513342084411c5333416d69 b/sql/hive/src/test/resources/golden/multi_insert_gby2-0-b3ee4be40513342084411c5333416d69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby2-1-2fd65cd047d2295eadfc4935cf67ddf7 b/sql/hive/src/test/resources/golden/multi_insert_gby2-1-2fd65cd047d2295eadfc4935cf67ddf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby2-2-fc8c8df72e2136557a4cad9a78e921d2 b/sql/hive/src/test/resources/golden/multi_insert_gby2-2-fc8c8df72e2136557a4cad9a78e921d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby2-3-538a02b95c066b307652c8d503470c8e b/sql/hive/src/test/resources/golden/multi_insert_gby2-3-538a02b95c066b307652c8d503470c8e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby2-4-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/multi_insert_gby2-4-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby2-4-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby2-5-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/multi_insert_gby2-5-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby2-5-a9a491ed99b4629ee15bce994d5c6c63 @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-0-60cf2dfb2a416f328a2fd58710eb6f01 b/sql/hive/src/test/resources/golden/multi_insert_gby3-0-60cf2dfb2a416f328a2fd58710eb6f01 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-1-cb42e494ade413e7bd1e426e5d6f60a b/sql/hive/src/test/resources/golden/multi_insert_gby3-1-cb42e494ade413e7bd1e426e5d6f60a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-10-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/multi_insert_gby3-10-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..e8804e62d0aaf --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby3-10-a9a491ed99b4629ee15bce994d5c6c63 @@ -0,0 +1,309 @@ +0 0.0 val_0 +2 2.0 val_2 +4 4.0 val_4 +5 15.0 val_5 +8 8.0 val_8 +9 9.0 val_9 +10 10.0 val_10 +11 11.0 val_11 +12 24.0 val_12 +15 30.0 val_15 +17 17.0 val_17 +18 36.0 val_18 +19 19.0 val_19 +20 20.0 val_20 +24 48.0 val_24 +26 52.0 val_26 +27 27.0 val_27 +28 28.0 val_28 +30 30.0 val_30 +33 33.0 val_33 +34 34.0 val_34 +35 105.0 val_35 +37 74.0 val_37 +41 41.0 val_41 +42 84.0 val_42 +43 43.0 val_43 +44 44.0 val_44 +47 47.0 val_47 +51 102.0 val_51 +53 53.0 val_53 +54 54.0 val_54 +57 57.0 val_57 +58 116.0 val_58 +64 64.0 val_64 +65 65.0 val_65 +66 66.0 val_66 +67 134.0 val_67 +69 69.0 val_69 +70 210.0 val_70 +72 144.0 val_72 +74 74.0 val_74 +76 152.0 val_76 +77 77.0 val_77 +78 78.0 val_78 +80 80.0 val_80 +82 82.0 val_82 +83 166.0 val_83 +84 168.0 val_84 +85 85.0 val_85 +86 86.0 val_86 +87 87.0 val_87 +90 270.0 val_90 +92 92.0 val_92 +95 190.0 val_95 +96 96.0 val_96 +97 194.0 val_97 +98 196.0 val_98 +100 200.0 val_100 +103 206.0 val_103 +104 208.0 val_104 +105 105.0 val_105 +111 111.0 val_111 +113 226.0 val_113 +114 114.0 val_114 +116 116.0 val_116 +118 236.0 val_118 +119 357.0 val_119 +120 240.0 val_120 +125 250.0 val_125 +126 126.0 val_126 +128 384.0 val_128 +129 258.0 val_129 +131 131.0 val_131 +133 133.0 val_133 +134 268.0 val_134 +136 136.0 val_136 +137 274.0 val_137 +138 552.0 val_138 +143 143.0 val_143 +145 145.0 val_145 +146 292.0 val_146 +149 298.0 val_149 +150 150.0 val_150 +152 304.0 val_152 +153 153.0 val_153 +155 155.0 val_155 +156 156.0 val_156 +157 157.0 val_157 +158 158.0 val_158 +160 160.0 val_160 +162 162.0 val_162 +163 163.0 val_163 +164 328.0 val_164 +165 330.0 val_165 +166 166.0 val_166 +167 501.0 val_167 +168 168.0 val_168 +169 676.0 val_169 +170 170.0 val_170 +172 344.0 val_172 +174 348.0 val_174 +175 350.0 val_175 +176 352.0 val_176 +177 177.0 val_177 +178 178.0 val_178 +179 358.0 val_179 +180 180.0 val_180 +181 181.0 val_181 +183 183.0 val_183 +186 186.0 val_186 +187 561.0 val_187 +189 189.0 val_189 +190 190.0 val_190 +191 382.0 val_191 +192 192.0 val_192 +193 579.0 val_193 +194 194.0 val_194 +195 390.0 val_195 +196 196.0 val_196 +197 394.0 val_197 +199 597.0 val_199 +200 400.0 val_200 +201 201.0 val_201 +202 202.0 val_202 +203 406.0 val_203 +205 410.0 val_205 +207 414.0 val_207 +208 624.0 val_208 +209 418.0 val_209 +213 426.0 val_213 +214 214.0 val_214 +216 432.0 val_216 +217 434.0 val_217 +218 218.0 val_218 +219 438.0 val_219 +221 442.0 val_221 +222 222.0 val_222 +223 446.0 val_223 +224 448.0 val_224 +226 226.0 val_226 +228 228.0 val_228 +229 458.0 val_229 +230 1150.0 val_230 +233 466.0 val_233 +235 235.0 val_235 +237 474.0 val_237 +238 476.0 val_238 +239 478.0 val_239 +241 241.0 val_241 +242 484.0 val_242 +244 244.0 val_244 +247 247.0 val_247 +248 248.0 val_248 +249 249.0 val_249 +252 252.0 val_252 +255 510.0 val_255 +256 512.0 val_256 +257 257.0 val_257 +258 258.0 val_258 +260 260.0 val_260 +262 262.0 val_262 +263 263.0 val_263 +265 530.0 val_265 +266 266.0 val_266 +272 544.0 val_272 +273 819.0 val_273 +274 274.0 val_274 +275 275.0 val_275 +277 1108.0 val_277 +278 556.0 val_278 +280 560.0 val_280 +281 562.0 val_281 +282 564.0 val_282 +283 283.0 val_283 +284 284.0 val_284 +285 285.0 val_285 +286 286.0 val_286 +287 287.0 val_287 +288 576.0 val_288 +289 289.0 val_289 +291 291.0 val_291 +292 292.0 val_292 +296 296.0 val_296 +298 894.0 val_298 +302 302.0 val_302 +305 305.0 val_305 +306 306.0 val_306 +307 614.0 val_307 +308 308.0 val_308 +309 618.0 val_309 +310 310.0 val_310 +311 933.0 val_311 +315 315.0 val_315 +316 948.0 val_316 +317 634.0 val_317 +318 954.0 val_318 +321 642.0 val_321 +322 644.0 val_322 +323 323.0 val_323 +325 650.0 val_325 +327 981.0 val_327 +331 662.0 val_331 +332 332.0 val_332 +333 666.0 val_333 +335 335.0 val_335 +336 336.0 val_336 +338 338.0 val_338 +339 339.0 val_339 +341 341.0 val_341 +342 684.0 val_342 +344 688.0 val_344 +345 345.0 val_345 +348 1740.0 val_348 +351 351.0 val_351 +353 706.0 val_353 +356 356.0 val_356 +360 360.0 val_360 +362 362.0 val_362 +364 364.0 val_364 +365 365.0 val_365 +366 366.0 val_366 +367 734.0 val_367 +368 368.0 val_368 +369 1107.0 val_369 +373 373.0 val_373 +374 374.0 val_374 +375 375.0 val_375 +377 377.0 val_377 +378 378.0 val_378 +379 379.0 val_379 +382 764.0 val_382 +384 1152.0 val_384 +386 386.0 val_386 +389 389.0 val_389 +392 392.0 val_392 +393 393.0 val_393 +394 394.0 val_394 +395 790.0 val_395 +396 1188.0 val_396 +397 794.0 val_397 +399 798.0 val_399 +400 400.0 val_400 +401 2005.0 val_401 +402 402.0 val_402 +403 1209.0 val_403 +404 808.0 val_404 +406 1624.0 val_406 +407 407.0 val_407 +409 1227.0 val_409 +411 411.0 val_411 +413 826.0 val_413 +414 828.0 val_414 +417 1251.0 val_417 +418 418.0 val_418 +419 419.0 val_419 +421 421.0 val_421 +424 848.0 val_424 +427 427.0 val_427 +429 858.0 val_429 +430 1290.0 val_430 +431 1293.0 val_431 +432 432.0 val_432 +435 435.0 val_435 +436 436.0 val_436 +437 437.0 val_437 +438 1314.0 val_438 +439 878.0 val_439 +443 443.0 val_443 +444 444.0 val_444 +446 446.0 val_446 +448 448.0 val_448 +449 449.0 val_449 +452 452.0 val_452 +453 453.0 val_453 +454 1362.0 val_454 +455 455.0 val_455 +457 457.0 val_457 +458 916.0 val_458 +459 918.0 val_459 +460 460.0 val_460 +462 924.0 val_462 +463 926.0 val_463 +466 1398.0 val_466 +467 467.0 val_467 +468 1872.0 val_468 +469 2345.0 val_469 +470 470.0 val_470 +472 472.0 val_472 +475 475.0 val_475 +477 477.0 val_477 +478 956.0 val_478 +479 479.0 val_479 +480 1440.0 val_480 +481 481.0 val_481 +482 482.0 val_482 +483 483.0 val_483 +484 484.0 val_484 +485 485.0 val_485 +487 487.0 val_487 +489 1956.0 val_489 +490 490.0 val_490 +491 491.0 val_491 +492 984.0 val_492 +493 493.0 val_493 +494 494.0 val_494 +495 495.0 val_495 +496 496.0 val_496 +497 497.0 val_497 +498 1494.0 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-11-717e2a1f7f5b7e8a0ef61cad13af4acc b/sql/hive/src/test/resources/golden/multi_insert_gby3-11-717e2a1f7f5b7e8a0ef61cad13af4acc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-12-33d7e716735d24b7493209810d0b865f b/sql/hive/src/test/resources/golden/multi_insert_gby3-12-33d7e716735d24b7493209810d0b865f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-2-e2ee7089ea7db95d7bd86cae6f3f4bb6 b/sql/hive/src/test/resources/golden/multi_insert_gby3-2-e2ee7089ea7db95d7bd86cae6f3f4bb6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-3-5ae64ea7cfb7bef5a99d788016213fca b/sql/hive/src/test/resources/golden/multi_insert_gby3-3-5ae64ea7cfb7bef5a99d788016213fca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-4-6d713dc60fa4c07fb9de4a93db36fed0 b/sql/hive/src/test/resources/golden/multi_insert_gby3-4-6d713dc60fa4c07fb9de4a93db36fed0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-5-a66621daa1b2479beee5681a22d9d712 b/sql/hive/src/test/resources/golden/multi_insert_gby3-5-a66621daa1b2479beee5681a22d9d712 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-6-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/multi_insert_gby3-6-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..fc0b77c7a3628 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby3-6-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1,309 @@ +0 1.0 +2 1.0 +4 1.0 +5 1.0 +8 1.0 +9 1.0 +10 1.0 +11 1.0 +12 1.0 +15 1.0 +17 1.0 +18 1.0 +19 1.0 +20 1.0 +24 1.0 +26 1.0 +27 1.0 +28 1.0 +30 1.0 +33 1.0 +34 1.0 +35 1.0 +37 1.0 +41 1.0 +42 1.0 +43 1.0 +44 1.0 +47 1.0 +51 1.0 +53 1.0 +54 1.0 +57 1.0 +58 1.0 +64 1.0 +65 1.0 +66 1.0 +67 1.0 +69 1.0 +70 1.0 +72 1.0 +74 1.0 +76 1.0 +77 1.0 +78 1.0 +80 1.0 +82 1.0 +83 1.0 +84 1.0 +85 1.0 +86 1.0 +87 1.0 +90 1.0 +92 1.0 +95 1.0 +96 1.0 +97 1.0 +98 1.0 +100 1.0 +103 1.0 +104 1.0 +105 1.0 +111 1.0 +113 1.0 +114 1.0 +116 1.0 +118 1.0 +119 1.0 +120 1.0 +125 1.0 +126 1.0 +128 1.0 +129 1.0 +131 1.0 +133 1.0 +134 1.0 +136 1.0 +137 1.0 +138 1.0 +143 1.0 +145 1.0 +146 1.0 +149 1.0 +150 1.0 +152 1.0 +153 1.0 +155 1.0 +156 1.0 +157 1.0 +158 1.0 +160 1.0 +162 1.0 +163 1.0 +164 1.0 +165 1.0 +166 1.0 +167 1.0 +168 1.0 +169 1.0 +170 1.0 +172 1.0 +174 1.0 +175 1.0 +176 1.0 +177 1.0 +178 1.0 +179 1.0 +180 1.0 +181 1.0 +183 1.0 +186 1.0 +187 1.0 +189 1.0 +190 1.0 +191 1.0 +192 1.0 +193 1.0 +194 1.0 +195 1.0 +196 1.0 +197 1.0 +199 1.0 +200 1.0 +201 1.0 +202 1.0 +203 1.0 +205 1.0 +207 1.0 +208 1.0 +209 1.0 +213 1.0 +214 1.0 +216 1.0 +217 1.0 +218 1.0 +219 1.0 +221 1.0 +222 1.0 +223 1.0 +224 1.0 +226 1.0 +228 1.0 +229 1.0 +230 1.0 +233 1.0 +235 1.0 +237 1.0 +238 1.0 +239 1.0 +241 1.0 +242 1.0 +244 1.0 +247 1.0 +248 1.0 +249 1.0 +252 1.0 +255 1.0 +256 1.0 +257 1.0 +258 1.0 +260 1.0 +262 1.0 +263 1.0 +265 1.0 +266 1.0 +272 1.0 +273 1.0 +274 1.0 +275 1.0 +277 1.0 +278 1.0 +280 1.0 +281 1.0 +282 1.0 +283 1.0 +284 1.0 +285 1.0 +286 1.0 +287 1.0 +288 1.0 +289 1.0 +291 1.0 +292 1.0 +296 1.0 +298 1.0 +302 1.0 +305 1.0 +306 1.0 +307 1.0 +308 1.0 +309 1.0 +310 1.0 +311 1.0 +315 1.0 +316 1.0 +317 1.0 +318 1.0 +321 1.0 +322 1.0 +323 1.0 +325 1.0 +327 1.0 +331 1.0 +332 1.0 +333 1.0 +335 1.0 +336 1.0 +338 1.0 +339 1.0 +341 1.0 +342 1.0 +344 1.0 +345 1.0 +348 1.0 +351 1.0 +353 1.0 +356 1.0 +360 1.0 +362 1.0 +364 1.0 +365 1.0 +366 1.0 +367 1.0 +368 1.0 +369 1.0 +373 1.0 +374 1.0 +375 1.0 +377 1.0 +378 1.0 +379 1.0 +382 1.0 +384 1.0 +386 1.0 +389 1.0 +392 1.0 +393 1.0 +394 1.0 +395 1.0 +396 1.0 +397 1.0 +399 1.0 +400 1.0 +401 1.0 +402 1.0 +403 1.0 +404 1.0 +406 1.0 +407 1.0 +409 1.0 +411 1.0 +413 1.0 +414 1.0 +417 1.0 +418 1.0 +419 1.0 +421 1.0 +424 1.0 +427 1.0 +429 1.0 +430 1.0 +431 1.0 +432 1.0 +435 1.0 +436 1.0 +437 1.0 +438 1.0 +439 1.0 +443 1.0 +444 1.0 +446 1.0 +448 1.0 +449 1.0 +452 1.0 +453 1.0 +454 1.0 +455 1.0 +457 1.0 +458 1.0 +459 1.0 +460 1.0 +462 1.0 +463 1.0 +466 1.0 +467 1.0 +468 1.0 +469 1.0 +470 1.0 +472 1.0 +475 1.0 +477 1.0 +478 1.0 +479 1.0 +480 1.0 +481 1.0 +482 1.0 +483 1.0 +484 1.0 +485 1.0 +487 1.0 +489 1.0 +490 1.0 +491 1.0 +492 1.0 +493 1.0 +494 1.0 +495 1.0 +496 1.0 +497 1.0 +498 1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-7-a9a491ed99b4629ee15bce994d5c6c63 b/sql/hive/src/test/resources/golden/multi_insert_gby3-7-a9a491ed99b4629ee15bce994d5c6c63 new file mode 100644 index 0000000000000..e8804e62d0aaf --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby3-7-a9a491ed99b4629ee15bce994d5c6c63 @@ -0,0 +1,309 @@ +0 0.0 val_0 +2 2.0 val_2 +4 4.0 val_4 +5 15.0 val_5 +8 8.0 val_8 +9 9.0 val_9 +10 10.0 val_10 +11 11.0 val_11 +12 24.0 val_12 +15 30.0 val_15 +17 17.0 val_17 +18 36.0 val_18 +19 19.0 val_19 +20 20.0 val_20 +24 48.0 val_24 +26 52.0 val_26 +27 27.0 val_27 +28 28.0 val_28 +30 30.0 val_30 +33 33.0 val_33 +34 34.0 val_34 +35 105.0 val_35 +37 74.0 val_37 +41 41.0 val_41 +42 84.0 val_42 +43 43.0 val_43 +44 44.0 val_44 +47 47.0 val_47 +51 102.0 val_51 +53 53.0 val_53 +54 54.0 val_54 +57 57.0 val_57 +58 116.0 val_58 +64 64.0 val_64 +65 65.0 val_65 +66 66.0 val_66 +67 134.0 val_67 +69 69.0 val_69 +70 210.0 val_70 +72 144.0 val_72 +74 74.0 val_74 +76 152.0 val_76 +77 77.0 val_77 +78 78.0 val_78 +80 80.0 val_80 +82 82.0 val_82 +83 166.0 val_83 +84 168.0 val_84 +85 85.0 val_85 +86 86.0 val_86 +87 87.0 val_87 +90 270.0 val_90 +92 92.0 val_92 +95 190.0 val_95 +96 96.0 val_96 +97 194.0 val_97 +98 196.0 val_98 +100 200.0 val_100 +103 206.0 val_103 +104 208.0 val_104 +105 105.0 val_105 +111 111.0 val_111 +113 226.0 val_113 +114 114.0 val_114 +116 116.0 val_116 +118 236.0 val_118 +119 357.0 val_119 +120 240.0 val_120 +125 250.0 val_125 +126 126.0 val_126 +128 384.0 val_128 +129 258.0 val_129 +131 131.0 val_131 +133 133.0 val_133 +134 268.0 val_134 +136 136.0 val_136 +137 274.0 val_137 +138 552.0 val_138 +143 143.0 val_143 +145 145.0 val_145 +146 292.0 val_146 +149 298.0 val_149 +150 150.0 val_150 +152 304.0 val_152 +153 153.0 val_153 +155 155.0 val_155 +156 156.0 val_156 +157 157.0 val_157 +158 158.0 val_158 +160 160.0 val_160 +162 162.0 val_162 +163 163.0 val_163 +164 328.0 val_164 +165 330.0 val_165 +166 166.0 val_166 +167 501.0 val_167 +168 168.0 val_168 +169 676.0 val_169 +170 170.0 val_170 +172 344.0 val_172 +174 348.0 val_174 +175 350.0 val_175 +176 352.0 val_176 +177 177.0 val_177 +178 178.0 val_178 +179 358.0 val_179 +180 180.0 val_180 +181 181.0 val_181 +183 183.0 val_183 +186 186.0 val_186 +187 561.0 val_187 +189 189.0 val_189 +190 190.0 val_190 +191 382.0 val_191 +192 192.0 val_192 +193 579.0 val_193 +194 194.0 val_194 +195 390.0 val_195 +196 196.0 val_196 +197 394.0 val_197 +199 597.0 val_199 +200 400.0 val_200 +201 201.0 val_201 +202 202.0 val_202 +203 406.0 val_203 +205 410.0 val_205 +207 414.0 val_207 +208 624.0 val_208 +209 418.0 val_209 +213 426.0 val_213 +214 214.0 val_214 +216 432.0 val_216 +217 434.0 val_217 +218 218.0 val_218 +219 438.0 val_219 +221 442.0 val_221 +222 222.0 val_222 +223 446.0 val_223 +224 448.0 val_224 +226 226.0 val_226 +228 228.0 val_228 +229 458.0 val_229 +230 1150.0 val_230 +233 466.0 val_233 +235 235.0 val_235 +237 474.0 val_237 +238 476.0 val_238 +239 478.0 val_239 +241 241.0 val_241 +242 484.0 val_242 +244 244.0 val_244 +247 247.0 val_247 +248 248.0 val_248 +249 249.0 val_249 +252 252.0 val_252 +255 510.0 val_255 +256 512.0 val_256 +257 257.0 val_257 +258 258.0 val_258 +260 260.0 val_260 +262 262.0 val_262 +263 263.0 val_263 +265 530.0 val_265 +266 266.0 val_266 +272 544.0 val_272 +273 819.0 val_273 +274 274.0 val_274 +275 275.0 val_275 +277 1108.0 val_277 +278 556.0 val_278 +280 560.0 val_280 +281 562.0 val_281 +282 564.0 val_282 +283 283.0 val_283 +284 284.0 val_284 +285 285.0 val_285 +286 286.0 val_286 +287 287.0 val_287 +288 576.0 val_288 +289 289.0 val_289 +291 291.0 val_291 +292 292.0 val_292 +296 296.0 val_296 +298 894.0 val_298 +302 302.0 val_302 +305 305.0 val_305 +306 306.0 val_306 +307 614.0 val_307 +308 308.0 val_308 +309 618.0 val_309 +310 310.0 val_310 +311 933.0 val_311 +315 315.0 val_315 +316 948.0 val_316 +317 634.0 val_317 +318 954.0 val_318 +321 642.0 val_321 +322 644.0 val_322 +323 323.0 val_323 +325 650.0 val_325 +327 981.0 val_327 +331 662.0 val_331 +332 332.0 val_332 +333 666.0 val_333 +335 335.0 val_335 +336 336.0 val_336 +338 338.0 val_338 +339 339.0 val_339 +341 341.0 val_341 +342 684.0 val_342 +344 688.0 val_344 +345 345.0 val_345 +348 1740.0 val_348 +351 351.0 val_351 +353 706.0 val_353 +356 356.0 val_356 +360 360.0 val_360 +362 362.0 val_362 +364 364.0 val_364 +365 365.0 val_365 +366 366.0 val_366 +367 734.0 val_367 +368 368.0 val_368 +369 1107.0 val_369 +373 373.0 val_373 +374 374.0 val_374 +375 375.0 val_375 +377 377.0 val_377 +378 378.0 val_378 +379 379.0 val_379 +382 764.0 val_382 +384 1152.0 val_384 +386 386.0 val_386 +389 389.0 val_389 +392 392.0 val_392 +393 393.0 val_393 +394 394.0 val_394 +395 790.0 val_395 +396 1188.0 val_396 +397 794.0 val_397 +399 798.0 val_399 +400 400.0 val_400 +401 2005.0 val_401 +402 402.0 val_402 +403 1209.0 val_403 +404 808.0 val_404 +406 1624.0 val_406 +407 407.0 val_407 +409 1227.0 val_409 +411 411.0 val_411 +413 826.0 val_413 +414 828.0 val_414 +417 1251.0 val_417 +418 418.0 val_418 +419 419.0 val_419 +421 421.0 val_421 +424 848.0 val_424 +427 427.0 val_427 +429 858.0 val_429 +430 1290.0 val_430 +431 1293.0 val_431 +432 432.0 val_432 +435 435.0 val_435 +436 436.0 val_436 +437 437.0 val_437 +438 1314.0 val_438 +439 878.0 val_439 +443 443.0 val_443 +444 444.0 val_444 +446 446.0 val_446 +448 448.0 val_448 +449 449.0 val_449 +452 452.0 val_452 +453 453.0 val_453 +454 1362.0 val_454 +455 455.0 val_455 +457 457.0 val_457 +458 916.0 val_458 +459 918.0 val_459 +460 460.0 val_460 +462 924.0 val_462 +463 926.0 val_463 +466 1398.0 val_466 +467 467.0 val_467 +468 1872.0 val_468 +469 2345.0 val_469 +470 470.0 val_470 +472 472.0 val_472 +475 475.0 val_475 +477 477.0 val_477 +478 956.0 val_478 +479 479.0 val_479 +480 1440.0 val_480 +481 481.0 val_481 +482 482.0 val_482 +483 483.0 val_483 +484 484.0 val_484 +485 485.0 val_485 +487 487.0 val_487 +489 1956.0 val_489 +490 490.0 val_490 +491 491.0 val_491 +492 984.0 val_492 +493 493.0 val_493 +494 494.0 val_494 +495 495.0 val_495 +496 496.0 val_496 +497 497.0 val_497 +498 1494.0 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-8-2ed91b92a6ca38b4ccb4acf52ee4e47b b/sql/hive/src/test/resources/golden/multi_insert_gby3-8-2ed91b92a6ca38b4ccb4acf52ee4e47b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_gby3-9-521e0c1054cfa35116c02245874a4e69 b/sql/hive/src/test/resources/golden/multi_insert_gby3-9-521e0c1054cfa35116c02245874a4e69 new file mode 100644 index 0000000000000..fc0b77c7a3628 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_gby3-9-521e0c1054cfa35116c02245874a4e69 @@ -0,0 +1,309 @@ +0 1.0 +2 1.0 +4 1.0 +5 1.0 +8 1.0 +9 1.0 +10 1.0 +11 1.0 +12 1.0 +15 1.0 +17 1.0 +18 1.0 +19 1.0 +20 1.0 +24 1.0 +26 1.0 +27 1.0 +28 1.0 +30 1.0 +33 1.0 +34 1.0 +35 1.0 +37 1.0 +41 1.0 +42 1.0 +43 1.0 +44 1.0 +47 1.0 +51 1.0 +53 1.0 +54 1.0 +57 1.0 +58 1.0 +64 1.0 +65 1.0 +66 1.0 +67 1.0 +69 1.0 +70 1.0 +72 1.0 +74 1.0 +76 1.0 +77 1.0 +78 1.0 +80 1.0 +82 1.0 +83 1.0 +84 1.0 +85 1.0 +86 1.0 +87 1.0 +90 1.0 +92 1.0 +95 1.0 +96 1.0 +97 1.0 +98 1.0 +100 1.0 +103 1.0 +104 1.0 +105 1.0 +111 1.0 +113 1.0 +114 1.0 +116 1.0 +118 1.0 +119 1.0 +120 1.0 +125 1.0 +126 1.0 +128 1.0 +129 1.0 +131 1.0 +133 1.0 +134 1.0 +136 1.0 +137 1.0 +138 1.0 +143 1.0 +145 1.0 +146 1.0 +149 1.0 +150 1.0 +152 1.0 +153 1.0 +155 1.0 +156 1.0 +157 1.0 +158 1.0 +160 1.0 +162 1.0 +163 1.0 +164 1.0 +165 1.0 +166 1.0 +167 1.0 +168 1.0 +169 1.0 +170 1.0 +172 1.0 +174 1.0 +175 1.0 +176 1.0 +177 1.0 +178 1.0 +179 1.0 +180 1.0 +181 1.0 +183 1.0 +186 1.0 +187 1.0 +189 1.0 +190 1.0 +191 1.0 +192 1.0 +193 1.0 +194 1.0 +195 1.0 +196 1.0 +197 1.0 +199 1.0 +200 1.0 +201 1.0 +202 1.0 +203 1.0 +205 1.0 +207 1.0 +208 1.0 +209 1.0 +213 1.0 +214 1.0 +216 1.0 +217 1.0 +218 1.0 +219 1.0 +221 1.0 +222 1.0 +223 1.0 +224 1.0 +226 1.0 +228 1.0 +229 1.0 +230 1.0 +233 1.0 +235 1.0 +237 1.0 +238 1.0 +239 1.0 +241 1.0 +242 1.0 +244 1.0 +247 1.0 +248 1.0 +249 1.0 +252 1.0 +255 1.0 +256 1.0 +257 1.0 +258 1.0 +260 1.0 +262 1.0 +263 1.0 +265 1.0 +266 1.0 +272 1.0 +273 1.0 +274 1.0 +275 1.0 +277 1.0 +278 1.0 +280 1.0 +281 1.0 +282 1.0 +283 1.0 +284 1.0 +285 1.0 +286 1.0 +287 1.0 +288 1.0 +289 1.0 +291 1.0 +292 1.0 +296 1.0 +298 1.0 +302 1.0 +305 1.0 +306 1.0 +307 1.0 +308 1.0 +309 1.0 +310 1.0 +311 1.0 +315 1.0 +316 1.0 +317 1.0 +318 1.0 +321 1.0 +322 1.0 +323 1.0 +325 1.0 +327 1.0 +331 1.0 +332 1.0 +333 1.0 +335 1.0 +336 1.0 +338 1.0 +339 1.0 +341 1.0 +342 1.0 +344 1.0 +345 1.0 +348 1.0 +351 1.0 +353 1.0 +356 1.0 +360 1.0 +362 1.0 +364 1.0 +365 1.0 +366 1.0 +367 1.0 +368 1.0 +369 1.0 +373 1.0 +374 1.0 +375 1.0 +377 1.0 +378 1.0 +379 1.0 +382 1.0 +384 1.0 +386 1.0 +389 1.0 +392 1.0 +393 1.0 +394 1.0 +395 1.0 +396 1.0 +397 1.0 +399 1.0 +400 1.0 +401 1.0 +402 1.0 +403 1.0 +404 1.0 +406 1.0 +407 1.0 +409 1.0 +411 1.0 +413 1.0 +414 1.0 +417 1.0 +418 1.0 +419 1.0 +421 1.0 +424 1.0 +427 1.0 +429 1.0 +430 1.0 +431 1.0 +432 1.0 +435 1.0 +436 1.0 +437 1.0 +438 1.0 +439 1.0 +443 1.0 +444 1.0 +446 1.0 +448 1.0 +449 1.0 +452 1.0 +453 1.0 +454 1.0 +455 1.0 +457 1.0 +458 1.0 +459 1.0 +460 1.0 +462 1.0 +463 1.0 +466 1.0 +467 1.0 +468 1.0 +469 1.0 +470 1.0 +472 1.0 +475 1.0 +477 1.0 +478 1.0 +479 1.0 +480 1.0 +481 1.0 +482 1.0 +483 1.0 +484 1.0 +485 1.0 +487 1.0 +489 1.0 +490 1.0 +491 1.0 +492 1.0 +493 1.0 +494 1.0 +495 1.0 +496 1.0 +497 1.0 +498 1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-0-531b7044d2fdaba4fff0094c4efdaf54 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-0-531b7044d2fdaba4fff0094c4efdaf54 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-1-3ed6bfa23add415990b443fc232b4ba0 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-1-3ed6bfa23add415990b443fc232b4ba0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-10-f26c10c6495fc3e86319cd5815caab4f b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-10-f26c10c6495fc3e86319cd5815caab4f new file mode 100644 index 0000000000000..310ad7306b634 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-10-f26c10c6495fc3e86319cd5815caab4f @@ -0,0 +1,10 @@ +165 333 +238 479 +255 513 +27 57 +278 559 +311 625 +409 821 +484 971 +86 175 +98 199 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-11-6c6b1588ab62ad11aef3a1147a2c7874 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-11-6c6b1588ab62ad11aef3a1147a2c7874 new file mode 100644 index 0000000000000..afb670d7efab7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-11-6c6b1588ab62ad11aef3a1147a2c7874 @@ -0,0 +1,10 @@ +165 337 +238 483 +255 517 +27 61 +278 563 +311 629 +409 825 +484 975 +86 179 +98 203 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-12-622f0dd66c8633307fe56ccf9015f430 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-12-622f0dd66c8633307fe56ccf9015f430 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-13-2c71748cfcdb9cc773d9ee61ae508b91 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-13-2c71748cfcdb9cc773d9ee61ae508b91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-14-f26c10c6495fc3e86319cd5815caab4f b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-14-f26c10c6495fc3e86319cd5815caab4f new file mode 100644 index 0000000000000..310ad7306b634 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-14-f26c10c6495fc3e86319cd5815caab4f @@ -0,0 +1,10 @@ +165 333 +238 479 +255 513 +27 57 +278 559 +311 625 +409 821 +484 971 +86 175 +98 199 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-15-6c6b1588ab62ad11aef3a1147a2c7874 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-15-6c6b1588ab62ad11aef3a1147a2c7874 new file mode 100644 index 0000000000000..f1441c3445d94 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-15-6c6b1588ab62ad11aef3a1147a2c7874 @@ -0,0 +1,6 @@ +238 1 +255 1 +278 1 +311 1 +409 1 +484 1 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-16-33963ba7aefb7ab9a25afd540ecbbe98 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-16-33963ba7aefb7ab9a25afd540ecbbe98 new file mode 100644 index 0000000000000..5421ac20e8621 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-16-33963ba7aefb7ab9a25afd540ecbbe98 @@ -0,0 +1,4 @@ +165 1 +27 1 +86 1 +98 1 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-17-3219cf4fab8bf343bd273bd3a681fa46 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-17-3219cf4fab8bf343bd273bd3a681fa46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-18-bfe7dcb00f8b27e00d406de603635c8a b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-18-bfe7dcb00f8b27e00d406de603635c8a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-19-f26c10c6495fc3e86319cd5815caab4f b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-19-f26c10c6495fc3e86319cd5815caab4f new file mode 100644 index 0000000000000..7dc40b688b128 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-19-f26c10c6495fc3e86319cd5815caab4f @@ -0,0 +1,20 @@ +100 98 +166 165 +167 165 +239 238 +240 238 +256 255 +257 255 +279 278 +28 27 +280 278 +29 27 +312 311 +313 311 +410 409 +411 409 +485 484 +486 484 +87 86 +88 86 +99 98 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-2-6ced0ab5d543a2c5c6c7f7e27ed04814 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-2-6ced0ab5d543a2c5c6c7f7e27ed04814 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-20-6c6b1588ab62ad11aef3a1147a2c7874 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-20-6c6b1588ab62ad11aef3a1147a2c7874 new file mode 100644 index 0000000000000..77d4df18b3e16 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-20-6c6b1588ab62ad11aef3a1147a2c7874 @@ -0,0 +1,20 @@ +101 98 +102 98 +168 165 +169 165 +241 238 +242 238 +258 255 +259 255 +281 278 +282 278 +30 27 +31 27 +314 311 +315 311 +412 409 +413 409 +487 484 +488 484 +89 86 +90 86 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-21-33963ba7aefb7ab9a25afd540ecbbe98 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-21-33963ba7aefb7ab9a25afd540ecbbe98 new file mode 100644 index 0000000000000..2889b9a801049 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-21-33963ba7aefb7ab9a25afd540ecbbe98 @@ -0,0 +1,10 @@ +val_165 165 +val_238 238 +val_255 255 +val_27 27 +val_278 278 +val_311 311 +val_409 409 +val_484 484 +val_86 86 +val_98 98 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-22-283e0f384d0a015c252b34f79a895286 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-22-283e0f384d0a015c252b34f79a895286 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-23-2f3b8b5fd961ee336d893cd45dc2696d b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-23-2f3b8b5fd961ee336d893cd45dc2696d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-24-4ed7df348bd8bf3fd275e15b6689c5df b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-24-4ed7df348bd8bf3fd275e15b6689c5df new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-25-f26c10c6495fc3e86319cd5815caab4f b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-25-f26c10c6495fc3e86319cd5815caab4f new file mode 100644 index 0000000000000..310ad7306b634 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-25-f26c10c6495fc3e86319cd5815caab4f @@ -0,0 +1,10 @@ +165 333 +238 479 +255 513 +27 57 +278 559 +311 625 +409 821 +484 971 +86 175 +98 199 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-26-6c6b1588ab62ad11aef3a1147a2c7874 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-26-6c6b1588ab62ad11aef3a1147a2c7874 new file mode 100644 index 0000000000000..afb670d7efab7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-26-6c6b1588ab62ad11aef3a1147a2c7874 @@ -0,0 +1,10 @@ +165 337 +238 483 +255 517 +27 61 +278 563 +311 629 +409 825 +484 975 +86 179 +98 203 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-27-33963ba7aefb7ab9a25afd540ecbbe98 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-27-33963ba7aefb7ab9a25afd540ecbbe98 new file mode 100644 index 0000000000000..983e095ac80d6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-27-33963ba7aefb7ab9a25afd540ecbbe98 @@ -0,0 +1,6 @@ +val_238 238 +val_255 255 +val_278 278 +val_311 311 +val_409 409 +val_484 484 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-28-24e041343e158735db6262136de0e8b8 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-28-24e041343e158735db6262136de0e8b8 new file mode 100644 index 0000000000000..1bc1e319ea180 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-28-24e041343e158735db6262136de0e8b8 @@ -0,0 +1,4 @@ +val_165 165 +val_27 27 +val_86 86 +val_98 98 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-3-a60af91a18d481fe1244e21108133489 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-3-a60af91a18d481fe1244e21108133489 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-4-67a95497041a0e81b4d5756731d8b27d b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-4-67a95497041a0e81b4d5756731d8b27d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-5-b847c5dfb2f0395cfdd21f93de611b91 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-5-b847c5dfb2f0395cfdd21f93de611b91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-6-f26c10c6495fc3e86319cd5815caab4f b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-6-f26c10c6495fc3e86319cd5815caab4f new file mode 100644 index 0000000000000..acbb7cd281fb8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-6-f26c10c6495fc3e86319cd5815caab4f @@ -0,0 +1,20 @@ +165 166 +165 167 +238 239 +238 240 +255 256 +255 257 +27 28 +27 29 +278 279 +278 280 +311 312 +311 313 +409 410 +409 411 +484 485 +484 486 +86 87 +86 88 +98 100 +98 99 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-7-6c6b1588ab62ad11aef3a1147a2c7874 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-7-6c6b1588ab62ad11aef3a1147a2c7874 new file mode 100644 index 0000000000000..4edc92defe127 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-7-6c6b1588ab62ad11aef3a1147a2c7874 @@ -0,0 +1,20 @@ +165 168 +165 169 +238 241 +238 242 +255 258 +255 259 +27 30 +27 31 +278 281 +278 282 +311 314 +311 315 +409 412 +409 413 +484 487 +484 488 +86 89 +86 90 +98 101 +98 102 diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-8-a3eabeb4435c69ec4e242b8857c84e31 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-8-a3eabeb4435c69ec4e242b8857c84e31 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_insert_lateral_view-9-59102a6d824074da6cc85ca760385975 b/sql/hive/src/test/resources/golden/multi_insert_lateral_view-9-59102a6d824074da6cc85ca760385975 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_join_union-0-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/multi_join_union-0-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/multi_join_union-0-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/multi_join_union-1-af5c56bf13aaeff13d2bd7d3b9315d3b b/sql/hive/src/test/resources/golden/multi_join_union-1-af5c56bf13aaeff13d2bd7d3b9315d3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_join_union-2-97ea2263579f8d63dfdb1a6992fe0284 b/sql/hive/src/test/resources/golden/multi_join_union-2-97ea2263579f8d63dfdb1a6992fe0284 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_join_union-3-a164ae7bcb7c95beb8045b7064c9ab14 b/sql/hive/src/test/resources/golden/multi_join_union-3-a164ae7bcb7c95beb8045b7064c9ab14 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_join_union-4-8c17422bd7041c596677251a46fa4085 b/sql/hive/src/test/resources/golden/multi_join_union-4-8c17422bd7041c596677251a46fa4085 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multi_join_union-5-9e89b8619411f46f675a9fab73298627 b/sql/hive/src/test/resources/golden/multi_join_union-5-9e89b8619411f46f675a9fab73298627 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-0-ae394b9d8cf6106b68fb2f40e8f1fae b/sql/hive/src/test/resources/golden/multigroupby_singlemr-0-ae394b9d8cf6106b68fb2f40e8f1fae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-1-e67c221c0c19df7b3dc48b99426cf667 b/sql/hive/src/test/resources/golden/multigroupby_singlemr-1-e67c221c0c19df7b3dc48b99426cf667 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-2-31e7358a9f1e474e67155396fe803967 b/sql/hive/src/test/resources/golden/multigroupby_singlemr-2-31e7358a9f1e474e67155396fe803967 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-3-d676a455ef6e9ec68756b0c1487dc3b1 b/sql/hive/src/test/resources/golden/multigroupby_singlemr-3-d676a455ef6e9ec68756b0c1487dc3b1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-4-13bade1e01aed5d7e1af33a28a3b3574 b/sql/hive/src/test/resources/golden/multigroupby_singlemr-4-13bade1e01aed5d7e1af33a28a3b3574 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-5-c5f3f0a3ff1730f6daf04dcd78b74651 b/sql/hive/src/test/resources/golden/multigroupby_singlemr-5-c5f3f0a3ff1730f6daf04dcd78b74651 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-6-80cb19f7a801a82add47a501756c8af7 b/sql/hive/src/test/resources/golden/multigroupby_singlemr-6-80cb19f7a801a82add47a501756c8af7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-7-f8a4f52cd86ee679923248e09dd312e3 b/sql/hive/src/test/resources/golden/multigroupby_singlemr-7-f8a4f52cd86ee679923248e09dd312e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-8-985e6ff98c02a64d47b25817e9fef310 b/sql/hive/src/test/resources/golden/multigroupby_singlemr-8-985e6ff98c02a64d47b25817e9fef310 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/multigroupby_singlemr-9-faa99964430e2aee836221de1abe1c5e b/sql/hive/src/test/resources/golden/multigroupby_singlemr-9-faa99964430e2aee836221de1abe1c5e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nested_complex-0-6a7c4841dab05ebae84309c9571bec6 b/sql/hive/src/test/resources/golden/nested_complex-0-6a7c4841dab05ebae84309c9571bec6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nested_complex-1-abac744dee1a4f4152781b1565fe1364 b/sql/hive/src/test/resources/golden/nested_complex-1-abac744dee1a4f4152781b1565fe1364 new file mode 100644 index 0000000000000..c10c17978a0d8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nested_complex-1-abac744dee1a4f4152781b1565fe1364 @@ -0,0 +1,5 @@ +simple_int int None +max_nested_array array>>>>>>>>>>>>>>>>>>>>>> None +max_nested_map array>>>>>>>>>>>>>>>>>>>>> None +max_nested_struct array>>>>>>>>>>>>>>>>>>>>>> None +simple_string string None diff --git a/sql/hive/src/test/resources/golden/nested_complex-2-f07e9814229ed440bd0ac7e4bd924ce9 b/sql/hive/src/test/resources/golden/nested_complex-2-f07e9814229ed440bd0ac7e4bd924ce9 new file mode 100644 index 0000000000000..8ce70d8c71782 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nested_complex-2-f07e9814229ed440bd0ac7e4bd924ce9 @@ -0,0 +1,8 @@ +simple_int int None +max_nested_array array>>>>>>>>>>>>>>>>>>>>>> None +max_nested_map array>>>>>>>>>>>>>>>>>>>>> None +max_nested_struct array>>>>>>>>>>>>>>>>>>>>>> None +simple_string string None + +Detailed Table Information Table(tableName:nestedcomplex, dbName:default, owner:marmbrus, createTime:1391226936, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:simple_int, type:int, comment:null), FieldSchema(name:max_nested_array, type:array>>>>>>>>>>>>>>>>>>>>>>, comment:null), FieldSchema(name:max_nested_map, type:array>>>>>>>>>>>>>>>>>>>>>, comment:null), FieldSchema(name:max_nested_struct, type:array>>>>>>>>>>>>>>>>>>>>>>, comment:null), FieldSchema(name:simple_string, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7445586986532881162/nestedcomplex, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1, line.delim= +, hive.serialization.extend.nesting.levels=true}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1391226936}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/nested_complex-3-fb014bc1e9bfd919a3703cf5afb77448 b/sql/hive/src/test/resources/golden/nested_complex-3-fb014bc1e9bfd919a3703cf5afb77448 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nested_complex-4-8fd07a5dec8db8e1618ab5b5f9c05c7d b/sql/hive/src/test/resources/golden/nested_complex-4-8fd07a5dec8db8e1618ab5b5f9c05c7d new file mode 100644 index 0000000000000..228853cffe527 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nested_complex-4-8fd07a5dec8db8e1618ab5b5f9c05c7d @@ -0,0 +1,2 @@ +2 [[[[[[[[[[[[[[[[[[[[[[[0,3,2]]]]]]]]]]]]]]]]]]]]]]] [[[[[[[[[[[[[[[[[[[[[{"k1":"v1","k3":"v3"}]]]]]]]]]]]]]]]]]]]]] [[[[[[[[[[[[[[[[[[[[[[{"s":"b","i":10}]]]]]]]]]]]]]]]]]]]]]] 2 +3 [[[[[[[[[[[[[[[[[[[[[[[0,1,2]]]]]]]]]]]]]]]]]]]]]]] [[[[[[[[[[[[[[[[[[[[[{"k1":"v1","k2":"v2"}]]]]]]]]]]]]]]]]]]]]] [[[[[[[[[[[[[[[[[[[[[[{"s":"a","i":10}]]]]]]]]]]]]]]]]]]]]]] 2 diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-0-e9a72fa546e90b8cbbd2e9470450cb56 b/sql/hive/src/test/resources/golden/nestedvirtual-0-e9a72fa546e90b8cbbd2e9470450cb56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-1-1ea9df2d7af3c79ebef07d6087c8106f b/sql/hive/src/test/resources/golden/nestedvirtual-1-1ea9df2d7af3c79ebef07d6087c8106f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-10-89696914fad2d7b7bfc5b7729a7e7c34 b/sql/hive/src/test/resources/golden/nestedvirtual-10-89696914fad2d7b7bfc5b7729a7e7c34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-11-a299c8b1a9f8c2772989a5454574f4e5 b/sql/hive/src/test/resources/golden/nestedvirtual-11-a299c8b1a9f8c2772989a5454574f4e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-12-e9a72fa546e90b8cbbd2e9470450cb56 b/sql/hive/src/test/resources/golden/nestedvirtual-12-e9a72fa546e90b8cbbd2e9470450cb56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-13-1ea9df2d7af3c79ebef07d6087c8106f b/sql/hive/src/test/resources/golden/nestedvirtual-13-1ea9df2d7af3c79ebef07d6087c8106f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-14-67b834deba21676e02c155b25195a019 b/sql/hive/src/test/resources/golden/nestedvirtual-14-67b834deba21676e02c155b25195a019 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-15-52f90e6bf3f2c17b82ed34318d2c612f b/sql/hive/src/test/resources/golden/nestedvirtual-15-52f90e6bf3f2c17b82ed34318d2c612f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-16-89696914fad2d7b7bfc5b7729a7e7c34 b/sql/hive/src/test/resources/golden/nestedvirtual-16-89696914fad2d7b7bfc5b7729a7e7c34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-17-a299c8b1a9f8c2772989a5454574f4e5 b/sql/hive/src/test/resources/golden/nestedvirtual-17-a299c8b1a9f8c2772989a5454574f4e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-2-67b834deba21676e02c155b25195a019 b/sql/hive/src/test/resources/golden/nestedvirtual-2-67b834deba21676e02c155b25195a019 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-3-52f90e6bf3f2c17b82ed34318d2c612f b/sql/hive/src/test/resources/golden/nestedvirtual-3-52f90e6bf3f2c17b82ed34318d2c612f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-4-89696914fad2d7b7bfc5b7729a7e7c34 b/sql/hive/src/test/resources/golden/nestedvirtual-4-89696914fad2d7b7bfc5b7729a7e7c34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-5-a299c8b1a9f8c2772989a5454574f4e5 b/sql/hive/src/test/resources/golden/nestedvirtual-5-a299c8b1a9f8c2772989a5454574f4e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-6-e9a72fa546e90b8cbbd2e9470450cb56 b/sql/hive/src/test/resources/golden/nestedvirtual-6-e9a72fa546e90b8cbbd2e9470450cb56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-7-1ea9df2d7af3c79ebef07d6087c8106f b/sql/hive/src/test/resources/golden/nestedvirtual-7-1ea9df2d7af3c79ebef07d6087c8106f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-8-67b834deba21676e02c155b25195a019 b/sql/hive/src/test/resources/golden/nestedvirtual-8-67b834deba21676e02c155b25195a019 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nestedvirtual-9-52f90e6bf3f2c17b82ed34318d2c612f b/sql/hive/src/test/resources/golden/nestedvirtual-9-52f90e6bf3f2c17b82ed34318d2c612f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/newline-0-43392a20a8d249a279d50d96578e6a1b b/sql/hive/src/test/resources/golden/newline-0-43392a20a8d249a279d50d96578e6a1b new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/newline-0-43392a20a8d249a279d50d96578e6a1b @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/newline-1-a19a19272149c732977c37e043910505 b/sql/hive/src/test/resources/golden/newline-1-a19a19272149c732977c37e043910505 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/newline-1-a19a19272149c732977c37e043910505 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/newline-2-4eb54a664e549614d56ca088c8867d b/sql/hive/src/test/resources/golden/newline-2-4eb54a664e549614d56ca088c8867d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/noalias_subq1-0-da2a1169620860b3dc558d21c6c5ea50 b/sql/hive/src/test/resources/golden/noalias_subq1-0-da2a1169620860b3dc558d21c6c5ea50 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/noalias_subq1-1-f91e87acd51f7477d96620b5f9deece6 b/sql/hive/src/test/resources/golden/noalias_subq1-1-f91e87acd51f7477d96620b5f9deece6 new file mode 100644 index 0000000000000..cdcd12dca3ca2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/noalias_subq1-1-f91e87acd51f7477d96620b5f9deece6 @@ -0,0 +1,84 @@ +val_86 +val_27 +val_98 +val_66 +val_37 +val_15 +val_82 +val_17 +val_0 +val_57 +val_20 +val_92 +val_47 +val_72 +val_4 +val_35 +val_54 +val_51 +val_65 +val_83 +val_12 +val_67 +val_84 +val_58 +val_8 +val_24 +val_42 +val_0 +val_96 +val_26 +val_51 +val_43 +val_95 +val_98 +val_85 +val_77 +val_0 +val_87 +val_15 +val_72 +val_90 +val_19 +val_10 +val_5 +val_58 +val_35 +val_95 +val_11 +val_34 +val_42 +val_78 +val_76 +val_41 +val_30 +val_64 +val_76 +val_74 +val_69 +val_33 +val_70 +val_5 +val_2 +val_35 +val_80 +val_44 +val_53 +val_90 +val_12 +val_5 +val_70 +val_24 +val_70 +val_83 +val_26 +val_67 +val_18 +val_9 +val_18 +val_97 +val_84 +val_28 +val_37 +val_90 +val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nomore_ambiguous_table_col-0-535a12e87c72793bfba96520a0ea251b b/sql/hive/src/test/resources/golden/nomore_ambiguous_table_col-0-535a12e87c72793bfba96520a0ea251b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nomore_ambiguous_table_col-1-8535e6c322e40f46b9a6e02fe6033ee0 b/sql/hive/src/test/resources/golden/nomore_ambiguous_table_col-1-8535e6c322e40f46b9a6e02fe6033ee0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nomore_ambiguous_table_col-2-c2b97a35777322fe4a08d8c2216cb223 b/sql/hive/src/test/resources/golden/nomore_ambiguous_table_col-2-c2b97a35777322fe4a08d8c2216cb223 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nomore_ambiguous_table_col-3-29a7783c88e234ba32eaf1401ca8cc22 b/sql/hive/src/test/resources/golden/nomore_ambiguous_table_col-3-29a7783c88e234ba32eaf1401ca8cc22 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-0-61c5ece0d210cf6158094f0f6fa24532 b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-0-61c5ece0d210cf6158094f0f6fa24532 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-1-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-1-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-1-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-2-11ee085c0190a4007f410ddf96803ec0 b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-2-11ee085c0190a4007f410ddf96803ec0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-3-a873d2d6991308b21ecdc46ac777c716 b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-3-a873d2d6991308b21ecdc46ac777c716 new file mode 100644 index 0000000000000..a0cfcf2621f2e --- /dev/null +++ b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-3-a873d2d6991308b21ecdc46ac777c716 @@ -0,0 +1,25 @@ +NULL 25 +NULL 25 +NULL 25 +NULL 25 +NULL val_165 25 +NULL val_193 25 +NULL val_265 25 +NULL val_27 25 +NULL val_409 25 +NULL val_484 25 +66 val_66 25 +98 val_98 25 +128 25 +146 val_146 25 +150 val_150 25 +213 val_213 25 +224 25 +238 val_238 25 +255 val_255 25 +273 val_273 25 +278 val_278 25 +311 val_311 25 +369 25 +401 val_401 25 +406 val_406 25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-4-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-4-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-4-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-5-250d196b4449c835ddc518db2d2ab726 b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-5-250d196b4449c835ddc518db2d2ab726 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-6-a873d2d6991308b21ecdc46ac777c716 b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-6-a873d2d6991308b21ecdc46ac777c716 new file mode 100644 index 0000000000000..a0cfcf2621f2e --- /dev/null +++ b/sql/hive/src/test/resources/golden/nonblock_op_deduplicate-6-a873d2d6991308b21ecdc46ac777c716 @@ -0,0 +1,25 @@ +NULL 25 +NULL 25 +NULL 25 +NULL 25 +NULL val_165 25 +NULL val_193 25 +NULL val_265 25 +NULL val_27 25 +NULL val_409 25 +NULL val_484 25 +66 val_66 25 +98 val_98 25 +128 25 +146 val_146 25 +150 val_150 25 +213 val_213 25 +224 25 +238 val_238 25 +255 val_255 25 +273 val_273 25 +278 val_278 25 +311 val_311 25 +369 25 +401 val_401 25 +406 val_406 25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_input37-0-6ed1b2ff177492c003161ee91e982c10 b/sql/hive/src/test/resources/golden/nonreserved_keywords_input37-0-6ed1b2ff177492c003161ee91e982c10 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_input37-1-e3ab2563222fb8678c7c269e09e1e8d8 b/sql/hive/src/test/resources/golden/nonreserved_keywords_input37-1-e3ab2563222fb8678c7c269e09e1e8d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-0-d3afbe52e3a1eb246a79c1320f82c480 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-0-d3afbe52e3a1eb246a79c1320f82c480 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-1-5c7fc72601c9add7bc86df7e4c24af63 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-1-5c7fc72601c9add7bc86df7e4c24af63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-10-3c8f9dff0a12ca2b929d04b4873a4681 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-10-3c8f9dff0a12ca2b929d04b4873a4681 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-11-6f59e35684a552a855e4dc3aee667092 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-11-6f59e35684a552a855e4dc3aee667092 new file mode 100644 index 0000000000000..24e19ec6caa8f --- /dev/null +++ b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-11-6f59e35684a552a855e4dc3aee667092 @@ -0,0 +1 @@ +-826625916 diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-12-d3afbe52e3a1eb246a79c1320f82c480 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-12-d3afbe52e3a1eb246a79c1320f82c480 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-2-ef259cb012c8547e19dd4a75ac4f8ef5 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-2-ef259cb012c8547e19dd4a75ac4f8ef5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-3-2983d09b973ea94bc701970a17fc3687 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-3-2983d09b973ea94bc701970a17fc3687 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-4-a2f6c6c77e94833197095dc48643f9c9 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-4-a2f6c6c77e94833197095dc48643f9c9 new file mode 100644 index 0000000000000..05b0c43f926bd --- /dev/null +++ b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-4-a2f6c6c77e94833197095dc48643f9c9 @@ -0,0 +1 @@ +10226524244 diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-5-ef259cb012c8547e19dd4a75ac4f8ef5 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-5-ef259cb012c8547e19dd4a75ac4f8ef5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-6-2983d09b973ea94bc701970a17fc3687 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-6-2983d09b973ea94bc701970a17fc3687 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-7-fe194a16b48b763e6efdf6fcc6116296 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-7-fe194a16b48b763e6efdf6fcc6116296 new file mode 100644 index 0000000000000..bc15b9ca54985 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-7-fe194a16b48b763e6efdf6fcc6116296 @@ -0,0 +1 @@ +20453048488 diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-8-ea9a965c3d3c8fb9271d8f7c5eee19ad b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-8-ea9a965c3d3c8fb9271d8f7c5eee19ad new file mode 100644 index 0000000000000..08839f6bb296e --- /dev/null +++ b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-8-ea9a965c3d3c8fb9271d8f7c5eee19ad @@ -0,0 +1 @@ +200 diff --git a/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-9-461110270cec5b6d012b2c685cf2cce9 b/sql/hive/src/test/resources/golden/nonreserved_keywords_insert_into1-9-461110270cec5b6d012b2c685cf2cce9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/notable_alias1-0-695de796f21dce21056f8ba27cbadb0d b/sql/hive/src/test/resources/golden/notable_alias1-0-695de796f21dce21056f8ba27cbadb0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/notable_alias1-1-c4d51044e6802df266aa0dc137b825cd b/sql/hive/src/test/resources/golden/notable_alias1-1-c4d51044e6802df266aa0dc137b825cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/notable_alias1-2-bea59f268594a034d06b826c7a8e516e b/sql/hive/src/test/resources/golden/notable_alias1-2-bea59f268594a034d06b826c7a8e516e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/notable_alias1-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/notable_alias1-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..fce122031e88f --- /dev/null +++ b/sql/hive/src/test/resources/golden/notable_alias1-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,57 @@ +1234 0 3.0 +1234 2 1.0 +1234 4 1.0 +1234 5 3.0 +1234 8 1.0 +1234 9 1.0 +1234 10 1.0 +1234 11 1.0 +1234 12 2.0 +1234 15 2.0 +1234 17 1.0 +1234 18 2.0 +1234 19 1.0 +1234 20 1.0 +1234 24 2.0 +1234 26 2.0 +1234 27 1.0 +1234 28 1.0 +1234 30 1.0 +1234 33 1.0 +1234 34 1.0 +1234 35 3.0 +1234 37 2.0 +1234 41 1.0 +1234 42 2.0 +1234 43 1.0 +1234 44 1.0 +1234 47 1.0 +1234 51 2.0 +1234 53 1.0 +1234 54 1.0 +1234 57 1.0 +1234 58 2.0 +1234 64 1.0 +1234 65 1.0 +1234 66 1.0 +1234 67 2.0 +1234 69 1.0 +1234 70 3.0 +1234 72 2.0 +1234 74 1.0 +1234 76 2.0 +1234 77 1.0 +1234 78 1.0 +1234 80 1.0 +1234 82 1.0 +1234 83 2.0 +1234 84 2.0 +1234 85 1.0 +1234 86 1.0 +1234 87 1.0 +1234 90 3.0 +1234 92 1.0 +1234 95 2.0 +1234 96 1.0 +1234 97 2.0 +1234 98 2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/notable_alias2-0-695de796f21dce21056f8ba27cbadb0d b/sql/hive/src/test/resources/golden/notable_alias2-0-695de796f21dce21056f8ba27cbadb0d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/notable_alias2-1-20b7bf01acc8d88670d347e6759aa407 b/sql/hive/src/test/resources/golden/notable_alias2-1-20b7bf01acc8d88670d347e6759aa407 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/notable_alias2-2-19c4fba994e06b28e0d912a6aa13ab78 b/sql/hive/src/test/resources/golden/notable_alias2-2-19c4fba994e06b28e0d912a6aa13ab78 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/notable_alias2-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/notable_alias2-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..fce122031e88f --- /dev/null +++ b/sql/hive/src/test/resources/golden/notable_alias2-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,57 @@ +1234 0 3.0 +1234 2 1.0 +1234 4 1.0 +1234 5 3.0 +1234 8 1.0 +1234 9 1.0 +1234 10 1.0 +1234 11 1.0 +1234 12 2.0 +1234 15 2.0 +1234 17 1.0 +1234 18 2.0 +1234 19 1.0 +1234 20 1.0 +1234 24 2.0 +1234 26 2.0 +1234 27 1.0 +1234 28 1.0 +1234 30 1.0 +1234 33 1.0 +1234 34 1.0 +1234 35 3.0 +1234 37 2.0 +1234 41 1.0 +1234 42 2.0 +1234 43 1.0 +1234 44 1.0 +1234 47 1.0 +1234 51 2.0 +1234 53 1.0 +1234 54 1.0 +1234 57 1.0 +1234 58 2.0 +1234 64 1.0 +1234 65 1.0 +1234 66 1.0 +1234 67 2.0 +1234 69 1.0 +1234 70 3.0 +1234 72 2.0 +1234 74 1.0 +1234 76 2.0 +1234 77 1.0 +1234 78 1.0 +1234 80 1.0 +1234 82 1.0 +1234 83 2.0 +1234 84 2.0 +1234 85 1.0 +1234 86 1.0 +1234 87 1.0 +1234 90 3.0 +1234 92 1.0 +1234 95 2.0 +1234 96 1.0 +1234 97 2.0 +1234 98 2.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/null_cast-0-48a80d4fdc8009234af31ebcb6e03364 b/sql/hive/src/test/resources/golden/null_cast-0-48a80d4fdc8009234af31ebcb6e03364 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/null_cast-1-7257e6f8170e545962d27741353f672c b/sql/hive/src/test/resources/golden/null_cast-1-7257e6f8170e545962d27741353f672c new file mode 100644 index 0000000000000..d111428eaabb0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/null_cast-1-7257e6f8170e545962d27741353f672c @@ -0,0 +1 @@ +[null,0] [null,[]] [null,{}] [null,{"col1":0}] diff --git a/sql/hive/src/test/resources/golden/nullgroup-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/nullgroup-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/nullgroup-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-10-3994c1896dace613fa9f837b2f1676c0 b/sql/hive/src/test/resources/golden/nullgroup-10-3994c1896dace613fa9f837b2f1676c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup-11-54a5fd76cdeff565c8c7724695aca302 b/sql/hive/src/test/resources/golden/nullgroup-11-54a5fd76cdeff565c8c7724695aca302 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-11-54a5fd76cdeff565c8c7724695aca302 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-12-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/nullgroup-12-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-12-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-13-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/nullgroup-13-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-13-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-14-3994c1896dace613fa9f837b2f1676c0 b/sql/hive/src/test/resources/golden/nullgroup-14-3994c1896dace613fa9f837b2f1676c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup-15-54a5fd76cdeff565c8c7724695aca302 b/sql/hive/src/test/resources/golden/nullgroup-15-54a5fd76cdeff565c8c7724695aca302 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-15-54a5fd76cdeff565c8c7724695aca302 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-2-3994c1896dace613fa9f837b2f1676c0 b/sql/hive/src/test/resources/golden/nullgroup-2-3994c1896dace613fa9f837b2f1676c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup-3-54a5fd76cdeff565c8c7724695aca302 b/sql/hive/src/test/resources/golden/nullgroup-3-54a5fd76cdeff565c8c7724695aca302 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-3-54a5fd76cdeff565c8c7724695aca302 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-4-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/nullgroup-4-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-4-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-5-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/nullgroup-5-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-5-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-6-3994c1896dace613fa9f837b2f1676c0 b/sql/hive/src/test/resources/golden/nullgroup-6-3994c1896dace613fa9f837b2f1676c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup-7-54a5fd76cdeff565c8c7724695aca302 b/sql/hive/src/test/resources/golden/nullgroup-7-54a5fd76cdeff565c8c7724695aca302 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-7-54a5fd76cdeff565c8c7724695aca302 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-8-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/nullgroup-8-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-8-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup-9-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/nullgroup-9-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup-9-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup2-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/nullgroup2-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup2-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup2-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/nullgroup2-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup2-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup2-10-751fa56a198ad840868c76ad7ce2a6a0 b/sql/hive/src/test/resources/golden/nullgroup2-10-751fa56a198ad840868c76ad7ce2a6a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup2-11-644b68261df70bbb46a3045a8abde17a b/sql/hive/src/test/resources/golden/nullgroup2-11-644b68261df70bbb46a3045a8abde17a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup2-12-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/nullgroup2-12-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup2-12-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup2-13-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/nullgroup2-13-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup2-13-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup2-14-751fa56a198ad840868c76ad7ce2a6a0 b/sql/hive/src/test/resources/golden/nullgroup2-14-751fa56a198ad840868c76ad7ce2a6a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup2-15-644b68261df70bbb46a3045a8abde17a b/sql/hive/src/test/resources/golden/nullgroup2-15-644b68261df70bbb46a3045a8abde17a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup2-2-751fa56a198ad840868c76ad7ce2a6a0 b/sql/hive/src/test/resources/golden/nullgroup2-2-751fa56a198ad840868c76ad7ce2a6a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup2-3-644b68261df70bbb46a3045a8abde17a b/sql/hive/src/test/resources/golden/nullgroup2-3-644b68261df70bbb46a3045a8abde17a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup2-4-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/nullgroup2-4-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup2-4-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup2-5-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/nullgroup2-5-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup2-5-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup2-6-751fa56a198ad840868c76ad7ce2a6a0 b/sql/hive/src/test/resources/golden/nullgroup2-6-751fa56a198ad840868c76ad7ce2a6a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup2-7-644b68261df70bbb46a3045a8abde17a b/sql/hive/src/test/resources/golden/nullgroup2-7-644b68261df70bbb46a3045a8abde17a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup2-8-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/nullgroup2-8-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup2-8-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup2-9-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/nullgroup2-9-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup2-9-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup3-0-d7ed4ae23442da095677d751a2b86c99 b/sql/hive/src/test/resources/golden/nullgroup3-0-d7ed4ae23442da095677d751a2b86c99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-1-a4d6d87d12f0e353d7a3ae5c087dab44 b/sql/hive/src/test/resources/golden/nullgroup3-1-a4d6d87d12f0e353d7a3ae5c087dab44 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-10-a6455ec10891deb352bca6ccab2a8bf8 b/sql/hive/src/test/resources/golden/nullgroup3-10-a6455ec10891deb352bca6ccab2a8bf8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-11-d7ed4ae23442da095677d751a2b86c99 b/sql/hive/src/test/resources/golden/nullgroup3-11-d7ed4ae23442da095677d751a2b86c99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-12-a4d6d87d12f0e353d7a3ae5c087dab44 b/sql/hive/src/test/resources/golden/nullgroup3-12-a4d6d87d12f0e353d7a3ae5c087dab44 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-13-f529994bef750d8edd02ede8a4323afb b/sql/hive/src/test/resources/golden/nullgroup3-13-f529994bef750d8edd02ede8a4323afb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-14-d4e815f44f6369c991ea4390c481f31e b/sql/hive/src/test/resources/golden/nullgroup3-14-d4e815f44f6369c991ea4390c481f31e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-15-cd90e16da918bac569e9f04faaedd280 b/sql/hive/src/test/resources/golden/nullgroup3-15-cd90e16da918bac569e9f04faaedd280 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup3-15-cd90e16da918bac569e9f04faaedd280 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup3-16-af767d7cfb4601ace72a3ed718071931 b/sql/hive/src/test/resources/golden/nullgroup3-16-af767d7cfb4601ace72a3ed718071931 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-17-45699aee54227552bb3ec84d92dfe450 b/sql/hive/src/test/resources/golden/nullgroup3-17-45699aee54227552bb3ec84d92dfe450 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-18-a24e178327b39f57ca7dfa2e69296bb2 b/sql/hive/src/test/resources/golden/nullgroup3-18-a24e178327b39f57ca7dfa2e69296bb2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-19-b8f60d35c1c09c57efd4c339799e5404 b/sql/hive/src/test/resources/golden/nullgroup3-19-b8f60d35c1c09c57efd4c339799e5404 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-2-f529994bef750d8edd02ede8a4323afb b/sql/hive/src/test/resources/golden/nullgroup3-2-f529994bef750d8edd02ede8a4323afb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-20-29fb8e3c12b8a705bc67d55a10566141 b/sql/hive/src/test/resources/golden/nullgroup3-20-29fb8e3c12b8a705bc67d55a10566141 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-21-e09c6bf2f6112981793fbd4386d43ff6 b/sql/hive/src/test/resources/golden/nullgroup3-21-e09c6bf2f6112981793fbd4386d43ff6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup3-21-e09c6bf2f6112981793fbd4386d43ff6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup3-3-d4e815f44f6369c991ea4390c481f31e b/sql/hive/src/test/resources/golden/nullgroup3-3-d4e815f44f6369c991ea4390c481f31e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-4-cd90e16da918bac569e9f04faaedd280 b/sql/hive/src/test/resources/golden/nullgroup3-4-cd90e16da918bac569e9f04faaedd280 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup3-4-cd90e16da918bac569e9f04faaedd280 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup3-5-45699aee54227552bb3ec84d92dfe450 b/sql/hive/src/test/resources/golden/nullgroup3-5-45699aee54227552bb3ec84d92dfe450 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-6-a24e178327b39f57ca7dfa2e69296bb2 b/sql/hive/src/test/resources/golden/nullgroup3-6-a24e178327b39f57ca7dfa2e69296bb2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-7-b8f60d35c1c09c57efd4c339799e5404 b/sql/hive/src/test/resources/golden/nullgroup3-7-b8f60d35c1c09c57efd4c339799e5404 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-8-29fb8e3c12b8a705bc67d55a10566141 b/sql/hive/src/test/resources/golden/nullgroup3-8-29fb8e3c12b8a705bc67d55a10566141 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup3-9-e09c6bf2f6112981793fbd4386d43ff6 b/sql/hive/src/test/resources/golden/nullgroup3-9-e09c6bf2f6112981793fbd4386d43ff6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup3-9-e09c6bf2f6112981793fbd4386d43ff6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullgroup4-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/nullgroup4-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-1-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/nullgroup4-1-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-1-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-10-3a3f180144fead81b9e8b232b4132762 b/sql/hive/src/test/resources/golden/nullgroup4-10-3a3f180144fead81b9e8b232b4132762 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup4-11-a37f94e6d2b4c99053d29a576ebaa56 b/sql/hive/src/test/resources/golden/nullgroup4-11-a37f94e6d2b4c99053d29a576ebaa56 new file mode 100644 index 0000000000000..d05b1f927f4be --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-11-a37f94e6d2b4c99053d29a576ebaa56 @@ -0,0 +1 @@ +0 0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-12-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/nullgroup4-12-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-12-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-13-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/nullgroup4-13-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-13-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-14-3a3f180144fead81b9e8b232b4132762 b/sql/hive/src/test/resources/golden/nullgroup4-14-3a3f180144fead81b9e8b232b4132762 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup4-15-a37f94e6d2b4c99053d29a576ebaa56 b/sql/hive/src/test/resources/golden/nullgroup4-15-a37f94e6d2b4c99053d29a576ebaa56 new file mode 100644 index 0000000000000..d05b1f927f4be --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-15-a37f94e6d2b4c99053d29a576ebaa56 @@ -0,0 +1 @@ +0 0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-2-3a3f180144fead81b9e8b232b4132762 b/sql/hive/src/test/resources/golden/nullgroup4-2-3a3f180144fead81b9e8b232b4132762 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup4-3-a37f94e6d2b4c99053d29a576ebaa56 b/sql/hive/src/test/resources/golden/nullgroup4-3-a37f94e6d2b4c99053d29a576ebaa56 new file mode 100644 index 0000000000000..d05b1f927f4be --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-3-a37f94e6d2b4c99053d29a576ebaa56 @@ -0,0 +1 @@ +0 0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-4-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/nullgroup4-4-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-4-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-5-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/nullgroup4-5-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-5-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-6-3a3f180144fead81b9e8b232b4132762 b/sql/hive/src/test/resources/golden/nullgroup4-6-3a3f180144fead81b9e8b232b4132762 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup4-7-a37f94e6d2b4c99053d29a576ebaa56 b/sql/hive/src/test/resources/golden/nullgroup4-7-a37f94e6d2b4c99053d29a576ebaa56 new file mode 100644 index 0000000000000..d05b1f927f4be --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-7-a37f94e6d2b4c99053d29a576ebaa56 @@ -0,0 +1 @@ +0 0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-8-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/nullgroup4-8-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-8-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4-9-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/nullgroup4-9-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4-9-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-0-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-0-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-0-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-1-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-2-43dec71d76c386394196a0e9d69457e5 b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-2-43dec71d76c386394196a0e9d69457e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-3-c39b8f64123f56a05cdb0022a69f29b3 b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-3-c39b8f64123f56a05cdb0022a69f29b3 new file mode 100644 index 0000000000000..06b63ea6c2f01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-3-c39b8f64123f56a05cdb0022a69f29b3 @@ -0,0 +1 @@ +0 0 0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-4-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-4-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-4-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-5-85c4f90b754cd88147d6b74e17d22063 b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-5-85c4f90b754cd88147d6b74e17d22063 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-5-85c4f90b754cd88147d6b74e17d22063 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-6-43dec71d76c386394196a0e9d69457e5 b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-6-43dec71d76c386394196a0e9d69457e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-7-c39b8f64123f56a05cdb0022a69f29b3 b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-7-c39b8f64123f56a05cdb0022a69f29b3 new file mode 100644 index 0000000000000..06b63ea6c2f01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup4_multi_distinct-7-c39b8f64123f56a05cdb0022a69f29b3 @@ -0,0 +1 @@ +0 0 0 diff --git a/sql/hive/src/test/resources/golden/nullgroup5-0-d7ed4ae23442da095677d751a2b86c99 b/sql/hive/src/test/resources/golden/nullgroup5-0-d7ed4ae23442da095677d751a2b86c99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup5-1-c75bafea030f127bce9a4a5dbb14f40b b/sql/hive/src/test/resources/golden/nullgroup5-1-c75bafea030f127bce9a4a5dbb14f40b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup5-2-45699aee54227552bb3ec84d92dfe450 b/sql/hive/src/test/resources/golden/nullgroup5-2-45699aee54227552bb3ec84d92dfe450 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup5-3-4492a9ce0d8502584b872860d53c449c b/sql/hive/src/test/resources/golden/nullgroup5-3-4492a9ce0d8502584b872860d53c449c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup5-4-14e2854b364b68e7526a52e6e8f7c94e b/sql/hive/src/test/resources/golden/nullgroup5-4-14e2854b364b68e7526a52e6e8f7c94e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullgroup5-5-60d7180632a63c79eeba47e30b854f4c b/sql/hive/src/test/resources/golden/nullgroup5-5-60d7180632a63c79eeba47e30b854f4c new file mode 100644 index 0000000000000..c5c8d29fdd13e --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullgroup5-5-60d7180632a63c79eeba47e30b854f4c @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullinput-0-2be9511f8cb3c9edaf50353187f24c11 b/sql/hive/src/test/resources/golden/nullinput-0-2be9511f8cb3c9edaf50353187f24c11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullinput-1-bf48040d6cc6213cba90dbd76a796a66 b/sql/hive/src/test/resources/golden/nullinput-1-bf48040d6cc6213cba90dbd76a796a66 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullinput-2-61efe55ed8fef84e4cb8f9d7c317fabf b/sql/hive/src/test/resources/golden/nullinput-2-61efe55ed8fef84e4cb8f9d7c317fabf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullinput2-0-40b73200f853b473855e85eba391f008 b/sql/hive/src/test/resources/golden/nullinput2-0-40b73200f853b473855e85eba391f008 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullinput2-1-507c5a854d930361d8db66a3b90a5388 b/sql/hive/src/test/resources/golden/nullinput2-1-507c5a854d930361d8db66a3b90a5388 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullinput2-2-21058230c4992a682c4adef9881fa9a2 b/sql/hive/src/test/resources/golden/nullinput2-2-21058230c4992a682c4adef9881fa9a2 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullinput2-2-21058230c4992a682c4adef9881fa9a2 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/nullscript-0-4477b1566208a6805bb20630755a9375 b/sql/hive/src/test/resources/golden/nullscript-0-4477b1566208a6805bb20630755a9375 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullscript-1-3729d183a27e89a87ca9b9c9946e13a5 b/sql/hive/src/test/resources/golden/nullscript-1-3729d183a27e89a87ca9b9c9946e13a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullscript-2-17238164053203d56d30704e2c098e80 b/sql/hive/src/test/resources/golden/nullscript-2-17238164053203d56d30704e2c098e80 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullscript-3-56d47cf9468111b12fcef408bc767271 b/sql/hive/src/test/resources/golden/nullscript-3-56d47cf9468111b12fcef408bc767271 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/nullscript-4-472199a0c6b8f760a90863deb69e9710 b/sql/hive/src/test/resources/golden/nullscript-4-472199a0c6b8f760a90863deb69e9710 new file mode 100644 index 0000000000000..d23e05acf7ba5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/nullscript-4-472199a0c6b8f760a90863deb69e9710 @@ -0,0 +1,500 @@ +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +0 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +0 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +0 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +2 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/num_op_type_conv-0-c3f17f31d887479896bf454a2f6b15dc b/sql/hive/src/test/resources/golden/num_op_type_conv-0-c3f17f31d887479896bf454a2f6b15dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/num_op_type_conv-1-aad06d01bc3c868b70dbebf88c7e64b8 b/sql/hive/src/test/resources/golden/num_op_type_conv-1-aad06d01bc3c868b70dbebf88c7e64b8 new file mode 100644 index 0000000000000..da0ddb96957e1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/num_op_type_conv-1-aad06d01bc3c868b70dbebf88c7e64b8 @@ -0,0 +1 @@ +NULL NULL NULL 1 0 0.0 diff --git a/sql/hive/src/test/resources/golden/optional_outer-0-c157cc7014eda416b6248cf56165b62a b/sql/hive/src/test/resources/golden/optional_outer-0-c157cc7014eda416b6248cf56165b62a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/optional_outer-1-25aa8f4a1194304b0afc57a6b2c80205 b/sql/hive/src/test/resources/golden/optional_outer-1-25aa8f4a1194304b0afc57a6b2c80205 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/optional_outer-2-7871ab752b7065f13fb808c8d7cdb35f b/sql/hive/src/test/resources/golden/optional_outer-2-7871ab752b7065f13fb808c8d7cdb35f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/optional_outer-3-4815a6c9014b80a79f61ab983dcdd23a b/sql/hive/src/test/resources/golden/optional_outer-3-4815a6c9014b80a79f61ab983dcdd23a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/optional_outer-4-9519008c6ef6e8ed651c7f4405589c34 b/sql/hive/src/test/resources/golden/optional_outer-4-9519008c6ef6e8ed651c7f4405589c34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/optional_outer-5-4a868da4f3f6d96124bff2cf50a2673e b/sql/hive/src/test/resources/golden/optional_outer-5-4a868da4f3f6d96124bff2cf50a2673e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-0-9e7ba3cead1b5040ee3c23e8fc235d25 b/sql/hive/src/test/resources/golden/orc_create-0-9e7ba3cead1b5040ee3c23e8fc235d25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-1-b5209e6f850fc958dc9ebced21519684 b/sql/hive/src/test/resources/golden/orc_create-1-b5209e6f850fc958dc9ebced21519684 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-10-3027edcda6a6030c6bff93681529c34d b/sql/hive/src/test/resources/golden/orc_create-10-3027edcda6a6030c6bff93681529c34d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-11-14ea7dcc6898979aaa61650e3fc46187 b/sql/hive/src/test/resources/golden/orc_create-11-14ea7dcc6898979aaa61650e3fc46187 new file mode 100644 index 0000000000000..7541739b48608 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-11-14ea7dcc6898979aaa61650e3fc46187 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 31 19:56:27 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7445586986532881162/orc_create +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1391226987 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/orc_create-12-dd590639ea8d5b27ccf3312be2562fc2 b/sql/hive/src/test/resources/golden/orc_create-12-dd590639ea8d5b27ccf3312be2562fc2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-13-14ea7dcc6898979aaa61650e3fc46187 b/sql/hive/src/test/resources/golden/orc_create-13-14ea7dcc6898979aaa61650e3fc46187 new file mode 100644 index 0000000000000..78c0010bebbc6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-13-14ea7dcc6898979aaa61650e3fc46187 @@ -0,0 +1,34 @@ +# col_name data_type comment + +key int from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 31 19:56:27 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7445586986532881162/orc_create +Table Type: MANAGED_TABLE +Table Parameters: + last_modified_by marmbrus + last_modified_time 1391226987 + transient_lastDdlTime 1391226987 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/orc_create-14-9e7ba3cead1b5040ee3c23e8fc235d25 b/sql/hive/src/test/resources/golden/orc_create-14-9e7ba3cead1b5040ee3c23e8fc235d25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-15-e54b12bec275bc53ffe4b7252a99bab8 b/sql/hive/src/test/resources/golden/orc_create-15-e54b12bec275bc53ffe4b7252a99bab8 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-15-e54b12bec275bc53ffe4b7252a99bab8 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/orc_create-16-3027edcda6a6030c6bff93681529c34d b/sql/hive/src/test/resources/golden/orc_create-16-3027edcda6a6030c6bff93681529c34d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-17-f42f66edf8a9f6ffdbe83608cc353beb b/sql/hive/src/test/resources/golden/orc_create-17-f42f66edf8a9f6ffdbe83608cc353beb new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-17-f42f66edf8a9f6ffdbe83608cc353beb @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/orc_create-18-14ea7dcc6898979aaa61650e3fc46187 b/sql/hive/src/test/resources/golden/orc_create-18-14ea7dcc6898979aaa61650e3fc46187 new file mode 100644 index 0000000000000..6881640dd3cd4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-18-14ea7dcc6898979aaa61650e3fc46187 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 31 19:56:27 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7445586986532881162/orc_create +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1391226987 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/orc_create-19-a85f67347e5a19fc879ae83aa24c0ce4 b/sql/hive/src/test/resources/golden/orc_create-19-a85f67347e5a19fc879ae83aa24c0ce4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-2-f375f322df98df65e6b1bd0d4ce8e208 b/sql/hive/src/test/resources/golden/orc_create-2-f375f322df98df65e6b1bd0d4ce8e208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-20-176d469a0edba57404416535c7d48023 b/sql/hive/src/test/resources/golden/orc_create-20-176d469a0edba57404416535c7d48023 new file mode 100644 index 0000000000000..dd4fa77f326ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-20-176d469a0edba57404416535c7d48023 @@ -0,0 +1,29 @@ +# col_name data_type comment + +str string from deserializer +mp map from deserializer +lst array from deserializer +strct struct from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 31 19:56:27 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7445586986532881162/orc_create_complex +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1391226987 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/orc_create-21-e3accaf8ebc11bac7091db28d01fd2a7 b/sql/hive/src/test/resources/golden/orc_create-21-e3accaf8ebc11bac7091db28d01fd2a7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-22-31944ad765bbf262b4ebafdb06df59a6 b/sql/hive/src/test/resources/golden/orc_create-22-31944ad765bbf262b4ebafdb06df59a6 new file mode 100644 index 0000000000000..88c8812029d82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-22-31944ad765bbf262b4ebafdb06df59a6 @@ -0,0 +1,3 @@ +line1 {"key11":"value11","key12":"value12","key13":"value13"} ["a","b","c"] {"a":"one","b":"two"} +line2 {"key21":"value21","key22":"value22","key23":"value23"} ["d","e","f"] {"a":"three","b":"four"} +line3 {"key31":"value31","key32":"value32","key33":"value33"} ["g","h","i"] {"a":"five","b":"six"} diff --git a/sql/hive/src/test/resources/golden/orc_create-23-be779533ea8967231e644209114c8350 b/sql/hive/src/test/resources/golden/orc_create-23-be779533ea8967231e644209114c8350 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-24-fe59ff341395bc347dfb9cfdee397da2 b/sql/hive/src/test/resources/golden/orc_create-24-fe59ff341395bc347dfb9cfdee397da2 new file mode 100644 index 0000000000000..67946888f1baf --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-24-fe59ff341395bc347dfb9cfdee397da2 @@ -0,0 +1,3 @@ +line1 {"key12":"value12","key11":"value11","key13":"value13"} ["a","b","c"] {"A":"one","B":"two"} +line2 {"key21":"value21","key23":"value23","key22":"value22"} ["d","e","f"] {"A":"three","B":"four"} +line3 {"key33":"value33","key31":"value31","key32":"value32"} ["g","h","i"] {"A":"five","B":"six"} diff --git a/sql/hive/src/test/resources/golden/orc_create-25-c55e620d82921c40ebcdb94454ac1ead b/sql/hive/src/test/resources/golden/orc_create-25-c55e620d82921c40ebcdb94454ac1ead new file mode 100644 index 0000000000000..83db48f84ec87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-25-c55e620d82921c40ebcdb94454ac1ead @@ -0,0 +1,3 @@ +line1 +line2 +line3 diff --git a/sql/hive/src/test/resources/golden/orc_create-26-aa4e0c8a3de340c1133d9fdddda8a18c b/sql/hive/src/test/resources/golden/orc_create-26-aa4e0c8a3de340c1133d9fdddda8a18c new file mode 100644 index 0000000000000..db4876dd3c809 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-26-aa4e0c8a3de340c1133d9fdddda8a18c @@ -0,0 +1,3 @@ +{"key12":"value12","key11":"value11","key13":"value13"} +{"key21":"value21","key23":"value23","key22":"value22"} +{"key33":"value33","key31":"value31","key32":"value32"} diff --git a/sql/hive/src/test/resources/golden/orc_create-27-2eefc0bb4283fc255409a5c41203c89 b/sql/hive/src/test/resources/golden/orc_create-27-2eefc0bb4283fc255409a5c41203c89 new file mode 100644 index 0000000000000..3b2e1cf7e0098 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-27-2eefc0bb4283fc255409a5c41203c89 @@ -0,0 +1,3 @@ +["a","b","c"] +["d","e","f"] +["g","h","i"] diff --git a/sql/hive/src/test/resources/golden/orc_create-28-cf8aa1014707dfe576820041e47436e2 b/sql/hive/src/test/resources/golden/orc_create-28-cf8aa1014707dfe576820041e47436e2 new file mode 100644 index 0000000000000..0f890dfd226d6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-28-cf8aa1014707dfe576820041e47436e2 @@ -0,0 +1,3 @@ +{"a":"one","b":"two"} +{"a":"three","b":"four"} +{"a":"five","b":"six"} diff --git a/sql/hive/src/test/resources/golden/orc_create-29-cee6b57822d79ce80e14e58663bf7b86 b/sql/hive/src/test/resources/golden/orc_create-29-cee6b57822d79ce80e14e58663bf7b86 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-3-8480c37b4f3a6768f459361cf8470dae b/sql/hive/src/test/resources/golden/orc_create-3-8480c37b4f3a6768f459361cf8470dae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-30-b5e831bf4eb811ac4f06e9ac11a5283d b/sql/hive/src/test/resources/golden/orc_create-30-b5e831bf4eb811ac4f06e9ac11a5283d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-31-c934a1ca351b76c5c4ef87cb5655f1d3 b/sql/hive/src/test/resources/golden/orc_create-31-c934a1ca351b76c5c4ef87cb5655f1d3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-32-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/orc_create-32-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-32-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/orc_create-33-2151d07a07ab6b28782b7e8e4f848e36 b/sql/hive/src/test/resources/golden/orc_create-33-2151d07a07ab6b28782b7e8e4f848e36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-34-3b03210f94ec40db9ab02620645014d1 b/sql/hive/src/test/resources/golden/orc_create-34-3b03210f94ec40db9ab02620645014d1 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-34-3b03210f94ec40db9ab02620645014d1 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/orc_create-35-a7bdd6d4d98ead017c08349ee53e9ac2 b/sql/hive/src/test/resources/golden/orc_create-35-a7bdd6d4d98ead017c08349ee53e9ac2 new file mode 100644 index 0000000000000..7ed6ff82de6bc --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-35-a7bdd6d4d98ead017c08349ee53e9ac2 @@ -0,0 +1 @@ +5 diff --git a/sql/hive/src/test/resources/golden/orc_create-36-ca15a32658195ecaffe11d11f487fb0a b/sql/hive/src/test/resources/golden/orc_create-36-ca15a32658195ecaffe11d11f487fb0a new file mode 100644 index 0000000000000..0c6f532488607 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-36-ca15a32658195ecaffe11d11f487fb0a @@ -0,0 +1,10 @@ +91 Genevieve Wilkins 908 Turpis. Street +93 Mariko Cline P.O. Box 329, 5375 Ac St. +95 Winifred Hopper Ap #140-8982 Velit Avenue +97 Dana Carter 814-601 Purus. Av. +99 Wynter Vincent 626-8492 Mollis Avenue +92 Thane Oneil 6766 Lectus St. +94 Lael Mclean 500-7010 Sit St. +96 Rafael England P.O. Box 405, 7857 Eget Av. +98 Juliet Battle Ap #535-1965 Cursus St. +100 Wang Mitchell 4023 Lacinia. Ave diff --git a/sql/hive/src/test/resources/golden/orc_create-37-9e7ba3cead1b5040ee3c23e8fc235d25 b/sql/hive/src/test/resources/golden/orc_create-37-9e7ba3cead1b5040ee3c23e8fc235d25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-38-b5209e6f850fc958dc9ebced21519684 b/sql/hive/src/test/resources/golden/orc_create-38-b5209e6f850fc958dc9ebced21519684 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-39-f375f322df98df65e6b1bd0d4ce8e208 b/sql/hive/src/test/resources/golden/orc_create-39-f375f322df98df65e6b1bd0d4ce8e208 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-4-7a04a1c1fe76e48f3dc8ee07146cd1e3 b/sql/hive/src/test/resources/golden/orc_create-4-7a04a1c1fe76e48f3dc8ee07146cd1e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-40-8480c37b4f3a6768f459361cf8470dae b/sql/hive/src/test/resources/golden/orc_create-40-8480c37b4f3a6768f459361cf8470dae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-41-7a04a1c1fe76e48f3dc8ee07146cd1e3 b/sql/hive/src/test/resources/golden/orc_create-41-7a04a1c1fe76e48f3dc8ee07146cd1e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-5-4f8e2d1f18399679a97c49631c4ef921 b/sql/hive/src/test/resources/golden/orc_create-5-4f8e2d1f18399679a97c49631c4ef921 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-6-2ae0fd655aa777b41015e4125f680324 b/sql/hive/src/test/resources/golden/orc_create-6-2ae0fd655aa777b41015e4125f680324 new file mode 100644 index 0000000000000..ecd0704ce3386 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-6-2ae0fd655aa777b41015e4125f680324 @@ -0,0 +1,32 @@ +# col_name data_type comment + +str string None +mp map None +lst array None +strct struct None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 31 19:56:26 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7445586986532881162/orc_create_staging +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1391226986 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + colelction.delim , + field.delim | + mapkey.delim : + serialization.format | diff --git a/sql/hive/src/test/resources/golden/orc_create-7-27aa4a8093e80a7437266f349ea927c0 b/sql/hive/src/test/resources/golden/orc_create-7-27aa4a8093e80a7437266f349ea927c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_create-8-14ea7dcc6898979aaa61650e3fc46187 b/sql/hive/src/test/resources/golden/orc_create-8-14ea7dcc6898979aaa61650e3fc46187 new file mode 100644 index 0000000000000..6881640dd3cd4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_create-8-14ea7dcc6898979aaa61650e3fc46187 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 31 19:56:27 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse7445586986532881162/orc_create +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1391226987 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.ql.io.orc.OrcSerde +InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/orc_create-9-9e7ba3cead1b5040ee3c23e8fc235d25 b/sql/hive/src/test/resources/golden/orc_create-9-9e7ba3cead1b5040ee3c23e8fc235d25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-0-a399c0ef0f1578f9d2456727008dee16 b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-0-a399c0ef0f1578f9d2456727008dee16 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-0-a399c0ef0f1578f9d2456727008dee16 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-1-a2f8227aafaee48079235d466c5049a0 b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-1-a2f8227aafaee48079235d466c5049a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-2-939fd158d52e04da7ff5c13e74f51a8c b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-2-939fd158d52e04da7ff5c13e74f51a8c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-3-1a7f96f49e2992b93d97edcbdb0075d b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-3-1a7f96f49e2992b93d97edcbdb0075d new file mode 100644 index 0000000000000..f799fca27c353 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-3-1a7f96f49e2992b93d97edcbdb0075d @@ -0,0 +1,10 @@ +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-4-f3df937417e80909d4a4b220779173b0 b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-4-f3df937417e80909d4a4b220779173b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-5-f5387ae613d41813186d7f1399545b02 b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-5-f5387ae613d41813186d7f1399545b02 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-6-272f5d299289829dc22cc31f70115dd9 b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-6-272f5d299289829dc22cc31f70115dd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-7-acf39b28d4b76382acf5c56c21932ff9 b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-7-acf39b28d4b76382acf5c56c21932ff9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-7-acf39b28d4b76382acf5c56c21932ff9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-8-fe11a21ffbfa65e71ab62263077192a8 b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-8-fe11a21ffbfa65e71ab62263077192a8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_dictionary_threshold-9-f7b722063a6948d22aaaab0707cddde1 b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-9-f7b722063a6948d22aaaab0707cddde1 new file mode 100644 index 0000000000000..f953881c894c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_dictionary_threshold-9-f7b722063a6948d22aaaab0707cddde1 @@ -0,0 +1 @@ +1082202951192 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/orc_diff_part_cols-0-bfdd54175515a0557f8bd427ec23c453 b/sql/hive/src/test/resources/golden/orc_diff_part_cols-0-bfdd54175515a0557f8bd427ec23c453 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_diff_part_cols-1-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/orc_diff_part_cols-1-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_diff_part_cols-1-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/orc_diff_part_cols-2-ab12575b9b663420d9b3702f5a32a086 b/sql/hive/src/test/resources/golden/orc_diff_part_cols-2-ab12575b9b663420d9b3702f5a32a086 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_diff_part_cols-3-50ef26d05e69c02cd6fc2423fde00cd9 b/sql/hive/src/test/resources/golden/orc_diff_part_cols-3-50ef26d05e69c02cd6fc2423fde00cd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_diff_part_cols-4-1c1eab8fc34159875afe38eb2413434e b/sql/hive/src/test/resources/golden/orc_diff_part_cols-4-1c1eab8fc34159875afe38eb2413434e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_diff_part_cols-5-c0dce07a38f3c540c2b17db0a495a657 b/sql/hive/src/test/resources/golden/orc_diff_part_cols-5-c0dce07a38f3c540c2b17db0a495a657 new file mode 100644 index 0000000000000..f172be3e72712 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_diff_part_cols-5-c0dce07a38f3c540c2b17db0a495a657 @@ -0,0 +1,10 @@ +0 3 2 +165 NULL 1 +2 1 2 +238 NULL 1 +27 NULL 1 +311 NULL 1 +4 1 2 +5 3 2 +8 1 2 +86 NULL 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/orc_empty_files-0-eedb40290338ab680a930542cc7ddf0c b/sql/hive/src/test/resources/golden/orc_empty_files-0-eedb40290338ab680a930542cc7ddf0c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_empty_files-1-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/orc_empty_files-1-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_empty_files-1-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/orc_empty_files-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/orc_empty_files-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_empty_files-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/orc_empty_files-3-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/orc_empty_files-3-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_empty_files-3-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/orc_empty_files-4-9c1451024d868c99833bbe1173c703d4 b/sql/hive/src/test/resources/golden/orc_empty_files-4-9c1451024d868c99833bbe1173c703d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_empty_files-5-8c5d1eb83ebab33e284d70b11c4bc722 b/sql/hive/src/test/resources/golden/orc_empty_files-5-8c5d1eb83ebab33e284d70b11c4bc722 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_empty_files-5-8c5d1eb83ebab33e284d70b11c4bc722 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/orc_empty_strings-0-a338239d2fc4e22e23ab82fa5f62139 b/sql/hive/src/test/resources/golden/orc_empty_strings-0-a338239d2fc4e22e23ab82fa5f62139 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_empty_strings-1-a67f0c90e3f99257a7364cc96e5405cf b/sql/hive/src/test/resources/golden/orc_empty_strings-1-a67f0c90e3f99257a7364cc96e5405cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_empty_strings-2-a34bd419a63852c1c75f195a495ff333 b/sql/hive/src/test/resources/golden/orc_empty_strings-2-a34bd419a63852c1c75f195a495ff333 new file mode 100644 index 0000000000000..e3c0074c9d4f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_empty_strings-2-a34bd419a63852c1c75f195a495ff333 @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sql/hive/src/test/resources/golden/orc_empty_strings-3-3339ace17de3201296847caf29c42e99 b/sql/hive/src/test/resources/golden/orc_empty_strings-3-3339ace17de3201296847caf29c42e99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_empty_strings-4-eee6b7f3a881c8f56510bbd53aeebe1e b/sql/hive/src/test/resources/golden/orc_empty_strings-4-eee6b7f3a881c8f56510bbd53aeebe1e new file mode 100644 index 0000000000000..4cd1242d9fe61 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_empty_strings-4-eee6b7f3a881c8f56510bbd53aeebe1e @@ -0,0 +1,10 @@ + + + + + + + +165 +255 +27 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/orc_ends_with_nulls-0-a338239d2fc4e22e23ab82fa5f62139 b/sql/hive/src/test/resources/golden/orc_ends_with_nulls-0-a338239d2fc4e22e23ab82fa5f62139 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_ends_with_nulls-1-2c16215823a5e6904059a48a3077da4e b/sql/hive/src/test/resources/golden/orc_ends_with_nulls-1-2c16215823a5e6904059a48a3077da4e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_ends_with_nulls-2-2ffa91c54b8de552e8010bf00ecd2d43 b/sql/hive/src/test/resources/golden/orc_ends_with_nulls-2-2ffa91c54b8de552e8010bf00ecd2d43 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_ends_with_nulls-3-bbe8d353c397b795e2732bd59648d291 b/sql/hive/src/test/resources/golden/orc_ends_with_nulls-3-bbe8d353c397b795e2732bd59648d291 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_ends_with_nulls-4-a0231a52d63534679bfab3f6a0b8effc b/sql/hive/src/test/resources/golden/orc_ends_with_nulls-4-a0231a52d63534679bfab3f6a0b8effc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/orc_ends_with_nulls-5-4d467d3e186c59dee2c93c940a7b0e7f b/sql/hive/src/test/resources/golden/orc_ends_with_nulls-5-4d467d3e186c59dee2c93c940a7b0e7f new file mode 100644 index 0000000000000..e7700b8aee5c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/orc_ends_with_nulls-5-4d467d3e186c59dee2c93c940a7b0e7f @@ -0,0 +1,5 @@ +1 +NULL +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/order-0-5c2fda577771db3b316e0d2bd02d048a b/sql/hive/src/test/resources/golden/order-0-5c2fda577771db3b316e0d2bd02d048a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/order-1-57d93bd7619dfc460dfa763c12142bb9 b/sql/hive/src/test/resources/golden/order-1-57d93bd7619dfc460dfa763c12142bb9 new file mode 100644 index 0000000000000..217a1915f8826 --- /dev/null +++ b/sql/hive/src/test/resources/golden/order-1-57d93bd7619dfc460dfa763c12142bb9 @@ -0,0 +1,10 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/order-2-fe90320d98850ea5e9b6100f6d259fbf b/sql/hive/src/test/resources/golden/order-2-fe90320d98850ea5e9b6100f6d259fbf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/order-3-8f2ca0c3a07d78ebfff23a7bc77e85e5 b/sql/hive/src/test/resources/golden/order-3-8f2ca0c3a07d78ebfff23a7bc77e85e5 new file mode 100644 index 0000000000000..ab34c87e42364 --- /dev/null +++ b/sql/hive/src/test/resources/golden/order-3-8f2ca0c3a07d78ebfff23a7bc77e85e5 @@ -0,0 +1,10 @@ +498 val_498 +498 val_498 +498 val_498 +497 val_497 +496 val_496 +495 val_495 +494 val_494 +493 val_493 +492 val_492 +492 val_492 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/order2-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/order2-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/order2-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/order2-1-484c94d6b57ccc9fffda150bee0bccdf b/sql/hive/src/test/resources/golden/order2-1-484c94d6b57ccc9fffda150bee0bccdf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/order2-2-4162aa366dc0836eed15cc819226907f b/sql/hive/src/test/resources/golden/order2-2-4162aa366dc0836eed15cc819226907f new file mode 100644 index 0000000000000..217a1915f8826 --- /dev/null +++ b/sql/hive/src/test/resources/golden/order2-2-4162aa366dc0836eed15cc819226907f @@ -0,0 +1,10 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/outer_join_ppr-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/outer_join_ppr-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/outer_join_ppr-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/outer_join_ppr-1-1a374dec627d7109276f008f31be517c b/sql/hive/src/test/resources/golden/outer_join_ppr-1-1a374dec627d7109276f008f31be517c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/outer_join_ppr-2-b60ab17f7372863504804717c4276595 b/sql/hive/src/test/resources/golden/outer_join_ppr-2-b60ab17f7372863504804717c4276595 new file mode 100644 index 0000000000000..549da558b18da --- /dev/null +++ b/sql/hive/src/test/resources/golden/outer_join_ppr-2-b60ab17f7372863504804717c4276595 @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +17 val_17 17 val_17 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +19 val_19 19 val_19 +19 val_19 19 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/outer_join_ppr-3-5924d0d5ab868c05f488ed741a1955ba b/sql/hive/src/test/resources/golden/outer_join_ppr-3-5924d0d5ab868c05f488ed741a1955ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/outer_join_ppr-4-be64a45a645ea5363109323a378d335 b/sql/hive/src/test/resources/golden/outer_join_ppr-4-be64a45a645ea5363109323a378d335 new file mode 100644 index 0000000000000..549da558b18da --- /dev/null +++ b/sql/hive/src/test/resources/golden/outer_join_ppr-4-be64a45a645ea5363109323a378d335 @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +17 val_17 17 val_17 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +19 val_19 19 val_19 +19 val_19 19 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parallel-0-23a4feaede17467a8cc26e4d86ec30f9 b/sql/hive/src/test/resources/golden/parallel-0-23a4feaede17467a8cc26e4d86ec30f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parallel-0-23a4feaede17467a8cc26e4d86ec30f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parallel-1-851e262128626126ae1ad87869db7c54 b/sql/hive/src/test/resources/golden/parallel-1-851e262128626126ae1ad87869db7c54 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parallel-1-851e262128626126ae1ad87869db7c54 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parallel-10-d196279de0b7c4b42521aa23634ca506 b/sql/hive/src/test/resources/golden/parallel-10-d196279de0b7c4b42521aa23634ca506 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/parallel-11-6230286bc168af7b010968b543690a2a b/sql/hive/src/test/resources/golden/parallel-11-6230286bc168af7b010968b543690a2a new file mode 100644 index 0000000000000..c912af4a5c676 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parallel-11-6230286bc168af7b010968b543690a2a @@ -0,0 +1,309 @@ +0 val_0 +2 val_2 +4 val_4 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +15 val_15 +17 val_17 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +37 val_37 +41 val_41 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +69 val_69 +70 val_70 +72 val_72 +74 val_74 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +92 val_92 +95 val_95 +96 val_96 +97 val_97 +98 val_98 +100 val_100 +103 val_103 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +119 val_119 +120 val_120 +125 val_125 +126 val_126 +128 val_128 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +136 val_136 +137 val_137 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +149 val_149 +150 val_150 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +165 val_165 +166 val_166 +167 val_167 +168 val_168 +169 val_169 +170 val_170 +172 val_172 +174 val_174 +175 val_175 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +192 val_192 +193 val_193 +194 val_194 +195 val_195 +196 val_196 +197 val_197 +199 val_199 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +205 val_205 +207 val_207 +208 val_208 +209 val_209 +213 val_213 +214 val_214 +216 val_216 +217 val_217 +218 val_218 +219 val_219 +221 val_221 +222 val_222 +223 val_223 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +230 val_230 +233 val_233 +235 val_235 +237 val_237 +238 val_238 +239 val_239 +241 val_241 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +266 val_266 +272 val_272 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +278 val_278 +280 val_280 +281 val_281 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +308 val_308 +309 val_309 +310 val_310 +311 val_311 +315 val_315 +316 val_316 +317 val_317 +318 val_318 +321 val_321 +322 val_322 +323 val_323 +325 val_325 +327 val_327 +331 val_331 +332 val_332 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +344 val_344 +345 val_345 +348 val_348 +351 val_351 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +368 val_368 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +396 val_396 +397 val_397 +399 val_399 +400 val_400 +401 val_401 +402 val_402 +403 val_403 +404 val_404 +406 val_406 +407 val_407 +409 val_409 +411 val_411 +413 val_413 +414 val_414 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +427 val_427 +429 val_429 +430 val_430 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +459 val_459 +460 val_460 +462 val_462 +463 val_463 +466 val_466 +467 val_467 +468 val_468 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +479 val_479 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parallel-12-73a915d42e62c0e895a82602a502ee43 b/sql/hive/src/test/resources/golden/parallel-12-73a915d42e62c0e895a82602a502ee43 new file mode 100644 index 0000000000000..c912af4a5c676 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parallel-12-73a915d42e62c0e895a82602a502ee43 @@ -0,0 +1,309 @@ +0 val_0 +2 val_2 +4 val_4 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +15 val_15 +17 val_17 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +37 val_37 +41 val_41 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +69 val_69 +70 val_70 +72 val_72 +74 val_74 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +92 val_92 +95 val_95 +96 val_96 +97 val_97 +98 val_98 +100 val_100 +103 val_103 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +119 val_119 +120 val_120 +125 val_125 +126 val_126 +128 val_128 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +136 val_136 +137 val_137 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +149 val_149 +150 val_150 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +165 val_165 +166 val_166 +167 val_167 +168 val_168 +169 val_169 +170 val_170 +172 val_172 +174 val_174 +175 val_175 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +192 val_192 +193 val_193 +194 val_194 +195 val_195 +196 val_196 +197 val_197 +199 val_199 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +205 val_205 +207 val_207 +208 val_208 +209 val_209 +213 val_213 +214 val_214 +216 val_216 +217 val_217 +218 val_218 +219 val_219 +221 val_221 +222 val_222 +223 val_223 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +230 val_230 +233 val_233 +235 val_235 +237 val_237 +238 val_238 +239 val_239 +241 val_241 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +266 val_266 +272 val_272 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +278 val_278 +280 val_280 +281 val_281 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +308 val_308 +309 val_309 +310 val_310 +311 val_311 +315 val_315 +316 val_316 +317 val_317 +318 val_318 +321 val_321 +322 val_322 +323 val_323 +325 val_325 +327 val_327 +331 val_331 +332 val_332 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +344 val_344 +345 val_345 +348 val_348 +351 val_351 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +368 val_368 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +396 val_396 +397 val_397 +399 val_399 +400 val_400 +401 val_401 +402 val_402 +403 val_403 +404 val_404 +406 val_406 +407 val_407 +409 val_409 +411 val_411 +413 val_413 +414 val_414 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +427 val_427 +429 val_429 +430 val_430 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +459 val_459 +460 val_460 +462 val_462 +463 val_463 +466 val_466 +467 val_467 +468 val_468 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +479 val_479 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parallel-2-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/parallel-2-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parallel-2-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parallel-3-195007722f0c2921f9c6c1eb461b6d2a b/sql/hive/src/test/resources/golden/parallel-3-195007722f0c2921f9c6c1eb461b6d2a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/parallel-4-fcf032bbe1f1569d934da7090db60a83 b/sql/hive/src/test/resources/golden/parallel-4-fcf032bbe1f1569d934da7090db60a83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/parallel-5-e27b511ffc5828b09069121031d17a2f b/sql/hive/src/test/resources/golden/parallel-5-e27b511ffc5828b09069121031d17a2f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/parallel-6-d196279de0b7c4b42521aa23634ca506 b/sql/hive/src/test/resources/golden/parallel-6-d196279de0b7c4b42521aa23634ca506 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/parallel-7-6230286bc168af7b010968b543690a2a b/sql/hive/src/test/resources/golden/parallel-7-6230286bc168af7b010968b543690a2a new file mode 100644 index 0000000000000..c912af4a5c676 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parallel-7-6230286bc168af7b010968b543690a2a @@ -0,0 +1,309 @@ +0 val_0 +2 val_2 +4 val_4 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +15 val_15 +17 val_17 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +37 val_37 +41 val_41 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +69 val_69 +70 val_70 +72 val_72 +74 val_74 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +92 val_92 +95 val_95 +96 val_96 +97 val_97 +98 val_98 +100 val_100 +103 val_103 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +119 val_119 +120 val_120 +125 val_125 +126 val_126 +128 val_128 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +136 val_136 +137 val_137 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +149 val_149 +150 val_150 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +165 val_165 +166 val_166 +167 val_167 +168 val_168 +169 val_169 +170 val_170 +172 val_172 +174 val_174 +175 val_175 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +192 val_192 +193 val_193 +194 val_194 +195 val_195 +196 val_196 +197 val_197 +199 val_199 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +205 val_205 +207 val_207 +208 val_208 +209 val_209 +213 val_213 +214 val_214 +216 val_216 +217 val_217 +218 val_218 +219 val_219 +221 val_221 +222 val_222 +223 val_223 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +230 val_230 +233 val_233 +235 val_235 +237 val_237 +238 val_238 +239 val_239 +241 val_241 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +266 val_266 +272 val_272 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +278 val_278 +280 val_280 +281 val_281 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +308 val_308 +309 val_309 +310 val_310 +311 val_311 +315 val_315 +316 val_316 +317 val_317 +318 val_318 +321 val_321 +322 val_322 +323 val_323 +325 val_325 +327 val_327 +331 val_331 +332 val_332 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +344 val_344 +345 val_345 +348 val_348 +351 val_351 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +368 val_368 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +396 val_396 +397 val_397 +399 val_399 +400 val_400 +401 val_401 +402 val_402 +403 val_403 +404 val_404 +406 val_406 +407 val_407 +409 val_409 +411 val_411 +413 val_413 +414 val_414 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +427 val_427 +429 val_429 +430 val_430 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +459 val_459 +460 val_460 +462 val_462 +463 val_463 +466 val_466 +467 val_467 +468 val_468 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +479 val_479 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parallel-8-73a915d42e62c0e895a82602a502ee43 b/sql/hive/src/test/resources/golden/parallel-8-73a915d42e62c0e895a82602a502ee43 new file mode 100644 index 0000000000000..c912af4a5c676 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parallel-8-73a915d42e62c0e895a82602a502ee43 @@ -0,0 +1,309 @@ +0 val_0 +2 val_2 +4 val_4 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +15 val_15 +17 val_17 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +37 val_37 +41 val_41 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +69 val_69 +70 val_70 +72 val_72 +74 val_74 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +92 val_92 +95 val_95 +96 val_96 +97 val_97 +98 val_98 +100 val_100 +103 val_103 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +119 val_119 +120 val_120 +125 val_125 +126 val_126 +128 val_128 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +136 val_136 +137 val_137 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +149 val_149 +150 val_150 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +165 val_165 +166 val_166 +167 val_167 +168 val_168 +169 val_169 +170 val_170 +172 val_172 +174 val_174 +175 val_175 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +192 val_192 +193 val_193 +194 val_194 +195 val_195 +196 val_196 +197 val_197 +199 val_199 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +205 val_205 +207 val_207 +208 val_208 +209 val_209 +213 val_213 +214 val_214 +216 val_216 +217 val_217 +218 val_218 +219 val_219 +221 val_221 +222 val_222 +223 val_223 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +230 val_230 +233 val_233 +235 val_235 +237 val_237 +238 val_238 +239 val_239 +241 val_241 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +266 val_266 +272 val_272 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +278 val_278 +280 val_280 +281 val_281 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +308 val_308 +309 val_309 +310 val_310 +311 val_311 +315 val_315 +316 val_316 +317 val_317 +318 val_318 +321 val_321 +322 val_322 +323 val_323 +325 val_325 +327 val_327 +331 val_331 +332 val_332 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +344 val_344 +345 val_345 +348 val_348 +351 val_351 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +368 val_368 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +396 val_396 +397 val_397 +399 val_399 +400 val_400 +401 val_401 +402 val_402 +403 val_403 +404 val_404 +406 val_406 +407 val_407 +409 val_409 +411 val_411 +413 val_413 +414 val_414 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +427 val_427 +429 val_429 +430 val_430 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +459 val_459 +460 val_460 +462 val_462 +463 val_463 +466 val_466 +467 val_467 +468 val_468 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +479 val_479 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parallel-9-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/parallel-9-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parallel-9-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parenthesis_star_by-0-57a4ea931689f9475b687292f34abfa4 b/sql/hive/src/test/resources/golden/parenthesis_star_by-0-57a4ea931689f9475b687292f34abfa4 new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parenthesis_star_by-0-57a4ea931689f9475b687292f34abfa4 @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parenthesis_star_by-1-41d474f5e6d7c61c36f74b4bec4e9e44 b/sql/hive/src/test/resources/golden/parenthesis_star_by-1-41d474f5e6d7c61c36f74b4bec4e9e44 new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parenthesis_star_by-1-41d474f5e6d7c61c36f74b4bec4e9e44 @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parenthesis_star_by-2-7a45831bf96814d9a7fc3d78fb7bd8dc b/sql/hive/src/test/resources/golden/parenthesis_star_by-2-7a45831bf96814d9a7fc3d78fb7bd8dc new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parenthesis_star_by-2-7a45831bf96814d9a7fc3d78fb7bd8dc @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parenthesis_star_by-3-498e2973594ccf45448ba19552bfb1cd b/sql/hive/src/test/resources/golden/parenthesis_star_by-3-498e2973594ccf45448ba19552bfb1cd new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parenthesis_star_by-3-498e2973594ccf45448ba19552bfb1cd @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parenthesis_star_by-4-dc9d9d8bbb6259c89a97065902a345ec b/sql/hive/src/test/resources/golden/parenthesis_star_by-4-dc9d9d8bbb6259c89a97065902a345ec new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parenthesis_star_by-4-dc9d9d8bbb6259c89a97065902a345ec @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parenthesis_star_by-5-6888c7f7894910538d82eefa23443189 b/sql/hive/src/test/resources/golden/parenthesis_star_by-5-6888c7f7894910538d82eefa23443189 new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parenthesis_star_by-5-6888c7f7894910538d82eefa23443189 @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parenthesis_star_by-6-6b7a4fa7be24cf775fae1b8c540c3b02 b/sql/hive/src/test/resources/golden/parenthesis_star_by-6-6b7a4fa7be24cf775fae1b8c540c3b02 new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parenthesis_star_by-6-6b7a4fa7be24cf775fae1b8c540c3b02 @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/parenthesis_star_by-7-f36c71c612ab8da4f4191980c1b61fea b/sql/hive/src/test/resources/golden/parenthesis_star_by-7-f36c71c612ab8da4f4191980c1b61fea new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/parenthesis_star_by-7-f36c71c612ab8da4f4191980c1b61fea @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partInit-0-aaa3124841a8140a41d3556a4ccaa6a5 b/sql/hive/src/test/resources/golden/partInit-0-aaa3124841a8140a41d3556a4ccaa6a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partInit-1-c0ec92801bec7ece0a156d407b601f7b b/sql/hive/src/test/resources/golden/partInit-1-c0ec92801bec7ece0a156d407b601f7b new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partInit-1-c0ec92801bec7ece0a156d407b601f7b @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partInit-2-5db6fb2267a648ac57af8f56f91cf9a2 b/sql/hive/src/test/resources/golden/partInit-2-5db6fb2267a648ac57af8f56f91cf9a2 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partInit-2-5db6fb2267a648ac57af8f56f91cf9a2 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partInit-3-878a82ca7519e3eafd3f2661b2ac1b88 b/sql/hive/src/test/resources/golden/partInit-3-878a82ca7519e3eafd3f2661b2ac1b88 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partInit-4-5db6fb2267a648ac57af8f56f91cf9a2 b/sql/hive/src/test/resources/golden/partInit-4-5db6fb2267a648ac57af8f56f91cf9a2 new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partInit-4-5db6fb2267a648ac57af8f56f91cf9a2 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props-0-8ea0fbf5d1f4c19b56bda7f05764a0c0 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props-0-8ea0fbf5d1f4c19b56bda7f05764a0c0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/part_inherit_tbl_props-0-8ea0fbf5d1f4c19b56bda7f05764a0c0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props-1-797247d3ab7d2f3cd6fb33ad57ac7298 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props-1-797247d3ab7d2f3cd6fb33ad57ac7298 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props-2-7bf3b5a09ed6cd06f27a0616de64ceb b/sql/hive/src/test/resources/golden/part_inherit_tbl_props-2-7bf3b5a09ed6cd06f27a0616de64ceb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props-3-7e6487ca8473fa3264fdd9fa3e4a2db2 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props-3-7e6487ca8473fa3264fdd9fa3e4a2db2 new file mode 100644 index 0000000000000..ffa0de8a0c322 --- /dev/null +++ b/sql/hive/src/test/resources/golden/part_inherit_tbl_props-3-7e6487ca8473fa3264fdd9fa3e4a2db2 @@ -0,0 +1,32 @@ +# col_name data_type comment + +c1 tinyint None + +# Partition Information +# col_name data_type comment + +c2 string None + +# Detailed Partition Information +Partition Value: [v1] +Database: default +Table: mytbl +CreateTime: Fri Jan 03 17:18:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/mytbl/c2=v1 +Partition Parameters: + a myval + b yourval + transient_lastDdlTime 1388798332 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props-4-c04c695a6ebed215889ce75edcb33eb4 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props-4-c04c695a6ebed215889ce75edcb33eb4 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/part_inherit_tbl_props-4-c04c695a6ebed215889ce75edcb33eb4 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-0-c367ba7f534037ab96efc7f2273508c7 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-0-c367ba7f534037ab96efc7f2273508c7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-0-c367ba7f534037ab96efc7f2273508c7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-1-d697ec36ecf73b0ee789972e6980e460 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-1-d697ec36ecf73b0ee789972e6980e460 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-2-7bf3b5a09ed6cd06f27a0616de64ceb b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-2-7bf3b5a09ed6cd06f27a0616de64ceb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-3-7e6487ca8473fa3264fdd9fa3e4a2db2 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-3-7e6487ca8473fa3264fdd9fa3e4a2db2 new file mode 100644 index 0000000000000..0909bab11a6ec --- /dev/null +++ b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_empty-3-7e6487ca8473fa3264fdd9fa3e4a2db2 @@ -0,0 +1,30 @@ +# col_name data_type comment + +c1 tinyint None + +# Partition Information +# col_name data_type comment + +c2 string None + +# Detailed Partition Information +Partition Value: [v1] +Database: default +Table: mytbl +CreateTime: Fri Jan 03 17:18:59 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/mytbl/c2=v1 +Partition Parameters: + transient_lastDdlTime 1388798339 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-0-9131f0b22a7303a9f3bd9ec0d1c85b06 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-0-9131f0b22a7303a9f3bd9ec0d1c85b06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-0-9131f0b22a7303a9f3bd9ec0d1c85b06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-1-797247d3ab7d2f3cd6fb33ad57ac7298 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-1-797247d3ab7d2f3cd6fb33ad57ac7298 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-2-7bf3b5a09ed6cd06f27a0616de64ceb b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-2-7bf3b5a09ed6cd06f27a0616de64ceb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-3-7e6487ca8473fa3264fdd9fa3e4a2db2 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-3-7e6487ca8473fa3264fdd9fa3e4a2db2 new file mode 100644 index 0000000000000..55fb6df62f0a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-3-7e6487ca8473fa3264fdd9fa3e4a2db2 @@ -0,0 +1,33 @@ +# col_name data_type comment + +c1 tinyint None + +# Partition Information +# col_name data_type comment + +c2 string None + +# Detailed Partition Information +Partition Value: [v1] +Database: default +Table: mytbl +CreateTime: Fri Jan 03 17:19:02 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/mytbl/c2=v1 +Partition Parameters: + a myval + b yourval + c noval + transient_lastDdlTime 1388798342 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-4-c04c695a6ebed215889ce75edcb33eb4 b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-4-c04c695a6ebed215889ce75edcb33eb4 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/part_inherit_tbl_props_with_star-4-c04c695a6ebed215889ce75edcb33eb4 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partcols1-0-e234d14f9b1beb190c3c13d22ff02a0a b/sql/hive/src/test/resources/golden/partcols1-0-e234d14f9b1beb190c3c13d22ff02a0a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partcols1-1-5ea0e79c5da4b87d90ab30a56f3598d4 b/sql/hive/src/test/resources/golden/partcols1-1-5ea0e79c5da4b87d90ab30a56f3598d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partcols1-2-1fac765c5b4e1a8e4358f3babafd14e5 b/sql/hive/src/test/resources/golden/partcols1-2-1fac765c5b4e1a8e4358f3babafd14e5 new file mode 100644 index 0000000000000..8fb73f609efce --- /dev/null +++ b/sql/hive/src/test/resources/golden/partcols1-2-1fac765c5b4e1a8e4358f3babafd14e5 @@ -0,0 +1,10 @@ +1 111 222 333 +1 111 222 333 +1 111 222 333 +1 111 222 333 +1 111 222 333 +1 111 222 333 +1 111 222 333 +1 111 222 333 +1 111 222 333 +1 111 222 333 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-0-6ae3e0805cbfa967f50ad222bc33b772 b/sql/hive/src/test/resources/golden/partition_decode_name-0-6ae3e0805cbfa967f50ad222bc33b772 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-1-4de8e998198c8df484e9102f60ba05c1 b/sql/hive/src/test/resources/golden/partition_decode_name-1-4de8e998198c8df484e9102f60ba05c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-10-f1c90c8f4afd0c2ee66019e017997eb5 b/sql/hive/src/test/resources/golden/partition_decode_name-10-f1c90c8f4afd0c2ee66019e017997eb5 new file mode 100644 index 0000000000000..81df179618406 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_decode_name-10-f1c90c8f4afd0c2ee66019e017997eb5 @@ -0,0 +1,3 @@ +ts=2011-01-11+14:18:26 +ts=2011-01-11+15:18:26 +ts=2011-01-11+16:18:26 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-11-94d637f6e5cee2771b9844438008a618 b/sql/hive/src/test/resources/golden/partition_decode_name-11-94d637f6e5cee2771b9844438008a618 new file mode 100644 index 0000000000000..00750edc07d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_decode_name-11-94d637f6e5cee2771b9844438008a618 @@ -0,0 +1 @@ +3 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/partition_decode_name-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_decode_name-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/partition_decode_name-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_decode_name-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-4-e90740a9a52c37a964ee204379f01412 b/sql/hive/src/test/resources/golden/partition_decode_name-4-e90740a9a52c37a964ee204379f01412 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_decode_name-4-e90740a9a52c37a964ee204379f01412 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-5-a3e8e57df86f00101d2f4dd0ce8c2bd7 b/sql/hive/src/test/resources/golden/partition_decode_name-5-a3e8e57df86f00101d2f4dd0ce8c2bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-6-f1c90c8f4afd0c2ee66019e017997eb5 b/sql/hive/src/test/resources/golden/partition_decode_name-6-f1c90c8f4afd0c2ee66019e017997eb5 new file mode 100644 index 0000000000000..e16053e3110ae --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_decode_name-6-f1c90c8f4afd0c2ee66019e017997eb5 @@ -0,0 +1,3 @@ +ts=2011-01-11+14%3A18%3A26 +ts=2011-01-11+15%3A18%3A26 +ts=2011-01-11+16%3A18%3A26 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-7-94d637f6e5cee2771b9844438008a618 b/sql/hive/src/test/resources/golden/partition_decode_name-7-94d637f6e5cee2771b9844438008a618 new file mode 100644 index 0000000000000..00750edc07d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_decode_name-7-94d637f6e5cee2771b9844438008a618 @@ -0,0 +1 @@ +3 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-8-bff58433eb2b500bb1d2f6ea495a5f20 b/sql/hive/src/test/resources/golden/partition_decode_name-8-bff58433eb2b500bb1d2f6ea495a5f20 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_decode_name-8-bff58433eb2b500bb1d2f6ea495a5f20 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_decode_name-9-a3e8e57df86f00101d2f4dd0ce8c2bd7 b/sql/hive/src/test/resources/golden/partition_decode_name-9-a3e8e57df86f00101d2f4dd0ce8c2bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_schema1-0-3fc0ef3eda4a7269f205ce0203b56b0c b/sql/hive/src/test/resources/golden/partition_schema1-0-3fc0ef3eda4a7269f205ce0203b56b0c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_schema1-1-3d21fcf667e5b0ef9e2ec0a1d502f915 b/sql/hive/src/test/resources/golden/partition_schema1-1-3d21fcf667e5b0ef9e2ec0a1d502f915 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_schema1-2-4fcfc1d26e1de1ce3071f1f93c012988 b/sql/hive/src/test/resources/golden/partition_schema1-2-4fcfc1d26e1de1ce3071f1f93c012988 new file mode 100644 index 0000000000000..8af58e2b29f4a --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_schema1-2-4fcfc1d26e1de1ce3071f1f93c012988 @@ -0,0 +1,8 @@ +key string None +value string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_schema1-3-fdef2e7e9e40868305d21c1b0df019bb b/sql/hive/src/test/resources/golden/partition_schema1-3-fdef2e7e9e40868305d21c1b0df019bb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_schema1-4-9b756f83973c37236e72f6927b1c02d7 b/sql/hive/src/test/resources/golden/partition_schema1-4-9b756f83973c37236e72f6927b1c02d7 new file mode 100644 index 0000000000000..82a07522b0af0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_schema1-4-9b756f83973c37236e72f6927b1c02d7 @@ -0,0 +1,9 @@ +key string None +value string None +x string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_schema1-5-52a518a4f7132598998c4f6781fd7634 b/sql/hive/src/test/resources/golden/partition_schema1-5-52a518a4f7132598998c4f6781fd7634 new file mode 100644 index 0000000000000..8af58e2b29f4a --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_schema1-5-52a518a4f7132598998c4f6781fd7634 @@ -0,0 +1,8 @@ +key string None +value string None +dt string None + +# Partition Information +# col_name data_type comment + +dt string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_serde_format-0-65b98f7ed3ca5907e7ca5206de94939d b/sql/hive/src/test/resources/golden/partition_serde_format-0-65b98f7ed3ca5907e7ca5206de94939d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_serde_format-1-37d3a88b6b22de326dbc1f4cba6b7cd1 b/sql/hive/src/test/resources/golden/partition_serde_format-1-37d3a88b6b22de326dbc1f4cba6b7cd1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_serde_format-2-47b559b01e389cc9e327a2fd29255acf b/sql/hive/src/test/resources/golden/partition_serde_format-2-47b559b01e389cc9e327a2fd29255acf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_serde_format-3-54d18742b4eab85edd1946ef139771b4 b/sql/hive/src/test/resources/golden/partition_serde_format-3-54d18742b4eab85edd1946ef139771b4 new file mode 100644 index 0000000000000..95f5492558a9b --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_serde_format-3-54d18742b4eab85edd1946ef139771b4 @@ -0,0 +1,20 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_special_char-0-6ae3e0805cbfa967f50ad222bc33b772 b/sql/hive/src/test/resources/golden/partition_special_char-0-6ae3e0805cbfa967f50ad222bc33b772 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_special_char-1-4de8e998198c8df484e9102f60ba05c1 b/sql/hive/src/test/resources/golden/partition_special_char-1-4de8e998198c8df484e9102f60ba05c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_special_char-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/partition_special_char-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_special_char-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_special_char-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/partition_special_char-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_special_char-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_special_char-4-a3e8e57df86f00101d2f4dd0ce8c2bd7 b/sql/hive/src/test/resources/golden/partition_special_char-4-a3e8e57df86f00101d2f4dd0ce8c2bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_special_char-5-f1c90c8f4afd0c2ee66019e017997eb5 b/sql/hive/src/test/resources/golden/partition_special_char-5-f1c90c8f4afd0c2ee66019e017997eb5 new file mode 100644 index 0000000000000..e16053e3110ae --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_special_char-5-f1c90c8f4afd0c2ee66019e017997eb5 @@ -0,0 +1,3 @@ +ts=2011-01-11+14%3A18%3A26 +ts=2011-01-11+15%3A18%3A26 +ts=2011-01-11+16%3A18%3A26 diff --git a/sql/hive/src/test/resources/golden/partition_special_char-6-94d637f6e5cee2771b9844438008a618 b/sql/hive/src/test/resources/golden/partition_special_char-6-94d637f6e5cee2771b9844438008a618 new file mode 100644 index 0000000000000..00750edc07d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_special_char-6-94d637f6e5cee2771b9844438008a618 @@ -0,0 +1 @@ +3 diff --git a/sql/hive/src/test/resources/golden/partition_special_char-7-a3e8e57df86f00101d2f4dd0ce8c2bd7 b/sql/hive/src/test/resources/golden/partition_special_char-7-a3e8e57df86f00101d2f4dd0ce8c2bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_special_char-8-f1c90c8f4afd0c2ee66019e017997eb5 b/sql/hive/src/test/resources/golden/partition_special_char-8-f1c90c8f4afd0c2ee66019e017997eb5 new file mode 100644 index 0000000000000..e16053e3110ae --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_special_char-8-f1c90c8f4afd0c2ee66019e017997eb5 @@ -0,0 +1,3 @@ +ts=2011-01-11+14%3A18%3A26 +ts=2011-01-11+15%3A18%3A26 +ts=2011-01-11+16%3A18%3A26 diff --git a/sql/hive/src/test/resources/golden/partition_special_char-9-94d637f6e5cee2771b9844438008a618 b/sql/hive/src/test/resources/golden/partition_special_char-9-94d637f6e5cee2771b9844438008a618 new file mode 100644 index 0000000000000..00750edc07d64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_special_char-9-94d637f6e5cee2771b9844438008a618 @@ -0,0 +1 @@ +3 diff --git a/sql/hive/src/test/resources/golden/partition_type_check-0-b500f9a7ff3ef4ea3046cbaee22f434c b/sql/hive/src/test/resources/golden/partition_type_check-0-b500f9a7ff3ef4ea3046cbaee22f434c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_type_check-0-b500f9a7ff3ef4ea3046cbaee22f434c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_type_check-1-e676cfebd53fcc4c86407028dff8ddaa b/sql/hive/src/test/resources/golden/partition_type_check-1-e676cfebd53fcc4c86407028dff8ddaa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_type_check-10-d51791c8b809ac86dc5b0f493a938fc b/sql/hive/src/test/resources/golden/partition_type_check-10-d51791c8b809ac86dc5b0f493a938fc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_type_check-11-a1164f1770d2f787b520fbc3d345911a b/sql/hive/src/test/resources/golden/partition_type_check-11-a1164f1770d2f787b520fbc3d345911a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_type_check-2-5e857e1536264658caf0df9b7e28652f b/sql/hive/src/test/resources/golden/partition_type_check-2-5e857e1536264658caf0df9b7e28652f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_type_check-3-7880e06d5cff6ea961dba5ff533cf346 b/sql/hive/src/test/resources/golden/partition_type_check-3-7880e06d5cff6ea961dba5ff533cf346 new file mode 100644 index 0000000000000..c4f5a8a640fd8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_type_check-3-7880e06d5cff6ea961dba5ff533cf346 @@ -0,0 +1,6 @@ +1 11 June 2 +2 12 June 2 +3 13 June 2 +7 17 June 2 +8 18 June 2 +8 28 June 2 diff --git a/sql/hive/src/test/resources/golden/partition_type_check-4-45fb706ff448da1fe609c7ff76a80d4d b/sql/hive/src/test/resources/golden/partition_type_check-4-45fb706ff448da1fe609c7ff76a80d4d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_type_check-5-4a0b90a674d255ce00dd417dfefc46d4 b/sql/hive/src/test/resources/golden/partition_type_check-5-4a0b90a674d255ce00dd417dfefc46d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_type_check-6-1f5f161f5e992a6aa7358dcbbffc5939 b/sql/hive/src/test/resources/golden/partition_type_check-6-1f5f161f5e992a6aa7358dcbbffc5939 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_type_check-7-7880e06d5cff6ea961dba5ff533cf346 b/sql/hive/src/test/resources/golden/partition_type_check-7-7880e06d5cff6ea961dba5ff533cf346 new file mode 100644 index 0000000000000..c4f5a8a640fd8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_type_check-7-7880e06d5cff6ea961dba5ff533cf346 @@ -0,0 +1,6 @@ +1 11 June 2 +2 12 June 2 +3 13 June 2 +7 17 June 2 +8 18 June 2 +8 28 June 2 diff --git a/sql/hive/src/test/resources/golden/partition_type_check-8-45fb706ff448da1fe609c7ff76a80d4d b/sql/hive/src/test/resources/golden/partition_type_check-8-45fb706ff448da1fe609c7ff76a80d4d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_type_check-9-57b300095c52fd652e1d414724523587 b/sql/hive/src/test/resources/golden/partition_type_check-9-57b300095c52fd652e1d414724523587 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-0-ec359154c4bad3bfce1b7ab4914d1554 b/sql/hive/src/test/resources/golden/partition_varchar1-0-ec359154c4bad3bfce1b7ab4914d1554 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-1-5064ea12af064b5e040d7b9ebd08b940 b/sql/hive/src/test/resources/golden/partition_varchar1-1-5064ea12af064b5e040d7b9ebd08b940 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-10-1839df813809f21d8e0a0dd0006c7eb1 b/sql/hive/src/test/resources/golden/partition_varchar1-10-1839df813809f21d8e0a0dd0006c7eb1 new file mode 100644 index 0000000000000..b4de394767536 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-10-1839df813809f21d8e0a0dd0006c7eb1 @@ -0,0 +1 @@ +11 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-11-83bf857460d5f49bf4bf6e480d9ce36 b/sql/hive/src/test/resources/golden/partition_varchar1-11-83bf857460d5f49bf4bf6e480d9ce36 new file mode 100644 index 0000000000000..64bb6b746dcea --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-11-83bf857460d5f49bf4bf6e480d9ce36 @@ -0,0 +1 @@ +30 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-12-299a7b630adb14d0f6a8ea8f2e528489 b/sql/hive/src/test/resources/golden/partition_varchar1-12-299a7b630adb14d0f6a8ea8f2e528489 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-12-299a7b630adb14d0f6a8ea8f2e528489 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-13-4b9a64b41647af09b2f420c3b23b811c b/sql/hive/src/test/resources/golden/partition_varchar1-13-4b9a64b41647af09b2f420c3b23b811c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-13-4b9a64b41647af09b2f420c3b23b811c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-14-c07f977014280e92c02f24bb3ea0ec68 b/sql/hive/src/test/resources/golden/partition_varchar1-14-c07f977014280e92c02f24bb3ea0ec68 new file mode 100644 index 0000000000000..209e3ef4b6247 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-14-c07f977014280e92c02f24bb3ea0ec68 @@ -0,0 +1 @@ +20 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-15-6442628796f33b87ef1ca11945fa4b48 b/sql/hive/src/test/resources/golden/partition_varchar1-15-6442628796f33b87ef1ca11945fa4b48 new file mode 100644 index 0000000000000..f599e28b8ab0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-15-6442628796f33b87ef1ca11945fa4b48 @@ -0,0 +1 @@ +10 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-16-3300093c71a371aed6225ffa9e05fc3d b/sql/hive/src/test/resources/golden/partition_varchar1-16-3300093c71a371aed6225ffa9e05fc3d new file mode 100644 index 0000000000000..209e3ef4b6247 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-16-3300093c71a371aed6225ffa9e05fc3d @@ -0,0 +1 @@ +20 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-17-367ed375dd11bf57d5ab4288289a11d2 b/sql/hive/src/test/resources/golden/partition_varchar1-17-367ed375dd11bf57d5ab4288289a11d2 new file mode 100644 index 0000000000000..f599e28b8ab0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-17-367ed375dd11bf57d5ab4288289a11d2 @@ -0,0 +1 @@ +10 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-18-3df8ffe4c220764e59efb874bab97b9a b/sql/hive/src/test/resources/golden/partition_varchar1-18-3df8ffe4c220764e59efb874bab97b9a new file mode 100644 index 0000000000000..209e3ef4b6247 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-18-3df8ffe4c220764e59efb874bab97b9a @@ -0,0 +1 @@ +20 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-19-ec359154c4bad3bfce1b7ab4914d1554 b/sql/hive/src/test/resources/golden/partition_varchar1-19-ec359154c4bad3bfce1b7ab4914d1554 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-2-fc9381cdfb786fc3b7b9b35df6003474 b/sql/hive/src/test/resources/golden/partition_varchar1-2-fc9381cdfb786fc3b7b9b35df6003474 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-3-968759281b7d1bf0a60991ed04953b93 b/sql/hive/src/test/resources/golden/partition_varchar1-3-968759281b7d1bf0a60991ed04953b93 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-4-deb9b7715610152bda285a3a33b772ef b/sql/hive/src/test/resources/golden/partition_varchar1-4-deb9b7715610152bda285a3a33b772ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-5-f77df9235261b945ca0a55e1afe2e5ce b/sql/hive/src/test/resources/golden/partition_varchar1-5-f77df9235261b945ca0a55e1afe2e5ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-6-ad21f89ac813692cf47343c66e302ea6 b/sql/hive/src/test/resources/golden/partition_varchar1-6-ad21f89ac813692cf47343c66e302ea6 new file mode 100644 index 0000000000000..051ca3d3c28e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-6-ad21f89ac813692cf47343c66e302ea6 @@ -0,0 +1,2 @@ +2000-01-01 +2013-08-08 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-7-be5b3ad809173ec5dab8fb3d29b6cb0e b/sql/hive/src/test/resources/golden/partition_varchar1-7-be5b3ad809173ec5dab8fb3d29b6cb0e new file mode 100644 index 0000000000000..24192eefd2caf --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-7-be5b3ad809173ec5dab8fb3d29b6cb0e @@ -0,0 +1,5 @@ +165 val_165 2000-01-01 2 +238 val_238 2000-01-01 2 +27 val_27 2000-01-01 2 +311 val_311 2000-01-01 2 +86 val_86 2000-01-01 2 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-8-6b968247a2c615af03fc6a386d72db9b b/sql/hive/src/test/resources/golden/partition_varchar1-8-6b968247a2c615af03fc6a386d72db9b new file mode 100644 index 0000000000000..60d3b2f4a4cd5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-8-6b968247a2c615af03fc6a386d72db9b @@ -0,0 +1 @@ +15 diff --git a/sql/hive/src/test/resources/golden/partition_varchar1-9-45412c7f1eb448dfd5d5eb636fa1d8a0 b/sql/hive/src/test/resources/golden/partition_varchar1-9-45412c7f1eb448dfd5d5eb636fa1d8a0 new file mode 100644 index 0000000000000..7ed6ff82de6bc --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_varchar1-9-45412c7f1eb448dfd5d5eb636fa1d8a0 @@ -0,0 +1 @@ +5 diff --git a/sql/hive/src/test/resources/golden/partition_vs_table_metadata-0-c25482149887659ec66d7534cad22f63 b/sql/hive/src/test/resources/golden/partition_vs_table_metadata-0-c25482149887659ec66d7534cad22f63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_vs_table_metadata-1-29f193b3e8def419733366c578e8a236 b/sql/hive/src/test/resources/golden/partition_vs_table_metadata-1-29f193b3e8def419733366c578e8a236 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_vs_table_metadata-2-14033db9e60aa0bc4f64376c96195adf b/sql/hive/src/test/resources/golden/partition_vs_table_metadata-2-14033db9e60aa0bc4f64376c96195adf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_vs_table_metadata-3-9bdf636332ca722093413523366efa86 b/sql/hive/src/test/resources/golden/partition_vs_table_metadata-3-9bdf636332ca722093413523366efa86 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_vs_table_metadata-4-e784348b7221bb26830cc1ebda69bdde b/sql/hive/src/test/resources/golden/partition_vs_table_metadata-4-e784348b7221bb26830cc1ebda69bdde new file mode 100644 index 0000000000000..39c80f1b77eab --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_vs_table_metadata-4-e784348b7221bb26830cc1ebda69bdde @@ -0,0 +1,1000 @@ +0 val_0 NULL +0 val_0 NULL +0 val_0 NULL +0 val_0 0 +0 val_0 0 +0 val_0 0 +10 val_10 NULL +10 val_10 10 +100 val_100 NULL +100 val_100 NULL +100 val_100 100 +100 val_100 100 +103 val_103 NULL +103 val_103 NULL +103 val_103 103 +103 val_103 103 +104 val_104 NULL +104 val_104 NULL +104 val_104 104 +104 val_104 104 +105 val_105 NULL +105 val_105 105 +11 val_11 NULL +11 val_11 11 +111 val_111 NULL +111 val_111 111 +113 val_113 NULL +113 val_113 NULL +113 val_113 113 +113 val_113 113 +114 val_114 NULL +114 val_114 114 +116 val_116 NULL +116 val_116 116 +118 val_118 NULL +118 val_118 NULL +118 val_118 118 +118 val_118 118 +119 val_119 NULL +119 val_119 NULL +119 val_119 NULL +119 val_119 119 +119 val_119 119 +119 val_119 119 +12 val_12 NULL +12 val_12 NULL +12 val_12 12 +12 val_12 12 +120 val_120 NULL +120 val_120 NULL +120 val_120 120 +120 val_120 120 +125 val_125 NULL +125 val_125 NULL +125 val_125 125 +125 val_125 125 +126 val_126 NULL +126 val_126 126 +128 val_128 NULL +128 val_128 NULL +128 val_128 NULL +128 val_128 128 +128 val_128 128 +128 val_128 128 +129 val_129 NULL +129 val_129 NULL +129 val_129 129 +129 val_129 129 +131 val_131 NULL +131 val_131 131 +133 val_133 NULL +133 val_133 133 +134 val_134 NULL +134 val_134 NULL +134 val_134 134 +134 val_134 134 +136 val_136 NULL +136 val_136 136 +137 val_137 NULL +137 val_137 NULL +137 val_137 137 +137 val_137 137 +138 val_138 NULL +138 val_138 NULL +138 val_138 NULL +138 val_138 NULL +138 val_138 138 +138 val_138 138 +138 val_138 138 +138 val_138 138 +143 val_143 NULL +143 val_143 143 +145 val_145 NULL +145 val_145 145 +146 val_146 NULL +146 val_146 NULL +146 val_146 146 +146 val_146 146 +149 val_149 NULL +149 val_149 NULL +149 val_149 149 +149 val_149 149 +15 val_15 NULL +15 val_15 NULL +15 val_15 15 +15 val_15 15 +150 val_150 NULL +150 val_150 150 +152 val_152 NULL +152 val_152 NULL +152 val_152 152 +152 val_152 152 +153 val_153 NULL +153 val_153 153 +155 val_155 NULL +155 val_155 155 +156 val_156 NULL +156 val_156 156 +157 val_157 NULL +157 val_157 157 +158 val_158 NULL +158 val_158 158 +160 val_160 NULL +160 val_160 160 +162 val_162 NULL +162 val_162 162 +163 val_163 NULL +163 val_163 163 +164 val_164 NULL +164 val_164 NULL +164 val_164 164 +164 val_164 164 +165 val_165 NULL +165 val_165 NULL +165 val_165 165 +165 val_165 165 +166 val_166 NULL +166 val_166 166 +167 val_167 NULL +167 val_167 NULL +167 val_167 NULL +167 val_167 167 +167 val_167 167 +167 val_167 167 +168 val_168 NULL +168 val_168 168 +169 val_169 NULL +169 val_169 NULL +169 val_169 NULL +169 val_169 NULL +169 val_169 169 +169 val_169 169 +169 val_169 169 +169 val_169 169 +17 val_17 NULL +17 val_17 17 +170 val_170 NULL +170 val_170 170 +172 val_172 NULL +172 val_172 NULL +172 val_172 172 +172 val_172 172 +174 val_174 NULL +174 val_174 NULL +174 val_174 174 +174 val_174 174 +175 val_175 NULL +175 val_175 NULL +175 val_175 175 +175 val_175 175 +176 val_176 NULL +176 val_176 NULL +176 val_176 176 +176 val_176 176 +177 val_177 NULL +177 val_177 177 +178 val_178 NULL +178 val_178 178 +179 val_179 NULL +179 val_179 NULL +179 val_179 179 +179 val_179 179 +18 val_18 NULL +18 val_18 NULL +18 val_18 18 +18 val_18 18 +180 val_180 NULL +180 val_180 180 +181 val_181 NULL +181 val_181 181 +183 val_183 NULL +183 val_183 183 +186 val_186 NULL +186 val_186 186 +187 val_187 NULL +187 val_187 NULL +187 val_187 NULL +187 val_187 187 +187 val_187 187 +187 val_187 187 +189 val_189 NULL +189 val_189 189 +19 val_19 NULL +19 val_19 19 +190 val_190 NULL +190 val_190 190 +191 val_191 NULL +191 val_191 NULL +191 val_191 191 +191 val_191 191 +192 val_192 NULL +192 val_192 192 +193 val_193 NULL +193 val_193 NULL +193 val_193 NULL +193 val_193 193 +193 val_193 193 +193 val_193 193 +194 val_194 NULL +194 val_194 194 +195 val_195 NULL +195 val_195 NULL +195 val_195 195 +195 val_195 195 +196 val_196 NULL +196 val_196 196 +197 val_197 NULL +197 val_197 NULL +197 val_197 197 +197 val_197 197 +199 val_199 NULL +199 val_199 NULL +199 val_199 NULL +199 val_199 199 +199 val_199 199 +199 val_199 199 +2 val_2 NULL +2 val_2 2 +20 val_20 NULL +20 val_20 20 +200 val_200 NULL +200 val_200 NULL +200 val_200 200 +200 val_200 200 +201 val_201 NULL +201 val_201 201 +202 val_202 NULL +202 val_202 202 +203 val_203 NULL +203 val_203 NULL +203 val_203 203 +203 val_203 203 +205 val_205 NULL +205 val_205 NULL +205 val_205 205 +205 val_205 205 +207 val_207 NULL +207 val_207 NULL +207 val_207 207 +207 val_207 207 +208 val_208 NULL +208 val_208 NULL +208 val_208 NULL +208 val_208 208 +208 val_208 208 +208 val_208 208 +209 val_209 NULL +209 val_209 NULL +209 val_209 209 +209 val_209 209 +213 val_213 NULL +213 val_213 NULL +213 val_213 213 +213 val_213 213 +214 val_214 NULL +214 val_214 214 +216 val_216 NULL +216 val_216 NULL +216 val_216 216 +216 val_216 216 +217 val_217 NULL +217 val_217 NULL +217 val_217 217 +217 val_217 217 +218 val_218 NULL +218 val_218 218 +219 val_219 NULL +219 val_219 NULL +219 val_219 219 +219 val_219 219 +221 val_221 NULL +221 val_221 NULL +221 val_221 221 +221 val_221 221 +222 val_222 NULL +222 val_222 222 +223 val_223 NULL +223 val_223 NULL +223 val_223 223 +223 val_223 223 +224 val_224 NULL +224 val_224 NULL +224 val_224 224 +224 val_224 224 +226 val_226 NULL +226 val_226 226 +228 val_228 NULL +228 val_228 228 +229 val_229 NULL +229 val_229 NULL +229 val_229 229 +229 val_229 229 +230 val_230 NULL +230 val_230 NULL +230 val_230 NULL +230 val_230 NULL +230 val_230 NULL +230 val_230 230 +230 val_230 230 +230 val_230 230 +230 val_230 230 +230 val_230 230 +233 val_233 NULL +233 val_233 NULL +233 val_233 233 +233 val_233 233 +235 val_235 NULL +235 val_235 235 +237 val_237 NULL +237 val_237 NULL +237 val_237 237 +237 val_237 237 +238 val_238 NULL +238 val_238 NULL +238 val_238 238 +238 val_238 238 +239 val_239 NULL +239 val_239 NULL +239 val_239 239 +239 val_239 239 +24 val_24 NULL +24 val_24 NULL +24 val_24 24 +24 val_24 24 +241 val_241 NULL +241 val_241 241 +242 val_242 NULL +242 val_242 NULL +242 val_242 242 +242 val_242 242 +244 val_244 NULL +244 val_244 244 +247 val_247 NULL +247 val_247 247 +248 val_248 NULL +248 val_248 248 +249 val_249 NULL +249 val_249 249 +252 val_252 NULL +252 val_252 252 +255 val_255 NULL +255 val_255 NULL +255 val_255 255 +255 val_255 255 +256 val_256 NULL +256 val_256 NULL +256 val_256 256 +256 val_256 256 +257 val_257 NULL +257 val_257 257 +258 val_258 NULL +258 val_258 258 +26 val_26 NULL +26 val_26 NULL +26 val_26 26 +26 val_26 26 +260 val_260 NULL +260 val_260 260 +262 val_262 NULL +262 val_262 262 +263 val_263 NULL +263 val_263 263 +265 val_265 NULL +265 val_265 NULL +265 val_265 265 +265 val_265 265 +266 val_266 NULL +266 val_266 266 +27 val_27 NULL +27 val_27 27 +272 val_272 NULL +272 val_272 NULL +272 val_272 272 +272 val_272 272 +273 val_273 NULL +273 val_273 NULL +273 val_273 NULL +273 val_273 273 +273 val_273 273 +273 val_273 273 +274 val_274 NULL +274 val_274 274 +275 val_275 NULL +275 val_275 275 +277 val_277 NULL +277 val_277 NULL +277 val_277 NULL +277 val_277 NULL +277 val_277 277 +277 val_277 277 +277 val_277 277 +277 val_277 277 +278 val_278 NULL +278 val_278 NULL +278 val_278 278 +278 val_278 278 +28 val_28 NULL +28 val_28 28 +280 val_280 NULL +280 val_280 NULL +280 val_280 280 +280 val_280 280 +281 val_281 NULL +281 val_281 NULL +281 val_281 281 +281 val_281 281 +282 val_282 NULL +282 val_282 NULL +282 val_282 282 +282 val_282 282 +283 val_283 NULL +283 val_283 283 +284 val_284 NULL +284 val_284 284 +285 val_285 NULL +285 val_285 285 +286 val_286 NULL +286 val_286 286 +287 val_287 NULL +287 val_287 287 +288 val_288 NULL +288 val_288 NULL +288 val_288 288 +288 val_288 288 +289 val_289 NULL +289 val_289 289 +291 val_291 NULL +291 val_291 291 +292 val_292 NULL +292 val_292 292 +296 val_296 NULL +296 val_296 296 +298 val_298 NULL +298 val_298 NULL +298 val_298 NULL +298 val_298 298 +298 val_298 298 +298 val_298 298 +30 val_30 NULL +30 val_30 30 +302 val_302 NULL +302 val_302 302 +305 val_305 NULL +305 val_305 305 +306 val_306 NULL +306 val_306 306 +307 val_307 NULL +307 val_307 NULL +307 val_307 307 +307 val_307 307 +308 val_308 NULL +308 val_308 308 +309 val_309 NULL +309 val_309 NULL +309 val_309 309 +309 val_309 309 +310 val_310 NULL +310 val_310 310 +311 val_311 NULL +311 val_311 NULL +311 val_311 NULL +311 val_311 311 +311 val_311 311 +311 val_311 311 +315 val_315 NULL +315 val_315 315 +316 val_316 NULL +316 val_316 NULL +316 val_316 NULL +316 val_316 316 +316 val_316 316 +316 val_316 316 +317 val_317 NULL +317 val_317 NULL +317 val_317 317 +317 val_317 317 +318 val_318 NULL +318 val_318 NULL +318 val_318 NULL +318 val_318 318 +318 val_318 318 +318 val_318 318 +321 val_321 NULL +321 val_321 NULL +321 val_321 321 +321 val_321 321 +322 val_322 NULL +322 val_322 NULL +322 val_322 322 +322 val_322 322 +323 val_323 NULL +323 val_323 323 +325 val_325 NULL +325 val_325 NULL +325 val_325 325 +325 val_325 325 +327 val_327 NULL +327 val_327 NULL +327 val_327 NULL +327 val_327 327 +327 val_327 327 +327 val_327 327 +33 val_33 NULL +33 val_33 33 +331 val_331 NULL +331 val_331 NULL +331 val_331 331 +331 val_331 331 +332 val_332 NULL +332 val_332 332 +333 val_333 NULL +333 val_333 NULL +333 val_333 333 +333 val_333 333 +335 val_335 NULL +335 val_335 335 +336 val_336 NULL +336 val_336 336 +338 val_338 NULL +338 val_338 338 +339 val_339 NULL +339 val_339 339 +34 val_34 NULL +34 val_34 34 +341 val_341 NULL +341 val_341 341 +342 val_342 NULL +342 val_342 NULL +342 val_342 342 +342 val_342 342 +344 val_344 NULL +344 val_344 NULL +344 val_344 344 +344 val_344 344 +345 val_345 NULL +345 val_345 345 +348 val_348 NULL +348 val_348 NULL +348 val_348 NULL +348 val_348 NULL +348 val_348 NULL +348 val_348 348 +348 val_348 348 +348 val_348 348 +348 val_348 348 +348 val_348 348 +35 val_35 NULL +35 val_35 NULL +35 val_35 NULL +35 val_35 35 +35 val_35 35 +35 val_35 35 +351 val_351 NULL +351 val_351 351 +353 val_353 NULL +353 val_353 NULL +353 val_353 353 +353 val_353 353 +356 val_356 NULL +356 val_356 356 +360 val_360 NULL +360 val_360 360 +362 val_362 NULL +362 val_362 362 +364 val_364 NULL +364 val_364 364 +365 val_365 NULL +365 val_365 365 +366 val_366 NULL +366 val_366 366 +367 val_367 NULL +367 val_367 NULL +367 val_367 367 +367 val_367 367 +368 val_368 NULL +368 val_368 368 +369 val_369 NULL +369 val_369 NULL +369 val_369 NULL +369 val_369 369 +369 val_369 369 +369 val_369 369 +37 val_37 NULL +37 val_37 NULL +37 val_37 37 +37 val_37 37 +373 val_373 NULL +373 val_373 373 +374 val_374 NULL +374 val_374 374 +375 val_375 NULL +375 val_375 375 +377 val_377 NULL +377 val_377 377 +378 val_378 NULL +378 val_378 378 +379 val_379 NULL +379 val_379 379 +382 val_382 NULL +382 val_382 NULL +382 val_382 382 +382 val_382 382 +384 val_384 NULL +384 val_384 NULL +384 val_384 NULL +384 val_384 384 +384 val_384 384 +384 val_384 384 +386 val_386 NULL +386 val_386 386 +389 val_389 NULL +389 val_389 389 +392 val_392 NULL +392 val_392 392 +393 val_393 NULL +393 val_393 393 +394 val_394 NULL +394 val_394 394 +395 val_395 NULL +395 val_395 NULL +395 val_395 395 +395 val_395 395 +396 val_396 NULL +396 val_396 NULL +396 val_396 NULL +396 val_396 396 +396 val_396 396 +396 val_396 396 +397 val_397 NULL +397 val_397 NULL +397 val_397 397 +397 val_397 397 +399 val_399 NULL +399 val_399 NULL +399 val_399 399 +399 val_399 399 +4 val_4 NULL +4 val_4 4 +400 val_400 NULL +400 val_400 400 +401 val_401 NULL +401 val_401 NULL +401 val_401 NULL +401 val_401 NULL +401 val_401 NULL +401 val_401 401 +401 val_401 401 +401 val_401 401 +401 val_401 401 +401 val_401 401 +402 val_402 NULL +402 val_402 402 +403 val_403 NULL +403 val_403 NULL +403 val_403 NULL +403 val_403 403 +403 val_403 403 +403 val_403 403 +404 val_404 NULL +404 val_404 NULL +404 val_404 404 +404 val_404 404 +406 val_406 NULL +406 val_406 NULL +406 val_406 NULL +406 val_406 NULL +406 val_406 406 +406 val_406 406 +406 val_406 406 +406 val_406 406 +407 val_407 NULL +407 val_407 407 +409 val_409 NULL +409 val_409 NULL +409 val_409 NULL +409 val_409 409 +409 val_409 409 +409 val_409 409 +41 val_41 NULL +41 val_41 41 +411 val_411 NULL +411 val_411 411 +413 val_413 NULL +413 val_413 NULL +413 val_413 413 +413 val_413 413 +414 val_414 NULL +414 val_414 NULL +414 val_414 414 +414 val_414 414 +417 val_417 NULL +417 val_417 NULL +417 val_417 NULL +417 val_417 417 +417 val_417 417 +417 val_417 417 +418 val_418 NULL +418 val_418 418 +419 val_419 NULL +419 val_419 419 +42 val_42 NULL +42 val_42 NULL +42 val_42 42 +42 val_42 42 +421 val_421 NULL +421 val_421 421 +424 val_424 NULL +424 val_424 NULL +424 val_424 424 +424 val_424 424 +427 val_427 NULL +427 val_427 427 +429 val_429 NULL +429 val_429 NULL +429 val_429 429 +429 val_429 429 +43 val_43 NULL +43 val_43 43 +430 val_430 NULL +430 val_430 NULL +430 val_430 NULL +430 val_430 430 +430 val_430 430 +430 val_430 430 +431 val_431 NULL +431 val_431 NULL +431 val_431 NULL +431 val_431 431 +431 val_431 431 +431 val_431 431 +432 val_432 NULL +432 val_432 432 +435 val_435 NULL +435 val_435 435 +436 val_436 NULL +436 val_436 436 +437 val_437 NULL +437 val_437 437 +438 val_438 NULL +438 val_438 NULL +438 val_438 NULL +438 val_438 438 +438 val_438 438 +438 val_438 438 +439 val_439 NULL +439 val_439 NULL +439 val_439 439 +439 val_439 439 +44 val_44 NULL +44 val_44 44 +443 val_443 NULL +443 val_443 443 +444 val_444 NULL +444 val_444 444 +446 val_446 NULL +446 val_446 446 +448 val_448 NULL +448 val_448 448 +449 val_449 NULL +449 val_449 449 +452 val_452 NULL +452 val_452 452 +453 val_453 NULL +453 val_453 453 +454 val_454 NULL +454 val_454 NULL +454 val_454 NULL +454 val_454 454 +454 val_454 454 +454 val_454 454 +455 val_455 NULL +455 val_455 455 +457 val_457 NULL +457 val_457 457 +458 val_458 NULL +458 val_458 NULL +458 val_458 458 +458 val_458 458 +459 val_459 NULL +459 val_459 NULL +459 val_459 459 +459 val_459 459 +460 val_460 NULL +460 val_460 460 +462 val_462 NULL +462 val_462 NULL +462 val_462 462 +462 val_462 462 +463 val_463 NULL +463 val_463 NULL +463 val_463 463 +463 val_463 463 +466 val_466 NULL +466 val_466 NULL +466 val_466 NULL +466 val_466 466 +466 val_466 466 +466 val_466 466 +467 val_467 NULL +467 val_467 467 +468 val_468 NULL +468 val_468 NULL +468 val_468 NULL +468 val_468 NULL +468 val_468 468 +468 val_468 468 +468 val_468 468 +468 val_468 468 +469 val_469 NULL +469 val_469 NULL +469 val_469 NULL +469 val_469 NULL +469 val_469 NULL +469 val_469 469 +469 val_469 469 +469 val_469 469 +469 val_469 469 +469 val_469 469 +47 val_47 NULL +47 val_47 47 +470 val_470 NULL +470 val_470 470 +472 val_472 NULL +472 val_472 472 +475 val_475 NULL +475 val_475 475 +477 val_477 NULL +477 val_477 477 +478 val_478 NULL +478 val_478 NULL +478 val_478 478 +478 val_478 478 +479 val_479 NULL +479 val_479 479 +480 val_480 NULL +480 val_480 NULL +480 val_480 NULL +480 val_480 480 +480 val_480 480 +480 val_480 480 +481 val_481 NULL +481 val_481 481 +482 val_482 NULL +482 val_482 482 +483 val_483 NULL +483 val_483 483 +484 val_484 NULL +484 val_484 484 +485 val_485 NULL +485 val_485 485 +487 val_487 NULL +487 val_487 487 +489 val_489 NULL +489 val_489 NULL +489 val_489 NULL +489 val_489 NULL +489 val_489 489 +489 val_489 489 +489 val_489 489 +489 val_489 489 +490 val_490 NULL +490 val_490 490 +491 val_491 NULL +491 val_491 491 +492 val_492 NULL +492 val_492 NULL +492 val_492 492 +492 val_492 492 +493 val_493 NULL +493 val_493 493 +494 val_494 NULL +494 val_494 494 +495 val_495 NULL +495 val_495 495 +496 val_496 NULL +496 val_496 496 +497 val_497 NULL +497 val_497 497 +498 val_498 NULL +498 val_498 NULL +498 val_498 NULL +498 val_498 498 +498 val_498 498 +498 val_498 498 +5 val_5 NULL +5 val_5 NULL +5 val_5 NULL +5 val_5 5 +5 val_5 5 +5 val_5 5 +51 val_51 NULL +51 val_51 NULL +51 val_51 51 +51 val_51 51 +53 val_53 NULL +53 val_53 53 +54 val_54 NULL +54 val_54 54 +57 val_57 NULL +57 val_57 57 +58 val_58 NULL +58 val_58 NULL +58 val_58 58 +58 val_58 58 +64 val_64 NULL +64 val_64 64 +65 val_65 NULL +65 val_65 65 +66 val_66 NULL +66 val_66 66 +67 val_67 NULL +67 val_67 NULL +67 val_67 67 +67 val_67 67 +69 val_69 NULL +69 val_69 69 +70 val_70 NULL +70 val_70 NULL +70 val_70 NULL +70 val_70 70 +70 val_70 70 +70 val_70 70 +72 val_72 NULL +72 val_72 NULL +72 val_72 72 +72 val_72 72 +74 val_74 NULL +74 val_74 74 +76 val_76 NULL +76 val_76 NULL +76 val_76 76 +76 val_76 76 +77 val_77 NULL +77 val_77 77 +78 val_78 NULL +78 val_78 78 +8 val_8 NULL +8 val_8 8 +80 val_80 NULL +80 val_80 80 +82 val_82 NULL +82 val_82 82 +83 val_83 NULL +83 val_83 NULL +83 val_83 83 +83 val_83 83 +84 val_84 NULL +84 val_84 NULL +84 val_84 84 +84 val_84 84 +85 val_85 NULL +85 val_85 85 +86 val_86 NULL +86 val_86 86 +87 val_87 NULL +87 val_87 87 +9 val_9 NULL +9 val_9 9 +90 val_90 NULL +90 val_90 NULL +90 val_90 NULL +90 val_90 90 +90 val_90 90 +90 val_90 90 +92 val_92 NULL +92 val_92 92 +95 val_95 NULL +95 val_95 NULL +95 val_95 95 +95 val_95 95 +96 val_96 NULL +96 val_96 96 +97 val_97 NULL +97 val_97 NULL +97 val_97 97 +97 val_97 97 +98 val_98 NULL +98 val_98 NULL +98 val_98 98 +98 val_98 98 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-0-c854b607353e810be297d3159be30da4 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-0-c854b607353e810be297d3159be30da4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-1-9fad934993b77eef15a5d10eb203a378 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-1-9fad934993b77eef15a5d10eb203a378 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-10-f89a3f7c0ee5bc3f6bd04aa0b459dd4a b/sql/hive/src/test/resources/golden/partition_wise_fileformat-10-f89a3f7c0ee5bc3f6bd04aa0b459dd4a new file mode 100644 index 0000000000000..dcf40c875b9ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-10-f89a3f7c0ee5bc3f6bd04aa0b459dd4a @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned/dt=101 +inputformat:org.apache.hadoop.hive.ql.io.RCFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:284 +maxFileSize:284 +minFileSize:284 +lastAccessTime:0 +lastUpdateTime:1390900729000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-11-606ad10de7caf7e65e09778f2673e712 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-11-606ad10de7caf7e65e09778f2673e712 new file mode 100644 index 0000000000000..9b9389353dd5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-11-606ad10de7caf7e65e09778f2673e712 @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-12-c6bf6ee8fdc50f2abb3a71305d1e6882 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-12-c6bf6ee8fdc50f2abb3a71305d1e6882 new file mode 100644 index 0000000000000..9b9389353dd5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-12-c6bf6ee8fdc50f2abb3a71305d1e6882 @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-13-c262e8c736b67119b9806f69eb492ef3 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-13-c262e8c736b67119b9806f69eb492ef3 new file mode 100644 index 0000000000000..9639a1e84c615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-13-c262e8c736b67119b9806f69eb492ef3 @@ -0,0 +1,50 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-14-da1b1887eb530c7e9d37667b99c9793f b/sql/hive/src/test/resources/golden/partition_wise_fileformat-14-da1b1887eb530c7e9d37667b99c9793f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-15-517aaa22478287fa80eef4a19f2cb9ff b/sql/hive/src/test/resources/golden/partition_wise_fileformat-15-517aaa22478287fa80eef4a19f2cb9ff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-16-7d619408a560b5c8d4a06dcd0ee106e5 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-16-7d619408a560b5c8d4a06dcd0ee106e5 new file mode 100644 index 0000000000000..707036ebbc76c --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-16-7d619408a560b5c8d4a06dcd0ee106e5 @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned +inputformat:org.apache.hadoop.mapred.SequenceFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:3 +totalFileSize:1415 +maxFileSize:895 +minFileSize:236 +lastAccessTime:0 +lastUpdateTime:1390900762000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-17-a488cb92e1388a7542d8787a22f4fb55 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-17-a488cb92e1388a7542d8787a22f4fb55 new file mode 100644 index 0000000000000..06316a924c38b --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-17-a488cb92e1388a7542d8787a22f4fb55 @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned/dt=100 +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:236 +maxFileSize:236 +minFileSize:236 +lastAccessTime:0 +lastUpdateTime:1390900762000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-18-f89a3f7c0ee5bc3f6bd04aa0b459dd4a b/sql/hive/src/test/resources/golden/partition_wise_fileformat-18-f89a3f7c0ee5bc3f6bd04aa0b459dd4a new file mode 100644 index 0000000000000..735d41e54e958 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-18-f89a3f7c0ee5bc3f6bd04aa0b459dd4a @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned/dt=101 +inputformat:org.apache.hadoop.hive.ql.io.RCFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:284 +maxFileSize:284 +minFileSize:284 +lastAccessTime:0 +lastUpdateTime:1390900762000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-19-e3b55daf170a032dcc8ed12ee26ccf63 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-19-e3b55daf170a032dcc8ed12ee26ccf63 new file mode 100644 index 0000000000000..27dfc622c9bb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-19-e3b55daf170a032dcc8ed12ee26ccf63 @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned/dt=102 +inputformat:org.apache.hadoop.mapred.SequenceFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:895 +maxFileSize:895 +minFileSize:895 +lastAccessTime:0 +lastUpdateTime:1390900762000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-2-7d619408a560b5c8d4a06dcd0ee106e5 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-2-7d619408a560b5c8d4a06dcd0ee106e5 new file mode 100644 index 0000000000000..1812e0d53e443 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-2-7d619408a560b5c8d4a06dcd0ee106e5 @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:236 +maxFileSize:236 +minFileSize:236 +lastAccessTime:0 +lastUpdateTime:1390900706000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-20-606ad10de7caf7e65e09778f2673e712 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-20-606ad10de7caf7e65e09778f2673e712 new file mode 100644 index 0000000000000..9b9389353dd5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-20-606ad10de7caf7e65e09778f2673e712 @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-21-c6bf6ee8fdc50f2abb3a71305d1e6882 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-21-c6bf6ee8fdc50f2abb3a71305d1e6882 new file mode 100644 index 0000000000000..9b9389353dd5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-21-c6bf6ee8fdc50f2abb3a71305d1e6882 @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-22-c56c391659f5701a9d2e8782a60f7f8a b/sql/hive/src/test/resources/golden/partition_wise_fileformat-22-c56c391659f5701a9d2e8782a60f7f8a new file mode 100644 index 0000000000000..9b9389353dd5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-22-c56c391659f5701a9d2e8782a60f7f8a @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-23-c262e8c736b67119b9806f69eb492ef3 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-23-c262e8c736b67119b9806f69eb492ef3 new file mode 100644 index 0000000000000..fca99e91bbd8f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-23-c262e8c736b67119b9806f69eb492ef3 @@ -0,0 +1,75 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-24-fe564b4f68241ec5c5884e44a1306f4f b/sql/hive/src/test/resources/golden/partition_wise_fileformat-24-fe564b4f68241ec5c5884e44a1306f4f new file mode 100644 index 0000000000000..fca99e91bbd8f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-24-fe564b4f68241ec5c5884e44a1306f4f @@ -0,0 +1,75 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-3-a488cb92e1388a7542d8787a22f4fb55 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-3-a488cb92e1388a7542d8787a22f4fb55 new file mode 100644 index 0000000000000..3532257511613 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-3-a488cb92e1388a7542d8787a22f4fb55 @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned/dt=100 +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:236 +maxFileSize:236 +minFileSize:236 +lastAccessTime:0 +lastUpdateTime:1390900706000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-4-606ad10de7caf7e65e09778f2673e712 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-4-606ad10de7caf7e65e09778f2673e712 new file mode 100644 index 0000000000000..9b9389353dd5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-4-606ad10de7caf7e65e09778f2673e712 @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-5-c262e8c736b67119b9806f69eb492ef3 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-5-c262e8c736b67119b9806f69eb492ef3 new file mode 100644 index 0000000000000..9b9389353dd5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-5-c262e8c736b67119b9806f69eb492ef3 @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-6-6c4f7b115f18953dcc7710fa97287459 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-6-6c4f7b115f18953dcc7710fa97287459 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-7-f5f427b174dca478c14eddc371c0025a b/sql/hive/src/test/resources/golden/partition_wise_fileformat-7-f5f427b174dca478c14eddc371c0025a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-8-7d619408a560b5c8d4a06dcd0ee106e5 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-8-7d619408a560b5c8d4a06dcd0ee106e5 new file mode 100644 index 0000000000000..a02458b88bf52 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-8-7d619408a560b5c8d4a06dcd0ee106e5 @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned +inputformat:org.apache.hadoop.hive.ql.io.RCFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:2 +totalFileSize:520 +maxFileSize:284 +minFileSize:236 +lastAccessTime:0 +lastUpdateTime:1390900729000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat-9-a488cb92e1388a7542d8787a22f4fb55 b/sql/hive/src/test/resources/golden/partition_wise_fileformat-9-a488cb92e1388a7542d8787a22f4fb55 new file mode 100644 index 0000000000000..301bff44316ff --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat-9-a488cb92e1388a7542d8787a22f4fb55 @@ -0,0 +1,15 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/partition_test_partitioned/dt=100 +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:236 +maxFileSize:236 +minFileSize:236 +lastAccessTime:0 +lastUpdateTime:1390900729000 + diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat10-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat10-1-198cb7d650a506ec3420b94b82a01375 b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-1-198cb7d650a506ec3420b94b82a01375 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat10-2-f723dedd396bd468107755b4495c1031 b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-2-f723dedd396bd468107755b4495c1031 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat10-3-c278fd699aa25809bdef310fb92f510e b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-3-c278fd699aa25809bdef310fb92f510e new file mode 100644 index 0000000000000..001841c8a1cd4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-3-c278fd699aa25809bdef310fb92f510e @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat10-4-620cb6a290ef5297ac1d3a9ea776e2bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-4-620cb6a290ef5297ac1d3a9ea776e2bf new file mode 100644 index 0000000000000..63f35fd827de3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-4-620cb6a290ef5297ac1d3a9ea776e2bf @@ -0,0 +1,2 @@ +476.0 val_238 +476.0 val_238 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat10-5-dd4c3f1636af9a7371edf7142abee088 b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-5-dd4c3f1636af9a7371edf7142abee088 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat10-6-620cb6a290ef5297ac1d3a9ea776e2bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-6-620cb6a290ef5297ac1d3a9ea776e2bf new file mode 100644 index 0000000000000..63f35fd827de3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-6-620cb6a290ef5297ac1d3a9ea776e2bf @@ -0,0 +1,2 @@ +476.0 val_238 +476.0 val_238 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat10-7-c278fd699aa25809bdef310fb92f510e b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-7-c278fd699aa25809bdef310fb92f510e new file mode 100644 index 0000000000000..f75126345f351 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat10-7-c278fd699aa25809bdef310fb92f510e @@ -0,0 +1,2 @@ +238 val_238 NULL 1 +238 val_238 NULL 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-1-b30db33650de0545cbcd53769ed7cf40 b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-1-b30db33650de0545cbcd53769ed7cf40 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-10-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-10-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..de31196d97c3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-10-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476 val_238 +476 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-11-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-11-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..11542e84a3768 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-11-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 NULL 1 +238 val_238 NULL 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-2-92bfcf88ca528eb6c9259142bf6541e5 b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-2-92bfcf88ca528eb6c9259142bf6541e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-3-61f1abcdc66a64c11df85dded920d167 b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-3-61f1abcdc66a64c11df85dded920d167 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-4-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-4-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..6d512a4f0bdc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-4-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-5-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-5-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..53aab40f88b50 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-5-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476.0 val_238 +476.0 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-6-ee7394c912991b8cd4401fb94942351f b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-6-ee7394c912991b8cd4401fb94942351f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-7-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-7-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..de31196d97c3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-7-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476 val_238 +476 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-8-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-8-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..6d512a4f0bdc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-8-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat11-9-ed1e2dbef8eb8efbf83a50dc646485ba b/sql/hive/src/test/resources/golden/partition_wise_fileformat11-9-ed1e2dbef8eb8efbf83a50dc646485ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-1-b30db33650de0545cbcd53769ed7cf40 b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-1-b30db33650de0545cbcd53769ed7cf40 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-10-ed1e2dbef8eb8efbf83a50dc646485ba b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-10-ed1e2dbef8eb8efbf83a50dc646485ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-11-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-11-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..1b97612ce3f5a --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-11-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,4 @@ +476 val_238 +476 val_238 +194 val_97 +194 val_97 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-12-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-12-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..f8e13d5235028 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-12-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,4 @@ +238 val_238 NULL 1 +238 val_238 NULL 1 +97 val_97 NULL 2 +97 val_97 NULL 2 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-13-26a9a9cafa15d0223b934eba4777aea7 b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-13-26a9a9cafa15d0223b934eba4777aea7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-14-d35f445501407d6fae5c3ad161fb2236 b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-14-d35f445501407d6fae5c3ad161fb2236 new file mode 100644 index 0000000000000..919a66a94c5cb --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-14-d35f445501407d6fae5c3ad161fb2236 @@ -0,0 +1,6 @@ +476 val_238 NULL +476 val_238 NULL +194 val_97 NULL +194 val_97 NULL +400 val_200 val_200 +400 val_200 val_200 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-15-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-15-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..45c169f0d8330 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-15-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,6 @@ +238 val_238 NULL 1 +238 val_238 NULL 1 +97 val_97 NULL 2 +97 val_97 NULL 2 +200 val_200 val_200 3 +200 val_200 val_200 3 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-2-92bfcf88ca528eb6c9259142bf6541e5 b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-2-92bfcf88ca528eb6c9259142bf6541e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-3-61f1abcdc66a64c11df85dded920d167 b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-3-61f1abcdc66a64c11df85dded920d167 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-4-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-4-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..6d512a4f0bdc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-4-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-5-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-5-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..53aab40f88b50 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-5-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476.0 val_238 +476.0 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-6-ee7394c912991b8cd4401fb94942351f b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-6-ee7394c912991b8cd4401fb94942351f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-7-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-7-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..de31196d97c3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-7-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476 val_238 +476 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-8-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-8-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..6d512a4f0bdc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-8-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat12-9-b8aed3dd7d7c151f5d96050c4058e71d b/sql/hive/src/test/resources/golden/partition_wise_fileformat12-9-b8aed3dd7d7c151f5d96050c4058e71d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-1-9a812f44c4c7a4c72b4be95139e6fd6 b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-1-9a812f44c4c7a4c72b4be95139e6fd6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-10-5bc619cec1d519c1dc6423f841b1c0a4 b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-10-5bc619cec1d519c1dc6423f841b1c0a4 new file mode 100644 index 0000000000000..b6a7d89c68e0c --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-10-5bc619cec1d519c1dc6423f841b1c0a4 @@ -0,0 +1 @@ +16 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-2-3b6e28e3c1c071583e9b3b8f1f997f75 b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-2-3b6e28e3c1c071583e9b3b8f1f997f75 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-3-9b3e4a236550f1900a36566830b24024 b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-3-9b3e4a236550f1900a36566830b24024 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-4-49cf189a09e11c2c635fbb574b89a2af b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-4-49cf189a09e11c2c635fbb574b89a2af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-5-2ebe5fe98e830143b9571b13fe59dc0b b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-5-2ebe5fe98e830143b9571b13fe59dc0b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-6-fa2f56078df18add8e5a77e538756488 b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-6-fa2f56078df18add8e5a77e538756488 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-7-1d822cc037d9281ce172e2d5685b1495 b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-7-1d822cc037d9281ce172e2d5685b1495 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-8-e4531456a7418952ec1d69e18bc8460b b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-8-e4531456a7418952ec1d69e18bc8460b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat13-9-8f6983fda271fba18d218c75b8fb2b3d b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-9-8f6983fda271fba18d218c75b8fb2b3d new file mode 100644 index 0000000000000..b6a7d89c68e0c --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat13-9-8f6983fda271fba18d218c75b8fb2b3d @@ -0,0 +1 @@ +16 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-10-e5e7913d0875ad01f5d6f5031e86f0a0 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-10-e5e7913d0875ad01f5d6f5031e86f0a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-11-bbfb0a95274044dea4732e35c1d7ecbe b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-11-bbfb0a95274044dea4732e35c1d7ecbe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-12-be84e8199b0a3b9f72e552018854ac15 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-12-be84e8199b0a3b9f72e552018854ac15 new file mode 100644 index 0000000000000..425151f3a411f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-12-be84e8199b0a3b9f72e552018854ac15 @@ -0,0 +1 @@ +40 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-13-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-13-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-13-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-14-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-14-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-14-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-15-dd6e9965d271bd35604059540c23d967 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-15-dd6e9965d271bd35604059540c23d967 new file mode 100644 index 0000000000000..425151f3a411f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-15-dd6e9965d271bd35604059540c23d967 @@ -0,0 +1 @@ +40 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-16-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-16-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-16-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-17-f4a3e39d5df18861e9fe67ef37af57e1 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-17-f4a3e39d5df18861e9fe67ef37af57e1 new file mode 100644 index 0000000000000..425151f3a411f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-17-f4a3e39d5df18861e9fe67ef37af57e1 @@ -0,0 +1 @@ +40 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-18-58080916a9f5883121bcaad719be0309 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-18-58080916a9f5883121bcaad719be0309 new file mode 100644 index 0000000000000..c739b42c4d2ce --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-18-58080916a9f5883121bcaad719be0309 @@ -0,0 +1 @@ +44 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-3-2683f9835169a568c1f03dae859d27d2 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-3-2683f9835169a568c1f03dae859d27d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-4-2d2e1149d2f035017bb37bbfaad4def0 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-4-2d2e1149d2f035017bb37bbfaad4def0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-5-61a8225e20f36e286b4d02501d2c80d9 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-5-61a8225e20f36e286b4d02501d2c80d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-6-b5165befb75ebeed42f3e69d4d64375c b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-6-b5165befb75ebeed42f3e69d4d64375c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-7-e438f7ec386b2ab19660e9da7260dd95 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-7-e438f7ec386b2ab19660e9da7260dd95 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-8-f0e3ddaa1e6ea067444b1f540bfac293 b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-8-f0e3ddaa1e6ea067444b1f540bfac293 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat14-9-adeaa033260f16c5bc106e761e5fef8b b/sql/hive/src/test/resources/golden/partition_wise_fileformat14-9-adeaa033260f16c5bc106e761e5fef8b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-1-e1cf6c355de3ae8db7564b1676199117 b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-1-e1cf6c355de3ae8db7564b1676199117 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-10-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-10-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..11542e84a3768 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-10-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 NULL 1 +238 val_238 NULL 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-11-662bece7f71ef854ca6e25f0eef5b830 b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-11-662bece7f71ef854ca6e25f0eef5b830 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-12-8250422b5ed16120ee33bd4fa69d3f47 b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-12-8250422b5ed16120ee33bd4fa69d3f47 new file mode 100644 index 0000000000000..025abe4ec330b --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-12-8250422b5ed16120ee33bd4fa69d3f47 @@ -0,0 +1,3 @@ +476 val_238 NULL 1 +476 val_238 NULL 1 +172 val_86 val_86 2 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-13-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-13-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..f067c1ed602dc --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-13-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,3 @@ +238 val_238 NULL 1 +238 val_238 NULL 1 +86 val_86 val_86 2 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-2-107d7c681b43611df056238be242127b b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-2-107d7c681b43611df056238be242127b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-3-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-3-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..6d512a4f0bdc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-3-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-4-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-4-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..53aab40f88b50 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-4-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476.0 val_238 +476.0 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-5-ee7394c912991b8cd4401fb94942351f b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-5-ee7394c912991b8cd4401fb94942351f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-6-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-6-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..de31196d97c3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-6-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476 val_238 +476 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-7-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-7-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..6d512a4f0bdc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-7-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-8-ed1e2dbef8eb8efbf83a50dc646485ba b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-8-ed1e2dbef8eb8efbf83a50dc646485ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat15-9-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-9-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..de31196d97c3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat15-9-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476 val_238 +476 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-1-5b9fe6eb0e500ae6bf97e2a34d3d0ad9 b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-1-5b9fe6eb0e500ae6bf97e2a34d3d0ad9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-10-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-10-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..11542e84a3768 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-10-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 NULL 1 +238 val_238 NULL 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-11-662bece7f71ef854ca6e25f0eef5b830 b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-11-662bece7f71ef854ca6e25f0eef5b830 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-12-8250422b5ed16120ee33bd4fa69d3f47 b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-12-8250422b5ed16120ee33bd4fa69d3f47 new file mode 100644 index 0000000000000..025abe4ec330b --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-12-8250422b5ed16120ee33bd4fa69d3f47 @@ -0,0 +1,3 @@ +476 val_238 NULL 1 +476 val_238 NULL 1 +172 val_86 val_86 2 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-13-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-13-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..f067c1ed602dc --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-13-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,3 @@ +238 val_238 NULL 1 +238 val_238 NULL 1 +86 val_86 val_86 2 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-2-107d7c681b43611df056238be242127b b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-2-107d7c681b43611df056238be242127b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-3-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-3-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..6d512a4f0bdc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-3-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-4-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-4-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..53aab40f88b50 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-4-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476.0 val_238 +476.0 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-5-ee7394c912991b8cd4401fb94942351f b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-5-ee7394c912991b8cd4401fb94942351f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-6-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-6-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..de31196d97c3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-6-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476 val_238 +476 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-7-3fc394a7a3d43a70968282ef1ee21dbd b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-7-3fc394a7a3d43a70968282ef1ee21dbd new file mode 100644 index 0000000000000..6d512a4f0bdc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-7-3fc394a7a3d43a70968282ef1ee21dbd @@ -0,0 +1,2 @@ +238 val_238 1 +238 val_238 1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-8-ed1e2dbef8eb8efbf83a50dc646485ba b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-8-ed1e2dbef8eb8efbf83a50dc646485ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat16-9-75a0aa2df39cbdc6a470b4c88803b42b b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-9-75a0aa2df39cbdc6a470b4c88803b42b new file mode 100644 index 0000000000000..de31196d97c3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat16-9-75a0aa2df39cbdc6a470b4c88803b42b @@ -0,0 +1,2 @@ +476 val_238 +476 val_238 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat17-0-7c49277a7217a147685d30e27822d273 b/sql/hive/src/test/resources/golden/partition_wise_fileformat17-0-7c49277a7217a147685d30e27822d273 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat17-1-df4a3bf439eadc5ada3303a9b5e6aa46 b/sql/hive/src/test/resources/golden/partition_wise_fileformat17-1-df4a3bf439eadc5ada3303a9b5e6aa46 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat17-1-df4a3bf439eadc5ada3303a9b5e6aa46 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-0-c854b607353e810be297d3159be30da4 b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-0-c854b607353e810be297d3159be30da4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-1-9fad934993b77eef15a5d10eb203a378 b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-1-9fad934993b77eef15a5d10eb203a378 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-10-561ef0dbccfcbfbb0c75f33ebfd4203d b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-10-561ef0dbccfcbfbb0c75f33ebfd4203d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-11-20a02894f5e9340e89b55a30bef252b7 b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-11-20a02894f5e9340e89b55a30bef252b7 new file mode 100644 index 0000000000000..325e26b3d9737 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-11-20a02894f5e9340e89b55a30bef252b7 @@ -0,0 +1,75 @@ +238 val_238 100 +NULL 100 +311 val_311 100 +NULL val_27 100 +NULL val_165 100 +NULL val_409 100 +255 val_255 100 +278 val_278 100 +98 val_98 100 +NULL val_484 100 +NULL val_265 100 +NULL val_193 100 +401 val_401 100 +150 val_150 100 +273 val_273 100 +224 100 +369 100 +66 val_66 100 +128 100 +213 val_213 100 +146 val_146 100 +406 val_406 100 +NULL 100 +NULL 100 +NULL 100 +238 val_238 101 +NULL 101 +311 val_311 101 +NULL val_27 101 +NULL val_165 101 +NULL val_409 101 +255 val_255 101 +278 val_278 101 +98 val_98 101 +NULL val_484 101 +NULL val_265 101 +NULL val_193 101 +401 val_401 101 +150 val_150 101 +273 val_273 101 +224 101 +369 101 +66 val_66 101 +128 101 +213 val_213 101 +146 val_146 101 +406 val_406 101 +NULL 101 +NULL 101 +NULL 101 +238 val_238 102 +NULL 102 +311 val_311 102 +NULL val_27 102 +NULL val_165 102 +NULL val_409 102 +255 val_255 102 +278 val_278 102 +98 val_98 102 +NULL val_484 102 +NULL val_265 102 +NULL val_193 102 +401 val_401 102 +150 val_150 102 +273 val_273 102 +224 102 +369 102 +66 val_66 102 +128 102 +213 val_213 102 +146 val_146 102 +406 val_406 102 +NULL 102 +NULL 102 +NULL 102 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-2-6c4f7b115f18953dcc7710fa97287459 b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-2-6c4f7b115f18953dcc7710fa97287459 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-3-f5f427b174dca478c14eddc371c0025a b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-3-f5f427b174dca478c14eddc371c0025a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-4-da1b1887eb530c7e9d37667b99c9793f b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-4-da1b1887eb530c7e9d37667b99c9793f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-5-517aaa22478287fa80eef4a19f2cb9ff b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-5-517aaa22478287fa80eef4a19f2cb9ff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-6-32b36a6c3344c5fcca0ad6c93ffcab62 b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-6-32b36a6c3344c5fcca0ad6c93ffcab62 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-6-32b36a6c3344c5fcca0ad6c93ffcab62 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-7-561ef0dbccfcbfbb0c75f33ebfd4203d b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-7-561ef0dbccfcbfbb0c75f33ebfd4203d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-8-20a02894f5e9340e89b55a30bef252b7 b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-8-20a02894f5e9340e89b55a30bef252b7 new file mode 100644 index 0000000000000..325e26b3d9737 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-8-20a02894f5e9340e89b55a30bef252b7 @@ -0,0 +1,75 @@ +238 val_238 100 +NULL 100 +311 val_311 100 +NULL val_27 100 +NULL val_165 100 +NULL val_409 100 +255 val_255 100 +278 val_278 100 +98 val_98 100 +NULL val_484 100 +NULL val_265 100 +NULL val_193 100 +401 val_401 100 +150 val_150 100 +273 val_273 100 +224 100 +369 100 +66 val_66 100 +128 100 +213 val_213 100 +146 val_146 100 +406 val_406 100 +NULL 100 +NULL 100 +NULL 100 +238 val_238 101 +NULL 101 +311 val_311 101 +NULL val_27 101 +NULL val_165 101 +NULL val_409 101 +255 val_255 101 +278 val_278 101 +98 val_98 101 +NULL val_484 101 +NULL val_265 101 +NULL val_193 101 +401 val_401 101 +150 val_150 101 +273 val_273 101 +224 101 +369 101 +66 val_66 101 +128 101 +213 val_213 101 +146 val_146 101 +406 val_406 101 +NULL 101 +NULL 101 +NULL 101 +238 val_238 102 +NULL 102 +311 val_311 102 +NULL val_27 102 +NULL val_165 102 +NULL val_409 102 +255 val_255 102 +278 val_278 102 +98 val_98 102 +NULL val_484 102 +NULL val_265 102 +NULL val_193 102 +401 val_401 102 +150 val_150 102 +273 val_273 102 +224 102 +369 102 +66 val_66 102 +128 102 +213 val_213 102 +146 val_146 102 +406 val_406 102 +NULL 102 +NULL 102 +NULL 102 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat2-9-50131c0ba7b7a6b65c789a5a8497bada b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-9-50131c0ba7b7a6b65c789a5a8497bada new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat2-9-50131c0ba7b7a6b65c789a5a8497bada @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-0-c854b607353e810be297d3159be30da4 b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-0-c854b607353e810be297d3159be30da4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-1-6c4f7b115f18953dcc7710fa97287459 b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-1-6c4f7b115f18953dcc7710fa97287459 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-10-c6bf6ee8fdc50f2abb3a71305d1e6882 b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-10-c6bf6ee8fdc50f2abb3a71305d1e6882 new file mode 100644 index 0000000000000..79c8f8e614a1f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-10-c6bf6ee8fdc50f2abb3a71305d1e6882 @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-2-f5f427b174dca478c14eddc371c0025a b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-2-f5f427b174dca478c14eddc371c0025a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-3-f89a3f7c0ee5bc3f6bd04aa0b459dd4a b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-3-f89a3f7c0ee5bc3f6bd04aa0b459dd4a new file mode 100644 index 0000000000000..f487b340cd55b --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-3-f89a3f7c0ee5bc3f6bd04aa0b459dd4a @@ -0,0 +1,14 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/partition_test_partitioned/dt=101 +inputformat:org.apache.hadoop.hive.ql.io.RCFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.RCFileOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:284 +maxFileSize:284 +minFileSize:284 +lastAccessTime:0 +lastUpdateTime:1388799388000 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-4-da1b1887eb530c7e9d37667b99c9793f b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-4-da1b1887eb530c7e9d37667b99c9793f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-5-517aaa22478287fa80eef4a19f2cb9ff b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-5-517aaa22478287fa80eef4a19f2cb9ff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-6-e3b55daf170a032dcc8ed12ee26ccf63 b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-6-e3b55daf170a032dcc8ed12ee26ccf63 new file mode 100644 index 0000000000000..0c7739c2b9fbb --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-6-e3b55daf170a032dcc8ed12ee26ccf63 @@ -0,0 +1,14 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/partition_test_partitioned/dt=102 +inputformat:org.apache.hadoop.mapred.SequenceFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:895 +maxFileSize:895 +minFileSize:895 +lastAccessTime:0 +lastUpdateTime:1388799405000 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-7-c56c391659f5701a9d2e8782a60f7f8a b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-7-c56c391659f5701a9d2e8782a60f7f8a new file mode 100644 index 0000000000000..79c8f8e614a1f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-7-c56c391659f5701a9d2e8782a60f7f8a @@ -0,0 +1,25 @@ +238 +NULL +311 +NULL +NULL +NULL +255 +278 +98 +NULL +NULL +NULL +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +NULL +NULL +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-8-f5f427b174dca478c14eddc371c0025a b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-8-f5f427b174dca478c14eddc371c0025a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat3-9-f89a3f7c0ee5bc3f6bd04aa0b459dd4a b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-9-f89a3f7c0ee5bc3f6bd04aa0b459dd4a new file mode 100644 index 0000000000000..0c6fbc997de7a --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat3-9-f89a3f7c0ee5bc3f6bd04aa0b459dd4a @@ -0,0 +1,14 @@ +tableName:partition_test_partitioned +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/partition_test_partitioned/dt=101 +inputformat:org.apache.hadoop.mapred.SequenceFileInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +columns:struct columns { string key, string value} +partitioned:true +partitionColumns:struct partition_columns { string dt} +totalNumberFiles:1 +totalFileSize:895 +maxFileSize:895 +minFileSize:895 +lastAccessTime:0 +lastUpdateTime:1388799434000 diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat4-0-c854b607353e810be297d3159be30da4 b/sql/hive/src/test/resources/golden/partition_wise_fileformat4-0-c854b607353e810be297d3159be30da4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat4-1-c561806d8f9ad419dc9b17ae995aab68 b/sql/hive/src/test/resources/golden/partition_wise_fileformat4-1-c561806d8f9ad419dc9b17ae995aab68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat4-2-b9f8c3b822051854770f61e5ae5b48b0 b/sql/hive/src/test/resources/golden/partition_wise_fileformat4-2-b9f8c3b822051854770f61e5ae5b48b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat4-3-9837451512e92e982f1bd9a12b132e84 b/sql/hive/src/test/resources/golden/partition_wise_fileformat4-3-9837451512e92e982f1bd9a12b132e84 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat4-4-58cfa555b061057f559fc6b9c2f6c631 b/sql/hive/src/test/resources/golden/partition_wise_fileformat4-4-58cfa555b061057f559fc6b9c2f6c631 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat4-5-ac79def5434bb8a926237d0db8db2e84 b/sql/hive/src/test/resources/golden/partition_wise_fileformat4-5-ac79def5434bb8a926237d0db8db2e84 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-1-c854b607353e810be297d3159be30da4 b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-1-c854b607353e810be297d3159be30da4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-2-6c4f7b115f18953dcc7710fa97287459 b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-2-6c4f7b115f18953dcc7710fa97287459 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-3-f5f427b174dca478c14eddc371c0025a b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-3-f5f427b174dca478c14eddc371c0025a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-4-da1b1887eb530c7e9d37667b99c9793f b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-4-da1b1887eb530c7e9d37667b99c9793f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-5-517aaa22478287fa80eef4a19f2cb9ff b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-5-517aaa22478287fa80eef4a19f2cb9ff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-6-a0e23b26ee1777ccc8947fb5eb1e8745 b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-6-a0e23b26ee1777ccc8947fb5eb1e8745 new file mode 100644 index 0000000000000..f0d140e18c053 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-6-a0e23b26ee1777ccc8947fb5eb1e8745 @@ -0,0 +1,2 @@ +101 25 +102 25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-7-a0eeded14b3d337a74189a5d02c7a5ad b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-7-a0eeded14b3d337a74189a5d02c7a5ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat5-8-a0e23b26ee1777ccc8947fb5eb1e8745 b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-8-a0e23b26ee1777ccc8947fb5eb1e8745 new file mode 100644 index 0000000000000..6425bae2a6a8f --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat5-8-a0e23b26ee1777ccc8947fb5eb1e8745 @@ -0,0 +1,3 @@ +101 25 +102 25 +103 25 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat6-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat6-1-c854b607353e810be297d3159be30da4 b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-1-c854b607353e810be297d3159be30da4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat6-2-6c4f7b115f18953dcc7710fa97287459 b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-2-6c4f7b115f18953dcc7710fa97287459 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat6-3-f5f427b174dca478c14eddc371c0025a b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-3-f5f427b174dca478c14eddc371c0025a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat6-4-da1b1887eb530c7e9d37667b99c9793f b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-4-da1b1887eb530c7e9d37667b99c9793f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat6-5-517aaa22478287fa80eef4a19f2cb9ff b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-5-517aaa22478287fa80eef4a19f2cb9ff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat6-6-e95296c9f7056b0075007c61d4e5e92f b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-6-e95296c9f7056b0075007c61d4e5e92f new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-6-e95296c9f7056b0075007c61d4e5e92f @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat6-7-4758d41d052eba37a9acd90c2dbc58f0 b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-7-4758d41d052eba37a9acd90c2dbc58f0 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat6-7-4758d41d052eba37a9acd90c2dbc58f0 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat7-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat7-1-c854b607353e810be297d3159be30da4 b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-1-c854b607353e810be297d3159be30da4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat7-2-6c4f7b115f18953dcc7710fa97287459 b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-2-6c4f7b115f18953dcc7710fa97287459 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat7-3-f5f427b174dca478c14eddc371c0025a b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-3-f5f427b174dca478c14eddc371c0025a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat7-4-a34505bd397bb2a66e46408d1dfb6bf2 b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-4-a34505bd397bb2a66e46408d1dfb6bf2 new file mode 100644 index 0000000000000..3f10ffe7a4c47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-4-a34505bd397bb2a66e46408d1dfb6bf2 @@ -0,0 +1 @@ +15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat7-5-f2c42f1f32eb3cb300420fb36cbf2362 b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-5-f2c42f1f32eb3cb300420fb36cbf2362 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat7-5-f2c42f1f32eb3cb300420fb36cbf2362 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-1-22e3d59a0423473051535684bca72b27 b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-1-22e3d59a0423473051535684bca72b27 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-2-55ae9fbf6daa36225dd386e34025dd38 b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-2-55ae9fbf6daa36225dd386e34025dd38 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-3-c561806d8f9ad419dc9b17ae995aab68 b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-3-c561806d8f9ad419dc9b17ae995aab68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-4-ae71ce67b5d4a91bce1b34acde830268 b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-4-ae71ce67b5d4a91bce1b34acde830268 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-5-cb3d7c0fec42ef7d68b67c8e4cdeab3e b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-5-cb3d7c0fec42ef7d68b67c8e4cdeab3e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-6-ae6a5016b6a6ace6b6f2576a4c666b4e b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-6-ae6a5016b6a6ace6b6f2576a4c666b4e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-7-d1a5913edaaec9654edb333e8207f57b b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-7-d1a5913edaaec9654edb333e8207f57b new file mode 100644 index 0000000000000..5e06930239fea --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-7-d1a5913edaaec9654edb333e8207f57b @@ -0,0 +1,20 @@ +0 val_0 1 +0 val_0 1 +0 val_0 1 +0 val_0 2 +0 val_0 2 +0 val_0 2 +0 val_0 3 +0 val_0 3 +0 val_0 3 +10 val_10 1 +10 val_10 2 +10 val_10 3 +100 val_100 1 +100 val_100 1 +100 val_100 2 +100 val_100 2 +100 val_100 3 +100 val_100 3 +103 val_103 1 +103 val_103 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat8-8-624b059dfaa86e2c78f065169de325cd b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-8-624b059dfaa86e2c78f065169de325cd new file mode 100644 index 0000000000000..1bd9063a9c63c --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat8-8-624b059dfaa86e2c78f065169de325cd @@ -0,0 +1,20 @@ +0.0 val_0 1 +0.0 val_0 1 +0.0 val_0 1 +0.0 val_0 2 +0.0 val_0 2 +0.0 val_0 2 +0.0 val_0 3 +0.0 val_0 3 +0.0 val_0 3 +4.0 val_2 1 +4.0 val_2 2 +4.0 val_2 3 +8.0 val_4 1 +8.0 val_4 2 +8.0 val_4 3 +10.0 val_5 1 +10.0 val_5 1 +10.0 val_5 1 +10.0 val_5 2 +10.0 val_5 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat9-0-66ee62178e3576fb38cb09800cb610bf b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-0-66ee62178e3576fb38cb09800cb610bf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-0-66ee62178e3576fb38cb09800cb610bf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat9-1-22e3d59a0423473051535684bca72b27 b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-1-22e3d59a0423473051535684bca72b27 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat9-2-55ae9fbf6daa36225dd386e34025dd38 b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-2-55ae9fbf6daa36225dd386e34025dd38 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat9-3-92bfcf88ca528eb6c9259142bf6541e5 b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-3-92bfcf88ca528eb6c9259142bf6541e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat9-4-ae71ce67b5d4a91bce1b34acde830268 b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-4-ae71ce67b5d4a91bce1b34acde830268 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat9-5-d1a5913edaaec9654edb333e8207f57b b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-5-d1a5913edaaec9654edb333e8207f57b new file mode 100644 index 0000000000000..f259b4eefc608 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-5-d1a5913edaaec9654edb333e8207f57b @@ -0,0 +1,20 @@ +0 val_0 1 +0 val_0 1 +0 val_0 1 +0 val_0 2 +0 val_0 2 +0 val_0 2 +10 val_10 1 +10 val_10 2 +100 val_100 1 +100 val_100 1 +100 val_100 2 +100 val_100 2 +103 val_103 1 +103 val_103 1 +103 val_103 2 +103 val_103 2 +104 val_104 1 +104 val_104 1 +104 val_104 2 +104 val_104 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partition_wise_fileformat9-6-624b059dfaa86e2c78f065169de325cd b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-6-624b059dfaa86e2c78f065169de325cd new file mode 100644 index 0000000000000..89afce150e7a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partition_wise_fileformat9-6-624b059dfaa86e2c78f065169de325cd @@ -0,0 +1,20 @@ +0.0 val_0 1 +0.0 val_0 1 +0.0 val_0 1 +0.0 val_0 2 +0.0 val_0 2 +0.0 val_0 2 +4.0 val_2 1 +4.0 val_2 2 +8.0 val_4 1 +8.0 val_4 2 +10.0 val_5 1 +10.0 val_5 1 +10.0 val_5 1 +10.0 val_5 2 +10.0 val_5 2 +10.0 val_5 2 +16.0 val_8 1 +16.0 val_8 2 +18.0 val_9 1 +18.0 val_9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/partitioned table scan-0-3e8898a13ccef627603f340d1f8bdd80 b/sql/hive/src/test/resources/golden/partitioned table scan-0-3e8898a13ccef627603f340d1f8bdd80 new file mode 100644 index 0000000000000..a3cb00feaca62 --- /dev/null +++ b/sql/hive/src/test/resources/golden/partitioned table scan-0-3e8898a13ccef627603f340d1f8bdd80 @@ -0,0 +1,2000 @@ +2008-04-08 11 238 val_238 +2008-04-08 11 86 val_86 +2008-04-08 11 311 val_311 +2008-04-08 11 27 val_27 +2008-04-08 11 165 val_165 +2008-04-08 11 409 val_409 +2008-04-08 11 255 val_255 +2008-04-08 11 278 val_278 +2008-04-08 11 98 val_98 +2008-04-08 11 484 val_484 +2008-04-08 11 265 val_265 +2008-04-08 11 193 val_193 +2008-04-08 11 401 val_401 +2008-04-08 11 150 val_150 +2008-04-08 11 273 val_273 +2008-04-08 11 224 val_224 +2008-04-08 11 369 val_369 +2008-04-08 11 66 val_66 +2008-04-08 11 128 val_128 +2008-04-08 11 213 val_213 +2008-04-08 11 146 val_146 +2008-04-08 11 406 val_406 +2008-04-08 11 429 val_429 +2008-04-08 11 374 val_374 +2008-04-08 11 152 val_152 +2008-04-08 11 469 val_469 +2008-04-08 11 145 val_145 +2008-04-08 11 495 val_495 +2008-04-08 11 37 val_37 +2008-04-08 11 327 val_327 +2008-04-08 11 281 val_281 +2008-04-08 11 277 val_277 +2008-04-08 11 209 val_209 +2008-04-08 11 15 val_15 +2008-04-08 11 82 val_82 +2008-04-08 11 403 val_403 +2008-04-08 11 166 val_166 +2008-04-08 11 417 val_417 +2008-04-08 11 430 val_430 +2008-04-08 11 252 val_252 +2008-04-08 11 292 val_292 +2008-04-08 11 219 val_219 +2008-04-08 11 287 val_287 +2008-04-08 11 153 val_153 +2008-04-08 11 193 val_193 +2008-04-08 11 338 val_338 +2008-04-08 11 446 val_446 +2008-04-08 11 459 val_459 +2008-04-08 11 394 val_394 +2008-04-08 11 237 val_237 +2008-04-08 11 482 val_482 +2008-04-08 11 174 val_174 +2008-04-08 11 413 val_413 +2008-04-08 11 494 val_494 +2008-04-08 11 207 val_207 +2008-04-08 11 199 val_199 +2008-04-08 11 466 val_466 +2008-04-08 11 208 val_208 +2008-04-08 11 174 val_174 +2008-04-08 11 399 val_399 +2008-04-08 11 396 val_396 +2008-04-08 11 247 val_247 +2008-04-08 11 417 val_417 +2008-04-08 11 489 val_489 +2008-04-08 11 162 val_162 +2008-04-08 11 377 val_377 +2008-04-08 11 397 val_397 +2008-04-08 11 309 val_309 +2008-04-08 11 365 val_365 +2008-04-08 11 266 val_266 +2008-04-08 11 439 val_439 +2008-04-08 11 342 val_342 +2008-04-08 11 367 val_367 +2008-04-08 11 325 val_325 +2008-04-08 11 167 val_167 +2008-04-08 11 195 val_195 +2008-04-08 11 475 val_475 +2008-04-08 11 17 val_17 +2008-04-08 11 113 val_113 +2008-04-08 11 155 val_155 +2008-04-08 11 203 val_203 +2008-04-08 11 339 val_339 +2008-04-08 11 0 val_0 +2008-04-08 11 455 val_455 +2008-04-08 11 128 val_128 +2008-04-08 11 311 val_311 +2008-04-08 11 316 val_316 +2008-04-08 11 57 val_57 +2008-04-08 11 302 val_302 +2008-04-08 11 205 val_205 +2008-04-08 11 149 val_149 +2008-04-08 11 438 val_438 +2008-04-08 11 345 val_345 +2008-04-08 11 129 val_129 +2008-04-08 11 170 val_170 +2008-04-08 11 20 val_20 +2008-04-08 11 489 val_489 +2008-04-08 11 157 val_157 +2008-04-08 11 378 val_378 +2008-04-08 11 221 val_221 +2008-04-08 11 92 val_92 +2008-04-08 11 111 val_111 +2008-04-08 11 47 val_47 +2008-04-08 11 72 val_72 +2008-04-08 11 4 val_4 +2008-04-08 11 280 val_280 +2008-04-08 11 35 val_35 +2008-04-08 11 427 val_427 +2008-04-08 11 277 val_277 +2008-04-08 11 208 val_208 +2008-04-08 11 356 val_356 +2008-04-08 11 399 val_399 +2008-04-08 11 169 val_169 +2008-04-08 11 382 val_382 +2008-04-08 11 498 val_498 +2008-04-08 11 125 val_125 +2008-04-08 11 386 val_386 +2008-04-08 11 437 val_437 +2008-04-08 11 469 val_469 +2008-04-08 11 192 val_192 +2008-04-08 11 286 val_286 +2008-04-08 11 187 val_187 +2008-04-08 11 176 val_176 +2008-04-08 11 54 val_54 +2008-04-08 11 459 val_459 +2008-04-08 11 51 val_51 +2008-04-08 11 138 val_138 +2008-04-08 11 103 val_103 +2008-04-08 11 239 val_239 +2008-04-08 11 213 val_213 +2008-04-08 11 216 val_216 +2008-04-08 11 430 val_430 +2008-04-08 11 278 val_278 +2008-04-08 11 176 val_176 +2008-04-08 11 289 val_289 +2008-04-08 11 221 val_221 +2008-04-08 11 65 val_65 +2008-04-08 11 318 val_318 +2008-04-08 11 332 val_332 +2008-04-08 11 311 val_311 +2008-04-08 11 275 val_275 +2008-04-08 11 137 val_137 +2008-04-08 11 241 val_241 +2008-04-08 11 83 val_83 +2008-04-08 11 333 val_333 +2008-04-08 11 180 val_180 +2008-04-08 11 284 val_284 +2008-04-08 11 12 val_12 +2008-04-08 11 230 val_230 +2008-04-08 11 181 val_181 +2008-04-08 11 67 val_67 +2008-04-08 11 260 val_260 +2008-04-08 11 404 val_404 +2008-04-08 11 384 val_384 +2008-04-08 11 489 val_489 +2008-04-08 11 353 val_353 +2008-04-08 11 373 val_373 +2008-04-08 11 272 val_272 +2008-04-08 11 138 val_138 +2008-04-08 11 217 val_217 +2008-04-08 11 84 val_84 +2008-04-08 11 348 val_348 +2008-04-08 11 466 val_466 +2008-04-08 11 58 val_58 +2008-04-08 11 8 val_8 +2008-04-08 11 411 val_411 +2008-04-08 11 230 val_230 +2008-04-08 11 208 val_208 +2008-04-08 11 348 val_348 +2008-04-08 11 24 val_24 +2008-04-08 11 463 val_463 +2008-04-08 11 431 val_431 +2008-04-08 11 179 val_179 +2008-04-08 11 172 val_172 +2008-04-08 11 42 val_42 +2008-04-08 11 129 val_129 +2008-04-08 11 158 val_158 +2008-04-08 11 119 val_119 +2008-04-08 11 496 val_496 +2008-04-08 11 0 val_0 +2008-04-08 11 322 val_322 +2008-04-08 11 197 val_197 +2008-04-08 11 468 val_468 +2008-04-08 11 393 val_393 +2008-04-08 11 454 val_454 +2008-04-08 11 100 val_100 +2008-04-08 11 298 val_298 +2008-04-08 11 199 val_199 +2008-04-08 11 191 val_191 +2008-04-08 11 418 val_418 +2008-04-08 11 96 val_96 +2008-04-08 11 26 val_26 +2008-04-08 11 165 val_165 +2008-04-08 11 327 val_327 +2008-04-08 11 230 val_230 +2008-04-08 11 205 val_205 +2008-04-08 11 120 val_120 +2008-04-08 11 131 val_131 +2008-04-08 11 51 val_51 +2008-04-08 11 404 val_404 +2008-04-08 11 43 val_43 +2008-04-08 11 436 val_436 +2008-04-08 11 156 val_156 +2008-04-08 11 469 val_469 +2008-04-08 11 468 val_468 +2008-04-08 11 308 val_308 +2008-04-08 11 95 val_95 +2008-04-08 11 196 val_196 +2008-04-08 11 288 val_288 +2008-04-08 11 481 val_481 +2008-04-08 11 457 val_457 +2008-04-08 11 98 val_98 +2008-04-08 11 282 val_282 +2008-04-08 11 197 val_197 +2008-04-08 11 187 val_187 +2008-04-08 11 318 val_318 +2008-04-08 11 318 val_318 +2008-04-08 11 409 val_409 +2008-04-08 11 470 val_470 +2008-04-08 11 137 val_137 +2008-04-08 11 369 val_369 +2008-04-08 11 316 val_316 +2008-04-08 11 169 val_169 +2008-04-08 11 413 val_413 +2008-04-08 11 85 val_85 +2008-04-08 11 77 val_77 +2008-04-08 11 0 val_0 +2008-04-08 11 490 val_490 +2008-04-08 11 87 val_87 +2008-04-08 11 364 val_364 +2008-04-08 11 179 val_179 +2008-04-08 11 118 val_118 +2008-04-08 11 134 val_134 +2008-04-08 11 395 val_395 +2008-04-08 11 282 val_282 +2008-04-08 11 138 val_138 +2008-04-08 11 238 val_238 +2008-04-08 11 419 val_419 +2008-04-08 11 15 val_15 +2008-04-08 11 118 val_118 +2008-04-08 11 72 val_72 +2008-04-08 11 90 val_90 +2008-04-08 11 307 val_307 +2008-04-08 11 19 val_19 +2008-04-08 11 435 val_435 +2008-04-08 11 10 val_10 +2008-04-08 11 277 val_277 +2008-04-08 11 273 val_273 +2008-04-08 11 306 val_306 +2008-04-08 11 224 val_224 +2008-04-08 11 309 val_309 +2008-04-08 11 389 val_389 +2008-04-08 11 327 val_327 +2008-04-08 11 242 val_242 +2008-04-08 11 369 val_369 +2008-04-08 11 392 val_392 +2008-04-08 11 272 val_272 +2008-04-08 11 331 val_331 +2008-04-08 11 401 val_401 +2008-04-08 11 242 val_242 +2008-04-08 11 452 val_452 +2008-04-08 11 177 val_177 +2008-04-08 11 226 val_226 +2008-04-08 11 5 val_5 +2008-04-08 11 497 val_497 +2008-04-08 11 402 val_402 +2008-04-08 11 396 val_396 +2008-04-08 11 317 val_317 +2008-04-08 11 395 val_395 +2008-04-08 11 58 val_58 +2008-04-08 11 35 val_35 +2008-04-08 11 336 val_336 +2008-04-08 11 95 val_95 +2008-04-08 11 11 val_11 +2008-04-08 11 168 val_168 +2008-04-08 11 34 val_34 +2008-04-08 11 229 val_229 +2008-04-08 11 233 val_233 +2008-04-08 11 143 val_143 +2008-04-08 11 472 val_472 +2008-04-08 11 322 val_322 +2008-04-08 11 498 val_498 +2008-04-08 11 160 val_160 +2008-04-08 11 195 val_195 +2008-04-08 11 42 val_42 +2008-04-08 11 321 val_321 +2008-04-08 11 430 val_430 +2008-04-08 11 119 val_119 +2008-04-08 11 489 val_489 +2008-04-08 11 458 val_458 +2008-04-08 11 78 val_78 +2008-04-08 11 76 val_76 +2008-04-08 11 41 val_41 +2008-04-08 11 223 val_223 +2008-04-08 11 492 val_492 +2008-04-08 11 149 val_149 +2008-04-08 11 449 val_449 +2008-04-08 11 218 val_218 +2008-04-08 11 228 val_228 +2008-04-08 11 138 val_138 +2008-04-08 11 453 val_453 +2008-04-08 11 30 val_30 +2008-04-08 11 209 val_209 +2008-04-08 11 64 val_64 +2008-04-08 11 468 val_468 +2008-04-08 11 76 val_76 +2008-04-08 11 74 val_74 +2008-04-08 11 342 val_342 +2008-04-08 11 69 val_69 +2008-04-08 11 230 val_230 +2008-04-08 11 33 val_33 +2008-04-08 11 368 val_368 +2008-04-08 11 103 val_103 +2008-04-08 11 296 val_296 +2008-04-08 11 113 val_113 +2008-04-08 11 216 val_216 +2008-04-08 11 367 val_367 +2008-04-08 11 344 val_344 +2008-04-08 11 167 val_167 +2008-04-08 11 274 val_274 +2008-04-08 11 219 val_219 +2008-04-08 11 239 val_239 +2008-04-08 11 485 val_485 +2008-04-08 11 116 val_116 +2008-04-08 11 223 val_223 +2008-04-08 11 256 val_256 +2008-04-08 11 263 val_263 +2008-04-08 11 70 val_70 +2008-04-08 11 487 val_487 +2008-04-08 11 480 val_480 +2008-04-08 11 401 val_401 +2008-04-08 11 288 val_288 +2008-04-08 11 191 val_191 +2008-04-08 11 5 val_5 +2008-04-08 11 244 val_244 +2008-04-08 11 438 val_438 +2008-04-08 11 128 val_128 +2008-04-08 11 467 val_467 +2008-04-08 11 432 val_432 +2008-04-08 11 202 val_202 +2008-04-08 11 316 val_316 +2008-04-08 11 229 val_229 +2008-04-08 11 469 val_469 +2008-04-08 11 463 val_463 +2008-04-08 11 280 val_280 +2008-04-08 11 2 val_2 +2008-04-08 11 35 val_35 +2008-04-08 11 283 val_283 +2008-04-08 11 331 val_331 +2008-04-08 11 235 val_235 +2008-04-08 11 80 val_80 +2008-04-08 11 44 val_44 +2008-04-08 11 193 val_193 +2008-04-08 11 321 val_321 +2008-04-08 11 335 val_335 +2008-04-08 11 104 val_104 +2008-04-08 11 466 val_466 +2008-04-08 11 366 val_366 +2008-04-08 11 175 val_175 +2008-04-08 11 403 val_403 +2008-04-08 11 483 val_483 +2008-04-08 11 53 val_53 +2008-04-08 11 105 val_105 +2008-04-08 11 257 val_257 +2008-04-08 11 406 val_406 +2008-04-08 11 409 val_409 +2008-04-08 11 190 val_190 +2008-04-08 11 406 val_406 +2008-04-08 11 401 val_401 +2008-04-08 11 114 val_114 +2008-04-08 11 258 val_258 +2008-04-08 11 90 val_90 +2008-04-08 11 203 val_203 +2008-04-08 11 262 val_262 +2008-04-08 11 348 val_348 +2008-04-08 11 424 val_424 +2008-04-08 11 12 val_12 +2008-04-08 11 396 val_396 +2008-04-08 11 201 val_201 +2008-04-08 11 217 val_217 +2008-04-08 11 164 val_164 +2008-04-08 11 431 val_431 +2008-04-08 11 454 val_454 +2008-04-08 11 478 val_478 +2008-04-08 11 298 val_298 +2008-04-08 11 125 val_125 +2008-04-08 11 431 val_431 +2008-04-08 11 164 val_164 +2008-04-08 11 424 val_424 +2008-04-08 11 187 val_187 +2008-04-08 11 382 val_382 +2008-04-08 11 5 val_5 +2008-04-08 11 70 val_70 +2008-04-08 11 397 val_397 +2008-04-08 11 480 val_480 +2008-04-08 11 291 val_291 +2008-04-08 11 24 val_24 +2008-04-08 11 351 val_351 +2008-04-08 11 255 val_255 +2008-04-08 11 104 val_104 +2008-04-08 11 70 val_70 +2008-04-08 11 163 val_163 +2008-04-08 11 438 val_438 +2008-04-08 11 119 val_119 +2008-04-08 11 414 val_414 +2008-04-08 11 200 val_200 +2008-04-08 11 491 val_491 +2008-04-08 11 237 val_237 +2008-04-08 11 439 val_439 +2008-04-08 11 360 val_360 +2008-04-08 11 248 val_248 +2008-04-08 11 479 val_479 +2008-04-08 11 305 val_305 +2008-04-08 11 417 val_417 +2008-04-08 11 199 val_199 +2008-04-08 11 444 val_444 +2008-04-08 11 120 val_120 +2008-04-08 11 429 val_429 +2008-04-08 11 169 val_169 +2008-04-08 11 443 val_443 +2008-04-08 11 323 val_323 +2008-04-08 11 325 val_325 +2008-04-08 11 277 val_277 +2008-04-08 11 230 val_230 +2008-04-08 11 478 val_478 +2008-04-08 11 178 val_178 +2008-04-08 11 468 val_468 +2008-04-08 11 310 val_310 +2008-04-08 11 317 val_317 +2008-04-08 11 333 val_333 +2008-04-08 11 493 val_493 +2008-04-08 11 460 val_460 +2008-04-08 11 207 val_207 +2008-04-08 11 249 val_249 +2008-04-08 11 265 val_265 +2008-04-08 11 480 val_480 +2008-04-08 11 83 val_83 +2008-04-08 11 136 val_136 +2008-04-08 11 353 val_353 +2008-04-08 11 172 val_172 +2008-04-08 11 214 val_214 +2008-04-08 11 462 val_462 +2008-04-08 11 233 val_233 +2008-04-08 11 406 val_406 +2008-04-08 11 133 val_133 +2008-04-08 11 175 val_175 +2008-04-08 11 189 val_189 +2008-04-08 11 454 val_454 +2008-04-08 11 375 val_375 +2008-04-08 11 401 val_401 +2008-04-08 11 421 val_421 +2008-04-08 11 407 val_407 +2008-04-08 11 384 val_384 +2008-04-08 11 256 val_256 +2008-04-08 11 26 val_26 +2008-04-08 11 134 val_134 +2008-04-08 11 67 val_67 +2008-04-08 11 384 val_384 +2008-04-08 11 379 val_379 +2008-04-08 11 18 val_18 +2008-04-08 11 462 val_462 +2008-04-08 11 492 val_492 +2008-04-08 11 100 val_100 +2008-04-08 11 298 val_298 +2008-04-08 11 9 val_9 +2008-04-08 11 341 val_341 +2008-04-08 11 498 val_498 +2008-04-08 11 146 val_146 +2008-04-08 11 458 val_458 +2008-04-08 11 362 val_362 +2008-04-08 11 186 val_186 +2008-04-08 11 285 val_285 +2008-04-08 11 348 val_348 +2008-04-08 11 167 val_167 +2008-04-08 11 18 val_18 +2008-04-08 11 273 val_273 +2008-04-08 11 183 val_183 +2008-04-08 11 281 val_281 +2008-04-08 11 344 val_344 +2008-04-08 11 97 val_97 +2008-04-08 11 469 val_469 +2008-04-08 11 315 val_315 +2008-04-08 11 84 val_84 +2008-04-08 11 28 val_28 +2008-04-08 11 37 val_37 +2008-04-08 11 448 val_448 +2008-04-08 11 152 val_152 +2008-04-08 11 348 val_348 +2008-04-08 11 307 val_307 +2008-04-08 11 194 val_194 +2008-04-08 11 414 val_414 +2008-04-08 11 477 val_477 +2008-04-08 11 222 val_222 +2008-04-08 11 126 val_126 +2008-04-08 11 90 val_90 +2008-04-08 11 169 val_169 +2008-04-08 11 403 val_403 +2008-04-08 11 400 val_400 +2008-04-08 11 200 val_200 +2008-04-08 11 97 val_97 +2008-04-08 12 238 val_238 +2008-04-08 12 86 val_86 +2008-04-08 12 311 val_311 +2008-04-08 12 27 val_27 +2008-04-08 12 165 val_165 +2008-04-08 12 409 val_409 +2008-04-08 12 255 val_255 +2008-04-08 12 278 val_278 +2008-04-08 12 98 val_98 +2008-04-08 12 484 val_484 +2008-04-08 12 265 val_265 +2008-04-08 12 193 val_193 +2008-04-08 12 401 val_401 +2008-04-08 12 150 val_150 +2008-04-08 12 273 val_273 +2008-04-08 12 224 val_224 +2008-04-08 12 369 val_369 +2008-04-08 12 66 val_66 +2008-04-08 12 128 val_128 +2008-04-08 12 213 val_213 +2008-04-08 12 146 val_146 +2008-04-08 12 406 val_406 +2008-04-08 12 429 val_429 +2008-04-08 12 374 val_374 +2008-04-08 12 152 val_152 +2008-04-08 12 469 val_469 +2008-04-08 12 145 val_145 +2008-04-08 12 495 val_495 +2008-04-08 12 37 val_37 +2008-04-08 12 327 val_327 +2008-04-08 12 281 val_281 +2008-04-08 12 277 val_277 +2008-04-08 12 209 val_209 +2008-04-08 12 15 val_15 +2008-04-08 12 82 val_82 +2008-04-08 12 403 val_403 +2008-04-08 12 166 val_166 +2008-04-08 12 417 val_417 +2008-04-08 12 430 val_430 +2008-04-08 12 252 val_252 +2008-04-08 12 292 val_292 +2008-04-08 12 219 val_219 +2008-04-08 12 287 val_287 +2008-04-08 12 153 val_153 +2008-04-08 12 193 val_193 +2008-04-08 12 338 val_338 +2008-04-08 12 446 val_446 +2008-04-08 12 459 val_459 +2008-04-08 12 394 val_394 +2008-04-08 12 237 val_237 +2008-04-08 12 482 val_482 +2008-04-08 12 174 val_174 +2008-04-08 12 413 val_413 +2008-04-08 12 494 val_494 +2008-04-08 12 207 val_207 +2008-04-08 12 199 val_199 +2008-04-08 12 466 val_466 +2008-04-08 12 208 val_208 +2008-04-08 12 174 val_174 +2008-04-08 12 399 val_399 +2008-04-08 12 396 val_396 +2008-04-08 12 247 val_247 +2008-04-08 12 417 val_417 +2008-04-08 12 489 val_489 +2008-04-08 12 162 val_162 +2008-04-08 12 377 val_377 +2008-04-08 12 397 val_397 +2008-04-08 12 309 val_309 +2008-04-08 12 365 val_365 +2008-04-08 12 266 val_266 +2008-04-08 12 439 val_439 +2008-04-08 12 342 val_342 +2008-04-08 12 367 val_367 +2008-04-08 12 325 val_325 +2008-04-08 12 167 val_167 +2008-04-08 12 195 val_195 +2008-04-08 12 475 val_475 +2008-04-08 12 17 val_17 +2008-04-08 12 113 val_113 +2008-04-08 12 155 val_155 +2008-04-08 12 203 val_203 +2008-04-08 12 339 val_339 +2008-04-08 12 0 val_0 +2008-04-08 12 455 val_455 +2008-04-08 12 128 val_128 +2008-04-08 12 311 val_311 +2008-04-08 12 316 val_316 +2008-04-08 12 57 val_57 +2008-04-08 12 302 val_302 +2008-04-08 12 205 val_205 +2008-04-08 12 149 val_149 +2008-04-08 12 438 val_438 +2008-04-08 12 345 val_345 +2008-04-08 12 129 val_129 +2008-04-08 12 170 val_170 +2008-04-08 12 20 val_20 +2008-04-08 12 489 val_489 +2008-04-08 12 157 val_157 +2008-04-08 12 378 val_378 +2008-04-08 12 221 val_221 +2008-04-08 12 92 val_92 +2008-04-08 12 111 val_111 +2008-04-08 12 47 val_47 +2008-04-08 12 72 val_72 +2008-04-08 12 4 val_4 +2008-04-08 12 280 val_280 +2008-04-08 12 35 val_35 +2008-04-08 12 427 val_427 +2008-04-08 12 277 val_277 +2008-04-08 12 208 val_208 +2008-04-08 12 356 val_356 +2008-04-08 12 399 val_399 +2008-04-08 12 169 val_169 +2008-04-08 12 382 val_382 +2008-04-08 12 498 val_498 +2008-04-08 12 125 val_125 +2008-04-08 12 386 val_386 +2008-04-08 12 437 val_437 +2008-04-08 12 469 val_469 +2008-04-08 12 192 val_192 +2008-04-08 12 286 val_286 +2008-04-08 12 187 val_187 +2008-04-08 12 176 val_176 +2008-04-08 12 54 val_54 +2008-04-08 12 459 val_459 +2008-04-08 12 51 val_51 +2008-04-08 12 138 val_138 +2008-04-08 12 103 val_103 +2008-04-08 12 239 val_239 +2008-04-08 12 213 val_213 +2008-04-08 12 216 val_216 +2008-04-08 12 430 val_430 +2008-04-08 12 278 val_278 +2008-04-08 12 176 val_176 +2008-04-08 12 289 val_289 +2008-04-08 12 221 val_221 +2008-04-08 12 65 val_65 +2008-04-08 12 318 val_318 +2008-04-08 12 332 val_332 +2008-04-08 12 311 val_311 +2008-04-08 12 275 val_275 +2008-04-08 12 137 val_137 +2008-04-08 12 241 val_241 +2008-04-08 12 83 val_83 +2008-04-08 12 333 val_333 +2008-04-08 12 180 val_180 +2008-04-08 12 284 val_284 +2008-04-08 12 12 val_12 +2008-04-08 12 230 val_230 +2008-04-08 12 181 val_181 +2008-04-08 12 67 val_67 +2008-04-08 12 260 val_260 +2008-04-08 12 404 val_404 +2008-04-08 12 384 val_384 +2008-04-08 12 489 val_489 +2008-04-08 12 353 val_353 +2008-04-08 12 373 val_373 +2008-04-08 12 272 val_272 +2008-04-08 12 138 val_138 +2008-04-08 12 217 val_217 +2008-04-08 12 84 val_84 +2008-04-08 12 348 val_348 +2008-04-08 12 466 val_466 +2008-04-08 12 58 val_58 +2008-04-08 12 8 val_8 +2008-04-08 12 411 val_411 +2008-04-08 12 230 val_230 +2008-04-08 12 208 val_208 +2008-04-08 12 348 val_348 +2008-04-08 12 24 val_24 +2008-04-08 12 463 val_463 +2008-04-08 12 431 val_431 +2008-04-08 12 179 val_179 +2008-04-08 12 172 val_172 +2008-04-08 12 42 val_42 +2008-04-08 12 129 val_129 +2008-04-08 12 158 val_158 +2008-04-08 12 119 val_119 +2008-04-08 12 496 val_496 +2008-04-08 12 0 val_0 +2008-04-08 12 322 val_322 +2008-04-08 12 197 val_197 +2008-04-08 12 468 val_468 +2008-04-08 12 393 val_393 +2008-04-08 12 454 val_454 +2008-04-08 12 100 val_100 +2008-04-08 12 298 val_298 +2008-04-08 12 199 val_199 +2008-04-08 12 191 val_191 +2008-04-08 12 418 val_418 +2008-04-08 12 96 val_96 +2008-04-08 12 26 val_26 +2008-04-08 12 165 val_165 +2008-04-08 12 327 val_327 +2008-04-08 12 230 val_230 +2008-04-08 12 205 val_205 +2008-04-08 12 120 val_120 +2008-04-08 12 131 val_131 +2008-04-08 12 51 val_51 +2008-04-08 12 404 val_404 +2008-04-08 12 43 val_43 +2008-04-08 12 436 val_436 +2008-04-08 12 156 val_156 +2008-04-08 12 469 val_469 +2008-04-08 12 468 val_468 +2008-04-08 12 308 val_308 +2008-04-08 12 95 val_95 +2008-04-08 12 196 val_196 +2008-04-08 12 288 val_288 +2008-04-08 12 481 val_481 +2008-04-08 12 457 val_457 +2008-04-08 12 98 val_98 +2008-04-08 12 282 val_282 +2008-04-08 12 197 val_197 +2008-04-08 12 187 val_187 +2008-04-08 12 318 val_318 +2008-04-08 12 318 val_318 +2008-04-08 12 409 val_409 +2008-04-08 12 470 val_470 +2008-04-08 12 137 val_137 +2008-04-08 12 369 val_369 +2008-04-08 12 316 val_316 +2008-04-08 12 169 val_169 +2008-04-08 12 413 val_413 +2008-04-08 12 85 val_85 +2008-04-08 12 77 val_77 +2008-04-08 12 0 val_0 +2008-04-08 12 490 val_490 +2008-04-08 12 87 val_87 +2008-04-08 12 364 val_364 +2008-04-08 12 179 val_179 +2008-04-08 12 118 val_118 +2008-04-08 12 134 val_134 +2008-04-08 12 395 val_395 +2008-04-08 12 282 val_282 +2008-04-08 12 138 val_138 +2008-04-08 12 238 val_238 +2008-04-08 12 419 val_419 +2008-04-08 12 15 val_15 +2008-04-08 12 118 val_118 +2008-04-08 12 72 val_72 +2008-04-08 12 90 val_90 +2008-04-08 12 307 val_307 +2008-04-08 12 19 val_19 +2008-04-08 12 435 val_435 +2008-04-08 12 10 val_10 +2008-04-08 12 277 val_277 +2008-04-08 12 273 val_273 +2008-04-08 12 306 val_306 +2008-04-08 12 224 val_224 +2008-04-08 12 309 val_309 +2008-04-08 12 389 val_389 +2008-04-08 12 327 val_327 +2008-04-08 12 242 val_242 +2008-04-08 12 369 val_369 +2008-04-08 12 392 val_392 +2008-04-08 12 272 val_272 +2008-04-08 12 331 val_331 +2008-04-08 12 401 val_401 +2008-04-08 12 242 val_242 +2008-04-08 12 452 val_452 +2008-04-08 12 177 val_177 +2008-04-08 12 226 val_226 +2008-04-08 12 5 val_5 +2008-04-08 12 497 val_497 +2008-04-08 12 402 val_402 +2008-04-08 12 396 val_396 +2008-04-08 12 317 val_317 +2008-04-08 12 395 val_395 +2008-04-08 12 58 val_58 +2008-04-08 12 35 val_35 +2008-04-08 12 336 val_336 +2008-04-08 12 95 val_95 +2008-04-08 12 11 val_11 +2008-04-08 12 168 val_168 +2008-04-08 12 34 val_34 +2008-04-08 12 229 val_229 +2008-04-08 12 233 val_233 +2008-04-08 12 143 val_143 +2008-04-08 12 472 val_472 +2008-04-08 12 322 val_322 +2008-04-08 12 498 val_498 +2008-04-08 12 160 val_160 +2008-04-08 12 195 val_195 +2008-04-08 12 42 val_42 +2008-04-08 12 321 val_321 +2008-04-08 12 430 val_430 +2008-04-08 12 119 val_119 +2008-04-08 12 489 val_489 +2008-04-08 12 458 val_458 +2008-04-08 12 78 val_78 +2008-04-08 12 76 val_76 +2008-04-08 12 41 val_41 +2008-04-08 12 223 val_223 +2008-04-08 12 492 val_492 +2008-04-08 12 149 val_149 +2008-04-08 12 449 val_449 +2008-04-08 12 218 val_218 +2008-04-08 12 228 val_228 +2008-04-08 12 138 val_138 +2008-04-08 12 453 val_453 +2008-04-08 12 30 val_30 +2008-04-08 12 209 val_209 +2008-04-08 12 64 val_64 +2008-04-08 12 468 val_468 +2008-04-08 12 76 val_76 +2008-04-08 12 74 val_74 +2008-04-08 12 342 val_342 +2008-04-08 12 69 val_69 +2008-04-08 12 230 val_230 +2008-04-08 12 33 val_33 +2008-04-08 12 368 val_368 +2008-04-08 12 103 val_103 +2008-04-08 12 296 val_296 +2008-04-08 12 113 val_113 +2008-04-08 12 216 val_216 +2008-04-08 12 367 val_367 +2008-04-08 12 344 val_344 +2008-04-08 12 167 val_167 +2008-04-08 12 274 val_274 +2008-04-08 12 219 val_219 +2008-04-08 12 239 val_239 +2008-04-08 12 485 val_485 +2008-04-08 12 116 val_116 +2008-04-08 12 223 val_223 +2008-04-08 12 256 val_256 +2008-04-08 12 263 val_263 +2008-04-08 12 70 val_70 +2008-04-08 12 487 val_487 +2008-04-08 12 480 val_480 +2008-04-08 12 401 val_401 +2008-04-08 12 288 val_288 +2008-04-08 12 191 val_191 +2008-04-08 12 5 val_5 +2008-04-08 12 244 val_244 +2008-04-08 12 438 val_438 +2008-04-08 12 128 val_128 +2008-04-08 12 467 val_467 +2008-04-08 12 432 val_432 +2008-04-08 12 202 val_202 +2008-04-08 12 316 val_316 +2008-04-08 12 229 val_229 +2008-04-08 12 469 val_469 +2008-04-08 12 463 val_463 +2008-04-08 12 280 val_280 +2008-04-08 12 2 val_2 +2008-04-08 12 35 val_35 +2008-04-08 12 283 val_283 +2008-04-08 12 331 val_331 +2008-04-08 12 235 val_235 +2008-04-08 12 80 val_80 +2008-04-08 12 44 val_44 +2008-04-08 12 193 val_193 +2008-04-08 12 321 val_321 +2008-04-08 12 335 val_335 +2008-04-08 12 104 val_104 +2008-04-08 12 466 val_466 +2008-04-08 12 366 val_366 +2008-04-08 12 175 val_175 +2008-04-08 12 403 val_403 +2008-04-08 12 483 val_483 +2008-04-08 12 53 val_53 +2008-04-08 12 105 val_105 +2008-04-08 12 257 val_257 +2008-04-08 12 406 val_406 +2008-04-08 12 409 val_409 +2008-04-08 12 190 val_190 +2008-04-08 12 406 val_406 +2008-04-08 12 401 val_401 +2008-04-08 12 114 val_114 +2008-04-08 12 258 val_258 +2008-04-08 12 90 val_90 +2008-04-08 12 203 val_203 +2008-04-08 12 262 val_262 +2008-04-08 12 348 val_348 +2008-04-08 12 424 val_424 +2008-04-08 12 12 val_12 +2008-04-08 12 396 val_396 +2008-04-08 12 201 val_201 +2008-04-08 12 217 val_217 +2008-04-08 12 164 val_164 +2008-04-08 12 431 val_431 +2008-04-08 12 454 val_454 +2008-04-08 12 478 val_478 +2008-04-08 12 298 val_298 +2008-04-08 12 125 val_125 +2008-04-08 12 431 val_431 +2008-04-08 12 164 val_164 +2008-04-08 12 424 val_424 +2008-04-08 12 187 val_187 +2008-04-08 12 382 val_382 +2008-04-08 12 5 val_5 +2008-04-08 12 70 val_70 +2008-04-08 12 397 val_397 +2008-04-08 12 480 val_480 +2008-04-08 12 291 val_291 +2008-04-08 12 24 val_24 +2008-04-08 12 351 val_351 +2008-04-08 12 255 val_255 +2008-04-08 12 104 val_104 +2008-04-08 12 70 val_70 +2008-04-08 12 163 val_163 +2008-04-08 12 438 val_438 +2008-04-08 12 119 val_119 +2008-04-08 12 414 val_414 +2008-04-08 12 200 val_200 +2008-04-08 12 491 val_491 +2008-04-08 12 237 val_237 +2008-04-08 12 439 val_439 +2008-04-08 12 360 val_360 +2008-04-08 12 248 val_248 +2008-04-08 12 479 val_479 +2008-04-08 12 305 val_305 +2008-04-08 12 417 val_417 +2008-04-08 12 199 val_199 +2008-04-08 12 444 val_444 +2008-04-08 12 120 val_120 +2008-04-08 12 429 val_429 +2008-04-08 12 169 val_169 +2008-04-08 12 443 val_443 +2008-04-08 12 323 val_323 +2008-04-08 12 325 val_325 +2008-04-08 12 277 val_277 +2008-04-08 12 230 val_230 +2008-04-08 12 478 val_478 +2008-04-08 12 178 val_178 +2008-04-08 12 468 val_468 +2008-04-08 12 310 val_310 +2008-04-08 12 317 val_317 +2008-04-08 12 333 val_333 +2008-04-08 12 493 val_493 +2008-04-08 12 460 val_460 +2008-04-08 12 207 val_207 +2008-04-08 12 249 val_249 +2008-04-08 12 265 val_265 +2008-04-08 12 480 val_480 +2008-04-08 12 83 val_83 +2008-04-08 12 136 val_136 +2008-04-08 12 353 val_353 +2008-04-08 12 172 val_172 +2008-04-08 12 214 val_214 +2008-04-08 12 462 val_462 +2008-04-08 12 233 val_233 +2008-04-08 12 406 val_406 +2008-04-08 12 133 val_133 +2008-04-08 12 175 val_175 +2008-04-08 12 189 val_189 +2008-04-08 12 454 val_454 +2008-04-08 12 375 val_375 +2008-04-08 12 401 val_401 +2008-04-08 12 421 val_421 +2008-04-08 12 407 val_407 +2008-04-08 12 384 val_384 +2008-04-08 12 256 val_256 +2008-04-08 12 26 val_26 +2008-04-08 12 134 val_134 +2008-04-08 12 67 val_67 +2008-04-08 12 384 val_384 +2008-04-08 12 379 val_379 +2008-04-08 12 18 val_18 +2008-04-08 12 462 val_462 +2008-04-08 12 492 val_492 +2008-04-08 12 100 val_100 +2008-04-08 12 298 val_298 +2008-04-08 12 9 val_9 +2008-04-08 12 341 val_341 +2008-04-08 12 498 val_498 +2008-04-08 12 146 val_146 +2008-04-08 12 458 val_458 +2008-04-08 12 362 val_362 +2008-04-08 12 186 val_186 +2008-04-08 12 285 val_285 +2008-04-08 12 348 val_348 +2008-04-08 12 167 val_167 +2008-04-08 12 18 val_18 +2008-04-08 12 273 val_273 +2008-04-08 12 183 val_183 +2008-04-08 12 281 val_281 +2008-04-08 12 344 val_344 +2008-04-08 12 97 val_97 +2008-04-08 12 469 val_469 +2008-04-08 12 315 val_315 +2008-04-08 12 84 val_84 +2008-04-08 12 28 val_28 +2008-04-08 12 37 val_37 +2008-04-08 12 448 val_448 +2008-04-08 12 152 val_152 +2008-04-08 12 348 val_348 +2008-04-08 12 307 val_307 +2008-04-08 12 194 val_194 +2008-04-08 12 414 val_414 +2008-04-08 12 477 val_477 +2008-04-08 12 222 val_222 +2008-04-08 12 126 val_126 +2008-04-08 12 90 val_90 +2008-04-08 12 169 val_169 +2008-04-08 12 403 val_403 +2008-04-08 12 400 val_400 +2008-04-08 12 200 val_200 +2008-04-08 12 97 val_97 +2008-04-09 11 238 val_238 +2008-04-09 11 86 val_86 +2008-04-09 11 311 val_311 +2008-04-09 11 27 val_27 +2008-04-09 11 165 val_165 +2008-04-09 11 409 val_409 +2008-04-09 11 255 val_255 +2008-04-09 11 278 val_278 +2008-04-09 11 98 val_98 +2008-04-09 11 484 val_484 +2008-04-09 11 265 val_265 +2008-04-09 11 193 val_193 +2008-04-09 11 401 val_401 +2008-04-09 11 150 val_150 +2008-04-09 11 273 val_273 +2008-04-09 11 224 val_224 +2008-04-09 11 369 val_369 +2008-04-09 11 66 val_66 +2008-04-09 11 128 val_128 +2008-04-09 11 213 val_213 +2008-04-09 11 146 val_146 +2008-04-09 11 406 val_406 +2008-04-09 11 429 val_429 +2008-04-09 11 374 val_374 +2008-04-09 11 152 val_152 +2008-04-09 11 469 val_469 +2008-04-09 11 145 val_145 +2008-04-09 11 495 val_495 +2008-04-09 11 37 val_37 +2008-04-09 11 327 val_327 +2008-04-09 11 281 val_281 +2008-04-09 11 277 val_277 +2008-04-09 11 209 val_209 +2008-04-09 11 15 val_15 +2008-04-09 11 82 val_82 +2008-04-09 11 403 val_403 +2008-04-09 11 166 val_166 +2008-04-09 11 417 val_417 +2008-04-09 11 430 val_430 +2008-04-09 11 252 val_252 +2008-04-09 11 292 val_292 +2008-04-09 11 219 val_219 +2008-04-09 11 287 val_287 +2008-04-09 11 153 val_153 +2008-04-09 11 193 val_193 +2008-04-09 11 338 val_338 +2008-04-09 11 446 val_446 +2008-04-09 11 459 val_459 +2008-04-09 11 394 val_394 +2008-04-09 11 237 val_237 +2008-04-09 11 482 val_482 +2008-04-09 11 174 val_174 +2008-04-09 11 413 val_413 +2008-04-09 11 494 val_494 +2008-04-09 11 207 val_207 +2008-04-09 11 199 val_199 +2008-04-09 11 466 val_466 +2008-04-09 11 208 val_208 +2008-04-09 11 174 val_174 +2008-04-09 11 399 val_399 +2008-04-09 11 396 val_396 +2008-04-09 11 247 val_247 +2008-04-09 11 417 val_417 +2008-04-09 11 489 val_489 +2008-04-09 11 162 val_162 +2008-04-09 11 377 val_377 +2008-04-09 11 397 val_397 +2008-04-09 11 309 val_309 +2008-04-09 11 365 val_365 +2008-04-09 11 266 val_266 +2008-04-09 11 439 val_439 +2008-04-09 11 342 val_342 +2008-04-09 11 367 val_367 +2008-04-09 11 325 val_325 +2008-04-09 11 167 val_167 +2008-04-09 11 195 val_195 +2008-04-09 11 475 val_475 +2008-04-09 11 17 val_17 +2008-04-09 11 113 val_113 +2008-04-09 11 155 val_155 +2008-04-09 11 203 val_203 +2008-04-09 11 339 val_339 +2008-04-09 11 0 val_0 +2008-04-09 11 455 val_455 +2008-04-09 11 128 val_128 +2008-04-09 11 311 val_311 +2008-04-09 11 316 val_316 +2008-04-09 11 57 val_57 +2008-04-09 11 302 val_302 +2008-04-09 11 205 val_205 +2008-04-09 11 149 val_149 +2008-04-09 11 438 val_438 +2008-04-09 11 345 val_345 +2008-04-09 11 129 val_129 +2008-04-09 11 170 val_170 +2008-04-09 11 20 val_20 +2008-04-09 11 489 val_489 +2008-04-09 11 157 val_157 +2008-04-09 11 378 val_378 +2008-04-09 11 221 val_221 +2008-04-09 11 92 val_92 +2008-04-09 11 111 val_111 +2008-04-09 11 47 val_47 +2008-04-09 11 72 val_72 +2008-04-09 11 4 val_4 +2008-04-09 11 280 val_280 +2008-04-09 11 35 val_35 +2008-04-09 11 427 val_427 +2008-04-09 11 277 val_277 +2008-04-09 11 208 val_208 +2008-04-09 11 356 val_356 +2008-04-09 11 399 val_399 +2008-04-09 11 169 val_169 +2008-04-09 11 382 val_382 +2008-04-09 11 498 val_498 +2008-04-09 11 125 val_125 +2008-04-09 11 386 val_386 +2008-04-09 11 437 val_437 +2008-04-09 11 469 val_469 +2008-04-09 11 192 val_192 +2008-04-09 11 286 val_286 +2008-04-09 11 187 val_187 +2008-04-09 11 176 val_176 +2008-04-09 11 54 val_54 +2008-04-09 11 459 val_459 +2008-04-09 11 51 val_51 +2008-04-09 11 138 val_138 +2008-04-09 11 103 val_103 +2008-04-09 11 239 val_239 +2008-04-09 11 213 val_213 +2008-04-09 11 216 val_216 +2008-04-09 11 430 val_430 +2008-04-09 11 278 val_278 +2008-04-09 11 176 val_176 +2008-04-09 11 289 val_289 +2008-04-09 11 221 val_221 +2008-04-09 11 65 val_65 +2008-04-09 11 318 val_318 +2008-04-09 11 332 val_332 +2008-04-09 11 311 val_311 +2008-04-09 11 275 val_275 +2008-04-09 11 137 val_137 +2008-04-09 11 241 val_241 +2008-04-09 11 83 val_83 +2008-04-09 11 333 val_333 +2008-04-09 11 180 val_180 +2008-04-09 11 284 val_284 +2008-04-09 11 12 val_12 +2008-04-09 11 230 val_230 +2008-04-09 11 181 val_181 +2008-04-09 11 67 val_67 +2008-04-09 11 260 val_260 +2008-04-09 11 404 val_404 +2008-04-09 11 384 val_384 +2008-04-09 11 489 val_489 +2008-04-09 11 353 val_353 +2008-04-09 11 373 val_373 +2008-04-09 11 272 val_272 +2008-04-09 11 138 val_138 +2008-04-09 11 217 val_217 +2008-04-09 11 84 val_84 +2008-04-09 11 348 val_348 +2008-04-09 11 466 val_466 +2008-04-09 11 58 val_58 +2008-04-09 11 8 val_8 +2008-04-09 11 411 val_411 +2008-04-09 11 230 val_230 +2008-04-09 11 208 val_208 +2008-04-09 11 348 val_348 +2008-04-09 11 24 val_24 +2008-04-09 11 463 val_463 +2008-04-09 11 431 val_431 +2008-04-09 11 179 val_179 +2008-04-09 11 172 val_172 +2008-04-09 11 42 val_42 +2008-04-09 11 129 val_129 +2008-04-09 11 158 val_158 +2008-04-09 11 119 val_119 +2008-04-09 11 496 val_496 +2008-04-09 11 0 val_0 +2008-04-09 11 322 val_322 +2008-04-09 11 197 val_197 +2008-04-09 11 468 val_468 +2008-04-09 11 393 val_393 +2008-04-09 11 454 val_454 +2008-04-09 11 100 val_100 +2008-04-09 11 298 val_298 +2008-04-09 11 199 val_199 +2008-04-09 11 191 val_191 +2008-04-09 11 418 val_418 +2008-04-09 11 96 val_96 +2008-04-09 11 26 val_26 +2008-04-09 11 165 val_165 +2008-04-09 11 327 val_327 +2008-04-09 11 230 val_230 +2008-04-09 11 205 val_205 +2008-04-09 11 120 val_120 +2008-04-09 11 131 val_131 +2008-04-09 11 51 val_51 +2008-04-09 11 404 val_404 +2008-04-09 11 43 val_43 +2008-04-09 11 436 val_436 +2008-04-09 11 156 val_156 +2008-04-09 11 469 val_469 +2008-04-09 11 468 val_468 +2008-04-09 11 308 val_308 +2008-04-09 11 95 val_95 +2008-04-09 11 196 val_196 +2008-04-09 11 288 val_288 +2008-04-09 11 481 val_481 +2008-04-09 11 457 val_457 +2008-04-09 11 98 val_98 +2008-04-09 11 282 val_282 +2008-04-09 11 197 val_197 +2008-04-09 11 187 val_187 +2008-04-09 11 318 val_318 +2008-04-09 11 318 val_318 +2008-04-09 11 409 val_409 +2008-04-09 11 470 val_470 +2008-04-09 11 137 val_137 +2008-04-09 11 369 val_369 +2008-04-09 11 316 val_316 +2008-04-09 11 169 val_169 +2008-04-09 11 413 val_413 +2008-04-09 11 85 val_85 +2008-04-09 11 77 val_77 +2008-04-09 11 0 val_0 +2008-04-09 11 490 val_490 +2008-04-09 11 87 val_87 +2008-04-09 11 364 val_364 +2008-04-09 11 179 val_179 +2008-04-09 11 118 val_118 +2008-04-09 11 134 val_134 +2008-04-09 11 395 val_395 +2008-04-09 11 282 val_282 +2008-04-09 11 138 val_138 +2008-04-09 11 238 val_238 +2008-04-09 11 419 val_419 +2008-04-09 11 15 val_15 +2008-04-09 11 118 val_118 +2008-04-09 11 72 val_72 +2008-04-09 11 90 val_90 +2008-04-09 11 307 val_307 +2008-04-09 11 19 val_19 +2008-04-09 11 435 val_435 +2008-04-09 11 10 val_10 +2008-04-09 11 277 val_277 +2008-04-09 11 273 val_273 +2008-04-09 11 306 val_306 +2008-04-09 11 224 val_224 +2008-04-09 11 309 val_309 +2008-04-09 11 389 val_389 +2008-04-09 11 327 val_327 +2008-04-09 11 242 val_242 +2008-04-09 11 369 val_369 +2008-04-09 11 392 val_392 +2008-04-09 11 272 val_272 +2008-04-09 11 331 val_331 +2008-04-09 11 401 val_401 +2008-04-09 11 242 val_242 +2008-04-09 11 452 val_452 +2008-04-09 11 177 val_177 +2008-04-09 11 226 val_226 +2008-04-09 11 5 val_5 +2008-04-09 11 497 val_497 +2008-04-09 11 402 val_402 +2008-04-09 11 396 val_396 +2008-04-09 11 317 val_317 +2008-04-09 11 395 val_395 +2008-04-09 11 58 val_58 +2008-04-09 11 35 val_35 +2008-04-09 11 336 val_336 +2008-04-09 11 95 val_95 +2008-04-09 11 11 val_11 +2008-04-09 11 168 val_168 +2008-04-09 11 34 val_34 +2008-04-09 11 229 val_229 +2008-04-09 11 233 val_233 +2008-04-09 11 143 val_143 +2008-04-09 11 472 val_472 +2008-04-09 11 322 val_322 +2008-04-09 11 498 val_498 +2008-04-09 11 160 val_160 +2008-04-09 11 195 val_195 +2008-04-09 11 42 val_42 +2008-04-09 11 321 val_321 +2008-04-09 11 430 val_430 +2008-04-09 11 119 val_119 +2008-04-09 11 489 val_489 +2008-04-09 11 458 val_458 +2008-04-09 11 78 val_78 +2008-04-09 11 76 val_76 +2008-04-09 11 41 val_41 +2008-04-09 11 223 val_223 +2008-04-09 11 492 val_492 +2008-04-09 11 149 val_149 +2008-04-09 11 449 val_449 +2008-04-09 11 218 val_218 +2008-04-09 11 228 val_228 +2008-04-09 11 138 val_138 +2008-04-09 11 453 val_453 +2008-04-09 11 30 val_30 +2008-04-09 11 209 val_209 +2008-04-09 11 64 val_64 +2008-04-09 11 468 val_468 +2008-04-09 11 76 val_76 +2008-04-09 11 74 val_74 +2008-04-09 11 342 val_342 +2008-04-09 11 69 val_69 +2008-04-09 11 230 val_230 +2008-04-09 11 33 val_33 +2008-04-09 11 368 val_368 +2008-04-09 11 103 val_103 +2008-04-09 11 296 val_296 +2008-04-09 11 113 val_113 +2008-04-09 11 216 val_216 +2008-04-09 11 367 val_367 +2008-04-09 11 344 val_344 +2008-04-09 11 167 val_167 +2008-04-09 11 274 val_274 +2008-04-09 11 219 val_219 +2008-04-09 11 239 val_239 +2008-04-09 11 485 val_485 +2008-04-09 11 116 val_116 +2008-04-09 11 223 val_223 +2008-04-09 11 256 val_256 +2008-04-09 11 263 val_263 +2008-04-09 11 70 val_70 +2008-04-09 11 487 val_487 +2008-04-09 11 480 val_480 +2008-04-09 11 401 val_401 +2008-04-09 11 288 val_288 +2008-04-09 11 191 val_191 +2008-04-09 11 5 val_5 +2008-04-09 11 244 val_244 +2008-04-09 11 438 val_438 +2008-04-09 11 128 val_128 +2008-04-09 11 467 val_467 +2008-04-09 11 432 val_432 +2008-04-09 11 202 val_202 +2008-04-09 11 316 val_316 +2008-04-09 11 229 val_229 +2008-04-09 11 469 val_469 +2008-04-09 11 463 val_463 +2008-04-09 11 280 val_280 +2008-04-09 11 2 val_2 +2008-04-09 11 35 val_35 +2008-04-09 11 283 val_283 +2008-04-09 11 331 val_331 +2008-04-09 11 235 val_235 +2008-04-09 11 80 val_80 +2008-04-09 11 44 val_44 +2008-04-09 11 193 val_193 +2008-04-09 11 321 val_321 +2008-04-09 11 335 val_335 +2008-04-09 11 104 val_104 +2008-04-09 11 466 val_466 +2008-04-09 11 366 val_366 +2008-04-09 11 175 val_175 +2008-04-09 11 403 val_403 +2008-04-09 11 483 val_483 +2008-04-09 11 53 val_53 +2008-04-09 11 105 val_105 +2008-04-09 11 257 val_257 +2008-04-09 11 406 val_406 +2008-04-09 11 409 val_409 +2008-04-09 11 190 val_190 +2008-04-09 11 406 val_406 +2008-04-09 11 401 val_401 +2008-04-09 11 114 val_114 +2008-04-09 11 258 val_258 +2008-04-09 11 90 val_90 +2008-04-09 11 203 val_203 +2008-04-09 11 262 val_262 +2008-04-09 11 348 val_348 +2008-04-09 11 424 val_424 +2008-04-09 11 12 val_12 +2008-04-09 11 396 val_396 +2008-04-09 11 201 val_201 +2008-04-09 11 217 val_217 +2008-04-09 11 164 val_164 +2008-04-09 11 431 val_431 +2008-04-09 11 454 val_454 +2008-04-09 11 478 val_478 +2008-04-09 11 298 val_298 +2008-04-09 11 125 val_125 +2008-04-09 11 431 val_431 +2008-04-09 11 164 val_164 +2008-04-09 11 424 val_424 +2008-04-09 11 187 val_187 +2008-04-09 11 382 val_382 +2008-04-09 11 5 val_5 +2008-04-09 11 70 val_70 +2008-04-09 11 397 val_397 +2008-04-09 11 480 val_480 +2008-04-09 11 291 val_291 +2008-04-09 11 24 val_24 +2008-04-09 11 351 val_351 +2008-04-09 11 255 val_255 +2008-04-09 11 104 val_104 +2008-04-09 11 70 val_70 +2008-04-09 11 163 val_163 +2008-04-09 11 438 val_438 +2008-04-09 11 119 val_119 +2008-04-09 11 414 val_414 +2008-04-09 11 200 val_200 +2008-04-09 11 491 val_491 +2008-04-09 11 237 val_237 +2008-04-09 11 439 val_439 +2008-04-09 11 360 val_360 +2008-04-09 11 248 val_248 +2008-04-09 11 479 val_479 +2008-04-09 11 305 val_305 +2008-04-09 11 417 val_417 +2008-04-09 11 199 val_199 +2008-04-09 11 444 val_444 +2008-04-09 11 120 val_120 +2008-04-09 11 429 val_429 +2008-04-09 11 169 val_169 +2008-04-09 11 443 val_443 +2008-04-09 11 323 val_323 +2008-04-09 11 325 val_325 +2008-04-09 11 277 val_277 +2008-04-09 11 230 val_230 +2008-04-09 11 478 val_478 +2008-04-09 11 178 val_178 +2008-04-09 11 468 val_468 +2008-04-09 11 310 val_310 +2008-04-09 11 317 val_317 +2008-04-09 11 333 val_333 +2008-04-09 11 493 val_493 +2008-04-09 11 460 val_460 +2008-04-09 11 207 val_207 +2008-04-09 11 249 val_249 +2008-04-09 11 265 val_265 +2008-04-09 11 480 val_480 +2008-04-09 11 83 val_83 +2008-04-09 11 136 val_136 +2008-04-09 11 353 val_353 +2008-04-09 11 172 val_172 +2008-04-09 11 214 val_214 +2008-04-09 11 462 val_462 +2008-04-09 11 233 val_233 +2008-04-09 11 406 val_406 +2008-04-09 11 133 val_133 +2008-04-09 11 175 val_175 +2008-04-09 11 189 val_189 +2008-04-09 11 454 val_454 +2008-04-09 11 375 val_375 +2008-04-09 11 401 val_401 +2008-04-09 11 421 val_421 +2008-04-09 11 407 val_407 +2008-04-09 11 384 val_384 +2008-04-09 11 256 val_256 +2008-04-09 11 26 val_26 +2008-04-09 11 134 val_134 +2008-04-09 11 67 val_67 +2008-04-09 11 384 val_384 +2008-04-09 11 379 val_379 +2008-04-09 11 18 val_18 +2008-04-09 11 462 val_462 +2008-04-09 11 492 val_492 +2008-04-09 11 100 val_100 +2008-04-09 11 298 val_298 +2008-04-09 11 9 val_9 +2008-04-09 11 341 val_341 +2008-04-09 11 498 val_498 +2008-04-09 11 146 val_146 +2008-04-09 11 458 val_458 +2008-04-09 11 362 val_362 +2008-04-09 11 186 val_186 +2008-04-09 11 285 val_285 +2008-04-09 11 348 val_348 +2008-04-09 11 167 val_167 +2008-04-09 11 18 val_18 +2008-04-09 11 273 val_273 +2008-04-09 11 183 val_183 +2008-04-09 11 281 val_281 +2008-04-09 11 344 val_344 +2008-04-09 11 97 val_97 +2008-04-09 11 469 val_469 +2008-04-09 11 315 val_315 +2008-04-09 11 84 val_84 +2008-04-09 11 28 val_28 +2008-04-09 11 37 val_37 +2008-04-09 11 448 val_448 +2008-04-09 11 152 val_152 +2008-04-09 11 348 val_348 +2008-04-09 11 307 val_307 +2008-04-09 11 194 val_194 +2008-04-09 11 414 val_414 +2008-04-09 11 477 val_477 +2008-04-09 11 222 val_222 +2008-04-09 11 126 val_126 +2008-04-09 11 90 val_90 +2008-04-09 11 169 val_169 +2008-04-09 11 403 val_403 +2008-04-09 11 400 val_400 +2008-04-09 11 200 val_200 +2008-04-09 11 97 val_97 +2008-04-09 12 238 val_238 +2008-04-09 12 86 val_86 +2008-04-09 12 311 val_311 +2008-04-09 12 27 val_27 +2008-04-09 12 165 val_165 +2008-04-09 12 409 val_409 +2008-04-09 12 255 val_255 +2008-04-09 12 278 val_278 +2008-04-09 12 98 val_98 +2008-04-09 12 484 val_484 +2008-04-09 12 265 val_265 +2008-04-09 12 193 val_193 +2008-04-09 12 401 val_401 +2008-04-09 12 150 val_150 +2008-04-09 12 273 val_273 +2008-04-09 12 224 val_224 +2008-04-09 12 369 val_369 +2008-04-09 12 66 val_66 +2008-04-09 12 128 val_128 +2008-04-09 12 213 val_213 +2008-04-09 12 146 val_146 +2008-04-09 12 406 val_406 +2008-04-09 12 429 val_429 +2008-04-09 12 374 val_374 +2008-04-09 12 152 val_152 +2008-04-09 12 469 val_469 +2008-04-09 12 145 val_145 +2008-04-09 12 495 val_495 +2008-04-09 12 37 val_37 +2008-04-09 12 327 val_327 +2008-04-09 12 281 val_281 +2008-04-09 12 277 val_277 +2008-04-09 12 209 val_209 +2008-04-09 12 15 val_15 +2008-04-09 12 82 val_82 +2008-04-09 12 403 val_403 +2008-04-09 12 166 val_166 +2008-04-09 12 417 val_417 +2008-04-09 12 430 val_430 +2008-04-09 12 252 val_252 +2008-04-09 12 292 val_292 +2008-04-09 12 219 val_219 +2008-04-09 12 287 val_287 +2008-04-09 12 153 val_153 +2008-04-09 12 193 val_193 +2008-04-09 12 338 val_338 +2008-04-09 12 446 val_446 +2008-04-09 12 459 val_459 +2008-04-09 12 394 val_394 +2008-04-09 12 237 val_237 +2008-04-09 12 482 val_482 +2008-04-09 12 174 val_174 +2008-04-09 12 413 val_413 +2008-04-09 12 494 val_494 +2008-04-09 12 207 val_207 +2008-04-09 12 199 val_199 +2008-04-09 12 466 val_466 +2008-04-09 12 208 val_208 +2008-04-09 12 174 val_174 +2008-04-09 12 399 val_399 +2008-04-09 12 396 val_396 +2008-04-09 12 247 val_247 +2008-04-09 12 417 val_417 +2008-04-09 12 489 val_489 +2008-04-09 12 162 val_162 +2008-04-09 12 377 val_377 +2008-04-09 12 397 val_397 +2008-04-09 12 309 val_309 +2008-04-09 12 365 val_365 +2008-04-09 12 266 val_266 +2008-04-09 12 439 val_439 +2008-04-09 12 342 val_342 +2008-04-09 12 367 val_367 +2008-04-09 12 325 val_325 +2008-04-09 12 167 val_167 +2008-04-09 12 195 val_195 +2008-04-09 12 475 val_475 +2008-04-09 12 17 val_17 +2008-04-09 12 113 val_113 +2008-04-09 12 155 val_155 +2008-04-09 12 203 val_203 +2008-04-09 12 339 val_339 +2008-04-09 12 0 val_0 +2008-04-09 12 455 val_455 +2008-04-09 12 128 val_128 +2008-04-09 12 311 val_311 +2008-04-09 12 316 val_316 +2008-04-09 12 57 val_57 +2008-04-09 12 302 val_302 +2008-04-09 12 205 val_205 +2008-04-09 12 149 val_149 +2008-04-09 12 438 val_438 +2008-04-09 12 345 val_345 +2008-04-09 12 129 val_129 +2008-04-09 12 170 val_170 +2008-04-09 12 20 val_20 +2008-04-09 12 489 val_489 +2008-04-09 12 157 val_157 +2008-04-09 12 378 val_378 +2008-04-09 12 221 val_221 +2008-04-09 12 92 val_92 +2008-04-09 12 111 val_111 +2008-04-09 12 47 val_47 +2008-04-09 12 72 val_72 +2008-04-09 12 4 val_4 +2008-04-09 12 280 val_280 +2008-04-09 12 35 val_35 +2008-04-09 12 427 val_427 +2008-04-09 12 277 val_277 +2008-04-09 12 208 val_208 +2008-04-09 12 356 val_356 +2008-04-09 12 399 val_399 +2008-04-09 12 169 val_169 +2008-04-09 12 382 val_382 +2008-04-09 12 498 val_498 +2008-04-09 12 125 val_125 +2008-04-09 12 386 val_386 +2008-04-09 12 437 val_437 +2008-04-09 12 469 val_469 +2008-04-09 12 192 val_192 +2008-04-09 12 286 val_286 +2008-04-09 12 187 val_187 +2008-04-09 12 176 val_176 +2008-04-09 12 54 val_54 +2008-04-09 12 459 val_459 +2008-04-09 12 51 val_51 +2008-04-09 12 138 val_138 +2008-04-09 12 103 val_103 +2008-04-09 12 239 val_239 +2008-04-09 12 213 val_213 +2008-04-09 12 216 val_216 +2008-04-09 12 430 val_430 +2008-04-09 12 278 val_278 +2008-04-09 12 176 val_176 +2008-04-09 12 289 val_289 +2008-04-09 12 221 val_221 +2008-04-09 12 65 val_65 +2008-04-09 12 318 val_318 +2008-04-09 12 332 val_332 +2008-04-09 12 311 val_311 +2008-04-09 12 275 val_275 +2008-04-09 12 137 val_137 +2008-04-09 12 241 val_241 +2008-04-09 12 83 val_83 +2008-04-09 12 333 val_333 +2008-04-09 12 180 val_180 +2008-04-09 12 284 val_284 +2008-04-09 12 12 val_12 +2008-04-09 12 230 val_230 +2008-04-09 12 181 val_181 +2008-04-09 12 67 val_67 +2008-04-09 12 260 val_260 +2008-04-09 12 404 val_404 +2008-04-09 12 384 val_384 +2008-04-09 12 489 val_489 +2008-04-09 12 353 val_353 +2008-04-09 12 373 val_373 +2008-04-09 12 272 val_272 +2008-04-09 12 138 val_138 +2008-04-09 12 217 val_217 +2008-04-09 12 84 val_84 +2008-04-09 12 348 val_348 +2008-04-09 12 466 val_466 +2008-04-09 12 58 val_58 +2008-04-09 12 8 val_8 +2008-04-09 12 411 val_411 +2008-04-09 12 230 val_230 +2008-04-09 12 208 val_208 +2008-04-09 12 348 val_348 +2008-04-09 12 24 val_24 +2008-04-09 12 463 val_463 +2008-04-09 12 431 val_431 +2008-04-09 12 179 val_179 +2008-04-09 12 172 val_172 +2008-04-09 12 42 val_42 +2008-04-09 12 129 val_129 +2008-04-09 12 158 val_158 +2008-04-09 12 119 val_119 +2008-04-09 12 496 val_496 +2008-04-09 12 0 val_0 +2008-04-09 12 322 val_322 +2008-04-09 12 197 val_197 +2008-04-09 12 468 val_468 +2008-04-09 12 393 val_393 +2008-04-09 12 454 val_454 +2008-04-09 12 100 val_100 +2008-04-09 12 298 val_298 +2008-04-09 12 199 val_199 +2008-04-09 12 191 val_191 +2008-04-09 12 418 val_418 +2008-04-09 12 96 val_96 +2008-04-09 12 26 val_26 +2008-04-09 12 165 val_165 +2008-04-09 12 327 val_327 +2008-04-09 12 230 val_230 +2008-04-09 12 205 val_205 +2008-04-09 12 120 val_120 +2008-04-09 12 131 val_131 +2008-04-09 12 51 val_51 +2008-04-09 12 404 val_404 +2008-04-09 12 43 val_43 +2008-04-09 12 436 val_436 +2008-04-09 12 156 val_156 +2008-04-09 12 469 val_469 +2008-04-09 12 468 val_468 +2008-04-09 12 308 val_308 +2008-04-09 12 95 val_95 +2008-04-09 12 196 val_196 +2008-04-09 12 288 val_288 +2008-04-09 12 481 val_481 +2008-04-09 12 457 val_457 +2008-04-09 12 98 val_98 +2008-04-09 12 282 val_282 +2008-04-09 12 197 val_197 +2008-04-09 12 187 val_187 +2008-04-09 12 318 val_318 +2008-04-09 12 318 val_318 +2008-04-09 12 409 val_409 +2008-04-09 12 470 val_470 +2008-04-09 12 137 val_137 +2008-04-09 12 369 val_369 +2008-04-09 12 316 val_316 +2008-04-09 12 169 val_169 +2008-04-09 12 413 val_413 +2008-04-09 12 85 val_85 +2008-04-09 12 77 val_77 +2008-04-09 12 0 val_0 +2008-04-09 12 490 val_490 +2008-04-09 12 87 val_87 +2008-04-09 12 364 val_364 +2008-04-09 12 179 val_179 +2008-04-09 12 118 val_118 +2008-04-09 12 134 val_134 +2008-04-09 12 395 val_395 +2008-04-09 12 282 val_282 +2008-04-09 12 138 val_138 +2008-04-09 12 238 val_238 +2008-04-09 12 419 val_419 +2008-04-09 12 15 val_15 +2008-04-09 12 118 val_118 +2008-04-09 12 72 val_72 +2008-04-09 12 90 val_90 +2008-04-09 12 307 val_307 +2008-04-09 12 19 val_19 +2008-04-09 12 435 val_435 +2008-04-09 12 10 val_10 +2008-04-09 12 277 val_277 +2008-04-09 12 273 val_273 +2008-04-09 12 306 val_306 +2008-04-09 12 224 val_224 +2008-04-09 12 309 val_309 +2008-04-09 12 389 val_389 +2008-04-09 12 327 val_327 +2008-04-09 12 242 val_242 +2008-04-09 12 369 val_369 +2008-04-09 12 392 val_392 +2008-04-09 12 272 val_272 +2008-04-09 12 331 val_331 +2008-04-09 12 401 val_401 +2008-04-09 12 242 val_242 +2008-04-09 12 452 val_452 +2008-04-09 12 177 val_177 +2008-04-09 12 226 val_226 +2008-04-09 12 5 val_5 +2008-04-09 12 497 val_497 +2008-04-09 12 402 val_402 +2008-04-09 12 396 val_396 +2008-04-09 12 317 val_317 +2008-04-09 12 395 val_395 +2008-04-09 12 58 val_58 +2008-04-09 12 35 val_35 +2008-04-09 12 336 val_336 +2008-04-09 12 95 val_95 +2008-04-09 12 11 val_11 +2008-04-09 12 168 val_168 +2008-04-09 12 34 val_34 +2008-04-09 12 229 val_229 +2008-04-09 12 233 val_233 +2008-04-09 12 143 val_143 +2008-04-09 12 472 val_472 +2008-04-09 12 322 val_322 +2008-04-09 12 498 val_498 +2008-04-09 12 160 val_160 +2008-04-09 12 195 val_195 +2008-04-09 12 42 val_42 +2008-04-09 12 321 val_321 +2008-04-09 12 430 val_430 +2008-04-09 12 119 val_119 +2008-04-09 12 489 val_489 +2008-04-09 12 458 val_458 +2008-04-09 12 78 val_78 +2008-04-09 12 76 val_76 +2008-04-09 12 41 val_41 +2008-04-09 12 223 val_223 +2008-04-09 12 492 val_492 +2008-04-09 12 149 val_149 +2008-04-09 12 449 val_449 +2008-04-09 12 218 val_218 +2008-04-09 12 228 val_228 +2008-04-09 12 138 val_138 +2008-04-09 12 453 val_453 +2008-04-09 12 30 val_30 +2008-04-09 12 209 val_209 +2008-04-09 12 64 val_64 +2008-04-09 12 468 val_468 +2008-04-09 12 76 val_76 +2008-04-09 12 74 val_74 +2008-04-09 12 342 val_342 +2008-04-09 12 69 val_69 +2008-04-09 12 230 val_230 +2008-04-09 12 33 val_33 +2008-04-09 12 368 val_368 +2008-04-09 12 103 val_103 +2008-04-09 12 296 val_296 +2008-04-09 12 113 val_113 +2008-04-09 12 216 val_216 +2008-04-09 12 367 val_367 +2008-04-09 12 344 val_344 +2008-04-09 12 167 val_167 +2008-04-09 12 274 val_274 +2008-04-09 12 219 val_219 +2008-04-09 12 239 val_239 +2008-04-09 12 485 val_485 +2008-04-09 12 116 val_116 +2008-04-09 12 223 val_223 +2008-04-09 12 256 val_256 +2008-04-09 12 263 val_263 +2008-04-09 12 70 val_70 +2008-04-09 12 487 val_487 +2008-04-09 12 480 val_480 +2008-04-09 12 401 val_401 +2008-04-09 12 288 val_288 +2008-04-09 12 191 val_191 +2008-04-09 12 5 val_5 +2008-04-09 12 244 val_244 +2008-04-09 12 438 val_438 +2008-04-09 12 128 val_128 +2008-04-09 12 467 val_467 +2008-04-09 12 432 val_432 +2008-04-09 12 202 val_202 +2008-04-09 12 316 val_316 +2008-04-09 12 229 val_229 +2008-04-09 12 469 val_469 +2008-04-09 12 463 val_463 +2008-04-09 12 280 val_280 +2008-04-09 12 2 val_2 +2008-04-09 12 35 val_35 +2008-04-09 12 283 val_283 +2008-04-09 12 331 val_331 +2008-04-09 12 235 val_235 +2008-04-09 12 80 val_80 +2008-04-09 12 44 val_44 +2008-04-09 12 193 val_193 +2008-04-09 12 321 val_321 +2008-04-09 12 335 val_335 +2008-04-09 12 104 val_104 +2008-04-09 12 466 val_466 +2008-04-09 12 366 val_366 +2008-04-09 12 175 val_175 +2008-04-09 12 403 val_403 +2008-04-09 12 483 val_483 +2008-04-09 12 53 val_53 +2008-04-09 12 105 val_105 +2008-04-09 12 257 val_257 +2008-04-09 12 406 val_406 +2008-04-09 12 409 val_409 +2008-04-09 12 190 val_190 +2008-04-09 12 406 val_406 +2008-04-09 12 401 val_401 +2008-04-09 12 114 val_114 +2008-04-09 12 258 val_258 +2008-04-09 12 90 val_90 +2008-04-09 12 203 val_203 +2008-04-09 12 262 val_262 +2008-04-09 12 348 val_348 +2008-04-09 12 424 val_424 +2008-04-09 12 12 val_12 +2008-04-09 12 396 val_396 +2008-04-09 12 201 val_201 +2008-04-09 12 217 val_217 +2008-04-09 12 164 val_164 +2008-04-09 12 431 val_431 +2008-04-09 12 454 val_454 +2008-04-09 12 478 val_478 +2008-04-09 12 298 val_298 +2008-04-09 12 125 val_125 +2008-04-09 12 431 val_431 +2008-04-09 12 164 val_164 +2008-04-09 12 424 val_424 +2008-04-09 12 187 val_187 +2008-04-09 12 382 val_382 +2008-04-09 12 5 val_5 +2008-04-09 12 70 val_70 +2008-04-09 12 397 val_397 +2008-04-09 12 480 val_480 +2008-04-09 12 291 val_291 +2008-04-09 12 24 val_24 +2008-04-09 12 351 val_351 +2008-04-09 12 255 val_255 +2008-04-09 12 104 val_104 +2008-04-09 12 70 val_70 +2008-04-09 12 163 val_163 +2008-04-09 12 438 val_438 +2008-04-09 12 119 val_119 +2008-04-09 12 414 val_414 +2008-04-09 12 200 val_200 +2008-04-09 12 491 val_491 +2008-04-09 12 237 val_237 +2008-04-09 12 439 val_439 +2008-04-09 12 360 val_360 +2008-04-09 12 248 val_248 +2008-04-09 12 479 val_479 +2008-04-09 12 305 val_305 +2008-04-09 12 417 val_417 +2008-04-09 12 199 val_199 +2008-04-09 12 444 val_444 +2008-04-09 12 120 val_120 +2008-04-09 12 429 val_429 +2008-04-09 12 169 val_169 +2008-04-09 12 443 val_443 +2008-04-09 12 323 val_323 +2008-04-09 12 325 val_325 +2008-04-09 12 277 val_277 +2008-04-09 12 230 val_230 +2008-04-09 12 478 val_478 +2008-04-09 12 178 val_178 +2008-04-09 12 468 val_468 +2008-04-09 12 310 val_310 +2008-04-09 12 317 val_317 +2008-04-09 12 333 val_333 +2008-04-09 12 493 val_493 +2008-04-09 12 460 val_460 +2008-04-09 12 207 val_207 +2008-04-09 12 249 val_249 +2008-04-09 12 265 val_265 +2008-04-09 12 480 val_480 +2008-04-09 12 83 val_83 +2008-04-09 12 136 val_136 +2008-04-09 12 353 val_353 +2008-04-09 12 172 val_172 +2008-04-09 12 214 val_214 +2008-04-09 12 462 val_462 +2008-04-09 12 233 val_233 +2008-04-09 12 406 val_406 +2008-04-09 12 133 val_133 +2008-04-09 12 175 val_175 +2008-04-09 12 189 val_189 +2008-04-09 12 454 val_454 +2008-04-09 12 375 val_375 +2008-04-09 12 401 val_401 +2008-04-09 12 421 val_421 +2008-04-09 12 407 val_407 +2008-04-09 12 384 val_384 +2008-04-09 12 256 val_256 +2008-04-09 12 26 val_26 +2008-04-09 12 134 val_134 +2008-04-09 12 67 val_67 +2008-04-09 12 384 val_384 +2008-04-09 12 379 val_379 +2008-04-09 12 18 val_18 +2008-04-09 12 462 val_462 +2008-04-09 12 492 val_492 +2008-04-09 12 100 val_100 +2008-04-09 12 298 val_298 +2008-04-09 12 9 val_9 +2008-04-09 12 341 val_341 +2008-04-09 12 498 val_498 +2008-04-09 12 146 val_146 +2008-04-09 12 458 val_458 +2008-04-09 12 362 val_362 +2008-04-09 12 186 val_186 +2008-04-09 12 285 val_285 +2008-04-09 12 348 val_348 +2008-04-09 12 167 val_167 +2008-04-09 12 18 val_18 +2008-04-09 12 273 val_273 +2008-04-09 12 183 val_183 +2008-04-09 12 281 val_281 +2008-04-09 12 344 val_344 +2008-04-09 12 97 val_97 +2008-04-09 12 469 val_469 +2008-04-09 12 315 val_315 +2008-04-09 12 84 val_84 +2008-04-09 12 28 val_28 +2008-04-09 12 37 val_37 +2008-04-09 12 448 val_448 +2008-04-09 12 152 val_152 +2008-04-09 12 348 val_348 +2008-04-09 12 307 val_307 +2008-04-09 12 194 val_194 +2008-04-09 12 414 val_414 +2008-04-09 12 477 val_477 +2008-04-09 12 222 val_222 +2008-04-09 12 126 val_126 +2008-04-09 12 90 val_90 +2008-04-09 12 169 val_169 +2008-04-09 12 403 val_403 +2008-04-09 12 400 val_400 +2008-04-09 12 200 val_200 +2008-04-09 12 97 val_97 diff --git a/sql/hive/src/test/resources/golden/plan_json-0-74146da55d57b22443140e7fbab3375c b/sql/hive/src/test/resources/golden/plan_json-0-74146da55d57b22443140e7fbab3375c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd1-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd1-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd1-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd1-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd1-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd1-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd1-2-ae8aea06b05358ef9c486b61c9e30a69 b/sql/hive/src/test/resources/golden/ppd1-2-ae8aea06b05358ef9c486b61c9e30a69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd1-3-1d3f71876ba45f942e93a68c0be15ef5 b/sql/hive/src/test/resources/golden/ppd1-3-1d3f71876ba45f942e93a68c0be15ef5 new file mode 100644 index 0000000000000..55b2a1b47afa2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd1-3-1d3f71876ba45f942e93a68c0be15ef5 @@ -0,0 +1,496 @@ +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd1-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd1-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd1-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd1-5-ae8aea06b05358ef9c486b61c9e30a69 b/sql/hive/src/test/resources/golden/ppd1-5-ae8aea06b05358ef9c486b61c9e30a69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd1-6-1d3f71876ba45f942e93a68c0be15ef5 b/sql/hive/src/test/resources/golden/ppd1-6-1d3f71876ba45f942e93a68c0be15ef5 new file mode 100644 index 0000000000000..55b2a1b47afa2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd1-6-1d3f71876ba45f942e93a68c0be15ef5 @@ -0,0 +1,496 @@ +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd2-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd2-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd2-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd2-1-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd2-1-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd2-1-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd2-2-4d5021216c5bc600a8c5344945f55a4 b/sql/hive/src/test/resources/golden/ppd2-2-4d5021216c5bc600a8c5344945f55a4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd2-3-fccdc7a24b626308d9ec17608f36564b b/sql/hive/src/test/resources/golden/ppd2-3-fccdc7a24b626308d9ec17608f36564b new file mode 100644 index 0000000000000..878c86cb46b8a --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd2-3-fccdc7a24b626308d9ec17608f36564b @@ -0,0 +1,136 @@ +0 3 +5 3 +12 2 +15 2 +18 2 +24 2 +26 2 +35 3 +37 2 +42 2 +51 2 +58 2 +67 2 +70 3 +72 2 +76 2 +83 2 +84 2 +90 3 +95 2 +97 2 +98 2 +100 2 +103 2 +104 2 +113 2 +118 2 +119 3 +120 2 +125 2 +128 3 +129 2 +134 2 +137 2 +138 4 +146 2 +149 2 +152 2 +164 2 +165 2 +167 3 +169 4 +172 2 +174 2 +175 2 +176 2 +179 2 +187 3 +191 2 +193 3 +195 2 +197 2 +199 3 +200 2 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +216 2 +217 2 +219 2 +221 2 +223 2 +224 2 +229 2 +230 5 +233 2 +237 2 +238 2 +239 2 +242 2 +255 2 +256 2 +265 2 +272 2 +273 3 +277 4 +278 2 +280 2 +281 2 +282 2 +288 2 +298 3 +307 2 +309 2 +311 3 +316 3 +317 2 +318 3 +321 2 +322 2 +325 2 +327 3 +331 2 +333 2 +342 2 +344 2 +348 5 +353 2 +367 2 +369 3 +382 2 +384 3 +395 2 +396 3 +397 2 +399 2 +401 5 +403 3 +404 2 +406 4 +409 3 +413 2 +414 2 +417 3 +424 2 +429 2 +430 3 +431 3 +438 3 +439 2 +454 3 +458 2 +459 2 +462 2 +463 2 +466 3 +468 4 +469 5 +478 2 +480 3 +489 4 +492 2 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd2-4-4e457825319166f3bd2ad07d8f7c2f69 b/sql/hive/src/test/resources/golden/ppd2-4-4e457825319166f3bd2ad07d8f7c2f69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd2-5-a2d5e5ec2504041ea1a62856c7086451 b/sql/hive/src/test/resources/golden/ppd2-5-a2d5e5ec2504041ea1a62856c7086451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd2-6-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd2-6-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd2-6-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd2-7-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd2-7-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd2-7-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd2-8-4d5021216c5bc600a8c5344945f55a4 b/sql/hive/src/test/resources/golden/ppd2-8-4d5021216c5bc600a8c5344945f55a4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd2-9-fccdc7a24b626308d9ec17608f36564b b/sql/hive/src/test/resources/golden/ppd2-9-fccdc7a24b626308d9ec17608f36564b new file mode 100644 index 0000000000000..878c86cb46b8a --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd2-9-fccdc7a24b626308d9ec17608f36564b @@ -0,0 +1,136 @@ +0 3 +5 3 +12 2 +15 2 +18 2 +24 2 +26 2 +35 3 +37 2 +42 2 +51 2 +58 2 +67 2 +70 3 +72 2 +76 2 +83 2 +84 2 +90 3 +95 2 +97 2 +98 2 +100 2 +103 2 +104 2 +113 2 +118 2 +119 3 +120 2 +125 2 +128 3 +129 2 +134 2 +137 2 +138 4 +146 2 +149 2 +152 2 +164 2 +165 2 +167 3 +169 4 +172 2 +174 2 +175 2 +176 2 +179 2 +187 3 +191 2 +193 3 +195 2 +197 2 +199 3 +200 2 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +216 2 +217 2 +219 2 +221 2 +223 2 +224 2 +229 2 +230 5 +233 2 +237 2 +238 2 +239 2 +242 2 +255 2 +256 2 +265 2 +272 2 +273 3 +277 4 +278 2 +280 2 +281 2 +282 2 +288 2 +298 3 +307 2 +309 2 +311 3 +316 3 +317 2 +318 3 +321 2 +322 2 +325 2 +327 3 +331 2 +333 2 +342 2 +344 2 +348 5 +353 2 +367 2 +369 3 +382 2 +384 3 +395 2 +396 3 +397 2 +399 2 +401 5 +403 3 +404 2 +406 4 +409 3 +413 2 +414 2 +417 3 +424 2 +429 2 +430 3 +431 3 +438 3 +439 2 +454 3 +458 2 +459 2 +462 2 +463 2 +466 3 +468 4 +469 5 +478 2 +480 3 +489 4 +492 2 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_clusterby-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_clusterby-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_clusterby-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_clusterby-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-10-62979aa9e6b4e6ffb44ec452aabbef65 b/sql/hive/src/test/resources/golden/ppd_clusterby-10-62979aa9e6b4e6ffb44ec452aabbef65 new file mode 100644 index 0000000000000..e2ef71e141c46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_clusterby-10-62979aa9e6b4e6ffb44ec452aabbef65 @@ -0,0 +1 @@ +20 val_20 20 diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-2-16681f9c2bdd44278817d72c138b6ee1 b/sql/hive/src/test/resources/golden/ppd_clusterby-2-16681f9c2bdd44278817d72c138b6ee1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-3-707a2295731e0d631a6c5f71c745c8d5 b/sql/hive/src/test/resources/golden/ppd_clusterby-3-707a2295731e0d631a6c5f71c745c8d5 new file mode 100644 index 0000000000000..ae8b7551d9630 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_clusterby-3-707a2295731e0d631a6c5f71c745c8d5 @@ -0,0 +1 @@ +10 val_10 diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-4-a2d5e5ec2504041ea1a62856c7086451 b/sql/hive/src/test/resources/golden/ppd_clusterby-4-a2d5e5ec2504041ea1a62856c7086451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-5-62979aa9e6b4e6ffb44ec452aabbef65 b/sql/hive/src/test/resources/golden/ppd_clusterby-5-62979aa9e6b4e6ffb44ec452aabbef65 new file mode 100644 index 0000000000000..e2ef71e141c46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_clusterby-5-62979aa9e6b4e6ffb44ec452aabbef65 @@ -0,0 +1 @@ +20 val_20 20 diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-6-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_clusterby-6-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_clusterby-6-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-7-16681f9c2bdd44278817d72c138b6ee1 b/sql/hive/src/test/resources/golden/ppd_clusterby-7-16681f9c2bdd44278817d72c138b6ee1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-8-707a2295731e0d631a6c5f71c745c8d5 b/sql/hive/src/test/resources/golden/ppd_clusterby-8-707a2295731e0d631a6c5f71c745c8d5 new file mode 100644 index 0000000000000..ae8b7551d9630 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_clusterby-8-707a2295731e0d631a6c5f71c745c8d5 @@ -0,0 +1 @@ +10 val_10 diff --git a/sql/hive/src/test/resources/golden/ppd_clusterby-9-a2d5e5ec2504041ea1a62856c7086451 b/sql/hive/src/test/resources/golden/ppd_clusterby-9-a2d5e5ec2504041ea1a62856c7086451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_constant_expr-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_constant_expr-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_constant_expr-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_constant_expr-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-2-2ab005b2ee21deedbe7d10904a034468 b/sql/hive/src/test/resources/golden/ppd_constant_expr-2-2ab005b2ee21deedbe7d10904a034468 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-3-5b20725caf905c6674759fee7873d627 b/sql/hive/src/test/resources/golden/ppd_constant_expr-3-5b20725caf905c6674759fee7873d627 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-4-aded77ef8dced4717d919a949d109b0 b/sql/hive/src/test/resources/golden/ppd_constant_expr-4-aded77ef8dced4717d919a949d109b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-5-7da8c74586c99d96254f6f031bcaeb1c b/sql/hive/src/test/resources/golden/ppd_constant_expr-5-7da8c74586c99d96254f6f031bcaeb1c new file mode 100644 index 0000000000000..c87107a2f1168 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_constant_expr-5-7da8c74586c99d96254f6f031bcaeb1c @@ -0,0 +1,25 @@ +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-6-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_constant_expr-6-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_constant_expr-6-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-7-5b20725caf905c6674759fee7873d627 b/sql/hive/src/test/resources/golden/ppd_constant_expr-7-5b20725caf905c6674759fee7873d627 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-8-aded77ef8dced4717d919a949d109b0 b/sql/hive/src/test/resources/golden/ppd_constant_expr-8-aded77ef8dced4717d919a949d109b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_constant_expr-9-7da8c74586c99d96254f6f031bcaeb1c b/sql/hive/src/test/resources/golden/ppd_constant_expr-9-7da8c74586c99d96254f6f031bcaeb1c new file mode 100644 index 0000000000000..c87107a2f1168 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_constant_expr-9-7da8c74586c99d96254f6f031bcaeb1c @@ -0,0 +1,25 @@ +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL +NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_constant_where-0-345fa30edd72d631fee21c3beeeef3d9 b/sql/hive/src/test/resources/golden/ppd_constant_where-0-345fa30edd72d631fee21c3beeeef3d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_constant_where-1-84c951641740895ca1c8ddc098805da5 b/sql/hive/src/test/resources/golden/ppd_constant_where-1-84c951641740895ca1c8ddc098805da5 new file mode 100644 index 0000000000000..e37d32abba426 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_constant_where-1-84c951641740895ca1c8ddc098805da5 @@ -0,0 +1 @@ +1000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_gby-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_gby-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby-2-fea67192aba8704a64a85da47f7f321e b/sql/hive/src/test/resources/golden/ppd_gby-2-fea67192aba8704a64a85da47f7f321e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_gby-3-97b8d0091058060f5f17cf5e81cce73d b/sql/hive/src/test/resources/golden/ppd_gby-3-97b8d0091058060f5f17cf5e81cce73d new file mode 100644 index 0000000000000..e1659e6072577 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby-3-97b8d0091058060f5f17cf5e81cce73d @@ -0,0 +1,129 @@ +val_201 +val_202 +val_203 +val_205 +val_207 +val_208 +val_209 +val_213 +val_214 +val_216 +val_217 +val_218 +val_219 +val_221 +val_222 +val_223 +val_224 +val_226 +val_228 +val_229 +val_230 +val_233 +val_235 +val_237 +val_238 +val_239 +val_24 +val_241 +val_242 +val_244 +val_247 +val_248 +val_249 +val_252 +val_255 +val_256 +val_257 +val_258 +val_26 +val_260 +val_262 +val_263 +val_265 +val_266 +val_27 +val_272 +val_273 +val_274 +val_275 +val_277 +val_278 +val_28 +val_280 +val_281 +val_282 +val_283 +val_284 +val_285 +val_286 +val_287 +val_288 +val_289 +val_291 +val_292 +val_296 +val_298 +val_30 +val_302 +val_305 +val_306 +val_307 +val_308 +val_309 +val_310 +val_311 +val_315 +val_316 +val_317 +val_318 +val_321 +val_322 +val_323 +val_325 +val_327 +val_33 +val_331 +val_332 +val_333 +val_335 +val_336 +val_338 +val_339 +val_34 +val_341 +val_342 +val_344 +val_345 +val_348 +val_35 +val_351 +val_353 +val_356 +val_360 +val_362 +val_364 +val_365 +val_366 +val_367 +val_368 +val_369 +val_37 +val_373 +val_374 +val_375 +val_377 +val_378 +val_379 +val_382 +val_384 +val_386 +val_389 +val_392 +val_393 +val_394 +val_395 +val_396 +val_397 +val_399 +val_4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_gby-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby-5-fea67192aba8704a64a85da47f7f321e b/sql/hive/src/test/resources/golden/ppd_gby-5-fea67192aba8704a64a85da47f7f321e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_gby-6-97b8d0091058060f5f17cf5e81cce73d b/sql/hive/src/test/resources/golden/ppd_gby-6-97b8d0091058060f5f17cf5e81cce73d new file mode 100644 index 0000000000000..e1659e6072577 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby-6-97b8d0091058060f5f17cf5e81cce73d @@ -0,0 +1,129 @@ +val_201 +val_202 +val_203 +val_205 +val_207 +val_208 +val_209 +val_213 +val_214 +val_216 +val_217 +val_218 +val_219 +val_221 +val_222 +val_223 +val_224 +val_226 +val_228 +val_229 +val_230 +val_233 +val_235 +val_237 +val_238 +val_239 +val_24 +val_241 +val_242 +val_244 +val_247 +val_248 +val_249 +val_252 +val_255 +val_256 +val_257 +val_258 +val_26 +val_260 +val_262 +val_263 +val_265 +val_266 +val_27 +val_272 +val_273 +val_274 +val_275 +val_277 +val_278 +val_28 +val_280 +val_281 +val_282 +val_283 +val_284 +val_285 +val_286 +val_287 +val_288 +val_289 +val_291 +val_292 +val_296 +val_298 +val_30 +val_302 +val_305 +val_306 +val_307 +val_308 +val_309 +val_310 +val_311 +val_315 +val_316 +val_317 +val_318 +val_321 +val_322 +val_323 +val_325 +val_327 +val_33 +val_331 +val_332 +val_333 +val_335 +val_336 +val_338 +val_339 +val_34 +val_341 +val_342 +val_344 +val_345 +val_348 +val_35 +val_351 +val_353 +val_356 +val_360 +val_362 +val_364 +val_365 +val_366 +val_367 +val_368 +val_369 +val_37 +val_373 +val_374 +val_375 +val_377 +val_378 +val_379 +val_382 +val_384 +val_386 +val_389 +val_392 +val_393 +val_394 +val_395 +val_396 +val_397 +val_399 +val_4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby2-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_gby2-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby2-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby2-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_gby2-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby2-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby2-2-25541db999d8c1d56ba36b63949b6073 b/sql/hive/src/test/resources/golden/ppd_gby2-2-25541db999d8c1d56ba36b63949b6073 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_gby2-3-321628d4c52f6992f2680a3a162f19f b/sql/hive/src/test/resources/golden/ppd_gby2-3-321628d4c52f6992f2680a3a162f19f new file mode 100644 index 0000000000000..7e66866e2dd60 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby2-3-321628d4c52f6992f2680a3a162f19f @@ -0,0 +1,5 @@ +val_4 1 +val_399 2 +val_396 3 +val_277 4 +val_348 5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby2-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_gby2-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby2-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby2-5-25541db999d8c1d56ba36b63949b6073 b/sql/hive/src/test/resources/golden/ppd_gby2-5-25541db999d8c1d56ba36b63949b6073 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_gby2-6-321628d4c52f6992f2680a3a162f19f b/sql/hive/src/test/resources/golden/ppd_gby2-6-321628d4c52f6992f2680a3a162f19f new file mode 100644 index 0000000000000..7e66866e2dd60 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby2-6-321628d4c52f6992f2680a3a162f19f @@ -0,0 +1,5 @@ +val_4 1 +val_399 2 +val_396 3 +val_277 4 +val_348 5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby_join-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_gby_join-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby_join-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby_join-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_gby_join-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby_join-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby_join-2-45e102aabf0e90ac455e2bab3988d8c0 b/sql/hive/src/test/resources/golden/ppd_gby_join-2-45e102aabf0e90ac455e2bab3988d8c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_gby_join-3-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_gby_join-3-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_gby_join-3-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_gby_join-4-45e102aabf0e90ac455e2bab3988d8c0 b/sql/hive/src/test/resources/golden/ppd_gby_join-4-45e102aabf0e90ac455e2bab3988d8c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_join-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_join-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join-2-4c4dcd0c288653e39cfe077c19c68570 b/sql/hive/src/test/resources/golden/ppd_join-2-4c4dcd0c288653e39cfe077c19c68570 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join-3-aab5d092ca17ed23ee71d3a6ef653998 b/sql/hive/src/test/resources/golden/ppd_join-3-aab5d092ca17ed23ee71d3a6ef653998 new file mode 100644 index 0000000000000..fbce9efa766d7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join-3-aab5d092ca17ed23ee71d3a6ef653998 @@ -0,0 +1,712 @@ +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +374 val_374 +152 val_152 +152 val_152 +145 val_145 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +82 val_82 +166 val_166 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +394 val_394 +237 val_237 +237 val_237 +174 val_174 +174 val_174 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +125 val_125 +125 val_125 +386 val_386 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +54 val_54 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +260 val_260 +384 val_384 +384 val_384 +384 val_384 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +58 val_58 +58 val_58 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +393 val_393 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +96 val_96 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +43 val_43 +156 val_156 +308 val_308 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +85 val_85 +77 val_77 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +242 val_242 +242 val_242 +177 val_177 +226 val_226 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +322 val_322 +322 val_322 +160 val_160 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +119 val_119 +119 val_119 +119 val_119 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +149 val_149 +149 val_149 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +30 val_30 +209 val_209 +209 val_209 +64 val_64 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +244 val_244 +128 val_128 +128 val_128 +128 val_128 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +366 val_366 +175 val_175 +175 val_175 +53 val_53 +105 val_105 +257 val_257 +190 val_190 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +164 val_164 +164 val_164 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +291 val_291 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +119 val_119 +119 val_119 +119 val_119 +200 val_200 +200 val_200 +237 val_237 +237 val_237 +360 val_360 +248 val_248 +305 val_305 +199 val_199 +199 val_199 +199 val_199 +120 val_120 +120 val_120 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +178 val_178 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +233 val_233 +233 val_233 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +375 val_375 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +341 val_341 +146 val_146 +146 val_146 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +315 val_315 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +200 val_200 +200 val_200 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_join-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join-5-4c4dcd0c288653e39cfe077c19c68570 b/sql/hive/src/test/resources/golden/ppd_join-5-4c4dcd0c288653e39cfe077c19c68570 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join-6-aab5d092ca17ed23ee71d3a6ef653998 b/sql/hive/src/test/resources/golden/ppd_join-6-aab5d092ca17ed23ee71d3a6ef653998 new file mode 100644 index 0000000000000..fbce9efa766d7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join-6-aab5d092ca17ed23ee71d3a6ef653998 @@ -0,0 +1,712 @@ +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +374 val_374 +152 val_152 +152 val_152 +145 val_145 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +82 val_82 +166 val_166 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +394 val_394 +237 val_237 +237 val_237 +174 val_174 +174 val_174 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +125 val_125 +125 val_125 +386 val_386 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +54 val_54 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +260 val_260 +384 val_384 +384 val_384 +384 val_384 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +58 val_58 +58 val_58 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +393 val_393 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +96 val_96 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +43 val_43 +156 val_156 +308 val_308 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +85 val_85 +77 val_77 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +242 val_242 +242 val_242 +177 val_177 +226 val_226 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +322 val_322 +322 val_322 +160 val_160 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +119 val_119 +119 val_119 +119 val_119 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +149 val_149 +149 val_149 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +30 val_30 +209 val_209 +209 val_209 +64 val_64 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +244 val_244 +128 val_128 +128 val_128 +128 val_128 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +366 val_366 +175 val_175 +175 val_175 +53 val_53 +105 val_105 +257 val_257 +190 val_190 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +164 val_164 +164 val_164 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +291 val_291 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +119 val_119 +119 val_119 +119 val_119 +200 val_200 +200 val_200 +237 val_237 +237 val_237 +360 val_360 +248 val_248 +305 val_305 +199 val_199 +199 val_199 +199 val_199 +120 val_120 +120 val_120 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +178 val_178 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +233 val_233 +233 val_233 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +375 val_375 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +341 val_341 +146 val_146 +146 val_146 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +315 val_315 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +200 val_200 +200 val_200 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join2-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_join2-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join2-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join2-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_join2-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join2-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join2-2-307ac4f1b13e310dc1c61c05a113945d b/sql/hive/src/test/resources/golden/ppd_join2-2-307ac4f1b13e310dc1c61c05a113945d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join2-3-d03c0ad3ab713691cf9d3b27ae1223f9 b/sql/hive/src/test/resources/golden/ppd_join2-3-d03c0ad3ab713691cf9d3b27ae1223f9 new file mode 100644 index 0000000000000..9e6c4359e78a8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join2-3-d03c0ad3ab713691cf9d3b27ae1223f9 @@ -0,0 +1,1710 @@ +238 val_238 +238 val_238 +238 val_238 +238 val_238 +86 val_86 +27 val_27 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +374 val_374 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +145 val_145 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +82 val_82 +166 val_166 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +394 val_394 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +17 val_17 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +345 val_345 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +4 val_4 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +386 val_386 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +54 val_54 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +275 val_275 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +260 val_260 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +8 val_8 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +393 val_393 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +96 val_96 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +43 val_43 +156 val_156 +308 val_308 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +19 val_19 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +143 val_143 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +160 val_160 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +78 val_78 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +30 val_30 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +64 val_64 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +116 val_116 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +366 val_366 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +53 val_53 +105 val_105 +257 val_257 +190 val_190 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +291 val_291 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +360 val_360 +248 val_248 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +323 val_323 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +178 val_178 +310 val_310 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +214 val_214 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +133 val_133 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +189 val_189 +375 val_375 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +315 val_315 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +194 val_194 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +97 val_97 +97 val_97 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join2-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_join2-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join2-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join2-5-307ac4f1b13e310dc1c61c05a113945d b/sql/hive/src/test/resources/golden/ppd_join2-5-307ac4f1b13e310dc1c61c05a113945d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join2-6-d03c0ad3ab713691cf9d3b27ae1223f9 b/sql/hive/src/test/resources/golden/ppd_join2-6-d03c0ad3ab713691cf9d3b27ae1223f9 new file mode 100644 index 0000000000000..9e6c4359e78a8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join2-6-d03c0ad3ab713691cf9d3b27ae1223f9 @@ -0,0 +1,1710 @@ +238 val_238 +238 val_238 +238 val_238 +238 val_238 +86 val_86 +27 val_27 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +374 val_374 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +145 val_145 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +82 val_82 +166 val_166 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +394 val_394 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +17 val_17 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +345 val_345 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +4 val_4 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +386 val_386 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +54 val_54 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +275 val_275 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +260 val_260 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +8 val_8 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +393 val_393 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +96 val_96 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +43 val_43 +156 val_156 +308 val_308 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +85 val_85 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +19 val_19 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +143 val_143 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +160 val_160 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +78 val_78 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +30 val_30 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +64 val_64 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +116 val_116 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +366 val_366 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +53 val_53 +105 val_105 +257 val_257 +190 val_190 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +291 val_291 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +360 val_360 +248 val_248 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +323 val_323 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +178 val_178 +310 val_310 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +214 val_214 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +133 val_133 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +189 val_189 +375 val_375 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +315 val_315 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +194 val_194 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +97 val_97 +97 val_97 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join3-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_join3-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join3-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join3-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_join3-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join3-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join3-2-5018d137c74aed08cc4da4cbd1904092 b/sql/hive/src/test/resources/golden/ppd_join3-2-5018d137c74aed08cc4da4cbd1904092 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join3-3-42cd793c031af1f7961d7b5e237de76b b/sql/hive/src/test/resources/golden/ppd_join3-3-42cd793c031af1f7961d7b5e237de76b new file mode 100644 index 0000000000000..0e11aea14d61d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join3-3-42cd793c031af1f7961d7b5e237de76b @@ -0,0 +1,1767 @@ +238 val_238 +238 val_238 +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +374 val_374 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +145 val_145 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +82 val_82 +166 val_166 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +394 val_394 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +17 val_17 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +339 val_339 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +345 val_345 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +386 val_386 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +54 val_54 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +260 val_260 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +8 val_8 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +393 val_393 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +96 val_96 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +43 val_43 +156 val_156 +308 val_308 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +85 val_85 +77 val_77 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +19 val_19 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +143 val_143 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +160 val_160 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +78 val_78 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +30 val_30 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +64 val_64 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +116 val_116 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +366 val_366 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +53 val_53 +105 val_105 +257 val_257 +190 val_190 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +291 val_291 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +360 val_360 +248 val_248 +305 val_305 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +323 val_323 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +178 val_178 +310 val_310 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +214 val_214 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +133 val_133 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +189 val_189 +375 val_375 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +315 val_315 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +194 val_194 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +97 val_97 +97 val_97 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join3-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_join3-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join3-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join3-5-5018d137c74aed08cc4da4cbd1904092 b/sql/hive/src/test/resources/golden/ppd_join3-5-5018d137c74aed08cc4da4cbd1904092 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join3-6-42cd793c031af1f7961d7b5e237de76b b/sql/hive/src/test/resources/golden/ppd_join3-6-42cd793c031af1f7961d7b5e237de76b new file mode 100644 index 0000000000000..0e11aea14d61d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join3-6-42cd793c031af1f7961d7b5e237de76b @@ -0,0 +1,1767 @@ +238 val_238 +238 val_238 +238 val_238 +238 val_238 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +374 val_374 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +145 val_145 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +82 val_82 +166 val_166 +252 val_252 +292 val_292 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +394 val_394 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +162 val_162 +377 val_377 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +365 val_365 +266 val_266 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +17 val_17 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +155 val_155 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +339 val_339 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +345 val_345 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +170 val_170 +20 val_20 +157 val_157 +378 val_378 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +386 val_386 +192 val_192 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +54 val_54 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +289 val_289 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +241 val_241 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +180 val_180 +284 val_284 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +260 val_260 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +373 val_373 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +8 val_8 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +393 val_393 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +96 val_96 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +131 val_131 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +43 val_43 +156 val_156 +308 val_308 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +196 val_196 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +98 val_98 +98 val_98 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +85 val_85 +77 val_77 +87 val_87 +364 val_364 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +19 val_19 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +177 val_177 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +168 val_168 +34 val_34 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +143 val_143 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +160 val_160 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +78 val_78 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +41 val_41 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +218 val_218 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +30 val_30 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +64 val_64 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +74 val_74 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +296 val_296 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +116 val_116 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +335 val_335 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +366 val_366 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +53 val_53 +105 val_105 +257 val_257 +190 val_190 +114 val_114 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +291 val_291 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +351 val_351 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +360 val_360 +248 val_248 +305 val_305 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +323 val_323 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +178 val_178 +310 val_310 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +249 val_249 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +136 val_136 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +214 val_214 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +133 val_133 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +189 val_189 +375 val_375 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +341 val_341 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +315 val_315 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +28 val_28 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +194 val_194 +222 val_222 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +97 val_97 +97 val_97 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_join_filter-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_join_filter-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-10-2c1710aa3e08f618c1930305ebdccc17 b/sql/hive/src/test/resources/golden/ppd_join_filter-10-2c1710aa3e08f618c1930305ebdccc17 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-11-41debade389a200de226d8ad0fe47d24 b/sql/hive/src/test/resources/golden/ppd_join_filter-11-41debade389a200de226d8ad0fe47d24 new file mode 100644 index 0000000000000..62127cc213b1d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-11-41debade389a200de226d8ad0fe47d24 @@ -0,0 +1,4 @@ +0 2 3 +0 2 3 +0 2 3 +2 4 5 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-12-3bcc51a124f8cbd456620853d808354 b/sql/hive/src/test/resources/golden/ppd_join_filter-12-3bcc51a124f8cbd456620853d808354 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-12-3bcc51a124f8cbd456620853d808354 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-13-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_join_filter-13-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-13-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-14-2c1710aa3e08f618c1930305ebdccc17 b/sql/hive/src/test/resources/golden/ppd_join_filter-14-2c1710aa3e08f618c1930305ebdccc17 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-15-41debade389a200de226d8ad0fe47d24 b/sql/hive/src/test/resources/golden/ppd_join_filter-15-41debade389a200de226d8ad0fe47d24 new file mode 100644 index 0000000000000..62127cc213b1d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-15-41debade389a200de226d8ad0fe47d24 @@ -0,0 +1,4 @@ +0 2 3 +0 2 3 +0 2 3 +2 4 5 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-2-2c1710aa3e08f618c1930305ebdccc17 b/sql/hive/src/test/resources/golden/ppd_join_filter-2-2c1710aa3e08f618c1930305ebdccc17 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-3-41debade389a200de226d8ad0fe47d24 b/sql/hive/src/test/resources/golden/ppd_join_filter-3-41debade389a200de226d8ad0fe47d24 new file mode 100644 index 0000000000000..62127cc213b1d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-3-41debade389a200de226d8ad0fe47d24 @@ -0,0 +1,4 @@ +0 2 3 +0 2 3 +0 2 3 +2 4 5 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-4-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_join_filter-4-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-4-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-5-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_join_filter-5-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-5-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-6-2c1710aa3e08f618c1930305ebdccc17 b/sql/hive/src/test/resources/golden/ppd_join_filter-6-2c1710aa3e08f618c1930305ebdccc17 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-7-41debade389a200de226d8ad0fe47d24 b/sql/hive/src/test/resources/golden/ppd_join_filter-7-41debade389a200de226d8ad0fe47d24 new file mode 100644 index 0000000000000..62127cc213b1d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-7-41debade389a200de226d8ad0fe47d24 @@ -0,0 +1,4 @@ +0 2 3 +0 2 3 +0 2 3 +2 4 5 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-8-73819ea1a7c0653a61652b3766afb003 b/sql/hive/src/test/resources/golden/ppd_join_filter-8-73819ea1a7c0653a61652b3766afb003 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-8-73819ea1a7c0653a61652b3766afb003 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_join_filter-9-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_join_filter-9-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_join_filter-9-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join1-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_outer_join1-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join1-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join1-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_outer_join1-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join1-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join1-2-a239ac7d9503d93e0859043019f3e02e b/sql/hive/src/test/resources/golden/ppd_outer_join1-2-a239ac7d9503d93e0859043019f3e02e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join1-3-9dfd333c14f82fd71c213e1d39c83524 b/sql/hive/src/test/resources/golden/ppd_outer_join1-3-9dfd333c14f82fd71c213e1d39c83524 new file mode 100644 index 0000000000000..997f37b76bedb --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join1-3-9dfd333c14f82fd71c213e1d39c83524 @@ -0,0 +1,6 @@ +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join1-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_outer_join1-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join1-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join1-5-a239ac7d9503d93e0859043019f3e02e b/sql/hive/src/test/resources/golden/ppd_outer_join1-5-a239ac7d9503d93e0859043019f3e02e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join1-6-9dfd333c14f82fd71c213e1d39c83524 b/sql/hive/src/test/resources/golden/ppd_outer_join1-6-9dfd333c14f82fd71c213e1d39c83524 new file mode 100644 index 0000000000000..997f37b76bedb --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join1-6-9dfd333c14f82fd71c213e1d39c83524 @@ -0,0 +1,6 @@ +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join2-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_outer_join2-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join2-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join2-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_outer_join2-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join2-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join2-2-b5443e75f4473eb3cbe55bf0d58cc999 b/sql/hive/src/test/resources/golden/ppd_outer_join2-2-b5443e75f4473eb3cbe55bf0d58cc999 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join2-3-5340cd2d88dcf41dc18119389a475e36 b/sql/hive/src/test/resources/golden/ppd_outer_join2-3-5340cd2d88dcf41dc18119389a475e36 new file mode 100644 index 0000000000000..997f37b76bedb --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join2-3-5340cd2d88dcf41dc18119389a475e36 @@ -0,0 +1,6 @@ +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join2-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_outer_join2-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join2-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join2-5-b5443e75f4473eb3cbe55bf0d58cc999 b/sql/hive/src/test/resources/golden/ppd_outer_join2-5-b5443e75f4473eb3cbe55bf0d58cc999 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join2-6-5340cd2d88dcf41dc18119389a475e36 b/sql/hive/src/test/resources/golden/ppd_outer_join2-6-5340cd2d88dcf41dc18119389a475e36 new file mode 100644 index 0000000000000..997f37b76bedb --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join2-6-5340cd2d88dcf41dc18119389a475e36 @@ -0,0 +1,6 @@ +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join3-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_outer_join3-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join3-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join3-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_outer_join3-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join3-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join3-2-8f14853ac6ce5f40c98982ace9fa6221 b/sql/hive/src/test/resources/golden/ppd_outer_join3-2-8f14853ac6ce5f40c98982ace9fa6221 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join3-3-1e3af37cc2d9c2059488b5940a33a1d0 b/sql/hive/src/test/resources/golden/ppd_outer_join3-3-1e3af37cc2d9c2059488b5940a33a1d0 new file mode 100644 index 0000000000000..b3bf95dd32bac --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join3-3-1e3af37cc2d9c2059488b5940a33a1d0 @@ -0,0 +1,6 @@ +17 val_17 17 val_17 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +19 val_19 19 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join3-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_outer_join3-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join3-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join3-5-8f14853ac6ce5f40c98982ace9fa6221 b/sql/hive/src/test/resources/golden/ppd_outer_join3-5-8f14853ac6ce5f40c98982ace9fa6221 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join3-6-1e3af37cc2d9c2059488b5940a33a1d0 b/sql/hive/src/test/resources/golden/ppd_outer_join3-6-1e3af37cc2d9c2059488b5940a33a1d0 new file mode 100644 index 0000000000000..b3bf95dd32bac --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join3-6-1e3af37cc2d9c2059488b5940a33a1d0 @@ -0,0 +1,6 @@ +17 val_17 17 val_17 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +19 val_19 19 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join4-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_outer_join4-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join4-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join4-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_outer_join4-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join4-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join4-2-7b0e117314e5784ba06b7ab69e689c84 b/sql/hive/src/test/resources/golden/ppd_outer_join4-2-7b0e117314e5784ba06b7ab69e689c84 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join4-3-ac57dc2a7151f20029d6a97049d6eebe b/sql/hive/src/test/resources/golden/ppd_outer_join4-3-ac57dc2a7151f20029d6a97049d6eebe new file mode 100644 index 0000000000000..d4a363c49aeaf --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join4-3-ac57dc2a7151f20029d6a97049d6eebe @@ -0,0 +1,10 @@ +17 val_17 17 val_17 17 +19 val_19 19 val_19 19 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join4-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_outer_join4-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join4-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join4-5-7b0e117314e5784ba06b7ab69e689c84 b/sql/hive/src/test/resources/golden/ppd_outer_join4-5-7b0e117314e5784ba06b7ab69e689c84 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join4-6-ac57dc2a7151f20029d6a97049d6eebe b/sql/hive/src/test/resources/golden/ppd_outer_join4-6-ac57dc2a7151f20029d6a97049d6eebe new file mode 100644 index 0000000000000..d4a363c49aeaf --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join4-6-ac57dc2a7151f20029d6a97049d6eebe @@ -0,0 +1,10 @@ +17 val_17 17 val_17 17 +19 val_19 19 val_19 19 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 +18 val_18 18 val_18 18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_outer_join5-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join5-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-1-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_outer_join5-1-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_outer_join5-1-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-10-b12aa87aaf64b573ce0be7013117651b b/sql/hive/src/test/resources/golden/ppd_outer_join5-10-b12aa87aaf64b573ce0be7013117651b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-11-c8e68d5a524b965c244f01782bc42e97 b/sql/hive/src/test/resources/golden/ppd_outer_join5-11-c8e68d5a524b965c244f01782bc42e97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-12-fd1ebd8150ed40b4b91774f6db42df2 b/sql/hive/src/test/resources/golden/ppd_outer_join5-12-fd1ebd8150ed40b4b91774f6db42df2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-2-5b859f606230a70698edf52ca814beee b/sql/hive/src/test/resources/golden/ppd_outer_join5-2-5b859f606230a70698edf52ca814beee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-3-2823683e3169487b80e882aa9c4e3bd6 b/sql/hive/src/test/resources/golden/ppd_outer_join5-3-2823683e3169487b80e882aa9c4e3bd6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-4-ab457e9f757065dbf6bf66a997ab76a0 b/sql/hive/src/test/resources/golden/ppd_outer_join5-4-ab457e9f757065dbf6bf66a997ab76a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-5-ad3dc0900226e1ae9674bec0e054a4d4 b/sql/hive/src/test/resources/golden/ppd_outer_join5-5-ad3dc0900226e1ae9674bec0e054a4d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-6-c669e5c7ae22c4fb96995c700ebadd9a b/sql/hive/src/test/resources/golden/ppd_outer_join5-6-c669e5c7ae22c4fb96995c700ebadd9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-7-54d9885a797deb82236499f6bb99ddfd b/sql/hive/src/test/resources/golden/ppd_outer_join5-7-54d9885a797deb82236499f6bb99ddfd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-8-e6949a27ee3c56243c81660de7d97f9c b/sql/hive/src/test/resources/golden/ppd_outer_join5-8-e6949a27ee3c56243c81660de7d97f9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_outer_join5-9-ca16024e6f5399b1d035f5b9fd665163 b/sql/hive/src/test/resources/golden/ppd_outer_join5-9-ca16024e6f5399b1d035f5b9fd665163 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_random-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_random-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_random-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_random-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_random-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_random-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_random-2-a589a2f51ebb3962202698c79db4a33b b/sql/hive/src/test/resources/golden/ppd_random-2-a589a2f51ebb3962202698c79db4a33b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_random-3-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_random-3-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_random-3-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_random-4-a589a2f51ebb3962202698c79db4a33b b/sql/hive/src/test/resources/golden/ppd_random-4-a589a2f51ebb3962202698c79db4a33b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-0-89696914fad2d7b7bfc5b7729a7e7c34 b/sql/hive/src/test/resources/golden/ppd_repeated_alias-0-89696914fad2d7b7bfc5b7729a7e7c34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-1-a299c8b1a9f8c2772989a5454574f4e5 b/sql/hive/src/test/resources/golden/ppd_repeated_alias-1-a299c8b1a9f8c2772989a5454574f4e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-2-588c0c8007b156167714d1cb06d10384 b/sql/hive/src/test/resources/golden/ppd_repeated_alias-2-588c0c8007b156167714d1cb06d10384 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-3-106d8664d84c73f86268cf69e9ba6834 b/sql/hive/src/test/resources/golden/ppd_repeated_alias-3-106d8664d84c73f86268cf69e9ba6834 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-4-2cd71603d825cddd0d181bd240c0051f b/sql/hive/src/test/resources/golden/ppd_repeated_alias-4-2cd71603d825cddd0d181bd240c0051f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-5-941a7af885ec77d91a78e03a6a568220 b/sql/hive/src/test/resources/golden/ppd_repeated_alias-5-941a7af885ec77d91a78e03a6a568220 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-6-c3746d419ceaab36dee78f4b4b38eb99 b/sql/hive/src/test/resources/golden/ppd_repeated_alias-6-c3746d419ceaab36dee78f4b4b38eb99 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-7-54b70fb31202186b8984ae2feea299bf b/sql/hive/src/test/resources/golden/ppd_repeated_alias-7-54b70fb31202186b8984ae2feea299bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-8-89696914fad2d7b7bfc5b7729a7e7c34 b/sql/hive/src/test/resources/golden/ppd_repeated_alias-8-89696914fad2d7b7bfc5b7729a7e7c34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_repeated_alias-9-a299c8b1a9f8c2772989a5454574f4e5 b/sql/hive/src/test/resources/golden/ppd_repeated_alias-9-a299c8b1a9f8c2772989a5454574f4e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_transform-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_transform-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_transform-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_transform-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_transform-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_transform-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_transform-2-75f6b66b7ad7ca4ca8f1357d0de41bd9 b/sql/hive/src/test/resources/golden/ppd_transform-2-75f6b66b7ad7ca4ca8f1357d0de41bd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_transform-3-5d0e4236af589d3e63a8dd84e663b745 b/sql/hive/src/test/resources/golden/ppd_transform-3-5d0e4236af589d3e63a8dd84e663b745 new file mode 100644 index 0000000000000..0190981db84ed --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_transform-3-5d0e4236af589d3e63a8dd84e663b745 @@ -0,0 +1,84 @@ +0 val_0 +0 val_0 +0 val_0 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +2 val_2 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +4 val_4 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +8 val_8 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +9 val_9 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 diff --git a/sql/hive/src/test/resources/golden/ppd_transform-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_transform-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_transform-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_transform-5-75f6b66b7ad7ca4ca8f1357d0de41bd9 b/sql/hive/src/test/resources/golden/ppd_transform-5-75f6b66b7ad7ca4ca8f1357d0de41bd9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_transform-6-5d0e4236af589d3e63a8dd84e663b745 b/sql/hive/src/test/resources/golden/ppd_transform-6-5d0e4236af589d3e63a8dd84e663b745 new file mode 100644 index 0000000000000..0190981db84ed --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_transform-6-5d0e4236af589d3e63a8dd84e663b745 @@ -0,0 +1,84 @@ +0 val_0 +0 val_0 +0 val_0 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +2 val_2 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +4 val_4 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +8 val_8 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +9 val_9 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 diff --git a/sql/hive/src/test/resources/golden/ppd_udf_case-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_udf_case-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_udf_case-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_udf_case-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_udf_case-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_udf_case-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppd_udf_case-2-c44d82e56d50653148bb4f9f98a42137 b/sql/hive/src/test/resources/golden/ppd_udf_case-2-c44d82e56d50653148bb4f9f98a42137 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_udf_col-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_udf_col-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_udf_col-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_udf_col-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-10-53bbac80bbacf419ea971ddbb0f48542 b/sql/hive/src/test/resources/golden/ppd_udf_col-10-53bbac80bbacf419ea971ddbb0f48542 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-2-1c26c857485a928462c79e1b38ed1d9e b/sql/hive/src/test/resources/golden/ppd_udf_col-2-1c26c857485a928462c79e1b38ed1d9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-3-86fd1e8c9491c6ea0d67e111aa6cf9ed b/sql/hive/src/test/resources/golden/ppd_udf_col-3-86fd1e8c9491c6ea0d67e111aa6cf9ed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-4-c601016163c99a115feaca5fe5b74aae b/sql/hive/src/test/resources/golden/ppd_udf_col-4-c601016163c99a115feaca5fe5b74aae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-5-53bbac80bbacf419ea971ddbb0f48542 b/sql/hive/src/test/resources/golden/ppd_udf_col-5-53bbac80bbacf419ea971ddbb0f48542 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-6-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_udf_col-6-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_udf_col-6-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-7-1c26c857485a928462c79e1b38ed1d9e b/sql/hive/src/test/resources/golden/ppd_udf_col-7-1c26c857485a928462c79e1b38ed1d9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-8-86fd1e8c9491c6ea0d67e111aa6cf9ed b/sql/hive/src/test/resources/golden/ppd_udf_col-8-86fd1e8c9491c6ea0d67e111aa6cf9ed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_udf_col-9-c601016163c99a115feaca5fe5b74aae b/sql/hive/src/test/resources/golden/ppd_udf_col-9-c601016163c99a115feaca5fe5b74aae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppd_union-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_union-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_union-1-f18babdee8d2d4206ce4f2a93b6575f9 b/sql/hive/src/test/resources/golden/ppd_union-1-f18babdee8d2d4206ce4f2a93b6575f9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_union-1-f18babdee8d2d4206ce4f2a93b6575f9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_union-2-fbfb76b9e6f2af48dcd227af03dffa89 b/sql/hive/src/test/resources/golden/ppd_union-2-fbfb76b9e6f2af48dcd227af03dffa89 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union-3-678c8197f458b459171c266f7431683e b/sql/hive/src/test/resources/golden/ppd_union-3-678c8197f458b459171c266f7431683e new file mode 100644 index 0000000000000..4c3919232c73e --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_union-3-678c8197f458b459171c266f7431683e @@ -0,0 +1,171 @@ +86 val_86 +409 val_409 +98 val_98 +484 val_484 +401 val_401 +66 val_66 +406 val_406 +429 val_429 +469 val_469 +495 val_495 +82 val_82 +403 val_403 +417 val_417 +430 val_430 +446 val_446 +459 val_459 +482 val_482 +413 val_413 +494 val_494 +466 val_466 +417 val_417 +489 val_489 +439 val_439 +475 val_475 +455 val_455 +57 val_57 +438 val_438 +489 val_489 +92 val_92 +47 val_47 +72 val_72 +427 val_427 +498 val_498 +437 val_437 +469 val_469 +54 val_54 +459 val_459 +51 val_51 +430 val_430 +65 val_65 +83 val_83 +67 val_67 +404 val_404 +489 val_489 +84 val_84 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +463 val_463 +431 val_431 +42 val_42 +496 val_496 +468 val_468 +454 val_454 +418 val_418 +96 val_96 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +469 val_469 +468 val_468 +95 val_95 +481 val_481 +457 val_457 +98 val_98 +409 val_409 +470 val_470 +413 val_413 +85 val_85 +77 val_77 +490 val_490 +87 val_87 +419 val_419 +72 val_72 +90 val_90 +435 val_435 +401 val_401 +452 val_452 +5 val_5 +497 val_497 +402 val_402 +58 val_58 +95 val_95 +472 val_472 +498 val_498 +42 val_42 +430 val_430 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +492 val_492 +449 val_449 +453 val_453 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +69 val_69 +485 val_485 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +5 val_5 +438 val_438 +467 val_467 +432 val_432 +469 val_469 +463 val_463 +80 val_80 +44 val_44 +466 val_466 +403 val_403 +483 val_483 +53 val_53 +406 val_406 +409 val_409 +406 val_406 +401 val_401 +90 val_90 +424 val_424 +431 val_431 +454 val_454 +478 val_478 +431 val_431 +424 val_424 +5 val_5 +70 val_70 +480 val_480 +70 val_70 +438 val_438 +414 val_414 +491 val_491 +439 val_439 +479 val_479 +417 val_417 +444 val_444 +429 val_429 +443 val_443 +478 val_478 +468 val_468 +493 val_493 +460 val_460 +480 val_480 +83 val_83 +462 val_462 +406 val_406 +454 val_454 +401 val_401 +421 val_421 +407 val_407 +67 val_67 +462 val_462 +492 val_492 +9 val_9 +498 val_498 +458 val_458 +97 val_97 +469 val_469 +84 val_84 +448 val_448 +414 val_414 +477 val_477 +90 val_90 +403 val_403 +400 val_400 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_union-4-145c2779dadb5bd921dc2baac608b803 b/sql/hive/src/test/resources/golden/ppd_union-4-145c2779dadb5bd921dc2baac608b803 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_union-4-145c2779dadb5bd921dc2baac608b803 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_union-5-fbfb76b9e6f2af48dcd227af03dffa89 b/sql/hive/src/test/resources/golden/ppd_union-5-fbfb76b9e6f2af48dcd227af03dffa89 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union-6-678c8197f458b459171c266f7431683e b/sql/hive/src/test/resources/golden/ppd_union-6-678c8197f458b459171c266f7431683e new file mode 100644 index 0000000000000..4c3919232c73e --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_union-6-678c8197f458b459171c266f7431683e @@ -0,0 +1,171 @@ +86 val_86 +409 val_409 +98 val_98 +484 val_484 +401 val_401 +66 val_66 +406 val_406 +429 val_429 +469 val_469 +495 val_495 +82 val_82 +403 val_403 +417 val_417 +430 val_430 +446 val_446 +459 val_459 +482 val_482 +413 val_413 +494 val_494 +466 val_466 +417 val_417 +489 val_489 +439 val_439 +475 val_475 +455 val_455 +57 val_57 +438 val_438 +489 val_489 +92 val_92 +47 val_47 +72 val_72 +427 val_427 +498 val_498 +437 val_437 +469 val_469 +54 val_54 +459 val_459 +51 val_51 +430 val_430 +65 val_65 +83 val_83 +67 val_67 +404 val_404 +489 val_489 +84 val_84 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +463 val_463 +431 val_431 +42 val_42 +496 val_496 +468 val_468 +454 val_454 +418 val_418 +96 val_96 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +469 val_469 +468 val_468 +95 val_95 +481 val_481 +457 val_457 +98 val_98 +409 val_409 +470 val_470 +413 val_413 +85 val_85 +77 val_77 +490 val_490 +87 val_87 +419 val_419 +72 val_72 +90 val_90 +435 val_435 +401 val_401 +452 val_452 +5 val_5 +497 val_497 +402 val_402 +58 val_58 +95 val_95 +472 val_472 +498 val_498 +42 val_42 +430 val_430 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +492 val_492 +449 val_449 +453 val_453 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +69 val_69 +485 val_485 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +5 val_5 +438 val_438 +467 val_467 +432 val_432 +469 val_469 +463 val_463 +80 val_80 +44 val_44 +466 val_466 +403 val_403 +483 val_483 +53 val_53 +406 val_406 +409 val_409 +406 val_406 +401 val_401 +90 val_90 +424 val_424 +431 val_431 +454 val_454 +478 val_478 +431 val_431 +424 val_424 +5 val_5 +70 val_70 +480 val_480 +70 val_70 +438 val_438 +414 val_414 +491 val_491 +439 val_439 +479 val_479 +417 val_417 +444 val_444 +429 val_429 +443 val_443 +478 val_478 +468 val_468 +493 val_493 +460 val_460 +480 val_480 +83 val_83 +462 val_462 +406 val_406 +454 val_454 +401 val_401 +421 val_421 +407 val_407 +67 val_67 +462 val_462 +492 val_492 +9 val_9 +498 val_498 +458 val_458 +97 val_97 +469 val_469 +84 val_84 +448 val_448 +414 val_414 +477 val_477 +90 val_90 +403 val_403 +400 val_400 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-0-d680c8ac7e5121c6971458a9022c00b9 b/sql/hive/src/test/resources/golden/ppd_union_view-0-d680c8ac7e5121c6971458a9022c00b9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-1-bfb5ca0dd2d5f070ce359790f8b91480 b/sql/hive/src/test/resources/golden/ppd_union_view-1-bfb5ca0dd2d5f070ce359790f8b91480 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-10-a74a5ff32204d842175b3d880477178f b/sql/hive/src/test/resources/golden/ppd_union_view-10-a74a5ff32204d842175b3d880477178f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-11-745e750f4f4a36af27e87338a979240c b/sql/hive/src/test/resources/golden/ppd_union_view-11-745e750f4f4a36af27e87338a979240c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-2-ac54e78582e6bd5d5533a0f3bfb51369 b/sql/hive/src/test/resources/golden/ppd_union_view-2-ac54e78582e6bd5d5533a0f3bfb51369 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-3-f6fd9a5271e172e4a65ea57aaa41d512 b/sql/hive/src/test/resources/golden/ppd_union_view-3-f6fd9a5271e172e4a65ea57aaa41d512 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-4-19cd3ea4e274befd809e4aad21da8d50 b/sql/hive/src/test/resources/golden/ppd_union_view-4-19cd3ea4e274befd809e4aad21da8d50 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-5-443c0979b586f6a6dfb0dc5d28cd5124 b/sql/hive/src/test/resources/golden/ppd_union_view-5-443c0979b586f6a6dfb0dc5d28cd5124 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-6-b57b2b4f4cd8012fbfcd0b69c8d95e13 b/sql/hive/src/test/resources/golden/ppd_union_view-6-b57b2b4f4cd8012fbfcd0b69c8d95e13 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-7-aab9d79f65d6edfc1cae88a14b8e106c b/sql/hive/src/test/resources/golden/ppd_union_view-7-aab9d79f65d6edfc1cae88a14b8e106c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-8-e3ee46daeac605b05c7ada97b3c43578 b/sql/hive/src/test/resources/golden/ppd_union_view-8-e3ee46daeac605b05c7ada97b3c43578 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_union_view-9-8a77c30b6b07717d1c0bee971fb0132c b/sql/hive/src/test/resources/golden/ppd_union_view-9-8a77c30b6b07717d1c0bee971fb0132c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_vc-0-cf479fbfecc042e8c9ea63e761da62a6 b/sql/hive/src/test/resources/golden/ppd_vc-0-cf479fbfecc042e8c9ea63e761da62a6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_vc-1-e442e970ac492f95e5d8e55e21c0d229 b/sql/hive/src/test/resources/golden/ppd_vc-1-e442e970ac492f95e5d8e55e21c0d229 new file mode 100644 index 0000000000000..d183a30ddf3b6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_vc-1-e442e970ac492f95e5d8e55e21c0d229 @@ -0,0 +1,36 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +238 val_238 2008-04-09 11 +86 val_86 2008-04-09 11 +311 val_311 2008-04-09 11 +27 val_27 2008-04-09 11 +165 val_165 2008-04-09 11 +409 val_409 2008-04-09 11 +255 val_255 2008-04-09 11 +278 val_278 2008-04-09 11 +98 val_98 2008-04-09 11 +238 val_238 2008-04-09 12 +86 val_86 2008-04-09 12 +311 val_311 2008-04-09 12 +27 val_27 2008-04-09 12 +165 val_165 2008-04-09 12 +409 val_409 2008-04-09 12 +255 val_255 2008-04-09 12 +278 val_278 2008-04-09 12 +98 val_98 2008-04-09 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppd_vc-2-c9e44ddbb494ff7f02027205610bcb65 b/sql/hive/src/test/resources/golden/ppd_vc-2-c9e44ddbb494ff7f02027205610bcb65 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppd_vc-3-be78760949abf728580442e9e37a3ce7 b/sql/hive/src/test/resources/golden/ppd_vc-3-be78760949abf728580442e9e37a3ce7 new file mode 100644 index 0000000000000..5b2461e35b5f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppd_vc-3-be78760949abf728580442e9e37a3ce7 @@ -0,0 +1,36 @@ +238 val_238 2008-04-08 11 0 +238 val_238 2008-04-08 11 0 +86 val_86 2008-04-08 11 12 +311 val_311 2008-04-08 11 22 +311 val_311 2008-04-08 11 22 +311 val_311 2008-04-08 11 22 +27 val_27 2008-04-08 11 34 +165 val_165 2008-04-08 11 44 +165 val_165 2008-04-08 11 44 +238 val_238 2008-04-08 12 0 +238 val_238 2008-04-08 12 0 +86 val_86 2008-04-08 12 12 +311 val_311 2008-04-08 12 22 +311 val_311 2008-04-08 12 22 +311 val_311 2008-04-08 12 22 +27 val_27 2008-04-08 12 34 +165 val_165 2008-04-08 12 44 +165 val_165 2008-04-08 12 44 +238 val_238 2008-04-09 11 0 +238 val_238 2008-04-09 11 0 +86 val_86 2008-04-09 11 12 +311 val_311 2008-04-09 11 22 +311 val_311 2008-04-09 11 22 +311 val_311 2008-04-09 11 22 +27 val_27 2008-04-09 11 34 +165 val_165 2008-04-09 11 44 +165 val_165 2008-04-09 11 44 +238 val_238 2008-04-09 12 0 +238 val_238 2008-04-09 12 0 +86 val_86 2008-04-09 12 12 +311 val_311 2008-04-09 12 22 +311 val_311 2008-04-09 12 22 +311 val_311 2008-04-09 12 22 +27 val_27 2008-04-09 12 34 +165 val_165 2008-04-09 12 44 +165 val_165 2008-04-09 12 44 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_allchildsarenull-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/ppr_allchildsarenull-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_allchildsarenull-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppr_allchildsarenull-1-965b997838e7cc654cac68baef1be41d b/sql/hive/src/test/resources/golden/ppr_allchildsarenull-1-965b997838e7cc654cac68baef1be41d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_allchildsarenull-2-22b7886d627e6266f5f1415ba239c621 b/sql/hive/src/test/resources/golden/ppr_allchildsarenull-2-22b7886d627e6266f5f1415ba239c621 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_allchildsarenull-3-73819ea1a7c0653a61652b3766afb003 b/sql/hive/src/test/resources/golden/ppr_allchildsarenull-3-73819ea1a7c0653a61652b3766afb003 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_allchildsarenull-3-73819ea1a7c0653a61652b3766afb003 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/ppr_allchildsarenull-4-965b997838e7cc654cac68baef1be41d b/sql/hive/src/test/resources/golden/ppr_allchildsarenull-4-965b997838e7cc654cac68baef1be41d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_allchildsarenull-5-22b7886d627e6266f5f1415ba239c621 b/sql/hive/src/test/resources/golden/ppr_allchildsarenull-5-22b7886d627e6266f5f1415ba239c621 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-0-855b235f9c760ba9d6d0200bfd1ad08b b/sql/hive/src/test/resources/golden/ppr_pushdown-0-855b235f9c760ba9d6d0200bfd1ad08b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-1-f689aaf15b08c433d1e93ce977a9b6d5 b/sql/hive/src/test/resources/golden/ppr_pushdown-1-f689aaf15b08c433d1e93ce977a9b6d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-10-178be64f122542983ff4384df4bb1530 b/sql/hive/src/test/resources/golden/ppr_pushdown-10-178be64f122542983ff4384df4bb1530 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-11-3828393aa33a55cf1aea707e1be0a452 b/sql/hive/src/test/resources/golden/ppr_pushdown-11-3828393aa33a55cf1aea707e1be0a452 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-12-5affd35b94b0de3fb2a43f8729526055 b/sql/hive/src/test/resources/golden/ppr_pushdown-12-5affd35b94b0de3fb2a43f8729526055 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-13-2c64f5abe8c23957d7f0602e9c257cd1 b/sql/hive/src/test/resources/golden/ppr_pushdown-13-2c64f5abe8c23957d7f0602e9c257cd1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-14-c3188230751166d9d90082cd357ecb0c b/sql/hive/src/test/resources/golden/ppr_pushdown-14-c3188230751166d9d90082cd357ecb0c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-15-e52a39743f82af47902341a7ecd38afb b/sql/hive/src/test/resources/golden/ppr_pushdown-15-e52a39743f82af47902341a7ecd38afb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-16-70bef3ba441873327e188ff2ec6d68ae b/sql/hive/src/test/resources/golden/ppr_pushdown-16-70bef3ba441873327e188ff2ec6d68ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-17-fcd10fbfc55a2c0aa843fe618f9613c6 b/sql/hive/src/test/resources/golden/ppr_pushdown-17-fcd10fbfc55a2c0aa843fe618f9613c6 new file mode 100644 index 0000000000000..eb3e1bc1a37f1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-17-fcd10fbfc55a2c0aa843fe618f9613c6 @@ -0,0 +1,2 @@ +1234 1234 +abcd 1234 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-18-ff36e3978571ac05f11e8322c024e4b6 b/sql/hive/src/test/resources/golden/ppr_pushdown-18-ff36e3978571ac05f11e8322c024e4b6 new file mode 100644 index 0000000000000..7ba18baf99d20 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-18-ff36e3978571ac05f11e8322c024e4b6 @@ -0,0 +1,2 @@ +1224 1224 +abcd 1224 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-19-481005cf034ef3d7b998da32eb82aa9a b/sql/hive/src/test/resources/golden/ppr_pushdown-19-481005cf034ef3d7b998da32eb82aa9a new file mode 100644 index 0000000000000..e1d91a4660f36 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-19-481005cf034ef3d7b998da32eb82aa9a @@ -0,0 +1,2 @@ +1214 1214 +abcd 1214 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-2-5eede4874e678021938683fc2f5dc900 b/sql/hive/src/test/resources/golden/ppr_pushdown-2-5eede4874e678021938683fc2f5dc900 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-20-9073825e8b9804331f780980d1f9fa92 b/sql/hive/src/test/resources/golden/ppr_pushdown-20-9073825e8b9804331f780980d1f9fa92 new file mode 100644 index 0000000000000..1872f733e0ee7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-20-9073825e8b9804331f780980d1f9fa92 @@ -0,0 +1,2 @@ +12.4 12.4 +abcd 12.4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-21-9cb28f0d3a434c9d1ab039192906ec9d b/sql/hive/src/test/resources/golden/ppr_pushdown-21-9cb28f0d3a434c9d1ab039192906ec9d new file mode 100644 index 0000000000000..9fb4a9236e0fe --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-21-9cb28f0d3a434c9d1ab039192906ec9d @@ -0,0 +1,2 @@ +12+4 12+4 +abcd 12+4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-22-678f50025924fee7b59f66e2abdb472d b/sql/hive/src/test/resources/golden/ppr_pushdown-22-678f50025924fee7b59f66e2abdb472d new file mode 100644 index 0000000000000..1c8af4d81713a --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-22-678f50025924fee7b59f66e2abdb472d @@ -0,0 +1,2 @@ +12:4 12:4 +abcd 12:4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-23-4d5bfa800ba434f464b07bf9b5d39f20 b/sql/hive/src/test/resources/golden/ppr_pushdown-23-4d5bfa800ba434f464b07bf9b5d39f20 new file mode 100644 index 0000000000000..422b06c2f2841 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-23-4d5bfa800ba434f464b07bf9b5d39f20 @@ -0,0 +1,2 @@ +12%4 12%4 +abcd 12%4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-24-22663f09ea1c1bc303756067e84df5a7 b/sql/hive/src/test/resources/golden/ppr_pushdown-24-22663f09ea1c1bc303756067e84df5a7 new file mode 100644 index 0000000000000..51b2c2fdb2887 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-24-22663f09ea1c1bc303756067e84df5a7 @@ -0,0 +1,2 @@ +12*4 12*4 +abcd 12*4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-25-e789d9b469aa1fffe4ce0a15a8c1fb9b b/sql/hive/src/test/resources/golden/ppr_pushdown-25-e789d9b469aa1fffe4ce0a15a8c1fb9b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-26-8065c18e387fd8bffae19a80af8dc1d4 b/sql/hive/src/test/resources/golden/ppr_pushdown-26-8065c18e387fd8bffae19a80af8dc1d4 new file mode 100644 index 0000000000000..e338e5eb13d50 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-26-8065c18e387fd8bffae19a80af8dc1d4 @@ -0,0 +1 @@ +1234 1234 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-27-b72de558c88ae91460989938000e0d27 b/sql/hive/src/test/resources/golden/ppr_pushdown-27-b72de558c88ae91460989938000e0d27 new file mode 100644 index 0000000000000..ffc2dc5792f54 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-27-b72de558c88ae91460989938000e0d27 @@ -0,0 +1 @@ +1224 1224 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-28-7217735d357770af4ffee730e4e9add4 b/sql/hive/src/test/resources/golden/ppr_pushdown-28-7217735d357770af4ffee730e4e9add4 new file mode 100644 index 0000000000000..fcdf68d826db1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-28-7217735d357770af4ffee730e4e9add4 @@ -0,0 +1 @@ +1214 1214 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-29-630e2f7918b7727fc4ca057fa21e2eea b/sql/hive/src/test/resources/golden/ppr_pushdown-29-630e2f7918b7727fc4ca057fa21e2eea new file mode 100644 index 0000000000000..18abbb411527e --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-29-630e2f7918b7727fc4ca057fa21e2eea @@ -0,0 +1 @@ +12.4 12.4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-3-c5c542f8ee81cd0afd44e67fc7b4d306 b/sql/hive/src/test/resources/golden/ppr_pushdown-3-c5c542f8ee81cd0afd44e67fc7b4d306 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-30-2e062414293b643ea4d7f6df92f939e4 b/sql/hive/src/test/resources/golden/ppr_pushdown-30-2e062414293b643ea4d7f6df92f939e4 new file mode 100644 index 0000000000000..b8286f78807d2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-30-2e062414293b643ea4d7f6df92f939e4 @@ -0,0 +1 @@ +12+4 12+4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-31-5eba4bf10315099129eae319d73636cf b/sql/hive/src/test/resources/golden/ppr_pushdown-31-5eba4bf10315099129eae319d73636cf new file mode 100644 index 0000000000000..6ba2e7177ed23 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-31-5eba4bf10315099129eae319d73636cf @@ -0,0 +1 @@ +12:4 12:4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-32-35af0585a4f98bc222c786688cb6de6b b/sql/hive/src/test/resources/golden/ppr_pushdown-32-35af0585a4f98bc222c786688cb6de6b new file mode 100644 index 0000000000000..7152ea7cecfb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-32-35af0585a4f98bc222c786688cb6de6b @@ -0,0 +1 @@ +12%4 12%4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-33-a5594625510703427ab8bae5d0563f73 b/sql/hive/src/test/resources/golden/ppr_pushdown-33-a5594625510703427ab8bae5d0563f73 new file mode 100644 index 0000000000000..44880cb42d749 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown-33-a5594625510703427ab8bae5d0563f73 @@ -0,0 +1 @@ +12*4 12*4 diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-4-f54bebec398f0fdfdbc0393123dba234 b/sql/hive/src/test/resources/golden/ppr_pushdown-4-f54bebec398f0fdfdbc0393123dba234 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-5-78af12432bcbf99d4a0d41c25f964de b/sql/hive/src/test/resources/golden/ppr_pushdown-5-78af12432bcbf99d4a0d41c25f964de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-6-58724fbe96a0b3deceef20c8cc5e318d b/sql/hive/src/test/resources/golden/ppr_pushdown-6-58724fbe96a0b3deceef20c8cc5e318d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-7-14570f946e75924d7926c809485951d1 b/sql/hive/src/test/resources/golden/ppr_pushdown-7-14570f946e75924d7926c809485951d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-8-3ba325662296fc455f07f1c835495e4c b/sql/hive/src/test/resources/golden/ppr_pushdown-8-3ba325662296fc455f07f1c835495e4c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown-9-4375f17bed264d5554a67d119fa5dd1 b/sql/hive/src/test/resources/golden/ppr_pushdown-9-4375f17bed264d5554a67d119fa5dd1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-0-855b235f9c760ba9d6d0200bfd1ad08b b/sql/hive/src/test/resources/golden/ppr_pushdown2-0-855b235f9c760ba9d6d0200bfd1ad08b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-1-1f31dc385f79c5a7ae6a0d55b49bd583 b/sql/hive/src/test/resources/golden/ppr_pushdown2-1-1f31dc385f79c5a7ae6a0d55b49bd583 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-10-ab3e46183487096745d7d90e3020e94c b/sql/hive/src/test/resources/golden/ppr_pushdown2-10-ab3e46183487096745d7d90e3020e94c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-11-680316eba447eb4649530fdc1c37d95b b/sql/hive/src/test/resources/golden/ppr_pushdown2-11-680316eba447eb4649530fdc1c37d95b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-12-720582e599a974ee9ca46b653678a14a b/sql/hive/src/test/resources/golden/ppr_pushdown2-12-720582e599a974ee9ca46b653678a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-13-bd9067aeee8884a32db921b6d478f806 b/sql/hive/src/test/resources/golden/ppr_pushdown2-13-bd9067aeee8884a32db921b6d478f806 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-14-8d01597374157f2d3d066840983ba1f8 b/sql/hive/src/test/resources/golden/ppr_pushdown2-14-8d01597374157f2d3d066840983ba1f8 new file mode 100644 index 0000000000000..e3e04ee48543d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-14-8d01597374157f2d3d066840983ba1f8 @@ -0,0 +1 @@ +3 1 2 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-15-5614065e1b8e709f68be4fa67666f41 b/sql/hive/src/test/resources/golden/ppr_pushdown2-15-5614065e1b8e709f68be4fa67666f41 new file mode 100644 index 0000000000000..c458b0f57aba9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-15-5614065e1b8e709f68be4fa67666f41 @@ -0,0 +1 @@ +2 1 1 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-16-3a67618e47c977f58c9dd8f4b9a576eb b/sql/hive/src/test/resources/golden/ppr_pushdown2-16-3a67618e47c977f58c9dd8f4b9a576eb new file mode 100644 index 0000000000000..c458b0f57aba9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-16-3a67618e47c977f58c9dd8f4b9a576eb @@ -0,0 +1 @@ +2 1 1 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-17-44e5f3ac566f60d8b17ef19c18a11ebe b/sql/hive/src/test/resources/golden/ppr_pushdown2-17-44e5f3ac566f60d8b17ef19c18a11ebe new file mode 100644 index 0000000000000..63511415ddf55 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-17-44e5f3ac566f60d8b17ef19c18a11ebe @@ -0,0 +1,2 @@ +3 1 2 1 +1 1 2 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-18-e2c7e9b01ec95dfcc685827e24d66775 b/sql/hive/src/test/resources/golden/ppr_pushdown2-18-e2c7e9b01ec95dfcc685827e24d66775 new file mode 100644 index 0000000000000..c592b5d505b0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-18-e2c7e9b01ec95dfcc685827e24d66775 @@ -0,0 +1,3 @@ +2 1 1 2 +3 1 2 1 +1 1 2 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-19-bd7e1917f8d2cf50c062a22ef3fa15b5 b/sql/hive/src/test/resources/golden/ppr_pushdown2-19-bd7e1917f8d2cf50c062a22ef3fa15b5 new file mode 100644 index 0000000000000..e3e04ee48543d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-19-bd7e1917f8d2cf50c062a22ef3fa15b5 @@ -0,0 +1 @@ +3 1 2 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-2-efd3e4c333d4efb81218df8921e58f9e b/sql/hive/src/test/resources/golden/ppr_pushdown2-2-efd3e4c333d4efb81218df8921e58f9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-20-ece6fe0efc1e658b36ddc10f0653d229 b/sql/hive/src/test/resources/golden/ppr_pushdown2-20-ece6fe0efc1e658b36ddc10f0653d229 new file mode 100644 index 0000000000000..e3e04ee48543d --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-20-ece6fe0efc1e658b36ddc10f0653d229 @@ -0,0 +1 @@ +3 1 2 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-3-1886675984606b6c972c4a26dca6fd2c b/sql/hive/src/test/resources/golden/ppr_pushdown2-3-1886675984606b6c972c4a26dca6fd2c new file mode 100644 index 0000000000000..679926f7d738c --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-3-1886675984606b6c972c4a26dca6fd2c @@ -0,0 +1 @@ +2 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-4-33b137b28e7246ec3c2acb937c638910 b/sql/hive/src/test/resources/golden/ppr_pushdown2-4-33b137b28e7246ec3c2acb937c638910 new file mode 100644 index 0000000000000..fcc7be2cb12aa --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-4-33b137b28e7246ec3c2acb937c638910 @@ -0,0 +1 @@ +22 22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-5-b5a2518af801f95fe52a75dfc1d3e867 b/sql/hive/src/test/resources/golden/ppr_pushdown2-5-b5a2518af801f95fe52a75dfc1d3e867 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-6-96059d8042ccb2ce355541daf9893954 b/sql/hive/src/test/resources/golden/ppr_pushdown2-6-96059d8042ccb2ce355541daf9893954 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-7-93922fe8d88643e1b8aa7e3ef4195404 b/sql/hive/src/test/resources/golden/ppr_pushdown2-7-93922fe8d88643e1b8aa7e3ef4195404 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-8-c86940e70f705f50e9091c257ee2bb40 b/sql/hive/src/test/resources/golden/ppr_pushdown2-8-c86940e70f705f50e9091c257ee2bb40 new file mode 100644 index 0000000000000..3ebc6d7fa2375 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-8-c86940e70f705f50e9091c257ee2bb40 @@ -0,0 +1 @@ +2 2 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown2-9-4fa4ba4c739b6f44975d41e4705d4389 b/sql/hive/src/test/resources/golden/ppr_pushdown2-9-4fa4ba4c739b6f44975d41e4705d4389 new file mode 100644 index 0000000000000..a4544ab84afa3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown2-9-4fa4ba4c739b6f44975d41e4705d4389 @@ -0,0 +1 @@ +1 1 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown3-0-df2401785dfa257de49c3ad80b0f480a b/sql/hive/src/test/resources/golden/ppr_pushdown3-0-df2401785dfa257de49c3ad80b0f480a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown3-0-df2401785dfa257de49c3ad80b0f480a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown3-1-cf6ff7dfb16e7d2567e8f83fcc5d08e1 b/sql/hive/src/test/resources/golden/ppr_pushdown3-1-cf6ff7dfb16e7d2567e8f83fcc5d08e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown3-2-e879051803d0b64139e703e40fb007d0 b/sql/hive/src/test/resources/golden/ppr_pushdown3-2-e879051803d0b64139e703e40fb007d0 new file mode 100644 index 0000000000000..e22f840876d2e --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown3-2-e879051803d0b64139e703e40fb007d0 @@ -0,0 +1,40 @@ +0 val_0 2008-04-08 11 +4 val_4 2008-04-08 11 +8 val_8 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +2 val_2 2008-04-08 11 +5 val_5 2008-04-08 11 +9 val_9 2008-04-08 11 +0 val_0 2008-04-08 12 +4 val_4 2008-04-08 12 +8 val_8 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +2 val_2 2008-04-08 12 +5 val_5 2008-04-08 12 +9 val_9 2008-04-08 12 +0 val_0 2008-04-09 11 +4 val_4 2008-04-09 11 +8 val_8 2008-04-09 11 +0 val_0 2008-04-09 11 +0 val_0 2008-04-09 11 +5 val_5 2008-04-09 11 +5 val_5 2008-04-09 11 +2 val_2 2008-04-09 11 +5 val_5 2008-04-09 11 +9 val_9 2008-04-09 11 +0 val_0 2008-04-09 12 +4 val_4 2008-04-09 12 +8 val_8 2008-04-09 12 +0 val_0 2008-04-09 12 +0 val_0 2008-04-09 12 +5 val_5 2008-04-09 12 +5 val_5 2008-04-09 12 +2 val_2 2008-04-09 12 +5 val_5 2008-04-09 12 +9 val_9 2008-04-09 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown3-3-c6fac1670fbd1ee490867efb1913a12d b/sql/hive/src/test/resources/golden/ppr_pushdown3-3-c6fac1670fbd1ee490867efb1913a12d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown3-4-a1c18483e5f5d2fe351be09af658acbb b/sql/hive/src/test/resources/golden/ppr_pushdown3-4-a1c18483e5f5d2fe351be09af658acbb new file mode 100644 index 0000000000000..355ed1617e200 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown3-4-a1c18483e5f5d2fe351be09af658acbb @@ -0,0 +1,2000 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 +238 val_238 2008-04-09 11 +86 val_86 2008-04-09 11 +311 val_311 2008-04-09 11 +27 val_27 2008-04-09 11 +165 val_165 2008-04-09 11 +409 val_409 2008-04-09 11 +255 val_255 2008-04-09 11 +278 val_278 2008-04-09 11 +98 val_98 2008-04-09 11 +484 val_484 2008-04-09 11 +265 val_265 2008-04-09 11 +193 val_193 2008-04-09 11 +401 val_401 2008-04-09 11 +150 val_150 2008-04-09 11 +273 val_273 2008-04-09 11 +224 val_224 2008-04-09 11 +369 val_369 2008-04-09 11 +66 val_66 2008-04-09 11 +128 val_128 2008-04-09 11 +213 val_213 2008-04-09 11 +146 val_146 2008-04-09 11 +406 val_406 2008-04-09 11 +429 val_429 2008-04-09 11 +374 val_374 2008-04-09 11 +152 val_152 2008-04-09 11 +469 val_469 2008-04-09 11 +145 val_145 2008-04-09 11 +495 val_495 2008-04-09 11 +37 val_37 2008-04-09 11 +327 val_327 2008-04-09 11 +281 val_281 2008-04-09 11 +277 val_277 2008-04-09 11 +209 val_209 2008-04-09 11 +15 val_15 2008-04-09 11 +82 val_82 2008-04-09 11 +403 val_403 2008-04-09 11 +166 val_166 2008-04-09 11 +417 val_417 2008-04-09 11 +430 val_430 2008-04-09 11 +252 val_252 2008-04-09 11 +292 val_292 2008-04-09 11 +219 val_219 2008-04-09 11 +287 val_287 2008-04-09 11 +153 val_153 2008-04-09 11 +193 val_193 2008-04-09 11 +338 val_338 2008-04-09 11 +446 val_446 2008-04-09 11 +459 val_459 2008-04-09 11 +394 val_394 2008-04-09 11 +237 val_237 2008-04-09 11 +482 val_482 2008-04-09 11 +174 val_174 2008-04-09 11 +413 val_413 2008-04-09 11 +494 val_494 2008-04-09 11 +207 val_207 2008-04-09 11 +199 val_199 2008-04-09 11 +466 val_466 2008-04-09 11 +208 val_208 2008-04-09 11 +174 val_174 2008-04-09 11 +399 val_399 2008-04-09 11 +396 val_396 2008-04-09 11 +247 val_247 2008-04-09 11 +417 val_417 2008-04-09 11 +489 val_489 2008-04-09 11 +162 val_162 2008-04-09 11 +377 val_377 2008-04-09 11 +397 val_397 2008-04-09 11 +309 val_309 2008-04-09 11 +365 val_365 2008-04-09 11 +266 val_266 2008-04-09 11 +439 val_439 2008-04-09 11 +342 val_342 2008-04-09 11 +367 val_367 2008-04-09 11 +325 val_325 2008-04-09 11 +167 val_167 2008-04-09 11 +195 val_195 2008-04-09 11 +475 val_475 2008-04-09 11 +17 val_17 2008-04-09 11 +113 val_113 2008-04-09 11 +155 val_155 2008-04-09 11 +203 val_203 2008-04-09 11 +339 val_339 2008-04-09 11 +0 val_0 2008-04-09 11 +455 val_455 2008-04-09 11 +128 val_128 2008-04-09 11 +311 val_311 2008-04-09 11 +316 val_316 2008-04-09 11 +57 val_57 2008-04-09 11 +302 val_302 2008-04-09 11 +205 val_205 2008-04-09 11 +149 val_149 2008-04-09 11 +438 val_438 2008-04-09 11 +345 val_345 2008-04-09 11 +129 val_129 2008-04-09 11 +170 val_170 2008-04-09 11 +20 val_20 2008-04-09 11 +489 val_489 2008-04-09 11 +157 val_157 2008-04-09 11 +378 val_378 2008-04-09 11 +221 val_221 2008-04-09 11 +92 val_92 2008-04-09 11 +111 val_111 2008-04-09 11 +47 val_47 2008-04-09 11 +72 val_72 2008-04-09 11 +4 val_4 2008-04-09 11 +280 val_280 2008-04-09 11 +35 val_35 2008-04-09 11 +427 val_427 2008-04-09 11 +277 val_277 2008-04-09 11 +208 val_208 2008-04-09 11 +356 val_356 2008-04-09 11 +399 val_399 2008-04-09 11 +169 val_169 2008-04-09 11 +382 val_382 2008-04-09 11 +498 val_498 2008-04-09 11 +125 val_125 2008-04-09 11 +386 val_386 2008-04-09 11 +437 val_437 2008-04-09 11 +469 val_469 2008-04-09 11 +192 val_192 2008-04-09 11 +286 val_286 2008-04-09 11 +187 val_187 2008-04-09 11 +176 val_176 2008-04-09 11 +54 val_54 2008-04-09 11 +459 val_459 2008-04-09 11 +51 val_51 2008-04-09 11 +138 val_138 2008-04-09 11 +103 val_103 2008-04-09 11 +239 val_239 2008-04-09 11 +213 val_213 2008-04-09 11 +216 val_216 2008-04-09 11 +430 val_430 2008-04-09 11 +278 val_278 2008-04-09 11 +176 val_176 2008-04-09 11 +289 val_289 2008-04-09 11 +221 val_221 2008-04-09 11 +65 val_65 2008-04-09 11 +318 val_318 2008-04-09 11 +332 val_332 2008-04-09 11 +311 val_311 2008-04-09 11 +275 val_275 2008-04-09 11 +137 val_137 2008-04-09 11 +241 val_241 2008-04-09 11 +83 val_83 2008-04-09 11 +333 val_333 2008-04-09 11 +180 val_180 2008-04-09 11 +284 val_284 2008-04-09 11 +12 val_12 2008-04-09 11 +230 val_230 2008-04-09 11 +181 val_181 2008-04-09 11 +67 val_67 2008-04-09 11 +260 val_260 2008-04-09 11 +404 val_404 2008-04-09 11 +384 val_384 2008-04-09 11 +489 val_489 2008-04-09 11 +353 val_353 2008-04-09 11 +373 val_373 2008-04-09 11 +272 val_272 2008-04-09 11 +138 val_138 2008-04-09 11 +217 val_217 2008-04-09 11 +84 val_84 2008-04-09 11 +348 val_348 2008-04-09 11 +466 val_466 2008-04-09 11 +58 val_58 2008-04-09 11 +8 val_8 2008-04-09 11 +411 val_411 2008-04-09 11 +230 val_230 2008-04-09 11 +208 val_208 2008-04-09 11 +348 val_348 2008-04-09 11 +24 val_24 2008-04-09 11 +463 val_463 2008-04-09 11 +431 val_431 2008-04-09 11 +179 val_179 2008-04-09 11 +172 val_172 2008-04-09 11 +42 val_42 2008-04-09 11 +129 val_129 2008-04-09 11 +158 val_158 2008-04-09 11 +119 val_119 2008-04-09 11 +496 val_496 2008-04-09 11 +0 val_0 2008-04-09 11 +322 val_322 2008-04-09 11 +197 val_197 2008-04-09 11 +468 val_468 2008-04-09 11 +393 val_393 2008-04-09 11 +454 val_454 2008-04-09 11 +100 val_100 2008-04-09 11 +298 val_298 2008-04-09 11 +199 val_199 2008-04-09 11 +191 val_191 2008-04-09 11 +418 val_418 2008-04-09 11 +96 val_96 2008-04-09 11 +26 val_26 2008-04-09 11 +165 val_165 2008-04-09 11 +327 val_327 2008-04-09 11 +230 val_230 2008-04-09 11 +205 val_205 2008-04-09 11 +120 val_120 2008-04-09 11 +131 val_131 2008-04-09 11 +51 val_51 2008-04-09 11 +404 val_404 2008-04-09 11 +43 val_43 2008-04-09 11 +436 val_436 2008-04-09 11 +156 val_156 2008-04-09 11 +469 val_469 2008-04-09 11 +468 val_468 2008-04-09 11 +308 val_308 2008-04-09 11 +95 val_95 2008-04-09 11 +196 val_196 2008-04-09 11 +288 val_288 2008-04-09 11 +481 val_481 2008-04-09 11 +457 val_457 2008-04-09 11 +98 val_98 2008-04-09 11 +282 val_282 2008-04-09 11 +197 val_197 2008-04-09 11 +187 val_187 2008-04-09 11 +318 val_318 2008-04-09 11 +318 val_318 2008-04-09 11 +409 val_409 2008-04-09 11 +470 val_470 2008-04-09 11 +137 val_137 2008-04-09 11 +369 val_369 2008-04-09 11 +316 val_316 2008-04-09 11 +169 val_169 2008-04-09 11 +413 val_413 2008-04-09 11 +85 val_85 2008-04-09 11 +77 val_77 2008-04-09 11 +0 val_0 2008-04-09 11 +490 val_490 2008-04-09 11 +87 val_87 2008-04-09 11 +364 val_364 2008-04-09 11 +179 val_179 2008-04-09 11 +118 val_118 2008-04-09 11 +134 val_134 2008-04-09 11 +395 val_395 2008-04-09 11 +282 val_282 2008-04-09 11 +138 val_138 2008-04-09 11 +238 val_238 2008-04-09 11 +419 val_419 2008-04-09 11 +15 val_15 2008-04-09 11 +118 val_118 2008-04-09 11 +72 val_72 2008-04-09 11 +90 val_90 2008-04-09 11 +307 val_307 2008-04-09 11 +19 val_19 2008-04-09 11 +435 val_435 2008-04-09 11 +10 val_10 2008-04-09 11 +277 val_277 2008-04-09 11 +273 val_273 2008-04-09 11 +306 val_306 2008-04-09 11 +224 val_224 2008-04-09 11 +309 val_309 2008-04-09 11 +389 val_389 2008-04-09 11 +327 val_327 2008-04-09 11 +242 val_242 2008-04-09 11 +369 val_369 2008-04-09 11 +392 val_392 2008-04-09 11 +272 val_272 2008-04-09 11 +331 val_331 2008-04-09 11 +401 val_401 2008-04-09 11 +242 val_242 2008-04-09 11 +452 val_452 2008-04-09 11 +177 val_177 2008-04-09 11 +226 val_226 2008-04-09 11 +5 val_5 2008-04-09 11 +497 val_497 2008-04-09 11 +402 val_402 2008-04-09 11 +396 val_396 2008-04-09 11 +317 val_317 2008-04-09 11 +395 val_395 2008-04-09 11 +58 val_58 2008-04-09 11 +35 val_35 2008-04-09 11 +336 val_336 2008-04-09 11 +95 val_95 2008-04-09 11 +11 val_11 2008-04-09 11 +168 val_168 2008-04-09 11 +34 val_34 2008-04-09 11 +229 val_229 2008-04-09 11 +233 val_233 2008-04-09 11 +143 val_143 2008-04-09 11 +472 val_472 2008-04-09 11 +322 val_322 2008-04-09 11 +498 val_498 2008-04-09 11 +160 val_160 2008-04-09 11 +195 val_195 2008-04-09 11 +42 val_42 2008-04-09 11 +321 val_321 2008-04-09 11 +430 val_430 2008-04-09 11 +119 val_119 2008-04-09 11 +489 val_489 2008-04-09 11 +458 val_458 2008-04-09 11 +78 val_78 2008-04-09 11 +76 val_76 2008-04-09 11 +41 val_41 2008-04-09 11 +223 val_223 2008-04-09 11 +492 val_492 2008-04-09 11 +149 val_149 2008-04-09 11 +449 val_449 2008-04-09 11 +218 val_218 2008-04-09 11 +228 val_228 2008-04-09 11 +138 val_138 2008-04-09 11 +453 val_453 2008-04-09 11 +30 val_30 2008-04-09 11 +209 val_209 2008-04-09 11 +64 val_64 2008-04-09 11 +468 val_468 2008-04-09 11 +76 val_76 2008-04-09 11 +74 val_74 2008-04-09 11 +342 val_342 2008-04-09 11 +69 val_69 2008-04-09 11 +230 val_230 2008-04-09 11 +33 val_33 2008-04-09 11 +368 val_368 2008-04-09 11 +103 val_103 2008-04-09 11 +296 val_296 2008-04-09 11 +113 val_113 2008-04-09 11 +216 val_216 2008-04-09 11 +367 val_367 2008-04-09 11 +344 val_344 2008-04-09 11 +167 val_167 2008-04-09 11 +274 val_274 2008-04-09 11 +219 val_219 2008-04-09 11 +239 val_239 2008-04-09 11 +485 val_485 2008-04-09 11 +116 val_116 2008-04-09 11 +223 val_223 2008-04-09 11 +256 val_256 2008-04-09 11 +263 val_263 2008-04-09 11 +70 val_70 2008-04-09 11 +487 val_487 2008-04-09 11 +480 val_480 2008-04-09 11 +401 val_401 2008-04-09 11 +288 val_288 2008-04-09 11 +191 val_191 2008-04-09 11 +5 val_5 2008-04-09 11 +244 val_244 2008-04-09 11 +438 val_438 2008-04-09 11 +128 val_128 2008-04-09 11 +467 val_467 2008-04-09 11 +432 val_432 2008-04-09 11 +202 val_202 2008-04-09 11 +316 val_316 2008-04-09 11 +229 val_229 2008-04-09 11 +469 val_469 2008-04-09 11 +463 val_463 2008-04-09 11 +280 val_280 2008-04-09 11 +2 val_2 2008-04-09 11 +35 val_35 2008-04-09 11 +283 val_283 2008-04-09 11 +331 val_331 2008-04-09 11 +235 val_235 2008-04-09 11 +80 val_80 2008-04-09 11 +44 val_44 2008-04-09 11 +193 val_193 2008-04-09 11 +321 val_321 2008-04-09 11 +335 val_335 2008-04-09 11 +104 val_104 2008-04-09 11 +466 val_466 2008-04-09 11 +366 val_366 2008-04-09 11 +175 val_175 2008-04-09 11 +403 val_403 2008-04-09 11 +483 val_483 2008-04-09 11 +53 val_53 2008-04-09 11 +105 val_105 2008-04-09 11 +257 val_257 2008-04-09 11 +406 val_406 2008-04-09 11 +409 val_409 2008-04-09 11 +190 val_190 2008-04-09 11 +406 val_406 2008-04-09 11 +401 val_401 2008-04-09 11 +114 val_114 2008-04-09 11 +258 val_258 2008-04-09 11 +90 val_90 2008-04-09 11 +203 val_203 2008-04-09 11 +262 val_262 2008-04-09 11 +348 val_348 2008-04-09 11 +424 val_424 2008-04-09 11 +12 val_12 2008-04-09 11 +396 val_396 2008-04-09 11 +201 val_201 2008-04-09 11 +217 val_217 2008-04-09 11 +164 val_164 2008-04-09 11 +431 val_431 2008-04-09 11 +454 val_454 2008-04-09 11 +478 val_478 2008-04-09 11 +298 val_298 2008-04-09 11 +125 val_125 2008-04-09 11 +431 val_431 2008-04-09 11 +164 val_164 2008-04-09 11 +424 val_424 2008-04-09 11 +187 val_187 2008-04-09 11 +382 val_382 2008-04-09 11 +5 val_5 2008-04-09 11 +70 val_70 2008-04-09 11 +397 val_397 2008-04-09 11 +480 val_480 2008-04-09 11 +291 val_291 2008-04-09 11 +24 val_24 2008-04-09 11 +351 val_351 2008-04-09 11 +255 val_255 2008-04-09 11 +104 val_104 2008-04-09 11 +70 val_70 2008-04-09 11 +163 val_163 2008-04-09 11 +438 val_438 2008-04-09 11 +119 val_119 2008-04-09 11 +414 val_414 2008-04-09 11 +200 val_200 2008-04-09 11 +491 val_491 2008-04-09 11 +237 val_237 2008-04-09 11 +439 val_439 2008-04-09 11 +360 val_360 2008-04-09 11 +248 val_248 2008-04-09 11 +479 val_479 2008-04-09 11 +305 val_305 2008-04-09 11 +417 val_417 2008-04-09 11 +199 val_199 2008-04-09 11 +444 val_444 2008-04-09 11 +120 val_120 2008-04-09 11 +429 val_429 2008-04-09 11 +169 val_169 2008-04-09 11 +443 val_443 2008-04-09 11 +323 val_323 2008-04-09 11 +325 val_325 2008-04-09 11 +277 val_277 2008-04-09 11 +230 val_230 2008-04-09 11 +478 val_478 2008-04-09 11 +178 val_178 2008-04-09 11 +468 val_468 2008-04-09 11 +310 val_310 2008-04-09 11 +317 val_317 2008-04-09 11 +333 val_333 2008-04-09 11 +493 val_493 2008-04-09 11 +460 val_460 2008-04-09 11 +207 val_207 2008-04-09 11 +249 val_249 2008-04-09 11 +265 val_265 2008-04-09 11 +480 val_480 2008-04-09 11 +83 val_83 2008-04-09 11 +136 val_136 2008-04-09 11 +353 val_353 2008-04-09 11 +172 val_172 2008-04-09 11 +214 val_214 2008-04-09 11 +462 val_462 2008-04-09 11 +233 val_233 2008-04-09 11 +406 val_406 2008-04-09 11 +133 val_133 2008-04-09 11 +175 val_175 2008-04-09 11 +189 val_189 2008-04-09 11 +454 val_454 2008-04-09 11 +375 val_375 2008-04-09 11 +401 val_401 2008-04-09 11 +421 val_421 2008-04-09 11 +407 val_407 2008-04-09 11 +384 val_384 2008-04-09 11 +256 val_256 2008-04-09 11 +26 val_26 2008-04-09 11 +134 val_134 2008-04-09 11 +67 val_67 2008-04-09 11 +384 val_384 2008-04-09 11 +379 val_379 2008-04-09 11 +18 val_18 2008-04-09 11 +462 val_462 2008-04-09 11 +492 val_492 2008-04-09 11 +100 val_100 2008-04-09 11 +298 val_298 2008-04-09 11 +9 val_9 2008-04-09 11 +341 val_341 2008-04-09 11 +498 val_498 2008-04-09 11 +146 val_146 2008-04-09 11 +458 val_458 2008-04-09 11 +362 val_362 2008-04-09 11 +186 val_186 2008-04-09 11 +285 val_285 2008-04-09 11 +348 val_348 2008-04-09 11 +167 val_167 2008-04-09 11 +18 val_18 2008-04-09 11 +273 val_273 2008-04-09 11 +183 val_183 2008-04-09 11 +281 val_281 2008-04-09 11 +344 val_344 2008-04-09 11 +97 val_97 2008-04-09 11 +469 val_469 2008-04-09 11 +315 val_315 2008-04-09 11 +84 val_84 2008-04-09 11 +28 val_28 2008-04-09 11 +37 val_37 2008-04-09 11 +448 val_448 2008-04-09 11 +152 val_152 2008-04-09 11 +348 val_348 2008-04-09 11 +307 val_307 2008-04-09 11 +194 val_194 2008-04-09 11 +414 val_414 2008-04-09 11 +477 val_477 2008-04-09 11 +222 val_222 2008-04-09 11 +126 val_126 2008-04-09 11 +90 val_90 2008-04-09 11 +169 val_169 2008-04-09 11 +403 val_403 2008-04-09 11 +400 val_400 2008-04-09 11 +200 val_200 2008-04-09 11 +97 val_97 2008-04-09 11 +238 val_238 2008-04-09 12 +86 val_86 2008-04-09 12 +311 val_311 2008-04-09 12 +27 val_27 2008-04-09 12 +165 val_165 2008-04-09 12 +409 val_409 2008-04-09 12 +255 val_255 2008-04-09 12 +278 val_278 2008-04-09 12 +98 val_98 2008-04-09 12 +484 val_484 2008-04-09 12 +265 val_265 2008-04-09 12 +193 val_193 2008-04-09 12 +401 val_401 2008-04-09 12 +150 val_150 2008-04-09 12 +273 val_273 2008-04-09 12 +224 val_224 2008-04-09 12 +369 val_369 2008-04-09 12 +66 val_66 2008-04-09 12 +128 val_128 2008-04-09 12 +213 val_213 2008-04-09 12 +146 val_146 2008-04-09 12 +406 val_406 2008-04-09 12 +429 val_429 2008-04-09 12 +374 val_374 2008-04-09 12 +152 val_152 2008-04-09 12 +469 val_469 2008-04-09 12 +145 val_145 2008-04-09 12 +495 val_495 2008-04-09 12 +37 val_37 2008-04-09 12 +327 val_327 2008-04-09 12 +281 val_281 2008-04-09 12 +277 val_277 2008-04-09 12 +209 val_209 2008-04-09 12 +15 val_15 2008-04-09 12 +82 val_82 2008-04-09 12 +403 val_403 2008-04-09 12 +166 val_166 2008-04-09 12 +417 val_417 2008-04-09 12 +430 val_430 2008-04-09 12 +252 val_252 2008-04-09 12 +292 val_292 2008-04-09 12 +219 val_219 2008-04-09 12 +287 val_287 2008-04-09 12 +153 val_153 2008-04-09 12 +193 val_193 2008-04-09 12 +338 val_338 2008-04-09 12 +446 val_446 2008-04-09 12 +459 val_459 2008-04-09 12 +394 val_394 2008-04-09 12 +237 val_237 2008-04-09 12 +482 val_482 2008-04-09 12 +174 val_174 2008-04-09 12 +413 val_413 2008-04-09 12 +494 val_494 2008-04-09 12 +207 val_207 2008-04-09 12 +199 val_199 2008-04-09 12 +466 val_466 2008-04-09 12 +208 val_208 2008-04-09 12 +174 val_174 2008-04-09 12 +399 val_399 2008-04-09 12 +396 val_396 2008-04-09 12 +247 val_247 2008-04-09 12 +417 val_417 2008-04-09 12 +489 val_489 2008-04-09 12 +162 val_162 2008-04-09 12 +377 val_377 2008-04-09 12 +397 val_397 2008-04-09 12 +309 val_309 2008-04-09 12 +365 val_365 2008-04-09 12 +266 val_266 2008-04-09 12 +439 val_439 2008-04-09 12 +342 val_342 2008-04-09 12 +367 val_367 2008-04-09 12 +325 val_325 2008-04-09 12 +167 val_167 2008-04-09 12 +195 val_195 2008-04-09 12 +475 val_475 2008-04-09 12 +17 val_17 2008-04-09 12 +113 val_113 2008-04-09 12 +155 val_155 2008-04-09 12 +203 val_203 2008-04-09 12 +339 val_339 2008-04-09 12 +0 val_0 2008-04-09 12 +455 val_455 2008-04-09 12 +128 val_128 2008-04-09 12 +311 val_311 2008-04-09 12 +316 val_316 2008-04-09 12 +57 val_57 2008-04-09 12 +302 val_302 2008-04-09 12 +205 val_205 2008-04-09 12 +149 val_149 2008-04-09 12 +438 val_438 2008-04-09 12 +345 val_345 2008-04-09 12 +129 val_129 2008-04-09 12 +170 val_170 2008-04-09 12 +20 val_20 2008-04-09 12 +489 val_489 2008-04-09 12 +157 val_157 2008-04-09 12 +378 val_378 2008-04-09 12 +221 val_221 2008-04-09 12 +92 val_92 2008-04-09 12 +111 val_111 2008-04-09 12 +47 val_47 2008-04-09 12 +72 val_72 2008-04-09 12 +4 val_4 2008-04-09 12 +280 val_280 2008-04-09 12 +35 val_35 2008-04-09 12 +427 val_427 2008-04-09 12 +277 val_277 2008-04-09 12 +208 val_208 2008-04-09 12 +356 val_356 2008-04-09 12 +399 val_399 2008-04-09 12 +169 val_169 2008-04-09 12 +382 val_382 2008-04-09 12 +498 val_498 2008-04-09 12 +125 val_125 2008-04-09 12 +386 val_386 2008-04-09 12 +437 val_437 2008-04-09 12 +469 val_469 2008-04-09 12 +192 val_192 2008-04-09 12 +286 val_286 2008-04-09 12 +187 val_187 2008-04-09 12 +176 val_176 2008-04-09 12 +54 val_54 2008-04-09 12 +459 val_459 2008-04-09 12 +51 val_51 2008-04-09 12 +138 val_138 2008-04-09 12 +103 val_103 2008-04-09 12 +239 val_239 2008-04-09 12 +213 val_213 2008-04-09 12 +216 val_216 2008-04-09 12 +430 val_430 2008-04-09 12 +278 val_278 2008-04-09 12 +176 val_176 2008-04-09 12 +289 val_289 2008-04-09 12 +221 val_221 2008-04-09 12 +65 val_65 2008-04-09 12 +318 val_318 2008-04-09 12 +332 val_332 2008-04-09 12 +311 val_311 2008-04-09 12 +275 val_275 2008-04-09 12 +137 val_137 2008-04-09 12 +241 val_241 2008-04-09 12 +83 val_83 2008-04-09 12 +333 val_333 2008-04-09 12 +180 val_180 2008-04-09 12 +284 val_284 2008-04-09 12 +12 val_12 2008-04-09 12 +230 val_230 2008-04-09 12 +181 val_181 2008-04-09 12 +67 val_67 2008-04-09 12 +260 val_260 2008-04-09 12 +404 val_404 2008-04-09 12 +384 val_384 2008-04-09 12 +489 val_489 2008-04-09 12 +353 val_353 2008-04-09 12 +373 val_373 2008-04-09 12 +272 val_272 2008-04-09 12 +138 val_138 2008-04-09 12 +217 val_217 2008-04-09 12 +84 val_84 2008-04-09 12 +348 val_348 2008-04-09 12 +466 val_466 2008-04-09 12 +58 val_58 2008-04-09 12 +8 val_8 2008-04-09 12 +411 val_411 2008-04-09 12 +230 val_230 2008-04-09 12 +208 val_208 2008-04-09 12 +348 val_348 2008-04-09 12 +24 val_24 2008-04-09 12 +463 val_463 2008-04-09 12 +431 val_431 2008-04-09 12 +179 val_179 2008-04-09 12 +172 val_172 2008-04-09 12 +42 val_42 2008-04-09 12 +129 val_129 2008-04-09 12 +158 val_158 2008-04-09 12 +119 val_119 2008-04-09 12 +496 val_496 2008-04-09 12 +0 val_0 2008-04-09 12 +322 val_322 2008-04-09 12 +197 val_197 2008-04-09 12 +468 val_468 2008-04-09 12 +393 val_393 2008-04-09 12 +454 val_454 2008-04-09 12 +100 val_100 2008-04-09 12 +298 val_298 2008-04-09 12 +199 val_199 2008-04-09 12 +191 val_191 2008-04-09 12 +418 val_418 2008-04-09 12 +96 val_96 2008-04-09 12 +26 val_26 2008-04-09 12 +165 val_165 2008-04-09 12 +327 val_327 2008-04-09 12 +230 val_230 2008-04-09 12 +205 val_205 2008-04-09 12 +120 val_120 2008-04-09 12 +131 val_131 2008-04-09 12 +51 val_51 2008-04-09 12 +404 val_404 2008-04-09 12 +43 val_43 2008-04-09 12 +436 val_436 2008-04-09 12 +156 val_156 2008-04-09 12 +469 val_469 2008-04-09 12 +468 val_468 2008-04-09 12 +308 val_308 2008-04-09 12 +95 val_95 2008-04-09 12 +196 val_196 2008-04-09 12 +288 val_288 2008-04-09 12 +481 val_481 2008-04-09 12 +457 val_457 2008-04-09 12 +98 val_98 2008-04-09 12 +282 val_282 2008-04-09 12 +197 val_197 2008-04-09 12 +187 val_187 2008-04-09 12 +318 val_318 2008-04-09 12 +318 val_318 2008-04-09 12 +409 val_409 2008-04-09 12 +470 val_470 2008-04-09 12 +137 val_137 2008-04-09 12 +369 val_369 2008-04-09 12 +316 val_316 2008-04-09 12 +169 val_169 2008-04-09 12 +413 val_413 2008-04-09 12 +85 val_85 2008-04-09 12 +77 val_77 2008-04-09 12 +0 val_0 2008-04-09 12 +490 val_490 2008-04-09 12 +87 val_87 2008-04-09 12 +364 val_364 2008-04-09 12 +179 val_179 2008-04-09 12 +118 val_118 2008-04-09 12 +134 val_134 2008-04-09 12 +395 val_395 2008-04-09 12 +282 val_282 2008-04-09 12 +138 val_138 2008-04-09 12 +238 val_238 2008-04-09 12 +419 val_419 2008-04-09 12 +15 val_15 2008-04-09 12 +118 val_118 2008-04-09 12 +72 val_72 2008-04-09 12 +90 val_90 2008-04-09 12 +307 val_307 2008-04-09 12 +19 val_19 2008-04-09 12 +435 val_435 2008-04-09 12 +10 val_10 2008-04-09 12 +277 val_277 2008-04-09 12 +273 val_273 2008-04-09 12 +306 val_306 2008-04-09 12 +224 val_224 2008-04-09 12 +309 val_309 2008-04-09 12 +389 val_389 2008-04-09 12 +327 val_327 2008-04-09 12 +242 val_242 2008-04-09 12 +369 val_369 2008-04-09 12 +392 val_392 2008-04-09 12 +272 val_272 2008-04-09 12 +331 val_331 2008-04-09 12 +401 val_401 2008-04-09 12 +242 val_242 2008-04-09 12 +452 val_452 2008-04-09 12 +177 val_177 2008-04-09 12 +226 val_226 2008-04-09 12 +5 val_5 2008-04-09 12 +497 val_497 2008-04-09 12 +402 val_402 2008-04-09 12 +396 val_396 2008-04-09 12 +317 val_317 2008-04-09 12 +395 val_395 2008-04-09 12 +58 val_58 2008-04-09 12 +35 val_35 2008-04-09 12 +336 val_336 2008-04-09 12 +95 val_95 2008-04-09 12 +11 val_11 2008-04-09 12 +168 val_168 2008-04-09 12 +34 val_34 2008-04-09 12 +229 val_229 2008-04-09 12 +233 val_233 2008-04-09 12 +143 val_143 2008-04-09 12 +472 val_472 2008-04-09 12 +322 val_322 2008-04-09 12 +498 val_498 2008-04-09 12 +160 val_160 2008-04-09 12 +195 val_195 2008-04-09 12 +42 val_42 2008-04-09 12 +321 val_321 2008-04-09 12 +430 val_430 2008-04-09 12 +119 val_119 2008-04-09 12 +489 val_489 2008-04-09 12 +458 val_458 2008-04-09 12 +78 val_78 2008-04-09 12 +76 val_76 2008-04-09 12 +41 val_41 2008-04-09 12 +223 val_223 2008-04-09 12 +492 val_492 2008-04-09 12 +149 val_149 2008-04-09 12 +449 val_449 2008-04-09 12 +218 val_218 2008-04-09 12 +228 val_228 2008-04-09 12 +138 val_138 2008-04-09 12 +453 val_453 2008-04-09 12 +30 val_30 2008-04-09 12 +209 val_209 2008-04-09 12 +64 val_64 2008-04-09 12 +468 val_468 2008-04-09 12 +76 val_76 2008-04-09 12 +74 val_74 2008-04-09 12 +342 val_342 2008-04-09 12 +69 val_69 2008-04-09 12 +230 val_230 2008-04-09 12 +33 val_33 2008-04-09 12 +368 val_368 2008-04-09 12 +103 val_103 2008-04-09 12 +296 val_296 2008-04-09 12 +113 val_113 2008-04-09 12 +216 val_216 2008-04-09 12 +367 val_367 2008-04-09 12 +344 val_344 2008-04-09 12 +167 val_167 2008-04-09 12 +274 val_274 2008-04-09 12 +219 val_219 2008-04-09 12 +239 val_239 2008-04-09 12 +485 val_485 2008-04-09 12 +116 val_116 2008-04-09 12 +223 val_223 2008-04-09 12 +256 val_256 2008-04-09 12 +263 val_263 2008-04-09 12 +70 val_70 2008-04-09 12 +487 val_487 2008-04-09 12 +480 val_480 2008-04-09 12 +401 val_401 2008-04-09 12 +288 val_288 2008-04-09 12 +191 val_191 2008-04-09 12 +5 val_5 2008-04-09 12 +244 val_244 2008-04-09 12 +438 val_438 2008-04-09 12 +128 val_128 2008-04-09 12 +467 val_467 2008-04-09 12 +432 val_432 2008-04-09 12 +202 val_202 2008-04-09 12 +316 val_316 2008-04-09 12 +229 val_229 2008-04-09 12 +469 val_469 2008-04-09 12 +463 val_463 2008-04-09 12 +280 val_280 2008-04-09 12 +2 val_2 2008-04-09 12 +35 val_35 2008-04-09 12 +283 val_283 2008-04-09 12 +331 val_331 2008-04-09 12 +235 val_235 2008-04-09 12 +80 val_80 2008-04-09 12 +44 val_44 2008-04-09 12 +193 val_193 2008-04-09 12 +321 val_321 2008-04-09 12 +335 val_335 2008-04-09 12 +104 val_104 2008-04-09 12 +466 val_466 2008-04-09 12 +366 val_366 2008-04-09 12 +175 val_175 2008-04-09 12 +403 val_403 2008-04-09 12 +483 val_483 2008-04-09 12 +53 val_53 2008-04-09 12 +105 val_105 2008-04-09 12 +257 val_257 2008-04-09 12 +406 val_406 2008-04-09 12 +409 val_409 2008-04-09 12 +190 val_190 2008-04-09 12 +406 val_406 2008-04-09 12 +401 val_401 2008-04-09 12 +114 val_114 2008-04-09 12 +258 val_258 2008-04-09 12 +90 val_90 2008-04-09 12 +203 val_203 2008-04-09 12 +262 val_262 2008-04-09 12 +348 val_348 2008-04-09 12 +424 val_424 2008-04-09 12 +12 val_12 2008-04-09 12 +396 val_396 2008-04-09 12 +201 val_201 2008-04-09 12 +217 val_217 2008-04-09 12 +164 val_164 2008-04-09 12 +431 val_431 2008-04-09 12 +454 val_454 2008-04-09 12 +478 val_478 2008-04-09 12 +298 val_298 2008-04-09 12 +125 val_125 2008-04-09 12 +431 val_431 2008-04-09 12 +164 val_164 2008-04-09 12 +424 val_424 2008-04-09 12 +187 val_187 2008-04-09 12 +382 val_382 2008-04-09 12 +5 val_5 2008-04-09 12 +70 val_70 2008-04-09 12 +397 val_397 2008-04-09 12 +480 val_480 2008-04-09 12 +291 val_291 2008-04-09 12 +24 val_24 2008-04-09 12 +351 val_351 2008-04-09 12 +255 val_255 2008-04-09 12 +104 val_104 2008-04-09 12 +70 val_70 2008-04-09 12 +163 val_163 2008-04-09 12 +438 val_438 2008-04-09 12 +119 val_119 2008-04-09 12 +414 val_414 2008-04-09 12 +200 val_200 2008-04-09 12 +491 val_491 2008-04-09 12 +237 val_237 2008-04-09 12 +439 val_439 2008-04-09 12 +360 val_360 2008-04-09 12 +248 val_248 2008-04-09 12 +479 val_479 2008-04-09 12 +305 val_305 2008-04-09 12 +417 val_417 2008-04-09 12 +199 val_199 2008-04-09 12 +444 val_444 2008-04-09 12 +120 val_120 2008-04-09 12 +429 val_429 2008-04-09 12 +169 val_169 2008-04-09 12 +443 val_443 2008-04-09 12 +323 val_323 2008-04-09 12 +325 val_325 2008-04-09 12 +277 val_277 2008-04-09 12 +230 val_230 2008-04-09 12 +478 val_478 2008-04-09 12 +178 val_178 2008-04-09 12 +468 val_468 2008-04-09 12 +310 val_310 2008-04-09 12 +317 val_317 2008-04-09 12 +333 val_333 2008-04-09 12 +493 val_493 2008-04-09 12 +460 val_460 2008-04-09 12 +207 val_207 2008-04-09 12 +249 val_249 2008-04-09 12 +265 val_265 2008-04-09 12 +480 val_480 2008-04-09 12 +83 val_83 2008-04-09 12 +136 val_136 2008-04-09 12 +353 val_353 2008-04-09 12 +172 val_172 2008-04-09 12 +214 val_214 2008-04-09 12 +462 val_462 2008-04-09 12 +233 val_233 2008-04-09 12 +406 val_406 2008-04-09 12 +133 val_133 2008-04-09 12 +175 val_175 2008-04-09 12 +189 val_189 2008-04-09 12 +454 val_454 2008-04-09 12 +375 val_375 2008-04-09 12 +401 val_401 2008-04-09 12 +421 val_421 2008-04-09 12 +407 val_407 2008-04-09 12 +384 val_384 2008-04-09 12 +256 val_256 2008-04-09 12 +26 val_26 2008-04-09 12 +134 val_134 2008-04-09 12 +67 val_67 2008-04-09 12 +384 val_384 2008-04-09 12 +379 val_379 2008-04-09 12 +18 val_18 2008-04-09 12 +462 val_462 2008-04-09 12 +492 val_492 2008-04-09 12 +100 val_100 2008-04-09 12 +298 val_298 2008-04-09 12 +9 val_9 2008-04-09 12 +341 val_341 2008-04-09 12 +498 val_498 2008-04-09 12 +146 val_146 2008-04-09 12 +458 val_458 2008-04-09 12 +362 val_362 2008-04-09 12 +186 val_186 2008-04-09 12 +285 val_285 2008-04-09 12 +348 val_348 2008-04-09 12 +167 val_167 2008-04-09 12 +18 val_18 2008-04-09 12 +273 val_273 2008-04-09 12 +183 val_183 2008-04-09 12 +281 val_281 2008-04-09 12 +344 val_344 2008-04-09 12 +97 val_97 2008-04-09 12 +469 val_469 2008-04-09 12 +315 val_315 2008-04-09 12 +84 val_84 2008-04-09 12 +28 val_28 2008-04-09 12 +37 val_37 2008-04-09 12 +448 val_448 2008-04-09 12 +152 val_152 2008-04-09 12 +348 val_348 2008-04-09 12 +307 val_307 2008-04-09 12 +194 val_194 2008-04-09 12 +414 val_414 2008-04-09 12 +477 val_477 2008-04-09 12 +222 val_222 2008-04-09 12 +126 val_126 2008-04-09 12 +90 val_90 2008-04-09 12 +169 val_169 2008-04-09 12 +403 val_403 2008-04-09 12 +400 val_400 2008-04-09 12 +200 val_200 2008-04-09 12 +97 val_97 2008-04-09 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown3-5-9b129023196c29071a92e91471872593 b/sql/hive/src/test/resources/golden/ppr_pushdown3-5-9b129023196c29071a92e91471872593 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/ppr_pushdown3-6-67118904e6cc8e9f5210fab88e87fb8f b/sql/hive/src/test/resources/golden/ppr_pushdown3-6-67118904e6cc8e9f5210fab88e87fb8f new file mode 100644 index 0000000000000..57005044dde38 --- /dev/null +++ b/sql/hive/src/test/resources/golden/ppr_pushdown3-6-67118904e6cc8e9f5210fab88e87fb8f @@ -0,0 +1,2000 @@ +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +0 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +0 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +0 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +2 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +0 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +0 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +0 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +2 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +0 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +0 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +0 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +2 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +0 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +0 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +0 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +2 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/print_header-0-860e298a0b70e7a531431e9386ddc0e7 b/sql/hive/src/test/resources/golden/print_header-0-860e298a0b70e7a531431e9386ddc0e7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/print_header-0-860e298a0b70e7a531431e9386ddc0e7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/print_header-1-8540676fc16ac91f3629c40f393a890a b/sql/hive/src/test/resources/golden/print_header-1-8540676fc16ac91f3629c40f393a890a new file mode 100644 index 0000000000000..943e1be13b615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/print_header-1-8540676fc16ac91f3629c40f393a890a @@ -0,0 +1,10 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 2 val_2 diff --git a/sql/hive/src/test/resources/golden/print_header-2-5cff10d4b561206e7e0b2e81d862ff93 b/sql/hive/src/test/resources/golden/print_header-2-5cff10d4b561206e7e0b2e81d862ff93 new file mode 100644 index 0000000000000..951e74db0fe23 --- /dev/null +++ b/sql/hive/src/test/resources/golden/print_header-2-5cff10d4b561206e7e0b2e81d862ff93 @@ -0,0 +1,10 @@ +0 0.0 +2 2.0 +4 4.0 +5 15.0 +8 8.0 +9 9.0 +10 10.0 +11 11.0 +12 24.0 +15 30.0 diff --git a/sql/hive/src/test/resources/golden/print_header-3-e86d559aeb84a4cc017a103182c22bfb b/sql/hive/src/test/resources/golden/print_header-3-e86d559aeb84a4cc017a103182c22bfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/progress_1-0-fe903cc5a573e7aced5ee17b35d2fb04 b/sql/hive/src/test/resources/golden/progress_1-0-fe903cc5a573e7aced5ee17b35d2fb04 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/progress_1-0-fe903cc5a573e7aced5ee17b35d2fb04 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/progress_1-1-e93fbb4cb074376a645dc22075c0eab6 b/sql/hive/src/test/resources/golden/progress_1-1-e93fbb4cb074376a645dc22075c0eab6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/progress_1-2-70ba81c09588aa586e62ebaee2af685f b/sql/hive/src/test/resources/golden/progress_1-2-70ba81c09588aa586e62ebaee2af685f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/progress_1-3-43d286eebddaee26cf95f26e62a75fe4 b/sql/hive/src/test/resources/golden/progress_1-3-43d286eebddaee26cf95f26e62a75fe4 new file mode 100644 index 0000000000000..0b3e0a69a8c79 --- /dev/null +++ b/sql/hive/src/test/resources/golden/progress_1-3-43d286eebddaee26cf95f26e62a75fe4 @@ -0,0 +1 @@ +5000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-0-44765a9e389cd7be27e038d257ad2c61 b/sql/hive/src/test/resources/golden/protectmode-0-44765a9e389cd7be27e038d257ad2c61 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-1-377270bf028b6a5e8a5a1679421aece6 b/sql/hive/src/test/resources/golden/protectmode-1-377270bf028b6a5e8a5a1679421aece6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-10-b993dfdb8636411e4e9182a5a1931362 b/sql/hive/src/test/resources/golden/protectmode-10-b993dfdb8636411e4e9182a5a1931362 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-11-b5aa37f2dd84c363d257ededdcc9a6b6 b/sql/hive/src/test/resources/golden/protectmode-11-b5aa37f2dd84c363d257ededdcc9a6b6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-12-d35a2c6ec13dcba7f4856522d2c781a b/sql/hive/src/test/resources/golden/protectmode-12-d35a2c6ec13dcba7f4856522d2c781a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-13-70e6f4e73e37e6288fafdf6b8da5c62c b/sql/hive/src/test/resources/golden/protectmode-13-70e6f4e73e37e6288fafdf6b8da5c62c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-14-f817d21ee3a7646bf107c87bb264586b b/sql/hive/src/test/resources/golden/protectmode-14-f817d21ee3a7646bf107c87bb264586b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-15-c51a200a345ceca9838507176a4a6dd6 b/sql/hive/src/test/resources/golden/protectmode-15-c51a200a345ceca9838507176a4a6dd6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-16-151259dfc1cea42392a7511991c58a5b b/sql/hive/src/test/resources/golden/protectmode-16-151259dfc1cea42392a7511991c58a5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-17-6fa385b2d2c6fee674dfff38f7338080 b/sql/hive/src/test/resources/golden/protectmode-17-6fa385b2d2c6fee674dfff38f7338080 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-18-968e78b685c3b83bf5eb8a3a786657a7 b/sql/hive/src/test/resources/golden/protectmode-18-968e78b685c3b83bf5eb8a3a786657a7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-19-b6e156f104768706aa587b762a9d4d18 b/sql/hive/src/test/resources/golden/protectmode-19-b6e156f104768706aa587b762a9d4d18 new file mode 100644 index 0000000000000..eb63636d0bfd4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/protectmode-19-b6e156f104768706aa587b762a9d4d18 @@ -0,0 +1,9 @@ +col string None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +Detailed Partition Information Partition(values:[p1], dbName:default, tableName:tbl2, createTime:1388801768, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:col, type:string, comment:null), FieldSchema(name:p, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/tbl2/p=p1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{last_modified_by=marmbrus, last_modified_time=1388801769, PROTECT_MODE=OFFLINE, transient_lastDdlTime=1388801769}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-2-f450722c47e95d5825d0cb920c212aea b/sql/hive/src/test/resources/golden/protectmode-2-f450722c47e95d5825d0cb920c212aea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-20-719ec12056901bb0330fec1f05d4a94b b/sql/hive/src/test/resources/golden/protectmode-20-719ec12056901bb0330fec1f05d4a94b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-21-a31442a7d6c6950c137856ab861d622d b/sql/hive/src/test/resources/golden/protectmode-21-a31442a7d6c6950c137856ab861d622d new file mode 100644 index 0000000000000..964ede006ad21 --- /dev/null +++ b/sql/hive/src/test/resources/golden/protectmode-21-a31442a7d6c6950c137856ab861d622d @@ -0,0 +1,9 @@ +col string None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +Detailed Table Information Table(tableName:tbl2, dbName:default, owner:marmbrus, createTime:1388801768, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col, type:string, comment:null), FieldSchema(name:p, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/tbl2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:p, type:string, comment:null)], parameters:{last_modified_by=marmbrus, last_modified_time=1388801770, PROTECT_MODE=OFFLINE, transient_lastDdlTime=1388801770}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-22-8e2cda1a6895512d0c2e72e6b8b283d1 b/sql/hive/src/test/resources/golden/protectmode-22-8e2cda1a6895512d0c2e72e6b8b283d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-23-a31442a7d6c6950c137856ab861d622d b/sql/hive/src/test/resources/golden/protectmode-23-a31442a7d6c6950c137856ab861d622d new file mode 100644 index 0000000000000..68b03670f5f80 --- /dev/null +++ b/sql/hive/src/test/resources/golden/protectmode-23-a31442a7d6c6950c137856ab861d622d @@ -0,0 +1,9 @@ +col string None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +Detailed Table Information Table(tableName:tbl2, dbName:default, owner:marmbrus, createTime:1388801768, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col, type:string, comment:null), FieldSchema(name:p, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/tbl2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:p, type:string, comment:null)], parameters:{last_modified_by=marmbrus, last_modified_time=1388801770, PROTECT_MODE=OFFLINE,NO_DROP, transient_lastDdlTime=1388801770}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-24-2281fb42e04f3f3b1ae71e76feeb7733 b/sql/hive/src/test/resources/golden/protectmode-24-2281fb42e04f3f3b1ae71e76feeb7733 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-25-9095794bb72e75a50f84c7cc79b14df6 b/sql/hive/src/test/resources/golden/protectmode-25-9095794bb72e75a50f84c7cc79b14df6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-26-a31442a7d6c6950c137856ab861d622d b/sql/hive/src/test/resources/golden/protectmode-26-a31442a7d6c6950c137856ab861d622d new file mode 100644 index 0000000000000..ec18ce7411535 --- /dev/null +++ b/sql/hive/src/test/resources/golden/protectmode-26-a31442a7d6c6950c137856ab861d622d @@ -0,0 +1,9 @@ +col string None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +Detailed Table Information Table(tableName:tbl2, dbName:default, owner:marmbrus, createTime:1388801768, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col, type:string, comment:null), FieldSchema(name:p, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/tbl2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:p, type:string, comment:null)], parameters:{last_modified_by=marmbrus, last_modified_time=1388801770, PROTECT_MODE=NO_DROP, transient_lastDdlTime=1388801770}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-27-af002c5db76382ae7619968eaff3cc91 b/sql/hive/src/test/resources/golden/protectmode-27-af002c5db76382ae7619968eaff3cc91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-28-a31442a7d6c6950c137856ab861d622d b/sql/hive/src/test/resources/golden/protectmode-28-a31442a7d6c6950c137856ab861d622d new file mode 100644 index 0000000000000..a6202ac5fc0eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/protectmode-28-a31442a7d6c6950c137856ab861d622d @@ -0,0 +1,9 @@ +col string None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +Detailed Table Information Table(tableName:tbl2, dbName:default, owner:marmbrus, createTime:1388801768, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col, type:string, comment:null), FieldSchema(name:p, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/tbl2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:p, type:string, comment:null)], parameters:{last_modified_by=marmbrus, last_modified_time=1388801771, transient_lastDdlTime=1388801771}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-29-6fa385b2d2c6fee674dfff38f7338080 b/sql/hive/src/test/resources/golden/protectmode-29-6fa385b2d2c6fee674dfff38f7338080 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-3-4038060ccc6df535736b4b3cdf722cc b/sql/hive/src/test/resources/golden/protectmode-3-4038060ccc6df535736b4b3cdf722cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-30-2cf1d601e4e37fa223cc841c0bf443f1 b/sql/hive/src/test/resources/golden/protectmode-30-2cf1d601e4e37fa223cc841c0bf443f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-31-97f50f7a49ee261db1888e93cf696c27 b/sql/hive/src/test/resources/golden/protectmode-31-97f50f7a49ee261db1888e93cf696c27 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-32-b6e156f104768706aa587b762a9d4d18 b/sql/hive/src/test/resources/golden/protectmode-32-b6e156f104768706aa587b762a9d4d18 new file mode 100644 index 0000000000000..0a6cebbbd0b82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/protectmode-32-b6e156f104768706aa587b762a9d4d18 @@ -0,0 +1,9 @@ +col string None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +Detailed Partition Information Partition(values:[p1], dbName:default, tableName:tbl2, createTime:1388801768, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:col, type:string, comment:null), FieldSchema(name:p, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/tbl2/p=p1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{last_modified_by=marmbrus, last_modified_time=1388801783, transient_lastDdlTime=1388801783}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-33-151259dfc1cea42392a7511991c58a5b b/sql/hive/src/test/resources/golden/protectmode-33-151259dfc1cea42392a7511991c58a5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-34-520cc99451f889b26e12308b956f41e2 b/sql/hive/src/test/resources/golden/protectmode-34-520cc99451f889b26e12308b956f41e2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-35-67854bfbea7afeca2987ced73b68e671 b/sql/hive/src/test/resources/golden/protectmode-35-67854bfbea7afeca2987ced73b68e671 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-36-5b68bd2ad93372f1926166bb1eea7ae1 b/sql/hive/src/test/resources/golden/protectmode-36-5b68bd2ad93372f1926166bb1eea7ae1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-37-8c07fbbf528fd9180db5a52474f6683e b/sql/hive/src/test/resources/golden/protectmode-37-8c07fbbf528fd9180db5a52474f6683e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-38-da4a5ad43dbf3df8e31d23979af46423 b/sql/hive/src/test/resources/golden/protectmode-38-da4a5ad43dbf3df8e31d23979af46423 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-39-771f55b9c0dbadc2b8799cb4756c63e9 b/sql/hive/src/test/resources/golden/protectmode-39-771f55b9c0dbadc2b8799cb4756c63e9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-4-b993dfdb8636411e4e9182a5a1931362 b/sql/hive/src/test/resources/golden/protectmode-4-b993dfdb8636411e4e9182a5a1931362 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-40-39024332d020339bd9396c9b15403a0c b/sql/hive/src/test/resources/golden/protectmode-40-39024332d020339bd9396c9b15403a0c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-41-7643ff9b92368f2cc44ab8b1f5738d24 b/sql/hive/src/test/resources/golden/protectmode-41-7643ff9b92368f2cc44ab8b1f5738d24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-42-3a8863ad6fac90ba48555c1042c92ebb b/sql/hive/src/test/resources/golden/protectmode-42-3a8863ad6fac90ba48555c1042c92ebb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-43-377270bf028b6a5e8a5a1679421aece6 b/sql/hive/src/test/resources/golden/protectmode-43-377270bf028b6a5e8a5a1679421aece6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-5-2af90060e2a14790441e0716e3372e7c b/sql/hive/src/test/resources/golden/protectmode-5-2af90060e2a14790441e0716e3372e7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-6-e2d1fc9c94e0d3597f393aec99850510 b/sql/hive/src/test/resources/golden/protectmode-6-e2d1fc9c94e0d3597f393aec99850510 new file mode 100644 index 0000000000000..a1ff1f8341f30 --- /dev/null +++ b/sql/hive/src/test/resources/golden/protectmode-6-e2d1fc9c94e0d3597f393aec99850510 @@ -0,0 +1,3 @@ +col string None + +Detailed Table Information Table(tableName:tbl1, dbName:default, owner:marmbrus, createTime:1388801746, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/tbl1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1388801756, PROTECT_MODE=OFFLINE, transient_lastDdlTime=1388801756}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-7-143fafe70e2ec2d10c6eeef114e7fad1 b/sql/hive/src/test/resources/golden/protectmode-7-143fafe70e2ec2d10c6eeef114e7fad1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/protectmode-8-e2d1fc9c94e0d3597f393aec99850510 b/sql/hive/src/test/resources/golden/protectmode-8-e2d1fc9c94e0d3597f393aec99850510 new file mode 100644 index 0000000000000..9098c9419556b --- /dev/null +++ b/sql/hive/src/test/resources/golden/protectmode-8-e2d1fc9c94e0d3597f393aec99850510 @@ -0,0 +1,3 @@ +col string None + +Detailed Table Information Table(tableName:tbl1, dbName:default, owner:marmbrus, createTime:1388801746, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:col, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse3973694235577030193/tbl1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{last_modified_by=marmbrus, last_modified_time=1388801756, transient_lastDdlTime=1388801756}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/protectmode-9-4038060ccc6df535736b4b3cdf722cc b/sql/hive/src/test/resources/golden/protectmode-9-4038060ccc6df535736b4b3cdf722cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/push_or-0-82eac35d076df1ee8020d57832f0f895 b/sql/hive/src/test/resources/golden/push_or-0-82eac35d076df1ee8020d57832f0f895 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/push_or-1-4c03e0f7fa028897c0caee62167eb68e b/sql/hive/src/test/resources/golden/push_or-1-4c03e0f7fa028897c0caee62167eb68e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/push_or-2-62abd65e444981a96f7cf3dab3e013f1 b/sql/hive/src/test/resources/golden/push_or-2-62abd65e444981a96f7cf3dab3e013f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/push_or-3-34a713b9523589f1eb3205037d56a5b4 b/sql/hive/src/test/resources/golden/push_or-3-34a713b9523589f1eb3205037d56a5b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/push_or-4-22888cdef1b94bde983541c1f3d510d9 b/sql/hive/src/test/resources/golden/push_or-4-22888cdef1b94bde983541c1f3d510d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/push_or-5-c94def4b18b9c8c00e7a93eb19ec694a b/sql/hive/src/test/resources/golden/push_or-5-c94def4b18b9c8c00e7a93eb19ec694a new file mode 100644 index 0000000000000..3a2f20c637883 --- /dev/null +++ b/sql/hive/src/test/resources/golden/push_or-5-c94def4b18b9c8c00e7a93eb19ec694a @@ -0,0 +1,23 @@ +0 val_0 2000-04-09 +0 val_0 2000-04-09 +0 val_0 2000-04-09 +2 val_2 2000-04-09 +4 val_4 2000-04-09 +5 val_5 2000-04-08 +5 val_5 2000-04-08 +5 val_5 2000-04-08 +5 val_5 2000-04-09 +5 val_5 2000-04-09 +5 val_5 2000-04-09 +8 val_8 2000-04-09 +9 val_9 2000-04-09 +10 val_10 2000-04-09 +11 val_11 2000-04-09 +12 val_12 2000-04-09 +12 val_12 2000-04-09 +15 val_15 2000-04-09 +15 val_15 2000-04-09 +17 val_17 2000-04-09 +18 val_18 2000-04-09 +18 val_18 2000-04-09 +19 val_19 2000-04-09 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/query_with_semi-0-3731ce715b60549c17b7993927d48436 b/sql/hive/src/test/resources/golden/query_with_semi-0-3731ce715b60549c17b7993927d48436 new file mode 100644 index 0000000000000..2f3fe0189d2c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/query_with_semi-0-3731ce715b60549c17b7993927d48436 @@ -0,0 +1 @@ +aa; \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/query_with_semi-1-3f53ec3b276b32cf81729433e47010cb b/sql/hive/src/test/resources/golden/query_with_semi-1-3f53ec3b276b32cf81729433e47010cb new file mode 100644 index 0000000000000..b5b5773c405b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/query_with_semi-1-3f53ec3b276b32cf81729433e47010cb @@ -0,0 +1 @@ +bb \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/query_with_semi-2-bf8cb175f9b13fcc23ba46be674b5767 b/sql/hive/src/test/resources/golden/query_with_semi-2-bf8cb175f9b13fcc23ba46be674b5767 new file mode 100644 index 0000000000000..2652f5f42c003 --- /dev/null +++ b/sql/hive/src/test/resources/golden/query_with_semi-2-bf8cb175f9b13fcc23ba46be674b5767 @@ -0,0 +1 @@ +cc \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/quote1-0-54ea0f3c04b185472a38a744d8003c13 b/sql/hive/src/test/resources/golden/quote1-0-54ea0f3c04b185472a38a744d8003c13 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/quote1-1-965ec21dbb2cdbfb0e8a8cb20ea96416 b/sql/hive/src/test/resources/golden/quote1-1-965ec21dbb2cdbfb0e8a8cb20ea96416 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/quote1-2-14d4949bc9215a1004c945885ef10de4 b/sql/hive/src/test/resources/golden/quote1-2-14d4949bc9215a1004c945885ef10de4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/quote1-3-f36bdb38d0c1b79c6113fa0795d14533 b/sql/hive/src/test/resources/golden/quote1-3-f36bdb38d0c1b79c6113fa0795d14533 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/quote1-4-582bb2fb4c4ee50eb97bafae452a69a6 b/sql/hive/src/test/resources/golden/quote1-4-582bb2fb4c4ee50eb97bafae452a69a6 new file mode 100644 index 0000000000000..9a0990555b81f --- /dev/null +++ b/sql/hive/src/test/resources/golden/quote1-4-582bb2fb4c4ee50eb97bafae452a69a6 @@ -0,0 +1,103 @@ +238 val_238 2008-04-08 +255 val_255 2008-04-08 +278 val_278 2008-04-08 +265 val_265 2008-04-08 +273 val_273 2008-04-08 +224 val_224 2008-04-08 +213 val_213 2008-04-08 +281 val_281 2008-04-08 +277 val_277 2008-04-08 +209 val_209 2008-04-08 +252 val_252 2008-04-08 +292 val_292 2008-04-08 +219 val_219 2008-04-08 +287 val_287 2008-04-08 +237 val_237 2008-04-08 +207 val_207 2008-04-08 +208 val_208 2008-04-08 +247 val_247 2008-04-08 +266 val_266 2008-04-08 +203 val_203 2008-04-08 +205 val_205 2008-04-08 +221 val_221 2008-04-08 +280 val_280 2008-04-08 +277 val_277 2008-04-08 +208 val_208 2008-04-08 +286 val_286 2008-04-08 +239 val_239 2008-04-08 +213 val_213 2008-04-08 +216 val_216 2008-04-08 +278 val_278 2008-04-08 +289 val_289 2008-04-08 +221 val_221 2008-04-08 +275 val_275 2008-04-08 +241 val_241 2008-04-08 +284 val_284 2008-04-08 +230 val_230 2008-04-08 +260 val_260 2008-04-08 +272 val_272 2008-04-08 +217 val_217 2008-04-08 +230 val_230 2008-04-08 +208 val_208 2008-04-08 +298 val_298 2008-04-08 +230 val_230 2008-04-08 +205 val_205 2008-04-08 +288 val_288 2008-04-08 +282 val_282 2008-04-08 +282 val_282 2008-04-08 +238 val_238 2008-04-08 +277 val_277 2008-04-08 +273 val_273 2008-04-08 +224 val_224 2008-04-08 +242 val_242 2008-04-08 +272 val_272 2008-04-08 +242 val_242 2008-04-08 +226 val_226 2008-04-08 +229 val_229 2008-04-08 +233 val_233 2008-04-08 +223 val_223 2008-04-08 +218 val_218 2008-04-08 +228 val_228 2008-04-08 +209 val_209 2008-04-08 +230 val_230 2008-04-08 +296 val_296 2008-04-08 +216 val_216 2008-04-08 +274 val_274 2008-04-08 +219 val_219 2008-04-08 +239 val_239 2008-04-08 +223 val_223 2008-04-08 +256 val_256 2008-04-08 +263 val_263 2008-04-08 +288 val_288 2008-04-08 +244 val_244 2008-04-08 +202 val_202 2008-04-08 +229 val_229 2008-04-08 +280 val_280 2008-04-08 +283 val_283 2008-04-08 +235 val_235 2008-04-08 +257 val_257 2008-04-08 +258 val_258 2008-04-08 +203 val_203 2008-04-08 +262 val_262 2008-04-08 +201 val_201 2008-04-08 +217 val_217 2008-04-08 +298 val_298 2008-04-08 +291 val_291 2008-04-08 +255 val_255 2008-04-08 +200 val_200 2008-04-08 +237 val_237 2008-04-08 +248 val_248 2008-04-08 +277 val_277 2008-04-08 +230 val_230 2008-04-08 +207 val_207 2008-04-08 +249 val_249 2008-04-08 +265 val_265 2008-04-08 +214 val_214 2008-04-08 +233 val_233 2008-04-08 +256 val_256 2008-04-08 +298 val_298 2008-04-08 +285 val_285 2008-04-08 +273 val_273 2008-04-08 +281 val_281 2008-04-08 +222 val_222 2008-04-08 +200 val_200 2008-04-08 diff --git a/sql/hive/src/test/resources/golden/quote2-0-ea1a1d0c5f9a3248afbb65e6632c5118 b/sql/hive/src/test/resources/golden/quote2-0-ea1a1d0c5f9a3248afbb65e6632c5118 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/quote2-1-34f3c423b2fb1f0b11457f45a60042b9 b/sql/hive/src/test/resources/golden/quote2-1-34f3c423b2fb1f0b11457f45a60042b9 new file mode 100644 index 0000000000000..ed1f53a6588d0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/quote2-1-34f3c423b2fb1f0b11457f45a60042b9 @@ -0,0 +1 @@ +abc abc abc' abc" abc\ abc\ abc\' abc\" abc\\ abc\\ abc\\' abc\\" abc\\\ abc\\\ abc""""\ abc''''\ awk '{print NR"\t"$0}' tab tab tab tab \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/quoted alias.attr-0-97b3c408090f758257e4bd20597a525e b/sql/hive/src/test/resources/golden/quoted alias.attr-0-97b3c408090f758257e4bd20597a525e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/quoted alias.attr-0-97b3c408090f758257e4bd20597a525e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rand_partitionpruner1-0-a7e4414330751eb8ad486bb11643f64d b/sql/hive/src/test/resources/golden/rand_partitionpruner1-0-a7e4414330751eb8ad486bb11643f64d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rand_partitionpruner1-1-11cdebc422d7a0e7b257279ac9524321 b/sql/hive/src/test/resources/golden/rand_partitionpruner1-1-11cdebc422d7a0e7b257279ac9524321 new file mode 100644 index 0000000000000..73b8edab36833 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rand_partitionpruner1-1-11cdebc422d7a0e7b257279ac9524321 @@ -0,0 +1,56 @@ +409 val_409 +429 val_429 +209 val_209 +153 val_153 +203 val_203 +170 val_170 +489 val_489 +378 val_378 +221 val_221 +498 val_498 +469 val_469 +176 val_176 +176 val_176 +384 val_384 +217 val_217 +431 val_431 +51 val_51 +288 val_288 +457 val_457 +197 val_197 +77 val_77 +138 val_138 +277 val_277 +224 val_224 +309 val_309 +389 val_389 +331 val_331 +317 val_317 +336 val_336 +42 val_42 +458 val_458 +78 val_78 +453 val_453 +74 val_74 +103 val_103 +467 val_467 +202 val_202 +469 val_469 +44 val_44 +454 val_454 +70 val_70 +491 val_491 +199 val_199 +169 val_169 +310 val_310 +233 val_233 +133 val_133 +26 val_26 +134 val_134 +18 val_18 +298 val_298 +348 val_348 +469 val_469 +37 val_37 +152 val_152 +400 val_400 diff --git a/sql/hive/src/test/resources/golden/rand_partitionpruner2-0-b9598847d77e2c425423f51d755380e8 b/sql/hive/src/test/resources/golden/rand_partitionpruner2-0-b9598847d77e2c425423f51d755380e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rand_partitionpruner2-1-b7dcf0277eab6c02a7ca47aea7703bf7 b/sql/hive/src/test/resources/golden/rand_partitionpruner2-1-b7dcf0277eab6c02a7ca47aea7703bf7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rand_partitionpruner2-2-db276de57ad86e8880037336886cd557 b/sql/hive/src/test/resources/golden/rand_partitionpruner2-2-db276de57ad86e8880037336886cd557 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rand_partitionpruner2-3-e4419c33287ca1f48a43f61cca5b5928 b/sql/hive/src/test/resources/golden/rand_partitionpruner2-3-e4419c33287ca1f48a43f61cca5b5928 new file mode 100644 index 0000000000000..e8738e9c837ee --- /dev/null +++ b/sql/hive/src/test/resources/golden/rand_partitionpruner2-3-e4419c33287ca1f48a43f61cca5b5928 @@ -0,0 +1,116 @@ +103 val_103 2008-04-08 11 +118 val_118 2008-04-08 12 +119 val_119 2008-04-08 12 +119 val_119 2008-04-08 12 +126 val_126 2008-04-08 12 +131 val_131 2008-04-08 12 +133 val_133 2008-04-08 11 +134 val_134 2008-04-08 11 +138 val_138 2008-04-08 11 +143 val_143 2008-04-08 12 +152 val_152 2008-04-08 11 +153 val_153 2008-04-08 11 +162 val_162 2008-04-08 12 +169 val_169 2008-04-08 11 +170 val_170 2008-04-08 11 +175 val_175 2008-04-08 12 +176 val_176 2008-04-08 11 +176 val_176 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 12 +191 val_191 2008-04-08 12 +197 val_197 2008-04-08 11 +199 val_199 2008-04-08 11 +200 val_200 2008-04-08 12 +201 val_201 2008-04-08 12 +202 val_202 2008-04-08 11 +203 val_203 2008-04-08 11 +209 val_209 2008-04-08 11 +214 val_214 2008-04-08 12 +217 val_217 2008-04-08 11 +218 val_218 2008-04-08 12 +221 val_221 2008-04-08 11 +223 val_223 2008-04-08 12 +224 val_224 2008-04-08 11 +229 val_229 2008-04-08 12 +230 val_230 2008-04-08 12 +233 val_233 2008-04-08 11 +233 val_233 2008-04-08 12 +237 val_237 2008-04-08 12 +238 val_238 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 11 +265 val_265 2008-04-08 12 +273 val_273 2008-04-08 12 +277 val_277 2008-04-08 11 +277 val_277 2008-04-08 12 +280 val_280 2008-04-08 12 +286 val_286 2008-04-08 12 +288 val_288 2008-04-08 11 +298 val_298 2008-04-08 11 +309 val_309 2008-04-08 11 +309 val_309 2008-04-08 12 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +322 val_322 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +331 val_331 2008-04-08 11 +332 val_332 2008-04-08 12 +336 val_336 2008-04-08 11 +336 val_336 2008-04-08 12 +339 val_339 2008-04-08 12 +341 val_341 2008-04-08 12 +342 val_342 2008-04-08 12 +348 val_348 2008-04-08 11 +348 val_348 2008-04-08 12 +35 val_35 2008-04-08 12 +364 val_364 2008-04-08 12 +37 val_37 2008-04-08 11 +378 val_378 2008-04-08 11 +384 val_384 2008-04-08 11 +389 val_389 2008-04-08 11 +400 val_400 2008-04-08 11 +403 val_403 2008-04-08 12 +407 val_407 2008-04-08 12 +409 val_409 2008-04-08 11 +417 val_417 2008-04-08 12 +42 val_42 2008-04-08 11 +424 val_424 2008-04-08 12 +429 val_429 2008-04-08 11 +429 val_429 2008-04-08 12 +430 val_430 2008-04-08 12 +431 val_431 2008-04-08 11 +432 val_432 2008-04-08 12 +44 val_44 2008-04-08 11 +453 val_453 2008-04-08 11 +454 val_454 2008-04-08 11 +457 val_457 2008-04-08 11 +457 val_457 2008-04-08 12 +458 val_458 2008-04-08 11 +466 val_466 2008-04-08 12 +467 val_467 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +469 val_469 2008-04-08 11 +47 val_47 2008-04-08 12 +470 val_470 2008-04-08 12 +489 val_489 2008-04-08 11 +491 val_491 2008-04-08 11 +496 val_496 2008-04-08 12 +498 val_498 2008-04-08 11 +498 val_498 2008-04-08 12 +51 val_51 2008-04-08 11 +58 val_58 2008-04-08 12 +70 val_70 2008-04-08 11 +72 val_72 2008-04-08 12 +74 val_74 2008-04-08 11 +77 val_77 2008-04-08 11 +77 val_77 2008-04-08 12 +78 val_78 2008-04-08 11 +82 val_82 2008-04-08 12 +87 val_87 2008-04-08 12 +90 val_90 2008-04-08 12 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +98 val_98 2008-04-08 12 diff --git a/sql/hive/src/test/resources/golden/rcfile_bigdata-0-e011be1172043c0c6d0fd2c0e89f361e b/sql/hive/src/test/resources/golden/rcfile_bigdata-0-e011be1172043c0c6d0fd2c0e89f361e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_bigdata-0-e011be1172043c0c6d0fd2c0e89f361e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_bigdata-1-6d0d6f4de136f56ab91987e19df8e178 b/sql/hive/src/test/resources/golden/rcfile_bigdata-1-6d0d6f4de136f56ab91987e19df8e178 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_bigdata-1-6d0d6f4de136f56ab91987e19df8e178 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_bigdata-2-3688b45adbdb190d58799c0b6d601055 b/sql/hive/src/test/resources/golden/rcfile_bigdata-2-3688b45adbdb190d58799c0b6d601055 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_bigdata-2-3688b45adbdb190d58799c0b6d601055 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/rcfile_bigdata-3-fc0c054cdfbf5c130532e139d497866a b/sql/hive/src/test/resources/golden/rcfile_bigdata-3-fc0c054cdfbf5c130532e139d497866a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_columnar-0-4f3c6c5b4a75c97b8cc0432a56dcafd1 b/sql/hive/src/test/resources/golden/rcfile_columnar-0-4f3c6c5b4a75c97b8cc0432a56dcafd1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_columnar-1-5d636fc4682aee89328b7c7be17e1013 b/sql/hive/src/test/resources/golden/rcfile_columnar-1-5d636fc4682aee89328b7c7be17e1013 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_columnar-2-b2f56374f2ea8a967b38e77b57138d4b b/sql/hive/src/test/resources/golden/rcfile_columnar-2-b2f56374f2ea8a967b38e77b57138d4b new file mode 100644 index 0000000000000..d1b3011bffd91 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_columnar-2-b2f56374f2ea8a967b38e77b57138d4b @@ -0,0 +1,2 @@ +key string None +value string None diff --git a/sql/hive/src/test/resources/golden/rcfile_columnar-3-4653c703effa4cc65743128fa3c65ff b/sql/hive/src/test/resources/golden/rcfile_columnar-3-4653c703effa4cc65743128fa3c65ff new file mode 100644 index 0000000000000..b7bef323d7df0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_columnar-3-4653c703effa4cc65743128fa3c65ff @@ -0,0 +1,10 @@ +165 val_165 +238 val_238 +255 val_255 +27 val_27 +278 val_278 +311 val_311 +409 val_409 +484 val_484 +86 val_86 +98 val_98 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-0-82f12a09df66752b05e89d3d12ba1e32 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-0-82f12a09df66752b05e89d3d12ba1e32 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-1-de09b3ac5ba6a77653eb361496863085 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-1-de09b3ac5ba6a77653eb361496863085 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-10-fb011a8ee13a82a873039bd28353205b b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-10-fb011a8ee13a82a873039bd28353205b new file mode 100644 index 0000000000000..96855269dbfa8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-10-fb011a8ee13a82a873039bd28353205b @@ -0,0 +1,5 @@ +255 1 +278 1 +311 1 +409 1 +484 1 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-11-3708198aac609695b22e19e89306034c b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-11-3708198aac609695b22e19e89306034c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-11-3708198aac609695b22e19e89306034c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-12-3a4c24fd561f459025264baa3fb6d87 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-12-3a4c24fd561f459025264baa3fb6d87 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-12-3a4c24fd561f459025264baa3fb6d87 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-2-bc4929594297fa2ee82b8ceff9118e46 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-2-bc4929594297fa2ee82b8ceff9118e46 new file mode 100644 index 0000000000000..2ba7d9f4f32ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-2-bc4929594297fa2ee82b8ceff9118e46 @@ -0,0 +1,5 @@ +255 val_255 +278 val_278 +311 val_311 +409 val_409 +484 val_484 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-3-18a2fa22b8cef720cb30d75353b3f276 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-3-18a2fa22b8cef720cb30d75353b3f276 new file mode 100644 index 0000000000000..1b977ce91e68d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-3-18a2fa22b8cef720cb30d75353b3f276 @@ -0,0 +1,3 @@ +255 val_255 +278 val_278 +311 val_311 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-4-fb011a8ee13a82a873039bd28353205b b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-4-fb011a8ee13a82a873039bd28353205b new file mode 100644 index 0000000000000..96855269dbfa8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-4-fb011a8ee13a82a873039bd28353205b @@ -0,0 +1,5 @@ +255 1 +278 1 +311 1 +409 1 +484 1 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-5-68975193b30cb34102b380e647d8d5f4 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-5-68975193b30cb34102b380e647d8d5f4 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-5-68975193b30cb34102b380e647d8d5f4 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-6-ea607fbed28d20e5726f4501285d698d b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-6-ea607fbed28d20e5726f4501285d698d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-6-ea607fbed28d20e5726f4501285d698d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-7-de09b3ac5ba6a77653eb361496863085 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-7-de09b3ac5ba6a77653eb361496863085 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-8-bc4929594297fa2ee82b8ceff9118e46 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-8-bc4929594297fa2ee82b8ceff9118e46 new file mode 100644 index 0000000000000..2ba7d9f4f32ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-8-bc4929594297fa2ee82b8ceff9118e46 @@ -0,0 +1,5 @@ +255 val_255 +278 val_278 +311 val_311 +409 val_409 +484 val_484 diff --git a/sql/hive/src/test/resources/golden/rcfile_lazydecompress-9-18a2fa22b8cef720cb30d75353b3f276 b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-9-18a2fa22b8cef720cb30d75353b3f276 new file mode 100644 index 0000000000000..1b977ce91e68d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_lazydecompress-9-18a2fa22b8cef720cb30d75353b3f276 @@ -0,0 +1,3 @@ +255 val_255 +278 val_278 +311 val_311 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-0-d877ca1eefa4344eae30ad3ef2039b00 b/sql/hive/src/test/resources/golden/rcfile_merge1-0-d877ca1eefa4344eae30ad3ef2039b00 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge1-0-d877ca1eefa4344eae30ad3ef2039b00 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-1-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/rcfile_merge1-1-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge1-1-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-10-f94fdb0b79dcf73989e6fbce87355753 b/sql/hive/src/test/resources/golden/rcfile_merge1-10-f94fdb0b79dcf73989e6fbce87355753 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge1-10-f94fdb0b79dcf73989e6fbce87355753 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-11-3fb2f07dd710f180a3c39dd17beccaa5 b/sql/hive/src/test/resources/golden/rcfile_merge1-11-3fb2f07dd710f180a3c39dd17beccaa5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-12-150cb190dc2343a747ea89298eb6352c b/sql/hive/src/test/resources/golden/rcfile_merge1-12-150cb190dc2343a747ea89298eb6352c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-13-af7b1e79eb40854ea82d61debaafcf40 b/sql/hive/src/test/resources/golden/rcfile_merge1-13-af7b1e79eb40854ea82d61debaafcf40 new file mode 100644 index 0000000000000..b141fed81f206 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge1-13-af7b1e79eb40854ea82d61debaafcf40 @@ -0,0 +1 @@ +53278638794 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-14-4547f75ed3cb94914c2d025c1e057b5 b/sql/hive/src/test/resources/golden/rcfile_merge1-14-4547f75ed3cb94914c2d025c1e057b5 new file mode 100644 index 0000000000000..b141fed81f206 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge1-14-4547f75ed3cb94914c2d025c1e057b5 @@ -0,0 +1 @@ +53278638794 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-15-2f190c7e30999cbdf1ce62e8f31438f4 b/sql/hive/src/test/resources/golden/rcfile_merge1-15-2f190c7e30999cbdf1ce62e8f31438f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-16-c198c437f48c3844d8d0ace881b3107e b/sql/hive/src/test/resources/golden/rcfile_merge1-16-c198c437f48c3844d8d0ace881b3107e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-2-690b2898f94ef32f01ded0ddb737a056 b/sql/hive/src/test/resources/golden/rcfile_merge1-2-690b2898f94ef32f01ded0ddb737a056 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge1-2-690b2898f94ef32f01ded0ddb737a056 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-3-f88c85ce3cbcdc607bce650e1ccff4ee b/sql/hive/src/test/resources/golden/rcfile_merge1-3-f88c85ce3cbcdc607bce650e1ccff4ee new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge1-3-f88c85ce3cbcdc607bce650e1ccff4ee @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-4-2f190c7e30999cbdf1ce62e8f31438f4 b/sql/hive/src/test/resources/golden/rcfile_merge1-4-2f190c7e30999cbdf1ce62e8f31438f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-5-c198c437f48c3844d8d0ace881b3107e b/sql/hive/src/test/resources/golden/rcfile_merge1-5-c198c437f48c3844d8d0ace881b3107e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-6-8adb6d3de3839fc1f0bd2598fdcc3d46 b/sql/hive/src/test/resources/golden/rcfile_merge1-6-8adb6d3de3839fc1f0bd2598fdcc3d46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-7-8c76c8d41133f29366359c308b0c9cc0 b/sql/hive/src/test/resources/golden/rcfile_merge1-7-8c76c8d41133f29366359c308b0c9cc0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-8-ed4ca53754ed08a0fab1d788e3c65d6f b/sql/hive/src/test/resources/golden/rcfile_merge1-8-ed4ca53754ed08a0fab1d788e3c65d6f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge1-9-780b166bd3fcc932cb217273b0636d63 b/sql/hive/src/test/resources/golden/rcfile_merge1-9-780b166bd3fcc932cb217273b0636d63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-0-f94fdb0b79dcf73989e6fbce87355753 b/sql/hive/src/test/resources/golden/rcfile_merge2-0-f94fdb0b79dcf73989e6fbce87355753 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge2-0-f94fdb0b79dcf73989e6fbce87355753 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-1-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/rcfile_merge2-1-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge2-1-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-10-5b4fb8038f522877101a4e429f082f11 b/sql/hive/src/test/resources/golden/rcfile_merge2-10-5b4fb8038f522877101a4e429f082f11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-2-690b2898f94ef32f01ded0ddb737a056 b/sql/hive/src/test/resources/golden/rcfile_merge2-2-690b2898f94ef32f01ded0ddb737a056 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge2-2-690b2898f94ef32f01ded0ddb737a056 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-3-778b659dba30ece782a956d87b1a31eb b/sql/hive/src/test/resources/golden/rcfile_merge2-3-778b659dba30ece782a956d87b1a31eb new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge2-3-778b659dba30ece782a956d87b1a31eb @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-4-5b4fb8038f522877101a4e429f082f11 b/sql/hive/src/test/resources/golden/rcfile_merge2-4-5b4fb8038f522877101a4e429f082f11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-5-78b97f09b49452e054cba2ae461813c3 b/sql/hive/src/test/resources/golden/rcfile_merge2-5-78b97f09b49452e054cba2ae461813c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-6-d5a91ca1ff9039b2dc55af8735d0249a b/sql/hive/src/test/resources/golden/rcfile_merge2-6-d5a91ca1ff9039b2dc55af8735d0249a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-7-805fc662f9b3b7a587d1043b659e2424 b/sql/hive/src/test/resources/golden/rcfile_merge2-7-805fc662f9b3b7a587d1043b659e2424 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-8-afd119f412a66bdf5cd1c74ae8965685 b/sql/hive/src/test/resources/golden/rcfile_merge2-8-afd119f412a66bdf5cd1c74ae8965685 new file mode 100644 index 0000000000000..8d25d618795b9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge2-8-afd119f412a66bdf5cd1c74ae8965685 @@ -0,0 +1 @@ +-4208881187 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge2-9-351c25ee0ca991ca9e0dbafa873b7592 b/sql/hive/src/test/resources/golden/rcfile_merge2-9-351c25ee0ca991ca9e0dbafa873b7592 new file mode 100644 index 0000000000000..8d25d618795b9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge2-9-351c25ee0ca991ca9e0dbafa873b7592 @@ -0,0 +1 @@ +-4208881187 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-0-f94fdb0b79dcf73989e6fbce87355753 b/sql/hive/src/test/resources/golden/rcfile_merge3-0-f94fdb0b79dcf73989e6fbce87355753 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge3-0-f94fdb0b79dcf73989e6fbce87355753 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-1-690b2898f94ef32f01ded0ddb737a056 b/sql/hive/src/test/resources/golden/rcfile_merge3-1-690b2898f94ef32f01ded0ddb737a056 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge3-1-690b2898f94ef32f01ded0ddb737a056 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-10-1486feb77f13bb9a0ed606fe795ef686 b/sql/hive/src/test/resources/golden/rcfile_merge3-10-1486feb77f13bb9a0ed606fe795ef686 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-11-7674266b00c52a2b6755910ea0793b69 b/sql/hive/src/test/resources/golden/rcfile_merge3-11-7674266b00c52a2b6755910ea0793b69 new file mode 100644 index 0000000000000..11ff946b46f0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge3-11-7674266b00c52a2b6755910ea0793b69 @@ -0,0 +1 @@ +14412220296 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-12-56703d58e54ca8b4fb86c92ffd74cc1f b/sql/hive/src/test/resources/golden/rcfile_merge3-12-56703d58e54ca8b4fb86c92ffd74cc1f new file mode 100644 index 0000000000000..11ff946b46f0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge3-12-56703d58e54ca8b4fb86c92ffd74cc1f @@ -0,0 +1 @@ +14412220296 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-13-d57efd24ca36f282a37be5d0bf6452e6 b/sql/hive/src/test/resources/golden/rcfile_merge3-13-d57efd24ca36f282a37be5d0bf6452e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-14-5ccde6b58d36e11d6e3c02a867eced7b b/sql/hive/src/test/resources/golden/rcfile_merge3-14-5ccde6b58d36e11d6e3c02a867eced7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-2-778b659dba30ece782a956d87b1a31eb b/sql/hive/src/test/resources/golden/rcfile_merge3-2-778b659dba30ece782a956d87b1a31eb new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge3-2-778b659dba30ece782a956d87b1a31eb @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-3-d57efd24ca36f282a37be5d0bf6452e6 b/sql/hive/src/test/resources/golden/rcfile_merge3-3-d57efd24ca36f282a37be5d0bf6452e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-4-5ccde6b58d36e11d6e3c02a867eced7b b/sql/hive/src/test/resources/golden/rcfile_merge3-4-5ccde6b58d36e11d6e3c02a867eced7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-5-bb2196ee46a7719cc88dcd6976a6eb38 b/sql/hive/src/test/resources/golden/rcfile_merge3-5-bb2196ee46a7719cc88dcd6976a6eb38 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-6-e4d1c54cf6a802eef3342bec2505f69b b/sql/hive/src/test/resources/golden/rcfile_merge3-6-e4d1c54cf6a802eef3342bec2505f69b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-7-f9661455ce2c3bbe3d9cb4dc4ce0eb98 b/sql/hive/src/test/resources/golden/rcfile_merge3-7-f9661455ce2c3bbe3d9cb4dc4ce0eb98 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-8-4891ccd223f2403e235e2c9d6b5fc18 b/sql/hive/src/test/resources/golden/rcfile_merge3-8-4891ccd223f2403e235e2c9d6b5fc18 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge3-9-7c38c42af102069e08a85a27a735eb61 b/sql/hive/src/test/resources/golden/rcfile_merge3-9-7c38c42af102069e08a85a27a735eb61 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-0-f94fdb0b79dcf73989e6fbce87355753 b/sql/hive/src/test/resources/golden/rcfile_merge4-0-f94fdb0b79dcf73989e6fbce87355753 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge4-0-f94fdb0b79dcf73989e6fbce87355753 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-1-690b2898f94ef32f01ded0ddb737a056 b/sql/hive/src/test/resources/golden/rcfile_merge4-1-690b2898f94ef32f01ded0ddb737a056 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge4-1-690b2898f94ef32f01ded0ddb737a056 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-10-1486feb77f13bb9a0ed606fe795ef686 b/sql/hive/src/test/resources/golden/rcfile_merge4-10-1486feb77f13bb9a0ed606fe795ef686 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-11-7674266b00c52a2b6755910ea0793b69 b/sql/hive/src/test/resources/golden/rcfile_merge4-11-7674266b00c52a2b6755910ea0793b69 new file mode 100644 index 0000000000000..11ff946b46f0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge4-11-7674266b00c52a2b6755910ea0793b69 @@ -0,0 +1 @@ +14412220296 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-12-56703d58e54ca8b4fb86c92ffd74cc1f b/sql/hive/src/test/resources/golden/rcfile_merge4-12-56703d58e54ca8b4fb86c92ffd74cc1f new file mode 100644 index 0000000000000..11ff946b46f0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge4-12-56703d58e54ca8b4fb86c92ffd74cc1f @@ -0,0 +1 @@ +14412220296 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-13-d57efd24ca36f282a37be5d0bf6452e6 b/sql/hive/src/test/resources/golden/rcfile_merge4-13-d57efd24ca36f282a37be5d0bf6452e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-14-5ccde6b58d36e11d6e3c02a867eced7b b/sql/hive/src/test/resources/golden/rcfile_merge4-14-5ccde6b58d36e11d6e3c02a867eced7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-2-778b659dba30ece782a956d87b1a31eb b/sql/hive/src/test/resources/golden/rcfile_merge4-2-778b659dba30ece782a956d87b1a31eb new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_merge4-2-778b659dba30ece782a956d87b1a31eb @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-3-d57efd24ca36f282a37be5d0bf6452e6 b/sql/hive/src/test/resources/golden/rcfile_merge4-3-d57efd24ca36f282a37be5d0bf6452e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-4-5ccde6b58d36e11d6e3c02a867eced7b b/sql/hive/src/test/resources/golden/rcfile_merge4-4-5ccde6b58d36e11d6e3c02a867eced7b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-5-18f216bf1ea33debc2576ac85ac1a449 b/sql/hive/src/test/resources/golden/rcfile_merge4-5-18f216bf1ea33debc2576ac85ac1a449 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-6-3e292c7212dd02d7d6000837e09a42f9 b/sql/hive/src/test/resources/golden/rcfile_merge4-6-3e292c7212dd02d7d6000837e09a42f9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-7-f9661455ce2c3bbe3d9cb4dc4ce0eb98 b/sql/hive/src/test/resources/golden/rcfile_merge4-7-f9661455ce2c3bbe3d9cb4dc4ce0eb98 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-8-4891ccd223f2403e235e2c9d6b5fc18 b/sql/hive/src/test/resources/golden/rcfile_merge4-8-4891ccd223f2403e235e2c9d6b5fc18 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_merge4-9-7c38c42af102069e08a85a27a735eb61 b/sql/hive/src/test/resources/golden/rcfile_merge4-9-7c38c42af102069e08a85a27a735eb61 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_null_value-0-69edd47d7cca001865102e3fad925613 b/sql/hive/src/test/resources/golden/rcfile_null_value-0-69edd47d7cca001865102e3fad925613 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_null_value-1-38ac0f806892e3b25b0038c5f227c8d b/sql/hive/src/test/resources/golden/rcfile_null_value-1-38ac0f806892e3b25b0038c5f227c8d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_null_value-2-e721b8138774fdefca7171d1051841ee b/sql/hive/src/test/resources/golden/rcfile_null_value-2-e721b8138774fdefca7171d1051841ee new file mode 100644 index 0000000000000..b0135533064c9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_null_value-2-e721b8138774fdefca7171d1051841ee @@ -0,0 +1,25 @@ +238 val_238 +NULL +311 val_311 +NULL val_27 +NULL val_165 +NULL val_409 +255 val_255 +278 val_278 +98 val_98 +NULL val_484 +NULL val_265 +NULL val_193 +401 val_401 +150 val_150 +273 val_273 +224 +369 +66 val_66 +128 +213 val_213 +146 val_146 +406 val_406 +NULL +NULL +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rcfile_null_value-3-3c82d1a57cf295901c6b931278a3760a b/sql/hive/src/test/resources/golden/rcfile_null_value-3-3c82d1a57cf295901c6b931278a3760a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_null_value-4-8e839adf91e01e3230e15e9a936c9126 b/sql/hive/src/test/resources/golden/rcfile_null_value-4-8e839adf91e01e3230e15e9a936c9126 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_null_value-5-d57d9c8882edbb3c6116d89516e4aed b/sql/hive/src/test/resources/golden/rcfile_null_value-5-d57d9c8882edbb3c6116d89516e4aed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_null_value-6-a7a74aeb8c5cac1f2fd2362398a52d2 b/sql/hive/src/test/resources/golden/rcfile_null_value-6-a7a74aeb8c5cac1f2fd2362398a52d2 new file mode 100644 index 0000000000000..06b2b4d7e6d47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_null_value-6-a7a74aeb8c5cac1f2fd2362398a52d2 @@ -0,0 +1,9 @@ +17 val_17 17 val_17 +NULL NULL 20 val_20 +NULL NULL 24 val_24 +19 val_19 19 val_19 +NULL NULL 24 val_24 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-0-644898731e5228e863236f388ba1aa07 b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-0-644898731e5228e863236f388ba1aa07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-1-a9f718201b71fa855fb81a29e1d7bd3b b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-1-a9f718201b71fa855fb81a29e1d7bd3b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-1-a9f718201b71fa855fb81a29e1d7bd3b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-2-4a9a9175758ef576804c8b7309b019e8 b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-2-4a9a9175758ef576804c8b7309b019e8 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-2-4a9a9175758ef576804c8b7309b019e8 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-3-ea607fbed28d20e5726f4501285d698d b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-3-ea607fbed28d20e5726f4501285d698d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-3-ea607fbed28d20e5726f4501285d698d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-4-4df4ea1d1d30dedff582dc5c249dce85 b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-4-4df4ea1d1d30dedff582dc5c249dce85 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-5-6a3af12e36cec853c876a2cbae61c23a b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-5-6a3af12e36cec853c876a2cbae61c23a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-5-6a3af12e36cec853c876a2cbae61c23a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-6-718032defb864225dd664b1719f3b590 b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-6-718032defb864225dd664b1719f3b590 new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_toleratecorruptions-6-718032defb864225dd664b1719f3b590 @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rcfile_union-0-2a3aaaffda2fb4486871bed84c68fc60 b/sql/hive/src/test/resources/golden/rcfile_union-0-2a3aaaffda2fb4486871bed84c68fc60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_union-1-ea555c16ad460f9a8d17b4e448d7c91b b/sql/hive/src/test/resources/golden/rcfile_union-1-ea555c16ad460f9a8d17b4e448d7c91b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rcfile_union-2-e104293998e4d4ea9d69d6b48f9aa6e5 b/sql/hive/src/test/resources/golden/rcfile_union-2-e104293998e4d4ea9d69d6b48f9aa6e5 new file mode 100644 index 0000000000000..c0e3764b993b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rcfile_union-2-e104293998e4d4ea9d69d6b48f9aa6e5 @@ -0,0 +1,20 @@ +165 +238 +255 +27 +278 +311 +409 +484 +86 +98 +val_165 +val_238 +val_255 +val_27 +val_278 +val_311 +val_409 +val_484 +val_86 +val_98 diff --git a/sql/hive/src/test/resources/golden/read from cached table-0-ce3797dc14a603cba2a5e58c8612de5b b/sql/hive/src/test/resources/golden/read from cached table-0-ce3797dc14a603cba2a5e58c8612de5b new file mode 100644 index 0000000000000..60878ffb77064 --- /dev/null +++ b/sql/hive/src/test/resources/golden/read from cached table-0-ce3797dc14a603cba2a5e58c8612de5b @@ -0,0 +1 @@ +238 val_238 diff --git a/sql/hive/src/test/resources/golden/read from uncached table-0-ce3797dc14a603cba2a5e58c8612de5b b/sql/hive/src/test/resources/golden/read from uncached table-0-ce3797dc14a603cba2a5e58c8612de5b new file mode 100644 index 0000000000000..60878ffb77064 --- /dev/null +++ b/sql/hive/src/test/resources/golden/read from uncached table-0-ce3797dc14a603cba2a5e58c8612de5b @@ -0,0 +1 @@ +238 val_238 diff --git a/sql/hive/src/test/resources/golden/recursive_dir-0-fb096f0f4ecc530357ad76ae0353d338 b/sql/hive/src/test/resources/golden/recursive_dir-0-fb096f0f4ecc530357ad76ae0353d338 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-0-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/reduce_deduplicate-0-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate-0-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-1-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/reduce_deduplicate-1-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate-1-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-10-44d72569675c48e482ff53f45c7526e3 b/sql/hive/src/test/resources/golden/reduce_deduplicate-10-44d72569675c48e482ff53f45c7526e3 new file mode 100644 index 0000000000000..1ab53eed2f15a --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate-10-44d72569675c48e482ff53f45c7526e3 @@ -0,0 +1 @@ +130091 36210398070 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-11-a9591dfbb3d8c6baa66fd9d56389bc81 b/sql/hive/src/test/resources/golden/reduce_deduplicate-11-a9591dfbb3d8c6baa66fd9d56389bc81 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-12-d6f20dc500809305e7454db01e24ce26 b/sql/hive/src/test/resources/golden/reduce_deduplicate-12-d6f20dc500809305e7454db01e24ce26 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-13-1583df07fff7a2af0a9cc6a681446036 b/sql/hive/src/test/resources/golden/reduce_deduplicate-13-1583df07fff7a2af0a9cc6a681446036 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/reduce_deduplicate-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-3-45ca2bb223236cce4dcc7d7d7c96edbe b/sql/hive/src/test/resources/golden/reduce_deduplicate-3-45ca2bb223236cce4dcc7d7d7c96edbe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate-3-45ca2bb223236cce4dcc7d7d7c96edbe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-4-ac9d2110b999fb41f5f0f183742a8b27 b/sql/hive/src/test/resources/golden/reduce_deduplicate-4-ac9d2110b999fb41f5f0f183742a8b27 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate-4-ac9d2110b999fb41f5f0f183742a8b27 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-5-e9d5f1694b887c50ef17ba48545faa4d b/sql/hive/src/test/resources/golden/reduce_deduplicate-5-e9d5f1694b887c50ef17ba48545faa4d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate-5-e9d5f1694b887c50ef17ba48545faa4d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-6-890c5edd947ca276254ef4bd2813b296 b/sql/hive/src/test/resources/golden/reduce_deduplicate-6-890c5edd947ca276254ef4bd2813b296 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-7-e6ae500ce884875bd5f8e4e5200764e7 b/sql/hive/src/test/resources/golden/reduce_deduplicate-7-e6ae500ce884875bd5f8e4e5200764e7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-8-e15d6f0f5d84bdeb153965cf0cc4fe11 b/sql/hive/src/test/resources/golden/reduce_deduplicate-8-e15d6f0f5d84bdeb153965cf0cc4fe11 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate-9-3b77920b01edb72aa3a7fc4f813e5d72 b/sql/hive/src/test/resources/golden/reduce_deduplicate-9-3b77920b01edb72aa3a7fc4f813e5d72 new file mode 100644 index 0000000000000..da664fda89fd7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate-9-3b77920b01edb72aa3a7fc4f813e5d72 @@ -0,0 +1 @@ +21025334 36210398070 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-0-163aa8a17867cfbd9297cc8825c4f3d5 b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-0-163aa8a17867cfbd9297cc8825c4f3d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-1-a3f3e279ab0be5093f4a926e265c0211 b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-1-a3f3e279ab0be5093f4a926e265c0211 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-1-a3f3e279ab0be5093f4a926e265c0211 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-2-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-2-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-2-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-3-862d1558d2999ca7ee585f8bdc3dacb2 b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-3-862d1558d2999ca7ee585f8bdc3dacb2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-4-ca16024e6f5399b1d035f5b9fd665163 b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_gby-4-ca16024e6f5399b1d035f5b9fd665163 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_join-0-aa047b3a8b40b68b93c4ad11e173c767 b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_join-0-aa047b3a8b40b68b93c4ad11e173c767 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_join-0-aa047b3a8b40b68b93c4ad11e173c767 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_join-1-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_join-1-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_join-1-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_join-2-f420affa96a8f13a91f6082805cf72a0 b/sql/hive/src/test/resources/golden/reduce_deduplicate_exclude_join-2-f420affa96a8f13a91f6082805cf72a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-0-aa047b3a8b40b68b93c4ad11e173c767 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-0-aa047b3a8b40b68b93c4ad11e173c767 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-0-aa047b3a8b40b68b93c4ad11e173c767 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-1-d0a93f40892e3894460553b443c77428 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-1-d0a93f40892e3894460553b443c77428 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-1-d0a93f40892e3894460553b443c77428 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-10-5a0cbc5744352a117afb34d1754496fa b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-10-5a0cbc5744352a117afb34d1754496fa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-11-9a4a8559680a45aad0a54144fb200f5e b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-11-9a4a8559680a45aad0a54144fb200f5e new file mode 100644 index 0000000000000..4a827d502b934 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-11-9a4a8559680a45aad0a54144fb200f5e @@ -0,0 +1,309 @@ +0 0 +2 2 +4 4 +5 15 +8 8 +9 9 +10 10 +11 11 +12 24 +15 30 +17 17 +18 36 +19 19 +20 20 +24 48 +26 52 +27 27 +28 28 +30 30 +33 33 +34 34 +35 105 +37 74 +41 41 +42 84 +43 43 +44 44 +47 47 +51 102 +53 53 +54 54 +57 57 +58 116 +64 64 +65 65 +66 66 +67 134 +69 69 +70 210 +72 144 +74 74 +76 152 +77 77 +78 78 +80 80 +82 82 +83 166 +84 168 +85 85 +86 86 +87 87 +90 270 +92 92 +95 190 +96 96 +97 194 +98 196 +100 200 +103 206 +104 208 +105 105 +111 111 +113 226 +114 114 +116 116 +118 236 +119 357 +120 240 +125 250 +126 126 +128 384 +129 258 +131 131 +133 133 +134 268 +136 136 +137 274 +138 552 +143 143 +145 145 +146 292 +149 298 +150 150 +152 304 +153 153 +155 155 +156 156 +157 157 +158 158 +160 160 +162 162 +163 163 +164 328 +165 330 +166 166 +167 501 +168 168 +169 676 +170 170 +172 344 +174 348 +175 350 +176 352 +177 177 +178 178 +179 358 +180 180 +181 181 +183 183 +186 186 +187 561 +189 189 +190 190 +191 382 +192 192 +193 579 +194 194 +195 390 +196 196 +197 394 +199 597 +200 400 +201 201 +202 202 +203 406 +205 410 +207 414 +208 624 +209 418 +213 426 +214 214 +216 432 +217 434 +218 218 +219 438 +221 442 +222 222 +223 446 +224 448 +226 226 +228 228 +229 458 +230 1150 +233 466 +235 235 +237 474 +238 476 +239 478 +241 241 +242 484 +244 244 +247 247 +248 248 +249 249 +252 252 +255 510 +256 512 +257 257 +258 258 +260 260 +262 262 +263 263 +265 530 +266 266 +272 544 +273 819 +274 274 +275 275 +277 1108 +278 556 +280 560 +281 562 +282 564 +283 283 +284 284 +285 285 +286 286 +287 287 +288 576 +289 289 +291 291 +292 292 +296 296 +298 894 +302 302 +305 305 +306 306 +307 614 +308 308 +309 618 +310 310 +311 933 +315 315 +316 948 +317 634 +318 954 +321 642 +322 644 +323 323 +325 650 +327 981 +331 662 +332 332 +333 666 +335 335 +336 336 +338 338 +339 339 +341 341 +342 684 +344 688 +345 345 +348 1740 +351 351 +353 706 +356 356 +360 360 +362 362 +364 364 +365 365 +366 366 +367 734 +368 368 +369 1107 +373 373 +374 374 +375 375 +377 377 +378 378 +379 379 +382 764 +384 1152 +386 386 +389 389 +392 392 +393 393 +394 394 +395 790 +396 1188 +397 794 +399 798 +400 400 +401 2005 +402 402 +403 1209 +404 808 +406 1624 +407 407 +409 1227 +411 411 +413 826 +414 828 +417 1251 +418 418 +419 419 +421 421 +424 848 +427 427 +429 858 +430 1290 +431 1293 +432 432 +435 435 +436 436 +437 437 +438 1314 +439 878 +443 443 +444 444 +446 446 +448 448 +449 449 +452 452 +453 453 +454 1362 +455 455 +457 457 +458 916 +459 918 +460 460 +462 924 +463 926 +466 1398 +467 467 +468 1872 +469 2345 +470 470 +472 472 +475 475 +477 477 +478 956 +479 479 +480 1440 +481 481 +482 482 +483 483 +484 484 +485 485 +487 487 +489 1956 +490 490 +491 491 +492 984 +493 493 +494 494 +495 495 +496 496 +497 497 +498 1494 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-12-4c2ae1bc1c838240e1f355714ed8e785 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-12-4c2ae1bc1c838240e1f355714ed8e785 new file mode 100644 index 0000000000000..af5653b0de758 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-12-4c2ae1bc1c838240e1f355714ed8e785 @@ -0,0 +1,309 @@ +0 0 val_0 +2 2 val_2 +4 4 val_4 +5 15 val_5 +8 8 val_8 +9 9 val_9 +10 10 val_10 +11 11 val_11 +12 24 val_12 +15 30 val_15 +17 17 val_17 +18 36 val_18 +19 19 val_19 +20 20 val_20 +24 48 val_24 +26 52 val_26 +27 27 val_27 +28 28 val_28 +30 30 val_30 +33 33 val_33 +34 34 val_34 +35 105 val_35 +37 74 val_37 +41 41 val_41 +42 84 val_42 +43 43 val_43 +44 44 val_44 +47 47 val_47 +51 102 val_51 +53 53 val_53 +54 54 val_54 +57 57 val_57 +58 116 val_58 +64 64 val_64 +65 65 val_65 +66 66 val_66 +67 134 val_67 +69 69 val_69 +70 210 val_70 +72 144 val_72 +74 74 val_74 +76 152 val_76 +77 77 val_77 +78 78 val_78 +80 80 val_80 +82 82 val_82 +83 166 val_83 +84 168 val_84 +85 85 val_85 +86 86 val_86 +87 87 val_87 +90 270 val_90 +92 92 val_92 +95 190 val_95 +96 96 val_96 +97 194 val_97 +98 196 val_98 +100 200 val_100 +103 206 val_103 +104 208 val_104 +105 105 val_105 +111 111 val_111 +113 226 val_113 +114 114 val_114 +116 116 val_116 +118 236 val_118 +119 357 val_119 +120 240 val_120 +125 250 val_125 +126 126 val_126 +128 384 val_128 +129 258 val_129 +131 131 val_131 +133 133 val_133 +134 268 val_134 +136 136 val_136 +137 274 val_137 +138 552 val_138 +143 143 val_143 +145 145 val_145 +146 292 val_146 +149 298 val_149 +150 150 val_150 +152 304 val_152 +153 153 val_153 +155 155 val_155 +156 156 val_156 +157 157 val_157 +158 158 val_158 +160 160 val_160 +162 162 val_162 +163 163 val_163 +164 328 val_164 +165 330 val_165 +166 166 val_166 +167 501 val_167 +168 168 val_168 +169 676 val_169 +170 170 val_170 +172 344 val_172 +174 348 val_174 +175 350 val_175 +176 352 val_176 +177 177 val_177 +178 178 val_178 +179 358 val_179 +180 180 val_180 +181 181 val_181 +183 183 val_183 +186 186 val_186 +187 561 val_187 +189 189 val_189 +190 190 val_190 +191 382 val_191 +192 192 val_192 +193 579 val_193 +194 194 val_194 +195 390 val_195 +196 196 val_196 +197 394 val_197 +199 597 val_199 +200 400 val_200 +201 201 val_201 +202 202 val_202 +203 406 val_203 +205 410 val_205 +207 414 val_207 +208 624 val_208 +209 418 val_209 +213 426 val_213 +214 214 val_214 +216 432 val_216 +217 434 val_217 +218 218 val_218 +219 438 val_219 +221 442 val_221 +222 222 val_222 +223 446 val_223 +224 448 val_224 +226 226 val_226 +228 228 val_228 +229 458 val_229 +230 1150 val_230 +233 466 val_233 +235 235 val_235 +237 474 val_237 +238 476 val_238 +239 478 val_239 +241 241 val_241 +242 484 val_242 +244 244 val_244 +247 247 val_247 +248 248 val_248 +249 249 val_249 +252 252 val_252 +255 510 val_255 +256 512 val_256 +257 257 val_257 +258 258 val_258 +260 260 val_260 +262 262 val_262 +263 263 val_263 +265 530 val_265 +266 266 val_266 +272 544 val_272 +273 819 val_273 +274 274 val_274 +275 275 val_275 +277 1108 val_277 +278 556 val_278 +280 560 val_280 +281 562 val_281 +282 564 val_282 +283 283 val_283 +284 284 val_284 +285 285 val_285 +286 286 val_286 +287 287 val_287 +288 576 val_288 +289 289 val_289 +291 291 val_291 +292 292 val_292 +296 296 val_296 +298 894 val_298 +302 302 val_302 +305 305 val_305 +306 306 val_306 +307 614 val_307 +308 308 val_308 +309 618 val_309 +310 310 val_310 +311 933 val_311 +315 315 val_315 +316 948 val_316 +317 634 val_317 +318 954 val_318 +321 642 val_321 +322 644 val_322 +323 323 val_323 +325 650 val_325 +327 981 val_327 +331 662 val_331 +332 332 val_332 +333 666 val_333 +335 335 val_335 +336 336 val_336 +338 338 val_338 +339 339 val_339 +341 341 val_341 +342 684 val_342 +344 688 val_344 +345 345 val_345 +348 1740 val_348 +351 351 val_351 +353 706 val_353 +356 356 val_356 +360 360 val_360 +362 362 val_362 +364 364 val_364 +365 365 val_365 +366 366 val_366 +367 734 val_367 +368 368 val_368 +369 1107 val_369 +373 373 val_373 +374 374 val_374 +375 375 val_375 +377 377 val_377 +378 378 val_378 +379 379 val_379 +382 764 val_382 +384 1152 val_384 +386 386 val_386 +389 389 val_389 +392 392 val_392 +393 393 val_393 +394 394 val_394 +395 790 val_395 +396 1188 val_396 +397 794 val_397 +399 798 val_399 +400 400 val_400 +401 2005 val_401 +402 402 val_402 +403 1209 val_403 +404 808 val_404 +406 1624 val_406 +407 407 val_407 +409 1227 val_409 +411 411 val_411 +413 826 val_413 +414 828 val_414 +417 1251 val_417 +418 418 val_418 +419 419 val_419 +421 421 val_421 +424 848 val_424 +427 427 val_427 +429 858 val_429 +430 1290 val_430 +431 1293 val_431 +432 432 val_432 +435 435 val_435 +436 436 val_436 +437 437 val_437 +438 1314 val_438 +439 878 val_439 +443 443 val_443 +444 444 val_444 +446 446 val_446 +448 448 val_448 +449 449 val_449 +452 452 val_452 +453 453 val_453 +454 1362 val_454 +455 455 val_455 +457 457 val_457 +458 916 val_458 +459 918 val_459 +460 460 val_460 +462 924 val_462 +463 926 val_463 +466 1398 val_466 +467 467 val_467 +468 1872 val_468 +469 2345 val_469 +470 470 val_470 +472 472 val_472 +475 475 val_475 +477 477 val_477 +478 956 val_478 +479 479 val_479 +480 1440 val_480 +481 481 val_481 +482 482 val_482 +483 483 val_483 +484 484 val_484 +485 485 val_485 +487 487 val_487 +489 1956 val_489 +490 490 val_490 +491 491 val_491 +492 984 val_492 +493 493 val_493 +494 494 val_494 +495 495 val_495 +496 496 val_496 +497 497 val_497 +498 1494 val_498 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-13-ca02f80b104ee3dff445518501d0ee3e b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-13-ca02f80b104ee3dff445518501d0ee3e new file mode 100644 index 0000000000000..5d9e6bbf9cedb --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-13-ca02f80b104ee3dff445518501d0ee3e @@ -0,0 +1,309 @@ +0 0 NULL +2 2 NULL +4 4 NULL +5 15 NULL +8 8 NULL +9 9 NULL +10 10 NULL +11 11 NULL +12 24 NULL +15 30 NULL +17 17 NULL +18 36 NULL +19 19 NULL +20 20 NULL +24 48 NULL +26 52 NULL +27 27 NULL +28 28 NULL +30 30 NULL +33 33 NULL +34 34 NULL +35 105 NULL +37 74 NULL +41 41 NULL +42 84 NULL +43 43 NULL +44 44 NULL +47 47 NULL +51 102 NULL +53 53 NULL +54 54 NULL +57 57 NULL +58 116 NULL +64 64 NULL +65 65 NULL +66 66 NULL +67 134 NULL +69 69 NULL +70 210 NULL +72 144 NULL +74 74 NULL +76 152 NULL +77 77 NULL +78 78 NULL +80 80 NULL +82 82 NULL +83 166 NULL +84 168 NULL +85 85 NULL +86 86 NULL +87 87 NULL +90 270 NULL +92 92 NULL +95 190 NULL +96 96 NULL +97 194 NULL +98 196 NULL +100 200 NULL +103 206 NULL +104 208 NULL +105 105 NULL +111 111 NULL +113 226 NULL +114 114 NULL +116 116 NULL +118 236 NULL +119 357 NULL +120 240 NULL +125 250 NULL +126 126 NULL +128 384 NULL +129 258 NULL +131 131 NULL +133 133 NULL +134 268 NULL +136 136 NULL +137 274 NULL +138 552 NULL +143 143 NULL +145 145 NULL +146 292 NULL +149 298 NULL +150 150 NULL +152 304 NULL +153 153 NULL +155 155 NULL +156 156 NULL +157 157 NULL +158 158 NULL +160 160 NULL +162 162 NULL +163 163 NULL +164 328 NULL +165 330 NULL +166 166 NULL +167 501 NULL +168 168 NULL +169 676 NULL +170 170 NULL +172 344 NULL +174 348 NULL +175 350 NULL +176 352 NULL +177 177 NULL +178 178 NULL +179 358 NULL +180 180 NULL +181 181 NULL +183 183 NULL +186 186 NULL +187 561 NULL +189 189 NULL +190 190 NULL +191 382 NULL +192 192 NULL +193 579 NULL +194 194 NULL +195 390 NULL +196 196 NULL +197 394 NULL +199 597 NULL +200 400 NULL +201 201 NULL +202 202 NULL +203 406 NULL +205 410 NULL +207 414 NULL +208 624 NULL +209 418 NULL +213 426 NULL +214 214 NULL +216 432 NULL +217 434 NULL +218 218 NULL +219 438 NULL +221 442 NULL +222 222 NULL +223 446 NULL +224 448 NULL +226 226 NULL +228 228 NULL +229 458 NULL +230 1150 NULL +233 466 NULL +235 235 NULL +237 474 NULL +238 476 NULL +239 478 NULL +241 241 NULL +242 484 NULL +244 244 NULL +247 247 NULL +248 248 NULL +249 249 NULL +252 252 NULL +255 510 NULL +256 512 NULL +257 257 NULL +258 258 NULL +260 260 NULL +262 262 NULL +263 263 NULL +265 530 NULL +266 266 NULL +272 544 NULL +273 819 NULL +274 274 NULL +275 275 NULL +277 1108 NULL +278 556 NULL +280 560 NULL +281 562 NULL +282 564 NULL +283 283 NULL +284 284 NULL +285 285 NULL +286 286 NULL +287 287 NULL +288 576 NULL +289 289 NULL +291 291 NULL +292 292 NULL +296 296 NULL +298 894 NULL +302 302 NULL +305 305 NULL +306 306 NULL +307 614 NULL +308 308 NULL +309 618 NULL +310 310 NULL +311 933 NULL +315 315 NULL +316 948 NULL +317 634 NULL +318 954 NULL +321 642 NULL +322 644 NULL +323 323 NULL +325 650 NULL +327 981 NULL +331 662 NULL +332 332 NULL +333 666 NULL +335 335 NULL +336 336 NULL +338 338 NULL +339 339 NULL +341 341 NULL +342 684 NULL +344 688 NULL +345 345 NULL +348 1740 NULL +351 351 NULL +353 706 NULL +356 356 NULL +360 360 NULL +362 362 NULL +364 364 NULL +365 365 NULL +366 366 NULL +367 734 NULL +368 368 NULL +369 1107 NULL +373 373 NULL +374 374 NULL +375 375 NULL +377 377 NULL +378 378 NULL +379 379 NULL +382 764 NULL +384 1152 NULL +386 386 NULL +389 389 NULL +392 392 NULL +393 393 NULL +394 394 NULL +395 790 NULL +396 1188 NULL +397 794 NULL +399 798 NULL +400 400 NULL +401 2005 NULL +402 402 NULL +403 1209 NULL +404 808 NULL +406 1624 NULL +407 407 NULL +409 1227 NULL +411 411 NULL +413 826 NULL +414 828 NULL +417 1251 NULL +418 418 NULL +419 419 NULL +421 421 NULL +424 848 NULL +427 427 NULL +429 858 NULL +430 1290 NULL +431 1293 NULL +432 432 NULL +435 435 NULL +436 436 NULL +437 437 NULL +438 1314 NULL +439 878 NULL +443 443 NULL +444 444 NULL +446 446 NULL +448 448 NULL +449 449 NULL +452 452 NULL +453 453 NULL +454 1362 NULL +455 455 NULL +457 457 NULL +458 916 NULL +459 918 NULL +460 460 NULL +462 924 NULL +463 926 NULL +466 1398 NULL +467 467 NULL +468 1872 NULL +469 2345 NULL +470 470 NULL +472 472 NULL +475 475 NULL +477 477 NULL +478 956 NULL +479 479 NULL +480 1440 NULL +481 481 NULL +482 482 NULL +483 483 NULL +484 484 NULL +485 485 NULL +487 487 NULL +489 1956 NULL +490 490 NULL +491 491 NULL +492 984 NULL +493 493 NULL +494 494 NULL +495 495 NULL +496 496 NULL +497 497 NULL +498 1494 NULL diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-14-fd197d657a19ef5cdcb9cc7b5824035c b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-14-fd197d657a19ef5cdcb9cc7b5824035c new file mode 100644 index 0000000000000..4a827d502b934 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-14-fd197d657a19ef5cdcb9cc7b5824035c @@ -0,0 +1,309 @@ +0 0 +2 2 +4 4 +5 15 +8 8 +9 9 +10 10 +11 11 +12 24 +15 30 +17 17 +18 36 +19 19 +20 20 +24 48 +26 52 +27 27 +28 28 +30 30 +33 33 +34 34 +35 105 +37 74 +41 41 +42 84 +43 43 +44 44 +47 47 +51 102 +53 53 +54 54 +57 57 +58 116 +64 64 +65 65 +66 66 +67 134 +69 69 +70 210 +72 144 +74 74 +76 152 +77 77 +78 78 +80 80 +82 82 +83 166 +84 168 +85 85 +86 86 +87 87 +90 270 +92 92 +95 190 +96 96 +97 194 +98 196 +100 200 +103 206 +104 208 +105 105 +111 111 +113 226 +114 114 +116 116 +118 236 +119 357 +120 240 +125 250 +126 126 +128 384 +129 258 +131 131 +133 133 +134 268 +136 136 +137 274 +138 552 +143 143 +145 145 +146 292 +149 298 +150 150 +152 304 +153 153 +155 155 +156 156 +157 157 +158 158 +160 160 +162 162 +163 163 +164 328 +165 330 +166 166 +167 501 +168 168 +169 676 +170 170 +172 344 +174 348 +175 350 +176 352 +177 177 +178 178 +179 358 +180 180 +181 181 +183 183 +186 186 +187 561 +189 189 +190 190 +191 382 +192 192 +193 579 +194 194 +195 390 +196 196 +197 394 +199 597 +200 400 +201 201 +202 202 +203 406 +205 410 +207 414 +208 624 +209 418 +213 426 +214 214 +216 432 +217 434 +218 218 +219 438 +221 442 +222 222 +223 446 +224 448 +226 226 +228 228 +229 458 +230 1150 +233 466 +235 235 +237 474 +238 476 +239 478 +241 241 +242 484 +244 244 +247 247 +248 248 +249 249 +252 252 +255 510 +256 512 +257 257 +258 258 +260 260 +262 262 +263 263 +265 530 +266 266 +272 544 +273 819 +274 274 +275 275 +277 1108 +278 556 +280 560 +281 562 +282 564 +283 283 +284 284 +285 285 +286 286 +287 287 +288 576 +289 289 +291 291 +292 292 +296 296 +298 894 +302 302 +305 305 +306 306 +307 614 +308 308 +309 618 +310 310 +311 933 +315 315 +316 948 +317 634 +318 954 +321 642 +322 644 +323 323 +325 650 +327 981 +331 662 +332 332 +333 666 +335 335 +336 336 +338 338 +339 339 +341 341 +342 684 +344 688 +345 345 +348 1740 +351 351 +353 706 +356 356 +360 360 +362 362 +364 364 +365 365 +366 366 +367 734 +368 368 +369 1107 +373 373 +374 374 +375 375 +377 377 +378 378 +379 379 +382 764 +384 1152 +386 386 +389 389 +392 392 +393 393 +394 394 +395 790 +396 1188 +397 794 +399 798 +400 400 +401 2005 +402 402 +403 1209 +404 808 +406 1624 +407 407 +409 1227 +411 411 +413 826 +414 828 +417 1251 +418 418 +419 419 +421 421 +424 848 +427 427 +429 858 +430 1290 +431 1293 +432 432 +435 435 +436 436 +437 437 +438 1314 +439 878 +443 443 +444 444 +446 446 +448 448 +449 449 +452 452 +453 453 +454 1362 +455 455 +457 457 +458 916 +459 918 +460 460 +462 924 +463 926 +466 1398 +467 467 +468 1872 +469 2345 +470 470 +472 472 +475 475 +477 477 +478 956 +479 479 +480 1440 +481 481 +482 482 +483 483 +484 484 +485 485 +487 487 +489 1956 +490 490 +491 491 +492 984 +493 493 +494 494 +495 495 +496 496 +497 497 +498 1494 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-15-dbc2b906b6cb99a138175eb4764da6bd b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-15-dbc2b906b6cb99a138175eb4764da6bd new file mode 100644 index 0000000000000..32740bfc546a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-15-dbc2b906b6cb99a138175eb4764da6bd @@ -0,0 +1,15 @@ +66 66 +98 196 +128 384 +146 292 +150 150 +213 426 +224 448 +238 476 +255 510 +273 819 +278 556 +311 933 +369 1107 +401 2005 +406 1624 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-16-22d9cdca0e70becd2ef86db59fc01ebb b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-16-22d9cdca0e70becd2ef86db59fc01ebb new file mode 100644 index 0000000000000..cc33012c6e2eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-16-22d9cdca0e70becd2ef86db59fc01ebb @@ -0,0 +1,37 @@ +66 val_66 +98 val_98 +98 val_98 +128 val_128 +128 val_128 +128 val_128 +146 val_146 +146 val_146 +150 val_150 +213 val_213 +213 val_213 +224 val_224 +224 val_224 +238 val_238 +238 val_238 +255 val_255 +255 val_255 +273 val_273 +273 val_273 +273 val_273 +278 val_278 +278 val_278 +311 val_311 +311 val_311 +311 val_311 +369 val_369 +369 val_369 +369 val_369 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +406 val_406 +406 val_406 +406 val_406 +406 val_406 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-17-ffeb52326db68aafe4bb801ef6e7db5f b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-17-ffeb52326db68aafe4bb801ef6e7db5f new file mode 100644 index 0000000000000..851d5ed155549 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-17-ffeb52326db68aafe4bb801ef6e7db5f @@ -0,0 +1,309 @@ +0 +2 +4 +5 +8 +9 +10 +11 +12 +15 +17 +18 +19 +20 +24 +26 +27 +28 +30 +33 +34 +35 +37 +41 +42 +43 +44 +47 +51 +53 +54 +57 +58 +64 +65 +66 +67 +69 +70 +72 +74 +76 +77 +78 +80 +82 +83 +84 +85 +86 +87 +90 +92 +95 +96 +97 +98 +100 +103 +104 +105 +111 +113 +114 +116 +118 +119 +120 +125 +126 +128 +129 +131 +133 +134 +136 +137 +138 +143 +145 +146 +149 +150 +152 +153 +155 +156 +157 +158 +160 +162 +163 +164 +165 +166 +167 +168 +169 +170 +172 +174 +175 +176 +177 +178 +179 +180 +181 +183 +186 +187 +189 +190 +191 +192 +193 +194 +195 +196 +197 +199 +200 +201 +202 +203 +205 +207 +208 +209 +213 +214 +216 +217 +218 +219 +221 +222 +223 +224 +226 +228 +229 +230 +233 +235 +237 +238 +239 +241 +242 +244 +247 +248 +249 +252 +255 +256 +257 +258 +260 +262 +263 +265 +266 +272 +273 +274 +275 +277 +278 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +291 +292 +296 +298 +302 +305 +306 +307 +308 +309 +310 +311 +315 +316 +317 +318 +321 +322 +323 +325 +327 +331 +332 +333 +335 +336 +338 +339 +341 +342 +344 +345 +348 +351 +353 +356 +360 +362 +364 +365 +366 +367 +368 +369 +373 +374 +375 +377 +378 +379 +382 +384 +386 +389 +392 +393 +394 +395 +396 +397 +399 +400 +401 +402 +403 +404 +406 +407 +409 +411 +413 +414 +417 +418 +419 +421 +424 +427 +429 +430 +431 +432 +435 +436 +437 +438 +439 +443 +444 +446 +448 +449 +452 +453 +454 +455 +457 +458 +459 +460 +462 +463 +466 +467 +468 +469 +470 +472 +475 +477 +478 +479 +480 +481 +482 +483 +484 +485 +487 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-18-4435a485aa7e3a72b789418e063d4cb8 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-18-4435a485aa7e3a72b789418e063d4cb8 new file mode 100644 index 0000000000000..8bfbbf1e69f57 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-18-4435a485aa7e3a72b789418e063d4cb8 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-19-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-19-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-19-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-2-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-2-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-2-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-20-29dc99f23850e9f19368926d621a3029 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-20-29dc99f23850e9f19368926d621a3029 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-21-722d6027daf02b2e40f121a4fec362d2 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-21-722d6027daf02b2e40f121a4fec362d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-22-f3a586e75df55df355982eac0d4d4a63 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-22-f3a586e75df55df355982eac0d4d4a63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-23-241faeae86e3e43e3ed8e35fb24e027d b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-23-241faeae86e3e43e3ed8e35fb24e027d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-24-dd3ed01a7ac656855ce76b4e6fcd27ed b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-24-dd3ed01a7ac656855ce76b4e6fcd27ed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-25-bce36b45ce0c67af052bcf0487a53052 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-25-bce36b45ce0c67af052bcf0487a53052 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-26-93434017959c1be56608adff9309f02a b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-26-93434017959c1be56608adff9309f02a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-27-5a0cbc5744352a117afb34d1754496fa b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-27-5a0cbc5744352a117afb34d1754496fa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-28-9a4a8559680a45aad0a54144fb200f5e b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-28-9a4a8559680a45aad0a54144fb200f5e new file mode 100644 index 0000000000000..4a827d502b934 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-28-9a4a8559680a45aad0a54144fb200f5e @@ -0,0 +1,309 @@ +0 0 +2 2 +4 4 +5 15 +8 8 +9 9 +10 10 +11 11 +12 24 +15 30 +17 17 +18 36 +19 19 +20 20 +24 48 +26 52 +27 27 +28 28 +30 30 +33 33 +34 34 +35 105 +37 74 +41 41 +42 84 +43 43 +44 44 +47 47 +51 102 +53 53 +54 54 +57 57 +58 116 +64 64 +65 65 +66 66 +67 134 +69 69 +70 210 +72 144 +74 74 +76 152 +77 77 +78 78 +80 80 +82 82 +83 166 +84 168 +85 85 +86 86 +87 87 +90 270 +92 92 +95 190 +96 96 +97 194 +98 196 +100 200 +103 206 +104 208 +105 105 +111 111 +113 226 +114 114 +116 116 +118 236 +119 357 +120 240 +125 250 +126 126 +128 384 +129 258 +131 131 +133 133 +134 268 +136 136 +137 274 +138 552 +143 143 +145 145 +146 292 +149 298 +150 150 +152 304 +153 153 +155 155 +156 156 +157 157 +158 158 +160 160 +162 162 +163 163 +164 328 +165 330 +166 166 +167 501 +168 168 +169 676 +170 170 +172 344 +174 348 +175 350 +176 352 +177 177 +178 178 +179 358 +180 180 +181 181 +183 183 +186 186 +187 561 +189 189 +190 190 +191 382 +192 192 +193 579 +194 194 +195 390 +196 196 +197 394 +199 597 +200 400 +201 201 +202 202 +203 406 +205 410 +207 414 +208 624 +209 418 +213 426 +214 214 +216 432 +217 434 +218 218 +219 438 +221 442 +222 222 +223 446 +224 448 +226 226 +228 228 +229 458 +230 1150 +233 466 +235 235 +237 474 +238 476 +239 478 +241 241 +242 484 +244 244 +247 247 +248 248 +249 249 +252 252 +255 510 +256 512 +257 257 +258 258 +260 260 +262 262 +263 263 +265 530 +266 266 +272 544 +273 819 +274 274 +275 275 +277 1108 +278 556 +280 560 +281 562 +282 564 +283 283 +284 284 +285 285 +286 286 +287 287 +288 576 +289 289 +291 291 +292 292 +296 296 +298 894 +302 302 +305 305 +306 306 +307 614 +308 308 +309 618 +310 310 +311 933 +315 315 +316 948 +317 634 +318 954 +321 642 +322 644 +323 323 +325 650 +327 981 +331 662 +332 332 +333 666 +335 335 +336 336 +338 338 +339 339 +341 341 +342 684 +344 688 +345 345 +348 1740 +351 351 +353 706 +356 356 +360 360 +362 362 +364 364 +365 365 +366 366 +367 734 +368 368 +369 1107 +373 373 +374 374 +375 375 +377 377 +378 378 +379 379 +382 764 +384 1152 +386 386 +389 389 +392 392 +393 393 +394 394 +395 790 +396 1188 +397 794 +399 798 +400 400 +401 2005 +402 402 +403 1209 +404 808 +406 1624 +407 407 +409 1227 +411 411 +413 826 +414 828 +417 1251 +418 418 +419 419 +421 421 +424 848 +427 427 +429 858 +430 1290 +431 1293 +432 432 +435 435 +436 436 +437 437 +438 1314 +439 878 +443 443 +444 444 +446 446 +448 448 +449 449 +452 452 +453 453 +454 1362 +455 455 +457 457 +458 916 +459 918 +460 460 +462 924 +463 926 +466 1398 +467 467 +468 1872 +469 2345 +470 470 +472 472 +475 475 +477 477 +478 956 +479 479 +480 1440 +481 481 +482 482 +483 483 +484 484 +485 485 +487 487 +489 1956 +490 490 +491 491 +492 984 +493 493 +494 494 +495 495 +496 496 +497 497 +498 1494 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-29-4c2ae1bc1c838240e1f355714ed8e785 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-29-4c2ae1bc1c838240e1f355714ed8e785 new file mode 100644 index 0000000000000..af5653b0de758 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-29-4c2ae1bc1c838240e1f355714ed8e785 @@ -0,0 +1,309 @@ +0 0 val_0 +2 2 val_2 +4 4 val_4 +5 15 val_5 +8 8 val_8 +9 9 val_9 +10 10 val_10 +11 11 val_11 +12 24 val_12 +15 30 val_15 +17 17 val_17 +18 36 val_18 +19 19 val_19 +20 20 val_20 +24 48 val_24 +26 52 val_26 +27 27 val_27 +28 28 val_28 +30 30 val_30 +33 33 val_33 +34 34 val_34 +35 105 val_35 +37 74 val_37 +41 41 val_41 +42 84 val_42 +43 43 val_43 +44 44 val_44 +47 47 val_47 +51 102 val_51 +53 53 val_53 +54 54 val_54 +57 57 val_57 +58 116 val_58 +64 64 val_64 +65 65 val_65 +66 66 val_66 +67 134 val_67 +69 69 val_69 +70 210 val_70 +72 144 val_72 +74 74 val_74 +76 152 val_76 +77 77 val_77 +78 78 val_78 +80 80 val_80 +82 82 val_82 +83 166 val_83 +84 168 val_84 +85 85 val_85 +86 86 val_86 +87 87 val_87 +90 270 val_90 +92 92 val_92 +95 190 val_95 +96 96 val_96 +97 194 val_97 +98 196 val_98 +100 200 val_100 +103 206 val_103 +104 208 val_104 +105 105 val_105 +111 111 val_111 +113 226 val_113 +114 114 val_114 +116 116 val_116 +118 236 val_118 +119 357 val_119 +120 240 val_120 +125 250 val_125 +126 126 val_126 +128 384 val_128 +129 258 val_129 +131 131 val_131 +133 133 val_133 +134 268 val_134 +136 136 val_136 +137 274 val_137 +138 552 val_138 +143 143 val_143 +145 145 val_145 +146 292 val_146 +149 298 val_149 +150 150 val_150 +152 304 val_152 +153 153 val_153 +155 155 val_155 +156 156 val_156 +157 157 val_157 +158 158 val_158 +160 160 val_160 +162 162 val_162 +163 163 val_163 +164 328 val_164 +165 330 val_165 +166 166 val_166 +167 501 val_167 +168 168 val_168 +169 676 val_169 +170 170 val_170 +172 344 val_172 +174 348 val_174 +175 350 val_175 +176 352 val_176 +177 177 val_177 +178 178 val_178 +179 358 val_179 +180 180 val_180 +181 181 val_181 +183 183 val_183 +186 186 val_186 +187 561 val_187 +189 189 val_189 +190 190 val_190 +191 382 val_191 +192 192 val_192 +193 579 val_193 +194 194 val_194 +195 390 val_195 +196 196 val_196 +197 394 val_197 +199 597 val_199 +200 400 val_200 +201 201 val_201 +202 202 val_202 +203 406 val_203 +205 410 val_205 +207 414 val_207 +208 624 val_208 +209 418 val_209 +213 426 val_213 +214 214 val_214 +216 432 val_216 +217 434 val_217 +218 218 val_218 +219 438 val_219 +221 442 val_221 +222 222 val_222 +223 446 val_223 +224 448 val_224 +226 226 val_226 +228 228 val_228 +229 458 val_229 +230 1150 val_230 +233 466 val_233 +235 235 val_235 +237 474 val_237 +238 476 val_238 +239 478 val_239 +241 241 val_241 +242 484 val_242 +244 244 val_244 +247 247 val_247 +248 248 val_248 +249 249 val_249 +252 252 val_252 +255 510 val_255 +256 512 val_256 +257 257 val_257 +258 258 val_258 +260 260 val_260 +262 262 val_262 +263 263 val_263 +265 530 val_265 +266 266 val_266 +272 544 val_272 +273 819 val_273 +274 274 val_274 +275 275 val_275 +277 1108 val_277 +278 556 val_278 +280 560 val_280 +281 562 val_281 +282 564 val_282 +283 283 val_283 +284 284 val_284 +285 285 val_285 +286 286 val_286 +287 287 val_287 +288 576 val_288 +289 289 val_289 +291 291 val_291 +292 292 val_292 +296 296 val_296 +298 894 val_298 +302 302 val_302 +305 305 val_305 +306 306 val_306 +307 614 val_307 +308 308 val_308 +309 618 val_309 +310 310 val_310 +311 933 val_311 +315 315 val_315 +316 948 val_316 +317 634 val_317 +318 954 val_318 +321 642 val_321 +322 644 val_322 +323 323 val_323 +325 650 val_325 +327 981 val_327 +331 662 val_331 +332 332 val_332 +333 666 val_333 +335 335 val_335 +336 336 val_336 +338 338 val_338 +339 339 val_339 +341 341 val_341 +342 684 val_342 +344 688 val_344 +345 345 val_345 +348 1740 val_348 +351 351 val_351 +353 706 val_353 +356 356 val_356 +360 360 val_360 +362 362 val_362 +364 364 val_364 +365 365 val_365 +366 366 val_366 +367 734 val_367 +368 368 val_368 +369 1107 val_369 +373 373 val_373 +374 374 val_374 +375 375 val_375 +377 377 val_377 +378 378 val_378 +379 379 val_379 +382 764 val_382 +384 1152 val_384 +386 386 val_386 +389 389 val_389 +392 392 val_392 +393 393 val_393 +394 394 val_394 +395 790 val_395 +396 1188 val_396 +397 794 val_397 +399 798 val_399 +400 400 val_400 +401 2005 val_401 +402 402 val_402 +403 1209 val_403 +404 808 val_404 +406 1624 val_406 +407 407 val_407 +409 1227 val_409 +411 411 val_411 +413 826 val_413 +414 828 val_414 +417 1251 val_417 +418 418 val_418 +419 419 val_419 +421 421 val_421 +424 848 val_424 +427 427 val_427 +429 858 val_429 +430 1290 val_430 +431 1293 val_431 +432 432 val_432 +435 435 val_435 +436 436 val_436 +437 437 val_437 +438 1314 val_438 +439 878 val_439 +443 443 val_443 +444 444 val_444 +446 446 val_446 +448 448 val_448 +449 449 val_449 +452 452 val_452 +453 453 val_453 +454 1362 val_454 +455 455 val_455 +457 457 val_457 +458 916 val_458 +459 918 val_459 +460 460 val_460 +462 924 val_462 +463 926 val_463 +466 1398 val_466 +467 467 val_467 +468 1872 val_468 +469 2345 val_469 +470 470 val_470 +472 472 val_472 +475 475 val_475 +477 477 val_477 +478 956 val_478 +479 479 val_479 +480 1440 val_480 +481 481 val_481 +482 482 val_482 +483 483 val_483 +484 484 val_484 +485 485 val_485 +487 487 val_487 +489 1956 val_489 +490 490 val_490 +491 491 val_491 +492 984 val_492 +493 493 val_493 +494 494 val_494 +495 495 val_495 +496 496 val_496 +497 497 val_497 +498 1494 val_498 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-3-290a9fab18a45f29dd84ac3da0a47fb2 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-3-290a9fab18a45f29dd84ac3da0a47fb2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-30-ca02f80b104ee3dff445518501d0ee3e b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-30-ca02f80b104ee3dff445518501d0ee3e new file mode 100644 index 0000000000000..5d9e6bbf9cedb --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-30-ca02f80b104ee3dff445518501d0ee3e @@ -0,0 +1,309 @@ +0 0 NULL +2 2 NULL +4 4 NULL +5 15 NULL +8 8 NULL +9 9 NULL +10 10 NULL +11 11 NULL +12 24 NULL +15 30 NULL +17 17 NULL +18 36 NULL +19 19 NULL +20 20 NULL +24 48 NULL +26 52 NULL +27 27 NULL +28 28 NULL +30 30 NULL +33 33 NULL +34 34 NULL +35 105 NULL +37 74 NULL +41 41 NULL +42 84 NULL +43 43 NULL +44 44 NULL +47 47 NULL +51 102 NULL +53 53 NULL +54 54 NULL +57 57 NULL +58 116 NULL +64 64 NULL +65 65 NULL +66 66 NULL +67 134 NULL +69 69 NULL +70 210 NULL +72 144 NULL +74 74 NULL +76 152 NULL +77 77 NULL +78 78 NULL +80 80 NULL +82 82 NULL +83 166 NULL +84 168 NULL +85 85 NULL +86 86 NULL +87 87 NULL +90 270 NULL +92 92 NULL +95 190 NULL +96 96 NULL +97 194 NULL +98 196 NULL +100 200 NULL +103 206 NULL +104 208 NULL +105 105 NULL +111 111 NULL +113 226 NULL +114 114 NULL +116 116 NULL +118 236 NULL +119 357 NULL +120 240 NULL +125 250 NULL +126 126 NULL +128 384 NULL +129 258 NULL +131 131 NULL +133 133 NULL +134 268 NULL +136 136 NULL +137 274 NULL +138 552 NULL +143 143 NULL +145 145 NULL +146 292 NULL +149 298 NULL +150 150 NULL +152 304 NULL +153 153 NULL +155 155 NULL +156 156 NULL +157 157 NULL +158 158 NULL +160 160 NULL +162 162 NULL +163 163 NULL +164 328 NULL +165 330 NULL +166 166 NULL +167 501 NULL +168 168 NULL +169 676 NULL +170 170 NULL +172 344 NULL +174 348 NULL +175 350 NULL +176 352 NULL +177 177 NULL +178 178 NULL +179 358 NULL +180 180 NULL +181 181 NULL +183 183 NULL +186 186 NULL +187 561 NULL +189 189 NULL +190 190 NULL +191 382 NULL +192 192 NULL +193 579 NULL +194 194 NULL +195 390 NULL +196 196 NULL +197 394 NULL +199 597 NULL +200 400 NULL +201 201 NULL +202 202 NULL +203 406 NULL +205 410 NULL +207 414 NULL +208 624 NULL +209 418 NULL +213 426 NULL +214 214 NULL +216 432 NULL +217 434 NULL +218 218 NULL +219 438 NULL +221 442 NULL +222 222 NULL +223 446 NULL +224 448 NULL +226 226 NULL +228 228 NULL +229 458 NULL +230 1150 NULL +233 466 NULL +235 235 NULL +237 474 NULL +238 476 NULL +239 478 NULL +241 241 NULL +242 484 NULL +244 244 NULL +247 247 NULL +248 248 NULL +249 249 NULL +252 252 NULL +255 510 NULL +256 512 NULL +257 257 NULL +258 258 NULL +260 260 NULL +262 262 NULL +263 263 NULL +265 530 NULL +266 266 NULL +272 544 NULL +273 819 NULL +274 274 NULL +275 275 NULL +277 1108 NULL +278 556 NULL +280 560 NULL +281 562 NULL +282 564 NULL +283 283 NULL +284 284 NULL +285 285 NULL +286 286 NULL +287 287 NULL +288 576 NULL +289 289 NULL +291 291 NULL +292 292 NULL +296 296 NULL +298 894 NULL +302 302 NULL +305 305 NULL +306 306 NULL +307 614 NULL +308 308 NULL +309 618 NULL +310 310 NULL +311 933 NULL +315 315 NULL +316 948 NULL +317 634 NULL +318 954 NULL +321 642 NULL +322 644 NULL +323 323 NULL +325 650 NULL +327 981 NULL +331 662 NULL +332 332 NULL +333 666 NULL +335 335 NULL +336 336 NULL +338 338 NULL +339 339 NULL +341 341 NULL +342 684 NULL +344 688 NULL +345 345 NULL +348 1740 NULL +351 351 NULL +353 706 NULL +356 356 NULL +360 360 NULL +362 362 NULL +364 364 NULL +365 365 NULL +366 366 NULL +367 734 NULL +368 368 NULL +369 1107 NULL +373 373 NULL +374 374 NULL +375 375 NULL +377 377 NULL +378 378 NULL +379 379 NULL +382 764 NULL +384 1152 NULL +386 386 NULL +389 389 NULL +392 392 NULL +393 393 NULL +394 394 NULL +395 790 NULL +396 1188 NULL +397 794 NULL +399 798 NULL +400 400 NULL +401 2005 NULL +402 402 NULL +403 1209 NULL +404 808 NULL +406 1624 NULL +407 407 NULL +409 1227 NULL +411 411 NULL +413 826 NULL +414 828 NULL +417 1251 NULL +418 418 NULL +419 419 NULL +421 421 NULL +424 848 NULL +427 427 NULL +429 858 NULL +430 1290 NULL +431 1293 NULL +432 432 NULL +435 435 NULL +436 436 NULL +437 437 NULL +438 1314 NULL +439 878 NULL +443 443 NULL +444 444 NULL +446 446 NULL +448 448 NULL +449 449 NULL +452 452 NULL +453 453 NULL +454 1362 NULL +455 455 NULL +457 457 NULL +458 916 NULL +459 918 NULL +460 460 NULL +462 924 NULL +463 926 NULL +466 1398 NULL +467 467 NULL +468 1872 NULL +469 2345 NULL +470 470 NULL +472 472 NULL +475 475 NULL +477 477 NULL +478 956 NULL +479 479 NULL +480 1440 NULL +481 481 NULL +482 482 NULL +483 483 NULL +484 484 NULL +485 485 NULL +487 487 NULL +489 1956 NULL +490 490 NULL +491 491 NULL +492 984 NULL +493 493 NULL +494 494 NULL +495 495 NULL +496 496 NULL +497 497 NULL +498 1494 NULL diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-31-fd197d657a19ef5cdcb9cc7b5824035c b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-31-fd197d657a19ef5cdcb9cc7b5824035c new file mode 100644 index 0000000000000..4a827d502b934 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-31-fd197d657a19ef5cdcb9cc7b5824035c @@ -0,0 +1,309 @@ +0 0 +2 2 +4 4 +5 15 +8 8 +9 9 +10 10 +11 11 +12 24 +15 30 +17 17 +18 36 +19 19 +20 20 +24 48 +26 52 +27 27 +28 28 +30 30 +33 33 +34 34 +35 105 +37 74 +41 41 +42 84 +43 43 +44 44 +47 47 +51 102 +53 53 +54 54 +57 57 +58 116 +64 64 +65 65 +66 66 +67 134 +69 69 +70 210 +72 144 +74 74 +76 152 +77 77 +78 78 +80 80 +82 82 +83 166 +84 168 +85 85 +86 86 +87 87 +90 270 +92 92 +95 190 +96 96 +97 194 +98 196 +100 200 +103 206 +104 208 +105 105 +111 111 +113 226 +114 114 +116 116 +118 236 +119 357 +120 240 +125 250 +126 126 +128 384 +129 258 +131 131 +133 133 +134 268 +136 136 +137 274 +138 552 +143 143 +145 145 +146 292 +149 298 +150 150 +152 304 +153 153 +155 155 +156 156 +157 157 +158 158 +160 160 +162 162 +163 163 +164 328 +165 330 +166 166 +167 501 +168 168 +169 676 +170 170 +172 344 +174 348 +175 350 +176 352 +177 177 +178 178 +179 358 +180 180 +181 181 +183 183 +186 186 +187 561 +189 189 +190 190 +191 382 +192 192 +193 579 +194 194 +195 390 +196 196 +197 394 +199 597 +200 400 +201 201 +202 202 +203 406 +205 410 +207 414 +208 624 +209 418 +213 426 +214 214 +216 432 +217 434 +218 218 +219 438 +221 442 +222 222 +223 446 +224 448 +226 226 +228 228 +229 458 +230 1150 +233 466 +235 235 +237 474 +238 476 +239 478 +241 241 +242 484 +244 244 +247 247 +248 248 +249 249 +252 252 +255 510 +256 512 +257 257 +258 258 +260 260 +262 262 +263 263 +265 530 +266 266 +272 544 +273 819 +274 274 +275 275 +277 1108 +278 556 +280 560 +281 562 +282 564 +283 283 +284 284 +285 285 +286 286 +287 287 +288 576 +289 289 +291 291 +292 292 +296 296 +298 894 +302 302 +305 305 +306 306 +307 614 +308 308 +309 618 +310 310 +311 933 +315 315 +316 948 +317 634 +318 954 +321 642 +322 644 +323 323 +325 650 +327 981 +331 662 +332 332 +333 666 +335 335 +336 336 +338 338 +339 339 +341 341 +342 684 +344 688 +345 345 +348 1740 +351 351 +353 706 +356 356 +360 360 +362 362 +364 364 +365 365 +366 366 +367 734 +368 368 +369 1107 +373 373 +374 374 +375 375 +377 377 +378 378 +379 379 +382 764 +384 1152 +386 386 +389 389 +392 392 +393 393 +394 394 +395 790 +396 1188 +397 794 +399 798 +400 400 +401 2005 +402 402 +403 1209 +404 808 +406 1624 +407 407 +409 1227 +411 411 +413 826 +414 828 +417 1251 +418 418 +419 419 +421 421 +424 848 +427 427 +429 858 +430 1290 +431 1293 +432 432 +435 435 +436 436 +437 437 +438 1314 +439 878 +443 443 +444 444 +446 446 +448 448 +449 449 +452 452 +453 453 +454 1362 +455 455 +457 457 +458 916 +459 918 +460 460 +462 924 +463 926 +466 1398 +467 467 +468 1872 +469 2345 +470 470 +472 472 +475 475 +477 477 +478 956 +479 479 +480 1440 +481 481 +482 482 +483 483 +484 484 +485 485 +487 487 +489 1956 +490 490 +491 491 +492 984 +493 493 +494 494 +495 495 +496 496 +497 497 +498 1494 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-32-dbc2b906b6cb99a138175eb4764da6bd b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-32-dbc2b906b6cb99a138175eb4764da6bd new file mode 100644 index 0000000000000..32740bfc546a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-32-dbc2b906b6cb99a138175eb4764da6bd @@ -0,0 +1,15 @@ +66 66 +98 196 +128 384 +146 292 +150 150 +213 426 +224 448 +238 476 +255 510 +273 819 +278 556 +311 933 +369 1107 +401 2005 +406 1624 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-33-22d9cdca0e70becd2ef86db59fc01ebb b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-33-22d9cdca0e70becd2ef86db59fc01ebb new file mode 100644 index 0000000000000..cc33012c6e2eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-33-22d9cdca0e70becd2ef86db59fc01ebb @@ -0,0 +1,37 @@ +66 val_66 +98 val_98 +98 val_98 +128 val_128 +128 val_128 +128 val_128 +146 val_146 +146 val_146 +150 val_150 +213 val_213 +213 val_213 +224 val_224 +224 val_224 +238 val_238 +238 val_238 +255 val_255 +255 val_255 +273 val_273 +273 val_273 +273 val_273 +278 val_278 +278 val_278 +311 val_311 +311 val_311 +311 val_311 +369 val_369 +369 val_369 +369 val_369 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +406 val_406 +406 val_406 +406 val_406 +406 val_406 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-34-ffeb52326db68aafe4bb801ef6e7db5f b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-34-ffeb52326db68aafe4bb801ef6e7db5f new file mode 100644 index 0000000000000..851d5ed155549 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-34-ffeb52326db68aafe4bb801ef6e7db5f @@ -0,0 +1,309 @@ +0 +2 +4 +5 +8 +9 +10 +11 +12 +15 +17 +18 +19 +20 +24 +26 +27 +28 +30 +33 +34 +35 +37 +41 +42 +43 +44 +47 +51 +53 +54 +57 +58 +64 +65 +66 +67 +69 +70 +72 +74 +76 +77 +78 +80 +82 +83 +84 +85 +86 +87 +90 +92 +95 +96 +97 +98 +100 +103 +104 +105 +111 +113 +114 +116 +118 +119 +120 +125 +126 +128 +129 +131 +133 +134 +136 +137 +138 +143 +145 +146 +149 +150 +152 +153 +155 +156 +157 +158 +160 +162 +163 +164 +165 +166 +167 +168 +169 +170 +172 +174 +175 +176 +177 +178 +179 +180 +181 +183 +186 +187 +189 +190 +191 +192 +193 +194 +195 +196 +197 +199 +200 +201 +202 +203 +205 +207 +208 +209 +213 +214 +216 +217 +218 +219 +221 +222 +223 +224 +226 +228 +229 +230 +233 +235 +237 +238 +239 +241 +242 +244 +247 +248 +249 +252 +255 +256 +257 +258 +260 +262 +263 +265 +266 +272 +273 +274 +275 +277 +278 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +291 +292 +296 +298 +302 +305 +306 +307 +308 +309 +310 +311 +315 +316 +317 +318 +321 +322 +323 +325 +327 +331 +332 +333 +335 +336 +338 +339 +341 +342 +344 +345 +348 +351 +353 +356 +360 +362 +364 +365 +366 +367 +368 +369 +373 +374 +375 +377 +378 +379 +382 +384 +386 +389 +392 +393 +394 +395 +396 +397 +399 +400 +401 +402 +403 +404 +406 +407 +409 +411 +413 +414 +417 +418 +419 +421 +424 +427 +429 +430 +431 +432 +435 +436 +437 +438 +439 +443 +444 +446 +448 +449 +452 +453 +454 +455 +457 +458 +459 +460 +462 +463 +466 +467 +468 +469 +470 +472 +475 +477 +478 +479 +480 +481 +482 +483 +484 +485 +487 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-35-4435a485aa7e3a72b789418e063d4cb8 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-35-4435a485aa7e3a72b789418e063d4cb8 new file mode 100644 index 0000000000000..8bfbbf1e69f57 --- /dev/null +++ b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-35-4435a485aa7e3a72b789418e063d4cb8 @@ -0,0 +1,309 @@ +0 1 +2 1 +4 1 +5 1 +8 1 +9 1 +10 1 +11 1 +12 1 +15 1 +17 1 +18 1 +19 1 +20 1 +24 1 +26 1 +27 1 +28 1 +30 1 +33 1 +34 1 +35 1 +37 1 +41 1 +42 1 +43 1 +44 1 +47 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +100 1 +103 1 +104 1 +105 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +260 1 +262 1 +263 1 +265 1 +266 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +341 1 +342 1 +344 1 +345 1 +348 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +421 1 +424 1 +427 1 +429 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-4-722d6027daf02b2e40f121a4fec362d2 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-4-722d6027daf02b2e40f121a4fec362d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-5-f3a586e75df55df355982eac0d4d4a63 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-5-f3a586e75df55df355982eac0d4d4a63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-6-8801137a557caa5a75cfacd7aaf56bad b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-6-8801137a557caa5a75cfacd7aaf56bad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-7-7e350e31bce459f89b322b3356806174 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-7-7e350e31bce459f89b322b3356806174 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-8-bce36b45ce0c67af052bcf0487a53052 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-8-bce36b45ce0c67af052bcf0487a53052 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-9-a94cab7395270afa10d73b5e8c2f4a71 b/sql/hive/src/test/resources/golden/reduce_deduplicate_extended-9-a94cab7395270afa10d73b5e8c2f4a71 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reducesink_dedup-0-d3f50875bd5dff172cf813fdb7d738eb b/sql/hive/src/test/resources/golden/reducesink_dedup-0-d3f50875bd5dff172cf813fdb7d738eb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reducesink_dedup-1-dda16565b98926fc3587de937b9401c7 b/sql/hive/src/test/resources/golden/reducesink_dedup-1-dda16565b98926fc3587de937b9401c7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/reducesink_dedup-2-971f12c90619b02484c8e7db1b32f050 b/sql/hive/src/test/resources/golden/reducesink_dedup-2-971f12c90619b02484c8e7db1b32f050 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/regex_col-0-ac78bd83c9aa538c2827598dd6007a69 b/sql/hive/src/test/resources/golden/regex_col-0-ac78bd83c9aa538c2827598dd6007a69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/regex_col-1-42751bfc3f1e83e7a014db9272d597db b/sql/hive/src/test/resources/golden/regex_col-1-42751bfc3f1e83e7a014db9272d597db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/regex_col-2-21564f64cdfd46098e1254380490701 b/sql/hive/src/test/resources/golden/regex_col-2-21564f64cdfd46098e1254380490701 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/regex_col-3-f0c653593a7a7b701f0614f3f0a7ba61 b/sql/hive/src/test/resources/golden/regex_col-3-f0c653593a7a7b701f0614f3f0a7ba61 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/regex_col-4-daf9d3ca22b243870a138ba90d1593c4 b/sql/hive/src/test/resources/golden/regex_col-4-daf9d3ca22b243870a138ba90d1593c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/remote_script-0-4e2e94d649b1792c5bd3fd879349ef92 b/sql/hive/src/test/resources/golden/remote_script-0-4e2e94d649b1792c5bd3fd879349ef92 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/remote_script-0-4e2e94d649b1792c5bd3fd879349ef92 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/remote_script-1-e168f471980470d93b790702a70238fa b/sql/hive/src/test/resources/golden/remote_script-1-e168f471980470d93b790702a70238fa new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/remote_script-1-e168f471980470d93b790702a70238fa @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/remote_script-2-a19a19272149c732977c37e043910505 b/sql/hive/src/test/resources/golden/remote_script-2-a19a19272149c732977c37e043910505 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/remote_script-2-a19a19272149c732977c37e043910505 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/remote_script-3-4eb54a664e549614d56ca088c8867d b/sql/hive/src/test/resources/golden/remote_script-3-4eb54a664e549614d56ca088c8867d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-0-f7eb4bd6f226be0c13117294be250271 b/sql/hive/src/test/resources/golden/rename_column-0-f7eb4bd6f226be0c13117294be250271 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-1-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-1-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..726e0947d8302 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-1-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a int None +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-10-7ef160935cece55338bd4d52277b0203 b/sql/hive/src/test/resources/golden/rename_column-10-7ef160935cece55338bd4d52277b0203 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-11-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-11-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..500201be8d922 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-11-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +b int None +a1 int test comment1 +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-12-379d54e3aa66daacff23c75007dfa008 b/sql/hive/src/test/resources/golden/rename_column-12-379d54e3aa66daacff23c75007dfa008 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-13-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-13-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..71af16a5fa4d7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-13-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a2 int test comment2 +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-14-25bfcf66698b12f82903f72f13fea4e6 b/sql/hive/src/test/resources/golden/rename_column-14-25bfcf66698b12f82903f72f13fea4e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-15-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-15-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..f5b2e72aeccab --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-15-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +b int None +a int test comment2 +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-16-d032f4795c1186255acea241387adf93 b/sql/hive/src/test/resources/golden/rename_column-16-d032f4795c1186255acea241387adf93 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-17-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/rename_column-17-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..ecafeaea5f61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-17-9c36cac1372650b703400c60dd29042c @@ -0,0 +1,2 @@ +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-18-fe4463a19f61099983f50bb51cfcd335 b/sql/hive/src/test/resources/golden/rename_column-18-fe4463a19f61099983f50bb51cfcd335 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-19-70b42434913b9d2eb17cd216c4f8039f b/sql/hive/src/test/resources/golden/rename_column-19-70b42434913b9d2eb17cd216c4f8039f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-2-b2b2dfa681d01296fdacb4f56fb6db3a b/sql/hive/src/test/resources/golden/rename_column-2-b2b2dfa681d01296fdacb4f56fb6db3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-20-f7eb4bd6f226be0c13117294be250271 b/sql/hive/src/test/resources/golden/rename_column-20-f7eb4bd6f226be0c13117294be250271 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-21-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-21-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..726e0947d8302 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-21-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a int None +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-22-b2b2dfa681d01296fdacb4f56fb6db3a b/sql/hive/src/test/resources/golden/rename_column-22-b2b2dfa681d01296fdacb4f56fb6db3a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-23-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-23-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..17127eaec9755 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-23-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a string None +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-24-e4bf0dd372b886b2afcca5b2dc089409 b/sql/hive/src/test/resources/golden/rename_column-24-e4bf0dd372b886b2afcca5b2dc089409 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-25-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-25-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..bfcefe4d18046 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-25-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a1 int None +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-26-89761e1c7afe3a5b9858f287cb808ccd b/sql/hive/src/test/resources/golden/rename_column-26-89761e1c7afe3a5b9858f287cb808ccd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-27-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-27-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..c436c39a16b8a --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-27-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a2 int None +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-28-59388d1eb6b5dc4e81a434bd59bf2cf4 b/sql/hive/src/test/resources/golden/rename_column-28-59388d1eb6b5dc4e81a434bd59bf2cf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-29-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-29-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..bb1507e7488f5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-29-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +b int None +a int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-3-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-3-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..17127eaec9755 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-3-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a string None +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-30-7ef160935cece55338bd4d52277b0203 b/sql/hive/src/test/resources/golden/rename_column-30-7ef160935cece55338bd4d52277b0203 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-31-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-31-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..500201be8d922 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-31-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +b int None +a1 int test comment1 +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-32-379d54e3aa66daacff23c75007dfa008 b/sql/hive/src/test/resources/golden/rename_column-32-379d54e3aa66daacff23c75007dfa008 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-33-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-33-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..71af16a5fa4d7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-33-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a2 int test comment2 +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-34-25bfcf66698b12f82903f72f13fea4e6 b/sql/hive/src/test/resources/golden/rename_column-34-25bfcf66698b12f82903f72f13fea4e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-35-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-35-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..f5b2e72aeccab --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-35-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +b int None +a int test comment2 +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-36-d032f4795c1186255acea241387adf93 b/sql/hive/src/test/resources/golden/rename_column-36-d032f4795c1186255acea241387adf93 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-37-9c36cac1372650b703400c60dd29042c b/sql/hive/src/test/resources/golden/rename_column-37-9c36cac1372650b703400c60dd29042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-4-e4bf0dd372b886b2afcca5b2dc089409 b/sql/hive/src/test/resources/golden/rename_column-4-e4bf0dd372b886b2afcca5b2dc089409 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-5-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-5-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..bfcefe4d18046 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-5-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a1 int None +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-6-89761e1c7afe3a5b9858f287cb808ccd b/sql/hive/src/test/resources/golden/rename_column-6-89761e1c7afe3a5b9858f287cb808ccd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-7-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-7-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..c436c39a16b8a --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-7-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +a2 int None +b int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_column-8-59388d1eb6b5dc4e81a434bd59bf2cf4 b/sql/hive/src/test/resources/golden/rename_column-8-59388d1eb6b5dc4e81a434bd59bf2cf4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/rename_column-9-6a3bbeb3203ce4df35275dccc4c4e37b b/sql/hive/src/test/resources/golden/rename_column-9-6a3bbeb3203ce4df35275dccc4c4e37b new file mode 100644 index 0000000000000..bb1507e7488f5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_column-9-6a3bbeb3203ce4df35275dccc4c4e37b @@ -0,0 +1,3 @@ +b int None +a int None +c int None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/rename_external_partition_location-0-5c73d46fb91e9d4b3dc916622df09290 b/sql/hive/src/test/resources/golden/rename_external_partition_location-0-5c73d46fb91e9d4b3dc916622df09290 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/rename_external_partition_location-0-5c73d46fb91e9d4b3dc916622df09290 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/router_join_ppr-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/router_join_ppr-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-1-f5d1802919e5f9c2afa606f509d8ff58 b/sql/hive/src/test/resources/golden/router_join_ppr-1-f5d1802919e5f9c2afa606f509d8ff58 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-2-49b8b038ed8f5513405071c532967c47 b/sql/hive/src/test/resources/golden/router_join_ppr-2-49b8b038ed8f5513405071c532967c47 new file mode 100644 index 0000000000000..3a57720041fb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/router_join_ppr-2-49b8b038ed8f5513405071c532967c47 @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-3-a0b1014e173f410923de0d0446dfb4cc b/sql/hive/src/test/resources/golden/router_join_ppr-3-a0b1014e173f410923de0d0446dfb4cc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-4-baaf33e5c11c65e1aa2b6be37de6eef6 b/sql/hive/src/test/resources/golden/router_join_ppr-4-baaf33e5c11c65e1aa2b6be37de6eef6 new file mode 100644 index 0000000000000..19492fd335bcb --- /dev/null +++ b/sql/hive/src/test/resources/golden/router_join_ppr-4-baaf33e5c11c65e1aa2b6be37de6eef6 @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +17 val_17 17 val_17 +19 val_19 19 val_19 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-5-89b4fc284984f51c12f15017707ad312 b/sql/hive/src/test/resources/golden/router_join_ppr-5-89b4fc284984f51c12f15017707ad312 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-6-2edf8e4ca99543089fdacbf506caa94f b/sql/hive/src/test/resources/golden/router_join_ppr-6-2edf8e4ca99543089fdacbf506caa94f new file mode 100644 index 0000000000000..3a57720041fb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/router_join_ppr-6-2edf8e4ca99543089fdacbf506caa94f @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +17 val_17 17 val_17 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-7-defc6eae5ce9ac8bc9f57308e1513f93 b/sql/hive/src/test/resources/golden/router_join_ppr-7-defc6eae5ce9ac8bc9f57308e1513f93 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/router_join_ppr-8-b07ad21f47a74162f438abf579675f8e b/sql/hive/src/test/resources/golden/router_join_ppr-8-b07ad21f47a74162f438abf579675f8e new file mode 100644 index 0000000000000..19492fd335bcb --- /dev/null +++ b/sql/hive/src/test/resources/golden/router_join_ppr-8-b07ad21f47a74162f438abf579675f8e @@ -0,0 +1,12 @@ +17 val_17 17 val_17 +17 val_17 17 val_17 +19 val_19 19 val_19 +19 val_19 19 val_19 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sample2-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/sample2-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample2-1-a1d8184eab25b242a961533cc016efd1 b/sql/hive/src/test/resources/golden/sample2-1-a1d8184eab25b242a961533cc016efd1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-0-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-0-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-0-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-1-2b1df88619e34f221d39598b5cd73283 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-1-2b1df88619e34f221d39598b5cd73283 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-1-2b1df88619e34f221d39598b5cd73283 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-10-60eadbb52f8857830a3034952c631ace b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-10-60eadbb52f8857830a3034952c631ace new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-11-dbe79f90862dc5c6cc4a4fa4b4b6c655 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-11-dbe79f90862dc5c6cc4a4fa4b4b6c655 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-12-60018cae9a0476dc6a0ab4264310edb5 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-12-60018cae9a0476dc6a0ab4264310edb5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-2-7562d4fee13f3ba935a2e824f86a4224 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-2-7562d4fee13f3ba935a2e824f86a4224 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-2-7562d4fee13f3ba935a2e824f86a4224 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-3-bdb30a5d6887ee4fb089f8676313eafd b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-3-bdb30a5d6887ee4fb089f8676313eafd new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-3-bdb30a5d6887ee4fb089f8676313eafd @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-4-10713b30ecb3c88acdd775bf9628c38c b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-4-10713b30ecb3c88acdd775bf9628c38c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-4-10713b30ecb3c88acdd775bf9628c38c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-5-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-5-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-5-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-6-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-6-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-6-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-7-ad4ddb5c5d6b994f4dba35f6162b6a9f b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-7-ad4ddb5c5d6b994f4dba35f6162b6a9f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-8-f9dd797f1c90e2108cfee585f443c132 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-8-f9dd797f1c90e2108cfee585f443c132 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook-9-22fdd8380f2652de2492b34a425d46d7 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook-9-22fdd8380f2652de2492b34a425d46d7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-0-7a9e67189d3d4151f23b12c22bde06b5 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-0-7a9e67189d3d4151f23b12c22bde06b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-1-86a409d8b868dc5f1a3bd1e04c2bc28c b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-1-86a409d8b868dc5f1a3bd1e04c2bc28c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-1-86a409d8b868dc5f1a3bd1e04c2bc28c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-10-22fdd8380f2652de2492b34a425d46d7 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-10-22fdd8380f2652de2492b34a425d46d7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-11-60eadbb52f8857830a3034952c631ace b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-11-60eadbb52f8857830a3034952c631ace new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-12-dbe79f90862dc5c6cc4a4fa4b4b6c655 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-12-dbe79f90862dc5c6cc4a4fa4b4b6c655 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-13-60018cae9a0476dc6a0ab4264310edb5 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-13-60018cae9a0476dc6a0ab4264310edb5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-2-2b1df88619e34f221d39598b5cd73283 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-2-2b1df88619e34f221d39598b5cd73283 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-2-2b1df88619e34f221d39598b5cd73283 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-3-7562d4fee13f3ba935a2e824f86a4224 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-3-7562d4fee13f3ba935a2e824f86a4224 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-3-7562d4fee13f3ba935a2e824f86a4224 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-4-bdb30a5d6887ee4fb089f8676313eafd b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-4-bdb30a5d6887ee4fb089f8676313eafd new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-4-bdb30a5d6887ee4fb089f8676313eafd @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-5-10713b30ecb3c88acdd775bf9628c38c b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-5-10713b30ecb3c88acdd775bf9628c38c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-5-10713b30ecb3c88acdd775bf9628c38c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-6-bab89dfffa77258e34a595e0e79986e3 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-6-bab89dfffa77258e34a595e0e79986e3 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-6-bab89dfffa77258e34a595e0e79986e3 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-7-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-7-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-7-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-8-7a45282169e5a15d70ae0afb9e67ec9a b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-8-7a45282169e5a15d70ae0afb9e67ec9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-9-f9dd797f1c90e2108cfee585f443c132 b/sql/hive/src/test/resources/golden/sample_islocalmode_hook_hadoop20-9-f9dd797f1c90e2108cfee585f443c132 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/script_env_var1-0-16015162957e1d8e0ef586b44b276f64 b/sql/hive/src/test/resources/golden/script_env_var1-0-16015162957e1d8e0ef586b44b276f64 new file mode 100644 index 0000000000000..0bc999a3e6aa2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/script_env_var1-0-16015162957e1d8e0ef586b44b276f64 @@ -0,0 +1,2 @@ +1 +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/script_env_var2-0-e5c4893b2ff412f9df0632328d404cef b/sql/hive/src/test/resources/golden/script_env_var2-0-e5c4893b2ff412f9df0632328d404cef new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/script_env_var2-0-e5c4893b2ff412f9df0632328d404cef @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/script_env_var2-1-81cb3e18ab89c533a253defff35e90f0 b/sql/hive/src/test/resources/golden/script_env_var2-1-81cb3e18ab89c533a253defff35e90f0 new file mode 100644 index 0000000000000..0bc999a3e6aa2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/script_env_var2-1-81cb3e18ab89c533a253defff35e90f0 @@ -0,0 +1,2 @@ +1 +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/script_pipe-0-415536ae9ab41c3997f3f31cd52bcbb9 b/sql/hive/src/test/resources/golden/script_pipe-0-415536ae9ab41c3997f3f31cd52bcbb9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/script_pipe-0-415536ae9ab41c3997f3f31cd52bcbb9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/script_pipe-1-a6827d31c2c855e36bd51a21a16aecf0 b/sql/hive/src/test/resources/golden/script_pipe-1-a6827d31c2c855e36bd51a21a16aecf0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/script_pipe-2-3bf368261963ee10883e97c7746796b5 b/sql/hive/src/test/resources/golden/script_pipe-2-3bf368261963ee10883e97c7746796b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/script_pipe-3-afe5db164ccf986c5badd0655e009ea1 b/sql/hive/src/test/resources/golden/script_pipe-3-afe5db164ccf986c5badd0655e009ea1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/script_pipe-4-7fe60c2fcca928a497252d99436b513f b/sql/hive/src/test/resources/golden/script_pipe-4-7fe60c2fcca928a497252d99436b513f new file mode 100644 index 0000000000000..9cf5170e82d7d --- /dev/null +++ b/sql/hive/src/test/resources/golden/script_pipe-4-7fe60c2fcca928a497252d99436b513f @@ -0,0 +1 @@ +238 val_238 238 val_238 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/scriptfile1-0-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/scriptfile1-0-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/scriptfile1-0-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/scriptfile1-1-89cf592f66b7276add70eb2c7689aa34 b/sql/hive/src/test/resources/golden/scriptfile1-1-89cf592f66b7276add70eb2c7689aa34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/scriptfile1-2-b08adb4c792bd84b426a7f0bb9e835a5 b/sql/hive/src/test/resources/golden/scriptfile1-2-b08adb4c792bd84b426a7f0bb9e835a5 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/scriptfile1-2-b08adb4c792bd84b426a7f0bb9e835a5 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/select_as_omitted-0-39bd00e50d63ee4ff10427838591730a b/sql/hive/src/test/resources/golden/select_as_omitted-0-39bd00e50d63ee4ff10427838591730a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_as_omitted-1-99d8c7e0fa02f47d19df6a0d7dabe145 b/sql/hive/src/test/resources/golden/select_as_omitted-1-99d8c7e0fa02f47d19df6a0d7dabe145 new file mode 100644 index 0000000000000..5f4de85940513 --- /dev/null +++ b/sql/hive/src/test/resources/golden/select_as_omitted-1-99d8c7e0fa02f47d19df6a0d7dabe145 @@ -0,0 +1 @@ +0 val_0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/select_unquote_and-0-7299c6986c06fc4a50cb543701527785 b/sql/hive/src/test/resources/golden/select_unquote_and-0-7299c6986c06fc4a50cb543701527785 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_and-1-24a5b4c39dbdbfad75c08f201f2b7a70 b/sql/hive/src/test/resources/golden/select_unquote_and-1-24a5b4c39dbdbfad75c08f201f2b7a70 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_and-2-8b4aac4293f2092c0661c26cb54b5619 b/sql/hive/src/test/resources/golden/select_unquote_and-2-8b4aac4293f2092c0661c26cb54b5619 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_and-3-683007138a712792041ef3c8b84e914e b/sql/hive/src/test/resources/golden/select_unquote_and-3-683007138a712792041ef3c8b84e914e new file mode 100644 index 0000000000000..f35d9602e1a7b --- /dev/null +++ b/sql/hive/src/test/resources/golden/select_unquote_and-3-683007138a712792041ef3c8b84e914e @@ -0,0 +1 @@ +498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/select_unquote_and-4-8417a7b93132e20d468b7948bf46915a b/sql/hive/src/test/resources/golden/select_unquote_and-4-8417a7b93132e20d468b7948bf46915a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_and-5-1a5a68a098bfb9c93b76a458a9faf232 b/sql/hive/src/test/resources/golden/select_unquote_and-5-1a5a68a098bfb9c93b76a458a9faf232 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/select_unquote_and-5-1a5a68a098bfb9c93b76a458a9faf232 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/select_unquote_and-6-f34f161ad7eda65e2640c1d3ae47cb09 b/sql/hive/src/test/resources/golden/select_unquote_and-6-f34f161ad7eda65e2640c1d3ae47cb09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_not-0-7299c6986c06fc4a50cb543701527785 b/sql/hive/src/test/resources/golden/select_unquote_not-0-7299c6986c06fc4a50cb543701527785 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_not-1-24a5b4c39dbdbfad75c08f201f2b7a70 b/sql/hive/src/test/resources/golden/select_unquote_not-1-24a5b4c39dbdbfad75c08f201f2b7a70 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_not-2-8b4aac4293f2092c0661c26cb54b5619 b/sql/hive/src/test/resources/golden/select_unquote_not-2-8b4aac4293f2092c0661c26cb54b5619 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_not-3-683007138a712792041ef3c8b84e914e b/sql/hive/src/test/resources/golden/select_unquote_not-3-683007138a712792041ef3c8b84e914e new file mode 100644 index 0000000000000..f35d9602e1a7b --- /dev/null +++ b/sql/hive/src/test/resources/golden/select_unquote_not-3-683007138a712792041ef3c8b84e914e @@ -0,0 +1 @@ +498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/select_unquote_not-4-a6cbbf81715845f61af8fce977c0bcd5 b/sql/hive/src/test/resources/golden/select_unquote_not-4-a6cbbf81715845f61af8fce977c0bcd5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_not-5-ceada0d3fa65bb2ec65154e797332cde b/sql/hive/src/test/resources/golden/select_unquote_not-5-ceada0d3fa65bb2ec65154e797332cde new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/select_unquote_not-5-ceada0d3fa65bb2ec65154e797332cde @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/select_unquote_not-6-f34f161ad7eda65e2640c1d3ae47cb09 b/sql/hive/src/test/resources/golden/select_unquote_not-6-f34f161ad7eda65e2640c1d3ae47cb09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_or-0-7299c6986c06fc4a50cb543701527785 b/sql/hive/src/test/resources/golden/select_unquote_or-0-7299c6986c06fc4a50cb543701527785 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_or-1-24a5b4c39dbdbfad75c08f201f2b7a70 b/sql/hive/src/test/resources/golden/select_unquote_or-1-24a5b4c39dbdbfad75c08f201f2b7a70 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_or-2-8b4aac4293f2092c0661c26cb54b5619 b/sql/hive/src/test/resources/golden/select_unquote_or-2-8b4aac4293f2092c0661c26cb54b5619 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_or-3-683007138a712792041ef3c8b84e914e b/sql/hive/src/test/resources/golden/select_unquote_or-3-683007138a712792041ef3c8b84e914e new file mode 100644 index 0000000000000..f35d9602e1a7b --- /dev/null +++ b/sql/hive/src/test/resources/golden/select_unquote_or-3-683007138a712792041ef3c8b84e914e @@ -0,0 +1 @@ +498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/select_unquote_or-4-954f604d17e36bbc08c04a0571d33045 b/sql/hive/src/test/resources/golden/select_unquote_or-4-954f604d17e36bbc08c04a0571d33045 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/select_unquote_or-5-55cd874f705673f9de6ec8e3643c760f b/sql/hive/src/test/resources/golden/select_unquote_or-5-55cd874f705673f9de6ec8e3643c760f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/select_unquote_or-5-55cd874f705673f9de6ec8e3643c760f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/select_unquote_or-6-f34f161ad7eda65e2640c1d3ae47cb09 b/sql/hive/src/test/resources/golden/select_unquote_or-6-f34f161ad7eda65e2640c1d3ae47cb09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/serde_reported_schema-0-765ac345199b944a6136273becf29469 b/sql/hive/src/test/resources/golden/serde_reported_schema-0-765ac345199b944a6136273becf29469 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/serde_reported_schema-1-e8c6de8cd50be582d78c9a8244cd92a1 b/sql/hive/src/test/resources/golden/serde_reported_schema-1-e8c6de8cd50be582d78c9a8244cd92a1 new file mode 100644 index 0000000000000..d1168556e09d4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/serde_reported_schema-1-e8c6de8cd50be582d78c9a8244cd92a1 @@ -0,0 +1,11 @@ +myint int from deserializer +mystring string from deserializer +underscore_int int from deserializer +b string None + +# Partition Information +# col_name data_type comment + +b string None + +Detailed Table Information Table(tableName:int_string, dbName:default, owner:marmbrus, createTime:1389733035, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4281266679489657486/int_string, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer, parameters:{serialization.class=org.apache.hadoop.hive.serde2.thrift.test.IntString, serialization.format=org.apache.thrift.protocol.TBinaryProtocol}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:b, type:string, comment:null)], parameters:{transient_lastDdlTime=1389733035}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/serde_reported_schema-2-4da45ecbf2b2c9c1cb3ea05cb608710d b/sql/hive/src/test/resources/golden/serde_reported_schema-2-4da45ecbf2b2c9c1cb3ea05cb608710d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/serde_reported_schema-3-738e1d72a19c3db37ded87ca2fb148fa b/sql/hive/src/test/resources/golden/serde_reported_schema-3-738e1d72a19c3db37ded87ca2fb148fa new file mode 100644 index 0000000000000..0b8f428b24193 --- /dev/null +++ b/sql/hive/src/test/resources/golden/serde_reported_schema-3-738e1d72a19c3db37ded87ca2fb148fa @@ -0,0 +1,11 @@ +myint int from deserializer +mystring string from deserializer +underscore_int int from deserializer +b string None + +# Partition Information +# col_name data_type comment + +b string None + +Detailed Partition Information Partition(values:[part1], dbName:default, tableName:int_string, createTime:1389733036, lastAccessTime:0, sd:StorageDescriptor(cols:[], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4281266679489657486/int_string/b=part1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer, parameters:{serialization.class=org.apache.hadoop.hive.serde2.thrift.test.IntString, serialization.format=org.apache.thrift.protocol.TBinaryProtocol}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{transient_lastDdlTime=1389733036}) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-0-b0b2ec9de0599f8dc2eb160299a2699d b/sql/hive/src/test/resources/golden/set_variable_sub-0-b0b2ec9de0599f8dc2eb160299a2699d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/set_variable_sub-0-b0b2ec9de0599f8dc2eb160299a2699d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-1-e504c8259e45911765541f605c9a46f1 b/sql/hive/src/test/resources/golden/set_variable_sub-1-e504c8259e45911765541f605c9a46f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-10-bf5d1e710ce0974a67b4084aaa868f67 b/sql/hive/src/test/resources/golden/set_variable_sub-10-bf5d1e710ce0974a67b4084aaa868f67 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/set_variable_sub-10-bf5d1e710ce0974a67b4084aaa868f67 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-2-5b8cd23606e1a38f61eb6410ac6a09d6 b/sql/hive/src/test/resources/golden/set_variable_sub-2-5b8cd23606e1a38f61eb6410ac6a09d6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-3-266170978f88a14c20c3944bfb55f5c7 b/sql/hive/src/test/resources/golden/set_variable_sub-3-266170978f88a14c20c3944bfb55f5c7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/set_variable_sub-3-266170978f88a14c20c3944bfb55f5c7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-4-3839b7ac878ed6bdd4f9d242f965ded7 b/sql/hive/src/test/resources/golden/set_variable_sub-4-3839b7ac878ed6bdd4f9d242f965ded7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/set_variable_sub-4-3839b7ac878ed6bdd4f9d242f965ded7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-5-ee3a31bb9bb742f90daea98b290c34cd b/sql/hive/src/test/resources/golden/set_variable_sub-5-ee3a31bb9bb742f90daea98b290c34cd new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/set_variable_sub-5-ee3a31bb9bb742f90daea98b290c34cd @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-6-ee7a7e3d17bb0009f4cf3ffb001b471a b/sql/hive/src/test/resources/golden/set_variable_sub-6-ee7a7e3d17bb0009f4cf3ffb001b471a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-7-e25bdc67a6d9ea3f5d65676a92d1217b b/sql/hive/src/test/resources/golden/set_variable_sub-7-e25bdc67a6d9ea3f5d65676a92d1217b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/set_variable_sub-7-e25bdc67a6d9ea3f5d65676a92d1217b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-8-f321516e93eb0206453465a9b85cf67d b/sql/hive/src/test/resources/golden/set_variable_sub-8-f321516e93eb0206453465a9b85cf67d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/set_variable_sub-8-f321516e93eb0206453465a9b85cf67d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/set_variable_sub-9-fbb54d457caeaafce723856429bbc0b2 b/sql/hive/src/test/resources/golden/set_variable_sub-9-fbb54d457caeaafce723856429bbc0b2 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/set_variable_sub-9-fbb54d457caeaafce723856429bbc0b2 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_describe_func_quotes-0-65fee14fcf58502241f0772b21096780 b/sql/hive/src/test/resources/golden/show_describe_func_quotes-0-65fee14fcf58502241f0772b21096780 new file mode 100644 index 0000000000000..fd33cfcc9ab20 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_describe_func_quotes-0-65fee14fcf58502241f0772b21096780 @@ -0,0 +1 @@ +concat \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_describe_func_quotes-1-26b98b2901556449d5431d731aaa642d b/sql/hive/src/test/resources/golden/show_describe_func_quotes-1-26b98b2901556449d5431d731aaa642d new file mode 100644 index 0000000000000..fd33cfcc9ab20 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_describe_func_quotes-1-26b98b2901556449d5431d731aaa642d @@ -0,0 +1 @@ +concat \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_describe_func_quotes-2-f795383fcecedf7266cd7aed8283cec3 b/sql/hive/src/test/resources/golden/show_describe_func_quotes-2-f795383fcecedf7266cd7aed8283cec3 new file mode 100644 index 0000000000000..a3998eeeee623 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_describe_func_quotes-2-f795383fcecedf7266cd7aed8283cec3 @@ -0,0 +1 @@ +concat(str1, str2, ... strN) - returns the concatenation of str1, str2, ... strN or concat(bin1, bin2, ... binN) - returns the concatenation of bytes in binary data bin1, bin2, ... binN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_describe_func_quotes-3-7bc53505a4e6587132870d8d0a704d2 b/sql/hive/src/test/resources/golden/show_describe_func_quotes-3-7bc53505a4e6587132870d8d0a704d2 new file mode 100644 index 0000000000000..a3998eeeee623 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_describe_func_quotes-3-7bc53505a4e6587132870d8d0a704d2 @@ -0,0 +1 @@ +concat(str1, str2, ... strN) - returns the concatenation of str1, str2, ... strN or concat(bin1, bin2, ... binN) - returns the concatenation of bytes in binary data bin1, bin2, ... binN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_functions-0-45a7762c39f1b0f26f076220e2764043 b/sql/hive/src/test/resources/golden/show_functions-0-45a7762c39f1b0f26f076220e2764043 new file mode 100644 index 0000000000000..9d40ffaef5862 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_functions-0-45a7762c39f1b0f26f076220e2764043 @@ -0,0 +1,192 @@ +! +!= +% +& +* ++ +- +/ +< +<= +<=> +<> += +== +> +>= +^ +abs +acos +and +array +array_contains +ascii +asin +assert_true +atan +avg +base64 +between +bin +case +ceil +ceiling +coalesce +collect_set +compute_stats +concat +concat_ws +context_ngrams +conv +corr +cos +count +covar_pop +covar_samp +create_union +cume_dist +date_add +date_sub +datediff +day +dayofmonth +decode +degrees +dense_rank +div +e +elt +encode +ewah_bitmap +ewah_bitmap_and +ewah_bitmap_empty +ewah_bitmap_or +exp +explode +field +find_in_set +first_value +floor +format_number +from_unixtime +from_utc_timestamp +get_json_object +hash +hex +histogram_numeric +hour +if +in +in_file +index +inline +instr +isnotnull +isnull +java_method +json_tuple +lag +last_value +lcase +lead +length +like +ln +locate +log +log10 +log2 +lower +lpad +ltrim +map +map_keys +map_values +matchpath +max +min +minute +month +named_struct +negative +ngrams +noop +noopwithmap +not +ntile +nvl +or +parse_url +parse_url_tuple +percent_rank +percentile +percentile_approx +pi +pmod +positive +pow +power +printf +radians +rand +rank +reflect +reflect2 +regexp +regexp_extract +regexp_replace +repeat +reverse +rlike +round +row_number +rpad +rtrim +second +sentences +sign +sin +size +sort_array +space +split +sqrt +stack +std +stddev +stddev_pop +stddev_samp +str_to_map +struct +substr +substring +sum +tan +to_date +to_unix_timestamp +to_utc_timestamp +translate +trim +ucase +unbase64 +unhex +unix_timestamp +upper +var_pop +var_samp +variance +weekofyear +when +windowingtablefunction +xpath +xpath_boolean +xpath_double +xpath_float +xpath_int +xpath_long +xpath_number +xpath_short +xpath_string +year +| +~ \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_functions-1-4a6f611305f58bdbafb2fd89ec62d797 b/sql/hive/src/test/resources/golden/show_functions-1-4a6f611305f58bdbafb2fd89ec62d797 new file mode 100644 index 0000000000000..c62b965cb1559 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_functions-1-4a6f611305f58bdbafb2fd89ec62d797 @@ -0,0 +1,17 @@ +case +ceil +ceiling +coalesce +collect_set +compute_stats +concat +concat_ws +context_ngrams +conv +corr +cos +count +covar_pop +covar_samp +create_union +cume_dist \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_functions-2-97cbada21ad9efda7ce9de5891deca7c b/sql/hive/src/test/resources/golden/show_functions-2-97cbada21ad9efda7ce9de5891deca7c new file mode 100644 index 0000000000000..a56b5a3766c5c --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_functions-2-97cbada21ad9efda7ce9de5891deca7c @@ -0,0 +1,32 @@ +assert_true +case +coalesce +decode +e +encode +explode +first_value +from_unixtime +in_file +inline +json_tuple +last_value +lcase +like +locate +minute +negative +ntile +parse_url_tuple +percentile +positive +regexp_replace +reverse +rlike +size +space +to_date +translate +ucase +variance +xpath_double \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_functions-3-86945c60aed23626c43b507ee4ee6049 b/sql/hive/src/test/resources/golden/show_functions-3-86945c60aed23626c43b507ee4ee6049 new file mode 100644 index 0000000000000..86605075c3d25 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_functions-3-86945c60aed23626c43b507ee4ee6049 @@ -0,0 +1,3 @@ +log +log10 +log2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_functions-4-4deaa213aff83575bbaf859f79bfdd48 b/sql/hive/src/test/resources/golden/show_functions-4-4deaa213aff83575bbaf859f79bfdd48 new file mode 100644 index 0000000000000..312f6cdbf68c7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_functions-4-4deaa213aff83575bbaf859f79bfdd48 @@ -0,0 +1,4 @@ +date_add +date_sub +datediff +to_date \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_functions-5-d6dad716f80a2e99ef9fc2e9782ef138 b/sql/hive/src/test/resources/golden/show_functions-5-d6dad716f80a2e99ef9fc2e9782ef138 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-0-9acff7f5096cdafc92aa2ddb0f296f83 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-0-9acff7f5096cdafc92aa2ddb0f296f83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-1-3f42728fb0083beb962f07c43dd9c9b7 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-1-3f42728fb0083beb962f07c43dd9c9b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-10-d759a63f08c878456c3401626f253ff5 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-10-d759a63f08c878456c3401626f253ff5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-11-afe66851d1cdc5d8a8a0d21c5705a59e b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-11-afe66851d1cdc5d8a8a0d21c5705a59e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-12-f2dd38f0a56cd2137c9e1b870271550b b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-12-f2dd38f0a56cd2137c9e1b870271550b new file mode 100644 index 0000000000000..e772f4a83fecd --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-12-f2dd38f0a56cd2137c9e1b870271550b @@ -0,0 +1,16 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOWINDEXES show_idx_full) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Index Operator: + Show Indexes + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-13-a9224a7a0012e407da67041bf680d490 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-13-a9224a7a0012e407da67041bf680d490 new file mode 100644 index 0000000000000..d68fbfc9c1e0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-13-a9224a7a0012e407da67041bf680d490 @@ -0,0 +1,4 @@ +idx_1 show_idx_full key default__show_idx_full_idx_1__ compact +idx_2 show_idx_full value1 default__show_idx_full_idx_2__ compact +idx_comment show_idx_full value2 default__show_idx_full_idx_comment__ compact index comment +idx_compound show_idx_full key, value1 default__show_idx_full_idx_compound__ compact \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-14-9d121385c5ab32d659dc7d0374ae8d6e b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-14-9d121385c5ab32d659dc7d0374ae8d6e new file mode 100644 index 0000000000000..94ee57be9dcaf --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-14-9d121385c5ab32d659dc7d0374ae8d6e @@ -0,0 +1,16 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOWINDEXES show_idx_empty) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Index Operator: + Show Indexes + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-15-b032f4869c43d1278a890328d0591d5d b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-15-b032f4869c43d1278a890328d0591d5d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-16-8b2dc53c795584e1e23a8d631c82b43f b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-16-8b2dc53c795584e1e23a8d631c82b43f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-17-c93fd07893f47b712165725c78d95555 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-17-c93fd07893f47b712165725c78d95555 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-18-9acff7f5096cdafc92aa2ddb0f296f83 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-18-9acff7f5096cdafc92aa2ddb0f296f83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-19-3f42728fb0083beb962f07c43dd9c9b7 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-19-3f42728fb0083beb962f07c43dd9c9b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-2-e90c14f9edaeab8cf4540e9a35b11546 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-2-e90c14f9edaeab8cf4540e9a35b11546 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-3-aa5935155586821fb35e17156c8d8460 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-3-aa5935155586821fb35e17156c8d8460 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-4-6eb587e2751942de625c9229872ca0dc b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-4-6eb587e2751942de625c9229872ca0dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-5-ad307c2c7edb4bb2e6c34ef1eb7b47f9 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-5-ad307c2c7edb4bb2e6c34ef1eb7b47f9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-6-ae97a64481efe733a19007ed400925bc b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-6-ae97a64481efe733a19007ed400925bc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-7-34016fb262ce768de45ec1b7693fd6c8 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-7-34016fb262ce768de45ec1b7693fd6c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-8-16d39297488db165145e1546c4cb222c b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-8-16d39297488db165145e1546c4cb222c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_edge_cases-9-fba02256147a1a753d40f56825449471 b/sql/hive/src/test/resources/golden/show_indexes_edge_cases-9-fba02256147a1a753d40f56825449471 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-0-b6a94a6f5b3938d53ddf419ff97a87ec b/sql/hive/src/test/resources/golden/show_indexes_syntax-0-b6a94a6f5b3938d53ddf419ff97a87ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-1-fe3da04846e702e0bbe22e05b136a3b3 b/sql/hive/src/test/resources/golden/show_indexes_syntax-1-fe3da04846e702e0bbe22e05b136a3b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-10-b6a94a6f5b3938d53ddf419ff97a87ec b/sql/hive/src/test/resources/golden/show_indexes_syntax-10-b6a94a6f5b3938d53ddf419ff97a87ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-2-8207d7ca034ed62b9fb2c727497c22b3 b/sql/hive/src/test/resources/golden/show_indexes_syntax-2-8207d7ca034ed62b9fb2c727497c22b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-3-d687cc8f5d39bfbad3537a6e92788bb7 b/sql/hive/src/test/resources/golden/show_indexes_syntax-3-d687cc8f5d39bfbad3537a6e92788bb7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-4-187e7dfb63d6b70982db8b4ddeb82ed7 b/sql/hive/src/test/resources/golden/show_indexes_syntax-4-187e7dfb63d6b70982db8b4ddeb82ed7 new file mode 100644 index 0000000000000..7e68a8acb1a87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_syntax-4-187e7dfb63d6b70982db8b4ddeb82ed7 @@ -0,0 +1,16 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOWINDEXES show_idx_t1) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Index Operator: + Show Indexes + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-5-47d09f8540512a5f3e21a3e1d4fd2d49 b/sql/hive/src/test/resources/golden/show_indexes_syntax-5-47d09f8540512a5f3e21a3e1d4fd2d49 new file mode 100644 index 0000000000000..36d22451eba3e --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_syntax-5-47d09f8540512a5f3e21a3e1d4fd2d49 @@ -0,0 +1 @@ +idx_t1 show_idx_t1 key default__show_idx_t1_idx_t1__ compact \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-6-de64752733e0dcae32e692d2ad38e3d4 b/sql/hive/src/test/resources/golden/show_indexes_syntax-6-de64752733e0dcae32e692d2ad38e3d4 new file mode 100644 index 0000000000000..7e68a8acb1a87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_syntax-6-de64752733e0dcae32e692d2ad38e3d4 @@ -0,0 +1,16 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOWINDEXES show_idx_t1) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Index Operator: + Show Indexes + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-7-991839c8e50c5b4e490ec7faf2228d58 b/sql/hive/src/test/resources/golden/show_indexes_syntax-7-991839c8e50c5b4e490ec7faf2228d58 new file mode 100644 index 0000000000000..36d22451eba3e --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_syntax-7-991839c8e50c5b4e490ec7faf2228d58 @@ -0,0 +1 @@ +idx_t1 show_idx_t1 key default__show_idx_t1_idx_t1__ compact \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-8-8c10f994f51bce851ecb0acee65ced7e b/sql/hive/src/test/resources/golden/show_indexes_syntax-8-8c10f994f51bce851ecb0acee65ced7e new file mode 100644 index 0000000000000..4dddeee9a233f --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_syntax-8-8c10f994f51bce851ecb0acee65ced7e @@ -0,0 +1,16 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOWINDEXES show_idx_t1 FORMATTED) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Index Operator: + Show Indexes + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/show_indexes_syntax-9-f8385127c6405a2c9e48b5988184b515 b/sql/hive/src/test/resources/golden/show_indexes_syntax-9-f8385127c6405a2c9e48b5988184b515 new file mode 100644 index 0000000000000..76e0434294b4f --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_indexes_syntax-9-f8385127c6405a2c9e48b5988184b515 @@ -0,0 +1,4 @@ +idx_name tab_name col_names idx_tab_name idx_type comment + + +idx_t1 show_idx_t1 key default__show_idx_t1_idx_t1__ compact \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_partitions-0-73d0fdcea0bd9b828cbc3c2e88acb51a b/sql/hive/src/test/resources/golden/show_partitions-0-73d0fdcea0bd9b828cbc3c2e88acb51a new file mode 100644 index 0000000000000..e9c723bbd136e --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_partitions-0-73d0fdcea0bd9b828cbc3c2e88acb51a @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_partitions-1-e94d4100cb64c67f1127b4e255d28ae0 b/sql/hive/src/test/resources/golden/show_partitions-1-e94d4100cb64c67f1127b4e255d28ae0 new file mode 100644 index 0000000000000..19b4a62499762 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_partitions-1-e94d4100cb64c67f1127b4e255d28ae0 @@ -0,0 +1,2 @@ +ds=2008-04-08/hr=11 +ds=2008-04-09/hr=11 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_partitions-2-a1bde7c2c040b4d45ddceac9983c2ca b/sql/hive/src/test/resources/golden/show_partitions-2-a1bde7c2c040b4d45ddceac9983c2ca new file mode 100644 index 0000000000000..f3614273fa8fa --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_partitions-2-a1bde7c2c040b4d45ddceac9983c2ca @@ -0,0 +1,2 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_partitions-3-9e3f80cb6ed9883c715ea8aa3f391d70 b/sql/hive/src/test/resources/golden/show_partitions-3-9e3f80cb6ed9883c715ea8aa3f391d70 new file mode 100644 index 0000000000000..0cdd3e8594c59 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_partitions-3-9e3f80cb6ed9883c715ea8aa3f391d70 @@ -0,0 +1 @@ +ds=2008-04-08/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_tables-0-679cc07f8475a20b49927a5bbbd3d702 b/sql/hive/src/test/resources/golden/show_tables-0-679cc07f8475a20b49927a5bbbd3d702 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-1-ac1c8cca812353544d3f7dead5d033ce b/sql/hive/src/test/resources/golden/show_tables-1-ac1c8cca812353544d3f7dead5d033ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-10-643b24446d74450c0f83144b1d0ec433 b/sql/hive/src/test/resources/golden/show_tables-10-643b24446d74450c0f83144b1d0ec433 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-11-3f9a7f993510123059493826470f78f7 b/sql/hive/src/test/resources/golden/show_tables-11-3f9a7f993510123059493826470f78f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-12-c31d2f4105ec3714cfc55eef68d3f60c b/sql/hive/src/test/resources/golden/show_tables-12-c31d2f4105ec3714cfc55eef68d3f60c new file mode 100644 index 0000000000000..60f7943eda4a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-12-c31d2f4105ec3714cfc55eef68d3f60c @@ -0,0 +1,3 @@ +bar +baz +foo \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_tables-13-f72d7ab6f3f04161ce2b8f8332244657 b/sql/hive/src/test/resources/golden/show_tables-13-f72d7ab6f3f04161ce2b8f8332244657 new file mode 100644 index 0000000000000..4ffc580e2b8f3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-13-f72d7ab6f3f04161ce2b8f8332244657 @@ -0,0 +1,4 @@ +shtb_test1 +shtb_test2 +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_tables-14-26ca9b5509544ebac182d8aa4264ff1c b/sql/hive/src/test/resources/golden/show_tables-14-26ca9b5509544ebac182d8aa4264ff1c new file mode 100644 index 0000000000000..60f7943eda4a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-14-26ca9b5509544ebac182d8aa4264ff1c @@ -0,0 +1,3 @@ +bar +baz +foo \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_tables-15-72a95694f749cb3d5760a69083e9cafe b/sql/hive/src/test/resources/golden/show_tables-15-72a95694f749cb3d5760a69083e9cafe new file mode 100644 index 0000000000000..4ffc580e2b8f3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-15-72a95694f749cb3d5760a69083e9cafe @@ -0,0 +1,4 @@ +shtb_test1 +shtb_test2 +src +srcpart \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_tables-16-dfd802554b6764b3105b6fd8dbb8e173 b/sql/hive/src/test/resources/golden/show_tables-16-dfd802554b6764b3105b6fd8dbb8e173 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-17-49777c49d2627373ed5e459c4848c9ab b/sql/hive/src/test/resources/golden/show_tables-17-49777c49d2627373ed5e459c4848c9ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-18-c22c5af6ef0bcb03fdafe3c4df34ec93 b/sql/hive/src/test/resources/golden/show_tables-18-c22c5af6ef0bcb03fdafe3c4df34ec93 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-19-695a68c82308540eba1d0a04e032cf39 b/sql/hive/src/test/resources/golden/show_tables-19-695a68c82308540eba1d0a04e032cf39 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-2-c96604d76bcb3721d5e5a327cac0d5e5 b/sql/hive/src/test/resources/golden/show_tables-2-c96604d76bcb3721d5e5a327cac0d5e5 new file mode 100644 index 0000000000000..916ac1482c061 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-2-c96604d76bcb3721d5e5a327cac0d5e5 @@ -0,0 +1,18 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOWTABLES 'shtb_*') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Table Operator: + Show Tables + database name: default + pattern: shtb_* + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/show_tables-20-691b4e6664e6d435233ea4e8c3b585d5 b/sql/hive/src/test/resources/golden/show_tables-20-691b4e6664e6d435233ea4e8c3b585d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-21-7a9e67189d3d4151f23b12c22bde06b5 b/sql/hive/src/test/resources/golden/show_tables-21-7a9e67189d3d4151f23b12c22bde06b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-22-274454ebeb7f98690a3c152617a0e391 b/sql/hive/src/test/resources/golden/show_tables-22-274454ebeb7f98690a3c152617a0e391 new file mode 100644 index 0000000000000..19102815663d2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-22-274454ebeb7f98690a3c152617a0e391 @@ -0,0 +1 @@ +foo \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_tables-3-a56f51be557c6f636f99fafdbbbbcd9c b/sql/hive/src/test/resources/golden/show_tables-3-a56f51be557c6f636f99fafdbbbbcd9c new file mode 100644 index 0000000000000..b67b816ee4b45 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-3-a56f51be557c6f636f99fafdbbbbcd9c @@ -0,0 +1,2 @@ +shtb_test1 +shtb_test2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_tables-4-743d585ec3da5fbb927581cd0683ae35 b/sql/hive/src/test/resources/golden/show_tables-4-743d585ec3da5fbb927581cd0683ae35 new file mode 100644 index 0000000000000..8f06e234b2a6e --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-4-743d585ec3da5fbb927581cd0683ae35 @@ -0,0 +1,18 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOWTABLES 'shtb_test1|shtb_test2') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Table Operator: + Show Tables + database name: default + pattern: shtb_test1|shtb_test2 + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/show_tables-5-c685b358b604bf3ef980a78d9178d87d b/sql/hive/src/test/resources/golden/show_tables-5-c685b358b604bf3ef980a78d9178d87d new file mode 100644 index 0000000000000..b67b816ee4b45 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tables-5-c685b358b604bf3ef980a78d9178d87d @@ -0,0 +1,2 @@ +shtb_test1 +shtb_test2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/show_tables-6-1086ed68a5cf2540a72b3e949b9ea5f8 b/sql/hive/src/test/resources/golden/show_tables-6-1086ed68a5cf2540a72b3e949b9ea5f8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-7-a62fc229d241303bffb29b34ad125f8c b/sql/hive/src/test/resources/golden/show_tables-7-a62fc229d241303bffb29b34ad125f8c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-8-691b4e6664e6d435233ea4e8c3b585d5 b/sql/hive/src/test/resources/golden/show_tables-8-691b4e6664e6d435233ea4e8c3b585d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tables-9-64c9bf0618541518f2ba30ec24a94423 b/sql/hive/src/test/resources/golden/show_tables-9-64c9bf0618541518f2ba30ec24a94423 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-0-4fa957197c8678b0a3a64d8f4f6da1fa b/sql/hive/src/test/resources/golden/show_tablestatus-0-4fa957197c8678b0a3a64d8f4f6da1fa new file mode 100644 index 0000000000000..bec424bb026e9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tablestatus-0-4fa957197c8678b0a3a64d8f4f6da1fa @@ -0,0 +1,14 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOW_TABLESTATUS `src` default) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-1-4c31924711bdb64603a14ce57da86ab7 b/sql/hive/src/test/resources/golden/show_tablestatus-1-4c31924711bdb64603a14ce57da86ab7 new file mode 100644 index 0000000000000..9392b7dc686f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tablestatus-1-4c31924711bdb64603a14ce57da86ab7 @@ -0,0 +1,14 @@ +tableName:src +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4281266679489657486/src +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:false +partitionColumns: +totalNumberFiles:1 +totalFileSize:5812 +maxFileSize:5812 +minFileSize:5812 +lastAccessTime:0 +lastUpdateTime:1389733248000 diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-2-ecddce523f2af516700677a051581330 b/sql/hive/src/test/resources/golden/show_tablestatus-2-ecddce523f2af516700677a051581330 new file mode 100644 index 0000000000000..9392b7dc686f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tablestatus-2-ecddce523f2af516700677a051581330 @@ -0,0 +1,14 @@ +tableName:src +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4281266679489657486/src +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:false +partitionColumns: +totalNumberFiles:1 +totalFileSize:5812 +maxFileSize:5812 +minFileSize:5812 +lastAccessTime:0 +lastUpdateTime:1389733248000 diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-3-dccfbc8b5a223a9fe47120ca771ee61d b/sql/hive/src/test/resources/golden/show_tablestatus-3-dccfbc8b5a223a9fe47120ca771ee61d new file mode 100644 index 0000000000000..9392b7dc686f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tablestatus-3-dccfbc8b5a223a9fe47120ca771ee61d @@ -0,0 +1,14 @@ +tableName:src +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4281266679489657486/src +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:false +partitionColumns: +totalNumberFiles:1 +totalFileSize:5812 +maxFileSize:5812 +minFileSize:5812 +lastAccessTime:0 +lastUpdateTime:1389733248000 diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-4-5208ae4e509cb7f10dd4e0d29b5ab346 b/sql/hive/src/test/resources/golden/show_tablestatus-4-5208ae4e509cb7f10dd4e0d29b5ab346 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-5-5bd2196d71aa5308a5d01d9e9df3f59 b/sql/hive/src/test/resources/golden/show_tablestatus-5-5bd2196d71aa5308a5d01d9e9df3f59 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-6-d5e2f1950de4bf0ff77b7c66cddf3eb8 b/sql/hive/src/test/resources/golden/show_tablestatus-6-d5e2f1950de4bf0ff77b7c66cddf3eb8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-7-f7b9148c16045269344c5d74fb8a449c b/sql/hive/src/test/resources/golden/show_tablestatus-7-f7b9148c16045269344c5d74fb8a449c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-8-1cd5acb4091d916e5e18948a39979b51 b/sql/hive/src/test/resources/golden/show_tablestatus-8-1cd5acb4091d916e5e18948a39979b51 new file mode 100644 index 0000000000000..f8b64f6056ea7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tablestatus-8-1cd5acb4091d916e5e18948a39979b51 @@ -0,0 +1,14 @@ +tableName:srcpart +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4281266679489657486/srcpart/ds=2008-04-08/hr=11 +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:true +partitionColumns:struct partition_columns { string ds, string hr} +totalNumberFiles:1 +totalFileSize:5812 +maxFileSize:5812 +minFileSize:5812 +lastAccessTime:0 +lastUpdateTime:1389733249000 diff --git a/sql/hive/src/test/resources/golden/show_tablestatus-9-e3cc1823000abb51d2635e0c824e81a9 b/sql/hive/src/test/resources/golden/show_tablestatus-9-e3cc1823000abb51d2635e0c824e81a9 new file mode 100644 index 0000000000000..9392b7dc686f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/show_tablestatus-9-e3cc1823000abb51d2635e0c824e81a9 @@ -0,0 +1,14 @@ +tableName:src +owner:marmbrus +location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4281266679489657486/src +inputformat:org.apache.hadoop.mapred.TextInputFormat +outputformat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +columns:struct columns { i32 key, string value} +partitioned:false +partitionColumns: +totalNumberFiles:1 +totalFileSize:5812 +maxFileSize:5812 +minFileSize:5812 +lastAccessTime:0 +lastUpdateTime:1389733248000 diff --git a/sql/hive/src/test/resources/golden/showparts-0-593619bb962b318b82896658deaea1f1 b/sql/hive/src/test/resources/golden/showparts-0-593619bb962b318b82896658deaea1f1 new file mode 100644 index 0000000000000..b590724bca78d --- /dev/null +++ b/sql/hive/src/test/resources/golden/showparts-0-593619bb962b318b82896658deaea1f1 @@ -0,0 +1,17 @@ +ABSTRACT SYNTAX TREE: + (TOK_SHOWPARTITIONS srcpart) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Show Partitions Operator: + Show Partitions + table: srcpart + + Stage: Stage-1 + Fetch Operator + limit: -1 + diff --git a/sql/hive/src/test/resources/golden/showparts-1-73d0fdcea0bd9b828cbc3c2e88acb51a b/sql/hive/src/test/resources/golden/showparts-1-73d0fdcea0bd9b828cbc3c2e88acb51a new file mode 100644 index 0000000000000..e9c723bbd136e --- /dev/null +++ b/sql/hive/src/test/resources/golden/showparts-1-73d0fdcea0bd9b828cbc3c2e88acb51a @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-0-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-0-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-0-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-1-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-1-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-1-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-10-fa00cf008a039908eec64ad5dd415c5b b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-10-fa00cf008a039908eec64ad5dd415c5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-11-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-11-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-12-dd683e148baed6b27642eebacaa87a4f b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-12-dd683e148baed6b27642eebacaa87a4f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-13-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-13-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-13-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-3-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-3-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-3-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-4-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-4-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-4-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-5-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-5-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-5-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-6-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-6-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-6-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-7-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-7-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-7-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-8-daf10744f465e055b35809a528135370 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-8-daf10744f465e055b35809a528135370 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-9-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoin_union_remove_1-9-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-0-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-0-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-0-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-1-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-1-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-1-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-10-bebf0a312f3110d0b518153543030f06 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-10-bebf0a312f3110d0b518153543030f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-11-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-11-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-12-fa53198d9eecb9d274b09d4351b9274e b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-12-fa53198d9eecb9d274b09d4351b9274e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-13-3fda17e4414d191f837631438a19e700 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-13-3fda17e4414d191f837631438a19e700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-14-bf8bd6dbf9485c05f8fd4f84e2530724 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-14-bf8bd6dbf9485c05f8fd4f84e2530724 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-15-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-15-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-15-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-3-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-3-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-3-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-4-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-4-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-4-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-5-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-5-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-5-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-6-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-6-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-6-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-7-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-7-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-7-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-8-c64266431d312784ebc7b9ca07ab5188 b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-8-c64266431d312784ebc7b9ca07ab5188 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-9-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoin_union_remove_2-9-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt1-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt1-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt1-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt1-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt1-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt1-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt1-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt1-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt1-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt1-3-9669bca0e2da11221b2e9eb21322e0c6 b/sql/hive/src/test/resources/golden/skewjoinopt1-3-9669bca0e2da11221b2e9eb21322e0c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt1-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt1-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt1-5-fa00cf008a039908eec64ad5dd415c5b b/sql/hive/src/test/resources/golden/skewjoinopt1-5-fa00cf008a039908eec64ad5dd415c5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt1-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt1-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt1-7-f66c3935651d3cc5fef7d0284e123614 b/sql/hive/src/test/resources/golden/skewjoinopt1-7-f66c3935651d3cc5fef7d0284e123614 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt10-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt10-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt10-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt10-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt10-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt10-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-3-27fc8f7d7456a761e1d0c2c075b84dc6 b/sql/hive/src/test/resources/golden/skewjoinopt10-3-27fc8f7d7456a761e1d0c2c075b84dc6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt10-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-5-9abe9cb11e3336a689a4116f8804c02a b/sql/hive/src/test/resources/golden/skewjoinopt10-5-9abe9cb11e3336a689a4116f8804c02a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-6-bc7008e74f5eccab48d820877d83e7e4 b/sql/hive/src/test/resources/golden/skewjoinopt10-6-bc7008e74f5eccab48d820877d83e7e4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-7-f4015c993efd5fc155e2faec784718d0 b/sql/hive/src/test/resources/golden/skewjoinopt10-7-f4015c993efd5fc155e2faec784718d0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt10-8-c9624d1650d395f18d9e510cab4fab79 b/sql/hive/src/test/resources/golden/skewjoinopt10-8-c9624d1650d395f18d9e510cab4fab79 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt11-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt11-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt11-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt11-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt11-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt11-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt11-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt11-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt11-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt11-3-a079ede4f4245e62b02f624efedfb597 b/sql/hive/src/test/resources/golden/skewjoinopt11-3-a079ede4f4245e62b02f624efedfb597 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt11-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt11-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt11-5-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/skewjoinopt11-5-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt11-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt11-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt11-7-9e7e6016590d33c617cb568cbd45ef68 b/sql/hive/src/test/resources/golden/skewjoinopt11-7-9e7e6016590d33c617cb568cbd45ef68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt12-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt12-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt12-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt12-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt12-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt12-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt12-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt12-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt12-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt12-3-da45999e75a09b27161af2c7414c1170 b/sql/hive/src/test/resources/golden/skewjoinopt12-3-da45999e75a09b27161af2c7414c1170 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt12-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt12-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt12-5-e6db5d1ec4694475ab0b8f43eba415cd b/sql/hive/src/test/resources/golden/skewjoinopt12-5-e6db5d1ec4694475ab0b8f43eba415cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt12-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt12-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt12-7-8bbc680be8a68053db008789f335c2f0 b/sql/hive/src/test/resources/golden/skewjoinopt12-7-8bbc680be8a68053db008789f335c2f0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt13-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt13-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt13-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt13-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-10-b81a7fa7b6158dd4d77fa4c62db1f223 b/sql/hive/src/test/resources/golden/skewjoinopt13-10-b81a7fa7b6158dd4d77fa4c62db1f223 new file mode 100644 index 0000000000000..872146532307a --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt13-10-b81a7fa7b6158dd4d77fa4c62db1f223 @@ -0,0 +1 @@ +2 12 2 22 2 12 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt13-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt13-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-3-caf1c5fd299fdbdb655234d01d44caf2 b/sql/hive/src/test/resources/golden/skewjoinopt13-3-caf1c5fd299fdbdb655234d01d44caf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt13-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-5-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/skewjoinopt13-5-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt13-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-7-c329b937ad1d7cf1c838640ef5f4d135 b/sql/hive/src/test/resources/golden/skewjoinopt13-7-c329b937ad1d7cf1c838640ef5f4d135 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-8-3fda17e4414d191f837631438a19e700 b/sql/hive/src/test/resources/golden/skewjoinopt13-8-3fda17e4414d191f837631438a19e700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt13-9-ab816627b2137d1850cf05b6f2b59e2d b/sql/hive/src/test/resources/golden/skewjoinopt13-9-ab816627b2137d1850cf05b6f2b59e2d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt14-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt14-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt14-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt14-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt14-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt14-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-3-9669bca0e2da11221b2e9eb21322e0c6 b/sql/hive/src/test/resources/golden/skewjoinopt14-3-9669bca0e2da11221b2e9eb21322e0c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt14-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-5-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/skewjoinopt14-5-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt14-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-7-c329b937ad1d7cf1c838640ef5f4d135 b/sql/hive/src/test/resources/golden/skewjoinopt14-7-c329b937ad1d7cf1c838640ef5f4d135 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-8-3fda17e4414d191f837631438a19e700 b/sql/hive/src/test/resources/golden/skewjoinopt14-8-3fda17e4414d191f837631438a19e700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt14-9-cdf19a17f3295447b66e6e6445742a74 b/sql/hive/src/test/resources/golden/skewjoinopt14-9-cdf19a17f3295447b66e6e6445742a74 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt15-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt15-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt15-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt15-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-10-7df9fe6075a96bf9849848c93e449469 b/sql/hive/src/test/resources/golden/skewjoinopt15-10-7df9fe6075a96bf9849848c93e449469 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-11-3f5ba247cb51c79bacdd56ef3ecbb601 b/sql/hive/src/test/resources/golden/skewjoinopt15-11-3f5ba247cb51c79bacdd56ef3ecbb601 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt15-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt15-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-3-32fed3a53e7c15b549a71c0e71d93484 b/sql/hive/src/test/resources/golden/skewjoinopt15-3-32fed3a53e7c15b549a71c0e71d93484 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-4-27dc133d5ad9806d0c8ff0ebf8f9a469 b/sql/hive/src/test/resources/golden/skewjoinopt15-4-27dc133d5ad9806d0c8ff0ebf8f9a469 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-5-dff9d122eb83760f08d1d77814c24c91 b/sql/hive/src/test/resources/golden/skewjoinopt15-5-dff9d122eb83760f08d1d77814c24c91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-6-717b85f496a5cf006cb352f9d884608d b/sql/hive/src/test/resources/golden/skewjoinopt15-6-717b85f496a5cf006cb352f9d884608d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-7-ba43a86694107dd4cb754d676935408 b/sql/hive/src/test/resources/golden/skewjoinopt15-7-ba43a86694107dd4cb754d676935408 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-8-7381c1f36c997afac91d8f8f29e865f3 b/sql/hive/src/test/resources/golden/skewjoinopt15-8-7381c1f36c997afac91d8f8f29e865f3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt15-9-ccb54093d518eaca1e4644686e9e776e b/sql/hive/src/test/resources/golden/skewjoinopt15-9-ccb54093d518eaca1e4644686e9e776e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt16-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt16-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt16-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt16-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt16-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt16-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt16-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt16-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt16-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt16-3-25f94adcba19b899d1db3af93ea1c95b b/sql/hive/src/test/resources/golden/skewjoinopt16-3-25f94adcba19b899d1db3af93ea1c95b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt16-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt16-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt16-5-fa00cf008a039908eec64ad5dd415c5b b/sql/hive/src/test/resources/golden/skewjoinopt16-5-fa00cf008a039908eec64ad5dd415c5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt16-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt16-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt16-7-b3208400a48223a410b76a4bd1362da5 b/sql/hive/src/test/resources/golden/skewjoinopt16-7-b3208400a48223a410b76a4bd1362da5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt17-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt17-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt17-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt17-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt17-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt17-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt17-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt17-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt17-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt17-3-25f94adcba19b899d1db3af93ea1c95b b/sql/hive/src/test/resources/golden/skewjoinopt17-3-25f94adcba19b899d1db3af93ea1c95b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt17-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt17-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt17-5-2e4b9b1d820a7ef31c51bd4fd2cc28f3 b/sql/hive/src/test/resources/golden/skewjoinopt17-5-2e4b9b1d820a7ef31c51bd4fd2cc28f3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt17-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt17-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt17-7-373b8a6363139ca37395b1cc8c9808d9 b/sql/hive/src/test/resources/golden/skewjoinopt17-7-373b8a6363139ca37395b1cc8c9808d9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt18-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt18-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt18-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt18-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-10-8c180ce74ca1ac0eefab2d70d38e44fa b/sql/hive/src/test/resources/golden/skewjoinopt18-10-8c180ce74ca1ac0eefab2d70d38e44fa new file mode 100644 index 0000000000000..ee1bb6b112381 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt18-10-8c180ce74ca1ac0eefab2d70d38e44fa @@ -0,0 +1,6 @@ +2 12 2 22 +3 13 3 13 +8 18 8 18 +8 18 8 18 +8 28 8 18 +8 28 8 18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt18-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt18-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-3-32fed3a53e7c15b549a71c0e71d93484 b/sql/hive/src/test/resources/golden/skewjoinopt18-3-32fed3a53e7c15b549a71c0e71d93484 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-4-27dc133d5ad9806d0c8ff0ebf8f9a469 b/sql/hive/src/test/resources/golden/skewjoinopt18-4-27dc133d5ad9806d0c8ff0ebf8f9a469 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-5-dff9d122eb83760f08d1d77814c24c91 b/sql/hive/src/test/resources/golden/skewjoinopt18-5-dff9d122eb83760f08d1d77814c24c91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-6-717b85f496a5cf006cb352f9d884608d b/sql/hive/src/test/resources/golden/skewjoinopt18-6-717b85f496a5cf006cb352f9d884608d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-7-41ca600110e24166325d9426d974fff7 b/sql/hive/src/test/resources/golden/skewjoinopt18-7-41ca600110e24166325d9426d974fff7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-8-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt18-8-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt18-9-ae751060e656d20aa1afbe3fac16d304 b/sql/hive/src/test/resources/golden/skewjoinopt18-9-ae751060e656d20aa1afbe3fac16d304 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt19-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt19-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt19-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt19-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt19-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt19-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt19-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt19-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt19-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt19-3-6eda8acf464a18cfd9909255ddcef37e b/sql/hive/src/test/resources/golden/skewjoinopt19-3-6eda8acf464a18cfd9909255ddcef37e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt19-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt19-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt19-5-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/skewjoinopt19-5-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt19-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt19-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt19-7-1e9c17669089eea559f8fa0b6977b249 b/sql/hive/src/test/resources/golden/skewjoinopt19-7-1e9c17669089eea559f8fa0b6977b249 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt2-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt2-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt2-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt2-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt2-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt2-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt2-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt2-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt2-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt2-3-52247b4dd98092bf829254e17424657d b/sql/hive/src/test/resources/golden/skewjoinopt2-3-52247b4dd98092bf829254e17424657d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt2-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt2-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt2-5-bebf0a312f3110d0b518153543030f06 b/sql/hive/src/test/resources/golden/skewjoinopt2-5-bebf0a312f3110d0b518153543030f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt2-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt2-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt2-7-2a2e8dfb78c2dfcba51a4cf91da25ae4 b/sql/hive/src/test/resources/golden/skewjoinopt2-7-2a2e8dfb78c2dfcba51a4cf91da25ae4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt20-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt20-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt20-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt20-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt20-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt20-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt20-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt20-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt20-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt20-3-4420d88e35aa84327bc95153eed299e0 b/sql/hive/src/test/resources/golden/skewjoinopt20-3-4420d88e35aa84327bc95153eed299e0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt20-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt20-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt20-5-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/skewjoinopt20-5-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt20-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt20-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt20-7-e209254ae404366e6adca673d666aecb b/sql/hive/src/test/resources/golden/skewjoinopt20-7-e209254ae404366e6adca673d666aecb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt3-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt3-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt3-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt3-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt3-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt3-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt3-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt3-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt3-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt3-3-c64266431d312784ebc7b9ca07ab5188 b/sql/hive/src/test/resources/golden/skewjoinopt3-3-c64266431d312784ebc7b9ca07ab5188 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt3-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt3-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt3-5-bebf0a312f3110d0b518153543030f06 b/sql/hive/src/test/resources/golden/skewjoinopt3-5-bebf0a312f3110d0b518153543030f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt3-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt3-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt3-7-e54bbab48fcc3c41806a101293577e9f b/sql/hive/src/test/resources/golden/skewjoinopt3-7-e54bbab48fcc3c41806a101293577e9f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt4-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt4-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt4-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt4-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt4-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt4-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt4-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt4-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt4-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt4-3-9669bca0e2da11221b2e9eb21322e0c6 b/sql/hive/src/test/resources/golden/skewjoinopt4-3-9669bca0e2da11221b2e9eb21322e0c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt4-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt4-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt4-5-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/skewjoinopt4-5-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt4-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt4-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt4-7-c7e2ccaba57a581f27cfdcca76891133 b/sql/hive/src/test/resources/golden/skewjoinopt4-7-c7e2ccaba57a581f27cfdcca76891133 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt5-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt5-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt5-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt5-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt5-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt5-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt5-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt5-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt5-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt5-3-25f94adcba19b899d1db3af93ea1c95b b/sql/hive/src/test/resources/golden/skewjoinopt5-3-25f94adcba19b899d1db3af93ea1c95b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt5-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt5-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt5-5-fa00cf008a039908eec64ad5dd415c5b b/sql/hive/src/test/resources/golden/skewjoinopt5-5-fa00cf008a039908eec64ad5dd415c5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt5-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt5-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt5-7-f38878761b2aeeee0c04387dff60894d b/sql/hive/src/test/resources/golden/skewjoinopt5-7-f38878761b2aeeee0c04387dff60894d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt6-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt6-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt6-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt6-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt6-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt6-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt6-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt6-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt6-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt6-3-da45999e75a09b27161af2c7414c1170 b/sql/hive/src/test/resources/golden/skewjoinopt6-3-da45999e75a09b27161af2c7414c1170 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt6-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt6-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt6-5-e6db5d1ec4694475ab0b8f43eba415cd b/sql/hive/src/test/resources/golden/skewjoinopt6-5-e6db5d1ec4694475ab0b8f43eba415cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt6-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt6-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt6-7-4dd78e79dc6ccab0cf472c8745d1f384 b/sql/hive/src/test/resources/golden/skewjoinopt6-7-4dd78e79dc6ccab0cf472c8745d1f384 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt7-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt7-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt7-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt7-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt7-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt7-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-3-c64266431d312784ebc7b9ca07ab5188 b/sql/hive/src/test/resources/golden/skewjoinopt7-3-c64266431d312784ebc7b9ca07ab5188 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt7-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-5-bebf0a312f3110d0b518153543030f06 b/sql/hive/src/test/resources/golden/skewjoinopt7-5-bebf0a312f3110d0b518153543030f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt7-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-7-fa53198d9eecb9d274b09d4351b9274e b/sql/hive/src/test/resources/golden/skewjoinopt7-7-fa53198d9eecb9d274b09d4351b9274e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-8-3fda17e4414d191f837631438a19e700 b/sql/hive/src/test/resources/golden/skewjoinopt7-8-3fda17e4414d191f837631438a19e700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt7-9-b54d2a1f5d3bea81680ab06dead952c b/sql/hive/src/test/resources/golden/skewjoinopt7-9-b54d2a1f5d3bea81680ab06dead952c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt8-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt8-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt8-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt8-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt8-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt8-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-3-caf1c5fd299fdbdb655234d01d44caf2 b/sql/hive/src/test/resources/golden/skewjoinopt8-3-caf1c5fd299fdbdb655234d01d44caf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt8-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-5-bebf0a312f3110d0b518153543030f06 b/sql/hive/src/test/resources/golden/skewjoinopt8-5-bebf0a312f3110d0b518153543030f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt8-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-7-fa53198d9eecb9d274b09d4351b9274e b/sql/hive/src/test/resources/golden/skewjoinopt8-7-fa53198d9eecb9d274b09d4351b9274e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-8-3fda17e4414d191f837631438a19e700 b/sql/hive/src/test/resources/golden/skewjoinopt8-8-3fda17e4414d191f837631438a19e700 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt8-9-9b26e8e33d3109e059e7494b53aee6fd b/sql/hive/src/test/resources/golden/skewjoinopt8-9-9b26e8e33d3109e059e7494b53aee6fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-0-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/skewjoinopt9-0-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt9-0-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-1-16a1f74642d7ea4dac66a5ce15469c22 b/sql/hive/src/test/resources/golden/skewjoinopt9-1-16a1f74642d7ea4dac66a5ce15469c22 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt9-1-16a1f74642d7ea4dac66a5ce15469c22 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-10-5c8be465ceef8151f172b82a13e81fa8 b/sql/hive/src/test/resources/golden/skewjoinopt9-10-5c8be465ceef8151f172b82a13e81fa8 new file mode 100644 index 0000000000000..acd4039d35669 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt9-10-5c8be465ceef8151f172b82a13e81fa8 @@ -0,0 +1,4 @@ +2 1 2 22 +3 1 3 13 +8 2 8 18 +8 2 8 18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-2-114600d46ae86edcb66a500b4cac657d b/sql/hive/src/test/resources/golden/skewjoinopt9-2-114600d46ae86edcb66a500b4cac657d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt9-2-114600d46ae86edcb66a500b4cac657d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-3-9669bca0e2da11221b2e9eb21322e0c6 b/sql/hive/src/test/resources/golden/skewjoinopt9-3-9669bca0e2da11221b2e9eb21322e0c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-4-b76bf9f6c92f83c9a5f351f8460d1e3b b/sql/hive/src/test/resources/golden/skewjoinopt9-4-b76bf9f6c92f83c9a5f351f8460d1e3b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-5-744a018c78bae6e09853dd202981e850 b/sql/hive/src/test/resources/golden/skewjoinopt9-5-744a018c78bae6e09853dd202981e850 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-6-4abc4f450a58ccdd0df2e345f1276979 b/sql/hive/src/test/resources/golden/skewjoinopt9-6-4abc4f450a58ccdd0df2e345f1276979 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-7-350dd4f731e2c4157f83c148c8569203 b/sql/hive/src/test/resources/golden/skewjoinopt9-7-350dd4f731e2c4157f83c148c8569203 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-8-446c5e33062b109341add64a9860207d b/sql/hive/src/test/resources/golden/skewjoinopt9-8-446c5e33062b109341add64a9860207d new file mode 100644 index 0000000000000..f608d53f51ebe --- /dev/null +++ b/sql/hive/src/test/resources/golden/skewjoinopt9-8-446c5e33062b109341add64a9860207d @@ -0,0 +1,12 @@ +2 12 2 22 +2 12 2 22 +3 13 3 13 +3 13 3 13 +8 18 8 18 +8 18 8 18 +8 18 8 18 +8 18 8 18 +8 28 8 18 +8 28 8 18 +8 28 8 18 +8 28 8 18 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/skewjoinopt9-9-83df7254049bc14de8aa53756850ceb5 b/sql/hive/src/test/resources/golden/skewjoinopt9-9-83df7254049bc14de8aa53756850ceb5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/small.cartesian-0-e3c7f62795b0e7c14b41b0dc29c47619 b/sql/hive/src/test/resources/golden/small.cartesian-0-e3c7f62795b0e7c14b41b0dc29c47619 new file mode 100644 index 0000000000000..7a442f02e8d7a --- /dev/null +++ b/sql/hive/src/test/resources/golden/small.cartesian-0-e3c7f62795b0e7c14b41b0dc29c47619 @@ -0,0 +1,3 @@ +0 2 +0 2 +0 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-0-91ac1a1471f9d6dd9059bdc6c18f594a b/sql/hive/src/test/resources/golden/smb_mapjoin_1-0-91ac1a1471f9d6dd9059bdc6c18f594a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-1-ef8d866d66ac801be99efef73664cbec b/sql/hive/src/test/resources/golden/smb_mapjoin_1-1-ef8d866d66ac801be99efef73664cbec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-10-b1114520feaa15ad7621b6a0e571c244 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-10-b1114520feaa15ad7621b6a0e571c244 new file mode 100644 index 0000000000000..836ee718649ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-10-b1114520feaa15ad7621b6a0e571c244 @@ -0,0 +1 @@ +51 val_3 51 val_30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-11-c9a5aea60b50d31499dc8d8516b3fed b/sql/hive/src/test/resources/golden/smb_mapjoin_1-11-c9a5aea60b50d31499dc8d8516b3fed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-12-8fb6fea440e845ce23b06deed8f519fa b/sql/hive/src/test/resources/golden/smb_mapjoin_1-12-8fb6fea440e845ce23b06deed8f519fa new file mode 100644 index 0000000000000..8f358bffec51d --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-12-8fb6fea440e845ce23b06deed8f519fa @@ -0,0 +1,5 @@ +49 val_1 NULL NULL +51 val_3 51 val_30 +52 val_4 NULL NULL +53 val_5 NULL NULL +49 val_10 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-13-7dc074e59f87c9e10b552c86eef9c96 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-13-7dc074e59f87c9e10b552c86eef9c96 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-14-b9e32ef49286a471ae2c4e7e66a2f5e1 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-14-b9e32ef49286a471ae2c4e7e66a2f5e1 new file mode 100644 index 0000000000000..6197cf72c3454 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-14-b9e32ef49286a471ae2c4e7e66a2f5e1 @@ -0,0 +1,4 @@ +NULL NULL 50 val_20 +NULL NULL 50 val_23 +NULL NULL 50 val_25 +51 val_3 51 val_30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-15-4d7cd71c68715335030bd41244a9cb2c b/sql/hive/src/test/resources/golden/smb_mapjoin_1-15-4d7cd71c68715335030bd41244a9cb2c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-16-c120e505c143721a36287bf992dbc1a1 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-16-c120e505c143721a36287bf992dbc1a1 new file mode 100644 index 0000000000000..d650d44f42404 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-16-c120e505c143721a36287bf992dbc1a1 @@ -0,0 +1,8 @@ +49 val_1 NULL NULL +49 val_10 NULL NULL +NULL NULL 50 val_20 +NULL NULL 50 val_23 +NULL NULL 50 val_25 +51 val_3 51 val_30 +52 val_4 NULL NULL +53 val_5 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-17-16c336c72785228fa1e6fcda01b20550 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-17-16c336c72785228fa1e6fcda01b20550 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-18-bcd8f7a7a4a77c8d6a39e38b93e5c5a1 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-18-bcd8f7a7a4a77c8d6a39e38b93e5c5a1 new file mode 100644 index 0000000000000..836ee718649ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-18-bcd8f7a7a4a77c8d6a39e38b93e5c5a1 @@ -0,0 +1 @@ +51 val_3 51 val_30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-19-9597d17924805ff4d34398d3a3d0a097 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-19-9597d17924805ff4d34398d3a3d0a097 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-2-31ed4593e624995154d0aedf94aa0f0f b/sql/hive/src/test/resources/golden/smb_mapjoin_1-2-31ed4593e624995154d0aedf94aa0f0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-20-d7979e9ab355d8856c2d12e66e7bb838 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-20-d7979e9ab355d8856c2d12e66e7bb838 new file mode 100644 index 0000000000000..8f358bffec51d --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-20-d7979e9ab355d8856c2d12e66e7bb838 @@ -0,0 +1,5 @@ +49 val_1 NULL NULL +51 val_3 51 val_30 +52 val_4 NULL NULL +53 val_5 NULL NULL +49 val_10 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-21-bce103f1a686915c28581717387cfeec b/sql/hive/src/test/resources/golden/smb_mapjoin_1-21-bce103f1a686915c28581717387cfeec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-22-df6bdfe3c5a7927687f4d1fbf0c9c25b b/sql/hive/src/test/resources/golden/smb_mapjoin_1-22-df6bdfe3c5a7927687f4d1fbf0c9c25b new file mode 100644 index 0000000000000..6197cf72c3454 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-22-df6bdfe3c5a7927687f4d1fbf0c9c25b @@ -0,0 +1,4 @@ +NULL NULL 50 val_20 +NULL NULL 50 val_23 +NULL NULL 50 val_25 +51 val_3 51 val_30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-23-aef0ab90470007f2ae589ca5dddd02fd b/sql/hive/src/test/resources/golden/smb_mapjoin_1-23-aef0ab90470007f2ae589ca5dddd02fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-24-558e9ab6324f8082231b2fdd0e12f7ae b/sql/hive/src/test/resources/golden/smb_mapjoin_1-24-558e9ab6324f8082231b2fdd0e12f7ae new file mode 100644 index 0000000000000..d650d44f42404 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-24-558e9ab6324f8082231b2fdd0e12f7ae @@ -0,0 +1,8 @@ +49 val_1 NULL NULL +49 val_10 NULL NULL +NULL NULL 50 val_20 +NULL NULL 50 val_23 +NULL NULL 50 val_25 +51 val_3 51 val_30 +52 val_4 NULL NULL +53 val_5 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-3-d0e31f8ed366038ca6f4f4955d2bc796 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-3-d0e31f8ed366038ca6f4f4955d2bc796 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-4-3af09654f8d38d21b5d26e6cc21210de b/sql/hive/src/test/resources/golden/smb_mapjoin_1-4-3af09654f8d38d21b5d26e6cc21210de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-5-35ab67c91c53dc725f2eab0fb8c9e62 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-5-35ab67c91c53dc725f2eab0fb8c9e62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-6-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_1-6-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-6-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-7-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_1-7-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-7-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-8-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_1-8-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_1-8-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_1-9-17098316902a9e99455fa01bd3dae3ea b/sql/hive/src/test/resources/golden/smb_mapjoin_1-9-17098316902a9e99455fa01bd3dae3ea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-0-a2d52f742b171d642bc7b8ec244791c1 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-0-a2d52f742b171d642bc7b8ec244791c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-1-9385271b1309ae1609b41d8a30dbef24 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-1-9385271b1309ae1609b41d8a30dbef24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-10-189aeb9104e89114be759634d51c1a98 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-10-189aeb9104e89114be759634d51c1a98 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-2-de26fe3669e18e6a170da561687fb514 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-2-de26fe3669e18e6a170da561687fb514 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-3-bfb76fa2eccda1c64a85ea3841202705 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-3-bfb76fa2eccda1c64a85ea3841202705 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-4-d4746bf376bce0bf561450c75b83fb74 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-4-d4746bf376bce0bf561450c75b83fb74 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-5-f05f1ef1d08dbe6b02139fe9d0a68ed8 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-5-f05f1ef1d08dbe6b02139fe9d0a68ed8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-6-1094dbf800159e1e2382ec238b2466d7 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-6-1094dbf800159e1e2382ec238b2466d7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-7-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_10-7-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_10-7-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-8-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_10-8-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_10-8-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_10-9-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_10-9-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_10-9-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_11-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-10-3d92573eecd22525a75464ad27b1dcaa b/sql/hive/src/test/resources/golden/smb_mapjoin_11-10-3d92573eecd22525a75464ad27b1dcaa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-11-685ec4fbbf73330e026fba9b8cc53e92 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-11-685ec4fbbf73330e026fba9b8cc53e92 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-11-685ec4fbbf73330e026fba9b8cc53e92 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-12-c05c09243793df14546e8577ee369d58 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-12-c05c09243793df14546e8577ee369d58 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-12-c05c09243793df14546e8577ee369d58 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-13-1e0f21b664c1940d10531b3025be7f10 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-13-1e0f21b664c1940d10531b3025be7f10 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-14-f13be826d8f11be64c5414d591f70fd6 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-14-f13be826d8f11be64c5414d591f70fd6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-15-b62714cb184523454314d19949dba9f4 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-15-b62714cb184523454314d19949dba9f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-16-bee943a85cd82bd199b089fbdd7450af b/sql/hive/src/test/resources/golden/smb_mapjoin_11-16-bee943a85cd82bd199b089fbdd7450af new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-16-bee943a85cd82bd199b089fbdd7450af @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-2-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_11-2-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-2-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-3-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_11-3-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-3-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-4-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-4-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-4-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-5-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-5-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-5-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-6-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-6-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-6-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-7-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_11-7-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_11-7-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-8-beae7266b997c97798631b9dc558534f b/sql/hive/src/test/resources/golden/smb_mapjoin_11-8-beae7266b997c97798631b9dc558534f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_11-9-74936eafc274242beb49bc83d7a8af30 b/sql/hive/src/test/resources/golden/smb_mapjoin_11-9-74936eafc274242beb49bc83d7a8af30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_12-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-10-bc8140f238cfd13ea4fc4c4173a05454 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-10-bc8140f238cfd13ea4fc4c4173a05454 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-11-685ec4fbbf73330e026fba9b8cc53e92 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-11-685ec4fbbf73330e026fba9b8cc53e92 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-11-685ec4fbbf73330e026fba9b8cc53e92 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-12-c05c09243793df14546e8577ee369d58 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-12-c05c09243793df14546e8577ee369d58 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-12-c05c09243793df14546e8577ee369d58 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-13-7e7645d5ee7d79991d8fdde072c8dbb b/sql/hive/src/test/resources/golden/smb_mapjoin_12-13-7e7645d5ee7d79991d8fdde072c8dbb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-14-e9715c66355e9bc54155c79a4e82b34f b/sql/hive/src/test/resources/golden/smb_mapjoin_12-14-e9715c66355e9bc54155c79a4e82b34f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-15-42b623410c408e09153a773db91c0334 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-15-42b623410c408e09153a773db91c0334 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-16-bee943a85cd82bd199b089fbdd7450af b/sql/hive/src/test/resources/golden/smb_mapjoin_12-16-bee943a85cd82bd199b089fbdd7450af new file mode 100644 index 0000000000000..8975db9a05036 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-16-bee943a85cd82bd199b089fbdd7450af @@ -0,0 +1 @@ +293 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-17-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_12-17-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-17-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-18-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-18-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-18-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-19-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_12-19-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-19-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-2-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_12-2-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-2-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-20-1fc1f40252a7e9d2ad5133f358b71f6b b/sql/hive/src/test/resources/golden/smb_mapjoin_12-20-1fc1f40252a7e9d2ad5133f358b71f6b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-21-3814ec07d1b074eb0fc44e8f77d1f40e b/sql/hive/src/test/resources/golden/smb_mapjoin_12-21-3814ec07d1b074eb0fc44e8f77d1f40e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-22-b1e1754efd667aa801b194985d41eb6e b/sql/hive/src/test/resources/golden/smb_mapjoin_12-22-b1e1754efd667aa801b194985d41eb6e new file mode 100644 index 0000000000000..8975db9a05036 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-22-b1e1754efd667aa801b194985d41eb6e @@ -0,0 +1 @@ +293 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-3-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_12-3-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-3-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-4-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-4-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-4-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-5-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-5-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-5-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-6-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-6-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-6-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-7-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_12-7-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_12-7-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-8-3d016b9a5b0143b7a01b34472b569fb9 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-8-3d016b9a5b0143b7a01b34472b569fb9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_12-9-74936eafc274242beb49bc83d7a8af30 b/sql/hive/src/test/resources/golden/smb_mapjoin_12-9-74936eafc274242beb49bc83d7a8af30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_13-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-10-b07488dd0aa9072057d8264271e93495 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-10-b07488dd0aa9072057d8264271e93495 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-11-c142d1f47152f247d4709b37780c46c4 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-11-c142d1f47152f247d4709b37780c46c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-12-fb171dfe3de091a91e347f53cf68c355 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-12-fb171dfe3de091a91e347f53cf68c355 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-13-7b9c311217809cbb45a63be3c3e934ee b/sql/hive/src/test/resources/golden/smb_mapjoin_13-13-7b9c311217809cbb45a63be3c3e934ee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-14-b92cb43f66838319f5d607c431fe1eb3 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-14-b92cb43f66838319f5d607c431fe1eb3 new file mode 100644 index 0000000000000..b828077157966 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-14-b92cb43f66838319f5d607c431fe1eb3 @@ -0,0 +1,10 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +2 val_2 2 val_2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-15-b80660184510c5a283b3c10dcddb9e69 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-15-b80660184510c5a283b3c10dcddb9e69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-16-a05f3678364039a4cec1ced0dbda9884 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-16-a05f3678364039a4cec1ced0dbda9884 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-2-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_13-2-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-2-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-3-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_13-3-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-3-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-4-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-4-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-4-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-5-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-5-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-5-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-6-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-6-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-6-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-7-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_13-7-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_13-7-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-8-721a75e4942a8ea97de6d70e441ce8a8 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-8-721a75e4942a8ea97de6d70e441ce8a8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_13-9-71b57a524e9ff17058ab319b18c606f6 b/sql/hive/src/test/resources/golden/smb_mapjoin_13-9-71b57a524e9ff17058ab319b18c606f6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-10-fd4343f466f65fe84350a89ea501a8cd b/sql/hive/src/test/resources/golden/smb_mapjoin_14-10-fd4343f466f65fe84350a89ea501a8cd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-11-23d2ee09b01309b9cfcd0d625afc535d b/sql/hive/src/test/resources/golden/smb_mapjoin_14-11-23d2ee09b01309b9cfcd0d625afc535d new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-11-23d2ee09b01309b9cfcd0d625afc535d @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-12-2037b594916a80436d571a87d7b5f2e3 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-12-2037b594916a80436d571a87d7b5f2e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-13-95a09a0af2a77ac6b772c41a0f6a885a b/sql/hive/src/test/resources/golden/smb_mapjoin_14-13-95a09a0af2a77ac6b772c41a0f6a885a new file mode 100644 index 0000000000000..4a9735f855f96 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-13-95a09a0af2a77ac6b772c41a0f6a885a @@ -0,0 +1,6 @@ +0 9 +2 1 +4 1 +5 9 +8 1 +9 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-14-5db39db7bbdeae2d87a2dc1d65e6cd1d b/sql/hive/src/test/resources/golden/smb_mapjoin_14-14-5db39db7bbdeae2d87a2dc1d65e6cd1d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-15-e0f20915e07acf5ddfdbde40ef924e55 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-15-e0f20915e07acf5ddfdbde40ef924e55 new file mode 100644 index 0000000000000..62f9457511f87 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-15-e0f20915e07acf5ddfdbde40ef924e55 @@ -0,0 +1 @@ +6 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-16-1ae53bf26065f6ae200bd3f8f5702fa2 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-16-1ae53bf26065f6ae200bd3f8f5702fa2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-17-5983d1e12e5a2bdd0f41549110e066ee b/sql/hive/src/test/resources/golden/smb_mapjoin_14-17-5983d1e12e5a2bdd0f41549110e066ee new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-17-5983d1e12e5a2bdd0f41549110e066ee @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-18-c58871e5f7179cd903e24ad22198dea9 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-18-c58871e5f7179cd903e24ad22198dea9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-19-163af33279f8d08d747a00ffd1cdfac7 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-19-163af33279f8d08d747a00ffd1cdfac7 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-19-163af33279f8d08d747a00ffd1cdfac7 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-20-b1651139605264c3b15178ae0543f7a b/sql/hive/src/test/resources/golden/smb_mapjoin_14-20-b1651139605264c3b15178ae0543f7a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-21-b6c3a3f68f212a966450286e23f59713 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-21-b6c3a3f68f212a966450286e23f59713 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-21-b6c3a3f68f212a966450286e23f59713 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-22-f7839f8bcbb99d5731c9d4174c76b4b b/sql/hive/src/test/resources/golden/smb_mapjoin_14-22-f7839f8bcbb99d5731c9d4174c76b4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-23-941d6ef1aaf1b2f16cf9b55eaea49068 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-23-941d6ef1aaf1b2f16cf9b55eaea49068 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-23-941d6ef1aaf1b2f16cf9b55eaea49068 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-24-46db62b188fef9c6d636e63d64ef0c20 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-24-46db62b188fef9c6d636e63d64ef0c20 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-25-23f011143d8db18dd0f3d684adf7b8e b/sql/hive/src/test/resources/golden/smb_mapjoin_14-25-23f011143d8db18dd0f3d684adf7b8e new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-25-23f011143d8db18dd0f3d684adf7b8e @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-26-8dd1b03e8d405eb4c0c3a8bba78fca1b b/sql/hive/src/test/resources/golden/smb_mapjoin_14-26-8dd1b03e8d405eb4c0c3a8bba78fca1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-27-ba437062dd6661fc2fdcd41514711093 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-27-ba437062dd6661fc2fdcd41514711093 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-27-ba437062dd6661fc2fdcd41514711093 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-28-db27758cc8bdb4ff80f346ad7e158da3 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-28-db27758cc8bdb4ff80f346ad7e158da3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-29-d191c9ace84072ef430d7ed36ea8181b b/sql/hive/src/test/resources/golden/smb_mapjoin_14-29-d191c9ace84072ef430d7ed36ea8181b new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-29-d191c9ace84072ef430d7ed36ea8181b @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-3-4938d4d724990d16336ee31f0390c7da b/sql/hive/src/test/resources/golden/smb_mapjoin_14-3-4938d4d724990d16336ee31f0390c7da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-30-377c21706143c1b714eeb0b3634343fb b/sql/hive/src/test/resources/golden/smb_mapjoin_14-30-377c21706143c1b714eeb0b3634343fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-31-fde2ad19052435bd8c155f18fe579070 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-31-fde2ad19052435bd8c155f18fe579070 new file mode 100644 index 0000000000000..2ebc6516c7df1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-31-fde2ad19052435bd8c155f18fe579070 @@ -0,0 +1 @@ +56 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-32-edfe76bb21077fec096eb60333cec7f7 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-32-edfe76bb21077fec096eb60333cec7f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-33-fb532dd5af8cfe6b2af5c4752a3b0a44 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-33-fb532dd5af8cfe6b2af5c4752a3b0a44 new file mode 100644 index 0000000000000..2edeafb09db00 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-33-fb532dd5af8cfe6b2af5c4752a3b0a44 @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-4-378d42317b39c6519f15bd2f99c5ddc4 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-4-378d42317b39c6519f15bd2f99c5ddc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-5-9140b367b5680860f4c7c0238377583f b/sql/hive/src/test/resources/golden/smb_mapjoin_14-5-9140b367b5680860f4c7c0238377583f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-6-70c1d66123d434d3a1e1801e0b19bc3f b/sql/hive/src/test/resources/golden/smb_mapjoin_14-6-70c1d66123d434d3a1e1801e0b19bc3f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-7-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_14-7-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-7-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-8-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_14-8-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-8-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_14-9-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_14-9-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_14-9-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_15-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-10-fb63a2ba41589835c01ba5f7570f643b b/sql/hive/src/test/resources/golden/smb_mapjoin_15-10-fb63a2ba41589835c01ba5f7570f643b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-11-a8c3244fbb17a900a1bd7f634c90c7e6 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-11-a8c3244fbb17a900a1bd7f634c90c7e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-12-b5a588fb78fda8e3c41bbc4d973c1a7a b/sql/hive/src/test/resources/golden/smb_mapjoin_15-12-b5a588fb78fda8e3c41bbc4d973c1a7a new file mode 100644 index 0000000000000..b828077157966 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-12-b5a588fb78fda8e3c41bbc4d973c1a7a @@ -0,0 +1,10 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +2 val_2 2 val_2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-13-5983712d9bdc150d8b1ffe23a555b370 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-13-5983712d9bdc150d8b1ffe23a555b370 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-14-5455eb67634b186d7d8e54cdd32a9909 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-14-5455eb67634b186d7d8e54cdd32a9909 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-15-268af28b787b5403a164447cbdbb0720 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-15-268af28b787b5403a164447cbdbb0720 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-16-98537b81d6e139521541753c3c448404 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-16-98537b81d6e139521541753c3c448404 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-17-c2312024b8de8d40faaf65427fa3d499 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-17-c2312024b8de8d40faaf65427fa3d499 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-18-7b1293b3066a5076e91b3d3dfd74259c b/sql/hive/src/test/resources/golden/smb_mapjoin_15-18-7b1293b3066a5076e91b3d3dfd74259c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-19-f49ef85423bb1766362f05651c9bb37f b/sql/hive/src/test/resources/golden/smb_mapjoin_15-19-f49ef85423bb1766362f05651c9bb37f new file mode 100644 index 0000000000000..471d725e7bfa3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-19-f49ef85423bb1766362f05651c9bb37f @@ -0,0 +1,10 @@ +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +2 2 val_2 2 2 val_2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-2-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_15-2-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-2-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-20-7577942157bcb84ad24c51306b046a44 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-20-7577942157bcb84ad24c51306b046a44 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-21-af3880637379684acd440830c2361f6e b/sql/hive/src/test/resources/golden/smb_mapjoin_15-21-af3880637379684acd440830c2361f6e new file mode 100644 index 0000000000000..471d725e7bfa3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-21-af3880637379684acd440830c2361f6e @@ -0,0 +1,10 @@ +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +2 2 val_2 2 2 val_2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-22-55700b43b9e34f4b8370f76d1b1bb7a0 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-22-55700b43b9e34f4b8370f76d1b1bb7a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-23-e5e54dd17b69773812af376bfec33200 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-23-e5e54dd17b69773812af376bfec33200 new file mode 100644 index 0000000000000..471d725e7bfa3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-23-e5e54dd17b69773812af376bfec33200 @@ -0,0 +1,10 @@ +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +0 0 val_0 0 0 val_0 +2 2 val_2 2 2 val_2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-24-5983712d9bdc150d8b1ffe23a555b370 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-24-5983712d9bdc150d8b1ffe23a555b370 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-25-5455eb67634b186d7d8e54cdd32a9909 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-25-5455eb67634b186d7d8e54cdd32a9909 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-3-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_15-3-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-3-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-4-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-4-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-4-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-5-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-5-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-5-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-6-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-6-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-6-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-7-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_15-7-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_15-7-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-8-c19c008a41a546848f30a27237b124eb b/sql/hive/src/test/resources/golden/smb_mapjoin_15-8-c19c008a41a546848f30a27237b124eb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_15-9-c11393a5b3fa2eba6e5f388e37e31cd3 b/sql/hive/src/test/resources/golden/smb_mapjoin_15-9-c11393a5b3fa2eba6e5f388e37e31cd3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_16-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_16-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-10-fb63a2ba41589835c01ba5f7570f643b b/sql/hive/src/test/resources/golden/smb_mapjoin_16-10-fb63a2ba41589835c01ba5f7570f643b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-11-3c64de88fd6329a4346706ea296f7a4c b/sql/hive/src/test/resources/golden/smb_mapjoin_16-11-3c64de88fd6329a4346706ea296f7a4c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-12-32f3716e22149e3d0c1f3ac26d414baf b/sql/hive/src/test/resources/golden/smb_mapjoin_16-12-32f3716e22149e3d0c1f3ac26d414baf new file mode 100644 index 0000000000000..67d892c80f493 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-12-32f3716e22149e3d0c1f3ac26d414baf @@ -0,0 +1 @@ +1028 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-2-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_16-2-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-2-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-3-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_16-3-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-3-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-4-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_16-4-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-4-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-5-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_16-5-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-5-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-6-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_16-6-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-6-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-7-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_16-7-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_16-7-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-8-14c221da1d1be2208aec9a641351ed09 b/sql/hive/src/test/resources/golden/smb_mapjoin_16-8-14c221da1d1be2208aec9a641351ed09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_16-9-6223202c291504ede983d8b04eafe08e b/sql/hive/src/test/resources/golden/smb_mapjoin_16-9-6223202c291504ede983d8b04eafe08e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_17-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-10-516ad5af165e0e93b06b7541d35c96b8 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-10-516ad5af165e0e93b06b7541d35c96b8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-11-c4daf31f90b01cfac9fb03b8b9de042 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-11-c4daf31f90b01cfac9fb03b8b9de042 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-12-cc5a32c1984378efafe0f05202359b20 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-12-cc5a32c1984378efafe0f05202359b20 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-13-98da74d8dc8c7b722de5d2e25b481581 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-13-98da74d8dc8c7b722de5d2e25b481581 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-14-672606a44ad31bacc472e7e2825d4fd3 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-14-672606a44ad31bacc472e7e2825d4fd3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-15-39292eb609c10f05f5c3dfacf520f485 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-15-39292eb609c10f05f5c3dfacf520f485 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-16-da60c2ca6af8844ed44778f4067f4f27 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-16-da60c2ca6af8844ed44778f4067f4f27 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-17-bfc16d69eac4464e094e416842550590 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-17-bfc16d69eac4464e094e416842550590 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-18-cf2846a07aab193ac997eae616373367 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-18-cf2846a07aab193ac997eae616373367 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-19-c11dfa50e4541ba7081fd3c57e0bef56 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-19-c11dfa50e4541ba7081fd3c57e0bef56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-2-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_17-2-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-2-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-20-50d120ef58fd6b737a01fccb3f212e9c b/sql/hive/src/test/resources/golden/smb_mapjoin_17-20-50d120ef58fd6b737a01fccb3f212e9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-21-b1069c2d3f38f78fa5c5635a74b4466f b/sql/hive/src/test/resources/golden/smb_mapjoin_17-21-b1069c2d3f38f78fa5c5635a74b4466f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-22-12d1838d39f395dbb212f322e83c49b0 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-22-12d1838d39f395dbb212f322e83c49b0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-23-e366aaa64bcf26a714cc9a451a6e8d6e b/sql/hive/src/test/resources/golden/smb_mapjoin_17-23-e366aaa64bcf26a714cc9a451a6e8d6e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-24-ce87a96826f6025541ef71fd88c3d370 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-24-ce87a96826f6025541ef71fd88c3d370 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-25-f066907fca3448b27aab623d05258a9a b/sql/hive/src/test/resources/golden/smb_mapjoin_17-25-f066907fca3448b27aab623d05258a9a new file mode 100644 index 0000000000000..25398d9017c7f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-25-f066907fca3448b27aab623d05258a9a @@ -0,0 +1 @@ +4378 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-26-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-26-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-26-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-27-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/smb_mapjoin_17-27-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-27-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-28-b149d0fc9d40c63bb9a0807f5a0e04a6 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-28-b149d0fc9d40c63bb9a0807f5a0e04a6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-29-65d3ae14a785f319658812b51e4620a3 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-29-65d3ae14a785f319658812b51e4620a3 new file mode 100644 index 0000000000000..25398d9017c7f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-29-65d3ae14a785f319658812b51e4620a3 @@ -0,0 +1 @@ +4378 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-3-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_17-3-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-3-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-30-59009edb2442f58edebf83c8d047cb1e b/sql/hive/src/test/resources/golden/smb_mapjoin_17-30-59009edb2442f58edebf83c8d047cb1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-31-783fc1b07f117cd027395cf1c09149bc b/sql/hive/src/test/resources/golden/smb_mapjoin_17-31-783fc1b07f117cd027395cf1c09149bc new file mode 100644 index 0000000000000..09b5b315bcf45 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-31-783fc1b07f117cd027395cf1c09149bc @@ -0,0 +1 @@ +13126 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-32-168e182e2c3feed13de0346cdeade2ff b/sql/hive/src/test/resources/golden/smb_mapjoin_17-32-168e182e2c3feed13de0346cdeade2ff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-4-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-4-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-4-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-5-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-5-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-5-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-6-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-6-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-6-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-7-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_17-7-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_17-7-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-8-14c221da1d1be2208aec9a641351ed09 b/sql/hive/src/test/resources/golden/smb_mapjoin_17-8-14c221da1d1be2208aec9a641351ed09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_17-9-6223202c291504ede983d8b04eafe08e b/sql/hive/src/test/resources/golden/smb_mapjoin_17-9-6223202c291504ede983d8b04eafe08e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_18-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-10-75e2e1eb0f45f4fad3e1ce24517dd81e b/sql/hive/src/test/resources/golden/smb_mapjoin_18-10-75e2e1eb0f45f4fad3e1ce24517dd81e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-11-fb15bd6eceb333302535c0bcdd2d078f b/sql/hive/src/test/resources/golden/smb_mapjoin_18-11-fb15bd6eceb333302535c0bcdd2d078f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-12-27762aa3d846e8f50d97350eaa7563a1 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-12-27762aa3d846e8f50d97350eaa7563a1 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-12-27762aa3d846e8f50d97350eaa7563a1 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-13-91f2af0da94e5a83601d02045980f556 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-13-91f2af0da94e5a83601d02045980f556 new file mode 100644 index 0000000000000..34251f6b242e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-13-91f2af0da94e5a83601d02045980f556 @@ -0,0 +1 @@ +247 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-14-1d0b88d6e6f84e485a05c712dd185531 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-14-1d0b88d6e6f84e485a05c712dd185531 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-14-1d0b88d6e6f84e485a05c712dd185531 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-15-21a6e09c24697160bf70cb17254ff504 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-15-21a6e09c24697160bf70cb17254ff504 new file mode 100644 index 0000000000000..34251f6b242e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-15-21a6e09c24697160bf70cb17254ff504 @@ -0,0 +1 @@ +247 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-16-35dfd037075aac5a9891bf99ea01e156 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-16-35dfd037075aac5a9891bf99ea01e156 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-16-35dfd037075aac5a9891bf99ea01e156 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-17-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-17-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-17-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-18-ba77d1d4a1754489e2a8d5006b0af54d b/sql/hive/src/test/resources/golden/smb_mapjoin_18-18-ba77d1d4a1754489e2a8d5006b0af54d new file mode 100644 index 0000000000000..34251f6b242e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-18-ba77d1d4a1754489e2a8d5006b0af54d @@ -0,0 +1 @@ +247 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-19-da6eb8ded1f72f518617339f58202cc5 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-19-da6eb8ded1f72f518617339f58202cc5 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-19-da6eb8ded1f72f518617339f58202cc5 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-2-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_18-2-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-2-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-20-940ff79d8f3b401a05b19b9417824d7a b/sql/hive/src/test/resources/golden/smb_mapjoin_18-20-940ff79d8f3b401a05b19b9417824d7a new file mode 100644 index 0000000000000..34251f6b242e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-20-940ff79d8f3b401a05b19b9417824d7a @@ -0,0 +1 @@ +247 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-21-7ce17310f9fd362e2cc8a80211063264 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-21-7ce17310f9fd362e2cc8a80211063264 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-21-7ce17310f9fd362e2cc8a80211063264 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-22-a92f50cba6740abb3596c885a8157861 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-22-a92f50cba6740abb3596c885a8157861 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-23-f0675c53cddf75b012f64e797f5824c8 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-23-f0675c53cddf75b012f64e797f5824c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-24-a919b505c34a237ead34eea40b7d136c b/sql/hive/src/test/resources/golden/smb_mapjoin_18-24-a919b505c34a237ead34eea40b7d136c new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-24-a919b505c34a237ead34eea40b7d136c @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-25-d014ae435859316a1ad43548b72ecb7 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-25-d014ae435859316a1ad43548b72ecb7 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-25-d014ae435859316a1ad43548b72ecb7 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-26-52d3bbbbef7c580a324d991f52f44e1f b/sql/hive/src/test/resources/golden/smb_mapjoin_18-26-52d3bbbbef7c580a324d991f52f44e1f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-26-52d3bbbbef7c580a324d991f52f44e1f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-27-6c5e30c84cb539cbf689a0d4cb4ed0e3 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-27-6c5e30c84cb539cbf689a0d4cb4ed0e3 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-27-6c5e30c84cb539cbf689a0d4cb4ed0e3 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-28-c83e75a3e18e68ef10d9970b3b8857ab b/sql/hive/src/test/resources/golden/smb_mapjoin_18-28-c83e75a3e18e68ef10d9970b3b8857ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-28-c83e75a3e18e68ef10d9970b3b8857ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-29-ecbfca5624b26a8eaa468a6bf46e3189 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-29-ecbfca5624b26a8eaa468a6bf46e3189 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-3-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-3-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-3-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-30-76e467313085467a3aa929b3665f9863 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-30-76e467313085467a3aa929b3665f9863 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-31-7f1e9114f4db63982985068c4bf36a29 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-31-7f1e9114f4db63982985068c4bf36a29 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-31-7f1e9114f4db63982985068c4bf36a29 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-32-b59c406dae57fa6ab656a27e310ac54c b/sql/hive/src/test/resources/golden/smb_mapjoin_18-32-b59c406dae57fa6ab656a27e310ac54c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-32-b59c406dae57fa6ab656a27e310ac54c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-33-95b42e61bf5eed67123e30d482e0c7fe b/sql/hive/src/test/resources/golden/smb_mapjoin_18-33-95b42e61bf5eed67123e30d482e0c7fe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-33-95b42e61bf5eed67123e30d482e0c7fe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-34-14ae716c8c0f47db61b89a2a17e89415 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-34-14ae716c8c0f47db61b89a2a17e89415 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-34-14ae716c8c0f47db61b89a2a17e89415 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-35-549b3df453bf939e1c0a38df861245e5 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-35-549b3df453bf939e1c0a38df861245e5 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-35-549b3df453bf939e1c0a38df861245e5 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-4-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-4-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-4-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-5-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-5-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-5-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-6-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_18-6-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_18-6-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-7-c248759cecf0e2c223579f5e37f6669c b/sql/hive/src/test/resources/golden/smb_mapjoin_18-7-c248759cecf0e2c223579f5e37f6669c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-8-724d37bd4a841f1fa4062f4f3e3eb353 b/sql/hive/src/test/resources/golden/smb_mapjoin_18-8-724d37bd4a841f1fa4062f4f3e3eb353 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_18-9-c0c82db5bd80edc57f6b3cb0e807f2ec b/sql/hive/src/test/resources/golden/smb_mapjoin_18-9-c0c82db5bd80edc57f6b3cb0e807f2ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_19-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-10-75e2e1eb0f45f4fad3e1ce24517dd81e b/sql/hive/src/test/resources/golden/smb_mapjoin_19-10-75e2e1eb0f45f4fad3e1ce24517dd81e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-11-fb15bd6eceb333302535c0bcdd2d078f b/sql/hive/src/test/resources/golden/smb_mapjoin_19-11-fb15bd6eceb333302535c0bcdd2d078f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-12-27762aa3d846e8f50d97350eaa7563a1 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-12-27762aa3d846e8f50d97350eaa7563a1 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-12-27762aa3d846e8f50d97350eaa7563a1 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-13-4876f6e3c0ffde24afd82ec462962f19 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-13-4876f6e3c0ffde24afd82ec462962f19 new file mode 100644 index 0000000000000..dce6588ca1420 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-13-4876f6e3c0ffde24afd82ec462962f19 @@ -0,0 +1 @@ +36 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-14-cfc24b330d7c6a11ac2e4f2ea17b3f06 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-14-cfc24b330d7c6a11ac2e4f2ea17b3f06 new file mode 100644 index 0000000000000..86ee83a4a2686 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-14-cfc24b330d7c6a11ac2e4f2ea17b3f06 @@ -0,0 +1 @@ +40 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-15-44ad799a82d847054f02d37139cc6aab b/sql/hive/src/test/resources/golden/smb_mapjoin_19-15-44ad799a82d847054f02d37139cc6aab new file mode 100644 index 0000000000000..d99e90eb9675f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-15-44ad799a82d847054f02d37139cc6aab @@ -0,0 +1 @@ +29 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-16-8ee972ce0d73f28e98f46361082c83dc b/sql/hive/src/test/resources/golden/smb_mapjoin_19-16-8ee972ce0d73f28e98f46361082c83dc new file mode 100644 index 0000000000000..dce6588ca1420 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-16-8ee972ce0d73f28e98f46361082c83dc @@ -0,0 +1 @@ +36 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-17-af5c2dab8b5e2cb53b58fdeee911b7ec b/sql/hive/src/test/resources/golden/smb_mapjoin_19-17-af5c2dab8b5e2cb53b58fdeee911b7ec new file mode 100644 index 0000000000000..86ee83a4a2686 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-17-af5c2dab8b5e2cb53b58fdeee911b7ec @@ -0,0 +1 @@ +40 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-18-b2546caccb501fca356930e6cd00ea2e b/sql/hive/src/test/resources/golden/smb_mapjoin_19-18-b2546caccb501fca356930e6cd00ea2e new file mode 100644 index 0000000000000..d99e90eb9675f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-18-b2546caccb501fca356930e6cd00ea2e @@ -0,0 +1 @@ +29 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-19-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-19-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-19-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-2-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_19-2-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-2-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-20-bceffa38b796fbc2a85daac23357da7b b/sql/hive/src/test/resources/golden/smb_mapjoin_19-20-bceffa38b796fbc2a85daac23357da7b new file mode 100644 index 0000000000000..dce6588ca1420 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-20-bceffa38b796fbc2a85daac23357da7b @@ -0,0 +1 @@ +36 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-21-a1f4332461d1810334e7ae6d7d43f829 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-21-a1f4332461d1810334e7ae6d7d43f829 new file mode 100644 index 0000000000000..86ee83a4a2686 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-21-a1f4332461d1810334e7ae6d7d43f829 @@ -0,0 +1 @@ +40 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-22-ebd323090f771227039cd21b1b8c4f3f b/sql/hive/src/test/resources/golden/smb_mapjoin_19-22-ebd323090f771227039cd21b1b8c4f3f new file mode 100644 index 0000000000000..d99e90eb9675f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-22-ebd323090f771227039cd21b1b8c4f3f @@ -0,0 +1 @@ +29 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-23-90f0bad0606e63e4405eac9ec8c11deb b/sql/hive/src/test/resources/golden/smb_mapjoin_19-23-90f0bad0606e63e4405eac9ec8c11deb new file mode 100644 index 0000000000000..dce6588ca1420 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-23-90f0bad0606e63e4405eac9ec8c11deb @@ -0,0 +1 @@ +36 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-24-3ae0277bb7a74cd6bee704313dc102e6 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-24-3ae0277bb7a74cd6bee704313dc102e6 new file mode 100644 index 0000000000000..86ee83a4a2686 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-24-3ae0277bb7a74cd6bee704313dc102e6 @@ -0,0 +1 @@ +40 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-25-e621350131d50867015e75677cca031f b/sql/hive/src/test/resources/golden/smb_mapjoin_19-25-e621350131d50867015e75677cca031f new file mode 100644 index 0000000000000..d99e90eb9675f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-25-e621350131d50867015e75677cca031f @@ -0,0 +1 @@ +29 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-3-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-3-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-3-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-4-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-4-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-4-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-5-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-5-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-5-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-6-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_19-6-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_19-6-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-7-64b3fd0c215f4b8187866fa7eb55d34d b/sql/hive/src/test/resources/golden/smb_mapjoin_19-7-64b3fd0c215f4b8187866fa7eb55d34d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-8-ee04de92100063f9b2063baddb204864 b/sql/hive/src/test/resources/golden/smb_mapjoin_19-8-ee04de92100063f9b2063baddb204864 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_19-9-c0c82db5bd80edc57f6b3cb0e807f2ec b/sql/hive/src/test/resources/golden/smb_mapjoin_19-9-c0c82db5bd80edc57f6b3cb0e807f2ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-0-91ac1a1471f9d6dd9059bdc6c18f594a b/sql/hive/src/test/resources/golden/smb_mapjoin_2-0-91ac1a1471f9d6dd9059bdc6c18f594a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-1-ef8d866d66ac801be99efef73664cbec b/sql/hive/src/test/resources/golden/smb_mapjoin_2-1-ef8d866d66ac801be99efef73664cbec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-10-1530d7565a22ace89ed16e0e1f9988ac b/sql/hive/src/test/resources/golden/smb_mapjoin_2-10-1530d7565a22ace89ed16e0e1f9988ac new file mode 100644 index 0000000000000..7b5974818c085 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-10-1530d7565a22ace89ed16e0e1f9988ac @@ -0,0 +1,7 @@ +52 val_4 52 val_4 +49 val_1 49 val_10 +49 val_10 49 val_10 +49 val_1 49 val_17 +49 val_10 49 val_17 +49 val_1 49 val_19 +49 val_10 49 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-11-9fd2e0578c0a8f705929a4f89d3cc97 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-11-9fd2e0578c0a8f705929a4f89d3cc97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-12-48e7d8fcb2a4c31c5304045517a3bb89 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-12-48e7d8fcb2a4c31c5304045517a3bb89 new file mode 100644 index 0000000000000..0e1d132524064 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-12-48e7d8fcb2a4c31c5304045517a3bb89 @@ -0,0 +1,9 @@ +49 val_1 49 val_10 +49 val_1 49 val_17 +49 val_1 49 val_19 +51 val_3 NULL NULL +52 val_4 52 val_4 +53 val_5 NULL NULL +49 val_10 49 val_10 +49 val_10 49 val_17 +49 val_10 49 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-13-596594a24f753a66ffd1c87dcd76781d b/sql/hive/src/test/resources/golden/smb_mapjoin_2-13-596594a24f753a66ffd1c87dcd76781d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-14-3e7d435c7a5560abe539918adc4fa922 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-14-3e7d435c7a5560abe539918adc4fa922 new file mode 100644 index 0000000000000..32be455fba8c4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-14-3e7d435c7a5560abe539918adc4fa922 @@ -0,0 +1,9 @@ +52 val_4 52 val_4 +49 val_1 49 val_10 +49 val_10 49 val_10 +49 val_1 49 val_17 +49 val_10 49 val_17 +49 val_1 49 val_19 +49 val_10 49 val_19 +NULL NULL 50 val_20 +NULL NULL 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-15-2674b0d2498ac9392db40b4b83183d45 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-15-2674b0d2498ac9392db40b4b83183d45 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-16-daeabb554f29b77f3c5ff7acff8c58ca b/sql/hive/src/test/resources/golden/smb_mapjoin_2-16-daeabb554f29b77f3c5ff7acff8c58ca new file mode 100644 index 0000000000000..2496c4400b0b9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-16-daeabb554f29b77f3c5ff7acff8c58ca @@ -0,0 +1,11 @@ +49 val_1 49 val_10 +49 val_1 49 val_17 +49 val_1 49 val_19 +49 val_10 49 val_10 +49 val_10 49 val_17 +49 val_10 49 val_19 +NULL NULL 50 val_20 +NULL NULL 50 val_23 +51 val_3 NULL NULL +52 val_4 52 val_4 +53 val_5 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-17-404d18544be565d251a6b0db1601d663 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-17-404d18544be565d251a6b0db1601d663 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-18-411bc909c1c29811d184d1f4aceb25b3 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-18-411bc909c1c29811d184d1f4aceb25b3 new file mode 100644 index 0000000000000..7b5974818c085 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-18-411bc909c1c29811d184d1f4aceb25b3 @@ -0,0 +1,7 @@ +52 val_4 52 val_4 +49 val_1 49 val_10 +49 val_10 49 val_10 +49 val_1 49 val_17 +49 val_10 49 val_17 +49 val_1 49 val_19 +49 val_10 49 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-19-95e94fc54d417dc08c7617642ee9de90 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-19-95e94fc54d417dc08c7617642ee9de90 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-2-31ed4593e624995154d0aedf94aa0f0f b/sql/hive/src/test/resources/golden/smb_mapjoin_2-2-31ed4593e624995154d0aedf94aa0f0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-20-43bc9e7e9e4d1bb1f42e7911bd79ea4b b/sql/hive/src/test/resources/golden/smb_mapjoin_2-20-43bc9e7e9e4d1bb1f42e7911bd79ea4b new file mode 100644 index 0000000000000..0e1d132524064 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-20-43bc9e7e9e4d1bb1f42e7911bd79ea4b @@ -0,0 +1,9 @@ +49 val_1 49 val_10 +49 val_1 49 val_17 +49 val_1 49 val_19 +51 val_3 NULL NULL +52 val_4 52 val_4 +53 val_5 NULL NULL +49 val_10 49 val_10 +49 val_10 49 val_17 +49 val_10 49 val_19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-21-b9609684ffdae8768578849392032ad5 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-21-b9609684ffdae8768578849392032ad5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-22-de0b3ef8ef1c5902908dadd06042b84 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-22-de0b3ef8ef1c5902908dadd06042b84 new file mode 100644 index 0000000000000..32be455fba8c4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-22-de0b3ef8ef1c5902908dadd06042b84 @@ -0,0 +1,9 @@ +52 val_4 52 val_4 +49 val_1 49 val_10 +49 val_10 49 val_10 +49 val_1 49 val_17 +49 val_10 49 val_17 +49 val_1 49 val_19 +49 val_10 49 val_19 +NULL NULL 50 val_20 +NULL NULL 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-23-4dec46d167dbc1ac0bc9212e778d090a b/sql/hive/src/test/resources/golden/smb_mapjoin_2-23-4dec46d167dbc1ac0bc9212e778d090a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-24-709966d157a75ffb1c6ef70d7c72a498 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-24-709966d157a75ffb1c6ef70d7c72a498 new file mode 100644 index 0000000000000..2496c4400b0b9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-24-709966d157a75ffb1c6ef70d7c72a498 @@ -0,0 +1,11 @@ +49 val_1 49 val_10 +49 val_1 49 val_17 +49 val_1 49 val_19 +49 val_10 49 val_10 +49 val_10 49 val_17 +49 val_10 49 val_19 +NULL NULL 50 val_20 +NULL NULL 50 val_23 +51 val_3 NULL NULL +52 val_4 52 val_4 +53 val_5 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-3-d0e31f8ed366038ca6f4f4955d2bc796 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-3-d0e31f8ed366038ca6f4f4955d2bc796 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-4-3af09654f8d38d21b5d26e6cc21210de b/sql/hive/src/test/resources/golden/smb_mapjoin_2-4-3af09654f8d38d21b5d26e6cc21210de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-5-35ab67c91c53dc725f2eab0fb8c9e62 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-5-35ab67c91c53dc725f2eab0fb8c9e62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-6-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_2-6-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-6-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-7-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-7-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-7-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-8-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_2-8-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_2-8-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_2-9-dff8aeed3b5d7577966d965afd6d5408 b/sql/hive/src/test/resources/golden/smb_mapjoin_2-9-dff8aeed3b5d7577966d965afd6d5408 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_20-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-10-82b3bc9314fa0cdb7fa59c58f22fb598 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-10-82b3bc9314fa0cdb7fa59c58f22fb598 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-11-63ba770ebeff6032b68ba1aabbc1bee8 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-11-63ba770ebeff6032b68ba1aabbc1bee8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-12-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-12-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-12-6bea38b0ee0cccb3dfe7fe47c7c3e9c4 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-13-ba77d1d4a1754489e2a8d5006b0af54d b/sql/hive/src/test/resources/golden/smb_mapjoin_20-13-ba77d1d4a1754489e2a8d5006b0af54d new file mode 100644 index 0000000000000..b6e27607fb529 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-13-ba77d1d4a1754489e2a8d5006b0af54d @@ -0,0 +1 @@ +242 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-14-da6eb8ded1f72f518617339f58202cc5 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-14-da6eb8ded1f72f518617339f58202cc5 new file mode 100644 index 0000000000000..ce83bd94b3310 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-14-da6eb8ded1f72f518617339f58202cc5 @@ -0,0 +1 @@ +258 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-15-5acb0ec2e1abcc6d57de7529f414a75a b/sql/hive/src/test/resources/golden/smb_mapjoin_20-15-5acb0ec2e1abcc6d57de7529f414a75a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-16-5b9583aecebb7480d778dc2a8605434a b/sql/hive/src/test/resources/golden/smb_mapjoin_20-16-5b9583aecebb7480d778dc2a8605434a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-17-e26f212ca34d303036299ba709f65522 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-17-e26f212ca34d303036299ba709f65522 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-18-7fb8778a58cc27dc04d5947df15b250e b/sql/hive/src/test/resources/golden/smb_mapjoin_20-18-7fb8778a58cc27dc04d5947df15b250e new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-18-7fb8778a58cc27dc04d5947df15b250e @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-19-6dd859e98c140df728f858a7a7598462 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-19-6dd859e98c140df728f858a7a7598462 new file mode 100644 index 0000000000000..34251f6b242e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-19-6dd859e98c140df728f858a7a7598462 @@ -0,0 +1 @@ +247 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-2-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_20-2-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-2-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-20-fca1f7361c63f0ba1e9d365cf0743845 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-20-fca1f7361c63f0ba1e9d365cf0743845 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-20-fca1f7361c63f0ba1e9d365cf0743845 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-21-28d04e54c0a986079ae9d52788846519 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-21-28d04e54c0a986079ae9d52788846519 new file mode 100644 index 0000000000000..34251f6b242e7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-21-28d04e54c0a986079ae9d52788846519 @@ -0,0 +1 @@ +247 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-22-1baa93dd15ab33240255c5d6d5d57366 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-22-1baa93dd15ab33240255c5d6d5d57366 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-22-1baa93dd15ab33240255c5d6d5d57366 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-23-5c5eaf9922e7110c6d7260c738b17457 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-23-5c5eaf9922e7110c6d7260c738b17457 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-3-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-3-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-3-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-4-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-4-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-4-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-5-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-5-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-5-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-6-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_20-6-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_20-6-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-7-c9981ec081cbf54c9323e0dee977934 b/sql/hive/src/test/resources/golden/smb_mapjoin_20-7-c9981ec081cbf54c9323e0dee977934 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-8-5c9994d48509136efd1dcb4e3f3e7aff b/sql/hive/src/test/resources/golden/smb_mapjoin_20-8-5c9994d48509136efd1dcb4e3f3e7aff new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_20-9-c0c82db5bd80edc57f6b3cb0e807f2ec b/sql/hive/src/test/resources/golden/smb_mapjoin_20-9-c0c82db5bd80edc57f6b3cb0e807f2ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_21-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_21-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_21-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-10-75e2e1eb0f45f4fad3e1ce24517dd81e b/sql/hive/src/test/resources/golden/smb_mapjoin_21-10-75e2e1eb0f45f4fad3e1ce24517dd81e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-11-720e78ad8ffc6620cc89a7e03bea3c4b b/sql/hive/src/test/resources/golden/smb_mapjoin_21-11-720e78ad8ffc6620cc89a7e03bea3c4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-12-c3217069b040b92693a575bc077b6f78 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-12-c3217069b040b92693a575bc077b6f78 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-13-5e00c7d92c43c135a58a609eb6a4b6cf b/sql/hive/src/test/resources/golden/smb_mapjoin_21-13-5e00c7d92c43c135a58a609eb6a4b6cf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-14-720e78ad8ffc6620cc89a7e03bea3c4b b/sql/hive/src/test/resources/golden/smb_mapjoin_21-14-720e78ad8ffc6620cc89a7e03bea3c4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-15-975f27d5b8171d0b1bd441fa5f2e1ddd b/sql/hive/src/test/resources/golden/smb_mapjoin_21-15-975f27d5b8171d0b1bd441fa5f2e1ddd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-16-c9250f30125e1235cb7ba01d97bbd1a b/sql/hive/src/test/resources/golden/smb_mapjoin_21-16-c9250f30125e1235cb7ba01d97bbd1a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-17-720e78ad8ffc6620cc89a7e03bea3c4b b/sql/hive/src/test/resources/golden/smb_mapjoin_21-17-720e78ad8ffc6620cc89a7e03bea3c4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-18-471c4e00fbbba3b23158aa4bf7595e79 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-18-471c4e00fbbba3b23158aa4bf7595e79 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-19-c9250f30125e1235cb7ba01d97bbd1a b/sql/hive/src/test/resources/golden/smb_mapjoin_21-19-c9250f30125e1235cb7ba01d97bbd1a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-2-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_21-2-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_21-2-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-20-720e78ad8ffc6620cc89a7e03bea3c4b b/sql/hive/src/test/resources/golden/smb_mapjoin_21-20-720e78ad8ffc6620cc89a7e03bea3c4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-21-ee61731107316feaef2efca38bb43fab b/sql/hive/src/test/resources/golden/smb_mapjoin_21-21-ee61731107316feaef2efca38bb43fab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-22-1c43fc5ebecae6e400cbd3bea40e3490 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-22-1c43fc5ebecae6e400cbd3bea40e3490 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-23-720e78ad8ffc6620cc89a7e03bea3c4b b/sql/hive/src/test/resources/golden/smb_mapjoin_21-23-720e78ad8ffc6620cc89a7e03bea3c4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-24-c600a123838779df6a5babea49732659 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-24-c600a123838779df6a5babea49732659 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-25-bc535bc3d5108cdee7d8b670f0e763d5 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-25-bc535bc3d5108cdee7d8b670f0e763d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-3-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-3-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_21-3-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-4-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-4-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_21-4-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-5-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-5-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_21-5-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-6-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_21-6-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_21-6-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-7-c248759cecf0e2c223579f5e37f6669c b/sql/hive/src/test/resources/golden/smb_mapjoin_21-7-c248759cecf0e2c223579f5e37f6669c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-8-724d37bd4a841f1fa4062f4f3e3eb353 b/sql/hive/src/test/resources/golden/smb_mapjoin_21-8-724d37bd4a841f1fa4062f4f3e3eb353 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_21-9-c0c82db5bd80edc57f6b3cb0e807f2ec b/sql/hive/src/test/resources/golden/smb_mapjoin_21-9-c0c82db5bd80edc57f6b3cb0e807f2ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-0-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_22-0-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-0-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-1-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-1-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-1-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-10-f0def0d77c93f6faebeca9b7a5340dbc b/sql/hive/src/test/resources/golden/smb_mapjoin_22-10-f0def0d77c93f6faebeca9b7a5340dbc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-11-b3e577f3099b5e4acffdd050f4c7f4dc b/sql/hive/src/test/resources/golden/smb_mapjoin_22-11-b3e577f3099b5e4acffdd050f4c7f4dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-12-187c201f61c23833d0d193031926445a b/sql/hive/src/test/resources/golden/smb_mapjoin_22-12-187c201f61c23833d0d193031926445a new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-12-187c201f61c23833d0d193031926445a @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-13-5c5c521954e5ade621fd0cbff5794c80 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-13-5c5c521954e5ade621fd0cbff5794c80 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-13-5c5c521954e5ade621fd0cbff5794c80 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-14-b2534937758d2ff0a08e729f7b3ace4 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-14-b2534937758d2ff0a08e729f7b3ace4 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-14-b2534937758d2ff0a08e729f7b3ace4 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-15-83d9e3d23d6612a926e53d57a5d07307 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-15-83d9e3d23d6612a926e53d57a5d07307 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-15-83d9e3d23d6612a926e53d57a5d07307 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-16-abc95b36345d3e37abb196088897c7fe b/sql/hive/src/test/resources/golden/smb_mapjoin_22-16-abc95b36345d3e37abb196088897c7fe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-17-720e78ad8ffc6620cc89a7e03bea3c4b b/sql/hive/src/test/resources/golden/smb_mapjoin_22-17-720e78ad8ffc6620cc89a7e03bea3c4b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-18-2c29fc18b24368938f880a1bf3d5eb54 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-18-2c29fc18b24368938f880a1bf3d5eb54 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-19-5dc91a74bf4c43e20a8a213ad08c352e b/sql/hive/src/test/resources/golden/smb_mapjoin_22-19-5dc91a74bf4c43e20a8a213ad08c352e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-2-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_22-2-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-2-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-20-ac918fa1a8e75031a0cc3eef0c9b77ad b/sql/hive/src/test/resources/golden/smb_mapjoin_22-20-ac918fa1a8e75031a0cc3eef0c9b77ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-21-f0def0d77c93f6faebeca9b7a5340dbc b/sql/hive/src/test/resources/golden/smb_mapjoin_22-21-f0def0d77c93f6faebeca9b7a5340dbc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-22-b3e577f3099b5e4acffdd050f4c7f4dc b/sql/hive/src/test/resources/golden/smb_mapjoin_22-22-b3e577f3099b5e4acffdd050f4c7f4dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-23-187c201f61c23833d0d193031926445a b/sql/hive/src/test/resources/golden/smb_mapjoin_22-23-187c201f61c23833d0d193031926445a new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-23-187c201f61c23833d0d193031926445a @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-24-5c5c521954e5ade621fd0cbff5794c80 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-24-5c5c521954e5ade621fd0cbff5794c80 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-24-5c5c521954e5ade621fd0cbff5794c80 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-25-b2534937758d2ff0a08e729f7b3ace4 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-25-b2534937758d2ff0a08e729f7b3ace4 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-25-b2534937758d2ff0a08e729f7b3ace4 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-26-83d9e3d23d6612a926e53d57a5d07307 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-26-83d9e3d23d6612a926e53d57a5d07307 new file mode 100644 index 0000000000000..99bc3d518639f --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-26-83d9e3d23d6612a926e53d57a5d07307 @@ -0,0 +1 @@ +253 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-3-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-3-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-3-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-4-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-4-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-4-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-5-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/smb_mapjoin_22-5-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-5-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-6-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/smb_mapjoin_22-6-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_22-6-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-7-8317b719ffcf85da8c618e8f2379a31b b/sql/hive/src/test/resources/golden/smb_mapjoin_22-7-8317b719ffcf85da8c618e8f2379a31b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-8-8cfa26d100b454c0b0f3443f62389abb b/sql/hive/src/test/resources/golden/smb_mapjoin_22-8-8cfa26d100b454c0b0f3443f62389abb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_22-9-ac918fa1a8e75031a0cc3eef0c9b77ad b/sql/hive/src/test/resources/golden/smb_mapjoin_22-9-ac918fa1a8e75031a0cc3eef0c9b77ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-0-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/smb_mapjoin_25-0-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-0-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-1-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-1-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-1-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-10-d0e31f8ed366038ca6f4f4955d2bc796 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-10-d0e31f8ed366038ca6f4f4955d2bc796 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-11-3af09654f8d38d21b5d26e6cc21210de b/sql/hive/src/test/resources/golden/smb_mapjoin_25-11-3af09654f8d38d21b5d26e6cc21210de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-12-35ab67c91c53dc725f2eab0fb8c9e62 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-12-35ab67c91c53dc725f2eab0fb8c9e62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-13-182e8b532775f6e514195adbea3948a1 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-13-182e8b532775f6e514195adbea3948a1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-14-c23ea191ee4d60c0a6252ce763b1beed b/sql/hive/src/test/resources/golden/smb_mapjoin_25-14-c23ea191ee4d60c0a6252ce763b1beed new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-14-c23ea191ee4d60c0a6252ce763b1beed @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-15-442e69416faaea9309bb8c2a3eb73ef b/sql/hive/src/test/resources/golden/smb_mapjoin_25-15-442e69416faaea9309bb8c2a3eb73ef new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-15-442e69416faaea9309bb8c2a3eb73ef @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-16-beaea10543cfd753458b43d8aeb7571f b/sql/hive/src/test/resources/golden/smb_mapjoin_25-16-beaea10543cfd753458b43d8aeb7571f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-16-beaea10543cfd753458b43d8aeb7571f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-17-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-17-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-17-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-18-d0ec6d66ff349db09fd455eec149efdb b/sql/hive/src/test/resources/golden/smb_mapjoin_25-18-d0ec6d66ff349db09fd455eec149efdb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-18-d0ec6d66ff349db09fd455eec149efdb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-19-16112d7ada2ccc6f4a3b5d627410cb01 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-19-16112d7ada2ccc6f4a3b5d627410cb01 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-19-16112d7ada2ccc6f4a3b5d627410cb01 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-2-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/smb_mapjoin_25-2-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-2-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-20-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-20-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-20-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-21-4d3e60a0e9bd8c12fdba4e010493537d b/sql/hive/src/test/resources/golden/smb_mapjoin_25-21-4d3e60a0e9bd8c12fdba4e010493537d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-21-4d3e60a0e9bd8c12fdba4e010493537d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-22-d0a93f40892e3894460553b443c77428 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-22-d0a93f40892e3894460553b443c77428 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-22-d0a93f40892e3894460553b443c77428 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-23-ae45f6382268c1035c11aa4fc8a23e2 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-23-ae45f6382268c1035c11aa4fc8a23e2 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-23-ae45f6382268c1035c11aa4fc8a23e2 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-24-d5ad76f9178cb787cee037f25b19b270 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-24-d5ad76f9178cb787cee037f25b19b270 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-24-d5ad76f9178cb787cee037f25b19b270 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-25-a59d19c2438bddb97dc54c08dcf1d8e6 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-25-a59d19c2438bddb97dc54c08dcf1d8e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-26-5a5aa75e424b6b5e3a2988e52bf3eff6 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-26-5a5aa75e424b6b5e3a2988e52bf3eff6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-3-bcde511b8d560ca83888265b96a781ff b/sql/hive/src/test/resources/golden/smb_mapjoin_25-3-bcde511b8d560ca83888265b96a781ff new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-3-bcde511b8d560ca83888265b96a781ff @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-4-8067b7ab260021bc70af9ab47309ee35 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-4-8067b7ab260021bc70af9ab47309ee35 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-4-8067b7ab260021bc70af9ab47309ee35 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-5-545c0ea2ebd7a141526ee13059a857f6 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-5-545c0ea2ebd7a141526ee13059a857f6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-5-545c0ea2ebd7a141526ee13059a857f6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-6-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/smb_mapjoin_25-6-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_25-6-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-7-91ac1a1471f9d6dd9059bdc6c18f594a b/sql/hive/src/test/resources/golden/smb_mapjoin_25-7-91ac1a1471f9d6dd9059bdc6c18f594a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-8-ef8d866d66ac801be99efef73664cbec b/sql/hive/src/test/resources/golden/smb_mapjoin_25-8-ef8d866d66ac801be99efef73664cbec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_25-9-31ed4593e624995154d0aedf94aa0f0f b/sql/hive/src/test/resources/golden/smb_mapjoin_25-9-31ed4593e624995154d0aedf94aa0f0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-0-91ac1a1471f9d6dd9059bdc6c18f594a b/sql/hive/src/test/resources/golden/smb_mapjoin_3-0-91ac1a1471f9d6dd9059bdc6c18f594a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-1-ef8d866d66ac801be99efef73664cbec b/sql/hive/src/test/resources/golden/smb_mapjoin_3-1-ef8d866d66ac801be99efef73664cbec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-10-efadb45f09b92d27233601394d53d79 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-10-efadb45f09b92d27233601394d53d79 new file mode 100644 index 0000000000000..2c05a72679b22 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-10-efadb45f09b92d27233601394d53d79 @@ -0,0 +1,6 @@ +50 val_20 50 val_20 +50 val_23 50 val_20 +50 val_25 50 val_20 +50 val_20 50 val_23 +50 val_23 50 val_23 +50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-11-52555bc44b4359aacfc42669bc5e4d12 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-11-52555bc44b4359aacfc42669bc5e4d12 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-12-77988b41de4b5a165c93942fbb2220d6 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-12-77988b41de4b5a165c93942fbb2220d6 new file mode 100644 index 0000000000000..0d9bce83ea87c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-12-77988b41de4b5a165c93942fbb2220d6 @@ -0,0 +1,7 @@ +50 val_20 50 val_20 +50 val_20 50 val_23 +50 val_23 50 val_20 +50 val_23 50 val_23 +50 val_25 50 val_20 +50 val_25 50 val_23 +51 val_30 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-13-812a0834a0e6546d5d0c8123d35c260f b/sql/hive/src/test/resources/golden/smb_mapjoin_3-13-812a0834a0e6546d5d0c8123d35c260f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-14-5456a3a43bfabcfdbb57257b633e299e b/sql/hive/src/test/resources/golden/smb_mapjoin_3-14-5456a3a43bfabcfdbb57257b633e299e new file mode 100644 index 0000000000000..d4c1adc92802d --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-14-5456a3a43bfabcfdbb57257b633e299e @@ -0,0 +1,10 @@ +NULL NULL 52 val_4 +NULL NULL 49 val_10 +NULL NULL 49 val_17 +NULL NULL 49 val_19 +50 val_20 50 val_20 +50 val_23 50 val_20 +50 val_25 50 val_20 +50 val_20 50 val_23 +50 val_23 50 val_23 +50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-15-adc9940d6a104bca6ec791e57bdb09c0 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-15-adc9940d6a104bca6ec791e57bdb09c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-16-fff1acc77150f6ea92fe8eefc04b079a b/sql/hive/src/test/resources/golden/smb_mapjoin_3-16-fff1acc77150f6ea92fe8eefc04b079a new file mode 100644 index 0000000000000..b62eec8583c92 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-16-fff1acc77150f6ea92fe8eefc04b079a @@ -0,0 +1,11 @@ +NULL NULL 49 val_10 +NULL NULL 49 val_17 +NULL NULL 49 val_19 +50 val_20 50 val_20 +50 val_20 50 val_23 +50 val_23 50 val_20 +50 val_23 50 val_23 +50 val_25 50 val_20 +50 val_25 50 val_23 +51 val_30 NULL NULL +NULL NULL 52 val_4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-17-1f00c63a1df29100d6e5fc4dcb4b0cfe b/sql/hive/src/test/resources/golden/smb_mapjoin_3-17-1f00c63a1df29100d6e5fc4dcb4b0cfe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-18-96a658e934543dd77020ad264ec9b8c1 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-18-96a658e934543dd77020ad264ec9b8c1 new file mode 100644 index 0000000000000..2c05a72679b22 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-18-96a658e934543dd77020ad264ec9b8c1 @@ -0,0 +1,6 @@ +50 val_20 50 val_20 +50 val_23 50 val_20 +50 val_25 50 val_20 +50 val_20 50 val_23 +50 val_23 50 val_23 +50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-19-bc0ddeb7b24fc7ed3fbcf77ced76ba07 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-19-bc0ddeb7b24fc7ed3fbcf77ced76ba07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-2-31ed4593e624995154d0aedf94aa0f0f b/sql/hive/src/test/resources/golden/smb_mapjoin_3-2-31ed4593e624995154d0aedf94aa0f0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-20-867845ed2cb38b55928f5310b4ae91bd b/sql/hive/src/test/resources/golden/smb_mapjoin_3-20-867845ed2cb38b55928f5310b4ae91bd new file mode 100644 index 0000000000000..0d9bce83ea87c --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-20-867845ed2cb38b55928f5310b4ae91bd @@ -0,0 +1,7 @@ +50 val_20 50 val_20 +50 val_20 50 val_23 +50 val_23 50 val_20 +50 val_23 50 val_23 +50 val_25 50 val_20 +50 val_25 50 val_23 +51 val_30 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-21-da48411b3e139037e171654fc9861755 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-21-da48411b3e139037e171654fc9861755 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-22-5826f60da3a4b0c731c53340d50b0a06 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-22-5826f60da3a4b0c731c53340d50b0a06 new file mode 100644 index 0000000000000..d4c1adc92802d --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-22-5826f60da3a4b0c731c53340d50b0a06 @@ -0,0 +1,10 @@ +NULL NULL 52 val_4 +NULL NULL 49 val_10 +NULL NULL 49 val_17 +NULL NULL 49 val_19 +50 val_20 50 val_20 +50 val_23 50 val_20 +50 val_25 50 val_20 +50 val_20 50 val_23 +50 val_23 50 val_23 +50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-23-3e229e8219fe44b4a01f64b0967d7b31 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-23-3e229e8219fe44b4a01f64b0967d7b31 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-24-c73176ea199d4d20934cf2659d42ec25 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-24-c73176ea199d4d20934cf2659d42ec25 new file mode 100644 index 0000000000000..b62eec8583c92 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-24-c73176ea199d4d20934cf2659d42ec25 @@ -0,0 +1,11 @@ +NULL NULL 49 val_10 +NULL NULL 49 val_17 +NULL NULL 49 val_19 +50 val_20 50 val_20 +50 val_20 50 val_23 +50 val_23 50 val_20 +50 val_23 50 val_23 +50 val_25 50 val_20 +50 val_25 50 val_23 +51 val_30 NULL NULL +NULL NULL 52 val_4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-3-d0e31f8ed366038ca6f4f4955d2bc796 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-3-d0e31f8ed366038ca6f4f4955d2bc796 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-4-3af09654f8d38d21b5d26e6cc21210de b/sql/hive/src/test/resources/golden/smb_mapjoin_3-4-3af09654f8d38d21b5d26e6cc21210de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-5-35ab67c91c53dc725f2eab0fb8c9e62 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-5-35ab67c91c53dc725f2eab0fb8c9e62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-6-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_3-6-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-6-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-7-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_3-7-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-7-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-8-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_3-8-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_3-8-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_3-9-8928717d58becd4fd358f3fec65d60af b/sql/hive/src/test/resources/golden/smb_mapjoin_3-9-8928717d58becd4fd358f3fec65d60af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-0-91ac1a1471f9d6dd9059bdc6c18f594a b/sql/hive/src/test/resources/golden/smb_mapjoin_4-0-91ac1a1471f9d6dd9059bdc6c18f594a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-1-ef8d866d66ac801be99efef73664cbec b/sql/hive/src/test/resources/golden/smb_mapjoin_4-1-ef8d866d66ac801be99efef73664cbec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-10-73afe8a2334d1dbb7d4af749875e2f24 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-10-73afe8a2334d1dbb7d4af749875e2f24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-11-59fd75b48de9cbd23accc4c4414c6162 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-11-59fd75b48de9cbd23accc4c4414c6162 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-12-233250782bea3c7815e4c9949993d4f9 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-12-233250782bea3c7815e4c9949993d4f9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-13-1ae07a8abc39f6a4195865ac583c1fb8 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-13-1ae07a8abc39f6a4195865ac583c1fb8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-14-a6efb153fe9be91c7055a5642e0f642d b/sql/hive/src/test/resources/golden/smb_mapjoin_4-14-a6efb153fe9be91c7055a5642e0f642d new file mode 100644 index 0000000000000..46af2ffd2b620 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-14-a6efb153fe9be91c7055a5642e0f642d @@ -0,0 +1,5 @@ +49 val_1 NULL NULL NULL NULL +51 val_3 51 val_30 NULL NULL +52 val_4 NULL NULL NULL NULL +53 val_5 NULL NULL NULL NULL +49 val_10 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-15-18da9766adcfcd53820d747d4b573886 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-15-18da9766adcfcd53820d747d4b573886 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-16-514034935af5348f67f1934cf5429d57 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-16-514034935af5348f67f1934cf5429d57 new file mode 100644 index 0000000000000..9047baeb236e5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-16-514034935af5348f67f1934cf5429d57 @@ -0,0 +1,6 @@ +NULL NULL NULL NULL 52 val_4 +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +NULL NULL NULL NULL 50 val_20 +NULL NULL NULL NULL 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-17-2a4723deed66d7aca3c272784dd11901 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-17-2a4723deed66d7aca3c272784dd11901 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-18-7f8bfb8ce6c1825708c37daa826fe5 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-18-7f8bfb8ce6c1825708c37daa826fe5 new file mode 100644 index 0000000000000..47626758b4182 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-18-7f8bfb8ce6c1825708c37daa826fe5 @@ -0,0 +1,11 @@ +49 val_1 NULL NULL NULL NULL +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +49 val_10 NULL NULL NULL NULL +NULL NULL NULL NULL 50 val_20 +NULL NULL NULL NULL 50 val_23 +51 val_3 51 val_30 NULL NULL +52 val_4 NULL NULL NULL NULL +NULL NULL NULL NULL 52 val_4 +53 val_5 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-19-afa62ebf8d41de52dfe732bdc470a995 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-19-afa62ebf8d41de52dfe732bdc470a995 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-2-31ed4593e624995154d0aedf94aa0f0f b/sql/hive/src/test/resources/golden/smb_mapjoin_4-2-31ed4593e624995154d0aedf94aa0f0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-20-be9350a00a523e1758427a1c8e4bdf09 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-20-be9350a00a523e1758427a1c8e4bdf09 new file mode 100644 index 0000000000000..29616d6368661 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-20-be9350a00a523e1758427a1c8e4bdf09 @@ -0,0 +1,6 @@ +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-21-b4e83e2474975db8ed614e671af132f2 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-21-b4e83e2474975db8ed614e671af132f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-22-da023084bbab6727dc3823cfce500308 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-22-da023084bbab6727dc3823cfce500308 new file mode 100644 index 0000000000000..6f90cbf839656 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-22-da023084bbab6727dc3823cfce500308 @@ -0,0 +1,7 @@ +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +51 val_3 51 val_30 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-23-48c28e1909386c95f78cb448bb6272e8 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-23-48c28e1909386c95f78cb448bb6272e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-24-7783ab33a26d29a2c0235f52f0e4ad86 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-24-7783ab33a26d29a2c0235f52f0e4ad86 new file mode 100644 index 0000000000000..3b195f9dff935 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-24-7783ab33a26d29a2c0235f52f0e4ad86 @@ -0,0 +1,10 @@ +NULL NULL NULL NULL 52 val_4 +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-25-c12edf424bd7b75fc06a21d6498b89d2 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-25-c12edf424bd7b75fc06a21d6498b89d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-26-de14aa74d0da48dff6271410cc5dd98e b/sql/hive/src/test/resources/golden/smb_mapjoin_4-26-de14aa74d0da48dff6271410cc5dd98e new file mode 100644 index 0000000000000..e18ae75d14a37 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-26-de14aa74d0da48dff6271410cc5dd98e @@ -0,0 +1,11 @@ +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +51 val_3 51 val_30 NULL NULL +NULL NULL NULL NULL 52 val_4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-27-2617dc7a064cbb545c3ea54fe82c45ef b/sql/hive/src/test/resources/golden/smb_mapjoin_4-27-2617dc7a064cbb545c3ea54fe82c45ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-28-f71280b4b556515d068d074378c3a54 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-28-f71280b4b556515d068d074378c3a54 new file mode 100644 index 0000000000000..8e51f0864314a --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-28-f71280b4b556515d068d074378c3a54 @@ -0,0 +1,6 @@ +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-29-239bc4053a7791815b587afef03515fb b/sql/hive/src/test/resources/golden/smb_mapjoin_4-29-239bc4053a7791815b587afef03515fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-3-d0e31f8ed366038ca6f4f4955d2bc796 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-3-d0e31f8ed366038ca6f4f4955d2bc796 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-30-a0d3abda611809460bcea4101967f21f b/sql/hive/src/test/resources/golden/smb_mapjoin_4-30-a0d3abda611809460bcea4101967f21f new file mode 100644 index 0000000000000..51676ca2c94e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-30-a0d3abda611809460bcea4101967f21f @@ -0,0 +1,11 @@ +49 val_1 NULL NULL NULL NULL +49 val_10 NULL NULL NULL NULL +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +51 val_3 51 val_30 NULL NULL +52 val_4 NULL NULL NULL NULL +53 val_5 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-31-35fa9389f1249c6cd736786522e6d3c5 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-31-35fa9389f1249c6cd736786522e6d3c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-32-6477640b8a0a96f7a1c9290b8e71b5a8 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-32-6477640b8a0a96f7a1c9290b8e71b5a8 new file mode 100644 index 0000000000000..4a125291de271 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-32-6477640b8a0a96f7a1c9290b8e71b5a8 @@ -0,0 +1,10 @@ +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +NULL NULL NULL NULL 52 val_4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-33-bc66eac0bf67a5c88f75ca66f0722e07 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-33-bc66eac0bf67a5c88f75ca66f0722e07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-34-48869ba51ea36864e720f94b09bf6b3 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-34-48869ba51ea36864e720f94b09bf6b3 new file mode 100644 index 0000000000000..660e9044e889a --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-34-48869ba51ea36864e720f94b09bf6b3 @@ -0,0 +1,15 @@ +49 val_1 NULL NULL NULL NULL +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +49 val_10 NULL NULL NULL NULL +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +51 val_3 51 val_30 NULL NULL +52 val_4 NULL NULL NULL NULL +NULL NULL NULL NULL 52 val_4 +53 val_5 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-4-3af09654f8d38d21b5d26e6cc21210de b/sql/hive/src/test/resources/golden/smb_mapjoin_4-4-3af09654f8d38d21b5d26e6cc21210de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-5-35ab67c91c53dc725f2eab0fb8c9e62 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-5-35ab67c91c53dc725f2eab0fb8c9e62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-6-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_4-6-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-6-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-7-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_4-7-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-7-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-8-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_4-8-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_4-8-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_4-9-137cd40f999272507f72f2faa2fbd7db b/sql/hive/src/test/resources/golden/smb_mapjoin_4-9-137cd40f999272507f72f2faa2fbd7db new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-0-91ac1a1471f9d6dd9059bdc6c18f594a b/sql/hive/src/test/resources/golden/smb_mapjoin_5-0-91ac1a1471f9d6dd9059bdc6c18f594a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-1-ef8d866d66ac801be99efef73664cbec b/sql/hive/src/test/resources/golden/smb_mapjoin_5-1-ef8d866d66ac801be99efef73664cbec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-10-df63d18b19a05a728723ad01d4e526fc b/sql/hive/src/test/resources/golden/smb_mapjoin_5-10-df63d18b19a05a728723ad01d4e526fc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-11-656085efab25db5dc019824b6b9a6bf5 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-11-656085efab25db5dc019824b6b9a6bf5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-12-a7a6dd05f89679cf3d621ca969a468e4 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-12-a7a6dd05f89679cf3d621ca969a468e4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-13-a1bada65e6df26b6e66681c565b41f2a b/sql/hive/src/test/resources/golden/smb_mapjoin_5-13-a1bada65e6df26b6e66681c565b41f2a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-14-e20bcd28cfd26259bcde9cffec8d2280 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-14-e20bcd28cfd26259bcde9cffec8d2280 new file mode 100644 index 0000000000000..46af2ffd2b620 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-14-e20bcd28cfd26259bcde9cffec8d2280 @@ -0,0 +1,5 @@ +49 val_1 NULL NULL NULL NULL +51 val_3 51 val_30 NULL NULL +52 val_4 NULL NULL NULL NULL +53 val_5 NULL NULL NULL NULL +49 val_10 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-15-cff7ff4d03450148a945711bad28b34 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-15-cff7ff4d03450148a945711bad28b34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-16-8a8dc418de3716f5112b9868f472e4b9 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-16-8a8dc418de3716f5112b9868f472e4b9 new file mode 100644 index 0000000000000..9047baeb236e5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-16-8a8dc418de3716f5112b9868f472e4b9 @@ -0,0 +1,6 @@ +NULL NULL NULL NULL 52 val_4 +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +NULL NULL NULL NULL 50 val_20 +NULL NULL NULL NULL 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-17-6e755e2d2b23e9bd4073794eb4dbaa4f b/sql/hive/src/test/resources/golden/smb_mapjoin_5-17-6e755e2d2b23e9bd4073794eb4dbaa4f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-18-1f0dd26e6088c4f359fb691a8ef650bc b/sql/hive/src/test/resources/golden/smb_mapjoin_5-18-1f0dd26e6088c4f359fb691a8ef650bc new file mode 100644 index 0000000000000..47626758b4182 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-18-1f0dd26e6088c4f359fb691a8ef650bc @@ -0,0 +1,11 @@ +49 val_1 NULL NULL NULL NULL +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +49 val_10 NULL NULL NULL NULL +NULL NULL NULL NULL 50 val_20 +NULL NULL NULL NULL 50 val_23 +51 val_3 51 val_30 NULL NULL +52 val_4 NULL NULL NULL NULL +NULL NULL NULL NULL 52 val_4 +53 val_5 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-19-dd3d36a83baa3ac6155ad9b2c987657a b/sql/hive/src/test/resources/golden/smb_mapjoin_5-19-dd3d36a83baa3ac6155ad9b2c987657a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-2-31ed4593e624995154d0aedf94aa0f0f b/sql/hive/src/test/resources/golden/smb_mapjoin_5-2-31ed4593e624995154d0aedf94aa0f0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-20-18fe4e120d3c0d663c360b2504b4f88d b/sql/hive/src/test/resources/golden/smb_mapjoin_5-20-18fe4e120d3c0d663c360b2504b4f88d new file mode 100644 index 0000000000000..29616d6368661 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-20-18fe4e120d3c0d663c360b2504b4f88d @@ -0,0 +1,6 @@ +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-21-7fd638ed676fe06a4970cc0c4a61b6c2 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-21-7fd638ed676fe06a4970cc0c4a61b6c2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-22-6ed2620fe017e454459a83061f25951a b/sql/hive/src/test/resources/golden/smb_mapjoin_5-22-6ed2620fe017e454459a83061f25951a new file mode 100644 index 0000000000000..6f90cbf839656 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-22-6ed2620fe017e454459a83061f25951a @@ -0,0 +1,7 @@ +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +51 val_3 51 val_30 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-23-e68f9dc71bb8d5bcaf24d11e21da572a b/sql/hive/src/test/resources/golden/smb_mapjoin_5-23-e68f9dc71bb8d5bcaf24d11e21da572a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-24-87f758a20c15fa3b97b4ba6703ae541b b/sql/hive/src/test/resources/golden/smb_mapjoin_5-24-87f758a20c15fa3b97b4ba6703ae541b new file mode 100644 index 0000000000000..3b195f9dff935 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-24-87f758a20c15fa3b97b4ba6703ae541b @@ -0,0 +1,10 @@ +NULL NULL NULL NULL 52 val_4 +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-25-9f57e8a72a99c2e9a9d37bfb379af31 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-25-9f57e8a72a99c2e9a9d37bfb379af31 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-26-1c1a9519e207edc3c3a927c986a37177 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-26-1c1a9519e207edc3c3a927c986a37177 new file mode 100644 index 0000000000000..e18ae75d14a37 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-26-1c1a9519e207edc3c3a927c986a37177 @@ -0,0 +1,11 @@ +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +51 val_3 51 val_30 NULL NULL +NULL NULL NULL NULL 52 val_4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-27-d29148ce40aca2915f54788d3890b6e2 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-27-d29148ce40aca2915f54788d3890b6e2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-28-94440444fff7d2629a23a30fd778fcc7 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-28-94440444fff7d2629a23a30fd778fcc7 new file mode 100644 index 0000000000000..8e51f0864314a --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-28-94440444fff7d2629a23a30fd778fcc7 @@ -0,0 +1,6 @@ +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-29-8862326985836c72a2b21cb96a151579 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-29-8862326985836c72a2b21cb96a151579 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-3-d0e31f8ed366038ca6f4f4955d2bc796 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-3-d0e31f8ed366038ca6f4f4955d2bc796 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-30-574d26a5179e5cebbbff5bbb425a9609 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-30-574d26a5179e5cebbbff5bbb425a9609 new file mode 100644 index 0000000000000..51676ca2c94e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-30-574d26a5179e5cebbbff5bbb425a9609 @@ -0,0 +1,11 @@ +49 val_1 NULL NULL NULL NULL +49 val_10 NULL NULL NULL NULL +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +51 val_3 51 val_30 NULL NULL +52 val_4 NULL NULL NULL NULL +53 val_5 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-31-aa33e936a0d1a5ed534caef75647f0c3 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-31-aa33e936a0d1a5ed534caef75647f0c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-32-17c99f827824994cfd21c40dbf4abfc b/sql/hive/src/test/resources/golden/smb_mapjoin_5-32-17c99f827824994cfd21c40dbf4abfc new file mode 100644 index 0000000000000..4a125291de271 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-32-17c99f827824994cfd21c40dbf4abfc @@ -0,0 +1,10 @@ +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +NULL NULL NULL NULL 52 val_4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-33-487e89a8efb4dea08105f2fa79de5087 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-33-487e89a8efb4dea08105f2fa79de5087 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-34-4db871582cf4f3038d43d0a2d5ae6895 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-34-4db871582cf4f3038d43d0a2d5ae6895 new file mode 100644 index 0000000000000..660e9044e889a --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-34-4db871582cf4f3038d43d0a2d5ae6895 @@ -0,0 +1,15 @@ +49 val_1 NULL NULL NULL NULL +NULL NULL NULL NULL 49 val_10 +NULL NULL NULL NULL 49 val_17 +NULL NULL NULL NULL 49 val_19 +49 val_10 NULL NULL NULL NULL +NULL NULL 50 val_20 50 val_20 +NULL NULL 50 val_20 50 val_23 +NULL NULL 50 val_23 50 val_20 +NULL NULL 50 val_23 50 val_23 +NULL NULL 50 val_25 50 val_20 +NULL NULL 50 val_25 50 val_23 +51 val_3 51 val_30 NULL NULL +52 val_4 NULL NULL NULL NULL +NULL NULL NULL NULL 52 val_4 +53 val_5 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-4-3af09654f8d38d21b5d26e6cc21210de b/sql/hive/src/test/resources/golden/smb_mapjoin_5-4-3af09654f8d38d21b5d26e6cc21210de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-5-35ab67c91c53dc725f2eab0fb8c9e62 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-5-35ab67c91c53dc725f2eab0fb8c9e62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-6-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_5-6-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-6-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-7-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_5-7-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-7-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-8-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_5-8-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_5-8-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_5-9-88a0d8b67f250913ba2be3cddffeb7df b/sql/hive/src/test/resources/golden/smb_mapjoin_5-9-88a0d8b67f250913ba2be3cddffeb7df new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-10-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-10-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-10-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-11-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_6-11-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-11-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-12-39e8889c37ee53d9a0ba48165b080b14 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-12-39e8889c37ee53d9a0ba48165b080b14 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-13-f9de7f57a4c89ccf84d35f47abb40d77 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-13-f9de7f57a4c89ccf84d35f47abb40d77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-14-43123d2821871aa5b4d4a9e22e03d1ca b/sql/hive/src/test/resources/golden/smb_mapjoin_6-14-43123d2821871aa5b4d4a9e22e03d1ca new file mode 100644 index 0000000000000..c2e3ea8b0c8e2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-14-43123d2821871aa5b4d4a9e22e03d1ca @@ -0,0 +1,1028 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +2 val_2 2 val_2 +4 val_4 4 val_4 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +8 val_8 8 val_8 +9 val_9 9 val_9 +10 val_10 10 val_10 +11 val_11 11 val_11 +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +15 val_15 15 val_15 +15 val_15 15 val_15 +15 val_15 15 val_15 +15 val_15 15 val_15 +17 val_17 17 val_17 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +19 val_19 19 val_19 +20 val_20 20 val_20 +24 val_24 24 val_24 +24 val_24 24 val_24 +24 val_24 24 val_24 +24 val_24 24 val_24 +26 val_26 26 val_26 +26 val_26 26 val_26 +26 val_26 26 val_26 +26 val_26 26 val_26 +27 val_27 27 val_27 +28 val_28 28 val_28 +30 val_30 30 val_30 +33 val_33 33 val_33 +34 val_34 34 val_34 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +41 val_41 41 val_41 +42 val_42 42 val_42 +42 val_42 42 val_42 +42 val_42 42 val_42 +42 val_42 42 val_42 +43 val_43 43 val_43 +44 val_44 44 val_44 +47 val_47 47 val_47 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +53 val_53 53 val_53 +54 val_54 54 val_54 +57 val_57 57 val_57 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +64 val_64 64 val_64 +65 val_65 65 val_65 +66 val_66 66 val_66 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +69 val_69 69 val_69 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +74 val_74 74 val_74 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +77 val_77 77 val_77 +78 val_78 78 val_78 +80 val_80 80 val_80 +82 val_82 82 val_82 +83 val_83 83 val_83 +83 val_83 83 val_83 +83 val_83 83 val_83 +83 val_83 83 val_83 +84 val_84 84 val_84 +84 val_84 84 val_84 +84 val_84 84 val_84 +84 val_84 84 val_84 +85 val_85 85 val_85 +86 val_86 86 val_86 +87 val_87 87 val_87 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +92 val_92 92 val_92 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +96 val_96 96 val_96 +97 val_97 97 val_97 +97 val_97 97 val_97 +97 val_97 97 val_97 +97 val_97 97 val_97 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +103 val_103 103 val_103 +103 val_103 103 val_103 +103 val_103 103 val_103 +103 val_103 103 val_103 +104 val_104 104 val_104 +104 val_104 104 val_104 +104 val_104 104 val_104 +104 val_104 104 val_104 +105 val_105 105 val_105 +111 val_111 111 val_111 +113 val_113 113 val_113 +113 val_113 113 val_113 +113 val_113 113 val_113 +113 val_113 113 val_113 +114 val_114 114 val_114 +116 val_116 116 val_116 +118 val_118 118 val_118 +118 val_118 118 val_118 +118 val_118 118 val_118 +118 val_118 118 val_118 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +120 val_120 120 val_120 +120 val_120 120 val_120 +120 val_120 120 val_120 +120 val_120 120 val_120 +125 val_125 125 val_125 +125 val_125 125 val_125 +125 val_125 125 val_125 +125 val_125 125 val_125 +126 val_126 126 val_126 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +129 val_129 129 val_129 +129 val_129 129 val_129 +129 val_129 129 val_129 +129 val_129 129 val_129 +131 val_131 131 val_131 +133 val_133 133 val_133 +134 val_134 134 val_134 +134 val_134 134 val_134 +134 val_134 134 val_134 +134 val_134 134 val_134 +136 val_136 136 val_136 +137 val_137 137 val_137 +137 val_137 137 val_137 +137 val_137 137 val_137 +137 val_137 137 val_137 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +143 val_143 143 val_143 +145 val_145 145 val_145 +146 val_146 146 val_146 +146 val_146 146 val_146 +146 val_146 146 val_146 +146 val_146 146 val_146 +149 val_149 149 val_149 +149 val_149 149 val_149 +149 val_149 149 val_149 +149 val_149 149 val_149 +150 val_150 150 val_150 +152 val_152 152 val_152 +152 val_152 152 val_152 +152 val_152 152 val_152 +152 val_152 152 val_152 +153 val_153 153 val_153 +155 val_155 155 val_155 +156 val_156 156 val_156 +157 val_157 157 val_157 +158 val_158 158 val_158 +160 val_160 160 val_160 +162 val_162 162 val_162 +163 val_163 163 val_163 +164 val_164 164 val_164 +164 val_164 164 val_164 +164 val_164 164 val_164 +164 val_164 164 val_164 +165 val_165 165 val_165 +165 val_165 165 val_165 +165 val_165 165 val_165 +165 val_165 165 val_165 +166 val_166 166 val_166 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +168 val_168 168 val_168 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +170 val_170 170 val_170 +172 val_172 172 val_172 +172 val_172 172 val_172 +172 val_172 172 val_172 +172 val_172 172 val_172 +174 val_174 174 val_174 +174 val_174 174 val_174 +174 val_174 174 val_174 +174 val_174 174 val_174 +175 val_175 175 val_175 +175 val_175 175 val_175 +175 val_175 175 val_175 +175 val_175 175 val_175 +176 val_176 176 val_176 +176 val_176 176 val_176 +176 val_176 176 val_176 +176 val_176 176 val_176 +177 val_177 177 val_177 +178 val_178 178 val_178 +179 val_179 179 val_179 +179 val_179 179 val_179 +179 val_179 179 val_179 +179 val_179 179 val_179 +180 val_180 180 val_180 +181 val_181 181 val_181 +183 val_183 183 val_183 +186 val_186 186 val_186 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +189 val_189 189 val_189 +190 val_190 190 val_190 +191 val_191 191 val_191 +191 val_191 191 val_191 +191 val_191 191 val_191 +191 val_191 191 val_191 +192 val_192 192 val_192 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +194 val_194 194 val_194 +195 val_195 195 val_195 +195 val_195 195 val_195 +195 val_195 195 val_195 +195 val_195 195 val_195 +196 val_196 196 val_196 +197 val_197 197 val_197 +197 val_197 197 val_197 +197 val_197 197 val_197 +197 val_197 197 val_197 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +200 val_200 200 val_200 +200 val_200 200 val_200 +200 val_200 200 val_200 +200 val_200 200 val_200 +201 val_201 201 val_201 +202 val_202 202 val_202 +203 val_203 203 val_203 +203 val_203 203 val_203 +203 val_203 203 val_203 +203 val_203 203 val_203 +205 val_205 205 val_205 +205 val_205 205 val_205 +205 val_205 205 val_205 +205 val_205 205 val_205 +207 val_207 207 val_207 +207 val_207 207 val_207 +207 val_207 207 val_207 +207 val_207 207 val_207 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +209 val_209 209 val_209 +209 val_209 209 val_209 +209 val_209 209 val_209 +209 val_209 209 val_209 +213 val_213 213 val_213 +213 val_213 213 val_213 +213 val_213 213 val_213 +213 val_213 213 val_213 +214 val_214 214 val_214 +216 val_216 216 val_216 +216 val_216 216 val_216 +216 val_216 216 val_216 +216 val_216 216 val_216 +217 val_217 217 val_217 +217 val_217 217 val_217 +217 val_217 217 val_217 +217 val_217 217 val_217 +218 val_218 218 val_218 +219 val_219 219 val_219 +219 val_219 219 val_219 +219 val_219 219 val_219 +219 val_219 219 val_219 +221 val_221 221 val_221 +221 val_221 221 val_221 +221 val_221 221 val_221 +221 val_221 221 val_221 +222 val_222 222 val_222 +223 val_223 223 val_223 +223 val_223 223 val_223 +223 val_223 223 val_223 +223 val_223 223 val_223 +224 val_224 224 val_224 +224 val_224 224 val_224 +224 val_224 224 val_224 +224 val_224 224 val_224 +226 val_226 226 val_226 +228 val_228 228 val_228 +229 val_229 229 val_229 +229 val_229 229 val_229 +229 val_229 229 val_229 +229 val_229 229 val_229 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +233 val_233 233 val_233 +233 val_233 233 val_233 +233 val_233 233 val_233 +233 val_233 233 val_233 +235 val_235 235 val_235 +237 val_237 237 val_237 +237 val_237 237 val_237 +237 val_237 237 val_237 +237 val_237 237 val_237 +238 val_238 238 val_238 +238 val_238 238 val_238 +238 val_238 238 val_238 +238 val_238 238 val_238 +239 val_239 239 val_239 +239 val_239 239 val_239 +239 val_239 239 val_239 +239 val_239 239 val_239 +241 val_241 241 val_241 +242 val_242 242 val_242 +242 val_242 242 val_242 +242 val_242 242 val_242 +242 val_242 242 val_242 +244 val_244 244 val_244 +247 val_247 247 val_247 +248 val_248 248 val_248 +249 val_249 249 val_249 +252 val_252 252 val_252 +255 val_255 255 val_255 +255 val_255 255 val_255 +255 val_255 255 val_255 +255 val_255 255 val_255 +256 val_256 256 val_256 +256 val_256 256 val_256 +256 val_256 256 val_256 +256 val_256 256 val_256 +257 val_257 257 val_257 +258 val_258 258 val_258 +260 val_260 260 val_260 +262 val_262 262 val_262 +263 val_263 263 val_263 +265 val_265 265 val_265 +265 val_265 265 val_265 +265 val_265 265 val_265 +265 val_265 265 val_265 +266 val_266 266 val_266 +272 val_272 272 val_272 +272 val_272 272 val_272 +272 val_272 272 val_272 +272 val_272 272 val_272 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +274 val_274 274 val_274 +275 val_275 275 val_275 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +278 val_278 278 val_278 +278 val_278 278 val_278 +278 val_278 278 val_278 +278 val_278 278 val_278 +280 val_280 280 val_280 +280 val_280 280 val_280 +280 val_280 280 val_280 +280 val_280 280 val_280 +281 val_281 281 val_281 +281 val_281 281 val_281 +281 val_281 281 val_281 +281 val_281 281 val_281 +282 val_282 282 val_282 +282 val_282 282 val_282 +282 val_282 282 val_282 +282 val_282 282 val_282 +283 val_283 283 val_283 +284 val_284 284 val_284 +285 val_285 285 val_285 +286 val_286 286 val_286 +287 val_287 287 val_287 +288 val_288 288 val_288 +288 val_288 288 val_288 +288 val_288 288 val_288 +288 val_288 288 val_288 +289 val_289 289 val_289 +291 val_291 291 val_291 +292 val_292 292 val_292 +296 val_296 296 val_296 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +302 val_302 302 val_302 +305 val_305 305 val_305 +306 val_306 306 val_306 +307 val_307 307 val_307 +307 val_307 307 val_307 +307 val_307 307 val_307 +307 val_307 307 val_307 +308 val_308 308 val_308 +309 val_309 309 val_309 +309 val_309 309 val_309 +309 val_309 309 val_309 +309 val_309 309 val_309 +310 val_310 310 val_310 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +315 val_315 315 val_315 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +317 val_317 317 val_317 +317 val_317 317 val_317 +317 val_317 317 val_317 +317 val_317 317 val_317 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +321 val_321 321 val_321 +321 val_321 321 val_321 +321 val_321 321 val_321 +321 val_321 321 val_321 +322 val_322 322 val_322 +322 val_322 322 val_322 +322 val_322 322 val_322 +322 val_322 322 val_322 +323 val_323 323 val_323 +325 val_325 325 val_325 +325 val_325 325 val_325 +325 val_325 325 val_325 +325 val_325 325 val_325 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +331 val_331 331 val_331 +331 val_331 331 val_331 +331 val_331 331 val_331 +331 val_331 331 val_331 +332 val_332 332 val_332 +333 val_333 333 val_333 +333 val_333 333 val_333 +333 val_333 333 val_333 +333 val_333 333 val_333 +335 val_335 335 val_335 +336 val_336 336 val_336 +338 val_338 338 val_338 +339 val_339 339 val_339 +341 val_341 341 val_341 +342 val_342 342 val_342 +342 val_342 342 val_342 +342 val_342 342 val_342 +342 val_342 342 val_342 +344 val_344 344 val_344 +344 val_344 344 val_344 +344 val_344 344 val_344 +344 val_344 344 val_344 +345 val_345 345 val_345 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +351 val_351 351 val_351 +353 val_353 353 val_353 +353 val_353 353 val_353 +353 val_353 353 val_353 +353 val_353 353 val_353 +356 val_356 356 val_356 +360 val_360 360 val_360 +362 val_362 362 val_362 +364 val_364 364 val_364 +365 val_365 365 val_365 +366 val_366 366 val_366 +367 val_367 367 val_367 +367 val_367 367 val_367 +367 val_367 367 val_367 +367 val_367 367 val_367 +368 val_368 368 val_368 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +373 val_373 373 val_373 +374 val_374 374 val_374 +375 val_375 375 val_375 +377 val_377 377 val_377 +378 val_378 378 val_378 +379 val_379 379 val_379 +382 val_382 382 val_382 +382 val_382 382 val_382 +382 val_382 382 val_382 +382 val_382 382 val_382 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +386 val_386 386 val_386 +389 val_389 389 val_389 +392 val_392 392 val_392 +393 val_393 393 val_393 +394 val_394 394 val_394 +395 val_395 395 val_395 +395 val_395 395 val_395 +395 val_395 395 val_395 +395 val_395 395 val_395 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +397 val_397 397 val_397 +397 val_397 397 val_397 +397 val_397 397 val_397 +397 val_397 397 val_397 +399 val_399 399 val_399 +399 val_399 399 val_399 +399 val_399 399 val_399 +399 val_399 399 val_399 +400 val_400 400 val_400 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +402 val_402 402 val_402 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +404 val_404 404 val_404 +404 val_404 404 val_404 +404 val_404 404 val_404 +404 val_404 404 val_404 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +407 val_407 407 val_407 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +411 val_411 411 val_411 +413 val_413 413 val_413 +413 val_413 413 val_413 +413 val_413 413 val_413 +413 val_413 413 val_413 +414 val_414 414 val_414 +414 val_414 414 val_414 +414 val_414 414 val_414 +414 val_414 414 val_414 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +418 val_418 418 val_418 +419 val_419 419 val_419 +421 val_421 421 val_421 +424 val_424 424 val_424 +424 val_424 424 val_424 +424 val_424 424 val_424 +424 val_424 424 val_424 +427 val_427 427 val_427 +429 val_429 429 val_429 +429 val_429 429 val_429 +429 val_429 429 val_429 +429 val_429 429 val_429 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +432 val_432 432 val_432 +435 val_435 435 val_435 +436 val_436 436 val_436 +437 val_437 437 val_437 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +439 val_439 439 val_439 +439 val_439 439 val_439 +439 val_439 439 val_439 +439 val_439 439 val_439 +443 val_443 443 val_443 +444 val_444 444 val_444 +446 val_446 446 val_446 +448 val_448 448 val_448 +449 val_449 449 val_449 +452 val_452 452 val_452 +453 val_453 453 val_453 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +455 val_455 455 val_455 +457 val_457 457 val_457 +458 val_458 458 val_458 +458 val_458 458 val_458 +458 val_458 458 val_458 +458 val_458 458 val_458 +459 val_459 459 val_459 +459 val_459 459 val_459 +459 val_459 459 val_459 +459 val_459 459 val_459 +460 val_460 460 val_460 +462 val_462 462 val_462 +462 val_462 462 val_462 +462 val_462 462 val_462 +462 val_462 462 val_462 +463 val_463 463 val_463 +463 val_463 463 val_463 +463 val_463 463 val_463 +463 val_463 463 val_463 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +467 val_467 467 val_467 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +470 val_470 470 val_470 +472 val_472 472 val_472 +475 val_475 475 val_475 +477 val_477 477 val_477 +478 val_478 478 val_478 +478 val_478 478 val_478 +478 val_478 478 val_478 +478 val_478 478 val_478 +479 val_479 479 val_479 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +481 val_481 481 val_481 +482 val_482 482 val_482 +483 val_483 483 val_483 +484 val_484 484 val_484 +485 val_485 485 val_485 +487 val_487 487 val_487 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +490 val_490 490 val_490 +491 val_491 491 val_491 +492 val_492 492 val_492 +492 val_492 492 val_492 +492 val_492 492 val_492 +492 val_492 492 val_492 +493 val_493 493 val_493 +494 val_494 494 val_494 +495 val_495 495 val_495 +496 val_496 496 val_496 +497 val_497 497 val_497 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-15-c673bbec2ee476eea9609be3d3555438 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-15-c673bbec2ee476eea9609be3d3555438 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-16-449cb60e6537ba0810ea6879a7351a1e b/sql/hive/src/test/resources/golden/smb_mapjoin_6-16-449cb60e6537ba0810ea6879a7351a1e new file mode 100644 index 0000000000000..0e17d179f4167 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-16-449cb60e6537ba0810ea6879a7351a1e @@ -0,0 +1 @@ +278697 278697 101852390308 101852390308 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-17-aa5f237005fb69b3f52808c80b4a276a b/sql/hive/src/test/resources/golden/smb_mapjoin_6-17-aa5f237005fb69b3f52808c80b4a276a new file mode 100644 index 0000000000000..0e17d179f4167 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-17-aa5f237005fb69b3f52808c80b4a276a @@ -0,0 +1 @@ +278697 278697 101852390308 101852390308 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-18-a2ed8f3ca5f4a3c2d1377bc82463fe1a b/sql/hive/src/test/resources/golden/smb_mapjoin_6-18-a2ed8f3ca5f4a3c2d1377bc82463fe1a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-19-4fd621581c51ad55a7e8389a94c6a411 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-19-4fd621581c51ad55a7e8389a94c6a411 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-20-f9de7f57a4c89ccf84d35f47abb40d77 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-20-f9de7f57a4c89ccf84d35f47abb40d77 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-21-43123d2821871aa5b4d4a9e22e03d1ca b/sql/hive/src/test/resources/golden/smb_mapjoin_6-21-43123d2821871aa5b4d4a9e22e03d1ca new file mode 100644 index 0000000000000..c2e3ea8b0c8e2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-21-43123d2821871aa5b4d4a9e22e03d1ca @@ -0,0 +1,1028 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +2 val_2 2 val_2 +4 val_4 4 val_4 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +8 val_8 8 val_8 +9 val_9 9 val_9 +10 val_10 10 val_10 +11 val_11 11 val_11 +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +12 val_12 12 val_12 +15 val_15 15 val_15 +15 val_15 15 val_15 +15 val_15 15 val_15 +15 val_15 15 val_15 +17 val_17 17 val_17 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +18 val_18 18 val_18 +19 val_19 19 val_19 +20 val_20 20 val_20 +24 val_24 24 val_24 +24 val_24 24 val_24 +24 val_24 24 val_24 +24 val_24 24 val_24 +26 val_26 26 val_26 +26 val_26 26 val_26 +26 val_26 26 val_26 +26 val_26 26 val_26 +27 val_27 27 val_27 +28 val_28 28 val_28 +30 val_30 30 val_30 +33 val_33 33 val_33 +34 val_34 34 val_34 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +37 val_37 37 val_37 +41 val_41 41 val_41 +42 val_42 42 val_42 +42 val_42 42 val_42 +42 val_42 42 val_42 +42 val_42 42 val_42 +43 val_43 43 val_43 +44 val_44 44 val_44 +47 val_47 47 val_47 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +51 val_51 51 val_51 +53 val_53 53 val_53 +54 val_54 54 val_54 +57 val_57 57 val_57 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +58 val_58 58 val_58 +64 val_64 64 val_64 +65 val_65 65 val_65 +66 val_66 66 val_66 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +67 val_67 67 val_67 +69 val_69 69 val_69 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +72 val_72 72 val_72 +74 val_74 74 val_74 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +76 val_76 76 val_76 +77 val_77 77 val_77 +78 val_78 78 val_78 +80 val_80 80 val_80 +82 val_82 82 val_82 +83 val_83 83 val_83 +83 val_83 83 val_83 +83 val_83 83 val_83 +83 val_83 83 val_83 +84 val_84 84 val_84 +84 val_84 84 val_84 +84 val_84 84 val_84 +84 val_84 84 val_84 +85 val_85 85 val_85 +86 val_86 86 val_86 +87 val_87 87 val_87 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +92 val_92 92 val_92 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +95 val_95 95 val_95 +96 val_96 96 val_96 +97 val_97 97 val_97 +97 val_97 97 val_97 +97 val_97 97 val_97 +97 val_97 97 val_97 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 +98 val_98 98 val_98 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +100 val_100 100 val_100 +103 val_103 103 val_103 +103 val_103 103 val_103 +103 val_103 103 val_103 +103 val_103 103 val_103 +104 val_104 104 val_104 +104 val_104 104 val_104 +104 val_104 104 val_104 +104 val_104 104 val_104 +105 val_105 105 val_105 +111 val_111 111 val_111 +113 val_113 113 val_113 +113 val_113 113 val_113 +113 val_113 113 val_113 +113 val_113 113 val_113 +114 val_114 114 val_114 +116 val_116 116 val_116 +118 val_118 118 val_118 +118 val_118 118 val_118 +118 val_118 118 val_118 +118 val_118 118 val_118 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +120 val_120 120 val_120 +120 val_120 120 val_120 +120 val_120 120 val_120 +120 val_120 120 val_120 +125 val_125 125 val_125 +125 val_125 125 val_125 +125 val_125 125 val_125 +125 val_125 125 val_125 +126 val_126 126 val_126 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +129 val_129 129 val_129 +129 val_129 129 val_129 +129 val_129 129 val_129 +129 val_129 129 val_129 +131 val_131 131 val_131 +133 val_133 133 val_133 +134 val_134 134 val_134 +134 val_134 134 val_134 +134 val_134 134 val_134 +134 val_134 134 val_134 +136 val_136 136 val_136 +137 val_137 137 val_137 +137 val_137 137 val_137 +137 val_137 137 val_137 +137 val_137 137 val_137 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +143 val_143 143 val_143 +145 val_145 145 val_145 +146 val_146 146 val_146 +146 val_146 146 val_146 +146 val_146 146 val_146 +146 val_146 146 val_146 +149 val_149 149 val_149 +149 val_149 149 val_149 +149 val_149 149 val_149 +149 val_149 149 val_149 +150 val_150 150 val_150 +152 val_152 152 val_152 +152 val_152 152 val_152 +152 val_152 152 val_152 +152 val_152 152 val_152 +153 val_153 153 val_153 +155 val_155 155 val_155 +156 val_156 156 val_156 +157 val_157 157 val_157 +158 val_158 158 val_158 +160 val_160 160 val_160 +162 val_162 162 val_162 +163 val_163 163 val_163 +164 val_164 164 val_164 +164 val_164 164 val_164 +164 val_164 164 val_164 +164 val_164 164 val_164 +165 val_165 165 val_165 +165 val_165 165 val_165 +165 val_165 165 val_165 +165 val_165 165 val_165 +166 val_166 166 val_166 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +168 val_168 168 val_168 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +170 val_170 170 val_170 +172 val_172 172 val_172 +172 val_172 172 val_172 +172 val_172 172 val_172 +172 val_172 172 val_172 +174 val_174 174 val_174 +174 val_174 174 val_174 +174 val_174 174 val_174 +174 val_174 174 val_174 +175 val_175 175 val_175 +175 val_175 175 val_175 +175 val_175 175 val_175 +175 val_175 175 val_175 +176 val_176 176 val_176 +176 val_176 176 val_176 +176 val_176 176 val_176 +176 val_176 176 val_176 +177 val_177 177 val_177 +178 val_178 178 val_178 +179 val_179 179 val_179 +179 val_179 179 val_179 +179 val_179 179 val_179 +179 val_179 179 val_179 +180 val_180 180 val_180 +181 val_181 181 val_181 +183 val_183 183 val_183 +186 val_186 186 val_186 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +189 val_189 189 val_189 +190 val_190 190 val_190 +191 val_191 191 val_191 +191 val_191 191 val_191 +191 val_191 191 val_191 +191 val_191 191 val_191 +192 val_192 192 val_192 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +194 val_194 194 val_194 +195 val_195 195 val_195 +195 val_195 195 val_195 +195 val_195 195 val_195 +195 val_195 195 val_195 +196 val_196 196 val_196 +197 val_197 197 val_197 +197 val_197 197 val_197 +197 val_197 197 val_197 +197 val_197 197 val_197 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +200 val_200 200 val_200 +200 val_200 200 val_200 +200 val_200 200 val_200 +200 val_200 200 val_200 +201 val_201 201 val_201 +202 val_202 202 val_202 +203 val_203 203 val_203 +203 val_203 203 val_203 +203 val_203 203 val_203 +203 val_203 203 val_203 +205 val_205 205 val_205 +205 val_205 205 val_205 +205 val_205 205 val_205 +205 val_205 205 val_205 +207 val_207 207 val_207 +207 val_207 207 val_207 +207 val_207 207 val_207 +207 val_207 207 val_207 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +209 val_209 209 val_209 +209 val_209 209 val_209 +209 val_209 209 val_209 +209 val_209 209 val_209 +213 val_213 213 val_213 +213 val_213 213 val_213 +213 val_213 213 val_213 +213 val_213 213 val_213 +214 val_214 214 val_214 +216 val_216 216 val_216 +216 val_216 216 val_216 +216 val_216 216 val_216 +216 val_216 216 val_216 +217 val_217 217 val_217 +217 val_217 217 val_217 +217 val_217 217 val_217 +217 val_217 217 val_217 +218 val_218 218 val_218 +219 val_219 219 val_219 +219 val_219 219 val_219 +219 val_219 219 val_219 +219 val_219 219 val_219 +221 val_221 221 val_221 +221 val_221 221 val_221 +221 val_221 221 val_221 +221 val_221 221 val_221 +222 val_222 222 val_222 +223 val_223 223 val_223 +223 val_223 223 val_223 +223 val_223 223 val_223 +223 val_223 223 val_223 +224 val_224 224 val_224 +224 val_224 224 val_224 +224 val_224 224 val_224 +224 val_224 224 val_224 +226 val_226 226 val_226 +228 val_228 228 val_228 +229 val_229 229 val_229 +229 val_229 229 val_229 +229 val_229 229 val_229 +229 val_229 229 val_229 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +233 val_233 233 val_233 +233 val_233 233 val_233 +233 val_233 233 val_233 +233 val_233 233 val_233 +235 val_235 235 val_235 +237 val_237 237 val_237 +237 val_237 237 val_237 +237 val_237 237 val_237 +237 val_237 237 val_237 +238 val_238 238 val_238 +238 val_238 238 val_238 +238 val_238 238 val_238 +238 val_238 238 val_238 +239 val_239 239 val_239 +239 val_239 239 val_239 +239 val_239 239 val_239 +239 val_239 239 val_239 +241 val_241 241 val_241 +242 val_242 242 val_242 +242 val_242 242 val_242 +242 val_242 242 val_242 +242 val_242 242 val_242 +244 val_244 244 val_244 +247 val_247 247 val_247 +248 val_248 248 val_248 +249 val_249 249 val_249 +252 val_252 252 val_252 +255 val_255 255 val_255 +255 val_255 255 val_255 +255 val_255 255 val_255 +255 val_255 255 val_255 +256 val_256 256 val_256 +256 val_256 256 val_256 +256 val_256 256 val_256 +256 val_256 256 val_256 +257 val_257 257 val_257 +258 val_258 258 val_258 +260 val_260 260 val_260 +262 val_262 262 val_262 +263 val_263 263 val_263 +265 val_265 265 val_265 +265 val_265 265 val_265 +265 val_265 265 val_265 +265 val_265 265 val_265 +266 val_266 266 val_266 +272 val_272 272 val_272 +272 val_272 272 val_272 +272 val_272 272 val_272 +272 val_272 272 val_272 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +274 val_274 274 val_274 +275 val_275 275 val_275 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +278 val_278 278 val_278 +278 val_278 278 val_278 +278 val_278 278 val_278 +278 val_278 278 val_278 +280 val_280 280 val_280 +280 val_280 280 val_280 +280 val_280 280 val_280 +280 val_280 280 val_280 +281 val_281 281 val_281 +281 val_281 281 val_281 +281 val_281 281 val_281 +281 val_281 281 val_281 +282 val_282 282 val_282 +282 val_282 282 val_282 +282 val_282 282 val_282 +282 val_282 282 val_282 +283 val_283 283 val_283 +284 val_284 284 val_284 +285 val_285 285 val_285 +286 val_286 286 val_286 +287 val_287 287 val_287 +288 val_288 288 val_288 +288 val_288 288 val_288 +288 val_288 288 val_288 +288 val_288 288 val_288 +289 val_289 289 val_289 +291 val_291 291 val_291 +292 val_292 292 val_292 +296 val_296 296 val_296 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +302 val_302 302 val_302 +305 val_305 305 val_305 +306 val_306 306 val_306 +307 val_307 307 val_307 +307 val_307 307 val_307 +307 val_307 307 val_307 +307 val_307 307 val_307 +308 val_308 308 val_308 +309 val_309 309 val_309 +309 val_309 309 val_309 +309 val_309 309 val_309 +309 val_309 309 val_309 +310 val_310 310 val_310 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +315 val_315 315 val_315 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +317 val_317 317 val_317 +317 val_317 317 val_317 +317 val_317 317 val_317 +317 val_317 317 val_317 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +321 val_321 321 val_321 +321 val_321 321 val_321 +321 val_321 321 val_321 +321 val_321 321 val_321 +322 val_322 322 val_322 +322 val_322 322 val_322 +322 val_322 322 val_322 +322 val_322 322 val_322 +323 val_323 323 val_323 +325 val_325 325 val_325 +325 val_325 325 val_325 +325 val_325 325 val_325 +325 val_325 325 val_325 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +331 val_331 331 val_331 +331 val_331 331 val_331 +331 val_331 331 val_331 +331 val_331 331 val_331 +332 val_332 332 val_332 +333 val_333 333 val_333 +333 val_333 333 val_333 +333 val_333 333 val_333 +333 val_333 333 val_333 +335 val_335 335 val_335 +336 val_336 336 val_336 +338 val_338 338 val_338 +339 val_339 339 val_339 +341 val_341 341 val_341 +342 val_342 342 val_342 +342 val_342 342 val_342 +342 val_342 342 val_342 +342 val_342 342 val_342 +344 val_344 344 val_344 +344 val_344 344 val_344 +344 val_344 344 val_344 +344 val_344 344 val_344 +345 val_345 345 val_345 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +351 val_351 351 val_351 +353 val_353 353 val_353 +353 val_353 353 val_353 +353 val_353 353 val_353 +353 val_353 353 val_353 +356 val_356 356 val_356 +360 val_360 360 val_360 +362 val_362 362 val_362 +364 val_364 364 val_364 +365 val_365 365 val_365 +366 val_366 366 val_366 +367 val_367 367 val_367 +367 val_367 367 val_367 +367 val_367 367 val_367 +367 val_367 367 val_367 +368 val_368 368 val_368 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +373 val_373 373 val_373 +374 val_374 374 val_374 +375 val_375 375 val_375 +377 val_377 377 val_377 +378 val_378 378 val_378 +379 val_379 379 val_379 +382 val_382 382 val_382 +382 val_382 382 val_382 +382 val_382 382 val_382 +382 val_382 382 val_382 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +386 val_386 386 val_386 +389 val_389 389 val_389 +392 val_392 392 val_392 +393 val_393 393 val_393 +394 val_394 394 val_394 +395 val_395 395 val_395 +395 val_395 395 val_395 +395 val_395 395 val_395 +395 val_395 395 val_395 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +397 val_397 397 val_397 +397 val_397 397 val_397 +397 val_397 397 val_397 +397 val_397 397 val_397 +399 val_399 399 val_399 +399 val_399 399 val_399 +399 val_399 399 val_399 +399 val_399 399 val_399 +400 val_400 400 val_400 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +402 val_402 402 val_402 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +404 val_404 404 val_404 +404 val_404 404 val_404 +404 val_404 404 val_404 +404 val_404 404 val_404 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +407 val_407 407 val_407 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +411 val_411 411 val_411 +413 val_413 413 val_413 +413 val_413 413 val_413 +413 val_413 413 val_413 +413 val_413 413 val_413 +414 val_414 414 val_414 +414 val_414 414 val_414 +414 val_414 414 val_414 +414 val_414 414 val_414 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +418 val_418 418 val_418 +419 val_419 419 val_419 +421 val_421 421 val_421 +424 val_424 424 val_424 +424 val_424 424 val_424 +424 val_424 424 val_424 +424 val_424 424 val_424 +427 val_427 427 val_427 +429 val_429 429 val_429 +429 val_429 429 val_429 +429 val_429 429 val_429 +429 val_429 429 val_429 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +432 val_432 432 val_432 +435 val_435 435 val_435 +436 val_436 436 val_436 +437 val_437 437 val_437 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +439 val_439 439 val_439 +439 val_439 439 val_439 +439 val_439 439 val_439 +439 val_439 439 val_439 +443 val_443 443 val_443 +444 val_444 444 val_444 +446 val_446 446 val_446 +448 val_448 448 val_448 +449 val_449 449 val_449 +452 val_452 452 val_452 +453 val_453 453 val_453 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +455 val_455 455 val_455 +457 val_457 457 val_457 +458 val_458 458 val_458 +458 val_458 458 val_458 +458 val_458 458 val_458 +458 val_458 458 val_458 +459 val_459 459 val_459 +459 val_459 459 val_459 +459 val_459 459 val_459 +459 val_459 459 val_459 +460 val_460 460 val_460 +462 val_462 462 val_462 +462 val_462 462 val_462 +462 val_462 462 val_462 +462 val_462 462 val_462 +463 val_463 463 val_463 +463 val_463 463 val_463 +463 val_463 463 val_463 +463 val_463 463 val_463 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +467 val_467 467 val_467 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +470 val_470 470 val_470 +472 val_472 472 val_472 +475 val_475 475 val_475 +477 val_477 477 val_477 +478 val_478 478 val_478 +478 val_478 478 val_478 +478 val_478 478 val_478 +478 val_478 478 val_478 +479 val_479 479 val_479 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +481 val_481 481 val_481 +482 val_482 482 val_482 +483 val_483 483 val_483 +484 val_484 484 val_484 +485 val_485 485 val_485 +487 val_487 487 val_487 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +490 val_490 490 val_490 +491 val_491 491 val_491 +492 val_492 492 val_492 +492 val_492 492 val_492 +492 val_492 492 val_492 +492 val_492 492 val_492 +493 val_493 493 val_493 +494 val_494 494 val_494 +495 val_495 495 val_495 +496 val_496 496 val_496 +497 val_497 497 val_497 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-22-c673bbec2ee476eea9609be3d3555438 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-22-c673bbec2ee476eea9609be3d3555438 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-23-449cb60e6537ba0810ea6879a7351a1e b/sql/hive/src/test/resources/golden/smb_mapjoin_6-23-449cb60e6537ba0810ea6879a7351a1e new file mode 100644 index 0000000000000..0e17d179f4167 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-23-449cb60e6537ba0810ea6879a7351a1e @@ -0,0 +1 @@ +278697 278697 101852390308 101852390308 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-24-aa5f237005fb69b3f52808c80b4a276a b/sql/hive/src/test/resources/golden/smb_mapjoin_6-24-aa5f237005fb69b3f52808c80b4a276a new file mode 100644 index 0000000000000..0e17d179f4167 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-24-aa5f237005fb69b3f52808c80b4a276a @@ -0,0 +1 @@ +278697 278697 101852390308 101852390308 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-25-e3552fabb4c9920d9bb964da5b907b46 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-25-e3552fabb4c9920d9bb964da5b907b46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-26-5796487563f66866051a86f9c8cee822 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-26-5796487563f66866051a86f9c8cee822 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-27-efb64856d7a3cadd61eb1e2c61197c8 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-27-efb64856d7a3cadd61eb1e2c61197c8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-28-9715967e9a70084a4600ccac53dfac60 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-28-9715967e9a70084a4600ccac53dfac60 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-29-495784f95b09cffa052805c6b9af9216 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-29-495784f95b09cffa052805c6b9af9216 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-3-2bfc6b33655f683fa9bd62ced5dab230 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-3-2bfc6b33655f683fa9bd62ced5dab230 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-30-2cd20a399ce104eb7fb5881e59238196 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-30-2cd20a399ce104eb7fb5881e59238196 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-4-6eb37be25535293ca377a47c3e08bffa b/sql/hive/src/test/resources/golden/smb_mapjoin_6-4-6eb37be25535293ca377a47c3e08bffa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-5-ab8df8b65b35c17c45cac15468a4042c b/sql/hive/src/test/resources/golden/smb_mapjoin_6-5-ab8df8b65b35c17c45cac15468a4042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-6-ae6abe879c8ee2b101c7d78da0770dd1 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-6-ae6abe879c8ee2b101c7d78da0770dd1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-7-d7835ed6fd3add8aa8d65ef196798cc4 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-7-d7835ed6fd3add8aa8d65ef196798cc4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-8-2e0e607c192151d31a6e6513fba79ef3 b/sql/hive/src/test/resources/golden/smb_mapjoin_6-8-2e0e607c192151d31a6e6513fba79ef3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_6-9-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_6-9-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_6-9-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-0-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-0-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-0-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-1-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-1-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-1-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-10-2e0e607c192151d31a6e6513fba79ef3 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-10-2e0e607c192151d31a6e6513fba79ef3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-11-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_7-11-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-11-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-12-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-12-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-12-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-13-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_7-13-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-13-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-14-5e1546e0e05871eb1a6b8eb957252542 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-14-5e1546e0e05871eb1a6b8eb957252542 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-15-5e1546e0e05871eb1a6b8eb957252542 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-15-5e1546e0e05871eb1a6b8eb957252542 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-16-18d2a689883588ae3c24b2810663ab80 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-16-18d2a689883588ae3c24b2810663ab80 new file mode 100644 index 0000000000000..4cd5eefea2a45 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-16-18d2a689883588ae3c24b2810663ab80 @@ -0,0 +1,500 @@ +NULL NULL 0 val_0 +NULL NULL 0 val_0 +NULL NULL 0 val_0 +NULL NULL 2 val_2 +NULL NULL 4 val_4 +NULL NULL 5 val_5 +NULL NULL 5 val_5 +NULL NULL 5 val_5 +NULL NULL 8 val_8 +NULL NULL 9 val_9 +NULL NULL 10 val_10 +NULL NULL 11 val_11 +NULL NULL 12 val_12 +NULL NULL 12 val_12 +NULL NULL 15 val_15 +NULL NULL 15 val_15 +NULL NULL 17 val_17 +NULL NULL 18 val_18 +NULL NULL 18 val_18 +NULL NULL 19 val_19 +NULL NULL 20 val_20 +NULL NULL 24 val_24 +NULL NULL 24 val_24 +NULL NULL 26 val_26 +NULL NULL 26 val_26 +NULL NULL 27 val_27 +NULL NULL 28 val_28 +NULL NULL 30 val_30 +NULL NULL 33 val_33 +NULL NULL 34 val_34 +NULL NULL 35 val_35 +NULL NULL 35 val_35 +NULL NULL 35 val_35 +NULL NULL 37 val_37 +NULL NULL 37 val_37 +NULL NULL 41 val_41 +NULL NULL 42 val_42 +NULL NULL 42 val_42 +NULL NULL 43 val_43 +NULL NULL 44 val_44 +NULL NULL 47 val_47 +NULL NULL 51 val_51 +NULL NULL 51 val_51 +NULL NULL 53 val_53 +NULL NULL 54 val_54 +NULL NULL 57 val_57 +NULL NULL 58 val_58 +NULL NULL 58 val_58 +NULL NULL 64 val_64 +NULL NULL 65 val_65 +NULL NULL 66 val_66 +NULL NULL 67 val_67 +NULL NULL 67 val_67 +NULL NULL 69 val_69 +NULL NULL 70 val_70 +NULL NULL 70 val_70 +NULL NULL 70 val_70 +NULL NULL 72 val_72 +NULL NULL 72 val_72 +NULL NULL 74 val_74 +NULL NULL 76 val_76 +NULL NULL 76 val_76 +NULL NULL 77 val_77 +NULL NULL 78 val_78 +NULL NULL 80 val_80 +NULL NULL 82 val_82 +NULL NULL 83 val_83 +NULL NULL 83 val_83 +NULL NULL 84 val_84 +NULL NULL 84 val_84 +NULL NULL 85 val_85 +NULL NULL 86 val_86 +NULL NULL 87 val_87 +NULL NULL 90 val_90 +NULL NULL 90 val_90 +NULL NULL 90 val_90 +NULL NULL 92 val_92 +NULL NULL 95 val_95 +NULL NULL 95 val_95 +NULL NULL 96 val_96 +NULL NULL 97 val_97 +NULL NULL 97 val_97 +NULL NULL 98 val_98 +NULL NULL 98 val_98 +NULL NULL 100 val_100 +NULL NULL 100 val_100 +NULL NULL 103 val_103 +NULL NULL 103 val_103 +NULL NULL 104 val_104 +NULL NULL 104 val_104 +NULL NULL 105 val_105 +NULL NULL 111 val_111 +NULL NULL 113 val_113 +NULL NULL 113 val_113 +NULL NULL 114 val_114 +NULL NULL 116 val_116 +NULL NULL 118 val_118 +NULL NULL 118 val_118 +NULL NULL 119 val_119 +NULL NULL 119 val_119 +NULL NULL 119 val_119 +NULL NULL 120 val_120 +NULL NULL 120 val_120 +NULL NULL 125 val_125 +NULL NULL 125 val_125 +NULL NULL 126 val_126 +NULL NULL 128 val_128 +NULL NULL 128 val_128 +NULL NULL 128 val_128 +NULL NULL 129 val_129 +NULL NULL 129 val_129 +NULL NULL 131 val_131 +NULL NULL 133 val_133 +NULL NULL 134 val_134 +NULL NULL 134 val_134 +NULL NULL 136 val_136 +NULL NULL 137 val_137 +NULL NULL 137 val_137 +NULL NULL 138 val_138 +NULL NULL 138 val_138 +NULL NULL 138 val_138 +NULL NULL 138 val_138 +NULL NULL 143 val_143 +NULL NULL 145 val_145 +NULL NULL 146 val_146 +NULL NULL 146 val_146 +NULL NULL 149 val_149 +NULL NULL 149 val_149 +NULL NULL 150 val_150 +NULL NULL 152 val_152 +NULL NULL 152 val_152 +NULL NULL 153 val_153 +NULL NULL 155 val_155 +NULL NULL 156 val_156 +NULL NULL 157 val_157 +NULL NULL 158 val_158 +NULL NULL 160 val_160 +NULL NULL 162 val_162 +NULL NULL 163 val_163 +NULL NULL 164 val_164 +NULL NULL 164 val_164 +NULL NULL 165 val_165 +NULL NULL 165 val_165 +NULL NULL 166 val_166 +NULL NULL 167 val_167 +NULL NULL 167 val_167 +NULL NULL 167 val_167 +NULL NULL 168 val_168 +NULL NULL 169 val_169 +NULL NULL 169 val_169 +NULL NULL 169 val_169 +NULL NULL 169 val_169 +NULL NULL 170 val_170 +NULL NULL 172 val_172 +NULL NULL 172 val_172 +NULL NULL 174 val_174 +NULL NULL 174 val_174 +NULL NULL 175 val_175 +NULL NULL 175 val_175 +NULL NULL 176 val_176 +NULL NULL 176 val_176 +NULL NULL 177 val_177 +NULL NULL 178 val_178 +NULL NULL 179 val_179 +NULL NULL 179 val_179 +NULL NULL 180 val_180 +NULL NULL 181 val_181 +NULL NULL 183 val_183 +NULL NULL 186 val_186 +NULL NULL 187 val_187 +NULL NULL 187 val_187 +NULL NULL 187 val_187 +NULL NULL 189 val_189 +NULL NULL 190 val_190 +NULL NULL 191 val_191 +NULL NULL 191 val_191 +NULL NULL 192 val_192 +NULL NULL 193 val_193 +NULL NULL 193 val_193 +NULL NULL 193 val_193 +NULL NULL 194 val_194 +NULL NULL 195 val_195 +NULL NULL 195 val_195 +NULL NULL 196 val_196 +NULL NULL 197 val_197 +NULL NULL 197 val_197 +NULL NULL 199 val_199 +NULL NULL 199 val_199 +NULL NULL 199 val_199 +NULL NULL 200 val_200 +NULL NULL 200 val_200 +NULL NULL 201 val_201 +NULL NULL 202 val_202 +NULL NULL 203 val_203 +NULL NULL 203 val_203 +NULL NULL 205 val_205 +NULL NULL 205 val_205 +NULL NULL 207 val_207 +NULL NULL 207 val_207 +NULL NULL 208 val_208 +NULL NULL 208 val_208 +NULL NULL 208 val_208 +NULL NULL 209 val_209 +NULL NULL 209 val_209 +NULL NULL 213 val_213 +NULL NULL 213 val_213 +NULL NULL 214 val_214 +NULL NULL 216 val_216 +NULL NULL 216 val_216 +NULL NULL 217 val_217 +NULL NULL 217 val_217 +NULL NULL 218 val_218 +NULL NULL 219 val_219 +NULL NULL 219 val_219 +NULL NULL 221 val_221 +NULL NULL 221 val_221 +NULL NULL 222 val_222 +NULL NULL 223 val_223 +NULL NULL 223 val_223 +NULL NULL 224 val_224 +NULL NULL 224 val_224 +NULL NULL 226 val_226 +NULL NULL 228 val_228 +NULL NULL 229 val_229 +NULL NULL 229 val_229 +NULL NULL 230 val_230 +NULL NULL 230 val_230 +NULL NULL 230 val_230 +NULL NULL 230 val_230 +NULL NULL 230 val_230 +NULL NULL 233 val_233 +NULL NULL 233 val_233 +NULL NULL 235 val_235 +NULL NULL 237 val_237 +NULL NULL 237 val_237 +NULL NULL 238 val_238 +NULL NULL 238 val_238 +NULL NULL 239 val_239 +NULL NULL 239 val_239 +NULL NULL 241 val_241 +NULL NULL 242 val_242 +NULL NULL 242 val_242 +NULL NULL 244 val_244 +NULL NULL 247 val_247 +NULL NULL 248 val_248 +NULL NULL 249 val_249 +NULL NULL 252 val_252 +NULL NULL 255 val_255 +NULL NULL 255 val_255 +NULL NULL 256 val_256 +NULL NULL 256 val_256 +NULL NULL 257 val_257 +NULL NULL 258 val_258 +NULL NULL 260 val_260 +NULL NULL 262 val_262 +NULL NULL 263 val_263 +NULL NULL 265 val_265 +NULL NULL 265 val_265 +NULL NULL 266 val_266 +NULL NULL 272 val_272 +NULL NULL 272 val_272 +NULL NULL 273 val_273 +NULL NULL 273 val_273 +NULL NULL 273 val_273 +NULL NULL 274 val_274 +NULL NULL 275 val_275 +NULL NULL 277 val_277 +NULL NULL 277 val_277 +NULL NULL 277 val_277 +NULL NULL 277 val_277 +NULL NULL 278 val_278 +NULL NULL 278 val_278 +NULL NULL 280 val_280 +NULL NULL 280 val_280 +NULL NULL 281 val_281 +NULL NULL 281 val_281 +NULL NULL 282 val_282 +NULL NULL 282 val_282 +NULL NULL 283 val_283 +NULL NULL 284 val_284 +NULL NULL 285 val_285 +NULL NULL 286 val_286 +NULL NULL 287 val_287 +NULL NULL 288 val_288 +NULL NULL 288 val_288 +NULL NULL 289 val_289 +NULL NULL 291 val_291 +NULL NULL 292 val_292 +NULL NULL 296 val_296 +NULL NULL 298 val_298 +NULL NULL 298 val_298 +NULL NULL 298 val_298 +NULL NULL 302 val_302 +NULL NULL 305 val_305 +NULL NULL 306 val_306 +NULL NULL 307 val_307 +NULL NULL 307 val_307 +NULL NULL 308 val_308 +NULL NULL 309 val_309 +NULL NULL 309 val_309 +NULL NULL 310 val_310 +NULL NULL 311 val_311 +NULL NULL 311 val_311 +NULL NULL 311 val_311 +NULL NULL 315 val_315 +NULL NULL 316 val_316 +NULL NULL 316 val_316 +NULL NULL 316 val_316 +NULL NULL 317 val_317 +NULL NULL 317 val_317 +NULL NULL 318 val_318 +NULL NULL 318 val_318 +NULL NULL 318 val_318 +NULL NULL 321 val_321 +NULL NULL 321 val_321 +NULL NULL 322 val_322 +NULL NULL 322 val_322 +NULL NULL 323 val_323 +NULL NULL 325 val_325 +NULL NULL 325 val_325 +NULL NULL 327 val_327 +NULL NULL 327 val_327 +NULL NULL 327 val_327 +NULL NULL 331 val_331 +NULL NULL 331 val_331 +NULL NULL 332 val_332 +NULL NULL 333 val_333 +NULL NULL 333 val_333 +NULL NULL 335 val_335 +NULL NULL 336 val_336 +NULL NULL 338 val_338 +NULL NULL 339 val_339 +NULL NULL 341 val_341 +NULL NULL 342 val_342 +NULL NULL 342 val_342 +NULL NULL 344 val_344 +NULL NULL 344 val_344 +NULL NULL 345 val_345 +NULL NULL 348 val_348 +NULL NULL 348 val_348 +NULL NULL 348 val_348 +NULL NULL 348 val_348 +NULL NULL 348 val_348 +NULL NULL 351 val_351 +NULL NULL 353 val_353 +NULL NULL 353 val_353 +NULL NULL 356 val_356 +NULL NULL 360 val_360 +NULL NULL 362 val_362 +NULL NULL 364 val_364 +NULL NULL 365 val_365 +NULL NULL 366 val_366 +NULL NULL 367 val_367 +NULL NULL 367 val_367 +NULL NULL 368 val_368 +NULL NULL 369 val_369 +NULL NULL 369 val_369 +NULL NULL 369 val_369 +NULL NULL 373 val_373 +NULL NULL 374 val_374 +NULL NULL 375 val_375 +NULL NULL 377 val_377 +NULL NULL 378 val_378 +NULL NULL 379 val_379 +NULL NULL 382 val_382 +NULL NULL 382 val_382 +NULL NULL 384 val_384 +NULL NULL 384 val_384 +NULL NULL 384 val_384 +NULL NULL 386 val_386 +NULL NULL 389 val_389 +NULL NULL 392 val_392 +NULL NULL 393 val_393 +NULL NULL 394 val_394 +NULL NULL 395 val_395 +NULL NULL 395 val_395 +NULL NULL 396 val_396 +NULL NULL 396 val_396 +NULL NULL 396 val_396 +NULL NULL 397 val_397 +NULL NULL 397 val_397 +NULL NULL 399 val_399 +NULL NULL 399 val_399 +NULL NULL 400 val_400 +NULL NULL 401 val_401 +NULL NULL 401 val_401 +NULL NULL 401 val_401 +NULL NULL 401 val_401 +NULL NULL 401 val_401 +NULL NULL 402 val_402 +NULL NULL 403 val_403 +NULL NULL 403 val_403 +NULL NULL 403 val_403 +NULL NULL 404 val_404 +NULL NULL 404 val_404 +NULL NULL 406 val_406 +NULL NULL 406 val_406 +NULL NULL 406 val_406 +NULL NULL 406 val_406 +NULL NULL 407 val_407 +NULL NULL 409 val_409 +NULL NULL 409 val_409 +NULL NULL 409 val_409 +NULL NULL 411 val_411 +NULL NULL 413 val_413 +NULL NULL 413 val_413 +NULL NULL 414 val_414 +NULL NULL 414 val_414 +NULL NULL 417 val_417 +NULL NULL 417 val_417 +NULL NULL 417 val_417 +NULL NULL 418 val_418 +NULL NULL 419 val_419 +NULL NULL 421 val_421 +NULL NULL 424 val_424 +NULL NULL 424 val_424 +NULL NULL 427 val_427 +NULL NULL 429 val_429 +NULL NULL 429 val_429 +NULL NULL 430 val_430 +NULL NULL 430 val_430 +NULL NULL 430 val_430 +NULL NULL 431 val_431 +NULL NULL 431 val_431 +NULL NULL 431 val_431 +NULL NULL 432 val_432 +NULL NULL 435 val_435 +NULL NULL 436 val_436 +NULL NULL 437 val_437 +NULL NULL 438 val_438 +NULL NULL 438 val_438 +NULL NULL 438 val_438 +NULL NULL 439 val_439 +NULL NULL 439 val_439 +NULL NULL 443 val_443 +NULL NULL 444 val_444 +NULL NULL 446 val_446 +NULL NULL 448 val_448 +NULL NULL 449 val_449 +NULL NULL 452 val_452 +NULL NULL 453 val_453 +NULL NULL 454 val_454 +NULL NULL 454 val_454 +NULL NULL 454 val_454 +NULL NULL 455 val_455 +NULL NULL 457 val_457 +NULL NULL 458 val_458 +NULL NULL 458 val_458 +NULL NULL 459 val_459 +NULL NULL 459 val_459 +NULL NULL 460 val_460 +NULL NULL 462 val_462 +NULL NULL 462 val_462 +NULL NULL 463 val_463 +NULL NULL 463 val_463 +NULL NULL 466 val_466 +NULL NULL 466 val_466 +NULL NULL 466 val_466 +NULL NULL 467 val_467 +NULL NULL 468 val_468 +NULL NULL 468 val_468 +NULL NULL 468 val_468 +NULL NULL 468 val_468 +NULL NULL 469 val_469 +NULL NULL 469 val_469 +NULL NULL 469 val_469 +NULL NULL 469 val_469 +NULL NULL 469 val_469 +NULL NULL 470 val_470 +NULL NULL 472 val_472 +NULL NULL 475 val_475 +NULL NULL 477 val_477 +NULL NULL 478 val_478 +NULL NULL 478 val_478 +NULL NULL 479 val_479 +NULL NULL 480 val_480 +NULL NULL 480 val_480 +NULL NULL 480 val_480 +NULL NULL 481 val_481 +NULL NULL 482 val_482 +NULL NULL 483 val_483 +NULL NULL 484 val_484 +NULL NULL 485 val_485 +NULL NULL 487 val_487 +NULL NULL 489 val_489 +NULL NULL 489 val_489 +NULL NULL 489 val_489 +NULL NULL 489 val_489 +NULL NULL 490 val_490 +NULL NULL 491 val_491 +NULL NULL 492 val_492 +NULL NULL 492 val_492 +NULL NULL 493 val_493 +NULL NULL 494 val_494 +NULL NULL 495 val_495 +NULL NULL 496 val_496 +NULL NULL 497 val_497 +NULL NULL 498 val_498 +NULL NULL 498 val_498 +NULL NULL 498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-17-2ff32fe07d35a4d44b640f3ded5767fd b/sql/hive/src/test/resources/golden/smb_mapjoin_7-17-2ff32fe07d35a4d44b640f3ded5767fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-18-1a4ee3f64c4a9bb1689234d30babb4a b/sql/hive/src/test/resources/golden/smb_mapjoin_7-18-1a4ee3f64c4a9bb1689234d30babb4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-19-ab46164010b27950c293f32fb89f9f8a b/sql/hive/src/test/resources/golden/smb_mapjoin_7-19-ab46164010b27950c293f32fb89f9f8a new file mode 100644 index 0000000000000..4cd5eefea2a45 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-19-ab46164010b27950c293f32fb89f9f8a @@ -0,0 +1,500 @@ +NULL NULL 0 val_0 +NULL NULL 0 val_0 +NULL NULL 0 val_0 +NULL NULL 2 val_2 +NULL NULL 4 val_4 +NULL NULL 5 val_5 +NULL NULL 5 val_5 +NULL NULL 5 val_5 +NULL NULL 8 val_8 +NULL NULL 9 val_9 +NULL NULL 10 val_10 +NULL NULL 11 val_11 +NULL NULL 12 val_12 +NULL NULL 12 val_12 +NULL NULL 15 val_15 +NULL NULL 15 val_15 +NULL NULL 17 val_17 +NULL NULL 18 val_18 +NULL NULL 18 val_18 +NULL NULL 19 val_19 +NULL NULL 20 val_20 +NULL NULL 24 val_24 +NULL NULL 24 val_24 +NULL NULL 26 val_26 +NULL NULL 26 val_26 +NULL NULL 27 val_27 +NULL NULL 28 val_28 +NULL NULL 30 val_30 +NULL NULL 33 val_33 +NULL NULL 34 val_34 +NULL NULL 35 val_35 +NULL NULL 35 val_35 +NULL NULL 35 val_35 +NULL NULL 37 val_37 +NULL NULL 37 val_37 +NULL NULL 41 val_41 +NULL NULL 42 val_42 +NULL NULL 42 val_42 +NULL NULL 43 val_43 +NULL NULL 44 val_44 +NULL NULL 47 val_47 +NULL NULL 51 val_51 +NULL NULL 51 val_51 +NULL NULL 53 val_53 +NULL NULL 54 val_54 +NULL NULL 57 val_57 +NULL NULL 58 val_58 +NULL NULL 58 val_58 +NULL NULL 64 val_64 +NULL NULL 65 val_65 +NULL NULL 66 val_66 +NULL NULL 67 val_67 +NULL NULL 67 val_67 +NULL NULL 69 val_69 +NULL NULL 70 val_70 +NULL NULL 70 val_70 +NULL NULL 70 val_70 +NULL NULL 72 val_72 +NULL NULL 72 val_72 +NULL NULL 74 val_74 +NULL NULL 76 val_76 +NULL NULL 76 val_76 +NULL NULL 77 val_77 +NULL NULL 78 val_78 +NULL NULL 80 val_80 +NULL NULL 82 val_82 +NULL NULL 83 val_83 +NULL NULL 83 val_83 +NULL NULL 84 val_84 +NULL NULL 84 val_84 +NULL NULL 85 val_85 +NULL NULL 86 val_86 +NULL NULL 87 val_87 +NULL NULL 90 val_90 +NULL NULL 90 val_90 +NULL NULL 90 val_90 +NULL NULL 92 val_92 +NULL NULL 95 val_95 +NULL NULL 95 val_95 +NULL NULL 96 val_96 +NULL NULL 97 val_97 +NULL NULL 97 val_97 +NULL NULL 98 val_98 +NULL NULL 98 val_98 +NULL NULL 100 val_100 +NULL NULL 100 val_100 +NULL NULL 103 val_103 +NULL NULL 103 val_103 +NULL NULL 104 val_104 +NULL NULL 104 val_104 +NULL NULL 105 val_105 +NULL NULL 111 val_111 +NULL NULL 113 val_113 +NULL NULL 113 val_113 +NULL NULL 114 val_114 +NULL NULL 116 val_116 +NULL NULL 118 val_118 +NULL NULL 118 val_118 +NULL NULL 119 val_119 +NULL NULL 119 val_119 +NULL NULL 119 val_119 +NULL NULL 120 val_120 +NULL NULL 120 val_120 +NULL NULL 125 val_125 +NULL NULL 125 val_125 +NULL NULL 126 val_126 +NULL NULL 128 val_128 +NULL NULL 128 val_128 +NULL NULL 128 val_128 +NULL NULL 129 val_129 +NULL NULL 129 val_129 +NULL NULL 131 val_131 +NULL NULL 133 val_133 +NULL NULL 134 val_134 +NULL NULL 134 val_134 +NULL NULL 136 val_136 +NULL NULL 137 val_137 +NULL NULL 137 val_137 +NULL NULL 138 val_138 +NULL NULL 138 val_138 +NULL NULL 138 val_138 +NULL NULL 138 val_138 +NULL NULL 143 val_143 +NULL NULL 145 val_145 +NULL NULL 146 val_146 +NULL NULL 146 val_146 +NULL NULL 149 val_149 +NULL NULL 149 val_149 +NULL NULL 150 val_150 +NULL NULL 152 val_152 +NULL NULL 152 val_152 +NULL NULL 153 val_153 +NULL NULL 155 val_155 +NULL NULL 156 val_156 +NULL NULL 157 val_157 +NULL NULL 158 val_158 +NULL NULL 160 val_160 +NULL NULL 162 val_162 +NULL NULL 163 val_163 +NULL NULL 164 val_164 +NULL NULL 164 val_164 +NULL NULL 165 val_165 +NULL NULL 165 val_165 +NULL NULL 166 val_166 +NULL NULL 167 val_167 +NULL NULL 167 val_167 +NULL NULL 167 val_167 +NULL NULL 168 val_168 +NULL NULL 169 val_169 +NULL NULL 169 val_169 +NULL NULL 169 val_169 +NULL NULL 169 val_169 +NULL NULL 170 val_170 +NULL NULL 172 val_172 +NULL NULL 172 val_172 +NULL NULL 174 val_174 +NULL NULL 174 val_174 +NULL NULL 175 val_175 +NULL NULL 175 val_175 +NULL NULL 176 val_176 +NULL NULL 176 val_176 +NULL NULL 177 val_177 +NULL NULL 178 val_178 +NULL NULL 179 val_179 +NULL NULL 179 val_179 +NULL NULL 180 val_180 +NULL NULL 181 val_181 +NULL NULL 183 val_183 +NULL NULL 186 val_186 +NULL NULL 187 val_187 +NULL NULL 187 val_187 +NULL NULL 187 val_187 +NULL NULL 189 val_189 +NULL NULL 190 val_190 +NULL NULL 191 val_191 +NULL NULL 191 val_191 +NULL NULL 192 val_192 +NULL NULL 193 val_193 +NULL NULL 193 val_193 +NULL NULL 193 val_193 +NULL NULL 194 val_194 +NULL NULL 195 val_195 +NULL NULL 195 val_195 +NULL NULL 196 val_196 +NULL NULL 197 val_197 +NULL NULL 197 val_197 +NULL NULL 199 val_199 +NULL NULL 199 val_199 +NULL NULL 199 val_199 +NULL NULL 200 val_200 +NULL NULL 200 val_200 +NULL NULL 201 val_201 +NULL NULL 202 val_202 +NULL NULL 203 val_203 +NULL NULL 203 val_203 +NULL NULL 205 val_205 +NULL NULL 205 val_205 +NULL NULL 207 val_207 +NULL NULL 207 val_207 +NULL NULL 208 val_208 +NULL NULL 208 val_208 +NULL NULL 208 val_208 +NULL NULL 209 val_209 +NULL NULL 209 val_209 +NULL NULL 213 val_213 +NULL NULL 213 val_213 +NULL NULL 214 val_214 +NULL NULL 216 val_216 +NULL NULL 216 val_216 +NULL NULL 217 val_217 +NULL NULL 217 val_217 +NULL NULL 218 val_218 +NULL NULL 219 val_219 +NULL NULL 219 val_219 +NULL NULL 221 val_221 +NULL NULL 221 val_221 +NULL NULL 222 val_222 +NULL NULL 223 val_223 +NULL NULL 223 val_223 +NULL NULL 224 val_224 +NULL NULL 224 val_224 +NULL NULL 226 val_226 +NULL NULL 228 val_228 +NULL NULL 229 val_229 +NULL NULL 229 val_229 +NULL NULL 230 val_230 +NULL NULL 230 val_230 +NULL NULL 230 val_230 +NULL NULL 230 val_230 +NULL NULL 230 val_230 +NULL NULL 233 val_233 +NULL NULL 233 val_233 +NULL NULL 235 val_235 +NULL NULL 237 val_237 +NULL NULL 237 val_237 +NULL NULL 238 val_238 +NULL NULL 238 val_238 +NULL NULL 239 val_239 +NULL NULL 239 val_239 +NULL NULL 241 val_241 +NULL NULL 242 val_242 +NULL NULL 242 val_242 +NULL NULL 244 val_244 +NULL NULL 247 val_247 +NULL NULL 248 val_248 +NULL NULL 249 val_249 +NULL NULL 252 val_252 +NULL NULL 255 val_255 +NULL NULL 255 val_255 +NULL NULL 256 val_256 +NULL NULL 256 val_256 +NULL NULL 257 val_257 +NULL NULL 258 val_258 +NULL NULL 260 val_260 +NULL NULL 262 val_262 +NULL NULL 263 val_263 +NULL NULL 265 val_265 +NULL NULL 265 val_265 +NULL NULL 266 val_266 +NULL NULL 272 val_272 +NULL NULL 272 val_272 +NULL NULL 273 val_273 +NULL NULL 273 val_273 +NULL NULL 273 val_273 +NULL NULL 274 val_274 +NULL NULL 275 val_275 +NULL NULL 277 val_277 +NULL NULL 277 val_277 +NULL NULL 277 val_277 +NULL NULL 277 val_277 +NULL NULL 278 val_278 +NULL NULL 278 val_278 +NULL NULL 280 val_280 +NULL NULL 280 val_280 +NULL NULL 281 val_281 +NULL NULL 281 val_281 +NULL NULL 282 val_282 +NULL NULL 282 val_282 +NULL NULL 283 val_283 +NULL NULL 284 val_284 +NULL NULL 285 val_285 +NULL NULL 286 val_286 +NULL NULL 287 val_287 +NULL NULL 288 val_288 +NULL NULL 288 val_288 +NULL NULL 289 val_289 +NULL NULL 291 val_291 +NULL NULL 292 val_292 +NULL NULL 296 val_296 +NULL NULL 298 val_298 +NULL NULL 298 val_298 +NULL NULL 298 val_298 +NULL NULL 302 val_302 +NULL NULL 305 val_305 +NULL NULL 306 val_306 +NULL NULL 307 val_307 +NULL NULL 307 val_307 +NULL NULL 308 val_308 +NULL NULL 309 val_309 +NULL NULL 309 val_309 +NULL NULL 310 val_310 +NULL NULL 311 val_311 +NULL NULL 311 val_311 +NULL NULL 311 val_311 +NULL NULL 315 val_315 +NULL NULL 316 val_316 +NULL NULL 316 val_316 +NULL NULL 316 val_316 +NULL NULL 317 val_317 +NULL NULL 317 val_317 +NULL NULL 318 val_318 +NULL NULL 318 val_318 +NULL NULL 318 val_318 +NULL NULL 321 val_321 +NULL NULL 321 val_321 +NULL NULL 322 val_322 +NULL NULL 322 val_322 +NULL NULL 323 val_323 +NULL NULL 325 val_325 +NULL NULL 325 val_325 +NULL NULL 327 val_327 +NULL NULL 327 val_327 +NULL NULL 327 val_327 +NULL NULL 331 val_331 +NULL NULL 331 val_331 +NULL NULL 332 val_332 +NULL NULL 333 val_333 +NULL NULL 333 val_333 +NULL NULL 335 val_335 +NULL NULL 336 val_336 +NULL NULL 338 val_338 +NULL NULL 339 val_339 +NULL NULL 341 val_341 +NULL NULL 342 val_342 +NULL NULL 342 val_342 +NULL NULL 344 val_344 +NULL NULL 344 val_344 +NULL NULL 345 val_345 +NULL NULL 348 val_348 +NULL NULL 348 val_348 +NULL NULL 348 val_348 +NULL NULL 348 val_348 +NULL NULL 348 val_348 +NULL NULL 351 val_351 +NULL NULL 353 val_353 +NULL NULL 353 val_353 +NULL NULL 356 val_356 +NULL NULL 360 val_360 +NULL NULL 362 val_362 +NULL NULL 364 val_364 +NULL NULL 365 val_365 +NULL NULL 366 val_366 +NULL NULL 367 val_367 +NULL NULL 367 val_367 +NULL NULL 368 val_368 +NULL NULL 369 val_369 +NULL NULL 369 val_369 +NULL NULL 369 val_369 +NULL NULL 373 val_373 +NULL NULL 374 val_374 +NULL NULL 375 val_375 +NULL NULL 377 val_377 +NULL NULL 378 val_378 +NULL NULL 379 val_379 +NULL NULL 382 val_382 +NULL NULL 382 val_382 +NULL NULL 384 val_384 +NULL NULL 384 val_384 +NULL NULL 384 val_384 +NULL NULL 386 val_386 +NULL NULL 389 val_389 +NULL NULL 392 val_392 +NULL NULL 393 val_393 +NULL NULL 394 val_394 +NULL NULL 395 val_395 +NULL NULL 395 val_395 +NULL NULL 396 val_396 +NULL NULL 396 val_396 +NULL NULL 396 val_396 +NULL NULL 397 val_397 +NULL NULL 397 val_397 +NULL NULL 399 val_399 +NULL NULL 399 val_399 +NULL NULL 400 val_400 +NULL NULL 401 val_401 +NULL NULL 401 val_401 +NULL NULL 401 val_401 +NULL NULL 401 val_401 +NULL NULL 401 val_401 +NULL NULL 402 val_402 +NULL NULL 403 val_403 +NULL NULL 403 val_403 +NULL NULL 403 val_403 +NULL NULL 404 val_404 +NULL NULL 404 val_404 +NULL NULL 406 val_406 +NULL NULL 406 val_406 +NULL NULL 406 val_406 +NULL NULL 406 val_406 +NULL NULL 407 val_407 +NULL NULL 409 val_409 +NULL NULL 409 val_409 +NULL NULL 409 val_409 +NULL NULL 411 val_411 +NULL NULL 413 val_413 +NULL NULL 413 val_413 +NULL NULL 414 val_414 +NULL NULL 414 val_414 +NULL NULL 417 val_417 +NULL NULL 417 val_417 +NULL NULL 417 val_417 +NULL NULL 418 val_418 +NULL NULL 419 val_419 +NULL NULL 421 val_421 +NULL NULL 424 val_424 +NULL NULL 424 val_424 +NULL NULL 427 val_427 +NULL NULL 429 val_429 +NULL NULL 429 val_429 +NULL NULL 430 val_430 +NULL NULL 430 val_430 +NULL NULL 430 val_430 +NULL NULL 431 val_431 +NULL NULL 431 val_431 +NULL NULL 431 val_431 +NULL NULL 432 val_432 +NULL NULL 435 val_435 +NULL NULL 436 val_436 +NULL NULL 437 val_437 +NULL NULL 438 val_438 +NULL NULL 438 val_438 +NULL NULL 438 val_438 +NULL NULL 439 val_439 +NULL NULL 439 val_439 +NULL NULL 443 val_443 +NULL NULL 444 val_444 +NULL NULL 446 val_446 +NULL NULL 448 val_448 +NULL NULL 449 val_449 +NULL NULL 452 val_452 +NULL NULL 453 val_453 +NULL NULL 454 val_454 +NULL NULL 454 val_454 +NULL NULL 454 val_454 +NULL NULL 455 val_455 +NULL NULL 457 val_457 +NULL NULL 458 val_458 +NULL NULL 458 val_458 +NULL NULL 459 val_459 +NULL NULL 459 val_459 +NULL NULL 460 val_460 +NULL NULL 462 val_462 +NULL NULL 462 val_462 +NULL NULL 463 val_463 +NULL NULL 463 val_463 +NULL NULL 466 val_466 +NULL NULL 466 val_466 +NULL NULL 466 val_466 +NULL NULL 467 val_467 +NULL NULL 468 val_468 +NULL NULL 468 val_468 +NULL NULL 468 val_468 +NULL NULL 468 val_468 +NULL NULL 469 val_469 +NULL NULL 469 val_469 +NULL NULL 469 val_469 +NULL NULL 469 val_469 +NULL NULL 469 val_469 +NULL NULL 470 val_470 +NULL NULL 472 val_472 +NULL NULL 475 val_475 +NULL NULL 477 val_477 +NULL NULL 478 val_478 +NULL NULL 478 val_478 +NULL NULL 479 val_479 +NULL NULL 480 val_480 +NULL NULL 480 val_480 +NULL NULL 480 val_480 +NULL NULL 481 val_481 +NULL NULL 482 val_482 +NULL NULL 483 val_483 +NULL NULL 484 val_484 +NULL NULL 485 val_485 +NULL NULL 487 val_487 +NULL NULL 489 val_489 +NULL NULL 489 val_489 +NULL NULL 489 val_489 +NULL NULL 489 val_489 +NULL NULL 490 val_490 +NULL NULL 491 val_491 +NULL NULL 492 val_492 +NULL NULL 492 val_492 +NULL NULL 493 val_493 +NULL NULL 494 val_494 +NULL NULL 495 val_495 +NULL NULL 496 val_496 +NULL NULL 497 val_497 +NULL NULL 498 val_498 +NULL NULL 498 val_498 +NULL NULL 498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-20-35dcb5bae00dc0cc7afa6663a5126fe6 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-20-35dcb5bae00dc0cc7afa6663a5126fe6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-21-449cb60e6537ba0810ea6879a7351a1e b/sql/hive/src/test/resources/golden/smb_mapjoin_7-21-449cb60e6537ba0810ea6879a7351a1e new file mode 100644 index 0000000000000..ca97f45c90026 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-21-449cb60e6537ba0810ea6879a7351a1e @@ -0,0 +1 @@ +0 130091 0 36210398070 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-22-aa5f237005fb69b3f52808c80b4a276a b/sql/hive/src/test/resources/golden/smb_mapjoin_7-22-aa5f237005fb69b3f52808c80b4a276a new file mode 100644 index 0000000000000..ca97f45c90026 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-22-aa5f237005fb69b3f52808c80b4a276a @@ -0,0 +1 @@ +0 130091 0 36210398070 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-23-1b6140f49d49eb1195c8551270b97ff b/sql/hive/src/test/resources/golden/smb_mapjoin_7-23-1b6140f49d49eb1195c8551270b97ff new file mode 100644 index 0000000000000..ca97f45c90026 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_7-23-1b6140f49d49eb1195c8551270b97ff @@ -0,0 +1 @@ +0 130091 0 36210398070 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-3-e666afe7d9a532114a6133b7dc7df5aa b/sql/hive/src/test/resources/golden/smb_mapjoin_7-3-e666afe7d9a532114a6133b7dc7df5aa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-4-85d6ffbe24f95df3128dee0e21a032de b/sql/hive/src/test/resources/golden/smb_mapjoin_7-4-85d6ffbe24f95df3128dee0e21a032de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-5-ab8df8b65b35c17c45cac15468a4042c b/sql/hive/src/test/resources/golden/smb_mapjoin_7-5-ab8df8b65b35c17c45cac15468a4042c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-6-8613f4d139c1ccdbb3be9b7af0e24ad4 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-6-8613f4d139c1ccdbb3be9b7af0e24ad4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-7-ae6abe879c8ee2b101c7d78da0770dd1 b/sql/hive/src/test/resources/golden/smb_mapjoin_7-7-ae6abe879c8ee2b101c7d78da0770dd1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-8-5f141437e3e929cde1b2e5d8458b46eb b/sql/hive/src/test/resources/golden/smb_mapjoin_7-8-5f141437e3e929cde1b2e5d8458b46eb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_7-9-461966a6ca78552b62bbbae4ff5abf1f b/sql/hive/src/test/resources/golden/smb_mapjoin_7-9-461966a6ca78552b62bbbae4ff5abf1f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-0-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/smb_mapjoin_8-0-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_8-0-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-1-e39f59c35ebbe686a18d45d9d8bf3ab0 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-1-e39f59c35ebbe686a18d45d9d8bf3ab0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_8-1-e39f59c35ebbe686a18d45d9d8bf3ab0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-10-401c6c31bc3ae2cbd493a3855b829893 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-10-401c6c31bc3ae2cbd493a3855b829893 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-11-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/smb_mapjoin_8-11-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_8-11-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-12-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-12-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_8-12-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-13-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/smb_mapjoin_8-13-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_8-13-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-14-17529a2129bd485b814dde1ef894f06 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-14-17529a2129bd485b814dde1ef894f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-15-343dfc1301b9f601ae03cb15f790102b b/sql/hive/src/test/resources/golden/smb_mapjoin_8-15-343dfc1301b9f601ae03cb15f790102b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-16-e8f0853543694175095a8642e8f4fa03 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-16-e8f0853543694175095a8642e8f4fa03 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-17-5d2bab62264e462c007eb1a7a2c68866 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-17-5d2bab62264e462c007eb1a7a2c68866 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-18-17529a2129bd485b814dde1ef894f06 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-18-17529a2129bd485b814dde1ef894f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-19-343dfc1301b9f601ae03cb15f790102b b/sql/hive/src/test/resources/golden/smb_mapjoin_8-19-343dfc1301b9f601ae03cb15f790102b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-2-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-2-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_8-2-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-20-3af6a47b927b966f80a8f4c973b5f1f7 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-20-3af6a47b927b966f80a8f4c973b5f1f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-21-77ac2e23e8a8bc22274952933cd8d252 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-21-77ac2e23e8a8bc22274952933cd8d252 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-22-17529a2129bd485b814dde1ef894f06 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-22-17529a2129bd485b814dde1ef894f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-23-343dfc1301b9f601ae03cb15f790102b b/sql/hive/src/test/resources/golden/smb_mapjoin_8-23-343dfc1301b9f601ae03cb15f790102b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-24-4e7e6b8eb897ed86e28d435c4f522e7c b/sql/hive/src/test/resources/golden/smb_mapjoin_8-24-4e7e6b8eb897ed86e28d435c4f522e7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-25-722aa3855f98f940fb34368c2789bcc3 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-25-722aa3855f98f940fb34368c2789bcc3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-26-17529a2129bd485b814dde1ef894f06 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-26-17529a2129bd485b814dde1ef894f06 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-27-343dfc1301b9f601ae03cb15f790102b b/sql/hive/src/test/resources/golden/smb_mapjoin_8-27-343dfc1301b9f601ae03cb15f790102b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-28-4e7e6b8eb897ed86e28d435c4f522e7c b/sql/hive/src/test/resources/golden/smb_mapjoin_8-28-4e7e6b8eb897ed86e28d435c4f522e7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-29-722aa3855f98f940fb34368c2789bcc3 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-29-722aa3855f98f940fb34368c2789bcc3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-3-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-3-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/smb_mapjoin_8-3-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-30-19b2b8c39155340929c605494826d30e b/sql/hive/src/test/resources/golden/smb_mapjoin_8-30-19b2b8c39155340929c605494826d30e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-31-3b6920dfb64f41b1b3c3c265275b1e4a b/sql/hive/src/test/resources/golden/smb_mapjoin_8-31-3b6920dfb64f41b1b3c3c265275b1e4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-32-4e7e6b8eb897ed86e28d435c4f522e7c b/sql/hive/src/test/resources/golden/smb_mapjoin_8-32-4e7e6b8eb897ed86e28d435c4f522e7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-33-722aa3855f98f940fb34368c2789bcc3 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-33-722aa3855f98f940fb34368c2789bcc3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-34-c8132556830d31a8803b07273aa1558f b/sql/hive/src/test/resources/golden/smb_mapjoin_8-34-c8132556830d31a8803b07273aa1558f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-35-3b6920dfb64f41b1b3c3c265275b1e4a b/sql/hive/src/test/resources/golden/smb_mapjoin_8-35-3b6920dfb64f41b1b3c3c265275b1e4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-36-3af6a47b927b966f80a8f4c973b5f1f7 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-36-3af6a47b927b966f80a8f4c973b5f1f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-37-77ac2e23e8a8bc22274952933cd8d252 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-37-77ac2e23e8a8bc22274952933cd8d252 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-38-5ca28e78b53d14893518057c142f68a9 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-38-5ca28e78b53d14893518057c142f68a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-39-3b6920dfb64f41b1b3c3c265275b1e4a b/sql/hive/src/test/resources/golden/smb_mapjoin_8-39-3b6920dfb64f41b1b3c3c265275b1e4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-4-cd78ebbe3cc259ee6efb946f6b28f8d5 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-4-cd78ebbe3cc259ee6efb946f6b28f8d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-40-7aa01ceccf1bb45418145bdfc061206b b/sql/hive/src/test/resources/golden/smb_mapjoin_8-40-7aa01ceccf1bb45418145bdfc061206b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-41-8cf49829aada9587f04c9a5f334c433c b/sql/hive/src/test/resources/golden/smb_mapjoin_8-41-8cf49829aada9587f04c9a5f334c433c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-42-d656a335f0f2f311717e2d72d0a9b6c6 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-42-d656a335f0f2f311717e2d72d0a9b6c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-43-3b6920dfb64f41b1b3c3c265275b1e4a b/sql/hive/src/test/resources/golden/smb_mapjoin_8-43-3b6920dfb64f41b1b3c3c265275b1e4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-44-559ecfd50bcc8c1bf63024c160bcad35 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-44-559ecfd50bcc8c1bf63024c160bcad35 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-45-8cf49829aada9587f04c9a5f334c433c b/sql/hive/src/test/resources/golden/smb_mapjoin_8-45-8cf49829aada9587f04c9a5f334c433c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-46-d656a335f0f2f311717e2d72d0a9b6c6 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-46-d656a335f0f2f311717e2d72d0a9b6c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-47-3b6920dfb64f41b1b3c3c265275b1e4a b/sql/hive/src/test/resources/golden/smb_mapjoin_8-47-3b6920dfb64f41b1b3c3c265275b1e4a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-5-a1f5562186e9e22e18ebd42208943525 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-5-a1f5562186e9e22e18ebd42208943525 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-6-f6541fbe0d06b7ce2479fc4da9d2905a b/sql/hive/src/test/resources/golden/smb_mapjoin_8-6-f6541fbe0d06b7ce2479fc4da9d2905a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-7-35e90a6bc292cfd33b48c52460937858 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-7-35e90a6bc292cfd33b48c52460937858 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-8-81a6ffb61cbddc9900790d8b08e39e2a b/sql/hive/src/test/resources/golden/smb_mapjoin_8-8-81a6ffb61cbddc9900790d8b08e39e2a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/smb_mapjoin_8-9-bd2b5b7d4eaec7854e3051455e601109 b/sql/hive/src/test/resources/golden/smb_mapjoin_8-9-bd2b5b7d4eaec7854e3051455e601109 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort-0-eee35bbc888a705ae527625447668032 b/sql/hive/src/test/resources/golden/sort-0-eee35bbc888a705ae527625447668032 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort-1-10c8b0a592ed15eff488a71ec5909f45 b/sql/hive/src/test/resources/golden/sort-1-10c8b0a592ed15eff488a71ec5909f45 new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort-1-10c8b0a592ed15eff488a71ec5909f45 @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-0-6a35b44d4170109f641f8b68efef3719 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-0-6a35b44d4170109f641f8b68efef3719 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-1-a1c5a993c00586e79a161a5a11a6fe5c b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-1-a1c5a993c00586e79a161a5a11a6fe5c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-10-e4475ba09980280452542a0d595b8217 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-10-e4475ba09980280452542a0d595b8217 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-11-3599c6aa6da9420bdcec89c8516ffe89 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-11-3599c6aa6da9420bdcec89c8516ffe89 new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-11-3599c6aa6da9420bdcec89c8516ffe89 @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-2-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-2-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-2-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-3-6cc3ecca54fb84949a89240c50d4bd19 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-3-6cc3ecca54fb84949a89240c50d4bd19 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-4-a2e980fa0fbe8737cf256e21c784193e b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-4-a2e980fa0fbe8737cf256e21c784193e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-5-452fb932f6353effc9c458ec24dbeff9 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-5-452fb932f6353effc9c458ec24dbeff9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-6-7033dd1c3de2ad70a50a522d88533cf2 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-6-7033dd1c3de2ad70a50a522d88533cf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-7-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-7-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-7-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-8-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-8-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-8-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-9-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-9-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_1-9-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-0-6a35b44d4170109f641f8b68efef3719 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-0-6a35b44d4170109f641f8b68efef3719 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-1-a1c5a993c00586e79a161a5a11a6fe5c b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-1-a1c5a993c00586e79a161a5a11a6fe5c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-10-c0cac985e4115bf4014274b21222cac9 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-10-c0cac985e4115bf4014274b21222cac9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-11-47bc9cb5f049aaca33b394ea78578bdd b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-11-47bc9cb5f049aaca33b394ea78578bdd new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-11-47bc9cb5f049aaca33b394ea78578bdd @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-2-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-2-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-2-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-3-a38a9b74e94a1eb032a52d905d863d46 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-3-a38a9b74e94a1eb032a52d905d863d46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-4-ac10c36f76f1dcf25783bb796d182f64 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-4-ac10c36f76f1dcf25783bb796d182f64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-5-452fb932f6353effc9c458ec24dbeff9 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-5-452fb932f6353effc9c458ec24dbeff9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-6-7033dd1c3de2ad70a50a522d88533cf2 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-6-7033dd1c3de2ad70a50a522d88533cf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-7-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-7-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-7-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-8-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-8-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-8-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-9-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-9-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_2-9-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-0-6a35b44d4170109f641f8b68efef3719 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-0-6a35b44d4170109f641f8b68efef3719 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-1-a1c5a993c00586e79a161a5a11a6fe5c b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-1-a1c5a993c00586e79a161a5a11a6fe5c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-10-8aa5c2ebf5cb82b372b17954dbdb5f28 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-10-8aa5c2ebf5cb82b372b17954dbdb5f28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-11-47bc9cb5f049aaca33b394ea78578bdd b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-11-47bc9cb5f049aaca33b394ea78578bdd new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-11-47bc9cb5f049aaca33b394ea78578bdd @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-2-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-2-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-2-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-3-ce75a01507b158094bcf4441f3bfea95 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-3-ce75a01507b158094bcf4441f3bfea95 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-4-ac1b8e89e9977e535e7e499992b6ccf2 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-4-ac1b8e89e9977e535e7e499992b6ccf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-5-452fb932f6353effc9c458ec24dbeff9 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-5-452fb932f6353effc9c458ec24dbeff9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-6-7033dd1c3de2ad70a50a522d88533cf2 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-6-7033dd1c3de2ad70a50a522d88533cf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-7-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-7-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-7-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-8-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-8-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-8-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-9-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-9-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_3-9-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-0-6a35b44d4170109f641f8b68efef3719 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-0-6a35b44d4170109f641f8b68efef3719 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-1-a1c5a993c00586e79a161a5a11a6fe5c b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-1-a1c5a993c00586e79a161a5a11a6fe5c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-10-99adddf7dacf8042707a9b36062fe103 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-10-99adddf7dacf8042707a9b36062fe103 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-11-47bc9cb5f049aaca33b394ea78578bdd b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-11-47bc9cb5f049aaca33b394ea78578bdd new file mode 100644 index 0000000000000..8fdd954df9831 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-11-47bc9cb5f049aaca33b394ea78578bdd @@ -0,0 +1 @@ +22 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-2-ffe97dc8c1df3195982e38263fbe8717 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-2-ffe97dc8c1df3195982e38263fbe8717 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-2-ffe97dc8c1df3195982e38263fbe8717 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-3-ce75a01507b158094bcf4441f3bfea95 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-3-ce75a01507b158094bcf4441f3bfea95 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-4-ac10c36f76f1dcf25783bb796d182f64 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-4-ac10c36f76f1dcf25783bb796d182f64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-5-452fb932f6353effc9c458ec24dbeff9 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-5-452fb932f6353effc9c458ec24dbeff9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-6-7033dd1c3de2ad70a50a522d88533cf2 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-6-7033dd1c3de2ad70a50a522d88533cf2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-7-3b0f76816be2c1b18a2058027a19bc9f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-7-3b0f76816be2c1b18a2058027a19bc9f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-7-3b0f76816be2c1b18a2058027a19bc9f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-8-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-8-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-8-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-9-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-9-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_4-9-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-0-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-0-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-0-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-1-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-1-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-1-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-10-cd2f3c647c0821eb53e67d36b1556a4a b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-10-cd2f3c647c0821eb53e67d36b1556a4a new file mode 100644 index 0000000000000..67d892c80f493 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-10-cd2f3c647c0821eb53e67d36b1556a4a @@ -0,0 +1 @@ +1028 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-2-1a2fc4c300be7c94681bebc14f7f7deb b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-2-1a2fc4c300be7c94681bebc14f7f7deb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-3-ac35b16d0e28472c6079f4ce2ee1438d b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-3-ac35b16d0e28472c6079f4ce2ee1438d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-4-f392824f42188aac282046394108ef48 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-4-f392824f42188aac282046394108ef48 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-5-85d19fc31c2031491560208803fe63bf b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-5-85d19fc31c2031491560208803fe63bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-6-eac4a4cf29e65d7bd394bbfc57fcbfa7 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-6-eac4a4cf29e65d7bd394bbfc57fcbfa7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-7-c23ea191ee4d60c0a6252ce763b1beed b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-7-c23ea191ee4d60c0a6252ce763b1beed new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-7-c23ea191ee4d60c0a6252ce763b1beed @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-8-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-8-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-8-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-9-8b5783beaca02bba77d82adefe02c51 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_5-9-8b5783beaca02bba77d82adefe02c51 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-0-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-0-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-0-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-1-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-1-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-1-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-10-4c7a7ec8806a506693dcb7278c90cba8 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-10-4c7a7ec8806a506693dcb7278c90cba8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-11-cd2f3c647c0821eb53e67d36b1556a4a b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-11-cd2f3c647c0821eb53e67d36b1556a4a new file mode 100644 index 0000000000000..67d892c80f493 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-11-cd2f3c647c0821eb53e67d36b1556a4a @@ -0,0 +1 @@ +1028 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-3-d651a32232651880ad90428ada99358b b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-3-d651a32232651880ad90428ada99358b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-4-ac35b16d0e28472c6079f4ce2ee1438d b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-4-ac35b16d0e28472c6079f4ce2ee1438d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-5-9d2278807f7eef56292afd44b347ff64 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-5-9d2278807f7eef56292afd44b347ff64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-6-85d19fc31c2031491560208803fe63bf b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-6-85d19fc31c2031491560208803fe63bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-7-e12bb9bc44b0ed7e980ebe47517bc3e8 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-7-e12bb9bc44b0ed7e980ebe47517bc3e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-8-c23ea191ee4d60c0a6252ce763b1beed b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-8-c23ea191ee4d60c0a6252ce763b1beed new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-8-c23ea191ee4d60c0a6252ce763b1beed @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-9-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-9-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_6-9-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-0-7b4ad215fc2e75c71c6614a2b6322e8e b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-0-7b4ad215fc2e75c71c6614a2b6322e8e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-0-7b4ad215fc2e75c71c6614a2b6322e8e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-1-365488a703b0640acda73a7d7e6efa06 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-1-365488a703b0640acda73a7d7e6efa06 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-1-365488a703b0640acda73a7d7e6efa06 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-10-5918e837d2ae72cfaa753516c8652f24 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-10-5918e837d2ae72cfaa753516c8652f24 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-11-e87a4aa598ea59bfbb7e61879a5b51c7 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-11-e87a4aa598ea59bfbb7e61879a5b51c7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-12-c23ea191ee4d60c0a6252ce763b1beed b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-12-c23ea191ee4d60c0a6252ce763b1beed new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-12-c23ea191ee4d60c0a6252ce763b1beed @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-13-86473a0498e4361e4db0b4a22f2e8571 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-13-86473a0498e4361e4db0b4a22f2e8571 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-13-86473a0498e4361e4db0b4a22f2e8571 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-14-afdad72caa2e23071817fe124da07763 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-14-afdad72caa2e23071817fe124da07763 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-15-22330850dd2a9d18dedb504ea5879a07 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-15-22330850dd2a9d18dedb504ea5879a07 new file mode 100644 index 0000000000000..8983bf8a289a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-15-22330850dd2a9d18dedb504ea5879a07 @@ -0,0 +1 @@ +4112 diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-2-7cccbdffc32975f8935eeba14a28147 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-2-7cccbdffc32975f8935eeba14a28147 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-2-7cccbdffc32975f8935eeba14a28147 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-3-546c076289ceaf1fbee969aeb30b402b b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-3-546c076289ceaf1fbee969aeb30b402b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-4-ac35b16d0e28472c6079f4ce2ee1438d b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-4-ac35b16d0e28472c6079f4ce2ee1438d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-5-5f8d9bff48ffdbcc9a18553575bd0c83 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-5-5f8d9bff48ffdbcc9a18553575bd0c83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-6-7cf7a404374e41059f8c1db181a0e1f0 b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-6-7cf7a404374e41059f8c1db181a0e1f0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-7-fecc7e5eef32fd38735e82d9d78a324f b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-7-fecc7e5eef32fd38735e82d9d78a324f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-8-85d19fc31c2031491560208803fe63bf b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-8-85d19fc31c2031491560208803fe63bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-9-d1cfb738e07e78009bac4881c05853ec b/sql/hive/src/test/resources/golden/sort_merge_join_desc_7-9-d1cfb738e07e78009bac4881c05853ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-0-418ec894d08c33fd712eb358f579b7a0 b/sql/hive/src/test/resources/golden/stats0-0-418ec894d08c33fd712eb358f579b7a0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-0-418ec894d08c33fd712eb358f579b7a0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats0-1-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats0-1-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-1-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats0-10-ee1bfc1f0047527d9bd745dcc747ab6c b/sql/hive/src/test/resources/golden/stats0-10-ee1bfc1f0047527d9bd745dcc747ab6c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-11-82294461be4728b4b191414bf2fb3bd7 b/sql/hive/src/test/resources/golden/stats0-11-82294461be4728b4b191414bf2fb3bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-12-31ebc4dcaa13c6dc5937c04f603e699 b/sql/hive/src/test/resources/golden/stats0-12-31ebc4dcaa13c6dc5937c04f603e699 new file mode 100644 index 0000000000000..284da67c9c7c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-12-31ebc4dcaa13c6dc5937c04f603e699 @@ -0,0 +1 @@ +ds=1 diff --git a/sql/hive/src/test/resources/golden/stats0-13-ca0569fd4200d549843deadf84044649 b/sql/hive/src/test/resources/golden/stats0-13-ca0569fd4200d549843deadf84044649 new file mode 100644 index 0000000000000..93381fd6177d3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-13-ca0569fd4200d549843deadf84044649 @@ -0,0 +1,500 @@ +238 val_238 1 +86 val_86 1 +311 val_311 1 +27 val_27 1 +165 val_165 1 +409 val_409 1 +255 val_255 1 +278 val_278 1 +98 val_98 1 +484 val_484 1 +265 val_265 1 +193 val_193 1 +401 val_401 1 +150 val_150 1 +273 val_273 1 +224 val_224 1 +369 val_369 1 +66 val_66 1 +128 val_128 1 +213 val_213 1 +146 val_146 1 +406 val_406 1 +429 val_429 1 +374 val_374 1 +152 val_152 1 +469 val_469 1 +145 val_145 1 +495 val_495 1 +37 val_37 1 +327 val_327 1 +281 val_281 1 +277 val_277 1 +209 val_209 1 +15 val_15 1 +82 val_82 1 +403 val_403 1 +166 val_166 1 +417 val_417 1 +430 val_430 1 +252 val_252 1 +292 val_292 1 +219 val_219 1 +287 val_287 1 +153 val_153 1 +193 val_193 1 +338 val_338 1 +446 val_446 1 +459 val_459 1 +394 val_394 1 +237 val_237 1 +482 val_482 1 +174 val_174 1 +413 val_413 1 +494 val_494 1 +207 val_207 1 +199 val_199 1 +466 val_466 1 +208 val_208 1 +174 val_174 1 +399 val_399 1 +396 val_396 1 +247 val_247 1 +417 val_417 1 +489 val_489 1 +162 val_162 1 +377 val_377 1 +397 val_397 1 +309 val_309 1 +365 val_365 1 +266 val_266 1 +439 val_439 1 +342 val_342 1 +367 val_367 1 +325 val_325 1 +167 val_167 1 +195 val_195 1 +475 val_475 1 +17 val_17 1 +113 val_113 1 +155 val_155 1 +203 val_203 1 +339 val_339 1 +0 val_0 1 +455 val_455 1 +128 val_128 1 +311 val_311 1 +316 val_316 1 +57 val_57 1 +302 val_302 1 +205 val_205 1 +149 val_149 1 +438 val_438 1 +345 val_345 1 +129 val_129 1 +170 val_170 1 +20 val_20 1 +489 val_489 1 +157 val_157 1 +378 val_378 1 +221 val_221 1 +92 val_92 1 +111 val_111 1 +47 val_47 1 +72 val_72 1 +4 val_4 1 +280 val_280 1 +35 val_35 1 +427 val_427 1 +277 val_277 1 +208 val_208 1 +356 val_356 1 +399 val_399 1 +169 val_169 1 +382 val_382 1 +498 val_498 1 +125 val_125 1 +386 val_386 1 +437 val_437 1 +469 val_469 1 +192 val_192 1 +286 val_286 1 +187 val_187 1 +176 val_176 1 +54 val_54 1 +459 val_459 1 +51 val_51 1 +138 val_138 1 +103 val_103 1 +239 val_239 1 +213 val_213 1 +216 val_216 1 +430 val_430 1 +278 val_278 1 +176 val_176 1 +289 val_289 1 +221 val_221 1 +65 val_65 1 +318 val_318 1 +332 val_332 1 +311 val_311 1 +275 val_275 1 +137 val_137 1 +241 val_241 1 +83 val_83 1 +333 val_333 1 +180 val_180 1 +284 val_284 1 +12 val_12 1 +230 val_230 1 +181 val_181 1 +67 val_67 1 +260 val_260 1 +404 val_404 1 +384 val_384 1 +489 val_489 1 +353 val_353 1 +373 val_373 1 +272 val_272 1 +138 val_138 1 +217 val_217 1 +84 val_84 1 +348 val_348 1 +466 val_466 1 +58 val_58 1 +8 val_8 1 +411 val_411 1 +230 val_230 1 +208 val_208 1 +348 val_348 1 +24 val_24 1 +463 val_463 1 +431 val_431 1 +179 val_179 1 +172 val_172 1 +42 val_42 1 +129 val_129 1 +158 val_158 1 +119 val_119 1 +496 val_496 1 +0 val_0 1 +322 val_322 1 +197 val_197 1 +468 val_468 1 +393 val_393 1 +454 val_454 1 +100 val_100 1 +298 val_298 1 +199 val_199 1 +191 val_191 1 +418 val_418 1 +96 val_96 1 +26 val_26 1 +165 val_165 1 +327 val_327 1 +230 val_230 1 +205 val_205 1 +120 val_120 1 +131 val_131 1 +51 val_51 1 +404 val_404 1 +43 val_43 1 +436 val_436 1 +156 val_156 1 +469 val_469 1 +468 val_468 1 +308 val_308 1 +95 val_95 1 +196 val_196 1 +288 val_288 1 +481 val_481 1 +457 val_457 1 +98 val_98 1 +282 val_282 1 +197 val_197 1 +187 val_187 1 +318 val_318 1 +318 val_318 1 +409 val_409 1 +470 val_470 1 +137 val_137 1 +369 val_369 1 +316 val_316 1 +169 val_169 1 +413 val_413 1 +85 val_85 1 +77 val_77 1 +0 val_0 1 +490 val_490 1 +87 val_87 1 +364 val_364 1 +179 val_179 1 +118 val_118 1 +134 val_134 1 +395 val_395 1 +282 val_282 1 +138 val_138 1 +238 val_238 1 +419 val_419 1 +15 val_15 1 +118 val_118 1 +72 val_72 1 +90 val_90 1 +307 val_307 1 +19 val_19 1 +435 val_435 1 +10 val_10 1 +277 val_277 1 +273 val_273 1 +306 val_306 1 +224 val_224 1 +309 val_309 1 +389 val_389 1 +327 val_327 1 +242 val_242 1 +369 val_369 1 +392 val_392 1 +272 val_272 1 +331 val_331 1 +401 val_401 1 +242 val_242 1 +452 val_452 1 +177 val_177 1 +226 val_226 1 +5 val_5 1 +497 val_497 1 +402 val_402 1 +396 val_396 1 +317 val_317 1 +395 val_395 1 +58 val_58 1 +35 val_35 1 +336 val_336 1 +95 val_95 1 +11 val_11 1 +168 val_168 1 +34 val_34 1 +229 val_229 1 +233 val_233 1 +143 val_143 1 +472 val_472 1 +322 val_322 1 +498 val_498 1 +160 val_160 1 +195 val_195 1 +42 val_42 1 +321 val_321 1 +430 val_430 1 +119 val_119 1 +489 val_489 1 +458 val_458 1 +78 val_78 1 +76 val_76 1 +41 val_41 1 +223 val_223 1 +492 val_492 1 +149 val_149 1 +449 val_449 1 +218 val_218 1 +228 val_228 1 +138 val_138 1 +453 val_453 1 +30 val_30 1 +209 val_209 1 +64 val_64 1 +468 val_468 1 +76 val_76 1 +74 val_74 1 +342 val_342 1 +69 val_69 1 +230 val_230 1 +33 val_33 1 +368 val_368 1 +103 val_103 1 +296 val_296 1 +113 val_113 1 +216 val_216 1 +367 val_367 1 +344 val_344 1 +167 val_167 1 +274 val_274 1 +219 val_219 1 +239 val_239 1 +485 val_485 1 +116 val_116 1 +223 val_223 1 +256 val_256 1 +263 val_263 1 +70 val_70 1 +487 val_487 1 +480 val_480 1 +401 val_401 1 +288 val_288 1 +191 val_191 1 +5 val_5 1 +244 val_244 1 +438 val_438 1 +128 val_128 1 +467 val_467 1 +432 val_432 1 +202 val_202 1 +316 val_316 1 +229 val_229 1 +469 val_469 1 +463 val_463 1 +280 val_280 1 +2 val_2 1 +35 val_35 1 +283 val_283 1 +331 val_331 1 +235 val_235 1 +80 val_80 1 +44 val_44 1 +193 val_193 1 +321 val_321 1 +335 val_335 1 +104 val_104 1 +466 val_466 1 +366 val_366 1 +175 val_175 1 +403 val_403 1 +483 val_483 1 +53 val_53 1 +105 val_105 1 +257 val_257 1 +406 val_406 1 +409 val_409 1 +190 val_190 1 +406 val_406 1 +401 val_401 1 +114 val_114 1 +258 val_258 1 +90 val_90 1 +203 val_203 1 +262 val_262 1 +348 val_348 1 +424 val_424 1 +12 val_12 1 +396 val_396 1 +201 val_201 1 +217 val_217 1 +164 val_164 1 +431 val_431 1 +454 val_454 1 +478 val_478 1 +298 val_298 1 +125 val_125 1 +431 val_431 1 +164 val_164 1 +424 val_424 1 +187 val_187 1 +382 val_382 1 +5 val_5 1 +70 val_70 1 +397 val_397 1 +480 val_480 1 +291 val_291 1 +24 val_24 1 +351 val_351 1 +255 val_255 1 +104 val_104 1 +70 val_70 1 +163 val_163 1 +438 val_438 1 +119 val_119 1 +414 val_414 1 +200 val_200 1 +491 val_491 1 +237 val_237 1 +439 val_439 1 +360 val_360 1 +248 val_248 1 +479 val_479 1 +305 val_305 1 +417 val_417 1 +199 val_199 1 +444 val_444 1 +120 val_120 1 +429 val_429 1 +169 val_169 1 +443 val_443 1 +323 val_323 1 +325 val_325 1 +277 val_277 1 +230 val_230 1 +478 val_478 1 +178 val_178 1 +468 val_468 1 +310 val_310 1 +317 val_317 1 +333 val_333 1 +493 val_493 1 +460 val_460 1 +207 val_207 1 +249 val_249 1 +265 val_265 1 +480 val_480 1 +83 val_83 1 +136 val_136 1 +353 val_353 1 +172 val_172 1 +214 val_214 1 +462 val_462 1 +233 val_233 1 +406 val_406 1 +133 val_133 1 +175 val_175 1 +189 val_189 1 +454 val_454 1 +375 val_375 1 +401 val_401 1 +421 val_421 1 +407 val_407 1 +384 val_384 1 +256 val_256 1 +26 val_26 1 +134 val_134 1 +67 val_67 1 +384 val_384 1 +379 val_379 1 +18 val_18 1 +462 val_462 1 +492 val_492 1 +100 val_100 1 +298 val_298 1 +9 val_9 1 +341 val_341 1 +498 val_498 1 +146 val_146 1 +458 val_458 1 +362 val_362 1 +186 val_186 1 +285 val_285 1 +348 val_348 1 +167 val_167 1 +18 val_18 1 +273 val_273 1 +183 val_183 1 +281 val_281 1 +344 val_344 1 +97 val_97 1 +469 val_469 1 +315 val_315 1 +84 val_84 1 +28 val_28 1 +37 val_37 1 +448 val_448 1 +152 val_152 1 +348 val_348 1 +307 val_307 1 +194 val_194 1 +414 val_414 1 +477 val_477 1 +222 val_222 1 +126 val_126 1 +90 val_90 1 +169 val_169 1 +403 val_403 1 +400 val_400 1 +200 val_200 1 +97 val_97 1 diff --git a/sql/hive/src/test/resources/golden/stats0-14-4f18f4b06db06844920b14e2d19471a9 b/sql/hive/src/test/resources/golden/stats0-14-4f18f4b06db06844920b14e2d19471a9 new file mode 100644 index 0000000000000..688eea009d292 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-14-4f18f4b06db06844920b14e2d19471a9 @@ -0,0 +1,10 @@ +key string None +value string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Partition Information Partition(values:[1], dbName:default, tableName:stats_partitioned, createTime:1390903702, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/stats_partitioned/ds=1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1390903702, numRows=500, totalSize=5812, rawDataSize=5312}) diff --git a/sql/hive/src/test/resources/golden/stats0-15-4a7ed5b7e3deb4106204f8f950357e1c b/sql/hive/src/test/resources/golden/stats0-15-4a7ed5b7e3deb4106204f8f950357e1c new file mode 100644 index 0000000000000..4d3a3d8f237b3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-15-4a7ed5b7e3deb4106204f8f950357e1c @@ -0,0 +1,10 @@ +key string None +value string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Table Information Table(tableName:stats_partitioned, dbName:default, owner:marmbrus, createTime:1390903694, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/stats_partitioned, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null)], parameters:{numPartitions=1, numFiles=1, p3=v3, transient_lastDdlTime=1390903702, numRows=500, totalSize=5812, rawDataSize=5312}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/stats0-16-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/stats0-16-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-16-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats0-17-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/stats0-17-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-17-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats0-18-bb8d8522a40a50fb684fabffd2fa7d17 b/sql/hive/src/test/resources/golden/stats0-18-bb8d8522a40a50fb684fabffd2fa7d17 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-19-eb5c7d6fd7433dfe9684e43e4a3419ed b/sql/hive/src/test/resources/golden/stats0-19-eb5c7d6fd7433dfe9684e43e4a3419ed new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-2-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/stats0-2-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-2-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats0-20-5f7439f97275da70f633e135205f2095 b/sql/hive/src/test/resources/golden/stats0-20-5f7439f97275da70f633e135205f2095 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-21-6bcc1360b3d777a8b51ae416ff43898a b/sql/hive/src/test/resources/golden/stats0-21-6bcc1360b3d777a8b51ae416ff43898a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-22-85de3349a12a9fa0536f20ad0377fca1 b/sql/hive/src/test/resources/golden/stats0-22-85de3349a12a9fa0536f20ad0377fca1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-23-247568f4b3ce6b97979ca9d28c2ba05c b/sql/hive/src/test/resources/golden/stats0-23-247568f4b3ce6b97979ca9d28c2ba05c new file mode 100644 index 0000000000000..a18ab93992cc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-23-247568f4b3ce6b97979ca9d28c2ba05c @@ -0,0 +1,4 @@ +key string None +value string None + +Detailed Table Information Table(tableName:stats_non_partitioned, dbName:default, owner:marmbrus, createTime:1390903702, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/stats_non_partitioned, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{numPartitions=0, numFiles=1, p3=v3, transient_lastDdlTime=1390903710, numRows=500, totalSize=5812, rawDataSize=5312}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/stats0-24-7f38972bcd18c477a027d881182d83f9 b/sql/hive/src/test/resources/golden/stats0-24-7f38972bcd18c477a027d881182d83f9 new file mode 100644 index 0000000000000..7aae61e5eb82f --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-24-7f38972bcd18c477a027d881182d83f9 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/stats0-25-98c925a2b2c4de06e270e1b52437a98b b/sql/hive/src/test/resources/golden/stats0-25-98c925a2b2c4de06e270e1b52437a98b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-26-ee1bfc1f0047527d9bd745dcc747ab6c b/sql/hive/src/test/resources/golden/stats0-26-ee1bfc1f0047527d9bd745dcc747ab6c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-27-82294461be4728b4b191414bf2fb3bd7 b/sql/hive/src/test/resources/golden/stats0-27-82294461be4728b4b191414bf2fb3bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-28-31ebc4dcaa13c6dc5937c04f603e699 b/sql/hive/src/test/resources/golden/stats0-28-31ebc4dcaa13c6dc5937c04f603e699 new file mode 100644 index 0000000000000..284da67c9c7c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-28-31ebc4dcaa13c6dc5937c04f603e699 @@ -0,0 +1 @@ +ds=1 diff --git a/sql/hive/src/test/resources/golden/stats0-29-ca0569fd4200d549843deadf84044649 b/sql/hive/src/test/resources/golden/stats0-29-ca0569fd4200d549843deadf84044649 new file mode 100644 index 0000000000000..93381fd6177d3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-29-ca0569fd4200d549843deadf84044649 @@ -0,0 +1,500 @@ +238 val_238 1 +86 val_86 1 +311 val_311 1 +27 val_27 1 +165 val_165 1 +409 val_409 1 +255 val_255 1 +278 val_278 1 +98 val_98 1 +484 val_484 1 +265 val_265 1 +193 val_193 1 +401 val_401 1 +150 val_150 1 +273 val_273 1 +224 val_224 1 +369 val_369 1 +66 val_66 1 +128 val_128 1 +213 val_213 1 +146 val_146 1 +406 val_406 1 +429 val_429 1 +374 val_374 1 +152 val_152 1 +469 val_469 1 +145 val_145 1 +495 val_495 1 +37 val_37 1 +327 val_327 1 +281 val_281 1 +277 val_277 1 +209 val_209 1 +15 val_15 1 +82 val_82 1 +403 val_403 1 +166 val_166 1 +417 val_417 1 +430 val_430 1 +252 val_252 1 +292 val_292 1 +219 val_219 1 +287 val_287 1 +153 val_153 1 +193 val_193 1 +338 val_338 1 +446 val_446 1 +459 val_459 1 +394 val_394 1 +237 val_237 1 +482 val_482 1 +174 val_174 1 +413 val_413 1 +494 val_494 1 +207 val_207 1 +199 val_199 1 +466 val_466 1 +208 val_208 1 +174 val_174 1 +399 val_399 1 +396 val_396 1 +247 val_247 1 +417 val_417 1 +489 val_489 1 +162 val_162 1 +377 val_377 1 +397 val_397 1 +309 val_309 1 +365 val_365 1 +266 val_266 1 +439 val_439 1 +342 val_342 1 +367 val_367 1 +325 val_325 1 +167 val_167 1 +195 val_195 1 +475 val_475 1 +17 val_17 1 +113 val_113 1 +155 val_155 1 +203 val_203 1 +339 val_339 1 +0 val_0 1 +455 val_455 1 +128 val_128 1 +311 val_311 1 +316 val_316 1 +57 val_57 1 +302 val_302 1 +205 val_205 1 +149 val_149 1 +438 val_438 1 +345 val_345 1 +129 val_129 1 +170 val_170 1 +20 val_20 1 +489 val_489 1 +157 val_157 1 +378 val_378 1 +221 val_221 1 +92 val_92 1 +111 val_111 1 +47 val_47 1 +72 val_72 1 +4 val_4 1 +280 val_280 1 +35 val_35 1 +427 val_427 1 +277 val_277 1 +208 val_208 1 +356 val_356 1 +399 val_399 1 +169 val_169 1 +382 val_382 1 +498 val_498 1 +125 val_125 1 +386 val_386 1 +437 val_437 1 +469 val_469 1 +192 val_192 1 +286 val_286 1 +187 val_187 1 +176 val_176 1 +54 val_54 1 +459 val_459 1 +51 val_51 1 +138 val_138 1 +103 val_103 1 +239 val_239 1 +213 val_213 1 +216 val_216 1 +430 val_430 1 +278 val_278 1 +176 val_176 1 +289 val_289 1 +221 val_221 1 +65 val_65 1 +318 val_318 1 +332 val_332 1 +311 val_311 1 +275 val_275 1 +137 val_137 1 +241 val_241 1 +83 val_83 1 +333 val_333 1 +180 val_180 1 +284 val_284 1 +12 val_12 1 +230 val_230 1 +181 val_181 1 +67 val_67 1 +260 val_260 1 +404 val_404 1 +384 val_384 1 +489 val_489 1 +353 val_353 1 +373 val_373 1 +272 val_272 1 +138 val_138 1 +217 val_217 1 +84 val_84 1 +348 val_348 1 +466 val_466 1 +58 val_58 1 +8 val_8 1 +411 val_411 1 +230 val_230 1 +208 val_208 1 +348 val_348 1 +24 val_24 1 +463 val_463 1 +431 val_431 1 +179 val_179 1 +172 val_172 1 +42 val_42 1 +129 val_129 1 +158 val_158 1 +119 val_119 1 +496 val_496 1 +0 val_0 1 +322 val_322 1 +197 val_197 1 +468 val_468 1 +393 val_393 1 +454 val_454 1 +100 val_100 1 +298 val_298 1 +199 val_199 1 +191 val_191 1 +418 val_418 1 +96 val_96 1 +26 val_26 1 +165 val_165 1 +327 val_327 1 +230 val_230 1 +205 val_205 1 +120 val_120 1 +131 val_131 1 +51 val_51 1 +404 val_404 1 +43 val_43 1 +436 val_436 1 +156 val_156 1 +469 val_469 1 +468 val_468 1 +308 val_308 1 +95 val_95 1 +196 val_196 1 +288 val_288 1 +481 val_481 1 +457 val_457 1 +98 val_98 1 +282 val_282 1 +197 val_197 1 +187 val_187 1 +318 val_318 1 +318 val_318 1 +409 val_409 1 +470 val_470 1 +137 val_137 1 +369 val_369 1 +316 val_316 1 +169 val_169 1 +413 val_413 1 +85 val_85 1 +77 val_77 1 +0 val_0 1 +490 val_490 1 +87 val_87 1 +364 val_364 1 +179 val_179 1 +118 val_118 1 +134 val_134 1 +395 val_395 1 +282 val_282 1 +138 val_138 1 +238 val_238 1 +419 val_419 1 +15 val_15 1 +118 val_118 1 +72 val_72 1 +90 val_90 1 +307 val_307 1 +19 val_19 1 +435 val_435 1 +10 val_10 1 +277 val_277 1 +273 val_273 1 +306 val_306 1 +224 val_224 1 +309 val_309 1 +389 val_389 1 +327 val_327 1 +242 val_242 1 +369 val_369 1 +392 val_392 1 +272 val_272 1 +331 val_331 1 +401 val_401 1 +242 val_242 1 +452 val_452 1 +177 val_177 1 +226 val_226 1 +5 val_5 1 +497 val_497 1 +402 val_402 1 +396 val_396 1 +317 val_317 1 +395 val_395 1 +58 val_58 1 +35 val_35 1 +336 val_336 1 +95 val_95 1 +11 val_11 1 +168 val_168 1 +34 val_34 1 +229 val_229 1 +233 val_233 1 +143 val_143 1 +472 val_472 1 +322 val_322 1 +498 val_498 1 +160 val_160 1 +195 val_195 1 +42 val_42 1 +321 val_321 1 +430 val_430 1 +119 val_119 1 +489 val_489 1 +458 val_458 1 +78 val_78 1 +76 val_76 1 +41 val_41 1 +223 val_223 1 +492 val_492 1 +149 val_149 1 +449 val_449 1 +218 val_218 1 +228 val_228 1 +138 val_138 1 +453 val_453 1 +30 val_30 1 +209 val_209 1 +64 val_64 1 +468 val_468 1 +76 val_76 1 +74 val_74 1 +342 val_342 1 +69 val_69 1 +230 val_230 1 +33 val_33 1 +368 val_368 1 +103 val_103 1 +296 val_296 1 +113 val_113 1 +216 val_216 1 +367 val_367 1 +344 val_344 1 +167 val_167 1 +274 val_274 1 +219 val_219 1 +239 val_239 1 +485 val_485 1 +116 val_116 1 +223 val_223 1 +256 val_256 1 +263 val_263 1 +70 val_70 1 +487 val_487 1 +480 val_480 1 +401 val_401 1 +288 val_288 1 +191 val_191 1 +5 val_5 1 +244 val_244 1 +438 val_438 1 +128 val_128 1 +467 val_467 1 +432 val_432 1 +202 val_202 1 +316 val_316 1 +229 val_229 1 +469 val_469 1 +463 val_463 1 +280 val_280 1 +2 val_2 1 +35 val_35 1 +283 val_283 1 +331 val_331 1 +235 val_235 1 +80 val_80 1 +44 val_44 1 +193 val_193 1 +321 val_321 1 +335 val_335 1 +104 val_104 1 +466 val_466 1 +366 val_366 1 +175 val_175 1 +403 val_403 1 +483 val_483 1 +53 val_53 1 +105 val_105 1 +257 val_257 1 +406 val_406 1 +409 val_409 1 +190 val_190 1 +406 val_406 1 +401 val_401 1 +114 val_114 1 +258 val_258 1 +90 val_90 1 +203 val_203 1 +262 val_262 1 +348 val_348 1 +424 val_424 1 +12 val_12 1 +396 val_396 1 +201 val_201 1 +217 val_217 1 +164 val_164 1 +431 val_431 1 +454 val_454 1 +478 val_478 1 +298 val_298 1 +125 val_125 1 +431 val_431 1 +164 val_164 1 +424 val_424 1 +187 val_187 1 +382 val_382 1 +5 val_5 1 +70 val_70 1 +397 val_397 1 +480 val_480 1 +291 val_291 1 +24 val_24 1 +351 val_351 1 +255 val_255 1 +104 val_104 1 +70 val_70 1 +163 val_163 1 +438 val_438 1 +119 val_119 1 +414 val_414 1 +200 val_200 1 +491 val_491 1 +237 val_237 1 +439 val_439 1 +360 val_360 1 +248 val_248 1 +479 val_479 1 +305 val_305 1 +417 val_417 1 +199 val_199 1 +444 val_444 1 +120 val_120 1 +429 val_429 1 +169 val_169 1 +443 val_443 1 +323 val_323 1 +325 val_325 1 +277 val_277 1 +230 val_230 1 +478 val_478 1 +178 val_178 1 +468 val_468 1 +310 val_310 1 +317 val_317 1 +333 val_333 1 +493 val_493 1 +460 val_460 1 +207 val_207 1 +249 val_249 1 +265 val_265 1 +480 val_480 1 +83 val_83 1 +136 val_136 1 +353 val_353 1 +172 val_172 1 +214 val_214 1 +462 val_462 1 +233 val_233 1 +406 val_406 1 +133 val_133 1 +175 val_175 1 +189 val_189 1 +454 val_454 1 +375 val_375 1 +401 val_401 1 +421 val_421 1 +407 val_407 1 +384 val_384 1 +256 val_256 1 +26 val_26 1 +134 val_134 1 +67 val_67 1 +384 val_384 1 +379 val_379 1 +18 val_18 1 +462 val_462 1 +492 val_492 1 +100 val_100 1 +298 val_298 1 +9 val_9 1 +341 val_341 1 +498 val_498 1 +146 val_146 1 +458 val_458 1 +362 val_362 1 +186 val_186 1 +285 val_285 1 +348 val_348 1 +167 val_167 1 +18 val_18 1 +273 val_273 1 +183 val_183 1 +281 val_281 1 +344 val_344 1 +97 val_97 1 +469 val_469 1 +315 val_315 1 +84 val_84 1 +28 val_28 1 +37 val_37 1 +448 val_448 1 +152 val_152 1 +348 val_348 1 +307 val_307 1 +194 val_194 1 +414 val_414 1 +477 val_477 1 +222 val_222 1 +126 val_126 1 +90 val_90 1 +169 val_169 1 +403 val_403 1 +400 val_400 1 +200 val_200 1 +97 val_97 1 diff --git a/sql/hive/src/test/resources/golden/stats0-3-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/stats0-3-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-3-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats0-30-4f18f4b06db06844920b14e2d19471a9 b/sql/hive/src/test/resources/golden/stats0-30-4f18f4b06db06844920b14e2d19471a9 new file mode 100644 index 0000000000000..d861060f13cae --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-30-4f18f4b06db06844920b14e2d19471a9 @@ -0,0 +1,10 @@ +key string None +value string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Partition Information Partition(values:[1], dbName:default, tableName:stats_partitioned, createTime:1390903719, lastAccessTime:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/stats_partitioned/ds=1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), parameters:{numFiles=1, transient_lastDdlTime=1390903719, numRows=500, totalSize=5812, rawDataSize=5312}) diff --git a/sql/hive/src/test/resources/golden/stats0-31-4a7ed5b7e3deb4106204f8f950357e1c b/sql/hive/src/test/resources/golden/stats0-31-4a7ed5b7e3deb4106204f8f950357e1c new file mode 100644 index 0000000000000..aa4dfe1e5ba39 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-31-4a7ed5b7e3deb4106204f8f950357e1c @@ -0,0 +1,10 @@ +key string None +value string None +ds string None + +# Partition Information +# col_name data_type comment + +ds string None + +Detailed Table Information Table(tableName:stats_partitioned, dbName:default, owner:marmbrus, createTime:1390903710, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/stats_partitioned, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:ds, type:string, comment:null)], parameters:{numPartitions=1, numFiles=1, p3=v3, transient_lastDdlTime=1390903719, numRows=500, totalSize=5812, rawDataSize=5312}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/stats0-4-5f7439f97275da70f633e135205f2095 b/sql/hive/src/test/resources/golden/stats0-4-5f7439f97275da70f633e135205f2095 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-5-6bcc1360b3d777a8b51ae416ff43898a b/sql/hive/src/test/resources/golden/stats0-5-6bcc1360b3d777a8b51ae416ff43898a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-6-85de3349a12a9fa0536f20ad0377fca1 b/sql/hive/src/test/resources/golden/stats0-6-85de3349a12a9fa0536f20ad0377fca1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats0-7-247568f4b3ce6b97979ca9d28c2ba05c b/sql/hive/src/test/resources/golden/stats0-7-247568f4b3ce6b97979ca9d28c2ba05c new file mode 100644 index 0000000000000..8a5ae7cda1c57 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-7-247568f4b3ce6b97979ca9d28c2ba05c @@ -0,0 +1,4 @@ +key string None +value string None + +Detailed Table Information Table(tableName:stats_non_partitioned, dbName:default, owner:marmbrus, createTime:1390903686, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:key, type:string, comment:null), FieldSchema(name:value, type:string, comment:null)], location:file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/stats_non_partitioned, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{numPartitions=0, numFiles=1, p3=v3, transient_lastDdlTime=1390903694, numRows=500, totalSize=5812, rawDataSize=5312}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) diff --git a/sql/hive/src/test/resources/golden/stats0-8-7f38972bcd18c477a027d881182d83f9 b/sql/hive/src/test/resources/golden/stats0-8-7f38972bcd18c477a027d881182d83f9 new file mode 100644 index 0000000000000..7aae61e5eb82f --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats0-8-7f38972bcd18c477a027d881182d83f9 @@ -0,0 +1,500 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +302 val_302 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 diff --git a/sql/hive/src/test/resources/golden/stats0-9-98c925a2b2c4de06e270e1b52437a98b b/sql/hive/src/test/resources/golden/stats0-9-98c925a2b2c4de06e270e1b52437a98b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats2-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats2-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats2-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats2-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats2-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats2-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats2-10-56dfd0f30574154dc1c2f55c29e2fa0e b/sql/hive/src/test/resources/golden/stats2-10-56dfd0f30574154dc1c2f55c29e2fa0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats2-11-912c785dbcef3251dd1d6b7fc56eae5b b/sql/hive/src/test/resources/golden/stats2-11-912c785dbcef3251dd1d6b7fc56eae5b new file mode 100644 index 0000000000000..f87b67cb2006f --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats2-11-912c785dbcef3251dd1d6b7fc56eae5b @@ -0,0 +1,39 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:17:02 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_t1 +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 4 + numPartitions 4 + numRows 2000 + p3 v3 + rawDataSize 21248 + totalSize 23248 + transient_lastDdlTime 1390904237 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats2-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/stats2-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats2-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats2-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats2-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats2-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats2-4-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/stats2-4-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats2-4-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats2-5-6717e1026e24a38af19b6bce1951e3d7 b/sql/hive/src/test/resources/golden/stats2-5-6717e1026e24a38af19b6bce1951e3d7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats2-6-45d4fb785fc94d266096fc29a9e90d73 b/sql/hive/src/test/resources/golden/stats2-6-45d4fb785fc94d266096fc29a9e90d73 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats2-7-6436db7a7506b560d0d1759db94a76b9 b/sql/hive/src/test/resources/golden/stats2-7-6436db7a7506b560d0d1759db94a76b9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats2-8-72621dba638b15d244850018e9f64d7 b/sql/hive/src/test/resources/golden/stats2-8-72621dba638b15d244850018e9f64d7 new file mode 100644 index 0000000000000..19a5e1e042ae7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats2-8-72621dba638b15d244850018e9f64d7 @@ -0,0 +1,34 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:17:02 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_t1 +Table Type: MANAGED_TABLE +Table Parameters: + p3 v3 + transient_lastDdlTime 1390904222 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats2-9-6d93732dc2ca622eb60c171389caee8e b/sql/hive/src/test/resources/golden/stats2-9-6d93732dc2ca622eb60c171389caee8e new file mode 100644 index 0000000000000..7ddea146475d1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats2-9-6d93732dc2ca622eb60c171389caee8e @@ -0,0 +1,19 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_t1) (TOK_PARTSPEC (TOK_PARTVAL ds) (TOK_PARTVAL hr)))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + analyze_t1 + TableScan + alias: analyze_t1 + + Stage: Stage-1 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats20-0-418ec894d08c33fd712eb358f579b7a0 b/sql/hive/src/test/resources/golden/stats20-0-418ec894d08c33fd712eb358f579b7a0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats20-0-418ec894d08c33fd712eb358f579b7a0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats20-1-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats20-1-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats20-1-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats20-2-4711e55648c25c86bb526ed50b0c3d09 b/sql/hive/src/test/resources/golden/stats20-2-4711e55648c25c86bb526ed50b0c3d09 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats20-2-4711e55648c25c86bb526ed50b0c3d09 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats20-3-98c925a2b2c4de06e270e1b52437a98b b/sql/hive/src/test/resources/golden/stats20-3-98c925a2b2c4de06e270e1b52437a98b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats20-4-82294461be4728b4b191414bf2fb3bd7 b/sql/hive/src/test/resources/golden/stats20-4-82294461be4728b4b191414bf2fb3bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats20-5-76509775cfe11bb98ee088188a07668a b/sql/hive/src/test/resources/golden/stats20-5-76509775cfe11bb98ee088188a07668a new file mode 100644 index 0000000000000..5c8878cba5e71 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats20-5-76509775cfe11bb98ee088188a07668a @@ -0,0 +1,37 @@ +# col_name data_type comment + +key string None +value string None + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 15:57:53 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2617911713640090101/stats_partitioned +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 1 + numPartitions 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390953481 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats20-6-1f7f76b2a9d50f86de42edf6ba8a3f84 b/sql/hive/src/test/resources/golden/stats20-6-1f7f76b2a9d50f86de42edf6ba8a3f84 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats20-6-1f7f76b2a9d50f86de42edf6ba8a3f84 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats20-7-82294461be4728b4b191414bf2fb3bd7 b/sql/hive/src/test/resources/golden/stats20-7-82294461be4728b4b191414bf2fb3bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats20-8-300c971de74642118d36d36349bc81aa b/sql/hive/src/test/resources/golden/stats20-8-300c971de74642118d36d36349bc81aa new file mode 100644 index 0000000000000..d9ba3814de367 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats20-8-300c971de74642118d36d36349bc81aa @@ -0,0 +1,37 @@ +# col_name data_type comment + +key string None +value string None + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 15:57:53 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2617911713640090101/stats_partitioned +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 1 + numPartitions 1 + numRows 500 + rawDataSize 0 + totalSize 5812 + transient_lastDdlTime 1390953492 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats3-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats3-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats3-1-418ec894d08c33fd712eb358f579b7a0 b/sql/hive/src/test/resources/golden/stats3-1-418ec894d08c33fd712eb358f579b7a0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-1-418ec894d08c33fd712eb358f579b7a0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats3-10-e2e5e7a0378c6f0c28391c447ec9cee9 b/sql/hive/src/test/resources/golden/stats3-10-e2e5e7a0378c6f0c28391c447ec9cee9 new file mode 100644 index 0000000000000..bf2a7f452edc3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-10-e2e5e7a0378c6f0c28391c447ec9cee9 @@ -0,0 +1,6 @@ +1 test_part test_Part +2 test_part test_Part +3 test_part test_Part +4 test_part test_Part +5 test_part test_Part +6 test_part test_Part diff --git a/sql/hive/src/test/resources/golden/stats3-11-2e8d5cefd9a1b1e8f25b117ca68bfeaa b/sql/hive/src/test/resources/golden/stats3-11-2e8d5cefd9a1b1e8f25b117ca68bfeaa new file mode 100644 index 0000000000000..1e8b314962144 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-11-2e8d5cefd9a1b1e8f25b117ca68bfeaa @@ -0,0 +1 @@ +6 diff --git a/sql/hive/src/test/resources/golden/stats3-12-892cb7ecc26e84f1c033b95a3ee3edc b/sql/hive/src/test/resources/golden/stats3-12-892cb7ecc26e84f1c033b95a3ee3edc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-13-ca5e3149f2b190d7df923a3e5c1cb07 b/sql/hive/src/test/resources/golden/stats3-13-ca5e3149f2b190d7df923a3e5c1cb07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-14-2e8d5cefd9a1b1e8f25b117ca68bfeaa b/sql/hive/src/test/resources/golden/stats3-14-2e8d5cefd9a1b1e8f25b117ca68bfeaa new file mode 100644 index 0000000000000..1e8b314962144 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-14-2e8d5cefd9a1b1e8f25b117ca68bfeaa @@ -0,0 +1 @@ +6 diff --git a/sql/hive/src/test/resources/golden/stats3-15-c6493490f898e72dc7ed1bc2d4721aa4 b/sql/hive/src/test/resources/golden/stats3-15-c6493490f898e72dc7ed1bc2d4721aa4 new file mode 100644 index 0000000000000..bf2a7f452edc3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-15-c6493490f898e72dc7ed1bc2d4721aa4 @@ -0,0 +1,6 @@ +1 test_part test_Part +2 test_part test_Part +3 test_part test_Part +4 test_part test_Part +5 test_part test_Part +6 test_part test_Part diff --git a/sql/hive/src/test/resources/golden/stats3-16-ca5e3149f2b190d7df923a3e5c1cb07 b/sql/hive/src/test/resources/golden/stats3-16-ca5e3149f2b190d7df923a3e5c1cb07 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-17-c012b29f0d7720fbc515aa5fe2759ac7 b/sql/hive/src/test/resources/golden/stats3-17-c012b29f0d7720fbc515aa5fe2759ac7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-18-eefbb3ee8b538aec85c609351e52901b b/sql/hive/src/test/resources/golden/stats3-18-eefbb3ee8b538aec85c609351e52901b new file mode 100644 index 0000000000000..cb1c9def371df --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-18-eefbb3ee8b538aec85c609351e52901b @@ -0,0 +1,38 @@ +# col_name data_type comment + +col1 string None + +# Partition Information +# col_name data_type comment + +pcol1 string None +pcol2 string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:17:38 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/hive_test_dst +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 1 + numPartitions 1 + numRows 6 + p3 v3 + rawDataSize 6 + totalSize 171 + transient_lastDdlTime 1390904285 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats3-19-c1bbac06a43b5b00a69356955e4a1dd3 b/sql/hive/src/test/resources/golden/stats3-19-c1bbac06a43b5b00a69356955e4a1dd3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-2-c1bbac06a43b5b00a69356955e4a1dd3 b/sql/hive/src/test/resources/golden/stats3-2-c1bbac06a43b5b00a69356955e4a1dd3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-20-ca048ad81b3df7159822073d206f0790 b/sql/hive/src/test/resources/golden/stats3-20-ca048ad81b3df7159822073d206f0790 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-3-ca048ad81b3df7159822073d206f0790 b/sql/hive/src/test/resources/golden/stats3-3-ca048ad81b3df7159822073d206f0790 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-4-fa705a031ff5d97558f29c2b5b9de282 b/sql/hive/src/test/resources/golden/stats3-4-fa705a031ff5d97558f29c2b5b9de282 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-5-1b2be7f8bd7bacc8f77a24ffdc0830f1 b/sql/hive/src/test/resources/golden/stats3-5-1b2be7f8bd7bacc8f77a24ffdc0830f1 new file mode 100644 index 0000000000000..8bc7c14574497 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-5-1b2be7f8bd7bacc8f77a24ffdc0830f1 @@ -0,0 +1,43 @@ +ABSTRACT SYNTAX TREE: + (TOK_LOAD '/Users/marmbrus/workspace/hive/data/files/test.dat' (TOK_TAB (TOK_TABNAME hive_test_src)) local overwrite) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + Stage-2 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-0 + Copy + source: file:/Users/marmbrus/workspace/hive/data/files/test.dat + destination: file:/tmp/hive-marmbrus/hive_2014-01-28_02-17-38_072_1020656193356018580-1/-ext-10000 + + Stage: Stage-1 + Move Operator + tables: + replace: true + source: file:/tmp/hive-marmbrus/hive_2014-01-28_02-17-38_072_1020656193356018580-1/-ext-10000 + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + bucket_count -1 + columns col1 + columns.types string + file.inputformat org.apache.hadoop.mapred.TextInputFormat + file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + location file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/hive_test_src + name default.hive_test_src + p3 v3 + serialization.ddl struct hive_test_src { string col1} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + transient_lastDdlTime 1390904258 + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.hive_test_src + tmp directory: file:/tmp/hive-marmbrus/hive_2014-01-28_02-17-38_072_1020656193356018580-1/-ext-10001 + + Stage: Stage-2 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats3-6-4bf1504274319c44d370b58092fe016c b/sql/hive/src/test/resources/golden/stats3-6-4bf1504274319c44d370b58092fe016c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-7-73d7d55d6e5a57aacce8618902904d b/sql/hive/src/test/resources/golden/stats3-7-73d7d55d6e5a57aacce8618902904d new file mode 100644 index 0000000000000..4916ef91b0866 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats3-7-73d7d55d6e5a57aacce8618902904d @@ -0,0 +1,32 @@ +# col_name data_type comment + +col1 string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:17:38 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/hive_test_src +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 1 + numPartitions 0 + numRows 0 + p3 v3 + rawDataSize 0 + totalSize 11 + transient_lastDdlTime 1390904258 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats3-8-b0ebbe71c220979b8fd4a36ffa501bf6 b/sql/hive/src/test/resources/golden/stats3-8-b0ebbe71c220979b8fd4a36ffa501bf6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats3-9-21f4ee91fa1c65e8579e4cbe4777d7a0 b/sql/hive/src/test/resources/golden/stats3-9-21f4ee91fa1c65e8579e4cbe4777d7a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats4-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats4-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats4-1-418ec894d08c33fd712eb358f579b7a0 b/sql/hive/src/test/resources/golden/stats4-1-418ec894d08c33fd712eb358f579b7a0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-1-418ec894d08c33fd712eb358f579b7a0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats4-10-a33b2c9d962e4921c98e62387f3989f7 b/sql/hive/src/test/resources/golden/stats4-10-a33b2c9d962e4921c98e62387f3989f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats4-11-ea921e0af59a4940a11c94143b1c4b32 b/sql/hive/src/test/resources/golden/stats4-11-ea921e0af59a4940a11c94143b1c4b32 new file mode 100644 index 0000000000000..0a88e449f625a --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-11-ea921e0af59a4940a11c94143b1c4b32 @@ -0,0 +1,2 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 diff --git a/sql/hive/src/test/resources/golden/stats4-12-30bc31441828a053d1a675b225a5d617 b/sql/hive/src/test/resources/golden/stats4-12-30bc31441828a053d1a675b225a5d617 new file mode 100644 index 0000000000000..1634adfc4d70d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-12-30bc31441828a053d1a675b225a5d617 @@ -0,0 +1,2 @@ +ds=2008-12-31/hr=11 +ds=2008-12-31/hr=12 diff --git a/sql/hive/src/test/resources/golden/stats4-13-fca9513ea05bfb8b7e0e6f337d184d66 b/sql/hive/src/test/resources/golden/stats4-13-fca9513ea05bfb8b7e0e6f337d184d66 new file mode 100644 index 0000000000000..d7a8f25b41301 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-13-fca9513ea05bfb8b7e0e6f337d184d66 @@ -0,0 +1,1000 @@ +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +265 val_265 2008-04-08 11 +193 val_193 2008-04-08 11 +401 val_401 2008-04-08 11 +150 val_150 2008-04-08 11 +273 val_273 2008-04-08 11 +224 val_224 2008-04-08 11 +369 val_369 2008-04-08 11 +66 val_66 2008-04-08 11 +128 val_128 2008-04-08 11 +213 val_213 2008-04-08 11 +146 val_146 2008-04-08 11 +406 val_406 2008-04-08 11 +429 val_429 2008-04-08 11 +374 val_374 2008-04-08 11 +152 val_152 2008-04-08 11 +469 val_469 2008-04-08 11 +145 val_145 2008-04-08 11 +495 val_495 2008-04-08 11 +37 val_37 2008-04-08 11 +327 val_327 2008-04-08 11 +281 val_281 2008-04-08 11 +277 val_277 2008-04-08 11 +209 val_209 2008-04-08 11 +15 val_15 2008-04-08 11 +82 val_82 2008-04-08 11 +403 val_403 2008-04-08 11 +166 val_166 2008-04-08 11 +417 val_417 2008-04-08 11 +430 val_430 2008-04-08 11 +252 val_252 2008-04-08 11 +292 val_292 2008-04-08 11 +219 val_219 2008-04-08 11 +287 val_287 2008-04-08 11 +153 val_153 2008-04-08 11 +193 val_193 2008-04-08 11 +338 val_338 2008-04-08 11 +446 val_446 2008-04-08 11 +459 val_459 2008-04-08 11 +394 val_394 2008-04-08 11 +237 val_237 2008-04-08 11 +482 val_482 2008-04-08 11 +174 val_174 2008-04-08 11 +413 val_413 2008-04-08 11 +494 val_494 2008-04-08 11 +207 val_207 2008-04-08 11 +199 val_199 2008-04-08 11 +466 val_466 2008-04-08 11 +208 val_208 2008-04-08 11 +174 val_174 2008-04-08 11 +399 val_399 2008-04-08 11 +396 val_396 2008-04-08 11 +247 val_247 2008-04-08 11 +417 val_417 2008-04-08 11 +489 val_489 2008-04-08 11 +162 val_162 2008-04-08 11 +377 val_377 2008-04-08 11 +397 val_397 2008-04-08 11 +309 val_309 2008-04-08 11 +365 val_365 2008-04-08 11 +266 val_266 2008-04-08 11 +439 val_439 2008-04-08 11 +342 val_342 2008-04-08 11 +367 val_367 2008-04-08 11 +325 val_325 2008-04-08 11 +167 val_167 2008-04-08 11 +195 val_195 2008-04-08 11 +475 val_475 2008-04-08 11 +17 val_17 2008-04-08 11 +113 val_113 2008-04-08 11 +155 val_155 2008-04-08 11 +203 val_203 2008-04-08 11 +339 val_339 2008-04-08 11 +0 val_0 2008-04-08 11 +455 val_455 2008-04-08 11 +128 val_128 2008-04-08 11 +311 val_311 2008-04-08 11 +316 val_316 2008-04-08 11 +57 val_57 2008-04-08 11 +302 val_302 2008-04-08 11 +205 val_205 2008-04-08 11 +149 val_149 2008-04-08 11 +438 val_438 2008-04-08 11 +345 val_345 2008-04-08 11 +129 val_129 2008-04-08 11 +170 val_170 2008-04-08 11 +20 val_20 2008-04-08 11 +489 val_489 2008-04-08 11 +157 val_157 2008-04-08 11 +378 val_378 2008-04-08 11 +221 val_221 2008-04-08 11 +92 val_92 2008-04-08 11 +111 val_111 2008-04-08 11 +47 val_47 2008-04-08 11 +72 val_72 2008-04-08 11 +4 val_4 2008-04-08 11 +280 val_280 2008-04-08 11 +35 val_35 2008-04-08 11 +427 val_427 2008-04-08 11 +277 val_277 2008-04-08 11 +208 val_208 2008-04-08 11 +356 val_356 2008-04-08 11 +399 val_399 2008-04-08 11 +169 val_169 2008-04-08 11 +382 val_382 2008-04-08 11 +498 val_498 2008-04-08 11 +125 val_125 2008-04-08 11 +386 val_386 2008-04-08 11 +437 val_437 2008-04-08 11 +469 val_469 2008-04-08 11 +192 val_192 2008-04-08 11 +286 val_286 2008-04-08 11 +187 val_187 2008-04-08 11 +176 val_176 2008-04-08 11 +54 val_54 2008-04-08 11 +459 val_459 2008-04-08 11 +51 val_51 2008-04-08 11 +138 val_138 2008-04-08 11 +103 val_103 2008-04-08 11 +239 val_239 2008-04-08 11 +213 val_213 2008-04-08 11 +216 val_216 2008-04-08 11 +430 val_430 2008-04-08 11 +278 val_278 2008-04-08 11 +176 val_176 2008-04-08 11 +289 val_289 2008-04-08 11 +221 val_221 2008-04-08 11 +65 val_65 2008-04-08 11 +318 val_318 2008-04-08 11 +332 val_332 2008-04-08 11 +311 val_311 2008-04-08 11 +275 val_275 2008-04-08 11 +137 val_137 2008-04-08 11 +241 val_241 2008-04-08 11 +83 val_83 2008-04-08 11 +333 val_333 2008-04-08 11 +180 val_180 2008-04-08 11 +284 val_284 2008-04-08 11 +12 val_12 2008-04-08 11 +230 val_230 2008-04-08 11 +181 val_181 2008-04-08 11 +67 val_67 2008-04-08 11 +260 val_260 2008-04-08 11 +404 val_404 2008-04-08 11 +384 val_384 2008-04-08 11 +489 val_489 2008-04-08 11 +353 val_353 2008-04-08 11 +373 val_373 2008-04-08 11 +272 val_272 2008-04-08 11 +138 val_138 2008-04-08 11 +217 val_217 2008-04-08 11 +84 val_84 2008-04-08 11 +348 val_348 2008-04-08 11 +466 val_466 2008-04-08 11 +58 val_58 2008-04-08 11 +8 val_8 2008-04-08 11 +411 val_411 2008-04-08 11 +230 val_230 2008-04-08 11 +208 val_208 2008-04-08 11 +348 val_348 2008-04-08 11 +24 val_24 2008-04-08 11 +463 val_463 2008-04-08 11 +431 val_431 2008-04-08 11 +179 val_179 2008-04-08 11 +172 val_172 2008-04-08 11 +42 val_42 2008-04-08 11 +129 val_129 2008-04-08 11 +158 val_158 2008-04-08 11 +119 val_119 2008-04-08 11 +496 val_496 2008-04-08 11 +0 val_0 2008-04-08 11 +322 val_322 2008-04-08 11 +197 val_197 2008-04-08 11 +468 val_468 2008-04-08 11 +393 val_393 2008-04-08 11 +454 val_454 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +199 val_199 2008-04-08 11 +191 val_191 2008-04-08 11 +418 val_418 2008-04-08 11 +96 val_96 2008-04-08 11 +26 val_26 2008-04-08 11 +165 val_165 2008-04-08 11 +327 val_327 2008-04-08 11 +230 val_230 2008-04-08 11 +205 val_205 2008-04-08 11 +120 val_120 2008-04-08 11 +131 val_131 2008-04-08 11 +51 val_51 2008-04-08 11 +404 val_404 2008-04-08 11 +43 val_43 2008-04-08 11 +436 val_436 2008-04-08 11 +156 val_156 2008-04-08 11 +469 val_469 2008-04-08 11 +468 val_468 2008-04-08 11 +308 val_308 2008-04-08 11 +95 val_95 2008-04-08 11 +196 val_196 2008-04-08 11 +288 val_288 2008-04-08 11 +481 val_481 2008-04-08 11 +457 val_457 2008-04-08 11 +98 val_98 2008-04-08 11 +282 val_282 2008-04-08 11 +197 val_197 2008-04-08 11 +187 val_187 2008-04-08 11 +318 val_318 2008-04-08 11 +318 val_318 2008-04-08 11 +409 val_409 2008-04-08 11 +470 val_470 2008-04-08 11 +137 val_137 2008-04-08 11 +369 val_369 2008-04-08 11 +316 val_316 2008-04-08 11 +169 val_169 2008-04-08 11 +413 val_413 2008-04-08 11 +85 val_85 2008-04-08 11 +77 val_77 2008-04-08 11 +0 val_0 2008-04-08 11 +490 val_490 2008-04-08 11 +87 val_87 2008-04-08 11 +364 val_364 2008-04-08 11 +179 val_179 2008-04-08 11 +118 val_118 2008-04-08 11 +134 val_134 2008-04-08 11 +395 val_395 2008-04-08 11 +282 val_282 2008-04-08 11 +138 val_138 2008-04-08 11 +238 val_238 2008-04-08 11 +419 val_419 2008-04-08 11 +15 val_15 2008-04-08 11 +118 val_118 2008-04-08 11 +72 val_72 2008-04-08 11 +90 val_90 2008-04-08 11 +307 val_307 2008-04-08 11 +19 val_19 2008-04-08 11 +435 val_435 2008-04-08 11 +10 val_10 2008-04-08 11 +277 val_277 2008-04-08 11 +273 val_273 2008-04-08 11 +306 val_306 2008-04-08 11 +224 val_224 2008-04-08 11 +309 val_309 2008-04-08 11 +389 val_389 2008-04-08 11 +327 val_327 2008-04-08 11 +242 val_242 2008-04-08 11 +369 val_369 2008-04-08 11 +392 val_392 2008-04-08 11 +272 val_272 2008-04-08 11 +331 val_331 2008-04-08 11 +401 val_401 2008-04-08 11 +242 val_242 2008-04-08 11 +452 val_452 2008-04-08 11 +177 val_177 2008-04-08 11 +226 val_226 2008-04-08 11 +5 val_5 2008-04-08 11 +497 val_497 2008-04-08 11 +402 val_402 2008-04-08 11 +396 val_396 2008-04-08 11 +317 val_317 2008-04-08 11 +395 val_395 2008-04-08 11 +58 val_58 2008-04-08 11 +35 val_35 2008-04-08 11 +336 val_336 2008-04-08 11 +95 val_95 2008-04-08 11 +11 val_11 2008-04-08 11 +168 val_168 2008-04-08 11 +34 val_34 2008-04-08 11 +229 val_229 2008-04-08 11 +233 val_233 2008-04-08 11 +143 val_143 2008-04-08 11 +472 val_472 2008-04-08 11 +322 val_322 2008-04-08 11 +498 val_498 2008-04-08 11 +160 val_160 2008-04-08 11 +195 val_195 2008-04-08 11 +42 val_42 2008-04-08 11 +321 val_321 2008-04-08 11 +430 val_430 2008-04-08 11 +119 val_119 2008-04-08 11 +489 val_489 2008-04-08 11 +458 val_458 2008-04-08 11 +78 val_78 2008-04-08 11 +76 val_76 2008-04-08 11 +41 val_41 2008-04-08 11 +223 val_223 2008-04-08 11 +492 val_492 2008-04-08 11 +149 val_149 2008-04-08 11 +449 val_449 2008-04-08 11 +218 val_218 2008-04-08 11 +228 val_228 2008-04-08 11 +138 val_138 2008-04-08 11 +453 val_453 2008-04-08 11 +30 val_30 2008-04-08 11 +209 val_209 2008-04-08 11 +64 val_64 2008-04-08 11 +468 val_468 2008-04-08 11 +76 val_76 2008-04-08 11 +74 val_74 2008-04-08 11 +342 val_342 2008-04-08 11 +69 val_69 2008-04-08 11 +230 val_230 2008-04-08 11 +33 val_33 2008-04-08 11 +368 val_368 2008-04-08 11 +103 val_103 2008-04-08 11 +296 val_296 2008-04-08 11 +113 val_113 2008-04-08 11 +216 val_216 2008-04-08 11 +367 val_367 2008-04-08 11 +344 val_344 2008-04-08 11 +167 val_167 2008-04-08 11 +274 val_274 2008-04-08 11 +219 val_219 2008-04-08 11 +239 val_239 2008-04-08 11 +485 val_485 2008-04-08 11 +116 val_116 2008-04-08 11 +223 val_223 2008-04-08 11 +256 val_256 2008-04-08 11 +263 val_263 2008-04-08 11 +70 val_70 2008-04-08 11 +487 val_487 2008-04-08 11 +480 val_480 2008-04-08 11 +401 val_401 2008-04-08 11 +288 val_288 2008-04-08 11 +191 val_191 2008-04-08 11 +5 val_5 2008-04-08 11 +244 val_244 2008-04-08 11 +438 val_438 2008-04-08 11 +128 val_128 2008-04-08 11 +467 val_467 2008-04-08 11 +432 val_432 2008-04-08 11 +202 val_202 2008-04-08 11 +316 val_316 2008-04-08 11 +229 val_229 2008-04-08 11 +469 val_469 2008-04-08 11 +463 val_463 2008-04-08 11 +280 val_280 2008-04-08 11 +2 val_2 2008-04-08 11 +35 val_35 2008-04-08 11 +283 val_283 2008-04-08 11 +331 val_331 2008-04-08 11 +235 val_235 2008-04-08 11 +80 val_80 2008-04-08 11 +44 val_44 2008-04-08 11 +193 val_193 2008-04-08 11 +321 val_321 2008-04-08 11 +335 val_335 2008-04-08 11 +104 val_104 2008-04-08 11 +466 val_466 2008-04-08 11 +366 val_366 2008-04-08 11 +175 val_175 2008-04-08 11 +403 val_403 2008-04-08 11 +483 val_483 2008-04-08 11 +53 val_53 2008-04-08 11 +105 val_105 2008-04-08 11 +257 val_257 2008-04-08 11 +406 val_406 2008-04-08 11 +409 val_409 2008-04-08 11 +190 val_190 2008-04-08 11 +406 val_406 2008-04-08 11 +401 val_401 2008-04-08 11 +114 val_114 2008-04-08 11 +258 val_258 2008-04-08 11 +90 val_90 2008-04-08 11 +203 val_203 2008-04-08 11 +262 val_262 2008-04-08 11 +348 val_348 2008-04-08 11 +424 val_424 2008-04-08 11 +12 val_12 2008-04-08 11 +396 val_396 2008-04-08 11 +201 val_201 2008-04-08 11 +217 val_217 2008-04-08 11 +164 val_164 2008-04-08 11 +431 val_431 2008-04-08 11 +454 val_454 2008-04-08 11 +478 val_478 2008-04-08 11 +298 val_298 2008-04-08 11 +125 val_125 2008-04-08 11 +431 val_431 2008-04-08 11 +164 val_164 2008-04-08 11 +424 val_424 2008-04-08 11 +187 val_187 2008-04-08 11 +382 val_382 2008-04-08 11 +5 val_5 2008-04-08 11 +70 val_70 2008-04-08 11 +397 val_397 2008-04-08 11 +480 val_480 2008-04-08 11 +291 val_291 2008-04-08 11 +24 val_24 2008-04-08 11 +351 val_351 2008-04-08 11 +255 val_255 2008-04-08 11 +104 val_104 2008-04-08 11 +70 val_70 2008-04-08 11 +163 val_163 2008-04-08 11 +438 val_438 2008-04-08 11 +119 val_119 2008-04-08 11 +414 val_414 2008-04-08 11 +200 val_200 2008-04-08 11 +491 val_491 2008-04-08 11 +237 val_237 2008-04-08 11 +439 val_439 2008-04-08 11 +360 val_360 2008-04-08 11 +248 val_248 2008-04-08 11 +479 val_479 2008-04-08 11 +305 val_305 2008-04-08 11 +417 val_417 2008-04-08 11 +199 val_199 2008-04-08 11 +444 val_444 2008-04-08 11 +120 val_120 2008-04-08 11 +429 val_429 2008-04-08 11 +169 val_169 2008-04-08 11 +443 val_443 2008-04-08 11 +323 val_323 2008-04-08 11 +325 val_325 2008-04-08 11 +277 val_277 2008-04-08 11 +230 val_230 2008-04-08 11 +478 val_478 2008-04-08 11 +178 val_178 2008-04-08 11 +468 val_468 2008-04-08 11 +310 val_310 2008-04-08 11 +317 val_317 2008-04-08 11 +333 val_333 2008-04-08 11 +493 val_493 2008-04-08 11 +460 val_460 2008-04-08 11 +207 val_207 2008-04-08 11 +249 val_249 2008-04-08 11 +265 val_265 2008-04-08 11 +480 val_480 2008-04-08 11 +83 val_83 2008-04-08 11 +136 val_136 2008-04-08 11 +353 val_353 2008-04-08 11 +172 val_172 2008-04-08 11 +214 val_214 2008-04-08 11 +462 val_462 2008-04-08 11 +233 val_233 2008-04-08 11 +406 val_406 2008-04-08 11 +133 val_133 2008-04-08 11 +175 val_175 2008-04-08 11 +189 val_189 2008-04-08 11 +454 val_454 2008-04-08 11 +375 val_375 2008-04-08 11 +401 val_401 2008-04-08 11 +421 val_421 2008-04-08 11 +407 val_407 2008-04-08 11 +384 val_384 2008-04-08 11 +256 val_256 2008-04-08 11 +26 val_26 2008-04-08 11 +134 val_134 2008-04-08 11 +67 val_67 2008-04-08 11 +384 val_384 2008-04-08 11 +379 val_379 2008-04-08 11 +18 val_18 2008-04-08 11 +462 val_462 2008-04-08 11 +492 val_492 2008-04-08 11 +100 val_100 2008-04-08 11 +298 val_298 2008-04-08 11 +9 val_9 2008-04-08 11 +341 val_341 2008-04-08 11 +498 val_498 2008-04-08 11 +146 val_146 2008-04-08 11 +458 val_458 2008-04-08 11 +362 val_362 2008-04-08 11 +186 val_186 2008-04-08 11 +285 val_285 2008-04-08 11 +348 val_348 2008-04-08 11 +167 val_167 2008-04-08 11 +18 val_18 2008-04-08 11 +273 val_273 2008-04-08 11 +183 val_183 2008-04-08 11 +281 val_281 2008-04-08 11 +344 val_344 2008-04-08 11 +97 val_97 2008-04-08 11 +469 val_469 2008-04-08 11 +315 val_315 2008-04-08 11 +84 val_84 2008-04-08 11 +28 val_28 2008-04-08 11 +37 val_37 2008-04-08 11 +448 val_448 2008-04-08 11 +152 val_152 2008-04-08 11 +348 val_348 2008-04-08 11 +307 val_307 2008-04-08 11 +194 val_194 2008-04-08 11 +414 val_414 2008-04-08 11 +477 val_477 2008-04-08 11 +222 val_222 2008-04-08 11 +126 val_126 2008-04-08 11 +90 val_90 2008-04-08 11 +169 val_169 2008-04-08 11 +403 val_403 2008-04-08 11 +400 val_400 2008-04-08 11 +200 val_200 2008-04-08 11 +97 val_97 2008-04-08 11 +238 val_238 2008-04-08 12 +86 val_86 2008-04-08 12 +311 val_311 2008-04-08 12 +27 val_27 2008-04-08 12 +165 val_165 2008-04-08 12 +409 val_409 2008-04-08 12 +255 val_255 2008-04-08 12 +278 val_278 2008-04-08 12 +98 val_98 2008-04-08 12 +484 val_484 2008-04-08 12 +265 val_265 2008-04-08 12 +193 val_193 2008-04-08 12 +401 val_401 2008-04-08 12 +150 val_150 2008-04-08 12 +273 val_273 2008-04-08 12 +224 val_224 2008-04-08 12 +369 val_369 2008-04-08 12 +66 val_66 2008-04-08 12 +128 val_128 2008-04-08 12 +213 val_213 2008-04-08 12 +146 val_146 2008-04-08 12 +406 val_406 2008-04-08 12 +429 val_429 2008-04-08 12 +374 val_374 2008-04-08 12 +152 val_152 2008-04-08 12 +469 val_469 2008-04-08 12 +145 val_145 2008-04-08 12 +495 val_495 2008-04-08 12 +37 val_37 2008-04-08 12 +327 val_327 2008-04-08 12 +281 val_281 2008-04-08 12 +277 val_277 2008-04-08 12 +209 val_209 2008-04-08 12 +15 val_15 2008-04-08 12 +82 val_82 2008-04-08 12 +403 val_403 2008-04-08 12 +166 val_166 2008-04-08 12 +417 val_417 2008-04-08 12 +430 val_430 2008-04-08 12 +252 val_252 2008-04-08 12 +292 val_292 2008-04-08 12 +219 val_219 2008-04-08 12 +287 val_287 2008-04-08 12 +153 val_153 2008-04-08 12 +193 val_193 2008-04-08 12 +338 val_338 2008-04-08 12 +446 val_446 2008-04-08 12 +459 val_459 2008-04-08 12 +394 val_394 2008-04-08 12 +237 val_237 2008-04-08 12 +482 val_482 2008-04-08 12 +174 val_174 2008-04-08 12 +413 val_413 2008-04-08 12 +494 val_494 2008-04-08 12 +207 val_207 2008-04-08 12 +199 val_199 2008-04-08 12 +466 val_466 2008-04-08 12 +208 val_208 2008-04-08 12 +174 val_174 2008-04-08 12 +399 val_399 2008-04-08 12 +396 val_396 2008-04-08 12 +247 val_247 2008-04-08 12 +417 val_417 2008-04-08 12 +489 val_489 2008-04-08 12 +162 val_162 2008-04-08 12 +377 val_377 2008-04-08 12 +397 val_397 2008-04-08 12 +309 val_309 2008-04-08 12 +365 val_365 2008-04-08 12 +266 val_266 2008-04-08 12 +439 val_439 2008-04-08 12 +342 val_342 2008-04-08 12 +367 val_367 2008-04-08 12 +325 val_325 2008-04-08 12 +167 val_167 2008-04-08 12 +195 val_195 2008-04-08 12 +475 val_475 2008-04-08 12 +17 val_17 2008-04-08 12 +113 val_113 2008-04-08 12 +155 val_155 2008-04-08 12 +203 val_203 2008-04-08 12 +339 val_339 2008-04-08 12 +0 val_0 2008-04-08 12 +455 val_455 2008-04-08 12 +128 val_128 2008-04-08 12 +311 val_311 2008-04-08 12 +316 val_316 2008-04-08 12 +57 val_57 2008-04-08 12 +302 val_302 2008-04-08 12 +205 val_205 2008-04-08 12 +149 val_149 2008-04-08 12 +438 val_438 2008-04-08 12 +345 val_345 2008-04-08 12 +129 val_129 2008-04-08 12 +170 val_170 2008-04-08 12 +20 val_20 2008-04-08 12 +489 val_489 2008-04-08 12 +157 val_157 2008-04-08 12 +378 val_378 2008-04-08 12 +221 val_221 2008-04-08 12 +92 val_92 2008-04-08 12 +111 val_111 2008-04-08 12 +47 val_47 2008-04-08 12 +72 val_72 2008-04-08 12 +4 val_4 2008-04-08 12 +280 val_280 2008-04-08 12 +35 val_35 2008-04-08 12 +427 val_427 2008-04-08 12 +277 val_277 2008-04-08 12 +208 val_208 2008-04-08 12 +356 val_356 2008-04-08 12 +399 val_399 2008-04-08 12 +169 val_169 2008-04-08 12 +382 val_382 2008-04-08 12 +498 val_498 2008-04-08 12 +125 val_125 2008-04-08 12 +386 val_386 2008-04-08 12 +437 val_437 2008-04-08 12 +469 val_469 2008-04-08 12 +192 val_192 2008-04-08 12 +286 val_286 2008-04-08 12 +187 val_187 2008-04-08 12 +176 val_176 2008-04-08 12 +54 val_54 2008-04-08 12 +459 val_459 2008-04-08 12 +51 val_51 2008-04-08 12 +138 val_138 2008-04-08 12 +103 val_103 2008-04-08 12 +239 val_239 2008-04-08 12 +213 val_213 2008-04-08 12 +216 val_216 2008-04-08 12 +430 val_430 2008-04-08 12 +278 val_278 2008-04-08 12 +176 val_176 2008-04-08 12 +289 val_289 2008-04-08 12 +221 val_221 2008-04-08 12 +65 val_65 2008-04-08 12 +318 val_318 2008-04-08 12 +332 val_332 2008-04-08 12 +311 val_311 2008-04-08 12 +275 val_275 2008-04-08 12 +137 val_137 2008-04-08 12 +241 val_241 2008-04-08 12 +83 val_83 2008-04-08 12 +333 val_333 2008-04-08 12 +180 val_180 2008-04-08 12 +284 val_284 2008-04-08 12 +12 val_12 2008-04-08 12 +230 val_230 2008-04-08 12 +181 val_181 2008-04-08 12 +67 val_67 2008-04-08 12 +260 val_260 2008-04-08 12 +404 val_404 2008-04-08 12 +384 val_384 2008-04-08 12 +489 val_489 2008-04-08 12 +353 val_353 2008-04-08 12 +373 val_373 2008-04-08 12 +272 val_272 2008-04-08 12 +138 val_138 2008-04-08 12 +217 val_217 2008-04-08 12 +84 val_84 2008-04-08 12 +348 val_348 2008-04-08 12 +466 val_466 2008-04-08 12 +58 val_58 2008-04-08 12 +8 val_8 2008-04-08 12 +411 val_411 2008-04-08 12 +230 val_230 2008-04-08 12 +208 val_208 2008-04-08 12 +348 val_348 2008-04-08 12 +24 val_24 2008-04-08 12 +463 val_463 2008-04-08 12 +431 val_431 2008-04-08 12 +179 val_179 2008-04-08 12 +172 val_172 2008-04-08 12 +42 val_42 2008-04-08 12 +129 val_129 2008-04-08 12 +158 val_158 2008-04-08 12 +119 val_119 2008-04-08 12 +496 val_496 2008-04-08 12 +0 val_0 2008-04-08 12 +322 val_322 2008-04-08 12 +197 val_197 2008-04-08 12 +468 val_468 2008-04-08 12 +393 val_393 2008-04-08 12 +454 val_454 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +199 val_199 2008-04-08 12 +191 val_191 2008-04-08 12 +418 val_418 2008-04-08 12 +96 val_96 2008-04-08 12 +26 val_26 2008-04-08 12 +165 val_165 2008-04-08 12 +327 val_327 2008-04-08 12 +230 val_230 2008-04-08 12 +205 val_205 2008-04-08 12 +120 val_120 2008-04-08 12 +131 val_131 2008-04-08 12 +51 val_51 2008-04-08 12 +404 val_404 2008-04-08 12 +43 val_43 2008-04-08 12 +436 val_436 2008-04-08 12 +156 val_156 2008-04-08 12 +469 val_469 2008-04-08 12 +468 val_468 2008-04-08 12 +308 val_308 2008-04-08 12 +95 val_95 2008-04-08 12 +196 val_196 2008-04-08 12 +288 val_288 2008-04-08 12 +481 val_481 2008-04-08 12 +457 val_457 2008-04-08 12 +98 val_98 2008-04-08 12 +282 val_282 2008-04-08 12 +197 val_197 2008-04-08 12 +187 val_187 2008-04-08 12 +318 val_318 2008-04-08 12 +318 val_318 2008-04-08 12 +409 val_409 2008-04-08 12 +470 val_470 2008-04-08 12 +137 val_137 2008-04-08 12 +369 val_369 2008-04-08 12 +316 val_316 2008-04-08 12 +169 val_169 2008-04-08 12 +413 val_413 2008-04-08 12 +85 val_85 2008-04-08 12 +77 val_77 2008-04-08 12 +0 val_0 2008-04-08 12 +490 val_490 2008-04-08 12 +87 val_87 2008-04-08 12 +364 val_364 2008-04-08 12 +179 val_179 2008-04-08 12 +118 val_118 2008-04-08 12 +134 val_134 2008-04-08 12 +395 val_395 2008-04-08 12 +282 val_282 2008-04-08 12 +138 val_138 2008-04-08 12 +238 val_238 2008-04-08 12 +419 val_419 2008-04-08 12 +15 val_15 2008-04-08 12 +118 val_118 2008-04-08 12 +72 val_72 2008-04-08 12 +90 val_90 2008-04-08 12 +307 val_307 2008-04-08 12 +19 val_19 2008-04-08 12 +435 val_435 2008-04-08 12 +10 val_10 2008-04-08 12 +277 val_277 2008-04-08 12 +273 val_273 2008-04-08 12 +306 val_306 2008-04-08 12 +224 val_224 2008-04-08 12 +309 val_309 2008-04-08 12 +389 val_389 2008-04-08 12 +327 val_327 2008-04-08 12 +242 val_242 2008-04-08 12 +369 val_369 2008-04-08 12 +392 val_392 2008-04-08 12 +272 val_272 2008-04-08 12 +331 val_331 2008-04-08 12 +401 val_401 2008-04-08 12 +242 val_242 2008-04-08 12 +452 val_452 2008-04-08 12 +177 val_177 2008-04-08 12 +226 val_226 2008-04-08 12 +5 val_5 2008-04-08 12 +497 val_497 2008-04-08 12 +402 val_402 2008-04-08 12 +396 val_396 2008-04-08 12 +317 val_317 2008-04-08 12 +395 val_395 2008-04-08 12 +58 val_58 2008-04-08 12 +35 val_35 2008-04-08 12 +336 val_336 2008-04-08 12 +95 val_95 2008-04-08 12 +11 val_11 2008-04-08 12 +168 val_168 2008-04-08 12 +34 val_34 2008-04-08 12 +229 val_229 2008-04-08 12 +233 val_233 2008-04-08 12 +143 val_143 2008-04-08 12 +472 val_472 2008-04-08 12 +322 val_322 2008-04-08 12 +498 val_498 2008-04-08 12 +160 val_160 2008-04-08 12 +195 val_195 2008-04-08 12 +42 val_42 2008-04-08 12 +321 val_321 2008-04-08 12 +430 val_430 2008-04-08 12 +119 val_119 2008-04-08 12 +489 val_489 2008-04-08 12 +458 val_458 2008-04-08 12 +78 val_78 2008-04-08 12 +76 val_76 2008-04-08 12 +41 val_41 2008-04-08 12 +223 val_223 2008-04-08 12 +492 val_492 2008-04-08 12 +149 val_149 2008-04-08 12 +449 val_449 2008-04-08 12 +218 val_218 2008-04-08 12 +228 val_228 2008-04-08 12 +138 val_138 2008-04-08 12 +453 val_453 2008-04-08 12 +30 val_30 2008-04-08 12 +209 val_209 2008-04-08 12 +64 val_64 2008-04-08 12 +468 val_468 2008-04-08 12 +76 val_76 2008-04-08 12 +74 val_74 2008-04-08 12 +342 val_342 2008-04-08 12 +69 val_69 2008-04-08 12 +230 val_230 2008-04-08 12 +33 val_33 2008-04-08 12 +368 val_368 2008-04-08 12 +103 val_103 2008-04-08 12 +296 val_296 2008-04-08 12 +113 val_113 2008-04-08 12 +216 val_216 2008-04-08 12 +367 val_367 2008-04-08 12 +344 val_344 2008-04-08 12 +167 val_167 2008-04-08 12 +274 val_274 2008-04-08 12 +219 val_219 2008-04-08 12 +239 val_239 2008-04-08 12 +485 val_485 2008-04-08 12 +116 val_116 2008-04-08 12 +223 val_223 2008-04-08 12 +256 val_256 2008-04-08 12 +263 val_263 2008-04-08 12 +70 val_70 2008-04-08 12 +487 val_487 2008-04-08 12 +480 val_480 2008-04-08 12 +401 val_401 2008-04-08 12 +288 val_288 2008-04-08 12 +191 val_191 2008-04-08 12 +5 val_5 2008-04-08 12 +244 val_244 2008-04-08 12 +438 val_438 2008-04-08 12 +128 val_128 2008-04-08 12 +467 val_467 2008-04-08 12 +432 val_432 2008-04-08 12 +202 val_202 2008-04-08 12 +316 val_316 2008-04-08 12 +229 val_229 2008-04-08 12 +469 val_469 2008-04-08 12 +463 val_463 2008-04-08 12 +280 val_280 2008-04-08 12 +2 val_2 2008-04-08 12 +35 val_35 2008-04-08 12 +283 val_283 2008-04-08 12 +331 val_331 2008-04-08 12 +235 val_235 2008-04-08 12 +80 val_80 2008-04-08 12 +44 val_44 2008-04-08 12 +193 val_193 2008-04-08 12 +321 val_321 2008-04-08 12 +335 val_335 2008-04-08 12 +104 val_104 2008-04-08 12 +466 val_466 2008-04-08 12 +366 val_366 2008-04-08 12 +175 val_175 2008-04-08 12 +403 val_403 2008-04-08 12 +483 val_483 2008-04-08 12 +53 val_53 2008-04-08 12 +105 val_105 2008-04-08 12 +257 val_257 2008-04-08 12 +406 val_406 2008-04-08 12 +409 val_409 2008-04-08 12 +190 val_190 2008-04-08 12 +406 val_406 2008-04-08 12 +401 val_401 2008-04-08 12 +114 val_114 2008-04-08 12 +258 val_258 2008-04-08 12 +90 val_90 2008-04-08 12 +203 val_203 2008-04-08 12 +262 val_262 2008-04-08 12 +348 val_348 2008-04-08 12 +424 val_424 2008-04-08 12 +12 val_12 2008-04-08 12 +396 val_396 2008-04-08 12 +201 val_201 2008-04-08 12 +217 val_217 2008-04-08 12 +164 val_164 2008-04-08 12 +431 val_431 2008-04-08 12 +454 val_454 2008-04-08 12 +478 val_478 2008-04-08 12 +298 val_298 2008-04-08 12 +125 val_125 2008-04-08 12 +431 val_431 2008-04-08 12 +164 val_164 2008-04-08 12 +424 val_424 2008-04-08 12 +187 val_187 2008-04-08 12 +382 val_382 2008-04-08 12 +5 val_5 2008-04-08 12 +70 val_70 2008-04-08 12 +397 val_397 2008-04-08 12 +480 val_480 2008-04-08 12 +291 val_291 2008-04-08 12 +24 val_24 2008-04-08 12 +351 val_351 2008-04-08 12 +255 val_255 2008-04-08 12 +104 val_104 2008-04-08 12 +70 val_70 2008-04-08 12 +163 val_163 2008-04-08 12 +438 val_438 2008-04-08 12 +119 val_119 2008-04-08 12 +414 val_414 2008-04-08 12 +200 val_200 2008-04-08 12 +491 val_491 2008-04-08 12 +237 val_237 2008-04-08 12 +439 val_439 2008-04-08 12 +360 val_360 2008-04-08 12 +248 val_248 2008-04-08 12 +479 val_479 2008-04-08 12 +305 val_305 2008-04-08 12 +417 val_417 2008-04-08 12 +199 val_199 2008-04-08 12 +444 val_444 2008-04-08 12 +120 val_120 2008-04-08 12 +429 val_429 2008-04-08 12 +169 val_169 2008-04-08 12 +443 val_443 2008-04-08 12 +323 val_323 2008-04-08 12 +325 val_325 2008-04-08 12 +277 val_277 2008-04-08 12 +230 val_230 2008-04-08 12 +478 val_478 2008-04-08 12 +178 val_178 2008-04-08 12 +468 val_468 2008-04-08 12 +310 val_310 2008-04-08 12 +317 val_317 2008-04-08 12 +333 val_333 2008-04-08 12 +493 val_493 2008-04-08 12 +460 val_460 2008-04-08 12 +207 val_207 2008-04-08 12 +249 val_249 2008-04-08 12 +265 val_265 2008-04-08 12 +480 val_480 2008-04-08 12 +83 val_83 2008-04-08 12 +136 val_136 2008-04-08 12 +353 val_353 2008-04-08 12 +172 val_172 2008-04-08 12 +214 val_214 2008-04-08 12 +462 val_462 2008-04-08 12 +233 val_233 2008-04-08 12 +406 val_406 2008-04-08 12 +133 val_133 2008-04-08 12 +175 val_175 2008-04-08 12 +189 val_189 2008-04-08 12 +454 val_454 2008-04-08 12 +375 val_375 2008-04-08 12 +401 val_401 2008-04-08 12 +421 val_421 2008-04-08 12 +407 val_407 2008-04-08 12 +384 val_384 2008-04-08 12 +256 val_256 2008-04-08 12 +26 val_26 2008-04-08 12 +134 val_134 2008-04-08 12 +67 val_67 2008-04-08 12 +384 val_384 2008-04-08 12 +379 val_379 2008-04-08 12 +18 val_18 2008-04-08 12 +462 val_462 2008-04-08 12 +492 val_492 2008-04-08 12 +100 val_100 2008-04-08 12 +298 val_298 2008-04-08 12 +9 val_9 2008-04-08 12 +341 val_341 2008-04-08 12 +498 val_498 2008-04-08 12 +146 val_146 2008-04-08 12 +458 val_458 2008-04-08 12 +362 val_362 2008-04-08 12 +186 val_186 2008-04-08 12 +285 val_285 2008-04-08 12 +348 val_348 2008-04-08 12 +167 val_167 2008-04-08 12 +18 val_18 2008-04-08 12 +273 val_273 2008-04-08 12 +183 val_183 2008-04-08 12 +281 val_281 2008-04-08 12 +344 val_344 2008-04-08 12 +97 val_97 2008-04-08 12 +469 val_469 2008-04-08 12 +315 val_315 2008-04-08 12 +84 val_84 2008-04-08 12 +28 val_28 2008-04-08 12 +37 val_37 2008-04-08 12 +448 val_448 2008-04-08 12 +152 val_152 2008-04-08 12 +348 val_348 2008-04-08 12 +307 val_307 2008-04-08 12 +194 val_194 2008-04-08 12 +414 val_414 2008-04-08 12 +477 val_477 2008-04-08 12 +222 val_222 2008-04-08 12 +126 val_126 2008-04-08 12 +90 val_90 2008-04-08 12 +169 val_169 2008-04-08 12 +403 val_403 2008-04-08 12 +400 val_400 2008-04-08 12 +200 val_200 2008-04-08 12 +97 val_97 2008-04-08 12 diff --git a/sql/hive/src/test/resources/golden/stats4-14-9c82167763a771c175c656786d545798 b/sql/hive/src/test/resources/golden/stats4-14-9c82167763a771c175c656786d545798 new file mode 100644 index 0000000000000..653516475da22 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-14-9c82167763a771c175c656786d545798 @@ -0,0 +1,1000 @@ +238 val_238 2008-12-31 11 +86 val_86 2008-12-31 11 +311 val_311 2008-12-31 11 +27 val_27 2008-12-31 11 +165 val_165 2008-12-31 11 +409 val_409 2008-12-31 11 +255 val_255 2008-12-31 11 +278 val_278 2008-12-31 11 +98 val_98 2008-12-31 11 +484 val_484 2008-12-31 11 +265 val_265 2008-12-31 11 +193 val_193 2008-12-31 11 +401 val_401 2008-12-31 11 +150 val_150 2008-12-31 11 +273 val_273 2008-12-31 11 +224 val_224 2008-12-31 11 +369 val_369 2008-12-31 11 +66 val_66 2008-12-31 11 +128 val_128 2008-12-31 11 +213 val_213 2008-12-31 11 +146 val_146 2008-12-31 11 +406 val_406 2008-12-31 11 +429 val_429 2008-12-31 11 +374 val_374 2008-12-31 11 +152 val_152 2008-12-31 11 +469 val_469 2008-12-31 11 +145 val_145 2008-12-31 11 +495 val_495 2008-12-31 11 +37 val_37 2008-12-31 11 +327 val_327 2008-12-31 11 +281 val_281 2008-12-31 11 +277 val_277 2008-12-31 11 +209 val_209 2008-12-31 11 +15 val_15 2008-12-31 11 +82 val_82 2008-12-31 11 +403 val_403 2008-12-31 11 +166 val_166 2008-12-31 11 +417 val_417 2008-12-31 11 +430 val_430 2008-12-31 11 +252 val_252 2008-12-31 11 +292 val_292 2008-12-31 11 +219 val_219 2008-12-31 11 +287 val_287 2008-12-31 11 +153 val_153 2008-12-31 11 +193 val_193 2008-12-31 11 +338 val_338 2008-12-31 11 +446 val_446 2008-12-31 11 +459 val_459 2008-12-31 11 +394 val_394 2008-12-31 11 +237 val_237 2008-12-31 11 +482 val_482 2008-12-31 11 +174 val_174 2008-12-31 11 +413 val_413 2008-12-31 11 +494 val_494 2008-12-31 11 +207 val_207 2008-12-31 11 +199 val_199 2008-12-31 11 +466 val_466 2008-12-31 11 +208 val_208 2008-12-31 11 +174 val_174 2008-12-31 11 +399 val_399 2008-12-31 11 +396 val_396 2008-12-31 11 +247 val_247 2008-12-31 11 +417 val_417 2008-12-31 11 +489 val_489 2008-12-31 11 +162 val_162 2008-12-31 11 +377 val_377 2008-12-31 11 +397 val_397 2008-12-31 11 +309 val_309 2008-12-31 11 +365 val_365 2008-12-31 11 +266 val_266 2008-12-31 11 +439 val_439 2008-12-31 11 +342 val_342 2008-12-31 11 +367 val_367 2008-12-31 11 +325 val_325 2008-12-31 11 +167 val_167 2008-12-31 11 +195 val_195 2008-12-31 11 +475 val_475 2008-12-31 11 +17 val_17 2008-12-31 11 +113 val_113 2008-12-31 11 +155 val_155 2008-12-31 11 +203 val_203 2008-12-31 11 +339 val_339 2008-12-31 11 +0 val_0 2008-12-31 11 +455 val_455 2008-12-31 11 +128 val_128 2008-12-31 11 +311 val_311 2008-12-31 11 +316 val_316 2008-12-31 11 +57 val_57 2008-12-31 11 +302 val_302 2008-12-31 11 +205 val_205 2008-12-31 11 +149 val_149 2008-12-31 11 +438 val_438 2008-12-31 11 +345 val_345 2008-12-31 11 +129 val_129 2008-12-31 11 +170 val_170 2008-12-31 11 +20 val_20 2008-12-31 11 +489 val_489 2008-12-31 11 +157 val_157 2008-12-31 11 +378 val_378 2008-12-31 11 +221 val_221 2008-12-31 11 +92 val_92 2008-12-31 11 +111 val_111 2008-12-31 11 +47 val_47 2008-12-31 11 +72 val_72 2008-12-31 11 +4 val_4 2008-12-31 11 +280 val_280 2008-12-31 11 +35 val_35 2008-12-31 11 +427 val_427 2008-12-31 11 +277 val_277 2008-12-31 11 +208 val_208 2008-12-31 11 +356 val_356 2008-12-31 11 +399 val_399 2008-12-31 11 +169 val_169 2008-12-31 11 +382 val_382 2008-12-31 11 +498 val_498 2008-12-31 11 +125 val_125 2008-12-31 11 +386 val_386 2008-12-31 11 +437 val_437 2008-12-31 11 +469 val_469 2008-12-31 11 +192 val_192 2008-12-31 11 +286 val_286 2008-12-31 11 +187 val_187 2008-12-31 11 +176 val_176 2008-12-31 11 +54 val_54 2008-12-31 11 +459 val_459 2008-12-31 11 +51 val_51 2008-12-31 11 +138 val_138 2008-12-31 11 +103 val_103 2008-12-31 11 +239 val_239 2008-12-31 11 +213 val_213 2008-12-31 11 +216 val_216 2008-12-31 11 +430 val_430 2008-12-31 11 +278 val_278 2008-12-31 11 +176 val_176 2008-12-31 11 +289 val_289 2008-12-31 11 +221 val_221 2008-12-31 11 +65 val_65 2008-12-31 11 +318 val_318 2008-12-31 11 +332 val_332 2008-12-31 11 +311 val_311 2008-12-31 11 +275 val_275 2008-12-31 11 +137 val_137 2008-12-31 11 +241 val_241 2008-12-31 11 +83 val_83 2008-12-31 11 +333 val_333 2008-12-31 11 +180 val_180 2008-12-31 11 +284 val_284 2008-12-31 11 +12 val_12 2008-12-31 11 +230 val_230 2008-12-31 11 +181 val_181 2008-12-31 11 +67 val_67 2008-12-31 11 +260 val_260 2008-12-31 11 +404 val_404 2008-12-31 11 +384 val_384 2008-12-31 11 +489 val_489 2008-12-31 11 +353 val_353 2008-12-31 11 +373 val_373 2008-12-31 11 +272 val_272 2008-12-31 11 +138 val_138 2008-12-31 11 +217 val_217 2008-12-31 11 +84 val_84 2008-12-31 11 +348 val_348 2008-12-31 11 +466 val_466 2008-12-31 11 +58 val_58 2008-12-31 11 +8 val_8 2008-12-31 11 +411 val_411 2008-12-31 11 +230 val_230 2008-12-31 11 +208 val_208 2008-12-31 11 +348 val_348 2008-12-31 11 +24 val_24 2008-12-31 11 +463 val_463 2008-12-31 11 +431 val_431 2008-12-31 11 +179 val_179 2008-12-31 11 +172 val_172 2008-12-31 11 +42 val_42 2008-12-31 11 +129 val_129 2008-12-31 11 +158 val_158 2008-12-31 11 +119 val_119 2008-12-31 11 +496 val_496 2008-12-31 11 +0 val_0 2008-12-31 11 +322 val_322 2008-12-31 11 +197 val_197 2008-12-31 11 +468 val_468 2008-12-31 11 +393 val_393 2008-12-31 11 +454 val_454 2008-12-31 11 +100 val_100 2008-12-31 11 +298 val_298 2008-12-31 11 +199 val_199 2008-12-31 11 +191 val_191 2008-12-31 11 +418 val_418 2008-12-31 11 +96 val_96 2008-12-31 11 +26 val_26 2008-12-31 11 +165 val_165 2008-12-31 11 +327 val_327 2008-12-31 11 +230 val_230 2008-12-31 11 +205 val_205 2008-12-31 11 +120 val_120 2008-12-31 11 +131 val_131 2008-12-31 11 +51 val_51 2008-12-31 11 +404 val_404 2008-12-31 11 +43 val_43 2008-12-31 11 +436 val_436 2008-12-31 11 +156 val_156 2008-12-31 11 +469 val_469 2008-12-31 11 +468 val_468 2008-12-31 11 +308 val_308 2008-12-31 11 +95 val_95 2008-12-31 11 +196 val_196 2008-12-31 11 +288 val_288 2008-12-31 11 +481 val_481 2008-12-31 11 +457 val_457 2008-12-31 11 +98 val_98 2008-12-31 11 +282 val_282 2008-12-31 11 +197 val_197 2008-12-31 11 +187 val_187 2008-12-31 11 +318 val_318 2008-12-31 11 +318 val_318 2008-12-31 11 +409 val_409 2008-12-31 11 +470 val_470 2008-12-31 11 +137 val_137 2008-12-31 11 +369 val_369 2008-12-31 11 +316 val_316 2008-12-31 11 +169 val_169 2008-12-31 11 +413 val_413 2008-12-31 11 +85 val_85 2008-12-31 11 +77 val_77 2008-12-31 11 +0 val_0 2008-12-31 11 +490 val_490 2008-12-31 11 +87 val_87 2008-12-31 11 +364 val_364 2008-12-31 11 +179 val_179 2008-12-31 11 +118 val_118 2008-12-31 11 +134 val_134 2008-12-31 11 +395 val_395 2008-12-31 11 +282 val_282 2008-12-31 11 +138 val_138 2008-12-31 11 +238 val_238 2008-12-31 11 +419 val_419 2008-12-31 11 +15 val_15 2008-12-31 11 +118 val_118 2008-12-31 11 +72 val_72 2008-12-31 11 +90 val_90 2008-12-31 11 +307 val_307 2008-12-31 11 +19 val_19 2008-12-31 11 +435 val_435 2008-12-31 11 +10 val_10 2008-12-31 11 +277 val_277 2008-12-31 11 +273 val_273 2008-12-31 11 +306 val_306 2008-12-31 11 +224 val_224 2008-12-31 11 +309 val_309 2008-12-31 11 +389 val_389 2008-12-31 11 +327 val_327 2008-12-31 11 +242 val_242 2008-12-31 11 +369 val_369 2008-12-31 11 +392 val_392 2008-12-31 11 +272 val_272 2008-12-31 11 +331 val_331 2008-12-31 11 +401 val_401 2008-12-31 11 +242 val_242 2008-12-31 11 +452 val_452 2008-12-31 11 +177 val_177 2008-12-31 11 +226 val_226 2008-12-31 11 +5 val_5 2008-12-31 11 +497 val_497 2008-12-31 11 +402 val_402 2008-12-31 11 +396 val_396 2008-12-31 11 +317 val_317 2008-12-31 11 +395 val_395 2008-12-31 11 +58 val_58 2008-12-31 11 +35 val_35 2008-12-31 11 +336 val_336 2008-12-31 11 +95 val_95 2008-12-31 11 +11 val_11 2008-12-31 11 +168 val_168 2008-12-31 11 +34 val_34 2008-12-31 11 +229 val_229 2008-12-31 11 +233 val_233 2008-12-31 11 +143 val_143 2008-12-31 11 +472 val_472 2008-12-31 11 +322 val_322 2008-12-31 11 +498 val_498 2008-12-31 11 +160 val_160 2008-12-31 11 +195 val_195 2008-12-31 11 +42 val_42 2008-12-31 11 +321 val_321 2008-12-31 11 +430 val_430 2008-12-31 11 +119 val_119 2008-12-31 11 +489 val_489 2008-12-31 11 +458 val_458 2008-12-31 11 +78 val_78 2008-12-31 11 +76 val_76 2008-12-31 11 +41 val_41 2008-12-31 11 +223 val_223 2008-12-31 11 +492 val_492 2008-12-31 11 +149 val_149 2008-12-31 11 +449 val_449 2008-12-31 11 +218 val_218 2008-12-31 11 +228 val_228 2008-12-31 11 +138 val_138 2008-12-31 11 +453 val_453 2008-12-31 11 +30 val_30 2008-12-31 11 +209 val_209 2008-12-31 11 +64 val_64 2008-12-31 11 +468 val_468 2008-12-31 11 +76 val_76 2008-12-31 11 +74 val_74 2008-12-31 11 +342 val_342 2008-12-31 11 +69 val_69 2008-12-31 11 +230 val_230 2008-12-31 11 +33 val_33 2008-12-31 11 +368 val_368 2008-12-31 11 +103 val_103 2008-12-31 11 +296 val_296 2008-12-31 11 +113 val_113 2008-12-31 11 +216 val_216 2008-12-31 11 +367 val_367 2008-12-31 11 +344 val_344 2008-12-31 11 +167 val_167 2008-12-31 11 +274 val_274 2008-12-31 11 +219 val_219 2008-12-31 11 +239 val_239 2008-12-31 11 +485 val_485 2008-12-31 11 +116 val_116 2008-12-31 11 +223 val_223 2008-12-31 11 +256 val_256 2008-12-31 11 +263 val_263 2008-12-31 11 +70 val_70 2008-12-31 11 +487 val_487 2008-12-31 11 +480 val_480 2008-12-31 11 +401 val_401 2008-12-31 11 +288 val_288 2008-12-31 11 +191 val_191 2008-12-31 11 +5 val_5 2008-12-31 11 +244 val_244 2008-12-31 11 +438 val_438 2008-12-31 11 +128 val_128 2008-12-31 11 +467 val_467 2008-12-31 11 +432 val_432 2008-12-31 11 +202 val_202 2008-12-31 11 +316 val_316 2008-12-31 11 +229 val_229 2008-12-31 11 +469 val_469 2008-12-31 11 +463 val_463 2008-12-31 11 +280 val_280 2008-12-31 11 +2 val_2 2008-12-31 11 +35 val_35 2008-12-31 11 +283 val_283 2008-12-31 11 +331 val_331 2008-12-31 11 +235 val_235 2008-12-31 11 +80 val_80 2008-12-31 11 +44 val_44 2008-12-31 11 +193 val_193 2008-12-31 11 +321 val_321 2008-12-31 11 +335 val_335 2008-12-31 11 +104 val_104 2008-12-31 11 +466 val_466 2008-12-31 11 +366 val_366 2008-12-31 11 +175 val_175 2008-12-31 11 +403 val_403 2008-12-31 11 +483 val_483 2008-12-31 11 +53 val_53 2008-12-31 11 +105 val_105 2008-12-31 11 +257 val_257 2008-12-31 11 +406 val_406 2008-12-31 11 +409 val_409 2008-12-31 11 +190 val_190 2008-12-31 11 +406 val_406 2008-12-31 11 +401 val_401 2008-12-31 11 +114 val_114 2008-12-31 11 +258 val_258 2008-12-31 11 +90 val_90 2008-12-31 11 +203 val_203 2008-12-31 11 +262 val_262 2008-12-31 11 +348 val_348 2008-12-31 11 +424 val_424 2008-12-31 11 +12 val_12 2008-12-31 11 +396 val_396 2008-12-31 11 +201 val_201 2008-12-31 11 +217 val_217 2008-12-31 11 +164 val_164 2008-12-31 11 +431 val_431 2008-12-31 11 +454 val_454 2008-12-31 11 +478 val_478 2008-12-31 11 +298 val_298 2008-12-31 11 +125 val_125 2008-12-31 11 +431 val_431 2008-12-31 11 +164 val_164 2008-12-31 11 +424 val_424 2008-12-31 11 +187 val_187 2008-12-31 11 +382 val_382 2008-12-31 11 +5 val_5 2008-12-31 11 +70 val_70 2008-12-31 11 +397 val_397 2008-12-31 11 +480 val_480 2008-12-31 11 +291 val_291 2008-12-31 11 +24 val_24 2008-12-31 11 +351 val_351 2008-12-31 11 +255 val_255 2008-12-31 11 +104 val_104 2008-12-31 11 +70 val_70 2008-12-31 11 +163 val_163 2008-12-31 11 +438 val_438 2008-12-31 11 +119 val_119 2008-12-31 11 +414 val_414 2008-12-31 11 +200 val_200 2008-12-31 11 +491 val_491 2008-12-31 11 +237 val_237 2008-12-31 11 +439 val_439 2008-12-31 11 +360 val_360 2008-12-31 11 +248 val_248 2008-12-31 11 +479 val_479 2008-12-31 11 +305 val_305 2008-12-31 11 +417 val_417 2008-12-31 11 +199 val_199 2008-12-31 11 +444 val_444 2008-12-31 11 +120 val_120 2008-12-31 11 +429 val_429 2008-12-31 11 +169 val_169 2008-12-31 11 +443 val_443 2008-12-31 11 +323 val_323 2008-12-31 11 +325 val_325 2008-12-31 11 +277 val_277 2008-12-31 11 +230 val_230 2008-12-31 11 +478 val_478 2008-12-31 11 +178 val_178 2008-12-31 11 +468 val_468 2008-12-31 11 +310 val_310 2008-12-31 11 +317 val_317 2008-12-31 11 +333 val_333 2008-12-31 11 +493 val_493 2008-12-31 11 +460 val_460 2008-12-31 11 +207 val_207 2008-12-31 11 +249 val_249 2008-12-31 11 +265 val_265 2008-12-31 11 +480 val_480 2008-12-31 11 +83 val_83 2008-12-31 11 +136 val_136 2008-12-31 11 +353 val_353 2008-12-31 11 +172 val_172 2008-12-31 11 +214 val_214 2008-12-31 11 +462 val_462 2008-12-31 11 +233 val_233 2008-12-31 11 +406 val_406 2008-12-31 11 +133 val_133 2008-12-31 11 +175 val_175 2008-12-31 11 +189 val_189 2008-12-31 11 +454 val_454 2008-12-31 11 +375 val_375 2008-12-31 11 +401 val_401 2008-12-31 11 +421 val_421 2008-12-31 11 +407 val_407 2008-12-31 11 +384 val_384 2008-12-31 11 +256 val_256 2008-12-31 11 +26 val_26 2008-12-31 11 +134 val_134 2008-12-31 11 +67 val_67 2008-12-31 11 +384 val_384 2008-12-31 11 +379 val_379 2008-12-31 11 +18 val_18 2008-12-31 11 +462 val_462 2008-12-31 11 +492 val_492 2008-12-31 11 +100 val_100 2008-12-31 11 +298 val_298 2008-12-31 11 +9 val_9 2008-12-31 11 +341 val_341 2008-12-31 11 +498 val_498 2008-12-31 11 +146 val_146 2008-12-31 11 +458 val_458 2008-12-31 11 +362 val_362 2008-12-31 11 +186 val_186 2008-12-31 11 +285 val_285 2008-12-31 11 +348 val_348 2008-12-31 11 +167 val_167 2008-12-31 11 +18 val_18 2008-12-31 11 +273 val_273 2008-12-31 11 +183 val_183 2008-12-31 11 +281 val_281 2008-12-31 11 +344 val_344 2008-12-31 11 +97 val_97 2008-12-31 11 +469 val_469 2008-12-31 11 +315 val_315 2008-12-31 11 +84 val_84 2008-12-31 11 +28 val_28 2008-12-31 11 +37 val_37 2008-12-31 11 +448 val_448 2008-12-31 11 +152 val_152 2008-12-31 11 +348 val_348 2008-12-31 11 +307 val_307 2008-12-31 11 +194 val_194 2008-12-31 11 +414 val_414 2008-12-31 11 +477 val_477 2008-12-31 11 +222 val_222 2008-12-31 11 +126 val_126 2008-12-31 11 +90 val_90 2008-12-31 11 +169 val_169 2008-12-31 11 +403 val_403 2008-12-31 11 +400 val_400 2008-12-31 11 +200 val_200 2008-12-31 11 +97 val_97 2008-12-31 11 +238 val_238 2008-12-31 12 +86 val_86 2008-12-31 12 +311 val_311 2008-12-31 12 +27 val_27 2008-12-31 12 +165 val_165 2008-12-31 12 +409 val_409 2008-12-31 12 +255 val_255 2008-12-31 12 +278 val_278 2008-12-31 12 +98 val_98 2008-12-31 12 +484 val_484 2008-12-31 12 +265 val_265 2008-12-31 12 +193 val_193 2008-12-31 12 +401 val_401 2008-12-31 12 +150 val_150 2008-12-31 12 +273 val_273 2008-12-31 12 +224 val_224 2008-12-31 12 +369 val_369 2008-12-31 12 +66 val_66 2008-12-31 12 +128 val_128 2008-12-31 12 +213 val_213 2008-12-31 12 +146 val_146 2008-12-31 12 +406 val_406 2008-12-31 12 +429 val_429 2008-12-31 12 +374 val_374 2008-12-31 12 +152 val_152 2008-12-31 12 +469 val_469 2008-12-31 12 +145 val_145 2008-12-31 12 +495 val_495 2008-12-31 12 +37 val_37 2008-12-31 12 +327 val_327 2008-12-31 12 +281 val_281 2008-12-31 12 +277 val_277 2008-12-31 12 +209 val_209 2008-12-31 12 +15 val_15 2008-12-31 12 +82 val_82 2008-12-31 12 +403 val_403 2008-12-31 12 +166 val_166 2008-12-31 12 +417 val_417 2008-12-31 12 +430 val_430 2008-12-31 12 +252 val_252 2008-12-31 12 +292 val_292 2008-12-31 12 +219 val_219 2008-12-31 12 +287 val_287 2008-12-31 12 +153 val_153 2008-12-31 12 +193 val_193 2008-12-31 12 +338 val_338 2008-12-31 12 +446 val_446 2008-12-31 12 +459 val_459 2008-12-31 12 +394 val_394 2008-12-31 12 +237 val_237 2008-12-31 12 +482 val_482 2008-12-31 12 +174 val_174 2008-12-31 12 +413 val_413 2008-12-31 12 +494 val_494 2008-12-31 12 +207 val_207 2008-12-31 12 +199 val_199 2008-12-31 12 +466 val_466 2008-12-31 12 +208 val_208 2008-12-31 12 +174 val_174 2008-12-31 12 +399 val_399 2008-12-31 12 +396 val_396 2008-12-31 12 +247 val_247 2008-12-31 12 +417 val_417 2008-12-31 12 +489 val_489 2008-12-31 12 +162 val_162 2008-12-31 12 +377 val_377 2008-12-31 12 +397 val_397 2008-12-31 12 +309 val_309 2008-12-31 12 +365 val_365 2008-12-31 12 +266 val_266 2008-12-31 12 +439 val_439 2008-12-31 12 +342 val_342 2008-12-31 12 +367 val_367 2008-12-31 12 +325 val_325 2008-12-31 12 +167 val_167 2008-12-31 12 +195 val_195 2008-12-31 12 +475 val_475 2008-12-31 12 +17 val_17 2008-12-31 12 +113 val_113 2008-12-31 12 +155 val_155 2008-12-31 12 +203 val_203 2008-12-31 12 +339 val_339 2008-12-31 12 +0 val_0 2008-12-31 12 +455 val_455 2008-12-31 12 +128 val_128 2008-12-31 12 +311 val_311 2008-12-31 12 +316 val_316 2008-12-31 12 +57 val_57 2008-12-31 12 +302 val_302 2008-12-31 12 +205 val_205 2008-12-31 12 +149 val_149 2008-12-31 12 +438 val_438 2008-12-31 12 +345 val_345 2008-12-31 12 +129 val_129 2008-12-31 12 +170 val_170 2008-12-31 12 +20 val_20 2008-12-31 12 +489 val_489 2008-12-31 12 +157 val_157 2008-12-31 12 +378 val_378 2008-12-31 12 +221 val_221 2008-12-31 12 +92 val_92 2008-12-31 12 +111 val_111 2008-12-31 12 +47 val_47 2008-12-31 12 +72 val_72 2008-12-31 12 +4 val_4 2008-12-31 12 +280 val_280 2008-12-31 12 +35 val_35 2008-12-31 12 +427 val_427 2008-12-31 12 +277 val_277 2008-12-31 12 +208 val_208 2008-12-31 12 +356 val_356 2008-12-31 12 +399 val_399 2008-12-31 12 +169 val_169 2008-12-31 12 +382 val_382 2008-12-31 12 +498 val_498 2008-12-31 12 +125 val_125 2008-12-31 12 +386 val_386 2008-12-31 12 +437 val_437 2008-12-31 12 +469 val_469 2008-12-31 12 +192 val_192 2008-12-31 12 +286 val_286 2008-12-31 12 +187 val_187 2008-12-31 12 +176 val_176 2008-12-31 12 +54 val_54 2008-12-31 12 +459 val_459 2008-12-31 12 +51 val_51 2008-12-31 12 +138 val_138 2008-12-31 12 +103 val_103 2008-12-31 12 +239 val_239 2008-12-31 12 +213 val_213 2008-12-31 12 +216 val_216 2008-12-31 12 +430 val_430 2008-12-31 12 +278 val_278 2008-12-31 12 +176 val_176 2008-12-31 12 +289 val_289 2008-12-31 12 +221 val_221 2008-12-31 12 +65 val_65 2008-12-31 12 +318 val_318 2008-12-31 12 +332 val_332 2008-12-31 12 +311 val_311 2008-12-31 12 +275 val_275 2008-12-31 12 +137 val_137 2008-12-31 12 +241 val_241 2008-12-31 12 +83 val_83 2008-12-31 12 +333 val_333 2008-12-31 12 +180 val_180 2008-12-31 12 +284 val_284 2008-12-31 12 +12 val_12 2008-12-31 12 +230 val_230 2008-12-31 12 +181 val_181 2008-12-31 12 +67 val_67 2008-12-31 12 +260 val_260 2008-12-31 12 +404 val_404 2008-12-31 12 +384 val_384 2008-12-31 12 +489 val_489 2008-12-31 12 +353 val_353 2008-12-31 12 +373 val_373 2008-12-31 12 +272 val_272 2008-12-31 12 +138 val_138 2008-12-31 12 +217 val_217 2008-12-31 12 +84 val_84 2008-12-31 12 +348 val_348 2008-12-31 12 +466 val_466 2008-12-31 12 +58 val_58 2008-12-31 12 +8 val_8 2008-12-31 12 +411 val_411 2008-12-31 12 +230 val_230 2008-12-31 12 +208 val_208 2008-12-31 12 +348 val_348 2008-12-31 12 +24 val_24 2008-12-31 12 +463 val_463 2008-12-31 12 +431 val_431 2008-12-31 12 +179 val_179 2008-12-31 12 +172 val_172 2008-12-31 12 +42 val_42 2008-12-31 12 +129 val_129 2008-12-31 12 +158 val_158 2008-12-31 12 +119 val_119 2008-12-31 12 +496 val_496 2008-12-31 12 +0 val_0 2008-12-31 12 +322 val_322 2008-12-31 12 +197 val_197 2008-12-31 12 +468 val_468 2008-12-31 12 +393 val_393 2008-12-31 12 +454 val_454 2008-12-31 12 +100 val_100 2008-12-31 12 +298 val_298 2008-12-31 12 +199 val_199 2008-12-31 12 +191 val_191 2008-12-31 12 +418 val_418 2008-12-31 12 +96 val_96 2008-12-31 12 +26 val_26 2008-12-31 12 +165 val_165 2008-12-31 12 +327 val_327 2008-12-31 12 +230 val_230 2008-12-31 12 +205 val_205 2008-12-31 12 +120 val_120 2008-12-31 12 +131 val_131 2008-12-31 12 +51 val_51 2008-12-31 12 +404 val_404 2008-12-31 12 +43 val_43 2008-12-31 12 +436 val_436 2008-12-31 12 +156 val_156 2008-12-31 12 +469 val_469 2008-12-31 12 +468 val_468 2008-12-31 12 +308 val_308 2008-12-31 12 +95 val_95 2008-12-31 12 +196 val_196 2008-12-31 12 +288 val_288 2008-12-31 12 +481 val_481 2008-12-31 12 +457 val_457 2008-12-31 12 +98 val_98 2008-12-31 12 +282 val_282 2008-12-31 12 +197 val_197 2008-12-31 12 +187 val_187 2008-12-31 12 +318 val_318 2008-12-31 12 +318 val_318 2008-12-31 12 +409 val_409 2008-12-31 12 +470 val_470 2008-12-31 12 +137 val_137 2008-12-31 12 +369 val_369 2008-12-31 12 +316 val_316 2008-12-31 12 +169 val_169 2008-12-31 12 +413 val_413 2008-12-31 12 +85 val_85 2008-12-31 12 +77 val_77 2008-12-31 12 +0 val_0 2008-12-31 12 +490 val_490 2008-12-31 12 +87 val_87 2008-12-31 12 +364 val_364 2008-12-31 12 +179 val_179 2008-12-31 12 +118 val_118 2008-12-31 12 +134 val_134 2008-12-31 12 +395 val_395 2008-12-31 12 +282 val_282 2008-12-31 12 +138 val_138 2008-12-31 12 +238 val_238 2008-12-31 12 +419 val_419 2008-12-31 12 +15 val_15 2008-12-31 12 +118 val_118 2008-12-31 12 +72 val_72 2008-12-31 12 +90 val_90 2008-12-31 12 +307 val_307 2008-12-31 12 +19 val_19 2008-12-31 12 +435 val_435 2008-12-31 12 +10 val_10 2008-12-31 12 +277 val_277 2008-12-31 12 +273 val_273 2008-12-31 12 +306 val_306 2008-12-31 12 +224 val_224 2008-12-31 12 +309 val_309 2008-12-31 12 +389 val_389 2008-12-31 12 +327 val_327 2008-12-31 12 +242 val_242 2008-12-31 12 +369 val_369 2008-12-31 12 +392 val_392 2008-12-31 12 +272 val_272 2008-12-31 12 +331 val_331 2008-12-31 12 +401 val_401 2008-12-31 12 +242 val_242 2008-12-31 12 +452 val_452 2008-12-31 12 +177 val_177 2008-12-31 12 +226 val_226 2008-12-31 12 +5 val_5 2008-12-31 12 +497 val_497 2008-12-31 12 +402 val_402 2008-12-31 12 +396 val_396 2008-12-31 12 +317 val_317 2008-12-31 12 +395 val_395 2008-12-31 12 +58 val_58 2008-12-31 12 +35 val_35 2008-12-31 12 +336 val_336 2008-12-31 12 +95 val_95 2008-12-31 12 +11 val_11 2008-12-31 12 +168 val_168 2008-12-31 12 +34 val_34 2008-12-31 12 +229 val_229 2008-12-31 12 +233 val_233 2008-12-31 12 +143 val_143 2008-12-31 12 +472 val_472 2008-12-31 12 +322 val_322 2008-12-31 12 +498 val_498 2008-12-31 12 +160 val_160 2008-12-31 12 +195 val_195 2008-12-31 12 +42 val_42 2008-12-31 12 +321 val_321 2008-12-31 12 +430 val_430 2008-12-31 12 +119 val_119 2008-12-31 12 +489 val_489 2008-12-31 12 +458 val_458 2008-12-31 12 +78 val_78 2008-12-31 12 +76 val_76 2008-12-31 12 +41 val_41 2008-12-31 12 +223 val_223 2008-12-31 12 +492 val_492 2008-12-31 12 +149 val_149 2008-12-31 12 +449 val_449 2008-12-31 12 +218 val_218 2008-12-31 12 +228 val_228 2008-12-31 12 +138 val_138 2008-12-31 12 +453 val_453 2008-12-31 12 +30 val_30 2008-12-31 12 +209 val_209 2008-12-31 12 +64 val_64 2008-12-31 12 +468 val_468 2008-12-31 12 +76 val_76 2008-12-31 12 +74 val_74 2008-12-31 12 +342 val_342 2008-12-31 12 +69 val_69 2008-12-31 12 +230 val_230 2008-12-31 12 +33 val_33 2008-12-31 12 +368 val_368 2008-12-31 12 +103 val_103 2008-12-31 12 +296 val_296 2008-12-31 12 +113 val_113 2008-12-31 12 +216 val_216 2008-12-31 12 +367 val_367 2008-12-31 12 +344 val_344 2008-12-31 12 +167 val_167 2008-12-31 12 +274 val_274 2008-12-31 12 +219 val_219 2008-12-31 12 +239 val_239 2008-12-31 12 +485 val_485 2008-12-31 12 +116 val_116 2008-12-31 12 +223 val_223 2008-12-31 12 +256 val_256 2008-12-31 12 +263 val_263 2008-12-31 12 +70 val_70 2008-12-31 12 +487 val_487 2008-12-31 12 +480 val_480 2008-12-31 12 +401 val_401 2008-12-31 12 +288 val_288 2008-12-31 12 +191 val_191 2008-12-31 12 +5 val_5 2008-12-31 12 +244 val_244 2008-12-31 12 +438 val_438 2008-12-31 12 +128 val_128 2008-12-31 12 +467 val_467 2008-12-31 12 +432 val_432 2008-12-31 12 +202 val_202 2008-12-31 12 +316 val_316 2008-12-31 12 +229 val_229 2008-12-31 12 +469 val_469 2008-12-31 12 +463 val_463 2008-12-31 12 +280 val_280 2008-12-31 12 +2 val_2 2008-12-31 12 +35 val_35 2008-12-31 12 +283 val_283 2008-12-31 12 +331 val_331 2008-12-31 12 +235 val_235 2008-12-31 12 +80 val_80 2008-12-31 12 +44 val_44 2008-12-31 12 +193 val_193 2008-12-31 12 +321 val_321 2008-12-31 12 +335 val_335 2008-12-31 12 +104 val_104 2008-12-31 12 +466 val_466 2008-12-31 12 +366 val_366 2008-12-31 12 +175 val_175 2008-12-31 12 +403 val_403 2008-12-31 12 +483 val_483 2008-12-31 12 +53 val_53 2008-12-31 12 +105 val_105 2008-12-31 12 +257 val_257 2008-12-31 12 +406 val_406 2008-12-31 12 +409 val_409 2008-12-31 12 +190 val_190 2008-12-31 12 +406 val_406 2008-12-31 12 +401 val_401 2008-12-31 12 +114 val_114 2008-12-31 12 +258 val_258 2008-12-31 12 +90 val_90 2008-12-31 12 +203 val_203 2008-12-31 12 +262 val_262 2008-12-31 12 +348 val_348 2008-12-31 12 +424 val_424 2008-12-31 12 +12 val_12 2008-12-31 12 +396 val_396 2008-12-31 12 +201 val_201 2008-12-31 12 +217 val_217 2008-12-31 12 +164 val_164 2008-12-31 12 +431 val_431 2008-12-31 12 +454 val_454 2008-12-31 12 +478 val_478 2008-12-31 12 +298 val_298 2008-12-31 12 +125 val_125 2008-12-31 12 +431 val_431 2008-12-31 12 +164 val_164 2008-12-31 12 +424 val_424 2008-12-31 12 +187 val_187 2008-12-31 12 +382 val_382 2008-12-31 12 +5 val_5 2008-12-31 12 +70 val_70 2008-12-31 12 +397 val_397 2008-12-31 12 +480 val_480 2008-12-31 12 +291 val_291 2008-12-31 12 +24 val_24 2008-12-31 12 +351 val_351 2008-12-31 12 +255 val_255 2008-12-31 12 +104 val_104 2008-12-31 12 +70 val_70 2008-12-31 12 +163 val_163 2008-12-31 12 +438 val_438 2008-12-31 12 +119 val_119 2008-12-31 12 +414 val_414 2008-12-31 12 +200 val_200 2008-12-31 12 +491 val_491 2008-12-31 12 +237 val_237 2008-12-31 12 +439 val_439 2008-12-31 12 +360 val_360 2008-12-31 12 +248 val_248 2008-12-31 12 +479 val_479 2008-12-31 12 +305 val_305 2008-12-31 12 +417 val_417 2008-12-31 12 +199 val_199 2008-12-31 12 +444 val_444 2008-12-31 12 +120 val_120 2008-12-31 12 +429 val_429 2008-12-31 12 +169 val_169 2008-12-31 12 +443 val_443 2008-12-31 12 +323 val_323 2008-12-31 12 +325 val_325 2008-12-31 12 +277 val_277 2008-12-31 12 +230 val_230 2008-12-31 12 +478 val_478 2008-12-31 12 +178 val_178 2008-12-31 12 +468 val_468 2008-12-31 12 +310 val_310 2008-12-31 12 +317 val_317 2008-12-31 12 +333 val_333 2008-12-31 12 +493 val_493 2008-12-31 12 +460 val_460 2008-12-31 12 +207 val_207 2008-12-31 12 +249 val_249 2008-12-31 12 +265 val_265 2008-12-31 12 +480 val_480 2008-12-31 12 +83 val_83 2008-12-31 12 +136 val_136 2008-12-31 12 +353 val_353 2008-12-31 12 +172 val_172 2008-12-31 12 +214 val_214 2008-12-31 12 +462 val_462 2008-12-31 12 +233 val_233 2008-12-31 12 +406 val_406 2008-12-31 12 +133 val_133 2008-12-31 12 +175 val_175 2008-12-31 12 +189 val_189 2008-12-31 12 +454 val_454 2008-12-31 12 +375 val_375 2008-12-31 12 +401 val_401 2008-12-31 12 +421 val_421 2008-12-31 12 +407 val_407 2008-12-31 12 +384 val_384 2008-12-31 12 +256 val_256 2008-12-31 12 +26 val_26 2008-12-31 12 +134 val_134 2008-12-31 12 +67 val_67 2008-12-31 12 +384 val_384 2008-12-31 12 +379 val_379 2008-12-31 12 +18 val_18 2008-12-31 12 +462 val_462 2008-12-31 12 +492 val_492 2008-12-31 12 +100 val_100 2008-12-31 12 +298 val_298 2008-12-31 12 +9 val_9 2008-12-31 12 +341 val_341 2008-12-31 12 +498 val_498 2008-12-31 12 +146 val_146 2008-12-31 12 +458 val_458 2008-12-31 12 +362 val_362 2008-12-31 12 +186 val_186 2008-12-31 12 +285 val_285 2008-12-31 12 +348 val_348 2008-12-31 12 +167 val_167 2008-12-31 12 +18 val_18 2008-12-31 12 +273 val_273 2008-12-31 12 +183 val_183 2008-12-31 12 +281 val_281 2008-12-31 12 +344 val_344 2008-12-31 12 +97 val_97 2008-12-31 12 +469 val_469 2008-12-31 12 +315 val_315 2008-12-31 12 +84 val_84 2008-12-31 12 +28 val_28 2008-12-31 12 +37 val_37 2008-12-31 12 +448 val_448 2008-12-31 12 +152 val_152 2008-12-31 12 +348 val_348 2008-12-31 12 +307 val_307 2008-12-31 12 +194 val_194 2008-12-31 12 +414 val_414 2008-12-31 12 +477 val_477 2008-12-31 12 +222 val_222 2008-12-31 12 +126 val_126 2008-12-31 12 +90 val_90 2008-12-31 12 +169 val_169 2008-12-31 12 +403 val_403 2008-12-31 12 +400 val_400 2008-12-31 12 +200 val_200 2008-12-31 12 +97 val_97 2008-12-31 12 diff --git a/sql/hive/src/test/resources/golden/stats4-15-f02b95f20b526fcf2850b07ca6be4f8c b/sql/hive/src/test/resources/golden/stats4-15-f02b95f20b526fcf2850b07ca6be4f8c new file mode 100644 index 0000000000000..2ac44ee23f45c --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-15-f02b95f20b526fcf2850b07ca6be4f8c @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: nzhang_part1 +CreateTime: Tue Jan 28 02:18:26 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part1/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904306 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats4-16-f2bdfe1d8be2ff6f784fcf1c892e1b70 b/sql/hive/src/test/resources/golden/stats4-16-f2bdfe1d8be2ff6f784fcf1c892e1b70 new file mode 100644 index 0000000000000..f0b07ca89fcb3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-16-f2bdfe1d8be2ff6f784fcf1c892e1b70 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 12] +Database: default +Table: nzhang_part1 +CreateTime: Tue Jan 28 02:18:26 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part1/ds=2008-04-08/hr=12 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904306 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats4-17-746b888d14c1b3fa28aa8549c174f6d9 b/sql/hive/src/test/resources/golden/stats4-17-746b888d14c1b3fa28aa8549c174f6d9 new file mode 100644 index 0000000000000..f94614124bcf6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-17-746b888d14c1b3fa28aa8549c174f6d9 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-12-31, 11] +Database: default +Table: nzhang_part2 +CreateTime: Tue Jan 28 02:18:26 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part2/ds=2008-12-31/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904306 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats4-18-dbe13731de4ab2a3c23343b78525b2f7 b/sql/hive/src/test/resources/golden/stats4-18-dbe13731de4ab2a3c23343b78525b2f7 new file mode 100644 index 0000000000000..f00fb5b3bd491 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-18-dbe13731de4ab2a3c23343b78525b2f7 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-12-31, 12] +Database: default +Table: nzhang_part2 +CreateTime: Tue Jan 28 02:18:26 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part2/ds=2008-12-31/hr=12 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904306 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats4-19-3d752e1f8748ba98bebb2cef3f473cd5 b/sql/hive/src/test/resources/golden/stats4-19-3d752e1f8748ba98bebb2cef3f473cd5 new file mode 100644 index 0000000000000..7335c8d32fa68 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-19-3d752e1f8748ba98bebb2cef3f473cd5 @@ -0,0 +1,39 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:18:17 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part1 +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 2 + numPartitions 2 + numRows 1000 + p3 v3 + rawDataSize 10624 + totalSize 11624 + transient_lastDdlTime 1390904306 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats4-2-463330cf55370dbe92d6ed74ef91302 b/sql/hive/src/test/resources/golden/stats4-2-463330cf55370dbe92d6ed74ef91302 new file mode 100644 index 0000000000000..8c43153cf66f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-2-463330cf55370dbe92d6ed74ef91302 @@ -0,0 +1,4 @@ +ds=2008-04-08/hr=11 +ds=2008-04-08/hr=12 +ds=2008-04-09/hr=11 +ds=2008-04-09/hr=12 diff --git a/sql/hive/src/test/resources/golden/stats4-20-f63000f2c395b935199c9829964f98c1 b/sql/hive/src/test/resources/golden/stats4-20-f63000f2c395b935199c9829964f98c1 new file mode 100644 index 0000000000000..674cd9b0b64e5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-20-f63000f2c395b935199c9829964f98c1 @@ -0,0 +1,39 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:18:17 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/nzhang_part2 +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 2 + numPartitions 2 + numRows 1000 + p3 v3 + rawDataSize 10624 + totalSize 11624 + transient_lastDdlTime 1390904306 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats4-21-c2faa5beb457f3e6da58d4d91b5d1cbd b/sql/hive/src/test/resources/golden/stats4-21-c2faa5beb457f3e6da58d4d91b5d1cbd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats4-22-f709d5c1d4c9f13b7a521867674ac54c b/sql/hive/src/test/resources/golden/stats4-22-f709d5c1d4c9f13b7a521867674ac54c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats4-3-c2faa5beb457f3e6da58d4d91b5d1cbd b/sql/hive/src/test/resources/golden/stats4-3-c2faa5beb457f3e6da58d4d91b5d1cbd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats4-4-f709d5c1d4c9f13b7a521867674ac54c b/sql/hive/src/test/resources/golden/stats4-4-f709d5c1d4c9f13b7a521867674ac54c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats4-5-cd849c4fe1229428da98947e3e43b46d b/sql/hive/src/test/resources/golden/stats4-5-cd849c4fe1229428da98947e3e43b46d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats4-6-9c0d4354b6a9be351fa32a66ff58a177 b/sql/hive/src/test/resources/golden/stats4-6-9c0d4354b6a9be351fa32a66ff58a177 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats4-7-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats4-7-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-7-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats4-8-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/stats4-8-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats4-8-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats4-9-255ad4511130fb8c9ee9d65b7c95743f b/sql/hive/src/test/resources/golden/stats4-9-255ad4511130fb8c9ee9d65b7c95743f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats5-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats5-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats5-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats5-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats5-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats5-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats5-2-6f5d06d6100de19ec398891cb2eae161 b/sql/hive/src/test/resources/golden/stats5-2-6f5d06d6100de19ec398891cb2eae161 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats5-3-96d9aa9c32a081518604959dcfac42df b/sql/hive/src/test/resources/golden/stats5-3-96d9aa9c32a081518604959dcfac42df new file mode 100644 index 0000000000000..c9a75eb6639d4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats5-3-96d9aa9c32a081518604959dcfac42df @@ -0,0 +1,19 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_src))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + analyze_src + TableScan + alias: analyze_src + + Stage: Stage-1 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats5-4-dbf81a12f6c19c14dce831e942870744 b/sql/hive/src/test/resources/golden/stats5-4-dbf81a12f6c19c14dce831e942870744 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats5-5-3980dfc2e4f882dd3bf478e56929361 b/sql/hive/src/test/resources/golden/stats5-5-3980dfc2e4f882dd3bf478e56929361 new file mode 100644 index 0000000000000..e622a0d3704a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats5-5-3980dfc2e4f882dd3bf478e56929361 @@ -0,0 +1,33 @@ +# col_name data_type comment + +key int None +value string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:18:36 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_src +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 1 + numPartitions 0 + numRows 500 + p3 v3 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904324 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats6-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats6-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats6-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats6-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats6-10-653f748fa2d690502ba4fda407841a20 b/sql/hive/src/test/resources/golden/stats6-10-653f748fa2d690502ba4fda407841a20 new file mode 100644 index 0000000000000..bf589ab894312 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-10-653f748fa2d690502ba4fda407841a20 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:18:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-09/hr=11 +Partition Parameters: + transient_lastDdlTime 1390904332 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats6-11-1c9f833953403596ad50fd32e513642c b/sql/hive/src/test/resources/golden/stats6-11-1c9f833953403596ad50fd32e513642c new file mode 100644 index 0000000000000..e6170a33d7de7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-11-1c9f833953403596ad50fd32e513642c @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:18:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-09/hr=12 +Partition Parameters: + transient_lastDdlTime 1390904332 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats6-12-fdbe263d925f28d598a71b7a4c577492 b/sql/hive/src/test/resources/golden/stats6-12-fdbe263d925f28d598a71b7a4c577492 new file mode 100644 index 0000000000000..45f6b344b04ca --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-12-fdbe263d925f28d598a71b7a4c577492 @@ -0,0 +1,39 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:18:45 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 2 + numPartitions 2 + numRows 1000 + p3 v3 + rawDataSize 10624 + totalSize 11624 + transient_lastDdlTime 1390904348 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats6-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/stats6-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats6-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats6-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats6-4-a88c476a632cd92f748967fadb242405 b/sql/hive/src/test/resources/golden/stats6-4-a88c476a632cd92f748967fadb242405 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats6-5-66590e5ed0bd8cd22ae01ecb658c11dc b/sql/hive/src/test/resources/golden/stats6-5-66590e5ed0bd8cd22ae01ecb658c11dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats6-6-8926095434b70c83bf88c70559d38dce b/sql/hive/src/test/resources/golden/stats6-6-8926095434b70c83bf88c70559d38dce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats6-7-6615049191cfa4026a3a870c3c3749f4 b/sql/hive/src/test/resources/golden/stats6-7-6615049191cfa4026a3a870c3c3749f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats6-8-e15e242124e61ede9196130cb3fb69e7 b/sql/hive/src/test/resources/golden/stats6-8-e15e242124e61ede9196130cb3fb69e7 new file mode 100644 index 0000000000000..9ff40db416cb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-8-e15e242124e61ede9196130cb3fb69e7 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:18:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904340 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats6-9-e6b884de17a29eb476fd6cc502fc615d b/sql/hive/src/test/resources/golden/stats6-9-e6b884de17a29eb476fd6cc502fc615d new file mode 100644 index 0000000000000..5c13e8793cc76 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats6-9-e6b884de17a29eb476fd6cc502fc615d @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:18:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-08/hr=12 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904348 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats7-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats7-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats7-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats7-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats7-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats7-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats7-10-fdbe263d925f28d598a71b7a4c577492 b/sql/hive/src/test/resources/golden/stats7-10-fdbe263d925f28d598a71b7a4c577492 new file mode 100644 index 0000000000000..bafa551db56e9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats7-10-fdbe263d925f28d598a71b7a4c577492 @@ -0,0 +1,38 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 14 14:57:42 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 2 + numPartitions 2 + numRows 1000 + rawDataSize 10624 + totalSize 11624 + transient_lastDdlTime 1389740280 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats7-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/stats7-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats7-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats7-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats7-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats7-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats7-4-a88c476a632cd92f748967fadb242405 b/sql/hive/src/test/resources/golden/stats7-4-a88c476a632cd92f748967fadb242405 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats7-5-66590e5ed0bd8cd22ae01ecb658c11dc b/sql/hive/src/test/resources/golden/stats7-5-66590e5ed0bd8cd22ae01ecb658c11dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats7-6-5d0c6aa78c9786d904728ff7adab85f2 b/sql/hive/src/test/resources/golden/stats7-6-5d0c6aa78c9786d904728ff7adab85f2 new file mode 100644 index 0000000000000..d5341825cff70 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats7-6-5d0c6aa78c9786d904728ff7adab85f2 @@ -0,0 +1,18 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08') (TOK_PARTVAL hr)))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + analyze_srcpart + TableScan + alias: analyze_srcpart + + Stage: Stage-1 + Stats-Aggr Operator + diff --git a/sql/hive/src/test/resources/golden/stats7-7-4912a8bbc138ab97ac0983bc90951de4 b/sql/hive/src/test/resources/golden/stats7-7-4912a8bbc138ab97ac0983bc90951de4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats7-8-e15e242124e61ede9196130cb3fb69e7 b/sql/hive/src/test/resources/golden/stats7-8-e15e242124e61ede9196130cb3fb69e7 new file mode 100644 index 0000000000000..7085e9397e59b --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats7-8-e15e242124e61ede9196130cb3fb69e7 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 14 14:57:50 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1389740280 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats7-9-e6b884de17a29eb476fd6cc502fc615d b/sql/hive/src/test/resources/golden/stats7-9-e6b884de17a29eb476fd6cc502fc615d new file mode 100644 index 0000000000000..a3eb8c6466032 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats7-9-e6b884de17a29eb476fd6cc502fc615d @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 14 14:57:50 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart/ds=2008-04-08/hr=12 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1389740280 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats8-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats8-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats8-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats8-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats8-10-ce78d029b7764edce3a26336cfac6a8 b/sql/hive/src/test/resources/golden/stats8-10-ce78d029b7764edce3a26336cfac6a8 new file mode 100644 index 0000000000000..d1e0c6243244d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-10-ce78d029b7764edce3a26336cfac6a8 @@ -0,0 +1,19 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08') (TOK_PARTVAL hr 12)))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + analyze_srcpart + TableScan + alias: analyze_srcpart + + Stage: Stage-1 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats8-11-6615049191cfa4026a3a870c3c3749f4 b/sql/hive/src/test/resources/golden/stats8-11-6615049191cfa4026a3a870c3c3749f4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats8-12-e6b884de17a29eb476fd6cc502fc615d b/sql/hive/src/test/resources/golden/stats8-12-e6b884de17a29eb476fd6cc502fc615d new file mode 100644 index 0000000000000..27ff9a687f5c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-12-e6b884de17a29eb476fd6cc502fc615d @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:19:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-08/hr=12 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904374 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-13-c728cdab72daf6b0fedcf0a42f0dd07d b/sql/hive/src/test/resources/golden/stats8-13-c728cdab72daf6b0fedcf0a42f0dd07d new file mode 100644 index 0000000000000..ce340cced8844 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-13-c728cdab72daf6b0fedcf0a42f0dd07d @@ -0,0 +1,19 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-09') (TOK_PARTVAL hr 11)))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + analyze_srcpart + TableScan + alias: analyze_srcpart + + Stage: Stage-1 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats8-14-ea9afc1343991ed4d410231803a174f7 b/sql/hive/src/test/resources/golden/stats8-14-ea9afc1343991ed4d410231803a174f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats8-15-653f748fa2d690502ba4fda407841a20 b/sql/hive/src/test/resources/golden/stats8-15-653f748fa2d690502ba4fda407841a20 new file mode 100644 index 0000000000000..649828a63174b --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-15-653f748fa2d690502ba4fda407841a20 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:19:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-09/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904382 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-16-5179c0a116edc8dc9f7913fd3097bdd6 b/sql/hive/src/test/resources/golden/stats8-16-5179c0a116edc8dc9f7913fd3097bdd6 new file mode 100644 index 0000000000000..e4c8bf3e0005f --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-16-5179c0a116edc8dc9f7913fd3097bdd6 @@ -0,0 +1,19 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-09') (TOK_PARTVAL hr 12)))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + analyze_srcpart + TableScan + alias: analyze_srcpart + + Stage: Stage-1 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats8-17-9d896286dccb22d6e1b6abd5c55eaaa4 b/sql/hive/src/test/resources/golden/stats8-17-9d896286dccb22d6e1b6abd5c55eaaa4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats8-18-1c9f833953403596ad50fd32e513642c b/sql/hive/src/test/resources/golden/stats8-18-1c9f833953403596ad50fd32e513642c new file mode 100644 index 0000000000000..74aeceec37398 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-18-1c9f833953403596ad50fd32e513642c @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:19:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-09/hr=12 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904390 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-19-dbf72430cff3df0e6e9405ad64531b16 b/sql/hive/src/test/resources/golden/stats8-19-dbf72430cff3df0e6e9405ad64531b16 new file mode 100644 index 0000000000000..25d9c86f74634 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-19-dbf72430cff3df0e6e9405ad64531b16 @@ -0,0 +1,19 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart) (TOK_PARTSPEC (TOK_PARTVAL ds) (TOK_PARTVAL hr)))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + analyze_srcpart + TableScan + alias: analyze_srcpart + + Stage: Stage-1 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats8-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/stats8-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats8-20-bff592750d1057448d2cff7694b6dad2 b/sql/hive/src/test/resources/golden/stats8-20-bff592750d1057448d2cff7694b6dad2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats8-21-e15e242124e61ede9196130cb3fb69e7 b/sql/hive/src/test/resources/golden/stats8-21-e15e242124e61ede9196130cb3fb69e7 new file mode 100644 index 0000000000000..5939c257f2f67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-21-e15e242124e61ede9196130cb3fb69e7 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:19:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904398 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-22-e6b884de17a29eb476fd6cc502fc615d b/sql/hive/src/test/resources/golden/stats8-22-e6b884de17a29eb476fd6cc502fc615d new file mode 100644 index 0000000000000..8dc22de8e0ee6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-22-e6b884de17a29eb476fd6cc502fc615d @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:19:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-08/hr=12 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904398 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-23-653f748fa2d690502ba4fda407841a20 b/sql/hive/src/test/resources/golden/stats8-23-653f748fa2d690502ba4fda407841a20 new file mode 100644 index 0000000000000..a19f38cc6a364 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-23-653f748fa2d690502ba4fda407841a20 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:19:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-09/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904398 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-24-1c9f833953403596ad50fd32e513642c b/sql/hive/src/test/resources/golden/stats8-24-1c9f833953403596ad50fd32e513642c new file mode 100644 index 0000000000000..aead24acd518c --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-24-1c9f833953403596ad50fd32e513642c @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:19:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-09/hr=12 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904398 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-25-fdbe263d925f28d598a71b7a4c577492 b/sql/hive/src/test/resources/golden/stats8-25-fdbe263d925f28d598a71b7a4c577492 new file mode 100644 index 0000000000000..5f8bf1774f144 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-25-fdbe263d925f28d598a71b7a4c577492 @@ -0,0 +1,39 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:19:10 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 4 + numPartitions 4 + numRows 2000 + p3 v3 + rawDataSize 21248 + totalSize 23248 + transient_lastDdlTime 1390904398 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats8-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats8-4-a88c476a632cd92f748967fadb242405 b/sql/hive/src/test/resources/golden/stats8-4-a88c476a632cd92f748967fadb242405 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats8-5-66590e5ed0bd8cd22ae01ecb658c11dc b/sql/hive/src/test/resources/golden/stats8-5-66590e5ed0bd8cd22ae01ecb658c11dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats8-6-821e1f061960081b9b379d9bfb47f267 b/sql/hive/src/test/resources/golden/stats8-6-821e1f061960081b9b379d9bfb47f267 new file mode 100644 index 0000000000000..d30acbf86a295 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-6-821e1f061960081b9b379d9bfb47f267 @@ -0,0 +1,19 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08') (TOK_PARTVAL hr 11)))) + +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Alias -> Map Operator Tree: + analyze_srcpart + TableScan + alias: analyze_srcpart + + Stage: Stage-1 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats8-7-8926095434b70c83bf88c70559d38dce b/sql/hive/src/test/resources/golden/stats8-7-8926095434b70c83bf88c70559d38dce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats8-8-e15e242124e61ede9196130cb3fb69e7 b/sql/hive/src/test/resources/golden/stats8-8-e15e242124e61ede9196130cb3fb69e7 new file mode 100644 index 0000000000000..07a61fc1a8bd1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-8-e15e242124e61ede9196130cb3fb69e7 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 28 02:19:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904366 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats8-9-fdbe263d925f28d598a71b7a4c577492 b/sql/hive/src/test/resources/golden/stats8-9-fdbe263d925f28d598a71b7a4c577492 new file mode 100644 index 0000000000000..bd16e76d28d83 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats8-9-fdbe263d925f28d598a71b7a4c577492 @@ -0,0 +1,39 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 28 02:19:10 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 1 + numPartitions 1 + numRows 500 + p3 v3 + rawDataSize 5312 + totalSize 5812 + transient_lastDdlTime 1390904366 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats9-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats9-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats9-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats9-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats9-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats9-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-0-6d1832d28f897d0049de053617bd36 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-0-6d1832d28f897d0049de053617bd36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-1-887fe99770f53e7e0a0fbdc190118612 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-1-887fe99770f53e7e0a0fbdc190118612 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-1-887fe99770f53e7e0a0fbdc190118612 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-10-a31221a0c377c14e11b14484ddaa49a6 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-10-a31221a0c377c14e11b14484ddaa49a6 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-10-a31221a0c377c14e11b14484ddaa49a6 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-11-d58626190cded8d09f0457739a980eb b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-11-d58626190cded8d09f0457739a980eb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-11-d58626190cded8d09f0457739a980eb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-12-3b7c5bcb71c75e913caaea3acd48530c b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-12-3b7c5bcb71c75e913caaea3acd48530c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-13-a31221a0c377c14e11b14484ddaa49a6 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-13-a31221a0c377c14e11b14484ddaa49a6 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-13-a31221a0c377c14e11b14484ddaa49a6 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-14-60a231b64a4a0e414d0ddce1c813c614 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-14-60a231b64a4a0e414d0ddce1c813c614 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-14-60a231b64a4a0e414d0ddce1c813c614 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-15-3b7c5bcb71c75e913caaea3acd48530c b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-15-3b7c5bcb71c75e913caaea3acd48530c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-16-a31221a0c377c14e11b14484ddaa49a6 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-16-a31221a0c377c14e11b14484ddaa49a6 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-16-a31221a0c377c14e11b14484ddaa49a6 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-2-2ca079278e0de95eecb5df315ce05c6 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-2-2ca079278e0de95eecb5df315ce05c6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-2-2ca079278e0de95eecb5df315ce05c6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-3-66e3e0c942759f679c270698b49bfcf1 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-3-66e3e0c942759f679c270698b49bfcf1 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-3-66e3e0c942759f679c270698b49bfcf1 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-4-d389db66cc7fd9b144445e364dac30e3 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-4-d389db66cc7fd9b144445e364dac30e3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-4-d389db66cc7fd9b144445e364dac30e3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-5-63abf47101c5097e66a9c3ee92b128e3 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-5-63abf47101c5097e66a9c3ee92b128e3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-5-63abf47101c5097e66a9c3ee92b128e3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-6-3b7c5bcb71c75e913caaea3acd48530c b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-6-3b7c5bcb71c75e913caaea3acd48530c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-7-a31221a0c377c14e11b14484ddaa49a6 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-7-a31221a0c377c14e11b14484ddaa49a6 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-7-a31221a0c377c14e11b14484ddaa49a6 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-8-11f77597cc11fc71e95c0d0d7502c5c3 b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-8-11f77597cc11fc71e95c0d0d7502c5c3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-8-11f77597cc11fc71e95c0d0d7502c5c3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_aggregator_error_1-9-3b7c5bcb71c75e913caaea3acd48530c b/sql/hive/src/test/resources/golden/stats_aggregator_error_1-9-3b7c5bcb71c75e913caaea3acd48530c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_empty_dyn_part-0-9505721cd28fc4ec94ef4baf07029027 b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-0-9505721cd28fc4ec94ef4baf07029027 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_empty_dyn_part-1-418ec894d08c33fd712eb358f579b7a0 b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-1-418ec894d08c33fd712eb358f579b7a0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-1-418ec894d08c33fd712eb358f579b7a0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_empty_dyn_part-2-c14f09f88961dbad4d800317079a9105 b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-2-c14f09f88961dbad4d800317079a9105 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-2-c14f09f88961dbad4d800317079a9105 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_empty_dyn_part-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_empty_dyn_part-4-cc664530711607c530a2cd384e67a600 b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-4-cc664530711607c530a2cd384e67a600 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_empty_dyn_part-5-76d56e06108f0c6da75aa821452fa873 b/sql/hive/src/test/resources/golden/stats_empty_dyn_part-5-76d56e06108f0c6da75aa821452fa873 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_empty_partition-0-42ae9007e347f7dedfc8974d21d84b41 b/sql/hive/src/test/resources/golden/stats_empty_partition-0-42ae9007e347f7dedfc8974d21d84b41 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_empty_partition-1-418ec894d08c33fd712eb358f579b7a0 b/sql/hive/src/test/resources/golden/stats_empty_partition-1-418ec894d08c33fd712eb358f579b7a0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_empty_partition-1-418ec894d08c33fd712eb358f579b7a0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_empty_partition-2-c14f09f88961dbad4d800317079a9105 b/sql/hive/src/test/resources/golden/stats_empty_partition-2-c14f09f88961dbad4d800317079a9105 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_empty_partition-2-c14f09f88961dbad4d800317079a9105 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_empty_partition-3-868ba7a812c705caa29db49cdcb69c45 b/sql/hive/src/test/resources/golden/stats_empty_partition-3-868ba7a812c705caa29db49cdcb69c45 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_empty_partition-4-aed016ae4b528521874a719a5b129a55 b/sql/hive/src/test/resources/golden/stats_empty_partition-4-aed016ae4b528521874a719a5b129a55 new file mode 100644 index 0000000000000..4475cb837eaa4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_empty_partition-4-aed016ae4b528521874a719a5b129a55 @@ -0,0 +1,35 @@ +# col_name data_type comment + +key string None +value string None + +# Partition Information +# col_name data_type comment + +part string None + +# Detailed Partition Information +Partition Value: [1] +Database: default +Table: tmptable +CreateTime: Sun Jan 05 00:32:00 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2020775722466758355/tmptable/part=1 +Partition Parameters: + numFiles 1 + numRows 0 + rawDataSize 0 + totalSize 0 + transient_lastDdlTime 1388910720 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats_noscan_1-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats_noscan_1-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-10-e6b884de17a29eb476fd6cc502fc615d b/sql/hive/src/test/resources/golden/stats_noscan_1-10-e6b884de17a29eb476fd6cc502fc615d new file mode 100644 index 0000000000000..5949a76d84a11 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-10-e6b884de17a29eb476fd6cc502fc615d @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 14 14:58:14 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart/ds=2008-04-08/hr=12 +Partition Parameters: + numFiles 1 + numRows 0 + rawDataSize 0 + totalSize 5812 + transient_lastDdlTime 1389740295 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-11-653f748fa2d690502ba4fda407841a20 b/sql/hive/src/test/resources/golden/stats_noscan_1-11-653f748fa2d690502ba4fda407841a20 new file mode 100644 index 0000000000000..97f5929fd816a --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-11-653f748fa2d690502ba4fda407841a20 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 14 14:58:14 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart/ds=2008-04-09/hr=11 +Partition Parameters: + transient_lastDdlTime 1389740294 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-12-1c9f833953403596ad50fd32e513642c b/sql/hive/src/test/resources/golden/stats_noscan_1-12-1c9f833953403596ad50fd32e513642c new file mode 100644 index 0000000000000..6d08ff47abc2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-12-1c9f833953403596ad50fd32e513642c @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 12] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 14 14:58:14 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart/ds=2008-04-09/hr=12 +Partition Parameters: + transient_lastDdlTime 1389740294 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-13-fdbe263d925f28d598a71b7a4c577492 b/sql/hive/src/test/resources/golden/stats_noscan_1-13-fdbe263d925f28d598a71b7a4c577492 new file mode 100644 index 0000000000000..f441c8b483868 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-13-fdbe263d925f28d598a71b7a4c577492 @@ -0,0 +1,38 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 14 14:58:04 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 2 + numPartitions 2 + numRows 0 + rawDataSize 0 + totalSize 11624 + transient_lastDdlTime 1389740295 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-14-c51fe56935caed4f7ca6f7d9cd6a17ab b/sql/hive/src/test/resources/golden/stats_noscan_1-14-c51fe56935caed4f7ca6f7d9cd6a17ab new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-15-db563e338e4f658e5072cc60aef15480 b/sql/hive/src/test/resources/golden/stats_noscan_1-15-db563e338e4f658e5072cc60aef15480 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-16-e446db2c3ddce173d0a51bf77a489382 b/sql/hive/src/test/resources/golden/stats_noscan_1-16-e446db2c3ddce173d0a51bf77a489382 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-17-82369b182db851e06bfddb62965e03a3 b/sql/hive/src/test/resources/golden/stats_noscan_1-17-82369b182db851e06bfddb62965e03a3 new file mode 100644 index 0000000000000..f263eed117b10 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-17-82369b182db851e06bfddb62965e03a3 @@ -0,0 +1,10 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart_partial) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08'))) noscan) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Stats-Aggr Operator + diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-18-eece38f413a0a4f6f5b63cea0751d225 b/sql/hive/src/test/resources/golden/stats_noscan_1-18-eece38f413a0a4f6f5b63cea0751d225 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-19-1e9c23f4b90d83f4e8c5c7f08365928e b/sql/hive/src/test/resources/golden/stats_noscan_1-19-1e9c23f4b90d83f4e8c5c7f08365928e new file mode 100644 index 0000000000000..6a115f7e6e61a --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-19-1e9c23f4b90d83f4e8c5c7f08365928e @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart_partial +CreateTime: Tue Jan 14 14:58:26 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart_partial/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 0 + rawDataSize 0 + totalSize 5812 + transient_lastDdlTime 1389740307 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/stats_noscan_1-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-20-9871c619bb5bf0a28f8d60e6332a614f b/sql/hive/src/test/resources/golden/stats_noscan_1-20-9871c619bb5bf0a28f8d60e6332a614f new file mode 100644 index 0000000000000..1d96413b915da --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-20-9871c619bb5bf0a28f8d60e6332a614f @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 12] +Database: default +Table: analyze_srcpart_partial +CreateTime: Tue Jan 14 14:58:26 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart_partial/ds=2008-04-08/hr=12 +Partition Parameters: + numFiles 1 + numRows 0 + rawDataSize 0 + totalSize 5812 + transient_lastDdlTime 1389740307 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-21-35a7cb6076ef7bd253ea9c1f5d009709 b/sql/hive/src/test/resources/golden/stats_noscan_1-21-35a7cb6076ef7bd253ea9c1f5d009709 new file mode 100644 index 0000000000000..4c4380e63b7f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-21-35a7cb6076ef7bd253ea9c1f5d009709 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 11] +Database: default +Table: analyze_srcpart_partial +CreateTime: Tue Jan 14 14:58:27 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart_partial/ds=2008-04-09/hr=11 +Partition Parameters: + transient_lastDdlTime 1389740307 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-22-521b49d223a32056025fb8dbd371a72a b/sql/hive/src/test/resources/golden/stats_noscan_1-22-521b49d223a32056025fb8dbd371a72a new file mode 100644 index 0000000000000..ba90d8d3d2477 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-22-521b49d223a32056025fb8dbd371a72a @@ -0,0 +1,32 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 12] +Database: default +Table: analyze_srcpart_partial +CreateTime: Tue Jan 14 14:58:27 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart_partial/ds=2008-04-09/hr=12 +Partition Parameters: + transient_lastDdlTime 1389740307 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-23-fba14d8647e0c8ca214b724486af7763 b/sql/hive/src/test/resources/golden/stats_noscan_1-23-fba14d8647e0c8ca214b724486af7763 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats_noscan_1-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-4-7938a68104e163566da69ccc70a18f2c b/sql/hive/src/test/resources/golden/stats_noscan_1-4-7938a68104e163566da69ccc70a18f2c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-5-66590e5ed0bd8cd22ae01ecb658c11dc b/sql/hive/src/test/resources/golden/stats_noscan_1-5-66590e5ed0bd8cd22ae01ecb658c11dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-6-a1fd405e5175757aaa80033162c87670 b/sql/hive/src/test/resources/golden/stats_noscan_1-6-a1fd405e5175757aaa80033162c87670 new file mode 100644 index 0000000000000..b671e68cc4c3b --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-6-a1fd405e5175757aaa80033162c87670 @@ -0,0 +1,10 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08') (TOK_PARTVAL hr 11))) noscan) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Stats-Aggr Operator + diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-7-497861ae04753ffbb63ee43d89eedd9e b/sql/hive/src/test/resources/golden/stats_noscan_1-7-497861ae04753ffbb63ee43d89eedd9e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-8-623f3701ead20fff786c203d23dd60ae b/sql/hive/src/test/resources/golden/stats_noscan_1-8-623f3701ead20fff786c203d23dd60ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_noscan_1-9-a9ee4584e32fa7b934a1e6ab5403de44 b/sql/hive/src/test/resources/golden/stats_noscan_1-9-a9ee4584e32fa7b934a1e6ab5403de44 new file mode 100644 index 0000000000000..96499c0fb0f7e --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_noscan_1-9-a9ee4584e32fa7b934a1e6ab5403de44 @@ -0,0 +1,36 @@ +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart +CreateTime: Tue Jan 14 14:58:14 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse488810659186490763/analyze_srcpart/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 0 + rawDataSize 0 + totalSize 5812 + transient_lastDdlTime 1389740294 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats_partscan_1-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats_partscan_1-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-10-c06f6ce9878b7eededf8c2a085ffb380 b/sql/hive/src/test/resources/golden/stats_partscan_1-10-c06f6ce9878b7eededf8c2a085ffb380 new file mode 100644 index 0000000000000..b5fc469438c83 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-10-c06f6ce9878b7eededf8c2a085ffb380 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key string from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart_partial_scan +CreateTime: Tue Jan 14 14:36:56 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2847673635801001933/analyze_srcpart_partial_scan/ds=2008-04-08/hr=11 +Partition Parameters: + transient_lastDdlTime 1389739016 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-11-418ec894d08c33fd712eb358f579b7a0 b/sql/hive/src/test/resources/golden/stats_partscan_1-11-418ec894d08c33fd712eb358f579b7a0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-11-418ec894d08c33fd712eb358f579b7a0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-12-3e423642a5a00dc66cc709f474a3ecef b/sql/hive/src/test/resources/golden/stats_partscan_1-12-3e423642a5a00dc66cc709f474a3ecef new file mode 100644 index 0000000000000..cc58ef9026786 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-12-3e423642a5a00dc66cc709f474a3ecef @@ -0,0 +1,14 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart_partial_scan) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08') (TOK_PARTVAL hr 11))) partialscan) + +STAGE DEPENDENCIES: + Stage-2 is a root stage + Stage-1 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-2 + Partial Scan Statistics + + Stage: Stage-1 + Stats-Aggr Operator + diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-13-2fe3131322b6c82e217f27e95581e681 b/sql/hive/src/test/resources/golden/stats_partscan_1-13-2fe3131322b6c82e217f27e95581e681 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-14-2c66f128acea649e8debc3c4b04fcb9c b/sql/hive/src/test/resources/golden/stats_partscan_1-14-2c66f128acea649e8debc3c4b04fcb9c new file mode 100644 index 0000000000000..3243fe9fb497d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-14-2c66f128acea649e8debc3c4b04fcb9c @@ -0,0 +1,36 @@ +# col_name data_type comment + +key string from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart_partial_scan +CreateTime: Tue Jan 14 14:36:56 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2847673635801001933/analyze_srcpart_partial_scan/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 4812 + totalSize 7456 + transient_lastDdlTime 1389739019 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-15-c05c5dc6a34b2a55526a43f2c900ad40 b/sql/hive/src/test/resources/golden/stats_partscan_1-15-c05c5dc6a34b2a55526a43f2c900ad40 new file mode 100644 index 0000000000000..6accd64d06d69 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-15-c05c5dc6a34b2a55526a43f2c900ad40 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key string from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 11] +Database: default +Table: analyze_srcpart_partial_scan +CreateTime: Tue Jan 14 14:36:56 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse2847673635801001933/analyze_srcpart_partial_scan/ds=2008-04-09/hr=11 +Partition Parameters: + transient_lastDdlTime 1389739016 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-16-f93e6c408fcb4570fda5b09e4c7b1040 b/sql/hive/src/test/resources/golden/stats_partscan_1-16-f93e6c408fcb4570fda5b09e4c7b1040 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/stats_partscan_1-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats_partscan_1-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-4-c95dc367df88c9e5cf77157f29ba2daf b/sql/hive/src/test/resources/golden/stats_partscan_1-4-c95dc367df88c9e5cf77157f29ba2daf new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-4-c95dc367df88c9e5cf77157f29ba2daf @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-5-6e53a3ac93113f20db3a12f1dcf30e86 b/sql/hive/src/test/resources/golden/stats_partscan_1-5-6e53a3ac93113f20db3a12f1dcf30e86 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-5-6e53a3ac93113f20db3a12f1dcf30e86 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-6-84967075baa3e56fff2a23f8ab9ba076 b/sql/hive/src/test/resources/golden/stats_partscan_1-6-84967075baa3e56fff2a23f8ab9ba076 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-6-84967075baa3e56fff2a23f8ab9ba076 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-7-2ee5d706fe3a3bcc38b795f6e94970ea b/sql/hive/src/test/resources/golden/stats_partscan_1-7-2ee5d706fe3a3bcc38b795f6e94970ea new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1-7-2ee5d706fe3a3bcc38b795f6e94970ea @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-8-29279aa84d6ba9dea9e56b493504dd30 b/sql/hive/src/test/resources/golden/stats_partscan_1-8-29279aa84d6ba9dea9e56b493504dd30 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1-9-90d41ae72606f9616cb7b1303f997348 b/sql/hive/src/test/resources/golden/stats_partscan_1-9-90d41ae72606f9616cb7b1303f997348 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-0-e7bfbd9422685e9a3a6c9bd4965f828f b/sql/hive/src/test/resources/golden/stats_partscan_1_23-0-e7bfbd9422685e9a3a6c9bd4965f828f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-0-e7bfbd9422685e9a3a6c9bd4965f828f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-1-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-1-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-1-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-10-c06f6ce9878b7eededf8c2a085ffb380 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-10-c06f6ce9878b7eededf8c2a085ffb380 new file mode 100644 index 0000000000000..942b7cfe07235 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-10-c06f6ce9878b7eededf8c2a085ffb380 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key string from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart_partial_scan +CreateTime: Tue Jan 28 02:20:21 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart_partial_scan/ds=2008-04-08/hr=11 +Partition Parameters: + transient_lastDdlTime 1390904421 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-11-418ec894d08c33fd712eb358f579b7a0 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-11-418ec894d08c33fd712eb358f579b7a0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-11-418ec894d08c33fd712eb358f579b7a0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-12-3e423642a5a00dc66cc709f474a3ecef b/sql/hive/src/test/resources/golden/stats_partscan_1_23-12-3e423642a5a00dc66cc709f474a3ecef new file mode 100644 index 0000000000000..9c704a6ef4126 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-12-3e423642a5a00dc66cc709f474a3ecef @@ -0,0 +1,15 @@ +ABSTRACT SYNTAX TREE: + (TOK_ANALYZE (TOK_TAB (TOK_TABNAME analyze_srcpart_partial_scan) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08') (TOK_PARTVAL hr 11))) partialscan) + +STAGE DEPENDENCIES: + Stage-2 is a root stage + Stage-1 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-2 + Partial Scan Statistics + + Stage: Stage-1 + Stats-Aggr Operator + + diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-13-2fe3131322b6c82e217f27e95581e681 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-13-2fe3131322b6c82e217f27e95581e681 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-14-2c66f128acea649e8debc3c4b04fcb9c b/sql/hive/src/test/resources/golden/stats_partscan_1_23-14-2c66f128acea649e8debc3c4b04fcb9c new file mode 100644 index 0000000000000..feee75f095d0d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-14-2c66f128acea649e8debc3c4b04fcb9c @@ -0,0 +1,36 @@ +# col_name data_type comment + +key string from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-08, 11] +Database: default +Table: analyze_srcpart_partial_scan +CreateTime: Tue Jan 28 02:20:21 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart_partial_scan/ds=2008-04-08/hr=11 +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 4812 + totalSize 7456 + transient_lastDdlTime 1390904425 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-15-c05c5dc6a34b2a55526a43f2c900ad40 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-15-c05c5dc6a34b2a55526a43f2c900ad40 new file mode 100644 index 0000000000000..f39d366764c95 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-15-c05c5dc6a34b2a55526a43f2c900ad40 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key string from deserializer +value string from deserializer + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Partition Information +Partition Value: [2008-04-09, 11] +Database: default +Table: analyze_srcpart_partial_scan +CreateTime: Tue Jan 28 02:20:21 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse6423793619827660847/analyze_srcpart_partial_scan/ds=2008-04-09/hr=11 +Partition Parameters: + transient_lastDdlTime 1390904421 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-16-f93e6c408fcb4570fda5b09e4c7b1040 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-16-f93e6c408fcb4570fda5b09e4c7b1040 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-2-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-2-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-2-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-3-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/stats_partscan_1_23-3-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-3-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-4-c95dc367df88c9e5cf77157f29ba2daf b/sql/hive/src/test/resources/golden/stats_partscan_1_23-4-c95dc367df88c9e5cf77157f29ba2daf new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-4-c95dc367df88c9e5cf77157f29ba2daf @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-5-6e53a3ac93113f20db3a12f1dcf30e86 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-5-6e53a3ac93113f20db3a12f1dcf30e86 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-5-6e53a3ac93113f20db3a12f1dcf30e86 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-6-84967075baa3e56fff2a23f8ab9ba076 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-6-84967075baa3e56fff2a23f8ab9ba076 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-6-84967075baa3e56fff2a23f8ab9ba076 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-7-2ee5d706fe3a3bcc38b795f6e94970ea b/sql/hive/src/test/resources/golden/stats_partscan_1_23-7-2ee5d706fe3a3bcc38b795f6e94970ea new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_partscan_1_23-7-2ee5d706fe3a3bcc38b795f6e94970ea @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-8-b158e24051ecb66b8af46743917771ca b/sql/hive/src/test/resources/golden/stats_partscan_1_23-8-b158e24051ecb66b8af46743917771ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_partscan_1_23-9-90d41ae72606f9616cb7b1303f997348 b/sql/hive/src/test/resources/golden/stats_partscan_1_23-9-90d41ae72606f9616cb7b1303f997348 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-0-836d3689af091fdebbdf31e6b29a423 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-0-836d3689af091fdebbdf31e6b29a423 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-1-887fe99770f53e7e0a0fbdc190118612 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-1-887fe99770f53e7e0a0fbdc190118612 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-1-887fe99770f53e7e0a0fbdc190118612 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-10-a31221a0c377c14e11b14484ddaa49a6 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-10-a31221a0c377c14e11b14484ddaa49a6 new file mode 100644 index 0000000000000..1b79f38e25b24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-10-a31221a0c377c14e11b14484ddaa49a6 @@ -0,0 +1 @@ +500 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-11-50519f196d320ee97be731907409fef9 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-11-50519f196d320ee97be731907409fef9 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-11-50519f196d320ee97be731907409fef9 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-12-3b7c5bcb71c75e913caaea3acd48530c b/sql/hive/src/test/resources/golden/stats_publisher_error_1-12-3b7c5bcb71c75e913caaea3acd48530c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-13-a31221a0c377c14e11b14484ddaa49a6 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-13-a31221a0c377c14e11b14484ddaa49a6 new file mode 100644 index 0000000000000..1b79f38e25b24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-13-a31221a0c377c14e11b14484ddaa49a6 @@ -0,0 +1 @@ +500 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-14-f596f33c4a9271a406371baef799e52 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-14-f596f33c4a9271a406371baef799e52 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-14-f596f33c4a9271a406371baef799e52 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-15-3b7c5bcb71c75e913caaea3acd48530c b/sql/hive/src/test/resources/golden/stats_publisher_error_1-15-3b7c5bcb71c75e913caaea3acd48530c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-16-a31221a0c377c14e11b14484ddaa49a6 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-16-a31221a0c377c14e11b14484ddaa49a6 new file mode 100644 index 0000000000000..1b79f38e25b24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-16-a31221a0c377c14e11b14484ddaa49a6 @@ -0,0 +1 @@ +500 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-2-2ca079278e0de95eecb5df315ce05c6 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-2-2ca079278e0de95eecb5df315ce05c6 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-2-2ca079278e0de95eecb5df315ce05c6 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-3-66e3e0c942759f679c270698b49bfcf1 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-3-66e3e0c942759f679c270698b49bfcf1 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-3-66e3e0c942759f679c270698b49bfcf1 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-4-d389db66cc7fd9b144445e364dac30e3 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-4-d389db66cc7fd9b144445e364dac30e3 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-4-d389db66cc7fd9b144445e364dac30e3 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-5-f39234f16f5819a2f51d3f200293332 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-5-f39234f16f5819a2f51d3f200293332 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-5-f39234f16f5819a2f51d3f200293332 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-6-3b7c5bcb71c75e913caaea3acd48530c b/sql/hive/src/test/resources/golden/stats_publisher_error_1-6-3b7c5bcb71c75e913caaea3acd48530c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-7-a31221a0c377c14e11b14484ddaa49a6 b/sql/hive/src/test/resources/golden/stats_publisher_error_1-7-a31221a0c377c14e11b14484ddaa49a6 new file mode 100644 index 0000000000000..1b79f38e25b24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-7-a31221a0c377c14e11b14484ddaa49a6 @@ -0,0 +1 @@ +500 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-8-df9d7a7da57e4d207c0bcae2bfa4bf6b b/sql/hive/src/test/resources/golden/stats_publisher_error_1-8-df9d7a7da57e4d207c0bcae2bfa4bf6b new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/stats_publisher_error_1-8-df9d7a7da57e4d207c0bcae2bfa4bf6b @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/stats_publisher_error_1-9-3b7c5bcb71c75e913caaea3acd48530c b/sql/hive/src/test/resources/golden/stats_publisher_error_1-9-3b7c5bcb71c75e913caaea3acd48530c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/str_to_map-0-aefd618b58ad6c37956755b6572cbc73 b/sql/hive/src/test/resources/golden/str_to_map-0-aefd618b58ad6c37956755b6572cbc73 new file mode 100644 index 0000000000000..9bed96d855476 --- /dev/null +++ b/sql/hive/src/test/resources/golden/str_to_map-0-aefd618b58ad6c37956755b6572cbc73 @@ -0,0 +1 @@ +str_to_map(text, delimiter1, delimiter2) - Creates a map by parsing text diff --git a/sql/hive/src/test/resources/golden/str_to_map-1-c66590cd4ac0a6f9c2bd88db7efcb16c b/sql/hive/src/test/resources/golden/str_to_map-1-c66590cd4ac0a6f9c2bd88db7efcb16c new file mode 100644 index 0000000000000..1da11fbfa31d5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/str_to_map-1-c66590cd4ac0a6f9c2bd88db7efcb16c @@ -0,0 +1,2 @@ +str_to_map(text, delimiter1, delimiter2) - Creates a map by parsing text +Split text into key-value pairs using two delimiters. The first delimiter seperates pairs, and the second delimiter sperates key and value. If only one parameter is given, default delimiters are used: ',' as delimiter1 and '=' as delimiter2. diff --git a/sql/hive/src/test/resources/golden/str_to_map-10-32997010bba305ec40812df254490730 b/sql/hive/src/test/resources/golden/str_to_map-10-32997010bba305ec40812df254490730 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/str_to_map-11-d99f1b631bc42a6a57c581025230537a b/sql/hive/src/test/resources/golden/str_to_map-11-d99f1b631bc42a6a57c581025230537a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/str_to_map-12-f793eb7b36a1d6379b90e241df62c72e b/sql/hive/src/test/resources/golden/str_to_map-12-f793eb7b36a1d6379b90e241df62c72e new file mode 100644 index 0000000000000..cd4d4a384163b --- /dev/null +++ b/sql/hive/src/test/resources/golden/str_to_map-12-f793eb7b36a1d6379b90e241df62c72e @@ -0,0 +1,3 @@ +444 +444 +444 diff --git a/sql/hive/src/test/resources/golden/str_to_map-13-32997010bba305ec40812df254490730 b/sql/hive/src/test/resources/golden/str_to_map-13-32997010bba305ec40812df254490730 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/str_to_map-2-28d8e6677d025e1266ce95ae23dfd9ec b/sql/hive/src/test/resources/golden/str_to_map-2-28d8e6677d025e1266ce95ae23dfd9ec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/str_to_map-3-8b76ce17aa29e2eb37a4b953e9c80e66 b/sql/hive/src/test/resources/golden/str_to_map-3-8b76ce17aa29e2eb37a4b953e9c80e66 new file mode 100644 index 0000000000000..e8183f05f5db6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/str_to_map-3-8b76ce17aa29e2eb37a4b953e9c80e66 @@ -0,0 +1,3 @@ +1 +1 +1 diff --git a/sql/hive/src/test/resources/golden/str_to_map-4-f356516aec917fe0d34df4dc8d9d0f95 b/sql/hive/src/test/resources/golden/str_to_map-4-f356516aec917fe0d34df4dc8d9d0f95 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/str_to_map-5-269cfcefe2ea6c19ac6c824d3259bbda b/sql/hive/src/test/resources/golden/str_to_map-5-269cfcefe2ea6c19ac6c824d3259bbda new file mode 100644 index 0000000000000..62813f9d10491 --- /dev/null +++ b/sql/hive/src/test/resources/golden/str_to_map-5-269cfcefe2ea6c19ac6c824d3259bbda @@ -0,0 +1,3 @@ +{"b":"2","a":"1","c":"3"} +{"b":"2","a":"1","c":"3"} +{"b":"2","a":"1","c":"3"} diff --git a/sql/hive/src/test/resources/golden/str_to_map-6-53a3d5f99c0fbe17179cb01387a7ccaf b/sql/hive/src/test/resources/golden/str_to_map-6-53a3d5f99c0fbe17179cb01387a7ccaf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/str_to_map-7-5641678c53ce6ef1dbce3994843cfcad b/sql/hive/src/test/resources/golden/str_to_map-7-5641678c53ce6ef1dbce3994843cfcad new file mode 100644 index 0000000000000..62813f9d10491 --- /dev/null +++ b/sql/hive/src/test/resources/golden/str_to_map-7-5641678c53ce6ef1dbce3994843cfcad @@ -0,0 +1,3 @@ +{"b":"2","a":"1","c":"3"} +{"b":"2","a":"1","c":"3"} +{"b":"2","a":"1","c":"3"} diff --git a/sql/hive/src/test/resources/golden/str_to_map-8-84121d964faad3547f0e5cce9d268612 b/sql/hive/src/test/resources/golden/str_to_map-8-84121d964faad3547f0e5cce9d268612 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/str_to_map-9-903f3b3137bfa3f4594fec7b604c62bd b/sql/hive/src/test/resources/golden/str_to_map-9-903f3b3137bfa3f4594fec7b604c62bd new file mode 100644 index 0000000000000..e8183f05f5db6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/str_to_map-9-903f3b3137bfa3f4594fec7b604c62bd @@ -0,0 +1,3 @@ +1 +1 +1 diff --git a/sql/hive/src/test/resources/golden/string literal-0-ff43f1a7d06479b78622c8bb10e9f9a1 b/sql/hive/src/test/resources/golden/string literal-0-ff43f1a7d06479b78622c8bb10e9f9a1 new file mode 100644 index 0000000000000..8938b37682023 --- /dev/null +++ b/sql/hive/src/test/resources/golden/string literal-0-ff43f1a7d06479b78622c8bb10e9f9a1 @@ -0,0 +1,500 @@ +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test +test \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/subq2-0-279fb87476c70e9384874fa6bf77a380 b/sql/hive/src/test/resources/golden/subq2-0-279fb87476c70e9384874fa6bf77a380 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/subq2-1-235919a7ddb574662158503b8052e7ca b/sql/hive/src/test/resources/golden/subq2-1-235919a7ddb574662158503b8052e7ca new file mode 100644 index 0000000000000..5b3f76a5f7797 --- /dev/null +++ b/sql/hive/src/test/resources/golden/subq2-1-235919a7ddb574662158503b8052e7ca @@ -0,0 +1,258 @@ +90 3 +92 1 +95 2 +96 1 +97 2 +98 2 +100 2 +103 2 +104 2 +105 1 +111 1 +113 2 +114 1 +116 1 +118 2 +119 3 +120 2 +125 2 +126 1 +128 3 +129 2 +131 1 +133 1 +134 2 +136 1 +137 2 +138 4 +143 1 +145 1 +146 2 +149 2 +150 1 +152 2 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 2 +165 2 +166 1 +167 3 +168 1 +169 4 +170 1 +172 2 +174 2 +175 2 +176 2 +177 1 +178 1 +179 2 +180 1 +181 1 +183 1 +186 1 +187 3 +189 1 +190 1 +191 2 +192 1 +193 3 +194 1 +195 2 +196 1 +197 2 +199 3 +200 2 +201 1 +202 1 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +214 1 +216 2 +217 2 +218 1 +219 2 +221 2 +222 1 +223 2 +224 2 +226 1 +228 1 +229 2 +230 5 +233 2 +235 1 +237 2 +238 2 +239 2 +241 1 +242 2 +244 1 +247 1 +248 1 +249 1 +252 1 +255 2 +256 2 +257 1 +258 1 +260 1 +262 1 +263 1 +265 2 +266 1 +272 2 +273 3 +274 1 +275 1 +277 4 +278 2 +280 2 +281 2 +282 2 +283 1 +284 1 +285 1 +286 1 +287 1 +288 2 +289 1 +291 1 +292 1 +296 1 +298 3 +302 1 +305 1 +306 1 +307 2 +308 1 +309 2 +310 1 +311 3 +315 1 +316 3 +317 2 +318 3 +321 2 +322 2 +323 1 +325 2 +327 3 +331 2 +332 1 +333 2 +335 1 +336 1 +338 1 +339 1 +341 1 +342 2 +344 2 +345 1 +348 5 +351 1 +353 2 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 2 +368 1 +369 3 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 2 +384 3 +386 1 +389 1 +392 1 +393 1 +394 1 +395 2 +396 3 +397 2 +399 2 +400 1 +401 5 +402 1 +403 3 +404 2 +406 4 +407 1 +409 3 +411 1 +413 2 +414 2 +417 3 +418 1 +419 1 +421 1 +424 2 +427 1 +429 2 +430 3 +431 3 +432 1 +435 1 +436 1 +437 1 +438 3 +439 2 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/subquery-alias.attr-0-fc8183d758151be72b3d75d9df124504 b/sql/hive/src/test/resources/golden/subquery-alias.attr-0-fc8183d758151be72b3d75d9df124504 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/subquery-alias.attr-0-fc8183d758151be72b3d75d9df124504 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/table.attr-0-26c9d24eb6305ea2106c26bdca38012e b/sql/hive/src/test/resources/golden/table.attr-0-26c9d24eb6305ea2106c26bdca38012e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/table.attr-0-26c9d24eb6305ea2106c26bdca38012e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/tablename_with_select-0-554898fe9d96fee7b652b8a771d66a25 b/sql/hive/src/test/resources/golden/tablename_with_select-0-554898fe9d96fee7b652b8a771d66a25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/tablename_with_select-1-736d6a05e1fe3249a84eb58f7cd806d2 b/sql/hive/src/test/resources/golden/tablename_with_select-1-736d6a05e1fe3249a84eb58f7cd806d2 new file mode 100644 index 0000000000000..92cca3b6f1e24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/tablename_with_select-1-736d6a05e1fe3249a84eb58f7cd806d2 @@ -0,0 +1,2 @@ +a int None +b string None \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/tablename_with_select-2-58d48c815413287858e2cfa16e5c6a5d b/sql/hive/src/test/resources/golden/tablename_with_select-2-58d48c815413287858e2cfa16e5c6a5d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/tablename_with_select-3-35c08c648a66f09f2cf7cfa6019c2113 b/sql/hive/src/test/resources/golden/tablename_with_select-3-35c08c648a66f09f2cf7cfa6019c2113 new file mode 100644 index 0000000000000..55d9485999072 --- /dev/null +++ b/sql/hive/src/test/resources/golden/tablename_with_select-3-35c08c648a66f09f2cf7cfa6019c2113 @@ -0,0 +1,500 @@ +0 val_0 +0 val_0 +0 val_0 +2 val_2 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +9 val_9 +10 val_10 +11 val_11 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +17 val_17 +18 val_18 +18 val_18 +19 val_19 +20 val_20 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +27 val_27 +28 val_28 +30 val_30 +33 val_33 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +41 val_41 +42 val_42 +42 val_42 +43 val_43 +44 val_44 +47 val_47 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/test_boolean_whereclause-0-b38bf01368da26ec9c60e9433a9c59a1 b/sql/hive/src/test/resources/golden/test_boolean_whereclause-0-b38bf01368da26ec9c60e9433a9c59a1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/test_boolean_whereclause-1-3e38e42c5b72364c5461c626f312be8c b/sql/hive/src/test/resources/golden/test_boolean_whereclause-1-3e38e42c5b72364c5461c626f312be8c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/test_boolean_whereclause-2-183920d856ad75e6d1e15121d3cd7364 b/sql/hive/src/test/resources/golden/test_boolean_whereclause-2-183920d856ad75e6d1e15121d3cd7364 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/test_boolean_whereclause-2-183920d856ad75e6d1e15121d3cd7364 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/timestamp_1-0-d362501d0176855077e65f8faf067fa8 b/sql/hive/src/test/resources/golden/timestamp_1-0-d362501d0176855077e65f8faf067fa8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_1-1-1d7cf3a2512fa1876b422b79bbe05426 b/sql/hive/src/test/resources/golden/timestamp_1-1-1d7cf3a2512fa1876b422b79bbe05426 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_1-2-74f477a8b726f5193dd42ef378a793c4 b/sql/hive/src/test/resources/golden/timestamp_1-2-74f477a8b726f5193dd42ef378a793c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_2-0-ea7192a4a5a985bcc8aab9aa79d9f028 b/sql/hive/src/test/resources/golden/timestamp_2-0-ea7192a4a5a985bcc8aab9aa79d9f028 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_2-1-61dbdf6d26c2a3f1143f6fdae999b1b4 b/sql/hive/src/test/resources/golden/timestamp_2-1-61dbdf6d26c2a3f1143f6fdae999b1b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_2-2-a5092ff0f5a3d3b8f4171994932d4d19 b/sql/hive/src/test/resources/golden/timestamp_2-2-a5092ff0f5a3d3b8f4171994932d4d19 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_3-0-165256158e3db1ce19c3c9db3c8011d2 b/sql/hive/src/test/resources/golden/timestamp_3-0-165256158e3db1ce19c3c9db3c8011d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_3-1-81edf5107270547641586aa02b4e7d9b b/sql/hive/src/test/resources/golden/timestamp_3-1-81edf5107270547641586aa02b4e7d9b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_3-2-7a012a0d98729da25b5ac374855dcee4 b/sql/hive/src/test/resources/golden/timestamp_3-2-7a012a0d98729da25b5ac374855dcee4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-0-48751533b44ea9e8ac3131767c2fed05 b/sql/hive/src/test/resources/golden/timestamp_comparison-0-48751533b44ea9e8ac3131767c2fed05 new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-0-48751533b44ea9e8ac3131767c2fed05 @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-1-60557e7bd2822c89fa8b076a9d0520fc b/sql/hive/src/test/resources/golden/timestamp_comparison-1-60557e7bd2822c89fa8b076a9d0520fc new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-1-60557e7bd2822c89fa8b076a9d0520fc @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-2-f96a9d88327951bd93f672dc2463ecd4 b/sql/hive/src/test/resources/golden/timestamp_comparison-2-f96a9d88327951bd93f672dc2463ecd4 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-2-f96a9d88327951bd93f672dc2463ecd4 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-3-13e17ed811165196416f777cbc162592 b/sql/hive/src/test/resources/golden/timestamp_comparison-3-13e17ed811165196416f777cbc162592 new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-3-13e17ed811165196416f777cbc162592 @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-4-4fa8a36edbefde4427c2ab2cf30e6399 b/sql/hive/src/test/resources/golden/timestamp_comparison-4-4fa8a36edbefde4427c2ab2cf30e6399 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-4-4fa8a36edbefde4427c2ab2cf30e6399 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-5-7e4fb6e8ba01df422e4c67e06a0c8453 b/sql/hive/src/test/resources/golden/timestamp_comparison-5-7e4fb6e8ba01df422e4c67e06a0c8453 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-5-7e4fb6e8ba01df422e4c67e06a0c8453 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-6-8c8e73673a950f6b3d960b08fcea076f b/sql/hive/src/test/resources/golden/timestamp_comparison-6-8c8e73673a950f6b3d960b08fcea076f new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-6-8c8e73673a950f6b3d960b08fcea076f @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-7-510c0a2a57dc5df8588bd13c4152f8bc b/sql/hive/src/test/resources/golden/timestamp_comparison-7-510c0a2a57dc5df8588bd13c4152f8bc new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-7-510c0a2a57dc5df8588bd13c4152f8bc @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/timestamp_comparison-8-659d5b1ae8200f13f265270e52a3dd65 b/sql/hive/src/test/resources/golden/timestamp_comparison-8-659d5b1ae8200f13f265270e52a3dd65 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/timestamp_comparison-8-659d5b1ae8200f13f265270e52a3dd65 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/timestamp_lazy-0-c0b1d928c9dea9b247ace0a056586594 b/sql/hive/src/test/resources/golden/timestamp_lazy-0-c0b1d928c9dea9b247ace0a056586594 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_lazy-1-d15685a0b8e8991b4f8d74568398bcdc b/sql/hive/src/test/resources/golden/timestamp_lazy-1-d15685a0b8e8991b4f8d74568398bcdc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_null-0-3bd56783b637a47f6447d247024941a0 b/sql/hive/src/test/resources/golden/timestamp_null-0-3bd56783b637a47f6447d247024941a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_null-1-4b9c19c1f57557979d3483d548f762cb b/sql/hive/src/test/resources/golden/timestamp_null-1-4b9c19c1f57557979d3483d548f762cb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_null-2-b3071984dee42c9e698e947fcbc2a1e8 b/sql/hive/src/test/resources/golden/timestamp_null-2-b3071984dee42c9e698e947fcbc2a1e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_udf-0-79914c5347620c6e62a8e0b9a95984af b/sql/hive/src/test/resources/golden/timestamp_udf-0-79914c5347620c6e62a8e0b9a95984af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_udf-1-59fc1842a23369235d42ed040d45fb3d b/sql/hive/src/test/resources/golden/timestamp_udf-1-59fc1842a23369235d42ed040d45fb3d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_udf-2-9039f474f9a96e9f15ace528faeed923 b/sql/hive/src/test/resources/golden/timestamp_udf-2-9039f474f9a96e9f15ace528faeed923 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/timestamp_udf-3-b0fd4ca3b22eb732a32772399331352f b/sql/hive/src/test/resources/golden/timestamp_udf-3-b0fd4ca3b22eb732a32772399331352f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-0-cd46bc635e3010cf1b990a652a584a09 b/sql/hive/src/test/resources/golden/touch-0-cd46bc635e3010cf1b990a652a584a09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-1-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/touch-1-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-10-27ad2962fed131f51ba802596ba37278 b/sql/hive/src/test/resources/golden/touch-10-27ad2962fed131f51ba802596ba37278 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-2-3e95421993ab28d18245ec2340f580a3 b/sql/hive/src/test/resources/golden/touch-2-3e95421993ab28d18245ec2340f580a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-3-c0c18ac884677231a41eea8d980d0451 b/sql/hive/src/test/resources/golden/touch-3-c0c18ac884677231a41eea8d980d0451 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-4-c06da7f8c1e98dc22e3171018e357f6a b/sql/hive/src/test/resources/golden/touch-4-c06da7f8c1e98dc22e3171018e357f6a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-5-af459a0264559a2aeaa1341ce779ab3c b/sql/hive/src/test/resources/golden/touch-5-af459a0264559a2aeaa1341ce779ab3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-6-5c7b24abea435f2628fe618f3a82e115 b/sql/hive/src/test/resources/golden/touch-6-5c7b24abea435f2628fe618f3a82e115 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-7-3752320b12abae0d138148d56a27c5b1 b/sql/hive/src/test/resources/golden/touch-7-3752320b12abae0d138148d56a27c5b1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-8-3562ab40242756452595cd7eae79b0ce b/sql/hive/src/test/resources/golden/touch-8-3562ab40242756452595cd7eae79b0ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/touch-9-cd46bc635e3010cf1b990a652a584a09 b/sql/hive/src/test/resources/golden/touch-9-cd46bc635e3010cf1b990a652a584a09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform-0-d81d055660f6ef3d9cc60dd673a8c0fe b/sql/hive/src/test/resources/golden/transform-0-d81d055660f6ef3d9cc60dd673a8c0fe new file mode 100644 index 0000000000000..d23e05acf7ba5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/transform-0-d81d055660f6ef3d9cc60dd673a8c0fe @@ -0,0 +1,500 @@ +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +146 +406 +429 +374 +152 +469 +145 +495 +37 +327 +281 +277 +209 +15 +82 +403 +166 +417 +430 +252 +292 +219 +287 +153 +193 +338 +446 +459 +394 +237 +482 +174 +413 +494 +207 +199 +466 +208 +174 +399 +396 +247 +417 +489 +162 +377 +397 +309 +365 +266 +439 +342 +367 +325 +167 +195 +475 +17 +113 +155 +203 +339 +0 +455 +128 +311 +316 +57 +302 +205 +149 +438 +345 +129 +170 +20 +489 +157 +378 +221 +92 +111 +47 +72 +4 +280 +35 +427 +277 +208 +356 +399 +169 +382 +498 +125 +386 +437 +469 +192 +286 +187 +176 +54 +459 +51 +138 +103 +239 +213 +216 +430 +278 +176 +289 +221 +65 +318 +332 +311 +275 +137 +241 +83 +333 +180 +284 +12 +230 +181 +67 +260 +404 +384 +489 +353 +373 +272 +138 +217 +84 +348 +466 +58 +8 +411 +230 +208 +348 +24 +463 +431 +179 +172 +42 +129 +158 +119 +496 +0 +322 +197 +468 +393 +454 +100 +298 +199 +191 +418 +96 +26 +165 +327 +230 +205 +120 +131 +51 +404 +43 +436 +156 +469 +468 +308 +95 +196 +288 +481 +457 +98 +282 +197 +187 +318 +318 +409 +470 +137 +369 +316 +169 +413 +85 +77 +0 +490 +87 +364 +179 +118 +134 +395 +282 +138 +238 +419 +15 +118 +72 +90 +307 +19 +435 +10 +277 +273 +306 +224 +309 +389 +327 +242 +369 +392 +272 +331 +401 +242 +452 +177 +226 +5 +497 +402 +396 +317 +395 +58 +35 +336 +95 +11 +168 +34 +229 +233 +143 +472 +322 +498 +160 +195 +42 +321 +430 +119 +489 +458 +78 +76 +41 +223 +492 +149 +449 +218 +228 +138 +453 +30 +209 +64 +468 +76 +74 +342 +69 +230 +33 +368 +103 +296 +113 +216 +367 +344 +167 +274 +219 +239 +485 +116 +223 +256 +263 +70 +487 +480 +401 +288 +191 +5 +244 +438 +128 +467 +432 +202 +316 +229 +469 +463 +280 +2 +35 +283 +331 +235 +80 +44 +193 +321 +335 +104 +466 +366 +175 +403 +483 +53 +105 +257 +406 +409 +190 +406 +401 +114 +258 +90 +203 +262 +348 +424 +12 +396 +201 +217 +164 +431 +454 +478 +298 +125 +431 +164 +424 +187 +382 +5 +70 +397 +480 +291 +24 +351 +255 +104 +70 +163 +438 +119 +414 +200 +491 +237 +439 +360 +248 +479 +305 +417 +199 +444 +120 +429 +169 +443 +323 +325 +277 +230 +478 +178 +468 +310 +317 +333 +493 +460 +207 +249 +265 +480 +83 +136 +353 +172 +214 +462 +233 +406 +133 +175 +189 +454 +375 +401 +421 +407 +384 +256 +26 +134 +67 +384 +379 +18 +462 +492 +100 +298 +9 +341 +498 +146 +458 +362 +186 +285 +348 +167 +18 +273 +183 +281 +344 +97 +469 +315 +84 +28 +37 +448 +152 +348 +307 +194 +414 +477 +222 +126 +90 +169 +403 +400 +200 +97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/transform1-0-b6919fc48901e388c869c84ae0211102 b/sql/hive/src/test/resources/golden/transform1-0-b6919fc48901e388c869c84ae0211102 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform1-1-bb8804b6b511cb7e0c4dbdf2b978f737 b/sql/hive/src/test/resources/golden/transform1-1-bb8804b6b511cb7e0c4dbdf2b978f737 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform1-2-25d6cab86c36d65fabf5645db3126a19 b/sql/hive/src/test/resources/golden/transform1-2-25d6cab86c36d65fabf5645db3126a19 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform1-3-8324a70d533a06a5171c1016b1fea7c3 b/sql/hive/src/test/resources/golden/transform1-3-8324a70d533a06a5171c1016b1fea7c3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform1-4-65527bae8e73262255ef83082c6968f9 b/sql/hive/src/test/resources/golden/transform1-4-65527bae8e73262255ef83082c6968f9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform1-5-e0037a3f97ce0127a40d163af4c20ad5 b/sql/hive/src/test/resources/golden/transform1-5-e0037a3f97ce0127a40d163af4c20ad5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform1-6-3b862abd732c9e9f0db50ad0b9dae6f b/sql/hive/src/test/resources/golden/transform1-6-3b862abd732c9e9f0db50ad0b9dae6f new file mode 100644 index 0000000000000..c6f628b1a3eef --- /dev/null +++ b/sql/hive/src/test/resources/golden/transform1-6-3b862abd732c9e9f0db50ad0b9dae6f @@ -0,0 +1 @@ +[0,1,2] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/transform_ppr1-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/transform_ppr1-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/transform_ppr1-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/transform_ppr1-1-65fe307c21b350846b3c496890b0b619 b/sql/hive/src/test/resources/golden/transform_ppr1-1-65fe307c21b350846b3c496890b0b619 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform_ppr1-2-8de14457978564d5fe4ab9a1c2a87d47 b/sql/hive/src/test/resources/golden/transform_ppr1-2-8de14457978564d5fe4ab9a1c2a87d47 new file mode 100644 index 0000000000000..839efe2d57956 --- /dev/null +++ b/sql/hive/src/test/resources/golden/transform_ppr1-2-8de14457978564d5fe4ab9a1c2a87d47 @@ -0,0 +1,168 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +10 val_10 +10 val_10 +11 val_11 +11 val_11 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +17 val_17 +17 val_17 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +19 val_19 +19 val_19 +2 val_2 +2 val_2 +20 val_20 +20 val_20 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +27 val_27 +27 val_27 +28 val_28 +28 val_28 +30 val_30 +30 val_30 +33 val_33 +33 val_33 +34 val_34 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +4 val_4 +4 val_4 +41 val_41 +41 val_41 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +43 val_43 +43 val_43 +44 val_44 +44 val_44 +47 val_47 +47 val_47 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +53 val_53 +53 val_53 +54 val_54 +54 val_54 +57 val_57 +57 val_57 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +64 val_64 +64 val_64 +65 val_65 +65 val_65 +66 val_66 +66 val_66 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +69 val_69 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +74 val_74 +74 val_74 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +77 val_77 +77 val_77 +78 val_78 +78 val_78 +8 val_8 +8 val_8 +80 val_80 +80 val_80 +82 val_82 +82 val_82 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +85 val_85 +85 val_85 +86 val_86 +86 val_86 +87 val_87 +87 val_87 +9 val_9 +9 val_9 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +92 val_92 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +96 val_96 +96 val_96 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +98 val_98 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/transform_ppr2-0-ae225e86c2ae20519ffdf23190454161 b/sql/hive/src/test/resources/golden/transform_ppr2-0-ae225e86c2ae20519ffdf23190454161 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/transform_ppr2-0-ae225e86c2ae20519ffdf23190454161 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/transform_ppr2-1-6133f48deec4cdf525b8c1574e7247d1 b/sql/hive/src/test/resources/golden/transform_ppr2-1-6133f48deec4cdf525b8c1574e7247d1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/transform_ppr2-2-636c4938673a273299c8569295d27c99 b/sql/hive/src/test/resources/golden/transform_ppr2-2-636c4938673a273299c8569295d27c99 new file mode 100644 index 0000000000000..839efe2d57956 --- /dev/null +++ b/sql/hive/src/test/resources/golden/transform_ppr2-2-636c4938673a273299c8569295d27c99 @@ -0,0 +1,168 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +10 val_10 +10 val_10 +11 val_11 +11 val_11 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +17 val_17 +17 val_17 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +19 val_19 +19 val_19 +2 val_2 +2 val_2 +20 val_20 +20 val_20 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +27 val_27 +27 val_27 +28 val_28 +28 val_28 +30 val_30 +30 val_30 +33 val_33 +33 val_33 +34 val_34 +34 val_34 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +4 val_4 +4 val_4 +41 val_41 +41 val_41 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +43 val_43 +43 val_43 +44 val_44 +44 val_44 +47 val_47 +47 val_47 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +53 val_53 +53 val_53 +54 val_54 +54 val_54 +57 val_57 +57 val_57 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +64 val_64 +64 val_64 +65 val_65 +65 val_65 +66 val_66 +66 val_66 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +69 val_69 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +74 val_74 +74 val_74 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +77 val_77 +77 val_77 +78 val_78 +78 val_78 +8 val_8 +8 val_8 +80 val_80 +80 val_80 +82 val_82 +82 val_82 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +85 val_85 +85 val_85 +86 val_86 +86 val_86 +87 val_87 +87 val_87 +9 val_9 +9 val_9 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +92 val_92 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +96 val_96 +96 val_96 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +98 val_98 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/trivial join ON clause-0-3b6afcbd622aa111ee260bebc763613d b/sql/hive/src/test/resources/golden/trivial join ON clause-0-3b6afcbd622aa111ee260bebc763613d new file mode 100644 index 0000000000000..66fafbdf72b63 --- /dev/null +++ b/sql/hive/src/test/resources/golden/trivial join ON clause-0-3b6afcbd622aa111ee260bebc763613d @@ -0,0 +1,1028 @@ +238 val_238 238 val_238 +238 val_238 238 val_238 +86 val_86 86 val_86 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +27 val_27 27 val_27 +165 val_165 165 val_165 +165 val_165 165 val_165 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +255 val_255 255 val_255 +255 val_255 255 val_255 +278 val_278 278 val_278 +278 val_278 278 val_278 +98 val_98 98 val_98 +98 val_98 98 val_98 +484 val_484 484 val_484 +265 val_265 265 val_265 +265 val_265 265 val_265 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +150 val_150 150 val_150 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +224 val_224 224 val_224 +224 val_224 224 val_224 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +66 val_66 66 val_66 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +213 val_213 213 val_213 +213 val_213 213 val_213 +146 val_146 146 val_146 +146 val_146 146 val_146 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +429 val_429 429 val_429 +429 val_429 429 val_429 +374 val_374 374 val_374 +152 val_152 152 val_152 +152 val_152 152 val_152 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +145 val_145 145 val_145 +495 val_495 495 val_495 +37 val_37 37 val_37 +37 val_37 37 val_37 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +281 val_281 281 val_281 +281 val_281 281 val_281 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +209 val_209 209 val_209 +209 val_209 209 val_209 +15 val_15 15 val_15 +15 val_15 15 val_15 +82 val_82 82 val_82 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +166 val_166 166 val_166 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +252 val_252 252 val_252 +292 val_292 292 val_292 +219 val_219 219 val_219 +219 val_219 219 val_219 +287 val_287 287 val_287 +153 val_153 153 val_153 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +338 val_338 338 val_338 +446 val_446 446 val_446 +459 val_459 459 val_459 +459 val_459 459 val_459 +394 val_394 394 val_394 +237 val_237 237 val_237 +237 val_237 237 val_237 +482 val_482 482 val_482 +174 val_174 174 val_174 +174 val_174 174 val_174 +413 val_413 413 val_413 +413 val_413 413 val_413 +494 val_494 494 val_494 +207 val_207 207 val_207 +207 val_207 207 val_207 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +174 val_174 174 val_174 +174 val_174 174 val_174 +399 val_399 399 val_399 +399 val_399 399 val_399 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +247 val_247 247 val_247 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +162 val_162 162 val_162 +377 val_377 377 val_377 +397 val_397 397 val_397 +397 val_397 397 val_397 +309 val_309 309 val_309 +309 val_309 309 val_309 +365 val_365 365 val_365 +266 val_266 266 val_266 +439 val_439 439 val_439 +439 val_439 439 val_439 +342 val_342 342 val_342 +342 val_342 342 val_342 +367 val_367 367 val_367 +367 val_367 367 val_367 +325 val_325 325 val_325 +325 val_325 325 val_325 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +195 val_195 195 val_195 +195 val_195 195 val_195 +475 val_475 475 val_475 +17 val_17 17 val_17 +113 val_113 113 val_113 +113 val_113 113 val_113 +155 val_155 155 val_155 +203 val_203 203 val_203 +203 val_203 203 val_203 +339 val_339 339 val_339 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +455 val_455 455 val_455 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +57 val_57 57 val_57 +302 val_302 302 val_302 +205 val_205 205 val_205 +205 val_205 205 val_205 +149 val_149 149 val_149 +149 val_149 149 val_149 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +345 val_345 345 val_345 +129 val_129 129 val_129 +129 val_129 129 val_129 +170 val_170 170 val_170 +20 val_20 20 val_20 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +157 val_157 157 val_157 +378 val_378 378 val_378 +221 val_221 221 val_221 +221 val_221 221 val_221 +92 val_92 92 val_92 +111 val_111 111 val_111 +47 val_47 47 val_47 +72 val_72 72 val_72 +72 val_72 72 val_72 +4 val_4 4 val_4 +280 val_280 280 val_280 +280 val_280 280 val_280 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +427 val_427 427 val_427 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +356 val_356 356 val_356 +399 val_399 399 val_399 +399 val_399 399 val_399 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +382 val_382 382 val_382 +382 val_382 382 val_382 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +125 val_125 125 val_125 +125 val_125 125 val_125 +386 val_386 386 val_386 +437 val_437 437 val_437 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +192 val_192 192 val_192 +286 val_286 286 val_286 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +176 val_176 176 val_176 +176 val_176 176 val_176 +54 val_54 54 val_54 +459 val_459 459 val_459 +459 val_459 459 val_459 +51 val_51 51 val_51 +51 val_51 51 val_51 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +103 val_103 103 val_103 +103 val_103 103 val_103 +239 val_239 239 val_239 +239 val_239 239 val_239 +213 val_213 213 val_213 +213 val_213 213 val_213 +216 val_216 216 val_216 +216 val_216 216 val_216 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +278 val_278 278 val_278 +278 val_278 278 val_278 +176 val_176 176 val_176 +176 val_176 176 val_176 +289 val_289 289 val_289 +221 val_221 221 val_221 +221 val_221 221 val_221 +65 val_65 65 val_65 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +332 val_332 332 val_332 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +275 val_275 275 val_275 +137 val_137 137 val_137 +137 val_137 137 val_137 +241 val_241 241 val_241 +83 val_83 83 val_83 +83 val_83 83 val_83 +333 val_333 333 val_333 +333 val_333 333 val_333 +180 val_180 180 val_180 +284 val_284 284 val_284 +12 val_12 12 val_12 +12 val_12 12 val_12 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +181 val_181 181 val_181 +67 val_67 67 val_67 +67 val_67 67 val_67 +260 val_260 260 val_260 +404 val_404 404 val_404 +404 val_404 404 val_404 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +353 val_353 353 val_353 +353 val_353 353 val_353 +373 val_373 373 val_373 +272 val_272 272 val_272 +272 val_272 272 val_272 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +217 val_217 217 val_217 +217 val_217 217 val_217 +84 val_84 84 val_84 +84 val_84 84 val_84 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +58 val_58 58 val_58 +58 val_58 58 val_58 +8 val_8 8 val_8 +411 val_411 411 val_411 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +24 val_24 24 val_24 +24 val_24 24 val_24 +463 val_463 463 val_463 +463 val_463 463 val_463 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +179 val_179 179 val_179 +179 val_179 179 val_179 +172 val_172 172 val_172 +172 val_172 172 val_172 +42 val_42 42 val_42 +42 val_42 42 val_42 +129 val_129 129 val_129 +129 val_129 129 val_129 +158 val_158 158 val_158 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +496 val_496 496 val_496 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +322 val_322 322 val_322 +322 val_322 322 val_322 +197 val_197 197 val_197 +197 val_197 197 val_197 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +393 val_393 393 val_393 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +191 val_191 191 val_191 +191 val_191 191 val_191 +418 val_418 418 val_418 +96 val_96 96 val_96 +26 val_26 26 val_26 +26 val_26 26 val_26 +165 val_165 165 val_165 +165 val_165 165 val_165 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +205 val_205 205 val_205 +205 val_205 205 val_205 +120 val_120 120 val_120 +120 val_120 120 val_120 +131 val_131 131 val_131 +51 val_51 51 val_51 +51 val_51 51 val_51 +404 val_404 404 val_404 +404 val_404 404 val_404 +43 val_43 43 val_43 +436 val_436 436 val_436 +156 val_156 156 val_156 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +308 val_308 308 val_308 +95 val_95 95 val_95 +95 val_95 95 val_95 +196 val_196 196 val_196 +288 val_288 288 val_288 +288 val_288 288 val_288 +481 val_481 481 val_481 +457 val_457 457 val_457 +98 val_98 98 val_98 +98 val_98 98 val_98 +282 val_282 282 val_282 +282 val_282 282 val_282 +197 val_197 197 val_197 +197 val_197 197 val_197 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +470 val_470 470 val_470 +137 val_137 137 val_137 +137 val_137 137 val_137 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +413 val_413 413 val_413 +413 val_413 413 val_413 +85 val_85 85 val_85 +77 val_77 77 val_77 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +490 val_490 490 val_490 +87 val_87 87 val_87 +364 val_364 364 val_364 +179 val_179 179 val_179 +179 val_179 179 val_179 +118 val_118 118 val_118 +118 val_118 118 val_118 +134 val_134 134 val_134 +134 val_134 134 val_134 +395 val_395 395 val_395 +395 val_395 395 val_395 +282 val_282 282 val_282 +282 val_282 282 val_282 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +238 val_238 238 val_238 +238 val_238 238 val_238 +419 val_419 419 val_419 +15 val_15 15 val_15 +15 val_15 15 val_15 +118 val_118 118 val_118 +118 val_118 118 val_118 +72 val_72 72 val_72 +72 val_72 72 val_72 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +307 val_307 307 val_307 +307 val_307 307 val_307 +19 val_19 19 val_19 +435 val_435 435 val_435 +10 val_10 10 val_10 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +306 val_306 306 val_306 +224 val_224 224 val_224 +224 val_224 224 val_224 +309 val_309 309 val_309 +309 val_309 309 val_309 +389 val_389 389 val_389 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +242 val_242 242 val_242 +242 val_242 242 val_242 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +392 val_392 392 val_392 +272 val_272 272 val_272 +272 val_272 272 val_272 +331 val_331 331 val_331 +331 val_331 331 val_331 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +242 val_242 242 val_242 +242 val_242 242 val_242 +452 val_452 452 val_452 +177 val_177 177 val_177 +226 val_226 226 val_226 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +497 val_497 497 val_497 +402 val_402 402 val_402 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +317 val_317 317 val_317 +317 val_317 317 val_317 +395 val_395 395 val_395 +395 val_395 395 val_395 +58 val_58 58 val_58 +58 val_58 58 val_58 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +336 val_336 336 val_336 +95 val_95 95 val_95 +95 val_95 95 val_95 +11 val_11 11 val_11 +168 val_168 168 val_168 +34 val_34 34 val_34 +229 val_229 229 val_229 +229 val_229 229 val_229 +233 val_233 233 val_233 +233 val_233 233 val_233 +143 val_143 143 val_143 +472 val_472 472 val_472 +322 val_322 322 val_322 +322 val_322 322 val_322 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +160 val_160 160 val_160 +195 val_195 195 val_195 +195 val_195 195 val_195 +42 val_42 42 val_42 +42 val_42 42 val_42 +321 val_321 321 val_321 +321 val_321 321 val_321 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +458 val_458 458 val_458 +458 val_458 458 val_458 +78 val_78 78 val_78 +76 val_76 76 val_76 +76 val_76 76 val_76 +41 val_41 41 val_41 +223 val_223 223 val_223 +223 val_223 223 val_223 +492 val_492 492 val_492 +492 val_492 492 val_492 +149 val_149 149 val_149 +149 val_149 149 val_149 +449 val_449 449 val_449 +218 val_218 218 val_218 +228 val_228 228 val_228 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +453 val_453 453 val_453 +30 val_30 30 val_30 +209 val_209 209 val_209 +209 val_209 209 val_209 +64 val_64 64 val_64 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +76 val_76 76 val_76 +76 val_76 76 val_76 +74 val_74 74 val_74 +342 val_342 342 val_342 +342 val_342 342 val_342 +69 val_69 69 val_69 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +33 val_33 33 val_33 +368 val_368 368 val_368 +103 val_103 103 val_103 +103 val_103 103 val_103 +296 val_296 296 val_296 +113 val_113 113 val_113 +113 val_113 113 val_113 +216 val_216 216 val_216 +216 val_216 216 val_216 +367 val_367 367 val_367 +367 val_367 367 val_367 +344 val_344 344 val_344 +344 val_344 344 val_344 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +274 val_274 274 val_274 +219 val_219 219 val_219 +219 val_219 219 val_219 +239 val_239 239 val_239 +239 val_239 239 val_239 +485 val_485 485 val_485 +116 val_116 116 val_116 +223 val_223 223 val_223 +223 val_223 223 val_223 +256 val_256 256 val_256 +256 val_256 256 val_256 +263 val_263 263 val_263 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +487 val_487 487 val_487 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +288 val_288 288 val_288 +288 val_288 288 val_288 +191 val_191 191 val_191 +191 val_191 191 val_191 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +244 val_244 244 val_244 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +467 val_467 467 val_467 +432 val_432 432 val_432 +202 val_202 202 val_202 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +229 val_229 229 val_229 +229 val_229 229 val_229 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +463 val_463 463 val_463 +463 val_463 463 val_463 +280 val_280 280 val_280 +280 val_280 280 val_280 +2 val_2 2 val_2 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +283 val_283 283 val_283 +331 val_331 331 val_331 +331 val_331 331 val_331 +235 val_235 235 val_235 +80 val_80 80 val_80 +44 val_44 44 val_44 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +321 val_321 321 val_321 +321 val_321 321 val_321 +335 val_335 335 val_335 +104 val_104 104 val_104 +104 val_104 104 val_104 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +366 val_366 366 val_366 +175 val_175 175 val_175 +175 val_175 175 val_175 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +483 val_483 483 val_483 +53 val_53 53 val_53 +105 val_105 105 val_105 +257 val_257 257 val_257 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +190 val_190 190 val_190 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +114 val_114 114 val_114 +258 val_258 258 val_258 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +203 val_203 203 val_203 +203 val_203 203 val_203 +262 val_262 262 val_262 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +424 val_424 424 val_424 +424 val_424 424 val_424 +12 val_12 12 val_12 +12 val_12 12 val_12 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +201 val_201 201 val_201 +217 val_217 217 val_217 +217 val_217 217 val_217 +164 val_164 164 val_164 +164 val_164 164 val_164 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +478 val_478 478 val_478 +478 val_478 478 val_478 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +125 val_125 125 val_125 +125 val_125 125 val_125 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +164 val_164 164 val_164 +164 val_164 164 val_164 +424 val_424 424 val_424 +424 val_424 424 val_424 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +382 val_382 382 val_382 +382 val_382 382 val_382 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +397 val_397 397 val_397 +397 val_397 397 val_397 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +291 val_291 291 val_291 +24 val_24 24 val_24 +24 val_24 24 val_24 +351 val_351 351 val_351 +255 val_255 255 val_255 +255 val_255 255 val_255 +104 val_104 104 val_104 +104 val_104 104 val_104 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +163 val_163 163 val_163 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +414 val_414 414 val_414 +414 val_414 414 val_414 +200 val_200 200 val_200 +200 val_200 200 val_200 +491 val_491 491 val_491 +237 val_237 237 val_237 +237 val_237 237 val_237 +439 val_439 439 val_439 +439 val_439 439 val_439 +360 val_360 360 val_360 +248 val_248 248 val_248 +479 val_479 479 val_479 +305 val_305 305 val_305 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +444 val_444 444 val_444 +120 val_120 120 val_120 +120 val_120 120 val_120 +429 val_429 429 val_429 +429 val_429 429 val_429 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +443 val_443 443 val_443 +323 val_323 323 val_323 +325 val_325 325 val_325 +325 val_325 325 val_325 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +478 val_478 478 val_478 +478 val_478 478 val_478 +178 val_178 178 val_178 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +310 val_310 310 val_310 +317 val_317 317 val_317 +317 val_317 317 val_317 +333 val_333 333 val_333 +333 val_333 333 val_333 +493 val_493 493 val_493 +460 val_460 460 val_460 +207 val_207 207 val_207 +207 val_207 207 val_207 +249 val_249 249 val_249 +265 val_265 265 val_265 +265 val_265 265 val_265 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +83 val_83 83 val_83 +83 val_83 83 val_83 +136 val_136 136 val_136 +353 val_353 353 val_353 +353 val_353 353 val_353 +172 val_172 172 val_172 +172 val_172 172 val_172 +214 val_214 214 val_214 +462 val_462 462 val_462 +462 val_462 462 val_462 +233 val_233 233 val_233 +233 val_233 233 val_233 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +133 val_133 133 val_133 +175 val_175 175 val_175 +175 val_175 175 val_175 +189 val_189 189 val_189 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +375 val_375 375 val_375 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +421 val_421 421 val_421 +407 val_407 407 val_407 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +256 val_256 256 val_256 +256 val_256 256 val_256 +26 val_26 26 val_26 +26 val_26 26 val_26 +134 val_134 134 val_134 +134 val_134 134 val_134 +67 val_67 67 val_67 +67 val_67 67 val_67 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +379 val_379 379 val_379 +18 val_18 18 val_18 +18 val_18 18 val_18 +462 val_462 462 val_462 +462 val_462 462 val_462 +492 val_492 492 val_492 +492 val_492 492 val_492 +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +9 val_9 9 val_9 +341 val_341 341 val_341 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +146 val_146 146 val_146 +146 val_146 146 val_146 +458 val_458 458 val_458 +458 val_458 458 val_458 +362 val_362 362 val_362 +186 val_186 186 val_186 +285 val_285 285 val_285 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +18 val_18 18 val_18 +18 val_18 18 val_18 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +183 val_183 183 val_183 +281 val_281 281 val_281 +281 val_281 281 val_281 +344 val_344 344 val_344 +344 val_344 344 val_344 +97 val_97 97 val_97 +97 val_97 97 val_97 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +315 val_315 315 val_315 +84 val_84 84 val_84 +84 val_84 84 val_84 +28 val_28 28 val_28 +37 val_37 37 val_37 +37 val_37 37 val_37 +448 val_448 448 val_448 +152 val_152 152 val_152 +152 val_152 152 val_152 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +307 val_307 307 val_307 +307 val_307 307 val_307 +194 val_194 194 val_194 +414 val_414 414 val_414 +414 val_414 414 val_414 +477 val_477 477 val_477 +222 val_222 222 val_222 +126 val_126 126 val_126 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +400 val_400 400 val_400 +200 val_200 200 val_200 +200 val_200 200 val_200 +97 val_97 97 val_97 +97 val_97 97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/trivial join where clause-0-25ffeb9d5e570c8b62b6ae2829655fe3 b/sql/hive/src/test/resources/golden/trivial join where clause-0-25ffeb9d5e570c8b62b6ae2829655fe3 new file mode 100644 index 0000000000000..66fafbdf72b63 --- /dev/null +++ b/sql/hive/src/test/resources/golden/trivial join where clause-0-25ffeb9d5e570c8b62b6ae2829655fe3 @@ -0,0 +1,1028 @@ +238 val_238 238 val_238 +238 val_238 238 val_238 +86 val_86 86 val_86 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +27 val_27 27 val_27 +165 val_165 165 val_165 +165 val_165 165 val_165 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +255 val_255 255 val_255 +255 val_255 255 val_255 +278 val_278 278 val_278 +278 val_278 278 val_278 +98 val_98 98 val_98 +98 val_98 98 val_98 +484 val_484 484 val_484 +265 val_265 265 val_265 +265 val_265 265 val_265 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +150 val_150 150 val_150 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +224 val_224 224 val_224 +224 val_224 224 val_224 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +66 val_66 66 val_66 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +213 val_213 213 val_213 +213 val_213 213 val_213 +146 val_146 146 val_146 +146 val_146 146 val_146 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +429 val_429 429 val_429 +429 val_429 429 val_429 +374 val_374 374 val_374 +152 val_152 152 val_152 +152 val_152 152 val_152 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +145 val_145 145 val_145 +495 val_495 495 val_495 +37 val_37 37 val_37 +37 val_37 37 val_37 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +281 val_281 281 val_281 +281 val_281 281 val_281 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +209 val_209 209 val_209 +209 val_209 209 val_209 +15 val_15 15 val_15 +15 val_15 15 val_15 +82 val_82 82 val_82 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +166 val_166 166 val_166 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +252 val_252 252 val_252 +292 val_292 292 val_292 +219 val_219 219 val_219 +219 val_219 219 val_219 +287 val_287 287 val_287 +153 val_153 153 val_153 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +338 val_338 338 val_338 +446 val_446 446 val_446 +459 val_459 459 val_459 +459 val_459 459 val_459 +394 val_394 394 val_394 +237 val_237 237 val_237 +237 val_237 237 val_237 +482 val_482 482 val_482 +174 val_174 174 val_174 +174 val_174 174 val_174 +413 val_413 413 val_413 +413 val_413 413 val_413 +494 val_494 494 val_494 +207 val_207 207 val_207 +207 val_207 207 val_207 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +174 val_174 174 val_174 +174 val_174 174 val_174 +399 val_399 399 val_399 +399 val_399 399 val_399 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +247 val_247 247 val_247 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +162 val_162 162 val_162 +377 val_377 377 val_377 +397 val_397 397 val_397 +397 val_397 397 val_397 +309 val_309 309 val_309 +309 val_309 309 val_309 +365 val_365 365 val_365 +266 val_266 266 val_266 +439 val_439 439 val_439 +439 val_439 439 val_439 +342 val_342 342 val_342 +342 val_342 342 val_342 +367 val_367 367 val_367 +367 val_367 367 val_367 +325 val_325 325 val_325 +325 val_325 325 val_325 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +195 val_195 195 val_195 +195 val_195 195 val_195 +475 val_475 475 val_475 +17 val_17 17 val_17 +113 val_113 113 val_113 +113 val_113 113 val_113 +155 val_155 155 val_155 +203 val_203 203 val_203 +203 val_203 203 val_203 +339 val_339 339 val_339 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +455 val_455 455 val_455 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +57 val_57 57 val_57 +302 val_302 302 val_302 +205 val_205 205 val_205 +205 val_205 205 val_205 +149 val_149 149 val_149 +149 val_149 149 val_149 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +345 val_345 345 val_345 +129 val_129 129 val_129 +129 val_129 129 val_129 +170 val_170 170 val_170 +20 val_20 20 val_20 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +157 val_157 157 val_157 +378 val_378 378 val_378 +221 val_221 221 val_221 +221 val_221 221 val_221 +92 val_92 92 val_92 +111 val_111 111 val_111 +47 val_47 47 val_47 +72 val_72 72 val_72 +72 val_72 72 val_72 +4 val_4 4 val_4 +280 val_280 280 val_280 +280 val_280 280 val_280 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +427 val_427 427 val_427 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +356 val_356 356 val_356 +399 val_399 399 val_399 +399 val_399 399 val_399 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +382 val_382 382 val_382 +382 val_382 382 val_382 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +125 val_125 125 val_125 +125 val_125 125 val_125 +386 val_386 386 val_386 +437 val_437 437 val_437 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +192 val_192 192 val_192 +286 val_286 286 val_286 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +176 val_176 176 val_176 +176 val_176 176 val_176 +54 val_54 54 val_54 +459 val_459 459 val_459 +459 val_459 459 val_459 +51 val_51 51 val_51 +51 val_51 51 val_51 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +103 val_103 103 val_103 +103 val_103 103 val_103 +239 val_239 239 val_239 +239 val_239 239 val_239 +213 val_213 213 val_213 +213 val_213 213 val_213 +216 val_216 216 val_216 +216 val_216 216 val_216 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +278 val_278 278 val_278 +278 val_278 278 val_278 +176 val_176 176 val_176 +176 val_176 176 val_176 +289 val_289 289 val_289 +221 val_221 221 val_221 +221 val_221 221 val_221 +65 val_65 65 val_65 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +332 val_332 332 val_332 +311 val_311 311 val_311 +311 val_311 311 val_311 +311 val_311 311 val_311 +275 val_275 275 val_275 +137 val_137 137 val_137 +137 val_137 137 val_137 +241 val_241 241 val_241 +83 val_83 83 val_83 +83 val_83 83 val_83 +333 val_333 333 val_333 +333 val_333 333 val_333 +180 val_180 180 val_180 +284 val_284 284 val_284 +12 val_12 12 val_12 +12 val_12 12 val_12 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +181 val_181 181 val_181 +67 val_67 67 val_67 +67 val_67 67 val_67 +260 val_260 260 val_260 +404 val_404 404 val_404 +404 val_404 404 val_404 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +353 val_353 353 val_353 +353 val_353 353 val_353 +373 val_373 373 val_373 +272 val_272 272 val_272 +272 val_272 272 val_272 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +217 val_217 217 val_217 +217 val_217 217 val_217 +84 val_84 84 val_84 +84 val_84 84 val_84 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +58 val_58 58 val_58 +58 val_58 58 val_58 +8 val_8 8 val_8 +411 val_411 411 val_411 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +208 val_208 208 val_208 +208 val_208 208 val_208 +208 val_208 208 val_208 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +24 val_24 24 val_24 +24 val_24 24 val_24 +463 val_463 463 val_463 +463 val_463 463 val_463 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +179 val_179 179 val_179 +179 val_179 179 val_179 +172 val_172 172 val_172 +172 val_172 172 val_172 +42 val_42 42 val_42 +42 val_42 42 val_42 +129 val_129 129 val_129 +129 val_129 129 val_129 +158 val_158 158 val_158 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +496 val_496 496 val_496 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +322 val_322 322 val_322 +322 val_322 322 val_322 +197 val_197 197 val_197 +197 val_197 197 val_197 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +393 val_393 393 val_393 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +191 val_191 191 val_191 +191 val_191 191 val_191 +418 val_418 418 val_418 +96 val_96 96 val_96 +26 val_26 26 val_26 +26 val_26 26 val_26 +165 val_165 165 val_165 +165 val_165 165 val_165 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +205 val_205 205 val_205 +205 val_205 205 val_205 +120 val_120 120 val_120 +120 val_120 120 val_120 +131 val_131 131 val_131 +51 val_51 51 val_51 +51 val_51 51 val_51 +404 val_404 404 val_404 +404 val_404 404 val_404 +43 val_43 43 val_43 +436 val_436 436 val_436 +156 val_156 156 val_156 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +308 val_308 308 val_308 +95 val_95 95 val_95 +95 val_95 95 val_95 +196 val_196 196 val_196 +288 val_288 288 val_288 +288 val_288 288 val_288 +481 val_481 481 val_481 +457 val_457 457 val_457 +98 val_98 98 val_98 +98 val_98 98 val_98 +282 val_282 282 val_282 +282 val_282 282 val_282 +197 val_197 197 val_197 +197 val_197 197 val_197 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +318 val_318 318 val_318 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +470 val_470 470 val_470 +137 val_137 137 val_137 +137 val_137 137 val_137 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +413 val_413 413 val_413 +413 val_413 413 val_413 +85 val_85 85 val_85 +77 val_77 77 val_77 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +490 val_490 490 val_490 +87 val_87 87 val_87 +364 val_364 364 val_364 +179 val_179 179 val_179 +179 val_179 179 val_179 +118 val_118 118 val_118 +118 val_118 118 val_118 +134 val_134 134 val_134 +134 val_134 134 val_134 +395 val_395 395 val_395 +395 val_395 395 val_395 +282 val_282 282 val_282 +282 val_282 282 val_282 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +238 val_238 238 val_238 +238 val_238 238 val_238 +419 val_419 419 val_419 +15 val_15 15 val_15 +15 val_15 15 val_15 +118 val_118 118 val_118 +118 val_118 118 val_118 +72 val_72 72 val_72 +72 val_72 72 val_72 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +307 val_307 307 val_307 +307 val_307 307 val_307 +19 val_19 19 val_19 +435 val_435 435 val_435 +10 val_10 10 val_10 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +306 val_306 306 val_306 +224 val_224 224 val_224 +224 val_224 224 val_224 +309 val_309 309 val_309 +309 val_309 309 val_309 +389 val_389 389 val_389 +327 val_327 327 val_327 +327 val_327 327 val_327 +327 val_327 327 val_327 +242 val_242 242 val_242 +242 val_242 242 val_242 +369 val_369 369 val_369 +369 val_369 369 val_369 +369 val_369 369 val_369 +392 val_392 392 val_392 +272 val_272 272 val_272 +272 val_272 272 val_272 +331 val_331 331 val_331 +331 val_331 331 val_331 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +242 val_242 242 val_242 +242 val_242 242 val_242 +452 val_452 452 val_452 +177 val_177 177 val_177 +226 val_226 226 val_226 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +497 val_497 497 val_497 +402 val_402 402 val_402 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +317 val_317 317 val_317 +317 val_317 317 val_317 +395 val_395 395 val_395 +395 val_395 395 val_395 +58 val_58 58 val_58 +58 val_58 58 val_58 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +336 val_336 336 val_336 +95 val_95 95 val_95 +95 val_95 95 val_95 +11 val_11 11 val_11 +168 val_168 168 val_168 +34 val_34 34 val_34 +229 val_229 229 val_229 +229 val_229 229 val_229 +233 val_233 233 val_233 +233 val_233 233 val_233 +143 val_143 143 val_143 +472 val_472 472 val_472 +322 val_322 322 val_322 +322 val_322 322 val_322 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +160 val_160 160 val_160 +195 val_195 195 val_195 +195 val_195 195 val_195 +42 val_42 42 val_42 +42 val_42 42 val_42 +321 val_321 321 val_321 +321 val_321 321 val_321 +430 val_430 430 val_430 +430 val_430 430 val_430 +430 val_430 430 val_430 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +489 val_489 489 val_489 +458 val_458 458 val_458 +458 val_458 458 val_458 +78 val_78 78 val_78 +76 val_76 76 val_76 +76 val_76 76 val_76 +41 val_41 41 val_41 +223 val_223 223 val_223 +223 val_223 223 val_223 +492 val_492 492 val_492 +492 val_492 492 val_492 +149 val_149 149 val_149 +149 val_149 149 val_149 +449 val_449 449 val_449 +218 val_218 218 val_218 +228 val_228 228 val_228 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +138 val_138 138 val_138 +453 val_453 453 val_453 +30 val_30 30 val_30 +209 val_209 209 val_209 +209 val_209 209 val_209 +64 val_64 64 val_64 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +76 val_76 76 val_76 +76 val_76 76 val_76 +74 val_74 74 val_74 +342 val_342 342 val_342 +342 val_342 342 val_342 +69 val_69 69 val_69 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +33 val_33 33 val_33 +368 val_368 368 val_368 +103 val_103 103 val_103 +103 val_103 103 val_103 +296 val_296 296 val_296 +113 val_113 113 val_113 +113 val_113 113 val_113 +216 val_216 216 val_216 +216 val_216 216 val_216 +367 val_367 367 val_367 +367 val_367 367 val_367 +344 val_344 344 val_344 +344 val_344 344 val_344 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +274 val_274 274 val_274 +219 val_219 219 val_219 +219 val_219 219 val_219 +239 val_239 239 val_239 +239 val_239 239 val_239 +485 val_485 485 val_485 +116 val_116 116 val_116 +223 val_223 223 val_223 +223 val_223 223 val_223 +256 val_256 256 val_256 +256 val_256 256 val_256 +263 val_263 263 val_263 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +487 val_487 487 val_487 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +288 val_288 288 val_288 +288 val_288 288 val_288 +191 val_191 191 val_191 +191 val_191 191 val_191 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +244 val_244 244 val_244 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +128 val_128 128 val_128 +128 val_128 128 val_128 +128 val_128 128 val_128 +467 val_467 467 val_467 +432 val_432 432 val_432 +202 val_202 202 val_202 +316 val_316 316 val_316 +316 val_316 316 val_316 +316 val_316 316 val_316 +229 val_229 229 val_229 +229 val_229 229 val_229 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +463 val_463 463 val_463 +463 val_463 463 val_463 +280 val_280 280 val_280 +280 val_280 280 val_280 +2 val_2 2 val_2 +35 val_35 35 val_35 +35 val_35 35 val_35 +35 val_35 35 val_35 +283 val_283 283 val_283 +331 val_331 331 val_331 +331 val_331 331 val_331 +235 val_235 235 val_235 +80 val_80 80 val_80 +44 val_44 44 val_44 +193 val_193 193 val_193 +193 val_193 193 val_193 +193 val_193 193 val_193 +321 val_321 321 val_321 +321 val_321 321 val_321 +335 val_335 335 val_335 +104 val_104 104 val_104 +104 val_104 104 val_104 +466 val_466 466 val_466 +466 val_466 466 val_466 +466 val_466 466 val_466 +366 val_366 366 val_366 +175 val_175 175 val_175 +175 val_175 175 val_175 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +483 val_483 483 val_483 +53 val_53 53 val_53 +105 val_105 105 val_105 +257 val_257 257 val_257 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +409 val_409 409 val_409 +409 val_409 409 val_409 +409 val_409 409 val_409 +190 val_190 190 val_190 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +114 val_114 114 val_114 +258 val_258 258 val_258 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +203 val_203 203 val_203 +203 val_203 203 val_203 +262 val_262 262 val_262 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +424 val_424 424 val_424 +424 val_424 424 val_424 +12 val_12 12 val_12 +12 val_12 12 val_12 +396 val_396 396 val_396 +396 val_396 396 val_396 +396 val_396 396 val_396 +201 val_201 201 val_201 +217 val_217 217 val_217 +217 val_217 217 val_217 +164 val_164 164 val_164 +164 val_164 164 val_164 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +478 val_478 478 val_478 +478 val_478 478 val_478 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +125 val_125 125 val_125 +125 val_125 125 val_125 +431 val_431 431 val_431 +431 val_431 431 val_431 +431 val_431 431 val_431 +164 val_164 164 val_164 +164 val_164 164 val_164 +424 val_424 424 val_424 +424 val_424 424 val_424 +187 val_187 187 val_187 +187 val_187 187 val_187 +187 val_187 187 val_187 +382 val_382 382 val_382 +382 val_382 382 val_382 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +397 val_397 397 val_397 +397 val_397 397 val_397 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +291 val_291 291 val_291 +24 val_24 24 val_24 +24 val_24 24 val_24 +351 val_351 351 val_351 +255 val_255 255 val_255 +255 val_255 255 val_255 +104 val_104 104 val_104 +104 val_104 104 val_104 +70 val_70 70 val_70 +70 val_70 70 val_70 +70 val_70 70 val_70 +163 val_163 163 val_163 +438 val_438 438 val_438 +438 val_438 438 val_438 +438 val_438 438 val_438 +119 val_119 119 val_119 +119 val_119 119 val_119 +119 val_119 119 val_119 +414 val_414 414 val_414 +414 val_414 414 val_414 +200 val_200 200 val_200 +200 val_200 200 val_200 +491 val_491 491 val_491 +237 val_237 237 val_237 +237 val_237 237 val_237 +439 val_439 439 val_439 +439 val_439 439 val_439 +360 val_360 360 val_360 +248 val_248 248 val_248 +479 val_479 479 val_479 +305 val_305 305 val_305 +417 val_417 417 val_417 +417 val_417 417 val_417 +417 val_417 417 val_417 +199 val_199 199 val_199 +199 val_199 199 val_199 +199 val_199 199 val_199 +444 val_444 444 val_444 +120 val_120 120 val_120 +120 val_120 120 val_120 +429 val_429 429 val_429 +429 val_429 429 val_429 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +443 val_443 443 val_443 +323 val_323 323 val_323 +325 val_325 325 val_325 +325 val_325 325 val_325 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +277 val_277 277 val_277 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +230 val_230 230 val_230 +478 val_478 478 val_478 +478 val_478 478 val_478 +178 val_178 178 val_178 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +468 val_468 468 val_468 +310 val_310 310 val_310 +317 val_317 317 val_317 +317 val_317 317 val_317 +333 val_333 333 val_333 +333 val_333 333 val_333 +493 val_493 493 val_493 +460 val_460 460 val_460 +207 val_207 207 val_207 +207 val_207 207 val_207 +249 val_249 249 val_249 +265 val_265 265 val_265 +265 val_265 265 val_265 +480 val_480 480 val_480 +480 val_480 480 val_480 +480 val_480 480 val_480 +83 val_83 83 val_83 +83 val_83 83 val_83 +136 val_136 136 val_136 +353 val_353 353 val_353 +353 val_353 353 val_353 +172 val_172 172 val_172 +172 val_172 172 val_172 +214 val_214 214 val_214 +462 val_462 462 val_462 +462 val_462 462 val_462 +233 val_233 233 val_233 +233 val_233 233 val_233 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +406 val_406 406 val_406 +133 val_133 133 val_133 +175 val_175 175 val_175 +175 val_175 175 val_175 +189 val_189 189 val_189 +454 val_454 454 val_454 +454 val_454 454 val_454 +454 val_454 454 val_454 +375 val_375 375 val_375 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +401 val_401 401 val_401 +421 val_421 421 val_421 +407 val_407 407 val_407 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +256 val_256 256 val_256 +256 val_256 256 val_256 +26 val_26 26 val_26 +26 val_26 26 val_26 +134 val_134 134 val_134 +134 val_134 134 val_134 +67 val_67 67 val_67 +67 val_67 67 val_67 +384 val_384 384 val_384 +384 val_384 384 val_384 +384 val_384 384 val_384 +379 val_379 379 val_379 +18 val_18 18 val_18 +18 val_18 18 val_18 +462 val_462 462 val_462 +462 val_462 462 val_462 +492 val_492 492 val_492 +492 val_492 492 val_492 +100 val_100 100 val_100 +100 val_100 100 val_100 +298 val_298 298 val_298 +298 val_298 298 val_298 +298 val_298 298 val_298 +9 val_9 9 val_9 +341 val_341 341 val_341 +498 val_498 498 val_498 +498 val_498 498 val_498 +498 val_498 498 val_498 +146 val_146 146 val_146 +146 val_146 146 val_146 +458 val_458 458 val_458 +458 val_458 458 val_458 +362 val_362 362 val_362 +186 val_186 186 val_186 +285 val_285 285 val_285 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +167 val_167 167 val_167 +167 val_167 167 val_167 +167 val_167 167 val_167 +18 val_18 18 val_18 +18 val_18 18 val_18 +273 val_273 273 val_273 +273 val_273 273 val_273 +273 val_273 273 val_273 +183 val_183 183 val_183 +281 val_281 281 val_281 +281 val_281 281 val_281 +344 val_344 344 val_344 +344 val_344 344 val_344 +97 val_97 97 val_97 +97 val_97 97 val_97 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +469 val_469 469 val_469 +315 val_315 315 val_315 +84 val_84 84 val_84 +84 val_84 84 val_84 +28 val_28 28 val_28 +37 val_37 37 val_37 +37 val_37 37 val_37 +448 val_448 448 val_448 +152 val_152 152 val_152 +152 val_152 152 val_152 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +348 val_348 348 val_348 +307 val_307 307 val_307 +307 val_307 307 val_307 +194 val_194 194 val_194 +414 val_414 414 val_414 +414 val_414 414 val_414 +477 val_477 477 val_477 +222 val_222 222 val_222 +126 val_126 126 val_126 +90 val_90 90 val_90 +90 val_90 90 val_90 +90 val_90 90 val_90 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +169 val_169 169 val_169 +403 val_403 403 val_403 +403 val_403 403 val_403 +403 val_403 403 val_403 +400 val_400 400 val_400 +200 val_200 200 val_200 +200 val_200 200 val_200 +97 val_97 97 val_97 +97 val_97 97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/type_cast_1-0-60ea21e6e7d054a65f959fc89acf1b3d b/sql/hive/src/test/resources/golden/type_cast_1-0-60ea21e6e7d054a65f959fc89acf1b3d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/type_cast_1-1-53a667981ad567b2ab977f67d65c5825 b/sql/hive/src/test/resources/golden/type_cast_1-1-53a667981ad567b2ab977f67d65c5825 new file mode 100644 index 0000000000000..7ed6ff82de6bc --- /dev/null +++ b/sql/hive/src/test/resources/golden/type_cast_1-1-53a667981ad567b2ab977f67d65c5825 @@ -0,0 +1 @@ +5 diff --git a/sql/hive/src/test/resources/golden/type_widening-0-630ac2c7e7dea4837384ccd572209229 b/sql/hive/src/test/resources/golden/type_widening-0-630ac2c7e7dea4837384ccd572209229 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/type_widening-1-cfbdf2b6fca84c6e23d4e691d2221bd6 b/sql/hive/src/test/resources/golden/type_widening-1-cfbdf2b6fca84c6e23d4e691d2221bd6 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/type_widening-1-cfbdf2b6fca84c6e23d4e691d2221bd6 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/type_widening-2-a0ba6952d9bf830d1d1ea7aebd3784a2 b/sql/hive/src/test/resources/golden/type_widening-2-a0ba6952d9bf830d1d1ea7aebd3784a2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/type_widening-3-65da8c67f6903286168acb39ac67fc04 b/sql/hive/src/test/resources/golden/type_widening-3-65da8c67f6903286168acb39ac67fc04 new file mode 100644 index 0000000000000..cf940f4c5faa8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/type_widening-3-65da8c67f6903286168acb39ac67fc04 @@ -0,0 +1,1000 @@ +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 +9223372036854775807 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-0-38512a3299e2390dd813e61a0f63f35e b/sql/hive/src/test/resources/golden/udaf_collect_set-0-38512a3299e2390dd813e61a0f63f35e new file mode 100644 index 0000000000000..fed3d6802023a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-0-38512a3299e2390dd813e61a0f63f35e @@ -0,0 +1 @@ +collect_set(x) - Returns a set of objects with duplicate elements eliminated \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-1-78aa199d061d2ff9ba426849ea1eb449 b/sql/hive/src/test/resources/golden/udaf_collect_set-1-78aa199d061d2ff9ba426849ea1eb449 new file mode 100644 index 0000000000000..fed3d6802023a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-1-78aa199d061d2ff9ba426849ea1eb449 @@ -0,0 +1 @@ +collect_set(x) - Returns a set of objects with duplicate elements eliminated \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-10-c8bc33095e1a195bb7b5e579d8d78db b/sql/hive/src/test/resources/golden/udaf_collect_set-10-c8bc33095e1a195bb7b5e579d8d78db new file mode 100644 index 0000000000000..cedc3068ee4a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-10-c8bc33095e1a195bb7b5e579d8d78db @@ -0,0 +1,20 @@ +0 ["val_0"] +2 ["val_2"] +4 ["val_4"] +5 ["val_5"] +8 ["val_8"] +9 ["val_9"] +10 ["val_10"] +11 ["val_11"] +12 ["val_12"] +15 ["val_15"] +17 ["val_17"] +18 ["val_18"] +19 ["val_19"] +20 ["val_20"] +24 ["val_24"] +26 ["val_26"] +27 ["val_27"] +28 ["val_28"] +30 ["val_30"] +33 ["val_33"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-11-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/udaf_collect_set-11-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-11-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-12-a00d1791b7fa7ac5a0505d95c3d12257 b/sql/hive/src/test/resources/golden/udaf_collect_set-12-a00d1791b7fa7ac5a0505d95c3d12257 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-12-a00d1791b7fa7ac5a0505d95c3d12257 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-13-c8bc33095e1a195bb7b5e579d8d78db b/sql/hive/src/test/resources/golden/udaf_collect_set-13-c8bc33095e1a195bb7b5e579d8d78db new file mode 100644 index 0000000000000..cedc3068ee4a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-13-c8bc33095e1a195bb7b5e579d8d78db @@ -0,0 +1,20 @@ +0 ["val_0"] +2 ["val_2"] +4 ["val_4"] +5 ["val_5"] +8 ["val_8"] +9 ["val_9"] +10 ["val_10"] +11 ["val_11"] +12 ["val_12"] +15 ["val_15"] +17 ["val_17"] +18 ["val_18"] +19 ["val_19"] +20 ["val_20"] +24 ["val_24"] +26 ["val_26"] +27 ["val_27"] +28 ["val_28"] +30 ["val_30"] +33 ["val_33"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-2-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/udaf_collect_set-2-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-2-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-3-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/udaf_collect_set-3-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-3-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-4-c8bc33095e1a195bb7b5e579d8d78db b/sql/hive/src/test/resources/golden/udaf_collect_set-4-c8bc33095e1a195bb7b5e579d8d78db new file mode 100644 index 0000000000000..cedc3068ee4a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-4-c8bc33095e1a195bb7b5e579d8d78db @@ -0,0 +1,20 @@ +0 ["val_0"] +2 ["val_2"] +4 ["val_4"] +5 ["val_5"] +8 ["val_8"] +9 ["val_9"] +10 ["val_10"] +11 ["val_11"] +12 ["val_12"] +15 ["val_15"] +17 ["val_17"] +18 ["val_18"] +19 ["val_19"] +20 ["val_20"] +24 ["val_24"] +26 ["val_26"] +27 ["val_27"] +28 ["val_28"] +30 ["val_30"] +33 ["val_33"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-5-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/udaf_collect_set-5-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-5-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-6-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/udaf_collect_set-6-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-6-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-7-c8bc33095e1a195bb7b5e579d8d78db b/sql/hive/src/test/resources/golden/udaf_collect_set-7-c8bc33095e1a195bb7b5e579d8d78db new file mode 100644 index 0000000000000..cedc3068ee4a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-7-c8bc33095e1a195bb7b5e579d8d78db @@ -0,0 +1,20 @@ +0 ["val_0"] +2 ["val_2"] +4 ["val_4"] +5 ["val_5"] +8 ["val_8"] +9 ["val_9"] +10 ["val_10"] +11 ["val_11"] +12 ["val_12"] +15 ["val_15"] +17 ["val_17"] +18 ["val_18"] +19 ["val_19"] +20 ["val_20"] +24 ["val_24"] +26 ["val_26"] +27 ["val_27"] +28 ["val_28"] +30 ["val_30"] +33 ["val_33"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-8-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/udaf_collect_set-8-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-8-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_collect_set-9-a00d1791b7fa7ac5a0505d95c3d12257 b/sql/hive/src/test/resources/golden/udaf_collect_set-9-a00d1791b7fa7ac5a0505d95c3d12257 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_collect_set-9-a00d1791b7fa7ac5a0505d95c3d12257 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_corr-0-2f783a39471a7f1df9a824d741c443a9 b/sql/hive/src/test/resources/golden/udaf_corr-0-2f783a39471a7f1df9a824d741c443a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_corr-1-930b47e12b5ea559387ec5c6e8d5d9b5 b/sql/hive/src/test/resources/golden/udaf_corr-1-930b47e12b5ea559387ec5c6e8d5d9b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_corr-10-2f783a39471a7f1df9a824d741c443a9 b/sql/hive/src/test/resources/golden/udaf_corr-10-2f783a39471a7f1df9a824d741c443a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_corr-2-c6f2dc536bf105650a461816ae5e330 b/sql/hive/src/test/resources/golden/udaf_corr-2-c6f2dc536bf105650a461816ae5e330 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_corr-3-ddf417dbc3b551cc8df47d950cec03e b/sql/hive/src/test/resources/golden/udaf_corr-3-ddf417dbc3b551cc8df47d950cec03e new file mode 100644 index 0000000000000..6e5d422b3132e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_corr-3-ddf417dbc3b551cc8df47d950cec03e @@ -0,0 +1,2 @@ +corr(x,y) - Returns the Pearson coefficient of correlation +between a set of number pairs \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_corr-4-8771b2d83d14b3b641e8a77fcdc5081a b/sql/hive/src/test/resources/golden/udaf_corr-4-8771b2d83d14b3b641e8a77fcdc5081a new file mode 100644 index 0000000000000..fcb49ae69f74f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_corr-4-8771b2d83d14b3b641e8a77fcdc5081a @@ -0,0 +1,9 @@ +corr(x,y) - Returns the Pearson coefficient of correlation +between a set of number pairs +The function takes as arguments any pair of numeric types and returns a double. +Any pair with a NULL is ignored. If the function is applied to an empty set or +a singleton set, NULL will be returned. Otherwise, it computes the following: + COVAR_POP(x,y)/(STDDEV_POP(x)*STDDEV_POP(y)) +where neither x nor y is null, +COVAR_POP is the population covariance, +and STDDEV_POP is the population standard deviation. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_corr-5-8abbd73784728b599f8c2a90f53da9fb b/sql/hive/src/test/resources/golden/udaf_corr-5-8abbd73784728b599f8c2a90f53da9fb new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_corr-5-8abbd73784728b599f8c2a90f53da9fb @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_corr-6-4324e1f0a83a7491f3d4e3eef34f8727 b/sql/hive/src/test/resources/golden/udaf_corr-6-4324e1f0a83a7491f3d4e3eef34f8727 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_corr-6-4324e1f0a83a7491f3d4e3eef34f8727 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_corr-7-70e701f50c3418ff91649b2bd8287da3 b/sql/hive/src/test/resources/golden/udaf_corr-7-70e701f50c3418ff91649b2bd8287da3 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_corr-7-70e701f50c3418ff91649b2bd8287da3 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_corr-8-f2f0c7735f8b24266d5aaff96644e369 b/sql/hive/src/test/resources/golden/udaf_corr-8-f2f0c7735f8b24266d5aaff96644e369 new file mode 100644 index 0000000000000..3f730875aef8c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_corr-8-f2f0c7735f8b24266d5aaff96644e369 @@ -0,0 +1,6 @@ +1 NULL +2 NULL +3 NULL +4 NULL +5 NULL +6 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_corr-9-e2a0fa75c43279764ebca015f62bcf16 b/sql/hive/src/test/resources/golden/udaf_corr-9-e2a0fa75c43279764ebca015f62bcf16 new file mode 100644 index 0000000000000..5d97236e8b03f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_corr-9-e2a0fa75c43279764ebca015f62bcf16 @@ -0,0 +1 @@ +0.6633880657639323 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-0-2f783a39471a7f1df9a824d741c443a9 b/sql/hive/src/test/resources/golden/udaf_covar_pop-0-2f783a39471a7f1df9a824d741c443a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-1-930b47e12b5ea559387ec5c6e8d5d9b5 b/sql/hive/src/test/resources/golden/udaf_covar_pop-1-930b47e12b5ea559387ec5c6e8d5d9b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-10-2f783a39471a7f1df9a824d741c443a9 b/sql/hive/src/test/resources/golden/udaf_covar_pop-10-2f783a39471a7f1df9a824d741c443a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-2-c6f2dc536bf105650a461816ae5e330 b/sql/hive/src/test/resources/golden/udaf_covar_pop-2-c6f2dc536bf105650a461816ae5e330 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-3-fe27ea6dae14250e8835baef3c2e20f6 b/sql/hive/src/test/resources/golden/udaf_covar_pop-3-fe27ea6dae14250e8835baef3c2e20f6 new file mode 100644 index 0000000000000..0fed030c22af3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_pop-3-fe27ea6dae14250e8835baef3c2e20f6 @@ -0,0 +1 @@ +covar_pop(x,y) - Returns the population covariance of a set of number pairs \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-4-7af9231ae293d0c4b84050176e1d73ad b/sql/hive/src/test/resources/golden/udaf_covar_pop-4-7af9231ae293d0c4b84050176e1d73ad new file mode 100644 index 0000000000000..4037062d2da93 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_pop-4-7af9231ae293d0c4b84050176e1d73ad @@ -0,0 +1,6 @@ +covar_pop(x,y) - Returns the population covariance of a set of number pairs +The function takes as arguments any pair of numeric types and returns a double. +Any pair with a NULL is ignored. If the function is applied to an empty set, NULL +will be returned. Otherwise, it computes the following: + (SUM(x*y)-SUM(x)*SUM(y)/COUNT(x,y))/COUNT(x,y) +where neither x nor y is null. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-5-22004d36f6f3770db284644317770fcd b/sql/hive/src/test/resources/golden/udaf_covar_pop-5-22004d36f6f3770db284644317770fcd new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_pop-5-22004d36f6f3770db284644317770fcd @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-6-bc03cfbf7ae382ce707bf83e7fb2fb8b b/sql/hive/src/test/resources/golden/udaf_covar_pop-6-bc03cfbf7ae382ce707bf83e7fb2fb8b new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_pop-6-bc03cfbf7ae382ce707bf83e7fb2fb8b @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-7-37e59e993e08216e6c69f88d6ac673ae b/sql/hive/src/test/resources/golden/udaf_covar_pop-7-37e59e993e08216e6c69f88d6ac673ae new file mode 100644 index 0000000000000..171538eb0b00f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_pop-7-37e59e993e08216e6c69f88d6ac673ae @@ -0,0 +1 @@ +0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-8-1e51388408dad651127edf940c11d91f b/sql/hive/src/test/resources/golden/udaf_covar_pop-8-1e51388408dad651127edf940c11d91f new file mode 100644 index 0000000000000..848e15bc61476 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_pop-8-1e51388408dad651127edf940c11d91f @@ -0,0 +1,6 @@ +1 NULL +2 NULL +3 0.0 +4 0.0 +5 0.0 +6 0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_pop-9-b3cc8c5b5b384622e212dbaaf3f09623 b/sql/hive/src/test/resources/golden/udaf_covar_pop-9-b3cc8c5b5b384622e212dbaaf3f09623 new file mode 100644 index 0000000000000..1a49bf590b346 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_pop-9-b3cc8c5b5b384622e212dbaaf3f09623 @@ -0,0 +1 @@ +3.624999999999999 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-0-2f783a39471a7f1df9a824d741c443a9 b/sql/hive/src/test/resources/golden/udaf_covar_samp-0-2f783a39471a7f1df9a824d741c443a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-1-930b47e12b5ea559387ec5c6e8d5d9b5 b/sql/hive/src/test/resources/golden/udaf_covar_samp-1-930b47e12b5ea559387ec5c6e8d5d9b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-10-2f783a39471a7f1df9a824d741c443a9 b/sql/hive/src/test/resources/golden/udaf_covar_samp-10-2f783a39471a7f1df9a824d741c443a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-2-c6f2dc536bf105650a461816ae5e330 b/sql/hive/src/test/resources/golden/udaf_covar_samp-2-c6f2dc536bf105650a461816ae5e330 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-3-7aa25da7ccb88ba67b100888b6227aaf b/sql/hive/src/test/resources/golden/udaf_covar_samp-3-7aa25da7ccb88ba67b100888b6227aaf new file mode 100644 index 0000000000000..97a97c8b5965a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_samp-3-7aa25da7ccb88ba67b100888b6227aaf @@ -0,0 +1 @@ +covar_samp(x,y) - Returns the sample covariance of a set of number pairs \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-4-7e705a637950911e0a18059d8bf1fd2c b/sql/hive/src/test/resources/golden/udaf_covar_samp-4-7e705a637950911e0a18059d8bf1fd2c new file mode 100644 index 0000000000000..e666adba8df68 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_samp-4-7e705a637950911e0a18059d8bf1fd2c @@ -0,0 +1,6 @@ +covar_samp(x,y) - Returns the sample covariance of a set of number pairs +The function takes as arguments any pair of numeric types and returns a double. +Any pair with a NULL is ignored. If the function is applied to an empty set, NULL +will be returned. Otherwise, it computes the following: + (SUM(x*y)-SUM(x)*SUM(y)/COUNT(x,y))/(COUNT(x,y)-1) +where neither x nor y is null. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-5-2cfd48c62fcfb58936ea1222ecf6a2b b/sql/hive/src/test/resources/golden/udaf_covar_samp-5-2cfd48c62fcfb58936ea1222ecf6a2b new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_samp-5-2cfd48c62fcfb58936ea1222ecf6a2b @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-6-8a701e7f4b9ce986f7923ae083bce0f1 b/sql/hive/src/test/resources/golden/udaf_covar_samp-6-8a701e7f4b9ce986f7923ae083bce0f1 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_samp-6-8a701e7f4b9ce986f7923ae083bce0f1 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-7-2702986700ff9a1c962f8b3762c1b5f3 b/sql/hive/src/test/resources/golden/udaf_covar_samp-7-2702986700ff9a1c962f8b3762c1b5f3 new file mode 100644 index 0000000000000..171538eb0b00f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_samp-7-2702986700ff9a1c962f8b3762c1b5f3 @@ -0,0 +1 @@ +0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-8-44861ae58cf0951eeda28a5f778f778a b/sql/hive/src/test/resources/golden/udaf_covar_samp-8-44861ae58cf0951eeda28a5f778f778a new file mode 100644 index 0000000000000..848e15bc61476 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_samp-8-44861ae58cf0951eeda28a5f778f778a @@ -0,0 +1,6 @@ +1 NULL +2 NULL +3 0.0 +4 0.0 +5 0.0 +6 0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_covar_samp-9-234a5b02085d2228473d7ef15a6af683 b/sql/hive/src/test/resources/golden/udaf_covar_samp-9-234a5b02085d2228473d7ef15a6af683 new file mode 100644 index 0000000000000..30d98234a23e9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_covar_samp-9-234a5b02085d2228473d7ef15a6af683 @@ -0,0 +1 @@ +4.833333333333332 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_histogram_numeric-0-86b9fb8bef8a5c51077623f1db3a0251 b/sql/hive/src/test/resources/golden/udaf_histogram_numeric-0-86b9fb8bef8a5c51077623f1db3a0251 new file mode 100644 index 0000000000000..3e8bb17f24d6f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_histogram_numeric-0-86b9fb8bef8a5c51077623f1db3a0251 @@ -0,0 +1 @@ +[{"x":135.0284552845532,"y":246.0},{"x":381.39370078740143,"y":254.0}] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_histogram_numeric-1-5303011455a61171f7eb7eb4bd0ca2a3 b/sql/hive/src/test/resources/golden/udaf_histogram_numeric-1-5303011455a61171f7eb7eb4bd0ca2a3 new file mode 100644 index 0000000000000..048770d4c8402 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_histogram_numeric-1-5303011455a61171f7eb7eb4bd0ca2a3 @@ -0,0 +1 @@ +[{"x":96.7349397590361,"y":166.0},{"x":257.14970059880255,"y":167.0},{"x":425.6826347305388,"y":167.0}] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_histogram_numeric-2-b3b431c36154a1ae022bf01d55a6ecb1 b/sql/hive/src/test/resources/golden/udaf_histogram_numeric-2-b3b431c36154a1ae022bf01d55a6ecb1 new file mode 100644 index 0000000000000..8b54db8da7167 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_histogram_numeric-2-b3b431c36154a1ae022bf01d55a6ecb1 @@ -0,0 +1 @@ +[{"x":9.761904761904763,"y":21.0},{"x":33.84210526315789,"y":19.0},{"x":62.75000000000001,"y":20.0},{"x":90.90322580645162,"y":31.0},{"x":122.91666666666667,"y":24.0},{"x":146.33333333333334,"y":21.0},{"x":170.70967741935485,"y":31.0},{"x":194.3571428571428,"y":28.0},{"x":214.84615384615384,"y":26.0},{"x":235.08695652173907,"y":23.0},{"x":257.80000000000007,"y":15.0},{"x":281.0333333333333,"y":30.0},{"x":298.0,"y":1.0},{"x":313.0000000000001,"y":29.0},{"x":339.5925925925926,"y":27.0},{"x":372.49999999999983,"y":24.0},{"x":402.23684210526324,"y":38.0},{"x":430.6896551724138,"y":29.0},{"x":462.32352941176464,"y":34.0},{"x":487.72413793103453,"y":29.0}] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_histogram_numeric-3-ff41f4450d6ae372633fde865ae187c6 b/sql/hive/src/test/resources/golden/udaf_histogram_numeric-3-ff41f4450d6ae372633fde865ae187c6 new file mode 100644 index 0000000000000..aed3f1e704750 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_histogram_numeric-3-ff41f4450d6ae372633fde865ae187c6 @@ -0,0 +1 @@ +[{"x":0.0,"y":3.0},{"x":2.0,"y":1.0},{"x":4.75,"y":4.0},{"x":8.0,"y":1.0},{"x":9.5,"y":2.0},{"x":11.666666666666666,"y":3.0},{"x":15.0,"y":2.0},{"x":17.666666666666664,"y":3.0},{"x":19.5,"y":2.0},{"x":24.0,"y":2.0},{"x":26.333333333333336,"y":3.0},{"x":28.0,"y":1.0},{"x":30.0,"y":1.0},{"x":33.0,"y":1.0},{"x":34.75,"y":4.0},{"x":37.0,"y":2.0},{"x":41.666666666666664,"y":3.0},{"x":43.5,"y":2.0},{"x":47.0,"y":1.0},{"x":51.0,"y":2.0},{"x":53.5,"y":2.0},{"x":57.666666666666664,"y":3.0},{"x":64.5,"y":2.0},{"x":66.66666666666666,"y":3.0},{"x":69.75,"y":4.0},{"x":72.0,"y":2.0},{"x":74.0,"y":1.0},{"x":76.33333333333333,"y":3.0},{"x":78.0,"y":1.0},{"x":80.0,"y":1.0},{"x":82.0,"y":1.0},{"x":83.5,"y":4.0},{"x":85.5,"y":2.0},{"x":87.0,"y":1.0},{"x":90.0,"y":3.0},{"x":92.0,"y":1.0},{"x":95.33333333333333,"y":3.0},{"x":97.5,"y":4.0},{"x":100.0,"y":2.0},{"x":103.5,"y":4.0},{"x":105.0,"y":1.0},{"x":111.0,"y":1.0},{"x":113.33333333333333,"y":3.0},{"x":116.0,"y":1.0},{"x":118.0,"y":2.0},{"x":119.4,"y":5.0},{"x":125.33333333333333,"y":3.0},{"x":128.4,"y":5.0},{"x":131.0,"y":1.0},{"x":133.66666666666666,"y":3.0},{"x":136.66666666666666,"y":3.0},{"x":138.0,"y":4.0},{"x":143.0,"y":1.0},{"x":145.66666666666666,"y":3.0},{"x":149.33333333333331,"y":3.0},{"x":152.33333333333334,"y":3.0},{"x":155.5,"y":2.0},{"x":157.5,"y":2.0},{"x":160.0,"y":1.0},{"x":162.5,"y":2.0},{"x":164.5,"y":4.0},{"x":166.75,"y":4.0},{"x":168.8,"y":5.0},{"x":170.0,"y":1.0},{"x":172.0,"y":2.0},{"x":174.5,"y":4.0},{"x":176.33333333333331,"y":3.0},{"x":178.0,"y":1.0},{"x":179.33333333333331,"y":3.0},{"x":181.0,"y":1.0},{"x":183.0,"y":1.0},{"x":186.75,"y":4.0},{"x":189.0,"y":1.0},{"x":190.66666666666666,"y":3.0},{"x":192.75,"y":4.0},{"x":194.0,"y":1.0},{"x":195.33333333333331,"y":3.0},{"x":197.0,"y":2.0},{"x":199.4,"y":5.0},{"x":201.0,"y":1.0},{"x":202.66666666666669,"y":3.0},{"x":205.0,"y":2.0},{"x":207.0,"y":2.0},{"x":208.40000000000003,"y":5.0},{"x":213.33333333333331,"y":3.0},{"x":216.0,"y":2.0},{"x":217.33333333333331,"y":3.0},{"x":219.0,"y":2.0},{"x":221.33333333333331,"y":3.0},{"x":223.5,"y":4.0},{"x":226.0,"y":1.0},{"x":228.66666666666663,"y":3.0},{"x":230.0,"y":5.0},{"x":233.0,"y":2.0},{"x":235.0,"y":1.0},{"x":237.5,"y":4.0},{"x":239.0,"y":2.0},{"x":241.66666666666669,"y":3.0},{"x":244.0,"y":1.0},{"x":247.5,"y":2.0},{"x":249.0,"y":1.0},{"x":252.0,"y":1.0},{"x":255.5,"y":4.0},{"x":257.5,"y":2.0},{"x":260.0,"y":1.0},{"x":262.5,"y":2.0},{"x":265.3333333333333,"y":3.0},{"x":272.6,"y":5.0},{"x":274.5,"y":2.0},{"x":277.3333333333333,"y":6.0},{"x":280.0,"y":2.0},{"x":281.5,"y":4.0},{"x":283.5,"y":2.0},{"x":285.0,"y":1.0},{"x":286.5,"y":2.0},{"x":288.3333333333333,"y":3.0},{"x":291.5,"y":2.0},{"x":296.0,"y":1.0},{"x":298.0,"y":3.0},{"x":302.0,"y":1.0},{"x":305.5,"y":2.0},{"x":307.3333333333333,"y":3.0},{"x":309.0,"y":2.0},{"x":310.75,"y":4.0},{"x":315.75,"y":4.0},{"x":317.6,"y":5.0},{"x":321.5,"y":4.0},{"x":323.0,"y":1.0},{"x":325.0,"y":2.0},{"x":327.0,"y":3.0},{"x":331.3333333333333,"y":3.0},{"x":333.0,"y":2.0},{"x":335.5,"y":2.0},{"x":338.5,"y":2.0},{"x":341.66666666666663,"y":3.0},{"x":344.3333333333333,"y":3.0},{"x":348.0,"y":5.0},{"x":351.0,"y":1.0},{"x":353.0,"y":2.0},{"x":356.0,"y":1.0},{"x":360.0,"y":1.0},{"x":362.0,"y":1.0},{"x":364.5,"y":2.0},{"x":366.66666666666663,"y":3.0},{"x":368.75,"y":4.0},{"x":373.5,"y":2.0},{"x":375.0,"y":1.0},{"x":377.5,"y":2.0},{"x":379.0,"y":1.0},{"x":382.0,"y":2.0},{"x":384.0,"y":3.0},{"x":386.0,"y":1.0},{"x":389.0,"y":1.0},{"x":392.0,"y":1.0},{"x":393.5,"y":2.0},{"x":395.6,"y":5.0},{"x":397.0,"y":2.0},{"x":399.0,"y":2.0},{"x":400.0,"y":1.0},{"x":401.16666666666663,"y":6.0},{"x":403.40000000000003,"y":5.0},{"x":406.20000000000005,"y":5.0},{"x":409.0,"y":3.0},{"x":411.0,"y":1.0},{"x":413.5,"y":4.0},{"x":417.0,"y":3.0},{"x":418.5,"y":2.0},{"x":421.0,"y":1.0},{"x":424.0,"y":2.0},{"x":427.0,"y":1.0},{"x":429.6,"y":5.0},{"x":431.25,"y":4.0},{"x":435.5,"y":2.0},{"x":437.75,"y":4.0},{"x":439.0,"y":2.0},{"x":443.5,"y":2.0},{"x":446.0,"y":1.0},{"x":448.5,"y":2.0},{"x":452.5,"y":2.0},{"x":454.24999999999994,"y":4.0},{"x":457.66666666666663,"y":3.0},{"x":459.33333333333337,"y":3.0},{"x":462.5,"y":4.0},{"x":466.0,"y":3.0},{"x":467.80000000000007,"y":5.0},{"x":469.16666666666663,"y":6.0},{"x":472.0,"y":1.0},{"x":475.0,"y":1.0},{"x":477.0,"y":1.0},{"x":478.33333333333326,"y":3.0},{"x":480.25,"y":4.0},{"x":482.5,"y":2.0},{"x":484.5,"y":2.0},{"x":487.0,"y":1.0},{"x":489.2,"y":5.0},{"x":491.66666666666663,"y":3.0},{"x":493.0,"y":1.0},{"x":494.5,"y":2.0},{"x":496.0,"y":1.0},{"x":497.75,"y":4.0}] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_number_format-0-eff4ef3c207d14d5121368f294697964 b/sql/hive/src/test/resources/golden/udaf_number_format-0-eff4ef3c207d14d5121368f294697964 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_number_format-1-4a03c4328565c60ca99689239f07fb16 b/sql/hive/src/test/resources/golden/udaf_number_format-1-4a03c4328565c60ca99689239f07fb16 new file mode 100644 index 0000000000000..2953abcf1e644 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_number_format-1-4a03c4328565c60ca99689239f07fb16 @@ -0,0 +1 @@ +0.0 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-0-9ce9365f7b3f35a10b5305251c3e81ac b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-0-9ce9365f7b3f35a10b5305251c3e81ac new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-1-c7d32089880679d178dea94f1fe118e6 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-1-c7d32089880679d178dea94f1fe118e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-10-b7e588217a3cd184dbbb8d419d3e33ae b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-10-b7e588217a3cd184dbbb8d419d3e33ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-11-5034ec132cb8b0a6bd6357a7e1abd755 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-11-5034ec132cb8b0a6bd6357a7e1abd755 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-12-914ba18b45a27894bd82302f07efc789 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-12-914ba18b45a27894bd82302f07efc789 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-13-4bd5703fa32f3283f38841acadc97adb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-13-4bd5703fa32f3283f38841acadc97adb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-14-d861a06b90896a097901d64ab9fbec53 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-14-d861a06b90896a097901d64ab9fbec53 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-15-ca796efecd0d064e9e688a17ce75d80f b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-15-ca796efecd0d064e9e688a17ce75d80f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-16-c838e13d9aafe1212a76d2cf5fe085a0 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-16-c838e13d9aafe1212a76d2cf5fe085a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-17-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-17-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-17-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-18-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-18-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-18-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-19-b931aec4add0a66c23e444cdd5c33c5 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-19-b931aec4add0a66c23e444cdd5c33c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-2-ac53a7ba5e8a208255008d3a71fa321a b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-2-ac53a7ba5e8a208255008d3a71fa321a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-20-6f85afbfa98a19d78ab7fd9d46ed3c0c b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-20-6f85afbfa98a19d78ab7fd9d46ed3c0c new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-20-6f85afbfa98a19d78ab7fd9d46ed3c0c @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-21-3cd4e1282d82d07785051a1cf0e9b4ff b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-21-3cd4e1282d82d07785051a1cf0e9b4ff new file mode 100644 index 0000000000000..17c47d308f029 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-21-3cd4e1282d82d07785051a1cf0e9b4ff @@ -0,0 +1 @@ +254.08333333333334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-22-ed1aec1a908310db90c5f8667631a1df b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-22-ed1aec1a908310db90c5f8667631a1df new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-22-ed1aec1a908310db90c5f8667631a1df @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-23-333d72e8bce6d11a35fc7a30418f225b b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-23-333d72e8bce6d11a35fc7a30418f225b new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-23-333d72e8bce6d11a35fc7a30418f225b @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-24-61903781f5cd75e6f11d85e7e89c1cb3 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-24-61903781f5cd75e6f11d85e7e89c1cb3 new file mode 100644 index 0000000000000..17c47d308f029 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-24-61903781f5cd75e6f11d85e7e89c1cb3 @@ -0,0 +1 @@ +254.08333333333334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-25-15f40568b41c4505841f5ad13c526f51 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-25-15f40568b41c4505841f5ad13c526f51 new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-25-15f40568b41c4505841f5ad13c526f51 @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-26-d1bc3b9a74fbf2ad41ddcd845ca9f0fb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-26-d1bc3b9a74fbf2ad41ddcd845ca9f0fb new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-26-d1bc3b9a74fbf2ad41ddcd845ca9f0fb @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-27-ee4c065e8557632a9ee348dd9223c3a1 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-27-ee4c065e8557632a9ee348dd9223c3a1 new file mode 100644 index 0000000000000..014c315649096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-27-ee4c065e8557632a9ee348dd9223c3a1 @@ -0,0 +1 @@ +[23.355555555555558,254.08333333333334,476.5612244897959,489.50000000000006] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-28-ba77d1a26f87385f046129b6eb7d2ec3 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-28-ba77d1a26f87385f046129b6eb7d2ec3 new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-28-ba77d1a26f87385f046129b6eb7d2ec3 @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-29-956d6b6bc69c8035f80de2e60eda65fb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-29-956d6b6bc69c8035f80de2e60eda65fb new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-29-956d6b6bc69c8035f80de2e60eda65fb @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-3-1dae5b2a11507c83b0f76e677a368712 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-3-1dae5b2a11507c83b0f76e677a368712 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-30-d196cc7f52bb6ae19a5e66eb2a99577c b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-30-d196cc7f52bb6ae19a5e66eb2a99577c new file mode 100644 index 0000000000000..014c315649096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-30-d196cc7f52bb6ae19a5e66eb2a99577c @@ -0,0 +1 @@ +[23.355555555555558,254.08333333333334,476.5612244897959,489.50000000000006] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-31-fe2c6a36a769f9f88a0ac9be1a4f0c28 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-31-fe2c6a36a769f9f88a0ac9be1a4f0c28 new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-31-fe2c6a36a769f9f88a0ac9be1a4f0c28 @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-32-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-32-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-32-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-33-f28c7b0408737da815493741c806ff80 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-33-f28c7b0408737da815493741c806ff80 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-34-6f85afbfa98a19d78ab7fd9d46ed3c0c b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-34-6f85afbfa98a19d78ab7fd9d46ed3c0c new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-34-6f85afbfa98a19d78ab7fd9d46ed3c0c @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-35-3cd4e1282d82d07785051a1cf0e9b4ff b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-35-3cd4e1282d82d07785051a1cf0e9b4ff new file mode 100644 index 0000000000000..17c47d308f029 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-35-3cd4e1282d82d07785051a1cf0e9b4ff @@ -0,0 +1 @@ +254.08333333333334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-36-ed1aec1a908310db90c5f8667631a1df b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-36-ed1aec1a908310db90c5f8667631a1df new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-36-ed1aec1a908310db90c5f8667631a1df @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-37-333d72e8bce6d11a35fc7a30418f225b b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-37-333d72e8bce6d11a35fc7a30418f225b new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-37-333d72e8bce6d11a35fc7a30418f225b @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-38-61903781f5cd75e6f11d85e7e89c1cb3 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-38-61903781f5cd75e6f11d85e7e89c1cb3 new file mode 100644 index 0000000000000..17c47d308f029 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-38-61903781f5cd75e6f11d85e7e89c1cb3 @@ -0,0 +1 @@ +254.08333333333334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-39-15f40568b41c4505841f5ad13c526f51 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-39-15f40568b41c4505841f5ad13c526f51 new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-39-15f40568b41c4505841f5ad13c526f51 @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-4-b2e21ffa55342d4f3c243728dfe6b11f b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-4-b2e21ffa55342d4f3c243728dfe6b11f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-40-d1bc3b9a74fbf2ad41ddcd845ca9f0fb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-40-d1bc3b9a74fbf2ad41ddcd845ca9f0fb new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-40-d1bc3b9a74fbf2ad41ddcd845ca9f0fb @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-41-ee4c065e8557632a9ee348dd9223c3a1 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-41-ee4c065e8557632a9ee348dd9223c3a1 new file mode 100644 index 0000000000000..014c315649096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-41-ee4c065e8557632a9ee348dd9223c3a1 @@ -0,0 +1 @@ +[23.355555555555558,254.08333333333334,476.5612244897959,489.50000000000006] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-42-ba77d1a26f87385f046129b6eb7d2ec3 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-42-ba77d1a26f87385f046129b6eb7d2ec3 new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-42-ba77d1a26f87385f046129b6eb7d2ec3 @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-43-956d6b6bc69c8035f80de2e60eda65fb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-43-956d6b6bc69c8035f80de2e60eda65fb new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-43-956d6b6bc69c8035f80de2e60eda65fb @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-44-d196cc7f52bb6ae19a5e66eb2a99577c b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-44-d196cc7f52bb6ae19a5e66eb2a99577c new file mode 100644 index 0000000000000..014c315649096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-44-d196cc7f52bb6ae19a5e66eb2a99577c @@ -0,0 +1 @@ +[23.355555555555558,254.08333333333334,476.5612244897959,489.50000000000006] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-45-fe2c6a36a769f9f88a0ac9be1a4f0c28 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-45-fe2c6a36a769f9f88a0ac9be1a4f0c28 new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-45-fe2c6a36a769f9f88a0ac9be1a4f0c28 @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-5-8ae1465266d28bc2e5da8d89617873c4 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-5-8ae1465266d28bc2e5da8d89617873c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-6-69cdebe8b2d4d2bbf2eef64a8c789596 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-6-69cdebe8b2d4d2bbf2eef64a8c789596 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-7-ab438ea40bc5dddf76fd0a7a2529b8f7 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-7-ab438ea40bc5dddf76fd0a7a2529b8f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-8-7e3cf228c457279965b7414bd05527f b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-8-7e3cf228c457279965b7414bd05527f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-9-5aea8aa95a85c46284f7c1f45978a228 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_20-9-5aea8aa95a85c46284f7c1f45978a228 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-0-477a942be95c0616c72f02a0077f9ace b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-0-477a942be95c0616c72f02a0077f9ace new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-1-c7d32089880679d178dea94f1fe118e6 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-1-c7d32089880679d178dea94f1fe118e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-10-b7e588217a3cd184dbbb8d419d3e33ae b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-10-b7e588217a3cd184dbbb8d419d3e33ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-11-5034ec132cb8b0a6bd6357a7e1abd755 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-11-5034ec132cb8b0a6bd6357a7e1abd755 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-12-914ba18b45a27894bd82302f07efc789 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-12-914ba18b45a27894bd82302f07efc789 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-13-4bd5703fa32f3283f38841acadc97adb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-13-4bd5703fa32f3283f38841acadc97adb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-14-d861a06b90896a097901d64ab9fbec53 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-14-d861a06b90896a097901d64ab9fbec53 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-15-ca796efecd0d064e9e688a17ce75d80f b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-15-ca796efecd0d064e9e688a17ce75d80f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-16-c838e13d9aafe1212a76d2cf5fe085a0 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-16-c838e13d9aafe1212a76d2cf5fe085a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-17-b89ea2173180c8ae423d856f943e061f b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-17-b89ea2173180c8ae423d856f943e061f new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-17-b89ea2173180c8ae423d856f943e061f @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-18-67e864faaff4c6b2a8e1c9fbd188bb66 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-18-67e864faaff4c6b2a8e1c9fbd188bb66 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-18-67e864faaff4c6b2a8e1c9fbd188bb66 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-19-b931aec4add0a66c23e444cdd5c33c5 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-19-b931aec4add0a66c23e444cdd5c33c5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-2-ac53a7ba5e8a208255008d3a71fa321a b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-2-ac53a7ba5e8a208255008d3a71fa321a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-20-6f85afbfa98a19d78ab7fd9d46ed3c0c b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-20-6f85afbfa98a19d78ab7fd9d46ed3c0c new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-20-6f85afbfa98a19d78ab7fd9d46ed3c0c @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-21-3cd4e1282d82d07785051a1cf0e9b4ff b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-21-3cd4e1282d82d07785051a1cf0e9b4ff new file mode 100644 index 0000000000000..17c47d308f029 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-21-3cd4e1282d82d07785051a1cf0e9b4ff @@ -0,0 +1 @@ +254.08333333333334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-22-ed1aec1a908310db90c5f8667631a1df b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-22-ed1aec1a908310db90c5f8667631a1df new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-22-ed1aec1a908310db90c5f8667631a1df @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-23-333d72e8bce6d11a35fc7a30418f225b b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-23-333d72e8bce6d11a35fc7a30418f225b new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-23-333d72e8bce6d11a35fc7a30418f225b @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-24-61903781f5cd75e6f11d85e7e89c1cb3 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-24-61903781f5cd75e6f11d85e7e89c1cb3 new file mode 100644 index 0000000000000..17c47d308f029 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-24-61903781f5cd75e6f11d85e7e89c1cb3 @@ -0,0 +1 @@ +254.08333333333334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-25-15f40568b41c4505841f5ad13c526f51 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-25-15f40568b41c4505841f5ad13c526f51 new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-25-15f40568b41c4505841f5ad13c526f51 @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-26-d1bc3b9a74fbf2ad41ddcd845ca9f0fb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-26-d1bc3b9a74fbf2ad41ddcd845ca9f0fb new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-26-d1bc3b9a74fbf2ad41ddcd845ca9f0fb @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-27-ee4c065e8557632a9ee348dd9223c3a1 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-27-ee4c065e8557632a9ee348dd9223c3a1 new file mode 100644 index 0000000000000..014c315649096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-27-ee4c065e8557632a9ee348dd9223c3a1 @@ -0,0 +1 @@ +[23.355555555555558,254.08333333333334,476.5612244897959,489.50000000000006] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-28-ba77d1a26f87385f046129b6eb7d2ec3 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-28-ba77d1a26f87385f046129b6eb7d2ec3 new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-28-ba77d1a26f87385f046129b6eb7d2ec3 @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-29-956d6b6bc69c8035f80de2e60eda65fb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-29-956d6b6bc69c8035f80de2e60eda65fb new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-29-956d6b6bc69c8035f80de2e60eda65fb @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-3-1dae5b2a11507c83b0f76e677a368712 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-3-1dae5b2a11507c83b0f76e677a368712 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-30-d196cc7f52bb6ae19a5e66eb2a99577c b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-30-d196cc7f52bb6ae19a5e66eb2a99577c new file mode 100644 index 0000000000000..014c315649096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-30-d196cc7f52bb6ae19a5e66eb2a99577c @@ -0,0 +1 @@ +[23.355555555555558,254.08333333333334,476.5612244897959,489.50000000000006] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-31-fe2c6a36a769f9f88a0ac9be1a4f0c28 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-31-fe2c6a36a769f9f88a0ac9be1a4f0c28 new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-31-fe2c6a36a769f9f88a0ac9be1a4f0c28 @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-32-dbcec232623048c7748b708123e18bf0 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-32-dbcec232623048c7748b708123e18bf0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-32-dbcec232623048c7748b708123e18bf0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-33-f28c7b0408737da815493741c806ff80 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-33-f28c7b0408737da815493741c806ff80 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-34-6f85afbfa98a19d78ab7fd9d46ed3c0c b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-34-6f85afbfa98a19d78ab7fd9d46ed3c0c new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-34-6f85afbfa98a19d78ab7fd9d46ed3c0c @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-35-3cd4e1282d82d07785051a1cf0e9b4ff b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-35-3cd4e1282d82d07785051a1cf0e9b4ff new file mode 100644 index 0000000000000..17c47d308f029 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-35-3cd4e1282d82d07785051a1cf0e9b4ff @@ -0,0 +1 @@ +254.08333333333334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-36-ed1aec1a908310db90c5f8667631a1df b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-36-ed1aec1a908310db90c5f8667631a1df new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-36-ed1aec1a908310db90c5f8667631a1df @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-37-333d72e8bce6d11a35fc7a30418f225b b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-37-333d72e8bce6d11a35fc7a30418f225b new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-37-333d72e8bce6d11a35fc7a30418f225b @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-38-61903781f5cd75e6f11d85e7e89c1cb3 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-38-61903781f5cd75e6f11d85e7e89c1cb3 new file mode 100644 index 0000000000000..17c47d308f029 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-38-61903781f5cd75e6f11d85e7e89c1cb3 @@ -0,0 +1 @@ +254.08333333333334 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-39-15f40568b41c4505841f5ad13c526f51 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-39-15f40568b41c4505841f5ad13c526f51 new file mode 100644 index 0000000000000..60cbe79310729 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-39-15f40568b41c4505841f5ad13c526f51 @@ -0,0 +1 @@ +255.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-4-b2e21ffa55342d4f3c243728dfe6b11f b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-4-b2e21ffa55342d4f3c243728dfe6b11f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-40-d1bc3b9a74fbf2ad41ddcd845ca9f0fb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-40-d1bc3b9a74fbf2ad41ddcd845ca9f0fb new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-40-d1bc3b9a74fbf2ad41ddcd845ca9f0fb @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-41-ee4c065e8557632a9ee348dd9223c3a1 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-41-ee4c065e8557632a9ee348dd9223c3a1 new file mode 100644 index 0000000000000..014c315649096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-41-ee4c065e8557632a9ee348dd9223c3a1 @@ -0,0 +1 @@ +[23.355555555555558,254.08333333333334,476.5612244897959,489.50000000000006] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-42-ba77d1a26f87385f046129b6eb7d2ec3 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-42-ba77d1a26f87385f046129b6eb7d2ec3 new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-42-ba77d1a26f87385f046129b6eb7d2ec3 @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-43-956d6b6bc69c8035f80de2e60eda65fb b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-43-956d6b6bc69c8035f80de2e60eda65fb new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-43-956d6b6bc69c8035f80de2e60eda65fb @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-44-d196cc7f52bb6ae19a5e66eb2a99577c b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-44-d196cc7f52bb6ae19a5e66eb2a99577c new file mode 100644 index 0000000000000..014c315649096 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-44-d196cc7f52bb6ae19a5e66eb2a99577c @@ -0,0 +1 @@ +[23.355555555555558,254.08333333333334,476.5612244897959,489.50000000000006] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-45-fe2c6a36a769f9f88a0ac9be1a4f0c28 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-45-fe2c6a36a769f9f88a0ac9be1a4f0c28 new file mode 100644 index 0000000000000..a8986e32ff75a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-45-fe2c6a36a769f9f88a0ac9be1a4f0c28 @@ -0,0 +1 @@ +[26.0,255.5,479.0,491.0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-5-8ae1465266d28bc2e5da8d89617873c4 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-5-8ae1465266d28bc2e5da8d89617873c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-6-69cdebe8b2d4d2bbf2eef64a8c789596 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-6-69cdebe8b2d4d2bbf2eef64a8c789596 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-7-ab438ea40bc5dddf76fd0a7a2529b8f7 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-7-ab438ea40bc5dddf76fd0a7a2529b8f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-8-7e3cf228c457279965b7414bd05527f b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-8-7e3cf228c457279965b7414bd05527f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-9-5aea8aa95a85c46284f7c1f45978a228 b/sql/hive/src/test/resources/golden/udaf_percentile_approx_23-9-5aea8aa95a85c46284f7c1f45978a228 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf1-0-7a6f90d9c0931145bee4fe4f5caa0859 b/sql/hive/src/test/resources/golden/udf1-0-7a6f90d9c0931145bee4fe4f5caa0859 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf1-1-8281592c818ada269024ac669bec78da b/sql/hive/src/test/resources/golden/udf1-1-8281592c818ada269024ac669bec78da new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf1-2-c7648c913ec336559fb67e3ab6938c8f b/sql/hive/src/test/resources/golden/udf1-2-c7648c913ec336559fb67e3ab6938c8f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf1-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/udf1-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..493daf5d79c54 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf1-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1 @@ +true false true true true false false false true true false true true acc abc abb hive hadoop AaAbAcA false diff --git a/sql/hive/src/test/resources/golden/udf2-0-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/udf2-0-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf2-1-f60851dc36f579e83d6848d7d3c589e6 b/sql/hive/src/test/resources/golden/udf2-1-f60851dc36f579e83d6848d7d3c589e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf2-2-31c8af064bac42541558a95fad3bca97 b/sql/hive/src/test/resources/golden/udf2-2-31c8af064bac42541558a95fad3bca97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf2-3-c5938fcdd5675b58a4ed54269b5f5591 b/sql/hive/src/test/resources/golden/udf2-3-c5938fcdd5675b58a4ed54269b5f5591 new file mode 100644 index 0000000000000..398f517b25b5f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf2-3-c5938fcdd5675b58a4ed54269b5f5591 @@ -0,0 +1 @@ +| abc | abc | abc | \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf3-0-66a2b926dd5439d4da9eb58743c18a8c b/sql/hive/src/test/resources/golden/udf3-0-66a2b926dd5439d4da9eb58743c18a8c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf3-1-1d04874d496d05cfe0b9d86de1111 b/sql/hive/src/test/resources/golden/udf3-1-1d04874d496d05cfe0b9d86de1111 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf3-2-25fe77d053e2bad8ae99757ce237052e b/sql/hive/src/test/resources/golden/udf3-2-25fe77d053e2bad8ae99757ce237052e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf3-3-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/udf3-3-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..b2890dc4cdb3a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf3-3-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1 @@ +0 NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf6-0-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/udf6-0-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf6-1-f60851dc36f579e83d6848d7d3c589e6 b/sql/hive/src/test/resources/golden/udf6-1-f60851dc36f579e83d6848d7d3c589e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf6-2-4d2a0815afe8c050cabf7a2efbce8521 b/sql/hive/src/test/resources/golden/udf6-2-4d2a0815afe8c050cabf7a2efbce8521 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf6-3-e579646b969eef49b09656114da52a73 b/sql/hive/src/test/resources/golden/udf6-3-e579646b969eef49b09656114da52a73 new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf6-3-e579646b969eef49b09656114da52a73 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf6-4-29f45ffe530dd8c27dfb82268017dbb2 b/sql/hive/src/test/resources/golden/udf6-4-29f45ffe530dd8c27dfb82268017dbb2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf6-5-fe336cd9850d6357980bd19139f76e b/sql/hive/src/test/resources/golden/udf6-5-fe336cd9850d6357980bd19139f76e new file mode 100644 index 0000000000000..132dbea91f8a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf6-5-fe336cd9850d6357980bd19139f76e @@ -0,0 +1 @@ +1 2 2 a 0.1 2 126 128 128 1.0 128 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf7-0-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/udf7-0-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf7-1-f60851dc36f579e83d6848d7d3c589e6 b/sql/hive/src/test/resources/golden/udf7-1-f60851dc36f579e83d6848d7d3c589e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf7-2-645d8fe7ab47806e0427c3deeedb5ec6 b/sql/hive/src/test/resources/golden/udf7-2-645d8fe7ab47806e0427c3deeedb5ec6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf7-3-b3afef6eb68f8e29e31d6bb6a7903045 b/sql/hive/src/test/resources/golden/udf7-3-b3afef6eb68f8e29e31d6bb6a7903045 new file mode 100644 index 0000000000000..51958ff45ab8d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf7-3-b3afef6eb68f8e29e31d6bb6a7903045 @@ -0,0 +1 @@ +1.098612288668 NULL NULL 1.098612288668 NULL NULL 1.584962500721 NULL NULL 0.47712125472 NULL NULL 1.584962500721 NULL NULL NULL -1.0 7.389056098931 8.0 8.0 0.125 8.0 2.0 NaN 1.0 1 8 8 diff --git a/sql/hive/src/test/resources/golden/udf8-0-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/udf8-0-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf8-1-63c38297946a2060c0cff4a426b0520c b/sql/hive/src/test/resources/golden/udf8-1-63c38297946a2060c0cff4a426b0520c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf8-2-700c31cc5099ea2c3bbb9fbf5c43a32 b/sql/hive/src/test/resources/golden/udf8-2-700c31cc5099ea2c3bbb9fbf5c43a32 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf8-3-72c1a1dd1627491550f6e19581a654cb b/sql/hive/src/test/resources/golden/udf8-3-72c1a1dd1627491550f6e19581a654cb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf8-4-9f22d5a65353432826a526b1d76eb65b b/sql/hive/src/test/resources/golden/udf8-4-9f22d5a65353432826a526b1d76eb65b new file mode 100644 index 0000000000000..8a89b039b7151 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf8-4-9f22d5a65353432826a526b1d76eb65b @@ -0,0 +1 @@ +1.0 1.0 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf9-0-a05de5714d8ccb2ac31dfe4f178fd358 b/sql/hive/src/test/resources/golden/udf9-0-a05de5714d8ccb2ac31dfe4f178fd358 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf9-1-dd0981dc44ac24d445af5412e9f7fa8c b/sql/hive/src/test/resources/golden/udf9-1-dd0981dc44ac24d445af5412e9f7fa8c new file mode 100644 index 0000000000000..83e2e121222a2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf9-1-dd0981dc44ac24d445af5412e9f7fa8c @@ -0,0 +1 @@ +-1 2 32 -1 2009-01-01 2009-12-31 2008-03-01 2009-03-02 2008-02-28 2009-02-27 2008-12-31 2008-01-02 2008-02-28 2009-02-27 2006-02-28 2005-02-28 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_10_trims-0-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/udf_10_trims-0-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_10_trims-1-4534b1b2e9101058e8d71756bcb416e b/sql/hive/src/test/resources/golden/udf_10_trims-1-4534b1b2e9101058e8d71756bcb416e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_10_trims-2-7624a192247c9c4c7be6a40d46f13597 b/sql/hive/src/test/resources/golden/udf_10_trims-2-7624a192247c9c4c7be6a40d46f13597 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_E-0-33251f00f840de3672f19d353fcfa66f b/sql/hive/src/test/resources/golden/udf_E-0-33251f00f840de3672f19d353fcfa66f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_E-1-d744dcbbb9d70b3dc4722b80ba9d929c b/sql/hive/src/test/resources/golden/udf_E-1-d744dcbbb9d70b3dc4722b80ba9d929c new file mode 100644 index 0000000000000..83593acfe8f2d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_E-1-d744dcbbb9d70b3dc4722b80ba9d929c @@ -0,0 +1 @@ +2.718281828459045 diff --git a/sql/hive/src/test/resources/golden/udf_E-2-72bb4231ea2a877b4d93a53cd7b6b82a b/sql/hive/src/test/resources/golden/udf_E-2-72bb4231ea2a877b4d93a53cd7b6b82a new file mode 100644 index 0000000000000..23a1652370236 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_E-2-72bb4231ea2a877b4d93a53cd7b6b82a @@ -0,0 +1 @@ +E() - returns E diff --git a/sql/hive/src/test/resources/golden/udf_E-3-e8924af3bf99d2e01546a965303ffd09 b/sql/hive/src/test/resources/golden/udf_E-3-e8924af3bf99d2e01546a965303ffd09 new file mode 100644 index 0000000000000..8ad91668cd245 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_E-3-e8924af3bf99d2e01546a965303ffd09 @@ -0,0 +1,5 @@ +E() - returns E +Synonyms: e +Example: + > SELECT E() FROM src LIMIT 1; + 2.718281828459045 diff --git a/sql/hive/src/test/resources/golden/udf_E-4-33251f00f840de3672f19d353fcfa66f b/sql/hive/src/test/resources/golden/udf_E-4-33251f00f840de3672f19d353fcfa66f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_E-5-d744dcbbb9d70b3dc4722b80ba9d929c b/sql/hive/src/test/resources/golden/udf_E-5-d744dcbbb9d70b3dc4722b80ba9d929c new file mode 100644 index 0000000000000..83593acfe8f2d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_E-5-d744dcbbb9d70b3dc4722b80ba9d929c @@ -0,0 +1 @@ +2.718281828459045 diff --git a/sql/hive/src/test/resources/golden/udf_E-6-72bb4231ea2a877b4d93a53cd7b6b82a b/sql/hive/src/test/resources/golden/udf_E-6-72bb4231ea2a877b4d93a53cd7b6b82a new file mode 100644 index 0000000000000..23a1652370236 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_E-6-72bb4231ea2a877b4d93a53cd7b6b82a @@ -0,0 +1 @@ +E() - returns E diff --git a/sql/hive/src/test/resources/golden/udf_E-7-e8924af3bf99d2e01546a965303ffd09 b/sql/hive/src/test/resources/golden/udf_E-7-e8924af3bf99d2e01546a965303ffd09 new file mode 100644 index 0000000000000..8ad91668cd245 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_E-7-e8924af3bf99d2e01546a965303ffd09 @@ -0,0 +1,5 @@ +E() - returns E +Synonyms: e +Example: + > SELECT E() FROM src LIMIT 1; + 2.718281828459045 diff --git a/sql/hive/src/test/resources/golden/udf_PI-0-b28e761e5564b51f98f182f561c1369f b/sql/hive/src/test/resources/golden/udf_PI-0-b28e761e5564b51f98f182f561c1369f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_PI-1-1ea1f486385c62adeafcc5c52335bbf7 b/sql/hive/src/test/resources/golden/udf_PI-1-1ea1f486385c62adeafcc5c52335bbf7 new file mode 100644 index 0000000000000..bd1956ec6788c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_PI-1-1ea1f486385c62adeafcc5c52335bbf7 @@ -0,0 +1 @@ +3.141592653589793 diff --git a/sql/hive/src/test/resources/golden/udf_PI-2-9c1476a2eab7455594e97b338ee3c188 b/sql/hive/src/test/resources/golden/udf_PI-2-9c1476a2eab7455594e97b338ee3c188 new file mode 100644 index 0000000000000..dd554e4ac9c28 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_PI-2-9c1476a2eab7455594e97b338ee3c188 @@ -0,0 +1 @@ +PI() - returns pi diff --git a/sql/hive/src/test/resources/golden/udf_PI-3-890f3c276eff2c459d8dc79d5a71c866 b/sql/hive/src/test/resources/golden/udf_PI-3-890f3c276eff2c459d8dc79d5a71c866 new file mode 100644 index 0000000000000..b66e03b623c75 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_PI-3-890f3c276eff2c459d8dc79d5a71c866 @@ -0,0 +1,5 @@ +PI() - returns pi +Synonyms: pi +Example: + > SELECT PI() FROM src LIMIT 1; + 3.14159... diff --git a/sql/hive/src/test/resources/golden/udf_PI-4-b28e761e5564b51f98f182f561c1369f b/sql/hive/src/test/resources/golden/udf_PI-4-b28e761e5564b51f98f182f561c1369f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_PI-5-1ea1f486385c62adeafcc5c52335bbf7 b/sql/hive/src/test/resources/golden/udf_PI-5-1ea1f486385c62adeafcc5c52335bbf7 new file mode 100644 index 0000000000000..bd1956ec6788c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_PI-5-1ea1f486385c62adeafcc5c52335bbf7 @@ -0,0 +1 @@ +3.141592653589793 diff --git a/sql/hive/src/test/resources/golden/udf_PI-6-9c1476a2eab7455594e97b338ee3c188 b/sql/hive/src/test/resources/golden/udf_PI-6-9c1476a2eab7455594e97b338ee3c188 new file mode 100644 index 0000000000000..dd554e4ac9c28 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_PI-6-9c1476a2eab7455594e97b338ee3c188 @@ -0,0 +1 @@ +PI() - returns pi diff --git a/sql/hive/src/test/resources/golden/udf_PI-7-890f3c276eff2c459d8dc79d5a71c866 b/sql/hive/src/test/resources/golden/udf_PI-7-890f3c276eff2c459d8dc79d5a71c866 new file mode 100644 index 0000000000000..b66e03b623c75 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_PI-7-890f3c276eff2c459d8dc79d5a71c866 @@ -0,0 +1,5 @@ +PI() - returns pi +Synonyms: pi +Example: + > SELECT PI() FROM src LIMIT 1; + 3.14159... diff --git a/sql/hive/src/test/resources/golden/udf_abs-0-6fe2e69c338fc823d3f61c9236eb2234 b/sql/hive/src/test/resources/golden/udf_abs-0-6fe2e69c338fc823d3f61c9236eb2234 new file mode 100644 index 0000000000000..b613b3b9fe967 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_abs-0-6fe2e69c338fc823d3f61c9236eb2234 @@ -0,0 +1 @@ +abs(x) - returns the absolute value of x \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_abs-1-eeb77ae8a0dcebbc0991923ca0932072 b/sql/hive/src/test/resources/golden/udf_abs-1-eeb77ae8a0dcebbc0991923ca0932072 new file mode 100644 index 0000000000000..c2fb6dc49322d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_abs-1-eeb77ae8a0dcebbc0991923ca0932072 @@ -0,0 +1,6 @@ +abs(x) - returns the absolute value of x +Example: + > SELECT abs(0) FROM src LIMIT 1; + 0 + > SELECT abs(-5) FROM src LIMIT 1; + 5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_abs-2-6a0ea751ac70262d478b23888dcbdc96 b/sql/hive/src/test/resources/golden/udf_abs-2-6a0ea751ac70262d478b23888dcbdc96 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_abs-3-52f5c6cba1b9d48046073a0c2e106530 b/sql/hive/src/test/resources/golden/udf_abs-3-52f5c6cba1b9d48046073a0c2e106530 new file mode 100644 index 0000000000000..f5a78bc6e59b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_abs-3-52f5c6cba1b9d48046073a0c2e106530 @@ -0,0 +1 @@ +0 1 123 9223372036854775807 9223372036854775807 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_abs-4-30cd5a94c13e1619ee18b9551db879c b/sql/hive/src/test/resources/golden/udf_abs-4-30cd5a94c13e1619ee18b9551db879c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_abs-5-343e899acb67c283391387f02aa7b5c4 b/sql/hive/src/test/resources/golden/udf_abs-5-343e899acb67c283391387f02aa7b5c4 new file mode 100644 index 0000000000000..9e57fa65e8014 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_abs-5-343e899acb67c283391387f02aa7b5c4 @@ -0,0 +1 @@ +0.0 3.14159265 3.14159265 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_acos-0-4f49cb5a5c87efea534d63ed76435f06 b/sql/hive/src/test/resources/golden/udf_acos-0-4f49cb5a5c87efea534d63ed76435f06 new file mode 100644 index 0000000000000..204db415144a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_acos-0-4f49cb5a5c87efea534d63ed76435f06 @@ -0,0 +1 @@ +acos(x) - returns the arc cosine of x if -1<=x<=1 or NULL otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_acos-1-d330511cf4f626cd844b18f57f99a85f b/sql/hive/src/test/resources/golden/udf_acos-1-d330511cf4f626cd844b18f57f99a85f new file mode 100644 index 0000000000000..d49af1cbf4800 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_acos-1-d330511cf4f626cd844b18f57f99a85f @@ -0,0 +1,6 @@ +acos(x) - returns the arc cosine of x if -1<=x<=1 or NULL otherwise +Example: + > SELECT acos(1) FROM src LIMIT 1; + 0 + > SELECT acos(2) FROM src LIMIT 1; + NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_acos-2-86fca49baf270873b46709c9eaeab87b b/sql/hive/src/test/resources/golden/udf_acos-2-86fca49baf270873b46709c9eaeab87b new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_acos-2-86fca49baf270873b46709c9eaeab87b @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_acos-3-f7f199e5f3dde8056465d55aca29e884 b/sql/hive/src/test/resources/golden/udf_acos-3-f7f199e5f3dde8056465d55aca29e884 new file mode 100644 index 0000000000000..5548bdb7cf26a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_acos-3-f7f199e5f3dde8056465d55aca29e884 @@ -0,0 +1 @@ +1.5707963267948966 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_acos-4-e66fd90808b7c0eacbfe7ddd8624d79a b/sql/hive/src/test/resources/golden/udf_acos-4-e66fd90808b7c0eacbfe7ddd8624d79a new file mode 100644 index 0000000000000..1f2d6faad9a2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_acos-4-e66fd90808b7c0eacbfe7ddd8624d79a @@ -0,0 +1 @@ +2.0943951023931957 0.7208187608700897 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_acos-5-85869fd1e3a6fccaacd54a4315ae6d2e b/sql/hive/src/test/resources/golden/udf_acos-5-85869fd1e3a6fccaacd54a4315ae6d2e new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_acos-5-85869fd1e3a6fccaacd54a4315ae6d2e @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_add-0-5db764318a918a5f6d7c1d95d9e86045 b/sql/hive/src/test/resources/golden/udf_add-0-5db764318a918a5f6d7c1d95d9e86045 new file mode 100644 index 0000000000000..e8f11c444a808 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_add-0-5db764318a918a5f6d7c1d95d9e86045 @@ -0,0 +1 @@ +a + b - Returns a+b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_add-1-400b238f4e6cdf7120be566b0ef079c5 b/sql/hive/src/test/resources/golden/udf_add-1-400b238f4e6cdf7120be566b0ef079c5 new file mode 100644 index 0000000000000..e8f11c444a808 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_add-1-400b238f4e6cdf7120be566b0ef079c5 @@ -0,0 +1 @@ +a + b - Returns a+b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_array-0-2e9c2a7d9325bd9a53cf9f181b6333ee b/sql/hive/src/test/resources/golden/udf_array-0-2e9c2a7d9325bd9a53cf9f181b6333ee new file mode 100644 index 0000000000000..8c5ef9c86c107 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_array-0-2e9c2a7d9325bd9a53cf9f181b6333ee @@ -0,0 +1 @@ +array(n0, n1...) - Creates an array with the given elements diff --git a/sql/hive/src/test/resources/golden/udf_array-1-570741914bb78300b0233e5f38d7f08a b/sql/hive/src/test/resources/golden/udf_array-1-570741914bb78300b0233e5f38d7f08a new file mode 100644 index 0000000000000..8c5ef9c86c107 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_array-1-570741914bb78300b0233e5f38d7f08a @@ -0,0 +1 @@ +array(n0, n1...) - Creates an array with the given elements diff --git a/sql/hive/src/test/resources/golden/udf_array-2-db6d3c6c67faed3ceb019cb1993502f6 b/sql/hive/src/test/resources/golden/udf_array-2-db6d3c6c67faed3ceb019cb1993502f6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_array-3-a5d12c41277fb158e09281169c905122 b/sql/hive/src/test/resources/golden/udf_array-3-a5d12c41277fb158e09281169c905122 new file mode 100644 index 0000000000000..7b41de31897cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_array-3-a5d12c41277fb158e09281169c905122 @@ -0,0 +1 @@ +[] NULL [1,2,3] 3 ["1","a","2","3"] 2 2 diff --git a/sql/hive/src/test/resources/golden/udf_array_contains-0-d9a90108b052b111e8de4433e008b25a b/sql/hive/src/test/resources/golden/udf_array_contains-0-d9a90108b052b111e8de4433e008b25a new file mode 100644 index 0000000000000..783e7d086a5c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_array_contains-0-d9a90108b052b111e8de4433e008b25a @@ -0,0 +1 @@ +array_contains(array, value) - Returns TRUE if the array contains value. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_array_contains-1-eff16c7836252e01f3d8190cd833f79c b/sql/hive/src/test/resources/golden/udf_array_contains-1-eff16c7836252e01f3d8190cd833f79c new file mode 100644 index 0000000000000..0ccae5649af4a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_array_contains-1-eff16c7836252e01f3d8190cd833f79c @@ -0,0 +1,4 @@ +array_contains(array, value) - Returns TRUE if the array contains value. +Example: + > SELECT array_contains(array(1, 2, 3), 2) FROM src LIMIT 1; + true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_array_contains-2-42d966b28e61a465d638bffc20ac7247 b/sql/hive/src/test/resources/golden/udf_array_contains-2-42d966b28e61a465d638bffc20ac7247 new file mode 100644 index 0000000000000..f32a5804e292d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_array_contains-2-42d966b28e61a465d638bffc20ac7247 @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_array_contains-3-ec0cd851fd8135dd9bc822d9a0432569 b/sql/hive/src/test/resources/golden/udf_array_contains-3-ec0cd851fd8135dd9bc822d9a0432569 new file mode 100644 index 0000000000000..f32a5804e292d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_array_contains-3-ec0cd851fd8135dd9bc822d9a0432569 @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ascii-0-72924c23459330cca6a54c70b12a542c b/sql/hive/src/test/resources/golden/udf_ascii-0-72924c23459330cca6a54c70b12a542c new file mode 100644 index 0000000000000..e121c27212c66 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ascii-0-72924c23459330cca6a54c70b12a542c @@ -0,0 +1 @@ +ascii(str) - returns the numeric value of the first character of str \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ascii-1-dab8656d7f001e85615442d60df4b6b3 b/sql/hive/src/test/resources/golden/udf_ascii-1-dab8656d7f001e85615442d60df4b6b3 new file mode 100644 index 0000000000000..7c9fb835dfe57 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ascii-1-dab8656d7f001e85615442d60df4b6b3 @@ -0,0 +1,6 @@ +ascii(str) - returns the numeric value of the first character of str +Returns 0 if str is empty or NULL if str is NULL +Example: + > SELECT ascii('222') FROM src LIMIT 1; 50 + > SELECT ascii(2) FROM src LIMIT 1; + 50 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ascii-2-a9e207503f52d43903877fb998eabeaa b/sql/hive/src/test/resources/golden/udf_ascii-2-a9e207503f52d43903877fb998eabeaa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_ascii-3-28fc6497c9835c2ef331aba44576f1b1 b/sql/hive/src/test/resources/golden/udf_ascii-3-28fc6497c9835c2ef331aba44576f1b1 new file mode 100644 index 0000000000000..726fda4c15ed3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ascii-3-28fc6497c9835c2ef331aba44576f1b1 @@ -0,0 +1 @@ +70 0 33 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_asin-0-99da197a53767060e3fa0250254d59cd b/sql/hive/src/test/resources/golden/udf_asin-0-99da197a53767060e3fa0250254d59cd new file mode 100644 index 0000000000000..3a56bffc8da34 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_asin-0-99da197a53767060e3fa0250254d59cd @@ -0,0 +1 @@ +asin(x) - returns the arc sine of x if -1<=x<=1 or NULL otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_asin-1-3d0c3fa6121f8f5158d221074f1d4129 b/sql/hive/src/test/resources/golden/udf_asin-1-3d0c3fa6121f8f5158d221074f1d4129 new file mode 100644 index 0000000000000..ef207d3f5da38 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_asin-1-3d0c3fa6121f8f5158d221074f1d4129 @@ -0,0 +1,6 @@ +asin(x) - returns the arc sine of x if -1<=x<=1 or NULL otherwise +Example: + > SELECT asin(0) FROM src LIMIT 1; + 0 + > SELECT asin(2) FROM src LIMIT 1; + NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_asin-2-da1b36ab73c6791eb3c4bd1dd2bec52f b/sql/hive/src/test/resources/golden/udf_asin-2-da1b36ab73c6791eb3c4bd1dd2bec52f new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_asin-2-da1b36ab73c6791eb3c4bd1dd2bec52f @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_asin-3-b67069d37df3a7fb7a3e2138d8558343 b/sql/hive/src/test/resources/golden/udf_asin-3-b67069d37df3a7fb7a3e2138d8558343 new file mode 100644 index 0000000000000..171538eb0b00f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_asin-3-b67069d37df3a7fb7a3e2138d8558343 @@ -0,0 +1 @@ +0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_asin-4-929dabad86ef0e564802de8f663a9e66 b/sql/hive/src/test/resources/golden/udf_asin-4-929dabad86ef0e564802de8f663a9e66 new file mode 100644 index 0000000000000..a9d9b65be4189 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_asin-4-929dabad86ef0e564802de8f663a9e66 @@ -0,0 +1 @@ +-0.5235987755982989 0.7208187608700897 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_asin-5-1ee8715cce9831623d0af0031964d284 b/sql/hive/src/test/resources/golden/udf_asin-5-1ee8715cce9831623d0af0031964d284 new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_asin-5-1ee8715cce9831623d0af0031964d284 @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_atan-0-c79ed30c2444c8493d0db98c33c9132b b/sql/hive/src/test/resources/golden/udf_atan-0-c79ed30c2444c8493d0db98c33c9132b new file mode 100644 index 0000000000000..019676ad50bc3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_atan-0-c79ed30c2444c8493d0db98c33c9132b @@ -0,0 +1 @@ +atan(x) - returns the atan (arctan) of x (x is in radians) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_atan-1-77e7ac1b89a4eac9102176cd73f67a62 b/sql/hive/src/test/resources/golden/udf_atan-1-77e7ac1b89a4eac9102176cd73f67a62 new file mode 100644 index 0000000000000..ce9e52716ff44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_atan-1-77e7ac1b89a4eac9102176cd73f67a62 @@ -0,0 +1,4 @@ +atan(x) - returns the atan (arctan) of x (x is in radians) +Example: + > SELECT atan(0) FROM src LIMIT 1; + 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_atan-2-bf1c7875364d5518e0ac9c1ac6943764 b/sql/hive/src/test/resources/golden/udf_atan-2-bf1c7875364d5518e0ac9c1ac6943764 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_atan-2-bf1c7875364d5518e0ac9c1ac6943764 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_atan-3-9a6252f36fe5ec1387186bf47d74a139 b/sql/hive/src/test/resources/golden/udf_atan-3-9a6252f36fe5ec1387186bf47d74a139 new file mode 100644 index 0000000000000..37b3e6018d62c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_atan-3-9a6252f36fe5ec1387186bf47d74a139 @@ -0,0 +1 @@ +0.7853981633974483 1.4056476493802699 -0.7853981633974483 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_atan-4-c79ed30c2444c8493d0db98c33c9132b b/sql/hive/src/test/resources/golden/udf_atan-4-c79ed30c2444c8493d0db98c33c9132b new file mode 100644 index 0000000000000..019676ad50bc3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_atan-4-c79ed30c2444c8493d0db98c33c9132b @@ -0,0 +1 @@ +atan(x) - returns the atan (arctan) of x (x is in radians) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_atan-5-77e7ac1b89a4eac9102176cd73f67a62 b/sql/hive/src/test/resources/golden/udf_atan-5-77e7ac1b89a4eac9102176cd73f67a62 new file mode 100644 index 0000000000000..ce9e52716ff44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_atan-5-77e7ac1b89a4eac9102176cd73f67a62 @@ -0,0 +1,4 @@ +atan(x) - returns the atan (arctan) of x (x is in radians) +Example: + > SELECT atan(0) FROM src LIMIT 1; + 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_atan-6-bf1c7875364d5518e0ac9c1ac6943764 b/sql/hive/src/test/resources/golden/udf_atan-6-bf1c7875364d5518e0ac9c1ac6943764 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_atan-6-bf1c7875364d5518e0ac9c1ac6943764 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_atan-7-9a6252f36fe5ec1387186bf47d74a139 b/sql/hive/src/test/resources/golden/udf_atan-7-9a6252f36fe5ec1387186bf47d74a139 new file mode 100644 index 0000000000000..37b3e6018d62c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_atan-7-9a6252f36fe5ec1387186bf47d74a139 @@ -0,0 +1 @@ +0.7853981633974483 1.4056476493802699 -0.7853981633974483 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_avg-0-2d715528b290951fb9874f60d7e9b537 b/sql/hive/src/test/resources/golden/udf_avg-0-2d715528b290951fb9874f60d7e9b537 new file mode 100644 index 0000000000000..bd171b0e9a29c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_avg-0-2d715528b290951fb9874f60d7e9b537 @@ -0,0 +1 @@ +avg(x) - Returns the mean of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_avg-1-c707c56871a903e4e022b3df5c92fc3f b/sql/hive/src/test/resources/golden/udf_avg-1-c707c56871a903e4e022b3df5c92fc3f new file mode 100644 index 0000000000000..bd171b0e9a29c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_avg-1-c707c56871a903e4e022b3df5c92fc3f @@ -0,0 +1 @@ +avg(x) - Returns the mean of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bigint-0-6c5b1e4b9d725caeb786bb18448a7927 b/sql/hive/src/test/resources/golden/udf_bigint-0-6c5b1e4b9d725caeb786bb18448a7927 new file mode 100644 index 0000000000000..27b6cd42b68cf --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bigint-0-6c5b1e4b9d725caeb786bb18448a7927 @@ -0,0 +1 @@ +There is no documentation for function 'bigint' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bigint-1-4636e4f0083ea54814995a03b7c81202 b/sql/hive/src/test/resources/golden/udf_bigint-1-4636e4f0083ea54814995a03b7c81202 new file mode 100644 index 0000000000000..27b6cd42b68cf --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bigint-1-4636e4f0083ea54814995a03b7c81202 @@ -0,0 +1 @@ +There is no documentation for function 'bigint' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bin-0-ebbb090f6fa6b322a52bec3ba19dfe5b b/sql/hive/src/test/resources/golden/udf_bin-0-ebbb090f6fa6b322a52bec3ba19dfe5b new file mode 100644 index 0000000000000..4790a2c1f9292 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bin-0-ebbb090f6fa6b322a52bec3ba19dfe5b @@ -0,0 +1 @@ +bin(n) - returns n in binary \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bin-1-843803a1b6ada107c11397af1a2f55d6 b/sql/hive/src/test/resources/golden/udf_bin-1-843803a1b6ada107c11397af1a2f55d6 new file mode 100644 index 0000000000000..4d82712e858e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bin-1-843803a1b6ada107c11397af1a2f55d6 @@ -0,0 +1,5 @@ +bin(n) - returns n in binary +n is a BIGINT. Returns NULL if n is NULL. +Example: + > SELECT bin(13) FROM src LIMIT 1 + '1101' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bin-2-5ee3932ab9cd164f1005a4413a68007b b/sql/hive/src/test/resources/golden/udf_bin-2-5ee3932ab9cd164f1005a4413a68007b new file mode 100644 index 0000000000000..20fae133f0b4d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bin-2-5ee3932ab9cd164f1005a4413a68007b @@ -0,0 +1 @@ +1 0 101111101011100001101100101 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bin-3-b72fc578a7c677e15b8598248c81901 b/sql/hive/src/test/resources/golden/udf_bin-3-b72fc578a7c677e15b8598248c81901 new file mode 100644 index 0000000000000..76ea1be7f9214 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bin-3-b72fc578a7c677e15b8598248c81901 @@ -0,0 +1 @@ +1111111111111111111111111111111111111111111111111111111111111011 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_and-0-abea2a2780fad42422774174cbfd603d b/sql/hive/src/test/resources/golden/udf_bitmap_and-0-abea2a2780fad42422774174cbfd603d new file mode 100644 index 0000000000000..652a71b48011c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitmap_and-0-abea2a2780fad42422774174cbfd603d @@ -0,0 +1 @@ +[13,2,4,8589934592,4096,0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_and-1-414291f11711df40fb8362e0a0156b25 b/sql/hive/src/test/resources/golden/udf_bitmap_and-1-414291f11711df40fb8362e0a0156b25 new file mode 100644 index 0000000000000..6d061bf1198c2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitmap_and-1-414291f11711df40fb8362e0a0156b25 @@ -0,0 +1 @@ +[13,1,4,2,0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_and-2-d550d017f9eb9176593719ea34eaae9b b/sql/hive/src/test/resources/golden/udf_bitmap_and-2-d550d017f9eb9176593719ea34eaae9b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_and-3-a486db1f5a06f9623a0e5abd7737b0c6 b/sql/hive/src/test/resources/golden/udf_bitmap_and-3-a486db1f5a06f9623a0e5abd7737b0c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_and-4-6320e1c4829024f819d3883df9a782c0 b/sql/hive/src/test/resources/golden/udf_bitmap_and-4-6320e1c4829024f819d3883df9a782c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_and-5-ff2860a163cbe78d5affac8047199296 b/sql/hive/src/test/resources/golden/udf_bitmap_and-5-ff2860a163cbe78d5affac8047199296 new file mode 100644 index 0000000000000..43be09952b09c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitmap_and-5-ff2860a163cbe78d5affac8047199296 @@ -0,0 +1,10 @@ +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_and-6-d550d017f9eb9176593719ea34eaae9b b/sql/hive/src/test/resources/golden/udf_bitmap_and-6-d550d017f9eb9176593719ea34eaae9b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_empty-0-6c80525a4eab6761596e6ad5aa75bc90 b/sql/hive/src/test/resources/golden/udf_bitmap_empty-0-6c80525a4eab6761596e6ad5aa75bc90 new file mode 100644 index 0000000000000..f32a5804e292d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitmap_empty-0-6c80525a4eab6761596e6ad5aa75bc90 @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_empty-1-a03987655a167f5b18c37b643391a0df b/sql/hive/src/test/resources/golden/udf_bitmap_empty-1-a03987655a167f5b18c37b643391a0df new file mode 100644 index 0000000000000..02e4a84d62c4b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitmap_empty-1-a03987655a167f5b18c37b643391a0df @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_or-0-377e873cf3cc23e9234ce9aa7c235d8c b/sql/hive/src/test/resources/golden/udf_bitmap_or-0-377e873cf3cc23e9234ce9aa7c235d8c new file mode 100644 index 0000000000000..652a71b48011c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitmap_or-0-377e873cf3cc23e9234ce9aa7c235d8c @@ -0,0 +1 @@ +[13,2,4,8589934592,4096,0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_or-1-85cab84fba419b436b033e3ea07e02ef b/sql/hive/src/test/resources/golden/udf_bitmap_or-1-85cab84fba419b436b033e3ea07e02ef new file mode 100644 index 0000000000000..163f4734f4c21 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitmap_or-1-85cab84fba419b436b033e3ea07e02ef @@ -0,0 +1 @@ +[13,2,4,8589934592,4224,0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_or-2-d550d017f9eb9176593719ea34eaae9b b/sql/hive/src/test/resources/golden/udf_bitmap_or-2-d550d017f9eb9176593719ea34eaae9b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_or-3-a486db1f5a06f9623a0e5abd7737b0c6 b/sql/hive/src/test/resources/golden/udf_bitmap_or-3-a486db1f5a06f9623a0e5abd7737b0c6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_or-4-6320e1c4829024f819d3883df9a782c0 b/sql/hive/src/test/resources/golden/udf_bitmap_or-4-6320e1c4829024f819d3883df9a782c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_or-5-ea92fff4d814552b57535ed342a5dde0 b/sql/hive/src/test/resources/golden/udf_bitmap_or-5-ea92fff4d814552b57535ed342a5dde0 new file mode 100644 index 0000000000000..c977a4ce25c3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitmap_or-5-ea92fff4d814552b57535ed342a5dde0 @@ -0,0 +1,10 @@ +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitmap_or-6-d550d017f9eb9176593719ea34eaae9b b/sql/hive/src/test/resources/golden/udf_bitmap_or-6-d550d017f9eb9176593719ea34eaae9b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_bitwise_and-0-e2374700cd32add926992d5539bd463a b/sql/hive/src/test/resources/golden/udf_bitwise_and-0-e2374700cd32add926992d5539bd463a new file mode 100644 index 0000000000000..71cadba7649e8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitwise_and-0-e2374700cd32add926992d5539bd463a @@ -0,0 +1 @@ +a & b - Bitwise and \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitwise_and-1-2e63ac31262106160ab043027e356a4b b/sql/hive/src/test/resources/golden/udf_bitwise_and-1-2e63ac31262106160ab043027e356a4b new file mode 100644 index 0000000000000..ead02cba53aa4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitwise_and-1-2e63ac31262106160ab043027e356a4b @@ -0,0 +1,4 @@ +a & b - Bitwise and +Example: + > SELECT 3 & 5 FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitwise_not-0-34abab2f47f90f0f194ef44aed1cdd7f b/sql/hive/src/test/resources/golden/udf_bitwise_not-0-34abab2f47f90f0f194ef44aed1cdd7f new file mode 100644 index 0000000000000..8b06e374c708d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitwise_not-0-34abab2f47f90f0f194ef44aed1cdd7f @@ -0,0 +1 @@ +~ n - Bitwise not \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitwise_not-1-ccc0c59ea3e29b6d55e1edee7029155d b/sql/hive/src/test/resources/golden/udf_bitwise_not-1-ccc0c59ea3e29b6d55e1edee7029155d new file mode 100644 index 0000000000000..413ca8a653e1f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitwise_not-1-ccc0c59ea3e29b6d55e1edee7029155d @@ -0,0 +1,4 @@ +~ n - Bitwise not +Example: + > SELECT ~ 0 FROM src LIMIT 1; + -1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitwise_or-0-bf5bd0beebdd89b3fbbbbb8195a9bbe6 b/sql/hive/src/test/resources/golden/udf_bitwise_or-0-bf5bd0beebdd89b3fbbbbb8195a9bbe6 new file mode 100644 index 0000000000000..bdbd28cad97c4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitwise_or-0-bf5bd0beebdd89b3fbbbbb8195a9bbe6 @@ -0,0 +1 @@ +a | b - Bitwise or \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitwise_or-1-272722c23fece2807c08191d3969c3bb b/sql/hive/src/test/resources/golden/udf_bitwise_or-1-272722c23fece2807c08191d3969c3bb new file mode 100644 index 0000000000000..4c116be2acae3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitwise_or-1-272722c23fece2807c08191d3969c3bb @@ -0,0 +1,4 @@ +a | b - Bitwise or +Example: + > SELECT 3 | 5 FROM src LIMIT 1; + 7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitwise_xor-0-6b05142d0b7e444a3e52a11b59d60a16 b/sql/hive/src/test/resources/golden/udf_bitwise_xor-0-6b05142d0b7e444a3e52a11b59d60a16 new file mode 100644 index 0000000000000..b483f75f1b956 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitwise_xor-0-6b05142d0b7e444a3e52a11b59d60a16 @@ -0,0 +1 @@ +a ^ b - Bitwise exclusive or \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_bitwise_xor-1-8fc9b9bf1aced42754419310784e0a9f b/sql/hive/src/test/resources/golden/udf_bitwise_xor-1-8fc9b9bf1aced42754419310784e0a9f new file mode 100644 index 0000000000000..03bf261d7cf51 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_bitwise_xor-1-8fc9b9bf1aced42754419310784e0a9f @@ -0,0 +1,4 @@ +a ^ b - Bitwise exclusive or +Example: + > SELECT 3 ^ 5 FROM src LIMIT 1; + 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_boolean-0-a68fc036f5f5b7f9c85d71bb9627c749 b/sql/hive/src/test/resources/golden/udf_boolean-0-a68fc036f5f5b7f9c85d71bb9627c749 new file mode 100644 index 0000000000000..8134698dfbdcd --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_boolean-0-a68fc036f5f5b7f9c85d71bb9627c749 @@ -0,0 +1 @@ +There is no documentation for function 'boolean' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_boolean-1-23178b473a9d25d6be0abe378d44fb0e b/sql/hive/src/test/resources/golden/udf_boolean-1-23178b473a9d25d6be0abe378d44fb0e new file mode 100644 index 0000000000000..8134698dfbdcd --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_boolean-1-23178b473a9d25d6be0abe378d44fb0e @@ -0,0 +1 @@ +There is no documentation for function 'boolean' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_case-0-5bcbe4c0e0a75462160814a10b9449f4 b/sql/hive/src/test/resources/golden/udf_case-0-5bcbe4c0e0a75462160814a10b9449f4 new file mode 100644 index 0000000000000..645bd7302810f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_case-0-5bcbe4c0e0a75462160814a10b9449f4 @@ -0,0 +1 @@ +There is no documentation for function 'case' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_case-1-54acf006155d8822a50e47729be24004 b/sql/hive/src/test/resources/golden/udf_case-1-54acf006155d8822a50e47729be24004 new file mode 100644 index 0000000000000..645bd7302810f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_case-1-54acf006155d8822a50e47729be24004 @@ -0,0 +1 @@ +There is no documentation for function 'case' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_case-2-98ee676f92950375917f09d2e492253f b/sql/hive/src/test/resources/golden/udf_case-2-98ee676f92950375917f09d2e492253f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_case-3-ec7343402fd77807842a0eaf2497a47c b/sql/hive/src/test/resources/golden/udf_case-3-ec7343402fd77807842a0eaf2497a47c new file mode 100644 index 0000000000000..1ca086d1dca4d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_case-3-ec7343402fd77807842a0eaf2497a47c @@ -0,0 +1 @@ +2 5 15 NULL 20 24 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_case-4-3b3e7ab775f45d24f39e281b0d2f8d76 b/sql/hive/src/test/resources/golden/udf_case-4-3b3e7ab775f45d24f39e281b0d2f8d76 new file mode 100644 index 0000000000000..b920295f69a53 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_case-4-3b3e7ab775f45d24f39e281b0d2f8d76 @@ -0,0 +1 @@ +yo \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_case_column_pruning-0-dd2d7a075df235f17c26bac8713e939c b/sql/hive/src/test/resources/golden/udf_case_column_pruning-0-dd2d7a075df235f17c26bac8713e939c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_case_thrift-0-e3c6c400a6588fd7b52f9540fd621cd8 b/sql/hive/src/test/resources/golden/udf_case_thrift-0-e3c6c400a6588fd7b52f9540fd621cd8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_case_thrift-1-406cf6f97996bd921cf22e1ddd2d9f96 b/sql/hive/src/test/resources/golden/udf_case_thrift-1-406cf6f97996bd921cf22e1ddd2d9f96 new file mode 100644 index 0000000000000..d97a0ef52b2e8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_case_thrift-1-406cf6f97996bd921cf22e1ddd2d9f96 @@ -0,0 +1,3 @@ +1 zero 0 +3 10 is ten NULL +100 default NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ceil-0-4b40e67b8ca75729ab07df966d814e06 b/sql/hive/src/test/resources/golden/udf_ceil-0-4b40e67b8ca75729ab07df966d814e06 new file mode 100644 index 0000000000000..4854a3c7773ac --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ceil-0-4b40e67b8ca75729ab07df966d814e06 @@ -0,0 +1 @@ +ceil(x) - Find the smallest integer not smaller than x \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ceil-1-f410065d893a263f375fcf74072877bb b/sql/hive/src/test/resources/golden/udf_ceil-1-f410065d893a263f375fcf74072877bb new file mode 100644 index 0000000000000..23685df97892d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ceil-1-f410065d893a263f375fcf74072877bb @@ -0,0 +1,7 @@ +ceil(x) - Find the smallest integer not smaller than x +Synonyms: ceiling +Example: + > SELECT ceil(-0.1) FROM src LIMIT 1; + 0 + > SELECT ceil(5) FROM src LIMIT 1; + 5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ceiling-0-d5685e38400e68341e36a59671dcbdfd b/sql/hive/src/test/resources/golden/udf_ceiling-0-d5685e38400e68341e36a59671dcbdfd new file mode 100644 index 0000000000000..bf61b7e89d8b3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ceiling-0-d5685e38400e68341e36a59671dcbdfd @@ -0,0 +1 @@ +ceiling(x) - Find the smallest integer not smaller than x \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ceiling-1-69b4ba577d2f0f18befdaa1ee7a858df b/sql/hive/src/test/resources/golden/udf_ceiling-1-69b4ba577d2f0f18befdaa1ee7a858df new file mode 100644 index 0000000000000..79a06f0ee2a5d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ceiling-1-69b4ba577d2f0f18befdaa1ee7a858df @@ -0,0 +1,7 @@ +ceiling(x) - Find the smallest integer not smaller than x +Synonyms: ceil +Example: + > SELECT ceiling(-0.1) FROM src LIMIT 1; + 0 + > SELECT ceiling(5) FROM src LIMIT 1; + 5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_coalesce-0-8d1c97c292c51447e58606f2cefa87c1 b/sql/hive/src/test/resources/golden/udf_coalesce-0-8d1c97c292c51447e58606f2cefa87c1 new file mode 100644 index 0000000000000..66313c54cc684 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_coalesce-0-8d1c97c292c51447e58606f2cefa87c1 @@ -0,0 +1 @@ +coalesce(a1, a2, ...) - Returns the first non-null argument \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_coalesce-1-e2c086f5148f10264c09ecbd7284c809 b/sql/hive/src/test/resources/golden/udf_coalesce-1-e2c086f5148f10264c09ecbd7284c809 new file mode 100644 index 0000000000000..04d69977c3df4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_coalesce-1-e2c086f5148f10264c09ecbd7284c809 @@ -0,0 +1,4 @@ +coalesce(a1, a2, ...) - Returns the first non-null argument +Example: + > SELECT coalesce(NULL, 1, NULL) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_coalesce-2-bd78a25868e5598ea275e0be5e4c716 b/sql/hive/src/test/resources/golden/udf_coalesce-2-bd78a25868e5598ea275e0be5e4c716 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_coalesce-3-badb02b0dfa13d6a1519e6198bb511d2 b/sql/hive/src/test/resources/golden/udf_coalesce-3-badb02b0dfa13d6a1519e6198bb511d2 new file mode 100644 index 0000000000000..cd5686d89eba4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_coalesce-3-badb02b0dfa13d6a1519e6198bb511d2 @@ -0,0 +1 @@ +1 1 2 1 3 4 1 1 2 1 3 4 1.0 1.0 2.0 2.0 2.0 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_coalesce-4-83f323874d7941c463ced2aee6cc5157 b/sql/hive/src/test/resources/golden/udf_coalesce-4-83f323874d7941c463ced2aee6cc5157 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_coalesce-5-4bcad31a47f4bfc3baef75b65baa8082 b/sql/hive/src/test/resources/golden/udf_coalesce-5-4bcad31a47f4bfc3baef75b65baa8082 new file mode 100644 index 0000000000000..98339f97ef2f8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_coalesce-5-4bcad31a47f4bfc3baef75b65baa8082 @@ -0,0 +1,11 @@ +0 0 999 +2 1 999 +4 8 value_2 +6 27 999 +8 64 999 +10 125 999 +12 216 999 +14 343 999 +16 512 999 +18 729 999 +999 999 999 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_compare_java_string-0-32b16ab99287db115e8de5214ac24b77 b/sql/hive/src/test/resources/golden/udf_compare_java_string-0-32b16ab99287db115e8de5214ac24b77 new file mode 100644 index 0000000000000..59d3f01051903 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_compare_java_string-0-32b16ab99287db115e8de5214ac24b77 @@ -0,0 +1,10 @@ +ABSTRACT SYNTAX TREE: + (TOK_CREATEFUNCTION test_udf_get_java_string 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaString') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + + diff --git a/sql/hive/src/test/resources/golden/udf_concat-0-7bc53505a4e6587132870d8d0a704d2 b/sql/hive/src/test/resources/golden/udf_concat-0-7bc53505a4e6587132870d8d0a704d2 new file mode 100644 index 0000000000000..a3998eeeee623 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat-0-7bc53505a4e6587132870d8d0a704d2 @@ -0,0 +1 @@ +concat(str1, str2, ... strN) - returns the concatenation of str1, str2, ... strN or concat(bin1, bin2, ... binN) - returns the concatenation of bytes in binary data bin1, bin2, ... binN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat-1-765c520f239cdff1ea3f8d22ba83e031 b/sql/hive/src/test/resources/golden/udf_concat-1-765c520f239cdff1ea3f8d22ba83e031 new file mode 100644 index 0000000000000..0afd542a05033 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat-1-765c520f239cdff1ea3f8d22ba83e031 @@ -0,0 +1,5 @@ +concat(str1, str2, ... strN) - returns the concatenation of str1, str2, ... strN or concat(bin1, bin2, ... binN) - returns the concatenation of bytes in binary data bin1, bin2, ... binN +Returns NULL if any argument is NULL. +Example: + > SELECT concat('abc', 'def') FROM src LIMIT 1; + 'abcdef' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat-2-2c4f33a0b709a7d00c3083e8aa5fc0d5 b/sql/hive/src/test/resources/golden/udf_concat-2-2c4f33a0b709a7d00c3083e8aa5fc0d5 new file mode 100644 index 0000000000000..69af4e63792dc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat-2-2c4f33a0b709a7d00c3083e8aa5fc0d5 @@ -0,0 +1 @@ +ab abc NULL NULL a NULL 123a 12 1 1234abcextra argument \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat_insert1-0-13ab74a58da514fe01dbeda0c3e79883 b/sql/hive/src/test/resources/golden/udf_concat_insert1-0-13ab74a58da514fe01dbeda0c3e79883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_concat_insert1-1-ed0d453b9879faed8bf93913f7690545 b/sql/hive/src/test/resources/golden/udf_concat_insert1-1-ed0d453b9879faed8bf93913f7690545 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_concat_insert1-2-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/udf_concat_insert1-2-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..aecd5d9f2a5c2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat_insert1-2-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,57 @@ +1234 0 +1234 2 +1234 4 +1234 5 +1234 8 +1234 9 +1234 10 +1234 11 +1234 12 +1234 15 +1234 17 +1234 18 +1234 19 +1234 20 +1234 24 +1234 26 +1234 27 +1234 28 +1234 30 +1234 33 +1234 34 +1234 35 +1234 37 +1234 41 +1234 42 +1234 43 +1234 44 +1234 47 +1234 51 +1234 53 +1234 54 +1234 57 +1234 58 +1234 64 +1234 65 +1234 66 +1234 67 +1234 69 +1234 70 +1234 72 +1234 74 +1234 76 +1234 77 +1234 78 +1234 80 +1234 82 +1234 83 +1234 84 +1234 85 +1234 86 +1234 87 +1234 90 +1234 92 +1234 95 +1234 96 +1234 97 +1234 98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat_insert2-0-659e06570690cceeb3f37e10e855d2ea b/sql/hive/src/test/resources/golden/udf_concat_insert2-0-659e06570690cceeb3f37e10e855d2ea new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_concat_insert2-1-39829ebc03d9e047f3eaac80b4428768 b/sql/hive/src/test/resources/golden/udf_concat_insert2-1-39829ebc03d9e047f3eaac80b4428768 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_concat_insert2-2-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/udf_concat_insert2-2-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..455cef3f57162 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat_insert2-2-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,84 @@ +1234abcextra argument val_86 +1234abcextra argument val_27 +1234abcextra argument val_98 +1234abcextra argument val_66 +1234abcextra argument val_37 +1234abcextra argument val_15 +1234abcextra argument val_82 +1234abcextra argument val_17 +1234abcextra argument val_0 +1234abcextra argument val_57 +1234abcextra argument val_20 +1234abcextra argument val_92 +1234abcextra argument val_47 +1234abcextra argument val_72 +1234abcextra argument val_4 +1234abcextra argument val_35 +1234abcextra argument val_54 +1234abcextra argument val_51 +1234abcextra argument val_65 +1234abcextra argument val_83 +1234abcextra argument val_12 +1234abcextra argument val_67 +1234abcextra argument val_84 +1234abcextra argument val_58 +1234abcextra argument val_8 +1234abcextra argument val_24 +1234abcextra argument val_42 +1234abcextra argument val_0 +1234abcextra argument val_96 +1234abcextra argument val_26 +1234abcextra argument val_51 +1234abcextra argument val_43 +1234abcextra argument val_95 +1234abcextra argument val_98 +1234abcextra argument val_85 +1234abcextra argument val_77 +1234abcextra argument val_0 +1234abcextra argument val_87 +1234abcextra argument val_15 +1234abcextra argument val_72 +1234abcextra argument val_90 +1234abcextra argument val_19 +1234abcextra argument val_10 +1234abcextra argument val_5 +1234abcextra argument val_58 +1234abcextra argument val_35 +1234abcextra argument val_95 +1234abcextra argument val_11 +1234abcextra argument val_34 +1234abcextra argument val_42 +1234abcextra argument val_78 +1234abcextra argument val_76 +1234abcextra argument val_41 +1234abcextra argument val_30 +1234abcextra argument val_64 +1234abcextra argument val_76 +1234abcextra argument val_74 +1234abcextra argument val_69 +1234abcextra argument val_33 +1234abcextra argument val_70 +1234abcextra argument val_5 +1234abcextra argument val_2 +1234abcextra argument val_35 +1234abcextra argument val_80 +1234abcextra argument val_44 +1234abcextra argument val_53 +1234abcextra argument val_90 +1234abcextra argument val_12 +1234abcextra argument val_5 +1234abcextra argument val_70 +1234abcextra argument val_24 +1234abcextra argument val_70 +1234abcextra argument val_83 +1234abcextra argument val_26 +1234abcextra argument val_67 +1234abcextra argument val_18 +1234abcextra argument val_9 +1234abcextra argument val_18 +1234abcextra argument val_97 +1234abcextra argument val_84 +1234abcextra argument val_28 +1234abcextra argument val_37 +1234abcextra argument val_90 +1234abcextra argument val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-0-4c8bd7794a527e544c838408313eeaa8 b/sql/hive/src/test/resources/golden/udf_concat_ws-0-4c8bd7794a527e544c838408313eeaa8 new file mode 100644 index 0000000000000..c901f70500cba --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat_ws-0-4c8bd7794a527e544c838408313eeaa8 @@ -0,0 +1 @@ +concat_ws(separator, [string | array(string)]+) - returns the concatenation of the strings separated by the separator. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-1-b8b80f7e9bf4348367444c73020b3cab b/sql/hive/src/test/resources/golden/udf_concat_ws-1-b8b80f7e9bf4348367444c73020b3cab new file mode 100644 index 0000000000000..3e751463e055d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat_ws-1-b8b80f7e9bf4348367444c73020b3cab @@ -0,0 +1,4 @@ +concat_ws(separator, [string | array(string)]+) - returns the concatenation of the strings separated by the separator. +Example: + > SELECT concat_ws('.', 'www', array('facebook', 'com')) FROM src LIMIT 1; + 'www.facebook.com' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-2-ce7c8205cdc107e1fb865d7d48b84a3c b/sql/hive/src/test/resources/golden/udf_concat_ws-2-ce7c8205cdc107e1fb865d7d48b84a3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-3-b13a1f7f63d2a54efa331c82bd635d63 b/sql/hive/src/test/resources/golden/udf_concat_ws-3-b13a1f7f63d2a54efa331c82bd635d63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-4-a507af4996b13433b0ae100fcb32358f b/sql/hive/src/test/resources/golden/udf_concat_ws-4-a507af4996b13433b0ae100fcb32358f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-5-ca4f051369183cae36fc9a7bec6a9341 b/sql/hive/src/test/resources/golden/udf_concat_ws-5-ca4f051369183cae36fc9a7bec6a9341 new file mode 100644 index 0000000000000..7896fd787f3a2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat_ws-5-ca4f051369183cae36fc9a7bec6a9341 @@ -0,0 +1 @@ +xyzabc8675309 abc,xyz,8675309 NULL abc**8675309 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-6-98276439c0605401ff89c6a5ae54be09 b/sql/hive/src/test/resources/golden/udf_concat_ws-6-98276439c0605401ff89c6a5ae54be09 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-7-8f08128276e7e50eeb5a6932c763126c b/sql/hive/src/test/resources/golden/udf_concat_ws-7-8f08128276e7e50eeb5a6932c763126c new file mode 100644 index 0000000000000..a0ec688a3b084 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat_ws-7-8f08128276e7e50eeb5a6932c763126c @@ -0,0 +1 @@ +www.face.book.com.1234 www-face-book-com-1234 wwwFfaceFbookFcomF1234 www_face_book_com_1234 www**face**book**com**1234 www[]face[]book[]com[]1234 wwwAAAfaceAAAbookAAAcomAAA1234 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_concat_ws-8-7c9629cc90e72046b61c0b83ebc7bab4 b/sql/hive/src/test/resources/golden/udf_concat_ws-8-7c9629cc90e72046b61c0b83ebc7bab4 new file mode 100644 index 0000000000000..0c9f2d12ba117 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_concat_ws-8-7c9629cc90e72046b61c0b83ebc7bab4 @@ -0,0 +1 @@ +NULL NULL NULL NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-0-d552befca345f3396464529cfde9f75a b/sql/hive/src/test/resources/golden/udf_conv-0-d552befca345f3396464529cfde9f75a new file mode 100644 index 0000000000000..b8fbe88a19971 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-0-d552befca345f3396464529cfde9f75a @@ -0,0 +1 @@ +conv(num, from_base, to_base) - convert num from from_base to to_base \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-1-5e5904af10b5d23f20ae28dc4b9a49ab b/sql/hive/src/test/resources/golden/udf_conv-1-5e5904af10b5d23f20ae28dc4b9a49ab new file mode 100644 index 0000000000000..4f4b0c594c459 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-1-5e5904af10b5d23f20ae28dc4b9a49ab @@ -0,0 +1,7 @@ +conv(num, from_base, to_base) - convert num from from_base to to_base +If to_base is negative, treat num as a signed integer,otherwise, treat it as an unsigned integer. +Example: + > SELECT conv('100', 2, 10) FROM src LIMIT 1; + '4' + > SELECT conv(-10, 16, -10) FROM src LIMIT 1; + '16' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-10-5d38e8d3f2d4c89d57d916c3a5891a52 b/sql/hive/src/test/resources/golden/udf_conv-10-5d38e8d3f2d4c89d57d916c3a5891a52 new file mode 100644 index 0000000000000..9512cc4241554 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-10-5d38e8d3f2d4c89d57d916c3a5891a52 @@ -0,0 +1,3 @@ +EE 568 +56 134 +137 785 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-2-6d61a2118b54843716aef87fe539b595 b/sql/hive/src/test/resources/golden/udf_conv-2-6d61a2118b54843716aef87fe539b595 new file mode 100644 index 0000000000000..91e56a11fa628 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-2-6d61a2118b54843716aef87fe539b595 @@ -0,0 +1 @@ +3HL 22 33 116ED2B2FB4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-3-97161f7a60851d445b23c4ebe4095a1d b/sql/hive/src/test/resources/golden/udf_conv-3-97161f7a60851d445b23c4ebe4095a1d new file mode 100644 index 0000000000000..08f70d742b8e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-3-97161f7a60851d445b23c4ebe4095a1d @@ -0,0 +1 @@ +-641 B FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-4-568e843076f358c404a8634b18541c55 b/sql/hive/src/test/resources/golden/udf_conv-4-568e843076f358c404a8634b18541c55 new file mode 100644 index 0000000000000..a2a44daa718cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-4-568e843076f358c404a8634b18541c55 @@ -0,0 +1 @@ +FFFFFFFFFFFFFFFF -1 FFFFFFFFFFFFFFFF -1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-5-3f23d98799b825a2e9594066f973d183 b/sql/hive/src/test/resources/golden/udf_conv-5-3f23d98799b825a2e9594066f973d183 new file mode 100644 index 0000000000000..6948fe3783119 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-5-3f23d98799b825a2e9594066f973d183 @@ -0,0 +1 @@ +5 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-6-4981b5b92d87fd1000fa0ac26fa6163a b/sql/hive/src/test/resources/golden/udf_conv-6-4981b5b92d87fd1000fa0ac26fa6163a new file mode 100644 index 0000000000000..e1021e50fdcbb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-6-4981b5b92d87fd1000fa0ac26fa6163a @@ -0,0 +1 @@ +3HL 22 33 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-7-77bd25ad13e3697c80464e4a2682360e b/sql/hive/src/test/resources/golden/udf_conv-7-77bd25ad13e3697c80464e4a2682360e new file mode 100644 index 0000000000000..08f70d742b8e4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-7-77bd25ad13e3697c80464e4a2682360e @@ -0,0 +1 @@ +-641 B FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-8-2fae52d392251be476e0c8f6071a4aeb b/sql/hive/src/test/resources/golden/udf_conv-8-2fae52d392251be476e0c8f6071a4aeb new file mode 100644 index 0000000000000..a2a44daa718cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-8-2fae52d392251be476e0c8f6071a4aeb @@ -0,0 +1 @@ +FFFFFFFFFFFFFFFF -1 FFFFFFFFFFFFFFFF -1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_conv-9-2f0098c00c10044522cd23a4a2f54957 b/sql/hive/src/test/resources/golden/udf_conv-9-2f0098c00c10044522cd23a4a2f54957 new file mode 100644 index 0000000000000..6948fe3783119 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_conv-9-2f0098c00c10044522cd23a4a2f54957 @@ -0,0 +1 @@ +5 NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_cos-0-44f411146a7190b89f2bc8b4aa61cae3 b/sql/hive/src/test/resources/golden/udf_cos-0-44f411146a7190b89f2bc8b4aa61cae3 new file mode 100644 index 0000000000000..99a7d42bb5b57 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_cos-0-44f411146a7190b89f2bc8b4aa61cae3 @@ -0,0 +1 @@ +cos(x) - returns the cosine of x (x is in radians) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_cos-1-176030bdf43ff83ed8b3112d0c79f2f5 b/sql/hive/src/test/resources/golden/udf_cos-1-176030bdf43ff83ed8b3112d0c79f2f5 new file mode 100644 index 0000000000000..196294de1f19f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_cos-1-176030bdf43ff83ed8b3112d0c79f2f5 @@ -0,0 +1,4 @@ +cos(x) - returns the cosine of x (x is in radians) +Example: + > SELECT cos(0) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_cos-2-542c7c9742bdb10b614298a0e9a6fa01 b/sql/hive/src/test/resources/golden/udf_cos-2-542c7c9742bdb10b614298a0e9a6fa01 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_cos-2-542c7c9742bdb10b614298a0e9a6fa01 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_cos-3-7f30fb51fe862ef46b1ccdb3f5f9a429 b/sql/hive/src/test/resources/golden/udf_cos-3-7f30fb51fe862ef46b1ccdb3f5f9a429 new file mode 100644 index 0000000000000..c0690acff887b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_cos-3-7f30fb51fe862ef46b1ccdb3f5f9a429 @@ -0,0 +1 @@ +0.5570225467662173 7.963267107332633E-4 0.8775825618903728 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-0-534a9b25b87d09e418645b1216949560 b/sql/hive/src/test/resources/golden/udf_count-0-534a9b25b87d09e418645b1216949560 new file mode 100644 index 0000000000000..e01715295adc8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-0-534a9b25b87d09e418645b1216949560 @@ -0,0 +1,3 @@ +count(*) - Returns the total number of retrieved rows, including rows containing NULL values. +count(expr) - Returns the number of rows for which the supplied expression is non-NULL. +count(DISTINCT expr[, expr...]) - Returns the number of rows for which the supplied expression(s) are unique and non-NULL. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-1-d566feb21bc894b97e6416b65fe5c02f b/sql/hive/src/test/resources/golden/udf_count-1-d566feb21bc894b97e6416b65fe5c02f new file mode 100644 index 0000000000000..e01715295adc8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-1-d566feb21bc894b97e6416b65fe5c02f @@ -0,0 +1,3 @@ +count(*) - Returns the total number of retrieved rows, including rows containing NULL values. +count(expr) - Returns the number of rows for which the supplied expression is non-NULL. +count(DISTINCT expr[, expr...]) - Returns the number of rows for which the supplied expression(s) are unique and non-NULL. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-10-455b30e7df33c5eebcaacabe0a578483 b/sql/hive/src/test/resources/golden/udf_count-10-455b30e7df33c5eebcaacabe0a578483 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_count-11-3b201ca546a8b0b5e5afaa1ff6aaee3e b/sql/hive/src/test/resources/golden/udf_count-11-3b201ca546a8b0b5e5afaa1ff6aaee3e new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-11-3b201ca546a8b0b5e5afaa1ff6aaee3e @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-12-9f41ac3eb9a6e77b3d612afc2f2b8e0e b/sql/hive/src/test/resources/golden/udf_count-12-9f41ac3eb9a6e77b3d612afc2f2b8e0e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-12-9f41ac3eb9a6e77b3d612afc2f2b8e0e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-13-9286bc5f08bf4db183719b1b49dc5b7 b/sql/hive/src/test/resources/golden/udf_count-13-9286bc5f08bf4db183719b1b49dc5b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-13-9286bc5f08bf4db183719b1b49dc5b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-2-3344645abe535426307b9327b381fc85 b/sql/hive/src/test/resources/golden/udf_count-2-3344645abe535426307b9327b381fc85 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_count-3-e43165f41597d2a1c9e8cf780b99a4a8 b/sql/hive/src/test/resources/golden/udf_count-3-e43165f41597d2a1c9e8cf780b99a4a8 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-3-e43165f41597d2a1c9e8cf780b99a4a8 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-4-93223bab63eada6ece8bc176e89c87a8 b/sql/hive/src/test/resources/golden/udf_count-4-93223bab63eada6ece8bc176e89c87a8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_count-5-bdee61c35a27bfab974e2ba199d5dfa4 b/sql/hive/src/test/resources/golden/udf_count-5-bdee61c35a27bfab974e2ba199d5dfa4 new file mode 100644 index 0000000000000..e0da8ae09ae60 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-5-bdee61c35a27bfab974e2ba199d5dfa4 @@ -0,0 +1 @@ +309 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-6-f8bcbbf6a5b8eb9b6d79c77264faa241 b/sql/hive/src/test/resources/golden/udf_count-6-f8bcbbf6a5b8eb9b6d79c77264faa241 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_count-7-b975ad0d5f293508ce4832a7b19399b6 b/sql/hive/src/test/resources/golden/udf_count-7-b975ad0d5f293508ce4832a7b19399b6 new file mode 100644 index 0000000000000..e0da8ae09ae60 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-7-b975ad0d5f293508ce4832a7b19399b6 @@ -0,0 +1 @@ +309 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_count-8-911e83c85155e1f811ba2c75aabbc6b7 b/sql/hive/src/test/resources/golden/udf_count-8-911e83c85155e1f811ba2c75aabbc6b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_count-9-75b3d8a0dac332ea00af5ef8971ca643 b/sql/hive/src/test/resources/golden/udf_count-9-75b3d8a0dac332ea00af5ef8971ca643 new file mode 100644 index 0000000000000..eb1f49486af7c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_count-9-75b3d8a0dac332ea00af5ef8971ca643 @@ -0,0 +1 @@ +500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_date_add-0-74d34471bfa0880230d8e3351eb0ab45 b/sql/hive/src/test/resources/golden/udf_date_add-0-74d34471bfa0880230d8e3351eb0ab45 new file mode 100644 index 0000000000000..83e0fc4e63a25 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_date_add-0-74d34471bfa0880230d8e3351eb0ab45 @@ -0,0 +1 @@ +date_add(start_date, num_days) - Returns the date that is num_days after start_date. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_date_add-1-efb60fcbd6d78ad35257fb1ec39ace2 b/sql/hive/src/test/resources/golden/udf_date_add-1-efb60fcbd6d78ad35257fb1ec39ace2 new file mode 100644 index 0000000000000..83b9851499f71 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_date_add-1-efb60fcbd6d78ad35257fb1ec39ace2 @@ -0,0 +1,5 @@ +date_add(start_date, num_days) - Returns the date that is num_days after start_date. +start_date is a string in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. num_days is a number. The time part of start_date is ignored. +Example: + > SELECT date_add('2009-30-07', 1) FROM src LIMIT 1; + '2009-31-07' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_date_sub-0-f8fbf85026da1b0778fd325d9b5dae33 b/sql/hive/src/test/resources/golden/udf_date_sub-0-f8fbf85026da1b0778fd325d9b5dae33 new file mode 100644 index 0000000000000..7dec81f2b6d4e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_date_sub-0-f8fbf85026da1b0778fd325d9b5dae33 @@ -0,0 +1 @@ +date_sub(start_date, num_days) - Returns the date that is num_days before start_date. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_date_sub-1-7efeb74367835ade71e5e42b22f8ced4 b/sql/hive/src/test/resources/golden/udf_date_sub-1-7efeb74367835ade71e5e42b22f8ced4 new file mode 100644 index 0000000000000..105b63424062b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_date_sub-1-7efeb74367835ade71e5e42b22f8ced4 @@ -0,0 +1,5 @@ +date_sub(start_date, num_days) - Returns the date that is num_days before start_date. +start_date is a string in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. num_days is a number. The time part of start_date is ignored. +Example: + > SELECT date_sub('2009-30-07', 1) FROM src LIMIT 1; + '2009-29-07' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_datediff-0-3bd040a96a4568e7ea4922faa408ada5 b/sql/hive/src/test/resources/golden/udf_datediff-0-3bd040a96a4568e7ea4922faa408ada5 new file mode 100644 index 0000000000000..b59d456397d53 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_datediff-0-3bd040a96a4568e7ea4922faa408ada5 @@ -0,0 +1 @@ +datediff(date1, date2) - Returns the number of days between date1 and date2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_datediff-1-34ae7a68b13c2bc9a89f61acf2edd4c5 b/sql/hive/src/test/resources/golden/udf_datediff-1-34ae7a68b13c2bc9a89f61acf2edd4c5 new file mode 100644 index 0000000000000..c240df94594d4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_datediff-1-34ae7a68b13c2bc9a89f61acf2edd4c5 @@ -0,0 +1,5 @@ +datediff(date1, date2) - Returns the number of days between date1 and date2 +date1 and date2 are strings in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. The time parts are ignored.If date1 is earlier than date2, the result is negative. +Example: + > SELECT datediff('2009-30-07', '2009-31-07') FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_day-0-c4c503756384ff1220222d84fd25e756 b/sql/hive/src/test/resources/golden/udf_day-0-c4c503756384ff1220222d84fd25e756 new file mode 100644 index 0000000000000..11e32a4509b3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_day-0-c4c503756384ff1220222d84fd25e756 @@ -0,0 +1 @@ +day(date) - Returns the date of the month of date \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_day-1-87168babe1110fe4c38269843414ca4 b/sql/hive/src/test/resources/golden/udf_day-1-87168babe1110fe4c38269843414ca4 new file mode 100644 index 0000000000000..9da0858ba92a5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_day-1-87168babe1110fe4c38269843414ca4 @@ -0,0 +1,6 @@ +day(date) - Returns the date of the month of date +Synonyms: dayofmonth +date is a string in the format of 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. +Example: + > SELECT day('2009-30-07', 1) FROM src LIMIT 1; + 30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_dayofmonth-0-7b2caf942528656555cf19c261a18502 b/sql/hive/src/test/resources/golden/udf_dayofmonth-0-7b2caf942528656555cf19c261a18502 new file mode 100644 index 0000000000000..33e90a2af295f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_dayofmonth-0-7b2caf942528656555cf19c261a18502 @@ -0,0 +1 @@ +dayofmonth(date) - Returns the date of the month of date \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_dayofmonth-1-ca24d07102ad264d79ff30c64a73a7e8 b/sql/hive/src/test/resources/golden/udf_dayofmonth-1-ca24d07102ad264d79ff30c64a73a7e8 new file mode 100644 index 0000000000000..ee9911af3248c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_dayofmonth-1-ca24d07102ad264d79ff30c64a73a7e8 @@ -0,0 +1,6 @@ +dayofmonth(date) - Returns the date of the month of date +Synonyms: day +date is a string in the format of 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. +Example: + > SELECT dayofmonth('2009-30-07', 1) FROM src LIMIT 1; + 30 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_degrees-0-85f4957cd7cd6c517f6941af1289d8ae b/sql/hive/src/test/resources/golden/udf_degrees-0-85f4957cd7cd6c517f6941af1289d8ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_degrees-1-aabc6065a03b7da809376cc127af47d7 b/sql/hive/src/test/resources/golden/udf_degrees-1-aabc6065a03b7da809376cc127af47d7 new file mode 100644 index 0000000000000..36f165be67119 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_degrees-1-aabc6065a03b7da809376cc127af47d7 @@ -0,0 +1 @@ +180.0 diff --git a/sql/hive/src/test/resources/golden/udf_degrees-2-2fd3a55901fe765f8f154531a7f5fd6b b/sql/hive/src/test/resources/golden/udf_degrees-2-2fd3a55901fe765f8f154531a7f5fd6b new file mode 100644 index 0000000000000..60a5fff4a87a8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_degrees-2-2fd3a55901fe765f8f154531a7f5fd6b @@ -0,0 +1 @@ +degrees(x) - Converts radians to degrees diff --git a/sql/hive/src/test/resources/golden/udf_degrees-3-42f653c3c3cc3c94bb9ab9c5a4d1ca96 b/sql/hive/src/test/resources/golden/udf_degrees-3-42f653c3c3cc3c94bb9ab9c5a4d1ca96 new file mode 100644 index 0000000000000..4a33ce356e237 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_degrees-3-42f653c3c3cc3c94bb9ab9c5a4d1ca96 @@ -0,0 +1,5 @@ +degrees(x) - Converts radians to degrees +Example: + > SELECT degrees(30) FROM src LIMIT 1; + -1 + diff --git a/sql/hive/src/test/resources/golden/udf_degrees-4-85f4957cd7cd6c517f6941af1289d8ae b/sql/hive/src/test/resources/golden/udf_degrees-4-85f4957cd7cd6c517f6941af1289d8ae new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_degrees-5-aabc6065a03b7da809376cc127af47d7 b/sql/hive/src/test/resources/golden/udf_degrees-5-aabc6065a03b7da809376cc127af47d7 new file mode 100644 index 0000000000000..36f165be67119 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_degrees-5-aabc6065a03b7da809376cc127af47d7 @@ -0,0 +1 @@ +180.0 diff --git a/sql/hive/src/test/resources/golden/udf_degrees-6-2fd3a55901fe765f8f154531a7f5fd6b b/sql/hive/src/test/resources/golden/udf_degrees-6-2fd3a55901fe765f8f154531a7f5fd6b new file mode 100644 index 0000000000000..60a5fff4a87a8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_degrees-6-2fd3a55901fe765f8f154531a7f5fd6b @@ -0,0 +1 @@ +degrees(x) - Converts radians to degrees diff --git a/sql/hive/src/test/resources/golden/udf_degrees-7-42f653c3c3cc3c94bb9ab9c5a4d1ca96 b/sql/hive/src/test/resources/golden/udf_degrees-7-42f653c3c3cc3c94bb9ab9c5a4d1ca96 new file mode 100644 index 0000000000000..4a33ce356e237 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_degrees-7-42f653c3c3cc3c94bb9ab9c5a4d1ca96 @@ -0,0 +1,5 @@ +degrees(x) - Converts radians to degrees +Example: + > SELECT degrees(30) FROM src LIMIT 1; + -1 + diff --git a/sql/hive/src/test/resources/golden/udf_div-0-31d31c7d5c544327dabfd874c88314db b/sql/hive/src/test/resources/golden/udf_div-0-31d31c7d5c544327dabfd874c88314db new file mode 100644 index 0000000000000..d98718752a36f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_div-0-31d31c7d5c544327dabfd874c88314db @@ -0,0 +1 @@ +a div b - Divide a by b rounded to the long integer \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_div-1-f23a07b1c6b1a98b303863188c10a8d8 b/sql/hive/src/test/resources/golden/udf_div-1-f23a07b1c6b1a98b303863188c10a8d8 new file mode 100644 index 0000000000000..59265a74f9b3f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_div-1-f23a07b1c6b1a98b303863188c10a8d8 @@ -0,0 +1,4 @@ +a div b - Divide a by b rounded to the long integer +Example: + > SELECT 3 div 2 FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_div-2-c71acf88a51fc6d2b23bbb91db2d7b b/sql/hive/src/test/resources/golden/udf_div-2-c71acf88a51fc6d2b23bbb91db2d7b new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_div-2-c71acf88a51fc6d2b23bbb91db2d7b @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_divide-0-1af8b249439ee5b7d4978c31669bc208 b/sql/hive/src/test/resources/golden/udf_divide-0-1af8b249439ee5b7d4978c31669bc208 new file mode 100644 index 0000000000000..8b623e47785f6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_divide-0-1af8b249439ee5b7d4978c31669bc208 @@ -0,0 +1 @@ +a / b - Divide a by b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_divide-1-fa932664bae88683a222b71ac45fb840 b/sql/hive/src/test/resources/golden/udf_divide-1-fa932664bae88683a222b71ac45fb840 new file mode 100644 index 0000000000000..2acf2b6a64648 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_divide-1-fa932664bae88683a222b71ac45fb840 @@ -0,0 +1,4 @@ +a / b - Divide a by b +Example: + > SELECT 3 / 2 FROM src LIMIT 1; + 1.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_divide-2-ce54773b1babe6dde982e4e91ebaeb50 b/sql/hive/src/test/resources/golden/udf_divide-2-ce54773b1babe6dde982e4e91ebaeb50 new file mode 100644 index 0000000000000..400122e60f599 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_divide-2-ce54773b1babe6dde982e4e91ebaeb50 @@ -0,0 +1 @@ +1.5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_double-0-aa32d73a99587cae2f1efd9a2094d617 b/sql/hive/src/test/resources/golden/udf_double-0-aa32d73a99587cae2f1efd9a2094d617 new file mode 100644 index 0000000000000..54de9e9f8edec --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_double-0-aa32d73a99587cae2f1efd9a2094d617 @@ -0,0 +1 @@ +There is no documentation for function 'double' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_double-1-79380157cbd6624d760335f8291e6fb4 b/sql/hive/src/test/resources/golden/udf_double-1-79380157cbd6624d760335f8291e6fb4 new file mode 100644 index 0000000000000..54de9e9f8edec --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_double-1-79380157cbd6624d760335f8291e6fb4 @@ -0,0 +1 @@ +There is no documentation for function 'double' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_elt-0-b46b060da76d1772db998c26a62a608f b/sql/hive/src/test/resources/golden/udf_elt-0-b46b060da76d1772db998c26a62a608f new file mode 100644 index 0000000000000..7a22029a2156f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_elt-0-b46b060da76d1772db998c26a62a608f @@ -0,0 +1 @@ +elt(n, str1, str2, ...) - returns the n-th string diff --git a/sql/hive/src/test/resources/golden/udf_elt-1-e9f1bf17ad2a6f7bf3e40798ceebdbf4 b/sql/hive/src/test/resources/golden/udf_elt-1-e9f1bf17ad2a6f7bf3e40798ceebdbf4 new file mode 100644 index 0000000000000..61f204dacf9dc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_elt-1-e9f1bf17ad2a6f7bf3e40798ceebdbf4 @@ -0,0 +1,4 @@ +elt(n, str1, str2, ...) - returns the n-th string +Example: + > SELECT elt(1, 'face', 'book') FROM src LIMIT 1; + 'face' diff --git a/sql/hive/src/test/resources/golden/udf_elt-2-5b58f1cfb0392452bf5c28a37d51508a b/sql/hive/src/test/resources/golden/udf_elt-2-5b58f1cfb0392452bf5c28a37d51508a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_elt-3-f3be980cf4fa166f299c6ec79e981814 b/sql/hive/src/test/resources/golden/udf_elt-3-f3be980cf4fa166f299c6ec79e981814 new file mode 100644 index 0000000000000..d009faddeafa8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_elt-3-f3be980cf4fa166f299c6ec79e981814 @@ -0,0 +1 @@ +defg cc abc 2 12345 123456789012 1.25 16.0 NULL NULL NULL diff --git a/sql/hive/src/test/resources/golden/udf_exp-0-814f16e1acabe30740d7b815e4b5cc3a b/sql/hive/src/test/resources/golden/udf_exp-0-814f16e1acabe30740d7b815e4b5cc3a new file mode 100644 index 0000000000000..9b3dbf316d1fb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_exp-0-814f16e1acabe30740d7b815e4b5cc3a @@ -0,0 +1 @@ +exp(x) - Returns e to the power of x \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_exp-1-d10d879c74951e9a1f1717cb1a2488c6 b/sql/hive/src/test/resources/golden/udf_exp-1-d10d879c74951e9a1f1717cb1a2488c6 new file mode 100644 index 0000000000000..a42c95bb8d213 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_exp-1-d10d879c74951e9a1f1717cb1a2488c6 @@ -0,0 +1,4 @@ +exp(x) - Returns e to the power of x +Example: + > SELECT exp(0) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_field-0-277b4a4dcb38cabb6df50147c77e0a33 b/sql/hive/src/test/resources/golden/udf_field-0-277b4a4dcb38cabb6df50147c77e0a33 new file mode 100644 index 0000000000000..a30bc26f5ba58 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_field-0-277b4a4dcb38cabb6df50147c77e0a33 @@ -0,0 +1 @@ +field(str, str1, str2, ...) - returns the index of str in the str1,str2,... list or 0 if not found \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_field-1-379d8580693493f620a8f4084709324f b/sql/hive/src/test/resources/golden/udf_field-1-379d8580693493f620a8f4084709324f new file mode 100644 index 0000000000000..bb55c0a1db1f5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_field-1-379d8580693493f620a8f4084709324f @@ -0,0 +1,2 @@ +field(str, str1, str2, ...) - returns the index of str in the str1,str2,... list or 0 if not found +All primitive types are supported, arguments are compared using str.equals(x). If str is NULL, the return value is 0. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_field-10-7982ea72163dbc4cd45f53454edf66c8 b/sql/hive/src/test/resources/golden/udf_field-10-7982ea72163dbc4cd45f53454edf66c8 new file mode 100644 index 0000000000000..275f46482425d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_field-10-7982ea72163dbc4cd45f53454edf66c8 @@ -0,0 +1,2 @@ +86 val_86 0 0 2 1 1 0 0 +66 val_66 1 1 0 0 0 0 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_field-2-d2c6583a79d77aabe388a52ec164c38b b/sql/hive/src/test/resources/golden/udf_field-2-d2c6583a79d77aabe388a52ec164c38b new file mode 100644 index 0000000000000..c42823854fb0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_field-2-d2c6583a79d77aabe388a52ec164c38b @@ -0,0 +1 @@ +0 0 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_field-3-fea09e934696af40bb604b40225bbc98 b/sql/hive/src/test/resources/golden/udf_field-3-fea09e934696af40bb604b40225bbc98 new file mode 100644 index 0000000000000..5869234249808 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_field-3-fea09e934696af40bb604b40225bbc98 @@ -0,0 +1 @@ +1 2 3 4 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_field-4-b0815d34893d6cba8c07d0a0721c1d29 b/sql/hive/src/test/resources/golden/udf_field-4-b0815d34893d6cba8c07d0a0721c1d29 new file mode 100644 index 0000000000000..5869234249808 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_field-4-b0815d34893d6cba8c07d0a0721c1d29 @@ -0,0 +1 @@ +1 2 3 4 4 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_field-5-2d7c5cbe891c4a9dda34f9842f8e0828 b/sql/hive/src/test/resources/golden/udf_field-5-2d7c5cbe891c4a9dda34f9842f8e0828 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_field-6-de02aaf3bbb137ba032810bb9ad7a3a3 b/sql/hive/src/test/resources/golden/udf_field-6-de02aaf3bbb137ba032810bb9ad7a3a3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_field-7-6aa3518e9f55299754521e959e9376ef b/sql/hive/src/test/resources/golden/udf_field-7-6aa3518e9f55299754521e959e9376ef new file mode 100644 index 0000000000000..a76563207da24 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_field-7-6aa3518e9f55299754521e959e9376ef @@ -0,0 +1,2 @@ +86 val_86 0 0 2 0 0 0 0 0 2 0 +66 val_66 1 1 0 0 0 1 0 0 2 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_field-8-66dc6c81db0ac9b2075783b0d8976083 b/sql/hive/src/test/resources/golden/udf_field-8-66dc6c81db0ac9b2075783b0d8976083 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_field-9-f053f2d16812aa60b6dd1cab61e90a95 b/sql/hive/src/test/resources/golden/udf_field-9-f053f2d16812aa60b6dd1cab61e90a95 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-0-18d3e88b18c18a00598146a3307276f2 b/sql/hive/src/test/resources/golden/udf_find_in_set-0-18d3e88b18c18a00598146a3307276f2 new file mode 100644 index 0000000000000..f14679978b79e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-0-18d3e88b18c18a00598146a3307276f2 @@ -0,0 +1 @@ +find_in_set(str,str_array) - Returns the first occurrence of str in str_array where str_array is a comma-delimited string. Returns null if either argument is null. Returns 0 if the first argument has any commas. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-1-5fb7a7a1725749dc3853eb80fba19246 b/sql/hive/src/test/resources/golden/udf_find_in_set-1-5fb7a7a1725749dc3853eb80fba19246 new file mode 100644 index 0000000000000..1bebc68416bff --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-1-5fb7a7a1725749dc3853eb80fba19246 @@ -0,0 +1,7 @@ +find_in_set(str,str_array) - Returns the first occurrence of str in str_array where str_array is a comma-delimited string. Returns null if either argument is null. Returns 0 if the first argument has any commas. +Example: + > SELECT find_in_set('ab','abc,b,ab,c,def') FROM src LIMIT 1; + 3 + > SELECT * FROM src1 WHERE NOT find_in_set(key,'311,128,345,956')=0; + 311 val_311 + 128 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-10-16355c6b7e169b3c0ef506c149c6853c b/sql/hive/src/test/resources/golden/udf_find_in_set-10-16355c6b7e169b3c0ef506c149c6853c new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-10-16355c6b7e169b3c0ef506c149c6853c @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-11-5a8515684c458d3fffea539a3d170e3a b/sql/hive/src/test/resources/golden/udf_find_in_set-11-5a8515684c458d3fffea539a3d170e3a new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-11-5a8515684c458d3fffea539a3d170e3a @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-12-3fb21e2befb41ba72a1bbffa645c1e3 b/sql/hive/src/test/resources/golden/udf_find_in_set-12-3fb21e2befb41ba72a1bbffa645c1e3 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-12-3fb21e2befb41ba72a1bbffa645c1e3 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-13-2c986a80620c9238e1f663fc591760a b/sql/hive/src/test/resources/golden/udf_find_in_set-13-2c986a80620c9238e1f663fc591760a new file mode 100644 index 0000000000000..e440e5c842586 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-13-2c986a80620c9238e1f663fc591760a @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-14-189def133b1871ce8345a8123811a6b5 b/sql/hive/src/test/resources/golden/udf_find_in_set-14-189def133b1871ce8345a8123811a6b5 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-14-189def133b1871ce8345a8123811a6b5 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-15-671bff8f50feea55015a8412fc6e5ceb b/sql/hive/src/test/resources/golden/udf_find_in_set-15-671bff8f50feea55015a8412fc6e5ceb new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-15-671bff8f50feea55015a8412fc6e5ceb @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-16-d5d22082588c5fc30ef502237c5797f4 b/sql/hive/src/test/resources/golden/udf_find_in_set-16-d5d22082588c5fc30ef502237c5797f4 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-16-d5d22082588c5fc30ef502237c5797f4 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-17-5b556a29e1685605bcc47bce60cf66c8 b/sql/hive/src/test/resources/golden/udf_find_in_set-17-5b556a29e1685605bcc47bce60cf66c8 new file mode 100644 index 0000000000000..99f516951ae7d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-17-5b556a29e1685605bcc47bce60cf66c8 @@ -0,0 +1,2 @@ +311 val_311 +128 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-2-b3823bdc04a7f98951b55c3e30d2a772 b/sql/hive/src/test/resources/golden/udf_find_in_set-2-b3823bdc04a7f98951b55c3e30d2a772 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-3-132b7bc7812db7683eb3bff607275d0e b/sql/hive/src/test/resources/golden/udf_find_in_set-3-132b7bc7812db7683eb3bff607275d0e new file mode 100644 index 0000000000000..5817cbcff62ac --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-3-132b7bc7812db7683eb3bff607275d0e @@ -0,0 +1,25 @@ +1 +NULL +1 +NULL +NULL +NULL +1 +1 +1 +NULL +NULL +NULL +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +NULL +NULL +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-4-a35471c87ba597a6d3c7c880704cac0b b/sql/hive/src/test/resources/golden/udf_find_in_set-4-a35471c87ba597a6d3c7c880704cac0b new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-4-a35471c87ba597a6d3c7c880704cac0b @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-5-ddaa3551dffb1169b2fbb671f373b82f b/sql/hive/src/test/resources/golden/udf_find_in_set-5-ddaa3551dffb1169b2fbb671f373b82f new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-5-ddaa3551dffb1169b2fbb671f373b82f @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-6-591e070365f19c65e453b98b88f5f823 b/sql/hive/src/test/resources/golden/udf_find_in_set-6-591e070365f19c65e453b98b88f5f823 new file mode 100644 index 0000000000000..e440e5c842586 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-6-591e070365f19c65e453b98b88f5f823 @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-7-72d05b5cf99388d539adec38c40978c3 b/sql/hive/src/test/resources/golden/udf_find_in_set-7-72d05b5cf99388d539adec38c40978c3 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-7-72d05b5cf99388d539adec38c40978c3 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-8-780771cad9bec96a216aea8ab293c941 b/sql/hive/src/test/resources/golden/udf_find_in_set-8-780771cad9bec96a216aea8ab293c941 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-8-780771cad9bec96a216aea8ab293c941 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_find_in_set-9-d59f5aabe1ea0963f9328065c699d175 b/sql/hive/src/test/resources/golden/udf_find_in_set-9-d59f5aabe1ea0963f9328065c699d175 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_find_in_set-9-d59f5aabe1ea0963f9328065c699d175 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_float-0-7987032f1c9dcad07001445f3ca1f7a7 b/sql/hive/src/test/resources/golden/udf_float-0-7987032f1c9dcad07001445f3ca1f7a7 new file mode 100644 index 0000000000000..9d15b5f5956d7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_float-0-7987032f1c9dcad07001445f3ca1f7a7 @@ -0,0 +1 @@ +There is no documentation for function 'float' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_float-1-2abdfb4c67fe3aec2bc9cc128f407e6b b/sql/hive/src/test/resources/golden/udf_float-1-2abdfb4c67fe3aec2bc9cc128f407e6b new file mode 100644 index 0000000000000..9d15b5f5956d7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_float-1-2abdfb4c67fe3aec2bc9cc128f407e6b @@ -0,0 +1 @@ +There is no documentation for function 'float' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_floor-0-e35abe1d5534243e96d71bd0c28761d6 b/sql/hive/src/test/resources/golden/udf_floor-0-e35abe1d5534243e96d71bd0c28761d6 new file mode 100644 index 0000000000000..c76710bfcc1b5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_floor-0-e35abe1d5534243e96d71bd0c28761d6 @@ -0,0 +1 @@ +floor(x) - Find the largest integer not greater than x \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_floor-1-497a1ddbcf738aead319fde4f90f5248 b/sql/hive/src/test/resources/golden/udf_floor-1-497a1ddbcf738aead319fde4f90f5248 new file mode 100644 index 0000000000000..3f73eea16e183 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_floor-1-497a1ddbcf738aead319fde4f90f5248 @@ -0,0 +1,6 @@ +floor(x) - Find the largest integer not greater than x +Example: + > SELECT floor(-0.1) FROM src LIMIT 1; + -1 + > SELECT floor(5) FROM src LIMIT 1; + 5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_format_number-0-e86d559aeb84a4cc017a103182c22bfb b/sql/hive/src/test/resources/golden/udf_format_number-0-e86d559aeb84a4cc017a103182c22bfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_format_number-1-525f133cfff86d44afdeeda667c365a5 b/sql/hive/src/test/resources/golden/udf_format_number-1-525f133cfff86d44afdeeda667c365a5 new file mode 100644 index 0000000000000..c981e1726c070 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_format_number-1-525f133cfff86d44afdeeda667c365a5 @@ -0,0 +1 @@ +format_number(X, D) - Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part. This is supposed to function like MySQL's FORMAT \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_format_number-2-591f302d5c1cd24e153a598fa0b352fd b/sql/hive/src/test/resources/golden/udf_format_number-2-591f302d5c1cd24e153a598fa0b352fd new file mode 100644 index 0000000000000..b2aa527ca0ddb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_format_number-2-591f302d5c1cd24e153a598fa0b352fd @@ -0,0 +1,4 @@ +format_number(X, D) - Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part. This is supposed to function like MySQL's FORMAT +Example: + > SELECT format_number(12332.123456, 4) FROM src LIMIT 1; + '12,332.1235' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_format_number-3-c89564db1ab953e28b050b9740f2650c b/sql/hive/src/test/resources/golden/udf_format_number-3-c89564db1ab953e28b050b9740f2650c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_format_number-4-295d41a2146a27320c2be90499343260 b/sql/hive/src/test/resources/golden/udf_format_number-4-295d41a2146a27320c2be90499343260 new file mode 100644 index 0000000000000..89e118cc62bf3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_format_number-4-295d41a2146a27320c2be90499343260 @@ -0,0 +1 @@ +12,332.1235 12,332.1000 12,332 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_format_number-5-881f33f6727a30629bde6e4b178cf7d9 b/sql/hive/src/test/resources/golden/udf_format_number-5-881f33f6727a30629bde6e4b178cf7d9 new file mode 100644 index 0000000000000..33e21fa7dbfc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_format_number-5-881f33f6727a30629bde6e4b178cf7d9 @@ -0,0 +1 @@ +0.123456789000 12,345,678.12346 1,234,567.1234568 123,456 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_format_number-6-a6720a128716e179e18933992ca899b3 b/sql/hive/src/test/resources/golden/udf_format_number-6-a6720a128716e179e18933992ca899b3 new file mode 100644 index 0000000000000..07b05cd16f5a3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_format_number-6-a6720a128716e179e18933992ca899b3 @@ -0,0 +1 @@ +-123,456 -1,234,567.12 -0.123456789000000 -12,345.1235 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_format_number-7-84a460780828b0b9a2235314cfc24766 b/sql/hive/src/test/resources/golden/udf_format_number-7-84a460780828b0b9a2235314cfc24766 new file mode 100644 index 0000000000000..2b600a6a83aa8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_format_number-7-84a460780828b0b9a2235314cfc24766 @@ -0,0 +1 @@ +0.0000 0.0 0.0 0.0 -0.0000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_format_number-8-e7eedc849c74ce7d33c559067dd9ca0e b/sql/hive/src/test/resources/golden/udf_format_number-8-e7eedc849c74ce7d33c559067dd9ca0e new file mode 100644 index 0000000000000..d027b2cb0b94a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_format_number-8-e7eedc849c74ce7d33c559067dd9ca0e @@ -0,0 +1 @@ +0 1.0000 12.00 123.00000 1,234.0000000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_format_number-9-407a0a7c277bb4c5c94ce16533ce1646 b/sql/hive/src/test/resources/golden/udf_format_number-9-407a0a7c277bb4c5c94ce16533ce1646 new file mode 100644 index 0000000000000..afdec63c8dfca --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_format_number-9-407a0a7c277bb4c5c94ce16533ce1646 @@ -0,0 +1 @@ +-9,223,372,036,854,775,807.0000000000 9,223,372,036,854,775,807.00000000000000000000 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005 179,769,313,486,231,570,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_from_unixtime-0-c3adaeede5c48d232473d78acf0eed7f b/sql/hive/src/test/resources/golden/udf_from_unixtime-0-c3adaeede5c48d232473d78acf0eed7f new file mode 100644 index 0000000000000..10ce106f121ba --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_from_unixtime-0-c3adaeede5c48d232473d78acf0eed7f @@ -0,0 +1 @@ +from_unixtime(unix_time, format) - returns unix_time in the specified format \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_from_unixtime-1-d1a511d2084c7c621b5f638908c8db65 b/sql/hive/src/test/resources/golden/udf_from_unixtime-1-d1a511d2084c7c621b5f638908c8db65 new file mode 100644 index 0000000000000..20f4d2b35c49a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_from_unixtime-1-d1a511d2084c7c621b5f638908c8db65 @@ -0,0 +1,4 @@ +from_unixtime(unix_time, format) - returns unix_time in the specified format +Example: + > SELECT from_unixtime(0, 'yyyy-MM-dd HH:mm:ss') FROM src LIMIT 1; + '1970-01-01 00:00:00' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_get_json_object-0-c08e7139c00878b98d396e65d958100f b/sql/hive/src/test/resources/golden/udf_get_json_object-0-c08e7139c00878b98d396e65d958100f new file mode 100644 index 0000000000000..4e4f3f7255fd3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_get_json_object-0-c08e7139c00878b98d396e65d958100f @@ -0,0 +1 @@ +get_json_object(json_txt, path) - Extract a json object from path diff --git a/sql/hive/src/test/resources/golden/udf_get_json_object-1-706bcfd51431ec7f2b80145837f94917 b/sql/hive/src/test/resources/golden/udf_get_json_object-1-706bcfd51431ec7f2b80145837f94917 new file mode 100644 index 0000000000000..0e1dcf934a023 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_get_json_object-1-706bcfd51431ec7f2b80145837f94917 @@ -0,0 +1,16 @@ +get_json_object(json_txt, path) - Extract a json object from path +Extract json object from a json string based on json path specified, and return json string of the extracted json object. It will return null if the input json string is invalid. +A limited version of JSONPath supported: + $ : Root object + . : Child operator + [] : Subscript operator for array + * : Wildcard for [] +Syntax not supported that's worth noticing: + '' : Zero length string as key + .. : Recursive descent + &#064; : Current object/element + () : Script expression + ?() : Filter (script) expression. + [,] : Union operator + [start:end:step] : array slice operator + diff --git a/sql/hive/src/test/resources/golden/udf_get_json_object-2-2a18d9570d9b676e240cda76df818c42 b/sql/hive/src/test/resources/golden/udf_get_json_object-2-2a18d9570d9b676e240cda76df818c42 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_get_json_object-3-f60851dc36f579e83d6848d7d3c589e6 b/sql/hive/src/test/resources/golden/udf_get_json_object-3-f60851dc36f579e83d6848d7d3c589e6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_get_json_object-4-4f08101fd66fb25d7b322d47773e49f3 b/sql/hive/src/test/resources/golden/udf_get_json_object-4-4f08101fd66fb25d7b322d47773e49f3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_greaterthan-0-99d268829a124103cb3429c53fdc4de4 b/sql/hive/src/test/resources/golden/udf_greaterthan-0-99d268829a124103cb3429c53fdc4de4 new file mode 100644 index 0000000000000..54d6096d07bbe --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_greaterthan-0-99d268829a124103cb3429c53fdc4de4 @@ -0,0 +1 @@ +a > b - Returns TRUE if a is greater than b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_greaterthan-1-8aab8e39726a986e10e1e572939fd63c b/sql/hive/src/test/resources/golden/udf_greaterthan-1-8aab8e39726a986e10e1e572939fd63c new file mode 100644 index 0000000000000..54d6096d07bbe --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_greaterthan-1-8aab8e39726a986e10e1e572939fd63c @@ -0,0 +1 @@ +a > b - Returns TRUE if a is greater than b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_greaterthan-2-79ba62f35a9432647e31c6722b44fe6f b/sql/hive/src/test/resources/golden/udf_greaterthan-2-79ba62f35a9432647e31c6722b44fe6f new file mode 100644 index 0000000000000..679b0376125f0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_greaterthan-2-79ba62f35a9432647e31c6722b44fe6f @@ -0,0 +1 @@ +true false false false \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_greaterthanorequal-0-a7214027a91abf6501881e2af313347a b/sql/hive/src/test/resources/golden/udf_greaterthanorequal-0-a7214027a91abf6501881e2af313347a new file mode 100644 index 0000000000000..abf7dfdab730c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_greaterthanorequal-0-a7214027a91abf6501881e2af313347a @@ -0,0 +1 @@ +a >= b - Returns TRUE if a is not smaller than b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_greaterthanorequal-1-3669f2008e7f428f365efadbcb5ae451 b/sql/hive/src/test/resources/golden/udf_greaterthanorequal-1-3669f2008e7f428f365efadbcb5ae451 new file mode 100644 index 0000000000000..abf7dfdab730c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_greaterthanorequal-1-3669f2008e7f428f365efadbcb5ae451 @@ -0,0 +1 @@ +a >= b - Returns TRUE if a is not smaller than b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_greaterthanorequal-2-d2690cc7713e91201bb10ef291c95819 b/sql/hive/src/test/resources/golden/udf_greaterthanorequal-2-d2690cc7713e91201bb10ef291c95819 new file mode 100644 index 0000000000000..1fb1894fc21f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_greaterthanorequal-2-d2690cc7713e91201bb10ef291c95819 @@ -0,0 +1 @@ +true false true true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_hash-0-b9e3a3986320d275982797140edfccf4 b/sql/hive/src/test/resources/golden/udf_hash-0-b9e3a3986320d275982797140edfccf4 new file mode 100644 index 0000000000000..d1284cf87da3c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hash-0-b9e3a3986320d275982797140edfccf4 @@ -0,0 +1 @@ +hash(a1, a2, ...) - Returns a hash value of the arguments diff --git a/sql/hive/src/test/resources/golden/udf_hash-1-a18646b51501d0b1beb967dc79afbd1a b/sql/hive/src/test/resources/golden/udf_hash-1-a18646b51501d0b1beb967dc79afbd1a new file mode 100644 index 0000000000000..d1284cf87da3c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hash-1-a18646b51501d0b1beb967dc79afbd1a @@ -0,0 +1 @@ +hash(a1, a2, ...) - Returns a hash value of the arguments diff --git a/sql/hive/src/test/resources/golden/udf_hash-2-cc121f3c38a7a522abd824940fe04285 b/sql/hive/src/test/resources/golden/udf_hash-2-cc121f3c38a7a522abd824940fe04285 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_hash-3-23991312391d518aacf3d4469c816eae b/sql/hive/src/test/resources/golden/udf_hash-3-23991312391d518aacf3d4469c816eae new file mode 100644 index 0000000000000..d50944d3d0c0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hash-3-23991312391d518aacf3d4469c816eae @@ -0,0 +1 @@ +1 2 3 -1097262584 1067450368 1076887552 51508 96354 1 0 1026 diff --git a/sql/hive/src/test/resources/golden/udf_hex-0-c8b923c23d5eb31446780f28acbd4e16 b/sql/hive/src/test/resources/golden/udf_hex-0-c8b923c23d5eb31446780f28acbd4e16 new file mode 100644 index 0000000000000..f87a6117eacf7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hex-0-c8b923c23d5eb31446780f28acbd4e16 @@ -0,0 +1 @@ +hex(n, bin, or str) - Convert the argument to hexadecimal \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_hex-1-d55348c0ccd133b7abb690f6949b520c b/sql/hive/src/test/resources/golden/udf_hex-1-d55348c0ccd133b7abb690f6949b520c new file mode 100644 index 0000000000000..e8cee4afc3a80 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hex-1-d55348c0ccd133b7abb690f6949b520c @@ -0,0 +1,8 @@ +hex(n, bin, or str) - Convert the argument to hexadecimal +If the argument is a string, returns two hex digits for each character in the string. +If the argument is a number or binary, returns the hexadecimal representation. +Example: + > SELECT hex(17) FROM src LIMIT 1; + 'H1' + > SELECT hex('Facebook') FROM src LIMIT 1; + '46616365626F6F6B' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_hex-2-332aa8b643b3f6bebd32c558ad4b1559 b/sql/hive/src/test/resources/golden/udf_hex-2-332aa8b643b3f6bebd32c558ad4b1559 new file mode 100644 index 0000000000000..34eb75a6c784a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hex-2-332aa8b643b3f6bebd32c558ad4b1559 @@ -0,0 +1 @@ +46616365626F6F6B 00 71776572747975696F706173646667686A6B6C \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_hex-3-963ad47b5fa3898a71f3c62f592e34bf b/sql/hive/src/test/resources/golden/udf_hex-3-963ad47b5fa3898a71f3c62f592e34bf new file mode 100644 index 0000000000000..2a45250c67a63 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hex-3-963ad47b5fa3898a71f3c62f592e34bf @@ -0,0 +1 @@ +1 0 FACEB005 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_hex-4-e07a02365ad1f5b47e0a08fec64aebea b/sql/hive/src/test/resources/golden/udf_hex-4-e07a02365ad1f5b47e0a08fec64aebea new file mode 100644 index 0000000000000..50d9557967ac4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hex-4-e07a02365ad1f5b47e0a08fec64aebea @@ -0,0 +1 @@ +FFFFFFFFFFFFFFFB \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_hour-0-ba1c46a403b807fe0a28b85e62d869ce b/sql/hive/src/test/resources/golden/udf_hour-0-ba1c46a403b807fe0a28b85e62d869ce new file mode 100644 index 0000000000000..48911456dc339 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hour-0-ba1c46a403b807fe0a28b85e62d869ce @@ -0,0 +1 @@ +hour(date) - Returns the hour of date diff --git a/sql/hive/src/test/resources/golden/udf_hour-1-3db41b9fe9966a45e663bc42cf182c04 b/sql/hive/src/test/resources/golden/udf_hour-1-3db41b9fe9966a45e663bc42cf182c04 new file mode 100644 index 0000000000000..be1a966635202 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hour-1-3db41b9fe9966a45e663bc42cf182c04 @@ -0,0 +1,7 @@ +hour(date) - Returns the hour of date +date is a string in the format of 'yyyy-MM-dd HH:mm:ss' or 'HH:mm:ss'. +Example: + > SELECT hour('2009-07-30 12:58:59') FROM src LIMIT 1; + 12 + > SELECT hour('12:58:59') FROM src LIMIT 1; + 12 diff --git a/sql/hive/src/test/resources/golden/udf_hour-2-ace1054795b20abd5ae829814cfe15a b/sql/hive/src/test/resources/golden/udf_hour-2-ace1054795b20abd5ae829814cfe15a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_hour-3-415b0842ab0818c82baf9fbf07180613 b/sql/hive/src/test/resources/golden/udf_hour-3-415b0842ab0818c82baf9fbf07180613 new file mode 100644 index 0000000000000..1a35f9f158133 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_hour-3-415b0842ab0818c82baf9fbf07180613 @@ -0,0 +1 @@ +13 13 NULL diff --git a/sql/hive/src/test/resources/golden/udf_if-0-b7ffa85b5785cccef2af1b285348cc2c b/sql/hive/src/test/resources/golden/udf_if-0-b7ffa85b5785cccef2af1b285348cc2c new file mode 100644 index 0000000000000..2cf0d9d61882e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_if-0-b7ffa85b5785cccef2af1b285348cc2c @@ -0,0 +1 @@ +There is no documentation for function 'if' diff --git a/sql/hive/src/test/resources/golden/udf_if-1-30cf7f51f92b5684e556deff3032d49a b/sql/hive/src/test/resources/golden/udf_if-1-30cf7f51f92b5684e556deff3032d49a new file mode 100644 index 0000000000000..2cf0d9d61882e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_if-1-30cf7f51f92b5684e556deff3032d49a @@ -0,0 +1 @@ +There is no documentation for function 'if' diff --git a/sql/hive/src/test/resources/golden/udf_if-2-f2b010128e922d0096a65ddd9ae1d0b4 b/sql/hive/src/test/resources/golden/udf_if-2-f2b010128e922d0096a65ddd9ae1d0b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_if-3-20206f17367ff284d67044abd745ce9f b/sql/hive/src/test/resources/golden/udf_if-3-20206f17367ff284d67044abd745ce9f new file mode 100644 index 0000000000000..a29e96cbd1db7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_if-3-20206f17367ff284d67044abd745ce9f @@ -0,0 +1 @@ +1 1 1 1 NULL 2 diff --git a/sql/hive/src/test/resources/golden/udf_if-4-174dae8a1eb4cad6ccf6f67203de71ca b/sql/hive/src/test/resources/golden/udf_if-4-174dae8a1eb4cad6ccf6f67203de71ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_if-5-a7db13aec05c97792f9331d63709d8cc b/sql/hive/src/test/resources/golden/udf_if-5-a7db13aec05c97792f9331d63709d8cc new file mode 100644 index 0000000000000..f0669b86989d0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_if-5-a7db13aec05c97792f9331d63709d8cc @@ -0,0 +1 @@ +128 1.1 ABC 12.3 diff --git a/sql/hive/src/test/resources/golden/udf_in-0-b21369b3d0dd47d347e0e0af25f06ce4 b/sql/hive/src/test/resources/golden/udf_in-0-b21369b3d0dd47d347e0e0af25f06ce4 new file mode 100644 index 0000000000000..ee6e42ce6a83d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_in-0-b21369b3d0dd47d347e0e0af25f06ce4 @@ -0,0 +1 @@ +true false true true false true true true NULL NULL true diff --git a/sql/hive/src/test/resources/golden/udf_in-1-ce5f3a3da5f3602a23fc107325dd13d7 b/sql/hive/src/test/resources/golden/udf_in-1-ce5f3a3da5f3602a23fc107325dd13d7 new file mode 100644 index 0000000000000..993d93304f95e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_in-1-ce5f3a3da5f3602a23fc107325dd13d7 @@ -0,0 +1,3 @@ +238 +86 +238 diff --git a/sql/hive/src/test/resources/golden/udf_in_file-0-1775b929e50cae8b3e957d99c5378f59 b/sql/hive/src/test/resources/golden/udf_in_file-0-1775b929e50cae8b3e957d99c5378f59 new file mode 100644 index 0000000000000..cd15a08a539ab --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_in_file-0-1775b929e50cae8b3e957d99c5378f59 @@ -0,0 +1 @@ +in_file(str, filename) - Returns true if str appears in the file diff --git a/sql/hive/src/test/resources/golden/udf_in_file-1-2f23153970a569a4643574dde8d78a58 b/sql/hive/src/test/resources/golden/udf_in_file-1-2f23153970a569a4643574dde8d78a58 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_index-0-a277ac394cae40cb55d1ef3aa5add260 b/sql/hive/src/test/resources/golden/udf_index-0-a277ac394cae40cb55d1ef3aa5add260 new file mode 100644 index 0000000000000..df5a0561fb8f5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_index-0-a277ac394cae40cb55d1ef3aa5add260 @@ -0,0 +1 @@ +Function '`index`' does not exist. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_index-1-1f5e109131b0c67ebea521fa4902a8f6 b/sql/hive/src/test/resources/golden/udf_index-1-1f5e109131b0c67ebea521fa4902a8f6 new file mode 100644 index 0000000000000..df5a0561fb8f5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_index-1-1f5e109131b0c67ebea521fa4902a8f6 @@ -0,0 +1 @@ +Function '`index`' does not exist. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_instr-0-2e76f819563dbaba4beb51e3a130b922 b/sql/hive/src/test/resources/golden/udf_instr-0-2e76f819563dbaba4beb51e3a130b922 new file mode 100644 index 0000000000000..ae27b5efea045 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_instr-0-2e76f819563dbaba4beb51e3a130b922 @@ -0,0 +1 @@ +instr(str, substr) - Returns the index of the first occurance of substr in str \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_instr-1-32da357fc754badd6e3898dcc8989182 b/sql/hive/src/test/resources/golden/udf_instr-1-32da357fc754badd6e3898dcc8989182 new file mode 100644 index 0000000000000..35de2f0d8653f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_instr-1-32da357fc754badd6e3898dcc8989182 @@ -0,0 +1,4 @@ +instr(str, substr) - Returns the index of the first occurance of substr in str +Example: + > SELECT instr('Facebook', 'boo') FROM src LIMIT 1; + 5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_instr-2-10147893f38fc08dad4fa7f2bc843fc2 b/sql/hive/src/test/resources/golden/udf_instr-2-10147893f38fc08dad4fa7f2bc843fc2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_instr-3-2cb7f5ef9ec07402e3cae7b5279ebe12 b/sql/hive/src/test/resources/golden/udf_instr-3-2cb7f5ef9ec07402e3cae7b5279ebe12 new file mode 100644 index 0000000000000..4d34e6df7039b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_instr-3-2cb7f5ef9ec07402e3cae7b5279ebe12 @@ -0,0 +1 @@ +1 0 2 2 0 0 2 3 4 2 3 NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_int-0-c24c3d4e15b5cdf081fee0a8c8ea13ba b/sql/hive/src/test/resources/golden/udf_int-0-c24c3d4e15b5cdf081fee0a8c8ea13ba new file mode 100644 index 0000000000000..cda33a8e2e555 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_int-0-c24c3d4e15b5cdf081fee0a8c8ea13ba @@ -0,0 +1 @@ +There is no documentation for function 'int' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_int-1-3f0405ff93adfe8b3402b118567867d7 b/sql/hive/src/test/resources/golden/udf_int-1-3f0405ff93adfe8b3402b118567867d7 new file mode 100644 index 0000000000000..cda33a8e2e555 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_int-1-3f0405ff93adfe8b3402b118567867d7 @@ -0,0 +1 @@ +There is no documentation for function 'int' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnotnull-0-44584503014c378bb916b38e1879bfb6 b/sql/hive/src/test/resources/golden/udf_isnotnull-0-44584503014c378bb916b38e1879bfb6 new file mode 100644 index 0000000000000..723b5aaf2af6b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnotnull-0-44584503014c378bb916b38e1879bfb6 @@ -0,0 +1 @@ +isnotnull a - Returns true if a is not NULL and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnotnull-1-6ca2ea7938c7dac331c603ad343c1a7 b/sql/hive/src/test/resources/golden/udf_isnotnull-1-6ca2ea7938c7dac331c603ad343c1a7 new file mode 100644 index 0000000000000..723b5aaf2af6b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnotnull-1-6ca2ea7938c7dac331c603ad343c1a7 @@ -0,0 +1 @@ +isnotnull a - Returns true if a is not NULL and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnull-0-ac8e7827d760108923509f9ea1691d53 b/sql/hive/src/test/resources/golden/udf_isnull-0-ac8e7827d760108923509f9ea1691d53 new file mode 100644 index 0000000000000..99510c6f1db15 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnull-0-ac8e7827d760108923509f9ea1691d53 @@ -0,0 +1 @@ +isnull a - Returns true if a is NULL and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnull-1-55d9d04204f30cde4aa2667db88db262 b/sql/hive/src/test/resources/golden/udf_isnull-1-55d9d04204f30cde4aa2667db88db262 new file mode 100644 index 0000000000000..99510c6f1db15 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnull-1-55d9d04204f30cde4aa2667db88db262 @@ -0,0 +1 @@ +isnull a - Returns true if a is NULL and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-0-ac8e7827d760108923509f9ea1691d53 b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-0-ac8e7827d760108923509f9ea1691d53 new file mode 100644 index 0000000000000..99510c6f1db15 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-0-ac8e7827d760108923509f9ea1691d53 @@ -0,0 +1 @@ +isnull a - Returns true if a is NULL and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-1-55d9d04204f30cde4aa2667db88db262 b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-1-55d9d04204f30cde4aa2667db88db262 new file mode 100644 index 0000000000000..99510c6f1db15 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-1-55d9d04204f30cde4aa2667db88db262 @@ -0,0 +1 @@ +isnull a - Returns true if a is NULL and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-2-44584503014c378bb916b38e1879bfb6 b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-2-44584503014c378bb916b38e1879bfb6 new file mode 100644 index 0000000000000..723b5aaf2af6b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-2-44584503014c378bb916b38e1879bfb6 @@ -0,0 +1 @@ +isnotnull a - Returns true if a is not NULL and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-3-6ca2ea7938c7dac331c603ad343c1a7 b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-3-6ca2ea7938c7dac331c603ad343c1a7 new file mode 100644 index 0000000000000..723b5aaf2af6b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-3-6ca2ea7938c7dac331c603ad343c1a7 @@ -0,0 +1 @@ +isnotnull a - Returns true if a is not NULL and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-4-3dd03048c0152f565b21b6d3b7b010f1 b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-4-3dd03048c0152f565b21b6d3b7b010f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-5-253ed8f6f8659120af927871f57d81a1 b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-5-253ed8f6f8659120af927871f57d81a1 new file mode 100644 index 0000000000000..eedfbc67d50c7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-5-253ed8f6f8659120af927871f57d81a1 @@ -0,0 +1 @@ +true true true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-6-9daf0ab0e3b8315018341d6f72bd3174 b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-6-9daf0ab0e3b8315018341d6f72bd3174 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-7-bb1030dea18d2a0c2c00a6e2de835d6b b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-7-bb1030dea18d2a0c2c00a6e2de835d6b new file mode 100644 index 0000000000000..eedfbc67d50c7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_isnull_isnotnull-7-bb1030dea18d2a0c2c00a6e2de835d6b @@ -0,0 +1 @@ +true true true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_java_method-0-991b98a25032b21802bc2a1efde606c7 b/sql/hive/src/test/resources/golden/udf_java_method-0-991b98a25032b21802bc2a1efde606c7 new file mode 100644 index 0000000000000..b703a30abffba --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_java_method-0-991b98a25032b21802bc2a1efde606c7 @@ -0,0 +1 @@ +java_method(class,method[,arg1[,arg2..]]) calls method with reflection \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_java_method-1-a3b94d9f2c2caf85a588b6686a64630a b/sql/hive/src/test/resources/golden/udf_java_method-1-a3b94d9f2c2caf85a588b6686a64630a new file mode 100644 index 0000000000000..07375dc92d625 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_java_method-1-a3b94d9f2c2caf85a588b6686a64630a @@ -0,0 +1,3 @@ +java_method(class,method[,arg1[,arg2..]]) calls method with reflection +Synonyms: reflect +Use this UDF to call Java methods by matching the argument signature diff --git a/sql/hive/src/test/resources/golden/udf_java_method-2-69e6b8725086a8fb8f55721705442112 b/sql/hive/src/test/resources/golden/udf_java_method-2-69e6b8725086a8fb8f55721705442112 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_java_method-3-c526dfd4d9eac718ced9afb3cf9a62fd b/sql/hive/src/test/resources/golden/udf_java_method-3-c526dfd4d9eac718ced9afb3cf9a62fd new file mode 100644 index 0000000000000..9b93703dae806 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_java_method-3-c526dfd4d9eac718ced9afb3cf9a62fd @@ -0,0 +1 @@ +1 true 3 2 3 2.718281828459045 1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lcase-0-649df2b742e6a03d0e0e364f5bee76ad b/sql/hive/src/test/resources/golden/udf_lcase-0-649df2b742e6a03d0e0e364f5bee76ad new file mode 100644 index 0000000000000..ec6779df2818d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lcase-0-649df2b742e6a03d0e0e364f5bee76ad @@ -0,0 +1 @@ +lcase(str) - Returns str with all characters changed to lowercase \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lcase-1-d947c47e03bedbfd4954853cc134c66e b/sql/hive/src/test/resources/golden/udf_lcase-1-d947c47e03bedbfd4954853cc134c66e new file mode 100644 index 0000000000000..4da30f6c23a1b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lcase-1-d947c47e03bedbfd4954853cc134c66e @@ -0,0 +1,5 @@ +lcase(str) - Returns str with all characters changed to lowercase +Synonyms: lower +Example: + > SELECT lcase('Facebook') FROM src LIMIT 1; + 'facebook' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_length-0-38364b60c3a2409f53c9aa2dae19903b b/sql/hive/src/test/resources/golden/udf_length-0-38364b60c3a2409f53c9aa2dae19903b new file mode 100644 index 0000000000000..d4d2bd508b44f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_length-0-38364b60c3a2409f53c9aa2dae19903b @@ -0,0 +1 @@ +length(str | binary) - Returns the length of str or number of bytes in binary data \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_length-1-f183e1f8ae516bb483132ed106289b67 b/sql/hive/src/test/resources/golden/udf_length-1-f183e1f8ae516bb483132ed106289b67 new file mode 100644 index 0000000000000..79c1c54639266 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_length-1-f183e1f8ae516bb483132ed106289b67 @@ -0,0 +1,4 @@ +length(str | binary) - Returns the length of str or number of bytes in binary data +Example: + > SELECT length('Facebook') FROM src LIMIT 1; + 8 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_length-10-f3a9bd30540345db0f69b6847014b333 b/sql/hive/src/test/resources/golden/udf_length-10-f3a9bd30540345db0f69b6847014b333 new file mode 100644 index 0000000000000..d8263ee986059 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_length-10-f3a9bd30540345db0f69b6847014b333 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_length-2-af46cb6887618240836eaf5be8afbba6 b/sql/hive/src/test/resources/golden/udf_length-2-af46cb6887618240836eaf5be8afbba6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_length-3-dcd6404afce1103d5054527e6c216d6d b/sql/hive/src/test/resources/golden/udf_length-3-dcd6404afce1103d5054527e6c216d6d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_length-4-ba49ba4e6505c74bc33b5003f3930c43 b/sql/hive/src/test/resources/golden/udf_length-4-ba49ba4e6505c74bc33b5003f3930c43 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_length-5-adc1ec67836b26b60d8547c4996bfd8f b/sql/hive/src/test/resources/golden/udf_length-5-adc1ec67836b26b60d8547c4996bfd8f new file mode 100644 index 0000000000000..6ecb2baabb297 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_length-5-adc1ec67836b26b60d8547c4996bfd8f @@ -0,0 +1,25 @@ +7 +0 +7 +6 +7 +7 +7 +7 +6 +7 +7 +7 +7 +7 +7 +0 +0 +6 +0 +7 +7 +7 +0 +0 +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_length-6-460dffb0f1ab0ac0ebc4fd545809aa9a b/sql/hive/src/test/resources/golden/udf_length-6-460dffb0f1ab0ac0ebc4fd545809aa9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_length-7-8f28e6c488df47d89dca670f04a7563f b/sql/hive/src/test/resources/golden/udf_length-7-8f28e6c488df47d89dca670f04a7563f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_length-8-5e0fe761b7520651c3446ce7f9179caf b/sql/hive/src/test/resources/golden/udf_length-8-5e0fe761b7520651c3446ce7f9179caf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_length-9-de456a5765db4a06110d9483985aa4a6 b/sql/hive/src/test/resources/golden/udf_length-9-de456a5765db4a06110d9483985aa4a6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_lessthan-0-a0d9e8b51e3d13685b3889db38f22427 b/sql/hive/src/test/resources/golden/udf_lessthan-0-a0d9e8b51e3d13685b3889db38f22427 new file mode 100644 index 0000000000000..b43707d550c4b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lessthan-0-a0d9e8b51e3d13685b3889db38f22427 @@ -0,0 +1 @@ +a < b - Returns TRUE if a is less than b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lessthan-1-952c655a1092a410e5346f1205cb8142 b/sql/hive/src/test/resources/golden/udf_lessthan-1-952c655a1092a410e5346f1205cb8142 new file mode 100644 index 0000000000000..b43707d550c4b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lessthan-1-952c655a1092a410e5346f1205cb8142 @@ -0,0 +1 @@ +a < b - Returns TRUE if a is less than b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lessthan-2-92fa47f7af4a03ce1a965472eaad23a7 b/sql/hive/src/test/resources/golden/udf_lessthan-2-92fa47f7af4a03ce1a965472eaad23a7 new file mode 100644 index 0000000000000..4364012093724 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lessthan-2-92fa47f7af4a03ce1a965472eaad23a7 @@ -0,0 +1 @@ +false true false false \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lessthanorequal-0-b3b021456c85da76d1879191886a425b b/sql/hive/src/test/resources/golden/udf_lessthanorequal-0-b3b021456c85da76d1879191886a425b new file mode 100644 index 0000000000000..c36acd7ce80bc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lessthanorequal-0-b3b021456c85da76d1879191886a425b @@ -0,0 +1 @@ +a <= b - Returns TRUE if a is not greater than b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lessthanorequal-1-869d983466744ad73b109211e1638869 b/sql/hive/src/test/resources/golden/udf_lessthanorequal-1-869d983466744ad73b109211e1638869 new file mode 100644 index 0000000000000..c36acd7ce80bc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lessthanorequal-1-869d983466744ad73b109211e1638869 @@ -0,0 +1 @@ +a <= b - Returns TRUE if a is not greater than b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lessthanorequal-2-56775013e20ecf2287e07e83eccf2e0c b/sql/hive/src/test/resources/golden/udf_lessthanorequal-2-56775013e20ecf2287e07e83eccf2e0c new file mode 100644 index 0000000000000..38e013b6914c2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lessthanorequal-2-56775013e20ecf2287e07e83eccf2e0c @@ -0,0 +1 @@ +false true true true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_like-0-e0ba9a953e50554bdcbc55585cffde09 b/sql/hive/src/test/resources/golden/udf_like-0-e0ba9a953e50554bdcbc55585cffde09 new file mode 100644 index 0000000000000..b63094711df29 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_like-0-e0ba9a953e50554bdcbc55585cffde09 @@ -0,0 +1 @@ +like(str, pattern) - Checks if str matches pattern diff --git a/sql/hive/src/test/resources/golden/udf_like-1-9781f89d352c506e972ad2a1d58ec03a b/sql/hive/src/test/resources/golden/udf_like-1-9781f89d352c506e972ad2a1d58ec03a new file mode 100644 index 0000000000000..640be910d969d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_like-1-9781f89d352c506e972ad2a1d58ec03a @@ -0,0 +1,4 @@ +like(str, pattern) - Checks if str matches pattern +Example: + > SELECT a.* FROM srcpart a WHERE a.hr like '%2' LIMIT 1; + 27 val_27 2008-04-08 12 diff --git a/sql/hive/src/test/resources/golden/udf_like-2-dbc46cb33f0dd356af03006d9492f8b7 b/sql/hive/src/test/resources/golden/udf_like-2-dbc46cb33f0dd356af03006d9492f8b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_like-3-bef03784eab9d5e8404fd24960dea4fc b/sql/hive/src/test/resources/golden/udf_like-3-bef03784eab9d5e8404fd24960dea4fc new file mode 100644 index 0000000000000..b186fa011a671 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_like-3-bef03784eab9d5e8404fd24960dea4fc @@ -0,0 +1 @@ +true false true true false false false false true false false false false true diff --git a/sql/hive/src/test/resources/golden/udf_like-4-af5fe5d5d176f751747bf14055d00a12 b/sql/hive/src/test/resources/golden/udf_like-4-af5fe5d5d176f751747bf14055d00a12 new file mode 100644 index 0000000000000..6cff4eb100134 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_like-4-af5fe5d5d176f751747bf14055d00a12 @@ -0,0 +1 @@ +true true false true false diff --git a/sql/hive/src/test/resources/golden/udf_ln-0-779eed5722a0efaa85efe24c559072b4 b/sql/hive/src/test/resources/golden/udf_ln-0-779eed5722a0efaa85efe24c559072b4 new file mode 100644 index 0000000000000..0b7372cb446d9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ln-0-779eed5722a0efaa85efe24c559072b4 @@ -0,0 +1 @@ +ln(x) - Returns the natural logarithm of x \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ln-1-60e3541b3c703d6413869d774df9b7e4 b/sql/hive/src/test/resources/golden/udf_ln-1-60e3541b3c703d6413869d774df9b7e4 new file mode 100644 index 0000000000000..bdf2f49ab17ca --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ln-1-60e3541b3c703d6413869d774df9b7e4 @@ -0,0 +1,4 @@ +ln(x) - Returns the natural logarithm of x +Example: + > SELECT ln(1) FROM src LIMIT 1; + 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_locate-0-6e41693c9c6dceea4d7fab4c02884e4e b/sql/hive/src/test/resources/golden/udf_locate-0-6e41693c9c6dceea4d7fab4c02884e4e new file mode 100644 index 0000000000000..63b152162407b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_locate-0-6e41693c9c6dceea4d7fab4c02884e4e @@ -0,0 +1 @@ +locate(substr, str[, pos]) - Returns the position of the first occurance of substr in str after position pos \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_locate-1-d9b5934457931447874d6bb7c13de478 b/sql/hive/src/test/resources/golden/udf_locate-1-d9b5934457931447874d6bb7c13de478 new file mode 100644 index 0000000000000..ea5465b67683e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_locate-1-d9b5934457931447874d6bb7c13de478 @@ -0,0 +1,4 @@ +locate(substr, str[, pos]) - Returns the position of the first occurance of substr in str after position pos +Example: + > SELECT locate('bar', 'foobarbar', 5) FROM src LIMIT 1; + 7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_locate-2-849e7058dbbd7d422a9f3eb08d85b15c b/sql/hive/src/test/resources/golden/udf_locate-2-849e7058dbbd7d422a9f3eb08d85b15c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_locate-3-2a260e4b8e909eb5e848bf31a07f2531 b/sql/hive/src/test/resources/golden/udf_locate-3-2a260e4b8e909eb5e848bf31a07f2531 new file mode 100644 index 0000000000000..cd97bbb17fa81 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_locate-3-2a260e4b8e909eb5e848bf31a07f2531 @@ -0,0 +1 @@ +1 0 2 2 4 4 0 0 2 3 4 2 3 NULL NULL 0 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_log-0-ca773bc1afa66218f3c13dee676bd87a b/sql/hive/src/test/resources/golden/udf_log-0-ca773bc1afa66218f3c13dee676bd87a new file mode 100644 index 0000000000000..e0dba6b06d9a4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_log-0-ca773bc1afa66218f3c13dee676bd87a @@ -0,0 +1 @@ +log([b], x) - Returns the logarithm of x with base b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_log-1-db9dd44bf8c6225f835819a8cdf20d70 b/sql/hive/src/test/resources/golden/udf_log-1-db9dd44bf8c6225f835819a8cdf20d70 new file mode 100644 index 0000000000000..3dedfb4ddfd88 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_log-1-db9dd44bf8c6225f835819a8cdf20d70 @@ -0,0 +1,4 @@ +log([b], x) - Returns the logarithm of x with base b +Example: + > SELECT log(13, 13) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_log10-0-35028570b378a2c7ea25b6bf6a4fac1f b/sql/hive/src/test/resources/golden/udf_log10-0-35028570b378a2c7ea25b6bf6a4fac1f new file mode 100644 index 0000000000000..61749c48f158e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_log10-0-35028570b378a2c7ea25b6bf6a4fac1f @@ -0,0 +1 @@ +log10(x) - Returns the logarithm of x with base 10 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_log10-1-abf1173290ef905d24d422faf7801fe3 b/sql/hive/src/test/resources/golden/udf_log10-1-abf1173290ef905d24d422faf7801fe3 new file mode 100644 index 0000000000000..68ce39dd2b084 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_log10-1-abf1173290ef905d24d422faf7801fe3 @@ -0,0 +1,4 @@ +log10(x) - Returns the logarithm of x with base 10 +Example: + > SELECT log10(10) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_log2-0-6c9ae9d4deb1b42500ad2796a99e2bc6 b/sql/hive/src/test/resources/golden/udf_log2-0-6c9ae9d4deb1b42500ad2796a99e2bc6 new file mode 100644 index 0000000000000..177008a543627 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_log2-0-6c9ae9d4deb1b42500ad2796a99e2bc6 @@ -0,0 +1 @@ +log2(x) - Returns the logarithm of x with base 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_log2-1-a79f0dce2cfc000b11a3b5299f02db56 b/sql/hive/src/test/resources/golden/udf_log2-1-a79f0dce2cfc000b11a3b5299f02db56 new file mode 100644 index 0000000000000..4b856f91a7a14 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_log2-1-a79f0dce2cfc000b11a3b5299f02db56 @@ -0,0 +1,4 @@ +log2(x) - Returns the logarithm of x with base 2 +Example: + > SELECT log2(2) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_logic_java_boolean-0-2e7b9484514a049bbf72a4a0af5ee127 b/sql/hive/src/test/resources/golden/udf_logic_java_boolean-0-2e7b9484514a049bbf72a4a0af5ee127 new file mode 100644 index 0000000000000..d9d0dc035c9ab --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_logic_java_boolean-0-2e7b9484514a049bbf72a4a0af5ee127 @@ -0,0 +1,10 @@ +ABSTRACT SYNTAX TREE: + (TOK_CREATEFUNCTION test_udf_get_java_boolean 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaBoolean') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + + diff --git a/sql/hive/src/test/resources/golden/udf_lower-0-257a0065c0e0df1d0b35a0c6eb30a668 b/sql/hive/src/test/resources/golden/udf_lower-0-257a0065c0e0df1d0b35a0c6eb30a668 new file mode 100644 index 0000000000000..9bfc44922ea38 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lower-0-257a0065c0e0df1d0b35a0c6eb30a668 @@ -0,0 +1 @@ +lower(str) - Returns str with all characters changed to lowercase \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lower-1-550f0a6da388596a775d921b9da995c b/sql/hive/src/test/resources/golden/udf_lower-1-550f0a6da388596a775d921b9da995c new file mode 100644 index 0000000000000..da912776ab009 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lower-1-550f0a6da388596a775d921b9da995c @@ -0,0 +1,5 @@ +lower(str) - Returns str with all characters changed to lowercase +Synonyms: lcase +Example: + > SELECT lower('Facebook') FROM src LIMIT 1; + 'facebook' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lower-2-467230d9c8442c726e5377b70257ff5e b/sql/hive/src/test/resources/golden/udf_lower-2-467230d9c8442c726e5377b70257ff5e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_lower-3-61b2e3e72180c80d52cf9bed18125e08 b/sql/hive/src/test/resources/golden/udf_lower-3-61b2e3e72180c80d52cf9bed18125e08 new file mode 100644 index 0000000000000..9640d1794dcbc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lower-3-61b2e3e72180c80d52cf9bed18125e08 @@ -0,0 +1 @@ +abc 123 ABC 123 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lpad-0-995646acf1e23cea7825412915921bef b/sql/hive/src/test/resources/golden/udf_lpad-0-995646acf1e23cea7825412915921bef new file mode 100644 index 0000000000000..672d2d07f68b5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lpad-0-995646acf1e23cea7825412915921bef @@ -0,0 +1 @@ +lpad(str, len, pad) - Returns str, left-padded with pad to a length of len \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lpad-1-f58bb0fd11cb70cf197c01555ac924a8 b/sql/hive/src/test/resources/golden/udf_lpad-1-f58bb0fd11cb70cf197c01555ac924a8 new file mode 100644 index 0000000000000..66db6624a376a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lpad-1-f58bb0fd11cb70cf197c01555ac924a8 @@ -0,0 +1,6 @@ +lpad(str, len, pad) - Returns str, left-padded with pad to a length of len +If str is longer than len, the return value is shortened to len characters. +Example: + > SELECT lpad('hi', 5, '??') FROM src LIMIT 1; + '???hi' > SELECT lpad('hi', 1, '??') FROM src LIMIT 1; + 'h' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_lpad-2-e779f6358f58919e49fcd6e4b4d007b2 b/sql/hive/src/test/resources/golden/udf_lpad-2-e779f6358f58919e49fcd6e4b4d007b2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_lpad-3-5b04264ae9ada1304acd0410ce31f2ae b/sql/hive/src/test/resources/golden/udf_lpad-3-5b04264ae9ada1304acd0410ce31f2ae new file mode 100644 index 0000000000000..63a7235050df3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_lpad-3-5b04264ae9ada1304acd0410ce31f2ae @@ -0,0 +1 @@ +h ...hi 1231hi \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ltrim-0-398a623504c47bcd64fe8d200c41402f b/sql/hive/src/test/resources/golden/udf_ltrim-0-398a623504c47bcd64fe8d200c41402f new file mode 100644 index 0000000000000..0c9f6fd1c269e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ltrim-0-398a623504c47bcd64fe8d200c41402f @@ -0,0 +1 @@ +ltrim(str) - Removes the leading space characters from str \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ltrim-1-658d495908097792a0e33a77becac2 b/sql/hive/src/test/resources/golden/udf_ltrim-1-658d495908097792a0e33a77becac2 new file mode 100644 index 0000000000000..3ee2e690d28c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ltrim-1-658d495908097792a0e33a77becac2 @@ -0,0 +1,4 @@ +ltrim(str) - Removes the leading space characters from str +Example: + > SELECT ltrim(' facebook') FROM src LIMIT 1; + 'facebook' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_map-0-9feb9f29115f94b3bb4f6a36160bd17e b/sql/hive/src/test/resources/golden/udf_map-0-9feb9f29115f94b3bb4f6a36160bd17e new file mode 100644 index 0000000000000..2f31644f4c1cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map-0-9feb9f29115f94b3bb4f6a36160bd17e @@ -0,0 +1 @@ +map(key0, value0, key1, value1...) - Creates a map with the given key/value pairs diff --git a/sql/hive/src/test/resources/golden/udf_map-1-1f8cd98df9bf7b2528506551fef87dcf b/sql/hive/src/test/resources/golden/udf_map-1-1f8cd98df9bf7b2528506551fef87dcf new file mode 100644 index 0000000000000..2f31644f4c1cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map-1-1f8cd98df9bf7b2528506551fef87dcf @@ -0,0 +1 @@ +map(key0, value0, key1, value1...) - Creates a map with the given key/value pairs diff --git a/sql/hive/src/test/resources/golden/udf_map-2-a3f90085abab46205e732b4c27b18340 b/sql/hive/src/test/resources/golden/udf_map-2-a3f90085abab46205e732b4c27b18340 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_map-3-75348d588d3452e6cb35f5197f4ebeb1 b/sql/hive/src/test/resources/golden/udf_map-3-75348d588d3452e6cb35f5197f4ebeb1 new file mode 100644 index 0000000000000..9f6becdf7d60f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map-3-75348d588d3452e6cb35f5197f4ebeb1 @@ -0,0 +1 @@ +{} {1:"a",2:"b",3:"c"} {"1":"2","a":"b"} b b a diff --git a/sql/hive/src/test/resources/golden/udf_map_keys-0-e86d559aeb84a4cc017a103182c22bfb b/sql/hive/src/test/resources/golden/udf_map_keys-0-e86d559aeb84a4cc017a103182c22bfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_map_keys-1-9a5714f8790219e9a9708a2c45fc87aa b/sql/hive/src/test/resources/golden/udf_map_keys-1-9a5714f8790219e9a9708a2c45fc87aa new file mode 100644 index 0000000000000..b88b74b978b8f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map_keys-1-9a5714f8790219e9a9708a2c45fc87aa @@ -0,0 +1 @@ +map_keys(map) - Returns an unordered array containing the keys of the input map. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_map_keys-2-731b529a9a234473312b7d1db15be75f b/sql/hive/src/test/resources/golden/udf_map_keys-2-731b529a9a234473312b7d1db15be75f new file mode 100644 index 0000000000000..b88b74b978b8f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map_keys-2-731b529a9a234473312b7d1db15be75f @@ -0,0 +1 @@ +map_keys(map) - Returns an unordered array containing the keys of the input map. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_map_keys-3-a3d6a9c2dd5db33c58513ffba1a4103e b/sql/hive/src/test/resources/golden/udf_map_keys-3-a3d6a9c2dd5db33c58513ffba1a4103e new file mode 100644 index 0000000000000..3a26a2e5e94d5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map_keys-3-a3d6a9c2dd5db33c58513ffba1a4103e @@ -0,0 +1 @@ +[1,2,3] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_map_keys-4-10cb8da631c1c058dacbbe4834a5928a b/sql/hive/src/test/resources/golden/udf_map_keys-4-10cb8da631c1c058dacbbe4834a5928a new file mode 100644 index 0000000000000..9b4c194f58a8e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map_keys-4-10cb8da631c1c058dacbbe4834a5928a @@ -0,0 +1 @@ +["b","a","c"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_map_values-0-e86d559aeb84a4cc017a103182c22bfb b/sql/hive/src/test/resources/golden/udf_map_values-0-e86d559aeb84a4cc017a103182c22bfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_map_values-1-a1d9810d9793d4ca2d17f539ca72bd08 b/sql/hive/src/test/resources/golden/udf_map_values-1-a1d9810d9793d4ca2d17f539ca72bd08 new file mode 100644 index 0000000000000..e811d1976a24c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map_values-1-a1d9810d9793d4ca2d17f539ca72bd08 @@ -0,0 +1 @@ +map_values(map) - Returns an unordered array containing the values of the input map. diff --git a/sql/hive/src/test/resources/golden/udf_map_values-2-ed39a40cbe55bb33d2bc19f0941dae69 b/sql/hive/src/test/resources/golden/udf_map_values-2-ed39a40cbe55bb33d2bc19f0941dae69 new file mode 100644 index 0000000000000..e811d1976a24c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map_values-2-ed39a40cbe55bb33d2bc19f0941dae69 @@ -0,0 +1 @@ +map_values(map) - Returns an unordered array containing the values of the input map. diff --git a/sql/hive/src/test/resources/golden/udf_map_values-3-ea2d6bed07d285bc8a7d7cab4cbf69d1 b/sql/hive/src/test/resources/golden/udf_map_values-3-ea2d6bed07d285bc8a7d7cab4cbf69d1 new file mode 100644 index 0000000000000..9d804e48987c6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map_values-3-ea2d6bed07d285bc8a7d7cab4cbf69d1 @@ -0,0 +1 @@ +["a","b","c"] diff --git a/sql/hive/src/test/resources/golden/udf_map_values-4-a000d06dd3941756b4bb9ccc46f3620e b/sql/hive/src/test/resources/golden/udf_map_values-4-a000d06dd3941756b4bb9ccc46f3620e new file mode 100644 index 0000000000000..be56bd1673eaa --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_map_values-4-a000d06dd3941756b4bb9ccc46f3620e @@ -0,0 +1 @@ +[2,1,3] diff --git a/sql/hive/src/test/resources/golden/udf_max-0-ac7d002a46f773ab680ed8c1ac97821f b/sql/hive/src/test/resources/golden/udf_max-0-ac7d002a46f773ab680ed8c1ac97821f new file mode 100644 index 0000000000000..c6cd9573ed8ed --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-0-ac7d002a46f773ab680ed8c1ac97821f @@ -0,0 +1 @@ +max(expr) - Returns the maximum value of expr diff --git a/sql/hive/src/test/resources/golden/udf_max-1-14afa1f14687893233a662f0f32a40c9 b/sql/hive/src/test/resources/golden/udf_max-1-14afa1f14687893233a662f0f32a40c9 new file mode 100644 index 0000000000000..c6cd9573ed8ed --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-1-14afa1f14687893233a662f0f32a40c9 @@ -0,0 +1 @@ +max(expr) - Returns the maximum value of expr diff --git a/sql/hive/src/test/resources/golden/udf_max-10-1e9209f5b2ba926df36b692a4dcd09f6 b/sql/hive/src/test/resources/golden/udf_max-10-1e9209f5b2ba926df36b692a4dcd09f6 new file mode 100644 index 0000000000000..21096f0f69749 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-10-1e9209f5b2ba926df36b692a4dcd09f6 @@ -0,0 +1 @@ +{"col1":498,"col2":"val_498"} {"col1":498,"col2":"val_498"} diff --git a/sql/hive/src/test/resources/golden/udf_max-11-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/udf_max-11-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-11-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_max-12-a00d1791b7fa7ac5a0505d95c3d12257 b/sql/hive/src/test/resources/golden/udf_max-12-a00d1791b7fa7ac5a0505d95c3d12257 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-12-a00d1791b7fa7ac5a0505d95c3d12257 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_max-13-1e9209f5b2ba926df36b692a4dcd09f6 b/sql/hive/src/test/resources/golden/udf_max-13-1e9209f5b2ba926df36b692a4dcd09f6 new file mode 100644 index 0000000000000..21096f0f69749 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-13-1e9209f5b2ba926df36b692a4dcd09f6 @@ -0,0 +1 @@ +{"col1":498,"col2":"val_498"} {"col1":498,"col2":"val_498"} diff --git a/sql/hive/src/test/resources/golden/udf_max-2-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/udf_max-2-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-2-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_max-3-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/udf_max-3-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-3-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_max-4-1e9209f5b2ba926df36b692a4dcd09f6 b/sql/hive/src/test/resources/golden/udf_max-4-1e9209f5b2ba926df36b692a4dcd09f6 new file mode 100644 index 0000000000000..21096f0f69749 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-4-1e9209f5b2ba926df36b692a4dcd09f6 @@ -0,0 +1 @@ +{"col1":498,"col2":"val_498"} {"col1":498,"col2":"val_498"} diff --git a/sql/hive/src/test/resources/golden/udf_max-5-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/udf_max-5-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-5-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_max-6-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/udf_max-6-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-6-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_max-7-1e9209f5b2ba926df36b692a4dcd09f6 b/sql/hive/src/test/resources/golden/udf_max-7-1e9209f5b2ba926df36b692a4dcd09f6 new file mode 100644 index 0000000000000..21096f0f69749 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-7-1e9209f5b2ba926df36b692a4dcd09f6 @@ -0,0 +1 @@ +{"col1":498,"col2":"val_498"} {"col1":498,"col2":"val_498"} diff --git a/sql/hive/src/test/resources/golden/udf_max-8-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/udf_max-8-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-8-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_max-9-a00d1791b7fa7ac5a0505d95c3d12257 b/sql/hive/src/test/resources/golden/udf_max-9-a00d1791b7fa7ac5a0505d95c3d12257 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_max-9-a00d1791b7fa7ac5a0505d95c3d12257 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_min-0-1a67398a47b4232c3786485b451d1ff8 b/sql/hive/src/test/resources/golden/udf_min-0-1a67398a47b4232c3786485b451d1ff8 new file mode 100644 index 0000000000000..0d59cabcde8fb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-0-1a67398a47b4232c3786485b451d1ff8 @@ -0,0 +1 @@ +min(expr) - Returns the minimum value of expr diff --git a/sql/hive/src/test/resources/golden/udf_min-1-69d749d0bca0ebe56e930009e30f4f19 b/sql/hive/src/test/resources/golden/udf_min-1-69d749d0bca0ebe56e930009e30f4f19 new file mode 100644 index 0000000000000..0d59cabcde8fb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-1-69d749d0bca0ebe56e930009e30f4f19 @@ -0,0 +1 @@ +min(expr) - Returns the minimum value of expr diff --git a/sql/hive/src/test/resources/golden/udf_min-10-191613d4d46d1884d0694fcd8c5fb802 b/sql/hive/src/test/resources/golden/udf_min-10-191613d4d46d1884d0694fcd8c5fb802 new file mode 100644 index 0000000000000..b26a7e93c5d9f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-10-191613d4d46d1884d0694fcd8c5fb802 @@ -0,0 +1 @@ +{"col1":0,"col2":"val_0"} {"col1":0,"col2":"val_0"} diff --git a/sql/hive/src/test/resources/golden/udf_min-11-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/udf_min-11-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-11-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_min-12-a00d1791b7fa7ac5a0505d95c3d12257 b/sql/hive/src/test/resources/golden/udf_min-12-a00d1791b7fa7ac5a0505d95c3d12257 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-12-a00d1791b7fa7ac5a0505d95c3d12257 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_min-13-191613d4d46d1884d0694fcd8c5fb802 b/sql/hive/src/test/resources/golden/udf_min-13-191613d4d46d1884d0694fcd8c5fb802 new file mode 100644 index 0000000000000..b26a7e93c5d9f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-13-191613d4d46d1884d0694fcd8c5fb802 @@ -0,0 +1 @@ +{"col1":0,"col2":"val_0"} {"col1":0,"col2":"val_0"} diff --git a/sql/hive/src/test/resources/golden/udf_min-2-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/udf_min-2-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-2-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_min-3-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/udf_min-3-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-3-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_min-4-191613d4d46d1884d0694fcd8c5fb802 b/sql/hive/src/test/resources/golden/udf_min-4-191613d4d46d1884d0694fcd8c5fb802 new file mode 100644 index 0000000000000..b26a7e93c5d9f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-4-191613d4d46d1884d0694fcd8c5fb802 @@ -0,0 +1 @@ +{"col1":0,"col2":"val_0"} {"col1":0,"col2":"val_0"} diff --git a/sql/hive/src/test/resources/golden/udf_min-5-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/udf_min-5-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-5-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_min-6-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/udf_min-6-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-6-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_min-7-191613d4d46d1884d0694fcd8c5fb802 b/sql/hive/src/test/resources/golden/udf_min-7-191613d4d46d1884d0694fcd8c5fb802 new file mode 100644 index 0000000000000..b26a7e93c5d9f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-7-191613d4d46d1884d0694fcd8c5fb802 @@ -0,0 +1 @@ +{"col1":0,"col2":"val_0"} {"col1":0,"col2":"val_0"} diff --git a/sql/hive/src/test/resources/golden/udf_min-8-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/udf_min-8-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-8-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_min-9-a00d1791b7fa7ac5a0505d95c3d12257 b/sql/hive/src/test/resources/golden/udf_min-9-a00d1791b7fa7ac5a0505d95c3d12257 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_min-9-a00d1791b7fa7ac5a0505d95c3d12257 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_minute-0-9a38997c1f41f4afe00faa0abc471aee b/sql/hive/src/test/resources/golden/udf_minute-0-9a38997c1f41f4afe00faa0abc471aee new file mode 100644 index 0000000000000..b6bd6049a90b9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_minute-0-9a38997c1f41f4afe00faa0abc471aee @@ -0,0 +1 @@ +minute(date) - Returns the minute of date \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_minute-1-16995573ac4f4a1b047ad6ee88699e48 b/sql/hive/src/test/resources/golden/udf_minute-1-16995573ac4f4a1b047ad6ee88699e48 new file mode 100644 index 0000000000000..64c3cda697e1e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_minute-1-16995573ac4f4a1b047ad6ee88699e48 @@ -0,0 +1,7 @@ +minute(date) - Returns the minute of date +date is a string in the format of 'yyyy-MM-dd HH:mm:ss' or 'HH:mm:ss'. +Example: + > SELECT minute('2009-07-30 12:58:59') FROM src LIMIT 1; + 58 + > SELECT minute('12:58:59') FROM src LIMIT 1; + 58 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_minute-2-2bf0b45e6608d66c7d7a5b320f662d75 b/sql/hive/src/test/resources/golden/udf_minute-2-2bf0b45e6608d66c7d7a5b320f662d75 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_minute-3-270055c684846e87444b037226cf554c b/sql/hive/src/test/resources/golden/udf_minute-3-270055c684846e87444b037226cf554c new file mode 100644 index 0000000000000..5bd5433375d5c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_minute-3-270055c684846e87444b037226cf554c @@ -0,0 +1 @@ +14 14 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_modulo-0-4e06551d4aa9464492e0f53374a280d5 b/sql/hive/src/test/resources/golden/udf_modulo-0-4e06551d4aa9464492e0f53374a280d5 new file mode 100644 index 0000000000000..1bcf0c71008b0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_modulo-0-4e06551d4aa9464492e0f53374a280d5 @@ -0,0 +1 @@ +a % b - Returns the remainder when dividing a by b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_modulo-1-cc0579c83ca1b36fa8a3a1622d19e877 b/sql/hive/src/test/resources/golden/udf_modulo-1-cc0579c83ca1b36fa8a3a1622d19e877 new file mode 100644 index 0000000000000..1bcf0c71008b0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_modulo-1-cc0579c83ca1b36fa8a3a1622d19e877 @@ -0,0 +1 @@ +a % b - Returns the remainder when dividing a by b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_month-0-9a38997c1f41f4afe00faa0abc471aee b/sql/hive/src/test/resources/golden/udf_month-0-9a38997c1f41f4afe00faa0abc471aee new file mode 100644 index 0000000000000..b6bd6049a90b9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_month-0-9a38997c1f41f4afe00faa0abc471aee @@ -0,0 +1 @@ +minute(date) - Returns the minute of date \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_month-1-16995573ac4f4a1b047ad6ee88699e48 b/sql/hive/src/test/resources/golden/udf_month-1-16995573ac4f4a1b047ad6ee88699e48 new file mode 100644 index 0000000000000..64c3cda697e1e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_month-1-16995573ac4f4a1b047ad6ee88699e48 @@ -0,0 +1,7 @@ +minute(date) - Returns the minute of date +date is a string in the format of 'yyyy-MM-dd HH:mm:ss' or 'HH:mm:ss'. +Example: + > SELECT minute('2009-07-30 12:58:59') FROM src LIMIT 1; + 58 + > SELECT minute('12:58:59') FROM src LIMIT 1; + 58 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-0-1b770ec6fb07bb771af2231a9723ec8 b/sql/hive/src/test/resources/golden/udf_negative-0-1b770ec6fb07bb771af2231a9723ec8 new file mode 100644 index 0000000000000..3142f7f94be9e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-0-1b770ec6fb07bb771af2231a9723ec8 @@ -0,0 +1 @@ +negative a - Returns -a \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-1-5f64266721b1ed31cfe84ee2f2377bdf b/sql/hive/src/test/resources/golden/udf_negative-1-5f64266721b1ed31cfe84ee2f2377bdf new file mode 100644 index 0000000000000..3142f7f94be9e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-1-5f64266721b1ed31cfe84ee2f2377bdf @@ -0,0 +1 @@ +negative a - Returns -a \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-2-a6863d2c5fc8c3131fe70080a011392c b/sql/hive/src/test/resources/golden/udf_negative-2-a6863d2c5fc8c3131fe70080a011392c new file mode 100644 index 0000000000000..0f4a4dce9dd3d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-2-a6863d2c5fc8c3131fe70080a011392c @@ -0,0 +1 @@ +a - b - Returns the difference a-b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-3-b90eec030fee9cbd177f9615b782d722 b/sql/hive/src/test/resources/golden/udf_negative-3-b90eec030fee9cbd177f9615b782d722 new file mode 100644 index 0000000000000..0f4a4dce9dd3d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-3-b90eec030fee9cbd177f9615b782d722 @@ -0,0 +1 @@ +a - b - Returns the difference a-b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-4-e27bf3f44ccb2e051877da8a4455f50c b/sql/hive/src/test/resources/golden/udf_negative-4-e27bf3f44ccb2e051877da8a4455f50c new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-4-e27bf3f44ccb2e051877da8a4455f50c @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-5-93d7dd808d4af59bda601faf249a9e b/sql/hive/src/test/resources/golden/udf_negative-5-93d7dd808d4af59bda601faf249a9e new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-5-93d7dd808d4af59bda601faf249a9e @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-6-6758b00c5acc7aac320238accf299219 b/sql/hive/src/test/resources/golden/udf_negative-6-6758b00c5acc7aac320238accf299219 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-6-6758b00c5acc7aac320238accf299219 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-7-6d8783f0ed7a4b7058c95f90da3fb4b b/sql/hive/src/test/resources/golden/udf_negative-7-6d8783f0ed7a4b7058c95f90da3fb4b new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-7-6d8783f0ed7a4b7058c95f90da3fb4b @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-8-634af0478ed9ed44b851cd7ef834a489 b/sql/hive/src/test/resources/golden/udf_negative-8-634af0478ed9ed44b851cd7ef834a489 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-8-634af0478ed9ed44b851cd7ef834a489 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_negative-9-80b4c1fe00f7997838bba64a2cb5f8aa b/sql/hive/src/test/resources/golden/udf_negative-9-80b4c1fe00f7997838bba64a2cb5f8aa new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_negative-9-80b4c1fe00f7997838bba64a2cb5f8aa @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_not-0-9ddee9ccebe4acbf903da1f42fe55dbc b/sql/hive/src/test/resources/golden/udf_not-0-9ddee9ccebe4acbf903da1f42fe55dbc new file mode 100644 index 0000000000000..1ad92784d47ac --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_not-0-9ddee9ccebe4acbf903da1f42fe55dbc @@ -0,0 +1 @@ +not a - Logical not \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_not-1-efefc8302b02224d20f4bb0f159a6911 b/sql/hive/src/test/resources/golden/udf_not-1-efefc8302b02224d20f4bb0f159a6911 new file mode 100644 index 0000000000000..6520d74f02566 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_not-1-efefc8302b02224d20f4bb0f159a6911 @@ -0,0 +1,2 @@ +not a - Logical not +Synonyms: ! \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_not-2-7e63750d3027ced0e3452ad4eb0df117 b/sql/hive/src/test/resources/golden/udf_not-2-7e63750d3027ced0e3452ad4eb0df117 new file mode 100644 index 0000000000000..c0e84e95d01c2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_not-2-7e63750d3027ced0e3452ad4eb0df117 @@ -0,0 +1 @@ +! a - Logical not \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_not-3-aa0c674f9ce0feba86448448a211bd2a b/sql/hive/src/test/resources/golden/udf_not-3-aa0c674f9ce0feba86448448a211bd2a new file mode 100644 index 0000000000000..05cb1f6ab03d7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_not-3-aa0c674f9ce0feba86448448a211bd2a @@ -0,0 +1,2 @@ +! a - Logical not +Synonyms: not \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_notequal-0-27c0d57f7c7c48ceb7bc671f7160254e b/sql/hive/src/test/resources/golden/udf_notequal-0-27c0d57f7c7c48ceb7bc671f7160254e new file mode 100644 index 0000000000000..9e2108ff72b18 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_notequal-0-27c0d57f7c7c48ceb7bc671f7160254e @@ -0,0 +1 @@ +a <> b - Returns TRUE if a is not equal to b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_notequal-1-a7f0d1064f8f398ef504008015fddf9a b/sql/hive/src/test/resources/golden/udf_notequal-1-a7f0d1064f8f398ef504008015fddf9a new file mode 100644 index 0000000000000..162f808ed5b67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_notequal-1-a7f0d1064f8f398ef504008015fddf9a @@ -0,0 +1,2 @@ +a <> b - Returns TRUE if a is not equal to b +Synonyms: != \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_notequal-2-7d815b1218c85e4cf69d6780cab17520 b/sql/hive/src/test/resources/golden/udf_notequal-2-7d815b1218c85e4cf69d6780cab17520 new file mode 100644 index 0000000000000..2dab01a3b2765 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_notequal-2-7d815b1218c85e4cf69d6780cab17520 @@ -0,0 +1 @@ +a != b - Returns TRUE if a is not equal to b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_notequal-3-b72baeb22fad61bb31ce2d2e69375f57 b/sql/hive/src/test/resources/golden/udf_notequal-3-b72baeb22fad61bb31ce2d2e69375f57 new file mode 100644 index 0000000000000..1f73486ba2896 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_notequal-3-b72baeb22fad61bb31ce2d2e69375f57 @@ -0,0 +1,2 @@ +a != b - Returns TRUE if a is not equal to b +Synonyms: <> \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_notequal-4-eb04e5ee00967799c913e8a5b424a332 b/sql/hive/src/test/resources/golden/udf_notequal-4-eb04e5ee00967799c913e8a5b424a332 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_notequal-5-e361b9cf294c4aa25018b081a2c05e07 b/sql/hive/src/test/resources/golden/udf_notequal-5-e361b9cf294c4aa25018b081a2c05e07 new file mode 100644 index 0000000000000..f82286d8bb069 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_notequal-5-e361b9cf294c4aa25018b081a2c05e07 @@ -0,0 +1,499 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_notequal-6-46a6514f2d7e6a097035ec1559df0096 b/sql/hive/src/test/resources/golden/udf_notequal-6-46a6514f2d7e6a097035ec1559df0096 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_notequal-7-a71fea4e9514cda0da9542a7701613dd b/sql/hive/src/test/resources/golden/udf_notequal-7-a71fea4e9514cda0da9542a7701613dd new file mode 100644 index 0000000000000..f82286d8bb069 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_notequal-7-a71fea4e9514cda0da9542a7701613dd @@ -0,0 +1,499 @@ +238 val_238 +86 val_86 +311 val_311 +27 val_27 +165 val_165 +409 val_409 +255 val_255 +278 val_278 +98 val_98 +484 val_484 +265 val_265 +193 val_193 +401 val_401 +150 val_150 +273 val_273 +224 val_224 +369 val_369 +66 val_66 +128 val_128 +213 val_213 +146 val_146 +406 val_406 +429 val_429 +374 val_374 +152 val_152 +469 val_469 +145 val_145 +495 val_495 +37 val_37 +327 val_327 +281 val_281 +277 val_277 +209 val_209 +15 val_15 +82 val_82 +403 val_403 +166 val_166 +417 val_417 +430 val_430 +252 val_252 +292 val_292 +219 val_219 +287 val_287 +153 val_153 +193 val_193 +338 val_338 +446 val_446 +459 val_459 +394 val_394 +237 val_237 +482 val_482 +174 val_174 +413 val_413 +494 val_494 +207 val_207 +199 val_199 +466 val_466 +208 val_208 +174 val_174 +399 val_399 +396 val_396 +247 val_247 +417 val_417 +489 val_489 +162 val_162 +377 val_377 +397 val_397 +309 val_309 +365 val_365 +266 val_266 +439 val_439 +342 val_342 +367 val_367 +325 val_325 +167 val_167 +195 val_195 +475 val_475 +17 val_17 +113 val_113 +155 val_155 +203 val_203 +339 val_339 +0 val_0 +455 val_455 +128 val_128 +311 val_311 +316 val_316 +57 val_57 +205 val_205 +149 val_149 +438 val_438 +345 val_345 +129 val_129 +170 val_170 +20 val_20 +489 val_489 +157 val_157 +378 val_378 +221 val_221 +92 val_92 +111 val_111 +47 val_47 +72 val_72 +4 val_4 +280 val_280 +35 val_35 +427 val_427 +277 val_277 +208 val_208 +356 val_356 +399 val_399 +169 val_169 +382 val_382 +498 val_498 +125 val_125 +386 val_386 +437 val_437 +469 val_469 +192 val_192 +286 val_286 +187 val_187 +176 val_176 +54 val_54 +459 val_459 +51 val_51 +138 val_138 +103 val_103 +239 val_239 +213 val_213 +216 val_216 +430 val_430 +278 val_278 +176 val_176 +289 val_289 +221 val_221 +65 val_65 +318 val_318 +332 val_332 +311 val_311 +275 val_275 +137 val_137 +241 val_241 +83 val_83 +333 val_333 +180 val_180 +284 val_284 +12 val_12 +230 val_230 +181 val_181 +67 val_67 +260 val_260 +404 val_404 +384 val_384 +489 val_489 +353 val_353 +373 val_373 +272 val_272 +138 val_138 +217 val_217 +84 val_84 +348 val_348 +466 val_466 +58 val_58 +8 val_8 +411 val_411 +230 val_230 +208 val_208 +348 val_348 +24 val_24 +463 val_463 +431 val_431 +179 val_179 +172 val_172 +42 val_42 +129 val_129 +158 val_158 +119 val_119 +496 val_496 +0 val_0 +322 val_322 +197 val_197 +468 val_468 +393 val_393 +454 val_454 +100 val_100 +298 val_298 +199 val_199 +191 val_191 +418 val_418 +96 val_96 +26 val_26 +165 val_165 +327 val_327 +230 val_230 +205 val_205 +120 val_120 +131 val_131 +51 val_51 +404 val_404 +43 val_43 +436 val_436 +156 val_156 +469 val_469 +468 val_468 +308 val_308 +95 val_95 +196 val_196 +288 val_288 +481 val_481 +457 val_457 +98 val_98 +282 val_282 +197 val_197 +187 val_187 +318 val_318 +318 val_318 +409 val_409 +470 val_470 +137 val_137 +369 val_369 +316 val_316 +169 val_169 +413 val_413 +85 val_85 +77 val_77 +0 val_0 +490 val_490 +87 val_87 +364 val_364 +179 val_179 +118 val_118 +134 val_134 +395 val_395 +282 val_282 +138 val_138 +238 val_238 +419 val_419 +15 val_15 +118 val_118 +72 val_72 +90 val_90 +307 val_307 +19 val_19 +435 val_435 +10 val_10 +277 val_277 +273 val_273 +306 val_306 +224 val_224 +309 val_309 +389 val_389 +327 val_327 +242 val_242 +369 val_369 +392 val_392 +272 val_272 +331 val_331 +401 val_401 +242 val_242 +452 val_452 +177 val_177 +226 val_226 +5 val_5 +497 val_497 +402 val_402 +396 val_396 +317 val_317 +395 val_395 +58 val_58 +35 val_35 +336 val_336 +95 val_95 +11 val_11 +168 val_168 +34 val_34 +229 val_229 +233 val_233 +143 val_143 +472 val_472 +322 val_322 +498 val_498 +160 val_160 +195 val_195 +42 val_42 +321 val_321 +430 val_430 +119 val_119 +489 val_489 +458 val_458 +78 val_78 +76 val_76 +41 val_41 +223 val_223 +492 val_492 +149 val_149 +449 val_449 +218 val_218 +228 val_228 +138 val_138 +453 val_453 +30 val_30 +209 val_209 +64 val_64 +468 val_468 +76 val_76 +74 val_74 +342 val_342 +69 val_69 +230 val_230 +33 val_33 +368 val_368 +103 val_103 +296 val_296 +113 val_113 +216 val_216 +367 val_367 +344 val_344 +167 val_167 +274 val_274 +219 val_219 +239 val_239 +485 val_485 +116 val_116 +223 val_223 +256 val_256 +263 val_263 +70 val_70 +487 val_487 +480 val_480 +401 val_401 +288 val_288 +191 val_191 +5 val_5 +244 val_244 +438 val_438 +128 val_128 +467 val_467 +432 val_432 +202 val_202 +316 val_316 +229 val_229 +469 val_469 +463 val_463 +280 val_280 +2 val_2 +35 val_35 +283 val_283 +331 val_331 +235 val_235 +80 val_80 +44 val_44 +193 val_193 +321 val_321 +335 val_335 +104 val_104 +466 val_466 +366 val_366 +175 val_175 +403 val_403 +483 val_483 +53 val_53 +105 val_105 +257 val_257 +406 val_406 +409 val_409 +190 val_190 +406 val_406 +401 val_401 +114 val_114 +258 val_258 +90 val_90 +203 val_203 +262 val_262 +348 val_348 +424 val_424 +12 val_12 +396 val_396 +201 val_201 +217 val_217 +164 val_164 +431 val_431 +454 val_454 +478 val_478 +298 val_298 +125 val_125 +431 val_431 +164 val_164 +424 val_424 +187 val_187 +382 val_382 +5 val_5 +70 val_70 +397 val_397 +480 val_480 +291 val_291 +24 val_24 +351 val_351 +255 val_255 +104 val_104 +70 val_70 +163 val_163 +438 val_438 +119 val_119 +414 val_414 +200 val_200 +491 val_491 +237 val_237 +439 val_439 +360 val_360 +248 val_248 +479 val_479 +305 val_305 +417 val_417 +199 val_199 +444 val_444 +120 val_120 +429 val_429 +169 val_169 +443 val_443 +323 val_323 +325 val_325 +277 val_277 +230 val_230 +478 val_478 +178 val_178 +468 val_468 +310 val_310 +317 val_317 +333 val_333 +493 val_493 +460 val_460 +207 val_207 +249 val_249 +265 val_265 +480 val_480 +83 val_83 +136 val_136 +353 val_353 +172 val_172 +214 val_214 +462 val_462 +233 val_233 +406 val_406 +133 val_133 +175 val_175 +189 val_189 +454 val_454 +375 val_375 +401 val_401 +421 val_421 +407 val_407 +384 val_384 +256 val_256 +26 val_26 +134 val_134 +67 val_67 +384 val_384 +379 val_379 +18 val_18 +462 val_462 +492 val_492 +100 val_100 +298 val_298 +9 val_9 +341 val_341 +498 val_498 +146 val_146 +458 val_458 +362 val_362 +186 val_186 +285 val_285 +348 val_348 +167 val_167 +18 val_18 +273 val_273 +183 val_183 +281 val_281 +344 val_344 +97 val_97 +469 val_469 +315 val_315 +84 val_84 +28 val_28 +37 val_37 +448 val_448 +152 val_152 +348 val_348 +307 val_307 +194 val_194 +414 val_414 +477 val_477 +222 val_222 +126 val_126 +90 val_90 +169 val_169 +403 val_403 +400 val_400 +200 val_200 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_notop-0-825431072651228a5a9de7f85a0498d6 b/sql/hive/src/test/resources/golden/udf_notop-0-825431072651228a5a9de7f85a0498d6 new file mode 100644 index 0000000000000..a55e3339049e8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_notop-0-825431072651228a5a9de7f85a0498d6 @@ -0,0 +1 @@ +false true false false true false true false true true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_nvl-0-df7383141df0bb71ccb57f3eef9775b4 b/sql/hive/src/test/resources/golden/udf_nvl-0-df7383141df0bb71ccb57f3eef9775b4 new file mode 100644 index 0000000000000..5ffcb851d56f9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_nvl-0-df7383141df0bb71ccb57f3eef9775b4 @@ -0,0 +1 @@ +nvl(value,default_value) - Returns default value if value is null else returns value \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_nvl-1-6ec6c4b23c742fc604c9937a25b0b092 b/sql/hive/src/test/resources/golden/udf_nvl-1-6ec6c4b23c742fc604c9937a25b0b092 new file mode 100644 index 0000000000000..5afff220da695 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_nvl-1-6ec6c4b23c742fc604c9937a25b0b092 @@ -0,0 +1,4 @@ +nvl(value,default_value) - Returns default value if value is null else returns value +Example: + > SELECT nvl(null,'bla') FROM src LIMIT 1; + bla \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_nvl-2-175ed7006e8907b65e0e5357f00a0def b/sql/hive/src/test/resources/golden/udf_nvl-2-175ed7006e8907b65e0e5357f00a0def new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_nvl-3-7dd762d0da31b9bb0edbabaad1a4dce0 b/sql/hive/src/test/resources/golden/udf_nvl-3-7dd762d0da31b9bb0edbabaad1a4dce0 new file mode 100644 index 0000000000000..2087e17494459 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_nvl-3-7dd762d0da31b9bb0edbabaad1a4dce0 @@ -0,0 +1 @@ +1 5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_or-0-c404aa929eb0dd87269121f8f99ada70 b/sql/hive/src/test/resources/golden/udf_or-0-c404aa929eb0dd87269121f8f99ada70 new file mode 100644 index 0000000000000..9138f44ad2a41 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_or-0-c404aa929eb0dd87269121f8f99ada70 @@ -0,0 +1 @@ +a or b - Logical or \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_or-1-e21a84ffd26beabb958518ca5e46d6e0 b/sql/hive/src/test/resources/golden/udf_or-1-e21a84ffd26beabb958518ca5e46d6e0 new file mode 100644 index 0000000000000..9138f44ad2a41 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_or-1-e21a84ffd26beabb958518ca5e46d6e0 @@ -0,0 +1 @@ +a or b - Logical or \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_parse_url-0-7571c0423df7bf158ea9ca98142b26b8 b/sql/hive/src/test/resources/golden/udf_parse_url-0-7571c0423df7bf158ea9ca98142b26b8 new file mode 100644 index 0000000000000..0535b085e50c2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_parse_url-0-7571c0423df7bf158ea9ca98142b26b8 @@ -0,0 +1 @@ +parse_url(url, partToExtract[, key]) - extracts a part from a URL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_parse_url-1-67adfb10d4a35c4d031f26adde9f61ab b/sql/hive/src/test/resources/golden/udf_parse_url-1-67adfb10d4a35c4d031f26adde9f61ab new file mode 100644 index 0000000000000..7178e07a07e48 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_parse_url-1-67adfb10d4a35c4d031f26adde9f61ab @@ -0,0 +1,10 @@ +parse_url(url, partToExtract[, key]) - extracts a part from a URL +Parts: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO +key specifies which query to extract +Example: + > SELECT parse_url('http://facebook.com/path/p1.php?query=1', 'HOST') FROM src LIMIT 1; + 'facebook.com' + > SELECT parse_url('http://facebook.com/path/p1.php?query=1', 'QUERY') FROM src LIMIT 1; + 'query=1' + > SELECT parse_url('http://facebook.com/path/p1.php?query=1', 'QUERY', 'query') FROM src LIMIT 1; + '1' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_parse_url-2-ed7adf45f58ad014cf9f3d653b380a4d b/sql/hive/src/test/resources/golden/udf_parse_url-2-ed7adf45f58ad014cf9f3d653b380a4d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_parse_url-3-3a43b1f94ffb8082419bd7cc0b371ce2 b/sql/hive/src/test/resources/golden/udf_parse_url-3-3a43b1f94ffb8082419bd7cc0b371ce2 new file mode 100644 index 0000000000000..f5483d4e3dafe --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_parse_url-3-3a43b1f94ffb8082419bd7cc0b371ce2 @@ -0,0 +1 @@ +facebook.com /path1/p.php k1=v1&k2=v2 Ref1 v2 v1 NULL /path1/p.php?k1=v1&k2=v2 http NULL facebook.com \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_percentile-0-8f99f54ff944f252e47d0af1f4ed1553 b/sql/hive/src/test/resources/golden/udf_percentile-0-8f99f54ff944f252e47d0af1f4ed1553 new file mode 100644 index 0000000000000..2025042f5d493 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_percentile-0-8f99f54ff944f252e47d0af1f4ed1553 @@ -0,0 +1 @@ +percentile(expr, pc) - Returns the percentile(s) of expr at pc (range: [0,1]).pc can be a double or double array diff --git a/sql/hive/src/test/resources/golden/udf_percentile-1-c0825a744cd14917d2c904d014449a4a b/sql/hive/src/test/resources/golden/udf_percentile-1-c0825a744cd14917d2c904d014449a4a new file mode 100644 index 0000000000000..2025042f5d493 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_percentile-1-c0825a744cd14917d2c904d014449a4a @@ -0,0 +1 @@ +percentile(expr, pc) - Returns the percentile(s) of expr at pc (range: [0,1]).pc can be a double or double array diff --git a/sql/hive/src/test/resources/golden/udf_percentile-2-1d351f7e821fcaf66c6f7503e42fb291 b/sql/hive/src/test/resources/golden/udf_percentile-2-1d351f7e821fcaf66c6f7503e42fb291 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_percentile-2-1d351f7e821fcaf66c6f7503e42fb291 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_percentile-3-a7dc16cb82c595b18d4258a38a304b1e b/sql/hive/src/test/resources/golden/udf_percentile-3-a7dc16cb82c595b18d4258a38a304b1e new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_percentile-3-a7dc16cb82c595b18d4258a38a304b1e @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/udf_pmod-0-ed67184beaf84c0542117c26651938e1 b/sql/hive/src/test/resources/golden/udf_pmod-0-ed67184beaf84c0542117c26651938e1 new file mode 100644 index 0000000000000..5d2fc352ee060 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-0-ed67184beaf84c0542117c26651938e1 @@ -0,0 +1 @@ +a pmod b - Compute the positive modulo diff --git a/sql/hive/src/test/resources/golden/udf_pmod-1-90f75e01dcee85253a501d53b8562dae b/sql/hive/src/test/resources/golden/udf_pmod-1-90f75e01dcee85253a501d53b8562dae new file mode 100644 index 0000000000000..5d2fc352ee060 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-1-90f75e01dcee85253a501d53b8562dae @@ -0,0 +1 @@ +a pmod b - Compute the positive modulo diff --git a/sql/hive/src/test/resources/golden/udf_pmod-10-b2c7b3ae343b0a21037fe089c1348bf2 b/sql/hive/src/test/resources/golden/udf_pmod-10-b2c7b3ae343b0a21037fe089c1348bf2 new file mode 100644 index 0000000000000..0b46af11c4516 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-10-b2c7b3ae343b0a21037fe089c1348bf2 @@ -0,0 +1 @@ +6.89 51.7 18.09 diff --git a/sql/hive/src/test/resources/golden/udf_pmod-2-8ac9813b27801704082c6e9ea4cdc312 b/sql/hive/src/test/resources/golden/udf_pmod-2-8ac9813b27801704082c6e9ea4cdc312 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-2-8ac9813b27801704082c6e9ea4cdc312 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_pmod-3-26d9546f030281a29a50a3e8e5858234 b/sql/hive/src/test/resources/golden/udf_pmod-3-26d9546f030281a29a50a3e8e5858234 new file mode 100644 index 0000000000000..5eb0813b60eb6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-3-26d9546f030281a29a50a3e8e5858234 @@ -0,0 +1 @@ +8 51 15 diff --git a/sql/hive/src/test/resources/golden/udf_pmod-4-7695df16d24a821224676e6bad3d66d1 b/sql/hive/src/test/resources/golden/udf_pmod-4-7695df16d24a821224676e6bad3d66d1 new file mode 100644 index 0000000000000..e21e4b08e7a62 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-4-7695df16d24a821224676e6bad3d66d1 @@ -0,0 +1 @@ +5 50 0 diff --git a/sql/hive/src/test/resources/golden/udf_pmod-5-cf5311d51d44afb8d73f588e27d5e029 b/sql/hive/src/test/resources/golden/udf_pmod-5-cf5311d51d44afb8d73f588e27d5e029 new file mode 100644 index 0000000000000..e0bc2a844fb46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-5-cf5311d51d44afb8d73f588e27d5e029 @@ -0,0 +1 @@ +8 51 16 diff --git a/sql/hive/src/test/resources/golden/udf_pmod-6-3c09a8da2f5645e732c22a45d055125 b/sql/hive/src/test/resources/golden/udf_pmod-6-3c09a8da2f5645e732c22a45d055125 new file mode 100644 index 0000000000000..e0bc2a844fb46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-6-3c09a8da2f5645e732c22a45d055125 @@ -0,0 +1 @@ +8 51 16 diff --git a/sql/hive/src/test/resources/golden/udf_pmod-7-a5fcbb9c74f9ee98e65b74197b10f618 b/sql/hive/src/test/resources/golden/udf_pmod-7-a5fcbb9c74f9ee98e65b74197b10f618 new file mode 100644 index 0000000000000..e0bc2a844fb46 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-7-a5fcbb9c74f9ee98e65b74197b10f618 @@ -0,0 +1 @@ +8 51 16 diff --git a/sql/hive/src/test/resources/golden/udf_pmod-8-f49d1f1fab1d9bc19be787efbe6036dd b/sql/hive/src/test/resources/golden/udf_pmod-8-f49d1f1fab1d9bc19be787efbe6036dd new file mode 100644 index 0000000000000..48371142e9b5d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-8-f49d1f1fab1d9bc19be787efbe6036dd @@ -0,0 +1 @@ +6.8899984 51.700005 18.089996 diff --git a/sql/hive/src/test/resources/golden/udf_pmod-9-e7280393102077442aa1d10eb69a6d57 b/sql/hive/src/test/resources/golden/udf_pmod-9-e7280393102077442aa1d10eb69a6d57 new file mode 100644 index 0000000000000..ab842acd48b3c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pmod-9-e7280393102077442aa1d10eb69a6d57 @@ -0,0 +1 @@ +6.890000000000011 51.699999999999996 18.090000000000003 diff --git a/sql/hive/src/test/resources/golden/udf_positive-0-50ee5b92ad14e9f49d7ce6df7847c9b2 b/sql/hive/src/test/resources/golden/udf_positive-0-50ee5b92ad14e9f49d7ce6df7847c9b2 new file mode 100644 index 0000000000000..7c98729cc195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_positive-0-50ee5b92ad14e9f49d7ce6df7847c9b2 @@ -0,0 +1 @@ +positive a - Returns a \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_positive-1-1b98434a841d2248ed985c5f6ba2cc3c b/sql/hive/src/test/resources/golden/udf_positive-1-1b98434a841d2248ed985c5f6ba2cc3c new file mode 100644 index 0000000000000..7c98729cc195c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_positive-1-1b98434a841d2248ed985c5f6ba2cc3c @@ -0,0 +1 @@ +positive a - Returns a \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_positive-2-610d421e590f035c24e29694a68b0d23 b/sql/hive/src/test/resources/golden/udf_positive-2-610d421e590f035c24e29694a68b0d23 new file mode 100644 index 0000000000000..e8f11c444a808 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_positive-2-610d421e590f035c24e29694a68b0d23 @@ -0,0 +1 @@ +a + b - Returns a+b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_positive-3-400b238f4e6cdf7120be566b0ef079c5 b/sql/hive/src/test/resources/golden/udf_positive-3-400b238f4e6cdf7120be566b0ef079c5 new file mode 100644 index 0000000000000..e8f11c444a808 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_positive-3-400b238f4e6cdf7120be566b0ef079c5 @@ -0,0 +1 @@ +a + b - Returns a+b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_pow-0-c7f5178951dd45dc2a41c16729314d81 b/sql/hive/src/test/resources/golden/udf_pow-0-c7f5178951dd45dc2a41c16729314d81 new file mode 100644 index 0000000000000..43f197e360c82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pow-0-c7f5178951dd45dc2a41c16729314d81 @@ -0,0 +1 @@ +pow(x1, x2) - raise x1 to the power of x2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_pow-1-3c22c000c35144135aedbc7052f10803 b/sql/hive/src/test/resources/golden/udf_pow-1-3c22c000c35144135aedbc7052f10803 new file mode 100644 index 0000000000000..afc2e4462a1a8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_pow-1-3c22c000c35144135aedbc7052f10803 @@ -0,0 +1,5 @@ +pow(x1, x2) - raise x1 to the power of x2 +Synonyms: power +Example: + > SELECT pow(2, 3) FROM src LIMIT 1; + 8 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_power-0-57001d802c281743322d28bbc520cd4 b/sql/hive/src/test/resources/golden/udf_power-0-57001d802c281743322d28bbc520cd4 new file mode 100644 index 0000000000000..5e3a6a8f31fd3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_power-0-57001d802c281743322d28bbc520cd4 @@ -0,0 +1 @@ +power(x1, x2) - raise x1 to the power of x2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_power-1-ebd0398b2cb03f382a16382ddac13426 b/sql/hive/src/test/resources/golden/udf_power-1-ebd0398b2cb03f382a16382ddac13426 new file mode 100644 index 0000000000000..c3414e29768e3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_power-1-ebd0398b2cb03f382a16382ddac13426 @@ -0,0 +1,5 @@ +power(x1, x2) - raise x1 to the power of x2 +Synonyms: pow +Example: + > SELECT power(2, 3) FROM src LIMIT 1; + 8 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_printf-0-e86d559aeb84a4cc017a103182c22bfb b/sql/hive/src/test/resources/golden/udf_printf-0-e86d559aeb84a4cc017a103182c22bfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_printf-1-19c61fce27310ab2590062d643f7b26e b/sql/hive/src/test/resources/golden/udf_printf-1-19c61fce27310ab2590062d643f7b26e new file mode 100644 index 0000000000000..1635ff88dd768 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_printf-1-19c61fce27310ab2590062d643f7b26e @@ -0,0 +1 @@ +printf(String format, Obj... args) - function that can format strings according to printf-style format strings diff --git a/sql/hive/src/test/resources/golden/udf_printf-2-25aa6950cae2bb781c336378f63ceaee b/sql/hive/src/test/resources/golden/udf_printf-2-25aa6950cae2bb781c336378f63ceaee new file mode 100644 index 0000000000000..62440ee68e145 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_printf-2-25aa6950cae2bb781c336378f63ceaee @@ -0,0 +1,4 @@ +printf(String format, Obj... args) - function that can format strings according to printf-style format strings +Example: + > SELECT printf("Hello World %d %s", 100, "days")FROM src LIMIT 1; + "Hello World 100 days" diff --git a/sql/hive/src/test/resources/golden/udf_printf-3-9c568a0473888396bd46507e8b330c36 b/sql/hive/src/test/resources/golden/udf_printf-3-9c568a0473888396bd46507e8b330c36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_printf-4-91728e546b450bdcbb05ef30f13be475 b/sql/hive/src/test/resources/golden/udf_printf-4-91728e546b450bdcbb05ef30f13be475 new file mode 100644 index 0000000000000..39cb945991403 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_printf-4-91728e546b450bdcbb05ef30f13be475 @@ -0,0 +1 @@ +Hello World 100 days diff --git a/sql/hive/src/test/resources/golden/udf_printf-5-3141a0421605b091ee5a9e99d7d605fb b/sql/hive/src/test/resources/golden/udf_printf-5-3141a0421605b091ee5a9e99d7d605fb new file mode 100644 index 0000000000000..04bf5e552a576 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_printf-5-3141a0421605b091ee5a9e99d7d605fb @@ -0,0 +1 @@ +All Type Test: false, A, 15000, 1.234000e+01, +27183.2401, 2300.41, 32, corret, 0x1.002p8 diff --git a/sql/hive/src/test/resources/golden/udf_printf-6-ec37b73012f3cbbbc0422744b0db8294 b/sql/hive/src/test/resources/golden/udf_printf-6-ec37b73012f3cbbbc0422744b0db8294 new file mode 100644 index 0000000000000..2e9f7509968a3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_printf-6-ec37b73012f3cbbbc0422744b0db8294 @@ -0,0 +1 @@ +Color red, String Null: null, number1 123456, number2 00089, Integer Null: null, hex 0xff, float 3.14 Double Null: null diff --git a/sql/hive/src/test/resources/golden/udf_printf-7-5769f3a5b3300ca1d8b861229e976126 b/sql/hive/src/test/resources/golden/udf_printf-7-5769f3a5b3300ca1d8b861229e976126 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_radians-0-f899daf93b02ca681e0230a792c65e86 b/sql/hive/src/test/resources/golden/udf_radians-0-f899daf93b02ca681e0230a792c65e86 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_radians-1-eaaa62dd3935ff3152323dfafd136e93 b/sql/hive/src/test/resources/golden/udf_radians-1-eaaa62dd3935ff3152323dfafd136e93 new file mode 100644 index 0000000000000..116b6bc461ed0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_radians-1-eaaa62dd3935ff3152323dfafd136e93 @@ -0,0 +1 @@ +1.000000357564167 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_radians-2-bcaca433f704f71cf9d44c238a33c7b3 b/sql/hive/src/test/resources/golden/udf_radians-2-bcaca433f704f71cf9d44c238a33c7b3 new file mode 100644 index 0000000000000..aaf3b31fef488 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_radians-2-bcaca433f704f71cf9d44c238a33c7b3 @@ -0,0 +1 @@ +2.4999991485811655 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_radians-3-65e16c7b13de48a5d36793d0c7d35e14 b/sql/hive/src/test/resources/golden/udf_radians-3-65e16c7b13de48a5d36793d0c7d35e14 new file mode 100644 index 0000000000000..73ad88be4ef3d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_radians-3-65e16c7b13de48a5d36793d0c7d35e14 @@ -0,0 +1 @@ +radians(x) - Converts degrees to radians \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_radians-4-9f1b8ddf9be2e5f9b9b7ff4f00cfb66 b/sql/hive/src/test/resources/golden/udf_radians-4-9f1b8ddf9be2e5f9b9b7ff4f00cfb66 new file mode 100644 index 0000000000000..e0237c0058f55 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_radians-4-9f1b8ddf9be2e5f9b9b7ff4f00cfb66 @@ -0,0 +1,4 @@ +radians(x) - Converts degrees to radians +Example: + > SELECT radians(90) FROM src LIMIT 1; + 1.5707963267949mo diff --git a/sql/hive/src/test/resources/golden/udf_radians-5-f899daf93b02ca681e0230a792c65e86 b/sql/hive/src/test/resources/golden/udf_radians-5-f899daf93b02ca681e0230a792c65e86 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_radians-6-eaaa62dd3935ff3152323dfafd136e93 b/sql/hive/src/test/resources/golden/udf_radians-6-eaaa62dd3935ff3152323dfafd136e93 new file mode 100644 index 0000000000000..116b6bc461ed0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_radians-6-eaaa62dd3935ff3152323dfafd136e93 @@ -0,0 +1 @@ +1.000000357564167 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_radians-7-bcaca433f704f71cf9d44c238a33c7b3 b/sql/hive/src/test/resources/golden/udf_radians-7-bcaca433f704f71cf9d44c238a33c7b3 new file mode 100644 index 0000000000000..aaf3b31fef488 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_radians-7-bcaca433f704f71cf9d44c238a33c7b3 @@ -0,0 +1 @@ +2.4999991485811655 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_radians-8-65e16c7b13de48a5d36793d0c7d35e14 b/sql/hive/src/test/resources/golden/udf_radians-8-65e16c7b13de48a5d36793d0c7d35e14 new file mode 100644 index 0000000000000..73ad88be4ef3d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_radians-8-65e16c7b13de48a5d36793d0c7d35e14 @@ -0,0 +1 @@ +radians(x) - Converts degrees to radians \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_radians-9-9f1b8ddf9be2e5f9b9b7ff4f00cfb66 b/sql/hive/src/test/resources/golden/udf_radians-9-9f1b8ddf9be2e5f9b9b7ff4f00cfb66 new file mode 100644 index 0000000000000..e0237c0058f55 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_radians-9-9f1b8ddf9be2e5f9b9b7ff4f00cfb66 @@ -0,0 +1,4 @@ +radians(x) - Converts degrees to radians +Example: + > SELECT radians(90) FROM src LIMIT 1; + 1.5707963267949mo diff --git a/sql/hive/src/test/resources/golden/udf_rand-0-f6d991f4e0dfea517dfc3dcaf1ff6af2 b/sql/hive/src/test/resources/golden/udf_rand-0-f6d991f4e0dfea517dfc3dcaf1ff6af2 new file mode 100644 index 0000000000000..d19c5b50fe5c4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rand-0-f6d991f4e0dfea517dfc3dcaf1ff6af2 @@ -0,0 +1 @@ +rand([seed]) - Returns a pseudorandom number between 0 and 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_rand-1-c6229b8f2ca3001663229cfb8ee4763e b/sql/hive/src/test/resources/golden/udf_rand-1-c6229b8f2ca3001663229cfb8ee4763e new file mode 100644 index 0000000000000..d19c5b50fe5c4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rand-1-c6229b8f2ca3001663229cfb8ee4763e @@ -0,0 +1 @@ +rand([seed]) - Returns a pseudorandom number between 0 and 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_reflect-0-904138e2a1f831c308b7f0aacc859ae1 b/sql/hive/src/test/resources/golden/udf_reflect-0-904138e2a1f831c308b7f0aacc859ae1 new file mode 100644 index 0000000000000..1d7658151cd62 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_reflect-0-904138e2a1f831c308b7f0aacc859ae1 @@ -0,0 +1 @@ +reflect(class,method[,arg1[,arg2..]]) calls method with reflection diff --git a/sql/hive/src/test/resources/golden/udf_reflect-1-21ec7caa253c7f95b7cf60191140e2ee b/sql/hive/src/test/resources/golden/udf_reflect-1-21ec7caa253c7f95b7cf60191140e2ee new file mode 100644 index 0000000000000..ddf986c01e5b1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_reflect-1-21ec7caa253c7f95b7cf60191140e2ee @@ -0,0 +1,4 @@ +reflect(class,method[,arg1[,arg2..]]) calls method with reflection +Synonyms: java_method +Use this UDF to call Java methods by matching the argument signature + diff --git a/sql/hive/src/test/resources/golden/udf_reflect-2-b868357466bab2f04685c2dc73604cf0 b/sql/hive/src/test/resources/golden/udf_reflect-2-b868357466bab2f04685c2dc73604cf0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_reflect2-0-7bec330c7bc6f71cbaf9bf1883d1b184 b/sql/hive/src/test/resources/golden/udf_reflect2-0-7bec330c7bc6f71cbaf9bf1883d1b184 new file mode 100644 index 0000000000000..cd35e5b290db5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_reflect2-0-7bec330c7bc6f71cbaf9bf1883d1b184 @@ -0,0 +1 @@ +reflect2(arg0,method[,arg1[,arg2..]]) calls method of arg0 with reflection diff --git a/sql/hive/src/test/resources/golden/udf_reflect2-1-c5a05379f482215a5a484bed0299bf19 b/sql/hive/src/test/resources/golden/udf_reflect2-1-c5a05379f482215a5a484bed0299bf19 new file mode 100644 index 0000000000000..48ef97292ab62 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_reflect2-1-c5a05379f482215a5a484bed0299bf19 @@ -0,0 +1,3 @@ +reflect2(arg0,method[,arg1[,arg2..]]) calls method of arg0 with reflection +Use this UDF to call Java methods by matching the argument signature + diff --git a/sql/hive/src/test/resources/golden/udf_reflect2-2-effc057c78c00b0af26a4ac0f5f116ca b/sql/hive/src/test/resources/golden/udf_reflect2-2-effc057c78c00b0af26a4ac0f5f116ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_regexp-0-19917611f74aedc0922560f7f2595948 b/sql/hive/src/test/resources/golden/udf_regexp-0-19917611f74aedc0922560f7f2595948 new file mode 100644 index 0000000000000..3e2abd349cef7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_regexp-0-19917611f74aedc0922560f7f2595948 @@ -0,0 +1 @@ +str regexp regexp - Returns true if str matches regexp and false otherwise diff --git a/sql/hive/src/test/resources/golden/udf_regexp-1-f7f0527cd47612d7f256edd5f8963800 b/sql/hive/src/test/resources/golden/udf_regexp-1-f7f0527cd47612d7f256edd5f8963800 new file mode 100644 index 0000000000000..d6b5d52cd1be5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_regexp-1-f7f0527cd47612d7f256edd5f8963800 @@ -0,0 +1,5 @@ +str regexp regexp - Returns true if str matches regexp and false otherwise +Synonyms: rlike +Example: + > SELECT 'fb' regexp '.*' FROM src LIMIT 1; + true diff --git a/sql/hive/src/test/resources/golden/udf_regexp-2-5e1798db3ba058e7b202d8a98f228b11 b/sql/hive/src/test/resources/golden/udf_regexp-2-5e1798db3ba058e7b202d8a98f228b11 new file mode 100644 index 0000000000000..3c4f7ed353b35 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_regexp-2-5e1798db3ba058e7b202d8a98f228b11 @@ -0,0 +1 @@ +true true true true false false false false diff --git a/sql/hive/src/test/resources/golden/udf_regexp_extract-0-e251e1a4b1e191814f26c54b14ab6cd9 b/sql/hive/src/test/resources/golden/udf_regexp_extract-0-e251e1a4b1e191814f26c54b14ab6cd9 new file mode 100644 index 0000000000000..429057caf71f0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_regexp_extract-0-e251e1a4b1e191814f26c54b14ab6cd9 @@ -0,0 +1 @@ +regexp_extract(str, regexp[, idx]) - extracts a group that matches regexp \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_regexp_extract-1-8add879ab5904bd805412ef8723276fb b/sql/hive/src/test/resources/golden/udf_regexp_extract-1-8add879ab5904bd805412ef8723276fb new file mode 100644 index 0000000000000..30e237490811f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_regexp_extract-1-8add879ab5904bd805412ef8723276fb @@ -0,0 +1,4 @@ +regexp_extract(str, regexp[, idx]) - extracts a group that matches regexp +Example: + > SELECT regexp_extract('100-200', '(\d+)-(\d+)', 1) FROM src LIMIT 1; + '100' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_regexp_replace-0-3ef9cc6da51dd1f5c6b71cf8a464ca0e b/sql/hive/src/test/resources/golden/udf_regexp_replace-0-3ef9cc6da51dd1f5c6b71cf8a464ca0e new file mode 100644 index 0000000000000..1a38701d68875 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_regexp_replace-0-3ef9cc6da51dd1f5c6b71cf8a464ca0e @@ -0,0 +1 @@ +regexp_replace(str, regexp, rep) - replace all substrings of str that match regexp with rep \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_regexp_replace-1-e79b45aa220d3c4c3b4523ac9c897bc b/sql/hive/src/test/resources/golden/udf_regexp_replace-1-e79b45aa220d3c4c3b4523ac9c897bc new file mode 100644 index 0000000000000..bebfabaf637fb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_regexp_replace-1-e79b45aa220d3c4c3b4523ac9c897bc @@ -0,0 +1,4 @@ +regexp_replace(str, regexp, rep) - replace all substrings of str that match regexp with rep +Example: + > SELECT regexp_replace('100-200', '(\d+)', 'num') FROM src LIMIT 1; + 'num-num' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_repeat-0-fdeae3e88f27ef148281d69ac8c4b23b b/sql/hive/src/test/resources/golden/udf_repeat-0-fdeae3e88f27ef148281d69ac8c4b23b new file mode 100644 index 0000000000000..694c367436f3c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_repeat-0-fdeae3e88f27ef148281d69ac8c4b23b @@ -0,0 +1 @@ +repeat(str, n) - repeat str n times \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_repeat-1-836be47190989d8975a09a545ecbfe0b b/sql/hive/src/test/resources/golden/udf_repeat-1-836be47190989d8975a09a545ecbfe0b new file mode 100644 index 0000000000000..5df19ba1c2cbf --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_repeat-1-836be47190989d8975a09a545ecbfe0b @@ -0,0 +1,4 @@ +repeat(str, n) - repeat str n times +Example: + > SELECT repeat('123', 2) FROM src LIMIT 1; + '123123' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_repeat-2-e1dbea7182ec1653e1123b5b67a6d20a b/sql/hive/src/test/resources/golden/udf_repeat-2-e1dbea7182ec1653e1123b5b67a6d20a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_repeat-3-ba9dd02f59c74d63d60d60b6231a0365 b/sql/hive/src/test/resources/golden/udf_repeat-3-ba9dd02f59c74d63d60d60b6231a0365 new file mode 100644 index 0000000000000..45425cf087c09 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_repeat-3-ba9dd02f59c74d63d60d60b6231a0365 @@ -0,0 +1 @@ +FacebookFacebookFacebook \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_rlike-0-6ec6ef55ac041208627454e16b501d38 b/sql/hive/src/test/resources/golden/udf_rlike-0-6ec6ef55ac041208627454e16b501d38 new file mode 100644 index 0000000000000..fd9ac3081a1cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rlike-0-6ec6ef55ac041208627454e16b501d38 @@ -0,0 +1 @@ +str rlike regexp - Returns true if str matches regexp and false otherwise \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_rlike-1-829611a596e0c87431006f7247d25eca b/sql/hive/src/test/resources/golden/udf_rlike-1-829611a596e0c87431006f7247d25eca new file mode 100644 index 0000000000000..43b06945caa54 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rlike-1-829611a596e0c87431006f7247d25eca @@ -0,0 +1,5 @@ +str rlike regexp - Returns true if str matches regexp and false otherwise +Synonyms: regexp +Example: + > SELECT 'fb' rlike '.*' FROM src LIMIT 1; + true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round-0-10b53ca1f15fd7879365926f86512d15 b/sql/hive/src/test/resources/golden/udf_round-0-10b53ca1f15fd7879365926f86512d15 new file mode 100644 index 0000000000000..e4586b2e73a93 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round-0-10b53ca1f15fd7879365926f86512d15 @@ -0,0 +1 @@ +round(x[, d]) - round x to d decimal places \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round-1-2367bcc43510dedc80bdb6707e434da8 b/sql/hive/src/test/resources/golden/udf_round-1-2367bcc43510dedc80bdb6707e434da8 new file mode 100644 index 0000000000000..c0d5b480e9751 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round-1-2367bcc43510dedc80bdb6707e434da8 @@ -0,0 +1,4 @@ +round(x[, d]) - round x to d decimal places +Example: + > SELECT round(12.3456, 1) FROM src LIMIT 1; + 12.3' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round-2-9ffa2b573360cd879338de46d91ab374 b/sql/hive/src/test/resources/golden/udf_round-2-9ffa2b573360cd879338de46d91ab374 new file mode 100644 index 0000000000000..0924e3869076d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round-2-9ffa2b573360cd879338de46d91ab374 @@ -0,0 +1 @@ +NULL NULL NULL Infinity NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round-3-42a221909d3f7ed51bed01a65670461c b/sql/hive/src/test/resources/golden/udf_round-3-42a221909d3f7ed51bed01a65670461c new file mode 100644 index 0000000000000..3b9c30929a240 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round-3-42a221909d3f7ed51bed01a65670461c @@ -0,0 +1 @@ +55555 55555.0 55555.0 55555.0 55555.0 55560.0 55600.0 56000.0 60000.0 100000.0 0.0 0.0 0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round-4-dc80ec5189a4c6ce07688df3debe7de4 b/sql/hive/src/test/resources/golden/udf_round-4-dc80ec5189a4c6ce07688df3debe7de4 new file mode 100644 index 0000000000000..1f243f6cbc6db --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round-4-dc80ec5189a4c6ce07688df3debe7de4 @@ -0,0 +1 @@ +125.0 125.0 125.3 125.32 125.315 125.315 130.0 100.0 0.0 0.0 -125.0 -125.0 -125.3 -125.32 -125.315 -125.315 -130.0 -100.0 0.0 0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round-5-a2414e7845ffafc61f75465508a1850a b/sql/hive/src/test/resources/golden/udf_round-5-a2414e7845ffafc61f75465508a1850a new file mode 100644 index 0000000000000..918404cec8047 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round-5-a2414e7845ffafc61f75465508a1850a @@ -0,0 +1 @@ +0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.1 3.14 3.142 3.1416 3.14159 3.141593 3.1415927 3.14159265 3.141592654 3.1415926536 3.14159265359 3.14159265359 3.1415926535898 3.1415926535898 3.14159265358979 3.141592653589793 3.141592653589793 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round-6-48439efa5c34e7589ab5003ed916f12b b/sql/hive/src/test/resources/golden/udf_round-6-48439efa5c34e7589ab5003ed916f12b new file mode 100644 index 0000000000000..af105563af144 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round-6-48439efa5c34e7589ab5003ed916f12b @@ -0,0 +1 @@ +1809242.315111134 -1809242.315111134 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_2-0-91afaf77ef4061fa20005a3c87dfef32 b/sql/hive/src/test/resources/golden/udf_round_2-0-91afaf77ef4061fa20005a3c87dfef32 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_round_2-1-5e44354af73865d03e9088c0232f16ce b/sql/hive/src/test/resources/golden/udf_round_2-1-5e44354af73865d03e9088c0232f16ce new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_round_2-2-83f91f60dcb2036b61b8b21f18281298 b/sql/hive/src/test/resources/golden/udf_round_2-2-83f91f60dcb2036b61b8b21f18281298 new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_2-2-83f91f60dcb2036b61b8b21f18281298 @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_2-3-c62cf7b74a91f605cf669e34a9315f93 b/sql/hive/src/test/resources/golden/udf_round_2-3-c62cf7b74a91f605cf669e34a9315f93 new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_2-3-c62cf7b74a91f605cf669e34a9315f93 @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_2-4-797fa8ed05cb953327d0f6306b30d6c3 b/sql/hive/src/test/resources/golden/udf_round_2-4-797fa8ed05cb953327d0f6306b30d6c3 new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_2-4-797fa8ed05cb953327d0f6306b30d6c3 @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_2-5-e41b862db8cc76c1fe004cf006fad50b b/sql/hive/src/test/resources/golden/udf_round_2-5-e41b862db8cc76c1fe004cf006fad50b new file mode 100644 index 0000000000000..f40e633f703c9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_2-5-e41b862db8cc76c1fe004cf006fad50b @@ -0,0 +1 @@ +Infinity Infinity Infinity Infinity \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_3-0-8415af605db167315e4d9d3c69d89e6c b/sql/hive/src/test/resources/golden/udf_round_3-0-8415af605db167315e4d9d3c69d89e6c new file mode 100644 index 0000000000000..3714de0db18dc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_3-0-8415af605db167315e4d9d3c69d89e6c @@ -0,0 +1 @@ +-128 127 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_3-1-3ecc9de58a7ea3af5b2315ca119403d0 b/sql/hive/src/test/resources/golden/udf_round_3-1-3ecc9de58a7ea3af5b2315ca119403d0 new file mode 100644 index 0000000000000..a9265d7b8a1b7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_3-1-3ecc9de58a7ea3af5b2315ca119403d0 @@ -0,0 +1 @@ +-32768 32767 -129 128 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_3-2-5e7ada966f726ceb748f98c20eab4f10 b/sql/hive/src/test/resources/golden/udf_round_3-2-5e7ada966f726ceb748f98c20eab4f10 new file mode 100644 index 0000000000000..2d25f54073df7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_3-2-5e7ada966f726ceb748f98c20eab4f10 @@ -0,0 +1 @@ +-2147483648 2147483647 -32769 32768 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_3-3-e94ab3326df006c7203ead86752f16a9 b/sql/hive/src/test/resources/golden/udf_round_3-3-e94ab3326df006c7203ead86752f16a9 new file mode 100644 index 0000000000000..41a2624c6cfeb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_3-3-e94ab3326df006c7203ead86752f16a9 @@ -0,0 +1 @@ +-9223372036854775808 9223372036854775807 -2147483649 2147483648 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_round_3-4-c3227c37fbbddd79a423bd6abe67a6d7 b/sql/hive/src/test/resources/golden/udf_round_3-4-c3227c37fbbddd79a423bd6abe67a6d7 new file mode 100644 index 0000000000000..98d3f53dfc442 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_round_3-4-c3227c37fbbddd79a423bd6abe67a6d7 @@ -0,0 +1 @@ +126.0 127.0 32766.0 32767.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_rpad-0-56de896c5fe8b40b22a9ed55ed79889c b/sql/hive/src/test/resources/golden/udf_rpad-0-56de896c5fe8b40b22a9ed55ed79889c new file mode 100644 index 0000000000000..7cb2d71d4b80d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rpad-0-56de896c5fe8b40b22a9ed55ed79889c @@ -0,0 +1 @@ +rpad(str, len, pad) - Returns str, right-padded with pad to a length of len \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_rpad-1-48d17e5d5d6188300d048f987fab2ca0 b/sql/hive/src/test/resources/golden/udf_rpad-1-48d17e5d5d6188300d048f987fab2ca0 new file mode 100644 index 0000000000000..2b198b8dc96c4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rpad-1-48d17e5d5d6188300d048f987fab2ca0 @@ -0,0 +1,6 @@ +rpad(str, len, pad) - Returns str, right-padded with pad to a length of len +If str is longer than len, the return value is shortened to len characters. +Example: + > SELECT rpad('hi', 5, '??') FROM src LIMIT 1; + 'hi???' > SELECT rpad('hi', 1, '??') FROM src LIMIT 1; + 'h' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_rpad-2-48835c7f49d78f8a6da2a90e11514b3 b/sql/hive/src/test/resources/golden/udf_rpad-2-48835c7f49d78f8a6da2a90e11514b3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_rpad-3-dcad885650ea575ab1ac5cfeb76cf871 b/sql/hive/src/test/resources/golden/udf_rpad-3-dcad885650ea575ab1ac5cfeb76cf871 new file mode 100644 index 0000000000000..b2645e365c8a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rpad-3-dcad885650ea575ab1ac5cfeb76cf871 @@ -0,0 +1 @@ +h hi... hi1231 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_rtrim-0-7acca21c725995febdf2a9c1fdf0535a b/sql/hive/src/test/resources/golden/udf_rtrim-0-7acca21c725995febdf2a9c1fdf0535a new file mode 100644 index 0000000000000..94d6aeed8f533 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rtrim-0-7acca21c725995febdf2a9c1fdf0535a @@ -0,0 +1 @@ +rtrim(str) - Removes the trailing space characters from str \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_rtrim-1-66d61255134c09d37cbfedd757ae47fd b/sql/hive/src/test/resources/golden/udf_rtrim-1-66d61255134c09d37cbfedd757ae47fd new file mode 100644 index 0000000000000..957e608a7c732 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_rtrim-1-66d61255134c09d37cbfedd757ae47fd @@ -0,0 +1,4 @@ +rtrim(str) - Removes the trailing space characters from str +Example: + > SELECT rtrim('facebook ') FROM src LIMIT 1; + 'facebook' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_second-0-e004a6f20da3fa6db868ec847b217ff2 b/sql/hive/src/test/resources/golden/udf_second-0-e004a6f20da3fa6db868ec847b217ff2 new file mode 100644 index 0000000000000..577c90254cb5a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_second-0-e004a6f20da3fa6db868ec847b217ff2 @@ -0,0 +1 @@ +second(date) - Returns the second of date \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_second-1-3525f55f4f13253c42b3abaa53d77888 b/sql/hive/src/test/resources/golden/udf_second-1-3525f55f4f13253c42b3abaa53d77888 new file mode 100644 index 0000000000000..4b48294e5b9ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_second-1-3525f55f4f13253c42b3abaa53d77888 @@ -0,0 +1,7 @@ +second(date) - Returns the second of date +date is a string in the format of 'yyyy-MM-dd HH:mm:ss' or 'HH:mm:ss'. +Example: + > SELECT second('2009-07-30 12:58:59') FROM src LIMIT 1; + 59 + > SELECT second('12:58:59') FROM src LIMIT 1; + 59 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_second-2-d678372e3837a16be245d2e33482f17f b/sql/hive/src/test/resources/golden/udf_second-2-d678372e3837a16be245d2e33482f17f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_second-3-2496e4d3c64ca028184431c2930d82cf b/sql/hive/src/test/resources/golden/udf_second-3-2496e4d3c64ca028184431c2930d82cf new file mode 100644 index 0000000000000..4d5ef5cf4a699 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_second-3-2496e4d3c64ca028184431c2930d82cf @@ -0,0 +1 @@ +15 15 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sentences-0-ec0dad44fa033691a731f6e4c6b5cf7f b/sql/hive/src/test/resources/golden/udf_sentences-0-ec0dad44fa033691a731f6e4c6b5cf7f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-1-2dc07f4f0f0cb20d08c424e067ed8f69 b/sql/hive/src/test/resources/golden/udf_sentences-1-2dc07f4f0f0cb20d08c424e067ed8f69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-10-ce188a53f69129c14cbf378d2c3f6630 b/sql/hive/src/test/resources/golden/udf_sentences-10-ce188a53f69129c14cbf378d2c3f6630 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-11-3c8672506e23434187caf4e0064a8a80 b/sql/hive/src/test/resources/golden/udf_sentences-11-3c8672506e23434187caf4e0064a8a80 new file mode 100644 index 0000000000000..fea4f860c8465 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sentences-11-3c8672506e23434187caf4e0064a8a80 @@ -0,0 +1,31 @@ +41626672616765 +446174656E +48697665 +496E74657270756E6B74696F6E +4D756C7469706C65 +53C3A4747A65 +554446 +5665727765636873656C756E67 +5765726B7A657567 +616C73 +61757367657A656963686E65746573 +646965 +646965 +6469657365 +646F6368 +65696E +66756E6B74696F6E69657274 +66C3BC72 +676562696C646574656E +696D6D6572 +697374 +697374 +6D61736368696E656C6C65 +6E6F6368 +7363686C65636874 +756E64 +756E64 +7669656C6C6569636874 +7669656C7365697469676572 +766F6E +C39C6265727365747A756E67 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sentences-12-d55c04a079ca97402509868f24921685 b/sql/hive/src/test/resources/golden/udf_sentences-12-d55c04a079ca97402509868f24921685 new file mode 100644 index 0000000000000..c49ca6bb5a1b0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sentences-12-d55c04a079ca97402509868f24921685 @@ -0,0 +1 @@ +[["Hive","is","an","excellent","tool","for","data","querying","and","perhaps","more","versatile","than","machine","translation"],["Multiple","ill-formed","sentences","confounding","punctuation","and","yet","this","UDF","still","works"]] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sentences-2-1f218343f90e698fb9ed81c4f51d3d14 b/sql/hive/src/test/resources/golden/udf_sentences-2-1f218343f90e698fb9ed81c4f51d3d14 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-3-ce188a53f69129c14cbf378d2c3f6630 b/sql/hive/src/test/resources/golden/udf_sentences-3-ce188a53f69129c14cbf378d2c3f6630 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-4-3c8672506e23434187caf4e0064a8a80 b/sql/hive/src/test/resources/golden/udf_sentences-4-3c8672506e23434187caf4e0064a8a80 new file mode 100644 index 0000000000000..b798628e56686 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sentences-4-3c8672506e23434187caf4e0064a8a80 @@ -0,0 +1,50 @@ +48697665 +48697665 +554446 +6175746F6D617469717565 +6175746F6D617469717565 +6365 +636F6E667573696F6E +6465 +6465 +646573 +646F6E6EC3A96573 +646F6E6EC3A96573 +656E636F7265 +657374 +657374 +6574 +6574 +6574 +657863656C6C656E74 +657863656C6C656E74 +666F6E6374696F6E6E65 +666F726DC3A96573 +6C61 +6C61 +6C61 +6C6573 +6C6573 +6D616C +6D756C7469706C6573 +6F7574696C +6F7574696C +706575742DC3AA747265 +706575742DC3AA747265 +70687261736573 +706C7573 +706C7573 +706F6C7976616C656E74 +706F6C7976616C656E74 +706F6E6374756174696F6E +706F7572 +706F7572 +706F757274616E74 +717565 +717565 +72657175C3AA746573 +72657175C3AA746573 +74726164756374696F6E +74726164756374696F6E +756E +756E \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sentences-5-60823f4912be26bee1a0b52a0a9588a9 b/sql/hive/src/test/resources/golden/udf_sentences-5-60823f4912be26bee1a0b52a0a9588a9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-6-27b7eeae683a87507f35e61fd4ce67de b/sql/hive/src/test/resources/golden/udf_sentences-6-27b7eeae683a87507f35e61fd4ce67de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-7-ec0dad44fa033691a731f6e4c6b5cf7f b/sql/hive/src/test/resources/golden/udf_sentences-7-ec0dad44fa033691a731f6e4c6b5cf7f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-8-2dc07f4f0f0cb20d08c424e067ed8f69 b/sql/hive/src/test/resources/golden/udf_sentences-8-2dc07f4f0f0cb20d08c424e067ed8f69 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sentences-9-68c61b4882802e416d5adaa2de440b59 b/sql/hive/src/test/resources/golden/udf_sentences-9-68c61b4882802e416d5adaa2de440b59 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sign-0-14f3c3034ac8039fc81681003bbf5e0e b/sql/hive/src/test/resources/golden/udf_sign-0-14f3c3034ac8039fc81681003bbf5e0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sign-1-e6cbbd93f7d4fa596ecb7ef44d12c159 b/sql/hive/src/test/resources/golden/udf_sign-1-e6cbbd93f7d4fa596ecb7ef44d12c159 new file mode 100644 index 0000000000000..171538eb0b00f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-1-e6cbbd93f7d4fa596ecb7ef44d12c159 @@ -0,0 +1 @@ +0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-10-fc7341f89c3cd3c43e436242d8aa61fa b/sql/hive/src/test/resources/golden/udf_sign-10-fc7341f89c3cd3c43e436242d8aa61fa new file mode 100644 index 0000000000000..3345fbb8f2c35 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-10-fc7341f89c3cd3c43e436242d8aa61fa @@ -0,0 +1 @@ +sign(x) - returns the sign of x ) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-11-74237f5ecc497813cf9738b21647847a b/sql/hive/src/test/resources/golden/udf_sign-11-74237f5ecc497813cf9738b21647847a new file mode 100644 index 0000000000000..bdacec8810e77 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-11-74237f5ecc497813cf9738b21647847a @@ -0,0 +1,4 @@ +sign(x) - returns the sign of x ) +Example: + > SELECT sign(40) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-2-85b743f0eed93904789cde4d1b5eafef b/sql/hive/src/test/resources/golden/udf_sign-2-85b743f0eed93904789cde4d1b5eafef new file mode 100644 index 0000000000000..31a5b0b81dc51 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-2-85b743f0eed93904789cde4d1b5eafef @@ -0,0 +1 @@ +-1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-3-9eeb3985359429abba5d1dd702c66b0d b/sql/hive/src/test/resources/golden/udf_sign-3-9eeb3985359429abba5d1dd702c66b0d new file mode 100644 index 0000000000000..9f8e9b69a33f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-3-9eeb3985359429abba5d1dd702c66b0d @@ -0,0 +1 @@ +1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-4-fc7341f89c3cd3c43e436242d8aa61fa b/sql/hive/src/test/resources/golden/udf_sign-4-fc7341f89c3cd3c43e436242d8aa61fa new file mode 100644 index 0000000000000..3345fbb8f2c35 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-4-fc7341f89c3cd3c43e436242d8aa61fa @@ -0,0 +1 @@ +sign(x) - returns the sign of x ) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-5-74237f5ecc497813cf9738b21647847a b/sql/hive/src/test/resources/golden/udf_sign-5-74237f5ecc497813cf9738b21647847a new file mode 100644 index 0000000000000..bdacec8810e77 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-5-74237f5ecc497813cf9738b21647847a @@ -0,0 +1,4 @@ +sign(x) - returns the sign of x ) +Example: + > SELECT sign(40) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-6-14f3c3034ac8039fc81681003bbf5e0e b/sql/hive/src/test/resources/golden/udf_sign-6-14f3c3034ac8039fc81681003bbf5e0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sign-7-e6cbbd93f7d4fa596ecb7ef44d12c159 b/sql/hive/src/test/resources/golden/udf_sign-7-e6cbbd93f7d4fa596ecb7ef44d12c159 new file mode 100644 index 0000000000000..171538eb0b00f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-7-e6cbbd93f7d4fa596ecb7ef44d12c159 @@ -0,0 +1 @@ +0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-8-85b743f0eed93904789cde4d1b5eafef b/sql/hive/src/test/resources/golden/udf_sign-8-85b743f0eed93904789cde4d1b5eafef new file mode 100644 index 0000000000000..31a5b0b81dc51 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-8-85b743f0eed93904789cde4d1b5eafef @@ -0,0 +1 @@ +-1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sign-9-9eeb3985359429abba5d1dd702c66b0d b/sql/hive/src/test/resources/golden/udf_sign-9-9eeb3985359429abba5d1dd702c66b0d new file mode 100644 index 0000000000000..9f8e9b69a33f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sign-9-9eeb3985359429abba5d1dd702c66b0d @@ -0,0 +1 @@ +1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sin-0-40b50393869eb0bcde66e36fe41078ee b/sql/hive/src/test/resources/golden/udf_sin-0-40b50393869eb0bcde66e36fe41078ee new file mode 100644 index 0000000000000..6155d9a2eae55 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sin-0-40b50393869eb0bcde66e36fe41078ee @@ -0,0 +1 @@ +sin(x) - returns the sine of x (x is in radians) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sin-1-2f867f432fb322e21dce353d7eb50c63 b/sql/hive/src/test/resources/golden/udf_sin-1-2f867f432fb322e21dce353d7eb50c63 new file mode 100644 index 0000000000000..a39ed8840b916 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sin-1-2f867f432fb322e21dce353d7eb50c63 @@ -0,0 +1,4 @@ +sin(x) - returns the sine of x (x is in radians) +Example: + > SELECT sin(0) FROM src LIMIT 1; + 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sin-2-3f8e9d5a3e69f39a99090840be2b5cab b/sql/hive/src/test/resources/golden/udf_sin-2-3f8e9d5a3e69f39a99090840be2b5cab new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sin-2-3f8e9d5a3e69f39a99090840be2b5cab @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sin-3-e3b2b18e530eb504ea5017ca348f12e3 b/sql/hive/src/test/resources/golden/udf_sin-3-e3b2b18e530eb504ea5017ca348f12e3 new file mode 100644 index 0000000000000..ee21925b0ccc5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sin-3-e3b2b18e530eb504ea5017ca348f12e3 @@ -0,0 +1 @@ +0.8304973704919705 0.9999996829318346 -0.479425538604203 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_size-0-9c49a52514b1b940a7e8bb93c35eda62 b/sql/hive/src/test/resources/golden/udf_size-0-9c49a52514b1b940a7e8bb93c35eda62 new file mode 100644 index 0000000000000..d8952629349a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_size-0-9c49a52514b1b940a7e8bb93c35eda62 @@ -0,0 +1 @@ +size(a) - Returns the size of a diff --git a/sql/hive/src/test/resources/golden/udf_size-1-3608160636eaa7e053171bdcefc0b1a8 b/sql/hive/src/test/resources/golden/udf_size-1-3608160636eaa7e053171bdcefc0b1a8 new file mode 100644 index 0000000000000..d8952629349a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_size-1-3608160636eaa7e053171bdcefc0b1a8 @@ -0,0 +1 @@ +size(a) - Returns the size of a diff --git a/sql/hive/src/test/resources/golden/udf_size-2-96d41c9f054662827d1b6b63f5dd8db7 b/sql/hive/src/test/resources/golden/udf_size-2-96d41c9f054662827d1b6b63f5dd8db7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_size-3-63df892215b6ce189d6c3e20cfc4bdbd b/sql/hive/src/test/resources/golden/udf_size-3-63df892215b6ce189d6c3e20cfc4bdbd new file mode 100644 index 0000000000000..08a708b090282 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_size-3-63df892215b6ce189d6c3e20cfc4bdbd @@ -0,0 +1 @@ +3 1 1 -1 diff --git a/sql/hive/src/test/resources/golden/udf_smallint-0-f28e857ef74c967303855c21dc60c042 b/sql/hive/src/test/resources/golden/udf_smallint-0-f28e857ef74c967303855c21dc60c042 new file mode 100644 index 0000000000000..572ecb0462eb7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_smallint-0-f28e857ef74c967303855c21dc60c042 @@ -0,0 +1 @@ +There is no documentation for function 'smallint' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_smallint-1-37d8db74267ae370d6a076b3057c5ed6 b/sql/hive/src/test/resources/golden/udf_smallint-1-37d8db74267ae370d6a076b3057c5ed6 new file mode 100644 index 0000000000000..572ecb0462eb7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_smallint-1-37d8db74267ae370d6a076b3057c5ed6 @@ -0,0 +1 @@ +There is no documentation for function 'smallint' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-0-e86d559aeb84a4cc017a103182c22bfb b/sql/hive/src/test/resources/golden/udf_sort_array-0-e86d559aeb84a4cc017a103182c22bfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-1-976cd8b6b50a2748bbc768aa5e11cf82 b/sql/hive/src/test/resources/golden/udf_sort_array-1-976cd8b6b50a2748bbc768aa5e11cf82 new file mode 100644 index 0000000000000..d514df4191b89 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sort_array-1-976cd8b6b50a2748bbc768aa5e11cf82 @@ -0,0 +1 @@ +sort_array(array(obj1, obj2,...)) - Sorts the input array in ascending order according to the natural ordering of the array elements. diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-2-c429ec85a6da60ebd4bc6f0f266e8b93 b/sql/hive/src/test/resources/golden/udf_sort_array-2-c429ec85a6da60ebd4bc6f0f266e8b93 new file mode 100644 index 0000000000000..43e36513de881 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sort_array-2-c429ec85a6da60ebd4bc6f0f266e8b93 @@ -0,0 +1,4 @@ +sort_array(array(obj1, obj2,...)) - Sorts the input array in ascending order according to the natural ordering of the array elements. +Example: + > SELECT sort_array(array('b', 'd', 'c', 'a')) FROM src LIMIT 1; + 'a', 'b', 'c', 'd' diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-3-55c4cdaf8438b06675d60848d68f35de b/sql/hive/src/test/resources/golden/udf_sort_array-3-55c4cdaf8438b06675d60848d68f35de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-4-3edb0151fae0622cb79cd04156cb4c44 b/sql/hive/src/test/resources/golden/udf_sort_array-4-3edb0151fae0622cb79cd04156cb4c44 new file mode 100644 index 0000000000000..2e9458debfd0f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sort_array-4-3edb0151fae0622cb79cd04156cb4c44 @@ -0,0 +1 @@ +["a","b","c","d","e","f","g"] diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-5-5d7dfaa9e4137938559eb536e28f8d0e b/sql/hive/src/test/resources/golden/udf_sort_array-5-5d7dfaa9e4137938559eb536e28f8d0e new file mode 100644 index 0000000000000..94f18d09863a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sort_array-5-5d7dfaa9e4137938559eb536e28f8d0e @@ -0,0 +1 @@ +["enterprise databases","hadoop distributed file system","hadoop map-reduce"] diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-6-f754ac1296d16e168abb3d0ebcc35bd3 b/sql/hive/src/test/resources/golden/udf_sort_array-6-f754ac1296d16e168abb3d0ebcc35bd3 new file mode 100644 index 0000000000000..e1968ef44a2eb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sort_array-6-f754ac1296d16e168abb3d0ebcc35bd3 @@ -0,0 +1 @@ +[1,2,3,4,5,6,7,8,9] diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-7-a9c52a8684cefc095470f5a93f63d2a8 b/sql/hive/src/test/resources/golden/udf_sort_array-7-a9c52a8684cefc095470f5a93f63d2a8 new file mode 100644 index 0000000000000..b6c12ace4162b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sort_array-7-a9c52a8684cefc095470f5a93f63d2a8 @@ -0,0 +1 @@ +[-3.445,0.777,1.0,1.325,2.003,2.333,9.0] diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-8-d79f0084177230a7a2845c4791c22d25 b/sql/hive/src/test/resources/golden/udf_sort_array-8-d79f0084177230a7a2845c4791c22d25 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_sort_array-9-45ef2679e195a269878527d5f264488a b/sql/hive/src/test/resources/golden/udf_sort_array-9-45ef2679e195a269878527d5f264488a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_space-0-91e879c9f01d90eab7bf12fcef256010 b/sql/hive/src/test/resources/golden/udf_space-0-91e879c9f01d90eab7bf12fcef256010 new file mode 100644 index 0000000000000..ed5bda787df23 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_space-0-91e879c9f01d90eab7bf12fcef256010 @@ -0,0 +1 @@ +space(n) - returns n spaces \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_space-1-e4eaf5e96807e122548cb43be9a26754 b/sql/hive/src/test/resources/golden/udf_space-1-e4eaf5e96807e122548cb43be9a26754 new file mode 100644 index 0000000000000..5713d4b0464be --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_space-1-e4eaf5e96807e122548cb43be9a26754 @@ -0,0 +1,4 @@ +space(n) - returns n spaces +Example: + > SELECT space(2) FROM src LIMIT 1; + ' ' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_space-2-a23a06eef37709e8587647a74bbfa7e8 b/sql/hive/src/test/resources/golden/udf_space-2-a23a06eef37709e8587647a74bbfa7e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_space-3-59903e27d8188d6209e007ff643d5956 b/sql/hive/src/test/resources/golden/udf_space-3-59903e27d8188d6209e007ff643d5956 new file mode 100644 index 0000000000000..85a16b2abe5ef --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_space-3-59903e27d8188d6209e007ff643d5956 @@ -0,0 +1 @@ +10 0 1 0 0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_space-4-7adb35ad867ba3e980d937a0038ac1a5 b/sql/hive/src/test/resources/golden/udf_space-4-7adb35ad867ba3e980d937a0038ac1a5 new file mode 100644 index 0000000000000..8dfaf2745f666 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_space-4-7adb35ad867ba3e980d937a0038ac1a5 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_split-0-7accac7fc71ba74d61c01a69d3978338 b/sql/hive/src/test/resources/golden/udf_split-0-7accac7fc71ba74d61c01a69d3978338 new file mode 100644 index 0000000000000..6b183ccfb17b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_split-0-7accac7fc71ba74d61c01a69d3978338 @@ -0,0 +1 @@ +split(str, regex) - Splits str around occurances that match regex \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_split-1-ebe303dfc3db504deffe5c355efd0fd1 b/sql/hive/src/test/resources/golden/udf_split-1-ebe303dfc3db504deffe5c355efd0fd1 new file mode 100644 index 0000000000000..9e5c522da155b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_split-1-ebe303dfc3db504deffe5c355efd0fd1 @@ -0,0 +1,4 @@ +split(str, regex) - Splits str around occurances that match regex +Example: + > SELECT split('oneAtwoBthreeC', '[ABC]') FROM src LIMIT 1; + ["one", "two", "three"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_split-2-7bba11f8fc359f2d4b863cda11c643f9 b/sql/hive/src/test/resources/golden/udf_split-2-7bba11f8fc359f2d4b863cda11c643f9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_split-3-c08ccb3ccd2bdc89c5c3745b63305f23 b/sql/hive/src/test/resources/golden/udf_split-3-c08ccb3ccd2bdc89c5c3745b63305f23 new file mode 100644 index 0000000000000..9174f1a92557e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_split-3-c08ccb3ccd2bdc89c5c3745b63305f23 @@ -0,0 +1 @@ +["a","b","c"] ["one","two","three"] [] ["5","4","1","2"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sqrt-0-d5e4a818c2b3255ef0e32876cd8ed240 b/sql/hive/src/test/resources/golden/udf_sqrt-0-d5e4a818c2b3255ef0e32876cd8ed240 new file mode 100644 index 0000000000000..eadd6eeb8b149 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sqrt-0-d5e4a818c2b3255ef0e32876cd8ed240 @@ -0,0 +1 @@ +sqrt(x) - returns the square root of x \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sqrt-1-323cb8b7f5f2c93bdb1b5aed77c08e77 b/sql/hive/src/test/resources/golden/udf_sqrt-1-323cb8b7f5f2c93bdb1b5aed77c08e77 new file mode 100644 index 0000000000000..74df32f221278 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sqrt-1-323cb8b7f5f2c93bdb1b5aed77c08e77 @@ -0,0 +1,4 @@ +sqrt(x) - returns the square root of x +Example: + > SELECT sqrt(4) FROM src LIMIT 1; + 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_std-0-e3613484de2b3fa707995720ec3f8a5b b/sql/hive/src/test/resources/golden/udf_std-0-e3613484de2b3fa707995720ec3f8a5b new file mode 100644 index 0000000000000..2966c01c1b7b2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_std-0-e3613484de2b3fa707995720ec3f8a5b @@ -0,0 +1 @@ +std(x) - Returns the standard deviation of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_std-1-6759bde0e50a3607b7c3fd5a93cbd027 b/sql/hive/src/test/resources/golden/udf_std-1-6759bde0e50a3607b7c3fd5a93cbd027 new file mode 100644 index 0000000000000..388eaa1c7439a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_std-1-6759bde0e50a3607b7c3fd5a93cbd027 @@ -0,0 +1,2 @@ +std(x) - Returns the standard deviation of a set of numbers +Synonyms: stddev_pop, stddev \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_stddev-0-ad7627185d89a60b83ce19966eddbc92 b/sql/hive/src/test/resources/golden/udf_stddev-0-ad7627185d89a60b83ce19966eddbc92 new file mode 100644 index 0000000000000..74c6e1eacc379 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_stddev-0-ad7627185d89a60b83ce19966eddbc92 @@ -0,0 +1 @@ +stddev(x) - Returns the standard deviation of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_stddev-1-18e1d598820013453fad45852e1a303d b/sql/hive/src/test/resources/golden/udf_stddev-1-18e1d598820013453fad45852e1a303d new file mode 100644 index 0000000000000..1c461b68c1440 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_stddev-1-18e1d598820013453fad45852e1a303d @@ -0,0 +1,2 @@ +stddev(x) - Returns the standard deviation of a set of numbers +Synonyms: stddev_pop, std \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_stddev_pop-0-96788538f1f20eb879a1add4bb5f9d12 b/sql/hive/src/test/resources/golden/udf_stddev_pop-0-96788538f1f20eb879a1add4bb5f9d12 new file mode 100644 index 0000000000000..741771707f280 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_stddev_pop-0-96788538f1f20eb879a1add4bb5f9d12 @@ -0,0 +1 @@ +Function 'udf_stddev_pop' does not exist. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_stddev_pop-1-6286ef94de26050617bf69c17a3b4a10 b/sql/hive/src/test/resources/golden/udf_stddev_pop-1-6286ef94de26050617bf69c17a3b4a10 new file mode 100644 index 0000000000000..741771707f280 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_stddev_pop-1-6286ef94de26050617bf69c17a3b4a10 @@ -0,0 +1 @@ +Function 'udf_stddev_pop' does not exist. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_stddev_samp-0-29e22949ef00f5ece1b5fd6bb1923a4 b/sql/hive/src/test/resources/golden/udf_stddev_samp-0-29e22949ef00f5ece1b5fd6bb1923a4 new file mode 100644 index 0000000000000..c1fb091d2c425 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_stddev_samp-0-29e22949ef00f5ece1b5fd6bb1923a4 @@ -0,0 +1 @@ +stddev_samp(x) - Returns the sample standard deviation of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_stddev_samp-1-ac7c0f92fe3b72287df2c7a719280bc4 b/sql/hive/src/test/resources/golden/udf_stddev_samp-1-ac7c0f92fe3b72287df2c7a719280bc4 new file mode 100644 index 0000000000000..c1fb091d2c425 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_stddev_samp-1-ac7c0f92fe3b72287df2c7a719280bc4 @@ -0,0 +1 @@ +stddev_samp(x) - Returns the sample standard deviation of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_stddev_samp-2-29e22949ef00f5ece1b5fd6bb1923a4 b/sql/hive/src/test/resources/golden/udf_stddev_samp-2-29e22949ef00f5ece1b5fd6bb1923a4 new file mode 100644 index 0000000000000..c1fb091d2c425 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_stddev_samp-2-29e22949ef00f5ece1b5fd6bb1923a4 @@ -0,0 +1 @@ +stddev_samp(x) - Returns the sample standard deviation of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_stddev_samp-3-ac7c0f92fe3b72287df2c7a719280bc4 b/sql/hive/src/test/resources/golden/udf_stddev_samp-3-ac7c0f92fe3b72287df2c7a719280bc4 new file mode 100644 index 0000000000000..c1fb091d2c425 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_stddev_samp-3-ac7c0f92fe3b72287df2c7a719280bc4 @@ -0,0 +1 @@ +stddev_samp(x) - Returns the sample standard deviation of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_string-0-17412ad1c1a827411caa7b5e891b6ac3 b/sql/hive/src/test/resources/golden/udf_string-0-17412ad1c1a827411caa7b5e891b6ac3 new file mode 100644 index 0000000000000..c61c4e1135410 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_string-0-17412ad1c1a827411caa7b5e891b6ac3 @@ -0,0 +1 @@ +There is no documentation for function 'string' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_string-1-53b00551846b7f8bb27874b3a466e68d b/sql/hive/src/test/resources/golden/udf_string-1-53b00551846b7f8bb27874b3a466e68d new file mode 100644 index 0000000000000..c61c4e1135410 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_string-1-53b00551846b7f8bb27874b3a466e68d @@ -0,0 +1 @@ +There is no documentation for function 'string' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_substr-0-20fb50d79b45264548b953e37d837fcd b/sql/hive/src/test/resources/golden/udf_substr-0-20fb50d79b45264548b953e37d837fcd new file mode 100644 index 0000000000000..c4efdaebc8aab --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substr-0-20fb50d79b45264548b953e37d837fcd @@ -0,0 +1 @@ +substr(str, pos[, len]) - returns the substring of str that starts at pos and is of length len orsubstr(bin, pos[, len]) - returns the slice of byte array that starts at pos and is of length len diff --git a/sql/hive/src/test/resources/golden/udf_substr-1-2af34de7fd584c5f1ead85b3891b0920 b/sql/hive/src/test/resources/golden/udf_substr-1-2af34de7fd584c5f1ead85b3891b0920 new file mode 100644 index 0000000000000..44958996269c9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substr-1-2af34de7fd584c5f1ead85b3891b0920 @@ -0,0 +1,10 @@ +substr(str, pos[, len]) - returns the substring of str that starts at pos and is of length len orsubstr(bin, pos[, len]) - returns the slice of byte array that starts at pos and is of length len +Synonyms: substring +pos is a 1-based index. If pos<0 the starting position is determined by counting backwards from the end of str. +Example: + > SELECT substr('Facebook', 5) FROM src LIMIT 1; + 'book' + > SELECT substr('Facebook', -5) FROM src LIMIT 1; + 'ebook' + > SELECT substr('Facebook', 5, 1) FROM src LIMIT 1; + 'b' diff --git a/sql/hive/src/test/resources/golden/udf_substr-2-d0268ad73ab5d94af15d9e1703b424d1 b/sql/hive/src/test/resources/golden/udf_substr-2-d0268ad73ab5d94af15d9e1703b424d1 new file mode 100644 index 0000000000000..9516b839a3956 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substr-2-d0268ad73ab5d94af15d9e1703b424d1 @@ -0,0 +1 @@ +NULL NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_substr-3-fe643fe7e2fd8b65e3ca0dbf6c98a122 b/sql/hive/src/test/resources/golden/udf_substr-3-fe643fe7e2fd8b65e3ca0dbf6c98a122 new file mode 100644 index 0000000000000..7f6c057b5eebd --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substr-3-fe643fe7e2fd8b65e3ca0dbf6c98a122 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_substr-4-f7933c0bb28e9a815555edfa3764524a b/sql/hive/src/test/resources/golden/udf_substr-4-f7933c0bb28e9a815555edfa3764524a new file mode 100644 index 0000000000000..042ca15005869 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substr-4-f7933c0bb28e9a815555edfa3764524a @@ -0,0 +1 @@ +CDEF CDEF CDEFG CDEFG ABC ABC BC C ABC BC A A A \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_substr-5-4f29c1273b8010ce2d05882fc44793d8 b/sql/hive/src/test/resources/golden/udf_substr-5-4f29c1273b8010ce2d05882fc44793d8 new file mode 100644 index 0000000000000..85346dc923b4a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substr-5-4f29c1273b8010ce2d05882fc44793d8 @@ -0,0 +1 @@ +A AB ABC ABC A AB ABC ABC B BC BC BC C C C C \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_substr-6-ebbb2e30ccf4a2f3a9525325529a9fe6 b/sql/hive/src/test/resources/golden/udf_substr-6-ebbb2e30ccf4a2f3a9525325529a9fe6 new file mode 100644 index 0000000000000..9d607f4d84214 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substr-6-ebbb2e30ccf4a2f3a9525325529a9fe6 @@ -0,0 +1 @@ +C C C C B BC BC BC A AB ABC ABC \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_substr-7-1742c72a1a8a6c6fd3eb2449d4747496 b/sql/hive/src/test/resources/golden/udf_substr-7-1742c72a1a8a6c6fd3eb2449d4747496 new file mode 100644 index 0000000000000..042ca15005869 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substr-7-1742c72a1a8a6c6fd3eb2449d4747496 @@ -0,0 +1 @@ +CDEF CDEF CDEFG CDEFG ABC ABC BC C ABC BC A A A \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_substring-0-8297700b238f417dea2bd60ba72a6ece b/sql/hive/src/test/resources/golden/udf_substring-0-8297700b238f417dea2bd60ba72a6ece new file mode 100644 index 0000000000000..b0ade52e69a9d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substring-0-8297700b238f417dea2bd60ba72a6ece @@ -0,0 +1 @@ +substring(str, pos[, len]) - returns the substring of str that starts at pos and is of length len orsubstring(bin, pos[, len]) - returns the slice of byte array that starts at pos and is of length len \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_substring-1-e5df65419ecd9e837dadfcdd7f9074f8 b/sql/hive/src/test/resources/golden/udf_substring-1-e5df65419ecd9e837dadfcdd7f9074f8 new file mode 100644 index 0000000000000..1d61dc4518087 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_substring-1-e5df65419ecd9e837dadfcdd7f9074f8 @@ -0,0 +1,10 @@ +substring(str, pos[, len]) - returns the substring of str that starts at pos and is of length len orsubstring(bin, pos[, len]) - returns the slice of byte array that starts at pos and is of length len +Synonyms: substr +pos is a 1-based index. If pos<0 the starting position is determined by counting backwards from the end of str. +Example: + > SELECT substring('Facebook', 5) FROM src LIMIT 1; + 'book' + > SELECT substring('Facebook', -5) FROM src LIMIT 1; + 'ebook' + > SELECT substring('Facebook', 5, 1) FROM src LIMIT 1; + 'b' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_subtract-0-8f69db6aad14e23c9c32bf21bd0b3bf3 b/sql/hive/src/test/resources/golden/udf_subtract-0-8f69db6aad14e23c9c32bf21bd0b3bf3 new file mode 100644 index 0000000000000..0f4a4dce9dd3d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_subtract-0-8f69db6aad14e23c9c32bf21bd0b3bf3 @@ -0,0 +1 @@ +a - b - Returns the difference a-b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_subtract-1-b90eec030fee9cbd177f9615b782d722 b/sql/hive/src/test/resources/golden/udf_subtract-1-b90eec030fee9cbd177f9615b782d722 new file mode 100644 index 0000000000000..0f4a4dce9dd3d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_subtract-1-b90eec030fee9cbd177f9615b782d722 @@ -0,0 +1 @@ +a - b - Returns the difference a-b \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sum-0-d5b30a6a291025b1f9334ce8944dab31 b/sql/hive/src/test/resources/golden/udf_sum-0-d5b30a6a291025b1f9334ce8944dab31 new file mode 100644 index 0000000000000..744935026110c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sum-0-d5b30a6a291025b1f9334ce8944dab31 @@ -0,0 +1 @@ +sum(x) - Returns the sum of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sum-1-ddae1a511d3371122ab79918be5b495b b/sql/hive/src/test/resources/golden/udf_sum-1-ddae1a511d3371122ab79918be5b495b new file mode 100644 index 0000000000000..744935026110c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sum-1-ddae1a511d3371122ab79918be5b495b @@ -0,0 +1 @@ +sum(x) - Returns the sum of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sum-2-d5b30a6a291025b1f9334ce8944dab31 b/sql/hive/src/test/resources/golden/udf_sum-2-d5b30a6a291025b1f9334ce8944dab31 new file mode 100644 index 0000000000000..744935026110c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sum-2-d5b30a6a291025b1f9334ce8944dab31 @@ -0,0 +1 @@ +sum(x) - Returns the sum of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_sum-3-ddae1a511d3371122ab79918be5b495b b/sql/hive/src/test/resources/golden/udf_sum-3-ddae1a511d3371122ab79918be5b495b new file mode 100644 index 0000000000000..744935026110c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_sum-3-ddae1a511d3371122ab79918be5b495b @@ -0,0 +1 @@ +sum(x) - Returns the sum of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tan-0-c21aa640b4edabf6613dd705d029c878 b/sql/hive/src/test/resources/golden/udf_tan-0-c21aa640b4edabf6613dd705d029c878 new file mode 100644 index 0000000000000..c91072e69740b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tan-0-c21aa640b4edabf6613dd705d029c878 @@ -0,0 +1 @@ +tan(x) - returns the tangent of x (x is in radians) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tan-1-a8c8eaa832aa9a4345b2fb9cd5e1d505 b/sql/hive/src/test/resources/golden/udf_tan-1-a8c8eaa832aa9a4345b2fb9cd5e1d505 new file mode 100644 index 0000000000000..4cc0d466f00f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tan-1-a8c8eaa832aa9a4345b2fb9cd5e1d505 @@ -0,0 +1,4 @@ +tan(x) - returns the tangent of x (x is in radians) +Example: + > SELECT tan(0) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tan-2-27a29c68f846824990e9e443ac95da85 b/sql/hive/src/test/resources/golden/udf_tan-2-27a29c68f846824990e9e443ac95da85 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tan-2-27a29c68f846824990e9e443ac95da85 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tan-3-77bedd6c76bdc33428d13a894f468a97 b/sql/hive/src/test/resources/golden/udf_tan-3-77bedd6c76bdc33428d13a894f468a97 new file mode 100644 index 0000000000000..04ec33c11c3b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tan-3-77bedd6c76bdc33428d13a894f468a97 @@ -0,0 +1 @@ +1.5574077246549023 -0.29100619138474915 -1.5574077246549023 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tan-4-c21aa640b4edabf6613dd705d029c878 b/sql/hive/src/test/resources/golden/udf_tan-4-c21aa640b4edabf6613dd705d029c878 new file mode 100644 index 0000000000000..c91072e69740b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tan-4-c21aa640b4edabf6613dd705d029c878 @@ -0,0 +1 @@ +tan(x) - returns the tangent of x (x is in radians) \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tan-5-a8c8eaa832aa9a4345b2fb9cd5e1d505 b/sql/hive/src/test/resources/golden/udf_tan-5-a8c8eaa832aa9a4345b2fb9cd5e1d505 new file mode 100644 index 0000000000000..4cc0d466f00f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tan-5-a8c8eaa832aa9a4345b2fb9cd5e1d505 @@ -0,0 +1,4 @@ +tan(x) - returns the tangent of x (x is in radians) +Example: + > SELECT tan(0) FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tan-6-27a29c68f846824990e9e443ac95da85 b/sql/hive/src/test/resources/golden/udf_tan-6-27a29c68f846824990e9e443ac95da85 new file mode 100644 index 0000000000000..fe3a0735d98b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tan-6-27a29c68f846824990e9e443ac95da85 @@ -0,0 +1 @@ +NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tan-7-77bedd6c76bdc33428d13a894f468a97 b/sql/hive/src/test/resources/golden/udf_tan-7-77bedd6c76bdc33428d13a894f468a97 new file mode 100644 index 0000000000000..04ec33c11c3b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tan-7-77bedd6c76bdc33428d13a894f468a97 @@ -0,0 +1 @@ +1.5574077246549023 -0.29100619138474915 -1.5574077246549023 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_testlength-0-b91edca0cfe8a8a8ff3b7a7fbc6e23ad b/sql/hive/src/test/resources/golden/udf_testlength-0-b91edca0cfe8a8a8ff3b7a7fbc6e23ad new file mode 100644 index 0000000000000..89617d8af0085 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_testlength-0-b91edca0cfe8a8a8ff3b7a7fbc6e23ad @@ -0,0 +1,10 @@ +ABSTRACT SYNTAX TREE: + (TOK_CREATEFUNCTION testlength 'org.apache.hadoop.hive.ql.udf.UDFTestLength') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + + diff --git a/sql/hive/src/test/resources/golden/udf_testlength2-0-3da4fe901124f2bbf3d02822652c4e55 b/sql/hive/src/test/resources/golden/udf_testlength2-0-3da4fe901124f2bbf3d02822652c4e55 new file mode 100644 index 0000000000000..6d967660b3d41 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_testlength2-0-3da4fe901124f2bbf3d02822652c4e55 @@ -0,0 +1,10 @@ +ABSTRACT SYNTAX TREE: + (TOK_CREATEFUNCTION testlength2 'org.apache.hadoop.hive.ql.udf.UDFTestLength2') + +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + + diff --git a/sql/hive/src/test/resources/golden/udf_tinyint-0-4a2b3d48ca445776d4a2d8c445f9633d b/sql/hive/src/test/resources/golden/udf_tinyint-0-4a2b3d48ca445776d4a2d8c445f9633d new file mode 100644 index 0000000000000..1b13d42908539 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tinyint-0-4a2b3d48ca445776d4a2d8c445f9633d @@ -0,0 +1 @@ +There is no documentation for function 'tinyint' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_tinyint-1-417de1aeb44510aa9746729f9ff3b426 b/sql/hive/src/test/resources/golden/udf_tinyint-1-417de1aeb44510aa9746729f9ff3b426 new file mode 100644 index 0000000000000..1b13d42908539 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_tinyint-1-417de1aeb44510aa9746729f9ff3b426 @@ -0,0 +1 @@ +There is no documentation for function 'tinyint' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-0-35e75ee310b66710e2e88cf0fecca670 b/sql/hive/src/test/resources/golden/udf_to_boolean-0-35e75ee310b66710e2e88cf0fecca670 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-0-35e75ee310b66710e2e88cf0fecca670 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-1-cbead694a25ec357d69fd008776e19c9 b/sql/hive/src/test/resources/golden/udf_to_boolean-1-cbead694a25ec357d69fd008776e19c9 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-1-cbead694a25ec357d69fd008776e19c9 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-10-51822ac740629bebd81d2abda6e1144 b/sql/hive/src/test/resources/golden/udf_to_boolean-10-51822ac740629bebd81d2abda6e1144 new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-10-51822ac740629bebd81d2abda6e1144 @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-11-441306cae24618c49ec63445a31bf16b b/sql/hive/src/test/resources/golden/udf_to_boolean-11-441306cae24618c49ec63445a31bf16b new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-11-441306cae24618c49ec63445a31bf16b @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-12-bfcc534e73e320a1cfad9c584678d870 b/sql/hive/src/test/resources/golden/udf_to_boolean-12-bfcc534e73e320a1cfad9c584678d870 new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-12-bfcc534e73e320a1cfad9c584678d870 @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-13-a2bddaa5db1841bb4617239b9f17a06d b/sql/hive/src/test/resources/golden/udf_to_boolean-13-a2bddaa5db1841bb4617239b9f17a06d new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-13-a2bddaa5db1841bb4617239b9f17a06d @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-14-773801b833cf72d35016916b786275b5 b/sql/hive/src/test/resources/golden/udf_to_boolean-14-773801b833cf72d35016916b786275b5 new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-14-773801b833cf72d35016916b786275b5 @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-15-4071ed0ff57b53963d5ee662fa9db0b0 b/sql/hive/src/test/resources/golden/udf_to_boolean-15-4071ed0ff57b53963d5ee662fa9db0b0 new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-15-4071ed0ff57b53963d5ee662fa9db0b0 @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-16-6b441df08afdc0c6c4a82670997dabb5 b/sql/hive/src/test/resources/golden/udf_to_boolean-16-6b441df08afdc0c6c4a82670997dabb5 new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-16-6b441df08afdc0c6c4a82670997dabb5 @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-17-85342c694d7f35e7eedb24e850d0c7df b/sql/hive/src/test/resources/golden/udf_to_boolean-17-85342c694d7f35e7eedb24e850d0c7df new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-17-85342c694d7f35e7eedb24e850d0c7df @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-18-fcd7af0e71d3e2d934239ba606e3ed87 b/sql/hive/src/test/resources/golden/udf_to_boolean-18-fcd7af0e71d3e2d934239ba606e3ed87 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-18-fcd7af0e71d3e2d934239ba606e3ed87 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-19-dcdb12fe551aa68a56921822f5d1a343 b/sql/hive/src/test/resources/golden/udf_to_boolean-19-dcdb12fe551aa68a56921822f5d1a343 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-19-dcdb12fe551aa68a56921822f5d1a343 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-2-7f24ad5f9bdc0afb6bade7c85490c845 b/sql/hive/src/test/resources/golden/udf_to_boolean-2-7f24ad5f9bdc0afb6bade7c85490c845 new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-2-7f24ad5f9bdc0afb6bade7c85490c845 @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-20-131900d39d9a20b431731a32fb9715f8 b/sql/hive/src/test/resources/golden/udf_to_boolean-20-131900d39d9a20b431731a32fb9715f8 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-20-131900d39d9a20b431731a32fb9715f8 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-21-a5e28f4eb819e5a5e292e279f2990a7a b/sql/hive/src/test/resources/golden/udf_to_boolean-21-a5e28f4eb819e5a5e292e279f2990a7a new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-21-a5e28f4eb819e5a5e292e279f2990a7a @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-22-93278c10d642fa242f303d89b3b1961d b/sql/hive/src/test/resources/golden/udf_to_boolean-22-93278c10d642fa242f303d89b3b1961d new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-22-93278c10d642fa242f303d89b3b1961d @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-23-828558020ce907ffa7e847762a5e2358 b/sql/hive/src/test/resources/golden/udf_to_boolean-23-828558020ce907ffa7e847762a5e2358 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-23-828558020ce907ffa7e847762a5e2358 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-24-e8ca597d87932af16c0cf29d662e92da b/sql/hive/src/test/resources/golden/udf_to_boolean-24-e8ca597d87932af16c0cf29d662e92da new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-24-e8ca597d87932af16c0cf29d662e92da @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-25-86245727f90de9ce65a12c97a03a5635 b/sql/hive/src/test/resources/golden/udf_to_boolean-25-86245727f90de9ce65a12c97a03a5635 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-25-86245727f90de9ce65a12c97a03a5635 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-26-552d7ec5a4e0c93dc59a61973e2d63a2 b/sql/hive/src/test/resources/golden/udf_to_boolean-26-552d7ec5a4e0c93dc59a61973e2d63a2 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-26-552d7ec5a4e0c93dc59a61973e2d63a2 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-27-b61509b01b2fe3e7e4b72fedc74ff4f9 b/sql/hive/src/test/resources/golden/udf_to_boolean-27-b61509b01b2fe3e7e4b72fedc74ff4f9 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-27-b61509b01b2fe3e7e4b72fedc74ff4f9 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-3-266b9601a9154438ab95550fcd36494c b/sql/hive/src/test/resources/golden/udf_to_boolean-3-266b9601a9154438ab95550fcd36494c new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-3-266b9601a9154438ab95550fcd36494c @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-4-2602c9a6c910ec7fdd439212c648333d b/sql/hive/src/test/resources/golden/udf_to_boolean-4-2602c9a6c910ec7fdd439212c648333d new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-4-2602c9a6c910ec7fdd439212c648333d @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-5-a9fe3bd1d2c99c89f019e92e5e8a7cad b/sql/hive/src/test/resources/golden/udf_to_boolean-5-a9fe3bd1d2c99c89f019e92e5e8a7cad new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-5-a9fe3bd1d2c99c89f019e92e5e8a7cad @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-6-1e29d35d9b02f6800c8939910a1e4c2f b/sql/hive/src/test/resources/golden/udf_to_boolean-6-1e29d35d9b02f6800c8939910a1e4c2f new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-6-1e29d35d9b02f6800c8939910a1e4c2f @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-7-93d8249c035f34bfca2fa041ae97f55a b/sql/hive/src/test/resources/golden/udf_to_boolean-7-93d8249c035f34bfca2fa041ae97f55a new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-7-93d8249c035f34bfca2fa041ae97f55a @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-8-37229f303635a030f6cab20e0381f51f b/sql/hive/src/test/resources/golden/udf_to_boolean-8-37229f303635a030f6cab20e0381f51f new file mode 100644 index 0000000000000..27ba77ddaf615 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-8-37229f303635a030f6cab20e0381f51f @@ -0,0 +1 @@ +true diff --git a/sql/hive/src/test/resources/golden/udf_to_boolean-9-be623247e4dbf119b43458b72d1be017 b/sql/hive/src/test/resources/golden/udf_to_boolean-9-be623247e4dbf119b43458b72d1be017 new file mode 100644 index 0000000000000..c508d5366f70b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_boolean-9-be623247e4dbf119b43458b72d1be017 @@ -0,0 +1 @@ +false diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-0-df3f6ff9fdf525a7c617e4c33d5c81a4 b/sql/hive/src/test/resources/golden/udf_to_byte-0-df3f6ff9fdf525a7c617e4c33d5c81a4 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-0-df3f6ff9fdf525a7c617e4c33d5c81a4 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-1-86bb7f03311e7ea8bda76f24412bc9f3 b/sql/hive/src/test/resources/golden/udf_to_byte-1-86bb7f03311e7ea8bda76f24412bc9f3 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-1-86bb7f03311e7ea8bda76f24412bc9f3 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-2-108a5c01e12e8823f6affc3d1664a1fc b/sql/hive/src/test/resources/golden/udf_to_byte-2-108a5c01e12e8823f6affc3d1664a1fc new file mode 100644 index 0000000000000..6cc8a61f8f6ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-2-108a5c01e12e8823f6affc3d1664a1fc @@ -0,0 +1 @@ +-18 diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-3-78e5f8f149031d91a1aa3ae3372a8b b/sql/hive/src/test/resources/golden/udf_to_byte-3-78e5f8f149031d91a1aa3ae3372a8b new file mode 100644 index 0000000000000..c75acbe2ff105 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-3-78e5f8f149031d91a1aa3ae3372a8b @@ -0,0 +1 @@ +127 diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-4-a8b51dcda7b83f0fb8fb05d572b17579 b/sql/hive/src/test/resources/golden/udf_to_byte-4-a8b51dcda7b83f0fb8fb05d572b17579 new file mode 100644 index 0000000000000..3a2e3f4984a0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-4-a8b51dcda7b83f0fb8fb05d572b17579 @@ -0,0 +1 @@ +-1 diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-5-2adc360a8c6a9f4eac05f186ced2d67 b/sql/hive/src/test/resources/golden/udf_to_byte-5-2adc360a8c6a9f4eac05f186ced2d67 new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-5-2adc360a8c6a9f4eac05f186ced2d67 @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-6-75067817a1fe70c8c03c18ec7ed2f404 b/sql/hive/src/test/resources/golden/udf_to_byte-6-75067817a1fe70c8c03c18ec7ed2f404 new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-6-75067817a1fe70c8c03c18ec7ed2f404 @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-7-4b9de0160a65b212cbe42059d98aa718 b/sql/hive/src/test/resources/golden/udf_to_byte-7-4b9de0160a65b212cbe42059d98aa718 new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-7-4b9de0160a65b212cbe42059d98aa718 @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_byte-8-7bf107e0fcc94ab00a5481a9f67aec25 b/sql/hive/src/test/resources/golden/udf_to_byte-8-7bf107e0fcc94ab00a5481a9f67aec25 new file mode 100644 index 0000000000000..91ff6743335bd --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_byte-8-7bf107e0fcc94ab00a5481a9f67aec25 @@ -0,0 +1 @@ +-38 diff --git a/sql/hive/src/test/resources/golden/udf_to_date-0-ab5c4edc1825010642bd24f4cfc26166 b/sql/hive/src/test/resources/golden/udf_to_date-0-ab5c4edc1825010642bd24f4cfc26166 new file mode 100644 index 0000000000000..54a99d2a94ef4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_date-0-ab5c4edc1825010642bd24f4cfc26166 @@ -0,0 +1 @@ +to_date(expr) - Extracts the date part of the date or datetime expression expr \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_to_date-1-da3c817bc5f4458078c6199390ac915e b/sql/hive/src/test/resources/golden/udf_to_date-1-da3c817bc5f4458078c6199390ac915e new file mode 100644 index 0000000000000..81ddc59fcb531 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_date-1-da3c817bc5f4458078c6199390ac915e @@ -0,0 +1,4 @@ +to_date(expr) - Extracts the date part of the date or datetime expression expr +Example: + > SELECT to_date('2009-30-07 04:17:52') FROM src LIMIT 1; + '2009-30-07' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_to_double-0-cbe030be095a93a9ae810ce7e66bdca7 b/sql/hive/src/test/resources/golden/udf_to_double-0-cbe030be095a93a9ae810ce7e66bdca7 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-0-cbe030be095a93a9ae810ce7e66bdca7 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_double-1-98d2ce732277c3a7fb4827d8b221a43a b/sql/hive/src/test/resources/golden/udf_to_double-1-98d2ce732277c3a7fb4827d8b221a43a new file mode 100644 index 0000000000000..d3827e75a5cad --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-1-98d2ce732277c3a7fb4827d8b221a43a @@ -0,0 +1 @@ +1.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_double-2-69bf8a5a4cb378bbd54c20cb8aa97abe b/sql/hive/src/test/resources/golden/udf_to_double-2-69bf8a5a4cb378bbd54c20cb8aa97abe new file mode 100644 index 0000000000000..319fde05380bc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-2-69bf8a5a4cb378bbd54c20cb8aa97abe @@ -0,0 +1 @@ +-7.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_double-3-ab23099412d24154ff369d8bd6bde89f b/sql/hive/src/test/resources/golden/udf_to_double-3-ab23099412d24154ff369d8bd6bde89f new file mode 100644 index 0000000000000..8c1c4fe62b6c2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-3-ab23099412d24154ff369d8bd6bde89f @@ -0,0 +1 @@ +-18.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_double-4-293a639a2b61a11da6ca798c04624f68 b/sql/hive/src/test/resources/golden/udf_to_double-4-293a639a2b61a11da6ca798c04624f68 new file mode 100644 index 0000000000000..1b650de78904f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-4-293a639a2b61a11da6ca798c04624f68 @@ -0,0 +1 @@ +-129.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_double-5-42d1e80bb3324030c62a23c6d1b786a8 b/sql/hive/src/test/resources/golden/udf_to_double-5-42d1e80bb3324030c62a23c6d1b786a8 new file mode 100644 index 0000000000000..3a3bd0df03b5b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-5-42d1e80bb3324030c62a23c6d1b786a8 @@ -0,0 +1 @@ +-1025.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_double-6-5bac1a7db00d788fd7d82e3a78e60be6 b/sql/hive/src/test/resources/golden/udf_to_double-6-5bac1a7db00d788fd7d82e3a78e60be6 new file mode 100644 index 0000000000000..38f7ad5afa0ab --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-6-5bac1a7db00d788fd7d82e3a78e60be6 @@ -0,0 +1 @@ +-3.140000104904175 diff --git a/sql/hive/src/test/resources/golden/udf_to_double-7-97080ab9cd416f8acd8803291e9dc9e5 b/sql/hive/src/test/resources/golden/udf_to_double-7-97080ab9cd416f8acd8803291e9dc9e5 new file mode 100644 index 0000000000000..01e913dbfe725 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-7-97080ab9cd416f8acd8803291e9dc9e5 @@ -0,0 +1 @@ +-3.14 diff --git a/sql/hive/src/test/resources/golden/udf_to_double-8-df51146f6ef960c77cd1722191e4b982 b/sql/hive/src/test/resources/golden/udf_to_double-8-df51146f6ef960c77cd1722191e4b982 new file mode 100644 index 0000000000000..f45d1f04dc920 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_double-8-df51146f6ef960c77cd1722191e4b982 @@ -0,0 +1 @@ +-38.14 diff --git a/sql/hive/src/test/resources/golden/udf_to_float-0-7646eca02448547eedf84a81bf42be89 b/sql/hive/src/test/resources/golden/udf_to_float-0-7646eca02448547eedf84a81bf42be89 new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-0-7646eca02448547eedf84a81bf42be89 @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_float-1-eac0237ee0294d635c2b538f6e2f0a5c b/sql/hive/src/test/resources/golden/udf_to_float-1-eac0237ee0294d635c2b538f6e2f0a5c new file mode 100644 index 0000000000000..d3827e75a5cad --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-1-eac0237ee0294d635c2b538f6e2f0a5c @@ -0,0 +1 @@ +1.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_float-2-39a67183b6d2a4da005baed849c5e971 b/sql/hive/src/test/resources/golden/udf_to_float-2-39a67183b6d2a4da005baed849c5e971 new file mode 100644 index 0000000000000..319fde05380bc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-2-39a67183b6d2a4da005baed849c5e971 @@ -0,0 +1 @@ +-7.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_float-3-5c1ae08cfd9ffd4d3e57b7a6ec4e39ce b/sql/hive/src/test/resources/golden/udf_to_float-3-5c1ae08cfd9ffd4d3e57b7a6ec4e39ce new file mode 100644 index 0000000000000..8c1c4fe62b6c2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-3-5c1ae08cfd9ffd4d3e57b7a6ec4e39ce @@ -0,0 +1 @@ +-18.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_float-4-f3e0ab8ed691a386e6be4ce6993be507 b/sql/hive/src/test/resources/golden/udf_to_float-4-f3e0ab8ed691a386e6be4ce6993be507 new file mode 100644 index 0000000000000..1b650de78904f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-4-f3e0ab8ed691a386e6be4ce6993be507 @@ -0,0 +1 @@ +-129.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_float-5-75f364708c01b5e31f988f19e52b2201 b/sql/hive/src/test/resources/golden/udf_to_float-5-75f364708c01b5e31f988f19e52b2201 new file mode 100644 index 0000000000000..3a3bd0df03b5b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-5-75f364708c01b5e31f988f19e52b2201 @@ -0,0 +1 @@ +-1025.0 diff --git a/sql/hive/src/test/resources/golden/udf_to_float-6-1d9b690354f7b04df660a9e3c448a002 b/sql/hive/src/test/resources/golden/udf_to_float-6-1d9b690354f7b04df660a9e3c448a002 new file mode 100644 index 0000000000000..01e913dbfe725 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-6-1d9b690354f7b04df660a9e3c448a002 @@ -0,0 +1 @@ +-3.14 diff --git a/sql/hive/src/test/resources/golden/udf_to_float-7-cdfefa5173854b647a76383300f8b9d1 b/sql/hive/src/test/resources/golden/udf_to_float-7-cdfefa5173854b647a76383300f8b9d1 new file mode 100644 index 0000000000000..01e913dbfe725 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-7-cdfefa5173854b647a76383300f8b9d1 @@ -0,0 +1 @@ +-3.14 diff --git a/sql/hive/src/test/resources/golden/udf_to_float-8-5b0a785185bcaa98b581c5b3dbb3e12c b/sql/hive/src/test/resources/golden/udf_to_float-8-5b0a785185bcaa98b581c5b3dbb3e12c new file mode 100644 index 0000000000000..f45d1f04dc920 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_float-8-5b0a785185bcaa98b581c5b3dbb3e12c @@ -0,0 +1 @@ +-38.14 diff --git a/sql/hive/src/test/resources/golden/udf_to_long-0-ebe447e8fb03de8844951250fe50320a b/sql/hive/src/test/resources/golden/udf_to_long-0-ebe447e8fb03de8844951250fe50320a new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-0-ebe447e8fb03de8844951250fe50320a @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_long-1-61e6679e5a37889bc596590bde0228f0 b/sql/hive/src/test/resources/golden/udf_to_long-1-61e6679e5a37889bc596590bde0228f0 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-1-61e6679e5a37889bc596590bde0228f0 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/udf_to_long-2-5efd128fd5cbfbf1794c7da16d4b18d5 b/sql/hive/src/test/resources/golden/udf_to_long-2-5efd128fd5cbfbf1794c7da16d4b18d5 new file mode 100644 index 0000000000000..17bdab103828b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-2-5efd128fd5cbfbf1794c7da16d4b18d5 @@ -0,0 +1 @@ +-7 diff --git a/sql/hive/src/test/resources/golden/udf_to_long-3-cb3318ba365833316645e1b9890f4613 b/sql/hive/src/test/resources/golden/udf_to_long-3-cb3318ba365833316645e1b9890f4613 new file mode 100644 index 0000000000000..6cc8a61f8f6ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-3-cb3318ba365833316645e1b9890f4613 @@ -0,0 +1 @@ +-18 diff --git a/sql/hive/src/test/resources/golden/udf_to_long-4-55b7b7d046541d63e30f76111734c0f6 b/sql/hive/src/test/resources/golden/udf_to_long-4-55b7b7d046541d63e30f76111734c0f6 new file mode 100644 index 0000000000000..9828ff22b667b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-4-55b7b7d046541d63e30f76111734c0f6 @@ -0,0 +1 @@ +-129 diff --git a/sql/hive/src/test/resources/golden/udf_to_long-5-a0d382d243a226f8d4381970b6831c3d b/sql/hive/src/test/resources/golden/udf_to_long-5-a0d382d243a226f8d4381970b6831c3d new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-5-a0d382d243a226f8d4381970b6831c3d @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_long-6-47ab11eae68329cc80232fc4089479f0 b/sql/hive/src/test/resources/golden/udf_to_long-6-47ab11eae68329cc80232fc4089479f0 new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-6-47ab11eae68329cc80232fc4089479f0 @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_long-7-b87c0cabb166f33984cc1b191694918e b/sql/hive/src/test/resources/golden/udf_to_long-7-b87c0cabb166f33984cc1b191694918e new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-7-b87c0cabb166f33984cc1b191694918e @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_long-8-52a24d7040db321a842f9201d245ee9 b/sql/hive/src/test/resources/golden/udf_to_long-8-52a24d7040db321a842f9201d245ee9 new file mode 100644 index 0000000000000..91ff6743335bd --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_long-8-52a24d7040db321a842f9201d245ee9 @@ -0,0 +1 @@ +-38 diff --git a/sql/hive/src/test/resources/golden/udf_to_short-0-8a246f07cfa1a8e96a2bf0600f8bd95a b/sql/hive/src/test/resources/golden/udf_to_short-0-8a246f07cfa1a8e96a2bf0600f8bd95a new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-0-8a246f07cfa1a8e96a2bf0600f8bd95a @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_short-1-32c4a61f9166c2a9d7038553d589bd9b b/sql/hive/src/test/resources/golden/udf_to_short-1-32c4a61f9166c2a9d7038553d589bd9b new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-1-32c4a61f9166c2a9d7038553d589bd9b @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/udf_to_short-2-a4ab375c99efbfe0d5a45941552509c8 b/sql/hive/src/test/resources/golden/udf_to_short-2-a4ab375c99efbfe0d5a45941552509c8 new file mode 100644 index 0000000000000..6cc8a61f8f6ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-2-a4ab375c99efbfe0d5a45941552509c8 @@ -0,0 +1 @@ +-18 diff --git a/sql/hive/src/test/resources/golden/udf_to_short-3-8d5108d9585d8ca6ca3eefac05afc3ce b/sql/hive/src/test/resources/golden/udf_to_short-3-8d5108d9585d8ca6ca3eefac05afc3ce new file mode 100644 index 0000000000000..9828ff22b667b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-3-8d5108d9585d8ca6ca3eefac05afc3ce @@ -0,0 +1 @@ +-129 diff --git a/sql/hive/src/test/resources/golden/udf_to_short-4-8d76a5a410e5533f2ae625504478cda8 b/sql/hive/src/test/resources/golden/udf_to_short-4-8d76a5a410e5533f2ae625504478cda8 new file mode 100644 index 0000000000000..450a6125550e5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-4-8d76a5a410e5533f2ae625504478cda8 @@ -0,0 +1 @@ +-1025 diff --git a/sql/hive/src/test/resources/golden/udf_to_short-5-d467dc39319796ff5cbe600ff6530ad5 b/sql/hive/src/test/resources/golden/udf_to_short-5-d467dc39319796ff5cbe600ff6530ad5 new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-5-d467dc39319796ff5cbe600ff6530ad5 @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_short-6-c3b304122e874868f37c6fbaeccf0397 b/sql/hive/src/test/resources/golden/udf_to_short-6-c3b304122e874868f37c6fbaeccf0397 new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-6-c3b304122e874868f37c6fbaeccf0397 @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_short-7-827f3181c216fd2e990637c9a091bf0d b/sql/hive/src/test/resources/golden/udf_to_short-7-827f3181c216fd2e990637c9a091bf0d new file mode 100644 index 0000000000000..a83d1d524c8bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-7-827f3181c216fd2e990637c9a091bf0d @@ -0,0 +1 @@ +-3 diff --git a/sql/hive/src/test/resources/golden/udf_to_short-8-d35f9502fc7b4205e18ecdf53189bdc4 b/sql/hive/src/test/resources/golden/udf_to_short-8-d35f9502fc7b4205e18ecdf53189bdc4 new file mode 100644 index 0000000000000..91ff6743335bd --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_short-8-d35f9502fc7b4205e18ecdf53189bdc4 @@ -0,0 +1 @@ +-38 diff --git a/sql/hive/src/test/resources/golden/udf_to_string-0-a032eb8f819689a374852c20336d5cc b/sql/hive/src/test/resources/golden/udf_to_string-0-a032eb8f819689a374852c20336d5cc new file mode 100644 index 0000000000000..7951defec192a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-0-a032eb8f819689a374852c20336d5cc @@ -0,0 +1 @@ +NULL diff --git a/sql/hive/src/test/resources/golden/udf_to_string-1-b461f0e6e98991aede40c7c68561dc44 b/sql/hive/src/test/resources/golden/udf_to_string-1-b461f0e6e98991aede40c7c68561dc44 new file mode 100644 index 0000000000000..ef2f5130b8575 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-1-b461f0e6e98991aede40c7c68561dc44 @@ -0,0 +1 @@ +TRUE diff --git a/sql/hive/src/test/resources/golden/udf_to_string-2-bc6b37e1d5a8d28df8a957c88104c9a5 b/sql/hive/src/test/resources/golden/udf_to_string-2-bc6b37e1d5a8d28df8a957c88104c9a5 new file mode 100644 index 0000000000000..d00491fd7e5bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-2-bc6b37e1d5a8d28df8a957c88104c9a5 @@ -0,0 +1 @@ +1 diff --git a/sql/hive/src/test/resources/golden/udf_to_string-3-ddbb829eedc6aa1e27169303a7957d15 b/sql/hive/src/test/resources/golden/udf_to_string-3-ddbb829eedc6aa1e27169303a7957d15 new file mode 100644 index 0000000000000..6cc8a61f8f6ad --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-3-ddbb829eedc6aa1e27169303a7957d15 @@ -0,0 +1 @@ +-18 diff --git a/sql/hive/src/test/resources/golden/udf_to_string-4-c20301e9bbf10143bb9bf67cd7367c21 b/sql/hive/src/test/resources/golden/udf_to_string-4-c20301e9bbf10143bb9bf67cd7367c21 new file mode 100644 index 0000000000000..9828ff22b667b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-4-c20301e9bbf10143bb9bf67cd7367c21 @@ -0,0 +1 @@ +-129 diff --git a/sql/hive/src/test/resources/golden/udf_to_string-5-1040b37847d20ef29d545934316303 b/sql/hive/src/test/resources/golden/udf_to_string-5-1040b37847d20ef29d545934316303 new file mode 100644 index 0000000000000..450a6125550e5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-5-1040b37847d20ef29d545934316303 @@ -0,0 +1 @@ +-1025 diff --git a/sql/hive/src/test/resources/golden/udf_to_string-6-4181d264a7af3c6488da2f1db20dc384 b/sql/hive/src/test/resources/golden/udf_to_string-6-4181d264a7af3c6488da2f1db20dc384 new file mode 100644 index 0000000000000..01e913dbfe725 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-6-4181d264a7af3c6488da2f1db20dc384 @@ -0,0 +1 @@ +-3.14 diff --git a/sql/hive/src/test/resources/golden/udf_to_string-7-567bc77f96e7dc8c89bae912e9a3af15 b/sql/hive/src/test/resources/golden/udf_to_string-7-567bc77f96e7dc8c89bae912e9a3af15 new file mode 100644 index 0000000000000..01e913dbfe725 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-7-567bc77f96e7dc8c89bae912e9a3af15 @@ -0,0 +1 @@ +-3.14 diff --git a/sql/hive/src/test/resources/golden/udf_to_string-8-a70b03d79ebd989c8141f9d70dbca8ea b/sql/hive/src/test/resources/golden/udf_to_string-8-a70b03d79ebd989c8141f9d70dbca8ea new file mode 100644 index 0000000000000..01e913dbfe725 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-8-a70b03d79ebd989c8141f9d70dbca8ea @@ -0,0 +1 @@ +-3.14 diff --git a/sql/hive/src/test/resources/golden/udf_to_string-9-51677fbf5d2fc5478853cec1df039e3b b/sql/hive/src/test/resources/golden/udf_to_string-9-51677fbf5d2fc5478853cec1df039e3b new file mode 100644 index 0000000000000..bc56c4d89448a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_to_string-9-51677fbf5d2fc5478853cec1df039e3b @@ -0,0 +1 @@ +Foo diff --git a/sql/hive/src/test/resources/golden/udf_translate-0-7fe940a2b26fa19a3cfee39e56fb1241 b/sql/hive/src/test/resources/golden/udf_translate-0-7fe940a2b26fa19a3cfee39e56fb1241 new file mode 100644 index 0000000000000..4255dc76f501e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-0-7fe940a2b26fa19a3cfee39e56fb1241 @@ -0,0 +1 @@ +translate(input, from, to) - translates the input string by replacing the characters present in the from string with the corresponding characters in the to string \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_translate-1-f7aa38a33ca0df73b7a1e6b6da4b7fe8 b/sql/hive/src/test/resources/golden/udf_translate-1-f7aa38a33ca0df73b7a1e6b6da4b7fe8 new file mode 100644 index 0000000000000..e7beead53b399 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-1-f7aa38a33ca0df73b7a1e6b6da4b7fe8 @@ -0,0 +1,13 @@ +translate(input, from, to) - translates the input string by replacing the characters present in the from string with the corresponding characters in the to string +translate(string input, string from, string to) is an equivalent function to translate in PostGreSQL. It works on a character by character basis on the input string (first parameter). A character in the input is checked for presence in the from string (second parameter). If a match happens, the character from to string (third parameter) which appears at the same index as the character in from string is obtained. This character is emitted in the output string instead of the original character from the input string. If the to string is shorter than the from string, there may not be a character present at the same index in the to string. In such a case, nothing is emitted for the original character and it's deleted from the output string. +For example, + +translate('abcdef', 'adc', '19') returns '1b9ef' replacing 'a' with '1', 'd' with '9' and removing 'c' from the input string + +translate('a b c d', ' ', '') return 'abcd' removing all spaces from the input string + +If the same character is present multiple times in the input string, the first occurence of the character is the one that's considered for matching. However, it is not recommended to have the same character more than once in the from string since it's not required and adds to confusion. + +For example, + +translate('abcdef', 'ada', '192') returns '1bc9ef' replaces 'a' with '1' and 'd' with '9' ignoring the second occurence of 'a' in the from string mapping it to '2' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_translate-10-2f9daada8878081cb8954880ad5a65c4 b/sql/hive/src/test/resources/golden/udf_translate-10-2f9daada8878081cb8954880ad5a65c4 new file mode 100644 index 0000000000000..7d44692e4f7c0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-10-2f9daada8878081cb8954880ad5a65c4 @@ -0,0 +1 @@ +12cd 12cd \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_translate-11-76b7a339d5c62808b9f4f78816d4c55b b/sql/hive/src/test/resources/golden/udf_translate-11-76b7a339d5c62808b9f4f78816d4c55b new file mode 100644 index 0000000000000..90e0d872f8bfc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-11-76b7a339d5c62808b9f4f78816d4c55b @@ -0,0 +1 @@ +123d \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_translate-12-a5b3e5fadeec1e03371160879f060b05 b/sql/hive/src/test/resources/golden/udf_translate-12-a5b3e5fadeec1e03371160879f060b05 new file mode 100644 index 0000000000000..0770d02cb2303 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-12-a5b3e5fadeec1e03371160879f060b05 @@ -0,0 +1 @@ +Ãbcd \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_translate-2-42aba80bf1913dd7c64545831f476c58 b/sql/hive/src/test/resources/golden/udf_translate-2-42aba80bf1913dd7c64545831f476c58 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_translate-3-20904c8be8fed5cbd2d66ead6248a60a b/sql/hive/src/test/resources/golden/udf_translate-3-20904c8be8fed5cbd2d66ead6248a60a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_translate-4-5d4abaf86254bacaa545c769bd7e50ba b/sql/hive/src/test/resources/golden/udf_translate-4-5d4abaf86254bacaa545c769bd7e50ba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_translate-5-f2637240d227f9732d3db76f2e9d3a59 b/sql/hive/src/test/resources/golden/udf_translate-5-f2637240d227f9732d3db76f2e9d3a59 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_translate-6-55122cc5ea4f49e737fee58945f3f21b b/sql/hive/src/test/resources/golden/udf_translate-6-55122cc5ea4f49e737fee58945f3f21b new file mode 100644 index 0000000000000..0a54ee40ecb13 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-6-55122cc5ea4f49e737fee58945f3f21b @@ -0,0 +1 @@ +12cd 12d \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_translate-7-856c9d0157c34ab85cc6c83d560bfd47 b/sql/hive/src/test/resources/golden/udf_translate-7-856c9d0157c34ab85cc6c83d560bfd47 new file mode 100644 index 0000000000000..0a54ee40ecb13 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-7-856c9d0157c34ab85cc6c83d560bfd47 @@ -0,0 +1 @@ +12cd 12d \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_translate-8-f56e5c0a7fdd81d6ca0bb84f2cadcf11 b/sql/hive/src/test/resources/golden/udf_translate-8-f56e5c0a7fdd81d6ca0bb84f2cadcf11 new file mode 100644 index 0000000000000..50c123df9d1d3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-8-f56e5c0a7fdd81d6ca0bb84f2cadcf11 @@ -0,0 +1 @@ +1bc \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_translate-9-ee69663d7662760973b72785595be2b1 b/sql/hive/src/test/resources/golden/udf_translate-9-ee69663d7662760973b72785595be2b1 new file mode 100644 index 0000000000000..b98d7e1c34024 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_translate-9-ee69663d7662760973b72785595be2b1 @@ -0,0 +1 @@ +NULL NULL NULL NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_trim-0-18aa2b7ff8d263124ea47c9e27fc672f b/sql/hive/src/test/resources/golden/udf_trim-0-18aa2b7ff8d263124ea47c9e27fc672f new file mode 100644 index 0000000000000..f0620a190ae4e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_trim-0-18aa2b7ff8d263124ea47c9e27fc672f @@ -0,0 +1 @@ +trim(str) - Removes the leading and trailing space characters from str \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_trim-1-e23715e112959e6840b6feed2ecf38a7 b/sql/hive/src/test/resources/golden/udf_trim-1-e23715e112959e6840b6feed2ecf38a7 new file mode 100644 index 0000000000000..49a13dd64b286 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_trim-1-e23715e112959e6840b6feed2ecf38a7 @@ -0,0 +1,4 @@ +trim(str) - Removes the leading and trailing space characters from str +Example: + > SELECT trim(' facebook ') FROM src LIMIT 1; + 'facebook' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ucase-0-8f8c18102eb02df524106be5ea49f23d b/sql/hive/src/test/resources/golden/udf_ucase-0-8f8c18102eb02df524106be5ea49f23d new file mode 100644 index 0000000000000..057c231dccf0e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ucase-0-8f8c18102eb02df524106be5ea49f23d @@ -0,0 +1 @@ +ucase(str) - Returns str with all characters changed to uppercase \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_ucase-1-640713eb89dbb09dbb6e5b472fc0ec8f b/sql/hive/src/test/resources/golden/udf_ucase-1-640713eb89dbb09dbb6e5b472fc0ec8f new file mode 100644 index 0000000000000..128d1e21fae83 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_ucase-1-640713eb89dbb09dbb6e5b472fc0ec8f @@ -0,0 +1,5 @@ +ucase(str) - Returns str with all characters changed to uppercase +Synonyms: upper +Example: + > SELECT ucase('Facebook') FROM src LIMIT 1; + 'FACEBOOK' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_unhex-0-11eb3cc5216d5446f4165007203acc47 b/sql/hive/src/test/resources/golden/udf_unhex-0-11eb3cc5216d5446f4165007203acc47 new file mode 100644 index 0000000000000..44b2a42cc26c5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_unhex-0-11eb3cc5216d5446f4165007203acc47 @@ -0,0 +1 @@ +unhex(str) - Converts hexadecimal argument to binary diff --git a/sql/hive/src/test/resources/golden/udf_unhex-1-a660886085b8651852b9b77934848ae4 b/sql/hive/src/test/resources/golden/udf_unhex-1-a660886085b8651852b9b77934848ae4 new file mode 100644 index 0000000000000..97af3b812a429 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_unhex-1-a660886085b8651852b9b77934848ae4 @@ -0,0 +1,14 @@ +unhex(str) - Converts hexadecimal argument to binary +Performs the inverse operation of HEX(str). That is, it interprets +each pair of hexadecimal digits in the argument as a number and +converts it to the byte representation of the number. The +resulting characters are returned as a binary string. + +Example: +> SELECT DECODE(UNHEX('4D7953514C'), 'UTF-8') from src limit 1; +'MySQL' + +The characters in the argument string must be legal hexadecimal +digits: '0' .. '9', 'A' .. 'F', 'a' .. 'f'. If UNHEX() encounters +any nonhexadecimal digits in the argument, it returns NULL. Also, +if there are an odd number of characters a leading 0 is appended. diff --git a/sql/hive/src/test/resources/golden/udf_unhex-2-78ba44cd7dae6619772c7620cb39b68 b/sql/hive/src/test/resources/golden/udf_unhex-2-78ba44cd7dae6619772c7620cb39b68 new file mode 100644 index 0000000000000..b4a6f2b692227 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_unhex-2-78ba44cd7dae6619772c7620cb39b68 @@ -0,0 +1 @@ +MySQL 1267 a -4 diff --git a/sql/hive/src/test/resources/golden/udf_unhex-3-8823f9cc76adaf32a9a6110df99ce4d6 b/sql/hive/src/test/resources/golden/udf_unhex-3-8823f9cc76adaf32a9a6110df99ce4d6 new file mode 100644 index 0000000000000..3a67adaf0a9a8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_unhex-3-8823f9cc76adaf32a9a6110df99ce4d6 @@ -0,0 +1 @@ +NULL NULL NULL diff --git a/sql/hive/src/test/resources/golden/udf_union-0-e3498ef95bc9d8c8ce55e75962b4a92c b/sql/hive/src/test/resources/golden/udf_union-0-e3498ef95bc9d8c8ce55e75962b4a92c new file mode 100644 index 0000000000000..3f3bb2b7ce02e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_union-0-e3498ef95bc9d8c8ce55e75962b4a92c @@ -0,0 +1 @@ +create_union(tag, obj1, obj2, obj3, ...) - Creates a union with the object for given tag \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_union-1-f6f01250718087029165e23badc02cd6 b/sql/hive/src/test/resources/golden/udf_union-1-f6f01250718087029165e23badc02cd6 new file mode 100644 index 0000000000000..748ed97055401 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_union-1-f6f01250718087029165e23badc02cd6 @@ -0,0 +1,4 @@ +create_union(tag, obj1, obj2, obj3, ...) - Creates a union with the object for given tag +Example: + > SELECT create_union(1, 1, "one") FROM src LIMIT 1; + one \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_union-2-6af20858e3209d7cf37f736805ec5182 b/sql/hive/src/test/resources/golden/udf_union-2-6af20858e3209d7cf37f736805ec5182 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_union-3-705d165fec6761744dd19b142c566d61 b/sql/hive/src/test/resources/golden/udf_union-3-705d165fec6761744dd19b142c566d61 new file mode 100644 index 0000000000000..4b9ae5402aa53 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_union-3-705d165fec6761744dd19b142c566d61 @@ -0,0 +1,2 @@ +{0:238} {1:"val_238"} {1:{"col1":2,"col2":"b"}} +{0:86} {0:2.0} {1:{"col1":2,"col2":"b"}} \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_upper-0-47dc226b0435f668df20fe0e84293ead b/sql/hive/src/test/resources/golden/udf_upper-0-47dc226b0435f668df20fe0e84293ead new file mode 100644 index 0000000000000..2e239cca5b860 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_upper-0-47dc226b0435f668df20fe0e84293ead @@ -0,0 +1 @@ +upper(str) - Returns str with all characters changed to uppercase \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_upper-1-f81f11c3563dbc9ff80496c4b10bcd1d b/sql/hive/src/test/resources/golden/udf_upper-1-f81f11c3563dbc9ff80496c4b10bcd1d new file mode 100644 index 0000000000000..673307e284b2e --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_upper-1-f81f11c3563dbc9ff80496c4b10bcd1d @@ -0,0 +1,5 @@ +upper(str) - Returns str with all characters changed to uppercase +Synonyms: ucase +Example: + > SELECT upper('Facebook') FROM src LIMIT 1; + 'FACEBOOK' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_var_pop-0-3187e740690ccc1988a19fea4202a6de b/sql/hive/src/test/resources/golden/udf_var_pop-0-3187e740690ccc1988a19fea4202a6de new file mode 100644 index 0000000000000..9dbf241e28107 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_var_pop-0-3187e740690ccc1988a19fea4202a6de @@ -0,0 +1 @@ +var_pop(x) - Returns the variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_var_pop-1-fd25e5226312bf54d918858511814766 b/sql/hive/src/test/resources/golden/udf_var_pop-1-fd25e5226312bf54d918858511814766 new file mode 100644 index 0000000000000..234a65bd8255d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_var_pop-1-fd25e5226312bf54d918858511814766 @@ -0,0 +1,2 @@ +var_pop(x) - Returns the variance of a set of numbers +Synonyms: variance \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_var_samp-0-b918928871d1b7f944315558c230c229 b/sql/hive/src/test/resources/golden/udf_var_samp-0-b918928871d1b7f944315558c230c229 new file mode 100644 index 0000000000000..673deeb031b44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_var_samp-0-b918928871d1b7f944315558c230c229 @@ -0,0 +1 @@ +var_samp(x) - Returns the sample variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_var_samp-1-59032ed5856fd4aa17c3e8e6721eec2b b/sql/hive/src/test/resources/golden/udf_var_samp-1-59032ed5856fd4aa17c3e8e6721eec2b new file mode 100644 index 0000000000000..673deeb031b44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_var_samp-1-59032ed5856fd4aa17c3e8e6721eec2b @@ -0,0 +1 @@ +var_samp(x) - Returns the sample variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_var_samp-2-b918928871d1b7f944315558c230c229 b/sql/hive/src/test/resources/golden/udf_var_samp-2-b918928871d1b7f944315558c230c229 new file mode 100644 index 0000000000000..673deeb031b44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_var_samp-2-b918928871d1b7f944315558c230c229 @@ -0,0 +1 @@ +var_samp(x) - Returns the sample variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_var_samp-3-59032ed5856fd4aa17c3e8e6721eec2b b/sql/hive/src/test/resources/golden/udf_var_samp-3-59032ed5856fd4aa17c3e8e6721eec2b new file mode 100644 index 0000000000000..673deeb031b44 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_var_samp-3-59032ed5856fd4aa17c3e8e6721eec2b @@ -0,0 +1 @@ +var_samp(x) - Returns the sample variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_variance-0-fd23be1baa8b5ffa0d4519560d3fca87 b/sql/hive/src/test/resources/golden/udf_variance-0-fd23be1baa8b5ffa0d4519560d3fca87 new file mode 100644 index 0000000000000..f58ae0769d5a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_variance-0-fd23be1baa8b5ffa0d4519560d3fca87 @@ -0,0 +1 @@ +variance(x) - Returns the variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_variance-1-c1856abae908b05bfd6183189b4fd06a b/sql/hive/src/test/resources/golden/udf_variance-1-c1856abae908b05bfd6183189b4fd06a new file mode 100644 index 0000000000000..e17528e607aba --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_variance-1-c1856abae908b05bfd6183189b4fd06a @@ -0,0 +1,2 @@ +variance(x) - Returns the variance of a set of numbers +Synonyms: var_pop \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_variance-2-3187e740690ccc1988a19fea4202a6de b/sql/hive/src/test/resources/golden/udf_variance-2-3187e740690ccc1988a19fea4202a6de new file mode 100644 index 0000000000000..9dbf241e28107 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_variance-2-3187e740690ccc1988a19fea4202a6de @@ -0,0 +1 @@ +var_pop(x) - Returns the variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_variance-3-fd25e5226312bf54d918858511814766 b/sql/hive/src/test/resources/golden/udf_variance-3-fd25e5226312bf54d918858511814766 new file mode 100644 index 0000000000000..234a65bd8255d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_variance-3-fd25e5226312bf54d918858511814766 @@ -0,0 +1,2 @@ +var_pop(x) - Returns the variance of a set of numbers +Synonyms: variance \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_variance-4-fd23be1baa8b5ffa0d4519560d3fca87 b/sql/hive/src/test/resources/golden/udf_variance-4-fd23be1baa8b5ffa0d4519560d3fca87 new file mode 100644 index 0000000000000..f58ae0769d5a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_variance-4-fd23be1baa8b5ffa0d4519560d3fca87 @@ -0,0 +1 @@ +variance(x) - Returns the variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_variance-5-c1856abae908b05bfd6183189b4fd06a b/sql/hive/src/test/resources/golden/udf_variance-5-c1856abae908b05bfd6183189b4fd06a new file mode 100644 index 0000000000000..e17528e607aba --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_variance-5-c1856abae908b05bfd6183189b4fd06a @@ -0,0 +1,2 @@ +variance(x) - Returns the variance of a set of numbers +Synonyms: var_pop \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_variance-6-3187e740690ccc1988a19fea4202a6de b/sql/hive/src/test/resources/golden/udf_variance-6-3187e740690ccc1988a19fea4202a6de new file mode 100644 index 0000000000000..9dbf241e28107 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_variance-6-3187e740690ccc1988a19fea4202a6de @@ -0,0 +1 @@ +var_pop(x) - Returns the variance of a set of numbers \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_variance-7-fd25e5226312bf54d918858511814766 b/sql/hive/src/test/resources/golden/udf_variance-7-fd25e5226312bf54d918858511814766 new file mode 100644 index 0000000000000..234a65bd8255d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_variance-7-fd25e5226312bf54d918858511814766 @@ -0,0 +1,2 @@ +var_pop(x) - Returns the variance of a set of numbers +Synonyms: variance \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_weekofyear-0-d6b4490b549a358be375511e39627dc2 b/sql/hive/src/test/resources/golden/udf_weekofyear-0-d6b4490b549a358be375511e39627dc2 new file mode 100644 index 0000000000000..29e3b370b03b8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_weekofyear-0-d6b4490b549a358be375511e39627dc2 @@ -0,0 +1 @@ +weekofyear(date) - Returns the week of the year of the given date. A week is considered to start on a Monday and week 1 is the first week with >3 days. \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_weekofyear-1-b7bbdfabe6054a66701250fd70065ddd b/sql/hive/src/test/resources/golden/udf_weekofyear-1-b7bbdfabe6054a66701250fd70065ddd new file mode 100644 index 0000000000000..c7939a11937c5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_weekofyear-1-b7bbdfabe6054a66701250fd70065ddd @@ -0,0 +1,6 @@ +weekofyear(date) - Returns the week of the year of the given date. A week is considered to start on a Monday and week 1 is the first week with >3 days. +Examples: + > SELECT weekofyear('2008-02-20') FROM src LIMIT 1; + 8 + > SELECT weekofyear('1980-12-31 12:59:59') FROM src LIMIT 1; + 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_weekofyear-2-57ec578b3e226b6971e0fc0694b513d6 b/sql/hive/src/test/resources/golden/udf_weekofyear-2-57ec578b3e226b6971e0fc0694b513d6 new file mode 100644 index 0000000000000..20d1dc50ce1f7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_weekofyear-2-57ec578b3e226b6971e0fc0694b513d6 @@ -0,0 +1 @@ +1 1 2 1 52 8 52 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_when-0-88b97c6722176393e9b3d089559d2d11 b/sql/hive/src/test/resources/golden/udf_when-0-88b97c6722176393e9b3d089559d2d11 new file mode 100644 index 0000000000000..2e36162dbaa33 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_when-0-88b97c6722176393e9b3d089559d2d11 @@ -0,0 +1 @@ +There is no documentation for function 'when' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_when-1-7365d5fe39dc7a025c942dad8fb9f0d4 b/sql/hive/src/test/resources/golden/udf_when-1-7365d5fe39dc7a025c942dad8fb9f0d4 new file mode 100644 index 0000000000000..2e36162dbaa33 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_when-1-7365d5fe39dc7a025c942dad8fb9f0d4 @@ -0,0 +1 @@ +There is no documentation for function 'when' \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_when-2-ff1118e7d06a4725e1e98a6d70a59295 b/sql/hive/src/test/resources/golden/udf_when-2-ff1118e7d06a4725e1e98a6d70a59295 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udf_when-3-e63043e8d6ecf300c1fcf8654176896f b/sql/hive/src/test/resources/golden/udf_when-3-e63043e8d6ecf300c1fcf8654176896f new file mode 100644 index 0000000000000..6929fdca28eb8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_when-3-e63043e8d6ecf300c1fcf8654176896f @@ -0,0 +1 @@ +2 9 14 NULL 24 NULL \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath-0-622670bd1cbf4bf0cf04a553006e3c8 b/sql/hive/src/test/resources/golden/udf_xpath-0-622670bd1cbf4bf0cf04a553006e3c8 new file mode 100644 index 0000000000000..18d9720653a5b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath-0-622670bd1cbf4bf0cf04a553006e3c8 @@ -0,0 +1 @@ +xpath(xml, xpath) - Returns a string array of values within xml nodes that match the xpath expression \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath-1-5a6f10392053a4eabe62f5cabb073a71 b/sql/hive/src/test/resources/golden/udf_xpath-1-5a6f10392053a4eabe62f5cabb073a71 new file mode 100644 index 0000000000000..3b092dafd32c2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath-1-5a6f10392053a4eabe62f5cabb073a71 @@ -0,0 +1,8 @@ +xpath(xml, xpath) - Returns a string array of values within xml nodes that match the xpath expression +Example: + > SELECT xpath('b1b2b3c1c2', 'a/text()') FROM src LIMIT 1 + [] + > SELECT xpath('b1b2b3c1c2', 'a/b/text()') FROM src LIMIT 1 + ["b1","b2","b3"] + > SELECT xpath('b1b2b3c1c2', 'a/c/text()') FROM src LIMIT 1 + ["c1","c2"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath-2-6b0a9d3874868d88d54ae133c978753d b/sql/hive/src/test/resources/golden/udf_xpath-2-6b0a9d3874868d88d54ae133c978753d new file mode 100644 index 0000000000000..0637a088a01e8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath-2-6b0a9d3874868d88d54ae133c978753d @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath-3-5700d81a9c2a22dcca287bf8439277ea b/sql/hive/src/test/resources/golden/udf_xpath-3-5700d81a9c2a22dcca287bf8439277ea new file mode 100644 index 0000000000000..8e8aff2387621 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath-3-5700d81a9c2a22dcca287bf8439277ea @@ -0,0 +1 @@ +["b1","b2","b3","c1","c2"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath-4-2960b453dd1dcf9ab7d4156c717d9e0a b/sql/hive/src/test/resources/golden/udf_xpath-4-2960b453dd1dcf9ab7d4156c717d9e0a new file mode 100644 index 0000000000000..e518b1f37e124 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath-4-2960b453dd1dcf9ab7d4156c717d9e0a @@ -0,0 +1 @@ +["b1","b2","b3"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath-5-7395e1cd3b543316a753978f556975e0 b/sql/hive/src/test/resources/golden/udf_xpath-5-7395e1cd3b543316a753978f556975e0 new file mode 100644 index 0000000000000..45615b772ba35 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath-5-7395e1cd3b543316a753978f556975e0 @@ -0,0 +1 @@ +["c1","c2"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath-6-108134b2ae4a8de5f6257d6c6391fb3f b/sql/hive/src/test/resources/golden/udf_xpath-6-108134b2ae4a8de5f6257d6c6391fb3f new file mode 100644 index 0000000000000..327bf3a1e76cc --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath-6-108134b2ae4a8de5f6257d6c6391fb3f @@ -0,0 +1 @@ +["b1","c1"] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_boolean-0-8b2f3f8132bfc8344e243cdaf45eb371 b/sql/hive/src/test/resources/golden/udf_xpath_boolean-0-8b2f3f8132bfc8344e243cdaf45eb371 new file mode 100644 index 0000000000000..134e9e99b7423 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_boolean-0-8b2f3f8132bfc8344e243cdaf45eb371 @@ -0,0 +1 @@ +xpath_boolean(xml, xpath) - Evaluates a boolean xpath expression \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_boolean-1-9e935539c9a3f3a118145096e7f978c4 b/sql/hive/src/test/resources/golden/udf_xpath_boolean-1-9e935539c9a3f3a118145096e7f978c4 new file mode 100644 index 0000000000000..624889cc0ac67 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_boolean-1-9e935539c9a3f3a118145096e7f978c4 @@ -0,0 +1,6 @@ +xpath_boolean(xml, xpath) - Evaluates a boolean xpath expression +Example: + > SELECT xpath_boolean('1','a/b') FROM src LIMIT 1; + true + > SELECT xpath_boolean('1','a/b = 2') FROM src LIMIT 1; + false \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_boolean-2-66148c16fde3008348a24cec5d9ba02b b/sql/hive/src/test/resources/golden/udf_xpath_boolean-2-66148c16fde3008348a24cec5d9ba02b new file mode 100644 index 0000000000000..f32a5804e292d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_boolean-2-66148c16fde3008348a24cec5d9ba02b @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_boolean-3-c6cf7ede46f0412fe7a37ac52061b060 b/sql/hive/src/test/resources/golden/udf_xpath_boolean-3-c6cf7ede46f0412fe7a37ac52061b060 new file mode 100644 index 0000000000000..02e4a84d62c4b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_boolean-3-c6cf7ede46f0412fe7a37ac52061b060 @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_boolean-4-45d2e8baee72a0d741eb0a976af3a965 b/sql/hive/src/test/resources/golden/udf_xpath_boolean-4-45d2e8baee72a0d741eb0a976af3a965 new file mode 100644 index 0000000000000..f32a5804e292d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_boolean-4-45d2e8baee72a0d741eb0a976af3a965 @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_boolean-5-dbc57416174a6ba26f29dfc13f91f302 b/sql/hive/src/test/resources/golden/udf_xpath_boolean-5-dbc57416174a6ba26f29dfc13f91f302 new file mode 100644 index 0000000000000..02e4a84d62c4b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_boolean-5-dbc57416174a6ba26f29dfc13f91f302 @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_boolean-6-45d3c4fa4f86577fc26e9de7fc552e8f b/sql/hive/src/test/resources/golden/udf_xpath_boolean-6-45d3c4fa4f86577fc26e9de7fc552e8f new file mode 100644 index 0000000000000..02e4a84d62c4b --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_boolean-6-45d3c4fa4f86577fc26e9de7fc552e8f @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_boolean-7-824c07ed4ef40cd509fea55575e43303 b/sql/hive/src/test/resources/golden/udf_xpath_boolean-7-824c07ed4ef40cd509fea55575e43303 new file mode 100644 index 0000000000000..f32a5804e292d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_boolean-7-824c07ed4ef40cd509fea55575e43303 @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-0-39199612969071d58b24034a2d17ca67 b/sql/hive/src/test/resources/golden/udf_xpath_double-0-39199612969071d58b24034a2d17ca67 new file mode 100644 index 0000000000000..b56f4d00a8a74 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-0-39199612969071d58b24034a2d17ca67 @@ -0,0 +1 @@ +xpath_number(xml, xpath) - Returns a double value that matches the xpath expression \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-1-2d5ceab0a14d6e837ed153e1a2235bb2 b/sql/hive/src/test/resources/golden/udf_xpath_double-1-2d5ceab0a14d6e837ed153e1a2235bb2 new file mode 100644 index 0000000000000..b6b6227174647 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-1-2d5ceab0a14d6e837ed153e1a2235bb2 @@ -0,0 +1,5 @@ +xpath_number(xml, xpath) - Returns a double value that matches the xpath expression +Synonyms: xpath_double +Example: + > SELECT xpath_number('12','sum(a/b)') FROM src LIMIT 1; + 3.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-10-fe9ae5013ee4f11b357128ee5ffb56c0 b/sql/hive/src/test/resources/golden/udf_xpath_double-10-fe9ae5013ee4f11b357128ee5ffb56c0 new file mode 100644 index 0000000000000..7104585f9a439 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-10-fe9ae5013ee4f11b357128ee5ffb56c0 @@ -0,0 +1 @@ +7.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-11-a1960676c1b2dc76aa178ea288d801d2 b/sql/hive/src/test/resources/golden/udf_xpath_double-11-a1960676c1b2dc76aa178ea288d801d2 new file mode 100644 index 0000000000000..6e6366051638f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-11-a1960676c1b2dc76aa178ea288d801d2 @@ -0,0 +1 @@ +5.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-2-a4d22cea9dffaf26b485b3eb08963789 b/sql/hive/src/test/resources/golden/udf_xpath_double-2-a4d22cea9dffaf26b485b3eb08963789 new file mode 100644 index 0000000000000..5b6de7db2f9f3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-2-a4d22cea9dffaf26b485b3eb08963789 @@ -0,0 +1 @@ +xpath_double(xml, xpath) - Returns a double value that matches the xpath expression \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-3-ea050c5b9e74d4b87b037236ef9e4fc2 b/sql/hive/src/test/resources/golden/udf_xpath_double-3-ea050c5b9e74d4b87b037236ef9e4fc2 new file mode 100644 index 0000000000000..b8accbcae1e17 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-3-ea050c5b9e74d4b87b037236ef9e4fc2 @@ -0,0 +1,5 @@ +xpath_double(xml, xpath) - Returns a double value that matches the xpath expression +Synonyms: xpath_number +Example: + > SELECT xpath_double('12','sum(a/b)') FROM src LIMIT 1; + 3.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-4-93f47057c68385cff3b6f5c42307590c b/sql/hive/src/test/resources/golden/udf_xpath_double-4-93f47057c68385cff3b6f5c42307590c new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-4-93f47057c68385cff3b6f5c42307590c @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-5-c811a2353f5baf585da8654acd13b0e5 b/sql/hive/src/test/resources/golden/udf_xpath_double-5-c811a2353f5baf585da8654acd13b0e5 new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-5-c811a2353f5baf585da8654acd13b0e5 @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-6-10fcb281fd8db12dd1ac41380b8030c6 b/sql/hive/src/test/resources/golden/udf_xpath_double-6-10fcb281fd8db12dd1ac41380b8030c6 new file mode 100644 index 0000000000000..0a8ac8c629540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-6-10fcb281fd8db12dd1ac41380b8030c6 @@ -0,0 +1 @@ +8.0E19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-7-4532934141d2adb1f4ff56e65e8cf14c b/sql/hive/src/test/resources/golden/udf_xpath_double-7-4532934141d2adb1f4ff56e65e8cf14c new file mode 100644 index 0000000000000..171538eb0b00f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-7-4532934141d2adb1f4ff56e65e8cf14c @@ -0,0 +1 @@ +0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-8-547e750f5e401511db56283e66d1231d b/sql/hive/src/test/resources/golden/udf_xpath_double-8-547e750f5e401511db56283e66d1231d new file mode 100644 index 0000000000000..9f8e9b69a33f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-8-547e750f5e401511db56283e66d1231d @@ -0,0 +1 @@ +1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_double-9-b45b8b60031ac43ed2ffcd883ba2f19e b/sql/hive/src/test/resources/golden/udf_xpath_double-9-b45b8b60031ac43ed2ffcd883ba2f19e new file mode 100644 index 0000000000000..3d3be3c32ed85 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_double-9-b45b8b60031ac43ed2ffcd883ba2f19e @@ -0,0 +1 @@ +15.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-0-7483dafee0dc7334eecabba31977e791 b/sql/hive/src/test/resources/golden/udf_xpath_float-0-7483dafee0dc7334eecabba31977e791 new file mode 100644 index 0000000000000..ea4df0ae58e12 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-0-7483dafee0dc7334eecabba31977e791 @@ -0,0 +1 @@ +xpath_float(xml, xpath) - Returns a float value that matches the xpath expression \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-1-f6ddff2daba006787aeb861ca6f9d37a b/sql/hive/src/test/resources/golden/udf_xpath_float-1-f6ddff2daba006787aeb861ca6f9d37a new file mode 100644 index 0000000000000..6bc4d4a46de72 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-1-f6ddff2daba006787aeb861ca6f9d37a @@ -0,0 +1,4 @@ +xpath_float(xml, xpath) - Returns a float value that matches the xpath expression +Example: + > SELECT xpath_float('12','sum(a/b)') FROM src LIMIT 1; + 3.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-2-70b7180f7bcd1d09727ad73084788d16 b/sql/hive/src/test/resources/golden/udf_xpath_float-2-70b7180f7bcd1d09727ad73084788d16 new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-2-70b7180f7bcd1d09727ad73084788d16 @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-3-79b7e57efe31a0373c39f0ba79b5bd54 b/sql/hive/src/test/resources/golden/udf_xpath_float-3-79b7e57efe31a0373c39f0ba79b5bd54 new file mode 100644 index 0000000000000..b955cad2a39a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-3-79b7e57efe31a0373c39f0ba79b5bd54 @@ -0,0 +1 @@ +NaN \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-4-6e1f61ebe10c5fde60148e3a31706352 b/sql/hive/src/test/resources/golden/udf_xpath_float-4-6e1f61ebe10c5fde60148e3a31706352 new file mode 100644 index 0000000000000..0a8ac8c629540 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-4-6e1f61ebe10c5fde60148e3a31706352 @@ -0,0 +1 @@ +8.0E19 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-5-410760f9560157587fbba7a677e12b9f b/sql/hive/src/test/resources/golden/udf_xpath_float-5-410760f9560157587fbba7a677e12b9f new file mode 100644 index 0000000000000..171538eb0b00f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-5-410760f9560157587fbba7a677e12b9f @@ -0,0 +1 @@ +0.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-6-d83a5002f52e3acb7dbb725bb434eebf b/sql/hive/src/test/resources/golden/udf_xpath_float-6-d83a5002f52e3acb7dbb725bb434eebf new file mode 100644 index 0000000000000..9f8e9b69a33f4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-6-d83a5002f52e3acb7dbb725bb434eebf @@ -0,0 +1 @@ +1.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-7-b57c58f9343a82846f54ef60b216dfaa b/sql/hive/src/test/resources/golden/udf_xpath_float-7-b57c58f9343a82846f54ef60b216dfaa new file mode 100644 index 0000000000000..3d3be3c32ed85 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-7-b57c58f9343a82846f54ef60b216dfaa @@ -0,0 +1 @@ +15.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-8-3a62c730d4e5d9be6fb01307577d6f48 b/sql/hive/src/test/resources/golden/udf_xpath_float-8-3a62c730d4e5d9be6fb01307577d6f48 new file mode 100644 index 0000000000000..7104585f9a439 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-8-3a62c730d4e5d9be6fb01307577d6f48 @@ -0,0 +1 @@ +7.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_float-9-16793f703b552fcb24f7aea9bb8a2401 b/sql/hive/src/test/resources/golden/udf_xpath_float-9-16793f703b552fcb24f7aea9bb8a2401 new file mode 100644 index 0000000000000..6e6366051638f --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_float-9-16793f703b552fcb24f7aea9bb8a2401 @@ -0,0 +1 @@ +5.0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-0-a9ed102a70e7e9d505be1555f0c7eb12 b/sql/hive/src/test/resources/golden/udf_xpath_int-0-a9ed102a70e7e9d505be1555f0c7eb12 new file mode 100644 index 0000000000000..67ab19492e405 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-0-a9ed102a70e7e9d505be1555f0c7eb12 @@ -0,0 +1 @@ +xpath_int(xml, xpath) - Returns an integer value that matches the xpath expression \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-1-26ddf7e46a66065909e9e547f0459910 b/sql/hive/src/test/resources/golden/udf_xpath_int-1-26ddf7e46a66065909e9e547f0459910 new file mode 100644 index 0000000000000..33349b0b22ad9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-1-26ddf7e46a66065909e9e547f0459910 @@ -0,0 +1,4 @@ +xpath_int(xml, xpath) - Returns an integer value that matches the xpath expression +Example: + > SELECT xpath_int('12','sum(a/b)') FROM src LIMIT 1; + 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-2-f10e246ebfd5f82545a3df64f51f58ba b/sql/hive/src/test/resources/golden/udf_xpath_int-2-f10e246ebfd5f82545a3df64f51f58ba new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-2-f10e246ebfd5f82545a3df64f51f58ba @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-3-eaa4a790c726cfa76a247d08a6ee7aba b/sql/hive/src/test/resources/golden/udf_xpath_int-3-eaa4a790c726cfa76a247d08a6ee7aba new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-3-eaa4a790c726cfa76a247d08a6ee7aba @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-4-b9ce6e38b52d6ffb9fc62f5e0a373890 b/sql/hive/src/test/resources/golden/udf_xpath_int-4-b9ce6e38b52d6ffb9fc62f5e0a373890 new file mode 100644 index 0000000000000..55a89f5564d21 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-4-b9ce6e38b52d6ffb9fc62f5e0a373890 @@ -0,0 +1 @@ +2147483647 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-5-7907dda43c9b4e9e0b5b01cf20413cd7 b/sql/hive/src/test/resources/golden/udf_xpath_int-5-7907dda43c9b4e9e0b5b01cf20413cd7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-5-7907dda43c9b4e9e0b5b01cf20413cd7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-6-9bfa4fdc7d551742ff23efad8507ba0a b/sql/hive/src/test/resources/golden/udf_xpath_int-6-9bfa4fdc7d551742ff23efad8507ba0a new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-6-9bfa4fdc7d551742ff23efad8507ba0a @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-7-e7026efa45ba8af0f569fcbe4f7119a4 b/sql/hive/src/test/resources/golden/udf_xpath_int-7-e7026efa45ba8af0f569fcbe4f7119a4 new file mode 100644 index 0000000000000..3f10ffe7a4c47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-7-e7026efa45ba8af0f569fcbe4f7119a4 @@ -0,0 +1 @@ +15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-8-d31e667d1c2ade0bec52cddf8f2b3833 b/sql/hive/src/test/resources/golden/udf_xpath_int-8-d31e667d1c2ade0bec52cddf8f2b3833 new file mode 100644 index 0000000000000..c7930257dfef5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-8-d31e667d1c2ade0bec52cddf8f2b3833 @@ -0,0 +1 @@ +7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_int-9-e6c2548098879ee747a933c755c4c869 b/sql/hive/src/test/resources/golden/udf_xpath_int-9-e6c2548098879ee747a933c755c4c869 new file mode 100644 index 0000000000000..7813681f5b41c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_int-9-e6c2548098879ee747a933c755c4c869 @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-0-d274b272251e95ec2e8139bfa471bd0b b/sql/hive/src/test/resources/golden/udf_xpath_long-0-d274b272251e95ec2e8139bfa471bd0b new file mode 100644 index 0000000000000..748fd827e8545 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-0-d274b272251e95ec2e8139bfa471bd0b @@ -0,0 +1 @@ +xpath_long(xml, xpath) - Returns a long value that matches the xpath expression \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-1-43fbf4d944cf7eaf57b4d6166b803fb6 b/sql/hive/src/test/resources/golden/udf_xpath_long-1-43fbf4d944cf7eaf57b4d6166b803fb6 new file mode 100644 index 0000000000000..65241b6ce9b64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-1-43fbf4d944cf7eaf57b4d6166b803fb6 @@ -0,0 +1,4 @@ +xpath_long(xml, xpath) - Returns a long value that matches the xpath expression +Example: + > SELECT xpath_long('12','sum(a/b)') FROM src LIMIT 1; + 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-2-d697d943b1f7e7762d804064d11b905b b/sql/hive/src/test/resources/golden/udf_xpath_long-2-d697d943b1f7e7762d804064d11b905b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-2-d697d943b1f7e7762d804064d11b905b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-3-c0b20c651ae5a352322067f97bd6ae5d b/sql/hive/src/test/resources/golden/udf_xpath_long-3-c0b20c651ae5a352322067f97bd6ae5d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-3-c0b20c651ae5a352322067f97bd6ae5d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-4-821e1cdea837bee7a8c2745bc3b85b9 b/sql/hive/src/test/resources/golden/udf_xpath_long-4-821e1cdea837bee7a8c2745bc3b85b9 new file mode 100644 index 0000000000000..996d127e59365 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-4-821e1cdea837bee7a8c2745bc3b85b9 @@ -0,0 +1 @@ +9223372036854775807 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-5-22a71b88c5bcb3db6e299a88ab791d4d b/sql/hive/src/test/resources/golden/udf_xpath_long-5-22a71b88c5bcb3db6e299a88ab791d4d new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-5-22a71b88c5bcb3db6e299a88ab791d4d @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-6-f2460325cf46c830631d8bc32565c787 b/sql/hive/src/test/resources/golden/udf_xpath_long-6-f2460325cf46c830631d8bc32565c787 new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-6-f2460325cf46c830631d8bc32565c787 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-7-b3f1d4b505151180b82fddb18cf795d0 b/sql/hive/src/test/resources/golden/udf_xpath_long-7-b3f1d4b505151180b82fddb18cf795d0 new file mode 100644 index 0000000000000..3f10ffe7a4c47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-7-b3f1d4b505151180b82fddb18cf795d0 @@ -0,0 +1 @@ +15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-8-c21bebec7d1a4aec99fba6b0a9a03083 b/sql/hive/src/test/resources/golden/udf_xpath_long-8-c21bebec7d1a4aec99fba6b0a9a03083 new file mode 100644 index 0000000000000..c7930257dfef5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-8-c21bebec7d1a4aec99fba6b0a9a03083 @@ -0,0 +1 @@ +7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_long-9-7bafedc7b884df49a9f6752360969bf1 b/sql/hive/src/test/resources/golden/udf_xpath_long-9-7bafedc7b884df49a9f6752360969bf1 new file mode 100644 index 0000000000000..7813681f5b41c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_long-9-7bafedc7b884df49a9f6752360969bf1 @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-0-7d5231aed9cbbf68cd740791f9e5be17 b/sql/hive/src/test/resources/golden/udf_xpath_short-0-7d5231aed9cbbf68cd740791f9e5be17 new file mode 100644 index 0000000000000..22ccb9ca9defa --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-0-7d5231aed9cbbf68cd740791f9e5be17 @@ -0,0 +1 @@ +xpath_short(xml, xpath) - Returns a short value that matches the xpath expression \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-1-5d45932563b78e0b435b8cfebfe3cc2 b/sql/hive/src/test/resources/golden/udf_xpath_short-1-5d45932563b78e0b435b8cfebfe3cc2 new file mode 100644 index 0000000000000..931ce2abb3d4d --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-1-5d45932563b78e0b435b8cfebfe3cc2 @@ -0,0 +1,4 @@ +xpath_short(xml, xpath) - Returns a short value that matches the xpath expression +Example: + > SELECT xpath_short('12','sum(a/b)') FROM src LIMIT 1; + 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-2-10e9d4899d2fd352b58010c778c1f7a8 b/sql/hive/src/test/resources/golden/udf_xpath_short-2-10e9d4899d2fd352b58010c778c1f7a8 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-2-10e9d4899d2fd352b58010c778c1f7a8 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-3-5ac84f46610107b1846f4a9b26a69576 b/sql/hive/src/test/resources/golden/udf_xpath_short-3-5ac84f46610107b1846f4a9b26a69576 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-3-5ac84f46610107b1846f4a9b26a69576 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-4-8a300079521fefbe0d2f943851c1c53c b/sql/hive/src/test/resources/golden/udf_xpath_short-4-8a300079521fefbe0d2f943851c1c53c new file mode 100644 index 0000000000000..d7d17fcbef95c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-4-8a300079521fefbe0d2f943851c1c53c @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-5-51f5de44cf1d5289fa5892ffe16e473e b/sql/hive/src/test/resources/golden/udf_xpath_short-5-51f5de44cf1d5289fa5892ffe16e473e new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-5-51f5de44cf1d5289fa5892ffe16e473e @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-6-fc85e2c7b89fe11adb7b6b1fb696bd04 b/sql/hive/src/test/resources/golden/udf_xpath_short-6-fc85e2c7b89fe11adb7b6b1fb696bd04 new file mode 100644 index 0000000000000..56a6051ca2b02 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-6-fc85e2c7b89fe11adb7b6b1fb696bd04 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-7-e24ee123f331429c22de0a06054d0d5d b/sql/hive/src/test/resources/golden/udf_xpath_short-7-e24ee123f331429c22de0a06054d0d5d new file mode 100644 index 0000000000000..3f10ffe7a4c47 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-7-e24ee123f331429c22de0a06054d0d5d @@ -0,0 +1 @@ +15 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-8-f8256e7c0dc4ac31303c1e21c8fcba95 b/sql/hive/src/test/resources/golden/udf_xpath_short-8-f8256e7c0dc4ac31303c1e21c8fcba95 new file mode 100644 index 0000000000000..c7930257dfef5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-8-f8256e7c0dc4ac31303c1e21c8fcba95 @@ -0,0 +1 @@ +7 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_short-9-22088ba0fb00eaa28e3460ca018b343e b/sql/hive/src/test/resources/golden/udf_xpath_short-9-22088ba0fb00eaa28e3460ca018b343e new file mode 100644 index 0000000000000..7813681f5b41c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_short-9-22088ba0fb00eaa28e3460ca018b343e @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-0-e315d11e9feb29177b5cb1e221c7cfa4 b/sql/hive/src/test/resources/golden/udf_xpath_string-0-e315d11e9feb29177b5cb1e221c7cfa4 new file mode 100644 index 0000000000000..5b807fcf43195 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-0-e315d11e9feb29177b5cb1e221c7cfa4 @@ -0,0 +1 @@ +xpath_string(xml, xpath) - Returns the text contents of the first xml node that matches the xpath expression diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-1-110b583cde6cd23c486d8223c444cbe9 b/sql/hive/src/test/resources/golden/udf_xpath_string-1-110b583cde6cd23c486d8223c444cbe9 new file mode 100644 index 0000000000000..8f3ab457faf5c --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-1-110b583cde6cd23c486d8223c444cbe9 @@ -0,0 +1,10 @@ +xpath_string(xml, xpath) - Returns the text contents of the first xml node that matches the xpath expression +Example: + > SELECT xpath_string('bcc','a/c') FROM src LIMIT 1; + 'cc' + > SELECT xpath_string('b1b2','a/b') FROM src LIMIT 1; + 'b1' + > SELECT xpath_string('b1b2','a/b[2]') FROM src LIMIT 1; + 'b2' + > SELECT xpath_string('b1b2','a') FROM src LIMIT 1; + 'b1b2' diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-2-a147b4eaa40b03355f666ea660cbff1f b/sql/hive/src/test/resources/golden/udf_xpath_string-2-a147b4eaa40b03355f666ea660cbff1f new file mode 100644 index 0000000000000..2f10d1e91ed93 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-2-a147b4eaa40b03355f666ea660cbff1f @@ -0,0 +1 @@ +bbcc diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-3-a62072b86a6044d5b97911d662899b5a b/sql/hive/src/test/resources/golden/udf_xpath_string-3-a62072b86a6044d5b97911d662899b5a new file mode 100644 index 0000000000000..e0b3f1b09bd18 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-3-a62072b86a6044d5b97911d662899b5a @@ -0,0 +1 @@ +bb diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-4-152b0424ec68120f4ef15269eac0528a b/sql/hive/src/test/resources/golden/udf_xpath_string-4-152b0424ec68120f4ef15269eac0528a new file mode 100644 index 0000000000000..46c1d6125b7b4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-4-152b0424ec68120f4ef15269eac0528a @@ -0,0 +1 @@ +cc diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-5-2ab527e587583138ca764f5518a88c14 b/sql/hive/src/test/resources/golden/udf_xpath_string-5-2ab527e587583138ca764f5518a88c14 new file mode 100644 index 0000000000000..8b137891791fe --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-5-2ab527e587583138ca764f5518a88c14 @@ -0,0 +1 @@ + diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-6-58204a4df0fbf861028a1a94fb20ec61 b/sql/hive/src/test/resources/golden/udf_xpath_string-6-58204a4df0fbf861028a1a94fb20ec61 new file mode 100644 index 0000000000000..c9c6af7f78bc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-6-58204a4df0fbf861028a1a94fb20ec61 @@ -0,0 +1 @@ +b1 diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-7-b5b211e4abd14990c28007c6638cb44f b/sql/hive/src/test/resources/golden/udf_xpath_string-7-b5b211e4abd14990c28007c6638cb44f new file mode 100644 index 0000000000000..c9c6af7f78bc4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-7-b5b211e4abd14990c28007c6638cb44f @@ -0,0 +1 @@ +b1 diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-8-8dcf59ffc63ea3b225fcdd33dc2be9fc b/sql/hive/src/test/resources/golden/udf_xpath_string-8-8dcf59ffc63ea3b225fcdd33dc2be9fc new file mode 100644 index 0000000000000..e6bfff5c1d0f0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-8-8dcf59ffc63ea3b225fcdd33dc2be9fc @@ -0,0 +1 @@ +b2 diff --git a/sql/hive/src/test/resources/golden/udf_xpath_string-9-647aca756f43e791dd5497e1b4c6af89 b/sql/hive/src/test/resources/golden/udf_xpath_string-9-647aca756f43e791dd5497e1b4c6af89 new file mode 100644 index 0000000000000..e6bfff5c1d0f0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/udf_xpath_string-9-647aca756f43e791dd5497e1b4c6af89 @@ -0,0 +1 @@ +b2 diff --git a/sql/hive/src/test/resources/golden/udtf_stack-0-665a27212319e1b2d1ad6b6dbaa3ce9a b/sql/hive/src/test/resources/golden/udtf_stack-0-665a27212319e1b2d1ad6b6dbaa3ce9a new file mode 100644 index 0000000000000..599bf1880a83a --- /dev/null +++ b/sql/hive/src/test/resources/golden/udtf_stack-0-665a27212319e1b2d1ad6b6dbaa3ce9a @@ -0,0 +1 @@ +stack(n, cols...) - turns k columns into n rows of size k/n each diff --git a/sql/hive/src/test/resources/golden/udtf_stack-1-879ca1a8453ced55a8617b390670a4e1 b/sql/hive/src/test/resources/golden/udtf_stack-1-879ca1a8453ced55a8617b390670a4e1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/udtf_stack-2-e9b1b8a1b6172a00deeb15a07f928dc5 b/sql/hive/src/test/resources/golden/udtf_stack-2-e9b1b8a1b6172a00deeb15a07f928dc5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/unicode_notation-0-8ee564d593fc64e0ad8a52b5d659f286 b/sql/hive/src/test/resources/golden/unicode_notation-0-8ee564d593fc64e0ad8a52b5d659f286 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/unicode_notation-1-3de206f543c9e1525c54547f076b99c3 b/sql/hive/src/test/resources/golden/unicode_notation-1-3de206f543c9e1525c54547f076b99c3 new file mode 100644 index 0000000000000..e82f93fe65c5e --- /dev/null +++ b/sql/hive/src/test/resources/golden/unicode_notation-1-3de206f543c9e1525c54547f076b99c3 @@ -0,0 +1,27 @@ +# col_name data_type comment + +a string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 03 18:39:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5393816597631538368/k1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1388803192 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + field.delim \u0001 + serialization.format \u0001 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/unicode_notation-2-9a9c2395773e362f0db32d5603673291 b/sql/hive/src/test/resources/golden/unicode_notation-2-9a9c2395773e362f0db32d5603673291 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/unicode_notation-3-4ac0de021c370cc6b8e753e00f96682e b/sql/hive/src/test/resources/golden/unicode_notation-3-4ac0de021c370cc6b8e753e00f96682e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/unicode_notation-4-3de206f543c9e1525c54547f076b99c3 b/sql/hive/src/test/resources/golden/unicode_notation-4-3de206f543c9e1525c54547f076b99c3 new file mode 100644 index 0000000000000..e82f93fe65c5e --- /dev/null +++ b/sql/hive/src/test/resources/golden/unicode_notation-4-3de206f543c9e1525c54547f076b99c3 @@ -0,0 +1,27 @@ +# col_name data_type comment + +a string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 03 18:39:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5393816597631538368/k1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1388803192 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + field.delim \u0001 + serialization.format \u0001 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/unicode_notation-5-9a9c2395773e362f0db32d5603673291 b/sql/hive/src/test/resources/golden/unicode_notation-5-9a9c2395773e362f0db32d5603673291 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/unicode_notation-6-b52052b427ea699f7bc7bee7e32d1de9 b/sql/hive/src/test/resources/golden/unicode_notation-6-b52052b427ea699f7bc7bee7e32d1de9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/unicode_notation-7-3de206f543c9e1525c54547f076b99c3 b/sql/hive/src/test/resources/golden/unicode_notation-7-3de206f543c9e1525c54547f076b99c3 new file mode 100644 index 0000000000000..2be72c6e4e8c7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/unicode_notation-7-3de206f543c9e1525c54547f076b99c3 @@ -0,0 +1,27 @@ +# col_name data_type comment + +a string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 03 18:39:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5393816597631538368/k1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1388803192 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + field.delim | + serialization.format | \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/unicode_notation-8-9a9c2395773e362f0db32d5603673291 b/sql/hive/src/test/resources/golden/unicode_notation-8-9a9c2395773e362f0db32d5603673291 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union10-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union10-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union10-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union10-1-c5b4e04f745a28463e64aeeec6d4b2af b/sql/hive/src/test/resources/golden/union10-1-c5b4e04f745a28463e64aeeec6d4b2af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union10-2-60ee9eae687170317ff91dafe6b799bf b/sql/hive/src/test/resources/golden/union10-2-60ee9eae687170317ff91dafe6b799bf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union10-3-6b4ed91859c7ab8d3548d4c7eeb65182 b/sql/hive/src/test/resources/golden/union10-3-6b4ed91859c7ab8d3548d4c7eeb65182 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union10-4-7f83822f19aa9b973198fe4c42c66856 b/sql/hive/src/test/resources/golden/union10-4-7f83822f19aa9b973198fe4c42c66856 new file mode 100644 index 0000000000000..1d5891034ddec --- /dev/null +++ b/sql/hive/src/test/resources/golden/union10-4-7f83822f19aa9b973198fe4c42c66856 @@ -0,0 +1,3 @@ +tst1 500 +tst2 500 +tst3 500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union11-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union11-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union11-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union11-1-a6f37db310de2edce6696c25a4fe96e3 b/sql/hive/src/test/resources/golden/union11-1-a6f37db310de2edce6696c25a4fe96e3 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union11-2-cd756f39e22e121bdbd51400662aa47f b/sql/hive/src/test/resources/golden/union11-2-cd756f39e22e121bdbd51400662aa47f new file mode 100644 index 0000000000000..1ec0096b865a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union11-2-cd756f39e22e121bdbd51400662aa47f @@ -0,0 +1,3 @@ +tst1 1 +tst2 1 +tst3 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union12-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union12-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union12-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union12-1-9d2793d1cfd2645ac7f373a0a127e599 b/sql/hive/src/test/resources/golden/union12-1-9d2793d1cfd2645ac7f373a0a127e599 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union12-2-69ba763b72862bf0f8b2bdf1a712e3b5 b/sql/hive/src/test/resources/golden/union12-2-69ba763b72862bf0f8b2bdf1a712e3b5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union13-0-6970d1e2405f3769a28a8804887ac657 b/sql/hive/src/test/resources/golden/union13-0-6970d1e2405f3769a28a8804887ac657 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union13-1-534d0853c5fc094404f65ca4631c1c20 b/sql/hive/src/test/resources/golden/union13-1-534d0853c5fc094404f65ca4631c1c20 new file mode 100644 index 0000000000000..2209b11d74282 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union13-1-534d0853c5fc094404f65ca4631c1c20 @@ -0,0 +1,1000 @@ +238 val_238 +238 val_238 +86 val_86 +86 val_86 +311 val_311 +311 val_311 +27 val_27 +27 val_27 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +484 val_484 +484 val_484 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +150 val_150 +150 val_150 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +66 val_66 +66 val_66 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +374 val_374 +374 val_374 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +145 val_145 +145 val_145 +495 val_495 +495 val_495 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +82 val_82 +82 val_82 +403 val_403 +403 val_403 +166 val_166 +166 val_166 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +252 val_252 +252 val_252 +292 val_292 +292 val_292 +219 val_219 +219 val_219 +287 val_287 +287 val_287 +153 val_153 +153 val_153 +193 val_193 +193 val_193 +338 val_338 +338 val_338 +446 val_446 +446 val_446 +459 val_459 +459 val_459 +394 val_394 +394 val_394 +237 val_237 +237 val_237 +482 val_482 +482 val_482 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +494 val_494 +494 val_494 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +247 val_247 +247 val_247 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +162 val_162 +162 val_162 +377 val_377 +377 val_377 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +365 val_365 +365 val_365 +266 val_266 +266 val_266 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +475 val_475 +475 val_475 +17 val_17 +17 val_17 +113 val_113 +113 val_113 +155 val_155 +155 val_155 +203 val_203 +203 val_203 +339 val_339 +339 val_339 +0 val_0 +0 val_0 +455 val_455 +455 val_455 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +57 val_57 +57 val_57 +302 val_302 +302 val_302 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +345 val_345 +345 val_345 +129 val_129 +129 val_129 +170 val_170 +170 val_170 +20 val_20 +20 val_20 +489 val_489 +489 val_489 +157 val_157 +157 val_157 +378 val_378 +378 val_378 +221 val_221 +221 val_221 +92 val_92 +92 val_92 +111 val_111 +111 val_111 +47 val_47 +47 val_47 +72 val_72 +72 val_72 +4 val_4 +4 val_4 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +427 val_427 +427 val_427 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +356 val_356 +356 val_356 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +386 val_386 +386 val_386 +437 val_437 +437 val_437 +469 val_469 +469 val_469 +192 val_192 +192 val_192 +286 val_286 +286 val_286 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +54 val_54 +54 val_54 +459 val_459 +459 val_459 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +289 val_289 +289 val_289 +221 val_221 +221 val_221 +65 val_65 +65 val_65 +318 val_318 +318 val_318 +332 val_332 +332 val_332 +311 val_311 +311 val_311 +275 val_275 +275 val_275 +137 val_137 +137 val_137 +241 val_241 +241 val_241 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +180 val_180 +180 val_180 +284 val_284 +284 val_284 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +181 val_181 +181 val_181 +67 val_67 +67 val_67 +260 val_260 +260 val_260 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +373 val_373 +373 val_373 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +58 val_58 +58 val_58 +8 val_8 +8 val_8 +411 val_411 +411 val_411 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +158 val_158 +158 val_158 +119 val_119 +119 val_119 +496 val_496 +496 val_496 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +393 val_393 +393 val_393 +454 val_454 +454 val_454 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +418 val_418 +418 val_418 +96 val_96 +96 val_96 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +131 val_131 +131 val_131 +51 val_51 +51 val_51 +404 val_404 +404 val_404 +43 val_43 +43 val_43 +436 val_436 +436 val_436 +156 val_156 +156 val_156 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +308 val_308 +308 val_308 +95 val_95 +95 val_95 +196 val_196 +196 val_196 +288 val_288 +288 val_288 +481 val_481 +481 val_481 +457 val_457 +457 val_457 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +470 val_470 +470 val_470 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +85 val_85 +85 val_85 +77 val_77 +77 val_77 +0 val_0 +0 val_0 +490 val_490 +490 val_490 +87 val_87 +87 val_87 +364 val_364 +364 val_364 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +419 val_419 +419 val_419 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +19 val_19 +19 val_19 +435 val_435 +435 val_435 +10 val_10 +10 val_10 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +306 val_306 +306 val_306 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +389 val_389 +389 val_389 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +392 val_392 +392 val_392 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +452 val_452 +452 val_452 +177 val_177 +177 val_177 +226 val_226 +226 val_226 +5 val_5 +5 val_5 +497 val_497 +497 val_497 +402 val_402 +402 val_402 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +336 val_336 +336 val_336 +95 val_95 +95 val_95 +11 val_11 +11 val_11 +168 val_168 +168 val_168 +34 val_34 +34 val_34 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +143 val_143 +143 val_143 +472 val_472 +472 val_472 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +160 val_160 +160 val_160 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +78 val_78 +78 val_78 +76 val_76 +76 val_76 +41 val_41 +41 val_41 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +449 val_449 +449 val_449 +218 val_218 +218 val_218 +228 val_228 +228 val_228 +138 val_138 +138 val_138 +453 val_453 +453 val_453 +30 val_30 +30 val_30 +209 val_209 +209 val_209 +64 val_64 +64 val_64 +468 val_468 +468 val_468 +76 val_76 +76 val_76 +74 val_74 +74 val_74 +342 val_342 +342 val_342 +69 val_69 +69 val_69 +230 val_230 +230 val_230 +33 val_33 +33 val_33 +368 val_368 +368 val_368 +103 val_103 +103 val_103 +296 val_296 +296 val_296 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +274 val_274 +274 val_274 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +485 val_485 +485 val_485 +116 val_116 +116 val_116 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +263 val_263 +263 val_263 +70 val_70 +70 val_70 +487 val_487 +487 val_487 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +244 val_244 +244 val_244 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +467 val_467 +467 val_467 +432 val_432 +432 val_432 +202 val_202 +202 val_202 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +2 val_2 +2 val_2 +35 val_35 +35 val_35 +283 val_283 +283 val_283 +331 val_331 +331 val_331 +235 val_235 +235 val_235 +80 val_80 +80 val_80 +44 val_44 +44 val_44 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +335 val_335 +335 val_335 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +366 val_366 +366 val_366 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +483 val_483 +483 val_483 +53 val_53 +53 val_53 +105 val_105 +105 val_105 +257 val_257 +257 val_257 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +190 val_190 +190 val_190 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +114 val_114 +114 val_114 +258 val_258 +258 val_258 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +262 val_262 +262 val_262 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +201 val_201 +201 val_201 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +291 val_291 +291 val_291 +24 val_24 +24 val_24 +351 val_351 +351 val_351 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +163 val_163 +163 val_163 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +491 val_491 +491 val_491 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +360 val_360 +360 val_360 +248 val_248 +248 val_248 +479 val_479 +479 val_479 +305 val_305 +305 val_305 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +444 val_444 +444 val_444 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +443 val_443 +443 val_443 +323 val_323 +323 val_323 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +178 val_178 +178 val_178 +468 val_468 +468 val_468 +310 val_310 +310 val_310 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +493 val_493 +493 val_493 +460 val_460 +460 val_460 +207 val_207 +207 val_207 +249 val_249 +249 val_249 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +83 val_83 +83 val_83 +136 val_136 +136 val_136 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +214 val_214 +214 val_214 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +133 val_133 +133 val_133 +175 val_175 +175 val_175 +189 val_189 +189 val_189 +454 val_454 +454 val_454 +375 val_375 +375 val_375 +401 val_401 +401 val_401 +421 val_421 +421 val_421 +407 val_407 +407 val_407 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +379 val_379 +379 val_379 +18 val_18 +18 val_18 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +9 val_9 +9 val_9 +341 val_341 +341 val_341 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +362 val_362 +362 val_362 +186 val_186 +186 val_186 +285 val_285 +285 val_285 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +183 val_183 +183 val_183 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +469 val_469 +469 val_469 +315 val_315 +315 val_315 +84 val_84 +84 val_84 +28 val_28 +28 val_28 +37 val_37 +37 val_37 +448 val_448 +448 val_448 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +194 val_194 +194 val_194 +414 val_414 +414 val_414 +477 val_477 +477 val_477 +222 val_222 +222 val_222 +126 val_126 +126 val_126 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +400 val_400 +400 val_400 +200 val_200 +200 val_200 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union14-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union14-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union14-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union14-1-11603fb6225423979af6c062cfa9389b b/sql/hive/src/test/resources/golden/union14-1-11603fb6225423979af6c062cfa9389b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union14-2-8e01b2f4a18ad41a622e0aadbe680398 b/sql/hive/src/test/resources/golden/union14-2-8e01b2f4a18ad41a622e0aadbe680398 new file mode 100644 index 0000000000000..07f67df79dcbd --- /dev/null +++ b/sql/hive/src/test/resources/golden/union14-2-8e01b2f4a18ad41a622e0aadbe680398 @@ -0,0 +1,17 @@ +NULL 10 +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 +66 1 +98 1 +tst1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union15-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union15-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union15-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union15-1-caf8a4bf47a5f5dfd27388fe00686c56 b/sql/hive/src/test/resources/golden/union15-1-caf8a4bf47a5f5dfd27388fe00686c56 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union15-2-a89acfb4bbc044c483b94e28152a41e0 b/sql/hive/src/test/resources/golden/union15-2-a89acfb4bbc044c483b94e28152a41e0 new file mode 100644 index 0000000000000..b00b55f6fa92d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union15-2-a89acfb4bbc044c483b94e28152a41e0 @@ -0,0 +1,17 @@ +NULL 20 +128 2 +146 2 +150 2 +213 2 +224 2 +238 2 +255 2 +273 2 +278 2 +311 2 +369 2 +401 2 +406 2 +66 2 +98 2 +tst1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union16-0-7d7f87e388835405f8c7baba969e04f5 b/sql/hive/src/test/resources/golden/union16-0-7d7f87e388835405f8c7baba969e04f5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union16-1-9f76074598f9b55d8afbb5659737a382 b/sql/hive/src/test/resources/golden/union16-1-9f76074598f9b55d8afbb5659737a382 new file mode 100644 index 0000000000000..6f680072350ab --- /dev/null +++ b/sql/hive/src/test/resources/golden/union16-1-9f76074598f9b55d8afbb5659737a382 @@ -0,0 +1 @@ +12500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union17-0-383b0c63b3fe31509d23612cb6ae88a b/sql/hive/src/test/resources/golden/union17-0-383b0c63b3fe31509d23612cb6ae88a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union17-1-9491c271b7e2c351ddcf126f73679892 b/sql/hive/src/test/resources/golden/union17-1-9491c271b7e2c351ddcf126f73679892 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union17-2-e6fb104913b9da8193167ee263993dd1 b/sql/hive/src/test/resources/golden/union17-2-e6fb104913b9da8193167ee263993dd1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union17-3-eef8248caa65e21a7c2956aa488297a0 b/sql/hive/src/test/resources/golden/union17-3-eef8248caa65e21a7c2956aa488297a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union17-4-a6b1560ec2eb0bd64c9dd2c8daae99c5 b/sql/hive/src/test/resources/golden/union17-4-a6b1560ec2eb0bd64c9dd2c8daae99c5 new file mode 100644 index 0000000000000..a5a9e42fff209 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union17-4-a6b1560ec2eb0bd64c9dd2c8daae99c5 @@ -0,0 +1,310 @@ +0 1 +10 1 +100 1 +103 1 +104 1 +105 1 +11 1 +111 1 +113 1 +114 1 +116 1 +118 1 +119 1 +12 1 +120 1 +125 1 +126 1 +128 1 +129 1 +131 1 +133 1 +134 1 +136 1 +137 1 +138 1 +143 1 +145 1 +146 1 +149 1 +15 1 +150 1 +152 1 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 1 +165 1 +166 1 +167 1 +168 1 +169 1 +17 1 +170 1 +172 1 +174 1 +175 1 +176 1 +177 1 +178 1 +179 1 +18 1 +180 1 +181 1 +183 1 +186 1 +187 1 +189 1 +19 1 +190 1 +191 1 +192 1 +193 1 +194 1 +195 1 +196 1 +197 1 +199 1 +2 1 +20 1 +200 1 +201 1 +202 1 +203 1 +205 1 +207 1 +208 1 +209 1 +213 1 +214 1 +216 1 +217 1 +218 1 +219 1 +221 1 +222 1 +223 1 +224 1 +226 1 +228 1 +229 1 +230 1 +233 1 +235 1 +237 1 +238 1 +239 1 +24 1 +241 1 +242 1 +244 1 +247 1 +248 1 +249 1 +252 1 +255 1 +256 1 +257 1 +258 1 +26 1 +260 1 +262 1 +263 1 +265 1 +266 1 +27 1 +272 1 +273 1 +274 1 +275 1 +277 1 +278 1 +28 1 +280 1 +281 1 +282 1 +283 1 +284 1 +285 1 +286 1 +287 1 +288 1 +289 1 +291 1 +292 1 +296 1 +298 1 +30 1 +302 1 +305 1 +306 1 +307 1 +308 1 +309 1 +310 1 +311 1 +315 1 +316 1 +317 1 +318 1 +321 1 +322 1 +323 1 +325 1 +327 1 +33 1 +331 1 +332 1 +333 1 +335 1 +336 1 +338 1 +339 1 +34 1 +341 1 +342 1 +344 1 +345 1 +348 1 +35 1 +351 1 +353 1 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 1 +368 1 +369 1 +37 1 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 1 +384 1 +386 1 +389 1 +392 1 +393 1 +394 1 +395 1 +396 1 +397 1 +399 1 +4 1 +400 1 +401 1 +402 1 +403 1 +404 1 +406 1 +407 1 +409 1 +41 1 +411 1 +413 1 +414 1 +417 1 +418 1 +419 1 +42 1 +421 1 +424 1 +427 1 +429 1 +43 1 +430 1 +431 1 +432 1 +435 1 +436 1 +437 1 +438 1 +439 1 +44 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 1 +455 1 +457 1 +458 1 +459 1 +460 1 +462 1 +463 1 +466 1 +467 1 +468 1 +469 1 +47 1 +470 1 +472 1 +475 1 +477 1 +478 1 +479 1 +480 1 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 1 +490 1 +491 1 +492 1 +493 1 +494 1 +495 1 +496 1 +497 1 +498 1 +5 1 +51 1 +53 1 +54 1 +57 1 +58 1 +64 1 +65 1 +66 1 +67 1 +69 1 +70 1 +72 1 +74 1 +76 1 +77 1 +78 1 +8 1 +80 1 +82 1 +83 1 +84 1 +85 1 +86 1 +87 1 +9 1 +90 1 +92 1 +95 1 +96 1 +97 1 +98 1 +tst1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union17-5-404392d6faff5db5f36b4aa87ac8e8c9 b/sql/hive/src/test/resources/golden/union17-5-404392d6faff5db5f36b4aa87ac8e8c9 new file mode 100644 index 0000000000000..be13b26eadc86 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union17-5-404392d6faff5db5f36b4aa87ac8e8c9 @@ -0,0 +1,310 @@ +0 val_0 1 +10 val_10 1 +100 val_100 1 +103 val_103 1 +104 val_104 1 +105 val_105 1 +11 val_11 1 +111 val_111 1 +113 val_113 1 +114 val_114 1 +116 val_116 1 +118 val_118 1 +119 val_119 1 +12 val_12 1 +120 val_120 1 +125 val_125 1 +126 val_126 1 +128 val_128 1 +129 val_129 1 +131 val_131 1 +133 val_133 1 +134 val_134 1 +136 val_136 1 +137 val_137 1 +138 val_138 1 +143 val_143 1 +145 val_145 1 +146 val_146 1 +149 val_149 1 +15 val_15 1 +150 val_150 1 +152 val_152 1 +153 val_153 1 +155 val_155 1 +156 val_156 1 +157 val_157 1 +158 val_158 1 +160 val_160 1 +162 val_162 1 +163 val_163 1 +164 val_164 1 +165 val_165 1 +166 val_166 1 +167 val_167 1 +168 val_168 1 +169 val_169 1 +17 val_17 1 +170 val_170 1 +172 val_172 1 +174 val_174 1 +175 val_175 1 +176 val_176 1 +177 val_177 1 +178 val_178 1 +179 val_179 1 +18 val_18 1 +180 val_180 1 +181 val_181 1 +183 val_183 1 +186 val_186 1 +187 val_187 1 +189 val_189 1 +19 val_19 1 +190 val_190 1 +191 val_191 1 +192 val_192 1 +193 val_193 1 +194 val_194 1 +195 val_195 1 +196 val_196 1 +197 val_197 1 +199 val_199 1 +2 val_2 1 +20 val_20 1 +200 val_200 1 +201 val_201 1 +202 val_202 1 +203 val_203 1 +205 val_205 1 +207 val_207 1 +208 val_208 1 +209 val_209 1 +213 val_213 1 +214 val_214 1 +216 val_216 1 +217 val_217 1 +218 val_218 1 +219 val_219 1 +221 val_221 1 +222 val_222 1 +223 val_223 1 +224 val_224 1 +226 val_226 1 +228 val_228 1 +229 val_229 1 +230 val_230 1 +233 val_233 1 +235 val_235 1 +237 val_237 1 +238 val_238 1 +239 val_239 1 +24 val_24 1 +241 val_241 1 +242 val_242 1 +244 val_244 1 +247 val_247 1 +248 val_248 1 +249 val_249 1 +252 val_252 1 +255 val_255 1 +256 val_256 1 +257 val_257 1 +258 val_258 1 +26 val_26 1 +260 val_260 1 +262 val_262 1 +263 val_263 1 +265 val_265 1 +266 val_266 1 +27 val_27 1 +272 val_272 1 +273 val_273 1 +274 val_274 1 +275 val_275 1 +277 val_277 1 +278 val_278 1 +28 val_28 1 +280 val_280 1 +281 val_281 1 +282 val_282 1 +283 val_283 1 +284 val_284 1 +285 val_285 1 +286 val_286 1 +287 val_287 1 +288 val_288 1 +289 val_289 1 +291 val_291 1 +292 val_292 1 +296 val_296 1 +298 val_298 1 +30 val_30 1 +302 val_302 1 +305 val_305 1 +306 val_306 1 +307 val_307 1 +308 val_308 1 +309 val_309 1 +310 val_310 1 +311 val_311 1 +315 val_315 1 +316 val_316 1 +317 val_317 1 +318 val_318 1 +321 val_321 1 +322 val_322 1 +323 val_323 1 +325 val_325 1 +327 val_327 1 +33 val_33 1 +331 val_331 1 +332 val_332 1 +333 val_333 1 +335 val_335 1 +336 val_336 1 +338 val_338 1 +339 val_339 1 +34 val_34 1 +341 val_341 1 +342 val_342 1 +344 val_344 1 +345 val_345 1 +348 val_348 1 +35 val_35 1 +351 val_351 1 +353 val_353 1 +356 val_356 1 +360 val_360 1 +362 val_362 1 +364 val_364 1 +365 val_365 1 +366 val_366 1 +367 val_367 1 +368 val_368 1 +369 val_369 1 +37 val_37 1 +373 val_373 1 +374 val_374 1 +375 val_375 1 +377 val_377 1 +378 val_378 1 +379 val_379 1 +382 val_382 1 +384 val_384 1 +386 val_386 1 +389 val_389 1 +392 val_392 1 +393 val_393 1 +394 val_394 1 +395 val_395 1 +396 val_396 1 +397 val_397 1 +399 val_399 1 +4 val_4 1 +400 val_400 1 +401 val_401 1 +402 val_402 1 +403 val_403 1 +404 val_404 1 +406 val_406 1 +407 val_407 1 +409 val_409 1 +41 val_41 1 +411 val_411 1 +413 val_413 1 +414 val_414 1 +417 val_417 1 +418 val_418 1 +419 val_419 1 +42 val_42 1 +421 val_421 1 +424 val_424 1 +427 val_427 1 +429 val_429 1 +43 val_43 1 +430 val_430 1 +431 val_431 1 +432 val_432 1 +435 val_435 1 +436 val_436 1 +437 val_437 1 +438 val_438 1 +439 val_439 1 +44 val_44 1 +443 val_443 1 +444 val_444 1 +446 val_446 1 +448 val_448 1 +449 val_449 1 +452 val_452 1 +453 val_453 1 +454 val_454 1 +455 val_455 1 +457 val_457 1 +458 val_458 1 +459 val_459 1 +460 val_460 1 +462 val_462 1 +463 val_463 1 +466 val_466 1 +467 val_467 1 +468 val_468 1 +469 val_469 1 +47 val_47 1 +470 val_470 1 +472 val_472 1 +475 val_475 1 +477 val_477 1 +478 val_478 1 +479 val_479 1 +480 val_480 1 +481 val_481 1 +482 val_482 1 +483 val_483 1 +484 val_484 1 +485 val_485 1 +487 val_487 1 +489 val_489 1 +490 val_490 1 +491 val_491 1 +492 val_492 1 +493 val_493 1 +494 val_494 1 +495 val_495 1 +496 val_496 1 +497 val_497 1 +498 val_498 1 +5 val_5 1 +51 val_51 1 +53 val_53 1 +54 val_54 1 +57 val_57 1 +58 val_58 1 +64 val_64 1 +65 val_65 1 +66 val_66 1 +67 val_67 1 +69 val_69 1 +70 val_70 1 +72 val_72 1 +74 val_74 1 +76 val_76 1 +77 val_77 1 +78 val_78 1 +8 val_8 1 +80 val_80 1 +82 val_82 1 +83 val_83 1 +84 val_84 1 +85 val_85 1 +86 val_86 1 +87 val_87 1 +9 val_9 1 +90 val_90 1 +92 val_92 1 +95 val_95 1 +96 val_96 1 +97 val_97 1 +98 val_98 1 +tst1 500 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union18-0-383b0c63b3fe31509d23612cb6ae88a b/sql/hive/src/test/resources/golden/union18-0-383b0c63b3fe31509d23612cb6ae88a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union18-1-9491c271b7e2c351ddcf126f73679892 b/sql/hive/src/test/resources/golden/union18-1-9491c271b7e2c351ddcf126f73679892 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union18-2-584e61e1599fe449cc998a3332dcb7e5 b/sql/hive/src/test/resources/golden/union18-2-584e61e1599fe449cc998a3332dcb7e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union18-3-b86b4936bb620a8f5d929943f4aa75f2 b/sql/hive/src/test/resources/golden/union18-3-b86b4936bb620a8f5d929943f4aa75f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union18-4-1799ebb147238db6032fd6fe2fd36878 b/sql/hive/src/test/resources/golden/union18-4-1799ebb147238db6032fd6fe2fd36878 new file mode 100644 index 0000000000000..3dee790d7c2ca --- /dev/null +++ b/sql/hive/src/test/resources/golden/union18-4-1799ebb147238db6032fd6fe2fd36878 @@ -0,0 +1,501 @@ +0 val_0 +0 val_0 +0 val_0 +10 val_10 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +11 val_11 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +12 val_12 +12 val_12 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +15 val_15 +15 val_15 +150 val_150 +152 val_152 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +17 val_17 +170 val_170 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +18 val_18 +18 val_18 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +19 val_19 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +195 val_195 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +2 val_2 +20 val_20 +200 val_200 +200 val_200 +201 val_201 +202 val_202 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +214 val_214 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +24 val_24 +24 val_24 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 +26 val_26 +26 val_26 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +27 val_27 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +28 val_28 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +30 val_30 +302 val_302 +305 val_305 +306 val_306 +307 val_307 +307 val_307 +308 val_308 +309 val_309 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +33 val_33 +331 val_331 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 +336 val_336 +338 val_338 +339 val_339 +34 val_34 +341 val_341 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +35 val_35 +35 val_35 +35 val_35 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 +366 val_366 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +37 val_37 +37 val_37 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +4 val_4 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +41 val_41 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +42 val_42 +42 val_42 +421 val_421 +424 val_424 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +43 val_43 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +44 val_44 +443 val_443 +444 val_444 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +460 val_460 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +47 val_47 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 +492 val_492 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 +498 val_498 +498 val_498 +498 val_498 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +8 val_8 +80 val_80 +82 val_82 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +9 val_9 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +tst1 500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union18-5-b12dcddfa4f02a14318f6564947c98a0 b/sql/hive/src/test/resources/golden/union18-5-b12dcddfa4f02a14318f6564947c98a0 new file mode 100644 index 0000000000000..e438a64050723 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union18-5-b12dcddfa4f02a14318f6564947c98a0 @@ -0,0 +1,501 @@ +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +10 val_10 val_10 +100 val_100 val_100 +100 val_100 val_100 +103 val_103 val_103 +103 val_103 val_103 +104 val_104 val_104 +104 val_104 val_104 +105 val_105 val_105 +11 val_11 val_11 +111 val_111 val_111 +113 val_113 val_113 +113 val_113 val_113 +114 val_114 val_114 +116 val_116 val_116 +118 val_118 val_118 +118 val_118 val_118 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +12 val_12 val_12 +12 val_12 val_12 +120 val_120 val_120 +120 val_120 val_120 +125 val_125 val_125 +125 val_125 val_125 +126 val_126 val_126 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +129 val_129 val_129 +129 val_129 val_129 +131 val_131 val_131 +133 val_133 val_133 +134 val_134 val_134 +134 val_134 val_134 +136 val_136 val_136 +137 val_137 val_137 +137 val_137 val_137 +138 val_138 val_138 +138 val_138 val_138 +138 val_138 val_138 +138 val_138 val_138 +143 val_143 val_143 +145 val_145 val_145 +146 val_146 val_146 +146 val_146 val_146 +149 val_149 val_149 +149 val_149 val_149 +15 val_15 val_15 +15 val_15 val_15 +150 val_150 val_150 +152 val_152 val_152 +152 val_152 val_152 +153 val_153 val_153 +155 val_155 val_155 +156 val_156 val_156 +157 val_157 val_157 +158 val_158 val_158 +160 val_160 val_160 +162 val_162 val_162 +163 val_163 val_163 +164 val_164 val_164 +164 val_164 val_164 +165 val_165 val_165 +165 val_165 val_165 +166 val_166 val_166 +167 val_167 val_167 +167 val_167 val_167 +167 val_167 val_167 +168 val_168 val_168 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +17 val_17 val_17 +170 val_170 val_170 +172 val_172 val_172 +172 val_172 val_172 +174 val_174 val_174 +174 val_174 val_174 +175 val_175 val_175 +175 val_175 val_175 +176 val_176 val_176 +176 val_176 val_176 +177 val_177 val_177 +178 val_178 val_178 +179 val_179 val_179 +179 val_179 val_179 +18 val_18 val_18 +18 val_18 val_18 +180 val_180 val_180 +181 val_181 val_181 +183 val_183 val_183 +186 val_186 val_186 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +189 val_189 val_189 +19 val_19 val_19 +190 val_190 val_190 +191 val_191 val_191 +191 val_191 val_191 +192 val_192 val_192 +193 val_193 val_193 +193 val_193 val_193 +193 val_193 val_193 +194 val_194 val_194 +195 val_195 val_195 +195 val_195 val_195 +196 val_196 val_196 +197 val_197 val_197 +197 val_197 val_197 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +2 val_2 val_2 +20 val_20 val_20 +200 val_200 val_200 +200 val_200 val_200 +201 val_201 val_201 +202 val_202 val_202 +203 val_203 val_203 +203 val_203 val_203 +205 val_205 val_205 +205 val_205 val_205 +207 val_207 val_207 +207 val_207 val_207 +208 val_208 val_208 +208 val_208 val_208 +208 val_208 val_208 +209 val_209 val_209 +209 val_209 val_209 +213 val_213 val_213 +213 val_213 val_213 +214 val_214 val_214 +216 val_216 val_216 +216 val_216 val_216 +217 val_217 val_217 +217 val_217 val_217 +218 val_218 val_218 +219 val_219 val_219 +219 val_219 val_219 +221 val_221 val_221 +221 val_221 val_221 +222 val_222 val_222 +223 val_223 val_223 +223 val_223 val_223 +224 val_224 val_224 +224 val_224 val_224 +226 val_226 val_226 +228 val_228 val_228 +229 val_229 val_229 +229 val_229 val_229 +230 val_230 val_230 +230 val_230 val_230 +230 val_230 val_230 +230 val_230 val_230 +230 val_230 val_230 +233 val_233 val_233 +233 val_233 val_233 +235 val_235 val_235 +237 val_237 val_237 +237 val_237 val_237 +238 val_238 val_238 +238 val_238 val_238 +239 val_239 val_239 +239 val_239 val_239 +24 val_24 val_24 +24 val_24 val_24 +241 val_241 val_241 +242 val_242 val_242 +242 val_242 val_242 +244 val_244 val_244 +247 val_247 val_247 +248 val_248 val_248 +249 val_249 val_249 +252 val_252 val_252 +255 val_255 val_255 +255 val_255 val_255 +256 val_256 val_256 +256 val_256 val_256 +257 val_257 val_257 +258 val_258 val_258 +26 val_26 val_26 +26 val_26 val_26 +260 val_260 val_260 +262 val_262 val_262 +263 val_263 val_263 +265 val_265 val_265 +265 val_265 val_265 +266 val_266 val_266 +27 val_27 val_27 +272 val_272 val_272 +272 val_272 val_272 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +274 val_274 val_274 +275 val_275 val_275 +277 val_277 val_277 +277 val_277 val_277 +277 val_277 val_277 +277 val_277 val_277 +278 val_278 val_278 +278 val_278 val_278 +28 val_28 val_28 +280 val_280 val_280 +280 val_280 val_280 +281 val_281 val_281 +281 val_281 val_281 +282 val_282 val_282 +282 val_282 val_282 +283 val_283 val_283 +284 val_284 val_284 +285 val_285 val_285 +286 val_286 val_286 +287 val_287 val_287 +288 val_288 val_288 +288 val_288 val_288 +289 val_289 val_289 +291 val_291 val_291 +292 val_292 val_292 +296 val_296 val_296 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +30 val_30 val_30 +302 val_302 val_302 +305 val_305 val_305 +306 val_306 val_306 +307 val_307 val_307 +307 val_307 val_307 +308 val_308 val_308 +309 val_309 val_309 +309 val_309 val_309 +310 val_310 val_310 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +315 val_315 val_315 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +317 val_317 val_317 +317 val_317 val_317 +318 val_318 val_318 +318 val_318 val_318 +318 val_318 val_318 +321 val_321 val_321 +321 val_321 val_321 +322 val_322 val_322 +322 val_322 val_322 +323 val_323 val_323 +325 val_325 val_325 +325 val_325 val_325 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +33 val_33 val_33 +331 val_331 val_331 +331 val_331 val_331 +332 val_332 val_332 +333 val_333 val_333 +333 val_333 val_333 +335 val_335 val_335 +336 val_336 val_336 +338 val_338 val_338 +339 val_339 val_339 +34 val_34 val_34 +341 val_341 val_341 +342 val_342 val_342 +342 val_342 val_342 +344 val_344 val_344 +344 val_344 val_344 +345 val_345 val_345 +348 val_348 val_348 +348 val_348 val_348 +348 val_348 val_348 +348 val_348 val_348 +348 val_348 val_348 +35 val_35 val_35 +35 val_35 val_35 +35 val_35 val_35 +351 val_351 val_351 +353 val_353 val_353 +353 val_353 val_353 +356 val_356 val_356 +360 val_360 val_360 +362 val_362 val_362 +364 val_364 val_364 +365 val_365 val_365 +366 val_366 val_366 +367 val_367 val_367 +367 val_367 val_367 +368 val_368 val_368 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +37 val_37 val_37 +37 val_37 val_37 +373 val_373 val_373 +374 val_374 val_374 +375 val_375 val_375 +377 val_377 val_377 +378 val_378 val_378 +379 val_379 val_379 +382 val_382 val_382 +382 val_382 val_382 +384 val_384 val_384 +384 val_384 val_384 +384 val_384 val_384 +386 val_386 val_386 +389 val_389 val_389 +392 val_392 val_392 +393 val_393 val_393 +394 val_394 val_394 +395 val_395 val_395 +395 val_395 val_395 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +397 val_397 val_397 +397 val_397 val_397 +399 val_399 val_399 +399 val_399 val_399 +4 val_4 val_4 +400 val_400 val_400 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +402 val_402 val_402 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +404 val_404 val_404 +404 val_404 val_404 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +407 val_407 val_407 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +41 val_41 val_41 +411 val_411 val_411 +413 val_413 val_413 +413 val_413 val_413 +414 val_414 val_414 +414 val_414 val_414 +417 val_417 val_417 +417 val_417 val_417 +417 val_417 val_417 +418 val_418 val_418 +419 val_419 val_419 +42 val_42 val_42 +42 val_42 val_42 +421 val_421 val_421 +424 val_424 val_424 +424 val_424 val_424 +427 val_427 val_427 +429 val_429 val_429 +429 val_429 val_429 +43 val_43 val_43 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +431 val_431 val_431 +431 val_431 val_431 +431 val_431 val_431 +432 val_432 val_432 +435 val_435 val_435 +436 val_436 val_436 +437 val_437 val_437 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +439 val_439 val_439 +439 val_439 val_439 +44 val_44 val_44 +443 val_443 val_443 +444 val_444 val_444 +446 val_446 val_446 +448 val_448 val_448 +449 val_449 val_449 +452 val_452 val_452 +453 val_453 val_453 +454 val_454 val_454 +454 val_454 val_454 +454 val_454 val_454 +455 val_455 val_455 +457 val_457 val_457 +458 val_458 val_458 +458 val_458 val_458 +459 val_459 val_459 +459 val_459 val_459 +460 val_460 val_460 +462 val_462 val_462 +462 val_462 val_462 +463 val_463 val_463 +463 val_463 val_463 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +467 val_467 val_467 +468 val_468 val_468 +468 val_468 val_468 +468 val_468 val_468 +468 val_468 val_468 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +47 val_47 val_47 +470 val_470 val_470 +472 val_472 val_472 +475 val_475 val_475 +477 val_477 val_477 +478 val_478 val_478 +478 val_478 val_478 +479 val_479 val_479 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +481 val_481 val_481 +482 val_482 val_482 +483 val_483 val_483 +484 val_484 val_484 +485 val_485 val_485 +487 val_487 val_487 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +490 val_490 val_490 +491 val_491 val_491 +492 val_492 val_492 +492 val_492 val_492 +493 val_493 val_493 +494 val_494 val_494 +495 val_495 val_495 +496 val_496 val_496 +497 val_497 val_497 +498 val_498 val_498 +498 val_498 val_498 +498 val_498 val_498 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +51 val_51 val_51 +51 val_51 val_51 +53 val_53 val_53 +54 val_54 val_54 +57 val_57 val_57 +58 val_58 val_58 +58 val_58 val_58 +64 val_64 val_64 +65 val_65 val_65 +66 val_66 val_66 +67 val_67 val_67 +67 val_67 val_67 +69 val_69 val_69 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +72 val_72 val_72 +72 val_72 val_72 +74 val_74 val_74 +76 val_76 val_76 +76 val_76 val_76 +77 val_77 val_77 +78 val_78 val_78 +8 val_8 val_8 +80 val_80 val_80 +82 val_82 val_82 +83 val_83 val_83 +83 val_83 val_83 +84 val_84 val_84 +84 val_84 val_84 +85 val_85 val_85 +86 val_86 val_86 +87 val_87 val_87 +9 val_9 val_9 +90 val_90 val_90 +90 val_90 val_90 +90 val_90 val_90 +92 val_92 val_92 +95 val_95 val_95 +95 val_95 val_95 +96 val_96 val_96 +97 val_97 val_97 +97 val_97 val_97 +98 val_98 val_98 +98 val_98 val_98 +tst1 500 500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union19-0-383b0c63b3fe31509d23612cb6ae88a b/sql/hive/src/test/resources/golden/union19-0-383b0c63b3fe31509d23612cb6ae88a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union19-1-9491c271b7e2c351ddcf126f73679892 b/sql/hive/src/test/resources/golden/union19-1-9491c271b7e2c351ddcf126f73679892 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union19-2-b6161b64e57a2502c79662866782cbdf b/sql/hive/src/test/resources/golden/union19-2-b6161b64e57a2502c79662866782cbdf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union19-3-4e2ace50cdaad15bbe48cb793f72cbd2 b/sql/hive/src/test/resources/golden/union19-3-4e2ace50cdaad15bbe48cb793f72cbd2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union19-4-1799ebb147238db6032fd6fe2fd36878 b/sql/hive/src/test/resources/golden/union19-4-1799ebb147238db6032fd6fe2fd36878 new file mode 100644 index 0000000000000..e4dfefc43e26a --- /dev/null +++ b/sql/hive/src/test/resources/golden/union19-4-1799ebb147238db6032fd6fe2fd36878 @@ -0,0 +1,310 @@ +0 3 +10 1 +100 2 +103 2 +104 2 +105 1 +11 1 +111 1 +113 2 +114 1 +116 1 +118 2 +119 3 +12 2 +120 2 +125 2 +126 1 +128 3 +129 2 +131 1 +133 1 +134 2 +136 1 +137 2 +138 4 +143 1 +145 1 +146 2 +149 2 +15 2 +150 1 +152 2 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 2 +165 2 +166 1 +167 3 +168 1 +169 4 +17 1 +170 1 +172 2 +174 2 +175 2 +176 2 +177 1 +178 1 +179 2 +18 2 +180 1 +181 1 +183 1 +186 1 +187 3 +189 1 +19 1 +190 1 +191 2 +192 1 +193 3 +194 1 +195 2 +196 1 +197 2 +199 3 +2 1 +20 1 +200 2 +201 1 +202 1 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +214 1 +216 2 +217 2 +218 1 +219 2 +221 2 +222 1 +223 2 +224 2 +226 1 +228 1 +229 2 +230 5 +233 2 +235 1 +237 2 +238 2 +239 2 +24 2 +241 1 +242 2 +244 1 +247 1 +248 1 +249 1 +252 1 +255 2 +256 2 +257 1 +258 1 +26 2 +260 1 +262 1 +263 1 +265 2 +266 1 +27 1 +272 2 +273 3 +274 1 +275 1 +277 4 +278 2 +28 1 +280 2 +281 2 +282 2 +283 1 +284 1 +285 1 +286 1 +287 1 +288 2 +289 1 +291 1 +292 1 +296 1 +298 3 +30 1 +302 1 +305 1 +306 1 +307 2 +308 1 +309 2 +310 1 +311 3 +315 1 +316 3 +317 2 +318 3 +321 2 +322 2 +323 1 +325 2 +327 3 +33 1 +331 2 +332 1 +333 2 +335 1 +336 1 +338 1 +339 1 +34 1 +341 1 +342 2 +344 2 +345 1 +348 5 +35 3 +351 1 +353 2 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 2 +368 1 +369 3 +37 2 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 2 +384 3 +386 1 +389 1 +392 1 +393 1 +394 1 +395 2 +396 3 +397 2 +399 2 +4 1 +400 1 +401 5 +402 1 +403 3 +404 2 +406 4 +407 1 +409 3 +41 1 +411 1 +413 2 +414 2 +417 3 +418 1 +419 1 +42 2 +421 1 +424 2 +427 1 +429 2 +43 1 +430 3 +431 3 +432 1 +435 1 +436 1 +437 1 +438 3 +439 2 +44 1 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +47 1 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 +5 3 +51 2 +53 1 +54 1 +57 1 +58 2 +64 1 +65 1 +66 1 +67 2 +69 1 +70 3 +72 2 +74 1 +76 2 +77 1 +78 1 +8 1 +80 1 +82 1 +83 2 +84 2 +85 1 +86 1 +87 1 +9 1 +90 3 +92 1 +95 2 +96 1 +97 2 +98 2 +tst1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union19-5-b12dcddfa4f02a14318f6564947c98a0 b/sql/hive/src/test/resources/golden/union19-5-b12dcddfa4f02a14318f6564947c98a0 new file mode 100644 index 0000000000000..e438a64050723 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union19-5-b12dcddfa4f02a14318f6564947c98a0 @@ -0,0 +1,501 @@ +0 val_0 val_0 +0 val_0 val_0 +0 val_0 val_0 +10 val_10 val_10 +100 val_100 val_100 +100 val_100 val_100 +103 val_103 val_103 +103 val_103 val_103 +104 val_104 val_104 +104 val_104 val_104 +105 val_105 val_105 +11 val_11 val_11 +111 val_111 val_111 +113 val_113 val_113 +113 val_113 val_113 +114 val_114 val_114 +116 val_116 val_116 +118 val_118 val_118 +118 val_118 val_118 +119 val_119 val_119 +119 val_119 val_119 +119 val_119 val_119 +12 val_12 val_12 +12 val_12 val_12 +120 val_120 val_120 +120 val_120 val_120 +125 val_125 val_125 +125 val_125 val_125 +126 val_126 val_126 +128 val_128 val_128 +128 val_128 val_128 +128 val_128 val_128 +129 val_129 val_129 +129 val_129 val_129 +131 val_131 val_131 +133 val_133 val_133 +134 val_134 val_134 +134 val_134 val_134 +136 val_136 val_136 +137 val_137 val_137 +137 val_137 val_137 +138 val_138 val_138 +138 val_138 val_138 +138 val_138 val_138 +138 val_138 val_138 +143 val_143 val_143 +145 val_145 val_145 +146 val_146 val_146 +146 val_146 val_146 +149 val_149 val_149 +149 val_149 val_149 +15 val_15 val_15 +15 val_15 val_15 +150 val_150 val_150 +152 val_152 val_152 +152 val_152 val_152 +153 val_153 val_153 +155 val_155 val_155 +156 val_156 val_156 +157 val_157 val_157 +158 val_158 val_158 +160 val_160 val_160 +162 val_162 val_162 +163 val_163 val_163 +164 val_164 val_164 +164 val_164 val_164 +165 val_165 val_165 +165 val_165 val_165 +166 val_166 val_166 +167 val_167 val_167 +167 val_167 val_167 +167 val_167 val_167 +168 val_168 val_168 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +169 val_169 val_169 +17 val_17 val_17 +170 val_170 val_170 +172 val_172 val_172 +172 val_172 val_172 +174 val_174 val_174 +174 val_174 val_174 +175 val_175 val_175 +175 val_175 val_175 +176 val_176 val_176 +176 val_176 val_176 +177 val_177 val_177 +178 val_178 val_178 +179 val_179 val_179 +179 val_179 val_179 +18 val_18 val_18 +18 val_18 val_18 +180 val_180 val_180 +181 val_181 val_181 +183 val_183 val_183 +186 val_186 val_186 +187 val_187 val_187 +187 val_187 val_187 +187 val_187 val_187 +189 val_189 val_189 +19 val_19 val_19 +190 val_190 val_190 +191 val_191 val_191 +191 val_191 val_191 +192 val_192 val_192 +193 val_193 val_193 +193 val_193 val_193 +193 val_193 val_193 +194 val_194 val_194 +195 val_195 val_195 +195 val_195 val_195 +196 val_196 val_196 +197 val_197 val_197 +197 val_197 val_197 +199 val_199 val_199 +199 val_199 val_199 +199 val_199 val_199 +2 val_2 val_2 +20 val_20 val_20 +200 val_200 val_200 +200 val_200 val_200 +201 val_201 val_201 +202 val_202 val_202 +203 val_203 val_203 +203 val_203 val_203 +205 val_205 val_205 +205 val_205 val_205 +207 val_207 val_207 +207 val_207 val_207 +208 val_208 val_208 +208 val_208 val_208 +208 val_208 val_208 +209 val_209 val_209 +209 val_209 val_209 +213 val_213 val_213 +213 val_213 val_213 +214 val_214 val_214 +216 val_216 val_216 +216 val_216 val_216 +217 val_217 val_217 +217 val_217 val_217 +218 val_218 val_218 +219 val_219 val_219 +219 val_219 val_219 +221 val_221 val_221 +221 val_221 val_221 +222 val_222 val_222 +223 val_223 val_223 +223 val_223 val_223 +224 val_224 val_224 +224 val_224 val_224 +226 val_226 val_226 +228 val_228 val_228 +229 val_229 val_229 +229 val_229 val_229 +230 val_230 val_230 +230 val_230 val_230 +230 val_230 val_230 +230 val_230 val_230 +230 val_230 val_230 +233 val_233 val_233 +233 val_233 val_233 +235 val_235 val_235 +237 val_237 val_237 +237 val_237 val_237 +238 val_238 val_238 +238 val_238 val_238 +239 val_239 val_239 +239 val_239 val_239 +24 val_24 val_24 +24 val_24 val_24 +241 val_241 val_241 +242 val_242 val_242 +242 val_242 val_242 +244 val_244 val_244 +247 val_247 val_247 +248 val_248 val_248 +249 val_249 val_249 +252 val_252 val_252 +255 val_255 val_255 +255 val_255 val_255 +256 val_256 val_256 +256 val_256 val_256 +257 val_257 val_257 +258 val_258 val_258 +26 val_26 val_26 +26 val_26 val_26 +260 val_260 val_260 +262 val_262 val_262 +263 val_263 val_263 +265 val_265 val_265 +265 val_265 val_265 +266 val_266 val_266 +27 val_27 val_27 +272 val_272 val_272 +272 val_272 val_272 +273 val_273 val_273 +273 val_273 val_273 +273 val_273 val_273 +274 val_274 val_274 +275 val_275 val_275 +277 val_277 val_277 +277 val_277 val_277 +277 val_277 val_277 +277 val_277 val_277 +278 val_278 val_278 +278 val_278 val_278 +28 val_28 val_28 +280 val_280 val_280 +280 val_280 val_280 +281 val_281 val_281 +281 val_281 val_281 +282 val_282 val_282 +282 val_282 val_282 +283 val_283 val_283 +284 val_284 val_284 +285 val_285 val_285 +286 val_286 val_286 +287 val_287 val_287 +288 val_288 val_288 +288 val_288 val_288 +289 val_289 val_289 +291 val_291 val_291 +292 val_292 val_292 +296 val_296 val_296 +298 val_298 val_298 +298 val_298 val_298 +298 val_298 val_298 +30 val_30 val_30 +302 val_302 val_302 +305 val_305 val_305 +306 val_306 val_306 +307 val_307 val_307 +307 val_307 val_307 +308 val_308 val_308 +309 val_309 val_309 +309 val_309 val_309 +310 val_310 val_310 +311 val_311 val_311 +311 val_311 val_311 +311 val_311 val_311 +315 val_315 val_315 +316 val_316 val_316 +316 val_316 val_316 +316 val_316 val_316 +317 val_317 val_317 +317 val_317 val_317 +318 val_318 val_318 +318 val_318 val_318 +318 val_318 val_318 +321 val_321 val_321 +321 val_321 val_321 +322 val_322 val_322 +322 val_322 val_322 +323 val_323 val_323 +325 val_325 val_325 +325 val_325 val_325 +327 val_327 val_327 +327 val_327 val_327 +327 val_327 val_327 +33 val_33 val_33 +331 val_331 val_331 +331 val_331 val_331 +332 val_332 val_332 +333 val_333 val_333 +333 val_333 val_333 +335 val_335 val_335 +336 val_336 val_336 +338 val_338 val_338 +339 val_339 val_339 +34 val_34 val_34 +341 val_341 val_341 +342 val_342 val_342 +342 val_342 val_342 +344 val_344 val_344 +344 val_344 val_344 +345 val_345 val_345 +348 val_348 val_348 +348 val_348 val_348 +348 val_348 val_348 +348 val_348 val_348 +348 val_348 val_348 +35 val_35 val_35 +35 val_35 val_35 +35 val_35 val_35 +351 val_351 val_351 +353 val_353 val_353 +353 val_353 val_353 +356 val_356 val_356 +360 val_360 val_360 +362 val_362 val_362 +364 val_364 val_364 +365 val_365 val_365 +366 val_366 val_366 +367 val_367 val_367 +367 val_367 val_367 +368 val_368 val_368 +369 val_369 val_369 +369 val_369 val_369 +369 val_369 val_369 +37 val_37 val_37 +37 val_37 val_37 +373 val_373 val_373 +374 val_374 val_374 +375 val_375 val_375 +377 val_377 val_377 +378 val_378 val_378 +379 val_379 val_379 +382 val_382 val_382 +382 val_382 val_382 +384 val_384 val_384 +384 val_384 val_384 +384 val_384 val_384 +386 val_386 val_386 +389 val_389 val_389 +392 val_392 val_392 +393 val_393 val_393 +394 val_394 val_394 +395 val_395 val_395 +395 val_395 val_395 +396 val_396 val_396 +396 val_396 val_396 +396 val_396 val_396 +397 val_397 val_397 +397 val_397 val_397 +399 val_399 val_399 +399 val_399 val_399 +4 val_4 val_4 +400 val_400 val_400 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +401 val_401 val_401 +402 val_402 val_402 +403 val_403 val_403 +403 val_403 val_403 +403 val_403 val_403 +404 val_404 val_404 +404 val_404 val_404 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +406 val_406 val_406 +407 val_407 val_407 +409 val_409 val_409 +409 val_409 val_409 +409 val_409 val_409 +41 val_41 val_41 +411 val_411 val_411 +413 val_413 val_413 +413 val_413 val_413 +414 val_414 val_414 +414 val_414 val_414 +417 val_417 val_417 +417 val_417 val_417 +417 val_417 val_417 +418 val_418 val_418 +419 val_419 val_419 +42 val_42 val_42 +42 val_42 val_42 +421 val_421 val_421 +424 val_424 val_424 +424 val_424 val_424 +427 val_427 val_427 +429 val_429 val_429 +429 val_429 val_429 +43 val_43 val_43 +430 val_430 val_430 +430 val_430 val_430 +430 val_430 val_430 +431 val_431 val_431 +431 val_431 val_431 +431 val_431 val_431 +432 val_432 val_432 +435 val_435 val_435 +436 val_436 val_436 +437 val_437 val_437 +438 val_438 val_438 +438 val_438 val_438 +438 val_438 val_438 +439 val_439 val_439 +439 val_439 val_439 +44 val_44 val_44 +443 val_443 val_443 +444 val_444 val_444 +446 val_446 val_446 +448 val_448 val_448 +449 val_449 val_449 +452 val_452 val_452 +453 val_453 val_453 +454 val_454 val_454 +454 val_454 val_454 +454 val_454 val_454 +455 val_455 val_455 +457 val_457 val_457 +458 val_458 val_458 +458 val_458 val_458 +459 val_459 val_459 +459 val_459 val_459 +460 val_460 val_460 +462 val_462 val_462 +462 val_462 val_462 +463 val_463 val_463 +463 val_463 val_463 +466 val_466 val_466 +466 val_466 val_466 +466 val_466 val_466 +467 val_467 val_467 +468 val_468 val_468 +468 val_468 val_468 +468 val_468 val_468 +468 val_468 val_468 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +469 val_469 val_469 +47 val_47 val_47 +470 val_470 val_470 +472 val_472 val_472 +475 val_475 val_475 +477 val_477 val_477 +478 val_478 val_478 +478 val_478 val_478 +479 val_479 val_479 +480 val_480 val_480 +480 val_480 val_480 +480 val_480 val_480 +481 val_481 val_481 +482 val_482 val_482 +483 val_483 val_483 +484 val_484 val_484 +485 val_485 val_485 +487 val_487 val_487 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +489 val_489 val_489 +490 val_490 val_490 +491 val_491 val_491 +492 val_492 val_492 +492 val_492 val_492 +493 val_493 val_493 +494 val_494 val_494 +495 val_495 val_495 +496 val_496 val_496 +497 val_497 val_497 +498 val_498 val_498 +498 val_498 val_498 +498 val_498 val_498 +5 val_5 val_5 +5 val_5 val_5 +5 val_5 val_5 +51 val_51 val_51 +51 val_51 val_51 +53 val_53 val_53 +54 val_54 val_54 +57 val_57 val_57 +58 val_58 val_58 +58 val_58 val_58 +64 val_64 val_64 +65 val_65 val_65 +66 val_66 val_66 +67 val_67 val_67 +67 val_67 val_67 +69 val_69 val_69 +70 val_70 val_70 +70 val_70 val_70 +70 val_70 val_70 +72 val_72 val_72 +72 val_72 val_72 +74 val_74 val_74 +76 val_76 val_76 +76 val_76 val_76 +77 val_77 val_77 +78 val_78 val_78 +8 val_8 val_8 +80 val_80 val_80 +82 val_82 val_82 +83 val_83 val_83 +83 val_83 val_83 +84 val_84 val_84 +84 val_84 val_84 +85 val_85 val_85 +86 val_86 val_86 +87 val_87 val_87 +9 val_9 val_9 +90 val_90 val_90 +90 val_90 val_90 +90 val_90 val_90 +92 val_92 val_92 +95 val_95 val_95 +95 val_95 val_95 +96 val_96 val_96 +97 val_97 val_97 +97 val_97 val_97 +98 val_98 val_98 +98 val_98 val_98 +tst1 500 500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union2-0-58813daf3d1af57b17518b606f8345b2 b/sql/hive/src/test/resources/golden/union2-0-58813daf3d1af57b17518b606f8345b2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union2-1-90d739774cb96e7d0d96513c1c9968b4 b/sql/hive/src/test/resources/golden/union2-1-90d739774cb96e7d0d96513c1c9968b4 new file mode 100644 index 0000000000000..e37d32abba426 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union2-1-90d739774cb96e7d0d96513c1c9968b4 @@ -0,0 +1 @@ +1000 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union20-0-a7f64187712936e741d5c33b2f5dfa6d b/sql/hive/src/test/resources/golden/union20-0-a7f64187712936e741d5c33b2f5dfa6d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union20-1-968e353589f1fddb914242beb25be94c b/sql/hive/src/test/resources/golden/union20-1-968e353589f1fddb914242beb25be94c new file mode 100644 index 0000000000000..385b8df6703a0 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union20-1-968e353589f1fddb914242beb25be94c @@ -0,0 +1,23 @@ +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +4 val_4 4 val_4 +8 val_8 8 val_8 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +0 val_0 0 val_0 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +2 val_2 2 val_2 +5 val_5 5 val_5 +5 val_5 5 val_5 +5 val_5 5 val_5 +9 val_9 9 val_9 +tst1 500 tst1 500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union21-0-ecfd22e2a24ed9f113229c80a2aaee9c b/sql/hive/src/test/resources/golden/union21-0-ecfd22e2a24ed9f113229c80a2aaee9c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union21-1-fb1497f4c21bf7d28162f27d50320d13 b/sql/hive/src/test/resources/golden/union21-1-fb1497f4c21bf7d28162f27d50320d13 new file mode 100644 index 0000000000000..26a2aff52e9a9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union21-1-fb1497f4c21bf7d28162f27d50320d13 @@ -0,0 +1,536 @@ +NULL 2 +0 7 +001 2 +002 2 +004 1 +01 1 +013 1 +02 1 +021 2 +03 1 +032 5 +034 3 +051 1 +061 1 +062 1 +063 1 +064 1 +07 3 +071 1 +074 1 +08 1 +081 1 +082 2 +084 3 +09 3 +091 1 +094 1 +1 500 +10 2 +100 2 +102 1 +103 2 +104 7 +105 1 +11 2 +111 2 +113 5 +114 2 +116 1 +118 2 +119 3 +12 2 +120 2 +122 2 +123 2 +124 1 +125 2 +126 1 +128 3 +129 2 +131 2 +133 3 +134 5 +136 1 +137 2 +138 4 +14 1 +142 1 +143 2 +145 1 +146 2 +149 2 +15 4 +150 1 +152 2 +153 2 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 2 +165 2 +166 1 +167 3 +168 1 +169 4 +17 1 +170 1 +172 2 +174 2 +175 2 +176 2 +177 1 +178 1 +179 2 +18 2 +180 1 +181 2 +182 2 +183 1 +184 1 +186 1 +187 3 +189 1 +19 1 +190 1 +191 4 +192 2 +193 3 +194 2 +195 2 +196 1 +197 2 +199 3 +2 2 +20 2 +200 2 +201 1 +202 2 +203 3 +204 1 +205 2 +207 2 +208 3 +209 2 +21 2 +213 2 +214 1 +216 2 +217 2 +218 1 +219 2 +221 2 +222 2 +223 4 +224 2 +226 1 +228 1 +229 2 +230 5 +233 3 +234 1 +235 1 +237 2 +238 2 +239 2 +24 4 +241 1 +242 4 +243 2 +244 1 +247 1 +248 1 +249 1 +251 2 +252 2 +254 1 +255 2 +256 2 +257 1 +258 1 +26 2 +260 1 +261 1 +262 2 +263 2 +264 2 +265 2 +266 1 +27 3 +271 2 +272 4 +273 3 +274 2 +275 1 +277 4 +278 2 +28 2 +280 2 +281 2 +282 4 +283 3 +284 2 +285 1 +286 1 +287 1 +288 2 +289 1 +29 1 +291 2 +292 2 +293 1 +294 2 +296 1 +298 3 +30 2 +301 2 +302 3 +304 3 +305 1 +306 1 +307 2 +308 1 +309 2 +310 1 +311 5 +312 2 +314 2 +315 1 +316 3 +317 2 +318 3 +321 2 +322 4 +323 2 +325 2 +327 3 +33 2 +331 3 +332 3 +333 4 +335 1 +336 1 +338 1 +339 1 +34 2 +341 2 +342 2 +344 3 +345 1 +348 5 +35 4 +351 2 +353 4 +354 1 +356 1 +360 1 +361 1 +362 2 +364 3 +365 1 +366 1 +367 2 +368 1 +369 3 +37 2 +372 3 +373 2 +374 1 +375 1 +377 1 +378 1 +379 1 +38 2 +381 1 +382 3 +384 4 +386 1 +389 1 +391 3 +392 1 +393 2 +394 2 +395 2 +396 3 +397 2 +399 2 +4 2 +40 1 +400 1 +401 7 +402 1 +403 3 +404 4 +406 4 +407 1 +409 3 +41 1 +411 2 +412 1 +413 2 +414 4 +417 3 +418 1 +419 1 +42 4 +421 1 +422 2 +424 4 +427 1 +429 2 +43 2 +430 3 +431 5 +432 1 +435 1 +436 1 +437 1 +438 3 +439 2 +44 2 +442 1 +443 3 +444 2 +446 1 +448 1 +449 1 +45 1 +452 1 +453 1 +454 6 +455 1 +457 1 +458 2 +459 2 +46 1 +460 1 +461 2 +462 2 +463 3 +466 3 +467 1 +468 4 +469 5 +47 2 +470 1 +471 2 +472 2 +473 1 +475 1 +477 1 +478 2 +479 1 +48 2 +480 3 +481 1 +482 2 +483 4 +484 2 +485 1 +487 1 +489 4 +490 1 +491 2 +492 2 +493 2 +494 2 +495 1 +496 1 +497 1 +498 3 +5 6 +50 1 +501 1 +502 2 +503 1 +51 4 +513 1 +521 2 +523 2 +53 4 +532 1 +533 1 +534 1 +54 1 +541 1 +543 1 +551 1 +552 2 +554 1 +56 1 +561 2 +562 2 +563 1 +57 1 +571 2 +572 1 +573 1 +574 1 +58 3 +582 1 +584 1 +59 2 +591 2 +593 2 +594 1 +60 1 +603 1 +604 4 +611 1 +612 2 +613 3 +62 2 +621 1 +622 1 +631 1 +633 1 +634 1 +64 1 +641 2 +644 1 +65 1 +651 1 +652 2 +653 1 +66 2 +661 1 +662 1 +663 1 +664 3 +67 4 +671 2 +68 1 +681 1 +682 1 +683 1 +69 2 +691 1 +692 1 +693 3 +694 1 +70 4 +702 2 +703 2 +704 1 +71 1 +712 2 +713 2 +714 3 +72 3 +723 3 +724 1 +73 2 +731 2 +732 2 +734 1 +74 2 +742 1 +75 1 +751 1 +752 1 +754 1 +76 4 +761 3 +763 2 +764 1 +77 2 +771 1 +772 4 +773 1 +774 1 +78 2 +781 3 +782 1 +784 1 +79 2 +791 2 +793 2 +794 1 +8 2 +80 2 +802 3 +803 1 +81 2 +811 2 +812 1 +813 3 +814 1 +82 2 +821 3 +822 1 +83 2 +831 4 +832 2 +833 1 +834 3 +84 2 +842 1 +843 5 +844 1 +85 3 +851 1 +852 1 +854 2 +86 1 +861 1 +863 1 +864 4 +87 2 +871 1 +872 2 +873 1 +874 2 +882 2 +89 2 +892 3 +894 3 +9 2 +90 4 +902 2 +903 2 +904 3 +91 1 +911 3 +912 2 +914 1 +92 1 +921 2 +922 2 +924 2 +932 2 +933 1 +934 2 +941 2 +942 1 +944 1 +95 2 +954 2 +96 2 +961 4 +963 3 +964 5 +97 2 +971 2 +973 1 +974 1 +98 2 +981 1 +982 1 +983 1 +984 4 +991 3 +993 2 +record_0 1 +record_1 1 +record_2 1 +record_3 1 +record_4 1 +record_5 1 +record_6 1 +record_7 1 +record_8 1 +record_9 1 diff --git a/sql/hive/src/test/resources/golden/union22-0-4bd6583b3635f1db95765565518bda8d b/sql/hive/src/test/resources/golden/union22-0-4bd6583b3635f1db95765565518bda8d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union22-1-9037e5e0cb2d64e4efe6280dc03396f7 b/sql/hive/src/test/resources/golden/union22-1-9037e5e0cb2d64e4efe6280dc03396f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union22-10-90e9c4388340428a1f68868e9322c400 b/sql/hive/src/test/resources/golden/union22-10-90e9c4388340428a1f68868e9322c400 new file mode 100644 index 0000000000000..a9df5cf33c86d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union22-10-90e9c4388340428a1f68868e9322c400 @@ -0,0 +1,1016 @@ +0 val_0 0 val_0 2 +0 val_0 0 val_0 2 +0 val_0 0 val_0 2 +10 val_10 10 val_10 2 +100 val_100 100 val_100 2 +100 val_100 100 val_100 2 +100 val_100 100 val_100 2 +100 val_100 100 val_100 2 +103 val_103 103 val_103 2 +103 val_103 103 val_103 2 +103 val_103 103 val_103 2 +103 val_103 103 val_103 2 +104 val_104 104 val_104 2 +104 val_104 104 val_104 2 +104 val_104 104 val_104 2 +104 val_104 104 val_104 2 +105 val_105 105 val_105 2 +11 val_11 11 val_11 2 +111 val_111 111 val_111 2 +113 val_113 113 val_113 2 +113 val_113 113 val_113 2 +113 val_113 113 val_113 2 +113 val_113 113 val_113 2 +114 val_114 114 val_114 2 +116 val_116 116 val_116 2 +118 val_118 118 val_118 2 +118 val_118 118 val_118 2 +118 val_118 118 val_118 2 +118 val_118 118 val_118 2 +119 val_119 119 val_119 2 +119 val_119 119 val_119 2 +119 val_119 119 val_119 2 +119 val_119 119 val_119 2 +119 val_119 119 val_119 2 +119 val_119 119 val_119 2 +119 val_119 119 val_119 2 +119 val_119 119 val_119 2 +119 val_119 119 val_119 2 +12 val_12 12 val_12 2 +12 val_12 12 val_12 2 +120 val_120 120 val_120 2 +120 val_120 120 val_120 2 +120 val_120 120 val_120 2 +120 val_120 120 val_120 2 +125 val_125 125 val_125 2 +125 val_125 125 val_125 2 +125 val_125 125 val_125 2 +125 val_125 125 val_125 2 +126 val_126 126 val_126 2 +128 val_128 128 val_128 2 +128 val_128 128 val_128 2 +128 val_128 128 val_128 2 +128 val_128 128 val_128 2 +128 val_128 128 val_128 2 +128 val_128 128 val_128 2 +128 val_128 128 val_128 2 +128 val_128 128 val_128 2 +128 val_128 128 val_128 2 +129 val_129 129 val_129 2 +129 val_129 129 val_129 2 +129 val_129 129 val_129 2 +129 val_129 129 val_129 2 +131 val_131 131 val_131 2 +133 val_133 133 val_133 2 +134 val_134 134 val_134 2 +134 val_134 134 val_134 2 +134 val_134 134 val_134 2 +134 val_134 134 val_134 2 +136 val_136 136 val_136 2 +137 val_137 137 val_137 2 +137 val_137 137 val_137 2 +137 val_137 137 val_137 2 +137 val_137 137 val_137 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +138 val_138 138 val_138 2 +143 val_143 143 val_143 2 +145 val_145 145 val_145 2 +146 val_146 146 val_146 2 +146 val_146 146 val_146 2 +146 val_146 146 val_146 2 +146 val_146 146 val_146 2 +149 val_149 149 val_149 2 +149 val_149 149 val_149 2 +149 val_149 149 val_149 2 +149 val_149 149 val_149 2 +15 val_15 15 val_15 2 +15 val_15 15 val_15 2 +150 val_150 150 val_150 2 +152 val_152 152 val_152 2 +152 val_152 152 val_152 2 +152 val_152 152 val_152 2 +152 val_152 152 val_152 2 +153 val_153 153 val_153 2 +155 val_155 155 val_155 2 +156 val_156 156 val_156 2 +157 val_157 157 val_157 2 +158 val_158 158 val_158 2 +160 val_160 160 val_160 2 +162 val_162 162 val_162 2 +163 val_163 163 val_163 2 +164 val_164 164 val_164 2 +164 val_164 164 val_164 2 +164 val_164 164 val_164 2 +164 val_164 164 val_164 2 +165 val_165 165 val_165 2 +165 val_165 165 val_165 2 +165 val_165 165 val_165 2 +165 val_165 165 val_165 2 +166 val_166 166 val_166 2 +167 val_167 167 val_167 2 +167 val_167 167 val_167 2 +167 val_167 167 val_167 2 +167 val_167 167 val_167 2 +167 val_167 167 val_167 2 +167 val_167 167 val_167 2 +167 val_167 167 val_167 2 +167 val_167 167 val_167 2 +167 val_167 167 val_167 2 +168 val_168 168 val_168 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +169 val_169 169 val_169 2 +17 val_17 17 val_17 2 +170 val_170 170 val_170 2 +172 val_172 172 val_172 2 +172 val_172 172 val_172 2 +172 val_172 172 val_172 2 +172 val_172 172 val_172 2 +174 val_174 174 val_174 2 +174 val_174 174 val_174 2 +174 val_174 174 val_174 2 +174 val_174 174 val_174 2 +175 val_175 175 val_175 2 +175 val_175 175 val_175 2 +175 val_175 175 val_175 2 +175 val_175 175 val_175 2 +176 val_176 176 val_176 2 +176 val_176 176 val_176 2 +176 val_176 176 val_176 2 +176 val_176 176 val_176 2 +177 val_177 177 val_177 2 +178 val_178 178 val_178 2 +179 val_179 179 val_179 2 +179 val_179 179 val_179 2 +179 val_179 179 val_179 2 +179 val_179 179 val_179 2 +18 val_18 18 val_18 2 +18 val_18 18 val_18 2 +180 val_180 180 val_180 2 +181 val_181 181 val_181 2 +183 val_183 183 val_183 2 +186 val_186 186 val_186 2 +187 val_187 187 val_187 2 +187 val_187 187 val_187 2 +187 val_187 187 val_187 2 +187 val_187 187 val_187 2 +187 val_187 187 val_187 2 +187 val_187 187 val_187 2 +187 val_187 187 val_187 2 +187 val_187 187 val_187 2 +187 val_187 187 val_187 2 +189 val_189 189 val_189 2 +19 val_19 19 val_19 2 +190 val_190 190 val_190 2 +191 val_191 191 val_191 2 +191 val_191 191 val_191 2 +191 val_191 191 val_191 2 +191 val_191 191 val_191 2 +192 val_192 192 val_192 2 +193 val_193 193 val_193 2 +193 val_193 193 val_193 2 +193 val_193 193 val_193 2 +193 val_193 193 val_193 2 +193 val_193 193 val_193 2 +193 val_193 193 val_193 2 +193 val_193 193 val_193 2 +193 val_193 193 val_193 2 +193 val_193 193 val_193 2 +194 val_194 194 val_194 2 +195 val_195 195 val_195 2 +195 val_195 195 val_195 2 +195 val_195 195 val_195 2 +195 val_195 195 val_195 2 +196 val_196 196 val_196 2 +197 val_197 197 val_197 2 +197 val_197 197 val_197 2 +197 val_197 197 val_197 2 +197 val_197 197 val_197 2 +199 val_199 199 val_199 2 +199 val_199 199 val_199 2 +199 val_199 199 val_199 2 +199 val_199 199 val_199 2 +199 val_199 199 val_199 2 +199 val_199 199 val_199 2 +199 val_199 199 val_199 2 +199 val_199 199 val_199 2 +199 val_199 199 val_199 2 +2 val_2 2 val_2 2 +20 val_20 20 val_20 2 +200 val_200 200 val_200 2 +200 val_200 200 val_200 2 +200 val_200 200 val_200 2 +200 val_200 200 val_200 2 +201 val_201 201 val_201 2 +202 val_202 202 val_202 2 +203 val_203 203 val_203 2 +203 val_203 203 val_203 2 +203 val_203 203 val_203 2 +203 val_203 203 val_203 2 +205 val_205 205 val_205 2 +205 val_205 205 val_205 2 +205 val_205 205 val_205 2 +205 val_205 205 val_205 2 +207 val_207 207 val_207 2 +207 val_207 207 val_207 2 +207 val_207 207 val_207 2 +207 val_207 207 val_207 2 +208 val_208 208 val_208 2 +208 val_208 208 val_208 2 +208 val_208 208 val_208 2 +208 val_208 208 val_208 2 +208 val_208 208 val_208 2 +208 val_208 208 val_208 2 +208 val_208 208 val_208 2 +208 val_208 208 val_208 2 +208 val_208 208 val_208 2 +209 val_209 209 val_209 2 +209 val_209 209 val_209 2 +209 val_209 209 val_209 2 +209 val_209 209 val_209 2 +213 val_213 213 val_213 2 +213 val_213 213 val_213 2 +213 val_213 213 val_213 2 +213 val_213 213 val_213 2 +214 val_214 214 val_214 2 +216 val_216 216 val_216 2 +216 val_216 216 val_216 2 +216 val_216 216 val_216 2 +216 val_216 216 val_216 2 +217 val_217 217 val_217 2 +217 val_217 217 val_217 2 +217 val_217 217 val_217 2 +217 val_217 217 val_217 2 +218 val_218 218 val_218 2 +219 val_219 219 val_219 2 +219 val_219 219 val_219 2 +219 val_219 219 val_219 2 +219 val_219 219 val_219 2 +221 val_221 221 val_221 2 +221 val_221 221 val_221 2 +221 val_221 221 val_221 2 +221 val_221 221 val_221 2 +222 val_222 222 val_222 2 +223 val_223 223 val_223 2 +223 val_223 223 val_223 2 +223 val_223 223 val_223 2 +223 val_223 223 val_223 2 +224 val_224 224 val_224 2 +224 val_224 224 val_224 2 +224 val_224 224 val_224 2 +224 val_224 224 val_224 2 +226 val_226 226 val_226 2 +228 val_228 228 val_228 2 +229 val_229 229 val_229 2 +229 val_229 229 val_229 2 +229 val_229 229 val_229 2 +229 val_229 229 val_229 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +230 val_230 230 val_230 2 +233 val_233 233 val_233 2 +233 val_233 233 val_233 2 +233 val_233 233 val_233 2 +233 val_233 233 val_233 2 +235 val_235 235 val_235 2 +237 val_237 237 val_237 2 +237 val_237 237 val_237 2 +237 val_237 237 val_237 2 +237 val_237 237 val_237 2 +238 val_238 238 val_238 2 +238 val_238 238 val_238 2 +238 val_238 238 val_238 2 +238 val_238 238 val_238 2 +239 val_239 239 val_239 2 +239 val_239 239 val_239 2 +239 val_239 239 val_239 2 +239 val_239 239 val_239 2 +24 val_24 NULL NULL 2 +24 val_24 NULL NULL 2 +24 val_24 24 val_24 2 +24 val_24 24 val_24 2 +241 val_241 241 val_241 2 +242 val_242 242 val_242 2 +242 val_242 242 val_242 2 +242 val_242 242 val_242 2 +242 val_242 242 val_242 2 +244 val_244 244 val_244 2 +247 val_247 247 val_247 2 +248 val_248 248 val_248 2 +249 val_249 249 val_249 2 +252 val_252 252 val_252 2 +255 val_255 255 val_255 2 +255 val_255 255 val_255 2 +255 val_255 255 val_255 2 +255 val_255 255 val_255 2 +256 val_256 256 val_256 2 +256 val_256 256 val_256 2 +256 val_256 256 val_256 2 +256 val_256 256 val_256 2 +257 val_257 257 val_257 2 +258 val_258 258 val_258 2 +26 val_26 NULL NULL 2 +26 val_26 NULL NULL 2 +26 val_26 26 val_26 2 +26 val_26 26 val_26 2 +260 val_260 260 val_260 2 +262 val_262 262 val_262 2 +263 val_263 263 val_263 2 +265 val_265 265 val_265 2 +265 val_265 265 val_265 2 +265 val_265 265 val_265 2 +265 val_265 265 val_265 2 +266 val_266 266 val_266 2 +27 val_27 NULL NULL 2 +27 val_27 27 val_27 2 +272 val_272 272 val_272 2 +272 val_272 272 val_272 2 +272 val_272 272 val_272 2 +272 val_272 272 val_272 2 +273 val_273 273 val_273 2 +273 val_273 273 val_273 2 +273 val_273 273 val_273 2 +273 val_273 273 val_273 2 +273 val_273 273 val_273 2 +273 val_273 273 val_273 2 +273 val_273 273 val_273 2 +273 val_273 273 val_273 2 +273 val_273 273 val_273 2 +274 val_274 274 val_274 2 +275 val_275 275 val_275 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +277 val_277 277 val_277 2 +278 val_278 278 val_278 2 +278 val_278 278 val_278 2 +278 val_278 278 val_278 2 +278 val_278 278 val_278 2 +28 val_28 NULL NULL 2 +28 val_28 28 val_28 2 +280 val_280 280 val_280 2 +280 val_280 280 val_280 2 +280 val_280 280 val_280 2 +280 val_280 280 val_280 2 +281 val_281 281 val_281 2 +281 val_281 281 val_281 2 +281 val_281 281 val_281 2 +281 val_281 281 val_281 2 +282 val_282 282 val_282 2 +282 val_282 282 val_282 2 +282 val_282 282 val_282 2 +282 val_282 282 val_282 2 +283 val_283 283 val_283 2 +284 val_284 284 val_284 2 +285 val_285 285 val_285 2 +286 val_286 286 val_286 2 +287 val_287 287 val_287 2 +288 val_288 288 val_288 2 +288 val_288 288 val_288 2 +288 val_288 288 val_288 2 +288 val_288 288 val_288 2 +289 val_289 289 val_289 2 +291 val_291 291 val_291 2 +292 val_292 292 val_292 2 +296 val_296 296 val_296 2 +298 val_298 298 val_298 2 +298 val_298 298 val_298 2 +298 val_298 298 val_298 2 +298 val_298 298 val_298 2 +298 val_298 298 val_298 2 +298 val_298 298 val_298 2 +298 val_298 298 val_298 2 +298 val_298 298 val_298 2 +298 val_298 298 val_298 2 +30 val_30 NULL NULL 2 +30 val_30 30 val_30 2 +302 val_302 302 val_302 2 +305 val_305 305 val_305 2 +306 val_306 306 val_306 2 +307 val_307 307 val_307 2 +307 val_307 307 val_307 2 +307 val_307 307 val_307 2 +307 val_307 307 val_307 2 +308 val_308 308 val_308 2 +309 val_309 309 val_309 2 +309 val_309 309 val_309 2 +309 val_309 309 val_309 2 +309 val_309 309 val_309 2 +310 val_310 310 val_310 2 +311 val_311 311 val_311 2 +311 val_311 311 val_311 2 +311 val_311 311 val_311 2 +311 val_311 311 val_311 2 +311 val_311 311 val_311 2 +311 val_311 311 val_311 2 +311 val_311 311 val_311 2 +311 val_311 311 val_311 2 +311 val_311 311 val_311 2 +315 val_315 315 val_315 2 +316 val_316 316 val_316 2 +316 val_316 316 val_316 2 +316 val_316 316 val_316 2 +316 val_316 316 val_316 2 +316 val_316 316 val_316 2 +316 val_316 316 val_316 2 +316 val_316 316 val_316 2 +316 val_316 316 val_316 2 +316 val_316 316 val_316 2 +317 val_317 317 val_317 2 +317 val_317 317 val_317 2 +317 val_317 317 val_317 2 +317 val_317 317 val_317 2 +318 val_318 318 val_318 2 +318 val_318 318 val_318 2 +318 val_318 318 val_318 2 +318 val_318 318 val_318 2 +318 val_318 318 val_318 2 +318 val_318 318 val_318 2 +318 val_318 318 val_318 2 +318 val_318 318 val_318 2 +318 val_318 318 val_318 2 +321 val_321 321 val_321 2 +321 val_321 321 val_321 2 +321 val_321 321 val_321 2 +321 val_321 321 val_321 2 +322 val_322 322 val_322 2 +322 val_322 322 val_322 2 +322 val_322 322 val_322 2 +322 val_322 322 val_322 2 +323 val_323 323 val_323 2 +325 val_325 325 val_325 2 +325 val_325 325 val_325 2 +325 val_325 325 val_325 2 +325 val_325 325 val_325 2 +327 val_327 327 val_327 2 +327 val_327 327 val_327 2 +327 val_327 327 val_327 2 +327 val_327 327 val_327 2 +327 val_327 327 val_327 2 +327 val_327 327 val_327 2 +327 val_327 327 val_327 2 +327 val_327 327 val_327 2 +327 val_327 327 val_327 2 +33 val_33 NULL NULL 2 +33 val_33 33 val_33 2 +331 val_331 331 val_331 2 +331 val_331 331 val_331 2 +331 val_331 331 val_331 2 +331 val_331 331 val_331 2 +332 val_332 332 val_332 2 +333 val_333 333 val_333 2 +333 val_333 333 val_333 2 +333 val_333 333 val_333 2 +333 val_333 333 val_333 2 +335 val_335 335 val_335 2 +336 val_336 336 val_336 2 +338 val_338 338 val_338 2 +339 val_339 339 val_339 2 +34 val_34 NULL NULL 2 +34 val_34 34 val_34 2 +341 val_341 341 val_341 2 +342 val_342 342 val_342 2 +342 val_342 342 val_342 2 +342 val_342 342 val_342 2 +342 val_342 342 val_342 2 +344 val_344 344 val_344 2 +344 val_344 344 val_344 2 +344 val_344 344 val_344 2 +344 val_344 344 val_344 2 +345 val_345 345 val_345 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +348 val_348 348 val_348 2 +35 val_35 NULL NULL 2 +35 val_35 NULL NULL 2 +35 val_35 NULL NULL 2 +35 val_35 35 val_35 2 +35 val_35 35 val_35 2 +35 val_35 35 val_35 2 +351 val_351 351 val_351 2 +353 val_353 353 val_353 2 +353 val_353 353 val_353 2 +353 val_353 353 val_353 2 +353 val_353 353 val_353 2 +356 val_356 356 val_356 2 +360 val_360 360 val_360 2 +362 val_362 362 val_362 2 +364 val_364 364 val_364 2 +365 val_365 365 val_365 2 +366 val_366 366 val_366 2 +367 val_367 367 val_367 2 +367 val_367 367 val_367 2 +367 val_367 367 val_367 2 +367 val_367 367 val_367 2 +368 val_368 368 val_368 2 +369 val_369 369 val_369 2 +369 val_369 369 val_369 2 +369 val_369 369 val_369 2 +369 val_369 369 val_369 2 +369 val_369 369 val_369 2 +369 val_369 369 val_369 2 +369 val_369 369 val_369 2 +369 val_369 369 val_369 2 +369 val_369 369 val_369 2 +37 val_37 NULL NULL 2 +37 val_37 NULL NULL 2 +37 val_37 37 val_37 2 +37 val_37 37 val_37 2 +373 val_373 373 val_373 2 +374 val_374 374 val_374 2 +375 val_375 375 val_375 2 +377 val_377 377 val_377 2 +378 val_378 378 val_378 2 +379 val_379 379 val_379 2 +382 val_382 382 val_382 2 +382 val_382 382 val_382 2 +382 val_382 382 val_382 2 +382 val_382 382 val_382 2 +384 val_384 384 val_384 2 +384 val_384 384 val_384 2 +384 val_384 384 val_384 2 +384 val_384 384 val_384 2 +384 val_384 384 val_384 2 +384 val_384 384 val_384 2 +384 val_384 384 val_384 2 +384 val_384 384 val_384 2 +384 val_384 384 val_384 2 +386 val_386 386 val_386 2 +389 val_389 389 val_389 2 +392 val_392 392 val_392 2 +393 val_393 393 val_393 2 +394 val_394 394 val_394 2 +395 val_395 395 val_395 2 +395 val_395 395 val_395 2 +395 val_395 395 val_395 2 +395 val_395 395 val_395 2 +396 val_396 396 val_396 2 +396 val_396 396 val_396 2 +396 val_396 396 val_396 2 +396 val_396 396 val_396 2 +396 val_396 396 val_396 2 +396 val_396 396 val_396 2 +396 val_396 396 val_396 2 +396 val_396 396 val_396 2 +396 val_396 396 val_396 2 +397 val_397 397 val_397 2 +397 val_397 397 val_397 2 +397 val_397 397 val_397 2 +397 val_397 397 val_397 2 +399 val_399 399 val_399 2 +399 val_399 399 val_399 2 +399 val_399 399 val_399 2 +399 val_399 399 val_399 2 +4 val_4 4 val_4 2 +400 val_400 400 val_400 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +401 val_401 401 val_401 2 +402 val_402 402 val_402 2 +403 val_403 403 val_403 2 +403 val_403 403 val_403 2 +403 val_403 403 val_403 2 +403 val_403 403 val_403 2 +403 val_403 403 val_403 2 +403 val_403 403 val_403 2 +403 val_403 403 val_403 2 +403 val_403 403 val_403 2 +403 val_403 403 val_403 2 +404 val_404 404 val_404 2 +404 val_404 404 val_404 2 +404 val_404 404 val_404 2 +404 val_404 404 val_404 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +406 val_406 406 val_406 2 +407 val_407 407 val_407 2 +409 val_409 409 val_409 2 +409 val_409 409 val_409 2 +409 val_409 409 val_409 2 +409 val_409 409 val_409 2 +409 val_409 409 val_409 2 +409 val_409 409 val_409 2 +409 val_409 409 val_409 2 +409 val_409 409 val_409 2 +409 val_409 409 val_409 2 +41 val_41 NULL NULL 2 +41 val_41 41 val_41 2 +411 val_411 411 val_411 2 +413 val_413 413 val_413 2 +413 val_413 413 val_413 2 +413 val_413 413 val_413 2 +413 val_413 413 val_413 2 +414 val_414 414 val_414 2 +414 val_414 414 val_414 2 +414 val_414 414 val_414 2 +414 val_414 414 val_414 2 +417 val_417 417 val_417 2 +417 val_417 417 val_417 2 +417 val_417 417 val_417 2 +417 val_417 417 val_417 2 +417 val_417 417 val_417 2 +417 val_417 417 val_417 2 +417 val_417 417 val_417 2 +417 val_417 417 val_417 2 +417 val_417 417 val_417 2 +418 val_418 418 val_418 2 +419 val_419 419 val_419 2 +42 val_42 NULL NULL 2 +42 val_42 NULL NULL 2 +42 val_42 42 val_42 2 +42 val_42 42 val_42 2 +421 val_421 421 val_421 2 +424 val_424 424 val_424 2 +424 val_424 424 val_424 2 +424 val_424 424 val_424 2 +424 val_424 424 val_424 2 +427 val_427 427 val_427 2 +429 val_429 429 val_429 2 +429 val_429 429 val_429 2 +429 val_429 429 val_429 2 +429 val_429 429 val_429 2 +43 val_43 NULL NULL 2 +43 val_43 43 val_43 2 +430 val_430 430 val_430 2 +430 val_430 430 val_430 2 +430 val_430 430 val_430 2 +430 val_430 430 val_430 2 +430 val_430 430 val_430 2 +430 val_430 430 val_430 2 +430 val_430 430 val_430 2 +430 val_430 430 val_430 2 +430 val_430 430 val_430 2 +431 val_431 431 val_431 2 +431 val_431 431 val_431 2 +431 val_431 431 val_431 2 +431 val_431 431 val_431 2 +431 val_431 431 val_431 2 +431 val_431 431 val_431 2 +431 val_431 431 val_431 2 +431 val_431 431 val_431 2 +431 val_431 431 val_431 2 +432 val_432 432 val_432 2 +435 val_435 435 val_435 2 +436 val_436 436 val_436 2 +437 val_437 437 val_437 2 +438 val_438 438 val_438 2 +438 val_438 438 val_438 2 +438 val_438 438 val_438 2 +438 val_438 438 val_438 2 +438 val_438 438 val_438 2 +438 val_438 438 val_438 2 +438 val_438 438 val_438 2 +438 val_438 438 val_438 2 +438 val_438 438 val_438 2 +439 val_439 439 val_439 2 +439 val_439 439 val_439 2 +439 val_439 439 val_439 2 +439 val_439 439 val_439 2 +44 val_44 NULL NULL 2 +44 val_44 44 val_44 2 +443 val_443 443 val_443 2 +444 val_444 444 val_444 2 +446 val_446 446 val_446 2 +448 val_448 448 val_448 2 +449 val_449 449 val_449 2 +452 val_452 452 val_452 2 +453 val_453 453 val_453 2 +454 val_454 454 val_454 2 +454 val_454 454 val_454 2 +454 val_454 454 val_454 2 +454 val_454 454 val_454 2 +454 val_454 454 val_454 2 +454 val_454 454 val_454 2 +454 val_454 454 val_454 2 +454 val_454 454 val_454 2 +454 val_454 454 val_454 2 +455 val_455 455 val_455 2 +457 val_457 457 val_457 2 +458 val_458 458 val_458 2 +458 val_458 458 val_458 2 +458 val_458 458 val_458 2 +458 val_458 458 val_458 2 +459 val_459 459 val_459 2 +459 val_459 459 val_459 2 +459 val_459 459 val_459 2 +459 val_459 459 val_459 2 +460 val_460 460 val_460 2 +462 val_462 462 val_462 2 +462 val_462 462 val_462 2 +462 val_462 462 val_462 2 +462 val_462 462 val_462 2 +463 val_463 463 val_463 2 +463 val_463 463 val_463 2 +463 val_463 463 val_463 2 +463 val_463 463 val_463 2 +466 val_466 466 val_466 2 +466 val_466 466 val_466 2 +466 val_466 466 val_466 2 +466 val_466 466 val_466 2 +466 val_466 466 val_466 2 +466 val_466 466 val_466 2 +466 val_466 466 val_466 2 +466 val_466 466 val_466 2 +466 val_466 466 val_466 2 +467 val_467 467 val_467 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +468 val_468 468 val_468 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +469 val_469 469 val_469 2 +47 val_47 NULL NULL 2 +47 val_47 47 val_47 2 +470 val_470 470 val_470 2 +472 val_472 472 val_472 2 +475 val_475 475 val_475 2 +477 val_477 477 val_477 2 +478 val_478 478 val_478 2 +478 val_478 478 val_478 2 +478 val_478 478 val_478 2 +478 val_478 478 val_478 2 +479 val_479 479 val_479 2 +480 val_480 480 val_480 2 +480 val_480 480 val_480 2 +480 val_480 480 val_480 2 +480 val_480 480 val_480 2 +480 val_480 480 val_480 2 +480 val_480 480 val_480 2 +480 val_480 480 val_480 2 +480 val_480 480 val_480 2 +480 val_480 480 val_480 2 +481 val_481 481 val_481 2 +482 val_482 482 val_482 2 +483 val_483 483 val_483 2 +484 val_484 484 val_484 2 +485 val_485 485 val_485 2 +487 val_487 487 val_487 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +489 val_489 489 val_489 2 +490 val_490 490 val_490 2 +491 val_491 491 val_491 2 +492 val_492 492 val_492 2 +492 val_492 492 val_492 2 +492 val_492 492 val_492 2 +492 val_492 492 val_492 2 +493 val_493 493 val_493 2 +494 val_494 494 val_494 2 +495 val_495 495 val_495 2 +496 val_496 496 val_496 2 +497 val_497 497 val_497 2 +498 val_498 498 val_498 2 +498 val_498 498 val_498 2 +498 val_498 498 val_498 2 +498 val_498 498 val_498 2 +498 val_498 498 val_498 2 +498 val_498 498 val_498 2 +498 val_498 498 val_498 2 +498 val_498 498 val_498 2 +498 val_498 498 val_498 2 +5 val_5 5 val_5 2 +5 val_5 5 val_5 2 +5 val_5 5 val_5 2 +51 val_51 51 val_51 2 +51 val_51 51 val_51 2 +51 val_51 51 val_51 2 +51 val_51 51 val_51 2 +53 val_53 53 val_53 2 +54 val_54 54 val_54 2 +57 val_57 57 val_57 2 +58 val_58 58 val_58 2 +58 val_58 58 val_58 2 +58 val_58 58 val_58 2 +58 val_58 58 val_58 2 +64 val_64 64 val_64 2 +65 val_65 65 val_65 2 +66 val_66 66 val_66 2 +67 val_67 67 val_67 2 +67 val_67 67 val_67 2 +67 val_67 67 val_67 2 +67 val_67 67 val_67 2 +69 val_69 69 val_69 2 +70 val_70 70 val_70 2 +70 val_70 70 val_70 2 +70 val_70 70 val_70 2 +70 val_70 70 val_70 2 +70 val_70 70 val_70 2 +70 val_70 70 val_70 2 +70 val_70 70 val_70 2 +70 val_70 70 val_70 2 +70 val_70 70 val_70 2 +72 val_72 72 val_72 2 +72 val_72 72 val_72 2 +72 val_72 72 val_72 2 +72 val_72 72 val_72 2 +74 val_74 74 val_74 2 +76 val_76 76 val_76 2 +76 val_76 76 val_76 2 +76 val_76 76 val_76 2 +76 val_76 76 val_76 2 +77 val_77 77 val_77 2 +78 val_78 78 val_78 2 +8 val_8 8 val_8 2 +80 val_80 80 val_80 2 +82 val_82 82 val_82 2 +83 val_83 83 val_83 2 +83 val_83 83 val_83 2 +83 val_83 83 val_83 2 +83 val_83 83 val_83 2 +84 val_84 84 val_84 2 +84 val_84 84 val_84 2 +84 val_84 84 val_84 2 +84 val_84 84 val_84 2 +85 val_85 85 val_85 2 +86 val_86 86 val_86 2 +87 val_87 87 val_87 2 +9 val_9 9 val_9 2 +90 val_90 90 val_90 2 +90 val_90 90 val_90 2 +90 val_90 90 val_90 2 +90 val_90 90 val_90 2 +90 val_90 90 val_90 2 +90 val_90 90 val_90 2 +90 val_90 90 val_90 2 +90 val_90 90 val_90 2 +90 val_90 90 val_90 2 +92 val_92 92 val_92 2 +95 val_95 95 val_95 2 +95 val_95 95 val_95 2 +95 val_95 95 val_95 2 +95 val_95 95 val_95 2 +96 val_96 96 val_96 2 +97 val_97 97 val_97 2 +97 val_97 97 val_97 2 +97 val_97 97 val_97 2 +97 val_97 97 val_97 2 +98 val_98 98 val_98 2 +98 val_98 98 val_98 2 +98 val_98 98 val_98 2 +98 val_98 98 val_98 2 diff --git a/sql/hive/src/test/resources/golden/union22-2-a4c7c7ba0177c0a8fe415e2bd3e93002 b/sql/hive/src/test/resources/golden/union22-2-a4c7c7ba0177c0a8fe415e2bd3e93002 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union22-3-291783e57ccb7c6cad6b5e8d2dae89a0 b/sql/hive/src/test/resources/golden/union22-3-291783e57ccb7c6cad6b5e8d2dae89a0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union22-4-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union22-4-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union22-4-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union22-5-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/union22-5-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union22-5-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union22-6-44d382ce6848d3f0b900b0808747d8e9 b/sql/hive/src/test/resources/golden/union22-6-44d382ce6848d3f0b900b0808747d8e9 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union22-6-44d382ce6848d3f0b900b0808747d8e9 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union22-7-25fc734982956a164adde6bb1d4d8751 b/sql/hive/src/test/resources/golden/union22-7-25fc734982956a164adde6bb1d4d8751 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union22-7-25fc734982956a164adde6bb1d4d8751 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union22-8-c78e8af8e8e327c58a74f7cb34a1c912 b/sql/hive/src/test/resources/golden/union22-8-c78e8af8e8e327c58a74f7cb34a1c912 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union22-9-f4414e4636a16596d04fcc433d1119b6 b/sql/hive/src/test/resources/golden/union22-9-f4414e4636a16596d04fcc433d1119b6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union23-0-c86f3e120d66f1b06a8b916a4a67e4b4 b/sql/hive/src/test/resources/golden/union23-0-c86f3e120d66f1b06a8b916a4a67e4b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union23-1-7830963417e3535034962e2597970ddd b/sql/hive/src/test/resources/golden/union23-1-7830963417e3535034962e2597970ddd new file mode 100644 index 0000000000000..bf0f76662bd2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/union23-1-7830963417e3535034962e2597970ddd @@ -0,0 +1,1000 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +10 val_10 +10 val_10 +100 val_100 +100 val_100 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +104 val_104 +104 val_104 +105 val_105 +105 val_105 +11 val_11 +11 val_11 +111 val_111 +111 val_111 +113 val_113 +113 val_113 +113 val_113 +113 val_113 +114 val_114 +114 val_114 +116 val_116 +116 val_116 +118 val_118 +118 val_118 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +119 val_119 +12 val_12 +12 val_12 +12 val_12 +12 val_12 +120 val_120 +120 val_120 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +125 val_125 +125 val_125 +126 val_126 +126 val_126 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +129 val_129 +129 val_129 +131 val_131 +131 val_131 +133 val_133 +133 val_133 +134 val_134 +134 val_134 +134 val_134 +134 val_134 +136 val_136 +136 val_136 +137 val_137 +137 val_137 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +143 val_143 +145 val_145 +145 val_145 +146 val_146 +146 val_146 +146 val_146 +146 val_146 +149 val_149 +149 val_149 +149 val_149 +149 val_149 +15 val_15 +15 val_15 +15 val_15 +15 val_15 +150 val_150 +150 val_150 +152 val_152 +152 val_152 +152 val_152 +152 val_152 +153 val_153 +153 val_153 +155 val_155 +155 val_155 +156 val_156 +156 val_156 +157 val_157 +157 val_157 +158 val_158 +158 val_158 +160 val_160 +160 val_160 +162 val_162 +162 val_162 +163 val_163 +163 val_163 +164 val_164 +164 val_164 +164 val_164 +164 val_164 +165 val_165 +165 val_165 +165 val_165 +165 val_165 +166 val_166 +166 val_166 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +17 val_17 +17 val_17 +170 val_170 +170 val_170 +172 val_172 +172 val_172 +172 val_172 +172 val_172 +174 val_174 +174 val_174 +174 val_174 +174 val_174 +175 val_175 +175 val_175 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +176 val_176 +176 val_176 +177 val_177 +177 val_177 +178 val_178 +178 val_178 +179 val_179 +179 val_179 +179 val_179 +179 val_179 +18 val_18 +18 val_18 +18 val_18 +18 val_18 +180 val_180 +180 val_180 +181 val_181 +181 val_181 +183 val_183 +183 val_183 +186 val_186 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +189 val_189 +19 val_19 +19 val_19 +190 val_190 +190 val_190 +191 val_191 +191 val_191 +191 val_191 +191 val_191 +192 val_192 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +193 val_193 +194 val_194 +194 val_194 +195 val_195 +195 val_195 +195 val_195 +195 val_195 +196 val_196 +196 val_196 +197 val_197 +197 val_197 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +199 val_199 +2 val_2 +2 val_2 +20 val_20 +20 val_20 +200 val_200 +200 val_200 +200 val_200 +200 val_200 +201 val_201 +201 val_201 +202 val_202 +202 val_202 +203 val_203 +203 val_203 +203 val_203 +203 val_203 +205 val_205 +205 val_205 +205 val_205 +205 val_205 +207 val_207 +207 val_207 +207 val_207 +207 val_207 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +208 val_208 +209 val_209 +209 val_209 +209 val_209 +209 val_209 +213 val_213 +213 val_213 +213 val_213 +213 val_213 +214 val_214 +214 val_214 +216 val_216 +216 val_216 +216 val_216 +216 val_216 +217 val_217 +217 val_217 +217 val_217 +217 val_217 +218 val_218 +218 val_218 +219 val_219 +219 val_219 +219 val_219 +219 val_219 +221 val_221 +221 val_221 +221 val_221 +221 val_221 +222 val_222 +222 val_222 +223 val_223 +223 val_223 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +224 val_224 +224 val_224 +226 val_226 +226 val_226 +228 val_228 +228 val_228 +229 val_229 +229 val_229 +229 val_229 +229 val_229 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +233 val_233 +233 val_233 +235 val_235 +235 val_235 +237 val_237 +237 val_237 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +238 val_238 +238 val_238 +239 val_239 +239 val_239 +239 val_239 +239 val_239 +24 val_24 +24 val_24 +24 val_24 +24 val_24 +241 val_241 +241 val_241 +242 val_242 +242 val_242 +242 val_242 +242 val_242 +244 val_244 +244 val_244 +247 val_247 +247 val_247 +248 val_248 +248 val_248 +249 val_249 +249 val_249 +252 val_252 +252 val_252 +255 val_255 +255 val_255 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +256 val_256 +256 val_256 +257 val_257 +257 val_257 +258 val_258 +258 val_258 +26 val_26 +26 val_26 +26 val_26 +26 val_26 +260 val_260 +260 val_260 +262 val_262 +262 val_262 +263 val_263 +263 val_263 +265 val_265 +265 val_265 +265 val_265 +265 val_265 +266 val_266 +266 val_266 +27 val_27 +27 val_27 +272 val_272 +272 val_272 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +274 val_274 +275 val_275 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +278 val_278 +278 val_278 +28 val_28 +28 val_28 +280 val_280 +280 val_280 +280 val_280 +280 val_280 +281 val_281 +281 val_281 +281 val_281 +281 val_281 +282 val_282 +282 val_282 +282 val_282 +282 val_282 +283 val_283 +283 val_283 +284 val_284 +284 val_284 +285 val_285 +285 val_285 +286 val_286 +286 val_286 +287 val_287 +287 val_287 +288 val_288 +288 val_288 +288 val_288 +288 val_288 +289 val_289 +289 val_289 +291 val_291 +291 val_291 +292 val_292 +292 val_292 +296 val_296 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +298 val_298 +30 val_30 +30 val_30 +302 val_302 +302 val_302 +305 val_305 +305 val_305 +306 val_306 +306 val_306 +307 val_307 +307 val_307 +307 val_307 +307 val_307 +308 val_308 +308 val_308 +309 val_309 +309 val_309 +309 val_309 +309 val_309 +310 val_310 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +322 val_322 +322 val_322 +323 val_323 +323 val_323 +325 val_325 +325 val_325 +325 val_325 +325 val_325 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +327 val_327 +33 val_33 +33 val_33 +331 val_331 +331 val_331 +331 val_331 +331 val_331 +332 val_332 +332 val_332 +333 val_333 +333 val_333 +333 val_333 +333 val_333 +335 val_335 +335 val_335 +336 val_336 +336 val_336 +338 val_338 +338 val_338 +339 val_339 +339 val_339 +34 val_34 +34 val_34 +341 val_341 +341 val_341 +342 val_342 +342 val_342 +342 val_342 +342 val_342 +344 val_344 +344 val_344 +344 val_344 +344 val_344 +345 val_345 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +35 val_35 +351 val_351 +351 val_351 +353 val_353 +353 val_353 +353 val_353 +353 val_353 +356 val_356 +356 val_356 +360 val_360 +360 val_360 +362 val_362 +362 val_362 +364 val_364 +364 val_364 +365 val_365 +365 val_365 +366 val_366 +366 val_366 +367 val_367 +367 val_367 +367 val_367 +367 val_367 +368 val_368 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +369 val_369 +37 val_37 +37 val_37 +37 val_37 +37 val_37 +373 val_373 +373 val_373 +374 val_374 +374 val_374 +375 val_375 +375 val_375 +377 val_377 +377 val_377 +378 val_378 +378 val_378 +379 val_379 +379 val_379 +382 val_382 +382 val_382 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +386 val_386 +389 val_389 +389 val_389 +392 val_392 +392 val_392 +393 val_393 +393 val_393 +394 val_394 +394 val_394 +395 val_395 +395 val_395 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +399 val_399 +399 val_399 +4 val_4 +4 val_4 +400 val_400 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 +402 val_402 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +403 val_403 +404 val_404 +404 val_404 +404 val_404 +404 val_404 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 +407 val_407 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +409 val_409 +41 val_41 +41 val_41 +411 val_411 +411 val_411 +413 val_413 +413 val_413 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +418 val_418 +419 val_419 +419 val_419 +42 val_42 +42 val_42 +42 val_42 +42 val_42 +421 val_421 +421 val_421 +424 val_424 +424 val_424 +424 val_424 +424 val_424 +427 val_427 +427 val_427 +429 val_429 +429 val_429 +429 val_429 +429 val_429 +43 val_43 +43 val_43 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +430 val_430 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +431 val_431 +432 val_432 +432 val_432 +435 val_435 +435 val_435 +436 val_436 +436 val_436 +437 val_437 +437 val_437 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +438 val_438 +439 val_439 +439 val_439 +439 val_439 +439 val_439 +44 val_44 +44 val_44 +443 val_443 +443 val_443 +444 val_444 +444 val_444 +446 val_446 +446 val_446 +448 val_448 +448 val_448 +449 val_449 +449 val_449 +452 val_452 +452 val_452 +453 val_453 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +455 val_455 +457 val_457 +457 val_457 +458 val_458 +458 val_458 +458 val_458 +458 val_458 +459 val_459 +459 val_459 +459 val_459 +459 val_459 +460 val_460 +460 val_460 +462 val_462 +462 val_462 +462 val_462 +462 val_462 +463 val_463 +463 val_463 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +47 val_47 +47 val_47 +470 val_470 +470 val_470 +472 val_472 +472 val_472 +475 val_475 +475 val_475 +477 val_477 +477 val_477 +478 val_478 +478 val_478 +478 val_478 +478 val_478 +479 val_479 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +481 val_481 +482 val_482 +482 val_482 +483 val_483 +483 val_483 +484 val_484 +484 val_484 +485 val_485 +485 val_485 +487 val_487 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +490 val_490 +491 val_491 +491 val_491 +492 val_492 +492 val_492 +492 val_492 +492 val_492 +493 val_493 +493 val_493 +494 val_494 +494 val_494 +495 val_495 +495 val_495 +496 val_496 +496 val_496 +497 val_497 +497 val_497 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +498 val_498 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +51 val_51 +51 val_51 +53 val_53 +53 val_53 +54 val_54 +54 val_54 +57 val_57 +57 val_57 +58 val_58 +58 val_58 +58 val_58 +58 val_58 +64 val_64 +64 val_64 +65 val_65 +65 val_65 +66 val_66 +66 val_66 +67 val_67 +67 val_67 +67 val_67 +67 val_67 +69 val_69 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +72 val_72 +72 val_72 +74 val_74 +74 val_74 +76 val_76 +76 val_76 +76 val_76 +76 val_76 +77 val_77 +77 val_77 +78 val_78 +78 val_78 +8 val_8 +8 val_8 +80 val_80 +80 val_80 +82 val_82 +82 val_82 +83 val_83 +83 val_83 +83 val_83 +83 val_83 +84 val_84 +84 val_84 +84 val_84 +84 val_84 +85 val_85 +85 val_85 +86 val_86 +86 val_86 +87 val_87 +87 val_87 +9 val_9 +9 val_9 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +90 val_90 +92 val_92 +92 val_92 +95 val_95 +95 val_95 +95 val_95 +95 val_95 +96 val_96 +96 val_96 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +98 val_98 +98 val_98 +98 val_98 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union24-0-5659f2e36b79fa312aaf6e233dc575c9 b/sql/hive/src/test/resources/golden/union24-0-5659f2e36b79fa312aaf6e233dc575c9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union24-1-92aaed1a225be0e1b3d4556680a77b8c b/sql/hive/src/test/resources/golden/union24-1-92aaed1a225be0e1b3d4556680a77b8c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union24-10-ae53b6e1d433f000da3fbe130222b89 b/sql/hive/src/test/resources/golden/union24-10-ae53b6e1d433f000da3fbe130222b89 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union24-11-a41e75063b4cac0dbaf99b4aabc3201a b/sql/hive/src/test/resources/golden/union24-11-a41e75063b4cac0dbaf99b4aabc3201a new file mode 100644 index 0000000000000..e850208008112 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union24-11-a41e75063b4cac0dbaf99b4aabc3201a @@ -0,0 +1,18 @@ +0 1 +0 3 +0 3 +2 1 +2 1 +2 1 +4 1 +4 1 +4 1 +5 1 +5 3 +5 3 +8 1 +8 1 +8 1 +9 1 +9 1 +9 1 diff --git a/sql/hive/src/test/resources/golden/union24-2-4afc74338258d50ae6ecdb0589bd2a38 b/sql/hive/src/test/resources/golden/union24-2-4afc74338258d50ae6ecdb0589bd2a38 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union24-3-d3370b90a3ace4b4d1cefd1ffc79906f b/sql/hive/src/test/resources/golden/union24-3-d3370b90a3ace4b4d1cefd1ffc79906f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union24-4-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union24-4-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union24-4-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union24-5-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union24-5-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union24-5-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union24-6-83d9274a535ebebe0170ce8f16062ef4 b/sql/hive/src/test/resources/golden/union24-6-83d9274a535ebebe0170ce8f16062ef4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union24-7-afb3649d2de5113691a37d0c77b28b31 b/sql/hive/src/test/resources/golden/union24-7-afb3649d2de5113691a37d0c77b28b31 new file mode 100644 index 0000000000000..2251af07b7c05 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union24-7-afb3649d2de5113691a37d0c77b28b31 @@ -0,0 +1,24 @@ +0 1 +0 3 +0 3 +0 3 +2 1 +2 1 +2 1 +2 1 +4 1 +4 1 +4 1 +4 1 +5 1 +5 3 +5 3 +5 3 +8 1 +8 1 +8 1 +8 1 +9 1 +9 1 +9 1 +9 1 diff --git a/sql/hive/src/test/resources/golden/union24-8-b6d9a41e2b537869e977cfb969b51edb b/sql/hive/src/test/resources/golden/union24-8-b6d9a41e2b537869e977cfb969b51edb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union24-9-db8ce0526e33b73f5589e3e34aca0198 b/sql/hive/src/test/resources/golden/union24-9-db8ce0526e33b73f5589e3e34aca0198 new file mode 100644 index 0000000000000..17fd2beaf0661 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union24-9-db8ce0526e33b73f5589e3e34aca0198 @@ -0,0 +1,18 @@ +0 3 +0 3 +0 3 +2 1 +2 1 +2 1 +4 1 +4 1 +4 1 +5 3 +5 3 +5 3 +8 1 +8 1 +8 1 +9 1 +9 1 +9 1 diff --git a/sql/hive/src/test/resources/golden/union26-0-a0d1a7f8eb3fba9455ab517aab14552d b/sql/hive/src/test/resources/golden/union26-0-a0d1a7f8eb3fba9455ab517aab14552d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union26-1-4702087f160230463e6114d6534d47e4 b/sql/hive/src/test/resources/golden/union26-1-4702087f160230463e6114d6534d47e4 new file mode 100644 index 0000000000000..9ba1c19df23f3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union26-1-4702087f160230463e6114d6534d47e4 @@ -0,0 +1,309 @@ +18 0 val_0 +4 2 val_2 +4 4 val_4 +18 5 val_5 +4 8 val_8 +4 9 val_9 +4 10 val_10 +4 11 val_11 +10 12 val_12 +10 15 val_15 +4 17 val_17 +10 18 val_18 +4 19 val_19 +4 20 val_20 +10 24 val_24 +10 26 val_26 +4 27 val_27 +4 28 val_28 +4 30 val_30 +4 33 val_33 +4 34 val_34 +18 35 val_35 +10 37 val_37 +4 41 val_41 +10 42 val_42 +4 43 val_43 +4 44 val_44 +4 47 val_47 +10 51 val_51 +4 53 val_53 +4 54 val_54 +4 57 val_57 +10 58 val_58 +4 64 val_64 +4 65 val_65 +4 66 val_66 +10 67 val_67 +4 69 val_69 +18 70 val_70 +10 72 val_72 +4 74 val_74 +10 76 val_76 +4 77 val_77 +4 78 val_78 +4 80 val_80 +4 82 val_82 +10 83 val_83 +10 84 val_84 +4 85 val_85 +4 86 val_86 +4 87 val_87 +18 90 val_90 +4 92 val_92 +10 95 val_95 +4 96 val_96 +10 97 val_97 +10 98 val_98 +10 100 val_100 +10 103 val_103 +10 104 val_104 +4 105 val_105 +4 111 val_111 +10 113 val_113 +4 114 val_114 +4 116 val_116 +10 118 val_118 +18 119 val_119 +10 120 val_120 +10 125 val_125 +4 126 val_126 +18 128 val_128 +10 129 val_129 +4 131 val_131 +4 133 val_133 +10 134 val_134 +4 136 val_136 +10 137 val_137 +28 138 val_138 +4 143 val_143 +4 145 val_145 +10 146 val_146 +10 149 val_149 +4 150 val_150 +10 152 val_152 +4 153 val_153 +4 155 val_155 +4 156 val_156 +4 157 val_157 +4 158 val_158 +4 160 val_160 +4 162 val_162 +4 163 val_163 +10 164 val_164 +10 165 val_165 +4 166 val_166 +18 167 val_167 +4 168 val_168 +28 169 val_169 +4 170 val_170 +10 172 val_172 +10 174 val_174 +10 175 val_175 +10 176 val_176 +4 177 val_177 +4 178 val_178 +10 179 val_179 +4 180 val_180 +4 181 val_181 +4 183 val_183 +4 186 val_186 +18 187 val_187 +4 189 val_189 +4 190 val_190 +10 191 val_191 +4 192 val_192 +18 193 val_193 +4 194 val_194 +10 195 val_195 +4 196 val_196 +10 197 val_197 +18 199 val_199 +10 200 val_200 +4 201 val_201 +4 202 val_202 +10 203 val_203 +10 205 val_205 +10 207 val_207 +18 208 val_208 +10 209 val_209 +10 213 val_213 +4 214 val_214 +10 216 val_216 +10 217 val_217 +4 218 val_218 +10 219 val_219 +10 221 val_221 +4 222 val_222 +10 223 val_223 +10 224 val_224 +4 226 val_226 +4 228 val_228 +10 229 val_229 +40 230 val_230 +10 233 val_233 +4 235 val_235 +10 237 val_237 +10 238 val_238 +10 239 val_239 +4 241 val_241 +10 242 val_242 +4 244 val_244 +4 247 val_247 +4 248 val_248 +4 249 val_249 +4 252 val_252 +10 255 val_255 +10 256 val_256 +4 257 val_257 +4 258 val_258 +4 260 val_260 +4 262 val_262 +4 263 val_263 +10 265 val_265 +4 266 val_266 +10 272 val_272 +18 273 val_273 +4 274 val_274 +4 275 val_275 +28 277 val_277 +10 278 val_278 +10 280 val_280 +10 281 val_281 +10 282 val_282 +4 283 val_283 +4 284 val_284 +4 285 val_285 +4 286 val_286 +4 287 val_287 +10 288 val_288 +4 289 val_289 +4 291 val_291 +4 292 val_292 +4 296 val_296 +18 298 val_298 +4 302 val_302 +4 305 val_305 +4 306 val_306 +10 307 val_307 +4 308 val_308 +10 309 val_309 +4 310 val_310 +18 311 val_311 +4 315 val_315 +18 316 val_316 +10 317 val_317 +18 318 val_318 +10 321 val_321 +10 322 val_322 +4 323 val_323 +10 325 val_325 +18 327 val_327 +10 331 val_331 +4 332 val_332 +10 333 val_333 +4 335 val_335 +4 336 val_336 +4 338 val_338 +4 339 val_339 +4 341 val_341 +10 342 val_342 +10 344 val_344 +4 345 val_345 +40 348 val_348 +4 351 val_351 +10 353 val_353 +4 356 val_356 +4 360 val_360 +4 362 val_362 +4 364 val_364 +4 365 val_365 +4 366 val_366 +10 367 val_367 +4 368 val_368 +18 369 val_369 +4 373 val_373 +4 374 val_374 +4 375 val_375 +4 377 val_377 +4 378 val_378 +4 379 val_379 +10 382 val_382 +18 384 val_384 +4 386 val_386 +4 389 val_389 +4 392 val_392 +4 393 val_393 +4 394 val_394 +10 395 val_395 +18 396 val_396 +10 397 val_397 +10 399 val_399 +4 400 val_400 +40 401 val_401 +4 402 val_402 +18 403 val_403 +10 404 val_404 +28 406 val_406 +4 407 val_407 +18 409 val_409 +4 411 val_411 +10 413 val_413 +10 414 val_414 +18 417 val_417 +4 418 val_418 +4 419 val_419 +4 421 val_421 +10 424 val_424 +4 427 val_427 +10 429 val_429 +18 430 val_430 +18 431 val_431 +4 432 val_432 +4 435 val_435 +4 436 val_436 +4 437 val_437 +18 438 val_438 +10 439 val_439 +4 443 val_443 +4 444 val_444 +4 446 val_446 +4 448 val_448 +4 449 val_449 +4 452 val_452 +4 453 val_453 +18 454 val_454 +4 455 val_455 +4 457 val_457 +10 458 val_458 +10 459 val_459 +4 460 val_460 +10 462 val_462 +10 463 val_463 +18 466 val_466 +4 467 val_467 +28 468 val_468 +40 469 val_469 +4 470 val_470 +4 472 val_472 +4 475 val_475 +4 477 val_477 +10 478 val_478 +4 479 val_479 +18 480 val_480 +4 481 val_481 +4 482 val_482 +4 483 val_483 +4 484 val_484 +4 485 val_485 +4 487 val_487 +28 489 val_489 +4 490 val_490 +4 491 val_491 +10 492 val_492 +4 493 val_493 +4 494 val_494 +4 495 val_495 +4 496 val_496 +4 497 val_497 +18 498 val_498 diff --git a/sql/hive/src/test/resources/golden/union26-2-5c88f10d25ae39c1e2df8f4beaa8d562 b/sql/hive/src/test/resources/golden/union26-2-5c88f10d25ae39c1e2df8f4beaa8d562 new file mode 100644 index 0000000000000..9ba1c19df23f3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union26-2-5c88f10d25ae39c1e2df8f4beaa8d562 @@ -0,0 +1,309 @@ +18 0 val_0 +4 2 val_2 +4 4 val_4 +18 5 val_5 +4 8 val_8 +4 9 val_9 +4 10 val_10 +4 11 val_11 +10 12 val_12 +10 15 val_15 +4 17 val_17 +10 18 val_18 +4 19 val_19 +4 20 val_20 +10 24 val_24 +10 26 val_26 +4 27 val_27 +4 28 val_28 +4 30 val_30 +4 33 val_33 +4 34 val_34 +18 35 val_35 +10 37 val_37 +4 41 val_41 +10 42 val_42 +4 43 val_43 +4 44 val_44 +4 47 val_47 +10 51 val_51 +4 53 val_53 +4 54 val_54 +4 57 val_57 +10 58 val_58 +4 64 val_64 +4 65 val_65 +4 66 val_66 +10 67 val_67 +4 69 val_69 +18 70 val_70 +10 72 val_72 +4 74 val_74 +10 76 val_76 +4 77 val_77 +4 78 val_78 +4 80 val_80 +4 82 val_82 +10 83 val_83 +10 84 val_84 +4 85 val_85 +4 86 val_86 +4 87 val_87 +18 90 val_90 +4 92 val_92 +10 95 val_95 +4 96 val_96 +10 97 val_97 +10 98 val_98 +10 100 val_100 +10 103 val_103 +10 104 val_104 +4 105 val_105 +4 111 val_111 +10 113 val_113 +4 114 val_114 +4 116 val_116 +10 118 val_118 +18 119 val_119 +10 120 val_120 +10 125 val_125 +4 126 val_126 +18 128 val_128 +10 129 val_129 +4 131 val_131 +4 133 val_133 +10 134 val_134 +4 136 val_136 +10 137 val_137 +28 138 val_138 +4 143 val_143 +4 145 val_145 +10 146 val_146 +10 149 val_149 +4 150 val_150 +10 152 val_152 +4 153 val_153 +4 155 val_155 +4 156 val_156 +4 157 val_157 +4 158 val_158 +4 160 val_160 +4 162 val_162 +4 163 val_163 +10 164 val_164 +10 165 val_165 +4 166 val_166 +18 167 val_167 +4 168 val_168 +28 169 val_169 +4 170 val_170 +10 172 val_172 +10 174 val_174 +10 175 val_175 +10 176 val_176 +4 177 val_177 +4 178 val_178 +10 179 val_179 +4 180 val_180 +4 181 val_181 +4 183 val_183 +4 186 val_186 +18 187 val_187 +4 189 val_189 +4 190 val_190 +10 191 val_191 +4 192 val_192 +18 193 val_193 +4 194 val_194 +10 195 val_195 +4 196 val_196 +10 197 val_197 +18 199 val_199 +10 200 val_200 +4 201 val_201 +4 202 val_202 +10 203 val_203 +10 205 val_205 +10 207 val_207 +18 208 val_208 +10 209 val_209 +10 213 val_213 +4 214 val_214 +10 216 val_216 +10 217 val_217 +4 218 val_218 +10 219 val_219 +10 221 val_221 +4 222 val_222 +10 223 val_223 +10 224 val_224 +4 226 val_226 +4 228 val_228 +10 229 val_229 +40 230 val_230 +10 233 val_233 +4 235 val_235 +10 237 val_237 +10 238 val_238 +10 239 val_239 +4 241 val_241 +10 242 val_242 +4 244 val_244 +4 247 val_247 +4 248 val_248 +4 249 val_249 +4 252 val_252 +10 255 val_255 +10 256 val_256 +4 257 val_257 +4 258 val_258 +4 260 val_260 +4 262 val_262 +4 263 val_263 +10 265 val_265 +4 266 val_266 +10 272 val_272 +18 273 val_273 +4 274 val_274 +4 275 val_275 +28 277 val_277 +10 278 val_278 +10 280 val_280 +10 281 val_281 +10 282 val_282 +4 283 val_283 +4 284 val_284 +4 285 val_285 +4 286 val_286 +4 287 val_287 +10 288 val_288 +4 289 val_289 +4 291 val_291 +4 292 val_292 +4 296 val_296 +18 298 val_298 +4 302 val_302 +4 305 val_305 +4 306 val_306 +10 307 val_307 +4 308 val_308 +10 309 val_309 +4 310 val_310 +18 311 val_311 +4 315 val_315 +18 316 val_316 +10 317 val_317 +18 318 val_318 +10 321 val_321 +10 322 val_322 +4 323 val_323 +10 325 val_325 +18 327 val_327 +10 331 val_331 +4 332 val_332 +10 333 val_333 +4 335 val_335 +4 336 val_336 +4 338 val_338 +4 339 val_339 +4 341 val_341 +10 342 val_342 +10 344 val_344 +4 345 val_345 +40 348 val_348 +4 351 val_351 +10 353 val_353 +4 356 val_356 +4 360 val_360 +4 362 val_362 +4 364 val_364 +4 365 val_365 +4 366 val_366 +10 367 val_367 +4 368 val_368 +18 369 val_369 +4 373 val_373 +4 374 val_374 +4 375 val_375 +4 377 val_377 +4 378 val_378 +4 379 val_379 +10 382 val_382 +18 384 val_384 +4 386 val_386 +4 389 val_389 +4 392 val_392 +4 393 val_393 +4 394 val_394 +10 395 val_395 +18 396 val_396 +10 397 val_397 +10 399 val_399 +4 400 val_400 +40 401 val_401 +4 402 val_402 +18 403 val_403 +10 404 val_404 +28 406 val_406 +4 407 val_407 +18 409 val_409 +4 411 val_411 +10 413 val_413 +10 414 val_414 +18 417 val_417 +4 418 val_418 +4 419 val_419 +4 421 val_421 +10 424 val_424 +4 427 val_427 +10 429 val_429 +18 430 val_430 +18 431 val_431 +4 432 val_432 +4 435 val_435 +4 436 val_436 +4 437 val_437 +18 438 val_438 +10 439 val_439 +4 443 val_443 +4 444 val_444 +4 446 val_446 +4 448 val_448 +4 449 val_449 +4 452 val_452 +4 453 val_453 +18 454 val_454 +4 455 val_455 +4 457 val_457 +10 458 val_458 +10 459 val_459 +4 460 val_460 +10 462 val_462 +10 463 val_463 +18 466 val_466 +4 467 val_467 +28 468 val_468 +40 469 val_469 +4 470 val_470 +4 472 val_472 +4 475 val_475 +4 477 val_477 +10 478 val_478 +4 479 val_479 +18 480 val_480 +4 481 val_481 +4 482 val_482 +4 483 val_483 +4 484 val_484 +4 485 val_485 +4 487 val_487 +28 489 val_489 +4 490 val_490 +4 491 val_491 +10 492 val_492 +4 493 val_493 +4 494 val_494 +4 495 val_495 +4 496 val_496 +4 497 val_497 +18 498 val_498 diff --git a/sql/hive/src/test/resources/golden/union26-3-4702087f160230463e6114d6534d47e4 b/sql/hive/src/test/resources/golden/union26-3-4702087f160230463e6114d6534d47e4 new file mode 100644 index 0000000000000..9ba1c19df23f3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union26-3-4702087f160230463e6114d6534d47e4 @@ -0,0 +1,309 @@ +18 0 val_0 +4 2 val_2 +4 4 val_4 +18 5 val_5 +4 8 val_8 +4 9 val_9 +4 10 val_10 +4 11 val_11 +10 12 val_12 +10 15 val_15 +4 17 val_17 +10 18 val_18 +4 19 val_19 +4 20 val_20 +10 24 val_24 +10 26 val_26 +4 27 val_27 +4 28 val_28 +4 30 val_30 +4 33 val_33 +4 34 val_34 +18 35 val_35 +10 37 val_37 +4 41 val_41 +10 42 val_42 +4 43 val_43 +4 44 val_44 +4 47 val_47 +10 51 val_51 +4 53 val_53 +4 54 val_54 +4 57 val_57 +10 58 val_58 +4 64 val_64 +4 65 val_65 +4 66 val_66 +10 67 val_67 +4 69 val_69 +18 70 val_70 +10 72 val_72 +4 74 val_74 +10 76 val_76 +4 77 val_77 +4 78 val_78 +4 80 val_80 +4 82 val_82 +10 83 val_83 +10 84 val_84 +4 85 val_85 +4 86 val_86 +4 87 val_87 +18 90 val_90 +4 92 val_92 +10 95 val_95 +4 96 val_96 +10 97 val_97 +10 98 val_98 +10 100 val_100 +10 103 val_103 +10 104 val_104 +4 105 val_105 +4 111 val_111 +10 113 val_113 +4 114 val_114 +4 116 val_116 +10 118 val_118 +18 119 val_119 +10 120 val_120 +10 125 val_125 +4 126 val_126 +18 128 val_128 +10 129 val_129 +4 131 val_131 +4 133 val_133 +10 134 val_134 +4 136 val_136 +10 137 val_137 +28 138 val_138 +4 143 val_143 +4 145 val_145 +10 146 val_146 +10 149 val_149 +4 150 val_150 +10 152 val_152 +4 153 val_153 +4 155 val_155 +4 156 val_156 +4 157 val_157 +4 158 val_158 +4 160 val_160 +4 162 val_162 +4 163 val_163 +10 164 val_164 +10 165 val_165 +4 166 val_166 +18 167 val_167 +4 168 val_168 +28 169 val_169 +4 170 val_170 +10 172 val_172 +10 174 val_174 +10 175 val_175 +10 176 val_176 +4 177 val_177 +4 178 val_178 +10 179 val_179 +4 180 val_180 +4 181 val_181 +4 183 val_183 +4 186 val_186 +18 187 val_187 +4 189 val_189 +4 190 val_190 +10 191 val_191 +4 192 val_192 +18 193 val_193 +4 194 val_194 +10 195 val_195 +4 196 val_196 +10 197 val_197 +18 199 val_199 +10 200 val_200 +4 201 val_201 +4 202 val_202 +10 203 val_203 +10 205 val_205 +10 207 val_207 +18 208 val_208 +10 209 val_209 +10 213 val_213 +4 214 val_214 +10 216 val_216 +10 217 val_217 +4 218 val_218 +10 219 val_219 +10 221 val_221 +4 222 val_222 +10 223 val_223 +10 224 val_224 +4 226 val_226 +4 228 val_228 +10 229 val_229 +40 230 val_230 +10 233 val_233 +4 235 val_235 +10 237 val_237 +10 238 val_238 +10 239 val_239 +4 241 val_241 +10 242 val_242 +4 244 val_244 +4 247 val_247 +4 248 val_248 +4 249 val_249 +4 252 val_252 +10 255 val_255 +10 256 val_256 +4 257 val_257 +4 258 val_258 +4 260 val_260 +4 262 val_262 +4 263 val_263 +10 265 val_265 +4 266 val_266 +10 272 val_272 +18 273 val_273 +4 274 val_274 +4 275 val_275 +28 277 val_277 +10 278 val_278 +10 280 val_280 +10 281 val_281 +10 282 val_282 +4 283 val_283 +4 284 val_284 +4 285 val_285 +4 286 val_286 +4 287 val_287 +10 288 val_288 +4 289 val_289 +4 291 val_291 +4 292 val_292 +4 296 val_296 +18 298 val_298 +4 302 val_302 +4 305 val_305 +4 306 val_306 +10 307 val_307 +4 308 val_308 +10 309 val_309 +4 310 val_310 +18 311 val_311 +4 315 val_315 +18 316 val_316 +10 317 val_317 +18 318 val_318 +10 321 val_321 +10 322 val_322 +4 323 val_323 +10 325 val_325 +18 327 val_327 +10 331 val_331 +4 332 val_332 +10 333 val_333 +4 335 val_335 +4 336 val_336 +4 338 val_338 +4 339 val_339 +4 341 val_341 +10 342 val_342 +10 344 val_344 +4 345 val_345 +40 348 val_348 +4 351 val_351 +10 353 val_353 +4 356 val_356 +4 360 val_360 +4 362 val_362 +4 364 val_364 +4 365 val_365 +4 366 val_366 +10 367 val_367 +4 368 val_368 +18 369 val_369 +4 373 val_373 +4 374 val_374 +4 375 val_375 +4 377 val_377 +4 378 val_378 +4 379 val_379 +10 382 val_382 +18 384 val_384 +4 386 val_386 +4 389 val_389 +4 392 val_392 +4 393 val_393 +4 394 val_394 +10 395 val_395 +18 396 val_396 +10 397 val_397 +10 399 val_399 +4 400 val_400 +40 401 val_401 +4 402 val_402 +18 403 val_403 +10 404 val_404 +28 406 val_406 +4 407 val_407 +18 409 val_409 +4 411 val_411 +10 413 val_413 +10 414 val_414 +18 417 val_417 +4 418 val_418 +4 419 val_419 +4 421 val_421 +10 424 val_424 +4 427 val_427 +10 429 val_429 +18 430 val_430 +18 431 val_431 +4 432 val_432 +4 435 val_435 +4 436 val_436 +4 437 val_437 +18 438 val_438 +10 439 val_439 +4 443 val_443 +4 444 val_444 +4 446 val_446 +4 448 val_448 +4 449 val_449 +4 452 val_452 +4 453 val_453 +18 454 val_454 +4 455 val_455 +4 457 val_457 +10 458 val_458 +10 459 val_459 +4 460 val_460 +10 462 val_462 +10 463 val_463 +18 466 val_466 +4 467 val_467 +28 468 val_468 +40 469 val_469 +4 470 val_470 +4 472 val_472 +4 475 val_475 +4 477 val_477 +10 478 val_478 +4 479 val_479 +18 480 val_480 +4 481 val_481 +4 482 val_482 +4 483 val_483 +4 484 val_484 +4 485 val_485 +4 487 val_487 +28 489 val_489 +4 490 val_490 +4 491 val_491 +10 492 val_492 +4 493 val_493 +4 494 val_494 +4 495 val_495 +4 496 val_496 +4 497 val_497 +18 498 val_498 diff --git a/sql/hive/src/test/resources/golden/union27-0-7f319eff3c0237b6c06cb704dcde9195 b/sql/hive/src/test/resources/golden/union27-0-7f319eff3c0237b6c06cb704dcde9195 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union27-1-fb2ddef0c7d9b05d7fb26442599d354f b/sql/hive/src/test/resources/golden/union27-1-fb2ddef0c7d9b05d7fb26442599d354f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union27-2-10d1593b6663231ff7de938024ce6bb6 b/sql/hive/src/test/resources/golden/union27-2-10d1593b6663231ff7de938024ce6bb6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union27-3-ab84df3813ff23be99f148449610e530 b/sql/hive/src/test/resources/golden/union27-3-ab84df3813ff23be99f148449610e530 new file mode 100644 index 0000000000000..199095f1f9848 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union27-3-ab84df3813ff23be99f148449610e530 @@ -0,0 +1,8 @@ +97 val_97 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union28-0-6bccc08f175712c17aa66cebbf5b7e36 b/sql/hive/src/test/resources/golden/union28-0-6bccc08f175712c17aa66cebbf5b7e36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union28-1-f1bd585c115dbabf655d8dc38cd4e026 b/sql/hive/src/test/resources/golden/union28-1-f1bd585c115dbabf655d8dc38cd4e026 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union28-2-9985bbc70b8dd624fac261eafb10a78f b/sql/hive/src/test/resources/golden/union28-2-9985bbc70b8dd624fac261eafb10a78f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union28-3-b1d75ba0d33a452619e41f70e69616e9 b/sql/hive/src/test/resources/golden/union28-3-b1d75ba0d33a452619e41f70e69616e9 new file mode 100644 index 0000000000000..293f324297419 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union28-3-b1d75ba0d33a452619e41f70e69616e9 @@ -0,0 +1,20 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +2 val_2 +2 val_2 +2 val_2 +4 val_4 +4 val_4 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +8 val_8 +8 val_8 +8 val_8 +9 val_9 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union29-0-6bccc08f175712c17aa66cebbf5b7e36 b/sql/hive/src/test/resources/golden/union29-0-6bccc08f175712c17aa66cebbf5b7e36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union29-1-a40036f756a306f4226634b6ab67c72c b/sql/hive/src/test/resources/golden/union29-1-a40036f756a306f4226634b6ab67c72c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union29-2-c7fab64fc276c13149e1e68c0deb6594 b/sql/hive/src/test/resources/golden/union29-2-c7fab64fc276c13149e1e68c0deb6594 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union29-3-b1d75ba0d33a452619e41f70e69616e9 b/sql/hive/src/test/resources/golden/union29-3-b1d75ba0d33a452619e41f70e69616e9 new file mode 100644 index 0000000000000..87a971baed428 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union29-3-b1d75ba0d33a452619e41f70e69616e9 @@ -0,0 +1,20 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +2 val_2 +2 val_2 +2 val_2 +4 val_4 +4 val_4 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +5 val_5 +5 val_5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union3-0-6a8a35102de1b0b88c6721a704eb174d b/sql/hive/src/test/resources/golden/union3-0-6a8a35102de1b0b88c6721a704eb174d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union3-1-ae80732ae5db530cc4e355d5d4724457 b/sql/hive/src/test/resources/golden/union3-1-ae80732ae5db530cc4e355d5d4724457 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union3-2-2a1dcd937f117f1955a169592b96d5f9 b/sql/hive/src/test/resources/golden/union3-2-2a1dcd937f117f1955a169592b96d5f9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union3-3-8fc63f8edb2969a63cd4485f1867ba97 b/sql/hive/src/test/resources/golden/union3-3-8fc63f8edb2969a63cd4485f1867ba97 new file mode 100644 index 0000000000000..94ebaf9001613 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union3-3-8fc63f8edb2969a63cd4485f1867ba97 @@ -0,0 +1,4 @@ +1 +2 +3 +4 diff --git a/sql/hive/src/test/resources/golden/union30-0-6bccc08f175712c17aa66cebbf5b7e36 b/sql/hive/src/test/resources/golden/union30-0-6bccc08f175712c17aa66cebbf5b7e36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union30-1-1aff6fba829bae7d20266cf91383ef78 b/sql/hive/src/test/resources/golden/union30-1-1aff6fba829bae7d20266cf91383ef78 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union30-2-252f12f7532ca67132bfc62063c58430 b/sql/hive/src/test/resources/golden/union30-2-252f12f7532ca67132bfc62063c58430 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union30-3-b1d75ba0d33a452619e41f70e69616e9 b/sql/hive/src/test/resources/golden/union30-3-b1d75ba0d33a452619e41f70e69616e9 new file mode 100644 index 0000000000000..a6f502e6c3e3a --- /dev/null +++ b/sql/hive/src/test/resources/golden/union30-3-b1d75ba0d33a452619e41f70e69616e9 @@ -0,0 +1,20 @@ +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +0 val_0 +2 val_2 +2 val_2 +2 val_2 +2 val_2 +4 val_4 +4 val_4 +4 val_4 +4 val_4 +5 val_5 +5 val_5 +5 val_5 +5 val_5 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union31-0-ca16024e6f5399b1d035f5b9fd665163 b/sql/hive/src/test/resources/golden/union31-0-ca16024e6f5399b1d035f5b9fd665163 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-1-b12aa87aaf64b573ce0be7013117651b b/sql/hive/src/test/resources/golden/union31-1-b12aa87aaf64b573ce0be7013117651b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-10-ca695e6973bc98b7f06c998b964ae339 b/sql/hive/src/test/resources/golden/union31-10-ca695e6973bc98b7f06c998b964ae339 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-11-70dda95c1b749e4104cc2c767cd7fec0 b/sql/hive/src/test/resources/golden/union31-11-70dda95c1b749e4104cc2c767cd7fec0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-12-de2477a134ab37bb22d879028becf2e5 b/sql/hive/src/test/resources/golden/union31-12-de2477a134ab37bb22d879028becf2e5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-13-22b1078764cb1c9b2fb95358c968e987 b/sql/hive/src/test/resources/golden/union31-13-22b1078764cb1c9b2fb95358c968e987 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-14-c36a1d8de2713f722ec42bc4686d6125 b/sql/hive/src/test/resources/golden/union31-14-c36a1d8de2713f722ec42bc4686d6125 new file mode 100644 index 0000000000000..dadf53962e7a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union31-14-c36a1d8de2713f722ec42bc4686d6125 @@ -0,0 +1,6 @@ +0 6 +2 2 +4 2 +5 6 +8 2 +9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union31-15-5df6435aed6e0a6a6853480a027b911e b/sql/hive/src/test/resources/golden/union31-15-5df6435aed6e0a6a6853480a027b911e new file mode 100644 index 0000000000000..dadf53962e7a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union31-15-5df6435aed6e0a6a6853480a027b911e @@ -0,0 +1,6 @@ +0 6 +2 2 +4 2 +5 6 +8 2 +9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union31-16-ca16024e6f5399b1d035f5b9fd665163 b/sql/hive/src/test/resources/golden/union31-16-ca16024e6f5399b1d035f5b9fd665163 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-17-b12aa87aaf64b573ce0be7013117651b b/sql/hive/src/test/resources/golden/union31-17-b12aa87aaf64b573ce0be7013117651b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-18-1522ec86f2e6735cf809a52c1f6f7883 b/sql/hive/src/test/resources/golden/union31-18-1522ec86f2e6735cf809a52c1f6f7883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-19-1e9320795b3e4acd7e6d89a8c9ba897e b/sql/hive/src/test/resources/golden/union31-19-1e9320795b3e4acd7e6d89a8c9ba897e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-2-1522ec86f2e6735cf809a52c1f6f7883 b/sql/hive/src/test/resources/golden/union31-2-1522ec86f2e6735cf809a52c1f6f7883 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-20-dceb6d9a03096d68d090557692ed6899 b/sql/hive/src/test/resources/golden/union31-20-dceb6d9a03096d68d090557692ed6899 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-21-bda2e62d0ecd30200b2359df420da574 b/sql/hive/src/test/resources/golden/union31-21-bda2e62d0ecd30200b2359df420da574 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-22-fa1c85506afbfa956251cd1253f5d79a b/sql/hive/src/test/resources/golden/union31-22-fa1c85506afbfa956251cd1253f5d79a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-23-c9d9d45a7d1a0c69efb8d8babc4a50df b/sql/hive/src/test/resources/golden/union31-23-c9d9d45a7d1a0c69efb8d8babc4a50df new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-24-df38c8164af7cc164c728b8178da72c5 b/sql/hive/src/test/resources/golden/union31-24-df38c8164af7cc164c728b8178da72c5 new file mode 100644 index 0000000000000..ede645acaf95b --- /dev/null +++ b/sql/hive/src/test/resources/golden/union31-24-df38c8164af7cc164c728b8178da72c5 @@ -0,0 +1,6 @@ +0 2 +2 2 +4 2 +5 2 +8 2 +9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union31-25-1485e295a99908e1862eae397b814045 b/sql/hive/src/test/resources/golden/union31-25-1485e295a99908e1862eae397b814045 new file mode 100644 index 0000000000000..ede645acaf95b --- /dev/null +++ b/sql/hive/src/test/resources/golden/union31-25-1485e295a99908e1862eae397b814045 @@ -0,0 +1,6 @@ +0 2 +2 2 +4 2 +5 2 +8 2 +9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union31-3-35d1dd67e8c3d76c77baaeae0760ddfc b/sql/hive/src/test/resources/golden/union31-3-35d1dd67e8c3d76c77baaeae0760ddfc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-4-77653483e5ce18437c9f85d3b297335d b/sql/hive/src/test/resources/golden/union31-4-77653483e5ce18437c9f85d3b297335d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-5-4651987fca60c1c1a59b8b28713ea737 b/sql/hive/src/test/resources/golden/union31-5-4651987fca60c1c1a59b8b28713ea737 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-6-69c2b75a25f884a72d89e43e0186f5a6 b/sql/hive/src/test/resources/golden/union31-6-69c2b75a25f884a72d89e43e0186f5a6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-7-7b021f95774705e4d7ff7049ee0e0b74 b/sql/hive/src/test/resources/golden/union31-7-7b021f95774705e4d7ff7049ee0e0b74 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union31-8-ba92b89786ffaecd74a740705e0fa0cb b/sql/hive/src/test/resources/golden/union31-8-ba92b89786ffaecd74a740705e0fa0cb new file mode 100644 index 0000000000000..dadf53962e7a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union31-8-ba92b89786ffaecd74a740705e0fa0cb @@ -0,0 +1,6 @@ +0 6 +2 2 +4 2 +5 6 +8 2 +9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union31-9-56dfdb30edd8a687f9aa9cad29b42760 b/sql/hive/src/test/resources/golden/union31-9-56dfdb30edd8a687f9aa9cad29b42760 new file mode 100644 index 0000000000000..a71793e8c52a3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union31-9-56dfdb30edd8a687f9aa9cad29b42760 @@ -0,0 +1,6 @@ +val_0 6 +val_2 2 +val_4 2 +val_5 6 +val_8 2 +val_9 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union32-0-4c7f0fb27ce3a8f80b02dab6fc5cb45e b/sql/hive/src/test/resources/golden/union32-0-4c7f0fb27ce3a8f80b02dab6fc5cb45e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union32-1-e6c80e7d6171ae5fc428506e57dc8753 b/sql/hive/src/test/resources/golden/union32-1-e6c80e7d6171ae5fc428506e57dc8753 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union32-10-44a9b373ee7d43a4ef2bc4b8a708601b b/sql/hive/src/test/resources/golden/union32-10-44a9b373ee7d43a4ef2bc4b8a708601b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union32-11-40d51bc9958b27c36ef647f0598fdee5 b/sql/hive/src/test/resources/golden/union32-11-40d51bc9958b27c36ef647f0598fdee5 new file mode 100644 index 0000000000000..9bf0de2f06c9a --- /dev/null +++ b/sql/hive/src/test/resources/golden/union32-11-40d51bc9958b27c36ef647f0598fdee5 @@ -0,0 +1,32 @@ +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +2.0 2.0 +2.0 2.0 +4.0 4.0 +4.0 4.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5.0 +8.0 8.0 +8.0 8.0 +9.0 9.0 +9.0 9.0 diff --git a/sql/hive/src/test/resources/golden/union32-2-8e39fef33c859ef83912d0fcda319218 b/sql/hive/src/test/resources/golden/union32-2-8e39fef33c859ef83912d0fcda319218 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union32-3-d31e252450077ac54f4cb18a9ad95a84 b/sql/hive/src/test/resources/golden/union32-3-d31e252450077ac54f4cb18a9ad95a84 new file mode 100644 index 0000000000000..462dca3124c41 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union32-3-d31e252450077ac54f4cb18a9ad95a84 @@ -0,0 +1,20 @@ +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +2.0 +2.0 +4.0 +4.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +8.0 +8.0 +9.0 +9.0 diff --git a/sql/hive/src/test/resources/golden/union32-4-79787e084ca15d479cee3a7e1ed2281e b/sql/hive/src/test/resources/golden/union32-4-79787e084ca15d479cee3a7e1ed2281e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union32-5-51c997d0a1103b60764bbb8316a38746 b/sql/hive/src/test/resources/golden/union32-5-51c997d0a1103b60764bbb8316a38746 new file mode 100644 index 0000000000000..2e662f39d1572 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union32-5-51c997d0a1103b60764bbb8316a38746 @@ -0,0 +1,32 @@ +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +2.0 +2.0 +4.0 +4.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +8.0 +8.0 +9.0 +9.0 diff --git a/sql/hive/src/test/resources/golden/union32-6-96fa13d8790bbfa1d6109b7cbf890d1b b/sql/hive/src/test/resources/golden/union32-6-96fa13d8790bbfa1d6109b7cbf890d1b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union32-7-f936440d63f4e1027dda4de605660633 b/sql/hive/src/test/resources/golden/union32-7-f936440d63f4e1027dda4de605660633 new file mode 100644 index 0000000000000..2e662f39d1572 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union32-7-f936440d63f4e1027dda4de605660633 @@ -0,0 +1,32 @@ +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +2.0 +2.0 +4.0 +4.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +5.0 +8.0 +8.0 +9.0 +9.0 diff --git a/sql/hive/src/test/resources/golden/union32-8-f42d83f502a7b8d3a36331e0f5621cfb b/sql/hive/src/test/resources/golden/union32-8-f42d83f502a7b8d3a36331e0f5621cfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union32-9-74fb695786df4c024288ae23ac8c00db b/sql/hive/src/test/resources/golden/union32-9-74fb695786df4c024288ae23ac8c00db new file mode 100644 index 0000000000000..106f1874451ff --- /dev/null +++ b/sql/hive/src/test/resources/golden/union32-9-74fb695786df4c024288ae23ac8c00db @@ -0,0 +1,32 @@ +0.0 0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +0.0 0 +0.0 0.0 +0.0 0.0 +0.0 0.0 +2.0 2.0 +2.0 2 +4.0 4 +4.0 4.0 +5.0 5 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5 +5.0 5.0 +5.0 5.0 +5.0 5.0 +5.0 5 +5.0 5.0 +5.0 5.0 +5.0 5.0 +8.0 8.0 +8.0 8 +9.0 9 +9.0 9.0 diff --git a/sql/hive/src/test/resources/golden/union33-0-c67a488530dc7e20a9e7acf02c14380f b/sql/hive/src/test/resources/golden/union33-0-c67a488530dc7e20a9e7acf02c14380f new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union33-0-c67a488530dc7e20a9e7acf02c14380f @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union33-1-1df7c476abb48234c839878414720873 b/sql/hive/src/test/resources/golden/union33-1-1df7c476abb48234c839878414720873 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union33-2-3987150ad66482f5186826efcfb117f7 b/sql/hive/src/test/resources/golden/union33-2-3987150ad66482f5186826efcfb117f7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union33-3-bfe75625806b414a5098af487b91046a b/sql/hive/src/test/resources/golden/union33-3-bfe75625806b414a5098af487b91046a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union33-4-1d22c1e85a4bfa338aff713d45440877 b/sql/hive/src/test/resources/golden/union33-4-1d22c1e85a4bfa338aff713d45440877 new file mode 100644 index 0000000000000..a1e0432c9a7d5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union33-4-1d22c1e85a4bfa338aff713d45440877 @@ -0,0 +1 @@ +312 diff --git a/sql/hive/src/test/resources/golden/union33-5-13c01085e0a2c46e745985fa11bedf34 b/sql/hive/src/test/resources/golden/union33-5-13c01085e0a2c46e745985fa11bedf34 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union33-6-796e4fce2bfb63c09bc04ac6eca7c9d8 b/sql/hive/src/test/resources/golden/union33-6-796e4fce2bfb63c09bc04ac6eca7c9d8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union33-7-1d22c1e85a4bfa338aff713d45440877 b/sql/hive/src/test/resources/golden/union33-7-1d22c1e85a4bfa338aff713d45440877 new file mode 100644 index 0000000000000..a1e0432c9a7d5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union33-7-1d22c1e85a4bfa338aff713d45440877 @@ -0,0 +1 @@ +312 diff --git a/sql/hive/src/test/resources/golden/union34-0-a9a6e5b0059d8f66a79ee702f2bec0a4 b/sql/hive/src/test/resources/golden/union34-0-a9a6e5b0059d8f66a79ee702f2bec0a4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union34-1-320c2fe802fab386957039aaff6399f1 b/sql/hive/src/test/resources/golden/union34-1-320c2fe802fab386957039aaff6399f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union34-10-da2b79118c21ac45ce85001fa61b0043 b/sql/hive/src/test/resources/golden/union34-10-da2b79118c21ac45ce85001fa61b0043 new file mode 100644 index 0000000000000..d572335ff5185 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union34-10-da2b79118c21ac45ce85001fa61b0043 @@ -0,0 +1,30 @@ +165 val_165 +165 val_165 +165 val_165 +238 val_238 +238 val_238 +238 val_238 +255 val_255 +255 val_255 +255 val_255 +27 val_27 +27 val_27 +27 val_27 +278 val_278 +278 val_278 +278 val_278 +311 val_311 +311 val_311 +311 val_311 +409 val_409 +409 val_409 +409 val_409 +484 val_484 +484 val_484 +484 val_484 +86 val_86 +86 val_86 +86 val_86 +98 val_98 +98 val_98 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union34-2-5707c9fd2cfd049426383e5e5dc80d7 b/sql/hive/src/test/resources/golden/union34-2-5707c9fd2cfd049426383e5e5dc80d7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union34-3-c179e14d840249d6953cb552279822f1 b/sql/hive/src/test/resources/golden/union34-3-c179e14d840249d6953cb552279822f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union34-4-101829a66cab2efd31dcb0d86e302956 b/sql/hive/src/test/resources/golden/union34-4-101829a66cab2efd31dcb0d86e302956 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union34-5-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/union34-5-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union34-5-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union34-6-ff0312eeb487fc393a06880ef5bb286f b/sql/hive/src/test/resources/golden/union34-6-ff0312eeb487fc393a06880ef5bb286f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union34-7-da2b79118c21ac45ce85001fa61b0043 b/sql/hive/src/test/resources/golden/union34-7-da2b79118c21ac45ce85001fa61b0043 new file mode 100644 index 0000000000000..d572335ff5185 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union34-7-da2b79118c21ac45ce85001fa61b0043 @@ -0,0 +1,30 @@ +165 val_165 +165 val_165 +165 val_165 +238 val_238 +238 val_238 +238 val_238 +255 val_255 +255 val_255 +255 val_255 +27 val_27 +27 val_27 +27 val_27 +278 val_278 +278 val_278 +278 val_278 +311 val_311 +311 val_311 +311 val_311 +409 val_409 +409 val_409 +409 val_409 +484 val_484 +484 val_484 +484 val_484 +86 val_86 +86 val_86 +86 val_86 +98 val_98 +98 val_98 +98 val_98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union34-8-b1e2ade89ae898650f0be4f796d8947b b/sql/hive/src/test/resources/golden/union34-8-b1e2ade89ae898650f0be4f796d8947b new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union34-8-b1e2ade89ae898650f0be4f796d8947b @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union34-9-d82ffe361a119651bbf41a149b6eba91 b/sql/hive/src/test/resources/golden/union34-9-d82ffe361a119651bbf41a149b6eba91 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union4-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union4-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union4-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union4-1-88deb3987655dc41989f39c0827cec74 b/sql/hive/src/test/resources/golden/union4-1-88deb3987655dc41989f39c0827cec74 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union4-2-41739c4bd273f0cfa94b347c36a71f38 b/sql/hive/src/test/resources/golden/union4-2-41739c4bd273f0cfa94b347c36a71f38 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union4-3-2fb47e6ec0a780da5bda97752e573c0b b/sql/hive/src/test/resources/golden/union4-3-2fb47e6ec0a780da5bda97752e573c0b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union4-4-7f83822f19aa9b973198fe4c42c66856 b/sql/hive/src/test/resources/golden/union4-4-7f83822f19aa9b973198fe4c42c66856 new file mode 100644 index 0000000000000..948aca9180ba9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union4-4-7f83822f19aa9b973198fe4c42c66856 @@ -0,0 +1,2 @@ +tst1 500 +tst2 500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union5-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union5-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union5-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union5-1-54c6369ded20ba12138e6c53a157dae8 b/sql/hive/src/test/resources/golden/union5-1-54c6369ded20ba12138e6c53a157dae8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union5-2-2c19c8d564b010eeb42deee63d66a292 b/sql/hive/src/test/resources/golden/union5-2-2c19c8d564b010eeb42deee63d66a292 new file mode 100644 index 0000000000000..c0c7d9f5e8ef5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union5-2-2c19c8d564b010eeb42deee63d66a292 @@ -0,0 +1,2 @@ +tst1 1 +tst2 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union6-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union6-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union6-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union6-1-7d631b7dbfe39ccaf995e16186b3e94d b/sql/hive/src/test/resources/golden/union6-1-7d631b7dbfe39ccaf995e16186b3e94d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union6-2-31cbd867e4b88605d230c542af64b7c4 b/sql/hive/src/test/resources/golden/union6-2-31cbd867e4b88605d230c542af64b7c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union6-3-c39f37580f6b3cecbcf3192ee0cd2aa9 b/sql/hive/src/test/resources/golden/union6-3-c39f37580f6b3cecbcf3192ee0cd2aa9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union6-4-a03959cc5aaa8f6521a73e6dae04cd15 b/sql/hive/src/test/resources/golden/union6-4-a03959cc5aaa8f6521a73e6dae04cd15 new file mode 100644 index 0000000000000..b5e91e032212a --- /dev/null +++ b/sql/hive/src/test/resources/golden/union6-4-a03959cc5aaa8f6521a73e6dae04cd15 @@ -0,0 +1,26 @@ +NULL +NULL +NULL +NULL +NULL val_165 +NULL val_193 +NULL val_265 +NULL val_27 +NULL val_409 +NULL val_484 +128 +146 val_146 +150 val_150 +213 val_213 +224 +238 val_238 +255 val_255 +273 val_273 +278 val_278 +311 val_311 +369 +401 val_401 +406 val_406 +66 val_66 +98 val_98 +tst1 500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union7-0-863233ccd616401efb4bf83c4b9e3a52 b/sql/hive/src/test/resources/golden/union7-0-863233ccd616401efb4bf83c4b9e3a52 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union7-0-863233ccd616401efb4bf83c4b9e3a52 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union7-1-f449f20f6bfc4f038c79c3b7e8f48c37 b/sql/hive/src/test/resources/golden/union7-1-f449f20f6bfc4f038c79c3b7e8f48c37 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union7-2-55d6e503a281acf3289a7874c0fba3f5 b/sql/hive/src/test/resources/golden/union7-2-55d6e503a281acf3289a7874c0fba3f5 new file mode 100644 index 0000000000000..07f67df79dcbd --- /dev/null +++ b/sql/hive/src/test/resources/golden/union7-2-55d6e503a281acf3289a7874c0fba3f5 @@ -0,0 +1,17 @@ +NULL 10 +128 1 +146 1 +150 1 +213 1 +224 1 +238 1 +255 1 +273 1 +278 1 +311 1 +369 1 +401 1 +406 1 +66 1 +98 1 +tst1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union8-0-d0a83a1cedcbd1d2158acf7eb938d18e b/sql/hive/src/test/resources/golden/union8-0-d0a83a1cedcbd1d2158acf7eb938d18e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union8-1-1b422e4c1c8b97775518f760b995c771 b/sql/hive/src/test/resources/golden/union8-1-1b422e4c1c8b97775518f760b995c771 new file mode 100644 index 0000000000000..3617909902993 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union8-1-1b422e4c1c8b97775518f760b995c771 @@ -0,0 +1,1500 @@ +238 val_238 +238 val_238 +238 val_238 +86 val_86 +86 val_86 +86 val_86 +311 val_311 +311 val_311 +311 val_311 +27 val_27 +27 val_27 +27 val_27 +165 val_165 +165 val_165 +165 val_165 +409 val_409 +409 val_409 +409 val_409 +255 val_255 +255 val_255 +255 val_255 +278 val_278 +278 val_278 +278 val_278 +98 val_98 +98 val_98 +98 val_98 +484 val_484 +484 val_484 +484 val_484 +265 val_265 +265 val_265 +265 val_265 +193 val_193 +193 val_193 +193 val_193 +401 val_401 +401 val_401 +401 val_401 +150 val_150 +150 val_150 +150 val_150 +273 val_273 +273 val_273 +273 val_273 +224 val_224 +224 val_224 +224 val_224 +369 val_369 +369 val_369 +369 val_369 +66 val_66 +66 val_66 +66 val_66 +128 val_128 +128 val_128 +128 val_128 +213 val_213 +213 val_213 +213 val_213 +146 val_146 +146 val_146 +146 val_146 +406 val_406 +406 val_406 +406 val_406 +429 val_429 +429 val_429 +429 val_429 +374 val_374 +374 val_374 +374 val_374 +152 val_152 +152 val_152 +152 val_152 +469 val_469 +469 val_469 +469 val_469 +145 val_145 +145 val_145 +145 val_145 +495 val_495 +495 val_495 +495 val_495 +37 val_37 +37 val_37 +37 val_37 +327 val_327 +327 val_327 +327 val_327 +281 val_281 +281 val_281 +281 val_281 +277 val_277 +277 val_277 +277 val_277 +209 val_209 +209 val_209 +209 val_209 +15 val_15 +15 val_15 +15 val_15 +82 val_82 +82 val_82 +82 val_82 +403 val_403 +403 val_403 +403 val_403 +166 val_166 +166 val_166 +166 val_166 +417 val_417 +417 val_417 +417 val_417 +430 val_430 +430 val_430 +430 val_430 +252 val_252 +252 val_252 +252 val_252 +292 val_292 +292 val_292 +292 val_292 +219 val_219 +219 val_219 +219 val_219 +287 val_287 +287 val_287 +287 val_287 +153 val_153 +153 val_153 +153 val_153 +193 val_193 +193 val_193 +193 val_193 +338 val_338 +338 val_338 +338 val_338 +446 val_446 +446 val_446 +446 val_446 +459 val_459 +459 val_459 +459 val_459 +394 val_394 +394 val_394 +394 val_394 +237 val_237 +237 val_237 +237 val_237 +482 val_482 +482 val_482 +482 val_482 +174 val_174 +174 val_174 +174 val_174 +413 val_413 +413 val_413 +413 val_413 +494 val_494 +494 val_494 +494 val_494 +207 val_207 +207 val_207 +207 val_207 +199 val_199 +199 val_199 +199 val_199 +466 val_466 +466 val_466 +466 val_466 +208 val_208 +208 val_208 +208 val_208 +174 val_174 +174 val_174 +174 val_174 +399 val_399 +399 val_399 +399 val_399 +396 val_396 +396 val_396 +396 val_396 +247 val_247 +247 val_247 +247 val_247 +417 val_417 +417 val_417 +417 val_417 +489 val_489 +489 val_489 +489 val_489 +162 val_162 +162 val_162 +162 val_162 +377 val_377 +377 val_377 +377 val_377 +397 val_397 +397 val_397 +397 val_397 +309 val_309 +309 val_309 +309 val_309 +365 val_365 +365 val_365 +365 val_365 +266 val_266 +266 val_266 +266 val_266 +439 val_439 +439 val_439 +439 val_439 +342 val_342 +342 val_342 +342 val_342 +367 val_367 +367 val_367 +367 val_367 +325 val_325 +325 val_325 +325 val_325 +167 val_167 +167 val_167 +167 val_167 +195 val_195 +195 val_195 +195 val_195 +475 val_475 +475 val_475 +475 val_475 +17 val_17 +17 val_17 +17 val_17 +113 val_113 +113 val_113 +113 val_113 +155 val_155 +155 val_155 +155 val_155 +203 val_203 +203 val_203 +203 val_203 +339 val_339 +339 val_339 +339 val_339 +0 val_0 +0 val_0 +0 val_0 +455 val_455 +455 val_455 +455 val_455 +128 val_128 +128 val_128 +128 val_128 +311 val_311 +311 val_311 +311 val_311 +316 val_316 +316 val_316 +316 val_316 +57 val_57 +57 val_57 +57 val_57 +302 val_302 +302 val_302 +302 val_302 +205 val_205 +205 val_205 +205 val_205 +149 val_149 +149 val_149 +149 val_149 +438 val_438 +438 val_438 +438 val_438 +345 val_345 +345 val_345 +345 val_345 +129 val_129 +129 val_129 +129 val_129 +170 val_170 +170 val_170 +170 val_170 +20 val_20 +20 val_20 +20 val_20 +489 val_489 +489 val_489 +489 val_489 +157 val_157 +157 val_157 +157 val_157 +378 val_378 +378 val_378 +378 val_378 +221 val_221 +221 val_221 +221 val_221 +92 val_92 +92 val_92 +92 val_92 +111 val_111 +111 val_111 +111 val_111 +47 val_47 +47 val_47 +47 val_47 +72 val_72 +72 val_72 +72 val_72 +4 val_4 +4 val_4 +4 val_4 +280 val_280 +280 val_280 +280 val_280 +35 val_35 +35 val_35 +35 val_35 +427 val_427 +427 val_427 +427 val_427 +277 val_277 +277 val_277 +277 val_277 +208 val_208 +208 val_208 +208 val_208 +356 val_356 +356 val_356 +356 val_356 +399 val_399 +399 val_399 +399 val_399 +169 val_169 +169 val_169 +169 val_169 +382 val_382 +382 val_382 +382 val_382 +498 val_498 +498 val_498 +498 val_498 +125 val_125 +125 val_125 +125 val_125 +386 val_386 +386 val_386 +386 val_386 +437 val_437 +437 val_437 +437 val_437 +469 val_469 +469 val_469 +469 val_469 +192 val_192 +192 val_192 +192 val_192 +286 val_286 +286 val_286 +286 val_286 +187 val_187 +187 val_187 +187 val_187 +176 val_176 +176 val_176 +176 val_176 +54 val_54 +54 val_54 +54 val_54 +459 val_459 +459 val_459 +459 val_459 +51 val_51 +51 val_51 +51 val_51 +138 val_138 +138 val_138 +138 val_138 +103 val_103 +103 val_103 +103 val_103 +239 val_239 +239 val_239 +239 val_239 +213 val_213 +213 val_213 +213 val_213 +216 val_216 +216 val_216 +216 val_216 +430 val_430 +430 val_430 +430 val_430 +278 val_278 +278 val_278 +278 val_278 +176 val_176 +176 val_176 +176 val_176 +289 val_289 +289 val_289 +289 val_289 +221 val_221 +221 val_221 +221 val_221 +65 val_65 +65 val_65 +65 val_65 +318 val_318 +318 val_318 +318 val_318 +332 val_332 +332 val_332 +332 val_332 +311 val_311 +311 val_311 +311 val_311 +275 val_275 +275 val_275 +275 val_275 +137 val_137 +137 val_137 +137 val_137 +241 val_241 +241 val_241 +241 val_241 +83 val_83 +83 val_83 +83 val_83 +333 val_333 +333 val_333 +333 val_333 +180 val_180 +180 val_180 +180 val_180 +284 val_284 +284 val_284 +284 val_284 +12 val_12 +12 val_12 +12 val_12 +230 val_230 +230 val_230 +230 val_230 +181 val_181 +181 val_181 +181 val_181 +67 val_67 +67 val_67 +67 val_67 +260 val_260 +260 val_260 +260 val_260 +404 val_404 +404 val_404 +404 val_404 +384 val_384 +384 val_384 +384 val_384 +489 val_489 +489 val_489 +489 val_489 +353 val_353 +353 val_353 +353 val_353 +373 val_373 +373 val_373 +373 val_373 +272 val_272 +272 val_272 +272 val_272 +138 val_138 +138 val_138 +138 val_138 +217 val_217 +217 val_217 +217 val_217 +84 val_84 +84 val_84 +84 val_84 +348 val_348 +348 val_348 +348 val_348 +466 val_466 +466 val_466 +466 val_466 +58 val_58 +58 val_58 +58 val_58 +8 val_8 +8 val_8 +8 val_8 +411 val_411 +411 val_411 +411 val_411 +230 val_230 +230 val_230 +230 val_230 +208 val_208 +208 val_208 +208 val_208 +348 val_348 +348 val_348 +348 val_348 +24 val_24 +24 val_24 +24 val_24 +463 val_463 +463 val_463 +463 val_463 +431 val_431 +431 val_431 +431 val_431 +179 val_179 +179 val_179 +179 val_179 +172 val_172 +172 val_172 +172 val_172 +42 val_42 +42 val_42 +42 val_42 +129 val_129 +129 val_129 +129 val_129 +158 val_158 +158 val_158 +158 val_158 +119 val_119 +119 val_119 +119 val_119 +496 val_496 +496 val_496 +496 val_496 +0 val_0 +0 val_0 +0 val_0 +322 val_322 +322 val_322 +322 val_322 +197 val_197 +197 val_197 +197 val_197 +468 val_468 +468 val_468 +468 val_468 +393 val_393 +393 val_393 +393 val_393 +454 val_454 +454 val_454 +454 val_454 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +199 val_199 +199 val_199 +199 val_199 +191 val_191 +191 val_191 +191 val_191 +418 val_418 +418 val_418 +418 val_418 +96 val_96 +96 val_96 +96 val_96 +26 val_26 +26 val_26 +26 val_26 +165 val_165 +165 val_165 +165 val_165 +327 val_327 +327 val_327 +327 val_327 +230 val_230 +230 val_230 +230 val_230 +205 val_205 +205 val_205 +205 val_205 +120 val_120 +120 val_120 +120 val_120 +131 val_131 +131 val_131 +131 val_131 +51 val_51 +51 val_51 +51 val_51 +404 val_404 +404 val_404 +404 val_404 +43 val_43 +43 val_43 +43 val_43 +436 val_436 +436 val_436 +436 val_436 +156 val_156 +156 val_156 +156 val_156 +469 val_469 +469 val_469 +469 val_469 +468 val_468 +468 val_468 +468 val_468 +308 val_308 +308 val_308 +308 val_308 +95 val_95 +95 val_95 +95 val_95 +196 val_196 +196 val_196 +196 val_196 +288 val_288 +288 val_288 +288 val_288 +481 val_481 +481 val_481 +481 val_481 +457 val_457 +457 val_457 +457 val_457 +98 val_98 +98 val_98 +98 val_98 +282 val_282 +282 val_282 +282 val_282 +197 val_197 +197 val_197 +197 val_197 +187 val_187 +187 val_187 +187 val_187 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +318 val_318 +409 val_409 +409 val_409 +409 val_409 +470 val_470 +470 val_470 +470 val_470 +137 val_137 +137 val_137 +137 val_137 +369 val_369 +369 val_369 +369 val_369 +316 val_316 +316 val_316 +316 val_316 +169 val_169 +169 val_169 +169 val_169 +413 val_413 +413 val_413 +413 val_413 +85 val_85 +85 val_85 +85 val_85 +77 val_77 +77 val_77 +77 val_77 +0 val_0 +0 val_0 +0 val_0 +490 val_490 +490 val_490 +490 val_490 +87 val_87 +87 val_87 +87 val_87 +364 val_364 +364 val_364 +364 val_364 +179 val_179 +179 val_179 +179 val_179 +118 val_118 +118 val_118 +118 val_118 +134 val_134 +134 val_134 +134 val_134 +395 val_395 +395 val_395 +395 val_395 +282 val_282 +282 val_282 +282 val_282 +138 val_138 +138 val_138 +138 val_138 +238 val_238 +238 val_238 +238 val_238 +419 val_419 +419 val_419 +419 val_419 +15 val_15 +15 val_15 +15 val_15 +118 val_118 +118 val_118 +118 val_118 +72 val_72 +72 val_72 +72 val_72 +90 val_90 +90 val_90 +90 val_90 +307 val_307 +307 val_307 +307 val_307 +19 val_19 +19 val_19 +19 val_19 +435 val_435 +435 val_435 +435 val_435 +10 val_10 +10 val_10 +10 val_10 +277 val_277 +277 val_277 +277 val_277 +273 val_273 +273 val_273 +273 val_273 +306 val_306 +306 val_306 +306 val_306 +224 val_224 +224 val_224 +224 val_224 +309 val_309 +309 val_309 +309 val_309 +389 val_389 +389 val_389 +389 val_389 +327 val_327 +327 val_327 +327 val_327 +242 val_242 +242 val_242 +242 val_242 +369 val_369 +369 val_369 +369 val_369 +392 val_392 +392 val_392 +392 val_392 +272 val_272 +272 val_272 +272 val_272 +331 val_331 +331 val_331 +331 val_331 +401 val_401 +401 val_401 +401 val_401 +242 val_242 +242 val_242 +242 val_242 +452 val_452 +452 val_452 +452 val_452 +177 val_177 +177 val_177 +177 val_177 +226 val_226 +226 val_226 +226 val_226 +5 val_5 +5 val_5 +5 val_5 +497 val_497 +497 val_497 +497 val_497 +402 val_402 +402 val_402 +402 val_402 +396 val_396 +396 val_396 +396 val_396 +317 val_317 +317 val_317 +317 val_317 +395 val_395 +395 val_395 +395 val_395 +58 val_58 +58 val_58 +58 val_58 +35 val_35 +35 val_35 +35 val_35 +336 val_336 +336 val_336 +336 val_336 +95 val_95 +95 val_95 +95 val_95 +11 val_11 +11 val_11 +11 val_11 +168 val_168 +168 val_168 +168 val_168 +34 val_34 +34 val_34 +34 val_34 +229 val_229 +229 val_229 +229 val_229 +233 val_233 +233 val_233 +233 val_233 +143 val_143 +143 val_143 +143 val_143 +472 val_472 +472 val_472 +472 val_472 +322 val_322 +322 val_322 +322 val_322 +498 val_498 +498 val_498 +498 val_498 +160 val_160 +160 val_160 +160 val_160 +195 val_195 +195 val_195 +195 val_195 +42 val_42 +42 val_42 +42 val_42 +321 val_321 +321 val_321 +321 val_321 +430 val_430 +430 val_430 +430 val_430 +119 val_119 +119 val_119 +119 val_119 +489 val_489 +489 val_489 +489 val_489 +458 val_458 +458 val_458 +458 val_458 +78 val_78 +78 val_78 +78 val_78 +76 val_76 +76 val_76 +76 val_76 +41 val_41 +41 val_41 +41 val_41 +223 val_223 +223 val_223 +223 val_223 +492 val_492 +492 val_492 +492 val_492 +149 val_149 +149 val_149 +149 val_149 +449 val_449 +449 val_449 +449 val_449 +218 val_218 +218 val_218 +218 val_218 +228 val_228 +228 val_228 +228 val_228 +138 val_138 +138 val_138 +138 val_138 +453 val_453 +453 val_453 +453 val_453 +30 val_30 +30 val_30 +30 val_30 +209 val_209 +209 val_209 +209 val_209 +64 val_64 +64 val_64 +64 val_64 +468 val_468 +468 val_468 +468 val_468 +76 val_76 +76 val_76 +76 val_76 +74 val_74 +74 val_74 +74 val_74 +342 val_342 +342 val_342 +342 val_342 +69 val_69 +69 val_69 +69 val_69 +230 val_230 +230 val_230 +230 val_230 +33 val_33 +33 val_33 +33 val_33 +368 val_368 +368 val_368 +368 val_368 +103 val_103 +103 val_103 +103 val_103 +296 val_296 +296 val_296 +296 val_296 +113 val_113 +113 val_113 +113 val_113 +216 val_216 +216 val_216 +216 val_216 +367 val_367 +367 val_367 +367 val_367 +344 val_344 +344 val_344 +344 val_344 +167 val_167 +167 val_167 +167 val_167 +274 val_274 +274 val_274 +274 val_274 +219 val_219 +219 val_219 +219 val_219 +239 val_239 +239 val_239 +239 val_239 +485 val_485 +485 val_485 +485 val_485 +116 val_116 +116 val_116 +116 val_116 +223 val_223 +223 val_223 +223 val_223 +256 val_256 +256 val_256 +256 val_256 +263 val_263 +263 val_263 +263 val_263 +70 val_70 +70 val_70 +70 val_70 +487 val_487 +487 val_487 +487 val_487 +480 val_480 +480 val_480 +480 val_480 +401 val_401 +401 val_401 +401 val_401 +288 val_288 +288 val_288 +288 val_288 +191 val_191 +191 val_191 +191 val_191 +5 val_5 +5 val_5 +5 val_5 +244 val_244 +244 val_244 +244 val_244 +438 val_438 +438 val_438 +438 val_438 +128 val_128 +128 val_128 +128 val_128 +467 val_467 +467 val_467 +467 val_467 +432 val_432 +432 val_432 +432 val_432 +202 val_202 +202 val_202 +202 val_202 +316 val_316 +316 val_316 +316 val_316 +229 val_229 +229 val_229 +229 val_229 +469 val_469 +469 val_469 +469 val_469 +463 val_463 +463 val_463 +463 val_463 +280 val_280 +280 val_280 +280 val_280 +2 val_2 +2 val_2 +2 val_2 +35 val_35 +35 val_35 +35 val_35 +283 val_283 +283 val_283 +283 val_283 +331 val_331 +331 val_331 +331 val_331 +235 val_235 +235 val_235 +235 val_235 +80 val_80 +80 val_80 +80 val_80 +44 val_44 +44 val_44 +44 val_44 +193 val_193 +193 val_193 +193 val_193 +321 val_321 +321 val_321 +321 val_321 +335 val_335 +335 val_335 +335 val_335 +104 val_104 +104 val_104 +104 val_104 +466 val_466 +466 val_466 +466 val_466 +366 val_366 +366 val_366 +366 val_366 +175 val_175 +175 val_175 +175 val_175 +403 val_403 +403 val_403 +403 val_403 +483 val_483 +483 val_483 +483 val_483 +53 val_53 +53 val_53 +53 val_53 +105 val_105 +105 val_105 +105 val_105 +257 val_257 +257 val_257 +257 val_257 +406 val_406 +406 val_406 +406 val_406 +409 val_409 +409 val_409 +409 val_409 +190 val_190 +190 val_190 +190 val_190 +406 val_406 +406 val_406 +406 val_406 +401 val_401 +401 val_401 +401 val_401 +114 val_114 +114 val_114 +114 val_114 +258 val_258 +258 val_258 +258 val_258 +90 val_90 +90 val_90 +90 val_90 +203 val_203 +203 val_203 +203 val_203 +262 val_262 +262 val_262 +262 val_262 +348 val_348 +348 val_348 +348 val_348 +424 val_424 +424 val_424 +424 val_424 +12 val_12 +12 val_12 +12 val_12 +396 val_396 +396 val_396 +396 val_396 +201 val_201 +201 val_201 +201 val_201 +217 val_217 +217 val_217 +217 val_217 +164 val_164 +164 val_164 +164 val_164 +431 val_431 +431 val_431 +431 val_431 +454 val_454 +454 val_454 +454 val_454 +478 val_478 +478 val_478 +478 val_478 +298 val_298 +298 val_298 +298 val_298 +125 val_125 +125 val_125 +125 val_125 +431 val_431 +431 val_431 +431 val_431 +164 val_164 +164 val_164 +164 val_164 +424 val_424 +424 val_424 +424 val_424 +187 val_187 +187 val_187 +187 val_187 +382 val_382 +382 val_382 +382 val_382 +5 val_5 +5 val_5 +5 val_5 +70 val_70 +70 val_70 +70 val_70 +397 val_397 +397 val_397 +397 val_397 +480 val_480 +480 val_480 +480 val_480 +291 val_291 +291 val_291 +291 val_291 +24 val_24 +24 val_24 +24 val_24 +351 val_351 +351 val_351 +351 val_351 +255 val_255 +255 val_255 +255 val_255 +104 val_104 +104 val_104 +104 val_104 +70 val_70 +70 val_70 +70 val_70 +163 val_163 +163 val_163 +163 val_163 +438 val_438 +438 val_438 +438 val_438 +119 val_119 +119 val_119 +119 val_119 +414 val_414 +414 val_414 +414 val_414 +200 val_200 +200 val_200 +200 val_200 +491 val_491 +491 val_491 +491 val_491 +237 val_237 +237 val_237 +237 val_237 +439 val_439 +439 val_439 +439 val_439 +360 val_360 +360 val_360 +360 val_360 +248 val_248 +248 val_248 +248 val_248 +479 val_479 +479 val_479 +479 val_479 +305 val_305 +305 val_305 +305 val_305 +417 val_417 +417 val_417 +417 val_417 +199 val_199 +199 val_199 +199 val_199 +444 val_444 +444 val_444 +444 val_444 +120 val_120 +120 val_120 +120 val_120 +429 val_429 +429 val_429 +429 val_429 +169 val_169 +169 val_169 +169 val_169 +443 val_443 +443 val_443 +443 val_443 +323 val_323 +323 val_323 +323 val_323 +325 val_325 +325 val_325 +325 val_325 +277 val_277 +277 val_277 +277 val_277 +230 val_230 +230 val_230 +230 val_230 +478 val_478 +478 val_478 +478 val_478 +178 val_178 +178 val_178 +178 val_178 +468 val_468 +468 val_468 +468 val_468 +310 val_310 +310 val_310 +310 val_310 +317 val_317 +317 val_317 +317 val_317 +333 val_333 +333 val_333 +333 val_333 +493 val_493 +493 val_493 +493 val_493 +460 val_460 +460 val_460 +460 val_460 +207 val_207 +207 val_207 +207 val_207 +249 val_249 +249 val_249 +249 val_249 +265 val_265 +265 val_265 +265 val_265 +480 val_480 +480 val_480 +480 val_480 +83 val_83 +83 val_83 +83 val_83 +136 val_136 +136 val_136 +136 val_136 +353 val_353 +353 val_353 +353 val_353 +172 val_172 +172 val_172 +172 val_172 +214 val_214 +214 val_214 +214 val_214 +462 val_462 +462 val_462 +462 val_462 +233 val_233 +233 val_233 +233 val_233 +406 val_406 +406 val_406 +406 val_406 +133 val_133 +133 val_133 +133 val_133 +175 val_175 +175 val_175 +175 val_175 +189 val_189 +189 val_189 +189 val_189 +454 val_454 +454 val_454 +454 val_454 +375 val_375 +375 val_375 +375 val_375 +401 val_401 +401 val_401 +401 val_401 +421 val_421 +421 val_421 +421 val_421 +407 val_407 +407 val_407 +407 val_407 +384 val_384 +384 val_384 +384 val_384 +256 val_256 +256 val_256 +256 val_256 +26 val_26 +26 val_26 +26 val_26 +134 val_134 +134 val_134 +134 val_134 +67 val_67 +67 val_67 +67 val_67 +384 val_384 +384 val_384 +384 val_384 +379 val_379 +379 val_379 +379 val_379 +18 val_18 +18 val_18 +18 val_18 +462 val_462 +462 val_462 +462 val_462 +492 val_492 +492 val_492 +492 val_492 +100 val_100 +100 val_100 +100 val_100 +298 val_298 +298 val_298 +298 val_298 +9 val_9 +9 val_9 +9 val_9 +341 val_341 +341 val_341 +341 val_341 +498 val_498 +498 val_498 +498 val_498 +146 val_146 +146 val_146 +146 val_146 +458 val_458 +458 val_458 +458 val_458 +362 val_362 +362 val_362 +362 val_362 +186 val_186 +186 val_186 +186 val_186 +285 val_285 +285 val_285 +285 val_285 +348 val_348 +348 val_348 +348 val_348 +167 val_167 +167 val_167 +167 val_167 +18 val_18 +18 val_18 +18 val_18 +273 val_273 +273 val_273 +273 val_273 +183 val_183 +183 val_183 +183 val_183 +281 val_281 +281 val_281 +281 val_281 +344 val_344 +344 val_344 +344 val_344 +97 val_97 +97 val_97 +97 val_97 +469 val_469 +469 val_469 +469 val_469 +315 val_315 +315 val_315 +315 val_315 +84 val_84 +84 val_84 +84 val_84 +28 val_28 +28 val_28 +28 val_28 +37 val_37 +37 val_37 +37 val_37 +448 val_448 +448 val_448 +448 val_448 +152 val_152 +152 val_152 +152 val_152 +348 val_348 +348 val_348 +348 val_348 +307 val_307 +307 val_307 +307 val_307 +194 val_194 +194 val_194 +194 val_194 +414 val_414 +414 val_414 +414 val_414 +477 val_477 +477 val_477 +477 val_477 +222 val_222 +222 val_222 +222 val_222 +126 val_126 +126 val_126 +126 val_126 +90 val_90 +90 val_90 +90 val_90 +169 val_169 +169 val_169 +169 val_169 +403 val_403 +403 val_403 +403 val_403 +400 val_400 +400 val_400 +400 val_400 +200 val_200 +200 val_200 +200 val_200 +97 val_97 +97 val_97 +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union9-0-fad6a053ab42c3cad89052e88d819e83 b/sql/hive/src/test/resources/golden/union9-0-fad6a053ab42c3cad89052e88d819e83 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union9-1-a77ee9f723b3b17a3a02164c5d0000c1 b/sql/hive/src/test/resources/golden/union9-1-a77ee9f723b3b17a3a02164c5d0000c1 new file mode 100644 index 0000000000000..37021f4a27201 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union9-1-a77ee9f723b3b17a3a02164c5d0000c1 @@ -0,0 +1 @@ +1500 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_date-0-a0bade1c77338d4f72962389a1f5bea2 b/sql/hive/src/test/resources/golden/union_date-0-a0bade1c77338d4f72962389a1f5bea2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_date-1-21306adbd8be8ad75174ad9d3e42b73c b/sql/hive/src/test/resources/golden/union_date-1-21306adbd8be8ad75174ad9d3e42b73c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_date-2-b386e4435da29e7e240893639c6dd9c4 b/sql/hive/src/test/resources/golden/union_date-2-b386e4435da29e7e240893639c6dd9c4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_date-3-f0f678c9032603ca0ae729a31c8c9d38 b/sql/hive/src/test/resources/golden/union_date-3-f0f678c9032603ca0ae729a31c8c9d38 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_date-4-d812f7feef3b6857aeca9007f0af44c b/sql/hive/src/test/resources/golden/union_date-4-d812f7feef3b6857aeca9007f0af44c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_date-5-b54839e0200bec94aa751fec8c5dbd3d b/sql/hive/src/test/resources/golden/union_date-5-b54839e0200bec94aa751fec8c5dbd3d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_lateralview-0-fbcc72d0cd912977292df8a9e55a4e98 b/sql/hive/src/test/resources/golden/union_lateralview-0-fbcc72d0cd912977292df8a9e55a4e98 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_lateralview-1-55dc0ec224133e4714291cc13a7a8ce0 b/sql/hive/src/test/resources/golden/union_lateralview-1-55dc0ec224133e4714291cc13a7a8ce0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_lateralview-2-2252a6cc9b8af3e9c6eb12d470072339 b/sql/hive/src/test/resources/golden/union_lateralview-2-2252a6cc9b8af3e9c6eb12d470072339 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_lateralview-3-97ea99689397f6e0c8b07d598dd9c042 b/sql/hive/src/test/resources/golden/union_lateralview-3-97ea99689397f6e0c8b07d598dd9c042 new file mode 100644 index 0000000000000..71bb7c3ad9311 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_lateralview-3-97ea99689397f6e0c8b07d598dd9c042 @@ -0,0 +1,20 @@ +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 1 val_0 +0 2 val_0 +0 2 val_0 diff --git a/sql/hive/src/test/resources/golden/union_null-0-27e98c4939abf1ad4445b4e715b0262a b/sql/hive/src/test/resources/golden/union_null-0-27e98c4939abf1ad4445b4e715b0262a new file mode 100644 index 0000000000000..468f774ef5146 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_null-0-27e98c4939abf1ad4445b4e715b0262a @@ -0,0 +1,10 @@ +val_238 +NULL +val_86 +NULL +val_311 +NULL +val_27 +NULL +val_165 +NULL diff --git a/sql/hive/src/test/resources/golden/union_ppr-0-eadce09bf5dfa4849ed4536e04c0c32b b/sql/hive/src/test/resources/golden/union_ppr-0-eadce09bf5dfa4849ed4536e04c0c32b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_ppr-1-4d073ff9d6978f3c3be447920ab8daed b/sql/hive/src/test/resources/golden/union_ppr-1-4d073ff9d6978f3c3be447920ab8daed new file mode 100644 index 0000000000000..ed8993a9cbd0c --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_ppr-1-4d073ff9d6978f3c3be447920ab8daed @@ -0,0 +1,336 @@ +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 11 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +0 val_0 2008-04-08 12 +2 val_2 2008-04-08 11 +2 val_2 2008-04-08 11 +2 val_2 2008-04-08 12 +2 val_2 2008-04-08 12 +4 val_4 2008-04-08 11 +4 val_4 2008-04-08 11 +4 val_4 2008-04-08 12 +4 val_4 2008-04-08 12 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 11 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +5 val_5 2008-04-08 12 +8 val_8 2008-04-08 11 +8 val_8 2008-04-08 11 +8 val_8 2008-04-08 12 +8 val_8 2008-04-08 12 +9 val_9 2008-04-08 11 +9 val_9 2008-04-08 11 +9 val_9 2008-04-08 12 +9 val_9 2008-04-08 12 +10 val_10 2008-04-08 11 +10 val_10 2008-04-08 11 +10 val_10 2008-04-08 12 +10 val_10 2008-04-08 12 +11 val_11 2008-04-08 11 +11 val_11 2008-04-08 11 +11 val_11 2008-04-08 12 +11 val_11 2008-04-08 12 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 11 +12 val_12 2008-04-08 12 +12 val_12 2008-04-08 12 +12 val_12 2008-04-08 12 +12 val_12 2008-04-08 12 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 11 +15 val_15 2008-04-08 12 +15 val_15 2008-04-08 12 +15 val_15 2008-04-08 12 +15 val_15 2008-04-08 12 +17 val_17 2008-04-08 11 +17 val_17 2008-04-08 11 +17 val_17 2008-04-08 12 +17 val_17 2008-04-08 12 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 11 +18 val_18 2008-04-08 12 +18 val_18 2008-04-08 12 +18 val_18 2008-04-08 12 +18 val_18 2008-04-08 12 +19 val_19 2008-04-08 11 +19 val_19 2008-04-08 11 +19 val_19 2008-04-08 12 +19 val_19 2008-04-08 12 +20 val_20 2008-04-08 11 +20 val_20 2008-04-08 11 +20 val_20 2008-04-08 12 +20 val_20 2008-04-08 12 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 11 +24 val_24 2008-04-08 12 +24 val_24 2008-04-08 12 +24 val_24 2008-04-08 12 +24 val_24 2008-04-08 12 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 11 +26 val_26 2008-04-08 12 +26 val_26 2008-04-08 12 +26 val_26 2008-04-08 12 +26 val_26 2008-04-08 12 +27 val_27 2008-04-08 11 +27 val_27 2008-04-08 11 +27 val_27 2008-04-08 12 +27 val_27 2008-04-08 12 +28 val_28 2008-04-08 11 +28 val_28 2008-04-08 11 +28 val_28 2008-04-08 12 +28 val_28 2008-04-08 12 +30 val_30 2008-04-08 11 +30 val_30 2008-04-08 11 +30 val_30 2008-04-08 12 +30 val_30 2008-04-08 12 +33 val_33 2008-04-08 11 +33 val_33 2008-04-08 11 +33 val_33 2008-04-08 12 +33 val_33 2008-04-08 12 +34 val_34 2008-04-08 11 +34 val_34 2008-04-08 11 +34 val_34 2008-04-08 12 +34 val_34 2008-04-08 12 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 11 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +35 val_35 2008-04-08 12 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 11 +37 val_37 2008-04-08 12 +37 val_37 2008-04-08 12 +37 val_37 2008-04-08 12 +37 val_37 2008-04-08 12 +41 val_41 2008-04-08 11 +41 val_41 2008-04-08 11 +41 val_41 2008-04-08 12 +41 val_41 2008-04-08 12 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 11 +42 val_42 2008-04-08 12 +42 val_42 2008-04-08 12 +42 val_42 2008-04-08 12 +42 val_42 2008-04-08 12 +43 val_43 2008-04-08 11 +43 val_43 2008-04-08 11 +43 val_43 2008-04-08 12 +43 val_43 2008-04-08 12 +44 val_44 2008-04-08 11 +44 val_44 2008-04-08 11 +44 val_44 2008-04-08 12 +44 val_44 2008-04-08 12 +47 val_47 2008-04-08 11 +47 val_47 2008-04-08 11 +47 val_47 2008-04-08 12 +47 val_47 2008-04-08 12 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 11 +51 val_51 2008-04-08 12 +51 val_51 2008-04-08 12 +51 val_51 2008-04-08 12 +51 val_51 2008-04-08 12 +53 val_53 2008-04-08 11 +53 val_53 2008-04-08 11 +53 val_53 2008-04-08 12 +53 val_53 2008-04-08 12 +54 val_54 2008-04-08 11 +54 val_54 2008-04-08 11 +54 val_54 2008-04-08 12 +54 val_54 2008-04-08 12 +57 val_57 2008-04-08 11 +57 val_57 2008-04-08 11 +57 val_57 2008-04-08 12 +57 val_57 2008-04-08 12 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 11 +58 val_58 2008-04-08 12 +58 val_58 2008-04-08 12 +58 val_58 2008-04-08 12 +58 val_58 2008-04-08 12 +64 val_64 2008-04-08 11 +64 val_64 2008-04-08 11 +64 val_64 2008-04-08 12 +64 val_64 2008-04-08 12 +65 val_65 2008-04-08 11 +65 val_65 2008-04-08 11 +65 val_65 2008-04-08 12 +65 val_65 2008-04-08 12 +66 val_66 2008-04-08 11 +66 val_66 2008-04-08 11 +66 val_66 2008-04-08 12 +66 val_66 2008-04-08 12 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 11 +67 val_67 2008-04-08 12 +67 val_67 2008-04-08 12 +67 val_67 2008-04-08 12 +67 val_67 2008-04-08 12 +69 val_69 2008-04-08 11 +69 val_69 2008-04-08 11 +69 val_69 2008-04-08 12 +69 val_69 2008-04-08 12 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 11 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +70 val_70 2008-04-08 12 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 11 +72 val_72 2008-04-08 12 +72 val_72 2008-04-08 12 +72 val_72 2008-04-08 12 +72 val_72 2008-04-08 12 +74 val_74 2008-04-08 11 +74 val_74 2008-04-08 11 +74 val_74 2008-04-08 12 +74 val_74 2008-04-08 12 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 11 +76 val_76 2008-04-08 12 +76 val_76 2008-04-08 12 +76 val_76 2008-04-08 12 +76 val_76 2008-04-08 12 +77 val_77 2008-04-08 11 +77 val_77 2008-04-08 11 +77 val_77 2008-04-08 12 +77 val_77 2008-04-08 12 +78 val_78 2008-04-08 11 +78 val_78 2008-04-08 11 +78 val_78 2008-04-08 12 +78 val_78 2008-04-08 12 +80 val_80 2008-04-08 11 +80 val_80 2008-04-08 11 +80 val_80 2008-04-08 12 +80 val_80 2008-04-08 12 +82 val_82 2008-04-08 11 +82 val_82 2008-04-08 11 +82 val_82 2008-04-08 12 +82 val_82 2008-04-08 12 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 11 +83 val_83 2008-04-08 12 +83 val_83 2008-04-08 12 +83 val_83 2008-04-08 12 +83 val_83 2008-04-08 12 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 11 +84 val_84 2008-04-08 12 +84 val_84 2008-04-08 12 +84 val_84 2008-04-08 12 +84 val_84 2008-04-08 12 +85 val_85 2008-04-08 11 +85 val_85 2008-04-08 11 +85 val_85 2008-04-08 12 +85 val_85 2008-04-08 12 +86 val_86 2008-04-08 11 +86 val_86 2008-04-08 11 +86 val_86 2008-04-08 12 +86 val_86 2008-04-08 12 +87 val_87 2008-04-08 11 +87 val_87 2008-04-08 11 +87 val_87 2008-04-08 12 +87 val_87 2008-04-08 12 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 11 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +90 val_90 2008-04-08 12 +92 val_92 2008-04-08 11 +92 val_92 2008-04-08 11 +92 val_92 2008-04-08 12 +92 val_92 2008-04-08 12 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 11 +95 val_95 2008-04-08 12 +95 val_95 2008-04-08 12 +95 val_95 2008-04-08 12 +95 val_95 2008-04-08 12 +96 val_96 2008-04-08 11 +96 val_96 2008-04-08 11 +96 val_96 2008-04-08 12 +96 val_96 2008-04-08 12 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 11 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +97 val_97 2008-04-08 12 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 11 +98 val_98 2008-04-08 12 +98 val_98 2008-04-08 12 +98 val_98 2008-04-08 12 +98 val_98 2008-04-08 12 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_1-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_1-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_1-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_1-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-10-3ef350a0f7bbc1c54774e33dd54d9e46 b/sql/hive/src/test/resources/golden/union_remove_1-10-3ef350a0f7bbc1c54774e33dd54d9e46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_1-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_1-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..c203753d8e42d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_1-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string None +values bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:49:42 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069004 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_1-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_1-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_1-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_1-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_1-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_1-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_1-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_1-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_1-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_1-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_1-6-a6c043a89a9c3456af8ee065cb17239 b/sql/hive/src/test/resources/golden/union_remove_1-6-a6c043a89a9c3456af8ee065cb17239 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_1-7-48f70528347f5201f387d28dae37a14a b/sql/hive/src/test/resources/golden/union_remove_1-7-48f70528347f5201f387d28dae37a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_1-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_1-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_1-9-19865a08066d80cb069ae6312c465ee6 b/sql/hive/src/test/resources/golden/union_remove_1-9-19865a08066d80cb069ae6312c465ee6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_10-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_10-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_10-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-10-7eaf13bc61bd4b43f4da67c347768598 b/sql/hive/src/test/resources/golden/union_remove_10-10-7eaf13bc61bd4b43f4da67c347768598 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_10-11-b62595b91d2d9e03a010b49ab81725d5 b/sql/hive/src/test/resources/golden/union_remove_10-11-b62595b91d2d9e03a010b49ab81725d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_10-12-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_10-12-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..94a711cdab117 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-12-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:50:08 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069036 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-13-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_10-13-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-13-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_10-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-3-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_10-3-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-3-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-4-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_10-4-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-4-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-5-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_10-5-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-5-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-6-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_10-6-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_10-6-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_10-7-a7ba0436265932086d2a2e228356971 b/sql/hive/src/test/resources/golden/union_remove_10-7-a7ba0436265932086d2a2e228356971 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_10-8-68f30e8e5c05bbedbda95d88ab6f3ee2 b/sql/hive/src/test/resources/golden/union_remove_10-8-68f30e8e5c05bbedbda95d88ab6f3ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_10-9-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_10-9-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_11-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_11-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_11-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-10-9788525d32af3dccdefb459669f886c1 b/sql/hive/src/test/resources/golden/union_remove_11-10-9788525d32af3dccdefb459669f886c1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_11-11-42ecec4117d372551310ad1d85a9c09a b/sql/hive/src/test/resources/golden/union_remove_11-11-42ecec4117d372551310ad1d85a9c09a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_11-12-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_11-12-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..d9cfa9e952c3a --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-12-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 03 19:05:51 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5393816597631538368/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1388804758 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-13-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_11-13-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-13-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-14-e409e7032445097ace016b1876d95b3e b/sql/hive/src/test/resources/golden/union_remove_11-14-e409e7032445097ace016b1876d95b3e new file mode 100644 index 0000000000000..2817d74afee13 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-14-e409e7032445097ace016b1876d95b3e @@ -0,0 +1,18 @@ +1 1 +1 2 +1 3 +2 1 +2 2 +2 3 +3 1 +3 2 +3 3 +7 1 +7 2 +7 3 +8 1 +8 1 +8 2 +8 2 +8 3 +8 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_11-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-3-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_11-3-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-3-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-4-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_11-4-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-4-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-5-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_11-5-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-5-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-6-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_11-6-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_11-6-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_11-7-ba03d14418197f8ad6496d30c0c29a59 b/sql/hive/src/test/resources/golden/union_remove_11-7-ba03d14418197f8ad6496d30c0c29a59 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_11-8-68f30e8e5c05bbedbda95d88ab6f3ee2 b/sql/hive/src/test/resources/golden/union_remove_11-8-68f30e8e5c05bbedbda95d88ab6f3ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_11-9-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_11-9-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_12-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_12-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_12-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-10-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_12-10-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_12-11-a667f24e26435cd2a29fef0ee45bab3c b/sql/hive/src/test/resources/golden/union_remove_12-11-a667f24e26435cd2a29fef0ee45bab3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_12-12-c696750d8b7b65b00bf9d402cf7abaa5 b/sql/hive/src/test/resources/golden/union_remove_12-12-c696750d8b7b65b00bf9d402cf7abaa5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_12-13-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_12-13-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..57d5146698ee7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-13-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:50:41 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069061 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-14-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_12-14-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-14-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_12-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-3-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/union_remove_12-3-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-3-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-4-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_12-4-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-4-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-5-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_12-5-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-5-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-6-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_12-6-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-6-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-7-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_12-7-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_12-7-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_12-8-9dd030d38eece4630dec5951fc8a0622 b/sql/hive/src/test/resources/golden/union_remove_12-8-9dd030d38eece4630dec5951fc8a0622 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_12-9-68f30e8e5c05bbedbda95d88ab6f3ee2 b/sql/hive/src/test/resources/golden/union_remove_12-9-68f30e8e5c05bbedbda95d88ab6f3ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_13-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_13-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_13-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-10-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_13-10-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_13-11-ed5d1c2bfc3dd1b2f5321bc8800e69e8 b/sql/hive/src/test/resources/golden/union_remove_13-11-ed5d1c2bfc3dd1b2f5321bc8800e69e8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_13-12-27c0fa25c4f67fc1e0e113aca6dd47af b/sql/hive/src/test/resources/golden/union_remove_13-12-27c0fa25c4f67fc1e0e113aca6dd47af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_13-13-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_13-13-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..c914024c14c8e --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-13-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:51:05 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069086 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-14-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_13-14-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-14-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_13-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-3-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/union_remove_13-3-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-3-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-4-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_13-4-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-4-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-5-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_13-5-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-5-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-6-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_13-6-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-6-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-7-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_13-7-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_13-7-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_13-8-234ecbc3f8c0e4686d3586f81cf191eb b/sql/hive/src/test/resources/golden/union_remove_13-8-234ecbc3f8c0e4686d3586f81cf191eb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_13-9-68f30e8e5c05bbedbda95d88ab6f3ee2 b/sql/hive/src/test/resources/golden/union_remove_13-9-68f30e8e5c05bbedbda95d88ab6f3ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_14-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_14-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_14-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-10-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_14-10-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_14-11-a667f24e26435cd2a29fef0ee45bab3c b/sql/hive/src/test/resources/golden/union_remove_14-11-a667f24e26435cd2a29fef0ee45bab3c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_14-12-c696750d8b7b65b00bf9d402cf7abaa5 b/sql/hive/src/test/resources/golden/union_remove_14-12-c696750d8b7b65b00bf9d402cf7abaa5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_14-13-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_14-13-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..5a55428afbe1a --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-13-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:51:30 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069108 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-14-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_14-14-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-14-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_14-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-3-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_14-3-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-3-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-4-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_14-4-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-4-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-5-24ca942f094b14b92086305cc125e833 b/sql/hive/src/test/resources/golden/union_remove_14-5-24ca942f094b14b92086305cc125e833 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-5-24ca942f094b14b92086305cc125e833 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-6-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_14-6-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-6-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-7-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_14-7-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_14-7-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_14-8-ed33d620523b2634285698a83f433b6d b/sql/hive/src/test/resources/golden/union_remove_14-8-ed33d620523b2634285698a83f433b6d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_14-9-68f30e8e5c05bbedbda95d88ab6f3ee2 b/sql/hive/src/test/resources/golden/union_remove_14-9-68f30e8e5c05bbedbda95d88ab6f3ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_15-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_15-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_15-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-10-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_15-10-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_15-11-93b7341b523213ab6e58169459bc6818 b/sql/hive/src/test/resources/golden/union_remove_15-11-93b7341b523213ab6e58169459bc6818 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_15-12-616cc477ed00e691dbc2b310d1c6dd12 b/sql/hive/src/test/resources/golden/union_remove_15-12-616cc477ed00e691dbc2b310d1c6dd12 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_15-13-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_15-13-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..a2441e330ffc6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-13-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:51:52 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069112 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-14-37f9f7bc2d7456046a9f967347337e47 b/sql/hive/src/test/resources/golden/union_remove_15-14-37f9f7bc2d7456046a9f967347337e47 new file mode 100644 index 0000000000000..a58273a1b054e --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-14-37f9f7bc2d7456046a9f967347337e47 @@ -0,0 +1,2 @@ +ds=1 +ds=2 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-15-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_15-15-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-15-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_15-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_15-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_15-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-5-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/union_remove_15-5-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-5-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-6-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/union_remove_15-6-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-6-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-7-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_15-7-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_15-7-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_15-8-552c4eba867e7408fc8652ff0a19170d b/sql/hive/src/test/resources/golden/union_remove_15-8-552c4eba867e7408fc8652ff0a19170d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_15-9-a63925fb2aa8c5df6854c248e674b0ef b/sql/hive/src/test/resources/golden/union_remove_15-9-a63925fb2aa8c5df6854c248e674b0ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_16-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_16-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_16-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-10-a63925fb2aa8c5df6854c248e674b0ef b/sql/hive/src/test/resources/golden/union_remove_16-10-a63925fb2aa8c5df6854c248e674b0ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_16-11-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_16-11-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_16-12-93b7341b523213ab6e58169459bc6818 b/sql/hive/src/test/resources/golden/union_remove_16-12-93b7341b523213ab6e58169459bc6818 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_16-13-616cc477ed00e691dbc2b310d1c6dd12 b/sql/hive/src/test/resources/golden/union_remove_16-13-616cc477ed00e691dbc2b310d1c6dd12 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_16-14-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_16-14-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..bec8202dcbcad --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-14-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:52:19 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069139 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-15-37f9f7bc2d7456046a9f967347337e47 b/sql/hive/src/test/resources/golden/union_remove_16-15-37f9f7bc2d7456046a9f967347337e47 new file mode 100644 index 0000000000000..a58273a1b054e --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-15-37f9f7bc2d7456046a9f967347337e47 @@ -0,0 +1,2 @@ +ds=1 +ds=2 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-16-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_16-16-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-16-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_16-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-3-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_16-3-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-3-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-4-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_16-4-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-4-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-5-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_16-5-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-5-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-6-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_16-6-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-6-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-7-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/union_remove_16-7-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-7-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-8-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/union_remove_16-8-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_16-8-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_16-9-ec47ba0fc527a4a04d452a009d59147a b/sql/hive/src/test/resources/golden/union_remove_16-9-ec47ba0fc527a4a04d452a009d59147a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_17-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_17-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_17-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-10-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_17-10-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_17-11-a55dcc374cb69e225a4f1da56bbd7a68 b/sql/hive/src/test/resources/golden/union_remove_17-11-a55dcc374cb69e225a4f1da56bbd7a68 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_17-12-c91289e16ad403babfc91c093ac9b86d b/sql/hive/src/test/resources/golden/union_remove_17-12-c91289e16ad403babfc91c093ac9b86d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_17-13-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_17-13-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..d0b37e7625a64 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-13-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Tue Jan 14 14:38:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse4075462935071533647/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1389739098 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-14-37f9f7bc2d7456046a9f967347337e47 b/sql/hive/src/test/resources/golden/union_remove_17-14-37f9f7bc2d7456046a9f967347337e47 new file mode 100644 index 0000000000000..c21f4017362c1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-14-37f9f7bc2d7456046a9f967347337e47 @@ -0,0 +1,2 @@ +ds=1 +ds=2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-15-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_17-15-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-15-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-16-626a252f75285872c1d72706f7f972c6 b/sql/hive/src/test/resources/golden/union_remove_17-16-626a252f75285872c1d72706f7f972c6 new file mode 100644 index 0000000000000..1ab5c482feca9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-16-626a252f75285872c1d72706f7f972c6 @@ -0,0 +1,6 @@ +1 1 1 +2 1 1 +3 1 1 +7 1 1 +8 1 1 +8 1 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-17-1252985379f11ae4b98d2a0e2f121b8a b/sql/hive/src/test/resources/golden/union_remove_17-17-1252985379f11ae4b98d2a0e2f121b8a new file mode 100644 index 0000000000000..94ec062e2f4f3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-17-1252985379f11ae4b98d2a0e2f121b8a @@ -0,0 +1,6 @@ +1 2 2 +2 2 2 +3 2 2 +7 2 2 +8 2 2 +8 2 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_17-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_17-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_17-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-5-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/union_remove_17-5-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-5-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-6-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/union_remove_17-6-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-6-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-7-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_17-7-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_17-7-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_17-8-67e57f56d1106a57329bf75c491e3c8b b/sql/hive/src/test/resources/golden/union_remove_17-8-67e57f56d1106a57329bf75c491e3c8b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_17-9-a63925fb2aa8c5df6854c248e674b0ef b/sql/hive/src/test/resources/golden/union_remove_17-9-a63925fb2aa8c5df6854c248e674b0ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_18-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_18-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_18-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-10-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_18-10-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_18-11-37ae8e8b4f39f3ff5516afd44715c2ad b/sql/hive/src/test/resources/golden/union_remove_18-11-37ae8e8b4f39f3ff5516afd44715c2ad new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_18-12-461a24ba6c00f60d75afba62da2ac4f1 b/sql/hive/src/test/resources/golden/union_remove_18-12-461a24ba6c00f60d75afba62da2ac4f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_18-13-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_18-13-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..971e095df7be8 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-13-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,32 @@ +# col_name data_type comment + +key string None +values bigint None + +# Partition Information +# col_name data_type comment + +ds string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:52:47 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069167 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-14-37f9f7bc2d7456046a9f967347337e47 b/sql/hive/src/test/resources/golden/union_remove_18-14-37f9f7bc2d7456046a9f967347337e47 new file mode 100644 index 0000000000000..5690d94a65857 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-14-37f9f7bc2d7456046a9f967347337e47 @@ -0,0 +1,6 @@ +ds=11 +ds=12 +ds=13 +ds=17 +ds=18 +ds=28 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-15-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_18-15-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-15-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_18-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_18-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_18-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-5-16367c381d4b189b3640c92511244bfe b/sql/hive/src/test/resources/golden/union_remove_18-5-16367c381d4b189b3640c92511244bfe new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-5-16367c381d4b189b3640c92511244bfe @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-6-a4fb8359a2179ec70777aad6366071b7 b/sql/hive/src/test/resources/golden/union_remove_18-6-a4fb8359a2179ec70777aad6366071b7 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-6-a4fb8359a2179ec70777aad6366071b7 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-7-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_18-7-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_18-7-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_18-8-b1b996b2e72ca14150af7c82dbc6e139 b/sql/hive/src/test/resources/golden/union_remove_18-8-b1b996b2e72ca14150af7c82dbc6e139 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_18-9-ea467d0fee062a23c720cf47eacfef08 b/sql/hive/src/test/resources/golden/union_remove_18-9-ea467d0fee062a23c720cf47eacfef08 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_19-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_19-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_19-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_19-10-8d1e5af37e7992708bf15ab7d887405b b/sql/hive/src/test/resources/golden/union_remove_19-10-8d1e5af37e7992708bf15ab7d887405b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_19-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..0d0d3a30af36c --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string None +values bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:53:14 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069215 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_19-12-68e15b1729669c4cb2291dcabfea4387 b/sql/hive/src/test/resources/golden/union_remove_19-12-68e15b1729669c4cb2291dcabfea4387 new file mode 100644 index 0000000000000..719e4a7bd4dbb --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-12-68e15b1729669c4cb2291dcabfea4387 @@ -0,0 +1,10 @@ +1 1 +2 1 +3 1 +7 1 +8 2 +1 1 +2 1 +3 1 +7 1 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_19-13-b8b9df8f376df228e3c8ae65defe2801 b/sql/hive/src/test/resources/golden/union_remove_19-13-b8b9df8f376df228e3c8ae65defe2801 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-14-eed866a1ad3106a306322519f4bb52f2 b/sql/hive/src/test/resources/golden/union_remove_19-14-eed866a1ad3106a306322519f4bb52f2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-15-68e15b1729669c4cb2291dcabfea4387 b/sql/hive/src/test/resources/golden/union_remove_19-15-68e15b1729669c4cb2291dcabfea4387 new file mode 100644 index 0000000000000..361f2ab78eae3 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-15-68e15b1729669c4cb2291dcabfea4387 @@ -0,0 +1,2 @@ +7 1 +7 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_19-16-471f8e794fd712dce2e40334b383e08e b/sql/hive/src/test/resources/golden/union_remove_19-16-471f8e794fd712dce2e40334b383e08e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-17-ae0f7d5734ca67cbfebed70c4657e330 b/sql/hive/src/test/resources/golden/union_remove_19-17-ae0f7d5734ca67cbfebed70c4657e330 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-18-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_19-18-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-18-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_19-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_19-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_19-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_19-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_19-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_19-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_19-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_19-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_19-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_19-6-a6c043a89a9c3456af8ee065cb17239 b/sql/hive/src/test/resources/golden/union_remove_19-6-a6c043a89a9c3456af8ee065cb17239 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-7-48f70528347f5201f387d28dae37a14a b/sql/hive/src/test/resources/golden/union_remove_19-7-48f70528347f5201f387d28dae37a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_19-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_19-9-8a08edd1aa63fd3b051da82246793259 b/sql/hive/src/test/resources/golden/union_remove_19-9-8a08edd1aa63fd3b051da82246793259 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_2-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_2-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_2-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_2-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_2-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_2-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_2-10-2309570010c3e679b884c100de57d002 b/sql/hive/src/test/resources/golden/union_remove_2-10-2309570010c3e679b884c100de57d002 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_2-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_2-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..d3c821fa22182 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_2-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string None +values bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:53:36 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069242 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_2-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_2-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_2-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_2-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_2-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_2-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_2-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_2-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_2-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_2-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_2-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_2-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_2-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_2-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_2-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_2-6-1acf02741a2ff987d3e00ae9722c26e b/sql/hive/src/test/resources/golden/union_remove_2-6-1acf02741a2ff987d3e00ae9722c26e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_2-7-48f70528347f5201f387d28dae37a14a b/sql/hive/src/test/resources/golden/union_remove_2-7-48f70528347f5201f387d28dae37a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_2-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_2-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_2-9-4a9974900fb5bc2fc8e5d614f5026c0f b/sql/hive/src/test/resources/golden/union_remove_2-9-4a9974900fb5bc2fc8e5d614f5026c0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_20-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_20-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_20-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_20-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_20-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_20-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_20-10-89c57c91facbf54299e08955e3783ea6 b/sql/hive/src/test/resources/golden/union_remove_20-10-89c57c91facbf54299e08955e3783ea6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_20-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_20-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..978049640929c --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_20-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +values bigint None +key string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:54:06 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069268 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_20-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_20-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_20-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_20-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_20-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_20-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_20-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_20-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_20-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_20-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_20-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_20-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_20-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_20-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_20-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_20-6-a73143117ffec1225f6d492e5aa577e b/sql/hive/src/test/resources/golden/union_remove_20-6-a73143117ffec1225f6d492e5aa577e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_20-7-82f81adc097c247475fd29076e0cb85f b/sql/hive/src/test/resources/golden/union_remove_20-7-82f81adc097c247475fd29076e0cb85f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_20-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_20-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_20-9-683949ae07de12da0b7e7ba7f4450daa b/sql/hive/src/test/resources/golden/union_remove_20-9-683949ae07de12da0b7e7ba7f4450daa new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_21-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_21-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_21-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_21-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_21-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_21-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_21-10-e19469a1b70be25caaf670fe68f0a747 b/sql/hive/src/test/resources/golden/union_remove_21-10-e19469a1b70be25caaf670fe68f0a747 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_21-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_21-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..ce7e0438f9eff --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_21-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,26 @@ +# col_name data_type comment + +key string None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:54:32 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069293 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_21-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_21-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_21-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_21-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_21-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_21-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_21-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_21-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_21-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_21-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_21-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_21-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_21-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_21-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_21-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_21-6-aeba356b56f8659963d8b2dc07a84a6f b/sql/hive/src/test/resources/golden/union_remove_21-6-aeba356b56f8659963d8b2dc07a84a6f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_21-7-5716c408db679fb88352eaceb1703bd7 b/sql/hive/src/test/resources/golden/union_remove_21-7-5716c408db679fb88352eaceb1703bd7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_21-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_21-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_21-9-deadbce171926623b0586587fbbcd144 b/sql/hive/src/test/resources/golden/union_remove_21-9-deadbce171926623b0586587fbbcd144 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_22-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_22-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_22-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_22-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_22-10-403471d96c56b565272d2e4c4926d240 b/sql/hive/src/test/resources/golden/union_remove_22-10-403471d96c56b565272d2e4c4926d240 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_22-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_22-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..c261ce48bdfb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,28 @@ +# col_name data_type comment + +key string None +values bigint None +values2 bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:54:58 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069319 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_22-12-68e15b1729669c4cb2291dcabfea4387 b/sql/hive/src/test/resources/golden/union_remove_22-12-68e15b1729669c4cb2291dcabfea4387 new file mode 100644 index 0000000000000..d36ac6b834792 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-12-68e15b1729669c4cb2291dcabfea4387 @@ -0,0 +1,10 @@ +1 1 1 +2 1 1 +3 1 1 +7 1 1 +8 2 2 +1 1 1 +2 1 1 +3 1 1 +7 1 1 +8 2 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_22-13-a28b876b5df29140ef2bf62b4d0de3fd b/sql/hive/src/test/resources/golden/union_remove_22-13-a28b876b5df29140ef2bf62b4d0de3fd new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_22-14-8eb6d4bed951caa7ba9fe6b3a83d76af b/sql/hive/src/test/resources/golden/union_remove_22-14-8eb6d4bed951caa7ba9fe6b3a83d76af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_22-15-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_22-15-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-15-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_22-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_22-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_22-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_22-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_22-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_22-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_22-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_22-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_22-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_22-6-722acd65700dd132dc6b4bc8c56f4ce0 b/sql/hive/src/test/resources/golden/union_remove_22-6-722acd65700dd132dc6b4bc8c56f4ce0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_22-7-46da090f5a2c73b175207cf63ff46653 b/sql/hive/src/test/resources/golden/union_remove_22-7-46da090f5a2c73b175207cf63ff46653 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_22-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_22-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_22-9-b3edbbee0543ff268db4059afb9cb2cb b/sql/hive/src/test/resources/golden/union_remove_22-9-b3edbbee0543ff268db4059afb9cb2cb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_23-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_23-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_23-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_23-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_23-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_23-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_23-10-613ce50facecdc8d7bf8806a8ff17c13 b/sql/hive/src/test/resources/golden/union_remove_23-10-613ce50facecdc8d7bf8806a8ff17c13 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_23-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_23-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..50297abd4e9a6 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_23-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string None +values bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:55:20 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069345 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_23-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_23-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_23-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_23-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_23-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_23-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_23-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_23-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_23-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_23-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_23-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_23-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_23-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_23-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_23-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_23-6-b4e2e8cf42d1f3d4f54615a7b3d4c9a7 b/sql/hive/src/test/resources/golden/union_remove_23-6-b4e2e8cf42d1f3d4f54615a7b3d4c9a7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_23-7-48f70528347f5201f387d28dae37a14a b/sql/hive/src/test/resources/golden/union_remove_23-7-48f70528347f5201f387d28dae37a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_23-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_23-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_23-9-2dca12ca51c74540e7cdbbb05e336ed5 b/sql/hive/src/test/resources/golden/union_remove_23-9-2dca12ca51c74540e7cdbbb05e336ed5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_24-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_24-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_24-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_24-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_24-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_24-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_24-10-6d89089b1eead05510dbccad5fcc4805 b/sql/hive/src/test/resources/golden/union_remove_24-10-6d89089b1eead05510dbccad5fcc4805 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_24-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_24-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..f3c452ebe9284 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_24-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key double None +values bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:55:49 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069371 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_24-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_24-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_24-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_24-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_24-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_24-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_24-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_24-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_24-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_24-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_24-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_24-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_24-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_24-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_24-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_24-6-72ae7a9640ae611f61ac954ac1a4b682 b/sql/hive/src/test/resources/golden/union_remove_24-6-72ae7a9640ae611f61ac954ac1a4b682 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_24-7-44a7b0f14b4f5151c37498367ad7fe1e b/sql/hive/src/test/resources/golden/union_remove_24-7-44a7b0f14b4f5151c37498367ad7fe1e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_24-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_24-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_24-9-4c0550cc9c28de25993c1f98de39168f b/sql/hive/src/test/resources/golden/union_remove_24-9-4c0550cc9c28de25993c1f98de39168f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_3-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_3-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_3-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-10-cfc49418c6621c665dfb671ed5656fc9 b/sql/hive/src/test/resources/golden/union_remove_3-10-cfc49418c6621c665dfb671ed5656fc9 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_3-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_3-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..d46af80f0d1ae --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string None +values bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Fri Jan 03 19:09:55 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse5393816597631538368/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1388805002 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_3-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-13-e409e7032445097ace016b1876d95b3e b/sql/hive/src/test/resources/golden/union_remove_3-13-e409e7032445097ace016b1876d95b3e new file mode 100644 index 0000000000000..2817d74afee13 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-13-e409e7032445097ace016b1876d95b3e @@ -0,0 +1,18 @@ +1 1 +1 2 +1 3 +2 1 +2 2 +2 3 +3 1 +3 2 +3 3 +7 1 +7 2 +7 3 +8 1 +8 1 +8 2 +8 2 +8 3 +8 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_3-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_3-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_3-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_3-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_3-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_3-6-c36130e41df18093eee24b45fc0846f0 b/sql/hive/src/test/resources/golden/union_remove_3-6-c36130e41df18093eee24b45fc0846f0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_3-7-48f70528347f5201f387d28dae37a14a b/sql/hive/src/test/resources/golden/union_remove_3-7-48f70528347f5201f387d28dae37a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_3-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_3-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_3-9-7da122d7b42dc7ef504ccc442d6545f1 b/sql/hive/src/test/resources/golden/union_remove_3-9-7da122d7b42dc7ef504ccc442d6545f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_4-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_4-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_4-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-10-19865a08066d80cb069ae6312c465ee6 b/sql/hive/src/test/resources/golden/union_remove_4-10-19865a08066d80cb069ae6312c465ee6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_4-11-3ef350a0f7bbc1c54774e33dd54d9e46 b/sql/hive/src/test/resources/golden/union_remove_4-11-3ef350a0f7bbc1c54774e33dd54d9e46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_4-12-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_4-12-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..67faa5b13d984 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-12-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string None +values bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:56:16 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069398 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-13-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_4-13-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-13-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_4-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-3-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_4-3-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-3-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-4-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_4-4-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-4-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_4-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-6-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_4-6-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_4-6-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_4-7-90fcd4eb330919ad92aecb8a5bf30ead b/sql/hive/src/test/resources/golden/union_remove_4-7-90fcd4eb330919ad92aecb8a5bf30ead new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_4-8-48f70528347f5201f387d28dae37a14a b/sql/hive/src/test/resources/golden/union_remove_4-8-48f70528347f5201f387d28dae37a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_4-9-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_4-9-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_5-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_5-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_5-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-10-4a9974900fb5bc2fc8e5d614f5026c0f b/sql/hive/src/test/resources/golden/union_remove_5-10-4a9974900fb5bc2fc8e5d614f5026c0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_5-11-2309570010c3e679b884c100de57d002 b/sql/hive/src/test/resources/golden/union_remove_5-11-2309570010c3e679b884c100de57d002 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_5-12-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_5-12-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..19aeb0b602859 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-12-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string None +values bigint None + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:56:42 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069430 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-13-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_5-13-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-13-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_5-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-3-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_5-3-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-3-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-4-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_5-4-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-4-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-5-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_5-5-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-5-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-6-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_5-6-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_5-6-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_5-7-4da6ca94af4caf4426e5676a32b70375 b/sql/hive/src/test/resources/golden/union_remove_5-7-4da6ca94af4caf4426e5676a32b70375 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_5-8-48f70528347f5201f387d28dae37a14a b/sql/hive/src/test/resources/golden/union_remove_5-8-48f70528347f5201f387d28dae37a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_5-9-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_5-9-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_6-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_6-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_6-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-10-52171e0094ea92aaea8a485aedc88e88 b/sql/hive/src/test/resources/golden/union_remove_6-10-52171e0094ea92aaea8a485aedc88e88 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_6-11-60361645974d38829674ec6bb5502a62 b/sql/hive/src/test/resources/golden/union_remove_6-11-60361645974d38829674ec6bb5502a62 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_6-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_6-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-13-e409e7032445097ace016b1876d95b3e b/sql/hive/src/test/resources/golden/union_remove_6-13-e409e7032445097ace016b1876d95b3e new file mode 100644 index 0000000000000..8e7ee8a2b47bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-13-e409e7032445097ace016b1876d95b3e @@ -0,0 +1,10 @@ +1 1 +1 1 +2 1 +2 1 +3 1 +3 1 +7 1 +7 1 +8 2 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-14-f74b28904e86047150396bc42680ca38 b/sql/hive/src/test/resources/golden/union_remove_6-14-f74b28904e86047150396bc42680ca38 new file mode 100644 index 0000000000000..8e7ee8a2b47bb --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-14-f74b28904e86047150396bc42680ca38 @@ -0,0 +1,10 @@ +1 1 +1 1 +2 1 +2 1 +3 1 +3 1 +7 1 +7 1 +8 2 +8 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_6-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_6-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_6-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_6-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_6-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_remove_6-6-22f22c916f3bc3bf0a28259c7b232b7 b/sql/hive/src/test/resources/golden/union_remove_6-6-22f22c916f3bc3bf0a28259c7b232b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_6-7-48f70528347f5201f387d28dae37a14a b/sql/hive/src/test/resources/golden/union_remove_6-7-48f70528347f5201f387d28dae37a14a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_6-8-19e054c1050e5dbf703e91a48253ecdf b/sql/hive/src/test/resources/golden/union_remove_6-8-19e054c1050e5dbf703e91a48253ecdf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_6-9-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_6-9-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_7-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_7-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_7-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_7-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_7-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_7-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_7-10-3ef350a0f7bbc1c54774e33dd54d9e46 b/sql/hive/src/test/resources/golden/union_remove_7-10-3ef350a0f7bbc1c54774e33dd54d9e46 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_7-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_7-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..1c63b3851aad2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_7-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:57:18 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069463 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_7-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_7-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_7-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_7-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_7-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_7-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_7-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_7-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_7-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_7-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_7-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_7-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_7-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_7-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_7-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_7-6-3744f0ebf5c002fdfcec67fbce03dfca b/sql/hive/src/test/resources/golden/union_remove_7-6-3744f0ebf5c002fdfcec67fbce03dfca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_7-7-68f30e8e5c05bbedbda95d88ab6f3ee2 b/sql/hive/src/test/resources/golden/union_remove_7-7-68f30e8e5c05bbedbda95d88ab6f3ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_7-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_7-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_7-9-19865a08066d80cb069ae6312c465ee6 b/sql/hive/src/test/resources/golden/union_remove_7-9-19865a08066d80cb069ae6312c465ee6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_8-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_8-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_8-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_8-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_8-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_8-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_8-10-2309570010c3e679b884c100de57d002 b/sql/hive/src/test/resources/golden/union_remove_8-10-2309570010c3e679b884c100de57d002 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_8-11-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_8-11-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..f718ab2990cdd --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_8-11-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:57:48 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069495 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_8-12-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_8-12-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_8-12-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_8-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_8-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_8-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_8-3-dc129f70e75cd575ce8c0de288884523 b/sql/hive/src/test/resources/golden/union_remove_8-3-dc129f70e75cd575ce8c0de288884523 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_8-3-dc129f70e75cd575ce8c0de288884523 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_8-4-a572a07cd60fd4607ddd7613db8a64ab b/sql/hive/src/test/resources/golden/union_remove_8-4-a572a07cd60fd4607ddd7613db8a64ab new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_8-4-a572a07cd60fd4607ddd7613db8a64ab @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_8-5-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_8-5-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_8-5-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_8-6-895f2432b4be6fcb11641c1d063570ee b/sql/hive/src/test/resources/golden/union_remove_8-6-895f2432b4be6fcb11641c1d063570ee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_8-7-68f30e8e5c05bbedbda95d88ab6f3ee2 b/sql/hive/src/test/resources/golden/union_remove_8-7-68f30e8e5c05bbedbda95d88ab6f3ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_8-8-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_8-8-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_8-9-4a9974900fb5bc2fc8e5d614f5026c0f b/sql/hive/src/test/resources/golden/union_remove_8-9-4a9974900fb5bc2fc8e5d614f5026c0f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_9-0-3c29684bfd2df7439ee0551eb42cfa0 b/sql/hive/src/test/resources/golden/union_remove_9-0-3c29684bfd2df7439ee0551eb42cfa0 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-0-3c29684bfd2df7439ee0551eb42cfa0 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-1-16a6a293f1d2ce481b1d2482b1d5787c b/sql/hive/src/test/resources/golden/union_remove_9-1-16a6a293f1d2ce481b1d2482b1d5787c new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-1-16a6a293f1d2ce481b1d2482b1d5787c @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-10-12cf3335c756f8715a07c5a604f10f64 b/sql/hive/src/test/resources/golden/union_remove_9-10-12cf3335c756f8715a07c5a604f10f64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_9-11-4e84cd589eceda668833f8f19ec28e7c b/sql/hive/src/test/resources/golden/union_remove_9-11-4e84cd589eceda668833f8f19ec28e7c new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_9-12-ea111d286c70e4a0c6a68a7420dc7b7 b/sql/hive/src/test/resources/golden/union_remove_9-12-ea111d286c70e4a0c6a68a7420dc7b7 new file mode 100644 index 0000000000000..65a91a6027545 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-12-ea111d286c70e4a0c6a68a7420dc7b7 @@ -0,0 +1,27 @@ +# col_name data_type comment + +key string from deserializer +values bigint from deserializer + +# Detailed Table Information +Database: default +Owner: marmbrus +CreateTime: Mon Feb 10 13:58:19 PST 2014 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse561133087079823206/outputtbl1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1392069518 + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe +InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-13-43d53504df013e6b35f81811138a167a b/sql/hive/src/test/resources/golden/union_remove_9-13-43d53504df013e6b35f81811138a167a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-13-43d53504df013e6b35f81811138a167a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-2-cafed8ca348b243372b9114910be1557 b/sql/hive/src/test/resources/golden/union_remove_9-2-cafed8ca348b243372b9114910be1557 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-2-cafed8ca348b243372b9114910be1557 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-3-b12e5c70d6d29757471b900b6160fa8a b/sql/hive/src/test/resources/golden/union_remove_9-3-b12e5c70d6d29757471b900b6160fa8a new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-3-b12e5c70d6d29757471b900b6160fa8a @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-4-593999fae618b6b38322bc9ae4e0c027 b/sql/hive/src/test/resources/golden/union_remove_9-4-593999fae618b6b38322bc9ae4e0c027 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-4-593999fae618b6b38322bc9ae4e0c027 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-5-6f53d5613262d393d82d159ec5dc16dc b/sql/hive/src/test/resources/golden/union_remove_9-5-6f53d5613262d393d82d159ec5dc16dc new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-5-6f53d5613262d393d82d159ec5dc16dc @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-6-a2a411ad6620aa1ab24550ade336e785 b/sql/hive/src/test/resources/golden/union_remove_9-6-a2a411ad6620aa1ab24550ade336e785 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_remove_9-6-a2a411ad6620aa1ab24550ade336e785 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_remove_9-7-f77ac921b27860fac94cac6b352f3eb5 b/sql/hive/src/test/resources/golden/union_remove_9-7-f77ac921b27860fac94cac6b352f3eb5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_9-8-68f30e8e5c05bbedbda95d88ab6f3ee2 b/sql/hive/src/test/resources/golden/union_remove_9-8-68f30e8e5c05bbedbda95d88ab6f3ee2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_remove_9-9-8ff0bb1bf3da91b51d37923f1876be0e b/sql/hive/src/test/resources/golden/union_remove_9-9-8ff0bb1bf3da91b51d37923f1876be0e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_script-0-ca195b08d98d7f21fe93208499bf0ff6 b/sql/hive/src/test/resources/golden/union_script-0-ca195b08d98d7f21fe93208499bf0ff6 new file mode 100644 index 0000000000000..42d07ed10bad4 --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_script-0-ca195b08d98d7f21fe93208499bf0ff6 @@ -0,0 +1,500 @@ +0 +0 +0 +10 +100 +100 +103 +103 +104 +104 +105 +11 +111 +113 +113 +114 +116 +118 +118 +119 +119 +119 +12 +12 +120 +120 +125 +125 +126 +128 +128 +128 +129 +129 +131 +133 +134 +134 +136 +137 +137 +138 +138 +138 +138 +143 +145 +146 +146 +149 +149 +15 +15 +150 +152 +152 +153 +155 +156 +157 +158 +160 +162 +163 +164 +164 +165 +165 +166 +167 +167 +167 +168 +169 +169 +169 +169 +17 +170 +172 +172 +174 +174 +175 +175 +176 +176 +177 +178 +179 +179 +18 +18 +180 +181 +183 +186 +187 +187 +187 +189 +19 +190 +191 +191 +192 +193 +193 +193 +194 +195 +195 +196 +197 +197 +199 +199 +199 +2 +20 +200 +200 +201 +202 +203 +203 +205 +205 +207 +207 +208 +208 +208 +209 +209 +213 +213 +214 +216 +216 +217 +217 +218 +219 +219 +221 +221 +222 +223 +223 +224 +224 +226 +228 +229 +229 +230 +230 +230 +230 +230 +233 +233 +235 +237 +237 +238 +238 +239 +239 +24 +24 +241 +242 +242 +244 +247 +248 +249 +252 +255 +255 +256 +256 +257 +258 +26 +26 +260 +262 +263 +265 +265 +266 +27 +272 +272 +273 +273 +273 +274 +275 +277 +277 +277 +277 +278 +278 +28 +280 +280 +281 +281 +282 +282 +283 +284 +285 +286 +287 +288 +288 +289 +291 +292 +296 +298 +298 +298 +30 +302 +305 +306 +307 +307 +308 +309 +309 +310 +311 +311 +311 +315 +316 +316 +316 +317 +317 +318 +318 +318 +321 +321 +322 +322 +323 +325 +325 +327 +327 +327 +33 +331 +331 +332 +333 +333 +335 +336 +338 +339 +34 +341 +342 +342 +344 +344 +345 +348 +348 +348 +348 +348 +35 +35 +35 +351 +353 +353 +356 +360 +362 +364 +365 +366 +367 +367 +368 +369 +369 +369 +37 +37 +373 +374 +375 +377 +378 +379 +382 +382 +384 +384 +384 +386 +389 +392 +393 +394 +395 +395 +396 +396 +396 +397 +397 +399 +399 +4 +400 +401 +401 +401 +401 +401 +402 +403 +403 +403 +404 +404 +406 +406 +406 +406 +407 +409 +409 +409 +41 +411 +413 +413 +414 +414 +417 +417 +417 +418 +419 +42 +42 +421 +424 +424 +427 +429 +429 +43 +430 +430 +430 +431 +431 +431 +432 +435 +436 +437 +438 +438 +438 +439 +439 +44 +443 +444 +446 +448 +449 +452 +453 +454 +454 +454 +455 +457 +458 +458 +459 +459 +460 +462 +462 +463 +463 +466 +466 +466 +467 +468 +468 +468 +468 +469 +469 +469 +469 +469 +47 +470 +472 +475 +477 +478 +478 +479 +480 +480 +480 +481 +482 +483 +484 +485 +487 +489 +489 +489 +489 +490 +491 +492 +492 +493 +494 +495 +496 +497 +498 +498 +498 +5 +5 +5 +51 +51 +53 +54 +57 +58 +58 +64 +65 +66 +67 +67 +69 +70 +70 +70 +72 +72 +74 +76 +76 +77 +78 +8 +80 +82 +83 +83 +84 +84 +85 +86 +87 +9 +90 +90 +90 +92 +95 +95 +96 +97 +97 +98 +98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_script-1-982cc6d7b98f8fb1055a10ef021e2769 b/sql/hive/src/test/resources/golden/union_script-1-982cc6d7b98f8fb1055a10ef021e2769 new file mode 100644 index 0000000000000..2f23db6a2ff4a --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_script-1-982cc6d7b98f8fb1055a10ef021e2769 @@ -0,0 +1,1000 @@ +0 +0 +0 +0 +0 +0 +10 +10 +100 +100 +100 +100 +103 +103 +103 +103 +104 +104 +104 +104 +105 +105 +11 +11 +111 +111 +113 +113 +113 +113 +114 +114 +116 +116 +118 +118 +118 +118 +119 +119 +119 +119 +119 +119 +12 +12 +12 +12 +120 +120 +120 +120 +125 +125 +125 +125 +126 +126 +128 +128 +128 +128 +128 +128 +129 +129 +129 +129 +131 +131 +133 +133 +134 +134 +134 +134 +136 +136 +137 +137 +137 +137 +138 +138 +138 +138 +138 +138 +138 +138 +143 +143 +145 +145 +146 +146 +146 +146 +149 +149 +149 +149 +15 +15 +15 +15 +150 +150 +152 +152 +152 +152 +153 +153 +155 +155 +156 +156 +157 +157 +158 +158 +160 +160 +162 +162 +163 +163 +164 +164 +164 +164 +165 +165 +165 +165 +166 +166 +167 +167 +167 +167 +167 +167 +168 +168 +169 +169 +169 +169 +169 +169 +169 +169 +17 +17 +170 +170 +172 +172 +172 +172 +174 +174 +174 +174 +175 +175 +175 +175 +176 +176 +176 +176 +177 +177 +178 +178 +179 +179 +179 +179 +18 +18 +18 +18 +180 +180 +181 +181 +183 +183 +186 +186 +187 +187 +187 +187 +187 +187 +189 +189 +19 +19 +190 +190 +191 +191 +191 +191 +192 +192 +193 +193 +193 +193 +193 +193 +194 +194 +195 +195 +195 +195 +196 +196 +197 +197 +197 +197 +199 +199 +199 +199 +199 +199 +2 +2 +20 +20 +200 +200 +200 +200 +201 +201 +202 +202 +203 +203 +203 +203 +205 +205 +205 +205 +207 +207 +207 +207 +208 +208 +208 +208 +208 +208 +209 +209 +209 +209 +213 +213 +213 +213 +214 +214 +216 +216 +216 +216 +217 +217 +217 +217 +218 +218 +219 +219 +219 +219 +221 +221 +221 +221 +222 +222 +223 +223 +223 +223 +224 +224 +224 +224 +226 +226 +228 +228 +229 +229 +229 +229 +230 +230 +230 +230 +230 +230 +230 +230 +230 +230 +233 +233 +233 +233 +235 +235 +237 +237 +237 +237 +238 +238 +238 +238 +239 +239 +239 +239 +24 +24 +24 +24 +241 +241 +242 +242 +242 +242 +244 +244 +247 +247 +248 +248 +249 +249 +252 +252 +255 +255 +255 +255 +256 +256 +256 +256 +257 +257 +258 +258 +26 +26 +26 +26 +260 +260 +262 +262 +263 +263 +265 +265 +265 +265 +266 +266 +27 +27 +272 +272 +272 +272 +273 +273 +273 +273 +273 +273 +274 +274 +275 +275 +277 +277 +277 +277 +277 +277 +277 +277 +278 +278 +278 +278 +28 +28 +280 +280 +280 +280 +281 +281 +281 +281 +282 +282 +282 +282 +283 +283 +284 +284 +285 +285 +286 +286 +287 +287 +288 +288 +288 +288 +289 +289 +291 +291 +292 +292 +296 +296 +298 +298 +298 +298 +298 +298 +30 +30 +302 +302 +305 +305 +306 +306 +307 +307 +307 +307 +308 +308 +309 +309 +309 +309 +310 +310 +311 +311 +311 +311 +311 +311 +315 +315 +316 +316 +316 +316 +316 +316 +317 +317 +317 +317 +318 +318 +318 +318 +318 +318 +321 +321 +321 +321 +322 +322 +322 +322 +323 +323 +325 +325 +325 +325 +327 +327 +327 +327 +327 +327 +33 +33 +331 +331 +331 +331 +332 +332 +333 +333 +333 +333 +335 +335 +336 +336 +338 +338 +339 +339 +34 +34 +341 +341 +342 +342 +342 +342 +344 +344 +344 +344 +345 +345 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +35 +35 +35 +35 +35 +35 +351 +351 +353 +353 +353 +353 +356 +356 +360 +360 +362 +362 +364 +364 +365 +365 +366 +366 +367 +367 +367 +367 +368 +368 +369 +369 +369 +369 +369 +369 +37 +37 +37 +37 +373 +373 +374 +374 +375 +375 +377 +377 +378 +378 +379 +379 +382 +382 +382 +382 +384 +384 +384 +384 +384 +384 +386 +386 +389 +389 +392 +392 +393 +393 +394 +394 +395 +395 +395 +395 +396 +396 +396 +396 +396 +396 +397 +397 +397 +397 +399 +399 +399 +399 +4 +4 +400 +400 +401 +401 +401 +401 +401 +401 +401 +401 +401 +401 +402 +402 +403 +403 +403 +403 +403 +403 +404 +404 +404 +404 +406 +406 +406 +406 +406 +406 +406 +406 +407 +407 +409 +409 +409 +409 +409 +409 +41 +41 +411 +411 +413 +413 +413 +413 +414 +414 +414 +414 +417 +417 +417 +417 +417 +417 +418 +418 +419 +419 +42 +42 +42 +42 +421 +421 +424 +424 +424 +424 +427 +427 +429 +429 +429 +429 +43 +43 +430 +430 +430 +430 +430 +430 +431 +431 +431 +431 +431 +431 +432 +432 +435 +435 +436 +436 +437 +437 +438 +438 +438 +438 +438 +438 +439 +439 +439 +439 +44 +44 +443 +443 +444 +444 +446 +446 +448 +448 +449 +449 +452 +452 +453 +453 +454 +454 +454 +454 +454 +454 +455 +455 +457 +457 +458 +458 +458 +458 +459 +459 +459 +459 +460 +460 +462 +462 +462 +462 +463 +463 +463 +463 +466 +466 +466 +466 +466 +466 +467 +467 +468 +468 +468 +468 +468 +468 +468 +468 +469 +469 +469 +469 +469 +469 +469 +469 +469 +469 +47 +47 +470 +470 +472 +472 +475 +475 +477 +477 +478 +478 +478 +478 +479 +479 +480 +480 +480 +480 +480 +480 +481 +481 +482 +482 +483 +483 +484 +484 +485 +485 +487 +487 +489 +489 +489 +489 +489 +489 +489 +489 +490 +490 +491 +491 +492 +492 +492 +492 +493 +493 +494 +494 +495 +495 +496 +496 +497 +497 +498 +498 +498 +498 +498 +498 +5 +5 +5 +5 +5 +5 +51 +51 +51 +51 +53 +53 +54 +54 +57 +57 +58 +58 +58 +58 +64 +64 +65 +65 +66 +66 +67 +67 +67 +67 +69 +69 +70 +70 +70 +70 +70 +70 +72 +72 +72 +72 +74 +74 +76 +76 +76 +76 +77 +77 +78 +78 +8 +8 +80 +80 +82 +82 +83 +83 +83 +83 +84 +84 +84 +84 +85 +85 +86 +86 +87 +87 +9 +9 +90 +90 +90 +90 +90 +90 +92 +92 +95 +95 +95 +95 +96 +96 +97 +97 +97 +97 +98 +98 +98 +98 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/union_view-0-e56367a21517656c18a5bcfeecb4327d b/sql/hive/src/test/resources/golden/union_view-0-e56367a21517656c18a5bcfeecb4327d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_view-1-c790d4344144460224b0f02be7e137a8 b/sql/hive/src/test/resources/golden/union_view-1-c790d4344144460224b0f02be7e137a8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_view-2-7e33b0744f57bdc8ebcd9d45348aef14 b/sql/hive/src/test/resources/golden/union_view-2-7e33b0744f57bdc8ebcd9d45348aef14 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_view-3-4a746bd076e063017c4d6a2f9218a6e4 b/sql/hive/src/test/resources/golden/union_view-3-4a746bd076e063017c4d6a2f9218a6e4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_view-4-d3d75f376f83b694b1dc62c46fa53f4e b/sql/hive/src/test/resources/golden/union_view-4-d3d75f376f83b694b1dc62c46fa53f4e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_view-5-5d56e4e800a2a2ea70bd1f2ac31f2245 b/sql/hive/src/test/resources/golden/union_view-5-5d56e4e800a2a2ea70bd1f2ac31f2245 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/union_view-6-c9d7dcde469d3b9a66965a64dd15e4ae b/sql/hive/src/test/resources/golden/union_view-6-c9d7dcde469d3b9a66965a64dd15e4ae new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_view-6-c9d7dcde469d3b9a66965a64dd15e4ae @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_view-7-3b03210f94ec40db9ab02620645014d1 b/sql/hive/src/test/resources/golden/union_view-7-3b03210f94ec40db9ab02620645014d1 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_view-7-3b03210f94ec40db9ab02620645014d1 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/union_view-8-35f48c7d6fa164bb84643657bc9280a8 b/sql/hive/src/test/resources/golden/union_view-8-35f48c7d6fa164bb84643657bc9280a8 new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/sql/hive/src/test/resources/golden/union_view-8-35f48c7d6fa164bb84643657bc9280a8 @@ -0,0 +1 @@ +0 diff --git a/sql/hive/src/test/resources/golden/varchar_2-0-fbced67562c536a7e9b6d3928bd9d0af b/sql/hive/src/test/resources/golden/varchar_2-0-fbced67562c536a7e9b6d3928bd9d0af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_2-1-bee4e3a9ded7276960e619e6185bf329 b/sql/hive/src/test/resources/golden/varchar_2-1-bee4e3a9ded7276960e619e6185bf329 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_2-2-779a555944479991520be53f7f247626 b/sql/hive/src/test/resources/golden/varchar_2-2-779a555944479991520be53f7f247626 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_2-3-a8c072e5b13997e9c79484b4af9d78da b/sql/hive/src/test/resources/golden/varchar_2-3-a8c072e5b13997e9c79484b4af9d78da new file mode 100644 index 0000000000000..08661a3d7f794 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_2-3-a8c072e5b13997e9c79484b4af9d78da @@ -0,0 +1,5 @@ +val_0 0 3 +val_10 10 1 +val_100 200 2 +val_103 206 2 +val_104 208 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_2-4-c7ac6a1b3e9416e42d2d1b56f017fe6f b/sql/hive/src/test/resources/golden/varchar_2-4-c7ac6a1b3e9416e42d2d1b56f017fe6f new file mode 100644 index 0000000000000..08661a3d7f794 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_2-4-c7ac6a1b3e9416e42d2d1b56f017fe6f @@ -0,0 +1,5 @@ +val_0 0 3 +val_10 10 1 +val_100 200 2 +val_103 206 2 +val_104 208 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_2-5-96353c24b5f2b361f72e5c26b4135519 b/sql/hive/src/test/resources/golden/varchar_2-5-96353c24b5f2b361f72e5c26b4135519 new file mode 100644 index 0000000000000..f0c744ca37d95 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_2-5-96353c24b5f2b361f72e5c26b4135519 @@ -0,0 +1,5 @@ +val_98 196 2 +val_97 194 2 +val_96 96 1 +val_95 190 2 +val_92 92 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_2-6-2b62789d07b4044bc32190261bf3490f b/sql/hive/src/test/resources/golden/varchar_2-6-2b62789d07b4044bc32190261bf3490f new file mode 100644 index 0000000000000..f0c744ca37d95 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_2-6-2b62789d07b4044bc32190261bf3490f @@ -0,0 +1,5 @@ +val_98 196 2 +val_97 194 2 +val_96 96 1 +val_95 190 2 +val_92 92 1 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_2-7-fbced67562c536a7e9b6d3928bd9d0af b/sql/hive/src/test/resources/golden/varchar_2-7-fbced67562c536a7e9b6d3928bd9d0af new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-0-f170a8c3d5db4cbf4e7c10aee1ef652e b/sql/hive/src/test/resources/golden/varchar_join1-0-f170a8c3d5db4cbf4e7c10aee1ef652e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-1-8318072ee410cae36186c9880989a1a5 b/sql/hive/src/test/resources/golden/varchar_join1-1-8318072ee410cae36186c9880989a1a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-10-1958143ee083437e87662cadb48c37ce b/sql/hive/src/test/resources/golden/varchar_join1-10-1958143ee083437e87662cadb48c37ce new file mode 100644 index 0000000000000..35e7795b9c2a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_join1-10-1958143ee083437e87662cadb48c37ce @@ -0,0 +1,3 @@ +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_join1-11-a55f750032663f77066e4979dedea1c b/sql/hive/src/test/resources/golden/varchar_join1-11-a55f750032663f77066e4979dedea1c new file mode 100644 index 0000000000000..35e7795b9c2a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_join1-11-a55f750032663f77066e4979dedea1c @@ -0,0 +1,3 @@ +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_join1-12-f170a8c3d5db4cbf4e7c10aee1ef652e b/sql/hive/src/test/resources/golden/varchar_join1-12-f170a8c3d5db4cbf4e7c10aee1ef652e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-13-8318072ee410cae36186c9880989a1a5 b/sql/hive/src/test/resources/golden/varchar_join1-13-8318072ee410cae36186c9880989a1a5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-14-8bbaae82c89553165b975c5b8ca3aee4 b/sql/hive/src/test/resources/golden/varchar_join1-14-8bbaae82c89553165b975c5b8ca3aee4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-2-8bbaae82c89553165b975c5b8ca3aee4 b/sql/hive/src/test/resources/golden/varchar_join1-2-8bbaae82c89553165b975c5b8ca3aee4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-3-735f68c77eae74623c8bdbebc995a3c7 b/sql/hive/src/test/resources/golden/varchar_join1-3-735f68c77eae74623c8bdbebc995a3c7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-4-d5105d36e4d077e0929597124526c532 b/sql/hive/src/test/resources/golden/varchar_join1-4-d5105d36e4d077e0929597124526c532 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-5-93624b74270b7ebd40bbb8c0a7e93e28 b/sql/hive/src/test/resources/golden/varchar_join1-5-93624b74270b7ebd40bbb8c0a7e93e28 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-6-6bb08c5baa913d9dc506aef65425ef b/sql/hive/src/test/resources/golden/varchar_join1-6-6bb08c5baa913d9dc506aef65425ef new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-7-341118dab140b17f0b9d2c7b101d1298 b/sql/hive/src/test/resources/golden/varchar_join1-7-341118dab140b17f0b9d2c7b101d1298 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-8-afe7304d94450481c01ddbaf6cc3f596 b/sql/hive/src/test/resources/golden/varchar_join1-8-afe7304d94450481c01ddbaf6cc3f596 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_join1-9-c152d3dc6495ef75e4872dea4b7e0f82 b/sql/hive/src/test/resources/golden/varchar_join1-9-c152d3dc6495ef75e4872dea4b7e0f82 new file mode 100644 index 0000000000000..35e7795b9c2a7 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_join1-9-c152d3dc6495ef75e4872dea4b7e0f82 @@ -0,0 +1,3 @@ +1 abc 1 abc +2 abc 2 abc +3 abc 3 abc \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-0-e41b0e9db7a9dbd0540e29df341933bc b/sql/hive/src/test/resources/golden/varchar_nested_types-0-e41b0e9db7a9dbd0540e29df341933bc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-1-87a28b0e800f051525899324a064b878 b/sql/hive/src/test/resources/golden/varchar_nested_types-1-87a28b0e800f051525899324a064b878 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-10-92f25849990eb777ac2711f9dd2e628 b/sql/hive/src/test/resources/golden/varchar_nested_types-10-92f25849990eb777ac2711f9dd2e628 new file mode 100644 index 0000000000000..05066db296756 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-10-92f25849990eb777ac2711f9dd2e628 @@ -0,0 +1 @@ +c1 array None diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-11-9780781a92fdd992f3cee080a8717238 b/sql/hive/src/test/resources/golden/varchar_nested_types-11-9780781a92fdd992f3cee080a8717238 new file mode 100644 index 0000000000000..05cd8fccf276c --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-11-9780781a92fdd992f3cee080a8717238 @@ -0,0 +1 @@ +["val_0","val_0"] diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-12-e1a4006971319a352280fc52eabf449f b/sql/hive/src/test/resources/golden/varchar_nested_types-12-e1a4006971319a352280fc52eabf449f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-13-d4574217a243a7d506398a819cd0eab4 b/sql/hive/src/test/resources/golden/varchar_nested_types-13-d4574217a243a7d506398a819cd0eab4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-14-7c33a62195359bc89460ad65f6a5f763 b/sql/hive/src/test/resources/golden/varchar_nested_types-14-7c33a62195359bc89460ad65f6a5f763 new file mode 100644 index 0000000000000..1ec6828af9fd2 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-14-7c33a62195359bc89460ad65f6a5f763 @@ -0,0 +1 @@ +c1 map None diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-15-d5e5cec4ce94e8928e69e3ffb8e0215 b/sql/hive/src/test/resources/golden/varchar_nested_types-15-d5e5cec4ce94e8928e69e3ffb8e0215 new file mode 100644 index 0000000000000..8f12062de4e27 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-15-d5e5cec4ce94e8928e69e3ffb8e0215 @@ -0,0 +1 @@ +{0:"val_0"} diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-16-93811d146a429c44a2494b3aa4b2caa2 b/sql/hive/src/test/resources/golden/varchar_nested_types-16-93811d146a429c44a2494b3aa4b2caa2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-17-5724af3985c67a0cb69919c9bbce15dc b/sql/hive/src/test/resources/golden/varchar_nested_types-17-5724af3985c67a0cb69919c9bbce15dc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-18-d1be2ee3765a80469837ba11eb8685e1 b/sql/hive/src/test/resources/golden/varchar_nested_types-18-d1be2ee3765a80469837ba11eb8685e1 new file mode 100644 index 0000000000000..030d9d6ec0429 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-18-d1be2ee3765a80469837ba11eb8685e1 @@ -0,0 +1 @@ +c1 struct None diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-19-a54f9a284228e7cdce8c34b8094f2377 b/sql/hive/src/test/resources/golden/varchar_nested_types-19-a54f9a284228e7cdce8c34b8094f2377 new file mode 100644 index 0000000000000..f350c1112ac2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-19-a54f9a284228e7cdce8c34b8094f2377 @@ -0,0 +1 @@ +{"a":0,"b":"val_0","c":"val_0"} diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-2-ae69b82461acc2aa366d8b1f8626d6fb b/sql/hive/src/test/resources/golden/varchar_nested_types-2-ae69b82461acc2aa366d8b1f8626d6fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-20-51a9279006f61097e68a52201daf6710 b/sql/hive/src/test/resources/golden/varchar_nested_types-20-51a9279006f61097e68a52201daf6710 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-21-1d304e09cc2a8b2824bfc04bdbc976ad b/sql/hive/src/test/resources/golden/varchar_nested_types-21-1d304e09cc2a8b2824bfc04bdbc976ad new file mode 100644 index 0000000000000..030d9d6ec0429 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-21-1d304e09cc2a8b2824bfc04bdbc976ad @@ -0,0 +1 @@ +c1 struct None diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-22-c2bf5acbe5ebc16eaf2388fd36a61fe8 b/sql/hive/src/test/resources/golden/varchar_nested_types-22-c2bf5acbe5ebc16eaf2388fd36a61fe8 new file mode 100644 index 0000000000000..f350c1112ac2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-22-c2bf5acbe5ebc16eaf2388fd36a61fe8 @@ -0,0 +1 @@ +{"a":0,"b":"val_0","c":"val_0"} diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-23-c7ea918777b725f2790da4fa00a3efa6 b/sql/hive/src/test/resources/golden/varchar_nested_types-23-c7ea918777b725f2790da4fa00a3efa6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-24-5a69236334a3a1c4e771206cf547d730 b/sql/hive/src/test/resources/golden/varchar_nested_types-24-5a69236334a3a1c4e771206cf547d730 new file mode 100644 index 0000000000000..030d9d6ec0429 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-24-5a69236334a3a1c4e771206cf547d730 @@ -0,0 +1 @@ +c1 struct None diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-25-61b030bb2220a533532d871ae0e08cdb b/sql/hive/src/test/resources/golden/varchar_nested_types-25-61b030bb2220a533532d871ae0e08cdb new file mode 100644 index 0000000000000..f350c1112ac2c --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_nested_types-25-61b030bb2220a533532d871ae0e08cdb @@ -0,0 +1 @@ +{"a":0,"b":"val_0","c":"val_0"} diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-26-e41b0e9db7a9dbd0540e29df341933bc b/sql/hive/src/test/resources/golden/varchar_nested_types-26-e41b0e9db7a9dbd0540e29df341933bc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-27-87a28b0e800f051525899324a064b878 b/sql/hive/src/test/resources/golden/varchar_nested_types-27-87a28b0e800f051525899324a064b878 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-28-ae69b82461acc2aa366d8b1f8626d6fb b/sql/hive/src/test/resources/golden/varchar_nested_types-28-ae69b82461acc2aa366d8b1f8626d6fb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-29-39d44d19c7963a9647fd3293eef670d4 b/sql/hive/src/test/resources/golden/varchar_nested_types-29-39d44d19c7963a9647fd3293eef670d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-3-39d44d19c7963a9647fd3293eef670d4 b/sql/hive/src/test/resources/golden/varchar_nested_types-3-39d44d19c7963a9647fd3293eef670d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-30-162806477075d97de16dfa6f2576b751 b/sql/hive/src/test/resources/golden/varchar_nested_types-30-162806477075d97de16dfa6f2576b751 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-31-5b28e1fdb28b365ef419008a4752ed53 b/sql/hive/src/test/resources/golden/varchar_nested_types-31-5b28e1fdb28b365ef419008a4752ed53 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-4-162806477075d97de16dfa6f2576b751 b/sql/hive/src/test/resources/golden/varchar_nested_types-4-162806477075d97de16dfa6f2576b751 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-5-5b28e1fdb28b365ef419008a4752ed53 b/sql/hive/src/test/resources/golden/varchar_nested_types-5-5b28e1fdb28b365ef419008a4752ed53 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-6-a47b99c355df4aad56dceb7f81a7fd5b b/sql/hive/src/test/resources/golden/varchar_nested_types-6-a47b99c355df4aad56dceb7f81a7fd5b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-7-8c483a7a0e148ca13a292a625f8702f1 b/sql/hive/src/test/resources/golden/varchar_nested_types-7-8c483a7a0e148ca13a292a625f8702f1 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-8-94309e2b4e68ab7e25f7d9656f10b352 b/sql/hive/src/test/resources/golden/varchar_nested_types-8-94309e2b4e68ab7e25f7d9656f10b352 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_nested_types-9-f248796769bc7f57cf56a75034a45520 b/sql/hive/src/test/resources/golden/varchar_nested_types-9-f248796769bc7f57cf56a75034a45520 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-0-750a23ebdd77f32b555d4caba7ac5445 b/sql/hive/src/test/resources/golden/varchar_serde-0-750a23ebdd77f32b555d4caba7ac5445 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-1-6af2fafa0ffdb36eec00f28ed8e1d76d b/sql/hive/src/test/resources/golden/varchar_serde-1-6af2fafa0ffdb36eec00f28ed8e1d76d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-10-496280d9365ee601d9b68a91495d7160 b/sql/hive/src/test/resources/golden/varchar_serde-10-496280d9365ee601d9b68a91495d7160 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-11-2f4d5f574f659df2bd0fb97f2d50a36e b/sql/hive/src/test/resources/golden/varchar_serde-11-2f4d5f574f659df2bd0fb97f2d50a36e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-12-80727f22f1343407ba9200c86ed84280 b/sql/hive/src/test/resources/golden/varchar_serde-12-80727f22f1343407ba9200c86ed84280 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-13-4829e6e5822c73fb33ba3d619b4bd31e b/sql/hive/src/test/resources/golden/varchar_serde-13-4829e6e5822c73fb33ba3d619b4bd31e new file mode 100644 index 0000000000000..3f02a574d3dd5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-13-4829e6e5822c73fb33ba3d619b4bd31e @@ -0,0 +1,5 @@ +474 val_475 +62 val_63 +468 val_469 +272 val_273 +448 val_449 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-14-4794ee93811ce3a81f64c65aed0b8b13 b/sql/hive/src/test/resources/golden/varchar_serde-14-4794ee93811ce3a81f64c65aed0b8b13 new file mode 100644 index 0000000000000..1e2a6a6562290 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-14-4794ee93811ce3a81f64c65aed0b8b13 @@ -0,0 +1,5 @@ +val_0 3 +val_1 2 +val_10 1 +val_100 2 +val_101 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-15-6ae634e1ae1aa0730a33396bce5a6604 b/sql/hive/src/test/resources/golden/varchar_serde-15-6ae634e1ae1aa0730a33396bce5a6604 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-16-516202183287d734d35d8c7788d22652 b/sql/hive/src/test/resources/golden/varchar_serde-16-516202183287d734d35d8c7788d22652 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-17-8d4419222a728e2bbc6a464b5a0b5f7a b/sql/hive/src/test/resources/golden/varchar_serde-17-8d4419222a728e2bbc6a464b5a0b5f7a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-18-b2dfd28d6a5b1e6f4556ad19755b739d b/sql/hive/src/test/resources/golden/varchar_serde-18-b2dfd28d6a5b1e6f4556ad19755b739d new file mode 100644 index 0000000000000..3f02a574d3dd5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-18-b2dfd28d6a5b1e6f4556ad19755b739d @@ -0,0 +1,5 @@ +474 val_475 +62 val_63 +468 val_469 +272 val_273 +448 val_449 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-19-f258df2db09e9cc0e049e85e6ad950ad b/sql/hive/src/test/resources/golden/varchar_serde-19-f258df2db09e9cc0e049e85e6ad950ad new file mode 100644 index 0000000000000..1e2a6a6562290 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-19-f258df2db09e9cc0e049e85e6ad950ad @@ -0,0 +1,5 @@ +val_0 3 +val_1 2 +val_10 1 +val_100 2 +val_101 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-2-87ba3f40293b9c79fcdb3064d964232e b/sql/hive/src/test/resources/golden/varchar_serde-2-87ba3f40293b9c79fcdb3064d964232e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-20-dcbc6c836bd9b95be56dd0c9c3ea83d2 b/sql/hive/src/test/resources/golden/varchar_serde-20-dcbc6c836bd9b95be56dd0c9c3ea83d2 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-21-64536c77ae91bfb6cf7f93f178c6200b b/sql/hive/src/test/resources/golden/varchar_serde-21-64536c77ae91bfb6cf7f93f178c6200b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-22-e7fea2396e28d9db1dc9dea3aacc7b7 b/sql/hive/src/test/resources/golden/varchar_serde-22-e7fea2396e28d9db1dc9dea3aacc7b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-23-d4dfc5f1e98b84b16b2b5b1d50917b70 b/sql/hive/src/test/resources/golden/varchar_serde-23-d4dfc5f1e98b84b16b2b5b1d50917b70 new file mode 100644 index 0000000000000..3f02a574d3dd5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-23-d4dfc5f1e98b84b16b2b5b1d50917b70 @@ -0,0 +1,5 @@ +474 val_475 +62 val_63 +468 val_469 +272 val_273 +448 val_449 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-24-770169b632b76cedcd6dfb87fdc46575 b/sql/hive/src/test/resources/golden/varchar_serde-24-770169b632b76cedcd6dfb87fdc46575 new file mode 100644 index 0000000000000..1e2a6a6562290 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-24-770169b632b76cedcd6dfb87fdc46575 @@ -0,0 +1,5 @@ +val_0 3 +val_1 2 +val_10 1 +val_100 2 +val_101 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-25-3470a259b04e126c655531491787e2fc b/sql/hive/src/test/resources/golden/varchar_serde-25-3470a259b04e126c655531491787e2fc new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-26-55808e190e0ab81dcdc1feb52543ad9f b/sql/hive/src/test/resources/golden/varchar_serde-26-55808e190e0ab81dcdc1feb52543ad9f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-27-8fe526fdd347c25529a383f27ad20566 b/sql/hive/src/test/resources/golden/varchar_serde-27-8fe526fdd347c25529a383f27ad20566 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-28-5e4de93349ba89a8344bb799ad60678e b/sql/hive/src/test/resources/golden/varchar_serde-28-5e4de93349ba89a8344bb799ad60678e new file mode 100644 index 0000000000000..3f02a574d3dd5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-28-5e4de93349ba89a8344bb799ad60678e @@ -0,0 +1,5 @@ +474 val_475 +62 val_63 +468 val_469 +272 val_273 +448 val_449 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-29-42b8e7b82cd061dfd388fbf13c8f6b0c b/sql/hive/src/test/resources/golden/varchar_serde-29-42b8e7b82cd061dfd388fbf13c8f6b0c new file mode 100644 index 0000000000000..1e2a6a6562290 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-29-42b8e7b82cd061dfd388fbf13c8f6b0c @@ -0,0 +1,5 @@ +val_0 3 +val_1 2 +val_10 1 +val_100 2 +val_101 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-3-d2a0276dbf0ab98a4aa5192b7c0f2709 b/sql/hive/src/test/resources/golden/varchar_serde-3-d2a0276dbf0ab98a4aa5192b7c0f2709 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-30-c7a29f8b2668b31bb34cafdc1e6f3c9a b/sql/hive/src/test/resources/golden/varchar_serde-30-c7a29f8b2668b31bb34cafdc1e6f3c9a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-31-db1e88efcd55aaef567edaa89c1c1e12 b/sql/hive/src/test/resources/golden/varchar_serde-31-db1e88efcd55aaef567edaa89c1c1e12 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-32-bffe130dfc0a3b6a072b5ebbaf092cfb b/sql/hive/src/test/resources/golden/varchar_serde-32-bffe130dfc0a3b6a072b5ebbaf092cfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-33-620729dc7661c22f1acdc425a7cf0364 b/sql/hive/src/test/resources/golden/varchar_serde-33-620729dc7661c22f1acdc425a7cf0364 new file mode 100644 index 0000000000000..3f02a574d3dd5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-33-620729dc7661c22f1acdc425a7cf0364 @@ -0,0 +1,5 @@ +474 val_475 +62 val_63 +468 val_469 +272 val_273 +448 val_449 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-34-807ee73e1cd66704dd585f7e0de954d9 b/sql/hive/src/test/resources/golden/varchar_serde-34-807ee73e1cd66704dd585f7e0de954d9 new file mode 100644 index 0000000000000..1e2a6a6562290 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-34-807ee73e1cd66704dd585f7e0de954d9 @@ -0,0 +1,5 @@ +val_0 3 +val_1 2 +val_10 1 +val_100 2 +val_101 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-35-750a23ebdd77f32b555d4caba7ac5445 b/sql/hive/src/test/resources/golden/varchar_serde-35-750a23ebdd77f32b555d4caba7ac5445 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-36-6af2fafa0ffdb36eec00f28ed8e1d76d b/sql/hive/src/test/resources/golden/varchar_serde-36-6af2fafa0ffdb36eec00f28ed8e1d76d new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-37-87ba3f40293b9c79fcdb3064d964232e b/sql/hive/src/test/resources/golden/varchar_serde-37-87ba3f40293b9c79fcdb3064d964232e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-38-d2a0276dbf0ab98a4aa5192b7c0f2709 b/sql/hive/src/test/resources/golden/varchar_serde-38-d2a0276dbf0ab98a4aa5192b7c0f2709 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-39-8b5f81c27c41807c757522e257a8003f b/sql/hive/src/test/resources/golden/varchar_serde-39-8b5f81c27c41807c757522e257a8003f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-4-8b5f81c27c41807c757522e257a8003f b/sql/hive/src/test/resources/golden/varchar_serde-4-8b5f81c27c41807c757522e257a8003f new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-40-787193a1679a2153c037d3e4c8192bba b/sql/hive/src/test/resources/golden/varchar_serde-40-787193a1679a2153c037d3e4c8192bba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-5-787193a1679a2153c037d3e4c8192bba b/sql/hive/src/test/resources/golden/varchar_serde-5-787193a1679a2153c037d3e4c8192bba new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-6-122f15d410249b554e12eccdfa46cc43 b/sql/hive/src/test/resources/golden/varchar_serde-6-122f15d410249b554e12eccdfa46cc43 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-7-81e68559f5ba5fe6d3c590ae75fdd810 b/sql/hive/src/test/resources/golden/varchar_serde-7-81e68559f5ba5fe6d3c590ae75fdd810 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_serde-8-3bfa13085b001c1a333cc72d5c9f4244 b/sql/hive/src/test/resources/golden/varchar_serde-8-3bfa13085b001c1a333cc72d5c9f4244 new file mode 100644 index 0000000000000..3f02a574d3dd5 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-8-3bfa13085b001c1a333cc72d5c9f4244 @@ -0,0 +1,5 @@ +474 val_475 +62 val_63 +468 val_469 +272 val_273 +448 val_449 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_serde-9-ec43be632e5f74057aba54c4f562c601 b/sql/hive/src/test/resources/golden/varchar_serde-9-ec43be632e5f74057aba54c4f562c601 new file mode 100644 index 0000000000000..1e2a6a6562290 --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_serde-9-ec43be632e5f74057aba54c4f562c601 @@ -0,0 +1,5 @@ +val_0 3 +val_1 2 +val_10 1 +val_100 2 +val_101 2 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_union1-0-433f0ff2f1c8dc92fba226759326067e b/sql/hive/src/test/resources/golden/varchar_union1-0-433f0ff2f1c8dc92fba226759326067e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-1-2d1b9ffae67b8cff19b5c0c9ada38cec b/sql/hive/src/test/resources/golden/varchar_union1-1-2d1b9ffae67b8cff19b5c0c9ada38cec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-10-6ec48d5fea3e4a35275956b9b4467715 b/sql/hive/src/test/resources/golden/varchar_union1-10-6ec48d5fea3e4a35275956b9b4467715 new file mode 100644 index 0000000000000..173eb955a485a --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_union1-10-6ec48d5fea3e4a35275956b9b4467715 @@ -0,0 +1,4 @@ +1 abc +1 abc +2 abc +3 abc \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_union1-11-78f6e219b974e1fdf3663e46f57892a9 b/sql/hive/src/test/resources/golden/varchar_union1-11-78f6e219b974e1fdf3663e46f57892a9 new file mode 100644 index 0000000000000..173eb955a485a --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_union1-11-78f6e219b974e1fdf3663e46f57892a9 @@ -0,0 +1,4 @@ +1 abc +1 abc +2 abc +3 abc \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/varchar_union1-12-433f0ff2f1c8dc92fba226759326067e b/sql/hive/src/test/resources/golden/varchar_union1-12-433f0ff2f1c8dc92fba226759326067e new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-13-2d1b9ffae67b8cff19b5c0c9ada38cec b/sql/hive/src/test/resources/golden/varchar_union1-13-2d1b9ffae67b8cff19b5c0c9ada38cec new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-14-217ba1b02c693576b652d719970a0048 b/sql/hive/src/test/resources/golden/varchar_union1-14-217ba1b02c693576b652d719970a0048 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-2-217ba1b02c693576b652d719970a0048 b/sql/hive/src/test/resources/golden/varchar_union1-2-217ba1b02c693576b652d719970a0048 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-3-ce2fdb2b3ec26c9a6b351d10ac8283ca b/sql/hive/src/test/resources/golden/varchar_union1-3-ce2fdb2b3ec26c9a6b351d10ac8283ca new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-4-86e7275fc6c5ce64da5031aa7c79821b b/sql/hive/src/test/resources/golden/varchar_union1-4-86e7275fc6c5ce64da5031aa7c79821b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-5-bf77db56df2b2a077d668e47211be708 b/sql/hive/src/test/resources/golden/varchar_union1-5-bf77db56df2b2a077d668e47211be708 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-6-67e66fa14dddc17757436539eca9ef64 b/sql/hive/src/test/resources/golden/varchar_union1-6-67e66fa14dddc17757436539eca9ef64 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-7-48766d09c5ed1b6abe9ce0b8996adf36 b/sql/hive/src/test/resources/golden/varchar_union1-7-48766d09c5ed1b6abe9ce0b8996adf36 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-8-3a6c2e0125fb0c18f5f783b5d3c409d7 b/sql/hive/src/test/resources/golden/varchar_union1-8-3a6c2e0125fb0c18f5f783b5d3c409d7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/varchar_union1-9-b9455ffec62df97cfec63204ce02a110 b/sql/hive/src/test/resources/golden/varchar_union1-9-b9455ffec62df97cfec63204ce02a110 new file mode 100644 index 0000000000000..173eb955a485a --- /dev/null +++ b/sql/hive/src/test/resources/golden/varchar_union1-9-b9455ffec62df97cfec63204ce02a110 @@ -0,0 +1,4 @@ +1 abc +1 abc +2 abc +3 abc \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/view-0-5528e36b3b0f5b14313898cc45f9c23a b/sql/hive/src/test/resources/golden/view-0-5528e36b3b0f5b14313898cc45f9c23a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-1-7650b86c86dd6b1a99c86ddc5a31bd63 b/sql/hive/src/test/resources/golden/view-1-7650b86c86dd6b1a99c86ddc5a31bd63 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-10-7aae4448a05e8a8a3bace7522e952cd0 b/sql/hive/src/test/resources/golden/view-10-7aae4448a05e8a8a3bace7522e952cd0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-11-dc95343d3e57846485dd543476391376 b/sql/hive/src/test/resources/golden/view-11-dc95343d3e57846485dd543476391376 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-12-371764e1cae31ea0518c03060528d239 b/sql/hive/src/test/resources/golden/view-12-371764e1cae31ea0518c03060528d239 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-13-2abce88008f8a19164758ee821aaa8a6 b/sql/hive/src/test/resources/golden/view-13-2abce88008f8a19164758ee821aaa8a6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-14-deb504f4f70fd7db975950c3c47959ee b/sql/hive/src/test/resources/golden/view-14-deb504f4f70fd7db975950c3c47959ee new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-15-6f2797b6f81943d3b53b8d247ae8512b b/sql/hive/src/test/resources/golden/view-15-6f2797b6f81943d3b53b8d247ae8512b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-2-9c529f486fa81a032bfe1253808fca8 b/sql/hive/src/test/resources/golden/view-2-9c529f486fa81a032bfe1253808fca8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-3-89c80c0e90409d5e304775c9f420915a b/sql/hive/src/test/resources/golden/view-3-89c80c0e90409d5e304775c9f420915a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-4-4a64d1a623ca71e515796787dbd0f904 b/sql/hive/src/test/resources/golden/view-4-4a64d1a623ca71e515796787dbd0f904 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-5-f6d1bce095ecbf1aa484891392fdb07b b/sql/hive/src/test/resources/golden/view-5-f6d1bce095ecbf1aa484891392fdb07b new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-6-47b5043f03a84695b6784682b4402ac8 b/sql/hive/src/test/resources/golden/view-6-47b5043f03a84695b6784682b4402ac8 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-7-8b1bbdadfd1e11af1b56064196164e58 b/sql/hive/src/test/resources/golden/view-7-8b1bbdadfd1e11af1b56064196164e58 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-8-60d2f3ee552ae7021f9fa72f0dcf2867 b/sql/hive/src/test/resources/golden/view-8-60d2f3ee552ae7021f9fa72f0dcf2867 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view-9-66c68babac10ae0f645fe8334c5a42d4 b/sql/hive/src/test/resources/golden/view-9-66c68babac10ae0f645fe8334c5a42d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-0-89bd46ad04f967f1f5ee17c6f201aacf b/sql/hive/src/test/resources/golden/view_cast-0-89bd46ad04f967f1f5ee17c6f201aacf new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-1-85685a26971fb51ab6e28f9c5e8421bb b/sql/hive/src/test/resources/golden/view_cast-1-85685a26971fb51ab6e28f9c5e8421bb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-10-a7c865e5180df8d73dba90ede8be0d45 b/sql/hive/src/test/resources/golden/view_cast-10-a7c865e5180df8d73dba90ede8be0d45 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-2-af2050aa97f0cd930cb1b8ec791007de b/sql/hive/src/test/resources/golden/view_cast-2-af2050aa97f0cd930cb1b8ec791007de new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-3-2a232c31d056e6abc76f8ebe53ccd97 b/sql/hive/src/test/resources/golden/view_cast-3-2a232c31d056e6abc76f8ebe53ccd97 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-4-d9edb83f4cf847e141d97012314917d4 b/sql/hive/src/test/resources/golden/view_cast-4-d9edb83f4cf847e141d97012314917d4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-5-6db508ccd85562a9ca7841fb0a08981a b/sql/hive/src/test/resources/golden/view_cast-5-6db508ccd85562a9ca7841fb0a08981a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-6-aa5be3380ddc7104258567b406d93cc5 b/sql/hive/src/test/resources/golden/view_cast-6-aa5be3380ddc7104258567b406d93cc5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-7-78ac3800b22682b31708b6a09b402bfb b/sql/hive/src/test/resources/golden/view_cast-7-78ac3800b22682b31708b6a09b402bfb new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-8-2cc0c576f0a008abf5bdf3308d500869 b/sql/hive/src/test/resources/golden/view_cast-8-2cc0c576f0a008abf5bdf3308d500869 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_cast-9-f306bf3ad1c2a99f6f1843db44d7dfb4 b/sql/hive/src/test/resources/golden/view_cast-9-f306bf3ad1c2a99f6f1843db44d7dfb4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_inputs-0-9e67dfd1d595ab8b1935b789645f76c0 b/sql/hive/src/test/resources/golden/view_inputs-0-9e67dfd1d595ab8b1935b789645f76c0 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/view_inputs-1-5af97e73bc3841793440105aae766bbe b/sql/hive/src/test/resources/golden/view_inputs-1-5af97e73bc3841793440105aae766bbe new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/virtual_column-0-9bacd1908e56d621913a74fe9a583d9d b/sql/hive/src/test/resources/golden/virtual_column-0-9bacd1908e56d621913a74fe9a583d9d new file mode 100644 index 0000000000000..ea00577174e43 --- /dev/null +++ b/sql/hive/src/test/resources/golden/virtual_column-0-9bacd1908e56d621913a74fe9a583d9d @@ -0,0 +1,500 @@ +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 238 0 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 86 12 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 311 22 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 27 34 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 165 44 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 409 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 255 68 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 278 80 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 98 92 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 484 102 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 265 114 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 193 126 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 401 138 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 150 150 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 273 162 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 224 174 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 369 186 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 66 198 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 128 208 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 213 220 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 146 232 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 406 244 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 429 256 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 374 268 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 152 280 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 469 292 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 145 304 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 495 316 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 37 328 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 327 338 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 281 350 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 277 362 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 209 374 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 15 386 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 82 396 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 403 406 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 166 418 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 417 430 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 430 442 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 252 454 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 292 466 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 219 478 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 287 490 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 153 502 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 193 514 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 338 526 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 446 538 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 459 550 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 394 562 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 237 574 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 482 586 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 174 598 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 413 610 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 494 622 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 207 634 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 199 646 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 466 658 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 208 670 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 174 682 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 399 694 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 396 706 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 247 718 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 417 730 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 489 742 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 162 754 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 377 766 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 397 778 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 309 790 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 365 802 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 266 814 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 439 826 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 342 838 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 367 850 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 325 862 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 167 874 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 195 886 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 475 898 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 17 910 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 113 920 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 155 932 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 203 944 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 339 956 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 0 968 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 455 976 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 128 988 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 311 1000 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 316 1012 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 57 1024 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 302 1034 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 205 1046 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 149 1058 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 438 1070 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 345 1082 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 129 1094 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 170 1106 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 20 1118 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 489 1128 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 157 1140 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 378 1152 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 221 1164 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 92 1176 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 111 1186 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 47 1198 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 72 1208 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 4 1218 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 280 1226 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 35 1238 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 427 1248 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 277 1260 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 208 1272 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 356 1284 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 399 1296 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 169 1308 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 382 1320 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 498 1332 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 125 1344 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 386 1356 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 437 1368 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 469 1380 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 192 1392 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 286 1404 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 187 1416 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 176 1428 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 54 1440 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 459 1450 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 51 1462 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 138 1472 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 103 1484 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 239 1496 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 213 1508 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 216 1520 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 430 1532 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 278 1544 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 176 1556 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 289 1568 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 221 1580 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 65 1592 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 318 1602 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 332 1614 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 311 1626 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 275 1638 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 137 1650 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 241 1662 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 83 1674 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 333 1684 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 180 1696 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 284 1708 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 12 1720 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 230 1730 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 181 1742 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 67 1754 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 260 1764 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 404 1776 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 384 1788 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 489 1800 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 353 1812 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 373 1824 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 272 1836 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 138 1848 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 217 1860 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 84 1872 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 348 1882 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 466 1894 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 58 1906 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 8 1916 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 411 1924 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 230 1936 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 208 1948 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 348 1960 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 24 1972 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 463 1982 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 431 1994 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 179 2006 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 172 2018 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 42 2030 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 129 2040 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 158 2052 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 119 2064 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 496 2076 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 0 2088 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 322 2096 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 197 2108 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 468 2120 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 393 2132 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 454 2144 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 100 2156 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 298 2168 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 199 2180 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 191 2192 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 418 2204 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 96 2216 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 26 2226 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 165 2236 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 327 2248 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 230 2260 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 205 2272 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 120 2284 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 131 2296 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 51 2308 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 404 2318 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 43 2330 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 436 2340 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 156 2352 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 469 2364 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 468 2376 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 308 2388 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 95 2400 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 196 2410 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 288 2422 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 481 2434 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 457 2446 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 98 2458 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 282 2468 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 197 2480 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 187 2492 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 318 2504 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 318 2516 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 409 2528 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 470 2540 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 137 2552 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 369 2564 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 316 2576 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 169 2588 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 413 2600 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 85 2612 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 77 2622 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 0 2632 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 490 2640 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 87 2652 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 364 2662 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 179 2674 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 118 2686 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 134 2698 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 395 2710 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 282 2722 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 138 2734 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 238 2746 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 419 2758 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 15 2770 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 118 2780 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 72 2792 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 90 2802 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 307 2812 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 19 2824 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 435 2834 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 10 2846 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 277 2856 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 273 2868 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 306 2880 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 224 2892 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 309 2904 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 389 2916 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 327 2928 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 242 2940 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 369 2952 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 392 2964 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 272 2976 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 331 2988 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 401 3000 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 242 3012 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 452 3024 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 177 3036 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 226 3048 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 5 3060 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 497 3068 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 402 3080 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 396 3092 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 317 3104 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 395 3116 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 58 3128 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 35 3138 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 336 3148 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 95 3160 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 11 3170 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 168 3180 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 34 3192 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 229 3202 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 233 3214 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 143 3226 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 472 3238 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 322 3250 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 498 3262 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 160 3274 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 195 3286 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 42 3298 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 321 3308 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 430 3320 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 119 3332 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 489 3344 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 458 3356 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 78 3368 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 76 3378 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 41 3388 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 223 3398 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 492 3410 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 149 3422 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 449 3434 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 218 3446 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 228 3458 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 138 3470 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 453 3482 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 30 3494 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 209 3504 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 64 3516 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 468 3526 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 76 3538 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 74 3548 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 342 3558 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 69 3570 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 230 3580 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 33 3592 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 368 3602 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 103 3614 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 296 3626 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 113 3638 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 216 3650 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 367 3662 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 344 3674 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 167 3686 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 274 3698 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 219 3710 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 239 3722 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 485 3734 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 116 3746 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 223 3758 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 256 3770 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 263 3782 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 70 3794 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 487 3804 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 480 3816 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 401 3828 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 288 3840 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 191 3852 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 5 3864 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 244 3872 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 438 3884 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 128 3896 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 467 3908 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 432 3920 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 202 3932 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 316 3944 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 229 3956 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 469 3968 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 463 3980 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 280 3992 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 2 4004 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 35 4012 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 283 4022 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 331 4034 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 235 4046 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 80 4058 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 44 4068 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 193 4078 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 321 4090 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 335 4102 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 104 4114 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 466 4126 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 366 4138 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 175 4150 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 403 4162 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 483 4174 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 53 4186 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 105 4196 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 257 4208 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 406 4220 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 409 4232 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 190 4244 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 406 4256 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 401 4268 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 114 4280 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 258 4292 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 90 4304 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 203 4314 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 262 4326 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 348 4338 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 424 4350 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 12 4362 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 396 4372 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 201 4384 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 217 4396 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 164 4408 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 431 4420 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 454 4432 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 478 4444 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 298 4456 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 125 4468 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 431 4480 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 164 4492 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 424 4504 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 187 4516 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 382 4528 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 5 4540 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 70 4548 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 397 4558 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 480 4570 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 291 4582 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 24 4594 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 351 4604 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 255 4616 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 104 4628 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 70 4640 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 163 4650 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 438 4662 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 119 4674 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 414 4686 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 200 4698 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 491 4710 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 237 4722 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 439 4734 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 360 4746 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 248 4758 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 479 4770 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 305 4782 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 417 4794 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 199 4806 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 444 4818 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 120 4830 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 429 4842 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 169 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 443 4866 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 323 4878 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 325 4890 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 277 4902 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 230 4914 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 478 4926 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 178 4938 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 468 4950 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 310 4962 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 317 4974 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 333 4986 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 493 4998 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 460 5010 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 207 5022 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 249 5034 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 265 5046 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 480 5058 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 83 5070 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 136 5080 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 353 5092 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 172 5104 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 214 5116 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 462 5128 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 233 5140 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 406 5152 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 133 5164 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 175 5176 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 189 5188 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 454 5200 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 375 5212 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 401 5224 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 421 5236 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 407 5248 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 384 5260 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 256 5272 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 26 5284 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 134 5294 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 67 5306 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 384 5316 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 379 5328 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 18 5340 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 462 5350 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 492 5362 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 100 5374 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 298 5386 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 9 5398 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 341 5406 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 498 5418 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 146 5430 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 458 5442 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 362 5454 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 186 5466 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 285 5478 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 348 5490 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 167 5502 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 18 5514 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 273 5524 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 183 5536 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 281 5548 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 344 5560 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 97 5572 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 469 5582 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 315 5594 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 84 5606 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 28 5616 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 37 5626 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 448 5636 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 152 5648 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 348 5660 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 307 5672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 194 5684 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 414 5696 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 477 5708 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 222 5720 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 126 5732 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 90 5744 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 169 5754 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 403 5766 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 400 5778 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 200 5790 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 97 5802 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/virtual_column-1-3ebad682d4ff6ca9c806db3471cf3945 b/sql/hive/src/test/resources/golden/virtual_column-1-3ebad682d4ff6ca9c806db3471cf3945 new file mode 100644 index 0000000000000..df07a9da29f01 --- /dev/null +++ b/sql/hive/src/test/resources/golden/virtual_column-1-3ebad682d4ff6ca9c806db3471cf3945 @@ -0,0 +1,309 @@ +0 3 +2 1 +4 1 +5 3 +8 1 +9 1 +10 1 +11 1 +12 2 +15 2 +17 1 +18 2 +19 1 +20 1 +24 2 +26 2 +27 1 +28 1 +30 1 +33 1 +34 1 +35 3 +37 2 +41 1 +42 2 +43 1 +44 1 +47 1 +51 2 +53 1 +54 1 +57 1 +58 2 +64 1 +65 1 +66 1 +67 2 +69 1 +70 3 +72 2 +74 1 +76 2 +77 1 +78 1 +80 1 +82 1 +83 2 +84 2 +85 1 +86 1 +87 1 +90 3 +92 1 +95 2 +96 1 +97 2 +98 2 +100 2 +103 2 +104 2 +105 1 +111 1 +113 2 +114 1 +116 1 +118 2 +119 3 +120 2 +125 2 +126 1 +128 3 +129 2 +131 1 +133 1 +134 2 +136 1 +137 2 +138 4 +143 1 +145 1 +146 2 +149 2 +150 1 +152 2 +153 1 +155 1 +156 1 +157 1 +158 1 +160 1 +162 1 +163 1 +164 2 +165 2 +166 1 +167 3 +168 1 +169 4 +170 1 +172 2 +174 2 +175 2 +176 2 +177 1 +178 1 +179 2 +180 1 +181 1 +183 1 +186 1 +187 3 +189 1 +190 1 +191 2 +192 1 +193 3 +194 1 +195 2 +196 1 +197 2 +199 3 +200 2 +201 1 +202 1 +203 2 +205 2 +207 2 +208 3 +209 2 +213 2 +214 1 +216 2 +217 2 +218 1 +219 2 +221 2 +222 1 +223 2 +224 2 +226 1 +228 1 +229 2 +230 5 +233 2 +235 1 +237 2 +238 2 +239 2 +241 1 +242 2 +244 1 +247 1 +248 1 +249 1 +252 1 +255 2 +256 2 +257 1 +258 1 +260 1 +262 1 +263 1 +265 2 +266 1 +272 2 +273 3 +274 1 +275 1 +277 4 +278 2 +280 2 +281 2 +282 2 +283 1 +284 1 +285 1 +286 1 +287 1 +288 2 +289 1 +291 1 +292 1 +296 1 +298 3 +302 1 +305 1 +306 1 +307 2 +308 1 +309 2 +310 1 +311 3 +315 1 +316 3 +317 2 +318 3 +321 2 +322 2 +323 1 +325 2 +327 3 +331 2 +332 1 +333 2 +335 1 +336 1 +338 1 +339 1 +341 1 +342 2 +344 2 +345 1 +348 5 +351 1 +353 2 +356 1 +360 1 +362 1 +364 1 +365 1 +366 1 +367 2 +368 1 +369 3 +373 1 +374 1 +375 1 +377 1 +378 1 +379 1 +382 2 +384 3 +386 1 +389 1 +392 1 +393 1 +394 1 +395 2 +396 3 +397 2 +399 2 +400 1 +401 5 +402 1 +403 3 +404 2 +406 4 +407 1 +409 3 +411 1 +413 2 +414 2 +417 3 +418 1 +419 1 +421 1 +424 2 +427 1 +429 2 +430 3 +431 3 +432 1 +435 1 +436 1 +437 1 +438 3 +439 2 +443 1 +444 1 +446 1 +448 1 +449 1 +452 1 +453 1 +454 3 +455 1 +457 1 +458 2 +459 2 +460 1 +462 2 +463 2 +466 3 +467 1 +468 4 +469 5 +470 1 +472 1 +475 1 +477 1 +478 2 +479 1 +480 3 +481 1 +482 1 +483 1 +484 1 +485 1 +487 1 +489 4 +490 1 +491 1 +492 2 +493 1 +494 1 +495 1 +496 1 +497 1 +498 3 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/virtual_column-10-2915b222a58bc994246591e536d388b4 b/sql/hive/src/test/resources/golden/virtual_column-10-2915b222a58bc994246591e536d388b4 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/virtual_column-2-1536b365fe0a94b30a62364996529966 b/sql/hive/src/test/resources/golden/virtual_column-2-1536b365fe0a94b30a62364996529966 new file mode 100644 index 0000000000000..2a0cdc268347a --- /dev/null +++ b/sql/hive/src/test/resources/golden/virtual_column-2-1536b365fe0a94b30a62364996529966 @@ -0,0 +1,309 @@ +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 0 [968,2632,2088] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 2 [4004] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 4 [1218] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 5 [4540,3864,3060] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 8 [1916] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 9 [5398] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 10 [2846] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 11 [3170] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 12 [4362,1720] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 15 [386,2770] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 17 [910] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 18 [5514,5340] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 19 [2824] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 20 [1118] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 24 [1972,4594] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 26 [5284,2226] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 27 [34] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 28 [5616] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 30 [3494] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 33 [3592] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 34 [3192] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 35 [1238,4012,3138] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 37 [328,5626] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 41 [3388] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 42 [3298,2030] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 43 [2330] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 44 [4068] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 47 [1198] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 51 [1462,2308] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 53 [4186] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 54 [1440] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 57 [1024] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 58 [3128,1906] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 64 [3516] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 65 [1592] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 66 [198] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 67 [5306,1754] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 69 [3570] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 70 [3794,4640,4548] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 72 [2792,1208] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 74 [3548] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 76 [3538,3378] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 77 [2622] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 78 [3368] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 80 [4058] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 82 [396] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 83 [5070,1674] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 84 [5606,1872] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 85 [2612] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 86 [12] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 87 [2652] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 90 [2802,5744,4304] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 92 [1176] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 95 [2400,3160] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 96 [2216] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 97 [5572,5802] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 98 [2458,92] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 100 [5374,2156] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 103 [3614,1484] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 104 [4628,4114] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 105 [4196] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 111 [1186] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 113 [920,3638] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 114 [4280] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 116 [3746] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 118 [2780,2686] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 119 [2064,4674,3332] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 120 [2284,4830] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 125 [4468,1344] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 126 [5732] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 128 [3896,988,208] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 129 [2040,1094] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 131 [2296] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 133 [5164] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 134 [2698,5294] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 136 [5080] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 137 [2552,1650] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 138 [2734,1848,1472,3470] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 143 [3226] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 145 [304] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 146 [232,5430] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 149 [3422,1058] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 150 [150] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 152 [280,5648] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 153 [502] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 155 [932] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 156 [2352] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 157 [1140] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 158 [2052] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 160 [3274] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 162 [754] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 163 [4650] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 164 [4492,4408] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 165 [2236,44] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 166 [418] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 167 [5502,874,3686] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 168 [3180] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 169 [5754,1308,2588,4854] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 170 [1106] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 172 [2018,5104] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 174 [682,598] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 175 [5176,4150] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 176 [1428,1556] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 177 [3036] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 178 [4938] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 179 [2674,2006] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 180 [1696] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 181 [1742] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 183 [5536] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 186 [5466] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 187 [2492,1416,4516] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 189 [5188] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 190 [4244] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 191 [3852,2192] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 192 [1392] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 193 [514,126,4078] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 194 [5684] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 195 [3286,886] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 196 [2410] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 197 [2480,2108] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 199 [646,2180,4806] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 200 [4698,5790] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 201 [4384] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 202 [3932] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 203 [4314,944] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 205 [1046,2272] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 207 [5022,634] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 208 [670,1948,1272] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 209 [3504,374] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 213 [220,1508] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 214 [5116] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 216 [1520,3650] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 217 [4396,1860] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 218 [3446] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 219 [478,3710] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 221 [1580,1164] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 222 [5720] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 223 [3398,3758] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 224 [174,2892] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 226 [3048] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 228 [3458] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 229 [3202,3956] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 230 [1730,1936,4914,2260,3580] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 233 [5140,3214] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 235 [4046] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 237 [4722,574] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 238 [0,2746] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 239 [1496,3722] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 241 [1662] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 242 [2940,3012] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 244 [3872] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 247 [718] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 248 [4758] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 249 [5034] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 252 [454] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 255 [68,4616] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 256 [5272,3770] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 257 [4208] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 258 [4292] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 260 [1764] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 262 [4326] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 263 [3782] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 265 [114,5046] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 266 [814] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 272 [1836,2976] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 273 [2868,5524,162] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 274 [3698] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 275 [1638] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 277 [4902,1260,2856,362] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 278 [1544,80] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 280 [3992,1226] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 281 [350,5548] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 282 [2468,2722] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 283 [4022] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 284 [1708] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 285 [5478] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 286 [1404] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 287 [490] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 288 [2422,3840] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 289 [1568] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 291 [4582] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 292 [466] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 296 [3626] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 298 [5386,4456,2168] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 302 [1034] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 305 [4782] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 306 [2880] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 307 [2812,5672] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 308 [2388] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 309 [790,2904] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 310 [4962] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 311 [1000,1626,22] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 315 [5594] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 316 [3944,2576,1012] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 317 [3104,4974] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 318 [2504,1602,2516] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 321 [4090,3308] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 322 [3250,2096] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 323 [4878] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 325 [4890,862] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 327 [2928,338,2248] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 331 [2988,4034] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 332 [1614] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 333 [1684,4986] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 335 [4102] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 336 [3148] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 338 [526] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 339 [956] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 341 [5406] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 342 [3558,838] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 344 [3674,5560] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 345 [1082] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 348 [5660,1882,1960,4338,5490] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 351 [4604] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 353 [1812,5092] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 356 [1284] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 360 [4746] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 362 [5454] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 364 [2662] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 365 [802] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 366 [4138] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 367 [850,3662] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 368 [3602] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 369 [186,2564,2952] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 373 [1824] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 374 [268] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 375 [5212] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 377 [766] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 378 [1152] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 379 [5328] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 382 [1320,4528] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 384 [5316,5260,1788] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 386 [1356] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 389 [2916] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 392 [2964] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 393 [2132] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 394 [562] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 395 [3116,2710] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 396 [4372,706,3092] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 397 [4558,778] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 399 [694,1296] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 400 [5778] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 401 [138,3000,3828,4268,5224] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 402 [3080] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 403 [5766,4162,406] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 404 [1776,2318] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 406 [244,4220,4256,5152] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 407 [5248] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 409 [4232,56,2528] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 411 [1924] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 413 [610,2600] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 414 [5696,4686] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 417 [730,4794,430] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 418 [2204] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 419 [2758] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 421 [5236] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 424 [4350,4504] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 427 [1248] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 429 [4842,256] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 430 [442,1532,3320] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 431 [4420,1994,4480] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 432 [3920] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 435 [2834] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 436 [2340] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 437 [1368] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 438 [3884,4662,1070] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 439 [4734,826] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 443 [4866] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 444 [4818] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 446 [538] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 448 [5636] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 449 [3434] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 452 [3024] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 453 [3482] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 454 [2144,4432,5200] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 455 [976] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 457 [2446] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 458 [3356,5442] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 459 [550,1450] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 460 [5010] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 462 [5350,5128] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 463 [1982,3980] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 466 [658,1894,4126] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 467 [3908] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 468 [3526,4950,2120,2376] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 469 [292,3968,1380,5582,2364] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 470 [2540] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 472 [3238] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 475 [898] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 477 [5708] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 478 [4444,4926] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 479 [4770] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 480 [4570,5058,3816] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 481 [2434] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 482 [586] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 483 [4174] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 484 [102] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 485 [3734] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 487 [3804] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 489 [1128,1800,3344,742] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 490 [2640] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 491 [4710] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 492 [5362,3410] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 493 [4998] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 494 [622] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 495 [316] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 496 [2076] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 497 [3068] +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src/kv1.txt 498 [5418,3262,1332] \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/virtual_column-3-c66776673c986b59b27e704664935988 b/sql/hive/src/test/resources/golden/virtual_column-3-c66776673c986b59b27e704664935988 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/virtual_column-4-e47094c927b1091e31c185db0a4e69a6 b/sql/hive/src/test/resources/golden/virtual_column-4-e47094c927b1091e31c185db0a4e69a6 new file mode 100644 index 0000000000000..94754d8bd4c82 --- /dev/null +++ b/sql/hive/src/test/resources/golden/virtual_column-4-e47094c927b1091e31c185db0a4e69a6 @@ -0,0 +1 @@ +97 val_97 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/virtual_column-5-d137fa7c27bc98d5f1a33f666a07f6b7 b/sql/hive/src/test/resources/golden/virtual_column-5-d137fa7c27bc98d5f1a33f666a07f6b7 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/virtual_column-6-68d6973677af5c9f1f1f49360c3175e7 b/sql/hive/src/test/resources/golden/virtual_column-6-68d6973677af5c9f1f1f49360c3175e7 new file mode 100644 index 0000000000000..c227083464fb9 --- /dev/null +++ b/sql/hive/src/test/resources/golden/virtual_column-6-68d6973677af5c9f1f1f49360c3175e7 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/virtual_column-7-20d7d672a4289fbd1a5de485a8353ac6 b/sql/hive/src/test/resources/golden/virtual_column-7-20d7d672a4289fbd1a5de485a8353ac6 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/golden/virtual_column-8-2b312255c5d1dcf9a617b1ebfd8a00f7 b/sql/hive/src/test/resources/golden/virtual_column-8-2b312255c5d1dcf9a617b1ebfd8a00f7 new file mode 100644 index 0000000000000..e6902f60ff486 --- /dev/null +++ b/sql/hive/src/test/resources/golden/virtual_column-8-2b312255c5d1dcf9a617b1ebfd8a00f7 @@ -0,0 +1,500 @@ +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 0 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 0 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 0 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 2 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 4 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 5 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 5 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 5 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 8 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 9 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 10 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 11 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 12 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 12 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 15 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 15 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 17 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 18 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 18 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 19 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 20 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 24 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 24 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 26 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 26 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 27 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 28 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 30 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 33 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 34 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 35 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 35 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 35 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 37 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 37 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 41 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 42 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 42 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 43 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 44 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 47 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 51 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 51 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 53 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 54 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 57 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 58 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 58 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 64 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 65 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 66 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 67 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 67 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 69 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 70 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 70 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 70 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 72 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 72 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 74 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 76 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 76 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 77 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 78 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 80 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 82 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 83 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 83 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 84 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 84 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 85 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 86 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 87 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 90 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 90 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 90 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 92 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 95 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 95 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 96 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 97 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 97 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 98 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 98 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 100 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 100 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 103 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 103 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 104 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 104 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 105 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 111 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 113 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 113 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 114 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 116 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 118 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 118 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 119 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 119 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 119 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 120 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 120 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 125 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 125 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 126 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 128 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 128 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 128 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 129 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 129 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 131 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 133 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 134 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 134 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 136 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 137 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 137 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 138 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 138 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 138 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 138 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 143 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 145 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 146 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 146 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 149 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 149 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 150 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 152 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 152 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 153 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 155 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 156 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 157 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 158 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 160 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 162 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 163 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 164 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 164 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 165 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 165 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 166 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 167 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 167 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 167 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 168 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 169 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 169 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 169 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 169 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 170 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 172 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 172 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 174 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 174 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 175 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 175 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 176 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 176 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 177 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 178 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 179 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 179 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 180 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 181 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 183 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 186 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 187 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 187 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 187 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 189 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 190 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 191 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 191 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 192 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 193 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 193 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 193 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 194 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 195 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 195 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 196 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 197 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 197 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 199 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 199 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 199 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 200 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 200 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 201 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 202 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 203 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 203 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 205 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 205 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 207 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 207 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 208 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 208 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 208 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 209 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 209 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 213 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 213 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 214 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 216 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 216 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 217 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 217 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 218 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 219 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 219 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 221 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 221 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 222 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 223 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 223 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 224 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 224 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 226 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 228 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 229 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 229 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 230 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 230 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 230 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 230 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 230 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 233 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 233 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 235 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 237 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 237 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 238 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 238 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 239 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 239 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 241 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 242 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 242 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 244 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 247 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 248 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 249 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 252 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 255 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 255 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 256 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 256 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 257 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 258 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 260 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 262 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 263 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 265 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 265 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 266 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 272 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 272 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 273 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 273 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 273 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 274 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 275 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 277 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 277 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 277 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 277 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 278 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 278 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 280 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 280 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 281 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 281 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 282 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 282 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 283 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 284 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 285 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 286 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 287 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 288 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 288 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 289 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 291 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 292 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 296 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 298 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 298 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 298 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 302 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 305 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 306 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 307 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 307 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 308 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 309 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 309 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 310 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 311 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 311 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 311 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 315 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 316 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 316 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 316 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 317 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 317 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 318 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 318 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 318 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 321 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 321 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 322 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 322 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 323 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 325 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 325 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 327 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 327 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 327 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 331 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 331 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 332 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 333 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 333 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 335 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 336 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 338 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 339 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 341 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 342 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 342 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 344 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 344 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 345 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 348 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 348 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 348 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 348 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 348 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 351 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 353 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 353 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 356 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 360 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 362 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 364 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 365 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 366 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 367 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 367 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 368 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 369 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 369 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 369 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 373 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 374 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 375 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 377 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 378 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 379 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 382 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 382 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 384 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 384 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 384 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 386 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 389 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 392 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 393 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 394 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 395 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 395 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 396 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 396 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 396 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 397 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 397 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 399 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 399 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 400 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 401 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 401 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 401 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 401 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 401 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 402 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 403 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 403 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 403 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 404 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 404 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 406 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 406 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 406 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 406 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 407 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 409 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 409 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 409 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 411 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 413 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 413 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 414 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 414 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 417 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 417 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 417 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 418 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 419 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 421 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 424 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 424 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 427 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 429 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 429 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 430 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 430 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 430 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 431 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 431 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 431 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 432 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 435 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 436 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 437 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 438 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 438 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 438 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 439 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 439 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 443 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 444 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 446 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 448 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 449 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 452 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 453 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 454 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 454 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 454 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 455 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 457 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 458 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 458 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 459 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 459 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 460 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 462 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 462 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 463 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 463 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 466 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 466 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 466 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 467 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 468 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 468 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 468 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 468 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 469 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 469 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 469 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 469 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 469 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 470 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 472 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 475 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 477 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 478 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 478 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 479 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 480 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 480 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 480 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 481 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 482 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 483 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 484 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 485 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 487 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 489 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 489 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 489 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 489 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 490 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 491 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 492 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 492 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 493 3672 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 494 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 495 56 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 496 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 497 2449 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 498 1249 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 498 4854 +file:/private/var/folders/36/cjkbrr953xg2p_krwrmn8h_r0000gn/T/sharkWarehouse1091803796917701818/src_index_test_rc/000000_0 498 2449 \ No newline at end of file diff --git a/sql/hive/src/test/resources/golden/virtual_column-9-c152da33c1517ecfc336f72b9c133d5 b/sql/hive/src/test/resources/golden/virtual_column-9-c152da33c1517ecfc336f72b9c133d5 new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/log4j.properties b/sql/hive/src/test/resources/log4j.properties new file mode 100644 index 0000000000000..5e17e3b596ba1 --- /dev/null +++ b/sql/hive/src/test/resources/log4j.properties @@ -0,0 +1,47 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Set everything to be logged to the file core/target/unit-tests.log +log4j.rootLogger=DEBUG, CA, FA + +#Console Appender +log4j.appender.CA=org.apache.log4j.ConsoleAppender +log4j.appender.CA.layout=org.apache.log4j.PatternLayout +log4j.appender.CA.layout.ConversionPattern=%d{HH:mm:ss.SSS} %p %c: %m%n +log4j.appender.CA.Threshold = WARN + + +#File Appender +log4j.appender.FA=org.apache.log4j.FileAppender +log4j.appender.FA.append=false +log4j.appender.FA.file=target/unit-tests.log +log4j.appender.FA.layout=org.apache.log4j.PatternLayout +log4j.appender.FA.layout.ConversionPattern=%d{HH:mm:ss.SSS} %p %c{1}: %m%n + +# Set the logger level of File Appender to WARN +log4j.appender.FA.Threshold = INFO + +# Some packages are noisy for no good reason. +log4j.additivity.org.apache.hadoop.hive.serde2.lazy.LazyStruct=false +log4j.logger.org.apache.hadoop.hive.serde2.lazy.LazyStruct=OFF + +log4j.additivity.org.apache.hadoop.hive.metastore.RetryingHMSHandler=false +log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=OFF + +log4j.additivity.hive.ql.metadata.Hive=false +log4j.logger.hive.ql.metadata.Hive=OFF + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/add_partition_with_whitelist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/add_partition_with_whitelist.q new file mode 100644 index 0000000000000..8f0a60b713ab8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/add_partition_with_whitelist.q @@ -0,0 +1,8 @@ +SET hive.metastore.partition.name.whitelist.pattern=[\\x20-\\x7E&&[^,]]* ; +-- This pattern matches all printable ASCII characters (disallow unicode) and disallows commas + +CREATE TABLE part_whitelist_test (key STRING, value STRING) PARTITIONED BY (ds STRING); +SHOW PARTITIONS part_whitelist_test; + +ALTER TABLE part_whitelist_test ADD PARTITION (ds='1,2,3,4'); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/addpart1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/addpart1.q new file mode 100644 index 0000000000000..a7c9fe91f6cd9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/addpart1.q @@ -0,0 +1,11 @@ + +create table addpart1 (a int) partitioned by (b string, c string); + +alter table addpart1 add partition (b='f', c='s'); + +show partitions addpart1; + +alter table addpart1 add partition (b='f', c=''); + +show prtitions addpart1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_concatenate_indexed_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_concatenate_indexed_table.q new file mode 100644 index 0000000000000..4881757a4613a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_concatenate_indexed_table.q @@ -0,0 +1,16 @@ +set hive.exec.concatenate.check.index=true; +create table src_rc_concatenate_test(key int, value string) stored as rcfile; + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_concatenate_test; +load data local inpath '../data/files/smbbucket_2.rc' into table src_rc_concatenate_test; +load data local inpath '../data/files/smbbucket_3.rc' into table src_rc_concatenate_test; + +show table extended like `src_rc_concatenate_test`; + +select count(1) from src_rc_concatenate_test; +select sum(hash(key)), sum(hash(value)) from src_rc_concatenate_test; + +create index src_rc_concatenate_test_index on table src_rc_concatenate_test(key) as 'compact' WITH DEFERRED REBUILD IDXPROPERTIES ("prop1"="val1", "prop2"="val2"); +show indexes on src_rc_concatenate_test; + +alter table src_rc_concatenate_test concatenate; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_non_native.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_non_native.q new file mode 100644 index 0000000000000..73ae853778832 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_non_native.q @@ -0,0 +1,6 @@ + +CREATE TABLE non_native1(key int, value string) +STORED BY 'org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler'; + +-- we do not support ALTER TABLE on non-native tables yet +ALTER TABLE non_native1 RENAME TO new_non_native; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_2columns.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_2columns.q new file mode 100644 index 0000000000000..e10f77cf3f161 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_2columns.q @@ -0,0 +1,11 @@ +-- create testing table +create table alter_coltype(key string, value string) partitioned by (dt string, ts string); + +-- insert and create a partition +insert overwrite table alter_coltype partition(dt='100x', ts='6:30pm') select * from src1; + +desc alter_coltype; + +-- alter partition change multiple keys at same time +alter table alter_coltype partition column (dt int, ts int); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_invalidcolname.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_invalidcolname.q new file mode 100644 index 0000000000000..66eba75d4084d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_invalidcolname.q @@ -0,0 +1,12 @@ +-- create testing table +create table alter_coltype(key string, value string) partitioned by (dt string, ts string); + +-- insert and create a partition +insert overwrite table alter_coltype partition(dt='100x', ts='6:30pm') select * from src1; + +desc alter_coltype; + +-- alter partition key column with invalid column name +alter table alter_coltype partition column (dd int); + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_invalidtype.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_invalidtype.q new file mode 100644 index 0000000000000..ad016c5f3a76e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_coltype_invalidtype.q @@ -0,0 +1,11 @@ +-- create testing table +create table alter_coltype(key string, value string) partitioned by (dt string, ts string); + +-- insert and create a partition +insert overwrite table alter_coltype partition(dt='100x', ts='6:30pm') select * from src1; + +desc alter_coltype; + +-- alter partition key column data type for ts column to a wrong type +alter table alter_coltype partition column (ts time); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_invalidspec.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_invalidspec.q new file mode 100644 index 0000000000000..5f9d5ef9ca09e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_invalidspec.q @@ -0,0 +1,8 @@ +-- Create table +create table if not exists alter_part_invalidspec(key string, value string ) partitioned by (year string, month string) stored as textfile ; + +-- Load data +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_invalidspec partition (year='1996', month='10'); +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_invalidspec partition (year='1996', month='12'); + +alter table alter_part_invalidspec partition (year='1997') enable no_drop; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_nodrop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_nodrop.q new file mode 100644 index 0000000000000..92af30b6b5a15 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_nodrop.q @@ -0,0 +1,9 @@ +-- Create table +create table if not exists alter_part_nodrop_part(key string, value string ) partitioned by (year string, month string) stored as textfile ; + +-- Load data +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_nodrop_part partition (year='1996', month='10'); +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_nodrop_part partition (year='1996', month='12'); + +alter table alter_part_nodrop_part partition (year='1996') enable no_drop; +alter table alter_part_nodrop_part drop partition (year='1996'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_nodrop_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_nodrop_table.q new file mode 100644 index 0000000000000..135411fd320ef --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_nodrop_table.q @@ -0,0 +1,9 @@ +-- Create table +create table if not exists alter_part_nodrop_table(key string, value string ) partitioned by (year string, month string) stored as textfile ; + +-- Load data +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_nodrop_table partition (year='1996', month='10'); +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_nodrop_table partition (year='1996', month='12'); + +alter table alter_part_nodrop_table partition (year='1996') enable no_drop; +drop table alter_part_nodrop_table; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_offline.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_offline.q new file mode 100644 index 0000000000000..899145deaf8c5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_offline.q @@ -0,0 +1,11 @@ +-- create table +create table if not exists alter_part_offline (key string, value string ) partitioned by (year string, month string) stored as textfile ; + +-- Load data +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_offline partition (year='1996', month='10'); +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_offline partition (year='1996', month='12'); + +alter table alter_part_offline partition (year='1996') disable offline; +select * from alter_part_offline where year = '1996'; +alter table alter_part_offline partition (year='1996') enable offline; +select * from alter_part_offline where year = '1996'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_with_whitelist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_with_whitelist.q new file mode 100644 index 0000000000000..6e33bc0782d29 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_partition_with_whitelist.q @@ -0,0 +1,9 @@ +SET hive.metastore.partition.name.whitelist.pattern=[\\x20-\\x7E&&[^,]]* ; +-- This pattern matches all printable ASCII characters (disallow unicode) and disallows commas + +CREATE TABLE part_whitelist_test (key STRING, value STRING) PARTITIONED BY (ds STRING); +SHOW PARTITIONS part_whitelist_test; + +ALTER TABLE part_whitelist_test ADD PARTITION (ds='1'); + +ALTER TABLE part_whitelist_test PARTITION (ds='1') rename to partition (ds='1,2,3'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure.q new file mode 100644 index 0000000000000..26ba2878903fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure.q @@ -0,0 +1,6 @@ +create table alter_rename_partition_src ( col1 string ) stored as textfile ; +load data local inpath '../data/files/test.dat' overwrite into table alter_rename_partition_src ; +create table alter_rename_partition ( col1 string ) partitioned by (pcol1 string , pcol2 string) stored as sequencefile; +insert overwrite table alter_rename_partition partition (pCol1='old_part1:', pcol2='old_part2:') select col1 from alter_rename_partition_src ; + +alter table alter_rename_partition partition (pCol1='nonexist_part1:', pcol2='nonexist_part2:') rename to partition (pCol1='new_part1:', pcol2='new_part2:'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure2.q new file mode 100644 index 0000000000000..6e51c2f7629c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure2.q @@ -0,0 +1,6 @@ +create table alter_rename_partition_src ( col1 string ) stored as textfile ; +load data local inpath '../data/files/test.dat' overwrite into table alter_rename_partition_src ; +create table alter_rename_partition ( col1 string ) partitioned by (pcol1 string , pcol2 string) stored as sequencefile; +insert overwrite table alter_rename_partition partition (pCol1='old_part1:', pcol2='old_part2:') select col1 from alter_rename_partition_src ; + +alter table alter_rename_partition partition (pCol1='old_part1:', pcol2='old_part2:') rename to partition (pCol1='old_part1:', pcol2='old_part2:'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure3.q new file mode 100644 index 0000000000000..2d4ce0b9f6051 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_rename_partition_failure3.q @@ -0,0 +1,6 @@ +create table alter_rename_partition_src ( col1 string ) stored as textfile ; +load data local inpath '../data/files/test.dat' overwrite into table alter_rename_partition_src ; +create table alter_rename_partition ( col1 string ) partitioned by (pcol1 string , pcol2 string) stored as sequencefile; +insert overwrite table alter_rename_partition partition (pCol1='old_part1:', pcol2='old_part2:') select col1 from alter_rename_partition_src ; + +alter table alter_rename_partition partition (pCol1='old_part1:', pcol2='old_part2:') rename to partition (pCol1='old_part1:', pcol2='old_part2:', pcol3='old_part3:'); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_table_add_partition.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_table_add_partition.q new file mode 100644 index 0000000000000..2427c3b2a45f8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_table_add_partition.q @@ -0,0 +1,5 @@ +create table mp (a int) partitioned by (b int); + +-- should fail +alter table mp add partition (b='1', c='1'); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_table_wrong_regex.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_table_wrong_regex.q new file mode 100644 index 0000000000000..fad194d016ec9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_table_wrong_regex.q @@ -0,0 +1,7 @@ +drop table aa; +create table aa ( test STRING ) + ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' + WITH SERDEPROPERTIES ("input.regex" = "(.*)", "output.format.string" = "$1s"); + +alter table aa set serdeproperties ("input.regex" = "[^\\](.*)", "output.format.string" = "$1s"); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_as_select_not_exist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_as_select_not_exist.q new file mode 100644 index 0000000000000..30fe4d9916ab3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_as_select_not_exist.q @@ -0,0 +1,4 @@ +DROP VIEW testView; + +-- Cannot ALTER VIEW AS SELECT if view currently does not exist +ALTER VIEW testView AS SELECT * FROM srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_as_select_with_partition.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_as_select_with_partition.q new file mode 100644 index 0000000000000..dca6770b1b17e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_as_select_with_partition.q @@ -0,0 +1,12 @@ +CREATE VIEW testViewPart PARTITIONED ON (value) +AS +SELECT key, value +FROM src +WHERE key=86; + +ALTER VIEW testViewPart +ADD PARTITION (value='val_86') PARTITION (value='val_xyz'); +DESCRIBE FORMATTED testViewPart; + +-- If a view has partition, could not replace it with ALTER VIEW AS SELECT +ALTER VIEW testViewPart as SELECT * FROM srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure.q new file mode 100644 index 0000000000000..705b985095fa3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure.q @@ -0,0 +1,3 @@ +DROP VIEW xxx3; +CREATE VIEW xxx3 AS SELECT * FROM src; +ALTER TABLE xxx3 REPLACE COLUMNS (xyz int); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure2.q new file mode 100644 index 0000000000000..26d2c4f3ad2fb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure2.q @@ -0,0 +1,8 @@ +DROP VIEW xxx4; +CREATE VIEW xxx4 +PARTITIONED ON (value) +AS +SELECT * FROM src; + +-- should fail: need to use ALTER VIEW, not ALTER TABLE +ALTER TABLE xxx4 ADD PARTITION (value='val_86'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure3.q new file mode 100644 index 0000000000000..49c17a8b573c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure3.q @@ -0,0 +1,2 @@ +-- should fail: can't use ALTER VIEW on a table +ALTER VIEW srcpart ADD PARTITION (ds='2012-12-31', hr='23'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure4.q new file mode 100644 index 0000000000000..e2fad270b1d89 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure4.q @@ -0,0 +1,8 @@ +DROP VIEW xxx5; +CREATE VIEW xxx5 +PARTITIONED ON (value) +AS +SELECT * FROM src; + +-- should fail: LOCATION clause is illegal +ALTER VIEW xxx5 ADD PARTITION (value='val_86') LOCATION '/foo/bar/baz'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure5.q new file mode 100644 index 0000000000000..e44766e113063 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure5.q @@ -0,0 +1,8 @@ +DROP VIEW xxx6; +CREATE VIEW xxx6 +PARTITIONED ON (value) +AS +SELECT * FROM src; + +-- should fail: partition column name does not match +ALTER VIEW xxx6 ADD PARTITION (v='val_86'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure6.q new file mode 100644 index 0000000000000..dab7b145f7c4e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure6.q @@ -0,0 +1,11 @@ +DROP VIEW xxx7; +CREATE VIEW xxx7 +PARTITIONED ON (key) +AS +SELECT hr,key FROM srcpart; + +SET hive.mapred.mode=strict; + +-- strict mode should cause this to fail since view partition +-- predicate does not correspond to an underlying table partition predicate +ALTER VIEW xxx7 ADD PARTITION (key=10); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure7.q new file mode 100644 index 0000000000000..eff04c5b47dee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure7.q @@ -0,0 +1,8 @@ +DROP VIEW xxx8; +CREATE VIEW xxx8 +PARTITIONED ON (ds,hr) +AS +SELECT key,ds,hr FROM srcpart; + +-- should fail: need to fill in all partition columns +ALTER VIEW xxx8 ADD PARTITION (ds='2011-01-01'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure8.q new file mode 100644 index 0000000000000..9dff784250616 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure8.q @@ -0,0 +1,3 @@ +-- should fail: can't use ALTER VIEW on a table +CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING); +ALTER VIEW invites RENAME TO invites2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure9.q new file mode 100644 index 0000000000000..0f40fad90d974 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/alter_view_failure9.q @@ -0,0 +1,7 @@ +DROP VIEW xxx4; +CREATE VIEW xxx4 +AS +SELECT * FROM src; + +-- should fail: need to use ALTER VIEW, not ALTER TABLE +ALTER TABLE xxx4 RENAME TO xxx4a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/altern1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/altern1.q new file mode 100644 index 0000000000000..60414c1f3a7a5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/altern1.q @@ -0,0 +1,4 @@ + +create table altern1(a int, b int) partitioned by (ds string); +alter table altern1 replace columns(a int, b int, ds string); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col.q new file mode 100644 index 0000000000000..866cec126f782 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col.q @@ -0,0 +1 @@ +FROM (SELECT key, concat(value) AS key FROM src) a SELECT a.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col0.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col0.q new file mode 100644 index 0000000000000..46349c60bc79b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col0.q @@ -0,0 +1,2 @@ +-- TOK_ALLCOLREF +explain select * from (select * from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col1.q new file mode 100644 index 0000000000000..fdf20f850e8f8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col1.q @@ -0,0 +1,2 @@ +-- TOK_TABLE_OR_COL +explain select * from (select `.*` from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col2.q new file mode 100644 index 0000000000000..de59bc579a0fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ambiguous_col2.q @@ -0,0 +1,2 @@ +-- DOT +explain select * from (select a.`[kv].*`, b.`[kv].*` from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze.q new file mode 100644 index 0000000000000..874f5bfc14125 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze.q @@ -0,0 +1 @@ +analyze table srcpart compute statistics; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze1.q new file mode 100644 index 0000000000000..057a1a0b482ea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze1.q @@ -0,0 +1 @@ +analyze table srcpart partition (key) compute statistics; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze_view.q new file mode 100644 index 0000000000000..af4970f52e8be --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/analyze_view.q @@ -0,0 +1,6 @@ +DROP VIEW av; + +CREATE VIEW av AS SELECT * FROM src; + +-- should fail: can't analyze a view...yet +ANALYZE TABLE av COMPUTE STATISTICS; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive1.q new file mode 100644 index 0000000000000..a4b50f5e14107 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive1.q @@ -0,0 +1,11 @@ +set hive.archive.enabled = true; +-- Tests trying to archive a partition twice. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE srcpart_archived LIKE srcpart; + +INSERT OVERWRITE TABLE srcpart_archived PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE srcpart_archived ARCHIVE PARTITION (ds='2008-04-08', hr='12'); +ALTER TABLE srcpart_archived ARCHIVE PARTITION (ds='2008-04-08', hr='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive2.q new file mode 100644 index 0000000000000..ff8dcb248568c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive2.q @@ -0,0 +1,10 @@ +set hive.archive.enabled = true; +-- Tests trying to unarchive a non-archived partition +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +drop table tstsrcpart; +create table tstsrcpart like srcpart; +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='12') +select key, value from srcpart where ds='2008-04-08' and hr='12'; + +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08', hr='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive3.q new file mode 100644 index 0000000000000..53057daa1b622 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive3.q @@ -0,0 +1,5 @@ +set hive.archive.enabled = true; +-- Tests archiving a table +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +ALTER TABLE srcpart ARCHIVE; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive4.q new file mode 100644 index 0000000000000..56d6f1798debe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive4.q @@ -0,0 +1,5 @@ +set hive.archive.enabled = true; +-- Tests archiving multiple partitions +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +ALTER TABLE srcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12') PARTITION (ds='2008-04-08', hr='11'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive5.q new file mode 100644 index 0000000000000..4f6dc8d72ceed --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive5.q @@ -0,0 +1,5 @@ +set hive.archive.enabled = true; +-- Tests creating a partition where the partition value will collide with the +-- a intermediate directory + +ALTER TABLE srcpart ADD PARTITION (ds='2008-04-08', hr='14_INTERMEDIATE_ORIGINAL') diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_corrupt.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_corrupt.q new file mode 100644 index 0000000000000..bea25391628a6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_corrupt.q @@ -0,0 +1,18 @@ +USE default; + +set hive.archive.enabled = true; +set hive.enforce.bucketing = true; + +drop table tstsrcpart; + +create table tstsrcpart like srcpart; + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20) +-- The version of GzipCodec that is provided in Hadoop 0.20 silently ignores +-- file format errors. However, versions of Hadoop that include +-- HADOOP-6835 (e.g. 0.23 and 1.x) cause a Wrong File Format exception +-- to be thrown during the LOAD step. This former behavior is tested +-- in clientpositive/archive_corrupt.q + +load data local inpath '../data/files/archive_corrupt.rc' overwrite into table tstsrcpart partition (ds='2008-04-08', hr='11'); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert1.q new file mode 100644 index 0000000000000..deaff63d673a7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert1.q @@ -0,0 +1,13 @@ +set hive.archive.enabled = true; +-- Tests trying to insert into archived partition. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert2.q new file mode 100644 index 0000000000000..d744f2487694c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert2.q @@ -0,0 +1,13 @@ +set hive.archive.enabled = true; +-- Tests trying to insert into archived partition. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert3.q new file mode 100644 index 0000000000000..c6cb142824c8d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert3.q @@ -0,0 +1,13 @@ +set hive.archive.enabled = true; +-- Tests trying to create partition inside of archived directory. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='11') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='11'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert4.q new file mode 100644 index 0000000000000..c36f3ef9e8775 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_insert4.q @@ -0,0 +1,15 @@ +set hive.archive.enabled = true; +-- Tests trying to (possible) dynamic insert into archived partition. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); + +SET hive.exec.dynamic.partition=true; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr) +SELECT key, value, hr FROM srcpart WHERE ds='2008-04-08' AND hr='12'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi1.q new file mode 100644 index 0000000000000..8c702ed008bfa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi1.q @@ -0,0 +1,13 @@ +set hive.archive.enabled = true; +-- Tests trying to archive a partition twice. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='11') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='11'; +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi2.q new file mode 100644 index 0000000000000..d3cfb89c98749 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi2.q @@ -0,0 +1,12 @@ +set hive.archive.enabled = true; +-- Tests trying to unarchive a non-archived partition group +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +drop table tstsrcpart; +create table tstsrcpart like srcpart; +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='11') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='11'; +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='12') +select key, value from srcpart where ds='2008-04-08' and hr='12'; + +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08', hr='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi3.q new file mode 100644 index 0000000000000..75f5dfad47b37 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi3.q @@ -0,0 +1,13 @@ +set hive.archive.enabled = true; +-- Tests trying to archive outer partition group containing other partition inside. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='11') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='11'; +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi4.q new file mode 100644 index 0000000000000..abe0647ae6ee1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi4.q @@ -0,0 +1,13 @@ +set hive.archive.enabled = true; +-- Tests trying to archive inner partition contained in archived partition group. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='11') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='11'; +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi5.q new file mode 100644 index 0000000000000..71635e054a1e9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi5.q @@ -0,0 +1,13 @@ +set hive.archive.enabled = true; +-- Tests trying to unarchive outer partition group containing other partition inside. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='11') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='11'; +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi6.q new file mode 100644 index 0000000000000..5bb1474fdc383 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi6.q @@ -0,0 +1,13 @@ +set hive.archive.enabled = true; +-- Tests trying to unarchive inner partition contained in archived partition group. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='11') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='11'; +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08', hr='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi7.q new file mode 100644 index 0000000000000..db7f392737e97 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_multi7.q @@ -0,0 +1,12 @@ +set hive.archive.enabled = true; +-- Tests trying to archive a partition group with custom locations. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE tstsrcpart LIKE srcpart; + +INSERT OVERWRITE TABLE tstsrcpart PARTITION (ds='2008-04-08', hr='11') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='11'; +ALTER TABLE tstsrcpart ADD PARTITION (ds='2008-04-08', hr='12') +LOCATION "${system:test.tmp.dir}/tstsrc"; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec1.q new file mode 100644 index 0000000000000..d83b19d9fe31a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec1.q @@ -0,0 +1,10 @@ +set hive.archive.enabled = true; +-- Tests trying to archive a partition twice. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE srcpart_archived LIKE srcpart; + +INSERT OVERWRITE TABLE srcpart_archived PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE srcpart_archived ARCHIVE PARTITION (ds='2008-04-08', nonexistingpart='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec2.q new file mode 100644 index 0000000000000..ed14bbf688d52 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec2.q @@ -0,0 +1,10 @@ +set hive.archive.enabled = true; +-- Tests trying to archive a partition twice. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE srcpart_archived LIKE srcpart; + +INSERT OVERWRITE TABLE srcpart_archived PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE srcpart_archived ARCHIVE PARTITION (hr='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec3.q new file mode 100644 index 0000000000000..f27ad6d63b08e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec3.q @@ -0,0 +1,10 @@ +set hive.archive.enabled = true; +-- Tests trying to archive a partition twice. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE srcpart_archived LIKE srcpart; + +INSERT OVERWRITE TABLE srcpart_archived PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE srcpart_archived ARCHIVE PARTITION (); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec4.q new file mode 100644 index 0000000000000..491c2ac4596fc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec4.q @@ -0,0 +1,10 @@ +set hive.archive.enabled = true; +-- Tests trying to archive a partition twice. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE srcpart_archived LIKE srcpart; + +INSERT OVERWRITE TABLE srcpart_archived PARTITION (ds='2008-04-08', hr='12') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE srcpart_archived ARCHIVE PARTITION (hr='12', ds='2008-04-08'); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec5.q new file mode 100644 index 0000000000000..bb25ef2c7e0f1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/archive_partspec5.q @@ -0,0 +1,10 @@ +set hive.archive.enabled = true; +-- Tests trying to archive a partition twice. +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +CREATE TABLE srcpart_archived (key string, value string) partitioned by (ds string, hr int, min int); + +INSERT OVERWRITE TABLE srcpart_archived PARTITION (ds='2008-04-08', hr='12', min='00') +SELECT key, value FROM srcpart WHERE ds='2008-04-08' AND hr='12'; + +ALTER TABLE srcpart_archived ARCHIVE PARTITION (ds='2008-04-08', min='00'); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_1.q new file mode 100644 index 0000000000000..c38dab5eb702f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_1.q @@ -0,0 +1,7 @@ +create table authorization_fail_1 (key int, value string); +set hive.security.authorization.enabled=true; + +grant Create on table authorization_fail_1 to user hive_test_user; +grant Create on table authorization_fail_1 to user hive_test_user; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_2.q new file mode 100644 index 0000000000000..341e44774d9c2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_2.q @@ -0,0 +1,7 @@ +create table authorization_fail_2 (key int, value string) partitioned by (ds string); + +set hive.security.authorization.enabled=true; + +alter table authorization_fail_2 add partition (ds='2010'); + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_3.q new file mode 100644 index 0000000000000..6a56daa05fee8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_3.q @@ -0,0 +1,12 @@ +-- SORT_BEFORE_DIFF + +create table authorization_fail_3 (key int, value string) partitioned by (ds string); +set hive.security.authorization.enabled=true; + +grant Create on table authorization_fail_3 to user hive_test_user; +alter table authorization_fail_3 add partition (ds='2010'); + +show grant user hive_test_user on table authorization_fail_3; +show grant user hive_test_user on table authorization_fail_3 partition (ds='2010'); + +select key from authorization_fail_3 where ds='2010'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_4.q new file mode 100644 index 0000000000000..f0cb6459a255b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_4.q @@ -0,0 +1,15 @@ +-- SORT_BEFORE_DIFF + +create table authorization_fail_4 (key int, value string) partitioned by (ds string); + +set hive.security.authorization.enabled=true; +grant Alter on table authorization_fail_4 to user hive_test_user; +ALTER TABLE authorization_fail_4 SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE"); + +grant Create on table authorization_fail_4 to user hive_test_user; +alter table authorization_fail_4 add partition (ds='2010'); + +show grant user hive_test_user on table authorization_fail_4; +show grant user hive_test_user on table authorization_fail_4 partition (ds='2010'); + +select key from authorization_fail_4 where ds='2010'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_5.q new file mode 100644 index 0000000000000..b4efab5667f6c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_5.q @@ -0,0 +1,20 @@ +-- SORT_BEFORE_DIFF + +create table authorization_fail (key int, value string) partitioned by (ds string); +set hive.security.authorization.enabled=true; + +grant Alter on table authorization_fail to user hive_test_user; +ALTER TABLE authorization_fail SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE"); + +grant Create on table authorization_fail to user hive_test_user; +grant Select on table authorization_fail to user hive_test_user; +alter table authorization_fail add partition (ds='2010'); + +show grant user hive_test_user on table authorization_fail; +show grant user hive_test_user on table authorization_fail partition (ds='2010'); + +revoke Select on table authorization_fail partition (ds='2010') from user hive_test_user; + +show grant user hive_test_user on table authorization_fail partition (ds='2010'); + +select key from authorization_fail where ds='2010'; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_6.q new file mode 100644 index 0000000000000..977246948cad0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_6.q @@ -0,0 +1,6 @@ +-- SORT_BEFORE_DIFF + +create table authorization_part_fail (key int, value string) partitioned by (ds string); +set hive.security.authorization.enabled=true; + +ALTER TABLE authorization_part_fail SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE"); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_7.q new file mode 100644 index 0000000000000..492deed10bfeb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_fail_7.q @@ -0,0 +1,17 @@ +-- SORT_BEFORE_DIFF + +create table authorization_fail (key int, value string); + +set hive.security.authorization.enabled=true; + +create role hive_test_role_fail; + +grant role hive_test_role_fail to user hive_test_user; +grant select on table authorization_fail to role hive_test_role_fail; +show role grant user hive_test_user; + +show grant role hive_test_role_fail on table authorization_fail; + +drop role hive_test_role_fail; + +select key from authorization_fail; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_part.q new file mode 100644 index 0000000000000..a654a2380c75c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/authorization_part.q @@ -0,0 +1,37 @@ +-- SORT_BEFORE_DIFF + +create table authorization_part_fail (key int, value string) partitioned by (ds string); +ALTER TABLE authorization_part_fail SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE"); +create table src_auth as select * from src; +set hive.security.authorization.enabled=true; + +grant Create on table authorization_part_fail to user hive_test_user; +grant Update on table authorization_part_fail to user hive_test_user; +grant Drop on table authorization_part_fail to user hive_test_user; +grant select on table src_auth to user hive_test_user; + +-- column grant to group + +grant select(key) on table authorization_part_fail to group hive_test_group1; +grant select on table authorization_part_fail to group hive_test_group1; + +show grant group hive_test_group1 on table authorization_part_fail; + +insert overwrite table authorization_part_fail partition (ds='2010') select key, value from src_auth; +show grant group hive_test_group1 on table authorization_part_fail(key) partition (ds='2010'); +show grant group hive_test_group1 on table authorization_part_fail partition (ds='2010'); +select key, value from authorization_part_fail where ds='2010' order by key limit 20; + +insert overwrite table authorization_part_fail partition (ds='2011') select key, value from src_auth; +show grant group hive_test_group1 on table authorization_part_fail(key) partition (ds='2011'); +show grant group hive_test_group1 on table authorization_part_fail partition (ds='2011'); +select key, value from authorization_part_fail where ds='2011' order by key limit 20; + +select key,value, ds from authorization_part_fail where ds>='2010' order by key, ds limit 20; + +revoke select on table authorization_part_fail partition (ds='2010') from group hive_test_group1; + +select key,value, ds from authorization_part_fail where ds>='2010' order by key, ds limit 20; + +drop table authorization_part_fail; +drop table src_auth; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/autolocal1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/autolocal1.q new file mode 100644 index 0000000000000..bd1c9d6e15a76 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/autolocal1.q @@ -0,0 +1,15 @@ +set mapred.job.tracker=abracadabra; +set hive.exec.mode.local.auto.inputbytes.max=1; +set hive.exec.mode.local.auto=true; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20) +-- hadoop0.23 changes the behavior of JobClient initialization +-- in hadoop0.20, JobClient initialization tries to get JobTracker's address +-- this throws the expected IllegalArgumentException +-- in hadoop0.23, JobClient initialization only initializes cluster +-- and get user group information +-- not attempts to get JobTracker's address +-- no IllegalArgumentException thrown in JobClient Initialization +-- an exception is thrown when JobClient submitJob + +SELECT key FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_exec_hooks.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_exec_hooks.q new file mode 100644 index 0000000000000..709d8d9c85442 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_exec_hooks.q @@ -0,0 +1,6 @@ +set hive.exec.pre.hooks="org.this.is.a.bad.class"; + +EXPLAIN +SELECT x.* FROM SRC x LIMIT 20; + +SELECT x.* FROM SRC x LIMIT 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_indextype.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_indextype.q new file mode 100644 index 0000000000000..8f5bf42664b96 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_indextype.q @@ -0,0 +1 @@ +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) AS 'UNKNOWN' WITH DEFERRED REBUILD; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_sample_clause.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_sample_clause.q new file mode 100644 index 0000000000000..fd6769827b829 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bad_sample_clause.q @@ -0,0 +1,6 @@ +CREATE TABLE dest1(key INT, value STRING, dt STRING, hr STRING) STORED AS TEXTFILE; + +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcpart TABLESAMPLE (BUCKET 1 OUT OF 2) s +WHERE s.ds='2008-04-08' and s.hr='11'; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_mismatch1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_mismatch1.q new file mode 100644 index 0000000000000..048a8fd5cfb8e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_mismatch1.q @@ -0,0 +1,42 @@ +CREATE TABLE srcbucket_mapjoin_part (key int, value string) + partitioned by (ds string) CLUSTERED BY (key) INTO 3 BUCKETS + STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' + INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket21.txt' + INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' + INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) + partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS + STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket22.txt' + INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' + INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); + +-- The number of buckets in the 2 tables above (being joined later) dont match. +-- Throw an error if the user requested a bucketed mapjoin to be enforced. +-- In the default case (hive.enforce.bucketmapjoin=false), the query succeeds +-- even though mapjoin is not being performed + +explain +select a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and a.ds="2008-04-08" and b.ds="2008-04-08"; + +set hive.optimize.bucketmapjoin = true; + +explain +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and a.ds="2008-04-08" and b.ds="2008-04-08"; + +set hive.enforce.bucketmapjoin=true; + +explain +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and a.ds="2008-04-08" and b.ds="2008-04-08"; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_wrong_table_metadata_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_wrong_table_metadata_1.q new file mode 100644 index 0000000000000..9478a2f1b989c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_wrong_table_metadata_1.q @@ -0,0 +1,20 @@ +-- Although the user has specified a bucketed map-join, the number of buckets in the table +-- do not match the number of files +drop table table1; +drop table table2; + +create table table1(key string, value string) clustered by (key, value) +into 2 BUCKETS stored as textfile; +create table table2(key string, value string) clustered by (value, key) +into 2 BUCKETS stored as textfile; + +load data local inpath '../data/files/T1.txt' overwrite into table table1; + +load data local inpath '../data/files/T1.txt' overwrite into table table2; +load data local inpath '../data/files/T2.txt' overwrite into table table2; + +set hive.optimize.bucketmapjoin = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +select /*+ mapjoin(b) */ count(*) from table1 a join table2 b on a.key=b.key and a.value=b.value; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_wrong_table_metadata_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_wrong_table_metadata_2.q new file mode 100644 index 0000000000000..69afe0ae700ed --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/bucket_mapjoin_wrong_table_metadata_2.q @@ -0,0 +1,24 @@ +-- Although the user has specified a bucketed map-join, the number of buckets in the table +-- do not match the number of files +drop table table1; +drop table table2; + +create table table1(key string, value string) partitioned by (ds string) clustered by (key, value) +into 2 BUCKETS stored as textfile; +create table table2(key string, value string) clustered by (value, key) +into 2 BUCKETS stored as textfile; + +load data local inpath '../data/files/T1.txt' overwrite into table table1 partition (ds='1'); +load data local inpath '../data/files/T2.txt' overwrite into table table1 partition (ds='1'); + +load data local inpath '../data/files/T1.txt' overwrite into table table1 partition (ds='2'); + +load data local inpath '../data/files/T1.txt' overwrite into table table2; +load data local inpath '../data/files/T2.txt' overwrite into table table2; + +set hive.optimize.bucketmapjoin = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +select /*+ mapjoin(b) */ count(*) from table1 a join table2 b +on a.key=b.key and a.value=b.value and a.ds is not null; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/cachingprintstream.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/cachingprintstream.q new file mode 100644 index 0000000000000..d57a4517f00fb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/cachingprintstream.q @@ -0,0 +1,8 @@ +set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifyCachingPrintStreamHook; +set hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyCachingPrintStreamHook; + +SELECT count(*) FROM src; +FROM src SELECT TRANSFORM (key, value) USING 'FAKE_SCRIPT_SHOULD_NOT_EXIST' AS key, value; + +set hive.exec.failure.hooks=; +set hive.exec.post.hooks=; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/cluster_tasklog_retrieval.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/cluster_tasklog_retrieval.q new file mode 100644 index 0000000000000..bc980448a9e22 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/cluster_tasklog_retrieval.q @@ -0,0 +1,6 @@ +-- TaskLog retrieval upon Null Pointer Exception in Cluster + +CREATE TEMPORARY FUNCTION evaluate_npe AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFEvaluateNPE'; + +FROM src +SELECT evaluate_npe(src.key) LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbydistributeby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbydistributeby.q new file mode 100644 index 0000000000000..4c6a9b38d785d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbydistributeby.q @@ -0,0 +1,8 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +CLUSTER BY tvalue, tkey +DISTRIBUTE BY tvalue, tkey; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbyorderby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbyorderby.q new file mode 100644 index 0000000000000..d9ee9b9d262d0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbyorderby.q @@ -0,0 +1,5 @@ +FROM src +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +CLUSTER BY tvalue, tkey +ORDER BY ten, one; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbysortby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbysortby.q new file mode 100644 index 0000000000000..7b4e744ba66df --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clusterbysortby.q @@ -0,0 +1,8 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +CLUSTER BY tvalue, tkey +SORT BY ten, one; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern1.q new file mode 100644 index 0000000000000..0ff44779657ee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern1.q @@ -0,0 +1,2 @@ +EXPLAIN +SELECT x.key, x.value as key FROM SRC x CLUSTER BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern2.q new file mode 100644 index 0000000000000..9ed8944d2bb6c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern2.q @@ -0,0 +1,3 @@ +EXPLAIN +SELECT x.key, x.value as v1, y.* FROM SRC x JOIN SRC y ON (x.key = y.key) CLUSTER BY key; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern3.q new file mode 100644 index 0000000000000..23f73667edf5f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern3.q @@ -0,0 +1,2 @@ +EXPLAIN +SELECT x.key as k1, x.value FROM SRC x CLUSTER BY x.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern4.q new file mode 100644 index 0000000000000..3a9b45ca60576 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/clustern4.q @@ -0,0 +1,2 @@ +EXPLAIN +SELECT x.key as k1, x.value FROM SRC x CLUSTER BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_change_skewedcol_type1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_change_skewedcol_type1.q new file mode 100644 index 0000000000000..9a3e0b2efe693 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_change_skewedcol_type1.q @@ -0,0 +1,5 @@ +set hive.mapred.supports.subdirectories=true; + +CREATE TABLE skewedtable (key STRING, value STRING) SKEWED BY (key) ON (1,5,6); + +ALTER TABLE skewedtable CHANGE key key INT; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename1.q new file mode 100644 index 0000000000000..d99b821802df7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename1.q @@ -0,0 +1,6 @@ +drop table tstsrc; +create table tstsrc like src; +insert overwrite table tstsrc +select key, value from src; + +alter table tstsrc change src_not_exist key_value string; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename2.q new file mode 100644 index 0000000000000..cccc8ad54e300 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename2.q @@ -0,0 +1,6 @@ +drop table tstsrc; +create table tstsrc like src; +insert overwrite table tstsrc +select key, value from src; + +alter table tstsrc change key value string; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename3.q new file mode 100644 index 0000000000000..91c9537a99ad5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename3.q @@ -0,0 +1 @@ +alter table src change key key; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename4.q new file mode 100644 index 0000000000000..dd89a5a10b227 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename4.q @@ -0,0 +1,6 @@ +drop table tstsrc; +create table tstsrc like src; +insert overwrite table tstsrc +select key, value from src; + +alter table tstsrc change key key2 string after key_value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename5.q new file mode 100644 index 0000000000000..3827b83361fbb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/column_rename5.q @@ -0,0 +1,6 @@ +set hive.mapred.supports.subdirectories=true; + +CREATE TABLE skewedtable (key STRING, value STRING) SKEWED BY (key) ON (1,5,6); + +ALTER TABLE skewedtable CHANGE key key_new STRING; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_dp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_dp.q new file mode 100644 index 0000000000000..af923504c8c4f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_dp.q @@ -0,0 +1,16 @@ +DROP TABLE Employee_Part; + +CREATE TABLE Employee_Part(employeeID int, employeeName String) partitioned by (employeeSalary double, country string) +row format delimited fields terminated by '|' stored as textfile; + +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='2000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='2000.0', country='UK'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='4000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3500.0', country='UK'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3000.0', country='UK'); + +-- dynamic partitioning syntax +explain +analyze table Employee_Part partition (employeeSalary='4000.0', country) compute statistics for columns employeeName, employeeID; +analyze table Employee_Part partition (employeeSalary='4000.0', country) compute statistics for columns employeeName, employeeID; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_incorrect_num_keys.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_incorrect_num_keys.q new file mode 100644 index 0000000000000..d9725ddc7fdf6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_incorrect_num_keys.q @@ -0,0 +1,16 @@ +DROP TABLE Employee_Part; + +CREATE TABLE Employee_Part(employeeID int, employeeName String) partitioned by (employeeSalary double, country string) +row format delimited fields terminated by '|' stored as textfile; + +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='2000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='2000.0', country='UK'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='4000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3500.0', country='UK'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3000.0', country='UK'); + +-- don't specify all partitioning keys +explain +analyze table Employee_Part partition (employeeSalary='2000.0') compute statistics for columns employeeID; +analyze table Employee_Part partition (employeeSalary='2000.0') compute statistics for columns employeeID; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_invalid_values.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_invalid_values.q new file mode 100644 index 0000000000000..eb73962ba133c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_invalid_values.q @@ -0,0 +1,16 @@ +DROP TABLE Employee_Part; + +CREATE TABLE Employee_Part(employeeID int, employeeName String) partitioned by (employeeSalary double, country string) +row format delimited fields terminated by '|' stored as textfile; + +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='2000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='2000.0', country='UK'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='4000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3500.0', country='UK'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3000.0', country='UK'); + +-- specify invalid values for the partitioning keys +explain +analyze table Employee_Part partition (employeeSalary='4000.0', country='Canada') compute statistics for columns employeeName, employeeID; +analyze table Employee_Part partition (employeeSalary='4000.0', country='Canada') compute statistics for columns employeeName, employeeID; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_multiple_part_clause.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_multiple_part_clause.q new file mode 100644 index 0000000000000..dbfaaecbdf614 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_partlvl_multiple_part_clause.q @@ -0,0 +1,16 @@ +DROP TABLE Employee_Part; + +CREATE TABLE Employee_Part(employeeID int, employeeName String) partitioned by (employeeSalary double, country string) +row format delimited fields terminated by '|' stored as textfile; + +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='2000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='2000.0', country='UK'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='4000.0', country='USA'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3500.0', country='UK'); +LOAD DATA LOCAL INPATH "../data/files/employee2.dat" INTO TABLE Employee_Part partition(employeeSalary='3000.0', country='UK'); + +-- specify partitioning clause multiple times +explain +analyze table Employee_Part partition (employeeSalary='4000.0', country='USA') partition(employeeSalary='2000.0', country='USA') compute statistics for columns employeeName, employeeID; +analyze table Employee_Part partition (employeeSalary='4000.0', country='USA') partition(employeeSalary='2000.0', country='USA') compute statistics for columns employeeName, employeeID; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl.q new file mode 100644 index 0000000000000..ca8548958fcd6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl.q @@ -0,0 +1,22 @@ + +DROP TABLE IF EXISTS UserVisits_web_text_none; + +CREATE TABLE UserVisits_web_text_none ( + sourceIP string, + destURL string, + visitDate string, + adRevenue float, + userAgent string, + cCode string, + lCode string, + sKeyword string, + avgTimeOnSite int) +row format delimited fields terminated by '|' stored as textfile; + +LOAD DATA LOCAL INPATH "../data/files/UserVisits.dat" INTO TABLE UserVisits_web_text_none; + +explain +analyze table UserVisits_web_text_none compute statistics for columns destIP; + +analyze table UserVisits_web_text_none compute statistics for columns destIP; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl_complex_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl_complex_type.q new file mode 100644 index 0000000000000..5bbd70d86b297 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl_complex_type.q @@ -0,0 +1,17 @@ + +DROP TABLE IF EXISTS table_complex_type; + +CREATE TABLE table_complex_type ( + a STRING, + b ARRAY, + c ARRAY>, + d MAP> + ) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/create_nested_type.txt' OVERWRITE INTO TABLE table_complex_type; + + +explain +analyze table table_complex_type compute statistics for columns d; + +analyze table table_complex_type compute statistics for columns d; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl_incorrect_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl_incorrect_column.q new file mode 100644 index 0000000000000..ca8548958fcd6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/columnstats_tbllvl_incorrect_column.q @@ -0,0 +1,22 @@ + +DROP TABLE IF EXISTS UserVisits_web_text_none; + +CREATE TABLE UserVisits_web_text_none ( + sourceIP string, + destURL string, + visitDate string, + adRevenue float, + userAgent string, + cCode string, + lCode string, + sKeyword string, + avgTimeOnSite int) +row format delimited fields terminated by '|' stored as textfile; + +LOAD DATA LOCAL INPATH "../data/files/UserVisits.dat" INTO TABLE UserVisits_web_text_none; + +explain +analyze table UserVisits_web_text_none compute statistics for columns destIP; + +analyze table UserVisits_web_text_none compute statistics for columns destIP; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/compare_double_bigint.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/compare_double_bigint.q new file mode 100644 index 0000000000000..8ee4b277cbf72 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/compare_double_bigint.q @@ -0,0 +1,5 @@ +set hive.mapred.mode=strict; + +-- This should fail until we fix the issue with precision when casting a bigint to a double + +select * from src where cast(1 as bigint) = 1.0 limit 10; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/compare_string_bigint.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/compare_string_bigint.q new file mode 100644 index 0000000000000..810f65d4d2b44 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/compare_string_bigint.q @@ -0,0 +1,5 @@ +set hive.mapred.mode=strict; + +--This should fail until we fix the issue with precision when casting a bigint to a double + +select * from src where cast(1 as bigint) = '1' limit 10; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_insert_outputformat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_insert_outputformat.q new file mode 100644 index 0000000000000..a052663055ef6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_insert_outputformat.q @@ -0,0 +1,11 @@ + + +CREATE TABLE table_test_output_format(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.mapred.MapFileOutputFormat'; + +FROM src +INSERT OVERWRITE TABLE table_test_output_format SELECT src.key, src.value LIMIT 10; + +describe table_test_output_format; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view1.q new file mode 100644 index 0000000000000..c332278b84f68 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view1.q @@ -0,0 +1,6 @@ +-- Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist (must specify partition columns) + +drop view v; +create view v partitioned on (ds, hr) as select * from srcpart; +alter view v add partition (ds='1',hr='2'); +create or replace view v as select * from srcpart; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view2.q new file mode 100644 index 0000000000000..b53dd07ce8ae6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view2.q @@ -0,0 +1,6 @@ +-- Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist + +drop view v; +create view v partitioned on (ds, hr) as select * from srcpart; +alter view v add partition (ds='1',hr='2'); +create or replace view v partitioned on (hr) as select * from srcpart; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view3.q new file mode 100644 index 0000000000000..d6fa7785dfa95 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view3.q @@ -0,0 +1,3 @@ +-- Existing table is not a view + +create or replace view src as select ds, hr from srcpart; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view4.q new file mode 100644 index 0000000000000..12b6059b9e3ee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view4.q @@ -0,0 +1,5 @@ +-- View must have at least one non-partition column. + +drop view v; +create view v partitioned on (ds, hr) as select * from srcpart; +create or replace view v partitioned on (ds, hr) as select ds, hr from srcpart; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view5.q new file mode 100644 index 0000000000000..4eb9c94896d8f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view5.q @@ -0,0 +1,5 @@ +-- Can't combine IF NOT EXISTS and OR REPLACE. + +drop view v; +create view v partitioned on (ds, hr) as select * from srcpart; +create or replace view if not exists v as select * from srcpart; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view6.q new file mode 100644 index 0000000000000..a2f916fb26528 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view6.q @@ -0,0 +1,5 @@ +-- Can't update view to have an invalid definition + +drop view v; +create view v partitioned on (ds, hr) as select * from srcpart; +create or replace view v partitioned on (ds, hr) as blah; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view7.q new file mode 100644 index 0000000000000..765a96572a04f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view7.q @@ -0,0 +1,7 @@ +-- Can't update view to have a view cycle (1) + +drop view v; +create view v1 partitioned on (ds, hr) as select * from srcpart; +create view v2 partitioned on (ds, hr) as select * from v1; +create view v3 partitioned on (ds, hr) as select * from v2; +create or replace view v1 partitioned on (ds, hr) as select * from v3; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view8.q new file mode 100644 index 0000000000000..f3a59b1d07be7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_or_replace_view8.q @@ -0,0 +1,5 @@ +-- Can't update view to have a view cycle (2) + +drop view v; +create view v1 partitioned on (ds, hr) as select * from srcpart; +create or replace view v1 partitioned on (ds, hr) as select * from v1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_col_name_value_no_mismatch.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_col_name_value_no_mismatch.q new file mode 100644 index 0000000000000..1d6574e739602 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_col_name_value_no_mismatch.q @@ -0,0 +1,3 @@ +set hive.mapred.supports.subdirectories=true; + +CREATE TABLE skewed_table (key STRING, value STRING) SKEWED BY (key) ON ((1),(5,8),(6)); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_dup_col_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_dup_col_name.q new file mode 100644 index 0000000000000..726f6dd1dfcf6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_dup_col_name.q @@ -0,0 +1,3 @@ +set hive.mapred.supports.subdirectories=true; + +CREATE TABLE skewed_table (key STRING, value STRING) SKEWED BY (key,key) ON ((1),(5),(6)); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_failure_invalid_col_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_failure_invalid_col_name.q new file mode 100644 index 0000000000000..30dd4181653d5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_skewed_table_failure_invalid_col_name.q @@ -0,0 +1,4 @@ +set hive.mapred.supports.subdirectories=true; + +CREATE TABLE skewed_table (key STRING, value STRING) SKEWED BY (key_non) ON ((1),(5),(6)); + \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure1.q new file mode 100644 index 0000000000000..e87c12b8a1fe6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure1.q @@ -0,0 +1 @@ +create table table_in_database_creation_not_exist.test as select * from src limit 1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure2.q new file mode 100644 index 0000000000000..0bddae066450e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure2.q @@ -0,0 +1 @@ +create table `table_in_database_creation_not_exist.test` as select * from src limit 1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure3.q new file mode 100644 index 0000000000000..9f9f5f64dfd94 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure3.q @@ -0,0 +1 @@ +create table table_in_database_creation_not_exist.test (a string); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure4.q new file mode 100644 index 0000000000000..67745e011141a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_failure4.q @@ -0,0 +1 @@ +create table `table_in_database_creation_not_exist.test` (a string); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_wrong_regex.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_wrong_regex.q new file mode 100644 index 0000000000000..dc91c9c9ef05e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_table_wrong_regex.q @@ -0,0 +1,4 @@ +drop table aa; +create table aa ( test STRING ) + ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' + WITH SERDEPROPERTIES ("input.regex" = "[^\\](.*)", "output.format.string" = "$1s"); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_udaf_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_udaf_failure.q new file mode 100644 index 0000000000000..e0bb408a64f2f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_udaf_failure.q @@ -0,0 +1,6 @@ +CREATE TEMPORARY FUNCTION test_udaf AS 'org.apache.hadoop.hive.ql.udf.UDAFWrongArgLengthForTestCase'; + +EXPLAIN +SELECT test_udaf(length(src.value)) FROM src; + +SELECT test_udaf(length(src.value)) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_unknown_genericudf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_unknown_genericudf.q new file mode 100644 index 0000000000000..07010c11c7d40 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_unknown_genericudf.q @@ -0,0 +1 @@ +CREATE TEMPORARY FUNCTION dummy_genericudf AS 'org.apache.hadoop.hive.ql.udf.generic.DummyGenericUDF'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_unknown_udf_udaf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_unknown_udf_udaf.q new file mode 100644 index 0000000000000..a243fff033c4d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_unknown_udf_udaf.q @@ -0,0 +1 @@ +CREATE TEMPORARY FUNCTION dummy_function AS 'org.apache.hadoop.hive.ql.udf.DummyFunction'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure1.q new file mode 100644 index 0000000000000..c9060c6766491 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure1.q @@ -0,0 +1,6 @@ + +DROP VIEW xxx12; + +-- views and tables share the same namespace +CREATE TABLE xxx12(key int); +CREATE VIEW xxx12 AS SELECT key FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure2.q new file mode 100644 index 0000000000000..6fdcd4a9d377d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure2.q @@ -0,0 +1,6 @@ + +DROP VIEW xxx4; + +-- views and tables share the same namespace +CREATE VIEW xxx4 AS SELECT key FROM src; +CREATE TABLE xxx4(key int); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure3.q new file mode 100644 index 0000000000000..ad5fc499edf94 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure3.q @@ -0,0 +1,5 @@ +DROP VIEW xxx13; + +-- number of explicit view column defs must match underlying SELECT +CREATE VIEW xxx13(x,y,z) AS +SELECT key FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure4.q new file mode 100644 index 0000000000000..eecde65e1137e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure4.q @@ -0,0 +1,5 @@ +DROP VIEW xxx5; + +-- duplicate column names are illegal +CREATE VIEW xxx5(x,x) AS +SELECT key,value FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure5.q new file mode 100644 index 0000000000000..f720899168735 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure5.q @@ -0,0 +1,9 @@ +DROP VIEW xxx14; + +-- Ideally (and according to SQL:200n), this should actually be legal, +-- but since internally we impose the new column descriptors by +-- reference to underlying name rather than position, we have to make +-- it illegal. There's an easy workaround (provide the unique names +-- via direct column aliases, e.g. SELECT key AS x, key AS y) +CREATE VIEW xxx14(x,y) AS +SELECT key,key FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure6.q new file mode 100644 index 0000000000000..57f52a8af149d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure6.q @@ -0,0 +1,6 @@ +DROP VIEW xxx15; + +-- should fail: baz is not a column +CREATE VIEW xxx15 +PARTITIONED ON (baz) +AS SELECT key FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure7.q new file mode 100644 index 0000000000000..00d7f9fbf4eda --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure7.q @@ -0,0 +1,6 @@ +DROP VIEW xxx16; + +-- should fail: must have at least one non-partitioning column +CREATE VIEW xxx16 +PARTITIONED ON (key) +AS SELECT key FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure8.q new file mode 100644 index 0000000000000..08291826d978b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure8.q @@ -0,0 +1,6 @@ +DROP VIEW xxx17; + +-- should fail: partitioning key must be at end +CREATE VIEW xxx17 +PARTITIONED ON (key) +AS SELECT key,value FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure9.q new file mode 100644 index 0000000000000..d7d44a49c393a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/create_view_failure9.q @@ -0,0 +1,6 @@ +DROP VIEW xxx18; + +-- should fail: partitioning columns out of order +CREATE VIEW xxx18 +PARTITIONED ON (value,key) +AS SELECT key+1 as k2,key,value FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ctas.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ctas.q new file mode 100644 index 0000000000000..507a7a76b1ee7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ctas.q @@ -0,0 +1,5 @@ + + +create external table nzhang_ctas4 as select key, value from src; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_create_already_exists.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_create_already_exists.q new file mode 100644 index 0000000000000..3af7607739a54 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_create_already_exists.q @@ -0,0 +1,5 @@ +SHOW DATABASES; + +-- Try to create a database that already exists +CREATE DATABASE test_db; +CREATE DATABASE test_db; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_create_invalid_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_create_invalid_name.q new file mode 100644 index 0000000000000..5d6749542b470 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_create_invalid_name.q @@ -0,0 +1,4 @@ +SHOW DATABASES; + +-- Try to create a database with an invalid name +CREATE DATABASE `test.db`; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_does_not_exist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_does_not_exist.q new file mode 100644 index 0000000000000..66a940e63dea6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_does_not_exist.q @@ -0,0 +1,4 @@ +SHOW DATABASES; + +-- Try to drop a database that does not exist +DROP DATABASE does_not_exist; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_not_empty.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_not_empty.q new file mode 100644 index 0000000000000..ae5a443f10627 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_not_empty.q @@ -0,0 +1,8 @@ +SHOW DATABASES; + +-- Try to drop a non-empty database +CREATE DATABASE test_db; +USE test_db; +CREATE TABLE t(a INT); +USE default; +DROP DATABASE test_db; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_not_empty_restrict.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_not_empty_restrict.q new file mode 100644 index 0000000000000..e1cb81c93f27b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_drop_not_empty_restrict.q @@ -0,0 +1,8 @@ +SHOW DATABASES; + +-- Try to drop a non-empty database in restrict mode +CREATE DATABASE db_drop_non_empty_restrict; +USE db_drop_non_empty_restrict; +CREATE TABLE t(a INT); +USE default; +DROP DATABASE db_drop_non_empty_restrict; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_switch_does_not_exist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_switch_does_not_exist.q new file mode 100644 index 0000000000000..5cd469769e0aa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/database_switch_does_not_exist.q @@ -0,0 +1,4 @@ +SHOW DATABASES; + +-- Try to switch to a database that does not exist +USE does_not_exist; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal1.q new file mode 100644 index 0000000000000..b7fac0d3df346 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal1.q @@ -0,0 +1,2 @@ +-- Not in YYYY-MM-DD format +SELECT DATE '2001-1-1' FROM src LIMIT 2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal2.q new file mode 100644 index 0000000000000..711dc9e0fd357 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal2.q @@ -0,0 +1,2 @@ +-- Not in YYYY-MM-DD format +SELECT DATE '2001/01/01' FROM src LIMIT 2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal3.q new file mode 100644 index 0000000000000..9483509b6bb79 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/date_literal3.q @@ -0,0 +1,2 @@ +-- Invalid date value +SELECT DATE '2001-01-32' FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ddltime.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ddltime.q new file mode 100644 index 0000000000000..3517a6046de14 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ddltime.q @@ -0,0 +1,6 @@ + +create table T2 like srcpart; + +insert overwrite table T2 partition (ds = '2010-06-21', hr='1') select /*+ HOLD_DDLTIME */ key, value from src where key > 10; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/decimal_precision.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/decimal_precision.q new file mode 100644 index 0000000000000..f49649837e214 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/decimal_precision.q @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS DECIMAL_PRECISION; + +CREATE TABLE DECIMAL_PRECISION(dec decimal) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +SELECT dec * 123456789012345678901234567890.123456789bd FROM DECIMAL_PRECISION; + +DROP TABLE DECIMAL_PRECISION; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/decimal_precision_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/decimal_precision_1.q new file mode 100644 index 0000000000000..036ff1facc0a1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/decimal_precision_1.q @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS DECIMAL_PRECISION; + +CREATE TABLE DECIMAL_PRECISION(dec decimal) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +SELECT * from DECIMAL_PRECISION WHERE dec > 1234567890123456789.0123456789bd; + +DROP TABLE DECIMAL_PRECISION; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/default_partition_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/default_partition_name.q new file mode 100644 index 0000000000000..816b6cb80a964 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/default_partition_name.q @@ -0,0 +1,3 @@ +create table default_partition_name (key int, value string) partitioned by (ds string); + +alter table default_partition_name add partition(ds='__HIVE_DEFAULT_PARTITION__'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/deletejar.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/deletejar.q new file mode 100644 index 0000000000000..7b0c92311a11a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/deletejar.q @@ -0,0 +1,4 @@ + +ADD JAR ../data/files/TestSerDe.jar; +DELETE JAR ../data/files/TestSerDe.jar; +CREATE TABLE DELETEJAR(KEY STRING, VALUE STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.TestSerDe' STORED AS TEXTFILE; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure1.q new file mode 100644 index 0000000000000..f7304b12e65f6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure1.q @@ -0,0 +1 @@ +DESC NonExistentTable; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure2.q new file mode 100644 index 0000000000000..f28b610466499 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure2.q @@ -0,0 +1,2 @@ +DESC srcpart; +DESC srcpart PARTITION(ds='2012-04-08', hr='15'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure3.q new file mode 100644 index 0000000000000..bee0ea5788b4e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/desc_failure3.q @@ -0,0 +1,5 @@ +CREATE DATABASE db1; +CREATE TABLE db1.t1(key1 INT, value1 STRING) PARTITIONED BY (ds STRING, part STRING); + +-- describe database.table.column +DESCRIBE db1.t1.key1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath1.q new file mode 100644 index 0000000000000..ea72f83e1d585 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath1.q @@ -0,0 +1 @@ +describe src_thrift.$elem$; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath2.q new file mode 100644 index 0000000000000..f1fee1ac444de --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath2.q @@ -0,0 +1 @@ +describe src_thrift.$key$; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath3.q new file mode 100644 index 0000000000000..4a11f6845f396 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath3.q @@ -0,0 +1 @@ +describe src_thrift.lint.abc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath4.q new file mode 100644 index 0000000000000..0912bf1cd9ddd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/describe_xpath4.q @@ -0,0 +1 @@ +describe src_thrift.mStringString.abc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/disallow_incompatible_type_change_on1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/disallow_incompatible_type_change_on1.q new file mode 100644 index 0000000000000..d0d748cf4ffd7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/disallow_incompatible_type_change_on1.q @@ -0,0 +1,17 @@ +SET hive.metastore.disallow.incompatible.col.type.changes=true; +SELECT * FROM src LIMIT 1; +CREATE TABLE test_table123 (a INT, b MAP) PARTITIONED BY (ds STRING) STORED AS SEQUENCEFILE; +INSERT OVERWRITE TABLE test_table123 PARTITION(ds="foo1") SELECT 1, MAP("a1", "b1") FROM src LIMIT 1; +SELECT * from test_table123 WHERE ds="foo1"; +ALTER TABLE test_table123 REPLACE COLUMNS (a INT, b MAP); +ALTER TABLE test_table123 REPLACE COLUMNS (a BIGINT, b MAP); +ALTER TABLE test_table123 REPLACE COLUMNS (a INT, b MAP); +ALTER TABLE test_table123 REPLACE COLUMNS (a DOUBLE, b MAP); +ALTER TABLE test_table123 REPLACE COLUMNS (a TINYINT, b MAP); +ALTER TABLE test_table123 REPLACE COLUMNS (a BOOLEAN, b MAP); +ALTER TABLE test_table123 REPLACE COLUMNS (a TINYINT, b MAP); +ALTER TABLE test_table123 CHANGE COLUMN a a_new BOOLEAN; +-- All the above ALTERs will succeed since they are between compatible types. +-- The following ALTER will fail as MAP and STRING are not +-- compatible. +ALTER TABLE test_table123 REPLACE COLUMNS (a INT, b STRING); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/disallow_incompatible_type_change_on2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/disallow_incompatible_type_change_on2.q new file mode 100644 index 0000000000000..4460c3edd7e4b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/disallow_incompatible_type_change_on2.q @@ -0,0 +1,6 @@ +SET hive.metastore.disallow.incompatible.col.type.changes=true; +SELECT * FROM src LIMIT 1; +CREATE TABLE test_table123 (a INT, b STRING) PARTITIONED BY (ds STRING) STORED AS SEQUENCEFILE; +INSERT OVERWRITE TABLE test_table123 PARTITION(ds="foo1") SELECT 1, "one" FROM src LIMIT 1; +SELECT * from test_table123 WHERE ds="foo1"; +ALTER TABLE test_table123 CHANGE COLUMN b b MAP; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_function_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_function_failure.q new file mode 100644 index 0000000000000..51dc5e9d8e32c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_function_failure.q @@ -0,0 +1,3 @@ +set hive.exec.drop.ignorenonexistent=false; +-- Can't use DROP TEMPORARY FUNCTION if the function doesn't exist and IF EXISTS isn't specified +DROP TEMPORARY FUNCTION UnknownFunction; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_index_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_index_failure.q new file mode 100644 index 0000000000000..6e907dfa99b24 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_index_failure.q @@ -0,0 +1,3 @@ +set hive.exec.drop.ignorenonexistent=false; +-- Can't use DROP INDEX if the index doesn't exist and IF EXISTS isn't specified +DROP INDEX UnknownIndex ON src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_native_udf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_native_udf.q new file mode 100644 index 0000000000000..ae047bbc1780f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_native_udf.q @@ -0,0 +1 @@ +DROP TEMPORARY FUNCTION max; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_failure.q new file mode 100644 index 0000000000000..c2074f69cbf36 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_failure.q @@ -0,0 +1,11 @@ +create table mp (a string) partitioned by (b string, c string); + +alter table mp add partition (b='1', c='1'); +alter table mp add partition (b='1', c='2'); +alter table mp add partition (b='2', c='2'); + +show partitions mp; + +set hive.exec.drop.ignorenonexistent=false; +-- Can't use DROP PARTITION if the partition doesn't exist and IF EXISTS isn't specified +alter table mp drop partition (b='3'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_filter_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_filter_failure.q new file mode 100644 index 0000000000000..df476ed7c4634 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_filter_failure.q @@ -0,0 +1,8 @@ +create table ptestfilter1 (a string, b int) partitioned by (c string, d string); + +alter table ptestfilter1 add partition (c='US', d=1); +show partitions ptestfilter1; + +set hive.exec.drop.ignorenonexistent=false; +alter table ptestfilter1 drop partition (c='US', d<1); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_filter_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_filter_failure2.q new file mode 100644 index 0000000000000..4d238d73a9116 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_partition_filter_failure2.q @@ -0,0 +1,11 @@ +create table ptestfilter (a string, b int) partitioned by (c string, d int); +describe ptestfilter; + +alter table ptestfilter add partition (c='US', d=1); +alter table ptestfilter add partition (c='US', d=2); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c='US', d<'2'); + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure1.q new file mode 100644 index 0000000000000..d47c08b876fca --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure1.q @@ -0,0 +1,3 @@ +set hive.exec.drop.ignorenonexistent=false; +-- Can't use DROP TABLE if the table doesn't exist and IF EXISTS isn't specified +DROP TABLE UnknownTable; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure2.q new file mode 100644 index 0000000000000..631e4ffba7a42 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure2.q @@ -0,0 +1,3 @@ +CREATE VIEW xxx6 AS SELECT key FROM src; +-- Can't use DROP TABLE on a view +DROP TABLE xxx6; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure3.q new file mode 100644 index 0000000000000..534ce0b0324af --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_table_failure3.q @@ -0,0 +1,12 @@ +create database dtf3; +use dtf3; + +create table drop_table_failure_temp(col STRING) partitioned by (p STRING); + +alter table drop_table_failure_temp add partition (p ='p1'); +alter table drop_table_failure_temp add partition (p ='p2'); +alter table drop_table_failure_temp add partition (p ='p3'); + +alter table drop_table_failure_temp partition (p ='p3') ENABLE NO_DROP; + +drop table drop_table_failure_temp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_view_failure1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_view_failure1.q new file mode 100644 index 0000000000000..79cb4e445b05c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_view_failure1.q @@ -0,0 +1,6 @@ + + +CREATE TABLE xxx1(key int); + +-- Can't use DROP VIEW on a base table +DROP VIEW xxx1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_view_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_view_failure2.q new file mode 100644 index 0000000000000..93bb16232d57d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/drop_view_failure2.q @@ -0,0 +1,3 @@ +SET hive.exec.drop.ignorenonexistent=false; +-- Can't use DROP VIEW if the view doesn't exist and IF EXISTS isn't specified +DROP VIEW UnknownView; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_alias_in_transform.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_alias_in_transform.q new file mode 100644 index 0000000000000..b2e8567f09e16 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_alias_in_transform.q @@ -0,0 +1 @@ +FROM src SELECT TRANSFORM (key, value) USING "awk -F'\001' '{print $0}'" AS (foo, foo); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_alias_in_transform_schema.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_alias_in_transform_schema.q new file mode 100644 index 0000000000000..dabbc351bc386 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_alias_in_transform_schema.q @@ -0,0 +1 @@ +FROM src SELECT TRANSFORM (key, value) USING "awk -F'\001' '{print $0}'" AS (foo STRING, foo STRING); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert1.q new file mode 100644 index 0000000000000..fcbc7d5444a4d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert1.q @@ -0,0 +1,7 @@ + +create table dest1_din1(key int, value string); + +from src +insert overwrite table dest1_din1 select key, value +insert overwrite table dest1_din1 select key, value; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert2.q new file mode 100644 index 0000000000000..4f79a0352f21c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert2.q @@ -0,0 +1,6 @@ + +create table dest1_din2(key int, value string) partitioned by (ds string); + +from src +insert overwrite table dest1_din2 partition (ds='1') select key, value +insert overwrite table dest1_din2 partition (ds='1') select key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert3.q new file mode 100644 index 0000000000000..7b271a56d1844 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/duplicate_insert3.q @@ -0,0 +1,4 @@ + +from src +insert overwrite directory '${system:test.tmp.dir}/dest1' select key, value +insert overwrite directory '${system:test.tmp.dir}/dest1' select key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part1.q new file mode 100644 index 0000000000000..9f0b6c7a0cc88 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part1.q @@ -0,0 +1,11 @@ +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nostrict; +set hive.exec.max.dynamic.partitions=2; + + +create table dynamic_partition (key string) partitioned by (value string); + +insert overwrite table dynamic_partition partition(hr) select key, value from src; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part2.q new file mode 100644 index 0000000000000..00a92783c0548 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part2.q @@ -0,0 +1,11 @@ + +create table nzhang_part1 (key string, value string) partitioned by (ds string, hr string); + +set hive.exec.dynamic.partition=true; + +insert overwrite table nzhang_part1 partition(ds='11', hr) select key, value from srcpart where ds is not null; + +show partitions nzhang_part1; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part3.q new file mode 100644 index 0000000000000..7a8c58a6b255b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part3.q @@ -0,0 +1,9 @@ +set hive.exec.max.dynamic.partitions=600; +set hive.exec.max.dynamic.partitions.pernode=600; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; +set hive.exec.max.created.files=100; + +create table nzhang_part( key string) partitioned by (value string); + +insert overwrite table nzhang_part partition(value) select key, value from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part4.q new file mode 100644 index 0000000000000..9aff7aa6310d2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part4.q @@ -0,0 +1,7 @@ +create table nzhang_part4 (key string) partitioned by (ds string, hr string, value string); + +set hive.exec.dynamic.partition=true; + +insert overwrite table nzhang_part4 partition(value = 'aaa', ds='11', hr) select key, hr from srcpart where ds is not null; + +drop table nzhang_part4; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_empty.q.disabled b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_empty.q.disabled new file mode 100644 index 0000000000000..a8fce595005d2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_empty.q.disabled @@ -0,0 +1,24 @@ +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you under the Apache License, Version 2.0 (the +-- "License"); you may not use this file except in compliance +-- with the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.stats.autogether=false; +set hive.error.on.empty.partition=true; + +create table dyn_err(key string, value string) partitioned by (ds string); + +insert overwrite table dyn_err partition(ds) select key, value, ds from srcpart where ds is not null and key = 'no exists'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_max.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_max.q new file mode 100644 index 0000000000000..6a7a6255b959b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_max.q @@ -0,0 +1,16 @@ +USE default; + +-- Test of hive.exec.max.dynamic.partitions +-- Set hive.exec.max.dynamic.partitions.pernode to a large value so it will be ignored + +CREATE TABLE max_parts(key STRING) PARTITIONED BY (value STRING); + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.max.dynamic.partitions=10; +set hive.exec.max.dynamic.partitions.pernode=1000; + +INSERT OVERWRITE TABLE max_parts PARTITION(value) +SELECT key, value +FROM src +LIMIT 50; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_max_per_node.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_max_per_node.q new file mode 100644 index 0000000000000..a411ec520b6d0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dyn_part_max_per_node.q @@ -0,0 +1,15 @@ +USE default; + +-- Test of hive.exec.max.dynamic.partitions.pernode + +CREATE TABLE max_parts(key STRING) PARTITIONED BY (value STRING); + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.max.dynamic.partitions=1000; +set hive.exec.max.dynamic.partitions.pernode=10; + +INSERT OVERWRITE TABLE max_parts PARTITION(value) +SELECT key, value +FROM src +LIMIT 50; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dynamic_partitions_with_whitelist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dynamic_partitions_with_whitelist.q new file mode 100644 index 0000000000000..0be2e71c94dff --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/dynamic_partitions_with_whitelist.q @@ -0,0 +1,17 @@ +SET hive.metastore.partition.name.whitelist.pattern=[^9]*; +set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifyTableDirectoryIsEmptyHook; + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table source_table like srcpart; + +create table dest_table like srcpart; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE source_table partition(ds='2008-04-08', hr=11); + +-- Tests creating dynamic partitions with characters not in the whitelist (i.e. 9) +-- If the directory is not empty the hook will throw an error, instead the error should come from the metastore +-- This shows that no dynamic partitions were created and left behind or had directories created + +insert overwrite table dest_table partition (ds, hr) select key, hr, ds, value from source_table where ds='2008-04-08' order by value asc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_incomplete_partition.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_incomplete_partition.q new file mode 100644 index 0000000000000..e4f0daca92bd1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_incomplete_partition.q @@ -0,0 +1,12 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='h1'); +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='h2'); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +-- for exchange_part_test1 the value of ds is not given and the value of hr is given, thus this query will fail +alter table exchange_part_test1 exchange partition (hr='h1') with table exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists.q new file mode 100644 index 0000000000000..4d1e0a62a431f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists.q @@ -0,0 +1,12 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING); +CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05'); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +-- exchange_part_test2 table partition (ds='2013-04-05') already exists thus this query will fail +alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists2.q new file mode 100644 index 0000000000000..23777db3ea93d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists2.q @@ -0,0 +1,13 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1'); +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='2'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='3'); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +-- exchange_part_test2 table partition (ds='2013-04-05', hr='3') already exists thus this query will fail +alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists3.q new file mode 100644 index 0000000000000..350bf248acc9c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_exists3.q @@ -0,0 +1,13 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1'); +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='2'); +ALTER TABLE exchange_part_test2 ADD PARTITION (ds='2013-04-05', hr='1'); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +-- exchange_part_test2 table partition (ds='2013-04-05', hr='1') already exists thus this query will fail +alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_missing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_missing.q new file mode 100644 index 0000000000000..81944b3330853 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_partition_missing.q @@ -0,0 +1,6 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING); +CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING); +SHOW PARTITIONS exchange_part_test1; + +-- exchange_part_test1 partition (ds='2013-04-05') does not exist thus this query will fail +alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_table_missing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_table_missing.q new file mode 100644 index 0000000000000..7b926a3a8a51c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_table_missing.q @@ -0,0 +1,2 @@ +-- t1 does not exist and the query fails +alter table t1 exchange partition (ds='2013-04-05') with table t2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_table_missing2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_table_missing2.q new file mode 100644 index 0000000000000..48fcd74a6f22d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_table_missing2.q @@ -0,0 +1,8 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING); +SHOW PARTITIONS exchange_part_test1; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05'); +SHOW PARTITIONS exchange_part_test1; + +-- exchange_part_test2 table does not exist thus this query will fail +alter table exchange_part_test1 exchange partition (ds='2013-04-05') with table exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_test.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_test.q new file mode 100644 index 0000000000000..23e86e96ca4bc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exchange_partition_neg_test.q @@ -0,0 +1,11 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING); +CREATE TABLE exchange_part_test2 (f1 string, f2 string) PARTITIONED BY (ds STRING); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05'); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +-- exchange_part_test1 and exchange_part_test2 do not have the same scheme and thus they fail +ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_00_unsupported_schema.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_00_unsupported_schema.q new file mode 100644 index 0000000000000..d86ecd5785d02 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_00_unsupported_schema.q @@ -0,0 +1,12 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'nosuchschema://nosuchauthority/ql/test/data/exports/exim_department'; +drop table exim_department; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_01_nonpart_over_loaded.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_01_nonpart_over_loaded.q new file mode 100644 index 0000000000000..5f3223152f766 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_01_nonpart_over_loaded.q @@ -0,0 +1,24 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department identifier") + stored as textfile + tblproperties("maker"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_02_all_part_over_overlap.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_02_all_part_over_overlap.q new file mode 100644 index 0000000000000..d7204dc478d25 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_02_all_part_over_overlap.q @@ -0,0 +1,38 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +create table exim_employee ( emp_id int comment "employee id") + comment "table of employees" + partitioned by (emp_country string comment "iso code", emp_state string comment "free-form text") + stored as textfile + tblproperties("maker"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +import from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +select * from exim_employee; +drop table exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_03_nonpart_noncompat_colschema.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_03_nonpart_noncompat_colschema.q new file mode 100644 index 0000000000000..6cd7eda455ee6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_03_nonpart_noncompat_colschema.q @@ -0,0 +1,23 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_key int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_04_nonpart_noncompat_colnumber.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_04_nonpart_noncompat_colnumber.q new file mode 100644 index 0000000000000..7f3f577c433b3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_04_nonpart_noncompat_colnumber.q @@ -0,0 +1,23 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id", dep_name string) + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_05_nonpart_noncompat_coltype.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_05_nonpart_noncompat_coltype.q new file mode 100644 index 0000000000000..d3ec9fff82bf9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_05_nonpart_noncompat_coltype.q @@ -0,0 +1,23 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id bigint comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_06_nonpart_noncompat_storage.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_06_nonpart_noncompat_storage.q new file mode 100644 index 0000000000000..1cc691fc2912d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_06_nonpart_noncompat_storage.q @@ -0,0 +1,23 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + stored as rcfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_07_nonpart_noncompat_ifof.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_07_nonpart_noncompat_ifof.q new file mode 100644 index 0000000000000..27830ad5f93dd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_07_nonpart_noncompat_ifof.q @@ -0,0 +1,26 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + stored as inputformat "org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat" + outputformat "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat" + inputdriver "org.apache.hadoop.hive.howl.rcfile.RCFileInputDriver" + outputdriver "org.apache.hadoop.hive.howl.rcfile.RCFileOutputDriver" + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_08_nonpart_noncompat_serde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_08_nonpart_noncompat_serde.q new file mode 100644 index 0000000000000..d85048a97a876 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_08_nonpart_noncompat_serde.q @@ -0,0 +1,24 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + row format serde "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_09_nonpart_noncompat_serdeparam.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_09_nonpart_noncompat_serdeparam.q new file mode 100644 index 0000000000000..84b3786a161c6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_09_nonpart_noncompat_serdeparam.q @@ -0,0 +1,28 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + row format serde "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe" + with serdeproperties ("serialization.format"="0") + stored as inputformat "org.apache.hadoop.mapred.TextInputFormat" + outputformat "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat" + inputdriver "org.apache.hadoop.hive.howl.rcfile.RCFileInputDriver" + outputdriver "org.apache.hadoop.hive.howl.rcfile.RCFileOutputDriver" + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_10_nonpart_noncompat_bucketing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_10_nonpart_noncompat_bucketing.q new file mode 100644 index 0000000000000..eaf9c579d51d4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_10_nonpart_noncompat_bucketing.q @@ -0,0 +1,24 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + clustered by (dep_id) into 10 buckets + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_11_nonpart_noncompat_sorting.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_11_nonpart_noncompat_sorting.q new file mode 100644 index 0000000000000..092fd779541c3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_11_nonpart_noncompat_sorting.q @@ -0,0 +1,25 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + clustered by (dep_id) sorted by (dep_id desc) into 10 buckets + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + clustered by (dep_id) sorted by (dep_id asc) into 10 buckets + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_12_nonnative_export.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_12_nonnative_export.q new file mode 100644 index 0000000000000..289bcf001fded --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_12_nonnative_export.q @@ -0,0 +1,9 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + clustered by (dep_id) sorted by (dep_id desc) into 10 buckets + stored by "org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler" + tblproperties("creator"="krishna"); +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_13_nonnative_import.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_13_nonnative_import.q new file mode 100644 index 0000000000000..05de3d77b07b8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_13_nonnative_import.q @@ -0,0 +1,24 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + stored by "org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler" + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; + \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_14_nonpart_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_14_nonpart_part.q new file mode 100644 index 0000000000000..dc194ca814ee4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_14_nonpart_part.q @@ -0,0 +1,25 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + partitioned by (dep_org string) + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; + \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_15_part_nonpart.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_15_part_nonpart.q new file mode 100644 index 0000000000000..e233707cc4db2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_15_part_nonpart.q @@ -0,0 +1,25 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + partitioned by (dep_org string) + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department partition (dep_org="hr"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; + \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_16_part_noncompat_schema.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_16_part_noncompat_schema.q new file mode 100644 index 0000000000000..a10788e3e3b6b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_16_part_noncompat_schema.q @@ -0,0 +1,26 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + partitioned by (dep_org string) + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department partition (dep_org="hr"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + partitioned by (dep_mgr string) + stored as textfile + tblproperties("creator"="krishna"); +import from 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; + \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_17_part_spec_underspec.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_17_part_spec_underspec.q new file mode 100644 index 0000000000000..cc4a56ca34b88 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_17_part_spec_underspec.q @@ -0,0 +1,30 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; +import table exim_employee partition (emp_country="us") from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +select * from exim_employee; +drop table exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_18_part_spec_missing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_18_part_spec_missing.q new file mode 100644 index 0000000000000..140e3bb3b1bbc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_18_part_spec_missing.q @@ -0,0 +1,30 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; +import table exim_employee partition (emp_country="us", emp_state="kl") from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +select * from exim_employee; +drop table exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_19_external_over_existing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_19_external_over_existing.q new file mode 100644 index 0000000000000..048befe4d3d43 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_19_external_over_existing.q @@ -0,0 +1,23 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +import external table exim_department from 'ql/test/data/exports/exim_department'; +dfs -rmr ../build/ql/test/data/exports/exim_department; +drop table exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_20_managed_location_over_existing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_20_managed_location_over_existing.q new file mode 100644 index 0000000000000..89cbb9ecd8086 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_20_managed_location_over_existing.q @@ -0,0 +1,30 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_department/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + location 'ql/test/data/tablestore/exim_department' + tblproperties("creator"="krishna"); +import table exim_department from 'ql/test/data/exports/exim_department' + location 'ql/test/data/tablestore2/exim_department'; +dfs -rmr ../build/ql/test/data/exports/exim_department; +drop table exim_department; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; + + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_21_part_managed_external.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_21_part_managed_external.q new file mode 100644 index 0000000000000..0cbfc85258d2c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_21_part_managed_external.q @@ -0,0 +1,35 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +import external table exim_employee partition (emp_country="us", emp_state="tn") + from 'ql/test/data/exports/exim_employee'; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_22_export_authfail.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_22_export_authfail.q new file mode 100644 index 0000000000000..d9ab0cf0e4e50 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_22_export_authfail.q @@ -0,0 +1,14 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int) stored as textfile; + +set hive.security.authorization.enabled=true; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; + +set hive.security.authorization.enabled=false; +drop table exim_department; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_23_import_exist_authfail.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_23_import_exist_authfail.q new file mode 100644 index 0000000000000..2dbd534074fa8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_23_import_exist_authfail.q @@ -0,0 +1,22 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int) stored as textfile; +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int) stored as textfile; +set hive.security.authorization.enabled=true; +import from 'ql/test/data/exports/exim_department'; + +set hive.security.authorization.enabled=false; +drop table exim_department; +drop database importer; +dfs -rmr ../build/ql/test/data/exports/exim_department; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_24_import_part_authfail.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_24_import_part_authfail.q new file mode 100644 index 0000000000000..ccbcee3698dae --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_24_import_part_authfail.q @@ -0,0 +1,31 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); + +set hive.security.authorization.enabled=true; +import from 'ql/test/data/exports/exim_employee'; +set hive.security.authorization.enabled=false; + +dfs -rmr ../build/ql/test/data/exports/exim_employee; +drop table exim_employee; +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_25_import_nonexist_authfail.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_25_import_nonexist_authfail.q new file mode 100644 index 0000000000000..50bfe005c4278 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/exim_25_import_nonexist_authfail.q @@ -0,0 +1,23 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int) stored as textfile; +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +set hive.security.authorization.enabled=true; +import from 'ql/test/data/exports/exim_department'; + +set hive.security.authorization.enabled=false; +select * from exim_department; +drop table exim_department; +drop database importer; +dfs -rmr ../build/ql/test/data/exports/exim_department; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/external1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/external1.q new file mode 100644 index 0000000000000..d56c955050bc5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/external1.q @@ -0,0 +1,3 @@ + +create external table external1(a int, b int) location 'invalidscheme://data.s3ndemo.hive/kv'; +describe external1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/external2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/external2.q new file mode 100644 index 0000000000000..0df85a09afdd5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/external2.q @@ -0,0 +1,4 @@ + +create external table external2(a int, b int) partitioned by (ds string); +alter table external2 add partition (ds='2008-01-01') location 'invalidscheme://data.s3ndemo.hive/pkv/2008-01-01'; +describe external2 partition (ds='2008-01-01'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fetchtask_ioexception.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fetchtask_ioexception.q new file mode 100644 index 0000000000000..9f44f225e955a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fetchtask_ioexception.q @@ -0,0 +1,7 @@ +CREATE TABLE fetchtask_ioexception ( + KEY STRING, + VALUE STRING) STORED AS SEQUENCEFILE; + +LOAD DATA LOCAL INPATH '../data/files/kv1_broken.seq' OVERWRITE INTO TABLE fetchtask_ioexception; + +SELECT * FROM fetchtask_ioexception; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_bad_class.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_bad_class.q new file mode 100644 index 0000000000000..33dd4fa614f05 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_bad_class.q @@ -0,0 +1,3 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS + INPUTFORMAT 'ClassDoesNotExist' + OUTPUTFORMAT 'java.lang.Void'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_void_input.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_void_input.q new file mode 100644 index 0000000000000..c514562b24160 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_void_input.q @@ -0,0 +1,8 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS + INPUTFORMAT 'java.lang.Void' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 10; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_void_output.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_void_output.q new file mode 100644 index 0000000000000..a9cef1eada16a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fileformat_void_output.q @@ -0,0 +1,6 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' + OUTPUTFORMAT 'java.lang.Void'; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fs_default_name1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fs_default_name1.q new file mode 100644 index 0000000000000..f50369b138573 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fs_default_name1.q @@ -0,0 +1,2 @@ +set fs.default.name='http://www.example.com; +show tables; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fs_default_name2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fs_default_name2.q new file mode 100644 index 0000000000000..485c3db06823f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/fs_default_name2.q @@ -0,0 +1,2 @@ +set fs.default.name='http://www.example.com; +SELECT * FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/genericFileFormat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/genericFileFormat.q new file mode 100644 index 0000000000000..bd633b9760ab6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/genericFileFormat.q @@ -0,0 +1 @@ +create table testFail (a int) stored as foo; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby2_map_skew_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby2_map_skew_multi_distinct.q new file mode 100644 index 0000000000000..cecd9c6bd807c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby2_map_skew_multi_distinct.q @@ -0,0 +1,14 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby2_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby2_multi_distinct.q new file mode 100644 index 0000000000000..e3b0066112c5c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby2_multi_distinct.q @@ -0,0 +1,13 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest_g2(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +SELECT dest_g2.* FROM dest_g2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby3_map_skew_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby3_map_skew_multi_distinct.q new file mode 100644 index 0000000000000..168aeb1261b33 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby3_map_skew_multi_distinct.q @@ -0,0 +1,36 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, c10 DOUBLE, c11 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)), + sum(DISTINCT substr(src.value, 5)), + count(DISTINCT substr(src.value, 5)); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)), + sum(DISTINCT substr(src.value, 5)), + count(DISTINCT substr(src.value, 5)); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby3_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby3_multi_distinct.q new file mode 100644 index 0000000000000..1a28477918c8e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby3_multi_distinct.q @@ -0,0 +1,36 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, c10 DOUBLE, c11 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)), + sum(DISTINCT substr(src.value, 5)), + count(DISTINCT substr(src.value, 5)); + + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)), + sum(DISTINCT substr(src.value, 5)), + count(DISTINCT substr(src.value, 5)); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_cube1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_cube1.q new file mode 100644 index 0000000000000..a0bc177ad6351 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_cube1.q @@ -0,0 +1,4 @@ +set hive.map.aggr=false; + +SELECT key, count(distinct value) FROM src GROUP BY key with cube; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_cube2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_cube2.q new file mode 100644 index 0000000000000..f8ecb6a2d4347 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_cube2.q @@ -0,0 +1,4 @@ +set hive.map.aggr=true; + +SELECT key, value, count(distinct value) FROM src GROUP BY key, value with cube; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_id1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_id1.q new file mode 100644 index 0000000000000..ac5b6f7b03056 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_id1.q @@ -0,0 +1,4 @@ +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; + +SELECT GROUPING__ID FROM T1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets1.q new file mode 100644 index 0000000000000..ec6b16bfb28c6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets1.q @@ -0,0 +1,5 @@ +CREATE TABLE T1(a STRING, b STRING, c STRING); + +-- Check for empty grouping set +SELECT * FROM T1 GROUP BY a GROUPING SETS (()); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets2.q new file mode 100644 index 0000000000000..c988e04e74fa2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets2.q @@ -0,0 +1,4 @@ +CREATE TABLE T1(a STRING, b STRING, c STRING); + +-- Check for mupltiple empty grouping sets +SELECT * FROM T1 GROUP BY b GROUPING SETS ((), (), ()); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets3.q new file mode 100644 index 0000000000000..3e73552422956 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets3.q @@ -0,0 +1,4 @@ +CREATE TABLE T1(a STRING, b STRING, c STRING); + +-- Grouping sets expression is not in GROUP BY clause +SELECT a FROM T1 GROUP BY a GROUPING SETS (a, b); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets4.q new file mode 100644 index 0000000000000..cf6352c47d7eb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets4.q @@ -0,0 +1,4 @@ +CREATE TABLE T1(a STRING, b STRING, c STRING); + +-- Expression 'a' is not in GROUP BY clause +SELECT a FROM T1 GROUP BY b GROUPING SETS (b); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets5.q new file mode 100644 index 0000000000000..7df3318a644c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets5.q @@ -0,0 +1,5 @@ +CREATE TABLE T1(a STRING, b STRING, c STRING); + +-- Alias in GROUPING SETS +SELECT a as c, count(*) FROM T1 GROUP BY c GROUPING SETS (c); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets6.q new file mode 100644 index 0000000000000..2783047698e78 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets6.q @@ -0,0 +1,8 @@ +set hive.new.job.grouping.set.cardinality=2; + +CREATE TABLE T1(a STRING, b STRING, c STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE; + +-- Since 4 grouping sets would be generated for the query below, an additional MR job should be created +-- This is not allowed with distincts. +SELECT a, b, count(distinct c) from T1 group by a, b with cube; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets7.q new file mode 100644 index 0000000000000..6c9d5133ad7ee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_grouping_sets7.q @@ -0,0 +1,10 @@ +set hive.new.job.grouping.set.cardinality=2; +set hive.map.aggr=true; +set hive.groupby.skewindata=true; + +CREATE TABLE T1(a STRING, b STRING, c STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE; + +-- Since 4 grouping sets would be generated for the query below, an additional MR job should be created +-- This is not allowed with map-side aggregation and skew +SELECT a, b, count(1) from T1 group by a, b with cube; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_invalid_position.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_invalid_position.q new file mode 100644 index 0000000000000..173a752e351a8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_invalid_position.q @@ -0,0 +1,4 @@ +set hive.groupby.orderby.position.alias=true; + +-- invalid position alias in group by +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY 3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_key.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_key.q new file mode 100644 index 0000000000000..20970152c33cc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_key.q @@ -0,0 +1 @@ +SELECT concat(value, concat(value)) FROM src GROUP BY concat(value); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_rollup1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_rollup1.q new file mode 100644 index 0000000000000..6366744276077 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_rollup1.q @@ -0,0 +1,4 @@ +set hive.map.aggr=false; + +SELECT key, value, count(1) FROM src GROUP BY key, value with rollup; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_rollup2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_rollup2.q new file mode 100644 index 0000000000000..aa19b523e9d92 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/groupby_rollup2.q @@ -0,0 +1,4 @@ +set hive.map.aggr=true; + +SELECT key, value, count(key) FROM src GROUP BY key, value with rollup; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/having1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/having1.q new file mode 100644 index 0000000000000..71f4fd13a0a0e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/having1.q @@ -0,0 +1,2 @@ +EXPLAIN SELECT * FROM src HAVING key > 300; +SELECT * FROM src HAVING key > 300; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/illegal_partition_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/illegal_partition_type.q new file mode 100644 index 0000000000000..1cdaffd1f31a3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/illegal_partition_type.q @@ -0,0 +1,7 @@ +-- begin part(string, int) pass(string, string) +CREATE TABLE tab1 (id1 int,id2 string) PARTITIONED BY(month string,day int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ; +LOAD DATA LOCAL INPATH '../data/files/T1.txt' overwrite into table tab1 PARTITION(month='June', day='second'); + +select * from tab1; +drop table tab1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/illegal_partition_type2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/illegal_partition_type2.q new file mode 100644 index 0000000000000..2438288209896 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/illegal_partition_type2.q @@ -0,0 +1,3 @@ +create table tab1 (id1 int, id2 string) PARTITIONED BY(month string,day int) row format delimited fields terminated by ','; +alter table tab1 add partition (month='June', day='second'); +drop table tab1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_bitmap_no_map_aggr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_bitmap_no_map_aggr.q new file mode 100644 index 0000000000000..a17cd1fec5366 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_bitmap_no_map_aggr.q @@ -0,0 +1,7 @@ +EXPLAIN +CREATE INDEX src1_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.map.aggr=false; +CREATE INDEX src1_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src1_index ON src REBUILD; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_compact_entry_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_compact_entry_limit.q new file mode 100644 index 0000000000000..7d003e3e4b440 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_compact_entry_limit.q @@ -0,0 +1,11 @@ +drop index src_index on src; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname` , `_offsets` FROM default__src_src_index__ WHERE key<1000; +SET hive.index.compact.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SET hive.index.compact.query.max.entries=5; +SELECT key, value FROM src WHERE key=100 ORDER BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_compact_size_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_compact_size_limit.q new file mode 100644 index 0000000000000..d79674539a1b2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/index_compact_size_limit.q @@ -0,0 +1,12 @@ +drop index src_index on src; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname` , `_offsets` FROM default__src_src_index__ WHERE key<1000; +SET hive.index.compact.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SET hive.index.compact.query.max.size=1024; +SELECT key, value FROM src WHERE key=100 ORDER BY key; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input1.q new file mode 100644 index 0000000000000..92a6791acb652 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input1.q @@ -0,0 +1 @@ +SELECT a.* FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input2.q new file mode 100644 index 0000000000000..0fe907d9d8ae7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input2.q @@ -0,0 +1 @@ +SELECT a.key FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input4.q new file mode 100644 index 0000000000000..60aea3208c4ed --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input4.q @@ -0,0 +1,5 @@ +set hive.mapred.mode=strict; + +select * from srcpart a join + (select b.key, count(1) as count from srcpart b where b.ds = '2008-04-08' and b.hr = '14' group by b.key) subq + where a.ds = '2008-04-08' and a.hr = '11' limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input41.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input41.q new file mode 100644 index 0000000000000..872ab1014874d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input41.q @@ -0,0 +1,5 @@ +select * from + (select * from src + union all + select * from srcpart where ds = '2009-08-09' + )x; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input_part0_neg.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input_part0_neg.q new file mode 100644 index 0000000000000..4656693d4838c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/input_part0_neg.q @@ -0,0 +1,3 @@ +set hive.mapred.mode=strict; + +SELECT x.* FROM SRCPART x WHERE key = '2008-04-08'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into1.q new file mode 100644 index 0000000000000..8c197670211bf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into1.q @@ -0,0 +1,11 @@ +set hive.lock.numretries=5; +set hive.lock.sleep.between.retries=5; + +DROP TABLE insert_into1_neg; + +CREATE TABLE insert_into1_neg (key int, value string); + +LOCK TABLE insert_into1_neg SHARED; +INSERT INTO TABLE insert_into1_neg SELECT * FROM src LIMIT 100; + +DROP TABLE insert_into1_neg; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into2.q new file mode 100644 index 0000000000000..73a3b6ff13705 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into2.q @@ -0,0 +1,10 @@ +set hive.lock.numretries=5; +set hive.lock.sleep.between.retries=5; + +DROP TABLE insert_into1_neg; +CREATE TABLE insert_into1_neg (key int, value string); + +LOCK TABLE insert_into1_neg EXCLUSIVE; +INSERT INTO TABLE insert_into1_neg SELECT * FROM src LIMIT 100; + +DROP TABLE insert_into1_neg; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into3.q new file mode 100644 index 0000000000000..4d048b337ec45 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into3.q @@ -0,0 +1,16 @@ +set hive.lock.numretries=5; +set hive.lock.sleep.between.retries=5; + +DROP TABLE insert_into3_neg; + +CREATE TABLE insert_into3_neg (key int, value string) + PARTITIONED BY (ds string); + +INSERT INTO TABLE insert_into3_neg PARTITION (ds='1') + SELECT * FROM src LIMIT 100; + +LOCK TABLE insert_into3_neg PARTITION (ds='1') SHARED; +INSERT INTO TABLE insert_into3_neg PARTITION (ds='1') + SELECT * FROM src LIMIT 100; + +DROP TABLE insert_into3_neg; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into4.q new file mode 100644 index 0000000000000..b8944e742b4da --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_into4.q @@ -0,0 +1,16 @@ +set hive.lock.numretries=5; +set hive.lock.sleep.between.retries=5; + +DROP TABLE insert_into3_neg; + +CREATE TABLE insert_into3_neg (key int, value string) + PARTITIONED BY (ds string); + +INSERT INTO TABLE insert_into3_neg PARTITION (ds='1') + SELECT * FROM src LIMIT 100; + +LOCK TABLE insert_into3_neg PARTITION (ds='1') EXCLUSIVE; +INSERT INTO TABLE insert_into3_neg PARTITION (ds='1') + SELECT * FROM src LIMIT 100; + +DROP TABLE insert_into3_neg; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_view_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_view_failure.q new file mode 100644 index 0000000000000..1f5e13906259a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insert_view_failure.q @@ -0,0 +1,5 @@ +DROP VIEW xxx2; +CREATE VIEW xxx2 AS SELECT * FROM src; +INSERT OVERWRITE TABLE xxx2 +SELECT key, value +FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insertexternal1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insertexternal1.q new file mode 100644 index 0000000000000..01ebae1022324 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insertexternal1.q @@ -0,0 +1,8 @@ +set hive.insert.into.external.tables=false; + + +create external table texternal(key string, val string) partitioned by (insertdate string); + +alter table texternal add partition (insertdate='2008-01-01') location 'pfile://${system:test.tmp.dir}/texternal/2008-01-01'; +from src insert overwrite table texternal partition (insertdate='2008-01-01') select *; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insertover_dynapart_ifnotexists.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insertover_dynapart_ifnotexists.q new file mode 100644 index 0000000000000..cbf65c4ac69fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/insertover_dynapart_ifnotexists.q @@ -0,0 +1,9 @@ +set hive.exec.dynamic.partition=true; + +create table srcpart_dp like srcpart; + +create table destpart_dp like srcpart; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_dp partition(ds='2008-04-08', hr=11); + +insert overwrite table destpart_dp partition (ds='2008-04-08', hr) if not exists select key, value, hr from srcpart_dp where ds='2008-04-08'; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_arithmetic_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_arithmetic_type.q new file mode 100644 index 0000000000000..ad37cff79b587 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_arithmetic_type.q @@ -0,0 +1,3 @@ + +select timestamp('2001-01-01 00:00:01') - timestamp('2000-01-01 00:00:01') from src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_avg_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_avg_syntax.q new file mode 100644 index 0000000000000..d5b58e0765536 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_avg_syntax.q @@ -0,0 +1 @@ +SELECT avg(*) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_1.q new file mode 100644 index 0000000000000..73e4729aa0fc1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_1.q @@ -0,0 +1,2 @@ +create table tbl (a binary); +select cast (a as int) from tbl limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_2.q new file mode 100644 index 0000000000000..50ec48152548c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_2.q @@ -0,0 +1,2 @@ +create table tbl (a binary); +select cast (a as tinyint) from tbl limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_3.q new file mode 100644 index 0000000000000..16f56ec5d3403 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_3.q @@ -0,0 +1,2 @@ +create table tbl (a binary); +select cast (a as smallint) from tbl limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_4.q new file mode 100644 index 0000000000000..bd222f14b469a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_4.q @@ -0,0 +1,2 @@ +create table tbl (a binary); +select cast (a as bigint) from tbl limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_5.q new file mode 100644 index 0000000000000..594fd2bb6f625 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_5.q @@ -0,0 +1,2 @@ +create table tbl (a binary); +select cast (a as float) from tbl limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_6.q new file mode 100644 index 0000000000000..40ff801460ef8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_from_binary_6.q @@ -0,0 +1,2 @@ +create table tbl (a binary); +select cast (a as double) from tbl limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_1.q new file mode 100644 index 0000000000000..00cd98ed13b7d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_1.q @@ -0,0 +1 @@ +select cast (2 as binary) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_2.q new file mode 100644 index 0000000000000..f31344f835bb2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_2.q @@ -0,0 +1 @@ +select cast(cast (2 as smallint) as binary) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_3.q new file mode 100644 index 0000000000000..af23d29f4e984 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_3.q @@ -0,0 +1 @@ +select cast(cast (2 as tinyint) as binary) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_4.q new file mode 100644 index 0000000000000..91abe1e6b8a27 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_4.q @@ -0,0 +1 @@ +select cast(cast (2 as bigint) as binary) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_5.q new file mode 100644 index 0000000000000..afd99be9765a3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_5.q @@ -0,0 +1 @@ +select cast(cast (2 as float) as binary) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_6.q new file mode 100644 index 0000000000000..c2143c5c9e955 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_cast_to_binary_6.q @@ -0,0 +1 @@ +select cast(cast (2 as double) as binary) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_columns.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_columns.q new file mode 100644 index 0000000000000..14b3409cb4cc4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_columns.q @@ -0,0 +1,4 @@ +ADD JAR ../data/files/TestSerDe.jar; +CREATE TABLE DELETEJAR(KEY STRING, VALUE STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.TestSerDe' +STORED AS TEXTFILE +TBLPROPERTIES('columns'='valid_colname,invalid.colname'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_config1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_config1.q new file mode 100644 index 0000000000000..c49ac8a69086e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_config1.q @@ -0,0 +1,3 @@ +set mapred.input.dir.recursive=true; + +CREATE TABLE skewedtable (key STRING, value STRING) SKEWED BY (key) ON (1,5,6); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_config2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_config2.q new file mode 100644 index 0000000000000..fa023c8c4b5f2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_config2.q @@ -0,0 +1,4 @@ +set hive.mapred.supports.subdirectories=false; +set hive.optimize.union.remove=true; + +select count(1) from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_create_tbl1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_create_tbl1.q new file mode 100644 index 0000000000000..2e1ea6b005618 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_create_tbl1.q @@ -0,0 +1,9 @@ + +CREATE TABLE inv_valid_tbl1 COMMENT 'This is a thrift based table' + PARTITIONED BY(aint DATETIME, country STRING) + CLUSTERED BY(aint) SORTED BY(lint) INTO 32 BUCKETS + ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer' + WITH SERDEPROPERTIES ('serialization.class' = 'org.apache.hadoop.hive.serde2.thrift.test.Complex', + 'serialization.format' = 'org.apache.thrift.protocol.TBinaryProtocol') + STORED AS SEQUENCEFILE; +DESCRIBE EXTENDED inv_valid_tbl1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_create_tbl2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_create_tbl2.q new file mode 100644 index 0000000000000..408919ee2d633 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_create_tbl2.q @@ -0,0 +1 @@ +create tabl tmp_zshao_22 (id int, name strin; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_mapjoin1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_mapjoin1.q new file mode 100644 index 0000000000000..56d9211d28ebb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_mapjoin1.q @@ -0,0 +1 @@ +select /*+ MAPJOIN(a) ,MAPJOIN(b)*/ * from src a join src b on (a.key=b.key and a.value=b.value); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_max_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_max_syntax.q new file mode 100644 index 0000000000000..20033734090f3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_max_syntax.q @@ -0,0 +1 @@ +SELECT max(*) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_min_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_min_syntax.q new file mode 100644 index 0000000000000..584283a08a9e7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_min_syntax.q @@ -0,0 +1 @@ +SELECT min(*) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column.q new file mode 100644 index 0000000000000..106ba42213197 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column.q @@ -0,0 +1,4 @@ +-- Create table +create table if not exists test_invalid_column(key string, value string ) partitioned by (year string, month string) stored as textfile ; + +select * from test_invalid_column where column1=123; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column_with_subquery.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column_with_subquery.q new file mode 100644 index 0000000000000..bc70dbca20772 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column_with_subquery.q @@ -0,0 +1,4 @@ +-- Create table +create table if not exists test_invalid_column(key string, value string ) partitioned by (year string, month string) stored as textfile ; + +select * from (select * from test_invalid_column) subq where subq = 123; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column_with_tablename.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column_with_tablename.q new file mode 100644 index 0000000000000..b821e6129a7bf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_column_with_tablename.q @@ -0,0 +1,4 @@ +-- Create table +create table if not exists test_invalid_column(key string, value string ) partitioned by (year string, month string) stored as textfile ; + +select * from test_invalid_column where test_invalid_column=123; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_expression.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_expression.q new file mode 100644 index 0000000000000..01617f9363b58 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_select_expression.q @@ -0,0 +1 @@ +select foo from a a where foo > .foo; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_std_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_std_syntax.q new file mode 100644 index 0000000000000..13104198a6db0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_std_syntax.q @@ -0,0 +1 @@ +SELECT std(*) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_stddev_samp_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_stddev_samp_syntax.q new file mode 100644 index 0000000000000..c6a12526559e0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_stddev_samp_syntax.q @@ -0,0 +1 @@ +SELECT stddev_samp(*) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_sum_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_sum_syntax.q new file mode 100644 index 0000000000000..2d591baa24eb7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_sum_syntax.q @@ -0,0 +1 @@ +SELECT sum(*) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_alter1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_alter1.q new file mode 100644 index 0000000000000..bb19cff8a93ee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_alter1.q @@ -0,0 +1,2 @@ +CREATE TABLE alter_test (d STRING); +ALTER TABLE alter_test CHANGE d d DATETIME; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_alter2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_alter2.q new file mode 100644 index 0000000000000..aa01b358727b1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_alter2.q @@ -0,0 +1,2 @@ +CREATE TABLE alter_test (d STRING); +ALTER TABLE alter_test ADD COLUMNS (ds DATETIME); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_create2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_create2.q new file mode 100644 index 0000000000000..978f4244a6ba0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_create2.q @@ -0,0 +1 @@ +CREATE TABLE datetime_test (d DATETIME); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_transform.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_transform.q new file mode 100644 index 0000000000000..dfc4864acf43f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_t_transform.q @@ -0,0 +1 @@ +SELECT TRANSFORM(*) USING 'cat' AS (key DATETIME) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_tbl_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_tbl_name.q new file mode 100644 index 0000000000000..09394e71ada96 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_tbl_name.q @@ -0,0 +1 @@ +create table invalid-name(a int, b string); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_var_samp_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_var_samp_syntax.q new file mode 100644 index 0000000000000..ce2a8c4769111 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_var_samp_syntax.q @@ -0,0 +1 @@ +SELECT var_samp(*) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_1.q new file mode 100644 index 0000000000000..43de018c9f14c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_1.q @@ -0,0 +1,2 @@ +drop table if exists invalid_varchar_length_1; +create table invalid_varchar_length_1 (c1 varchar(1000000)); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_2.q new file mode 100644 index 0000000000000..3c199d31e7ffc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_2.q @@ -0,0 +1 @@ +select cast(value as varchar(100000)) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_3.q new file mode 100644 index 0000000000000..fed04764a9440 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_varchar_length_3.q @@ -0,0 +1,3 @@ +drop table if exists invalid_varchar_length_3; +create table invalid_varchar_length_3 (c1 varchar(0)); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_variance_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_variance_syntax.q new file mode 100644 index 0000000000000..5b478299317aa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalid_variance_syntax.q @@ -0,0 +1 @@ +SELECT variance(*) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalidate_view1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalidate_view1.q new file mode 100644 index 0000000000000..dd39c5eb4a4fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/invalidate_view1.q @@ -0,0 +1,11 @@ +DROP VIEW xxx8; +DROP VIEW xxx9; + +-- create two levels of view reference, then invalidate intermediate view +-- by dropping a column from underlying table, and verify that +-- querying outermost view results in full error context +CREATE TABLE xxx10 (key int, value int); +CREATE VIEW xxx9 AS SELECT * FROM xxx10; +CREATE VIEW xxx8 AS SELECT * FROM xxx9 xxx; +ALTER TABLE xxx10 REPLACE COLUMNS (key int); +SELECT * FROM xxx8 yyy; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join2.q new file mode 100644 index 0000000000000..98a5f1e6629c7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join2.q @@ -0,0 +1,5 @@ +SELECT /*+ MAPJOIN(x) */ x.key, x.value, y.value +FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key); + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join28.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join28.q new file mode 100644 index 0000000000000..32ff105c2e450 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join28.q @@ -0,0 +1,15 @@ +CREATE TABLE dest_j1(key STRING, value STRING) STORED AS TEXTFILE; + +-- Mapjoin followed by mapjoin is not supported. +-- The same query would work fine without the hint. +-- Note that there is a positive test with the same name in clientpositive +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(z) */ subq.key1, z.value +FROM +(SELECT /*+ MAPJOIN(x) */ x.key as key1, x.value as value1, y.key as key2, y.value as value2 + FROM src1 x JOIN src y ON (x.key = y.key)) subq + JOIN srcpart z ON (subq.key1 = z.key and z.ds='2008-04-08' and z.hr=11); + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join29.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join29.q new file mode 100644 index 0000000000000..53a1652d25b20 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join29.q @@ -0,0 +1,10 @@ +CREATE TABLE dest_j1(key STRING, cnt1 INT, cnt2 INT); + +-- Mapjoin followed by group by is not supported. +-- The same query would work without the hint +-- Note that there is a positive test with the same name in clientpositive +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(subq1) */ subq1.key, subq1.cnt, subq2.cnt +FROM (select x.key, count(1) as cnt from src1 x group by x.key) subq1 JOIN + (select y.key, count(1) as cnt from src y group by y.key) subq2 ON (subq1.key = subq2.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join32.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join32.q new file mode 100644 index 0000000000000..54a4dcd9afe2a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join32.q @@ -0,0 +1,14 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 STRING) STORED AS TEXTFILE; + +-- Mapjoin followed by Mapjoin is not supported. +-- The same query would work without the hint +-- Note that there is a positive test with the same name in clientpositive +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x,z) */ x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.value = z.value and z.ds='2008-04-08' and z.hr=11); + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join35.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join35.q new file mode 100644 index 0000000000000..fc8f77ca1232c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join35.q @@ -0,0 +1,18 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 INT) STORED AS TEXTFILE; + +-- Mapjoin followed by union is not supported. +-- The same query would work without the hint +-- Note that there is a positive test with the same name in clientpositive +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, x.value, subq1.cnt +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.key as key, count(1) as cnt from src x1 where x1.key > 100 group by x1.key +) subq1 +JOIN src1 x ON (x.key = subq1.key); + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join_nonexistent_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join_nonexistent_part.q new file mode 100644 index 0000000000000..b4a4757d22147 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/join_nonexistent_part.q @@ -0,0 +1,4 @@ +SET hive.security.authorization.enabled = true; +SELECT * +FROM srcpart s1 join src s2 on s1.key == s2.key +WHERE s1.ds='non-existent'; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/joinneg.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/joinneg.q new file mode 100644 index 0000000000000..a4967fd5dfb4a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/joinneg.q @@ -0,0 +1,6 @@ +EXPLAIN FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = b.key) +SELECT Y.*; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lateral_view_alias.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lateral_view_alias.q new file mode 100644 index 0000000000000..50d535e6e1ecf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lateral_view_alias.q @@ -0,0 +1,3 @@ +-- Check alias count for LATERAL VIEW syntax: +-- explode returns a table with only 1 col - should be an error if query specifies >1 col aliases +SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol1, myCol2 LIMIT 3; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lateral_view_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lateral_view_join.q new file mode 100644 index 0000000000000..818754ecbf05b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lateral_view_join.q @@ -0,0 +1 @@ +SELECT src.key FROM src LATERAL VIEW explode(array(1,2,3)) AS myTable JOIN src b ON src.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/line_terminator.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/line_terminator.q new file mode 100644 index 0000000000000..ad3542c40ace4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/line_terminator.q @@ -0,0 +1,3 @@ +CREATE TABLE mytable (col1 STRING, col2 INT) +ROW FORMAT DELIMITED +LINES TERMINATED BY ','; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_exist_part_authfail.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_exist_part_authfail.q new file mode 100644 index 0000000000000..f86cd92d9d4c7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_exist_part_authfail.q @@ -0,0 +1,4 @@ +create table hive_test_src ( col1 string ) partitioned by (pcol1 string) stored as textfile; +alter table hive_test_src add partition (pcol1 = 'test_part'); +set hive.security.authorization.enabled=true; +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src partition (pcol1 = 'test_part'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_non_native.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_non_native.q new file mode 100644 index 0000000000000..387aaed9a1e50 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_non_native.q @@ -0,0 +1,5 @@ + +CREATE TABLE non_native2(key int, value string) +STORED BY 'org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler'; + +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE non_native2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_nonpart_authfail.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_nonpart_authfail.q new file mode 100644 index 0000000000000..d807c698777f1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_nonpart_authfail.q @@ -0,0 +1,3 @@ +create table hive_test_src ( col1 string ) stored as textfile; +set hive.security.authorization.enabled=true; +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src ; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_part_authfail.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_part_authfail.q new file mode 100644 index 0000000000000..c409d5a94a9ce --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_part_authfail.q @@ -0,0 +1,3 @@ +create table hive_test_src ( col1 string ) partitioned by (pcol1 string) stored as textfile; +set hive.security.authorization.enabled=true; +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src partition (pcol1 = 'test_part'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_part_nospec.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_part_nospec.q new file mode 100644 index 0000000000000..356c16a664386 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_part_nospec.q @@ -0,0 +1,2 @@ +create table hive_test_src ( col1 string ) partitioned by (pcol1 string) stored as textfile; +load data local inpath '../data/files/test.dat' into table hive_test_src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_stored_as_dirs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_stored_as_dirs.q new file mode 100644 index 0000000000000..eed5651cbf20b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_stored_as_dirs.q @@ -0,0 +1,7 @@ +set hive.mapred.supports.subdirectories=true; + +-- Load data can't work with table with stored as directories +CREATE TABLE if not exists stored_as_dirs_multiple (col1 STRING, col2 int, col3 STRING) +SKEWED BY (col1, col2) ON (('s1',1), ('s3',3), ('s13',13), ('s78',78)) stored as DIRECTORIES; + +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE stored_as_dirs_multiple; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_view_failure.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_view_failure.q new file mode 100644 index 0000000000000..927f02e82bf91 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_view_failure.q @@ -0,0 +1,3 @@ +DROP VIEW xxx11; +CREATE VIEW xxx11 AS SELECT * FROM src; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE xxx11; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat.q new file mode 100644 index 0000000000000..16feeca22649a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat.q @@ -0,0 +1,6 @@ +-- test for loading into tables with the correct file format +-- test for loading into partitions with the correct file format + + +CREATE TABLE load_wrong_fileformat_T1(name STRING) STORED AS SEQUENCEFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE load_wrong_fileformat_T1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat_rc_seq.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat_rc_seq.q new file mode 100644 index 0000000000000..7e589fbfde620 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat_rc_seq.q @@ -0,0 +1,6 @@ +-- test for loading into tables with the correct file format +-- test for loading into partitions with the correct file format + + +CREATE TABLE T1(name STRING) STORED AS RCFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.seq' INTO TABLE T1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat_txt_seq.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat_txt_seq.q new file mode 100644 index 0000000000000..ff5ed4e2e3107 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_fileformat_txt_seq.q @@ -0,0 +1,6 @@ +-- test for loading into tables with the correct file format +-- test for loading into partitions with the correct file format + + +CREATE TABLE T1(name STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.seq' INTO TABLE T1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_noof_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_noof_part.q new file mode 100644 index 0000000000000..ffb64ed643b14 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/load_wrong_noof_part.q @@ -0,0 +1,3 @@ + +CREATE TABLE loadpart1(a STRING, b STRING) PARTITIONED BY (ds STRING,ds1 STRING); +LOAD DATA LOCAL INPATH '../data1/files/kv1.txt' INTO TABLE loadpart1 PARTITION(ds='2009-05-05'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/local_mapred_error_cache.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/local_mapred_error_cache.q new file mode 100644 index 0000000000000..8f4b37a9d49f6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/local_mapred_error_cache.q @@ -0,0 +1,4 @@ +set hive.exec.mode.local.auto=true; +set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateLocalErrorsHook; + +FROM src SELECT TRANSFORM(key, value) USING 'python ../data/scripts/cat_error.py' AS (key, value); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg1.q new file mode 100644 index 0000000000000..e1b58fca80af3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg1.q @@ -0,0 +1,10 @@ +drop table tstsrc; +create table tstsrc like src; +insert overwrite table tstsrc select key, value from src; + +set hive.lock.numretries=0; +set hive.unlock.numretries=0; + +LOCK TABLE tstsrc SHARED; +LOCK TABLE tstsrc SHARED; +LOCK TABLE tstsrc EXCLUSIVE; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg2.q new file mode 100644 index 0000000000000..a4604cd470658 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg2.q @@ -0,0 +1,6 @@ +drop table tstsrc; +create table tstsrc like src; +insert overwrite table tstsrc select key, value from src; + +set hive.unlock.numretries=0; +UNLOCK TABLE tstsrc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg3.q new file mode 100644 index 0000000000000..f2252f7bdf4da --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg3.q @@ -0,0 +1,9 @@ +drop table tstsrcpart; +create table tstsrcpart like srcpart; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='11') +select key, value from srcpart where ds='2008-04-08' and hr='11'; + +set hive.lock.numretries=0; +set hive.unlock.numretries=0; +UNLOCK TABLE tstsrcpart PARTITION(ds='2008-04-08', hr='11'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg4.q new file mode 100644 index 0000000000000..b47644cca362c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg4.q @@ -0,0 +1,12 @@ +drop table tstsrcpart; +create table tstsrcpart like srcpart; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='11') +select key, value from srcpart where ds='2008-04-08' and hr='11'; + +set hive.lock.numretries=0; +set hive.unlock.numretries=0; + +LOCK TABLE tstsrcpart PARTITION(ds='2008-04-08', hr='11') EXCLUSIVE; +SHOW LOCKS tstsrcpart PARTITION(ds='2008-04-08', hr='12'); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg5.q new file mode 100644 index 0000000000000..19c1ce28c2422 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/lockneg5.q @@ -0,0 +1,2 @@ +drop table tstsrcpart; +show locks tstsrcpart extended; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/macro_unused_parameter.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/macro_unused_parameter.q new file mode 100644 index 0000000000000..523710ddf3a5b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/macro_unused_parameter.q @@ -0,0 +1 @@ +CREATE TEMPORARY MACRO BAD_MACRO (x INT, y INT) x; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace.q new file mode 100644 index 0000000000000..76c7ae94d4b63 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace.q @@ -0,0 +1,13 @@ +set hive.exec.mode.local.auto=false; +set hive.exec.job.debug.capture.stacktraces=true; +set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateStackTracesHook; + +FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value); + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Hadoop 0.23 changes the getTaskDiagnostics behavior +-- The Error Code of hive failure MapReduce job changes +-- In Hadoop 0.20 +-- Hive failure MapReduce job gets 20000 as Error Code +-- In Hadoop 0.23 +-- Hive failure MapReduce job gets 2 as Error Code diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_hadoop20.q new file mode 100644 index 0000000000000..9d0548cc10f55 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_hadoop20.q @@ -0,0 +1,13 @@ +set hive.exec.mode.local.auto=false; +set hive.exec.job.debug.capture.stacktraces=true; +set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateStackTracesHook; + +FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value); + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Hadoop 0.23 changes the getTaskDiagnostics behavior +-- The Error Code of hive failure MapReduce job changes +-- In Hadoop 0.20 +-- Hive failure MapReduce job gets 20000 as Error Code +-- In Hadoop 0.23 +-- Hive failure MapReduce job gets 2 as Error Code diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff.q new file mode 100644 index 0000000000000..c93aedb3137bf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff.q @@ -0,0 +1,13 @@ +set hive.exec.mode.local.auto=false; +set hive.exec.job.debug.capture.stacktraces=false; +set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateStackTracesHook; + +FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value); + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Hadoop 0.23 changes the getTaskDiagnostics behavior +-- The Error Code of hive failure MapReduce job changes +-- In Hadoop 0.20 +-- Hive failure MapReduce job gets 20000 as Error Code +-- In Hadoop 0.23 +-- Hive failure MapReduce job gets 2 as Error Code diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q new file mode 100644 index 0000000000000..e319944958c2a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/mapreduce_stack_trace_turnoff_hadoop20.q @@ -0,0 +1,13 @@ +set hive.exec.mode.local.auto=false; +set hive.exec.job.debug.capture.stacktraces=false; +set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.VerifySessionStateStackTracesHook; + +FROM src SELECT TRANSFORM(key, value) USING 'script_does_not_exist' AS (key, value); + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Hadoop 0.23 changes the getTaskDiagnostics behavior +-- The Error Code of hive failure MapReduce job changes +-- In Hadoop 0.20 +-- Hive failure MapReduce job gets 20000 as Error Code +-- In Hadoop 0.23 +-- Hive failure MapReduce job gets 2 as Error Code diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_1.q new file mode 100644 index 0000000000000..0a48c01546ec5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_1.q @@ -0,0 +1,3 @@ +create table src2 like src; +CREATE INDEX src_index_merge_test ON TABLE src2(key) as 'COMPACT' WITH DEFERRED REBUILD; +alter table src2 concatenate; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_2.q new file mode 100644 index 0000000000000..a4fab1c8b804d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_2.q @@ -0,0 +1,3 @@ +create table srcpart2 (key int, value string) partitioned by (ds string); +insert overwrite table srcpart2 partition (ds='2011') select * from src; +alter table srcpart2 concatenate; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_3.q new file mode 100644 index 0000000000000..6bc645e4c2378 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/merge_negative_3.q @@ -0,0 +1,6 @@ +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; + +create table srcpart2 (key int, value string) partitioned by (ds string) clustered by (key) sorted by (key) into 2 buckets stored as RCFILE; +insert overwrite table srcpart2 partition (ds='2011') select * from src; +alter table srcpart2 partition (ds = '2011') concatenate; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/minimr_broken_pipe.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/minimr_broken_pipe.q new file mode 100644 index 0000000000000..8dda9cdf4a37d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/minimr_broken_pipe.q @@ -0,0 +1,4 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.exec.script.allow.partial.consumption = false; +-- Tests exception in ScriptOperator.close() by passing to the operator a small amount of data +SELECT TRANSFORM(*) USING 'true' AS a, b FROM (SELECT TRANSFORM(*) USING 'echo' AS a, b FROM src LIMIT 1) tmp; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nested_complex_neg.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nested_complex_neg.q new file mode 100644 index 0000000000000..ac6c4ee549d85 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nested_complex_neg.q @@ -0,0 +1,15 @@ + +create table nestedcomplex ( +simple_int int, +max_nested_array array>>>>>>>>>>>>>>>>>>>>>>, +max_nested_map array>>>>>>>>>>>>>>>>>>>>>, +max_nested_struct array>>>>>>>>>>>>>>>>>>>>>>, +simple_string string) + +; + + +-- This should fail in as extended nesting levels are not enabled using the serdeproperty hive.serialization.extend.nesting.levels +load data local inpath '../data/files/nested_complex.txt' overwrite into table nestedcomplex; + +select * from nestedcomplex sort by simple_int; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/no_matching_udf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/no_matching_udf.q new file mode 100644 index 0000000000000..0c24b1626a532 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/no_matching_udf.q @@ -0,0 +1 @@ +SELECT percentile(3.5, 0.99) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nonkey_groupby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nonkey_groupby.q new file mode 100644 index 0000000000000..431e04efd9342 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nonkey_groupby.q @@ -0,0 +1 @@ +EXPLAIN SELECT key, count(1) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nopart_insert.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nopart_insert.q new file mode 100644 index 0000000000000..4841f9e11c84e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nopart_insert.q @@ -0,0 +1,7 @@ + +CREATE TABLE nopart_insert(a STRING, b STRING) PARTITIONED BY (ds STRING); + +INSERT OVERWRITE TABLE nopart_insert +SELECT TRANSFORM(src.key, src.value) USING '../data/scripts/error_script' AS (tkey, tvalue) +FROM src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nopart_load.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nopart_load.q new file mode 100644 index 0000000000000..6e5ad6eb41a8b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/nopart_load.q @@ -0,0 +1,5 @@ + +CREATE TABLE nopart_load(a STRING, b STRING) PARTITIONED BY (ds STRING); + +load data local inpath '../data/files/kv1.txt' overwrite into table nopart_load ; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/notable_alias3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/notable_alias3.q new file mode 100644 index 0000000000000..6cc3e87288a89 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/notable_alias3.q @@ -0,0 +1,4 @@ +CREATE TABLE dest1(key INT, value DOUBLE) STORED AS TEXTFILE; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.key, sum(src.value) WHERE src.key < 100 group by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/notable_alias4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/notable_alias4.q new file mode 100644 index 0000000000000..e7ad6b79d3ed9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/notable_alias4.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT key from src JOIN src1 on src1.key=src.key; + +SELECT key from src JOIN src1 on src1.key=src.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderby_invalid_position.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderby_invalid_position.q new file mode 100644 index 0000000000000..4dbf2a6d56a2e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderby_invalid_position.q @@ -0,0 +1,4 @@ +set hive.groupby.orderby.position.alias=true; + +-- invalid position alias in order by +SELECT src.key, src.value FROM src ORDER BY 0; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderby_position_unsupported.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderby_position_unsupported.q new file mode 100644 index 0000000000000..a490c2306ec4a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderby_position_unsupported.q @@ -0,0 +1,4 @@ +set hive.groupby.orderby.position.alias=true; + +-- position alias is not supported when SELECT * +SELECT src.* FROM src ORDER BY 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderbysortby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderbysortby.q new file mode 100644 index 0000000000000..5dff69fdbb78d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/orderbysortby.q @@ -0,0 +1,8 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +ORDER BY tvalue, tkey +SORT BY ten, one; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/part_col_complex_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/part_col_complex_type.q new file mode 100644 index 0000000000000..4b9eb847db542 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/part_col_complex_type.q @@ -0,0 +1 @@ +create table t (a string) partitioned by (b map); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part.q new file mode 100644 index 0000000000000..541599915afc0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part.q @@ -0,0 +1,15 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode3; + +create table tbl_protectmode3 (col string) partitioned by (p string); +alter table tbl_protectmode3 add partition (p='p1'); +alter table tbl_protectmode3 add partition (p='p2'); + +select * from tbl_protectmode3 where p='p1'; +select * from tbl_protectmode3 where p='p2'; + +alter table tbl_protectmode3 partition (p='p1') enable offline; + +select * from tbl_protectmode3 where p='p2'; +select * from tbl_protectmode3 where p='p1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part1.q new file mode 100644 index 0000000000000..99256da285c1a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part1.q @@ -0,0 +1,21 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode5; + +create table tbl_protectmode5_1 (col string); + +create table tbl_protectmode5 (col string) partitioned by (p string); +alter table tbl_protectmode5 add partition (p='p1'); +alter table tbl_protectmode5 add partition (p='p2'); + +insert overwrite table tbl_protectmode5_1 +select col from tbl_protectmode5 where p='p1'; +insert overwrite table tbl_protectmode5_1 +select col from tbl_protectmode5 where p='p2'; + +alter table tbl_protectmode5 partition (p='p1') enable offline; + +insert overwrite table tbl_protectmode5_1 +select col from tbl_protectmode5 where p='p2'; +insert overwrite table tbl_protectmode5_1 +select col from tbl_protectmode5 where p='p1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part2.q new file mode 100644 index 0000000000000..72b55ea25d8e9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part2.q @@ -0,0 +1,9 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode6; + +create table tbl_protectmode6 (c1 string,c2 string) partitioned by (p string); +alter table tbl_protectmode6 add partition (p='p1'); +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' OVERWRITE INTO TABLE tbl_protectmode6 partition (p='p1'); +alter table tbl_protectmode6 partition (p='p1') enable offline; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' OVERWRITE INTO TABLE tbl_protectmode6 partition (p='p1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part_no_drop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part_no_drop.q new file mode 100644 index 0000000000000..b4e508ff98180 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_part_no_drop.q @@ -0,0 +1,10 @@ +-- protect mode: syntax to change protect mode works and queries to drop partitions are blocked if it is marked no drop + +drop table tbl_protectmode_no_drop; + +create table tbl_protectmode_no_drop (c1 string,c2 string) partitioned by (p string); +alter table tbl_protectmode_no_drop add partition (p='p1'); +alter table tbl_protectmode_no_drop partition (p='p1') enable no_drop; +desc extended tbl_protectmode_no_drop partition (p='p1'); + +alter table tbl_protectmode_no_drop drop partition (p='p1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl1.q new file mode 100644 index 0000000000000..236129902c07c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl1.q @@ -0,0 +1,8 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode_1; + +create table tbl_protectmode_1 (col string); +select * from tbl_protectmode_1; +alter table tbl_protectmode_1 enable offline; +select * from tbl_protectmode_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl2.q new file mode 100644 index 0000000000000..05964c35e9e08 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl2.q @@ -0,0 +1,12 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode2; + +create table tbl_protectmode2 (col string) partitioned by (p string); +alter table tbl_protectmode2 add partition (p='p1'); +alter table tbl_protectmode2 enable no_drop; +alter table tbl_protectmode2 enable offline; +alter table tbl_protectmode2 disable no_drop; +desc extended tbl_protectmode2; + +select * from tbl_protectmode2 where p='p1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl3.q new file mode 100644 index 0000000000000..bbaa2670875b6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl3.q @@ -0,0 +1,10 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode_4; + +create table tbl_protectmode_4 (col string); +select col from tbl_protectmode_4; +alter table tbl_protectmode_4 enable offline; +desc extended tbl_protectmode_4; + +select col from tbl_protectmode_4; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl4.q new file mode 100644 index 0000000000000..c7880de6d8aec --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl4.q @@ -0,0 +1,15 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode_tbl4; +drop table tbl_protectmode_tbl4_src; + +create table tbl_protectmode_tbl4_src (col string); + +create table tbl_protectmode_tbl4 (col string) partitioned by (p string); +alter table tbl_protectmode_tbl4 add partition (p='p1'); +alter table tbl_protectmode_tbl4 enable no_drop; +alter table tbl_protectmode_tbl4 enable offline; +alter table tbl_protectmode_tbl4 disable no_drop; +desc extended tbl_protectmode_tbl4; + +select col from tbl_protectmode_tbl4 where p='not_exist'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl5.q new file mode 100644 index 0000000000000..cd848fd4a1b9f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl5.q @@ -0,0 +1,15 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode_tbl5; +drop table tbl_protectmode_tbl5_src; + +create table tbl_protectmode_tbl5_src (col string); + +create table tbl_protectmode_tbl5 (col string) partitioned by (p string); +alter table tbl_protectmode_tbl5 add partition (p='p1'); +alter table tbl_protectmode_tbl5 enable no_drop; +alter table tbl_protectmode_tbl5 enable offline; +alter table tbl_protectmode_tbl5 disable no_drop; +desc extended tbl_protectmode_tbl5; + +insert overwrite table tbl_protectmode_tbl5 partition (p='not_exist') select col from tbl_protectmode_tbl5_src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl6.q new file mode 100644 index 0000000000000..26248cc6b4877 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl6.q @@ -0,0 +1,8 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode_tbl6; + +create table tbl_protectmode_tbl6 (col string); +alter table tbl_protectmode_tbl6 enable no_drop cascade; + +drop table tbl_protectmode_tbl6; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl7.q new file mode 100644 index 0000000000000..afff8404edc01 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl7.q @@ -0,0 +1,13 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode_tbl7; +create table tbl_protectmode_tbl7 (col string) partitioned by (p string); +alter table tbl_protectmode_tbl7 add partition (p='p1'); +alter table tbl_protectmode_tbl7 enable no_drop; + +alter table tbl_protectmode_tbl7 drop partition (p='p1'); + +alter table tbl_protectmode_tbl7 add partition (p='p1'); +alter table tbl_protectmode_tbl7 enable no_drop cascade; + +alter table tbl_protectmode_tbl7 drop partition (p='p1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl8.q new file mode 100644 index 0000000000000..809c287fc502a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl8.q @@ -0,0 +1,13 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode_tbl8; +create table tbl_protectmode_tbl8 (col string) partitioned by (p string); +alter table tbl_protectmode_tbl8 add partition (p='p1'); +alter table tbl_protectmode_tbl8 enable no_drop; + +alter table tbl_protectmode_tbl8 drop partition (p='p1'); + +alter table tbl_protectmode_tbl8 enable no_drop cascade; + +alter table tbl_protectmode_tbl8 add partition (p='p1'); +alter table tbl_protectmode_tbl8 drop partition (p='p1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl_no_drop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl_no_drop.q new file mode 100644 index 0000000000000..a4ef2acbfd406 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/protectmode_tbl_no_drop.q @@ -0,0 +1,9 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl_protectmode__no_drop; + +create table tbl_protectmode__no_drop (col string); +select * from tbl_protectmode__no_drop; +alter table tbl_protectmode__no_drop enable no_drop; +desc extended tbl_protectmode__no_drop; +drop table tbl_protectmode__no_drop; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_AggrFuncsWithNoGBYNoPartDef.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_AggrFuncsWithNoGBYNoPartDef.q new file mode 100644 index 0000000000000..542367ace22e0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_AggrFuncsWithNoGBYNoPartDef.q @@ -0,0 +1,20 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +-- testAggrFuncsWithNoGBYNoPartDef +select p_mfgr, +sum(p_retailprice) as s1 +from part; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_AmbiguousWindowDefn.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_AmbiguousWindowDefn.q new file mode 100644 index 0000000000000..95b35113e3cf0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_AmbiguousWindowDefn.q @@ -0,0 +1,28 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +-- testAmbiguousWindowDefn +select p_mfgr, p_name, p_size, +sum(p_size) over (w1) as s1, +sum(p_size) over (w2) as s2, +sum(p_size) over (w3) as s3 +from part +distribute by p_mfgr +sort by p_mfgr +window w1 as (rows between 2 preceding and 2 following), + w2 as (rows between unbounded preceding and current row), + w3 as w3; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_DistributeByOrderBy.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_DistributeByOrderBy.q new file mode 100644 index 0000000000000..caebebf8eaa4c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_DistributeByOrderBy.q @@ -0,0 +1,19 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +-- testPartitonBySortBy +select p_mfgr, p_name, p_size, +sum(p_retailprice) over (distribute by p_mfgr order by p_mfgr) as s1 +from part +; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_DuplicateWindowAlias.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_DuplicateWindowAlias.q new file mode 100644 index 0000000000000..3a0304188d2ac --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_DuplicateWindowAlias.q @@ -0,0 +1,22 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +-- testDuplicateWindowAlias +select p_mfgr, p_name, p_size, +sum(p_size) over (w1) as s1, +sum(p_size) over (w2) as s2 +from part +window w1 as (partition by p_mfgr order by p_mfgr rows between 2 preceding and 2 following), + w2 as w1, + w2 as (rows between unbounded preceding and current row); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_HavingLeadWithNoGBYNoWindowing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_HavingLeadWithNoGBYNoWindowing.q new file mode 100644 index 0000000000000..f351a1448b150 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_HavingLeadWithNoGBYNoWindowing.q @@ -0,0 +1,20 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +-- testHavingLeadWithNoGBYNoWindowing +select p_mfgr,p_name, p_size +from part +having lead(p_size, 1) over() <= p_size +distribute by p_mfgr +sort by p_name; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_HavingLeadWithPTF.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_HavingLeadWithPTF.q new file mode 100644 index 0000000000000..d0d3d3fae23f4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_HavingLeadWithPTF.q @@ -0,0 +1,22 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +-- testHavingLeadWithPTF +select p_mfgr,p_name, p_size +from noop(on part +partition by p_mfgr +order by p_name) +having lead(p_size, 1) over() <= p_size +distribute by p_mfgr +sort by p_name; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_InvalidValueBoundary.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_InvalidValueBoundary.q new file mode 100644 index 0000000000000..40a39cb68b5e3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_InvalidValueBoundary.q @@ -0,0 +1,21 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING, + p_complex array +); + +-- testInvalidValueBoundary +select p_mfgr,p_name, p_size, +sum(p_size) over (w1) as s , +dense_rank() over(w1) as dr +from part +window w1 as (partition by p_mfgr order by p_complex range between 2 preceding and current row); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_JoinWithAmbigousAlias.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_JoinWithAmbigousAlias.q new file mode 100644 index 0000000000000..80441e4f571f8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_JoinWithAmbigousAlias.q @@ -0,0 +1,20 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +-- testJoinWithAmbigousAlias +select abc.* +from noop(on part +partition by p_mfgr +order by p_name +) abc join part on abc.p_partkey = p1.p_partkey; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_PartitionBySortBy.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_PartitionBySortBy.q new file mode 100644 index 0000000000000..1c98b8743cd72 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_PartitionBySortBy.q @@ -0,0 +1,19 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +-- testPartitonBySortBy +select p_mfgr, p_name, p_size, +sum(p_retailprice) over (partition by p_mfgr sort by p_mfgr) as s1 +from part +; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_WhereWithRankCond.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_WhereWithRankCond.q new file mode 100644 index 0000000000000..8f4a21bd6c966 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_negative_WhereWithRankCond.q @@ -0,0 +1,21 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +-- testWhereWithRankCond +select p_mfgr,p_name, p_size, +rank() over() as r +from part +where r < 4 +distribute by p_mfgr +sort by p_mfgr; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_window_boundaries.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_window_boundaries.q new file mode 100644 index 0000000000000..ddab4367bb66b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_window_boundaries.q @@ -0,0 +1,17 @@ +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +select p_mfgr, p_name, p_size, + sum(p_retailprice) over (rows unbounded following) as s1 + from part distribute by p_mfgr sort by p_name; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_window_boundaries2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_window_boundaries2.q new file mode 100644 index 0000000000000..16cb52ca8414e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/ptf_window_boundaries2.q @@ -0,0 +1,17 @@ +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +select p_mfgr, p_name, p_size, + sum(p_retailprice) over (range unbounded following) as s1 + from part distribute by p_mfgr sort by p_name; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/recursive_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/recursive_view.q new file mode 100644 index 0000000000000..590523e9b6259 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/recursive_view.q @@ -0,0 +1,15 @@ +-- Can't have recursive views + +drop table t; +drop view r0; +drop view r1; +drop view r2; +drop view r3; +create table t (id int); +create view r0 as select * from t; +create view r1 as select * from r0; +create view r2 as select * from r1; +create view r3 as select * from r2; +drop view r0; +alter view r3 rename to r0; +select * from r0; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_1.q new file mode 100644 index 0000000000000..8333ddc948419 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_1.q @@ -0,0 +1,2 @@ +EXPLAIN +SELECT `+++` FROM srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_2.q new file mode 100644 index 0000000000000..d1aa1f1a9542d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_2.q @@ -0,0 +1,2 @@ +EXPLAIN +SELECT `.a.` FROM srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_groupby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_groupby.q new file mode 100644 index 0000000000000..53971916e6c96 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/regex_col_groupby.q @@ -0,0 +1,2 @@ +EXPLAIN +SELECT `..`, count(1) FROM srcpart GROUP BY `..`; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sa_fail_hook3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sa_fail_hook3.q new file mode 100644 index 0000000000000..e54201c09e6f5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sa_fail_hook3.q @@ -0,0 +1,4 @@ +create table mp2 (a string) partitioned by (b string); +alter table mp2 add partition (b='1'); +alter table mp2 partition (b='1') enable NO_DROP; +alter table mp2 drop partition (b='1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sample.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sample.q new file mode 100644 index 0000000000000..0086352f8c47c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sample.q @@ -0,0 +1 @@ +explain extended SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 5 OUT OF 4 on key) s \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe1.q new file mode 100644 index 0000000000000..6b1c09decfb35 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe1.q @@ -0,0 +1,3 @@ +set hive.exec.script.allow.partial.consumption = false; +-- Tests exception in ScriptOperator.close() by passing to the operator a small amount of data +SELECT TRANSFORM(*) USING 'true' AS a, b FROM (SELECT TRANSFORM(*) USING 'echo' AS a, b FROM src LIMIT 1) tmp; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe2.q new file mode 100644 index 0000000000000..1c3093c0e7023 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe2.q @@ -0,0 +1,3 @@ +set hive.exec.script.allow.partial.consumption = false; +-- Tests exception in ScriptOperator.processOp() by passing extra data needed to fill pipe buffer +SELECT TRANSFORM(key, value, key, value, key, value, key, value, key, value, key, value, key, value, key, value, key, value, key, value, key, value, key, value) USING 'true' as a,b,c,d FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe3.q new file mode 100644 index 0000000000000..60f93d209802a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_broken_pipe3.q @@ -0,0 +1,3 @@ +set hive.exec.script.allow.partial.consumption = true; +-- Test to ensure that a script with a bad error code still fails even with partial consumption +SELECT TRANSFORM(*) USING 'false' AS a, b FROM (SELECT TRANSFORM(*) USING 'echo' AS a, b FROM src LIMIT 1) tmp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_error.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_error.q new file mode 100644 index 0000000000000..e46aed03b147f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/script_error.q @@ -0,0 +1,7 @@ +EXPLAIN +SELECT TRANSFORM(src.key, src.value) USING '../data/scripts/error_script' AS (tkey, tvalue) +FROM src; + +SELECT TRANSFORM(src.key, src.value) USING '../data/scripts/error_script' AS (tkey, tvalue) +FROM src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/select_charliteral.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/select_charliteral.q new file mode 100644 index 0000000000000..1e4c70e663f05 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/select_charliteral.q @@ -0,0 +1,3 @@ +-- Check that charSetLiteral syntax conformance +-- Check that a sane error message with correct line/column numbers is emitted with helpful context tokens. +select _c17, count(1) from tmp_tl_foo group by _c17 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/select_udtf_alias.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/select_udtf_alias.q new file mode 100644 index 0000000000000..8ace4414fc14e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/select_udtf_alias.q @@ -0,0 +1,3 @@ +-- Check alias count for SELECT UDTF() syntax: +-- explode returns a table with only 1 col - should be an error if query specifies >1 col aliases +SELECT explode(array(1,2,3)) AS (myCol1, myCol2) LIMIT 3; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin1.q new file mode 100644 index 0000000000000..06e6cad34b4d8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin1.q @@ -0,0 +1,2 @@ +-- reference rhs of semijoin in select-clause +select b.value from src a left semi join src b on (b.key = a.key and b.key = '100'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin2.q new file mode 100644 index 0000000000000..46faae641640d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin2.q @@ -0,0 +1,2 @@ +-- rhs table reference in the where clause +select a.value from src a left semi join src b on a.key = b.key where b.value = 'val_18'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin3.q new file mode 100644 index 0000000000000..35b455a7292d1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin3.q @@ -0,0 +1,2 @@ +-- rhs table reference in group by +select * from src a left semi join src b on a.key = b.key group by b.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin4.q new file mode 100644 index 0000000000000..4e52ebfb3cdeb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/semijoin4.q @@ -0,0 +1,3 @@ +-- rhs table is a view and reference the view in where clause +select a.value from src a left semi join (select key , value from src where key > 100) b on a.key = b.key where b.value = 'val_108' ; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex.q new file mode 100644 index 0000000000000..13b3f165b9684 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex.q @@ -0,0 +1,17 @@ +USE default; +-- This should fail because Regex SerDe doesn't support STRUCT +CREATE TABLE serde_regex( + host STRING, + identity STRING, + user STRING, + time TIMESTAMP, + request STRING, + status INT, + size INT, + referer STRING, + agent STRING, + strct STRUCT) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' +WITH SERDEPROPERTIES ( + "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?") +STORED AS TEXTFILE; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex2.q new file mode 100644 index 0000000000000..a3955744221a4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex2.q @@ -0,0 +1,23 @@ +USE default; +-- Mismatch between the number of matching groups and columns, throw run time exception. Ideally this should throw a compile time exception. See JIRA-3023 for more details. + CREATE TABLE serde_regex( + host STRING, + identity STRING, + user STRING, + time STRING, + request STRING, + status STRING, + size STRING, + referer STRING, + agent STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' +WITH SERDEPROPERTIES ( + "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)" +) +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "../data/files/apache.access.log" INTO TABLE serde_regex; +LOAD DATA LOCAL INPATH "../data/files/apache.access.2.log" INTO TABLE serde_regex; + +-- raise an exception +SELECT * FROM serde_regex ORDER BY time; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex3.q new file mode 100644 index 0000000000000..5a0295c971c26 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/serde_regex3.q @@ -0,0 +1,14 @@ +USE default; +-- null input.regex, raise an exception + CREATE TABLE serde_regex( + host STRING, + identity STRING, + user STRING, + time STRING, + request STRING, + status STRING, + size STRING, + referer STRING, + agent STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' +STORED AS TEXTFILE; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_hiveconf_validation0.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_hiveconf_validation0.q new file mode 100644 index 0000000000000..4cb48664b602f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_hiveconf_validation0.q @@ -0,0 +1,5 @@ +-- should fail: hive.join.cache.size accepts int type +desc src; + +set hive.conf.validation=true; +set hive.join.cache.size=test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_hiveconf_validation1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_hiveconf_validation1.q new file mode 100644 index 0000000000000..330aafd19858c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_hiveconf_validation1.q @@ -0,0 +1,5 @@ +-- should fail: hive.map.aggr.hash.min.reduction accepts float type +desc src; + +set hive.conf.validation=true; +set hive.map.aggr.hash.min.reduction=false; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_table_property.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_table_property.q new file mode 100644 index 0000000000000..d582aaeb386c2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/set_table_property.q @@ -0,0 +1,4 @@ +create table testTable(col1 int, col2 int); + +-- set a table property = null, it should be caught by the grammar +alter table testTable set tblproperties ('a'=); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns1.q new file mode 100644 index 0000000000000..25705dc3d5275 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns1.q @@ -0,0 +1,2 @@ +SHOW COLUMNS from shcol_test; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns2.q new file mode 100644 index 0000000000000..c55b449a0b5ff --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns2.q @@ -0,0 +1,2 @@ +SHOW COLUMNS from shcol_test foo; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns3.q new file mode 100644 index 0000000000000..508a786609d8b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_columns3.q @@ -0,0 +1,7 @@ +CREATE DATABASE test_db; +USE test_db; +CREATE TABLE foo(a INT); + +use default; +SHOW COLUMNS from test_db.foo from test_db; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_create_table_does_not_exist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_create_table_does_not_exist.q new file mode 100644 index 0000000000000..83e5093aa1f21 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_create_table_does_not_exist.q @@ -0,0 +1,2 @@ +SHOW CREATE TABLE tmp_nonexist; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_create_table_index.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_create_table_index.q new file mode 100644 index 0000000000000..0dd0ef9a255bf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_create_table_index.q @@ -0,0 +1,6 @@ +CREATE TABLE tmp_showcrt (key int, value string); +CREATE INDEX tmp_index on table tmp_showcrt(key) as 'compact' WITH DEFERRED REBUILD; +SHOW CREATE TABLE default__tmp_showcrt_tmp_index__; +DROP INDEX tmp_index on tmp_showcrt; +DROP TABLE tmp_showcrt; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_partitions1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_partitions1.q new file mode 100644 index 0000000000000..71f68c894f2a0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_partitions1.q @@ -0,0 +1 @@ +SHOW PARTITIONS NonExistentTable; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tableproperties1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tableproperties1.q new file mode 100644 index 0000000000000..254a1d3a5ac3c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tableproperties1.q @@ -0,0 +1 @@ +SHOW TBLPROPERTIES NonExistentTable; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad1.q new file mode 100644 index 0000000000000..1bc94d6392c67 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad1.q @@ -0,0 +1 @@ +SHOW TABLES JOIN; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad2.q new file mode 100644 index 0000000000000..5e828b647ac38 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad2.q @@ -0,0 +1 @@ +SHOW TABLES FROM default LIKE a b; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad_db1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad_db1.q new file mode 100644 index 0000000000000..d0141f6c291cb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad_db1.q @@ -0,0 +1 @@ +SHOW TABLES FROM nonexistent; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad_db2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad_db2.q new file mode 100644 index 0000000000000..ee0deba87a948 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tables_bad_db2.q @@ -0,0 +1 @@ +SHOW TABLES FROM nonexistent LIKE 'test'; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tablestatus.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tablestatus.q new file mode 100644 index 0000000000000..283b5836e27fa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tablestatus.q @@ -0,0 +1 @@ +SHOW TABLE EXTENDED LIKE `srcpar*` PARTITION(ds='2008-04-08', hr=11); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tablestatus_not_existing_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tablestatus_not_existing_part.q new file mode 100644 index 0000000000000..242e165285547 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/show_tablestatus_not_existing_part.q @@ -0,0 +1 @@ +SHOW TABLE EXTENDED LIKE `srcpart` PARTITION(ds='2008-14-08', hr=11); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/smb_bucketmapjoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/smb_bucketmapjoin.q new file mode 100644 index 0000000000000..880323c604b66 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/smb_bucketmapjoin.q @@ -0,0 +1,23 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + + +CREATE TABLE smb_bucket4_1(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS; + + +CREATE TABLE smb_bucket4_2(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS; + +insert overwrite table smb_bucket4_1 +select * from src; + +insert overwrite table smb_bucket4_2 +select * from src; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +select /*+mapjoin(a)*/ * from smb_bucket4_1 a left outer join smb_bucket4_2 b on a.key = b.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/smb_mapjoin_14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/smb_mapjoin_14.q new file mode 100644 index 0000000000000..54bfba03d82d7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/smb_mapjoin_14.q @@ -0,0 +1,38 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table tbl1 +select * from src where key < 10; + +insert overwrite table tbl2 +select * from src where key < 10; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- A join is being performed across different sub-queries, where a mapjoin is being performed in each of them. +-- Each sub-query should be converted to a sort-merge join. +-- A join followed by mapjoin is not allowed, so this query should fail. +-- Once HIVE-3403 is in, this should be automatically converted to a sort-merge join without the hint +explain +select src1.key, src1.cnt1, src2.cnt1 from +( + select key, count(*) as cnt1 from + ( + select /*+mapjoin(a)*/ a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 group by key +) src1 +join +( + select key, count(*) as cnt1 from + ( + select /*+mapjoin(a)*/ a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq2 group by key +) src2 +on src1.key = src2.key +order by src1.key, src1.cnt1, src2.cnt1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sortmerge_mapjoin_mismatch_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sortmerge_mapjoin_mismatch_1.q new file mode 100644 index 0000000000000..7d11f450edfde --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/sortmerge_mapjoin_mismatch_1.q @@ -0,0 +1,28 @@ +create table table_asc(key int, value string) CLUSTERED BY (key) SORTED BY (key asc) +INTO 1 BUCKETS STORED AS RCFILE; +create table table_desc(key int, value string) CLUSTERED BY (key) SORTED BY (key desc) +INTO 1 BUCKETS STORED AS RCFILE; + +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; + +insert overwrite table table_asc select key, value from src; +insert overwrite table table_desc select key, value from src; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- If the user asked for sort merge join to be enforced (by setting +-- hive.enforce.sortmergebucketmapjoin to true), an error should be thrown, since +-- one of the tables is in ascending order and the other is in descending order, +-- and sort merge bucket mapjoin cannot be performed. In the default mode, the +-- query would succeed, although a regular map-join would be performed instead of +-- what the user asked. + +explain +select /*+mapjoin(a)*/ * from table_asc a join table_desc b on a.key = b.key; + +set hive.enforce.sortmergebucketmapjoin=true; + +explain +select /*+mapjoin(a)*/ * from table_asc a join table_desc b on a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_out_of_range.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_out_of_range.q new file mode 100644 index 0000000000000..66af1fd7da682 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_out_of_range.q @@ -0,0 +1,3 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +select key from src tablesample(105 percent); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_wrong_format.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_wrong_format.q new file mode 100644 index 0000000000000..f71cc4487910a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_wrong_format.q @@ -0,0 +1,3 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +select key from src tablesample(1 percent); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_wrong_format2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_wrong_format2.q new file mode 100644 index 0000000000000..1a13c0ff4cb28 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/split_sample_wrong_format2.q @@ -0,0 +1,3 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +select key from src tablesample(1K); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_aggregator_error_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_aggregator_error_1.q new file mode 100644 index 0000000000000..401cc37f67dd0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_aggregator_error_1.q @@ -0,0 +1,18 @@ +-- In this test, there is a dummy stats aggregator which throws an error when the +-- method connect is called (as indicated by the parameter hive.test.dummystats.aggregator) +-- If stats need not be reliable, the statement succeeds. However, if stats are supposed +-- to be reliable (by setting hive.stats.reliable to true), the insert statement fails +-- because stats cannot be collected for this statement + +create table tmptable(key string, value string); + +set hive.stats.dbclass=dummy; +set hive.stats.default.publisher=org.apache.hadoop.hive.ql.stats.DummyStatsPublisher; +set hive.stats.default.aggregator=org.apache.hadoop.hive.ql.stats.DummyStatsAggregator; +set hive.test.dummystats.aggregator=connect; + +set hive.stats.reliable=false; +INSERT OVERWRITE TABLE tmptable select * from src; + +set hive.stats.reliable=true; +INSERT OVERWRITE TABLE tmptable select * from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_aggregator_error_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_aggregator_error_2.q new file mode 100644 index 0000000000000..c7e63591adde0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_aggregator_error_2.q @@ -0,0 +1,16 @@ +-- In this test, the stats aggregator does not exists. +-- If stats need not be reliable, the statement succeeds. However, if stats are supposed +-- to be reliable (by setting hive.stats.reliable to true), the insert statement fails +-- because stats cannot be collected for this statement + +create table tmptable(key string, value string); + +set hive.stats.dbclass=dummy; +set hive.stats.default.publisher=org.apache.hadoop.hive.ql.stats.DummyStatsPublisher; +set hive.stats.default.aggregator=""; + +set hive.stats.reliable=false; +INSERT OVERWRITE TABLE tmptable select * from src; + +set hive.stats.reliable=true; +INSERT OVERWRITE TABLE tmptable select * from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_noscan_non_native.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_noscan_non_native.q new file mode 100644 index 0000000000000..bde66278360c5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_noscan_non_native.q @@ -0,0 +1,6 @@ + +CREATE TABLE non_native1(key int, value string) +STORED BY 'org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler'; + +-- we do not support analyze table ... noscan on non-native tables yet +analyze table non_native1 compute statistics noscan; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_autogether.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_autogether.q new file mode 100644 index 0000000000000..47a8148e0869c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_autogether.q @@ -0,0 +1,31 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; + +-- test analyze table ... compute statistics partialscan + +-- 1. prepare data +CREATE table analyze_srcpart_partial_scan (key STRING, value STRING) +partitioned by (ds string, hr string) +stored as rcfile; +insert overwrite table analyze_srcpart_partial_scan partition (ds, hr) select * from srcpart where ds is not null; +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11); + + +-- 2. partialscan +explain +analyze table analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11) compute statistics partialscan; +analyze table analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11) compute statistics partialscan; + +-- 3. confirm result +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-09',hr=11); +drop table analyze_srcpart_partial_scan; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_non_external.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_non_external.q new file mode 100644 index 0000000000000..c206b8b5d765e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_non_external.q @@ -0,0 +1,5 @@ + +CREATE EXTERNAL TABLE external_table (key int, value string); + +-- we do not support analyze table ... partialscan on EXTERNAL tables yet +analyze table external_table compute statistics partialscan; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_non_native.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_non_native.q new file mode 100644 index 0000000000000..8e02ced85e708 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partialscan_non_native.q @@ -0,0 +1,6 @@ + +CREATE TABLE non_native1(key int, value string) +STORED BY 'org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler'; + +-- we do not support analyze table ... partialscan on non-native tables yet +analyze table non_native1 compute statistics partialscan; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partscan_norcfile.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partscan_norcfile.q new file mode 100644 index 0000000000000..56d93d08aa697 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_partscan_norcfile.q @@ -0,0 +1,12 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +-- test analyze table ... compute statistics partialscan + +create table analyze_srcpart_partial_scan like srcpart; +insert overwrite table analyze_srcpart_partial_scan partition (ds, hr) select * from srcpart where ds is not null; +analyze table analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11) compute statistics partialscan; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_publisher_error_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_publisher_error_1.q new file mode 100644 index 0000000000000..7fa0f55f2a450 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_publisher_error_1.q @@ -0,0 +1,18 @@ +-- In this test, there is a dummy stats publisher which throws an error when the +-- method connect is called (as indicated by the parameter hive.test.dummystats.publisher) +-- If stats need not be reliable, the statement succeeds. However, if stats are supposed +-- to be reliable (by setting hive.stats.reliable to true), the insert statement fails +-- because stats cannot be collected for this statement + +create table tmptable(key string, value string); + +set hive.stats.dbclass=dummy; +set hive.stats.default.publisher=org.apache.hadoop.hive.ql.stats.DummyStatsPublisher; +set hive.stats.default.aggregator=org.apache.hadoop.hive.ql.stats.DummyStatsAggregator; +set hive.test.dummystats.publisher=connect; + +set hive.stats.reliable=false; +INSERT OVERWRITE TABLE tmptable select * from src; + +set hive.stats.reliable=true; +INSERT OVERWRITE TABLE tmptable select * from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_publisher_error_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_publisher_error_2.q new file mode 100644 index 0000000000000..f82d4b54b697b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/stats_publisher_error_2.q @@ -0,0 +1,16 @@ +-- In this test, the stats publisher does not exists. +-- If stats need not be reliable, the statement succeeds. However, if stats are supposed +-- to be reliable (by setting hive.stats.reliable to true), the insert statement fails +-- because stats cannot be collected for this statement + +create table tmptable(key string, value string); + +set hive.stats.dbclass=dummy; +set hive.stats.default.publisher=""; +set hive.stats.default.aggregator=org.apache.hadoop.hive.ql.stats.DummyStatsAggregator; + +set hive.stats.reliable=false; +INSERT OVERWRITE TABLE tmptable select * from src; + +set hive.stats.reliable=true; +INSERT OVERWRITE TABLE tmptable select * from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_join.q new file mode 100644 index 0000000000000..d618ee28fdb2e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_join.q @@ -0,0 +1,3 @@ +set hive.mapred.mode=strict; + +SELECT * FROM src src1 JOIN src src2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_orderby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_orderby.q new file mode 100644 index 0000000000000..781cdbb05088b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_orderby.q @@ -0,0 +1,7 @@ +set hive.mapred.mode=strict; + +EXPLAIN +SELECT src.key, src.value from src order by src.key; + +SELECT src.key, src.value from src order by src.key; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_pruning.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_pruning.q new file mode 100644 index 0000000000000..270ab2f593ac2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/strict_pruning.q @@ -0,0 +1,6 @@ +set hive.mapred.mode=strict; + +EXPLAIN +SELECT count(1) FROM srcPART; + +SELECT count(1) FROM srcPART; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/subq_insert.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/subq_insert.q new file mode 100644 index 0000000000000..0bc9e24e4828c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/subq_insert.q @@ -0,0 +1,2 @@ +EXPLAIN +SELECT * FROM (INSERT OVERWRITE TABLE src1 SELECT * FROM src ) y; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/touch1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/touch1.q new file mode 100644 index 0000000000000..9efbba0082b6f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/touch1.q @@ -0,0 +1 @@ +ALTER TABLE srcpart TOUCH PARTITION (ds='2008-04-08', hr='13'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/touch2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/touch2.q new file mode 100644 index 0000000000000..923a171e0482e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/touch2.q @@ -0,0 +1 @@ +ALTER TABLE src TOUCH PARTITION (ds='2008-04-08', hr='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_bucketed_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_bucketed_column.q new file mode 100644 index 0000000000000..e53665695a39d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_bucketed_column.q @@ -0,0 +1,7 @@ +-- Tests truncating a bucketed column + +CREATE TABLE test_tab (key STRING, value STRING) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS RCFILE; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src; + +TRUNCATE TABLE test_tab COLUMNS (key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_indexed_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_indexed_table.q new file mode 100644 index 0000000000000..13f32c8968a16 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_indexed_table.q @@ -0,0 +1,9 @@ +-- Tests truncating a column from an indexed table + +CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src; + +CREATE INDEX test_tab_index ON TABLE test_tab (key) as 'COMPACT' WITH DEFERRED REBUILD; + +TRUNCATE TABLE test_tab COLUMNS (value); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_list_bucketing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_list_bucketing.q new file mode 100644 index 0000000000000..0ece6007f7b61 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_list_bucketing.q @@ -0,0 +1,14 @@ +set hive.mapred.supports.subdirectories=true; +set mapred.input.dir.recursive=true; + +-- Tests truncating a column on which a table is list bucketed + +CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE; + +ALTER TABLE test_tab +SKEWED BY (key) ON ("484") +STORED AS DIRECTORIES; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src; + +TRUNCATE TABLE test_tab COLUMNS (key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_seqfile.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_seqfile.q new file mode 100644 index 0000000000000..903540dae8985 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_column_seqfile.q @@ -0,0 +1,7 @@ +-- Tests truncating a column from a table stored as a sequence file + +CREATE TABLE test_tab (key STRING, value STRING) STORED AS SEQUENCEFILE; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src; + +TRUNCATE TABLE test_tab COLUMNS (key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_nonexistant_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_nonexistant_column.q new file mode 100644 index 0000000000000..5509552811b09 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_nonexistant_column.q @@ -0,0 +1,7 @@ +-- Tests attempting to truncate a column in a table that doesn't exist + +CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src; + +TRUNCATE TABLE test_tab COLUMNS (doesnt_exist); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_partition_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_partition_column.q new file mode 100644 index 0000000000000..134743ac13a5d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_partition_column.q @@ -0,0 +1,7 @@ +-- Tests truncating a partition column + +CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE; + +INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src; + +TRUNCATE TABLE test_tab COLUMNS (part); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_partition_column2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_partition_column2.q new file mode 100644 index 0000000000000..47635208a7810 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_partition_column2.q @@ -0,0 +1,7 @@ +-- Tests truncating a partition column + +CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE; + +INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src; + +TRUNCATE TABLE test_tab PARTITION (part = '1') COLUMNS (part); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure1.q new file mode 100644 index 0000000000000..f6cfa44bbb126 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure1.q @@ -0,0 +1,2 @@ +-- partition spec for non-partitioned table +TRUNCATE TABLE src partition (ds='2008-04-08', hr='11'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure2.q new file mode 100644 index 0000000000000..1137d893eb0e1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure2.q @@ -0,0 +1,2 @@ +-- full partition spec for not existing partition +TRUNCATE TABLE srcpart partition (ds='2012-12-17', hr='15'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure3.q new file mode 100644 index 0000000000000..c5cf58775b309 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure3.q @@ -0,0 +1,4 @@ +create external table external1 (a int, b int) partitioned by (ds string); + +-- trucate for non-managed table +TRUNCATE TABLE external1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure4.q new file mode 100644 index 0000000000000..a7f1e92d55980 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/truncate_table_failure4.q @@ -0,0 +1,5 @@ +CREATE TABLE non_native(key int, value string) +STORED BY 'org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler'; + +-- trucate for non-native table +TRUNCATE TABLE non_native; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udaf_invalid_place.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udaf_invalid_place.q new file mode 100644 index 0000000000000..f37ce72ae4197 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udaf_invalid_place.q @@ -0,0 +1 @@ +select distinct key, sum(key) from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_array_contains_wrong1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_array_contains_wrong1.q new file mode 100644 index 0000000000000..c2a132d4db05e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_array_contains_wrong1.q @@ -0,0 +1,2 @@ +-- invalid first argument +SELECT array_contains(1, 2) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_array_contains_wrong2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_array_contains_wrong2.q new file mode 100644 index 0000000000000..36f85d34a6e0b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_array_contains_wrong2.q @@ -0,0 +1,2 @@ +-- invalid second argument +SELECT array_contains(array(1, 2, 3), '2') FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_assert_true.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_assert_true.q new file mode 100644 index 0000000000000..73b3f9654f1c3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_assert_true.q @@ -0,0 +1,7 @@ +DESCRIBE FUNCTION ASSERT_TRUE; + +EXPLAIN SELECT ASSERT_TRUE(x > 0) FROM src LATERAL VIEW EXPLODE(ARRAY(1, 2)) a AS x LIMIT 2; +SELECT ASSERT_TRUE(x > 0) FROM src LATERAL VIEW EXPLODE(ARRAY(1, 2)) a AS x LIMIT 2; + +EXPLAIN SELECT ASSERT_TRUE(x < 2) FROM src LATERAL VIEW EXPLODE(ARRAY(1, 2)) a AS x LIMIT 2; +SELECT ASSERT_TRUE(x < 2) FROM src LATERAL VIEW EXPLODE(ARRAY(1, 2)) a AS x LIMIT 2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_assert_true2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_assert_true2.q new file mode 100644 index 0000000000000..4b62220764bb9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_assert_true2.q @@ -0,0 +1,2 @@ +EXPLAIN SELECT 1 + ASSERT_TRUE(x < 2) FROM src LATERAL VIEW EXPLODE(ARRAY(1, 2)) a AS x LIMIT 2; +SELECT 1 + ASSERT_TRUE(x < 2) FROM src LATERAL VIEW EXPLODE(ARRAY(1, 2)) a AS x LIMIT 2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong.q new file mode 100644 index 0000000000000..2fb5ff74cc3ce --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong.q @@ -0,0 +1,6 @@ +SELECT CASE '1' + WHEN 1 THEN 2 + WHEN 3 THEN 4 + ELSE 5 + END +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong2.q new file mode 100644 index 0000000000000..5772dc1a95c9d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong2.q @@ -0,0 +1,6 @@ +SELECT CASE 1 + WHEN 1 THEN '2' + WHEN 3 THEN 4 + ELSE 5 + END +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong3.q new file mode 100644 index 0000000000000..5aaf0188eb9c6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_case_type_wrong3.q @@ -0,0 +1,6 @@ +SELECT CASE 1 + WHEN 1 THEN NULL + WHEN 3 THEN '2' + ELSE 7 + END +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_coalesce.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_coalesce.q new file mode 100644 index 0000000000000..7405e387caf70 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_coalesce.q @@ -0,0 +1 @@ +SELECT COALESCE(array('a', 'b'), '2.0') FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong1.q new file mode 100644 index 0000000000000..8c2017bc636cf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong1.q @@ -0,0 +1,2 @@ +-- invalid argument number +SELECT concat_ws('-') FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong2.q new file mode 100644 index 0000000000000..c49e7868bbb5e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong2.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT concat_ws('[]', array(100, 200, 50)) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong3.q new file mode 100644 index 0000000000000..72b86271f5ea6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_concat_ws_wrong3.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT concat_ws(1234, array('www', 'facebook', 'com')) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_elt_wrong_args_len.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_elt_wrong_args_len.q new file mode 100644 index 0000000000000..fbe4902d644cc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_elt_wrong_args_len.q @@ -0,0 +1 @@ +SELECT elt(3) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_elt_wrong_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_elt_wrong_type.q new file mode 100644 index 0000000000000..bb1fdbf789e3e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_elt_wrong_type.q @@ -0,0 +1,3 @@ +FROM src_thrift +SELECT elt(1, src_thrift.lintstring) +WHERE src_thrift.lintstring IS NOT NULL; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_field_wrong_args_len.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_field_wrong_args_len.q new file mode 100644 index 0000000000000..9703c82d8a4d9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_field_wrong_args_len.q @@ -0,0 +1 @@ +SELECT field(3) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_field_wrong_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_field_wrong_type.q new file mode 100644 index 0000000000000..61b2cd06496e2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_field_wrong_type.q @@ -0,0 +1,3 @@ +FROM src_thrift +SELECT field(1, src_thrift.lintstring) +WHERE src_thrift.lintstring IS NOT NULL; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong1.q new file mode 100644 index 0000000000000..18c985c606849 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong1.q @@ -0,0 +1,2 @@ +-- invalid argument length +SELECT format_number(12332.123456) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong2.q new file mode 100644 index 0000000000000..7959c20b28e56 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong2.q @@ -0,0 +1,2 @@ +-- invalid argument length +SELECT format_number(12332.123456, 2, 3) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong3.q new file mode 100644 index 0000000000000..7d90ef86da7b7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong3.q @@ -0,0 +1,2 @@ +-- invalid argument(second argument should be >= 0) +SELECT format_number(12332.123456, -4) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong4.q new file mode 100644 index 0000000000000..e545f4aa1420c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong4.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT format_number(12332.123456, 4.01) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong5.q new file mode 100644 index 0000000000000..a6f71778f143b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong5.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT format_number(array(12332.123456, 321.23), 5) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong6.q new file mode 100644 index 0000000000000..e5b11b9b71ee7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong6.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT format_number(12332.123456, "4") FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong7.q new file mode 100644 index 0000000000000..aa4a3a44751c4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_format_number_wrong7.q @@ -0,0 +1,2 @@ +-- invalid argument type(format_number returns the result as a string) +SELECT format_number(format_number(12332.123456, 4), 2) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_function_does_not_implement_udf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_function_does_not_implement_udf.q new file mode 100644 index 0000000000000..21ca6e7d36255 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_function_does_not_implement_udf.q @@ -0,0 +1 @@ +CREATE TEMPORARY FUNCTION moo AS 'org.apache.hadoop.hive.ql.Driver'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_if_not_bool.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_if_not_bool.q new file mode 100644 index 0000000000000..74458d0c3db2c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_if_not_bool.q @@ -0,0 +1 @@ +SELECT IF('STRING', 1, 1) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_if_wrong_args_len.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_if_wrong_args_len.q new file mode 100644 index 0000000000000..ad19364c33076 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_if_wrong_args_len.q @@ -0,0 +1 @@ +SELECT IF(TRUE, 1) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_in.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_in.q new file mode 100644 index 0000000000000..ce9ce54fac680 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_in.q @@ -0,0 +1 @@ +SELECT 3 IN (array(1,2,3)) FROM src; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_instr_wrong_args_len.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_instr_wrong_args_len.q new file mode 100644 index 0000000000000..ac8253fb1e941 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_instr_wrong_args_len.q @@ -0,0 +1 @@ +SELECT instr('abcd') FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_instr_wrong_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_instr_wrong_type.q new file mode 100644 index 0000000000000..9ac3ed6614897 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_instr_wrong_type.q @@ -0,0 +1,3 @@ +FROM src_thrift +SELECT instr('abcd', src_thrift.lintstring) +WHERE src_thrift.lintstring IS NOT NULL; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_locate_wrong_args_len.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_locate_wrong_args_len.q new file mode 100644 index 0000000000000..ca7caad54d646 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_locate_wrong_args_len.q @@ -0,0 +1 @@ +SELECT locate('a', 'b', 1, 2) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_locate_wrong_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_locate_wrong_type.q new file mode 100644 index 0000000000000..4bbf79a310b01 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_locate_wrong_type.q @@ -0,0 +1,3 @@ +FROM src_thrift +SELECT locate('abcd', src_thrift.lintstring) +WHERE src_thrift.lintstring IS NOT NULL; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_keys_arg_num.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_keys_arg_num.q new file mode 100644 index 0000000000000..ebb6c2ab418eb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_keys_arg_num.q @@ -0,0 +1 @@ +SELECT map_keys(map("a", "1"), map("b", "2")) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_keys_arg_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_keys_arg_type.q new file mode 100644 index 0000000000000..0757d1494f3cd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_keys_arg_type.q @@ -0,0 +1 @@ +SELECT map_keys(array(1, 2, 3)) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_values_arg_num.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_values_arg_num.q new file mode 100644 index 0000000000000..c97476a1263ee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_values_arg_num.q @@ -0,0 +1 @@ +SELECT map_values(map("a", "1"), map("b", "2")) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_values_arg_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_values_arg_type.q new file mode 100644 index 0000000000000..cc060ea0f0ec7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_map_values_arg_type.q @@ -0,0 +1 @@ +SELECT map_values(array(1, 2, 3, 4)) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_max.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_max.q new file mode 100644 index 0000000000000..7282e07596032 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_max.q @@ -0,0 +1,2 @@ +SELECT max(map("key", key, "value", value)) +FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_min.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_min.q new file mode 100644 index 0000000000000..b9528fa6dafef --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_min.q @@ -0,0 +1,2 @@ +SELECT min(map("key", key, "value", value)) +FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong1.q new file mode 100644 index 0000000000000..88ca4fefc3055 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong1.q @@ -0,0 +1,2 @@ +-- invalid argument length +SELECT printf() FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong2.q new file mode 100644 index 0000000000000..01ed2ffcf017f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong2.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT printf(100) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong3.q new file mode 100644 index 0000000000000..71f118b8dc0dd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong3.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT printf("Hello World %s", array("invalid", "argument")) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong4.q new file mode 100644 index 0000000000000..71f118b8dc0dd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_printf_wrong4.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT printf("Hello World %s", array("invalid", "argument")) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_reflect_neg.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_reflect_neg.q new file mode 100644 index 0000000000000..67efb64505d9e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_reflect_neg.q @@ -0,0 +1,9 @@ +SELECT reflect("java.lang.StringClassThatDoesNotExist", "valueOf", 1), + reflect("java.lang.String", "methodThatDoesNotExist"), + reflect("java.lang.Math", "max", "overloadthatdoesnotexist", 3), + reflect("java.lang.Math", "min", 2, 3), + reflect("java.lang.Math", "round", 2.5), + reflect("java.lang.Math", "exp", 1.0), + reflect("java.lang.Math", "floor", 1.9) +FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_size_wrong_args_len.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_size_wrong_args_len.q new file mode 100644 index 0000000000000..c628ff8aa1972 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_size_wrong_args_len.q @@ -0,0 +1,5 @@ +FROM src_thrift +SELECT size(src_thrift.lint, src_thrift.lintstring), + size() +WHERE src_thrift.lint IS NOT NULL + AND NOT (src_thrift.mstringstring IS NULL) LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_size_wrong_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_size_wrong_type.q new file mode 100644 index 0000000000000..16695f6adc3f4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_size_wrong_type.q @@ -0,0 +1 @@ +SELECT SIZE('wrong type: string') FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong1.q new file mode 100644 index 0000000000000..9954f4ab4d3c5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong1.q @@ -0,0 +1,2 @@ +-- invalid argument number +SELECT sort_array(array(2, 5, 4), 3) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong2.q new file mode 100644 index 0000000000000..32c2645519497 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong2.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT sort_array("Invalid") FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong3.q new file mode 100644 index 0000000000000..034de06b8e391 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_sort_array_wrong3.q @@ -0,0 +1,2 @@ +-- invalid argument type +SELECT sort_array(array(array(10, 20), array(5, 15), array(3, 13))) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_test_error.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_test_error.q new file mode 100644 index 0000000000000..846f87c2e51b1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_test_error.q @@ -0,0 +1,3 @@ +CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse'; + +SELECT test_error(key < 125 OR key > 130) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_test_error_reduce.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_test_error_reduce.q new file mode 100644 index 0000000000000..b1a06f2a07af3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_test_error_reduce.q @@ -0,0 +1,11 @@ +CREATE TEMPORARY FUNCTION test_error AS 'org.apache.hadoop.hive.ql.udf.UDFTestErrorOnFalse'; + + +SELECT test_error(key < 125 OR key > 130) +FROM ( + SELECT * + FROM src + DISTRIBUTE BY rand() +) map_output; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong.q new file mode 100644 index 0000000000000..d4d2d2e48517f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong.q @@ -0,0 +1,6 @@ +SELECT CASE + WHEN TRUE THEN 2 + WHEN '1' THEN 4 + ELSE 5 + END +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong2.q new file mode 100644 index 0000000000000..79fa65f63da56 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong2.q @@ -0,0 +1,6 @@ +SELECT CASE + WHEN 1=2 THEN '2' + WHEN 3=4 THEN 4 + ELSE 5 + END +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong3.q new file mode 100644 index 0000000000000..8bb5fdd7ea377 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udf_when_type_wrong3.q @@ -0,0 +1,6 @@ +SELECT CASE + WHEN 1=2 THEN '2' + WHEN 3=4 THEN '5' + ELSE 5.3 + END +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udfnull.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udfnull.q new file mode 100644 index 0000000000000..3c4204f780004 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udfnull.q @@ -0,0 +1,6 @@ + +CREATE TEMPORARY FUNCTION example_arraysum AS 'org.apache.hadoop.hive.contrib.udf.example.UDFExampleArraySum'; + +SELECT example_arraysum(lint)FROM src_thrift; + +DROP TEMPORARY FUNCTION example_arraysum; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported1.q new file mode 100644 index 0000000000000..942ae5d8315f5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported1.q @@ -0,0 +1 @@ +SELECT explode(map(1,'one',2,'two',3,'three')) as (myKey,myVal) FROM src GROUP BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported2.q new file mode 100644 index 0000000000000..00d359a75ce0c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported2.q @@ -0,0 +1 @@ +SELECT explode(map(1,'one',2,'two',3,'three')) as (myKey,myVal,myVal2) FROM src; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported3.q new file mode 100644 index 0000000000000..51df8fa862e1a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported3.q @@ -0,0 +1 @@ +select explode(array(1),array(2)) as myCol from src; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported4.q new file mode 100644 index 0000000000000..ae8dff7bad8d8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_explode_not_supported4.q @@ -0,0 +1 @@ +SELECT explode(null) as myNull FROM src GROUP BY key; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_invalid_place.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_invalid_place.q new file mode 100644 index 0000000000000..ab84a801e9ed6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_invalid_place.q @@ -0,0 +1 @@ +select distinct key, explode(key) from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_not_supported1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_not_supported1.q new file mode 100644 index 0000000000000..04e98d52c548a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_not_supported1.q @@ -0,0 +1 @@ +SELECT explode(array(1,2,3)) as myCol, key FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_not_supported3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_not_supported3.q new file mode 100644 index 0000000000000..f4fe0dde3e62c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/udtf_not_supported3.q @@ -0,0 +1 @@ +SELECT explode(array(1,2,3)) as myCol FROM src GROUP BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union.q new file mode 100644 index 0000000000000..e3c5c830897ea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union.q @@ -0,0 +1,4 @@ +explain +select s1.key as key, s1.value as value from src s1 + UNION ALL +select s2.key as key, s2.value as value from src s2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union2.q new file mode 100644 index 0000000000000..38db488eaf68e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union2.q @@ -0,0 +1,13 @@ + + +create table if not exists union2_t1(r string, c string, v array); +create table if not exists union2_t2(s string, c string, v string); + +explain +SELECT s.r, s.c, sum(s.v) +FROM ( + SELECT a.r AS r, a.c AS c, a.v AS v FROM union2_t1 a + UNION ALL + SELECT b.s AS r, b.c AS c, 0 + b.v AS v FROM union2_t2 b +) s +GROUP BY s.r, s.c; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union22.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union22.q new file mode 100644 index 0000000000000..72f3314bdac96 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union22.q @@ -0,0 +1,26 @@ +create table dst_union22(k1 string, k2 string, k3 string, k4 string) partitioned by (ds string); +create table dst_union22_delta(k0 string, k1 string, k2 string, k3 string, k4 string, k5 string) partitioned by (ds string); + +insert overwrite table dst_union22 partition (ds='1') +select key, value, key , value from src; + +insert overwrite table dst_union22_delta partition (ds='1') +select key, key, value, key, value, value from src; + +set hive.merge.mapfiles=false; + +-- Union followed by Mapjoin is not supported. +-- The same query would work without the hint +-- Note that there is a positive test with the same name in clientpositive +explain extended +insert overwrite table dst_union22 partition (ds='2') +select * from +( +select k1 as k1, k2 as k2, k3 as k3, k4 as k4 from dst_union22_delta where ds = '1' and k0 <= 50 +union all +select /*+ MAPJOIN(b) */ a.k1 as k1, a.k2 as k2, b.k3 as k3, b.k4 as k4 +from dst_union22 a left outer join (select * from dst_union22_delta where ds = '1' and k0 > 50) b on +a.k1 = b.k1 and a.ds='1' +where a.k1 > 20 +) +subq; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union3.q new file mode 100644 index 0000000000000..ce657478c150d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/union3.q @@ -0,0 +1,5 @@ +-- Ensure that UNION ALL columns are in the correct order on both sides +-- Ensure that the appropriate error message is propagated +CREATE TABLE IF NOT EXISTS union3 (bar int, baz int); +SELECT * FROM ( SELECT f.bar, f.baz FROM union3 f UNION ALL SELECT b.baz, b.bar FROM union3 b ) c; +DROP TABLE union3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin.q new file mode 100644 index 0000000000000..d6a19c397d80d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin.q @@ -0,0 +1,3 @@ +FROM UNIQUEJOIN (SELECT src.key from src WHERE src.key<4) a (a.key), PRESERVE src b(b.key) +SELECT a.key, b.key; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin2.q new file mode 100644 index 0000000000000..6e9a08251407d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin2.q @@ -0,0 +1,3 @@ +FROM UNIQUEJOIN src a (a.key), PRESERVE src b (b.key, b.val) +SELECT a.key, b.key; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin3.q new file mode 100644 index 0000000000000..89a8f1b2aaa84 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/uniquejoin3.q @@ -0,0 +1,3 @@ +FROM UNIQUEJOIN src a (a.key), PRESERVE src b (b.key) JOIN src c ON c.key +SELECT a.key; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/unset_table_property.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/unset_table_property.q new file mode 100644 index 0000000000000..7a24e652b46f2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/unset_table_property.q @@ -0,0 +1,6 @@ +CREATE TABLE testTable(col1 INT, col2 INT); +ALTER TABLE testTable SET TBLPROPERTIES ('a'='1', 'c'='3'); +SHOW TBLPROPERTIES testTable; + +-- unset a subset of the properties and some non-existed properties without if exists +ALTER TABLE testTable UNSET TBLPROPERTIES ('c', 'x', 'y', 'z'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/unset_view_property.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/unset_view_property.q new file mode 100644 index 0000000000000..11131006e998a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/unset_view_property.q @@ -0,0 +1,6 @@ +CREATE VIEW testView AS SELECT value FROM src WHERE key=86; +ALTER VIEW testView SET TBLPROPERTIES ('propA'='100', 'propB'='200'); +SHOW TBLPROPERTIES testView; + +-- unset a subset of the properties and some non-existed properties without if exists +ALTER VIEW testView UNSET TBLPROPERTIES ('propB', 'propX', 'propY', 'propZ'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/windowing_leadlag_in_udaf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/windowing_leadlag_in_udaf.q new file mode 100644 index 0000000000000..b54b7a532176f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/windowing_leadlag_in_udaf.q @@ -0,0 +1,15 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +select sum(lead(p_retailprice,1)) as s1 from part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/windowing_ll_no_over.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/windowing_ll_no_over.q new file mode 100644 index 0000000000000..3ca1104b0158d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/windowing_ll_no_over.q @@ -0,0 +1,17 @@ +DROP TABLE part; + +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +select p_mfgr, +lead(p_retailprice,1) as s1 +from part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/wrong_column_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/wrong_column_type.q new file mode 100644 index 0000000000000..490f0c3b4d110 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientnegative/wrong_column_type.q @@ -0,0 +1,4 @@ +CREATE TABLE dest1(a float); + +INSERT OVERWRITE TABLE dest1 +SELECT array(1.0,2.0) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_part_exist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_part_exist.q new file mode 100644 index 0000000000000..d176661ecb8ea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_part_exist.q @@ -0,0 +1,37 @@ +CREATE TABLE add_part_test (key STRING, value STRING) PARTITIONED BY (ds STRING); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD PARTITION (ds='2010-01-01'); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD IF NOT EXISTS PARTITION (ds='2010-01-01'); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD IF NOT EXISTS PARTITION (ds='2010-01-02'); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD IF NOT EXISTS PARTITION (ds='2010-01-01') PARTITION (ds='2010-01-02') PARTITION (ds='2010-01-03'); +SHOW PARTITIONS add_part_test; + +DROP TABLE add_part_test; +SHOW TABLES; + +-- Test ALTER TABLE ADD PARTITION in non-default Database +CREATE DATABASE add_part_test_db; +USE add_part_test_db; +SHOW TABLES; + +CREATE TABLE add_part_test (key STRING, value STRING) PARTITIONED BY (ds STRING); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD PARTITION (ds='2010-01-01'); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD IF NOT EXISTS PARTITION (ds='2010-01-01'); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD IF NOT EXISTS PARTITION (ds='2010-01-02'); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD IF NOT EXISTS PARTITION (ds='2010-01-01') PARTITION (ds='2010-01-02') PARTITION (ds='2010-01-03'); +SHOW PARTITIONS add_part_test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_part_multiple.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_part_multiple.q new file mode 100644 index 0000000000000..9248a7f3b94b8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_part_multiple.q @@ -0,0 +1,24 @@ +-- HIVE-5122 locations for 2nd, 3rd... partition are ignored + +CREATE TABLE add_part_test (key STRING, value STRING) PARTITIONED BY (ds STRING); + +explain +ALTER TABLE add_part_test ADD IF NOT EXISTS +PARTITION (ds='2010-01-01') location 'A' +PARTITION (ds='2010-02-01') location 'B' +PARTITION (ds='2010-03-01') +PARTITION (ds='2010-04-01') location 'C'; + +ALTER TABLE add_part_test ADD IF NOT EXISTS +PARTITION (ds='2010-01-01') location 'A' +PARTITION (ds='2010-02-01') location 'B' +PARTITION (ds='2010-03-01') +PARTITION (ds='2010-04-01') location 'C'; + +from src TABLESAMPLE (1 ROWS) +insert into table add_part_test PARTITION (ds='2010-01-01') select 100,100 +insert into table add_part_test PARTITION (ds='2010-02-01') select 200,200 +insert into table add_part_test PARTITION (ds='2010-03-01') select 400,300 +insert into table add_part_test PARTITION (ds='2010-04-01') select 500,400; + +select * from add_part_test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_partition_no_whitelist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_partition_no_whitelist.q new file mode 100644 index 0000000000000..f51c53c2ff627 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_partition_no_whitelist.q @@ -0,0 +1,7 @@ +SET hive.metastore.partition.name.whitelist.pattern=; +-- Test with no partition name whitelist pattern + +CREATE TABLE part_nowhitelist_test (key STRING, value STRING) PARTITIONED BY (ds STRING); +SHOW PARTITIONS part_nowhitelist_test; + +ALTER TABLE part_nowhitelist_test ADD PARTITION (ds='1,2,3,4'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_partition_with_whitelist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_partition_with_whitelist.q new file mode 100644 index 0000000000000..009c7610ef917 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/add_partition_with_whitelist.q @@ -0,0 +1,9 @@ +SET hive.metastore.partition.name.whitelist.pattern=[A-Za-z]*; +-- This pattern matches only letters. + +CREATE TABLE part_whitelist_test (key STRING, value STRING) PARTITIONED BY (ds STRING); +SHOW PARTITIONS part_whitelist_test; + +ALTER TABLE part_whitelist_test ADD PARTITION (ds='Part'); + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alias_casted_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alias_casted_column.q new file mode 100644 index 0000000000000..f1fc91a5f2d0c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alias_casted_column.q @@ -0,0 +1,5 @@ +-- HIVE-2477 Use name of original expression for name of CAST output +explain select key from (select cast(key as int) from src )t; + +--backward +explain select key2 from (select cast(key as int) key2 from src )t; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/allcolref_in_udf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/allcolref_in_udf.q new file mode 100644 index 0000000000000..020975cc69b94 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/allcolref_in_udf.q @@ -0,0 +1,21 @@ +explain +select concat(*),array(*) from src where key < 100 limit 10; + +select concat(*),array(*) from src where key < 100 limit 10; + +-- The order of columns is decided by row schema of prev operator +-- Like join which has two or more aliases, it's from left most aias to right aliases. + +explain +select stack(2, *) as (e1,e2,e3) from ( + select concat(*), concat(a.*), concat(b.*), concat(a.*, b.key), concat(a.key, b.*) + from src a join src b on a.key+1=b.key where a.key < 100) x limit 10; + +select stack(2, *) as (e1,e2,e3) from ( + select concat(*), concat(a.*), concat(b.*), concat(a.*, b.key), concat(a.key, b.*) + from src a join src b on a.key+1=b.key where a.key < 100) x limit 10; + +-- HIVE-4181 TOK_FUNCTIONSTAR for UDTF +create table allcolref as select array(key, value) from src; +explain select explode(*) as x from allcolref limit 10; +select explode(*) as x from allcolref limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter1.q new file mode 100644 index 0000000000000..5fd19455f93cd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter1.q @@ -0,0 +1,71 @@ +create table alter1(a int, b int); +describe extended alter1; +alter table alter1 set tblproperties ('a'='1', 'c'='3'); +describe extended alter1; +alter table alter1 set tblproperties ('a'='1', 'c'='4', 'd'='3'); +describe extended alter1; + +alter table alter1 set tblproperties ('EXTERNAL'='TRUE'); +describe extended alter1; +alter table alter1 set tblproperties ('EXTERNAL'='FALSE'); +describe extended alter1; + +alter table alter1 set serdeproperties('s1'='9'); +describe extended alter1; +alter table alter1 set serdeproperties('s1'='10', 's2' ='20'); +describe extended alter1; + +add jar ../data/files/TestSerDe.jar; +alter table alter1 set serde 'org.apache.hadoop.hive.serde2.TestSerDe' with serdeproperties('s1'='9'); +describe extended alter1; + +alter table alter1 set serde 'org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe'; +describe extended alter1; + +alter table alter1 replace columns (a int, b int, c string); +describe alter1; + +-- Cleanup +DROP TABLE alter1; +SHOW TABLES; + +-- With non-default Database + +CREATE DATABASE alter1_db; +USE alter1_db; +SHOW TABLES; + +CREATE TABLE alter1(a INT, b INT); +DESCRIBE EXTENDED alter1; + +ALTER TABLE alter1 SET TBLPROPERTIES ('a'='1', 'c'='3'); +DESCRIBE EXTENDED alter1; + +ALTER TABLE alter1 SET TBLPROPERTIES ('a'='1', 'c'='4', 'd'='3'); +DESCRIBE EXTENDED alter1; + +ALTER TABLE alter1 SET TBLPROPERTIES ('EXTERNAL'='TRUE'); +DESCRIBE EXTENDED alter1; + +ALTER TABLE alter1 SET TBLPROPERTIES ('EXTERNAL'='FALSE'); +DESCRIBE EXTENDED alter1; + +ALTER TABLE alter1 SET SERDEPROPERTIES('s1'='9'); +DESCRIBE EXTENDED alter1; + +ALTER TABLE alter1 SET SERDEPROPERTIES('s1'='10', 's2' ='20'); +DESCRIBE EXTENDED alter1; + +add jar ../data/files/TestSerDe.jar; +ALTER TABLE alter1 SET SERDE 'org.apache.hadoop.hive.serde2.TestSerDe' WITH SERDEPROPERTIES ('s1'='9'); +DESCRIBE EXTENDED alter1; + +ALTER TABLE alter1 SET SERDE 'org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe'; +DESCRIBE EXTENDED alter1; + +ALTER TABLE alter1 REPLACE COLUMNS (a int, b int, c string); +DESCRIBE alter1; + +DROP TABLE alter1; +USE default; +DROP DATABASE alter1_db; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter2.q new file mode 100644 index 0000000000000..ddf57873a548c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter2.q @@ -0,0 +1,55 @@ +create table alter2(a int, b int) partitioned by (insertdate string); +describe extended alter2; +show partitions alter2; +alter table alter2 add partition (insertdate='2008-01-01') location '2008/01/01'; +describe extended alter2; +show partitions alter2; +alter table alter2 add partition (insertdate='2008-01-02') location '2008/01/02'; +describe extended alter2; +show partitions alter2; +drop table alter2; + +create external table alter2(a int, b int) partitioned by (insertdate string); +describe extended alter2; +show partitions alter2; +alter table alter2 add partition (insertdate='2008-01-01') location '2008/01/01'; +describe extended alter2; +show partitions alter2; +alter table alter2 add partition (insertdate='2008-01-02') location '2008/01/02'; +describe extended alter2; +show partitions alter2; + +-- Cleanup +DROP TABLE alter2; +SHOW TABLES; + +-- Using non-default Database + +CREATE DATABASE alter2_db; +USE alter2_db; +SHOW TABLES; + +CREATE TABLE alter2(a int, b int) PARTITIONED BY (insertdate string); +DESCRIBE EXTENDED alter2; +SHOW PARTITIONS alter2; +ALTER TABLE alter2 ADD PARTITION (insertdate='2008-01-01') LOCATION '2008/01/01'; +DESCRIBE EXTENDED alter2; +SHOW PARTITIONS alter2; +ALTER TABLE alter2 ADD PARTITION (insertdate='2008-01-02') LOCATION '2008/01/02'; +DESCRIBE EXTENDED alter2; +SHOW PARTITIONS alter2; +DROP TABLE alter2; + +CREATE EXTERNAL TABLE alter2(a int, b int) PARTITIONED BY (insertdate string); +DESCRIBE EXTENDED alter2; +SHOW PARTITIONS alter2; +ALTER TABLE alter2 ADD PARTITION (insertdate='2008-01-01') LOCATION '2008/01/01'; +DESCRIBE EXTENDED alter2; +SHOW PARTITIONS alter2; +ALTER TABLE alter2 ADD PARTITION (insertdate='2008-01-02') LOCATION '2008/01/02'; +DESCRIBE EXTENDED alter2; +SHOW PARTITIONS alter2; + +DROP TABLE alter2; +USE default; +DROP DATABASE alter2_db; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter3.q new file mode 100644 index 0000000000000..3cde00748b98e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter3.q @@ -0,0 +1,56 @@ +create table alter3_src ( col1 string ) stored as textfile ; +load data local inpath '../data/files/test.dat' overwrite into table alter3_src ; + +create table alter3 ( col1 string ) partitioned by (pcol1 string , pcol2 string) stored as sequencefile; + +create table alter3_like like alter3; + +insert overwrite table alter3 partition (pCol1='test_part:', pcol2='test_part:') select col1 from alter3_src ; +select * from alter3 where pcol1='test_part:' and pcol2='test_part:'; + + +alter table alter3 rename to alter3_renamed; +describe extended alter3_renamed; +describe extended alter3_renamed partition (pCol1='test_part:', pcol2='test_part:'); +select * from alter3_renamed where pcol1='test_part:' and pcol2='test_part:'; + +insert overwrite table alter3_like +partition (pCol1='test_part:', pcol2='test_part:') +select col1 from alter3_src; +alter table alter3_like rename to alter3_like_renamed; + +describe extended alter3_like_renamed; + +-- Cleanup +DROP TABLE alter3_src; +DROP TABLE alter3_renamed; +DROP TABLE alter3_like_renamed; +SHOW TABLES; + +-- With non-default Database + +CREATE DATABASE alter3_db; +USE alter3_db; +SHOW TABLES; + +CREATE TABLE alter3_src (col1 STRING) STORED AS TEXTFILE ; +LOAD DATA LOCAL INPATH '../data/files/test.dat' OVERWRITE INTO TABLE alter3_src ; + +CREATE TABLE alter3 (col1 STRING) PARTITIONED BY (pcol1 STRING, pcol2 STRING) STORED AS SEQUENCEFILE; + +CREATE TABLE alter3_like LIKE alter3; + +INSERT OVERWRITE TABLE alter3 PARTITION (pCol1='test_part:', pcol2='test_part:') SELECT col1 FROM alter3_src ; +SELECT * FROM alter3 WHERE pcol1='test_part:' AND pcol2='test_part:'; + +ALTER TABLE alter3 RENAME TO alter3_renamed; +DESCRIBE EXTENDED alter3_renamed; +DESCRIBE EXTENDED alter3_renamed PARTITION (pCol1='test_part:', pcol2='test_part:'); +SELECT * FROM alter3_renamed WHERE pcol1='test_part:' AND pcol2='test_part:'; + +INSERT OVERWRITE TABLE alter3_like +PARTITION (pCol1='test_part:', pcol2='test_part:') +SELECT col1 FROM alter3_src; +ALTER TABLE alter3_like RENAME TO alter3_like_renamed; + +DESCRIBE EXTENDED alter3_like_renamed; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter4.q new file mode 100644 index 0000000000000..542ff019b2595 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter4.q @@ -0,0 +1,26 @@ +CREATE TABLE set_bucketing_test (key INT, value STRING) CLUSTERED BY (key) INTO 10 BUCKETS; +DESCRIBE EXTENDED set_bucketing_test; + +ALTER TABLE set_bucketing_test NOT CLUSTERED; +DESCRIBE EXTENDED set_bucketing_test; + +-- Cleanup +DROP TABLE set_bucketing_test; +SHOW TABLES; + +-- with non-default Database + +CREATE DATABASE alter4_db; +USE alter4_db; +SHOW TABLES; + +CREATE TABLE set_bucketing_test (key INT, value STRING) CLUSTERED BY (key) INTO 10 BUCKETS; +DESCRIBE EXTENDED set_bucketing_test; + +ALTER TABLE set_bucketing_test NOT CLUSTERED; +DESCRIBE EXTENDED set_bucketing_test; + +DROP TABLE set_bucketing_test; +USE default; +DROP DATABASE alter4_db; +SHOW DATABASES; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter5.q new file mode 100644 index 0000000000000..0d14f228d1c30 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter5.q @@ -0,0 +1,45 @@ +-- +-- Added to validate the fix for HIVE-2117 - explicit partition location +-- + +create table alter5_src ( col1 string ) stored as textfile ; +load data local inpath '../data/files/test.dat' overwrite into table alter5_src ; + +create table alter5 ( col1 string ) partitioned by (dt string); + +-- +-- Here's the interesting bit for HIVE-2117 - partition subdir should be +-- named "parta". +-- +alter table alter5 add partition (dt='a') location 'parta'; + +describe extended alter5 partition (dt='a'); + +insert overwrite table alter5 partition (dt='a') select col1 from alter5_src ; +select * from alter5 where dt='a'; + +describe extended alter5 partition (dt='a'); + +-- Cleanup +DROP TABLE alter5_src; +DROP TABLE alter5; +SHOW TABLES; + +-- With non-default Database + +CREATE DATABASE alter5_db; +USE alter5_db; +SHOW TABLES; + +create table alter5_src ( col1 string ) stored as textfile ; +load data local inpath '../data/files/test.dat' overwrite into table alter5_src ; + +create table alter5 ( col1 string ) partitioned by (dt string); +alter table alter5 add partition (dt='a') location 'parta'; + +describe extended alter5 partition (dt='a'); + +insert overwrite table alter5 partition (dt='a') select col1 from alter5_src ; +select * from alter5 where dt='a'; + +describe extended alter5 partition (dt='a'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_concatenate_indexed_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_concatenate_indexed_table.q new file mode 100644 index 0000000000000..807ef539c8643 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_concatenate_indexed_table.q @@ -0,0 +1,48 @@ +set hive.exec.concatenate.check.index =false; +create table src_rc_concatenate_test(key int, value string) stored as rcfile; + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_concatenate_test; +load data local inpath '../data/files/smbbucket_2.rc' into table src_rc_concatenate_test; +load data local inpath '../data/files/smbbucket_3.rc' into table src_rc_concatenate_test; + +show table extended like `src_rc_concatenate_test`; + +select count(1) from src_rc_concatenate_test; +select sum(hash(key)), sum(hash(value)) from src_rc_concatenate_test; + +create index src_rc_concatenate_test_index on table src_rc_concatenate_test(key) as 'compact' WITH DEFERRED REBUILD IDXPROPERTIES ("prop1"="val1", "prop2"="val2"); +show indexes on src_rc_concatenate_test; + +alter table src_rc_concatenate_test concatenate; + +show table extended like `src_rc_concatenate_test`; + +select count(1) from src_rc_concatenate_test; +select sum(hash(key)), sum(hash(value)) from src_rc_concatenate_test; + +drop index src_rc_concatenate_test_index on src_rc_concatenate_test; + +create table src_rc_concatenate_test_part(key int, value string) partitioned by (ds string) stored as rcfile; + +alter table src_rc_concatenate_test_part add partition (ds='2011'); + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_concatenate_test_part partition (ds='2011'); +load data local inpath '../data/files/smbbucket_2.rc' into table src_rc_concatenate_test_part partition (ds='2011'); +load data local inpath '../data/files/smbbucket_3.rc' into table src_rc_concatenate_test_part partition (ds='2011'); + +show table extended like `src_rc_concatenate_test_part` partition (ds='2011'); + +select count(1) from src_rc_concatenate_test_part; +select sum(hash(key)), sum(hash(value)) from src_rc_concatenate_test_part; + +create index src_rc_concatenate_test_part_index on table src_rc_concatenate_test_part(key) as 'compact' WITH DEFERRED REBUILD IDXPROPERTIES ("prop1"="val1", "prop2"="val2"); +show indexes on src_rc_concatenate_test_part; + +alter table src_rc_concatenate_test_part partition (ds='2011') concatenate; + +show table extended like `src_rc_concatenate_test_part` partition (ds='2011'); + +select count(1) from src_rc_concatenate_test_part; +select sum(hash(key)), sum(hash(value)) from src_rc_concatenate_test_part; + +drop index src_rc_concatenate_test_part_index on src_rc_concatenate_test_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_index.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_index.q new file mode 100644 index 0000000000000..2aa13da46961f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_index.q @@ -0,0 +1,11 @@ +drop index src_index_8 on src; + +create index src_index_8 on table src(key) as 'compact' WITH DEFERRED REBUILD IDXPROPERTIES ("prop1"="val1", "prop2"="val2"); +desc extended default__src_src_index_8__; + +alter index src_index_8 on src set IDXPROPERTIES ("prop1"="val1_new", "prop3"="val3"); +desc extended default__src_src_index_8__; + +drop index src_index_8 on src; + +show tables; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge.q new file mode 100644 index 0000000000000..c3502739d54a9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge.q @@ -0,0 +1,41 @@ +create table src_rc_merge_test(key int, value string) stored as rcfile; + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_merge_test; +load data local inpath '../data/files/smbbucket_2.rc' into table src_rc_merge_test; +load data local inpath '../data/files/smbbucket_3.rc' into table src_rc_merge_test; + +show table extended like `src_rc_merge_test`; + +select count(1) from src_rc_merge_test; +select sum(hash(key)), sum(hash(value)) from src_rc_merge_test; + +alter table src_rc_merge_test concatenate; + +show table extended like `src_rc_merge_test`; + +select count(1) from src_rc_merge_test; +select sum(hash(key)), sum(hash(value)) from src_rc_merge_test; + + +create table src_rc_merge_test_part(key int, value string) partitioned by (ds string) stored as rcfile; + +alter table src_rc_merge_test_part add partition (ds='2011'); + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_merge_test_part partition (ds='2011'); +load data local inpath '../data/files/smbbucket_2.rc' into table src_rc_merge_test_part partition (ds='2011'); +load data local inpath '../data/files/smbbucket_3.rc' into table src_rc_merge_test_part partition (ds='2011'); + +show table extended like `src_rc_merge_test_part` partition (ds='2011'); + +select count(1) from src_rc_merge_test_part; +select sum(hash(key)), sum(hash(value)) from src_rc_merge_test_part; + +alter table src_rc_merge_test_part partition (ds='2011') concatenate; + +show table extended like `src_rc_merge_test_part` partition (ds='2011'); + +select count(1) from src_rc_merge_test_part; +select sum(hash(key)), sum(hash(value)) from src_rc_merge_test_part; + +drop table src_rc_merge_test; +drop table src_rc_merge_test_part; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge_2.q new file mode 100644 index 0000000000000..65ddfed13dac4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge_2.q @@ -0,0 +1,19 @@ +create table src_rc_merge_test_part(key int, value string) partitioned by (ds string, ts string) stored as rcfile; + +alter table src_rc_merge_test_part add partition (ds='2012-01-03', ts='2012-01-03+14:46:31'); +desc extended src_rc_merge_test_part partition (ds='2012-01-03', ts='2012-01-03+14:46:31'); + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_merge_test_part partition (ds='2012-01-03', ts='2012-01-03+14:46:31'); +load data local inpath '../data/files/smbbucket_2.rc' into table src_rc_merge_test_part partition (ds='2012-01-03', ts='2012-01-03+14:46:31'); +load data local inpath '../data/files/smbbucket_3.rc' into table src_rc_merge_test_part partition (ds='2012-01-03', ts='2012-01-03+14:46:31'); + +select count(1) from src_rc_merge_test_part where ds='2012-01-03' and ts='2012-01-03+14:46:31'; +select sum(hash(key)), sum(hash(value)) from src_rc_merge_test_part where ds='2012-01-03' and ts='2012-01-03+14:46:31'; + +alter table src_rc_merge_test_part partition (ds='2012-01-03', ts='2012-01-03+14:46:31') concatenate; + + +select count(1) from src_rc_merge_test_part where ds='2012-01-03' and ts='2012-01-03+14:46:31'; +select sum(hash(key)), sum(hash(value)) from src_rc_merge_test_part where ds='2012-01-03' and ts='2012-01-03+14:46:31'; + +drop table src_rc_merge_test_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge_stats.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge_stats.q new file mode 100644 index 0000000000000..23bae55ab2add --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_merge_stats.q @@ -0,0 +1,41 @@ +create table src_rc_merge_test_stat(key int, value string) stored as rcfile; + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_merge_test_stat; +load data local inpath '../data/files/smbbucket_2.rc' into table src_rc_merge_test_stat; +load data local inpath '../data/files/smbbucket_3.rc' into table src_rc_merge_test_stat; + +show table extended like `src_rc_merge_test_stat`; +desc extended src_rc_merge_test_stat; + +analyze table src_rc_merge_test_stat compute statistics; + +desc extended src_rc_merge_test_stat; + +alter table src_rc_merge_test_stat concatenate; + +show table extended like `src_rc_merge_test_stat`; +desc extended src_rc_merge_test_stat; + + +create table src_rc_merge_test_part_stat(key int, value string) partitioned by (ds string) stored as rcfile; + +alter table src_rc_merge_test_part_stat add partition (ds='2011'); + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_merge_test_part_stat partition (ds='2011'); +load data local inpath '../data/files/smbbucket_2.rc' into table src_rc_merge_test_part_stat partition (ds='2011'); +load data local inpath '../data/files/smbbucket_3.rc' into table src_rc_merge_test_part_stat partition (ds='2011'); + +show table extended like `src_rc_merge_test_part_stat` partition (ds='2011'); +desc extended src_rc_merge_test_part_stat; + +analyze table src_rc_merge_test_part_stat partition(ds='2011') compute statistics; + +desc extended src_rc_merge_test_part_stat; + +alter table src_rc_merge_test_part_stat partition (ds='2011') concatenate; + +show table extended like `src_rc_merge_test_part_stat` partition (ds='2011'); +desc extended src_rc_merge_test_part_stat; + +drop table src_rc_merge_test_stat; +drop table src_rc_merge_test_part_stat; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_numbuckets_partitioned_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_numbuckets_partitioned_table.q new file mode 100644 index 0000000000000..b6d1eb8f2d4b8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_numbuckets_partitioned_table.q @@ -0,0 +1,59 @@ + +create table tst1(key string, value string) partitioned by (ds string) clustered by (key) into 10 buckets; + +alter table tst1 clustered by (key) into 8 buckets; + +describe formatted tst1; + +set hive.enforce.bucketing=true; +insert overwrite table tst1 partition (ds='1') select key, value from src; + +describe formatted tst1 partition (ds = '1'); + +-- Test changing bucket number + +alter table tst1 clustered by (key) into 12 buckets; + +insert overwrite table tst1 partition (ds='1') select key, value from src; + +describe formatted tst1 partition (ds = '1'); + +describe formatted tst1; + +-- Test changing bucket number of (table/partition) + +alter table tst1 into 4 buckets; + +describe formatted tst1; + +describe formatted tst1 partition (ds = '1'); + +alter table tst1 partition (ds = '1') into 6 buckets; + +describe formatted tst1; + +describe formatted tst1 partition (ds = '1'); + +-- Test adding sort order + +alter table tst1 clustered by (key) sorted by (key asc) into 12 buckets; + +describe formatted tst1; + +-- Test changing sort order + +alter table tst1 clustered by (key) sorted by (value desc) into 12 buckets; + +describe formatted tst1; + +-- Test removing test order + +alter table tst1 clustered by (value) into 12 buckets; + +describe formatted tst1; + +-- Test removing buckets + +alter table tst1 not clustered; + +describe formatted tst1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_numbuckets_partitioned_table2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_numbuckets_partitioned_table2.q new file mode 100644 index 0000000000000..c6a4ad24fcdde --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_numbuckets_partitioned_table2.q @@ -0,0 +1,84 @@ +-- Tests that when overwriting a partition in a table after altering the bucketing/sorting metadata +-- the partition metadata is updated as well. + +CREATE TABLE tst1(key STRING, value STRING) PARTITIONED BY (ds STRING); + +DESCRIBE FORMATTED tst1; + +SET hive.enforce.bucketing=true; +SET hive.enforce.sorting=true; +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test an unbucketed partition gets converted to bucketed +ALTER TABLE tst1 CLUSTERED BY (key) INTO 8 BUCKETS; + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test an unsorted partition gets converted to sorted +ALTER TABLE tst1 CLUSTERED BY (key) SORTED BY (key DESC) INTO 8 BUCKETS; + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test changing the bucket columns +ALTER TABLE tst1 CLUSTERED BY (value) SORTED BY (key DESC) INTO 8 BUCKETS; + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test changing the number of buckets +ALTER TABLE tst1 CLUSTERED BY (value) SORTED BY (key DESC) INTO 4 BUCKETS; + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test changing the sort columns +ALTER TABLE tst1 CLUSTERED BY (value) SORTED BY (value DESC) INTO 4 BUCKETS; + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test changing the sort order +ALTER TABLE tst1 CLUSTERED BY (value) SORTED BY (value ASC) INTO 4 BUCKETS; + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test a sorted partition gets converted to unsorted +ALTER TABLE tst1 CLUSTERED BY (value) INTO 4 BUCKETS; + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test a bucketed partition gets converted to unbucketed +ALTER TABLE tst1 NOT CLUSTERED; + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_clusterby_sortby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_clusterby_sortby.q new file mode 100644 index 0000000000000..7481c651bfb7a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_clusterby_sortby.q @@ -0,0 +1,23 @@ +create table alter_table_partition_clusterby_sortby (a int, b int) partitioned by (c string) clustered by (a, b) sorted by (a desc, b asc) into 4 buckets; +alter table alter_table_partition_clusterby_sortby add partition(c='abc'); + +-- Turn off sorting for a partition + +alter table alter_table_partition_clusterby_sortby partition(c='abc') not sorted; +desc formatted alter_table_partition_clusterby_sortby partition(c='abc'); + +-- Modify clustering for a partition + +alter table alter_table_partition_clusterby_sortby partition(c='abc') clustered by (b) sorted by (b desc) into 4 buckets; +desc formatted alter_table_partition_clusterby_sortby partition(c='abc'); + +-- Turn off clustering for a partition + +alter table alter_table_partition_clusterby_sortby partition(c='abc') not clustered; +desc formatted alter_table_partition_clusterby_sortby partition(c='abc'); + +-- Table properties should be unchanged + +desc formatted alter_table_partition_clusterby_sortby; + +drop table alter_table_partition_clusterby_sortby; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_coltype.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_coltype.q new file mode 100644 index 0000000000000..5479afbbd5ab0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_coltype.q @@ -0,0 +1,57 @@ +-- create testing table. +create table alter_coltype(key string, value string) partitioned by (dt string, ts string); + +-- insert and create a partition. +insert overwrite table alter_coltype partition(dt='100x', ts='6:30pm') select * from src1; + +desc alter_coltype; + +-- select with paritition predicate. +select count(*) from alter_coltype where dt = '100x'; + +-- alter partition key column data type for dt column. +alter table alter_coltype partition column (dt int); + +-- load a new partition using new data type. +insert overwrite table alter_coltype partition(dt=10, ts='3.0') select * from src1; + +-- make sure the partition predicate still works. +select count(*) from alter_coltype where dt = '100x'; +explain extended select count(*) from alter_coltype where dt = '100x'; + +select count(*) from alter_coltype where dt = 100; + +-- alter partition key column data type for ts column. +alter table alter_coltype partition column (ts double); + +alter table alter_coltype partition column (dt string); + +-- load a new partition using new data type. +insert overwrite table alter_coltype partition(dt='100x', ts=3.0) select * from src1; + +-- validate partition key column predicate can still work. +select count(*) from alter_coltype where ts = '6:30pm'; +explain extended select count(*) from alter_coltype where ts = '6:30pm'; + +-- validate partition key column predicate on two different partition column data type +-- can still work. +select count(*) from alter_coltype where ts = 3.0 and dt=10; +explain extended select count(*) from alter_coltype where ts = 3.0 and dt=10; + +-- query where multiple partition values (of different datatypes) are being selected +select key, value, dt, ts from alter_coltype where dt is not null; +explain extended select key, value, dt, ts from alter_coltype where dt is not null; + +select count(*) from alter_coltype where ts = 3.0; + +-- make sure the partition predicate still works. +select count(*) from alter_coltype where dt = '100x' or dt = '10'; +explain extended select count(*) from alter_coltype where dt = '100x' or dt = '10'; + +desc alter_coltype; +desc alter_coltype partition (dt='100x', ts='6:30pm'); +desc alter_coltype partition (dt='100x', ts=3.0); +desc alter_coltype partition (dt=10, ts=3.0); + +drop table alter_coltype; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_format_loc.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_format_loc.q new file mode 100644 index 0000000000000..bef6865833960 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_format_loc.q @@ -0,0 +1,32 @@ +create table alter_partition_format_test (key int, value string); +desc extended alter_partition_format_test; + +alter table alter_partition_format_test set fileformat rcfile; +desc extended alter_partition_format_test; + +alter table alter_partition_format_test set location "file:/test/test/"; +desc extended alter_partition_format_test; + +drop table alter_partition_format_test; + +--partitioned table +create table alter_partition_format_test (key int, value string) partitioned by (ds string); + +alter table alter_partition_format_test add partition(ds='2010'); +desc extended alter_partition_format_test partition(ds='2010'); + +alter table alter_partition_format_test partition(ds='2010') set fileformat rcfile; +desc extended alter_partition_format_test partition(ds='2010'); + +alter table alter_partition_format_test partition(ds='2010') set location "file:/test/test/ds=2010"; +desc extended alter_partition_format_test partition(ds='2010'); + +desc extended alter_partition_format_test; + +alter table alter_partition_format_test set fileformat rcfile; +desc extended alter_partition_format_test; + +alter table alter_partition_format_test set location "file:/test/test/"; +desc extended alter_partition_format_test; + +drop table alter_partition_format_test; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_protect_mode.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_protect_mode.q new file mode 100644 index 0000000000000..7bcb9f071c415 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_protect_mode.q @@ -0,0 +1,26 @@ +-- Create table +create table if not exists alter_part_protect_mode(key string, value string ) partitioned by (year string, month string) stored as textfile ; + +-- Load data +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_protect_mode partition (year='1996', month='10'); +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_protect_mode partition (year='1996', month='12'); +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_protect_mode partition (year='1995', month='09'); +load data local inpath '../data/files/T1.txt' overwrite into table alter_part_protect_mode partition (year='1994', month='07'); + +-- offline +alter table alter_part_protect_mode partition (year='1996') disable offline; +select * from alter_part_protect_mode where year = '1996'; +alter table alter_part_protect_mode partition (year='1995') enable offline; +alter table alter_part_protect_mode partition (year='1995') disable offline; +select * from alter_part_protect_mode where year = '1995'; + +-- no_drop +alter table alter_part_protect_mode partition (year='1996') enable no_drop; +alter table alter_part_protect_mode partition (year='1995') disable no_drop; +alter table alter_part_protect_mode drop partition (year='1995'); +alter table alter_part_protect_mode partition (year='1994', month='07') disable no_drop; +alter table alter_part_protect_mode drop partition (year='1994'); + +-- Cleanup +alter table alter_part_protect_mode partition (year='1996') disable no_drop; +drop table alter_part_protect_mode; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_with_whitelist.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_with_whitelist.q new file mode 100644 index 0000000000000..301362a881456 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_partition_with_whitelist.q @@ -0,0 +1,9 @@ +SET hive.metastore.partition.name.whitelist.pattern=[A-Za-z]*; +-- This pattern matches only letters. + +CREATE TABLE part_whitelist_test (key STRING, value STRING) PARTITIONED BY (ds STRING); +SHOW PARTITIONS part_whitelist_test; + +ALTER TABLE part_whitelist_test ADD PARTITION (ds='Part'); + +ALTER TABLE part_whitelist_test PARTITION (ds='Part') rename to partition (ds='Apart'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_rename_partition.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_rename_partition.q new file mode 100644 index 0000000000000..d498cd52a5ffb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_rename_partition.q @@ -0,0 +1,41 @@ +-- Cleanup +DROP TABLE alter_rename_partition_src; +DROP TABLE alter_rename_partition; +SHOW TABLES; + +create table alter_rename_partition_src ( col1 string ) stored as textfile ; +load data local inpath '../data/files/test.dat' overwrite into table alter_rename_partition_src ; + +create table alter_rename_partition ( col1 string ) partitioned by (pcol1 string , pcol2 string) stored as sequencefile; + +insert overwrite table alter_rename_partition partition (pCol1='old_part1:', pcol2='old_part2:') select col1 from alter_rename_partition_src ; +select * from alter_rename_partition where pcol1='old_part1:' and pcol2='old_part2:'; + +alter table alter_rename_partition partition (pCol1='old_part1:', pcol2='old_part2:') rename to partition (pCol1='new_part1:', pcol2='new_part2:'); +SHOW PARTITIONS alter_rename_partition; +select * from alter_rename_partition where pcol1='old_part1:' and pcol2='old_part2:'; +select * from alter_rename_partition where pcol1='new_part1:' and pcol2='new_part2:'; + +-- Cleanup +DROP TABLE alter_rename_partition_src; +DROP TABLE alter_rename_partition; +SHOW TABLES; + +-- With non-default Database + +CREATE DATABASE alter_rename_partition_db; +USE alter_rename_partition_db; +SHOW TABLES; + +CREATE TABLE alter_rename_partition_src (col1 STRING) STORED AS TEXTFILE ; +LOAD DATA LOCAL INPATH '../data/files/test.dat' OVERWRITE INTO TABLE alter_rename_partition_src ; + +CREATE TABLE alter_rename_partition (col1 STRING) PARTITIONED BY (pcol1 STRING, pcol2 STRING) STORED AS SEQUENCEFILE; + +INSERT OVERWRITE TABLE alter_rename_partition PARTITION (pCol1='old_part1:', pcol2='old_part2:') SELECT col1 FROM alter_rename_partition_src ; +SELECT * FROM alter_rename_partition WHERE pcol1='old_part1:' AND pcol2='old_part2:'; + +ALTER TABLE alter_rename_partition PARTITION (pCol1='old_part1:', pcol2='old_part2:') RENAME TO PARTITION (pCol1='new_part1:', pcol2='new_part2:'); +SHOW PARTITIONS alter_rename_partition; +SELECT * FROM alter_rename_partition WHERE pcol1='old_part1:' and pcol2='old_part2:'; +SELECT * FROM alter_rename_partition WHERE pcol1='new_part1:' and pcol2='new_part2:'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_rename_partition_authorization.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_rename_partition_authorization.q new file mode 100644 index 0000000000000..cdefc2dcbe7b4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_rename_partition_authorization.q @@ -0,0 +1,22 @@ +-- SORT_BEFORE_DIFF + +create table src_auth_tmp as select * from src; + +create table authorization_part (key int, value string) partitioned by (ds string); +ALTER TABLE authorization_part SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE"); +set hive.security.authorization.enabled=true; +grant select on table src_auth_tmp to user hive_test_user; + +-- column grant to user +grant Create on table authorization_part to user hive_test_user; +grant Update on table authorization_part to user hive_test_user; +grant Drop on table authorization_part to user hive_test_user; + +show grant user hive_test_user on table authorization_part; +grant select(key) on table authorization_part to user hive_test_user; +insert overwrite table authorization_part partition (ds='2010') select key, value from src_auth_tmp; +show grant user hive_test_user on table authorization_part(key) partition (ds='2010'); +alter table authorization_part partition (ds='2010') rename to partition (ds='2010_tmp'); +show grant user hive_test_user on table authorization_part(key) partition (ds='2010_tmp'); + +drop table authorization_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_skewed_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_skewed_table.q new file mode 100644 index 0000000000000..216bbb58cdf3f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_skewed_table.q @@ -0,0 +1,32 @@ +set hive.mapred.supports.subdirectories=true; + +create table original (key STRING, value STRING); + +describe formatted original; + +alter table original SKEWED BY (key) ON (1,5,6); + +describe formatted original; + +drop table original; + +create table original2 (key STRING, value STRING) ; + +describe formatted original2; + +alter table original2 SKEWED BY (key, value) ON ((1,1),(5,6)); + +describe formatted original2; + +drop table original2; + +create table original3 (key STRING, value STRING) SKEWED BY (key, value) ON ((1,1),(5,6)); + +describe formatted original3; + +alter table original3 not skewed; + +describe formatted original3; + +drop table original3; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_not_sorted.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_not_sorted.q new file mode 100644 index 0000000000000..7aff3288cf646 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_not_sorted.q @@ -0,0 +1,7 @@ +create table alter_table_not_sorted (a int, b int) clustered by (a) sorted by (a) into 4 buckets; +desc formatted alter_table_not_sorted; + +alter table alter_table_not_sorted not sorted; +desc formatted alter_table_not_sorted; + +drop table alter_table_not_sorted; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_serde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_serde.q new file mode 100644 index 0000000000000..a80693e7c5153 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_serde.q @@ -0,0 +1,33 @@ +-- test table +create table test_table (id int, query string, name string); +describe extended test_table; + +alter table test_table set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'; +describe extended test_table; + +alter table test_table set serdeproperties ('field.delim' = ','); +describe extended test_table; + +drop table test_table; + +--- test partitioned table +create table test_table (id int, query string, name string) partitioned by (dt string); + +alter table test_table add partition (dt = '2011'); +describe extended test_table partition (dt='2011'); + +alter table test_table set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'; +describe extended test_table partition (dt='2011'); + +alter table test_table set serdeproperties ('field.delim' = ','); +describe extended test_table partition (dt='2011'); + +-- test partitions + +alter table test_table partition(dt='2011') set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'; +describe extended test_table partition (dt='2011'); + +alter table test_table partition(dt='2011') set serdeproperties ('field.delim' = ','); +describe extended test_table partition (dt='2011'); + +drop table test_table diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_serde2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_serde2.q new file mode 100644 index 0000000000000..6ca3be3139e45 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_table_serde2.q @@ -0,0 +1,20 @@ +-- Tests that when overwriting a partition in a table after altering the serde properties +-- the partition metadata is updated as well. + +CREATE TABLE tst1(key STRING, value STRING) PARTITIONED BY (ds STRING); + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); + +-- Test altering the serde properties + +ALTER TABLE tst1 SET SERDEPROPERTIES ('field.delim' = ','); + +DESCRIBE FORMATTED tst1; + +INSERT OVERWRITE TABLE tst1 PARTITION (ds = '1') SELECT key, value FROM src; + +DESCRIBE FORMATTED tst1 PARTITION (ds = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_varchar1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_varchar1.q new file mode 100644 index 0000000000000..781cbda735158 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_varchar1.q @@ -0,0 +1,32 @@ +drop table alter_varchar_1; + +create table alter_varchar_1 (key string, value string); +insert overwrite table alter_varchar_1 + select key, value from src order by key limit 5; + +select * from alter_varchar_1 order by key; + +-- change column to varchar +alter table alter_varchar_1 change column value value varchar(20); +-- contents should still look the same +select * from alter_varchar_1 order by key; + +-- change column to smaller varchar +alter table alter_varchar_1 change column value value varchar(3); +-- value column should be truncated now +select * from alter_varchar_1 order by key; + +-- change back to bigger varchar +alter table alter_varchar_1 change column value value varchar(20); +-- column values should be full size again +select * from alter_varchar_1 order by key; + +-- add varchar column +alter table alter_varchar_1 add columns (key2 int, value2 varchar(10)); +select * from alter_varchar_1 order by key; + +insert overwrite table alter_varchar_1 + select key, value, key, value from src order by key limit 5; +select * from alter_varchar_1 order by key; + +drop table alter_varchar_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_varchar2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_varchar2.q new file mode 100644 index 0000000000000..5a481e7f8ebfe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_varchar2.q @@ -0,0 +1,22 @@ + +-- alter column type, with partitioned table +drop table if exists alter_varchar2; + +create table alter_varchar2 ( + c1 varchar(255) +) partitioned by (hr int); + +insert overwrite table alter_varchar2 partition (hr=1) + select value from src limit 1; + +select c1, length(c1) from alter_varchar2; + +alter table alter_varchar2 change column c1 c1 varchar(10); + +select hr, c1, length(c1) from alter_varchar2 where hr = 1; + +insert overwrite table alter_varchar2 partition (hr=2) + select key from src limit 1; + +select hr, c1, length(c1) from alter_varchar2 where hr = 1; +select hr, c1, length(c1) from alter_varchar2 where hr = 2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_view_as_select.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_view_as_select.q new file mode 100644 index 0000000000000..dcab3cab7e9ac --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_view_as_select.q @@ -0,0 +1,13 @@ +DROP VIEW testView; +CREATE VIEW testView as SELECT * FROM srcpart; +DESCRIBE FORMATTED testView; + +ALTER VIEW testView AS SELECT value FROM src WHERE key=86; +DESCRIBE FORMATTED testView; + +ALTER VIEW testView AS +SELECT * FROM src +WHERE key > 80 AND key < 100 +ORDER BY key, value +LIMIT 10; +DESCRIBE FORMATTED testView; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_view_rename.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_view_rename.q new file mode 100644 index 0000000000000..68cf9d6e0a974 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/alter_view_rename.q @@ -0,0 +1,10 @@ +CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING); +CREATE VIEW view1 as SELECT * FROM invites; +DESCRIBE EXTENDED view1; + +ALTER VIEW view1 RENAME TO view2; +DESCRIBE EXTENDED view2; +SELECT * FROM view2; + +DROP TABLE invites; +DROP VIEW view2; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ambiguous_col.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ambiguous_col.q new file mode 100644 index 0000000000000..e7053c1c8eb55 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ambiguous_col.q @@ -0,0 +1,6 @@ +-- TOK_ALLCOLREF +explain select * from (select a.key, a.* from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; +-- DOT +explain select * from (select a.key, a.`[k].*` from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; +-- EXPRESSION +explain select * from (select a.key, a.key from (select * from src) a join (select * from src1) b on (a.key = b.key)) t; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive.q new file mode 100644 index 0000000000000..a928a81023ff6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive.q @@ -0,0 +1,69 @@ +set hive.archive.enabled = true; +set hive.enforce.bucketing = true; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20) + +drop table tstsrc; +drop table tstsrcpart; + +create table tstsrc like src; +insert overwrite table tstsrc select key, value from src; + +create table tstsrcpart (key string, value string) partitioned by (ds string, hr string) clustered by (key) into 10 buckets; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='11') +select key, value from srcpart where ds='2008-04-08' and hr='11'; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='12') +select key, value from srcpart where ds='2008-04-08' and hr='12'; + +insert overwrite table tstsrcpart partition (ds='2008-04-09', hr='11') +select key, value from srcpart where ds='2008-04-09' and hr='11'; + +insert overwrite table tstsrcpart partition (ds='2008-04-09', hr='12') +select key, value from srcpart where ds='2008-04-09' and hr='12'; + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; + +SELECT key, count(1) FROM tstsrcpart WHERE ds='2008-04-08' AND hr='12' AND key='0' GROUP BY key; + +SELECT * FROM tstsrcpart a JOIN tstsrc b ON a.key=b.key +WHERE a.ds='2008-04-08' AND a.hr='12' AND a.key='0'; + +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08', hr='12'); + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; + +CREATE TABLE harbucket(key INT) +PARTITIONED by (ds STRING) +CLUSTERED BY (key) INTO 10 BUCKETS; + +INSERT OVERWRITE TABLE harbucket PARTITION(ds='1') SELECT CAST(key AS INT) AS a FROM tstsrc WHERE key < 50; + +SELECT key FROM harbucket TABLESAMPLE(BUCKET 1 OUT OF 10) SORT BY key; +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); +SELECT key FROM harbucket TABLESAMPLE(BUCKET 1 OUT OF 10) SORT BY key; +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08', hr='12'); +SELECT key FROM harbucket TABLESAMPLE(BUCKET 1 OUT OF 10) SORT BY key; + + +CREATE TABLE old_name(key INT) +PARTITIONED by (ds STRING); + +INSERT OVERWRITE TABLE old_name PARTITION(ds='1') SELECT CAST(key AS INT) AS a FROM tstsrc WHERE key < 50; +ALTER TABLE old_name ARCHIVE PARTITION (ds='1'); +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM old_name WHERE ds='1') subq1) subq2; +ALTER TABLE old_name RENAME TO new_name; +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM new_name WHERE ds='1') subq1) subq2; + +drop table tstsrc; +drop table tstsrcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_corrupt.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_corrupt.q new file mode 100644 index 0000000000000..b83eab5d38137 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_corrupt.q @@ -0,0 +1,35 @@ +USE default; + +set hive.archive.enabled = true; +set hive.enforce.bucketing = true; + +drop table tstsrcpart; + +create table tstsrcpart like srcpart; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20) +-- The version of GzipCodec provided in Hadoop 0.20 silently ignores +-- file format errors. However, versions of Hadoop that include +-- HADOOP-6835 (e.g. 0.23 and 1.x) cause a Wrong File Format exception +-- to be thrown during the LOAD step. This behavior is now tested in +-- clientnegative/archive_corrupt.q + +load data local inpath '../data/files/archive_corrupt.rc' overwrite into table tstsrcpart partition (ds='2008-04-08', hr='11'); + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='12') +select key, value from srcpart where ds='2008-04-08' and hr='12'; + +insert overwrite table tstsrcpart partition (ds='2008-04-09', hr='11') +select key, value from srcpart where ds='2008-04-09' and hr='11'; + +insert overwrite table tstsrcpart partition (ds='2008-04-09', hr='12') +select key, value from srcpart where ds='2008-04-09' and hr='12'; + +describe extended tstsrcpart partition (ds='2008-04-08', hr='11'); + +alter table tstsrcpart archive partition (ds='2008-04-08', hr='11'); + +describe extended tstsrcpart partition (ds='2008-04-08', hr='11'); + +alter table tstsrcpart unarchive partition (ds='2008-04-08', hr='11'); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_excludeHadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_excludeHadoop20.q new file mode 100644 index 0000000000000..ddc06a99bb5bc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_excludeHadoop20.q @@ -0,0 +1,69 @@ +set hive.archive.enabled = true; +set hive.enforce.bucketing = true; + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +drop table tstsrc; +drop table tstsrcpart; + +create table tstsrc like src; +insert overwrite table tstsrc select key, value from src; + +create table tstsrcpart (key string, value string) partitioned by (ds string, hr string) clustered by (key) into 10 buckets; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='11') +select key, value from srcpart where ds='2008-04-08' and hr='11'; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='12') +select key, value from srcpart where ds='2008-04-08' and hr='12'; + +insert overwrite table tstsrcpart partition (ds='2008-04-09', hr='11') +select key, value from srcpart where ds='2008-04-09' and hr='11'; + +insert overwrite table tstsrcpart partition (ds='2008-04-09', hr='12') +select key, value from srcpart where ds='2008-04-09' and hr='12'; + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; + +SELECT key, count(1) FROM tstsrcpart WHERE ds='2008-04-08' AND hr='12' AND key='0' GROUP BY key; + +SELECT * FROM tstsrcpart a JOIN tstsrc b ON a.key=b.key +WHERE a.ds='2008-04-08' AND a.hr='12' AND a.key='0'; + +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08', hr='12'); + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; + +CREATE TABLE harbucket(key INT) +PARTITIONED by (ds STRING) +CLUSTERED BY (key) INTO 10 BUCKETS; + +INSERT OVERWRITE TABLE harbucket PARTITION(ds='1') SELECT CAST(key AS INT) AS a FROM tstsrc WHERE key < 50; + +SELECT key FROM harbucket TABLESAMPLE(BUCKET 1 OUT OF 10) SORT BY key; +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08', hr='12'); +SELECT key FROM harbucket TABLESAMPLE(BUCKET 1 OUT OF 10) SORT BY key; +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08', hr='12'); +SELECT key FROM harbucket TABLESAMPLE(BUCKET 1 OUT OF 10) SORT BY key; + + +CREATE TABLE old_name(key INT) +PARTITIONED by (ds STRING); + +INSERT OVERWRITE TABLE old_name PARTITION(ds='1') SELECT CAST(key AS INT) AS a FROM tstsrc WHERE key < 50; +ALTER TABLE old_name ARCHIVE PARTITION (ds='1'); +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM old_name WHERE ds='1') subq1) subq2; +ALTER TABLE old_name RENAME TO new_name; +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM new_name WHERE ds='1') subq1) subq2; + +drop table tstsrc; +drop table tstsrcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_multi.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_multi.q new file mode 100644 index 0000000000000..2c1a6d83a35c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/archive_multi.q @@ -0,0 +1,42 @@ +set hive.archive.enabled = true; +set hive.enforce.bucketing = true; + +drop table tstsrc; +drop table tstsrcpart; + +create table tstsrc like src; +insert overwrite table tstsrc select key, value from src; + +create table tstsrcpart like srcpart; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='11') +select key, value from srcpart where ds='2008-04-08' and hr='11'; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='12') +select key, value from srcpart where ds='2008-04-08' and hr='12'; + +insert overwrite table tstsrcpart partition (ds='2008-04-09', hr='11') +select key, value from srcpart where ds='2008-04-09' and hr='11'; + +insert overwrite table tstsrcpart partition (ds='2008-04-09', hr='12') +select key, value from srcpart where ds='2008-04-09' and hr='12'; + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; + +ALTER TABLE tstsrcpart ARCHIVE PARTITION (ds='2008-04-08'); + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; + +SELECT key, count(1) FROM tstsrcpart WHERE ds='2008-04-08' AND hr='12' AND key='0' GROUP BY key; + +SELECT * FROM tstsrcpart a JOIN tstsrc b ON a.key=b.key +WHERE a.ds='2008-04-08' AND a.hr='12' AND a.key='0'; + +ALTER TABLE tstsrcpart UNARCHIVE PARTITION (ds='2008-04-08'); + +SELECT SUM(hash(col)) FROM (SELECT transform(*) using 'tr "\t" "_"' AS col +FROM (SELECT * FROM tstsrcpart WHERE ds='2008-04-08') subq1) subq2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_1.q new file mode 100644 index 0000000000000..25c99187f3c00 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_1.q @@ -0,0 +1,89 @@ +-- SORT_BEFORE_DIFF + +create table src_autho_test as select * from src; + +set hive.security.authorization.enabled=true; + +--table grant to user + +grant select on table src_autho_test to user hive_test_user; + +show grant user hive_test_user on table src_autho_test; +show grant user hive_test_user on table src_autho_test(key); + +select key from src_autho_test order by key limit 20; + +revoke select on table src_autho_test from user hive_test_user; +show grant user hive_test_user on table src_autho_test; +show grant user hive_test_user on table src_autho_test(key); + +--column grant to user + +grant select(key) on table src_autho_test to user hive_test_user; + +show grant user hive_test_user on table src_autho_test; +show grant user hive_test_user on table src_autho_test(key); + +select key from src_autho_test order by key limit 20; + +revoke select(key) on table src_autho_test from user hive_test_user; +show grant user hive_test_user on table src_autho_test; +show grant user hive_test_user on table src_autho_test(key); + +--table grant to group + +grant select on table src_autho_test to group hive_test_group1; + +show grant group hive_test_group1 on table src_autho_test; +show grant group hive_test_group1 on table src_autho_test(key); + +select key from src_autho_test order by key limit 20; + +revoke select on table src_autho_test from group hive_test_group1; +show grant group hive_test_group1 on table src_autho_test; +show grant group hive_test_group1 on table src_autho_test(key); + +--column grant to group + +grant select(key) on table src_autho_test to group hive_test_group1; + +show grant group hive_test_group1 on table src_autho_test; +show grant group hive_test_group1 on table src_autho_test(key); + +select key from src_autho_test order by key limit 20; + +revoke select(key) on table src_autho_test from group hive_test_group1; +show grant group hive_test_group1 on table src_autho_test; +show grant group hive_test_group1 on table src_autho_test(key); + +--role +create role src_role; +grant role src_role to user hive_test_user; +show role grant user hive_test_user; + +--column grant to role + +grant select(key) on table src_autho_test to role src_role; + +show grant role src_role on table src_autho_test; +show grant role src_role on table src_autho_test(key); + +select key from src_autho_test order by key limit 20; + +revoke select(key) on table src_autho_test from role src_role; + +--table grant to role + +grant select on table src_autho_test to role src_role; + +select key from src_autho_test order by key limit 20; + +show grant role src_role on table src_autho_test; +show grant role src_role on table src_autho_test(key); +revoke select on table src_autho_test from role src_role; + +-- drop role +drop role src_role; + +set hive.security.authorization.enabled=false; +drop table src_autho_test; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_2.q new file mode 100644 index 0000000000000..4fc79b9ed294a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_2.q @@ -0,0 +1,111 @@ +-- SORT_BEFORE_DIFF + +create table authorization_part (key int, value string) partitioned by (ds string); +create table src_auth_tmp as select * from src; +ALTER TABLE authorization_part SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE"); +set hive.security.authorization.enabled=true; + +-- column grant to user +grant Create on table authorization_part to user hive_test_user; +grant Update on table authorization_part to user hive_test_user; +grant Drop on table authorization_part to user hive_test_user; +grant select on table src_auth_tmp to user hive_test_user; + +show grant user hive_test_user on table authorization_part; + +alter table authorization_part add partition (ds='2010'); +show grant user hive_test_user on table authorization_part partition (ds='2010'); + +grant select(key) on table authorization_part to user hive_test_user; +alter table authorization_part drop partition (ds='2010'); +insert overwrite table authorization_part partition (ds='2010') select key, value from src_auth_tmp; +show grant user hive_test_user on table authorization_part(key) partition (ds='2010'); +show grant user hive_test_user on table authorization_part(key); +select key from authorization_part where ds='2010' order by key limit 20; + +revoke select(key) on table authorization_part from user hive_test_user; +show grant user hive_test_user on table authorization_part(key); +show grant user hive_test_user on table authorization_part(key) partition (ds='2010'); + +select key from authorization_part where ds='2010' order by key limit 20; + +revoke select(key) on table authorization_part partition (ds='2010') from user hive_test_user; +show grant user hive_test_user on table authorization_part(key) partition (ds='2010'); + +alter table authorization_part drop partition (ds='2010'); + +-- table grant to user +show grant user hive_test_user on table authorization_part; + +alter table authorization_part add partition (ds='2010'); +show grant user hive_test_user on table authorization_part partition (ds='2010'); + +grant select on table authorization_part to user hive_test_user; +alter table authorization_part drop partition (ds='2010'); +insert overwrite table authorization_part partition (ds='2010') select key, value from src_auth_tmp; +show grant user hive_test_user on table authorization_part partition (ds='2010'); +show grant user hive_test_user on table authorization_part; +select key from authorization_part where ds='2010' order by key limit 20; + +revoke select on table authorization_part from user hive_test_user; +show grant user hive_test_user on table authorization_part; +show grant user hive_test_user on table authorization_part partition (ds='2010'); + +select key from authorization_part where ds='2010' order by key limit 20; + +revoke select on table authorization_part partition (ds='2010') from user hive_test_user; +show grant user hive_test_user on table authorization_part partition (ds='2010'); + +alter table authorization_part drop partition (ds='2010'); + +-- column grant to group + +show grant group hive_test_group1 on table authorization_part; + +alter table authorization_part add partition (ds='2010'); +show grant group hive_test_group1 on table authorization_part partition (ds='2010'); + +grant select(key) on table authorization_part to group hive_test_group1; +alter table authorization_part drop partition (ds='2010'); +insert overwrite table authorization_part partition (ds='2010') select key, value from src_auth_tmp; +show grant group hive_test_group1 on table authorization_part(key) partition (ds='2010'); +show grant group hive_test_group1 on table authorization_part(key); +select key from authorization_part where ds='2010' order by key limit 20; + +revoke select(key) on table authorization_part from group hive_test_group1; +show grant group hive_test_group1 on table authorization_part(key); +show grant group hive_test_group1 on table authorization_part(key) partition (ds='2010'); + +select key from authorization_part where ds='2010' order by key limit 20; + +revoke select(key) on table authorization_part partition (ds='2010') from group hive_test_group1; +show grant group hive_test_group1 on table authorization_part(key) partition (ds='2010'); + +alter table authorization_part drop partition (ds='2010'); + +-- table grant to group +show grant group hive_test_group1 on table authorization_part; + +alter table authorization_part add partition (ds='2010'); +show grant group hive_test_group1 on table authorization_part partition (ds='2010'); + +grant select on table authorization_part to group hive_test_group1; +alter table authorization_part drop partition (ds='2010'); +insert overwrite table authorization_part partition (ds='2010') select key, value from src_auth_tmp; +show grant group hive_test_group1 on table authorization_part partition (ds='2010'); +show grant group hive_test_group1 on table authorization_part; +select key from authorization_part where ds='2010' order by key limit 20; + +revoke select on table authorization_part from group hive_test_group1; +show grant group hive_test_group1 on table authorization_part; +show grant group hive_test_group1 on table authorization_part partition (ds='2010'); + +select key from authorization_part where ds='2010' order by key limit 20; + +revoke select on table authorization_part partition (ds='2010') from group hive_test_group1; +show grant group hive_test_group1 on table authorization_part partition (ds='2010'); + + +revoke select on table src_auth_tmp from user hive_test_user; +set hive.security.authorization.enabled=false; +drop table authorization_part; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_3.q new file mode 100644 index 0000000000000..ba76b0002fde8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_3.q @@ -0,0 +1,19 @@ +-- SORT_BEFORE_DIFF + +create table src_autho_test as select * from src; + +grant drop on table src_autho_test to user hive_test_user; +grant select on table src_autho_test to user hive_test_user; + +show grant user hive_test_user on table src_autho_test; + +revoke select on table src_autho_test from user hive_test_user; +revoke drop on table src_autho_test from user hive_test_user; + +grant drop,select on table src_autho_test to user hive_test_user; +show grant user hive_test_user on table src_autho_test; +revoke drop,select on table src_autho_test from user hive_test_user; + +grant drop,select(key), select(value) on table src_autho_test to user hive_test_user; +show grant user hive_test_user on table src_autho_test; +revoke drop,select(key), select(value) on table src_autho_test from user hive_test_user; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_4.q new file mode 100644 index 0000000000000..152c8e5cf305a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_4.q @@ -0,0 +1,13 @@ +-- SORT_BEFORE_DIFF + +create table src_autho_test as select * from src; + +grant All on table src_autho_test to user hive_test_user; + +set hive.security.authorization.enabled=true; + +show grant user hive_test_user on table src_autho_test; + +select key from src_autho_test order by key limit 20; + +drop table src_autho_test; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_5.q new file mode 100644 index 0000000000000..8869edce2f4ea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_5.q @@ -0,0 +1,20 @@ +-- SORT_BEFORE_DIFF + +CREATE DATABASE IF NOT EXISTS test_db COMMENT 'Hive test database'; +SHOW DATABASES; + +GRANT drop ON DATABASE test_db TO USER hive_test_user; +GRANT select ON DATABASE test_db TO USER hive_test_user; + +SHOW GRANT USER hive_test_user ON DATABASE test_db; + +CREATE ROLE db_test_role; +GRANT ROLE db_test_role TO USER hive_test_user; +SHOW ROLE GRANT USER hive_test_user; + +GRANT drop ON DATABASE test_db TO ROLE db_test_role; +GRANT select ON DATABASE test_db TO ROLE db_test_role; + +SHOW GRANT ROLE db_test_role ON DATABASE test_db; + +DROP DATABASE IF EXISTS test_db; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_6.q new file mode 100644 index 0000000000000..258ada4988362 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_6.q @@ -0,0 +1,42 @@ +-- SORT_BEFORE_DIFF + +create table src_auth_tmp as select * from src; + +create table authorization_part (key int, value string) partitioned by (ds string); +ALTER TABLE authorization_part SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE"); +set hive.security.authorization.enabled=true; +grant select on table src_auth_tmp to user hive_test_user; + +-- column grant to user +grant Create on table authorization_part to user hive_test_user; +grant Update on table authorization_part to user hive_test_user; +grant Drop on table authorization_part to user hive_test_user; + +show grant user hive_test_user on table authorization_part; +grant select(key) on table authorization_part to user hive_test_user; +insert overwrite table authorization_part partition (ds='2010') select key, value from src_auth_tmp; +insert overwrite table authorization_part partition (ds='2011') select key, value from src_auth_tmp; +show grant user hive_test_user on table authorization_part(key) partition (ds='2010'); +show grant user hive_test_user on table authorization_part(key) partition (ds='2011'); +show grant user hive_test_user on table authorization_part(key); +select key from authorization_part where ds>='2010' order by key limit 20; + +drop table authorization_part; + +set hive.security.authorization.enabled=false; +create table authorization_part (key int, value string) partitioned by (ds string); +ALTER TABLE authorization_part SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="FALSE"); + +set hive.security.authorization.enabled=true; +grant Create on table authorization_part to user hive_test_user; +grant Update on table authorization_part to user hive_test_user; + +show grant user hive_test_user on table authorization_part; + +grant select(key) on table authorization_part to user hive_test_user; +insert overwrite table authorization_part partition (ds='2010') select key, value from src_auth_tmp; +insert overwrite table authorization_part partition (ds='2011') select key, value from src_auth_tmp; +show grant user hive_test_user on table authorization_part(key) partition (ds='2010'); +show grant user hive_test_user on table authorization_part(key) partition (ds='2011'); +show grant user hive_test_user on table authorization_part(key); +select key from authorization_part where ds>='2010' order by key limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_7.q new file mode 100644 index 0000000000000..ae49000442a1f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_7.q @@ -0,0 +1,15 @@ +GRANT ALL TO USER hive_test_user; +SET hive.security.authorization.enabled=true; +CREATE TABLE src_authorization_7 (key int, value string); +DESCRIBE src_authorization_7; +DROP TABLE src_authorization_7; +REVOKE ALL FROM USER hive_test_user; + +SET hive.security.authorization.enabled=false; + +GRANT ALL TO GROUP hive_test_group1; +SET hive.security.authorization.enabled=true; +CREATE TABLE src_authorization_7 (key int, value string); +DESCRIBE src_authorization_7; +DROP TABLE src_authorization_7; +REVOKE ALL FROM GROUP hive_test_group1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_8.q new file mode 100644 index 0000000000000..67fcf3162dd56 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/authorization_8.q @@ -0,0 +1,8 @@ +set hive.security.authorization.enabled=true; +GRANT ALL TO USER hive_test_user; +CREATE TABLE tbl_j5jbymsx8e (key INT, value STRING) PARTITIONED BY (ds STRING); +CREATE VIEW view_j5jbymsx8e_1 as SELECT * FROM tbl_j5jbymsx8e; +DESCRIBE view_j5jbymsx8e_1; +ALTER VIEW view_j5jbymsx8e_1 RENAME TO view_j5jbymsx8e_2; +REVOKE ALL FROM USER hive_test_user; +set hive.security.authorization.enabled=false; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join0.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join0.q new file mode 100644 index 0000000000000..84731dbce4a03 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join0.q @@ -0,0 +1,23 @@ + +set hive.auto.convert.join = true; + +explain +select sum(hash(a.k1,a.v1,a.k2, a.v2)) +from ( +SELECT src1.key as k1, src1.value as v1, + src2.key as k2, src2.value as v2 FROM + (SELECT * FROM src WHERE src.key < 10) src1 + JOIN + (SELECT * FROM src WHERE src.key < 10) src2 + SORT BY k1, v1, k2, v2 +) a; + +select sum(hash(a.k1,a.v1,a.k2, a.v2)) +from ( +SELECT src1.key as k1, src1.value as v1, + src2.key as k2, src2.value as v2 FROM + (SELECT * FROM src WHERE src.key < 10) src1 + JOIN + (SELECT * FROM src WHERE src.key < 10) src2 + SORT BY k1, v1, k2, v2 +) a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join1.q new file mode 100644 index 0000000000000..2062a28b46e21 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join1.q @@ -0,0 +1,12 @@ +set hive.auto.convert.join =true; + +CREATE TABLE dest_j1(key INT, value STRING) STORED AS TEXTFILE; + +explain +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value; + +SELECT sum(hash(dest_j1.key,dest_j1.value)) FROM dest_j1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join10.q new file mode 100644 index 0000000000000..2dbdcf75f3c24 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join10.q @@ -0,0 +1,17 @@ +set hive.auto.convert.join = true; + +explain +FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join11.q new file mode 100644 index 0000000000000..d8045b1f86592 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join11.q @@ -0,0 +1,16 @@ +set hive.auto.convert.join = true; + +explain +SELECT sum(hash(src1.c1, src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100; + +SELECT sum(hash(src1.c1, src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join12.q new file mode 100644 index 0000000000000..b31e4f7f4d97a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join12.q @@ -0,0 +1,25 @@ + + +set hive.auto.convert.join = true; + + +explain +SELECT sum(hash(src1.c1, src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80; + +SELECT sum(hash(src1.c1, src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join13.q new file mode 100644 index 0000000000000..c116eba6b7597 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join13.q @@ -0,0 +1,23 @@ + +set hive.auto.convert.join = true; + +explain +SELECT sum(hash(src1.c1, src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 + src2.c3 = src3.c5 AND src3.c5 < 200; + +SELECT sum(hash(src1.c1, src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 + src2.c3 = src3.c5 AND src3.c5 < 200; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join14.q new file mode 100644 index 0000000000000..b282fb9a1aba0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join14.q @@ -0,0 +1,19 @@ + +set hive.auto.convert.join = true; + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +CREATE TABLE dest1(c1 INT, c2 STRING) STORED AS TEXTFILE; + +set mapreduce.framework.name=yarn; +set mapreduce.jobtracker.address=localhost:58; +set hive.exec.mode.local.auto=true; + +explain +FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 100 +INSERT OVERWRITE TABLE dest1 SELECT src.key, srcpart.value; + +FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 100 +INSERT OVERWRITE TABLE dest1 SELECT src.key, srcpart.value; + +SELECT sum(hash(dest1.c1,dest1.c2)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join14_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join14_hadoop20.q new file mode 100644 index 0000000000000..235b7c1b3fcd2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join14_hadoop20.q @@ -0,0 +1,18 @@ + +set hive.auto.convert.join = true; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +CREATE TABLE dest1(c1 INT, c2 STRING) STORED AS TEXTFILE; + +set mapred.job.tracker=localhost:58; +set hive.exec.mode.local.auto=true; + +explain +FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 100 +INSERT OVERWRITE TABLE dest1 SELECT src.key, srcpart.value; + +FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 100 +INSERT OVERWRITE TABLE dest1 SELECT src.key, srcpart.value; + +SELECT sum(hash(dest1.c1,dest1.c2)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join15.q new file mode 100644 index 0000000000000..66b745f62ead9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join15.q @@ -0,0 +1,19 @@ + +set hive.auto.convert.join = true; + +explain +select sum(hash(a.k1,a.v1,a.k2, a.v2)) +from ( +SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2 +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +SORT BY k1, v1, k2, v2 +) a; + + +select sum(hash(a.k1,a.v1,a.k2, a.v2)) +from ( +SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2 +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +SORT BY k1, v1, k2, v2 +) a; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join16.q new file mode 100644 index 0000000000000..0ade940892f42 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join16.q @@ -0,0 +1,18 @@ + +set hive.auto.convert.join = true; + + +explain +SELECT sum(hash(subq.key, tab.value)) +FROM +(select a.key, a.value from src a where a.key > 10 ) subq +JOIN src tab +ON (subq.key = tab.key and subq.key > 20 and subq.value = tab.value) +where tab.value < 200; + +SELECT sum(hash(subq.key, tab.value)) +FROM +(select a.key, a.value from src a where a.key > 10 ) subq +JOIN src tab +ON (subq.key = tab.key and subq.key > 20 and subq.value = tab.value) +where tab.value < 200; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join17.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join17.q new file mode 100644 index 0000000000000..4bb804e3e7f38 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join17.q @@ -0,0 +1,14 @@ + +set hive.auto.convert.join = true; + +CREATE TABLE dest1(key1 INT, value1 STRING, key2 INT, value2 STRING) STORED AS TEXTFILE; + +explain +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.*, src2.*; + + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.*, src2.*; + +SELECT sum(hash(dest1.key1,dest1.value1,dest1.key2,dest1.value2)) FROM dest1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join18.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join18.q new file mode 100644 index 0000000000000..7a3d6c9a4448b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join18.q @@ -0,0 +1,27 @@ + +set hive.auto.convert.join = true; +explain + SELECT sum(hash(a.key, a.value, b.key, b.value)) + FROM + ( + SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key + ) a + FULL OUTER JOIN + ( + SELECT src2.key as key, count(distinct(src2.value)) AS value + FROM src1 src2 group by src2.key + ) b + ON (a.key = b.key); + + + SELECT sum(hash(a.key, a.value, b.key, b.value)) + FROM + ( + SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key + ) a + FULL OUTER JOIN + ( + SELECT src2.key as key, count(distinct(src2.value)) AS value + FROM src1 src2 group by src2.key + ) b + ON (a.key = b.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join18_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join18_multi_distinct.q new file mode 100644 index 0000000000000..7465bc9b23bd2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join18_multi_distinct.q @@ -0,0 +1,29 @@ +set hive.auto.convert.join = true; + +explain + SELECT sum(hash(a.key, a.value, b.key, b.value1, b.value2)) + FROM + ( + SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key + ) a + FULL OUTER JOIN + ( + SELECT src2.key as key, count(distinct(src2.value)) AS value1, + count(distinct(src2.key)) AS value2 + FROM src1 src2 group by src2.key + ) b + ON (a.key = b.key); + + + SELECT sum(hash(a.key, a.value, b.key, b.value1, b.value2)) + FROM + ( + SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key + ) a + FULL OUTER JOIN + ( + SELECT src2.key as key, count(distinct(src2.value)) AS value1, + count(distinct(src2.key)) AS value2 + FROM src1 src2 group by src2.key + ) b + ON (a.key = b.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join19.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join19.q new file mode 100644 index 0000000000000..32935f1d89cf5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join19.q @@ -0,0 +1,16 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +explain +FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value +where (src1.ds = '2008-04-08' or src1.ds = '2008-04-09' )and (src1.hr = '12' or src1.hr = '11'); + + +FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value +where (src1.ds = '2008-04-08' or src1.ds = '2008-04-09' )and (src1.hr = '12' or src1.hr = '11'); + + +SELECT sum(hash(dest1.key,dest1.value)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join2.q new file mode 100644 index 0000000000000..f598ccb4da234 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join2.q @@ -0,0 +1,13 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest_j2(key INT, value STRING) STORED AS TEXTFILE; + +explain +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key + src2.key = src3.key) +INSERT OVERWRITE TABLE dest_j2 SELECT src1.key, src3.value; + + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key + src2.key = src3.key) +INSERT OVERWRITE TABLE dest_j2 SELECT src1.key, src3.value; + +SELECT sum(hash(dest_j2.key,dest_j2.value)) FROM dest_j2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join20.q new file mode 100644 index 0000000000000..e61958414294c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join20.q @@ -0,0 +1,31 @@ +set hive.auto.convert.join = true; + +explain +select sum(hash(a.k1,a.v1,a.k2,a.v2,a.k3,a.v3)) +from ( +SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2 , src3.key as k3, src3.value as v3 +FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY k1,v1,k2,v2,k3,v3 +)a; + +select sum(hash(a.k1,a.v1,a.k2,a.v2,a.k3,a.v3)) +from ( +SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2 , src3.key as k3, src3.value as v3 +FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY k1,v1,k2,v2,k3,v3 +)a; + +explain +select sum(hash(a.k1,a.v1,a.k2,a.v2,a.k3,a.v3)) +from ( +SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2 , src3.key as k3, src3.value as v3 +FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key < 15) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY k1,v1,k2,v2,k3,v3 +)a; + +select sum(hash(a.k1,a.v1,a.k2,a.v2,a.k3,a.v3)) +from ( +SELECT src1.key as k1, src1.value as v1, src2.key as k2, src2.value as v2 , src3.key as k3, src3.value as v3 +FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key < 15) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY k1,v1,k2,v2,k3,v3 +)a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join21.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join21.q new file mode 100644 index 0000000000000..e77f922aaada0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join21.q @@ -0,0 +1,5 @@ +set hive.auto.convert.join = true; +explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join22.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join22.q new file mode 100644 index 0000000000000..b5eec90d09de1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join22.q @@ -0,0 +1,5 @@ +set hive.auto.convert.join = true; +explain +SELECT sum(hash(src5.src1_value)) FROM (SELECT src3.*, src4.value as src4_value, src4.key as src4_key FROM src src4 JOIN (SELECT src2.*, src1.key as src1_key, src1.value as src1_value FROM src src1 JOIN src src2 ON src1.key = src2.key) src3 ON src3.src1_key = src4.key) src5; + +SELECT sum(hash(src5.src1_value)) FROM (SELECT src3.*, src4.value as src4_value, src4.key as src4_key FROM src src4 JOIN (SELECT src2.*, src1.key as src1_key, src1.value as src1_value FROM src src1 JOIN src src2 ON src1.key = src2.key) src3 ON src3.src1_key = src4.key) src5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join23.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join23.q new file mode 100644 index 0000000000000..191d269ba840c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join23.q @@ -0,0 +1,6 @@ +set hive.auto.convert.join = true; + +explain +SELECT * FROM src src1 JOIN src src2 WHERE src1.key < 10 and src2.key < 10 SORT BY src1.key, src1.value, src2.key, src2.value; + +SELECT * FROM src src1 JOIN src src2 WHERE src1.key < 10 and src2.key < 10 SORT BY src1.key, src1.value, src2.key, src2.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join24.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join24.q new file mode 100644 index 0000000000000..e8b26481024ba --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join24.q @@ -0,0 +1,13 @@ +set hive.auto.convert.join = true; + +create table tst1(key STRING, cnt INT); + +INSERT OVERWRITE TABLE tst1 +SELECT a.key, count(1) FROM src a group by a.key; + +explain +SELECT sum(a.cnt) FROM tst1 a JOIN tst1 b ON a.key = b.key; + +SELECT sum(a.cnt) FROM tst1 a JOIN tst1 b ON a.key = b.key; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join25.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join25.q new file mode 100644 index 0000000000000..eaf7489a17025 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join25.q @@ -0,0 +1,30 @@ +set hive.auto.convert.join = true; +set hive.mapjoin.localtask.max.memory.usage = 0.0001; +set hive.mapjoin.check.memory.rows = 2; +set hive.auto.convert.join.noconditionaltask = false; + +-- This test tests the scenario when the mapper dies. So, create a conditional task for the mapjoin +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value +where (src1.ds = '2008-04-08' or src1.ds = '2008-04-09' )and (src1.hr = '12' or src1.hr = '11'); + +SELECT sum(hash(dest1.key,dest1.value)) FROM dest1; + + + +CREATE TABLE dest_j2(key INT, value STRING) STORED AS TEXTFILE; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key + src2.key = src3.key) +INSERT OVERWRITE TABLE dest_j2 SELECT src1.key, src3.value; + +SELECT sum(hash(dest_j2.key,dest_j2.value)) FROM dest_j2; + +CREATE TABLE dest_j1(key INT, value STRING) STORED AS TEXTFILE; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value; + +SELECT sum(hash(dest_j1.key,dest_j1.value)) FROM dest_j1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join26.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join26.q new file mode 100644 index 0000000000000..16fbfe6cfbe53 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join26.q @@ -0,0 +1,10 @@ +CREATE TABLE dest_j1(key INT, cnt INT); +set hive.auto.convert.join = true; +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, count(1) FROM src1 x JOIN src y ON (x.key = y.key) group by x.key; + +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, count(1) FROM src1 x JOIN src y ON (x.key = y.key) group by x.key; + +select * from dest_j1 x order by x.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join27.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join27.q new file mode 100644 index 0000000000000..2dc5845ed3b82 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join27.q @@ -0,0 +1,25 @@ +set hive.auto.convert.join = true; + +explain +SELECT count(1) +FROM +( +SELECT src.key, src.value from src +UNION ALL +SELECT DISTINCT src.key, src.value from src +) src_12 +JOIN +(SELECT src.key as k, src.value as v from src) src3 +ON src_12.key = src3.k AND src3.k < 200; + + +SELECT count(1) +FROM +( +SELECT src.key, src.value from src +UNION ALL +SELECT DISTINCT src.key, src.value from src +) src_12 +JOIN +(SELECT src.key as k, src.value as v from src) src3 +ON src_12.key = src3.k AND src3.k < 200; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join28.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join28.q new file mode 100644 index 0000000000000..61b9d84291eda --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join28.q @@ -0,0 +1,14 @@ +set hive.mapjoin.smalltable.filesize = 1; + +set hive.auto.convert.join = true; +explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join29.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join29.q new file mode 100644 index 0000000000000..c9f9191258231 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join29.q @@ -0,0 +1,45 @@ +set hive.auto.convert.join = true; +explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) LEFT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 RIGHT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join3.q new file mode 100644 index 0000000000000..954765444c4ea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join3.q @@ -0,0 +1,12 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +explain +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key = src3.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key = src3.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value; + +SELECT sum(hash(dest1.key,dest1.value)) FROM dest1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join30.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join30.q new file mode 100644 index 0000000000000..9e31f0ffe2aeb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join30.q @@ -0,0 +1,151 @@ +set hive.auto.convert.join = true; + +explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)); + +explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)); + +explain +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +select sum(hash(Y.key,Y.value)); + +explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +explain +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +explain +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +LEFT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +explain +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join31.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join31.q new file mode 100644 index 0000000000000..cfa5eba17569c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join31.q @@ -0,0 +1,22 @@ +set hive.auto.convert.join = true; + +explain +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); + +FROM +(SELECT src.* FROM src sort by key) x +RIGHT OUTER JOIN +(SELECT src.* FROM src sort by value) Y +ON (x.key = Y.key) +JOIN +(SELECT src.* FROM src sort by value) Z +ON (x.key = Z.key) +select sum(hash(Y.key,Y.value)); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join32.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join32.q new file mode 100644 index 0000000000000..289bfbc6da917 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join32.q @@ -0,0 +1,78 @@ +set hive.auto.convert.join=true; + +-- empty tables +create table studenttab10k (name string, age int, gpa double); +create table votertab10k (name string, age int, registration string, contributions float); + +explain select s.name, count(distinct registration) +from studenttab10k s join votertab10k v +on (s.name = v.name) +group by s.name; + +select s.name, count(distinct registration) +from studenttab10k s join votertab10k v +on (s.name = v.name) +group by s.name; + +set hive.optimize.bucketmapjoin=true; +set hive.optimize.bucketmapjoin.sortedmerge=true; +set hive.auto.convert.sortmerge.join=true; + +-- smb +create table studenttab10k_smb (name string, age int, gpa double) clustered by (name) sorted by (name) into 2 buckets; +create table votertab10k_smb (name string, age int, registration string, contributions float) clustered by (name) sorted by (name) into 2 buckets; + +explain select s.name, count(distinct registration) +from studenttab10k_smb s join votertab10k_smb v +on (s.name = v.name) +group by s.name; + +select s.name, count(distinct registration) +from studenttab10k_smb s join votertab10k_smb v +on (s.name = v.name) +group by s.name; + +load data local inpath '../data/files/empty1.txt' into table studenttab10k_smb; +load data local inpath '../data/files/empty2.txt' into table studenttab10k_smb; +load data local inpath '../data/files/empty1.txt' into table votertab10k_smb; +load data local inpath '../data/files/empty2.txt' into table votertab10k_smb; + +explain select s.name, count(distinct registration) +from studenttab10k_smb s join votertab10k_smb v +on (s.name = v.name) +group by s.name; + +select s.name, count(distinct registration) +from studenttab10k_smb s join votertab10k_smb v +on (s.name = v.name) +group by s.name; + +-- smb + partitions +create table studenttab10k_part (name string, age int, gpa double) partitioned by (p string) clustered by (name) sorted by (name) into 2 buckets; +create table votertab10k_part (name string, age int, registration string, contributions float) partitioned by (p string) clustered by (name) sorted by (name) into 2 buckets; + +load data local inpath '../data/files/empty1.txt' into table studenttab10k_part partition (p='foo'); +load data local inpath '../data/files/empty2.txt' into table studenttab10k_part partition (p='foo'); +load data local inpath '../data/files/empty1.txt' into table votertab10k_part partition (p='foo'); +load data local inpath '../data/files/empty2.txt' into table votertab10k_part partition (p='foo'); + +explain select s.name, count(distinct registration) +from studenttab10k_part s join votertab10k_part v +on (s.name = v.name) +where s.p = 'bar' +and v.p = 'bar' +group by s.name; + +select s.name, count(distinct registration) +from studenttab10k_part s join votertab10k_part v +on (s.name = v.name) +where s.p = 'bar' +and v.p = 'bar' +group by s.name; + +drop table studenttab10k; +drop table votertab10k; +drop table studenttab10k_smb; +drop table votertab10k_smb; +drop table studenttab10k_part; +drop table votertab10k_part; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join4.q new file mode 100644 index 0000000000000..1c2ad5f60b3e1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join4.q @@ -0,0 +1,34 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS TEXTFILE; + +explain +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +SELECT sum(hash(dest1.c1,dest1.c2,dest1.c3,dest1.c4)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join5.q new file mode 100644 index 0000000000000..945629242329f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join5.q @@ -0,0 +1,34 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS TEXTFILE; + +explain +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + RIGHT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + RIGHT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +SELECT sum(hash(dest1.c1,dest1.c2,dest1.c3,dest1.c4)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join6.q new file mode 100644 index 0000000000000..a0f8e55651db7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join6.q @@ -0,0 +1,35 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS TEXTFILE; + +explain +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + + +SELECT sum(hash(dest1.c1,dest1.c2,dest1.c3,dest1.c4)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join7.q new file mode 100644 index 0000000000000..ca105601d08bc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join7.q @@ -0,0 +1,46 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING, c5 INT, c6 STRING) STORED AS TEXTFILE; + + +explain +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + LEFT OUTER JOIN + ( + FROM src src3 SELECT src3.key AS c5, src3.value AS c6 WHERE src3.key > 20 and src3.key < 25 + ) c + ON (a.c1 = c.c5) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4, c.c5 AS c5, c.c6 AS c6 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4, c.c5, c.c6; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + LEFT OUTER JOIN + ( + FROM src src3 SELECT src3.key AS c5, src3.value AS c6 WHERE src3.key > 20 and src3.key < 25 + ) c + ON (a.c1 = c.c5) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4, c.c5 AS c5, c.c6 AS c6 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4, c.c5, c.c6; + + +SELECT sum(hash(dest1.c1,dest1.c2,dest1.c3,dest1.c4,dest1.c5,dest1.c6)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join8.q new file mode 100644 index 0000000000000..553fc25ba7df4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join8.q @@ -0,0 +1,34 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS TEXTFILE; + +explain +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4 where c.c3 IS NULL AND c.c1 IS NOT NULL; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4 where c.c3 IS NULL AND c.c1 IS NOT NULL; + +SELECT sum(hash(dest1.c1,dest1.c2,dest1.c3,dest1.c4)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join9.q new file mode 100644 index 0000000000000..fb3eafb441d70 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join9.q @@ -0,0 +1,14 @@ +set hive.auto.convert.join = true; + +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +explain +FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value where src1.ds = '2008-04-08' and src1.hr = '12'; + +FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value where src1.ds = '2008-04-08' and src1.hr = '12'; + + + +SELECT sum(hash(dest1.key,dest1.value)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_filters.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_filters.q new file mode 100644 index 0000000000000..458504cdc3d04 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_filters.q @@ -0,0 +1,82 @@ +set hive.auto.convert.join = true; + +CREATE TABLE myinput1(key int, value int); +LOAD DATA LOCAL INPATH '../data/files/in3.txt' INTO TABLE myinput1; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.key = c.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value; + + +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/in1.txt' into table smb_input1; +LOAD DATA LOCAL INPATH '../data/files/in2.txt' into table smb_input1; +LOAD DATA LOCAL INPATH '../data/files/in1.txt' into table smb_input2; +LOAD DATA LOCAL INPATH '../data/files/in2.txt' into table smb_input2; + +SET hive.optimize.bucketmapjoin = true; +SET hive.optimize.bucketmapjoin.sortedmerge = true; +SET hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +SET hive.outerjoin.supports.filters = false; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.key = c.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_nulls.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_nulls.q new file mode 100644 index 0000000000000..766348d7c001e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_nulls.q @@ -0,0 +1,29 @@ +set hive.auto.convert.join = true; + +CREATE TABLE myinput1(key int, value int); +LOAD DATA LOCAL INPATH '../data/files/in1.txt' INTO TABLE myinput1; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.key = b.key; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value; +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key; + +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value); +SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_reordering_values.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_reordering_values.q new file mode 100644 index 0000000000000..46a4a0d5339a7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_join_reordering_values.q @@ -0,0 +1,31 @@ +-- HIVE-5056 RS has expression list for values, but it's ignored in MapJoinProcessor + +create table testsrc ( `key` int,`val` string); +load data local inpath '../data/files/kv1.txt' overwrite into table testsrc; +drop table if exists orderpayment_small; +create table orderpayment_small (`dealid` int,`date` string,`time` string, `cityid` int, `userid` int); +insert overwrite table orderpayment_small select 748, '2011-03-24', '2011-03-24', 55 ,5372613 from testsrc limit 1; +drop table if exists user_small; +create table user_small( userid int); +insert overwrite table user_small select key from testsrc limit 100; + +set hive.auto.convert.join.noconditionaltask.size = 200; +explain extended SELECT + `dim_pay_date`.`date` + , `deal`.`dealid` +FROM `orderpayment_small` `orderpayment` +JOIN `orderpayment_small` `dim_pay_date` ON `dim_pay_date`.`date` = `orderpayment`.`date` +JOIN `orderpayment_small` `deal` ON `deal`.`dealid` = `orderpayment`.`dealid` +JOIN `orderpayment_small` `order_city` ON `order_city`.`cityid` = `orderpayment`.`cityid` +JOIN `user_small` `user` ON `user`.`userid` = `orderpayment`.`userid` +limit 5; + +SELECT + `dim_pay_date`.`date` + , `deal`.`dealid` +FROM `orderpayment_small` `orderpayment` +JOIN `orderpayment_small` `dim_pay_date` ON `dim_pay_date`.`date` = `orderpayment`.`date` +JOIN `orderpayment_small` `deal` ON `deal`.`dealid` = `orderpayment`.`dealid` +JOIN `orderpayment_small` `order_city` ON `order_city`.`cityid` = `orderpayment`.`cityid` +JOIN `user_small` `user` ON `user`.`userid` = `orderpayment`.`userid` +limit 5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_smb_mapjoin_14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_smb_mapjoin_14.q new file mode 100644 index 0000000000000..5911c49afea7b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_smb_mapjoin_14.q @@ -0,0 +1,296 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table tbl1 +select * from src where key < 10; + +insert overwrite table tbl2 +select * from src where key < 10; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +set hive.auto.convert.sortmerge.join=true; + +-- The join is being performed as part of sub-query. It should be converted to a sort-merge join +explain +select count(*) from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1; + +select count(*) from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1; + +-- The join is being performed as part of more than one sub-query. It should be converted to a sort-merge join +explain +select count(*) from +( + select key, count(*) from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 + group by key +) subq2; + +select count(*) from +( + select key, count(*) from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 + group by key +) subq2; + +-- A join is being performed across different sub-queries, where a join is being performed in each of them. +-- Each sub-query should be converted to a sort-merge join. +explain +select src1.key, src1.cnt1, src2.cnt1 from +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 group by key +) src1 +join +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq2 group by key +) src2 +on src1.key = src2.key +order by src1.key, src1.cnt1, src2.cnt1; + +select src1.key, src1.cnt1, src2.cnt1 from +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 group by key +) src1 +join +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq2 group by key +) src2 +on src1.key = src2.key +order by src1.key, src1.cnt1, src2.cnt1; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join. +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join, although there is more than one level of sub-query +explain +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join tbl2 b + on subq2.key = b.key; + +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join tbl2 b + on subq2.key = b.key; + +-- Both the tables are nested sub-queries i.e more then 1 level of sub-query. +-- The join should be converted to a sort-merge join +explain +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq3 + where key < 6 + ) subq4 + on subq2.key = subq4.key; + +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq3 + where key < 6 + ) subq4 + on subq2.key = subq4.key; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters and the join key +-- is not getting modified, it should be converted to a sort-merge join. Note that the sub-query modifies one +-- item, but that is not part of the join key. +explain +select count(*) from + (select a.key as key, concat(a.value, a.value) as value from tbl1 a where key < 8) subq1 + join + (select a.key as key, concat(a.value, a.value) as value from tbl2 a where key < 8) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key as key, concat(a.value, a.value) as value from tbl1 a where key < 8) subq1 + join + (select a.key as key, concat(a.value, a.value) as value from tbl2 a where key < 8) subq2 + on subq1.key = subq2.key; + +-- Since the join key is modified by the sub-query, neither sort-merge join not bucketized map-side +-- join should be performed +explain +select count(*) from + (select a.key +1 as key, concat(a.value, a.value) as value from tbl1 a) subq1 + join + (select a.key +1 as key, concat(a.value, a.value) as value from tbl2 a) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key +1 as key, concat(a.value, a.value) as value from tbl1 a) subq1 + join + (select a.key +1 as key, concat(a.value, a.value) as value from tbl2 a) subq2 + on subq1.key = subq2.key; + +-- One of the tables is a sub-query and the other is not. +-- It should be converted to a sort-merge join. +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +-- There are more than 2 inputs to the join, all of them being sub-queries. +-- It should be converted to to a sort-merge join +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on (subq1.key = subq2.key) + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq3 + on (subq1.key = subq3.key); + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq3 + on (subq1.key = subq3.key); + +-- The join is being performed on a nested sub-query, and an aggregation is performed after that. +-- The join should be converted to a sort-merge join +explain +select count(*) from ( + select subq2.key as key, subq2.value as value1, b.value as value2 from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 +join tbl2 b +on subq2.key = b.key) a; + +select count(*) from ( + select subq2.key as key, subq2.value as value1, b.value as value2 from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 +join tbl2 b +on subq2.key = b.key) a; + +CREATE TABLE dest1(key int, value string); +CREATE TABLE dest2(key int, val1 string, val2 string); + +-- The join is followed by a multi-table insert. It should be converted to +-- a sort-merge join +explain +from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +insert overwrite table dest1 select key, val1 +insert overwrite table dest2 select key, val1, val2; + +from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +insert overwrite table dest1 select key, val1 +insert overwrite table dest2 select key, val1, val2; + +select * from dest1 order by key, value; +select * from dest2 order by key, val1, val2; + +DROP TABLE dest2; +CREATE TABLE dest2(key int, cnt int); + +-- The join is followed by a multi-table insert, and one of the inserts involves a reducer. +-- It should be converted to a sort-merge join +explain +from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +insert overwrite table dest1 select key, val1 +insert overwrite table dest2 select key, count(*) group by key; + +from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +insert overwrite table dest1 select key, val1 +insert overwrite table dest2 select key, count(*) group by key; + +select * from dest1 order by key, value; +select * from dest2 order by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_1.q new file mode 100644 index 0000000000000..e76b560f41899 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_1.q @@ -0,0 +1,36 @@ +-- small 1 part, 2 bucket & big 2 part, 4 bucket + +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy = org.apache.hadoop.hive.ql.optimizer.TableSizeBasedBigTableSelectorForAutoSMJ; + +-- Since size is being used to find the big table, the order of the tables in the join does not matter +explain extended select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_10.q new file mode 100644 index 0000000000000..83e1cec536100 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_10.q @@ -0,0 +1,57 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table tbl1 +select * from src where key < 10; + +insert overwrite table tbl2 +select * from src where key < 10; + +set hive.auto.convert.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +set hive.auto.convert.sortmerge.join=true; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +-- One of the subqueries contains a union, so it should not be converted to a sort-merge join. +explain +select count(*) from + ( + select * from + (select a.key as key, a.value as value from tbl1 a where key < 6 + union all + select a.key as key, a.value as value from tbl1 a where key < 6 + ) usubq1 ) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +select count(*) from + ( + select * from + (select a.key as key, a.value as value from tbl1 a where key < 6 + union all + select a.key as key, a.value as value from tbl1 a where key < 6 + ) usubq1 ) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +-- One of the subqueries contains a groupby, so it should not be converted to a sort-merge join. +explain +select count(*) from + (select a.key as key, count(*) as value from tbl1 a where key < 6 group by a.key) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key as key, count(*) as value from tbl1 a where key < 6 group by a.key) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_11.q new file mode 100644 index 0000000000000..f9fa1e4d4e1db --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_11.q @@ -0,0 +1,36 @@ +-- small 1 part, 2 bucket & big 2 part, 4 bucket + +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.auto.convert.join=true; + +explain extended select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin=true; +set hive.optimize.bucketmapjoin.sortedmerge=true; + +-- Since size is being used to find the big table, the order of the tables in the join does not matter +-- The tables are only bucketed and not sorted, the join should not be converted +-- Currenly, a join is only converted to a sort-merge join without a hint, automatic conversion to +-- bucketized mapjoin is not done +explain extended select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +-- The join is converted to a bucketed mapjoin with a mapjoin hint +explain extended select /*+ mapjoin(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /*+ mapjoin(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_12.q new file mode 100644 index 0000000000000..db53a656a850a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_12.q @@ -0,0 +1,31 @@ +-- small 1 part, 2 bucket & big 2 part, 4 bucket + +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +CREATE TABLE bucket_medium (key string, value string) partitioned by (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 3 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_medium partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_medium partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket3outof4.txt' INTO TABLE bucket_medium partition(ds='2008-04-08'); + +explain extended select count(*) FROM bucket_small a JOIN bucket_medium b ON a.key = b.key JOIN bucket_big c ON c.key = b.key JOIN bucket_medium d ON c.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_medium b ON a.key = b.key JOIN bucket_big c ON c.key = b.key JOIN bucket_medium d ON c.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_13.q new file mode 100644 index 0000000000000..28bbc2d8f1a3e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_13.q @@ -0,0 +1,81 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table tbl1 select * from src where key < 10; +insert overwrite table tbl2 select * from src where key < 10; + +CREATE TABLE dest1(k1 int, k2 int); +CREATE TABLE dest2(k1 string, k2 string); + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.join=true; + +-- A SMB join followed by a mutli-insert +explain +from ( + SELECT a.key key1, a.value value1, b.key key2, b.value value2 + FROM tbl1 a JOIN tbl2 b + ON a.key = b.key ) subq +INSERT OVERWRITE TABLE dest1 select key1, key2 +INSERT OVERWRITE TABLE dest2 select value1, value2; + +from ( + SELECT a.key key1, a.value value1, b.key key2, b.value value2 + FROM tbl1 a JOIN tbl2 b + ON a.key = b.key ) subq +INSERT OVERWRITE TABLE dest1 select key1, key2 +INSERT OVERWRITE TABLE dest2 select value1, value2; + +select * from dest1 order by k1, k2; +select * from dest2 order by k1, k2; + +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=200; + +-- A SMB join followed by a mutli-insert +explain +from ( + SELECT a.key key1, a.value value1, b.key key2, b.value value2 + FROM tbl1 a JOIN tbl2 b + ON a.key = b.key ) subq +INSERT OVERWRITE TABLE dest1 select key1, key2 +INSERT OVERWRITE TABLE dest2 select value1, value2; + +from ( + SELECT a.key key1, a.value value1, b.key key2, b.value value2 + FROM tbl1 a JOIN tbl2 b + ON a.key = b.key ) subq +INSERT OVERWRITE TABLE dest1 select key1, key2 +INSERT OVERWRITE TABLE dest2 select value1, value2; + +select * from dest1 order by k1, k2; +select * from dest2 order by k1, k2; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +-- A SMB join followed by a mutli-insert +explain +from ( + SELECT a.key key1, a.value value1, b.key key2, b.value value2 + FROM tbl1 a JOIN tbl2 b + ON a.key = b.key ) subq +INSERT OVERWRITE TABLE dest1 select key1, key2 +INSERT OVERWRITE TABLE dest2 select value1, value2; + +from ( + SELECT a.key key1, a.value value1, b.key key2, b.value value2 + FROM tbl1 a JOIN tbl2 b + ON a.key = b.key ) subq +INSERT OVERWRITE TABLE dest1 select key1, key2 +INSERT OVERWRITE TABLE dest2 select value1, value2; + +select * from dest1 order by k1, k2; +select * from dest2 order by k1, k2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_14.q new file mode 100644 index 0000000000000..4cda4df62ec35 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_14.q @@ -0,0 +1,29 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table tbl1 select * from src where key < 20; +insert overwrite table tbl2 select * from src where key < 10; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.join=true; + +-- Since tbl1 is the bigger table, tbl1 Left Outer Join tbl2 can be performed +explain +select count(*) FROM tbl1 a LEFT OUTER JOIN tbl2 b ON a.key = b.key; +select count(*) FROM tbl1 a LEFT OUTER JOIN tbl2 b ON a.key = b.key; + +insert overwrite table tbl2 select * from src where key < 200; + +-- Since tbl2 is the bigger table, tbl1 Right Outer Join tbl2 can be performed +explain +select count(*) FROM tbl1 a RIGHT OUTER JOIN tbl2 b ON a.key = b.key; +select count(*) FROM tbl1 a RIGHT OUTER JOIN tbl2 b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_15.q new file mode 100644 index 0000000000000..c7bcae64b38d5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_15.q @@ -0,0 +1,23 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table tbl1 select * from src where key < 20; +insert overwrite table tbl2 select * from src where key < 10; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.join=true; + +explain +select count(*) FROM tbl1 a LEFT OUTER JOIN tbl2 b ON a.key = b.key; + +explain +select count(*) FROM tbl1 a RIGHT OUTER JOIN tbl2 b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_2.q new file mode 100644 index 0000000000000..75339778af802 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_2.q @@ -0,0 +1,32 @@ +-- small 1 part, 4 bucket & big 2 part, 2 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy = org.apache.hadoop.hive.ql.optimizer.LeftmostBigTableSelectorForAutoSMJ; + +-- Since the leftmost table is assumed as the big table, arrange the tables in the join accordingly +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +set hive.mapjoin.localtask.max.memory.usage = 0.0001; +set hive.mapjoin.check.memory.rows = 2; + +-- The mapjoin should fail resulting in the sort-merge join +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_3.q new file mode 100644 index 0000000000000..39a695fdf039d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_3.q @@ -0,0 +1,31 @@ +-- small 2 part, 2 bucket & big 1 part, 4 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy = org.apache.hadoop.hive.ql.optimizer.TableSizeBasedBigTableSelectorForAutoSMJ; + +-- Since size is being used to find the big table, the order of the tables in the join does not matter +explain extended select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_4.q new file mode 100644 index 0000000000000..6072272c478a3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_4.q @@ -0,0 +1,33 @@ +-- small 2 part, 4 bucket & big 1 part, 2 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/smallsrcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/smallsrcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy = org.apache.hadoop.hive.ql.optimizer.AvgPartitionSizeBasedBigTableSelectorForAutoSMJ; + +-- Since size is being used to find the big table, the order of the tables in the join does not matter +explain extended select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_5.q new file mode 100644 index 0000000000000..a28ce3de5fc63 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_5.q @@ -0,0 +1,28 @@ +-- small no part, 4 bucket & big no part, 2 bucket +CREATE TABLE bucket_small (key string, value string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/smallsrcsortbucket3outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/smallsrcsortbucket4outof4.txt' INTO TABLE bucket_small; + +CREATE TABLE bucket_big (key string, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big; +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big; + +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy = org.apache.hadoop.hive.ql.optimizer.AvgPartitionSizeBasedBigTableSelectorForAutoSMJ; + +-- Since size is being used to find the big table, the order of the tables in the join does not matter +explain extended select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +set hive.auto.convert.join=true; +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_6.q new file mode 100644 index 0000000000000..309987b8f7711 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_6.q @@ -0,0 +1,73 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl4(key int, value string) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS; + +insert overwrite table tbl1 select * from src; +insert overwrite table tbl2 select * from src; +insert overwrite table tbl3 select * from src; +insert overwrite table tbl4 select * from src; + +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=200; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; + +-- A SMB join is being followed by a regular join on a non-bucketed table on a different key + +-- Three tests below are all the same query with different alias, which changes dispatch order of GenMapRedWalker +-- This is dependent to iteration order of HashMap, so can be meaningless in non-sun jdk +-- b = TS[0]-OP[13]-MAPJOIN[11]-RS[6]-JOIN[8]-SEL[9]-FS[10] +-- c = TS[1]-RS[7]-JOIN[8] +-- a = TS[2]-MAPJOIN[11] +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src c on c.value = a.value; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src c on c.value = a.value; + +-- d = TS[0]-RS[7]-JOIN[8]-SEL[9]-FS[10] +-- b = TS[1]-OP[13]-MAPJOIN[11]-RS[6]-JOIN[8] +-- a = TS[2]-MAPJOIN[11] +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src d on d.value = a.value; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src d on d.value = a.value; + +-- b = TS[0]-OP[13]-MAPJOIN[11]-RS[6]-JOIN[8]-SEL[9]-FS[10] +-- a = TS[1]-MAPJOIN[11] +-- h = TS[2]-RS[7]-JOIN[8] +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src h on h.value = a.value; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src h on h.value = a.value; + +-- A SMB join is being followed by a regular join on a non-bucketed table on the same key +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src c on c.key = a.key; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src c on c.key = a.key; + +-- A SMB join is being followed by a regular join on a bucketed table on the same key +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join tbl3 c on c.key = a.key; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join tbl3 c on c.key = a.key; + +-- A SMB join is being followed by a regular join on a bucketed table on a different key +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join tbl4 c on c.value = a.value; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join tbl4 c on c.value = a.value; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- A SMB join is being followed by a regular join on a non-bucketed table on a different key +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src c on c.value = a.value; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src c on c.value = a.value; + +-- A SMB join is being followed by a regular join on a non-bucketed table on the same key +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src c on c.key = a.key; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join src c on c.key = a.key; + +-- A SMB join is being followed by a regular join on a bucketed table on the same key +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join tbl3 c on c.key = a.key; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join tbl3 c on c.key = a.key; + +-- A SMB join is being followed by a regular join on a bucketed table on a different key +explain select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join tbl4 c on c.value = a.value; +select count(*) FROM tbl1 a JOIN tbl2 b ON a.key = b.key join tbl4 c on c.value = a.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_7.q new file mode 100644 index 0000000000000..d62f6377218c6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_7.q @@ -0,0 +1,36 @@ +-- small 2 part, 4 bucket & big 2 part, 2 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/smallsrcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/smallsrcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy = org.apache.hadoop.hive.ql.optimizer.AvgPartitionSizeBasedBigTableSelectorForAutoSMJ; + +-- Since size is being used to find the big table, the order of the tables in the join does not matter +explain extended select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_8.q new file mode 100644 index 0000000000000..6302a1be1477c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_8.q @@ -0,0 +1,40 @@ +-- small 2 part, 2 bucket & big 2 part, 4 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +load data local inpath '../data/files/smallsrcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/smallsrcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy = org.apache.hadoop.hive.ql.optimizer.TableSizeBasedBigTableSelectorForAutoSMJ; + +-- Since size is being used to find the big table, the order of the tables in the join does not matter +explain extended select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; +set hive.mapjoin.localtask.max.memory.usage = 0.0001; +set hive.mapjoin.check.memory.rows = 2; + +-- The mapjoin should fail resulting in the sort-merge join +explain extended select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; +select count(*) FROM bucket_big a JOIN bucket_small b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_9.q new file mode 100644 index 0000000000000..ef63dfed5267a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/auto_sortmerge_join_9.q @@ -0,0 +1,536 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table tbl1 +select * from src where key < 10; + +insert overwrite table tbl2 +select * from src where key < 10; + +set hive.auto.convert.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.auto.convert.sortmerge.join=true; +set hive.auto.convert.sortmerge.join.to.mapjoin=false; +-- The join is being performed as part of sub-query. It should be converted to a sort-merge join +explain +select count(*) from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1; + +select count(*) from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1; + +-- The join is being performed as part of sub-query. It should be converted to a sort-merge join +-- Add a order by at the end to make the results deterministic. +explain +select key, count(*) from +( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +group by key +order by key; + +select key, count(*) from +( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +group by key +order by key; + +-- The join is being performed as part of more than one sub-query. It should be converted to a sort-merge join +explain +select count(*) from +( + select key, count(*) from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 + group by key +) subq2; + +select count(*) from +( + select key, count(*) from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 + group by key +) subq2; + +-- A join is being performed across different sub-queries, where a join is being performed in each of them. +-- Each sub-query should be converted to a sort-merge join. +explain +select src1.key, src1.cnt1, src2.cnt1 from +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 group by key +) src1 +join +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq2 group by key +) src2 +on src1.key = src2.key +order by src1.key, src1.cnt1, src2.cnt1; + +select src1.key, src1.cnt1, src2.cnt1 from +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 group by key +) src1 +join +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq2 group by key +) src2 +on src1.key = src2.key +order by src1.key, src1.cnt1, src2.cnt1; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join. +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join, although there is more than one level of sub-query +explain +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join tbl2 b + on subq2.key = b.key; + +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join tbl2 b + on subq2.key = b.key; + +-- Both the tables are nested sub-queries i.e more then 1 level of sub-query. +-- The join should be converted to a sort-merge join +explain +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq3 + where key < 6 + ) subq4 + on subq2.key = subq4.key; + +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq3 + where key < 6 + ) subq4 + on subq2.key = subq4.key; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters and the join key +-- is not getting modified, it should be converted to a sort-merge join. Note that the sub-query modifies one +-- item, but that is not part of the join key. +explain +select count(*) from + (select a.key as key, concat(a.value, a.value) as value from tbl1 a where key < 8) subq1 + join + (select a.key as key, concat(a.value, a.value) as value from tbl2 a where key < 8) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key as key, concat(a.value, a.value) as value from tbl1 a where key < 8) subq1 + join + (select a.key as key, concat(a.value, a.value) as value from tbl2 a where key < 8) subq2 + on subq1.key = subq2.key; + +-- Since the join key is modified by the sub-query, neither sort-merge join not bucketized mapside +-- join should be performed +explain +select count(*) from + (select a.key +1 as key, concat(a.value, a.value) as value from tbl1 a) subq1 + join + (select a.key +1 as key, concat(a.value, a.value) as value from tbl2 a) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key +1 as key, concat(a.value, a.value) as value from tbl1 a) subq1 + join + (select a.key +1 as key, concat(a.value, a.value) as value from tbl2 a) subq2 + on subq1.key = subq2.key; + +-- The left table is a sub-query and the right table is not. +-- It should be converted to a sort-merge join. +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +-- The right table is a sub-query and the left table is not. +-- It should be converted to a sort-merge join. +explain +select count(*) from tbl1 a + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq1 + on a.key = subq1.key; + +select count(*) from tbl1 a + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq1 + on a.key = subq1.key; + +-- There are more than 2 inputs to the join, all of them being sub-queries. +-- It should be converted to to a sort-merge join +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on (subq1.key = subq2.key) + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq3 + on (subq1.key = subq3.key); + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq3 + on (subq1.key = subq3.key); + +-- The join is being performed on a nested sub-query, and an aggregation is performed after that. +-- The join should be converted to a sort-merge join +explain +select count(*) from ( + select subq2.key as key, subq2.value as value1, b.value as value2 from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 +join tbl2 b +on subq2.key = b.key) a; + +select count(*) from ( + select subq2.key as key, subq2.value as value1, b.value as value2 from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 +join tbl2 b +on subq2.key = b.key) a; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- The join is being performed as part of sub-query. It should be converted to a sort-merge join +explain +select count(*) from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1; + +select count(*) from ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1; + +-- The join is being performed as part of sub-query. It should be converted to a sort-merge join +-- Add a order by at the end to make the results deterministic. +explain +select key, count(*) from +( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +group by key +order by key; + +select key, count(*) from +( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +group by key +order by key; + +-- The join is being performed as part of more than one sub-query. It should be converted to a sort-merge join +explain +select count(*) from +( + select key, count(*) from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 + group by key +) subq2; + +select count(*) from +( + select key, count(*) from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 + group by key +) subq2; + +-- A join is being performed across different sub-queries, where a join is being performed in each of them. +-- Each sub-query should be converted to a sort-merge join. +explain +select src1.key, src1.cnt1, src2.cnt1 from +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 group by key +) src1 +join +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq2 group by key +) src2 +on src1.key = src2.key +order by src1.key, src1.cnt1, src2.cnt1; + +select src1.key, src1.cnt1, src2.cnt1 from +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 group by key +) src1 +join +( + select key, count(*) as cnt1 from + ( + select a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq2 group by key +) src2 +on src1.key = src2.key +order by src1.key, src1.cnt1, src2.cnt1; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join. +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join, although there is more than one level of sub-query +explain +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join tbl2 b + on subq2.key = b.key; + +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join tbl2 b + on subq2.key = b.key; + +-- Both the tables are nested sub-queries i.e more then 1 level of sub-query. +-- The join should be converted to a sort-merge join +explain +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq3 + where key < 6 + ) subq4 + on subq2.key = subq4.key; + +select count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq3 + where key < 6 + ) subq4 + on subq2.key = subq4.key; + +-- The subquery itself is being joined. Since the sub-query only contains selects and filters and the join key +-- is not getting modified, it should be converted to a sort-merge join. Note that the sub-query modifies one +-- item, but that is not part of the join key. +explain +select count(*) from + (select a.key as key, concat(a.value, a.value) as value from tbl1 a where key < 8) subq1 + join + (select a.key as key, concat(a.value, a.value) as value from tbl2 a where key < 8) subq2 + on subq1.key = subq2.key; + +select count(*) from + (select a.key as key, concat(a.value, a.value) as value from tbl1 a where key < 8) subq1 + join + (select a.key as key, concat(a.value, a.value) as value from tbl2 a where key < 8) subq2 + on subq1.key = subq2.key; + +-- The left table is a sub-query and the right table is not. +-- It should be converted to a sort-merge join. +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +-- The right table is a sub-query and the left table is not. +-- It should be converted to a sort-merge join. +explain +select count(*) from tbl1 a + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq1 + on a.key = subq1.key; + +select count(*) from tbl1 a + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq1 + on a.key = subq1.key; + +-- There are more than 2 inputs to the join, all of them being sub-queries. +-- It should be converted to to a sort-merge join +explain +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on (subq1.key = subq2.key) + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq3 + on (subq1.key = subq3.key); + +select count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq3 + on (subq1.key = subq3.key); + +-- The join is being performed on a nested sub-query, and an aggregation is performed after that. +-- The join should be converted to a sort-merge join +explain +select count(*) from ( + select subq2.key as key, subq2.value as value1, b.value as value2 from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 +join tbl2 b +on subq2.key = b.key) a; + +select count(*) from ( + select subq2.key as key, subq2.value as value1, b.value as value2 from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 +join tbl2 b +on subq2.key = b.key) a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/autogen_colalias.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/autogen_colalias.q new file mode 100644 index 0000000000000..e247a733ae60a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/autogen_colalias.q @@ -0,0 +1,25 @@ +CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax'; + +create table dest_grouped_old1 as select 1+1, 2+2 as zz, src.key, test_max(length(src.value)), count(src.value), sin(count(src.value)), count(sin(src.value)), unix_timestamp(), CAST(SUM(IF(value > 10, value, 1)) AS INT), if(src.key > 1, +1, +0) + from src group by src.key; +describe dest_grouped_old1; + +create table dest_grouped_old2 as select distinct src.key from src; +describe dest_grouped_old2; + +set hive.autogen.columnalias.prefix.label=column_; +set hive.autogen.columnalias.prefix.includefuncname=true; + +create table dest_grouped_new1 as select 1+1, 2+2 as zz, ((src.key % 2)+2)/2, test_max(length(src.value)), count(src.value), sin(count(src.value)), count(sin(src.value)), unix_timestamp(), CAST(SUM(IF(value > 10, value, 1)) AS INT), if(src.key > 10, + (src.key +5) % 2, +0) +from src group by src.key; +describe dest_grouped_new1; + +create table dest_grouped_new2 as select distinct src.key from src; +describe dest_grouped_new2; + +-- Drop the temporary function at the end till HIVE-3160 gets fixed +DROP TEMPORARY FUNCTION test_max; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_change_schema.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_change_schema.q new file mode 100644 index 0000000000000..08e72c408efde --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_change_schema.q @@ -0,0 +1,28 @@ +-- verify that we can update the table properties +CREATE TABLE avro2 +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ "namespace": "org.apache.hive", + "name": "first_schema", + "type": "record", + "fields": [ + { "name":"string1", "type":"string" }, + { "name":"string2", "type":"string" } + ] }'); + +DESCRIBE avro2; + +ALTER TABLE avro2 SET TBLPROPERTIES ('avro.schema.literal'='{ "namespace": "org.apache.hive", + "name": "second_schema", + "type": "record", + "fields": [ + { "name":"int1", "type":"int" }, + { "name":"float1", "type":"float" }, + { "name":"double1", "type":"double" } + ] }'); + +DESCRIBE avro2; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_compression_enabled.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_compression_enabled.q new file mode 100644 index 0000000000000..8367206231974 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_compression_enabled.q @@ -0,0 +1,43 @@ +-- verify that new joins bring in correct schemas (including evolved schemas) + +CREATE TABLE doctors4 +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "testing.hive.avro.serde", + "name": "doctors", + "type": "record", + "fields": [ + { + "name":"number", + "type":"int", + "doc":"Order of playing the role" + }, + { + "name":"first_name", + "type":"string", + "doc":"first name of actor playing role" + }, + { + "name":"last_name", + "type":"string", + "doc":"last name of actor playing role" + }, + { + "name":"extra_field", + "type":"string", + "doc:":"an extra field not in the original file", + "default":"fishfingers and custard" + } + ] +}'); + +LOAD DATA LOCAL INPATH '../data/files/doctors.avro' INTO TABLE doctors4; + +set hive.exec.compress.output=true; + +select count(*) from src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_evolved_schemas.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_evolved_schemas.q new file mode 100644 index 0000000000000..3fe8ff12b4506 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_evolved_schemas.q @@ -0,0 +1,42 @@ +-- verify that new fields in schema get propagated to table scans +CREATE TABLE doctors_with_new_field +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "testing.hive.avro.serde", + "name": "doctors", + "type": "record", + "fields": [ + { + "name":"number", + "type":"int", + "doc":"Order of playing the role" + }, + { + "name":"first_name", + "type":"string", + "doc":"first name of actor playing role" + }, + { + "name":"last_name", + "type":"string", + "doc":"last name of actor playing role" + }, + { + "name":"extra_field", + "type":"string", + "doc:":"an extra field not in the original file", + "default":"fishfingers and custard" + } + ] +}'); + +DESCRIBE doctors_with_new_field; + +LOAD DATA LOCAL INPATH '../data/files/doctors.avro' INTO TABLE doctors_with_new_field; + +SELECT * FROM doctors_with_new_field ORDER BY first_name; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_joins.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_joins.q new file mode 100644 index 0000000000000..25b77c06270d0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_joins.q @@ -0,0 +1,79 @@ +-- verify that new joins bring in correct schemas (including evolved schemas) + +CREATE TABLE doctors4 +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "testing.hive.avro.serde", + "name": "doctors", + "type": "record", + "fields": [ + { + "name":"number", + "type":"int", + "doc":"Order of playing the role" + }, + { + "name":"first_name", + "type":"string", + "doc":"first name of actor playing role" + }, + { + "name":"last_name", + "type":"string", + "doc":"last name of actor playing role" + }, + { + "name":"extra_field", + "type":"string", + "doc:":"an extra field not in the original file", + "default":"fishfingers and custard" + } + ] +}'); + +DESCRIBE doctors4; + +LOAD DATA LOCAL INPATH '../data/files/doctors.avro' INTO TABLE doctors4; + +CREATE TABLE episodes +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "testing.hive.avro.serde", + "name": "episodes", + "type": "record", + "fields": [ + { + "name":"title", + "type":"string", + "doc":"episode title" + }, + { + "name":"air_date", + "type":"string", + "doc":"initial date" + }, + { + "name":"doctor", + "type":"int", + "doc":"main actor playing the Doctor in episode" + } + ] +}'); + +DESCRIBE episodes; + +LOAD DATA LOCAL INPATH '../data/files/episodes.avro' INTO TABLE episodes; + +SELECT e.title, e.air_date, d.first_name, d.last_name, d.extra_field, e.air_date +FROM doctors4 d JOIN episodes e ON (d.number=e.doctor) +ORDER BY d.last_name, e.title; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_nullable_fields.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_nullable_fields.q new file mode 100644 index 0000000000000..584c6f740ba91 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_nullable_fields.q @@ -0,0 +1,59 @@ +-- Verify that nullable fields properly work +CREATE TABLE test_serializer(string1 STRING, + int1 INT, + tinyint1 TINYINT, + smallint1 SMALLINT, + bigint1 BIGINT, + boolean1 BOOLEAN, + float1 FLOAT, + double1 DOUBLE, + list1 ARRAY, + map1 MAP, + struct1 STRUCT, + enum1 STRING, + nullableint INT, + bytes1 BINARY, + fixed1 BINARY) + ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY ':' MAP KEYS TERMINATED BY '#' LINES TERMINATED BY '\n' + STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/csv.txt' INTO TABLE test_serializer; + +CREATE TABLE as_avro + ROW FORMAT + SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' + STORED AS + INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' + TBLPROPERTIES ( + 'avro.schema.literal'='{ + "namespace": "com.howdy", + "name": "some_schema", + "type": "record", + "fields": [ + { "name": "string1", "type": ["null", "string"] }, + { "name": "int1", "type": ["null", "int"] }, + { "name": "tinyint1", "type": ["null", "int"] }, + { "name": "smallint1", "type": ["null", "int"] }, + { "name": "bigint1", "type": ["null", "long"] }, + { "name": "boolean1", "type": ["null", "boolean"] }, + { "name": "float1", "type": ["null", "float"] }, + { "name": "double1", "type": ["null", "double"] }, + { "name": "list1", "type": ["null", {"type": "array", "items": "string"}] }, + { "name": "map1", "type": ["null", {"type": "map", "values": "int"}] }, + { "name": "struct1", "type": ["null", {"type": "record", "name": "struct1_name", "fields": [ + { "name": "sInt", "type": "int" }, + { "name": "sBoolean", "type": "boolean" }, + { "name": "sString", "type": "string" } + ]}] }, + { "name": "enum1", "type": ["null", {"type": "enum", "name": "enum1_values", "symbols": ["BLUE", "RED", "GREEN"]}] }, + { "name": "nullableint", "type": ["null", "int"] }, + { "name": "bytes1", "type": ["null", "bytes"] }, + { "name": "fixed1", "type": ["null", {"type": "fixed", "name": "threebytes", "size": 3}] } + ] + }' + ) +; + +INSERT OVERWRITE TABLE as_avro SELECT * FROM test_serializer; +SELECT * FROM as_avro; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_partitioned.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_partitioned.q new file mode 100644 index 0000000000000..8e4d40f2bd59b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_partitioned.q @@ -0,0 +1,73 @@ +-- verify that new joins bring in correct schemas (including evolved schemas) +CREATE TABLE episodes +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "testing.hive.avro.serde", + "name": "episodes", + "type": "record", + "fields": [ + { + "name":"title", + "type":"string", + "doc":"episode title" + }, + { + "name":"air_date", + "type":"string", + "doc":"initial date" + }, + { + "name":"doctor", + "type":"int", + "doc":"main actor playing the Doctor in episode" + } + ] +}'); + +LOAD DATA LOCAL INPATH '../data/files/episodes.avro' INTO TABLE episodes; + +CREATE TABLE episodes_partitioned +PARTITIONED BY (doctor_pt INT) +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "testing.hive.avro.serde", + "name": "episodes", + "type": "record", + "fields": [ + { + "name":"title", + "type":"string", + "doc":"episode title" + }, + { + "name":"air_date", + "type":"string", + "doc":"initial date" + }, + { + "name":"doctor", + "type":"int", + "doc":"main actor playing the Doctor in episode" + } + ] +}'); + +SET hive.exec.dynamic.partition.mode=nonstrict; +INSERT OVERWRITE TABLE episodes_partitioned PARTITION (doctor_pt) SELECT title, air_date, doctor, doctor as doctor_pt FROM episodes; + +SELECT * FROM episodes_partitioned WHERE doctor_pt > 6 ORDER BY air_date; + +-- Verify that Fetch works in addition to Map +SELECT * FROM episodes_partitioned LIMIT 5; +-- Fetch w/filter to specific partition +SELECT * FROM episodes_partitioned WHERE doctor_pt = 6; +-- Fetch w/non-existant partition +SELECT * FROM episodes_partitioned WHERE doctor_pt = 7 LIMIT 5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_sanity_test.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_sanity_test.q new file mode 100644 index 0000000000000..e3f8b07b30c59 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_sanity_test.q @@ -0,0 +1,36 @@ +-- verify that we can actually read avro files +CREATE TABLE doctors +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "testing.hive.avro.serde", + "name": "doctors", + "type": "record", + "fields": [ + { + "name":"number", + "type":"int", + "doc":"Order of playing the role" + }, + { + "name":"first_name", + "type":"string", + "doc":"first name of actor playing role" + }, + { + "name":"last_name", + "type":"string", + "doc":"last name of actor playing role" + } + ] +}'); + +DESCRIBE doctors; + +LOAD DATA LOCAL INPATH '../data/files/doctors.avro' INTO TABLE doctors; + +SELECT * FROM doctors ORDER BY number; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_schema_error_message.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_schema_error_message.q new file mode 100644 index 0000000000000..cf1fda1d53409 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_schema_error_message.q @@ -0,0 +1,11 @@ +-- verify we get the sentinel schema if we don't provide one + +CREATE TABLE avro_with_no_schema +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'; + +DESCRIBE avro_with_no_schema; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_schema_literal.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_schema_literal.q new file mode 100644 index 0000000000000..d77f31077a40f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/avro_schema_literal.q @@ -0,0 +1,32 @@ +CREATE TABLE avro1 +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "org.apache.hive", + "name": "big_old_schema", + "type": "record", + "fields": [ + { "name":"string1", "type":"string" }, + { "name":"int1", "type":"int" }, + { "name":"tinyint1", "type":"int" }, + { "name":"smallint1", "type":"int" }, + { "name":"bigint1", "type":"long" }, + { "name":"boolean1", "type":"boolean" }, + { "name":"float1", "type":"float" }, + { "name":"double1", "type":"double" }, + { "name":"list1", "type":{"type":"array", "items":"string"} }, + { "name":"map1", "type":{"type":"map", "values":"int"} }, + { "name":"struct1", "type":{"type":"record", "name":"struct1_name", "fields": [ + { "name":"sInt", "type":"int" }, { "name":"sBoolean", "type":"boolean" }, { "name":"sString", "type":"string" } ] } }, + { "name":"union1", "type":["float", "boolean", "string"] }, + { "name":"enum1", "type":{"type":"enum", "name":"enum1_values", "symbols":["BLUE","RED", "GREEN"]} }, + { "name":"nullableint", "type":["int", "null"] }, + { "name":"bytes1", "type":"bytes" }, + { "name":"fixed1", "type":{"type":"fixed", "name":"threebytes", "size":3} } + ] }'); + +DESCRIBE avro1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table1.q new file mode 100644 index 0000000000000..6587f2e929f99 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table1.q @@ -0,0 +1,13 @@ +drop table ba_test; + +-- This query tests a) binary type works correctly in grammar b) string can be cast into binary c) binary can be stored in a table d) binary data can be loaded back again and queried d) order-by on a binary key + +create table ba_test (ba_key binary, ba_val binary) ; + +describe extended ba_test; + +from src insert overwrite table ba_test select cast (src.key as binary), cast (src.value as binary); + +select ba_key,ba_val from ba_test order by ba_key limit 10; + +drop table ba_test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table2.q new file mode 100644 index 0000000000000..d3c3e0807f08c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table2.q @@ -0,0 +1,16 @@ +drop table ba_test; + +-- All the test in ba_test1.q + using LazyBinarySerde instead of LazySimpleSerde + +create table ba_test (ba_key binary, ba_val binary) ; +alter table ba_test set serde 'org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe'; + +describe extended ba_test; + +from src insert overwrite table ba_test select cast (src.key as binary), cast (src.value as binary); + +select ba_key, ba_val from ba_test order by ba_val limit 10; + +drop table ba_test; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table3.q new file mode 100644 index 0000000000000..8137722965f6c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table3.q @@ -0,0 +1,13 @@ +drop table ba_test; + +-- All the tests of ba_table1.q + test for a group-by and aggregation on a binary key. + +create table ba_test (ba_key binary, ba_val binary) ; + +from src insert overwrite table ba_test select cast (src.key as binary), cast (src.value as binary); + +select ba_test.ba_key, count(ba_test.ba_val) from ba_test group by ba_test.ba_key order by ba_key limit 5; + +drop table ba_test; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table_udfs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table_udfs.q new file mode 100644 index 0000000000000..7a3d3f7e4180f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table_udfs.q @@ -0,0 +1,36 @@ +USE default; + +CREATE TABLE dest1(bytes1 BINARY, + bytes2 BINARY, + string STRING); + +FROM src INSERT OVERWRITE TABLE dest1 +SELECT + CAST(key AS BINARY), + CAST(value AS BINARY), + value +ORDER BY value +LIMIT 100; + +--Add in a null row for good measure +INSERT INTO TABLE dest1 SELECT NULL, NULL, NULL FROM dest1 LIMIT 1; + +-- this query tests all the udfs provided to work with binary types + +SELECT + bytes1, + bytes2, + string, + LENGTH(bytes1), + CONCAT(bytes1, bytes2), + SUBSTR(bytes2, 1, 4), + SUBSTR(bytes2, 3), + SUBSTR(bytes2, -4, 3), + HEX(bytes1), + UNHEX(HEX(bytes1)), + BASE64(bytes1), + UNBASE64(BASE64(bytes1)), + HEX(ENCODE(string, 'US-ASCII')), + DECODE(ENCODE(string, 'US-ASCII'), 'US-ASCII') +FROM dest1 +ORDER BY bytes2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table_union.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table_union.q new file mode 100644 index 0000000000000..9804659d36625 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ba_table_union.q @@ -0,0 +1,14 @@ +drop table ba_test; + +-- this query tests ba_table1.q + nested queries with multiple operations on binary data types + union on binary types +create table ba_test (ba_key binary, ba_val binary) ; + +describe extended ba_test; + +from src insert overwrite table ba_test select cast (src.key as binary), cast (src.value as binary); + +select * from ( select key from src where key < 50 union all select cast(ba_key as string) as key from ba_test limit 50) unioned order by key limit 10; + +drop table ba_test; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_constant.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_constant.q new file mode 100644 index 0000000000000..e0a8b95401d0b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_constant.q @@ -0,0 +1 @@ +select cast(cast('a' as binary) as string) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_output_format.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_output_format.q new file mode 100644 index 0000000000000..c5d9abd062c4f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_output_format.q @@ -0,0 +1,39 @@ +-- Create a table with binary output format +CREATE TABLE dest1(mydata STRING) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' +WITH SERDEPROPERTIES ( + 'serialization.last.column.takes.rest'='true' +) +STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveBinaryOutputFormat'; + +-- Insert into that table using transform +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest1 +SELECT TRANSFORM(*) + USING 'cat' + AS mydata STRING + ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' + WITH SERDEPROPERTIES ( + 'serialization.last.column.takes.rest'='true' + ) + RECORDREADER 'org.apache.hadoop.hive.ql.exec.BinaryRecordReader' +FROM src; + +INSERT OVERWRITE TABLE dest1 +SELECT TRANSFORM(*) + USING 'cat' + AS mydata STRING + ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' + WITH SERDEPROPERTIES ( + 'serialization.last.column.takes.rest'='true' + ) + RECORDREADER 'org.apache.hadoop.hive.ql.exec.BinaryRecordReader' +FROM src; + +-- Test the result +SELECT * FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_table_bincolserde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_table_bincolserde.q new file mode 100644 index 0000000000000..47a560c494aae --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_table_bincolserde.q @@ -0,0 +1,16 @@ +drop table ba_test; + +-- Tests everything in binary_table_colserde.q + uses LazyBinaryColumnarSerde + +create table ba_test (ba_key binary, ba_val binary) stored as rcfile; +alter table ba_test set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; + +describe extended ba_test; + +from src insert overwrite table ba_test select cast (src.key as binary), cast (src.value as binary); + +select ba_key, ba_val from ba_test order by ba_key limit 10; + +drop table ba_test; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_table_colserde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_table_colserde.q new file mode 100644 index 0000000000000..eadf07d14d756 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binary_table_colserde.q @@ -0,0 +1,15 @@ +drop table ba_test; + +-- Everything in ba_table1.q + columnar serde in RCFILE. + +create table ba_test (ba_key binary, ba_val binary) stored as rcfile; + +describe extended ba_test; + +from src insert overwrite table ba_test select cast (src.key as binary), cast (src.value as binary); + +select ba_key, ba_val from ba_test order by ba_key limit 10; + +drop table ba_test; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binarysortable_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binarysortable_1.q new file mode 100644 index 0000000000000..a98a2305cfcaf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/binarysortable_1.q @@ -0,0 +1,21 @@ +CREATE TABLE mytable(key STRING, value STRING) +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '9' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/string.txt' INTO TABLE mytable; + +EXPLAIN +SELECT REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(key, '\001', '^A'), '\0', '^@'), '\002', '^B'), value +FROM ( + SELECT key, sum(value) as value + FROM mytable + GROUP BY key +) a; + +SELECT REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(key, '\001', '^A'), '\0', '^@'), '\002', '^B'), value +FROM ( + SELECT key, sum(value) as value + FROM mytable + GROUP BY key +) a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket1.q new file mode 100644 index 0000000000000..ca9b9025e270f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket1.q @@ -0,0 +1,13 @@ +set hive.enforce.bucketing = true; +set hive.exec.reducers.max = 200; + +CREATE TABLE bucket1_1(key int, value string) CLUSTERED BY (key) INTO 100 BUCKETS; + +explain extended +insert overwrite table bucket1_1 +select * from src; + +insert overwrite table bucket1_1 +select * from src; + +select * from bucket1_1 order by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket2.q new file mode 100644 index 0000000000000..d4bddf72ed74d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket2.q @@ -0,0 +1,16 @@ +set hive.enforce.bucketing = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE bucket2_1(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS; + +explain extended +insert overwrite table bucket2_1 +select * from src; + +insert overwrite table bucket2_1 +select * from src; + +explain +select * from bucket2_1 tablesample (bucket 1 out of 2) s order by key; + +select * from bucket2_1 tablesample (bucket 1 out of 2) s order by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket3.q new file mode 100644 index 0000000000000..d891b90b7b379 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket3.q @@ -0,0 +1,19 @@ +set hive.enforce.bucketing = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE bucket3_1(key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS; + +explain extended +insert overwrite table bucket3_1 partition (ds='1') +select * from src; + +insert overwrite table bucket3_1 partition (ds='1') +select * from src; + +insert overwrite table bucket3_1 partition (ds='2') +select * from src; + +explain +select * from bucket3_1 tablesample (bucket 1 out of 2) s where ds = '1' order by key; + +select * from bucket3_1 tablesample (bucket 1 out of 2) s where ds = '1' order by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket4.q new file mode 100644 index 0000000000000..2b3f80543a224 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket4.q @@ -0,0 +1,18 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE bucket4_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +explain extended +insert overwrite table bucket4_1 +select * from src; + +insert overwrite table bucket4_1 +select * from src; + +explain +select * from bucket4_1 tablesample (bucket 1 out of 2) s; + +select * from bucket4_1 tablesample (bucket 1 out of 2) s; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket5.q new file mode 100644 index 0000000000000..877f8a50a0e35 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket5.q @@ -0,0 +1,33 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles = true; +set hive.merge.mapredfiles = true; +set mapred.reduce.tasks = 2; + +-- Tests that when a multi insert inserts into a bucketed table and a table which is not bucketed +-- the bucketed table is not merged and the table which is not bucketed is + +CREATE TABLE bucketed_table(key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE unbucketed_table(key INT, value STRING); + +EXPLAIN EXTENDED +FROM src +INSERT OVERWRITE TABLE bucketed_table SELECT key, value +INSERT OVERWRITE TABLE unbucketed_table SELECT key, value cluster by key; + +FROM src +INSERT OVERWRITE TABLE bucketed_table SELECT key, value +INSERT OVERWRITE TABLE unbucketed_table SELECT key, value cluster by key; + +DESC FORMATTED bucketed_table; + +SELECT * FROM bucketed_table TABLESAMPLE (BUCKET 1 OUT OF 2) s LIMIT 10; +SELECT * FROM bucketed_table TABLESAMPLE (BUCKET 2 OUT OF 2) s LIMIT 10; + +-- Should be 2 (not merged) +SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM bucketed_table; + +-- Should be 1 (merged) +SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM unbucketed_table; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_groupby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_groupby.q new file mode 100644 index 0000000000000..a531ba70a7481 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_groupby.q @@ -0,0 +1,75 @@ +create table clustergroupby(key string, value string) partitioned by(ds string); +describe extended clustergroupby; +alter table clustergroupby clustered by (key) into 1 buckets; + +insert overwrite table clustergroupby partition (ds='100') select key, value from src sort by key; + +explain +select key, count(1) from clustergroupby where ds='100' group by key limit 10; +select key, count(1) from clustergroupby where ds='100' group by key limit 10; + +describe extended clustergroupby; +insert overwrite table clustergroupby partition (ds='101') select key, value from src distribute by key; + +--normal-- +explain +select key, count(1) from clustergroupby where ds='101' group by key limit 10; +select key, count(1) from clustergroupby where ds='101' group by key limit 10; + +--function-- +explain +select length(key), count(1) from clustergroupby where ds='101' group by length(key) limit 10; +select length(key), count(1) from clustergroupby where ds='101' group by length(key) limit 10; +explain +select abs(length(key)), count(1) from clustergroupby where ds='101' group by abs(length(key)) limit 10; +select abs(length(key)), count(1) from clustergroupby where ds='101' group by abs(length(key)) limit 10; + +--constant-- +explain +select key, count(1) from clustergroupby where ds='101' group by key,3 limit 10; +select key, count(1) from clustergroupby where ds='101' group by key,3 limit 10; + +--subquery-- +explain +select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key limit 10; +select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key limit 10; + +explain +select key, count(1) from clustergroupby group by key; +select key, count(1) from clustergroupby group by key; + +explain +select key, count(1) from clustergroupby group by key, 3; + +-- number of buckets cannot be changed, so drop the table +drop table clustergroupby; +create table clustergroupby(key string, value string) partitioned by(ds string); + +--sort columns-- +alter table clustergroupby clustered by (value) sorted by (key, value) into 1 buckets; +describe extended clustergroupby; +insert overwrite table clustergroupby partition (ds='102') select key, value from src distribute by value sort by key, value; + +explain +select key, count(1) from clustergroupby where ds='102' group by key limit 10; +select key, count(1) from clustergroupby where ds='102' group by key limit 10; +explain +select value, count(1) from clustergroupby where ds='102' group by value limit 10; +select value, count(1) from clustergroupby where ds='102' group by value limit 10; +explain +select key, count(1) from clustergroupby where ds='102' group by key, value limit 10; +select key, count(1) from clustergroupby where ds='102' group by key, value limit 10; + +-- number of buckets cannot be changed, so drop the table +drop table clustergroupby; +create table clustergroupby(key string, value string) partitioned by(ds string); + +alter table clustergroupby clustered by (value, key) sorted by (key) into 1 buckets; +describe extended clustergroupby; +insert overwrite table clustergroupby partition (ds='103') select key, value from src distribute by value, key sort by key; +explain +select key, count(1) from clustergroupby where ds='103' group by key limit 10; +select key, count(1) from clustergroupby where ds='103' group by key limit 10; +explain +select key, count(1) from clustergroupby where ds='103' group by value, key limit 10; +select key, count(1) from clustergroupby where ds='103' group by value, key limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_map_join_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_map_join_1.q new file mode 100644 index 0000000000000..33dd5d5cd2e0a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_map_join_1.q @@ -0,0 +1,26 @@ +drop table table1; +drop table table2; + +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; + +create table table1(key string, value string) clustered by (key, value) +sorted by (key, value) into 1 BUCKETS stored as textfile; +create table table2(key string, value string) clustered by (value, key) +sorted by (value, key) into 1 BUCKETS stored as textfile; + +load data local inpath '../data/files/SortCol1Col2.txt' overwrite into table table1; +load data local inpath '../data/files/SortCol2Col1.txt' overwrite into table table2; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +-- The tables are bucketed in same columns in different order, +-- but sorted in different column orders +-- Neither bucketed map-join, nor sort-merge join should be performed + +explain extended +select /*+ mapjoin(b) */ count(*) from table1 a join table2 b on a.key=b.key and a.value=b.value; + +select /*+ mapjoin(b) */ count(*) from table1 a join table2 b on a.key=b.key and a.value=b.value; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_map_join_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_map_join_2.q new file mode 100644 index 0000000000000..d1097e70a9880 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_map_join_2.q @@ -0,0 +1,26 @@ +drop table table1; +drop table table2; + +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; + +create table table1(key string, value string) clustered by (key, value) +sorted by (key desc, value desc) into 1 BUCKETS stored as textfile; +create table table2(key string, value string) clustered by (value, key) +sorted by (value desc, key desc) into 1 BUCKETS stored as textfile; + +load data local inpath '../data/files/SortCol1Col2.txt' overwrite into table table1; +load data local inpath '../data/files/SortCol2Col1.txt' overwrite into table table2; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +-- The tables are bucketed in same columns in different order, +-- but sorted in different column orders +-- Neither bucketed map-join, nor sort-merge join should be performed + +explain extended +select /*+ mapjoin(b) */ count(*) from table1 a join table2 b on a.key=b.key and a.value=b.value; + +select /*+ mapjoin(b) */ count(*) from table1 a join table2 b on a.key=b.key and a.value=b.value; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_num_reducers.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_num_reducers.q new file mode 100644 index 0000000000000..37ae6cc7adeae --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_num_reducers.q @@ -0,0 +1,16 @@ +set hive.enforce.bucketing = true; +set hive.exec.mode.local.auto=false; +set mapred.reduce.tasks = 10; + +-- This test sets number of mapred tasks to 10 for a database with 50 buckets, +-- and uses a post-hook to confirm that 10 tasks were created + +CREATE TABLE bucket_nr(key int, value string) CLUSTERED BY (key) INTO 50 BUCKETS; +set hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyNumReducersHook; +set VerifyNumReducersHook.num.reducers=10; + +insert overwrite table bucket_nr +select * from src; + +set hive.exec.post.hooks=; +drop table bucket_nr; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_num_reducers2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_num_reducers2.q new file mode 100644 index 0000000000000..8c64d60c5ac42 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucket_num_reducers2.q @@ -0,0 +1,13 @@ +set hive.enforce.bucketing = true; +set hive.exec.mode.local.auto=false; +set hive.exec.reducers.max = 2; + +-- This test sets the maximum number of reduce tasks to 2 for overwriting a +-- table with 3 buckets, and uses a post-hook to confirm that 1 reducer was used + +CREATE TABLE test_table(key int, value string) CLUSTERED BY (key) INTO 3 BUCKETS; +set hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyNumReducersHook; +set VerifyNumReducersHook.num.reducers=1; + +insert overwrite table test_table +select * from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_1.q new file mode 100644 index 0000000000000..5b013995d5ba4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_1.q @@ -0,0 +1,23 @@ +-- small 1 part, 2 bucket & big 2 part, 4 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_2.q new file mode 100644 index 0000000000000..f952f2ee6d445 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_2.q @@ -0,0 +1,21 @@ +-- small 1 part, 4 bucket & big 2 part, 2 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_3.q new file mode 100644 index 0000000000000..461fbb196e758 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_3.q @@ -0,0 +1,21 @@ +-- small 2 part, 2 bucket & big 1 part, 4 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +set hive.optimize.bucketmapjoin = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_4.q new file mode 100644 index 0000000000000..366da4473b36d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_4.q @@ -0,0 +1,23 @@ +-- small 2 part, 4 bucket & big 1 part, 2 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +set hive.optimize.bucketmapjoin = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_5.q new file mode 100644 index 0000000000000..411fed392a45e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_5.q @@ -0,0 +1,18 @@ +-- small no part, 4 bucket & big no part, 2 bucket +CREATE TABLE bucket_small (key string, value string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_small; + +CREATE TABLE bucket_big (key string, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big; +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big; + +set hive.optimize.bucketmapjoin = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_6.q new file mode 100644 index 0000000000000..204d1e9010d5d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_6.q @@ -0,0 +1,21 @@ +-- small no part, 4 bucket & big 2 part, 2 bucket +CREATE TABLE bucket_small (key string, value string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_small; +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_small; + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_7.q new file mode 100644 index 0000000000000..b0bca460f303f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_7.q @@ -0,0 +1,26 @@ +-- small 2 part, 4 bucket & big 2 part, 2 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_8.q new file mode 100644 index 0000000000000..9533c5512f3dd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketcontext_8.q @@ -0,0 +1,26 @@ +-- small 2 part, 2 bucket & big 2 part, 4 bucket +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-09'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +explain extended select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketizedhiveinputformat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketizedhiveinputformat.q new file mode 100644 index 0000000000000..4c7f0c9595488 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketizedhiveinputformat.q @@ -0,0 +1,33 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set mapred.min.split.size = 64; + +CREATE TABLE T1(name STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE T1; + +CREATE TABLE T2(name STRING) STORED AS SEQUENCEFILE; + +EXPLAIN INSERT OVERWRITE TABLE T2 SELECT * FROM ( +SELECT tmp1.name as name FROM ( + SELECT name, 'MMM' AS n FROM T1) tmp1 + JOIN (SELECT 'MMM' AS n FROM T1) tmp2 + JOIN (SELECT 'MMM' AS n FROM T1) tmp3 + ON tmp1.n = tmp2.n AND tmp1.n = tmp3.n) ttt LIMIT 5000000; + + +INSERT OVERWRITE TABLE T2 SELECT * FROM ( +SELECT tmp1.name as name FROM ( + SELECT name, 'MMM' AS n FROM T1) tmp1 + JOIN (SELECT 'MMM' AS n FROM T1) tmp2 + JOIN (SELECT 'MMM' AS n FROM T1) tmp3 + ON tmp1.n = tmp2.n AND tmp1.n = tmp3.n) ttt LIMIT 5000000; + +EXPLAIN SELECT COUNT(1) FROM T2; +SELECT COUNT(1) FROM T2; + +CREATE TABLE T3(name STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE T3; +LOAD DATA LOCAL INPATH '../data/files/kv2.txt' INTO TABLE T3; + +EXPLAIN SELECT COUNT(1) FROM T3; +SELECT COUNT(1) FROM T3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketizedhiveinputformat_auto.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketizedhiveinputformat_auto.q new file mode 100644 index 0000000000000..9cdfe8e6e9f6e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketizedhiveinputformat_auto.q @@ -0,0 +1,23 @@ +CREATE TABLE bucket_small (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_small partition(ds='2008-04-08'); + +CREATE TABLE bucket_big (key string, value string) partitioned by (ds string) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket_big partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; + +set hive.input.format = org.apache.hadoop.hive.ql.io.HiveInputFormat; +select /* + MAPJOIN(a) */ count(*) FROM bucket_small a JOIN bucket_big b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin1.q new file mode 100644 index 0000000000000..2bd8e1e2e5d98 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin1.q @@ -0,0 +1,107 @@ +CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +set hive.optimize.bucketmapjoin = true; + +-- empty partitions (HIVE-3205) +explain extended +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key where b.ds="2008-04-08"; + +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key where b.ds="2008-04-08"; + +explain extended +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key where b.ds="2008-04-08"; + +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key where b.ds="2008-04-08"; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); + +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); + +create table bucketmapjoin_hash_result_1 (key bigint , value1 bigint, value2 bigint); +create table bucketmapjoin_hash_result_2 (key bigint , value1 bigint, value2 bigint); + +set hive.optimize.bucketmapjoin = true; +create table bucketmapjoin_tmp_result (key string , value1 string, value2 string); + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; + +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; + + +set hive.optimize.bucketmapjoin = true; +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; + + +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin10.q new file mode 100644 index 0000000000000..cf4222bdd781e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin10.q @@ -0,0 +1,36 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_1 CLUSTERED BY (key) INTO 3 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='2'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='2'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='2'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 3 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key) INTO 2 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='2'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='2'); + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key) INTO 3 BUCKETS; + +set hive.optimize.bucketmapjoin=true; + +-- The table bucketing metadata matches but the partition metadata does not, bucket map join should not be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part IS NOT NULL AND b.part IS NOT NULL; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part IS NOT NULL AND b.part IS NOT NULL; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin11.q new file mode 100644 index 0000000000000..e10ab522a296d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin11.q @@ -0,0 +1,47 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_1 CLUSTERED BY (key) INTO 4 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='2'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='2'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='2'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='2'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key) INTO 2 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='2'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='2'); + + +set hive.optimize.bucketmapjoin=true; + +-- The table and partition bucketing metadata doesn't match but the bucket numbers of all partitions is +-- a power of 2 and the bucketing columns match so bucket map join should be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part IS NOT NULL AND b.part IS NOT NULL; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part IS NOT NULL AND b.part IS NOT NULL; + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = b.part AND a.part IS NOT NULL AND b.part IS NOT NULL; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = b.part AND a.part IS NOT NULL AND b.part IS NOT NULL; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin12.q new file mode 100644 index 0000000000000..8139000f4a733 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin12.q @@ -0,0 +1,44 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_2 NOT CLUSTERED; + +CREATE TABLE srcbucket_mapjoin_part_3 (key INT, value STRING) PARTITIONED BY (part STRING) +STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_3 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_3 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_3 CLUSTERED BY (key) INTO 2 BUCKETS; + +set hive.optimize.bucketmapjoin=true; + +-- The partition bucketing metadata match but one table is not bucketed, bucket map join should still be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; + +-- The table bucketing metadata match but one partition is not bucketed, bucket map join should not be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_3 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_3 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin13.q new file mode 100644 index 0000000000000..f01c43e5694f9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin13.q @@ -0,0 +1,74 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max=1; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (value) INTO 2 BUCKETS; + +-- part=1 partition for srcbucket_mapjoin_part_1 is bucketed by 'value' +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_1 PARTITION (part='1') +SELECT * FROM src; + +ALTER TABLE srcbucket_mapjoin_part_1 CLUSTERED BY (key) INTO 2 BUCKETS; + +-- part=2 partition for srcbucket_mapjoin_part_1 is bucketed by 'key' +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_1 PARTITION (part='2') +SELECT * FROM src; + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 2 BUCKETS; + +-- part=1 partition for srcbucket_mapjoin_part_2 is bucketed by 'key' +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_2 PARTITION (part='1') +SELECT * FROM src; + +set hive.optimize.bucketmapjoin=true; + +-- part=1 partition for srcbucket_mapjoin_part_1 is bucketed by 'value' +-- and it is also being joined. So, bucketed map-join cannot be performed +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key; + +-- part=2 partition for srcbucket_mapjoin_part_1 is bucketed by 'key' +-- and it is being joined. So, bucketed map-join can be performed +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key and a.part = '2'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key and a.part = '2'; + +ALTER TABLE srcbucket_mapjoin_part_1 drop partition (part = '1'); + +-- part=2 partition for srcbucket_mapjoin_part_1 is bucketed by 'key' +-- and it is being joined. So, bucketed map-join can be performed +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key; + +ALTER TABLE srcbucket_mapjoin_part_1 CLUSTERED BY (value) INTO 2 BUCKETS; + +-- part=2 partition for srcbucket_mapjoin_part_1 is bucketed by 'key' +-- and it is being joined. So, bucketed map-join can be performed +-- The fact that the table is being bucketed by 'value' does not matter +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin2.q new file mode 100644 index 0000000000000..fdbadfcb04c9c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin2.q @@ -0,0 +1,112 @@ +CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); + +create table bucketmapjoin_hash_result_1 (key bigint , value1 bigint, value2 bigint); +create table bucketmapjoin_hash_result_2 (key bigint , value1 bigint, value2 bigint); + +set hive.optimize.bucketmapjoin = true; +create table bucketmapjoin_tmp_result (key string , value1 string, value2 string); + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and b.ds="2008-04-08"; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; + +set hive.optimize.bucketmapjoin = true; +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and b.ds="2008-04-08"; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key and b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; + +-- HIVE-3210 +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part a join srcbucket_mapjoin_part_2 b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin3.q new file mode 100644 index 0000000000000..8fda80231522e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin3.q @@ -0,0 +1,78 @@ +CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin; + +CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); + +create table bucketmapjoin_hash_result_1 (key bigint , value1 bigint, value2 bigint); +create table bucketmapjoin_hash_result_2 (key bigint , value1 bigint, value2 bigint); + +set hive.optimize.bucketmapjoin = true; +create table bucketmapjoin_tmp_result (key string , value1 string, value2 string); + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part_2 a join srcbucket_mapjoin_part b +on a.key=b.key and b.ds="2008-04-08" and a.ds="2008-04-08"; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part_2 a join srcbucket_mapjoin_part b +on a.key=b.key and b.ds="2008-04-08" and a.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part_2 a join srcbucket_mapjoin_part b +on a.key=b.key and b.ds="2008-04-08" and a.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; + +set hive.optimize.bucketmapjoin = true; +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part_2 a join srcbucket_mapjoin_part b +on a.key=b.key and b.ds="2008-04-08" and a.ds="2008-04-08"; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part_2 a join srcbucket_mapjoin_part b +on a.key=b.key and b.ds="2008-04-08" and a.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin_part_2 a join srcbucket_mapjoin_part b +on a.key=b.key and b.ds="2008-04-08" and a.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin4.q new file mode 100644 index 0000000000000..c1a8f2ab7bfa0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin4.q @@ -0,0 +1,80 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin; + +CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); + +create table bucketmapjoin_hash_result_1 (key bigint , value1 bigint, value2 bigint); +create table bucketmapjoin_hash_result_2 (key bigint , value1 bigint, value2 bigint); + +set hive.optimize.bucketmapjoin = true; +create table bucketmapjoin_tmp_result (key string , value1 string, value2 string); + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin b +on a.key=b.key; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; + + +set hive.optimize.bucketmapjoin = true; +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin b +on a.key=b.key; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin5.q new file mode 100644 index 0000000000000..2df49b64f3227 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin5.q @@ -0,0 +1,85 @@ +CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin; + +CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09'); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-09'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09'); + +create table bucketmapjoin_hash_result_1 (key bigint , value1 bigint, value2 bigint); +create table bucketmapjoin_hash_result_2 (key bigint , value1 bigint, value2 bigint); + +set hive.optimize.bucketmapjoin = true; +create table bucketmapjoin_tmp_result (key string , value1 string, value2 string); + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; + + +set hive.optimize.bucketmapjoin = true; +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part_2 b +on a.key=b.key; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part_2 b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part_2 b +on a.key=b.key; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin6.q new file mode 100644 index 0000000000000..2998d7ccf1961 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin6.q @@ -0,0 +1,25 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +create table tmp1 (a string, b string) clustered by (a) sorted by (a) into 10 buckets; + +create table tmp2 (a string, b string) clustered by (a) sorted by (a) into 10 buckets; + + +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max=1; + + +insert overwrite table tmp1 select * from src where key < 50; +insert overwrite table tmp2 select * from src where key < 50; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.merge.mapfiles=false; +create table tmp3 (a string, b string, c string) clustered by (a) sorted by (a) into 10 buckets; + + +insert overwrite table tmp3 + select /*+ MAPJOIN(l) */ i.a, i.b, l.b + from tmp1 i join tmp2 l ON i.a = l.a; + +select * from tmp3 order by a, b, c; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin7.q new file mode 100644 index 0000000000000..3a96c642b3e4c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin7.q @@ -0,0 +1,24 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (ds STRING, hr STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (ds='2008-04-08', hr='0'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (ds='2008-04-08', hr='0'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (ds STRING, hr STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (ds='2008-04-08', hr='0'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (ds='2008-04-08', hr='0'); + +set hive.optimize.bucketmapjoin=true; + +-- Tests that bucket map join works with a table with more than one level of partitioning + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ a.key, b.value +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.ds = '2008-04-08' AND b.ds = '2008-04-08' LIMIT 1; + +SELECT /*+ MAPJOIN(b) */ a.key, b.value +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.ds = '2008-04-08' AND b.ds = '2008-04-08' LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin8.q new file mode 100644 index 0000000000000..5e8daa5f8f125 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin8.q @@ -0,0 +1,39 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key) INTO 3 BUCKETS; + +set hive.optimize.bucketmapjoin=true; + +-- The partition bucketing metadata match but the tables have different numbers of buckets, bucket map join should still be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (value) INTO 2 BUCKETS; + +-- The partition bucketing metadata match but the tables are bucketed on different columns, bucket map join should still be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin9.q new file mode 100644 index 0000000000000..86344a53f5a95 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin9.q @@ -0,0 +1,45 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_1 PARTITION (part='1'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) INTO 3 BUCKETS STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key) INTO 2 BUCKETS; + +set hive.optimize.bucketmapjoin=true; + +-- The table bucketing metadata matches but the partitions have different numbers of buckets, bucket map join should not be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' and b.part = '1'; + +ALTER TABLE srcbucket_mapjoin_part_2 DROP PARTITION (part='1'); +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (value) INTO 2 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part_2 PARTITION (part='1'); + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key) INTO 2 BUCKETS; + +-- The table bucketing metadata matches but the partitions are bucketed on different columns, bucket map join should not be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' AND b.part = '1'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' AND b.part = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative.q new file mode 100644 index 0000000000000..d7634333e2fee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative.q @@ -0,0 +1,27 @@ + + + + +CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin; + +CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 3 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); + + + +set hive.optimize.bucketmapjoin = true; +create table bucketmapjoin_tmp_result (key string , value1 string, value2 string); + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative2.q new file mode 100644 index 0000000000000..901f0567590ec --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative2.q @@ -0,0 +1,18 @@ +CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin; + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-09'); + +set hive.optimize.bucketmapjoin = true; +create table bucketmapjoin_tmp_result (key string , value1 string, value2 string); + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part_2 b +on a.key=b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative3.q new file mode 100644 index 0000000000000..d66e1238bb79b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketmapjoin_negative3.q @@ -0,0 +1,39 @@ +drop table test1; +drop table test2; +drop table test3; +drop table test4; + +create table test1 (key string, value string) clustered by (key) sorted by (key) into 3 buckets; +create table test2 (key string, value string) clustered by (value) sorted by (value) into 3 buckets; +create table test3 (key string, value string) clustered by (key, value) sorted by (key, value) into 3 buckets; +create table test4 (key string, value string) clustered by (value, key) sorted by (value, key) into 3 buckets; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE test1; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE test1; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE test1; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE test2; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE test2; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE test2; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE test3; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE test3; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE test3; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE test4; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE test4; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE test4; + +set hive.optimize.bucketmapjoin = true; +-- should be allowed +explain extended select /* + MAPJOIN(R) */ * from test1 L join test1 R on L.key=R.key AND L.value=R.value; +explain extended select /* + MAPJOIN(R) */ * from test2 L join test2 R on L.key=R.key AND L.value=R.value; + +-- should not apply bucket mapjoin +explain extended select /* + MAPJOIN(R) */ * from test1 L join test1 R on L.key+L.key=R.key; +explain extended select /* + MAPJOIN(R) */ * from test1 L join test2 R on L.key=R.key AND L.value=R.value; +explain extended select /* + MAPJOIN(R) */ * from test1 L join test3 R on L.key=R.key AND L.value=R.value; +explain extended select /* + MAPJOIN(R) */ * from test1 L join test4 R on L.key=R.key AND L.value=R.value; +explain extended select /* + MAPJOIN(R) */ * from test2 L join test3 R on L.key=R.key AND L.value=R.value; +explain extended select /* + MAPJOIN(R) */ * from test2 L join test4 R on L.key=R.key AND L.value=R.value; +explain extended select /* + MAPJOIN(R) */ * from test3 L join test4 R on L.key=R.key AND L.value=R.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_1.q new file mode 100644 index 0000000000000..8cc308ffb1156 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_1.q @@ -0,0 +1,78 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT *; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.key, x.value from +( +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1' +)x; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.key, x.value from +( +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1' +)x; + +select count(*) from test_table2 where ds = '1'; +select count(*) from test_table2 tablesample (bucket 1 out of 2) s where ds = '1'; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s where ds = '1'; + +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT * from +( +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1' +)x; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT * from +( +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1' +)x; + +select count(*) from test_table2 where ds = '1'; +select count(*) from test_table2 tablesample (bucket 1 out of 2) s where ds = '1'; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- it should be a map-only job +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.key, concat(x.value, x.value) from +( +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1' +)x; + +-- it should be a map-reduce job +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.key+x.key, x.value from +( +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1' +)x; + +-- it should be a map-only job +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.k1, concat(x.v1, x.v1) from +( +SELECT a.key as k1, a.value as v1 FROM test_table1 a WHERE a.ds = '1' +)x; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_2.q new file mode 100644 index 0000000000000..9ecd2c48ba764 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_2.q @@ -0,0 +1,143 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy=org.apache.hadoop.hive.ql.optimizer.LeftmostBigTableSelectorForAutoSMJ; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table3 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT * where key < 10; + +FROM src +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') SELECT * where key < 100; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '2') SELECT * where key < 10; + +FROM src +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '2') SELECT * where key < 100; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- Since more than one partition of 'a' (the big table) is being selected, +-- it should be a map-reduce job +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds is not null and b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds is not null and b.ds = '1'; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- Since a single partition of the big table ('a') is being selected, it should be a map-only +-- job even though multiple partitions of 'b' are being selected +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds is not null; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds is not null; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- This should be a map-only job +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1') a +JOIN +(select key, value from test_table2 where ds = '1') b +ON a.key = b.key; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1') a +JOIN +(select key, value from test_table2 where ds = '1') b +ON a.key = b.key; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- This should be a map-only job +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.v1, b.v2) +FROM +(select key, concat(value, value) as v1 from test_table1 where ds = '1') a +JOIN +(select key, concat(value, value) as v2 from test_table2 where ds = '1') b +ON a.key = b.key; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.v1, b.v2) +FROM +(select key, concat(value, value) as v1 from test_table1 where ds = '1') a +JOIN +(select key, concat(value, value) as v2 from test_table2 where ds = '1') b +ON a.key = b.key; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- This should be a map-reduce job +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key+a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1') a +JOIN +(select key, value from test_table2 where ds = '1') b +ON a.key = b.key; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key+a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1') a +JOIN +(select key, value from test_table2 where ds = '1') b +ON a.key = b.key; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_3.q new file mode 100644 index 0000000000000..91e97de62c82f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_3.q @@ -0,0 +1,52 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (value STRING, key INT) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT *; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- The bucketing positions dont match - although the actual bucketing do. +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.value, x.key from +(SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1')x; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.value, x.key from +(SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1')x; + +select count(*) from test_table2 where ds = '1'; +select count(*) from test_table2 tablesample (bucket 1 out of 2) s where ds = '1'; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s where ds = '1'; + +CREATE TABLE test_table3 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- The bucketing positions dont match - this should be a map-reduce operation +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.key, x.value from +(SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1')x; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT x.key, x.value from +(SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1')x; + +select count(*) from test_table2 where ds = '1'; +select count(*) from test_table2 tablesample (bucket 1 out of 2) s where ds = '1'; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s where ds = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_4.q new file mode 100644 index 0000000000000..623b22bfe494c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_4.q @@ -0,0 +1,65 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy=org.apache.hadoop.hive.ql.optimizer.LeftmostBigTableSelectorForAutoSMJ; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table3 (key INT, key2 INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key2) SORTED BY (key2) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT * where key < 10; + +FROM src +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') SELECT * where key < 100; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation, since the insert is happening on the bucketing position +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +DROP TABLE test_table3; + +CREATE TABLE test_table3 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation, since the insert is happening on a non-bucketing position +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, a.value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, a.value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +DROP TABLE test_table3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_5.q new file mode 100644 index 0000000000000..205a45064b4e3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_5.q @@ -0,0 +1,63 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy=org.apache.hadoop.hive.ql.optimizer.LeftmostBigTableSelectorForAutoSMJ; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table3 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key desc) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT * where key < 10; + +FROM src +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') SELECT * where key < 100; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation, since the sort-order does not match +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- This should be a map-reduce job since the sort order does not match +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1') a +JOIN +(select key, value from test_table2 where ds = '1') b +ON a.key = b.key; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1') a +JOIN +(select key, value from test_table2 where ds = '1') b +ON a.key = b.key; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_6.q new file mode 100644 index 0000000000000..a4e84f85e1664 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_6.q @@ -0,0 +1,156 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy=org.apache.hadoop.hive.ql.optimizer.LeftmostBigTableSelectorForAutoSMJ; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, key2 INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key, key2) SORTED BY (key ASC, key2 DESC) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, key2 INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key, key2) SORTED BY (key ASC, key2 DESC) INTO 2 BUCKETS; +CREATE TABLE test_table3 (key INT, key2 INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key, key2) SORTED BY (key ASC, key2 DESC) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT key, key+1, value where key < 10; + +FROM src +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') SELECT key, key+1, value where key < 100; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation, since the sort-order matches +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, a.key2, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, a.key2, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1'; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation, since the sort-order matches +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT subq1.key, subq1.key2, subq1.value from +( +SELECT a.key, a.key2, concat(a.value, b.value) as value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1' +)subq1; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT subq1.key, subq1.key2, subq1.value from +( +SELECT a.key, a.key2, concat(a.value, b.value) as value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1' +)subq1; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key2, a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1'; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT subq1.key2, subq1.key, subq1.value from +( +SELECT a.key, a.key2, concat(a.value, b.value) as value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1' +)subq1; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT subq2.key, subq2.key2, subq2.value from +( +SELECT subq1.key2, subq1.key, subq1.value from +( +SELECT a.key, a.key2, concat(a.value, b.value) as value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1' +)subq1 +)subq2; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT subq2.key, subq2.key2, subq2.value from +( +SELECT subq1.key2, subq1.key, subq1.value from +( +SELECT a.key, a.key2, concat(a.value, b.value) as value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1' +)subq1 +)subq2; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT subq2.k2, subq2.k1, subq2.value from +( +SELECT subq1.key2 as k1, subq1.key as k2, subq1.value from +( +SELECT a.key, a.key2, concat(a.value, b.value) as value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1' +)subq1 +)subq2; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT subq2.k2, subq2.k1, subq2.value from +( +SELECT subq1.key2 as k1, subq1.key as k2, subq1.value from +( +SELECT a.key, a.key2, concat(a.value, b.value) as value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1' +)subq1 +)subq2; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +CREATE TABLE test_table4 (key INT, key2 INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key, key2) SORTED BY (key DESC, key2 DESC) INTO 2 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation +EXPLAIN +INSERT OVERWRITE TABLE test_table4 PARTITION (ds = '1') +SELECT subq2.k2, subq2.k1, subq2.value from +( +SELECT subq1.key2 as k1, subq1.key as k2, subq1.value from +( +SELECT a.key, a.key2, concat(a.value, b.value) as value +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key and a.key2 = b.key2 WHERE a.ds = '1' and b.ds = '1' +)subq1 +)subq2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_7.q new file mode 100644 index 0000000000000..f597884bb7645 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_7.q @@ -0,0 +1,88 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy=org.apache.hadoop.hive.ql.optimizer.LeftmostBigTableSelectorForAutoSMJ; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table3 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT * where key < 10; + +FROM src +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') SELECT * where key < 100; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1' +and (a.key = 0 or a.key = 5); + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1' +and (a.key = 0 or a.key = 5); + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- This should be a map-only job +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1' and (key = 0 or key = 5)) a +JOIN +(select key, value from test_table2 where ds = '1' and (key = 0 or key = 5)) b +ON a.key = b.key; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1' and (key = 0 or key = 5)) a +JOIN +(select key, value from test_table2 where ds = '1' and (key = 0 or key = 5)) b +ON a.key = b.key; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- This should be a map-only job +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1' and key < 8) a +JOIN +(select key, value from test_table2 where ds = '1' and key < 8) b +ON a.key = b.key +WHERE a.key = 0 or a.key = 5; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, concat(a.value, b.value) +FROM +(select key, value from test_table1 where ds = '1' and key < 8) a +JOIN +(select key, value from test_table2 where ds = '1' and key < 8) b +ON a.key = b.key +WHERE a.key = 0 or a.key = 5; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_8.q new file mode 100644 index 0000000000000..95a9a6481a4a6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/bucketsortoptimize_insert_8.q @@ -0,0 +1,58 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy=org.apache.hadoop.hive.ql.optimizer.LeftmostBigTableSelectorForAutoSMJ; + +set hive.auto.convert.sortmerge.join.to.mapjoin=true; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table3 (key INT, key2 INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT * where key < 10; + +FROM src +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') SELECT * where key < 100; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, b.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.key, b.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT b.key, a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT b.key, a.key, concat(a.value, b.value) +FROM test_table1 a JOIN test_table2 b +ON a.key = b.key WHERE a.ds = '1' and b.ds = '1'; + +select * from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select * from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/case_sensitivity.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/case_sensitivity.q new file mode 100644 index 0000000000000..a4b73f0a87e95 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/case_sensitivity.q @@ -0,0 +1,10 @@ +CREATE TABLE DEST1(Key INT, VALUE STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM SRC_THRIFT +INSERT OVERWRITE TABLE dest1 SELECT src_Thrift.LINT[1], src_thrift.lintstring[0].MYSTRING where src_thrift.liNT[0] > 0; + +FROM SRC_THRIFT +INSERT OVERWRITE TABLE dest1 SELECT src_Thrift.LINT[1], src_thrift.lintstring[0].MYSTRING where src_thrift.liNT[0] > 0; + +SELECT DEST1.* FROM Dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cast1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cast1.q new file mode 100644 index 0000000000000..7f5f8a58deecf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cast1.q @@ -0,0 +1,9 @@ +CREATE TABLE dest1(c1 INT, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 INT, c6 STRING, c7 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT 3 + 2, 3.0 + 2, 3 + 2.0, 3.0 + 2.0, 3 + CAST(2.0 AS INT) + CAST(CAST(0 AS SMALLINT) AS INT), CAST(1 AS BOOLEAN), CAST(TRUE AS INT) WHERE src.key = 86; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT 3 + 2, 3.0 + 2, 3 + 2.0, 3.0 + 2.0, 3 + CAST(2.0 AS INT) + CAST(CAST(0 AS SMALLINT) AS INT), CAST(1 AS BOOLEAN), CAST(TRUE AS INT) WHERE src.key = 86; + +select dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cast_to_int.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cast_to_int.q new file mode 100644 index 0000000000000..729ffdc8687b5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cast_to_int.q @@ -0,0 +1,30 @@ +-- cast string floats to integer types +select + cast('1' as float), + cast('1.4' as float), + cast('1.6' as float), + cast('1' as int), + cast('1.4' as int), + cast('1.6' as int), + cast('1' as tinyint), + cast('1.4' as tinyint), + cast('1.6' as tinyint), + cast('1' as smallint), + cast('1.4' as smallint), + cast('1.6' as smallint), + cast('1' as bigint), + cast('1.4' as bigint), + cast('1.6' as bigint), + cast (cast('1' as float) as int), + cast(cast ('1.4' as float) as int), + cast(cast ('1.6' as float) as int), + cast('+1e5' as int), + cast('2147483647' as int), + cast('-2147483648' as int), + cast('32767' as smallint), + cast('-32768' as smallint), + cast('-128' as tinyint), + cast('127' as tinyint), + cast('1.0a' as int), + cast('-1.-1' as int) +from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cluster.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cluster.q new file mode 100644 index 0000000000000..24819707181a8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cluster.q @@ -0,0 +1,65 @@ +EXPLAIN +SELECT * FROM SRC x where x.key = 10 CLUSTER BY x.key; +SELECT * FROM SRC x where x.key = 10 CLUSTER BY x.key; + +EXPLAIN +SELECT * FROM SRC x where x.key = 20 CLUSTER BY key ; +SELECT * FROM SRC x where x.key = 20 CLUSTER BY key ; + +EXPLAIN +SELECT x.* FROM SRC x where x.key = 20 CLUSTER BY key; +SELECT x.* FROM SRC x where x.key = 20 CLUSTER BY key; + +EXPLAIN +SELECT x.* FROM SRC x where x.key = 20 CLUSTER BY x.key; +SELECT x.* FROM SRC x where x.key = 20 CLUSTER BY x.key; + +EXPLAIN +SELECT x.key, x.value as v1 FROM SRC x where x.key = 20 CLUSTER BY key ; +SELECT x.key, x.value as v1 FROM SRC x where x.key = 20 CLUSTER BY key ; + +EXPLAIN +SELECT x.key, x.value as v1 FROM SRC x where x.key = 20 CLUSTER BY x.key; +SELECT x.key, x.value as v1 FROM SRC x where x.key = 20 CLUSTER BY x.key; + +EXPLAIN +SELECT x.key, x.value as v1 FROM SRC x where x.key = 20 CLUSTER BY v1; +SELECT x.key, x.value as v1 FROM SRC x where x.key = 20 CLUSTER BY v1; + +EXPLAIN +SELECT y.* from (SELECT x.* FROM SRC x CLUSTER BY x.key) y where y.key = 20; +SELECT y.* from (SELECT x.* FROM SRC x CLUSTER BY x.key) y where y.key = 20; + + +EXPLAIN +SELECT x.key, x.value as v1, y.key FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1;; +SELECT x.key, x.value as v1, y.key FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1; + +EXPLAIN +SELECT x.key, x.value as v1, y.* FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1; +SELECT x.key, x.value as v1, y.* FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1; + +EXPLAIN +SELECT x.key, x.value as v1, y.* FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY x.key ; +SELECT x.key, x.value as v1, y.* FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY x.key ; + +EXPLAIN +SELECT x.key, x.value as v1, y.key as yk FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY key ; +SELECT x.key, x.value as v1, y.key as yk FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY key ; + +EXPLAIN +SELECT unioninput.* +FROM ( + FROM src select src.key, src.value WHERE src.key < 100 + UNION ALL + FROM src SELECT src.* WHERE src.key > 100 +) unioninput +CLUSTER BY unioninput.key; + +SELECT unioninput.* +FROM ( + FROM src select src.key, src.value WHERE src.key < 100 + UNION ALL + FROM src SELECT src.* WHERE src.key > 100 +) unioninput +CLUSTER BY unioninput.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/column_access_stats.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/column_access_stats.q new file mode 100644 index 0000000000000..3c8a309991d75 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/column_access_stats.q @@ -0,0 +1,162 @@ +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.CheckColumnAccessHook; +SET hive.stats.collect.scancols=true; + +-- This test is used for testing the ColumnAccessAnalyzer + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T4(key STRING, val STRING) PARTITIONED BY (p STRING); + +-- Simple select queries +SELECT key FROM T1 ORDER BY key; +SELECT key, val FROM T1 ORDER BY key, val; +SELECT 1 FROM T1; +SELECT key, val from T4 where p=1; +SELECT val FROM T4 where p=1; +SELECT p, val FROM T4 where p=1; + +-- More complicated select queries +EXPLAIN SELECT key FROM (SELECT key, val FROM T1) subq1 ORDER BY key; +SELECT key FROM (SELECT key, val FROM T1) subq1 ORDER BY key; +EXPLAIN SELECT k FROM (SELECT key as k, val as v FROM T1) subq1 ORDER BY k; +SELECT k FROM (SELECT key as k, val as v FROM T1) subq1 ORDER BY k; +SELECT key + 1 as k FROM T1 ORDER BY k; +SELECT key + val as k FROM T1 ORDER BY k; + +-- Work with union +EXPLAIN +SELECT * FROM ( +SELECT key as c FROM T1 + UNION ALL +SELECT val as c FROM T1 +) subq1 ORDER BY c; + +SELECT * FROM ( +SELECT key as c FROM T1 + UNION ALL +SELECT val as c FROM T1 +) subq1 ORDER BY c; + +EXPLAIN +SELECT * FROM ( +SELECT key as c FROM T1 + UNION ALL +SELECT key as c FROM T1 +) subq1 ORDER BY c; + +SELECT * FROM ( +SELECT key as c FROM T1 + UNION ALL +SELECT key as c FROM T1 +) subq1 ORDER BY c; + +-- Work with insert overwrite +FROM T1 +INSERT OVERWRITE TABLE T2 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE T3 SELECT key, sum(val) GROUP BY key; + +-- Simple joins +SELECT * +FROM T1 JOIN T2 +ON T1.key = T2.key +ORDER BY T1.key, T1.val, T2.key, T2.val; + +EXPLAIN +SELECT T1.key +FROM T1 JOIN T2 +ON T1.key = T2.key +ORDER BY T1.key; + +SELECT T1.key +FROM T1 JOIN T2 +ON T1.key = T2.key +ORDER BY T1.key; + +SELECT * +FROM T1 JOIN T2 +ON T1.key = T2.key AND T1.val = T2.val +ORDER BY T1.key, T1.val; + +-- Map join +SELECT /*+ MAPJOIN(a) */ * +FROM T1 a JOIN T2 b +ON a.key = b.key +ORDER BY a.key, a.val, b.key, b.val; + +-- More joins +EXPLAIN +SELECT * +FROM T1 JOIN T2 +ON T1.key = T2.key AND T1.val = 3 and T2.val = 3 +ORDER BY T1.key, T1.val; + +SELECT * +FROM T1 JOIN T2 +ON T1.key = T2.key AND T1.val = 3 and T2.val = 3 +ORDER BY T1.key, T1.val; + +EXPLAIN +SELECT subq1.val +FROM +( + SELECT val FROM T1 WHERE key = 5 +) subq1 +JOIN +( + SELECT val FROM T2 WHERE key = 6 +) subq2 +ON subq1.val = subq2.val +ORDER BY subq1.val; + +SELECT subq1.val +FROM +( + SELECT val FROM T1 WHERE key = 5 +) subq1 +JOIN +( + SELECT val FROM T2 WHERE key = 6 +) subq2 +ON subq1.val = subq2.val +ORDER BY subq1.val; + +-- Join followed by join +EXPLAIN +SELECT * +FROM +( + SELECT subq1.key as key + FROM + ( + SELECT key, val FROM T1 + ) subq1 + JOIN + ( + SELECT key, 'teststring' as val FROM T2 + ) subq2 + ON subq1.key = subq2.key +) T4 +JOIN T3 +ON T3.key = T4.key +ORDER BY T3.key, T4.key; + +SELECT * +FROM +( + SELECT subq1.key as key + FROM + ( + SELECT key, val FROM T1 + ) subq1 + JOIN + ( + SELECT key, 'teststring' as val FROM T2 + ) subq2 + ON subq1.key = subq2.key +) T4 +JOIN T3 +ON T3.key = T4.key +ORDER BY T3.key, T4.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnarserde_create_shortcut.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnarserde_create_shortcut.q new file mode 100644 index 0000000000000..4c3b44ae14af6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnarserde_create_shortcut.q @@ -0,0 +1,24 @@ +CREATE TABLE columnarserde_create_shortcut(a array, b array, c map, d int, e string) STORED AS RCFILE; + +EXPLAIN +FROM src_thrift +INSERT OVERWRITE TABLE columnarserde_create_shortcut SELECT src_thrift.lint, src_thrift.lstring, src_thrift.mstringstring, src_thrift.aint, src_thrift.astring DISTRIBUTE BY 1; + +FROM src_thrift +INSERT OVERWRITE TABLE columnarserde_create_shortcut SELECT src_thrift.lint, src_thrift.lstring, src_thrift.mstringstring, src_thrift.aint, src_thrift.astring DISTRIBUTE BY 1; + +SELECT columnarserde_create_shortcut.* FROM columnarserde_create_shortcut CLUSTER BY 1; + +SELECT columnarserde_create_shortcut.a[0], columnarserde_create_shortcut.b[0], columnarserde_create_shortcut.c['key2'], columnarserde_create_shortcut.d, columnarserde_create_shortcut.e FROM columnarserde_create_shortcut CLUSTER BY 1; + +CREATE table columnShortcutTable (key STRING, value STRING) STORED AS RCFILE; + +FROM src +INSERT OVERWRITE TABLE columnShortcutTable SELECT src.key, src.value LIMIT 10; +describe columnShortcutTable; +SELECT columnShortcutTable.* FROM columnShortcutTable ORDER BY key ASC, value ASC; + +ALTER TABLE columnShortcutTable ADD COLUMNS (c string); +SELECT columnShortcutTable.* FROM columnShortcutTable ORDER BY key ASC, value ASC; +ALTER TABLE columnShortcutTable REPLACE COLUMNS (key int); +SELECT columnShortcutTable.* FROM columnShortcutTable ORDER BY key ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnstats_partlvl.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnstats_partlvl.q new file mode 100644 index 0000000000000..98627776d3163 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnstats_partlvl.q @@ -0,0 +1,20 @@ + +DROP TABLE Employee_Part; + +CREATE TABLE Employee_Part(employeeID int, employeeName String) partitioned by (employeeSalary double) +row format delimited fields terminated by '|' stored as textfile; + +LOAD DATA LOCAL INPATH "../data/files/employee.dat" INTO TABLE Employee_Part partition(employeeSalary=2000.0); +LOAD DATA LOCAL INPATH "../data/files/employee.dat" INTO TABLE Employee_Part partition(employeeSalary=4000.0); + +explain +analyze table Employee_Part partition (employeeSalary=2000.0) compute statistics for columns employeeID; +explain extended +analyze table Employee_Part partition (employeeSalary=2000.0) compute statistics for columns employeeID; +analyze table Employee_Part partition (employeeSalary=2000.0) compute statistics for columns employeeID; + +explain +analyze table Employee_Part partition (employeeSalary=4000.0) compute statistics for columns employeeID; +explain extended +analyze table Employee_Part partition (employeeSalary=4000.0) compute statistics for columns employeeID; +analyze table Employee_Part partition (employeeSalary=4000.0) compute statistics for columns employeeID; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnstats_tbllvl.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnstats_tbllvl.q new file mode 100644 index 0000000000000..72d88a67b5212 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/columnstats_tbllvl.q @@ -0,0 +1,38 @@ + +DROP TABLE IF EXISTS UserVisits_web_text_none; + +CREATE TABLE UserVisits_web_text_none ( + sourceIP string, + destURL string, + visitDate string, + adRevenue float, + userAgent string, + cCode string, + lCode string, + sKeyword string, + avgTimeOnSite int) +row format delimited fields terminated by '|' stored as textfile; + +LOAD DATA LOCAL INPATH "../data/files/UserVisits.dat" INTO TABLE UserVisits_web_text_none; + +explain +analyze table UserVisits_web_text_none compute statistics for columns sourceIP, avgTimeOnSite, adRevenue; + +explain extended +analyze table UserVisits_web_text_none compute statistics for columns sourceIP, avgTimeOnSite, adRevenue; + +analyze table UserVisits_web_text_none compute statistics for columns sourceIP, avgTimeOnSite, adRevenue; + +CREATE TABLE empty_tab( + a int, + b double, + c string, + d boolean, + e binary) +row format delimited fields terminated by '|' stored as textfile; + +explain +analyze table empty_tab compute statistics for columns a,b,c,d,e; + +analyze table empty_tab compute statistics for columns a,b,c,d,e; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine1.q new file mode 100644 index 0000000000000..86abf0996057b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine1.q @@ -0,0 +1,17 @@ +set hive.exec.compress.output = true; +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; + +set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; + +create table combine1_1(key string, value string) stored as textfile; + +insert overwrite table combine1_1 +select * from src; + + +select key, value from combine1_1 ORDER BY key ASC, value ASC; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2.q new file mode 100644 index 0000000000000..cfd9856f0868a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2.q @@ -0,0 +1,51 @@ +USE default; + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set mapred.cache.shared.enabled=false; +set hive.merge.smallfiles.avgsize=0; + +-- EXCLUDE_OS_WINDOWS +-- excluded on windows because of difference in file name encoding logic + + + +create table combine2(key string) partitioned by (value string); + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) +-- This test sets mapred.max.split.size=256 and hive.merge.smallfiles.avgsize=0 +-- in an attempt to force the generation of multiple splits and multiple output files. +-- However, Hadoop 0.20 is incapable of generating splits smaller than the block size +-- when using CombineFileInputFormat, so only one split is generated. This has a +-- significant impact on the results results of this test. +-- This issue was fixed in MAPREDUCE-2046 which is included in 0.22. + +insert overwrite table combine2 partition(value) +select * from ( + select key, value from src where key < 10 + union all + select key, '|' as value from src where key = 11 + union all + select key, '2010-04-21 09:45:00' value from src where key = 19) s; + +show partitions combine2; + +explain +select key, value from combine2 where value is not null order by key; + +select key, value from combine2 where value is not null order by key; + +explain extended +select count(1) from combine2 where value is not null; + +select count(1) from combine2 where value is not null; + +explain +select ds, count(1) from srcpart where ds is not null group by ds; + +select ds, count(1) from srcpart where ds is not null group by ds; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2_hadoop20.q new file mode 100644 index 0000000000000..8f9a59d497536 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2_hadoop20.q @@ -0,0 +1,50 @@ +USE default; + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set mapred.cache.shared.enabled=false; +set hive.merge.smallfiles.avgsize=0; + +-- EXCLUDE_OS_WINDOWS +-- excluded on windows because of difference in file name encoding logic + + +create table combine2(key string) partitioned by (value string); + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) +-- This test sets mapred.max.split.size=256 and hive.merge.smallfiles.avgsize=0 +-- in an attempt to force the generation of multiple splits and multiple output files. +-- However, Hadoop 0.20 is incapable of generating splits smaller than the block size +-- when using CombineFileInputFormat, so only one split is generated. This has a +-- significant impact on the results results of this test. +-- This issue was fixed in MAPREDUCE-2046 which is included in 0.22. + +insert overwrite table combine2 partition(value) +select * from ( + select key, value from src where key < 10 + union all + select key, '|' as value from src where key = 11 + union all + select key, '2010-04-21 09:45:00' value from src where key = 19) s; + +show partitions combine2; + +explain +select key, value from combine2 where value is not null order by key; + +select key, value from combine2 where value is not null order by key; + +explain extended +select count(1) from combine2 where value is not null; + +select count(1) from combine2 where value is not null; + +explain +select ds, count(1) from srcpart where ds is not null group by ds; + +select ds, count(1) from srcpart where ds is not null group by ds; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2_win.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2_win.q new file mode 100644 index 0000000000000..f6090bb99b29a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine2_win.q @@ -0,0 +1,41 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set mapred.cache.shared.enabled=false; +set hive.merge.smallfiles.avgsize=0; + +-- INCLUDE_OS_WINDOWS +-- included only on windows because of difference in file name encoding logic + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +create table combine2(key string) partitioned by (value string); + +insert overwrite table combine2 partition(value) +select * from ( + select key, value from src where key < 10 + union all + select key, '|' as value from src where key = 11 + union all + select key, '2010-04-21 09:45:00' value from src where key = 19) s; + +show partitions combine2; + +explain +select key, value from combine2 where value is not null order by key; + +select key, value from combine2 where value is not null order by key; + +explain extended +select count(1) from combine2 where value is not null; + +select count(1) from combine2 where value is not null; + +explain +select ds, count(1) from srcpart where ds is not null group by ds; + +select ds, count(1) from srcpart where ds is not null group by ds; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine3.q new file mode 100644 index 0000000000000..c9afc91bb4561 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/combine3.q @@ -0,0 +1,41 @@ +set hive.exec.compress.output = true; +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; + + +drop table combine_3_srcpart_seq_rc; + +create table combine_3_srcpart_seq_rc (key int , value string) partitioned by (ds string, hr string) stored as sequencefile; + +insert overwrite table combine_3_srcpart_seq_rc partition (ds="2010-08-03", hr="00") select * from src; + +alter table combine_3_srcpart_seq_rc set fileformat rcfile; +insert overwrite table combine_3_srcpart_seq_rc partition (ds="2010-08-03", hr="001") select * from src; + +desc extended combine_3_srcpart_seq_rc partition(ds="2010-08-03", hr="00"); +desc extended combine_3_srcpart_seq_rc partition(ds="2010-08-03", hr="001"); + +select key, value, ds, hr from combine_3_srcpart_seq_rc where ds="2010-08-03" order by key, hr limit 30; + +set hive.enforce.bucketing = true; +set hive.exec.reducers.max = 1; + +drop table bucket3_1; +CREATE TABLE combine_3_srcpart_seq_rc_bucket(key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS stored as sequencefile; + +insert overwrite table combine_3_srcpart_seq_rc_bucket partition (ds='1') +select * from src; + +alter table combine_3_srcpart_seq_rc_bucket set fileformat rcfile; + +insert overwrite table combine_3_srcpart_seq_rc_bucket partition (ds='11') +select * from src; + +select key, ds from combine_3_srcpart_seq_rc_bucket tablesample (bucket 1 out of 2) s where ds = '1' or ds= '11' order by key, ds limit 30; + +drop table combine_3_srcpart_seq_rc_bucket; + +drop table combine_3_srcpart_seq_rc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_binary.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_binary.q new file mode 100644 index 0000000000000..c19813602782f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_binary.q @@ -0,0 +1,9 @@ +create table tab_binary(a binary); + +-- insert some data +LOAD DATA LOCAL INPATH "../data/files/binary.txt" INTO TABLE tab_binary; + +select count(*) from tab_binary; + +-- compute statistical summary of data +select compute_stats(a, 16) from tab_binary; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_boolean.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_boolean.q new file mode 100644 index 0000000000000..dc76f7c7d57e1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_boolean.q @@ -0,0 +1,9 @@ +create table tab_bool(a boolean); + +-- insert some data +LOAD DATA LOCAL INPATH "../data/files/bool.txt" INTO TABLE tab_bool; + +select count(*) from tab_bool; + +-- compute statistical summary of data +select compute_stats(a, 16) from tab_bool; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_double.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_double.q new file mode 100644 index 0000000000000..6c6dc47e67701 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_double.q @@ -0,0 +1,9 @@ +create table tab_double(a double); + +-- insert some data +LOAD DATA LOCAL INPATH "../data/files/double.txt" INTO TABLE tab_double; + +select count(*) from tab_double; + +-- compute statistical summary of data +select compute_stats(a, 16) from tab_double; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_empty_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_empty_table.q new file mode 100644 index 0000000000000..d4ed93fa63987 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_empty_table.q @@ -0,0 +1,12 @@ +create table tab_empty(a boolean, b int, c double, d string, e binary); + +select count(*) from tab_empty; + +-- compute statistical summary of data +select compute_stats(a, 16) from tab_empty; +select compute_stats(b, 16) from tab_empty; +select compute_stats(c, 16) from tab_empty; +select compute_stats(d, 16) from tab_empty; +select compute_stats(e, 16) from tab_empty; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_long.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_long.q new file mode 100644 index 0000000000000..7d0a1584a28cc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_long.q @@ -0,0 +1,9 @@ +create table tab_int(a int); + +-- insert some data +LOAD DATA LOCAL INPATH "../data/files/int.txt" INTO TABLE tab_int; + +select count(*) from tab_int; + +-- compute statistical summary of data +select compute_stats(a, 16) from tab_int; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_string.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_string.q new file mode 100644 index 0000000000000..f146f6b95b544 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/compute_stats_string.q @@ -0,0 +1,9 @@ +create table tab_string(a string); + +-- insert some data +LOAD DATA LOCAL INPATH "../data/files/string.txt" INTO TABLE tab_string; + +select count(*) from tab_string; + +-- compute statistical summary of data +select compute_stats(a, 16) from tab_string; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/concatenate_inherit_table_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/concatenate_inherit_table_location.q new file mode 100644 index 0000000000000..1ae194338ce8c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/concatenate_inherit_table_location.q @@ -0,0 +1,21 @@ +CREATE TABLE citl_table (key STRING, value STRING) PARTITIONED BY (part STRING) +STORED AS RCFILE +LOCATION 'pfile:${system:test.tmp.dir}/citl_table'; + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyPartitionIsSubdirectoryOfTableHook; + +INSERT OVERWRITE TABLE citl_table PARTITION (part = '1') SELECT * FROM src; + +SET hive.exec.post.hooks=; + +ALTER TABLE citl_table SET LOCATION 'file:${system:test.tmp.dir}/citl_table'; + +ALTER TABLE citl_table PARTITION (part = '1') CONCATENATE; + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyPartitionIsSubdirectoryOfTableHook; + +SELECT count(*) FROM citl_table where part = '1'; + +SET hive.exec.post.hooks=; + +DROP TABLE citl_table; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/constant_prop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/constant_prop.q new file mode 100644 index 0000000000000..ced72d60445c2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/constant_prop.q @@ -0,0 +1,20 @@ +EXPLAIN +SELECT NAMED_STRUCT( + IF(ARRAY_CONTAINS(ARRAY(1, 2), 3), "F1", "B1"), 1, + IF(ARRAY_CONTAINS(MAP_KEYS(MAP("b", "x")), "b"), "F2", "B2"), 2 + ), + NAMED_STRUCT( + IF(ARRAY_CONTAINS(ARRAY(1, 2), 3), "F1", "B1"), 1, + IF(ARRAY_CONTAINS(MAP_KEYS(MAP("b", "x")), "b"), "F2", "B2"), 2 + ).F2 + FROM src LIMIT 1; + +SELECT NAMED_STRUCT( + IF(ARRAY_CONTAINS(ARRAY(1, 2), 3), "F1", "B1"), 1, + IF(ARRAY_CONTAINS(MAP_KEYS(MAP("b", "x")), "b"), "F2", "B2"), 2 + ), + NAMED_STRUCT( + IF(ARRAY_CONTAINS(ARRAY(1, 2), 3), "F1", "B1"), 1, + IF(ARRAY_CONTAINS(MAP_KEYS(MAP("b", "x")), "b"), "F2", "B2"), 2 + ).F2 + FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/convert_enum_to_string.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/convert_enum_to_string.q new file mode 100644 index 0000000000000..3dc4a6ad42523 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/convert_enum_to_string.q @@ -0,0 +1,10 @@ +-- Ensure Enum fields are converted to strings (instead of struct) + +create table convert_enum_to_string + partitioned by (b string) + row format serde "org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer" + with serdeproperties ( + "serialization.class"="org.apache.hadoop.hive.serde2.thrift.test.MegaStruct", + "serialization.format"="org.apache.thrift.protocol.TBinaryProtocol"); + +describe convert_enum_to_string; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer1.q new file mode 100644 index 0000000000000..b3fd3f760eaf0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer1.q @@ -0,0 +1,264 @@ +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- This query has a GroupByOperator folling JoinOperator and they share the same keys. +-- When Correlation Optimizer is turned off, three MR jobs will be generated. +-- When Correlation Optimizer is turned on, two MR jobs will be generated +-- and JoinOperator (on the column of key) and GroupByOperator (also on the column +-- of key) will be executed in the first MR job. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.auto.convert.join=true; +set hive.optimize.correlation=true; +-- Enable hive.auto.convert.join. +-- Correlation Optimizer will detect that the join will be converted to a Map-join, +-- so it will not try to optimize this query. +-- We should generate 1 MR job for subquery tmp. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- If the key of a GroupByOperator is the left table's key in +-- a Left Semi Join, these two operators will be executed in +-- the same MR job when Correlation Optimizer is enabled. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x LEFT SEMI JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x LEFT SEMI JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x LEFT SEMI JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x LEFT SEMI JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- If the key of a GroupByOperator is the left table's key in +-- a Left Outer Join, these two operators will be executed in +-- the same MR job when Correlation Optimizer is enabled. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + + +set hive.optimize.correlation=false; +-- If the key of a GroupByOperator is the right table's key in +-- a Left Outer Join, we cannot use a single MR to execute these two +-- operators because those keys with a null value are not grouped. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key) + GROUP BY y.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM src1 x LEFT OUTER JOIN src y ON (x.key = y.key) + GROUP BY y.key) tmp; + +set hive.optimize.correlation=false; +-- If the key of a GroupByOperator is the right table's key in +-- a Right Outer Join, these two operators will be executed in +-- the same MR job when Correlation Optimizer is enabled. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM src1 x RIGHT OUTER JOIN src y ON (x.key = y.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM src1 x RIGHT OUTER JOIN src y ON (x.key = y.key) + GROUP BY y.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM src1 x RIGHT OUTER JOIN src y ON (x.key = y.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM src1 x RIGHT OUTER JOIN src y ON (x.key = y.key) + GROUP BY y.key) tmp; + + +set hive.optimize.correlation=false; +-- If the key of a GroupByOperator is the left table's key in +-- a Right Outer Join, we cannot use a single MR to execute these two +-- operators because those keys with a null value are not grouped. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x RIGHT OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x RIGHT OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x RIGHT OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x RIGHT OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=false; +-- This query has a Full Outer Join followed by a GroupByOperator and +-- they share the same key. Because those keys with a null value are not grouped +-- in the output of the Full Outer Join, we cannot use a single MR to execute +-- these two operators. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x FULL OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x FULL OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x FULL OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x FULL OUTER JOIN src y ON (x.key = y.key) + GROUP BY x.key) tmp; + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- Currently, we only handle exactly same keys, this query will not be optimized +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.value)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, x.value AS value, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key, x.value) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.value)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, x.value AS value, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key, x.value) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.value)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, x.value AS value, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key, x.value) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.value)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, x.value AS value, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key) + GROUP BY x.key, x.value) tmp; + +set hive.optimize.correlation=false; +-- Currently, we only handle exactly same keys, this query will not be optimized +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key AND x.value = y.value) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key AND x.value = y.value) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key AND x.value = y.value) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src1 x JOIN src y ON (x.key = y.key AND x.value = y.value) + GROUP BY x.key) tmp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer10.q new file mode 100644 index 0000000000000..4369125a77a14 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer10.q @@ -0,0 +1,130 @@ +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery xx and xx join yy. +-- This case is used to test LEFT SEMI JOIN since Hive will +-- introduce a GroupByOperator before the ReduceSinkOperator of +-- the right table (yy in queries below) +-- of LEFT SEMI JOIN. +EXPLAIN +SELECT xx.key, xx.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +LEFT SEMI JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt; + +SELECT xx.key, xx.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +LEFT SEMI JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +LEFT SEMI JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt; + +SELECT xx.key, xx.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +LEFT SEMI JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery xx and xx join yy. +-- This case is used to test LEFT SEMI JOIN since Hive will +-- introduce a GroupByOperator before the ReduceSinkOperator of +-- the right table (yy in queries below) +-- of LEFT SEMI JOIN. +EXPLAIN +SELECT xx.key, xx.value +FROM +src1 xx +LEFT SEMI JOIN +(SELECT x.key as key + FROM src x JOIN src y ON (x.key = y.key) + WHERE x.key < 200 AND + y.key > 20) yy +ON xx.key=yy.key ORDER BY xx.key, xx.value; + +SELECT xx.key, xx.value +FROM +src1 xx +LEFT SEMI JOIN +(SELECT x.key as key + FROM src x JOIN src y ON (x.key = y.key) + WHERE x.key < 200 AND + y.key > 20) yy +ON xx.key=yy.key ORDER BY xx.key, xx.value; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.value +FROM +src1 xx +LEFT SEMI JOIN +(SELECT x.key as key + FROM src x JOIN src y ON (x.key = y.key) + WHERE x.key < 200 AND + y.key > 20) yy +ON xx.key=yy.key ORDER BY xx.key, xx.value; + +SELECT xx.key, xx.value +FROM +src1 xx +LEFT SEMI JOIN +(SELECT x.key as key + FROM src x JOIN src y ON (x.key = y.key) + WHERE x.key < 200 AND + y.key > 20) yy +ON xx.key=yy.key ORDER BY xx.key, xx.value; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- This test is used to test if we can use shared scan for +-- xx, yy:x, and yy:y. +EXPLAIN +SELECT xx.key, xx.value +FROM +src xx +LEFT SEMI JOIN +(SELECT x.key as key + FROM src x JOIN src y ON (x.key = y.key) + WHERE x.key < 200 AND x.key > 180) yy +ON xx.key=yy.key ORDER BY xx.key, xx.value; + +SELECT xx.key, xx.value +FROM +src xx +LEFT SEMI JOIN +(SELECT x.key as key + FROM src x JOIN src y ON (x.key = y.key) + WHERE x.key < 200 AND x.key > 180) yy +ON xx.key=yy.key ORDER BY xx.key, xx.value; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.value +FROM +src xx +LEFT SEMI JOIN +(SELECT x.key as key + FROM src x JOIN src y ON (x.key = y.key) + WHERE x.key < 200 AND x.key > 180) yy +ON xx.key=yy.key ORDER BY xx.key, xx.value; + +SELECT xx.key, xx.value +FROM +src xx +LEFT SEMI JOIN +(SELECT x.key as key + FROM src x JOIN src y ON (x.key = y.key) + WHERE x.key < 200 AND x.key > 180) yy +ON xx.key=yy.key ORDER BY xx.key, xx.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer11.q new file mode 100644 index 0000000000000..412baa77f549f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer11.q @@ -0,0 +1,73 @@ +set hive.auto.convert.join=false; +-- Tests in this file are used to make sure Correlation Optimizer +-- can correctly handle tables with partitions + +CREATE TABLE part_table(key string, value string) PARTITIONED BY (partitionId int); +INSERT OVERWRITE TABLE part_table PARTITION (partitionId=1) + SELECT key, value FROM src ORDER BY key, value LIMIT 100; +INSERT OVERWRITE TABLE part_table PARTITION (partitionId=2) + SELECT key, value FROM src1 ORDER BY key, value; + +set hive.optimize.correlation=false; +-- In this case, we should not do shared scan on part_table +-- because left and right tables of JOIN use different partitions +-- of part_table. With Correlation Optimizer we will generate +-- 1 MR job. +EXPLAIN +SELECT x.key AS key, count(1) AS cnt +FROM part_table x JOIN part_table y ON (x.key = y.key) +WHERE x.partitionId = 1 AND + y.partitionId = 2 +GROUP BY x.key; + +SELECT x.key AS key, count(1) AS cnt +FROM part_table x JOIN part_table y ON (x.key = y.key) +WHERE x.partitionId = 1 AND + y.partitionId = 2 +GROUP BY x.key; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT x.key AS key, count(1) AS cnt +FROM part_table x JOIN part_table y ON (x.key = y.key) +WHERE x.partitionId = 1 AND + y.partitionId = 2 +GROUP BY x.key; + +SELECT x.key AS key, count(1) AS cnt +FROM part_table x JOIN part_table y ON (x.key = y.key) +WHERE x.partitionId = 1 AND + y.partitionId = 2 +GROUP BY x.key; + +set hive.optimize.correlation=false; +-- In this case, we should do shared scan on part_table +-- because left and right tables of JOIN use the same partition +-- of part_table. With Correlation Optimizer we will generate +-- 1 MR job. +EXPLAIN +SELECT x.key AS key, count(1) AS cnt +FROM part_table x JOIN part_table y ON (x.key = y.key) +WHERE x.partitionId = 2 AND + y.partitionId = 2 +GROUP BY x.key; + +SELECT x.key AS key, count(1) AS cnt +FROM part_table x JOIN part_table y ON (x.key = y.key) +WHERE x.partitionId = 2 AND + y.partitionId = 2 +GROUP BY x.key; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT x.key AS key, count(1) AS cnt +FROM part_table x JOIN part_table y ON (x.key = y.key) +WHERE x.partitionId = 2 AND + y.partitionId = 2 +GROUP BY x.key; + +SELECT x.key AS key, count(1) AS cnt +FROM part_table x JOIN part_table y ON (x.key = y.key) +WHERE x.partitionId = 2 AND + y.partitionId = 2 +GROUP BY x.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer12.q new file mode 100644 index 0000000000000..409cdb4c5b38c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer12.q @@ -0,0 +1,9 @@ +set hive.auto.convert.join=false; +set hive.optimize.correlation=true; +-- Currently, correlation optimizer does not support PTF operator +EXPLAIN SELECT xx.key, xx.cnt, yy.key, yy.cnt +FROM +(SELECT x.key as key, count(x.value) OVER (PARTITION BY x.key) AS cnt FROM src x) xx +JOIN +(SELECT y.key as key, count(y.value) OVER (PARTITION BY y.key) AS cnt FROM src1 y) yy +ON (xx.key=yy.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer13.q new file mode 100644 index 0000000000000..e979465d28af9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer13.q @@ -0,0 +1,18 @@ +CREATE TABLE tmp(c1 INT, c2 INT, c3 STRING, c4 STRING); +INSERT OVERWRITE TABLE tmp +SELECT x.key, y.key, x.value, y.value FROM src x JOIN src y ON (x.key = y.key); + +set hive.optimize.correlation=true; +-- The query in this file have operators with same set of keys +-- but having different sorting orders. +-- Correlation optimizer currently do not optimize this case. +-- This case will be optimized latter (need a follow-up jira). + +EXPLAIN +SELECT xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key1, x.c3 AS key2, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c3, x.c1) xx +JOIN +(SELECT x1.c1 AS key1, x1.c3 AS key2, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c3, x1.c1) yy +ON (xx.key1 = yy.key1 AND xx.key2 == yy.key2) ORDER BY xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer14.q new file mode 100644 index 0000000000000..1322b793780a9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer14.q @@ -0,0 +1,149 @@ +set hive.optimize.reducededuplication=true; +set hive.optimize.reducededuplication.min.reducer=1; +set hive.optimize.correlation=true; +-- This file is used to show plans of queries involving cluster by, distribute by, +-- order by, and sort by. +-- Right now, Correlation optimizer check the most restrictive condition +-- when determining if a ReduceSinkOperator is not necessary. +-- This condition is that two ReduceSinkOperators should have same sorting columns, +-- same partitioning columns, same sorting orders and no conflict on the numbers of reducers. + +-- Distribute by will not be optimized because distribute by does not introduce +-- sorting columns. +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x DISTRIBUTE BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y DISTRIBUTE BY key) yy +ON (xx.key=yy.key); + +-- Sort by will not be optimized because sort by does not introduce partitioning columns +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x SORT BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y SORT BY key) yy +ON (xx.key=yy.key); + +set hive.optimize.correlation=false; +-- Distribute by and sort by on the same key(s) should be optimized +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x DISTRIBUTE BY key SORT BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y DISTRIBUTE BY key SORT BY key) yy +ON (xx.key=yy.key); + +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x DISTRIBUTE BY key SORT BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y DISTRIBUTE BY key SORT BY key) yy +ON (xx.key=yy.key); + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x DISTRIBUTE BY key SORT BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y DISTRIBUTE BY key SORT BY key) yy +ON (xx.key=yy.key); + +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x DISTRIBUTE BY key SORT BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y DISTRIBUTE BY key SORT BY key) yy +ON (xx.key=yy.key); + +set hive.optimize.correlation=true; +-- Because for join we use ascending order, if sort by uses descending order, +-- this query will not be optimized +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x DISTRIBUTE BY key SORT BY key DESC) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y DISTRIBUTE BY key SORT BY key DESC) yy +ON (xx.key=yy.key); + +-- Even if hive.optimize.reducededuplication.min.reducer=1, order by will not be optimized +-- because order by does not introduce partitioning columns +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x ORDER BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y ORDER BY key) yy +ON (xx.key=yy.key); + +set hive.optimize.correlation=false; +-- Cluster by will be optimized +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x Cluster BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y Cluster BY key) yy +ON (xx.key=yy.key); + +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x Cluster BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y Cluster BY key) yy +ON (xx.key=yy.key); + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x Cluster BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y Cluster BY key) yy +ON (xx.key=yy.key); + +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x Cluster BY key) xx +JOIN +(SELECT y.key as key, y.value as value FROM src1 y Cluster BY key) yy +ON (xx.key=yy.key); + +set hive.optimize.correlation=false; +-- If hive.optimize.reducededuplication.min.reducer=1, +-- group by and then order by should be optimized +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x CLUSTER BY key) xx +JOIN +(SELECT y.key as key, count(*) as value FROM src1 y GROUP BY y.key ORDER BY key) yy +ON (xx.key=yy.key); + +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x CLUSTER BY key) xx +JOIN +(SELECT y.key as key, count(*) as value FROM src1 y GROUP BY y.key ORDER BY key) yy +ON (xx.key=yy.key); + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x CLUSTER BY key) xx +JOIN +(SELECT y.key as key, count(*) as value FROM src1 y GROUP BY y.key ORDER BY key) yy +ON (xx.key=yy.key); + +SELECT xx.key, xx.value, yy.key, yy.value +FROM +(SELECT x.key as key, x.value as value FROM src x CLUSTER BY key) xx +JOIN +(SELECT y.key as key, count(*) as value FROM src1 y GROUP BY y.key ORDER BY key) yy +ON (xx.key=yy.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer15.q new file mode 100644 index 0000000000000..dd6143c402c20 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer15.q @@ -0,0 +1,32 @@ +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery xx and xx join yy. +EXPLAIN +SELECT xx.key, xx.cnt, yy.key +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key; + +SELECT xx.key, xx.cnt, yy.key +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key; + +set hive.optimize.correlation=true; +set hive.join.emit.interval=1; +EXPLAIN +SELECT xx.key, xx.cnt, yy.key +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key; + +SELECT xx.key, xx.cnt, yy.key +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer2.q new file mode 100644 index 0000000000000..af97f16e3629a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer2.q @@ -0,0 +1,188 @@ +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- In this query, subquery a and b both have a GroupByOperator and the a and b will be +-- joined. The key of JoinOperator is the same with both keys of GroupByOperators in subquery +-- a and b. When Correlation Optimizer is turned off, we have four MR jobs. +-- When Correlation Optimizer is turned on, 2 MR jobs will be generated. +-- The first job will evaluate subquery tmp (including subquery a, b, and the JoinOperator on a +-- and b). +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=false; +-- Left Outer Join should be handled. +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + LEFT OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + LEFT OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + LEFT OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + LEFT OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=false; +-- Right Outer Join should be handled. +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + RIGHT OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + RIGHT OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + RIGHT OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + RIGHT OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=false; +-- Full Outer Join should be handled. +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + FULL OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + FULL OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + FULL OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.cnt AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + FULL OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=false; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT a.key AS key, count(1) AS cnt + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + FULL OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key) + GROUP BY a.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT a.key AS key, count(1) AS cnt + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + FULL OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key) + GROUP BY a.key) tmp; + +set hive.optimize.correlation=true; +-- After FULL OUTER JOIN, keys with null values are not grouped, right now, +-- we have to generate 2 MR jobs for tmp, 1 MR job for a join b and another for the +-- GroupByOperator on key. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT a.key AS key, count(1) AS cnt + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + FULL OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key) + GROUP BY a.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT a.key AS key, count(1) AS cnt + FROM (SELECT x.key as key, count(x.value) AS cnt FROM src x group by x.key) a + FULL OUTER JOIN (SELECT y.key as key, count(y.value) AS cnt FROM src1 y group by y.key) b + ON (a.key = b.key) + GROUP BY a.key) tmp; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, we need 4 MR jobs. +-- When Correlation Optimizer is turned on, the subquery of tmp will be evaluated in +-- a single MR job (including the subquery a, the subquery b, and a join b). So, we +-- will have 2 MR jobs. +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.val AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key AS key, x.value AS val FROM src1 x JOIN src y ON (x.key = y.key)) a + JOIN (SELECT z.key AS key, count(z.value) AS cnt FROM src1 z group by z.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.val AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key AS key, x.value AS val FROM src1 x JOIN src y ON (x.key = y.key)) a + JOIN (SELECT z.key AS key, count(z.value) AS cnt FROM src1 z group by z.key) b + ON (a.key = b.key)) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.val AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key AS key, x.value AS val FROM src1 x JOIN src y ON (x.key = y.key)) a + JOIN (SELECT z.key AS key, count(z.value) AS cnt FROM src1 z group by z.key) b + ON (a.key = b.key)) tmp; + +SELECT SUM(HASH(key1)), SUM(HASH(cnt1)), SUM(HASH(key2)), SUM(HASH(cnt2)) +FROM (SELECT a.key AS key1, a.val AS cnt1, b.key AS key2, b.cnt AS cnt2 + FROM (SELECT x.key AS key, x.value AS val FROM src1 x JOIN src y ON (x.key = y.key)) a + JOIN (SELECT z.key AS key, count(z.value) AS cnt FROM src1 z group by z.key) b + ON (a.key = b.key)) tmp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer3.q new file mode 100644 index 0000000000000..89b7c15690ab1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer3.q @@ -0,0 +1,96 @@ +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 5 MR jobs will be generated. +-- When Correlation Optimizer is turned on, the subquery tmp will be evalauted +-- in a single MR job (including the subquery b, the subquery d, and b join d). +-- At the reduce side of the MR job evaluating tmp, two operation paths +-- (for subquery b and d) have different depths. The path starting from subquery b +-- is JOIN->GBY->JOIN, which has a depth of 3. While, the path starting from subquery d +-- is JOIN->JOIN. We should be able to handle this case. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT b.key AS key, b.cnt AS cnt, d.value AS value + FROM (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) b + JOIN (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) d + ON b.key = d.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT b.key AS key, b.cnt AS cnt, d.value AS value + FROM (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) b + JOIN (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) d + ON b.key = d.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT b.key AS key, b.cnt AS cnt, d.value AS value + FROM (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) b + JOIN (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) d + ON b.key = d.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT b.key AS key, b.cnt AS cnt, d.value AS value + FROM (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) b + JOIN (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) d + ON b.key = d.key) tmp; + +set hive.optimize.correlation=true; +set hive.auto.convert.join=true; +-- Enable hive.auto.convert.join. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT b.key AS key, b.cnt AS cnt, d.value AS value + FROM (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) b + JOIN (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) d + ON b.key = d.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT b.key AS key, b.cnt AS cnt, d.value AS value + FROM (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) b + JOIN (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) d + ON b.key = d.key) tmp; + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT d.key AS key, d.cnt AS cnt, b.value as value + FROM (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) b + JOIN (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) d + ON b.key = d.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT d.key AS key, d.cnt AS cnt, b.value as value + FROM (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) b + JOIN (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) d + ON b.key = d.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT d.key AS key, d.cnt AS cnt, b.value as value + FROM (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) b + JOIN (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) d + ON b.key = d.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT d.key AS key, d.cnt AS cnt, b.value as value + FROM (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) b + JOIN (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) d + ON b.key = d.key) tmp; + +set hive.optimize.correlation=true; +set hive.auto.convert.join=true; +-- Enable hive.auto.convert.join. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT d.key AS key, d.cnt AS cnt, b.value as value + FROM (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) b + JOIN (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) d + ON b.key = d.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)), SUM(HASH(tmp.value)) +FROM (SELECT d.key AS key, d.cnt AS cnt, b.value as value + FROM (SELECT x.key, x.value FROM src1 x JOIN src y ON (x.key = y.key)) b + JOIN (SELECT x.key, count(1) AS cnt FROM src1 x JOIN src y ON (x.key = y.key) group by x.key) d + ON b.key = d.key) tmp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer4.q new file mode 100644 index 0000000000000..70fcdfc0b4288 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer4.q @@ -0,0 +1,158 @@ +CREATE TABLE T1(key INT, val STRING); +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; +CREATE TABLE T2(key INT, val STRING); +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; +CREATE TABLE T3(key INT, val STRING); +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T3; + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, this query will be evaluated +-- by 3 MR jobs. +-- When Correlation Optimizer is turned on, this query will be evaluated by +-- 2 MR jobs. The subquery tmp will be evaluated in a single MR job. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x JOIN T1 y ON (x.key = y.key) JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x JOIN T1 y ON (x.key = y.key) JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x JOIN T1 y ON (x.key = y.key) JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x JOIN T1 y ON (x.key = y.key) JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +set hive.optimize.correlation=true; +set hive.auto.convert.join=true; +-- Enable hive.auto.convert.join. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x JOIN T1 y ON (x.key = y.key) JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x JOIN T1 y ON (x.key = y.key) JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- This case should be optimized, since the key of GroupByOperator is from the leftmost table +-- of a chain of LEFT OUTER JOINs. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM T2 x LEFT OUTER JOIN T1 y ON (x.key = y.key) LEFT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM T2 x LEFT OUTER JOIN T1 y ON (x.key = y.key) LEFT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM T2 x LEFT OUTER JOIN T1 y ON (x.key = y.key) LEFT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY x.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT x.key AS key, count(1) AS cnt + FROM T2 x LEFT OUTER JOIN T1 y ON (x.key = y.key) LEFT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY x.key) tmp; + +set hive.optimize.correlation=true; +-- This query will not be optimized by correlation optimizer because +-- GroupByOperator uses y.key (a right table of a left outer join) +-- as the key. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x LEFT OUTER JOIN T1 y ON (x.key = y.key) LEFT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x LEFT OUTER JOIN T1 y ON (x.key = y.key) LEFT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +set hive.optimize.correlation=false; +-- This case should be optimized, since the key of GroupByOperator is from the rightmost table +-- of a chain of RIGHT OUTER JOINs. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT z.key AS key, count(1) AS cnt + FROM T2 x RIGHT OUTER JOIN T1 y ON (x.key = y.key) RIGHT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY z.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT z.key AS key, count(1) AS cnt + FROM T2 x RIGHT OUTER JOIN T1 y ON (x.key = y.key) RIGHT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY z.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT z.key AS key, count(1) AS cnt + FROM T2 x RIGHT OUTER JOIN T1 y ON (x.key = y.key) RIGHT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY z.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT z.key AS key, count(1) AS cnt + FROM T2 x RIGHT OUTER JOIN T1 y ON (x.key = y.key) RIGHT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY z.key) tmp; + +set hive.optimize.correlation=true; +-- This query will not be optimized by correlation optimizer because +-- GroupByOperator uses y.key (a left table of a right outer join) +-- as the key. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x RIGHT OUTER JOIN T1 y ON (x.key = y.key) RIGHT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x RIGHT OUTER JOIN T1 y ON (x.key = y.key) RIGHT OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +set hive.optimize.correlation=false; +-- This case should not be optimized because afer the FULL OUTER JOIN, rows with null keys +-- are not grouped. +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x FULL OUTER JOIN T1 y ON (x.key = y.key) FULL OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x FULL OUTER JOIN T1 y ON (x.key = y.key) FULL OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x FULL OUTER JOIN T1 y ON (x.key = y.key) FULL OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; + +SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt)) +FROM (SELECT y.key AS key, count(1) AS cnt + FROM T2 x FULL OUTER JOIN T1 y ON (x.key = y.key) FULL OUTER JOIN T3 z ON (y.key = z.key) + GROUP BY y.key) tmp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer5.q new file mode 100644 index 0000000000000..ac836c0bfdc91 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer5.q @@ -0,0 +1,79 @@ +CREATE TABLE T1(key INT, val STRING); +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE T1; +CREATE TABLE T2(key INT, val STRING); +LOAD DATA LOCAL INPATH '../data/files/kv2.txt' INTO TABLE T2; +CREATE TABLE T3(key INT, val STRING); +LOAD DATA LOCAL INPATH '../data/files/kv3.txt' INTO TABLE T3; +CREATE TABLE T4(key INT, val STRING); +LOAD DATA LOCAL INPATH '../data/files/kv5.txt' INTO TABLE T4; + +CREATE TABLE dest_co1(key INT, val STRING); +CREATE TABLE dest_co2(key INT, val STRING); +CREATE TABLE dest_co3(key INT, val STRING); + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 3 MR jobs are needed. +-- When Correlation Optimizer is turned on, only a single MR job is needed. +EXPLAIN +INSERT OVERWRITE TABLE dest_co1 +SELECT b.key, d.val +FROM +(SELECT x.key, x.val FROM T1 x JOIN T2 y ON (x.key = y.key)) b +JOIN +(SELECT m.key, n.val FROM T3 m JOIN T4 n ON (m.key = n.key)) d +ON b.key = d.key; + +INSERT OVERWRITE TABLE dest_co1 +SELECT b.key, d.val +FROM +(SELECT x.key, x.val FROM T1 x JOIN T2 y ON (x.key = y.key)) b +JOIN +(SELECT m.key, n.val FROM T3 m JOIN T4 n ON (m.key = n.key)) d +ON b.key = d.key; + +set hive.optimize.correlation=true; +EXPLAIN +INSERT OVERWRITE TABLE dest_co2 +SELECT b.key, d.val +FROM +(SELECT x.key, x.val FROM T1 x JOIN T2 y ON (x.key = y.key)) b +JOIN +(SELECT m.key, n.val FROM T3 m JOIN T4 n ON (m.key = n.key)) d +ON b.key = d.key; + +INSERT OVERWRITE TABLE dest_co2 +SELECT b.key, d.val +FROM +(SELECT x.key, x.val FROM T1 x JOIN T2 y ON (x.key = y.key)) b +JOIN +(SELECT m.key, n.val FROM T3 m JOIN T4 n ON (m.key = n.key)) d +ON b.key = d.key; + +set hive.optimize.correlation=true; +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask.size=10000000000; +-- Enable hive.auto.convert.join. +EXPLAIN +INSERT OVERWRITE TABLE dest_co3 +SELECT b.key, d.val +FROM +(SELECT x.key, x.val FROM T1 x JOIN T2 y ON (x.key = y.key)) b +JOIN +(SELECT m.key, n.val FROM T3 m JOIN T4 n ON (m.key = n.key)) d +ON b.key = d.key; + +INSERT OVERWRITE TABLE dest_co3 +SELECT b.key, d.val +FROM +(SELECT x.key, x.val FROM T1 x JOIN T2 y ON (x.key = y.key)) b +JOIN +(SELECT m.key, n.val FROM T3 m JOIN T4 n ON (m.key = n.key)) d +ON b.key = d.key; + +-- dest_co1, dest_co2 and dest_co3 should be same +-- SELECT * FROM dest_co1 x ORDER BY x.key, x.val; +-- SELECT * FROM dest_co2 x ORDER BY x.key, x.val; +SELECT SUM(HASH(key)), SUM(HASH(val)) FROM dest_co1; +SELECT SUM(HASH(key)), SUM(HASH(val)) FROM dest_co2; +SELECT SUM(HASH(key)), SUM(HASH(val)) FROM dest_co3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer6.q new file mode 100644 index 0000000000000..89c060919c205 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer6.q @@ -0,0 +1,322 @@ +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 6 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery xx, subquery yy, and xx join yy. +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.cnt; + +SELECT xx.key, xx.cnt, yy.key, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.cnt; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.cnt; + +SELECT xx.key, xx.cnt, yy.key, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.cnt; + +set hive.optimize.correlation=true; +set hive.auto.convert.join=true; +-- Enable hive.auto.convert.join. +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.cnt; + +SELECT xx.key, xx.cnt, yy.key, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.cnt; + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 3 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery yy and xx join yy. +EXPLAIN +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x GROUP BY x.key) yy +ON xx.key=yy.key ORDER BY xx.key, yy.key, yy.cnt; + +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x GROUP BY x.key) yy +ON xx.key=yy.key ORDER BY xx.key, yy.key, yy.cnt; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x GROUP BY x.key) yy +ON xx.key=yy.key ORDER BY xx.key, yy.key, yy.cnt; + +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x GROUP BY x.key) yy +ON xx.key=yy.key ORDER BY xx.key, yy.key, yy.cnt; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery yy and xx join yy. +EXPLAIN +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, yy.key, yy.cnt; + +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, yy.key, yy.cnt; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, yy.key, yy.cnt; + +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key ORDER BY xx.key, yy.key, yy.cnt; + +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery xx and xx join yy. +EXPLAIN +SELECT xx.key, xx.cnt, yy.key +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key; + +SELECT xx.key, xx.cnt, yy.key +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.cnt, yy.key +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key; + +SELECT xx.key, xx.cnt, yy.key +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN src yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery xx and xx join yy join zz. +EXPLAIN +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN src zz ON xx.key=zz.key +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON zz.key=yy.key +ORDER BY xx.key, yy.key, yy.cnt; + +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN src zz ON xx.key=zz.key +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON zz.key=yy.key +ORDER BY xx.key, yy.key, yy.cnt; + +set hive.optimize.correlation=true; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery yy and xx join yy join zz. +EXPLAIN +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN src zz ON xx.key=zz.key +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON zz.key=yy.key +ORDER BY xx.key, yy.key, yy.cnt; + +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN src zz ON xx.key=zz.key +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON zz.key=yy.key +ORDER BY xx.key, yy.key, yy.cnt; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 4 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery yy and xx join yy join zz. +EXPLAIN +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key JOIN src zz +ON yy.key=zz.key ORDER BY xx.key, yy.key, yy.cnt; + +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key JOIN src zz +ON yy.key=zz.key ORDER BY xx.key, yy.key, yy.cnt; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key JOIN src zz +ON yy.key=zz.key ORDER BY xx.key, yy.key, yy.cnt; + +SELECT xx.key, yy.key, yy.cnt +FROM src1 xx +JOIN +(SELECT x.key as key, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key) yy +ON xx.key=yy.key JOIN src zz +ON yy.key=zz.key ORDER BY xx.key, yy.key, yy.cnt; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 6 MR jobs are needed. +-- When Correlation Optimizer is turned on, 2 MR jobs are needed. +-- The first job will evaluate subquery tmp and tmp join z. +EXPLAIN +SELECT tmp.key, tmp.sum1, tmp.sum2, z.key, z.value +FROM +(SELECT xx.key as key, sum(xx.cnt) as sum1, sum(yy.cnt) as sum2 + FROM (SELECT x.key as key, count(*) AS cnt FROM src x group by x.key) xx + JOIN (SELECT y.key as key, count(*) AS cnt FROM src1 y group by y.key) yy + ON (xx.key=yy.key) GROUP BY xx.key) tmp +JOIN src z ON tmp.key=z.key +ORDER BY tmp.key, tmp.sum1, tmp.sum2, z.key, z.value; + +SELECT tmp.key, tmp.sum1, tmp.sum2, z.key, z.value +FROM +(SELECT xx.key as key, sum(xx.cnt) as sum1, sum(yy.cnt) as sum2 + FROM (SELECT x.key as key, count(*) AS cnt FROM src x group by x.key) xx + JOIN (SELECT y.key as key, count(*) AS cnt FROM src1 y group by y.key) yy + ON (xx.key=yy.key) GROUP BY xx.key) tmp +JOIN src z ON tmp.key=z.key +ORDER BY tmp.key, tmp.sum1, tmp.sum2, z.key, z.value; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT tmp.key, tmp.sum1, tmp.sum2, z.key, z.value +FROM +(SELECT xx.key as key, sum(xx.cnt) as sum1, sum(yy.cnt) as sum2 + FROM (SELECT x.key as key, count(*) AS cnt FROM src x group by x.key) xx + JOIN (SELECT y.key as key, count(*) AS cnt FROM src1 y group by y.key) yy + ON (xx.key=yy.key) GROUP BY xx.key) tmp +JOIN src z ON tmp.key=z.key +ORDER BY tmp.key, tmp.sum1, tmp.sum2, z.key, z.value; + +SELECT tmp.key, tmp.sum1, tmp.sum2, z.key, z.value +FROM +(SELECT xx.key as key, sum(xx.cnt) as sum1, sum(yy.cnt) as sum2 + FROM (SELECT x.key as key, count(*) AS cnt FROM src x group by x.key) xx + JOIN (SELECT y.key as key, count(*) AS cnt FROM src1 y group by y.key) yy + ON (xx.key=yy.key) GROUP BY xx.key) tmp +JOIN src z ON tmp.key=z.key +ORDER BY tmp.key, tmp.sum1, tmp.sum2, z.key, z.value; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is turned off, 6 MR jobs are needed. +-- When Correlation Optimizer is turned on, 4 MR jobs are needed. +-- 2 MR jobs are used to evaluate yy, 1 MR is used to evaluate xx and xx join yy. +-- The last MR is used for ordering. +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.value, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, x.value as value, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key, x.value) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value, yy.cnt; + +SELECT xx.key, xx.cnt, yy.key, yy.value, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, x.value as value, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key, x.value) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value, yy.cnt; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.value, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, x.value as value, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key, x.value) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value, yy.cnt; + +SELECT xx.key, xx.cnt, yy.key, yy.value, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, x.value as value, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key, x.value) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value, yy.cnt; + +set hive.optimize.correlation=true; +set hive.auto.convert.join=true; +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.value, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, x.value as value, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key, x.value) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value, yy.cnt; + +SELECT xx.key, xx.cnt, yy.key, yy.value, yy.cnt +FROM +(SELECT x.key as key, count(1) as cnt FROM src1 x JOIN src1 y ON (x.key = y.key) group by x.key) xx +JOIN +(SELECT x.key as key, x.value as value, count(1) as cnt FROM src x JOIN src y ON (x.key = y.key) group by x.key, x.value) yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value, yy.cnt; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer7.q new file mode 100644 index 0000000000000..3ba83f489ccc3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer7.q @@ -0,0 +1,77 @@ +set hive.auto.convert.join=true; + +set hive.optimize.correlation=false; +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.value +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src x JOIN src1 y ON (x.key = y.key) + GROUP BY x.key) xx +JOIN src1 yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value; + +SELECT xx.key, xx.cnt, yy.key, yy.value +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src x JOIN src1 y ON (x.key = y.key) + GROUP BY x.key) xx +JOIN src1 yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value; + + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.value +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src x JOIN src1 y ON (x.key = y.key) + GROUP BY x.key) xx +JOIN src1 yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value; + +SELECT xx.key, xx.cnt, yy.key, yy.value +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src x JOIN src1 y ON (x.key = y.key) + GROUP BY x.key) xx +JOIN src1 yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000000000; + +set hive.optimize.correlation=false; +-- Without correlation optimizer, we will have 3 MR jobs. +-- The first one is a MapJoin and Aggregation (in the Reduce Phase). +-- The second one is another MapJoin. The third one is for ordering. +-- With the correlation optimizer, right now, we have +-- 2 MR jobs. The first one will evaluate the sub-query xx and the join of +-- xx and yy. The second one will do the ORDER BY. +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.value +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src x JOIN src1 y ON (x.key = y.key) + GROUP BY x.key) xx +JOIN src1 yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value; + +SELECT xx.key, xx.cnt, yy.key, yy.value +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src x JOIN src1 y ON (x.key = y.key) + GROUP BY x.key) xx +JOIN src1 yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key, xx.cnt, yy.key, yy.value +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src x JOIN src1 y ON (x.key = y.key) + GROUP BY x.key) xx +JOIN src1 yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value; + +SELECT xx.key, xx.cnt, yy.key, yy.value +FROM (SELECT x.key AS key, count(1) AS cnt + FROM src x JOIN src1 y ON (x.key = y.key) + GROUP BY x.key) xx +JOIN src1 yy +ON xx.key=yy.key ORDER BY xx.key, xx.cnt, yy.key, yy.value; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer8.q new file mode 100644 index 0000000000000..4e79d80f11bbb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer8.q @@ -0,0 +1,110 @@ +set hive.auto.convert.join=false; +set hive.optimize.correlation=false; +-- When the Correlation Optimizer is turned off, this query will be evaluated by +-- 4 MR jobs. +-- When the Correlation Optimizer is turned on, because both inputs of the +-- UnionOperator are correlated, we can use 2 MR jobs to evaluate this query. +-- The first MR job will evaluate subquery subq1 and subq1 join x. The second +-- MR is for ordering. +EXPLAIN +SELECT x.key, x.value, subq1.cnt +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.key as key, count(1) as cnt from src x1 where x1.key > 100 group by x1.key +) subq1 +JOIN src1 x ON (x.key = subq1.key) ORDER BY x.key, x.value, subq1.cnt; + +SELECT x.key, x.value, subq1.cnt +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.key as key, count(1) as cnt from src x1 where x1.key > 100 group by x1.key +) subq1 +JOIN src1 x ON (x.key = subq1.key) ORDER BY x.key, x.value, subq1.cnt; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT x.key, x.value, subq1.cnt +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.key as key, count(1) as cnt from src x1 where x1.key > 100 group by x1.key +) subq1 +JOIN src1 x ON (x.key = subq1.key) ORDER BY x.key, x.value, subq1.cnt; + +SELECT x.key, x.value, subq1.cnt +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.key as key, count(1) as cnt from src x1 where x1.key > 100 group by x1.key +) subq1 +JOIN src1 x ON (x.key = subq1.key) ORDER BY x.key, x.value, subq1.cnt; + +set hive.optimize.correlation=false; +-- When the Correlation Optimizer is turned off, this query will be evaluated by +-- 4 MR jobs. +-- When the Correlation Optimizer is turned on, because both inputs of the +-- UnionOperator are correlated, we can use 2 MR jobs to evaluate this query. +-- The first MR job will evaluate subquery subq1 and subq1 join x. The second +-- MR is for ordering. +EXPLAIN +SELECT subq1.key, subq1.cnt, x.key, x.value +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.value as key, count(1) as cnt from src1 x1 where x1.key > 100 group by x1.value +) subq1 +LEFT OUTER JOIN src1 x ON (x.key = subq1.key) ORDER BY subq1.key, subq1.cnt, x.key, x.value; + +SELECT subq1.key, subq1.cnt, x.key, x.value +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.value as key, count(1) as cnt from src1 x1 where x1.key > 100 group by x1.value +) subq1 +LEFT OUTER JOIN src1 x ON (x.key = subq1.key) ORDER BY subq1.key, subq1.cnt, x.key, x.value; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT subq1.key, subq1.cnt, x.key, x.value +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.value as key, count(1) as cnt from src1 x1 where x1.key > 100 group by x1.value +) subq1 +LEFT OUTER JOIN src1 x ON (x.key = subq1.key) ORDER BY subq1.key, subq1.cnt, x.key, x.value; + +SELECT subq1.key, subq1.cnt, x.key, x.value +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.value as key, count(1) as cnt from src1 x1 where x1.key > 100 group by x1.value +) subq1 +LEFT OUTER JOIN src1 x ON (x.key = subq1.key) ORDER BY subq1.key, subq1.cnt, x.key, x.value; + +set hive.optimize.correlation=true; +-- When the Correlation Optimizer is turned on, because a input of UnionOperator is +-- not correlated, we cannot handle this case right now. So, this query will not be +-- optimized. +EXPLAIN +SELECT x.key, x.value, subq1.cnt +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.key as key, count(1) as cnt from src x1 where x1.key > 100 group by x1.key, x1.value +) subq1 +JOIN src1 x ON (x.key = subq1.key) ORDER BY x.key, x.value, subq1.cnt; + +set hive.optimize.correlation=true; +-- When the Correlation Optimizer is turned on, because a input of UnionOperator is +-- not correlated, we cannot handle this case right now. So, this query will not be +-- optimized. +EXPLAIN +SELECT subq1.key, subq1.value, x.key, x.value +FROM +( SELECT cast(x.key as INT) as key, count(1) as value from src x where x.key < 20 group by x.key + UNION ALL + SELECT count(1) as key, cast(x1.key as INT) as value from src x1 where x1.key > 100 group by x1.key +) subq1 +FULL OUTER JOIN src1 x ON (x.key = subq1.key) ORDER BY subq1.key, subq1.value, x.key, x.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer9.q new file mode 100644 index 0000000000000..6169a30c05146 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/correlationoptimizer9.q @@ -0,0 +1,71 @@ +CREATE TABLE tmp(c1 INT, c2 INT, c3 STRING, c4 STRING); + +set hive.auto.convert.join=false; + +INSERT OVERWRITE TABLE tmp +SELECT x.key, y.key, x.value, y.value FROM src x JOIN src y ON (x.key = y.key); + +set hive.optimize.correlation=false; +EXPLAIN +SELECT xx.key, yy.key, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c1) xx +JOIN +(SELECT x1.c2 AS key, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c2) yy +ON (xx.key = yy.key) ORDER BY xx.key, yy.key, xx.cnt, yy.cnt; + +SELECT xx.key, yy.key, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c1) xx +JOIN +(SELECT x1.c2 AS key, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c2) yy +ON (xx.key = yy.key) ORDER BY xx.key, yy.key, xx.cnt, yy.cnt; + +set hive.optimize.correlation=true; +-- The merged table scan should be able to load both c1 and c2 +EXPLAIN +SELECT xx.key, yy.key, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c1) xx +JOIN +(SELECT x1.c2 AS key, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c2) yy +ON (xx.key = yy.key) ORDER BY xx.key, yy.key, xx.cnt, yy.cnt; + +SELECT xx.key, yy.key, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c1) xx +JOIN +(SELECT x1.c2 AS key, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c2) yy +ON (xx.key = yy.key) ORDER BY xx.key, yy.key, xx.cnt, yy.cnt; + +set hive.optimize.correlation=false; +EXPLAIN +SELECT xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key1, x.c3 AS key2, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c1, x.c3) xx +JOIN +(SELECT x1.c1 AS key1, x1.c3 AS key2, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c1, x1.c3) yy +ON (xx.key1 = yy.key1 AND xx.key2 == yy.key2) ORDER BY xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt; + +SELECT xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key1, x.c3 AS key2, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c1, x.c3) xx +JOIN +(SELECT x1.c1 AS key1, x1.c3 AS key2, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c1, x1.c3) yy +ON (xx.key1 = yy.key1 AND xx.key2 == yy.key2) ORDER BY xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt; + +set hive.optimize.correlation=true; +EXPLAIN +SELECT xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key1, x.c3 AS key2, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c1, x.c3) xx +JOIN +(SELECT x1.c1 AS key1, x1.c3 AS key2, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c1, x1.c3) yy +ON (xx.key1 = yy.key1 AND xx.key2 == yy.key2) ORDER BY xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt; + +SELECT xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt +FROM +(SELECT x.c1 AS key1, x.c3 AS key2, count(1) AS cnt FROM tmp x WHERE x.c1 < 120 GROUP BY x.c1, x.c3) xx +JOIN +(SELECT x1.c1 AS key1, x1.c3 AS key2, count(1) AS cnt FROM tmp x1 WHERE x1.c2 > 100 GROUP BY x1.c1, x1.c3) yy +ON (xx.key1 = yy.key1 AND xx.key2 == yy.key2) ORDER BY xx.key1, xx.key2, yy.key1, yy.key2, xx.cnt, yy.cnt; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/count.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/count.q new file mode 100644 index 0000000000000..0d66a5ec345e6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/count.q @@ -0,0 +1,17 @@ +create table abcd (a int, b int, c int, d int); +LOAD DATA LOCAL INPATH '../data/files/in4.txt' INTO TABLE abcd; + +select * from abcd; +set hive.map.aggr=true; +explain select a, count(distinct b), count(distinct c), sum(d) from abcd group by a; +select a, count(distinct b), count(distinct c), sum(d) from abcd group by a; + +explain select count(1), count(*), count(a), count(b), count(c), count(d), count(distinct a), count(distinct b), count(distinct c), count(distinct d), count(distinct a,b), count(distinct b,c), count(distinct c,d), count(distinct a,d), count(distinct a,c), count(distinct b,d), count(distinct a,b,c), count(distinct b,c,d), count(distinct a,c,d), count(distinct a,b,d), count(distinct a,b,c,d) from abcd; +select count(1), count(*), count(a), count(b), count(c), count(d), count(distinct a), count(distinct b), count(distinct c), count(distinct d), count(distinct a,b), count(distinct b,c), count(distinct c,d), count(distinct a,d), count(distinct a,c), count(distinct b,d), count(distinct a,b,c), count(distinct b,c,d), count(distinct a,c,d), count(distinct a,b,d), count(distinct a,b,c,d) from abcd; + +set hive.map.aggr=false; +explain select a, count(distinct b), count(distinct c), sum(d) from abcd group by a; +select a, count(distinct b), count(distinct c), sum(d) from abcd group by a; + +explain select count(1), count(*), count(a), count(b), count(c), count(d), count(distinct a), count(distinct b), count(distinct c), count(distinct d), count(distinct a,b), count(distinct b,c), count(distinct c,d), count(distinct a,d), count(distinct a,c), count(distinct b,d), count(distinct a,b,c), count(distinct b,c,d), count(distinct a,c,d), count(distinct a,b,d), count(distinct a,b,c,d) from abcd; +select count(1), count(*), count(a), count(b), count(c), count(d), count(distinct a), count(distinct b), count(distinct c), count(distinct d), count(distinct a,b), count(distinct b,c), count(distinct c,d), count(distinct a,d), count(distinct a,c), count(distinct b,d), count(distinct a,b,c), count(distinct b,c,d), count(distinct a,c,d), count(distinct a,b,d), count(distinct a,b,c,d) from abcd; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cp_mj_rc.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cp_mj_rc.q new file mode 100644 index 0000000000000..62d38e3caae58 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cp_mj_rc.q @@ -0,0 +1,7 @@ +create table src_six_columns (k1 string, v1 string, k2 string, v2 string, k3 string, v3 string) stored as rcfile; +insert overwrite table src_six_columns select value, value, key, value, value, value from src; +create table src_two_columns (k1 string, v1 string) stored as rcfile; +insert overwrite table src_two_columns select key, value from src; +SELECT /*+ MAPJOIN(six) */ six.*, two.k1 from src_six_columns six join src_two_columns two on (six.k3=two.k1); + +SELECT /*+ MAPJOIN(two) */ two.*, six.k3 from src_six_columns six join src_two_columns two on (six.k3=two.k1); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_1.q new file mode 100644 index 0000000000000..f348e5902263a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_1.q @@ -0,0 +1,29 @@ +set fs.default.name=invalidscheme:///; + +CREATE TABLE table1 (a STRING, b STRING) STORED AS TEXTFILE; +DESCRIBE table1; +DESCRIBE EXTENDED table1; + +CREATE TABLE IF NOT EXISTS table1 (a STRING, b STRING) STORED AS TEXTFILE; + +CREATE TABLE IF NOT EXISTS table2 (a STRING, b INT) STORED AS TEXTFILE; +DESCRIBE table2; +DESCRIBE EXTENDED table2; + +CREATE TABLE table3 (a STRING, b STRING) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' +STORED AS TEXTFILE; +DESCRIBE table3; +DESCRIBE EXTENDED table3; + +CREATE TABLE table4 (a STRING, b STRING) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' +STORED AS SEQUENCEFILE; +DESCRIBE table4; +DESCRIBE EXTENDED table4; + +CREATE TABLE table5 (a STRING, b STRING) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' +STORED AS RCFILE; +DESCRIBE table5; +DESCRIBE EXTENDED table5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_alter_list_bucketing_table1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_alter_list_bucketing_table1.q new file mode 100644 index 0000000000000..b51b238a2d0e2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_alter_list_bucketing_table1.q @@ -0,0 +1,40 @@ +set hive.mapred.supports.subdirectories=true; + +-- Test stored as directories +-- it covers a few cases + +-- 1. create a table with stored as directories +CREATE TABLE if not exists stored_as_dirs_multiple (col1 STRING, col2 int, col3 STRING) +SKEWED BY (col1, col2) ON (('s1',1), ('s3',3), ('s13',13), ('s78',78)) stored as DIRECTORIES; +describe formatted stored_as_dirs_multiple; + +-- 2. turn off stored as directories but table is still a skewed table +alter table stored_as_dirs_multiple not stored as DIRECTORIES; +describe formatted stored_as_dirs_multiple; + +-- 3. turn off skewed +alter table stored_as_dirs_multiple not skewed; +describe formatted stored_as_dirs_multiple; + +-- 4. alter a table to stored as directories +CREATE TABLE stored_as_dirs_single (key STRING, value STRING); +alter table stored_as_dirs_single SKEWED BY (key) ON ('1','5','6') +stored as DIRECTORIES; +describe formatted stored_as_dirs_single; + +-- 5. turn off skewed should turn off stored as directories too +alter table stored_as_dirs_single not skewed; +describe formatted stored_as_dirs_single; + +-- 6. turn on stored as directories again +alter table stored_as_dirs_single SKEWED BY (key) ON ('1','5','6') +stored as DIRECTORIES; +describe formatted stored_as_dirs_single; + +-- 7. create table like +create table stored_as_dirs_single_like like stored_as_dirs_single; +describe formatted stored_as_dirs_single_like; + +-- cleanup +drop table stored_as_dirs_single; +drop table stored_as_dirs_multiple; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_big_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_big_view.q new file mode 100644 index 0000000000000..49caacc3e2019 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_big_view.q @@ -0,0 +1,246 @@ +DROP VIEW big_view; + +-- Define a view with long SQL text to test metastore and other limits. + +CREATE VIEW big_view AS SELECT +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AS a, +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', +'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +FROM src; + +SELECT a FROM big_view +LIMIT 1; + +DROP VIEW big_view; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_default_prop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_default_prop.q new file mode 100644 index 0000000000000..26d7332ecb88c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_default_prop.q @@ -0,0 +1,10 @@ +set hive.table.parameters.default=p1=v1,P2=v21=v22=v23; +CREATE TABLE table_p1 (a STRING); +DESC EXTENDED table_p1; + +set hive.table.parameters.default=p3=v3; +CREATE TABLE table_p2 LIKE table_p1; +DESC EXTENDED table_p2; + +CREATE TABLE table_p3 AS SELECT * FROM table_p1; +DESC EXTENDED table_p3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_escape.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_escape.q new file mode 100644 index 0000000000000..49f7c5fe601aa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_escape.q @@ -0,0 +1,10 @@ +CREATE TABLE table1 (a STRING, b STRING) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ESCAPED BY '\\' +STORED AS TEXTFILE; + +DESCRIBE table1; +DESCRIBE EXTENDED table1; + +INSERT OVERWRITE TABLE table1 SELECT key, '\\\t\\' FROM src WHERE key = 86; + +SELECT * FROM table1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_genericudaf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_genericudaf.q new file mode 100644 index 0000000000000..b2bc0423e8b2a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_genericudaf.q @@ -0,0 +1,17 @@ +EXPLAIN +CREATE TEMPORARY FUNCTION test_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage'; + +CREATE TEMPORARY FUNCTION test_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage'; + +EXPLAIN +SELECT + test_avg(1), + test_avg(substr(value,5)) +FROM src; + +SELECT + test_avg(1), + test_avg(substr(value,5)) +FROM src; + +DROP TEMPORARY FUNCTIOn test_avg; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_genericudf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_genericudf.q new file mode 100644 index 0000000000000..1d43f30e8e150 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_genericudf.q @@ -0,0 +1,21 @@ +EXPLAIN +CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate'; + +CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate'; + +CREATE TABLE dest1(c1 STRING, c2 STRING, c3 STRING, c4 STRING, c5 STRING, c6 STRING, c7 STRING); + +FROM src +INSERT OVERWRITE TABLE dest1 +SELECT + test_translate('abc', 'a', 'b'), + test_translate('abc', 'ab', 'bc'), + test_translate(NULL, 'a', 'b'), + test_translate('a', NULL, 'b'), + test_translate('a', 'a', NULL), + test_translate('abc', 'ab', 'b'), + test_translate('abc', 'a', 'ab'); + +SELECT dest1.* FROM dest1 LIMIT 1; + +DROP TEMPORARY FUNCTION test_translate; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_insert_outputformat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_insert_outputformat.q new file mode 100644 index 0000000000000..f18d68866a8c6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_insert_outputformat.q @@ -0,0 +1,30 @@ + + +CREATE TABLE table_test_output_format(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'; + +FROM src +INSERT OVERWRITE TABLE table_test_output_format SELECT src.key, src.value LIMIT 10; +describe table_test_output_format; + + + +CREATE TABLE table_test_output_format_sequencefile(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileOutputFormat'; + +FROM src +INSERT OVERWRITE TABLE table_test_output_format_sequencefile SELECT src.key, src.value LIMIT 10; +describe table_test_output_format_sequencefile; + + + +CREATE TABLE table_test_output_format_hivesequencefile(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'; + +FROM src +INSERT OVERWRITE TABLE table_test_output_format_hivesequencefile SELECT src.key, src.value LIMIT 10; +describe table_test_output_format_hivesequencefile; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like.q new file mode 100644 index 0000000000000..cb4d6578af476 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like.q @@ -0,0 +1,35 @@ + + + + +CREATE TABLE table1 (a STRING, b STRING) STORED AS TEXTFILE; +DESCRIBE FORMATTED table1; + +CREATE TABLE table2 LIKE table1; +DESCRIBE FORMATTED table2; + +CREATE TABLE IF NOT EXISTS table2 LIKE table1; + +CREATE EXTERNAL TABLE IF NOT EXISTS table2 LIKE table1; + +CREATE EXTERNAL TABLE IF NOT EXISTS table3 LIKE table1; +DESCRIBE FORMATTED table3; + +INSERT OVERWRITE TABLE table1 SELECT key, value FROM src WHERE key = 86; +INSERT OVERWRITE TABLE table2 SELECT key, value FROM src WHERE key = 100; + +SELECT * FROM table1; +SELECT * FROM table2; + +CREATE EXTERNAL TABLE table4 (a INT) LOCATION '${system:test.src.data.dir}/files/ext_test'; +CREATE EXTERNAL TABLE table5 LIKE table4 LOCATION '${system:test.src.data.dir}/files/ext_test'; + +SELECT * FROM table4; +SELECT * FROM table5; + +DROP TABLE table5; +SELECT * FROM table4; +DROP TABLE table4; + +CREATE EXTERNAL TABLE table4 (a INT) LOCATION '${system:test.src.data.dir}/files/ext_test'; +SELECT * FROM table4; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like2.q new file mode 100644 index 0000000000000..146467b2cd2c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like2.q @@ -0,0 +1,9 @@ +-- Tests the copying over of Table Parameters according to a HiveConf setting +-- when doing a CREATE TABLE LIKE. + +CREATE TABLE table1(a INT, b STRING); +ALTER TABLE table1 SET TBLPROPERTIES ('a'='1', 'b'='2', 'c'='3', 'd' = '4'); + +SET hive.ddl.createtablelike.properties.whitelist=a,c,D; +CREATE TABLE table2 LIKE table1; +DESC FORMATTED table2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like_tbl_props.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like_tbl_props.q new file mode 100644 index 0000000000000..8f951d1dda446 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like_tbl_props.q @@ -0,0 +1,35 @@ +-- Test that CREATE TABLE LIKE commands can take explicit table properties + +CREATE TABLE test_table LIKE src TBLPROPERTIES('key'='value'); + +DESC FORMATTED test_table; + +set hive.table.parameters.default=key1=value1; + +--Test that CREATE TABLE LIKE commands can take default table properties + +CREATE TABLE test_table1 LIKE src; + +DESC FORMATTED test_table1; + +-- Test that CREATE TABLE LIKE commands can take default and explicit table properties + +CREATE TABLE test_table2 LIKE src TBLPROPERTIES('key2' = 'value2'); + +DESC FORMATTED test_table2; + +set hive.ddl.createtablelike.properties.whitelist=key2; + +-- Test that properties inherited are overwritten by explicitly set ones + +CREATE TABLE test_table3 LIKE test_table2 TBLPROPERTIES('key2' = 'value3'); + +DESC FORMATTED test_table3; + +--Test that CREATE TALBE LIKE on a view can take explicit table properties + +CREATE VIEW test_view (key, value) AS SELECT * FROM src; + +CREATE TABLE test_table4 LIKE test_view TBLPROPERTIES('key'='value'); + +DESC FORMATTED test_table4; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like_view.q new file mode 100644 index 0000000000000..f0bf58596256e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_like_view.q @@ -0,0 +1,39 @@ +DROP TABLE IF EXISTS table1; +DROP TABLE IF EXISTS table2; +DROP TABLE IF EXISTS table3; +DROP VIEW IF EXISTS view1; + +CREATE TABLE table1 (a STRING, b STRING) STORED AS TEXTFILE; +DESCRIBE table1; +DESCRIBE FORMATTED table1; + +CREATE VIEW view1 AS SELECT * FROM table1; + +CREATE TABLE table2 LIKE view1; +DESCRIBE table2; +DESCRIBE FORMATTED table2; + +CREATE TABLE IF NOT EXISTS table2 LIKE view1; + +CREATE EXTERNAL TABLE IF NOT EXISTS table2 LIKE view1; + +CREATE EXTERNAL TABLE IF NOT EXISTS table3 LIKE view1; +DESCRIBE table3; +DESCRIBE FORMATTED table3; + +INSERT OVERWRITE TABLE table1 SELECT key, value FROM src WHERE key = 86; +INSERT OVERWRITE TABLE table2 SELECT key, value FROM src WHERE key = 100; + +SELECT * FROM table1 order by a, b; +SELECT * FROM table2 order by a, b; + +DROP TABLE table1; +DROP TABLE table2; +DROP VIEW view1; + +-- check partitions +create view view1 partitioned on (ds, hr) as select * from srcpart; +create table table1 like view1; +describe formatted table1; +DROP TABLE table1; +DROP VIEW view1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_merge_compressed.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_merge_compressed.q new file mode 100644 index 0000000000000..4418b3430affc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_merge_compressed.q @@ -0,0 +1,24 @@ +create table src_rc_merge_test(key int, value string) stored as rcfile; + +load data local inpath '../data/files/smbbucket_1.rc' into table src_rc_merge_test; + +set hive.exec.compress.output = true; + +create table tgt_rc_merge_test(key int, value string) stored as rcfile; +insert into table tgt_rc_merge_test select * from src_rc_merge_test; +insert into table tgt_rc_merge_test select * from src_rc_merge_test; + +show table extended like `tgt_rc_merge_test`; + +select count(1) from tgt_rc_merge_test; +select sum(hash(key)), sum(hash(value)) from tgt_rc_merge_test; + +alter table tgt_rc_merge_test concatenate; + +show table extended like `tgt_rc_merge_test`; + +select count(1) from tgt_rc_merge_test; +select sum(hash(key)), sum(hash(value)) from tgt_rc_merge_test; + +drop table src_rc_merge_test; +drop table tgt_rc_merge_test; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_nested_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_nested_type.q new file mode 100644 index 0000000000000..2debd0d71d224 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_nested_type.q @@ -0,0 +1,16 @@ + + +CREATE TABLE table1 ( + a STRING, + b ARRAY, + c ARRAY>, + d MAP> + ) STORED AS TEXTFILE; +DESCRIBE table1; +DESCRIBE EXTENDED table1; + +LOAD DATA LOCAL INPATH '../data/files/create_nested_type.txt' OVERWRITE INTO TABLE table1; + +SELECT * from table1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_or_replace_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_or_replace_view.q new file mode 100644 index 0000000000000..a8f59b7f05354 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_or_replace_view.q @@ -0,0 +1,32 @@ +drop view v; +create view v as select * from srcpart; +describe formatted v; + +-- modifying definition of unpartitioned view +create or replace view v partitioned on (ds, hr) as select * from srcpart; +alter view v add partition (ds='2008-04-08',hr='11'); +alter view v add partition (ds='2008-04-08',hr='12'); +select * from v where value='val_409' and ds='2008-04-08' and hr='11'; +describe formatted v; +show partitions v; + +-- altering partitioned view 1 +create or replace view v partitioned on (ds, hr) as select value, ds, hr from srcpart; +select * from v where value='val_409' and ds='2008-04-08' and hr='11'; +describe formatted v; +show partitions v; + +-- altering partitioned view 2 +create or replace view v partitioned on (ds, hr) as select key, value, ds, hr from srcpart; +select * from v where value='val_409' and ds='2008-04-08' and hr='11'; +describe formatted v; +show partitions v; +drop view v; + +-- updating to fix view with invalid definition +create table srcpart_temp like srcpart; +create view v partitioned on (ds, hr) as select * from srcpart_temp; +drop table srcpart_temp; -- v is now invalid +create or replace view v partitioned on (ds, hr) as select * from srcpart; +describe formatted v; +drop view v; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_skewed_table1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_skewed_table1.q new file mode 100644 index 0000000000000..5d3a48acb4b3a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_skewed_table1.q @@ -0,0 +1,10 @@ +set hive.mapred.supports.subdirectories=true; +CREATE TABLE list_bucket_single (key STRING, value STRING) SKEWED BY (key) ON ('1','5','6'); +CREATE TABLE list_bucket_single_2 (key STRING, value STRING) SKEWED BY (key) ON ((1),(5),(6)); +CREATE TABLE list_bucket_multiple (col1 STRING, col2 int, col3 STRING) SKEWED BY (col1, col2) ON (('s1',1), ('s3',3), ('s13',13), ('s78',78)); +describe formatted list_bucket_single_2; +describe formatted list_bucket_single; +describe formatted list_bucket_multiple; +drop table list_bucket_single; +drop table list_bucket_multiple; +drop table list_bucket_single_2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_struct_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_struct_table.q new file mode 100644 index 0000000000000..dd5aa63e4578a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_struct_table.q @@ -0,0 +1,12 @@ + +create table abc(strct struct) +row format delimited + fields terminated by '\t' + collection items terminated by '\001'; + +load data local inpath '../data/files/kv1.txt' +overwrite into table abc; + +SELECT strct, strct.a, strct.b FROM abc LIMIT 10; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_udaf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_udaf.q new file mode 100644 index 0000000000000..a6bd7a0846da9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_udaf.q @@ -0,0 +1,19 @@ +EXPLAIN +CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax'; + +CREATE TEMPORARY FUNCTION test_max AS 'org.apache.hadoop.hive.ql.udf.UDAFTestMax'; + +CREATE TABLE dest1(col INT); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT test_max(length(src.value)); + +SELECT dest1.* FROM dest1; + +-- cover all the other value types: +SELECT test_max(CAST(length(src.value) AS SMALLINT)) FROM src; +SELECT test_max(CAST(length(src.value) AS BIGINT)) FROM src; +SELECT test_max(CAST(length(src.value) AS DOUBLE)) FROM src; +SELECT test_max(CAST(length(src.value) AS FLOAT)) FROM src; +SELECT test_max(substr(src.value,5)) FROM src; + +DROP TEMPORARY FUNCTION test_max; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_union_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_union_table.q new file mode 100644 index 0000000000000..bb0e5b989d54d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_union_table.q @@ -0,0 +1,10 @@ +explain create table abc(mydata uniontype,struct>, +strct struct); + +create table abc(mydata uniontype,struct>, +strct struct); + +load data local inpath '../data/files/union_input.txt' +overwrite into table abc; + +SELECT * FROM abc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view.q new file mode 100644 index 0000000000000..e08274c9e994f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view.q @@ -0,0 +1,247 @@ +DROP VIEW view1; +DROP VIEW view2; +DROP VIEW view3; +DROP VIEW view4; +DROP VIEW view5; +DROP VIEW view6; +DROP VIEW view7; +DROP VIEW view8; +DROP VIEW view9; +DROP VIEW view10; +DROP VIEW view11; +DROP VIEW view12; +DROP VIEW view13; +DROP VIEW view14; +DROP VIEW view15; +DROP VIEW view16; +DROP TEMPORARY FUNCTION test_translate; +DROP TEMPORARY FUNCTION test_max; +DROP TEMPORARY FUNCTION test_explode; + + +SELECT * FROM src WHERE key=86; +CREATE VIEW view1 AS SELECT value FROM src WHERE key=86; +CREATE VIEW view2 AS SELECT * FROM src; +CREATE VIEW view3(valoo) +TBLPROPERTIES ("fear" = "factor") +AS SELECT upper(value) FROM src WHERE key=86; +SELECT * from view1; +SELECT * from view2 where key=18; +SELECT * from view3; + +-- test EXPLAIN output for CREATE VIEW +EXPLAIN +CREATE VIEW view0(valoo) AS SELECT upper(value) FROM src WHERE key=86; + +-- make sure EXPLAIN works with a query which references a view +EXPLAIN +SELECT * from view2 where key=18; + +SHOW TABLES 'view.*'; +DESCRIBE view1; +DESCRIBE EXTENDED view1; +DESCRIBE FORMATTED view1; +DESCRIBE view2; +DESCRIBE EXTENDED view2; +DESCRIBE FORMATTED view2; +DESCRIBE view3; +DESCRIBE EXTENDED view3; +DESCRIBE FORMATTED view3; + +ALTER VIEW view3 SET TBLPROPERTIES ("biggest" = "loser"); +DESCRIBE EXTENDED view3; +DESCRIBE FORMATTED view3; + +CREATE TABLE table1 (key int); + +-- use DESCRIBE EXTENDED on a base table and an external table as points +-- of comparison for view descriptions +DESCRIBE EXTENDED table1; +DESCRIBE EXTENDED src1; + +-- use DESCRIBE EXTENDED on a base table as a point of comparison for +-- view descriptions +DESCRIBE EXTENDED table1; + + +INSERT OVERWRITE TABLE table1 SELECT key FROM src WHERE key = 86; + +SELECT * FROM table1; +CREATE VIEW view4 AS SELECT * FROM table1; +SELECT * FROM view4; +DESCRIBE view4; +ALTER TABLE table1 ADD COLUMNS (value STRING); +SELECT * FROM table1; +SELECT * FROM view4; +DESCRIBE table1; +DESCRIBE view4; + +CREATE VIEW view5 AS SELECT v1.key as key1, v2.key as key2 +FROM view4 v1 join view4 v2; +SELECT * FROM view5; +DESCRIBE view5; + +-- verify that column name and comment in DDL portion +-- overrides column alias in SELECT +CREATE VIEW view6(valoo COMMENT 'I cannot spell') AS +SELECT upper(value) as blarg FROM src WHERE key=86; +DESCRIBE view6; + +-- verify that ORDER BY and LIMIT are both supported in view def +CREATE VIEW view7 AS +SELECT * FROM src +WHERE key > 80 AND key < 100 +ORDER BY key, value +LIMIT 10; + +SELECT * FROM view7; + +-- top-level ORDER BY should override the one inside the view +-- (however, the inside ORDER BY should still influence the evaluation +-- of the limit) +SELECT * FROM view7 ORDER BY key DESC, value; + +-- top-level LIMIT should override if lower +SELECT * FROM view7 LIMIT 5; + +-- but not if higher +SELECT * FROM view7 LIMIT 20; + +-- test usage of a function within a view +CREATE TEMPORARY FUNCTION test_translate AS +'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate'; +CREATE VIEW view8(c) AS +SELECT test_translate('abc', 'a', 'b') +FROM table1; +DESCRIBE EXTENDED view8; +DESCRIBE FORMATTED view8; +SELECT * FROM view8; + +-- test usage of a UDAF within a view +CREATE TEMPORARY FUNCTION test_max AS +'org.apache.hadoop.hive.ql.udf.UDAFTestMax'; +set hive.map.aggr=false; +-- disable map-side aggregation +CREATE VIEW view9(m) AS +SELECT test_max(length(value)) +FROM src; +DESCRIBE EXTENDED view9; +DESCRIBE FORMATTED view9; +SELECT * FROM view9; +DROP VIEW view9; +set hive.map.aggr=true; +-- enable map-side aggregation +CREATE VIEW view9(m) AS +SELECT test_max(length(value)) +FROM src; +DESCRIBE EXTENDED view9; +DESCRIBE FORMATTED view9; +SELECT * FROM view9; + +-- test usage of a subselect within a view +CREATE VIEW view10 AS +SELECT slurp.* FROM (SELECT * FROM src WHERE key=86) slurp; +DESCRIBE EXTENDED view10; +DESCRIBE FORMATTED view10; +SELECT * FROM view10; + +-- test usage of a UDTF within a view +CREATE TEMPORARY FUNCTION test_explode AS +'org.apache.hadoop.hive.ql.udf.generic.GenericUDTFExplode'; +CREATE VIEW view11 AS +SELECT test_explode(array(1,2,3)) AS (boom) +FROM table1; +DESCRIBE EXTENDED view11; +DESCRIBE FORMATTED view11; +SELECT * FROM view11; + +-- test usage of LATERAL within a view +CREATE VIEW view12 AS +SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol; +DESCRIBE EXTENDED view12; +DESCRIBE FORMATTED view12; +SELECT * FROM view12 +ORDER BY key ASC, myCol ASC LIMIT 1; + +-- test usage of LATERAL with a view as the LHS +SELECT * FROM view2 LATERAL VIEW explode(array(1,2,3)) myTable AS myCol +ORDER BY key ASC, myCol ASC LIMIT 1; + +-- test usage of TABLESAMPLE within a view +CREATE VIEW view13 AS +SELECT s.key +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 5 ON key) s; +DESCRIBE EXTENDED view13; +DESCRIBE FORMATTED view13; +SELECT * FROM view13 +ORDER BY key LIMIT 12; + +-- test usage of JOIN+UNION+AGG all within same view +CREATE VIEW view14 AS +SELECT unionsrc1.key as k1, unionsrc1.value as v1, + unionsrc2.key as k2, unionsrc2.value as v2 +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2 where s2.key < 10) unionsrc1 +JOIN + (select 'tst1' as key, cast(count(1) as string) as value from src s3 + UNION ALL + select s4.key as key, s4.value as value from src s4 where s4.key < 10) unionsrc2 +ON (unionsrc1.key = unionsrc2.key); +DESCRIBE EXTENDED view14; +DESCRIBE FORMATTED view14; +SELECT * FROM view14 +ORDER BY k1; + +-- test usage of GROUP BY within view +CREATE VIEW view15 AS +SELECT key,COUNT(value) AS value_count +FROM src +GROUP BY key; +DESCRIBE EXTENDED view15; +DESCRIBE FORMATTED view15; +SELECT * FROM view15 +ORDER BY value_count DESC, key +LIMIT 10; + +-- test usage of DISTINCT within view +CREATE VIEW view16 AS +SELECT DISTINCT value +FROM src; +DESCRIBE EXTENDED view16; +DESCRIBE FORMATTED view16; +SELECT * FROM view16 +ORDER BY value +LIMIT 10; + +-- HIVE-2133: DROP TABLE IF EXISTS should ignore a matching view name +DROP TABLE IF EXISTS view16; +DESCRIBE view16; + +-- Likewise, DROP VIEW IF EXISTS should ignore a matching table name +DROP VIEW IF EXISTS table1; +DESCRIBE table1; + +-- this should work since currently we don't track view->table +-- dependencies for implementing RESTRICT + + +DROP VIEW view1; +DROP VIEW view2; +DROP VIEW view3; +DROP VIEW view4; +DROP VIEW view5; +DROP VIEW view6; +DROP VIEW view7; +DROP VIEW view8; +DROP VIEW view9; +DROP VIEW view10; +DROP VIEW view11; +DROP VIEW view12; +DROP VIEW view13; +DROP VIEW view14; +DROP VIEW view15; +DROP VIEW view16; +DROP TEMPORARY FUNCTION test_translate; +DROP TEMPORARY FUNCTION test_max; +DROP TEMPORARY FUNCTION test_explode; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view_partitioned.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view_partitioned.q new file mode 100644 index 0000000000000..5e30f91f4eb78 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view_partitioned.q @@ -0,0 +1,83 @@ +DROP VIEW vp1; +DROP VIEW vp2; +DROP VIEW vp3; + +-- test partitioned view definition +-- (underlying table is not actually partitioned) +CREATE VIEW vp1 +PARTITIONED ON (value) +AS +SELECT key, value +FROM src +WHERE key=86; +DESCRIBE EXTENDED vp1; +DESCRIBE FORMATTED vp1; + +SELECT * FROM vp1; + +SELECT key FROM vp1; + +SELECT value FROM vp1; + +ALTER VIEW vp1 +ADD PARTITION (value='val_86') PARTITION (value='val_xyz'); + +-- should work since we use IF NOT EXISTS +ALTER VIEW vp1 +ADD IF NOT EXISTS PARTITION (value='val_xyz'); + +SHOW PARTITIONS vp1; + +SHOW PARTITIONS vp1 PARTITION(value='val_86'); + +SHOW TABLE EXTENDED LIKE vp1; + +SHOW TABLE EXTENDED LIKE vp1 PARTITION(value='val_86'); + +ALTER VIEW vp1 +DROP PARTITION (value='val_xyz'); + +SET hive.exec.drop.ignorenonexistent=false; + +-- should work since we use IF EXISTS +ALTER VIEW vp1 +DROP IF EXISTS PARTITION (value='val_xyz'); + +SHOW PARTITIONS vp1; + +SET hive.mapred.mode=strict; + +-- Even though no partition predicate is specified in the next query, +-- the WHERE clause inside of the view should satisfy strict mode. +-- In other words, strict only applies to underlying tables +-- (regardless of whether or not the view is partitioned). +SELECT * FROM vp1; + +SET hive.mapred.mode=nonstrict; + +-- test a partitioned view on top of an underlying partitioned table, +-- but with only a suffix of the partitioning columns +CREATE VIEW vp2 +PARTITIONED ON (hr) +AS SELECT * FROM srcpart WHERE key < 10; +DESCRIBE FORMATTED vp2; + +ALTER VIEW vp2 ADD PARTITION (hr='11') PARTITION (hr='12'); +SELECT key FROM vp2 WHERE hr='12' ORDER BY key; + +-- test a partitioned view where the PARTITIONED ON clause references +-- an imposed column name +CREATE VIEW vp3(k,v) +PARTITIONED ON (v) +AS +SELECT key, value +FROM src +WHERE key=86; +DESCRIBE FORMATTED vp3; + +ALTER VIEW vp3 +ADD PARTITION (v='val_86'); + +DROP VIEW vp1; +DROP VIEW vp2; +DROP VIEW vp3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view_translate.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view_translate.q new file mode 100644 index 0000000000000..2199750f42f7e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/create_view_translate.q @@ -0,0 +1,13 @@ +drop view if exists v; +drop view if exists w; + +create view v as select cast(key as string) from src; +describe formatted v; + +create view w as select key, value from ( + select key, value from src +) a; +describe formatted w; + +drop view v; +drop view w; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cross_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cross_join.q new file mode 100644 index 0000000000000..1f888dd47b9e9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/cross_join.q @@ -0,0 +1,6 @@ +-- current +explain select src.key from src join src src2; +-- ansi cross join +explain select src.key from src cross join src src2; +-- appending condition is allowed +explain select src.key from src cross join src src2 on src.key=src2.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ct_case_insensitive.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ct_case_insensitive.q new file mode 100644 index 0000000000000..00e9722087414 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ct_case_insensitive.q @@ -0,0 +1,3 @@ +CREATE TABLE tmp_pyang_bucket3 (userId INT) CLUSTERED BY (userid) INTO 32 BUCKETS; +DROP TABLE tmp_pyang_bucket3; +CREATE TABLE tmp_pyang_bucket3 (userId INT) CLUSTERED BY (userid) SORTED BY (USERID) INTO 32 BUCKETS; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas.q new file mode 100644 index 0000000000000..e595904b412fa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas.q @@ -0,0 +1,69 @@ +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +create table nzhang_Tmp(a int, b string); +select * from nzhang_Tmp; + +explain create table nzhang_CTAS1 as select key k, value from src sort by k, value limit 10; + +create table nzhang_CTAS1 as select key k, value from src sort by k, value limit 10; + +select * from nzhang_CTAS1; + +describe formatted nzhang_CTAS1; + + +explain create table nzhang_ctas2 as select * from src sort by key, value limit 10; + +create table nzhang_ctas2 as select * from src sort by key, value limit 10; + +select * from nzhang_ctas2; + +describe formatted nzhang_CTAS2; + + +explain create table nzhang_ctas3 row format serde "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" stored as RCFile as select key/2 half_key, concat(value, "_con") conb from src sort by half_key, conb limit 10; + +create table nzhang_ctas3 row format serde "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" stored as RCFile as select key/2 half_key, concat(value, "_con") conb from src sort by half_key, conb limit 10; + +select * from nzhang_ctas3; + +describe formatted nzhang_CTAS3; + + +explain create table if not exists nzhang_ctas3 as select key, value from src sort by key, value limit 2; + +create table if not exists nzhang_ctas3 as select key, value from src sort by key, value limit 2; + +select * from nzhang_ctas3; + +describe formatted nzhang_CTAS3; + + +explain create table nzhang_ctas4 row format delimited fields terminated by ',' stored as textfile as select key, value from src sort by key, value limit 10; + +create table nzhang_ctas4 row format delimited fields terminated by ',' stored as textfile as select key, value from src sort by key, value limit 10; + +select * from nzhang_ctas4; + +describe formatted nzhang_CTAS4; + +explain extended create table nzhang_ctas5 row format delimited fields terminated by ',' lines terminated by '\012' stored as textfile as select key, value from src sort by key, value limit 10; + +set mapreduce.framework.name=yarn; +set mapreduce.jobtracker.address=localhost:58; +set hive.exec.mode.local.auto=true; + +create table nzhang_ctas5 row format delimited fields terminated by ',' lines terminated by '\012' stored as textfile as select key, value from src sort by key, value limit 10; + +create table nzhang_ctas6 (key string, `to` string); +insert overwrite table nzhang_ctas6 select key, value from src limit 10; +create table nzhang_ctas7 as select key, `to` from nzhang_ctas6; + + + + + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_colname.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_colname.q new file mode 100644 index 0000000000000..80b8b4f06487d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_colname.q @@ -0,0 +1,48 @@ +-- HIVE-4392, column aliases from expressionRR (GBY, etc.) are not valid name for table +-- use internal name as column name instead + +-- group by +explain +create table summary as select *, sum(key), count(value) from src; +create table summary as select *, sum(key), count(value) from src; +describe formatted summary; +select * from summary order by `_col0`, `_col1`, `_c1`, `_c2`; + +-- window functions +explain +create table x4 as select *, rank() over(partition by key order by value) as rr from src1; +create table x4 as select *, rank() over(partition by key order by value) as rr from src1; +describe formatted x4; +select * from x4 order by key, value, rr; + +explain +create table x5 as select *, lead(key,1) over(partition by key order by value) as lead1 from src limit 20; +create table x5 as select *, lead(key,1) over(partition by key order by value) as lead1 from src limit 20; +describe formatted x5; +select * from x5 order by key, value, lead1; + +-- sub queries +explain +create table x6 as select * from (select *, max(key) from src1) a; +create table x6 as select * from (select *, max(key) from src1) a; +describe formatted x6; +select * from x6 order by `_col0`, `_c1`; + +explain +create table x7 as select * from (select * from src group by key) a; +create table x7 as select * from (select * from src group by key) a; +describe formatted x7; +select * from x7 order by `_col0`; + +explain +create table x8 as select * from (select * from src group by key having key < 9) a; +create table x8 as select * from (select * from src group by key having key < 9) a; +describe formatted x8; +select * from x8 order by `_col0`; + +explain +create table x9 as select * from (select max(value),key from src group by key having key < 9 AND max(value) IS NOT NULL) a; +create table x9 as select * from (select max(value),key from src group by key having key < 9 AND max(value) IS NOT NULL) a; +describe formatted x9; +select * from x9 order by key, `_c0`; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_date.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_date.q new file mode 100644 index 0000000000000..03af69fd3bddf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_date.q @@ -0,0 +1,26 @@ +drop table ctas_date_1; +drop table ctas_date_2; +drop view ctas_date_3; +drop view ctas_date_4; + +create table ctas_date_1 (key int, value string, dd date); +insert overwrite table ctas_date_1 + select key, value, date '2012-01-01' from src sort by key, value limit 5; + +-- create table as with date column +create table ctas_date_2 as select key, value, dd, date '1980-12-12' from ctas_date_1; + +-- view with date column +create view ctas_date_3 as select * from ctas_date_2 where dd > date '2000-01-01'; +create view ctas_date_4 as select * from ctas_date_2 where dd < date '2000-01-01'; + +select key, value, dd, date '1980-12-12' from ctas_date_1; +select * from ctas_date_2; +select * from ctas_date_3; +select count(*) from ctas_date_4; + + +drop table ctas_date_1; +drop table ctas_date_2; +drop view ctas_date_3; +drop view ctas_date_4; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_hadoop20.q new file mode 100644 index 0000000000000..4961b971dbdec --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_hadoop20.q @@ -0,0 +1,68 @@ +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +create table nzhang_Tmp(a int, b string); +select * from nzhang_Tmp; + +explain create table nzhang_CTAS1 as select key k, value from src sort by k, value limit 10; + +create table nzhang_CTAS1 as select key k, value from src sort by k, value limit 10; + +select * from nzhang_CTAS1; + +describe formatted nzhang_CTAS1; + + +explain create table nzhang_ctas2 as select * from src sort by key, value limit 10; + +create table nzhang_ctas2 as select * from src sort by key, value limit 10; + +select * from nzhang_ctas2; + +describe formatted nzhang_CTAS2; + + +explain create table nzhang_ctas3 row format serde "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" stored as RCFile as select key/2 half_key, concat(value, "_con") conb from src sort by half_key, conb limit 10; + +create table nzhang_ctas3 row format serde "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" stored as RCFile as select key/2 half_key, concat(value, "_con") conb from src sort by half_key, conb limit 10; + +select * from nzhang_ctas3; + +describe formatted nzhang_CTAS3; + + +explain create table if not exists nzhang_ctas3 as select key, value from src sort by key, value limit 2; + +create table if not exists nzhang_ctas3 as select key, value from src sort by key, value limit 2; + +select * from nzhang_ctas3; + +describe formatted nzhang_CTAS3; + + +explain create table nzhang_ctas4 row format delimited fields terminated by ',' stored as textfile as select key, value from src sort by key, value limit 10; + +create table nzhang_ctas4 row format delimited fields terminated by ',' stored as textfile as select key, value from src sort by key, value limit 10; + +select * from nzhang_ctas4; + +describe formatted nzhang_CTAS4; + +explain extended create table nzhang_ctas5 row format delimited fields terminated by ',' lines terminated by '\012' stored as textfile as select key, value from src sort by key, value limit 10; + +set mapred.job.tracker=localhost:58; +set hive.exec.mode.local.auto=true; + +create table nzhang_ctas5 row format delimited fields terminated by ',' lines terminated by '\012' stored as textfile as select key, value from src sort by key, value limit 10; + +create table nzhang_ctas6 (key string, `to` string); +insert overwrite table nzhang_ctas6 select key, value from src limit 10; +create table nzhang_ctas7 as select key, `to` from nzhang_ctas6; + + + + + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_uses_database_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_uses_database_location.q new file mode 100644 index 0000000000000..86c940a25b291 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_uses_database_location.q @@ -0,0 +1,14 @@ +set hive.metastore.warehouse.dir=invalid_scheme://${system:test.tmp.dir}; + +-- Tests that CTAS queries in non-default databases use the location of the database +-- not the hive.metastore.warehouse.dir for intermediate files (FileSinkOperator output). +-- If hive.metastore.warehouse.dir were used this would fail because the scheme is invalid. + +CREATE DATABASE db1 +LOCATION 'pfile://${system:test.tmp.dir}/db1'; + +USE db1; +EXPLAIN CREATE TABLE table_db1 AS SELECT * FROM default.src; +CREATE TABLE table_db1 AS SELECT * FROM default.src; + +DESCRIBE FORMATTED table_db1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_varchar.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_varchar.q new file mode 100644 index 0000000000000..f646b36c8a6f9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ctas_varchar.q @@ -0,0 +1,22 @@ +drop table ctas_varchar_1; +drop table ctas_varchar_2; +drop view ctas_varchar_3; + +create table ctas_varchar_1 (key varchar(10), value string); +insert overwrite table ctas_varchar_1 + select key, value from src sort by key, value limit 5; + +-- create table as with varchar column +create table ctas_varchar_2 as select key, value from ctas_varchar_1; + +-- view with varchar column +create view ctas_varchar_3 as select key, value from ctas_varchar_2; + +select key, value from ctas_varchar_1; +select * from ctas_varchar_2; +select * from ctas_varchar_3; + + +drop table ctas_varchar_1; +drop table ctas_varchar_2; +drop view ctas_varchar_3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/custom_input_output_format.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/custom_input_output_format.q new file mode 100644 index 0000000000000..ff5e86dc5a6b4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/custom_input_output_format.q @@ -0,0 +1,6 @@ +ADD JAR ../build/ql/test/test-udfs.jar; +CREATE TABLE src1_rot13_iof(key STRING, value STRING) + STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.udf.Rot13InputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.udf.Rot13OutputFormat'; +INSERT OVERWRITE TABLE src1_rot13_iof SELECT * FROM src1; +SELECT * FROM src1_rot13_iof; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database.q new file mode 100644 index 0000000000000..9140a42b650e8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database.q @@ -0,0 +1,216 @@ +set hive.support.concurrency = true; + +SHOW DATABASES; + +-- CREATE with comment +CREATE DATABASE test_db COMMENT 'Hive test database'; +SHOW DATABASES; + +-- CREATE INE already exists +CREATE DATABASE IF NOT EXISTS test_db; +SHOW DATABASES; + +-- SHOW DATABASES synonym +SHOW SCHEMAS; + +-- DROP +DROP DATABASE test_db; +SHOW DATABASES; + +-- CREATE INE doesn't exist +CREATE DATABASE IF NOT EXISTS test_db COMMENT 'Hive test database'; +SHOW DATABASES; + +-- DROP IE exists +DROP DATABASE IF EXISTS test_db; +SHOW DATABASES; + +-- DROP IE doesn't exist +DROP DATABASE IF EXISTS test_db; + +-- SHOW +CREATE DATABASE test_db; +SHOW DATABASES; + +-- SHOW pattern +SHOW DATABASES LIKE 'test*'; + +-- SHOW pattern +SHOW DATABASES LIKE '*ef*'; + + +USE test_db; +SHOW DATABASES; + +-- CREATE table in non-default DB +CREATE TABLE test_table (col1 STRING) STORED AS TEXTFILE; +SHOW TABLES; + +-- DESCRIBE table in non-default DB +DESCRIBE test_table; + +-- DESCRIBE EXTENDED in non-default DB +DESCRIBE EXTENDED test_table; + +-- CREATE LIKE in non-default DB +CREATE TABLE test_table_like LIKE test_table; +SHOW TABLES; +DESCRIBE EXTENDED test_table_like; + +-- LOAD and SELECT +LOAD DATA LOCAL INPATH '../data/files/test.dat' +OVERWRITE INTO TABLE test_table; +SELECT * FROM test_table; + +-- DROP and CREATE w/o LOAD +DROP TABLE test_table; +SHOW TABLES; + +CREATE TABLE test_table (col1 STRING) STORED AS TEXTFILE; +SHOW TABLES; + +SELECT * FROM test_table; + +-- CREATE table that already exists in DEFAULT +USE test_db; +CREATE TABLE src (col1 STRING) STORED AS TEXTFILE; +SHOW TABLES; + +SELECT * FROM src LIMIT 10; + +USE default; +SELECT * FROM src LIMIT 10; + +-- DROP DATABASE +USE test_db; + +DROP TABLE src; +DROP TABLE test_table; +DROP TABLE test_table_like; +SHOW TABLES; + +USE default; +DROP DATABASE test_db; +SHOW DATABASES; + +-- DROP EMPTY DATABASE CASCADE +CREATE DATABASE to_drop_db1; +SHOW DATABASES; +USE default; +DROP DATABASE to_drop_db1 CASCADE; +SHOW DATABASES; + +-- DROP NON-EMPTY DATABASE CASCADE +CREATE DATABASE to_drop_db2; +SHOW DATABASES; +USE to_drop_db2; +CREATE TABLE temp_tbl (c STRING); +CREATE TABLE temp_tbl2 LIKE temp_tbl; +INSERT OVERWRITE TABLE temp_tbl2 SELECT COUNT(*) FROM temp_tbl; +USE default; +DROP DATABASE to_drop_db2 CASCADE; +SHOW DATABASES; + +-- DROP NON-EMPTY DATABASE CASCADE IF EXISTS +CREATE DATABASE to_drop_db3; +SHOW DATABASES; +USE to_drop_db3; +CREATE TABLE temp_tbl (c STRING); +USE default; +DROP DATABASE IF EXISTS to_drop_db3 CASCADE; +SHOW DATABASES; + +-- DROP NON-EXISTING DATABASE CASCADE IF EXISTS +DROP DATABASE IF EXISTS non_exists_db3 CASCADE; +SHOW DATABASES; + +-- DROP NON-EXISTING DATABASE RESTRICT IF EXISTS +DROP DATABASE IF EXISTS non_exists_db3 RESTRICT; + +-- DROP EMPTY DATABASE RESTRICT +CREATE DATABASE to_drop_db4; +SHOW DATABASES; +DROP DATABASE to_drop_db4 RESTRICT; +SHOW DATABASES; + + +-- +-- Canonical Name Tests +-- + +CREATE DATABASE db1; +CREATE DATABASE db2; + +-- CREATE foreign table +CREATE TABLE db1.src(key STRING, value STRING) +STORED AS TEXTFILE; + +-- LOAD into foreign table +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' +OVERWRITE INTO TABLE db1.src; + +-- SELECT from foreign table +SELECT * FROM db1.src; + +-- CREATE Partitioned foreign table +CREATE TABLE db1.srcpart(key STRING, value STRING) +PARTITIONED BY (ds STRING, hr STRING) +STORED AS TEXTFILE; + +-- LOAD data into Partitioned foreign table +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' +OVERWRITE INTO TABLE db1.srcpart +PARTITION (ds='2008-04-08', hr='11'); + +-- SELECT from Partitioned foreign table +SELECT key, value FROM db1.srcpart +WHERE key < 100 AND ds='2008-04-08' AND hr='11'; + +-- SELECT JOINed product of two foreign tables +USE db2; +SELECT a.* FROM db1.src a JOIN default.src1 b +ON (a.key = b.key); + +-- CREATE TABLE AS SELECT from foreign table +CREATE TABLE conflict_name AS +SELECT value FROM default.src WHERE key = 66; + +-- CREATE foreign table +CREATE TABLE db1.conflict_name AS +SELECT value FROM db1.src WHERE key = 8; + +-- query tables with the same names in different DBs +SELECT * FROM ( + SELECT value FROM db1.conflict_name +UNION ALL + SELECT value FROM conflict_name +) subq ORDER BY value; + +USE default; +SELECT * FROM ( + SELECT value FROM db1.conflict_name +UNION ALL + SELECT value FROM db2.conflict_name +) subq ORDER BY value; + +-- TABLESAMPLES +CREATE TABLE bucketized_src (key INT, value STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS; + +INSERT OVERWRITE TABLE bucketized_src +SELECT key, value FROM src WHERE key=66; + +SELECT key FROM bucketized_src TABLESAMPLE(BUCKET 1 out of 1); + +-- CREATE TABLE LIKE +CREATE TABLE db2.src1 LIKE default.src; + +USE db2; +DESC EXTENDED src1; + +-- character escaping +SELECT key FROM `default`.src ORDER BY key LIMIT 1; +SELECT key FROM `default`.`src` ORDER BY key LIMIT 1; +SELECT key FROM default.`src` ORDER BY key LIMIT 1; + +USE default; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_drop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_drop.q new file mode 100644 index 0000000000000..4e17c7ad5ac10 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_drop.q @@ -0,0 +1,81 @@ +-- create database with multiple tables, indexes and views. +-- Use both partitioned and non-partitioned tables, as well as +-- tables and indexes with specific storage locations +-- verify the drop the database with cascade works and that the directories +-- outside the database's default storage are removed as part of the drop + +CREATE DATABASE db5; +SHOW DATABASES; +USE db5; + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/temp; +dfs -rmr ${system:test.tmp.dir}/dbcascade; +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade; + +-- add a table, index and view +CREATE TABLE temp_tbl (id INT, name STRING); +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE temp_tbl; +CREATE VIEW temp_tbl_view AS SELECT * FROM temp_tbl; +CREATE INDEX idx1 ON TABLE temp_tbl(id) AS 'COMPACT' with DEFERRED REBUILD; +ALTER INDEX idx1 ON temp_tbl REBUILD; + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/temp_tbl2; +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/temp_tbl2_idx2; +-- add a table, index and view with a different storage location +CREATE TABLE temp_tbl2 (id INT, name STRING) LOCATION 'file:${system:test.tmp.dir}/dbcascade/temp_tbl2'; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' into table temp_tbl2; +CREATE VIEW temp_tbl2_view AS SELECT * FROM temp_tbl2; +CREATE INDEX idx2 ON TABLE temp_tbl2(id) AS 'COMPACT' with DEFERRED REBUILD LOCATION 'file:${system:test.tmp.dir}/dbcascade/temp_tbl2_idx2'; +ALTER INDEX idx2 ON temp_tbl2 REBUILD; + +-- add a partitioned table, index and view +CREATE TABLE part_tab (id INT, name STRING) PARTITIONED BY (ds string); +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE part_tab PARTITION (ds='2008-04-09'); +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE part_tab PARTITION (ds='2009-04-09'); +CREATE INDEX idx3 ON TABLE part_tab(id) AS 'COMPACT' with DEFERRED REBUILD; +ALTER INDEX idx3 ON part_tab PARTITION (ds='2008-04-09') REBUILD; +ALTER INDEX idx3 ON part_tab PARTITION (ds='2009-04-09') REBUILD; + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/part_tab2; +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/part_tab2_idx4; +-- add a partitioned table, index and view with a different storage location +CREATE TABLE part_tab2 (id INT, name STRING) PARTITIONED BY (ds string) + LOCATION 'file:${system:test.tmp.dir}/dbcascade/part_tab2'; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE part_tab2 PARTITION (ds='2008-04-09'); +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE part_tab2 PARTITION (ds='2009-04-09'); +CREATE INDEX idx4 ON TABLE part_tab2(id) AS 'COMPACT' with DEFERRED REBUILD + LOCATION 'file:${system:test.tmp.dir}/dbcascade/part_tab2_idx4'; +ALTER INDEX idx4 ON part_tab2 PARTITION (ds='2008-04-09') REBUILD; +ALTER INDEX idx4 ON part_tab2 PARTITION (ds='2009-04-09') REBUILD; + + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/part_tab3; +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/part_tab3_p1; +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/part_tab3_idx5; +-- add a partitioned table, index and view with a different storage location +CREATE TABLE part_tab3 (id INT, name STRING) PARTITIONED BY (ds string) + LOCATION 'file:${system:test.tmp.dir}/dbcascade/part_tab3'; +ALTER TABLE part_tab3 ADD PARTITION (ds='2007-04-09') LOCATION 'file:${system:test.tmp.dir}/dbcascade/part_tab3_p1'; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE part_tab3 PARTITION (ds='2008-04-09'); +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE part_tab3 PARTITION (ds='2009-04-09'); +CREATE INDEX idx5 ON TABLE part_tab3(id) AS 'COMPACT' with DEFERRED REBUILD + LOCATION 'file:${system:test.tmp.dir}/dbcascade/part_tab3_idx5'; +ALTER INDEX idx5 ON part_tab3 PARTITION (ds='2008-04-09') REBUILD; +ALTER INDEX idx5 ON part_tab3 PARTITION (ds='2009-04-09') REBUILD; + + + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/dbcascade/extab1; +dfs -touchz ${system:test.tmp.dir}/dbcascade/extab1/file1.txt; +-- add an external table +CREATE EXTERNAL TABLE extab1(id INT, name STRING) ROW FORMAT + DELIMITED FIELDS TERMINATED BY '' + LINES TERMINATED BY '\n' + STORED AS TEXTFILE + LOCATION 'file:${system:test.tmp.dir}/dbcascade/extab1'; + +-- drop the database with cascade +DROP DATABASE db5 CASCADE; + +dfs -test -d ${system:test.tmp.dir}/dbcascade/extab1; +dfs -rmr ${system:test.tmp.dir}/dbcascade; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_location.q new file mode 100644 index 0000000000000..e131b5ff02e67 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_location.q @@ -0,0 +1,20 @@ +CREATE DATABASE db1; +DESCRIBE DATABASE EXTENDED db1; + +USE db1; +CREATE TABLE table_db1 (name STRING, value INT); + +DESCRIBE FORMATTED table_db1; +SHOW TABLES; + +CREATE DATABASE db2 +COMMENT 'database 2' +LOCATION '${hiveconf:hive.metastore.warehouse.dir}/db2'; + +DESCRIBE DATABASE EXTENDED db2; + +USE db2; +CREATE TABLE table_db2 (name STRING, value INT); + +DESCRIBE FORMATTED table_db2; +SHOW TABLES; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_properties.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_properties.q new file mode 100644 index 0000000000000..7f3b239d1836d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/database_properties.q @@ -0,0 +1,26 @@ +set datanucleus.cache.collections=false; +set datanucleus.cache.collections.lazy=false; + +create database db1; + +show databases; + +create database db2 with dbproperties ( + 'mapred.jobtracker.url'='http://my.jobtracker.com:53000', + 'hive.warehouse.dir' = '/user/hive/warehouse', + 'mapred.scratch.dir' = 'hdfs://tmp.dfs.com:50029/tmp'); + +describe database db2; + +describe database extended db2; + + +set datanucleus.cache.collections=false; +set datanucleus.cache.collections.lazy=false; + +alter database db2 set dbproperties ( + 'new.property' = 'some new props', + 'hive.warehouse.dir' = 'new/warehouse/dir'); + +describe database extended db2; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_1.q new file mode 100644 index 0000000000000..a2322fc1e45a0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_1.q @@ -0,0 +1,87 @@ +drop table date_1; + +create table date_1 (d date); + +insert overwrite table date_1 + select cast('2011-01-01' as date) from src limit 1; + +select * from date_1 limit 1; +select d, count(d) from date_1 group by d; + +insert overwrite table date_1 + select date '2011-01-01' from src limit 1; + +select * from date_1 limit 1; +select d, count(d) from date_1 group by d; + +insert overwrite table date_1 + select cast(cast('2011-01-01 00:00:00' as timestamp) as date) from src limit 1; + +select * from date_1 limit 1; +select d, count(d) from date_1 group by d; + +-- Valid casts +select + cast('2012-01-01' as string), + cast(d as string), + cast(d as timestamp), + cast(cast(d as timestamp) as date), + cast(d as date) +from date_1 limit 1; + +-- Invalid casts. +select + cast(d as boolean), + cast(d as tinyint), + cast(d as smallint), + cast(d as int), + cast(d as bigint), + cast(d as float), + cast(d as double) +from date_1 limit 1; + +-- These comparisons should all be true +select + date '2011-01-01' = date '2011-01-01', + unix_timestamp(date '2011-01-01') = unix_timestamp(date '2011-01-01'), + unix_timestamp(date '2011-01-01') = unix_timestamp(cast(date '2011-01-01' as timestamp)), + unix_timestamp(date '2011-01-01') = unix_timestamp(cast(cast('2011-01-01 12:13:14' as timestamp) as date)), + unix_timestamp(date '2011-01-01') < unix_timestamp(cast('2011-01-01 00:00:01' as timestamp)), + unix_timestamp(date '2011-01-01') = unix_timestamp(cast('2011-01-01 00:00:00' as timestamp)), + unix_timestamp(date '2011-01-01') > unix_timestamp(cast('2010-12-31 23:59:59' as timestamp)), + date '2011-01-01' = cast(timestamp('2011-01-01 23:24:25') as date), + '2011-01-01' = cast(d as string), + '2011-01-01' = cast(date '2011-01-01' as string) +from date_1 limit 1; + +select + date('2001-01-28'), + date('2001-02-28'), + date('2001-03-28'), + date('2001-04-28'), + date('2001-05-28'), + date('2001-06-28'), + date('2001-07-28'), + date('2001-08-28'), + date('2001-09-28'), + date('2001-10-28'), + date('2001-11-28'), + date('2001-12-28') +from date_1 limit 1; + +select + unix_timestamp(date('2001-01-28')) = unix_timestamp(cast('2001-01-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-02-28')) = unix_timestamp(cast('2001-02-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-03-28')) = unix_timestamp(cast('2001-03-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-04-28')) = unix_timestamp(cast('2001-04-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-05-28')) = unix_timestamp(cast('2001-05-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-06-28')) = unix_timestamp(cast('2001-06-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-07-28')) = unix_timestamp(cast('2001-07-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-08-28')) = unix_timestamp(cast('2001-08-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-09-28')) = unix_timestamp(cast('2001-09-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-10-28')) = unix_timestamp(cast('2001-10-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-11-28')) = unix_timestamp(cast('2001-11-28 0:0:0' as timestamp)), + unix_timestamp(date('2001-12-28')) = unix_timestamp(cast('2001-12-28 0:0:0' as timestamp)) +from date_1 limit 1; + +drop table date_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_2.q new file mode 100644 index 0000000000000..0821e012ba26b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_2.q @@ -0,0 +1,18 @@ +drop table if exists date_2; + +create table date_2 ( + ORIGIN_CITY_NAME string, + DEST_CITY_NAME string, + FL_DATE date, + ARR_DELAY float, + FL_NUM int +); + +LOAD DATA LOCAL INPATH '../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE date_2; + +select fl_date, fl_num from date_2 order by fl_date asc, fl_num desc; +select fl_date, fl_num from date_2 order by fl_date desc, fl_num asc; + +select fl_date, count(*) from date_2 group by fl_date; + +drop table date_2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_3.q new file mode 100644 index 0000000000000..be251484459b6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_3.q @@ -0,0 +1,14 @@ +drop table date_3; + +create table date_3 ( + c1 int +); + +alter table date_3 add columns (c2 date); + +insert overwrite table date_3 + select 1, cast(cast('2011-01-01 00:00:00' as timestamp) as date) from src limit 1; + +select * from date_3; + +drop table date_3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_4.q new file mode 100644 index 0000000000000..4801a79b8795b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_4.q @@ -0,0 +1,11 @@ +drop table date_4; + +create table date_4 (d date); +alter table date_4 set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'; + +-- Test date literal syntax +insert overwrite table date_4 + select date '2011-01-01' from src limit 1; +select d, date '2011-01-01' from date_4 limit 1; + +drop table date_4; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_comparison.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_comparison.q new file mode 100644 index 0000000000000..bdcb6c1b6e447 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_comparison.q @@ -0,0 +1,38 @@ +-- Comparisons against same value +select cast('2011-05-06' as date) > + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-06' as date) < + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-06' as date) = + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-06' as date) <> + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-06' as date) >= + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-06' as date) <= + cast('2011-05-06' as date) from src limit 1; + +-- Now try with differing values +select cast('2011-05-05' as date) > + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-05' as date) < + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-05' as date) = + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-05' as date) <> + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-05' as date) >= + cast('2011-05-06' as date) from src limit 1; + +select cast('2011-05-05' as date) <= + cast('2011-05-06' as date) from src limit 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_join1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_join1.q new file mode 100644 index 0000000000000..a5844b76e9ef8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_join1.q @@ -0,0 +1,19 @@ +drop table date_join1; + +create table date_join1 ( + ORIGIN_CITY_NAME string, + DEST_CITY_NAME string, + FL_DATE date, + ARR_DELAY float, + FL_NUM int +); + +LOAD DATA LOCAL INPATH '../data/files/flights_join.txt' OVERWRITE INTO TABLE date_join1; + +-- Note that there are 2 rows with date 2000-11-28, so we should expect 4 rows with that date in the join results +select t1.fl_num, t1.fl_date, t2.fl_num, t2.fl_date + from date_join1 t1 + join date_join1 t2 + on (t1.fl_date = t2.fl_date); + +drop table date_join1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_serde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_serde.q new file mode 100644 index 0000000000000..ffc06d270d53a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_serde.q @@ -0,0 +1,112 @@ +drop table if exists date_serde_regex; +drop table date_serde_lb; +drop table date_serde_ls; +drop table date_serde_c; +drop table date_serde_lbc; +drop table date_serde_orc; + + +-- +-- RegexSerDe +-- +create table date_serde_regex ( + ORIGIN_CITY_NAME string, + DEST_CITY_NAME string, + FL_DATE date, + ARR_DELAY float, + FL_NUM int +) +row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe' +with serdeproperties ( + "input.regex" = "([^]*)([^]*)([^]*)([^]*)([0-9]*)" +) +stored as textfile; + +load data local inpath '../data/files/flights_tiny.txt.1' overwrite into table date_serde_regex; + +select * from date_serde_regex; +select fl_date, count(*) from date_serde_regex group by fl_date; + +-- +-- LazyBinary +-- +create table date_serde_lb ( + c1 date, + c2 int +); +alter table date_serde_lb set serde 'org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe'; + +insert overwrite table date_serde_lb + select fl_date, fl_num from date_serde_regex limit 1; + +select * from date_serde_lb; +select c1, sum(c2) from date_serde_lb group by c1; + +-- +-- LazySimple +-- +create table date_serde_ls ( + c1 date, + c2 int +); +alter table date_serde_ls set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'; + +insert overwrite table date_serde_ls + select c1, c2 from date_serde_lb limit 1; + +select * from date_serde_ls; +select c1, sum(c2) from date_serde_ls group by c1; + +-- +-- Columnar +-- +create table date_serde_c ( + c1 date, + c2 int +) stored as rcfile; +alter table date_serde_c set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'; + +insert overwrite table date_serde_c + select c1, c2 from date_serde_ls limit 1; + +select * from date_serde_c; +select c1, sum(c2) from date_serde_c group by c1; + +-- +-- LazyBinaryColumnar +-- +create table date_serde_lbc ( + c1 date, + c2 int +) stored as rcfile; +alter table date_serde_lbc set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; + +insert overwrite table date_serde_lbc + select c1, c2 from date_serde_c limit 1; + +select * from date_serde_lbc; +select c1, sum(c2) from date_serde_lbc group by c1; + +-- +-- ORC +-- +create table date_serde_orc ( + c1 date, + c2 int +) stored as orc; +alter table date_serde_orc set serde 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'; + +insert overwrite table date_serde_orc + select c1, c2 from date_serde_lbc limit 1; + +select * from date_serde_orc; +select c1, sum(c2) from date_serde_orc group by c1; + + + +drop table date_serde_regex; +drop table date_serde_lb; +drop table date_serde_ls; +drop table date_serde_c; +drop table date_serde_lbc; +drop table date_serde_orc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_udf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_udf.q new file mode 100644 index 0000000000000..9696320a85fcd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/date_udf.q @@ -0,0 +1,69 @@ +drop table date_udf; +drop table date_udf_string; +drop table date_udf_flight; + +create table date_udf (d date); +create table date_udf_string (d string); +from src + insert overwrite table date_udf + select '2011-05-06' limit 1 + insert overwrite table date_udf_string + select '2011-05-06' limit 1; + +create table date_udf_flight ( + ORIGIN_CITY_NAME string, + DEST_CITY_NAME string, + FL_DATE date, + ARR_DELAY float, + FL_NUM int +); +LOAD DATA LOCAL INPATH '../data/files/flights_tiny.txt.1' OVERWRITE INTO TABLE date_udf_flight; + +-- Test UDFs with date input +select unix_timestamp(d), year(d), month(d), day(d), dayofmonth(d), + weekofyear(d), to_date(d) + from date_udf; + +select date_add(d, 5), date_sub(d, 10) + from date_udf; + +select datediff(d, d), datediff(d, '2002-03-21'), datediff('2002-03-21', d), + datediff(cast ('2002-03-21 00:00:00' as timestamp), d), + datediff(d, cast ('2002-03-21 00:00:00' as timestamp)) + from date_udf; + +-- Test UDFs with string input +select unix_timestamp(d), year(d), month(d), day(d), dayofmonth(d), + weekofyear(d), to_date(d) + from date_udf_string; + +select date_add(d, 5), date_sub(d, 10) from date_udf_string; + +select datediff(d, d), datediff(d, '2002-03-21'), datediff('2002-03-21', d), + datediff('2002-03-21 00:00:00', d), + datediff(d, '2002-03-21 00:00:00') + from date_udf_string; + +select + to_utc_timestamp(date '1970-01-01', 'America/Los_Angeles'), + from_utc_timestamp(date '1970-01-01', 'America/Los_Angeles'), + to_utc_timestamp(date '2013-06-19', 'America/Los_Angeles'), + from_utc_timestamp(date '2013-06-19', 'America/Los_Angeles') + from date_udf; + +-- should all be true +select + to_utc_timestamp(date '1970-01-01', 'America/Los_Angeles') = to_utc_timestamp(timestamp('1970-01-01 00:00:00'), 'America/Los_Angeles'), + from_utc_timestamp(date '1970-01-01', 'America/Los_Angeles') = from_utc_timestamp(timestamp('1970-01-01 00:00:00'), 'America/Los_Angeles'), + to_utc_timestamp(date '2013-06-19', 'America/Los_Angeles') = to_utc_timestamp(timestamp('2013-06-19 00:00:00'), 'America/Los_Angeles'), + from_utc_timestamp(date '2013-06-19', 'America/Los_Angeles') = from_utc_timestamp(timestamp('2013-06-19 00:00:00'), 'America/Los_Angeles') + from date_udf; + +-- Aggregation functions (min/max) +select min(fl_date) from date_udf_flight; +select max(fl_date) from date_udf_flight; + + +drop table date_udf; +drop table date_udf_string; +drop table date_udf_flight; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ddltime.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ddltime.q new file mode 100644 index 0000000000000..3eead6f29dfa6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ddltime.q @@ -0,0 +1,45 @@ +create table T1 like src; + +desc extended T1; + +!sleep 1; +insert overwrite table T1 select * from src; + +desc extended T1; + +!sleep 1; + +insert overwrite table T1 select /*+ HOLD_DDLTIME*/ * from src; + +desc extended T1; + +!sleep 1; + +insert overwrite table T1 select * from src; + +desc extended T1; + + + +create table if not exists T2 like srcpart; +desc extended T2; + +!sleep 1; + +insert overwrite table T2 partition (ds = '2010-06-21', hr = '1') select key, value from src where key > 10; + +desc extended T2 partition (ds = '2010-06-21', hr = '1'); + +!sleep 1; + +insert overwrite table T2 partition (ds = '2010-06-21', hr='1') select /*+ HOLD_DDLTIME */ key, value from src where key > 10; + +desc extended T2 partition (ds = '2010-06-21', hr = '1'); + +!sleep 1; + +insert overwrite table T2 partition (ds='2010-06-01', hr='1') select key, value from src where key > 10; + +desc extended T2 partition(ds='2010-06-01', hr='1'); + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_1.q new file mode 100644 index 0000000000000..6c689e188a908 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_1.q @@ -0,0 +1,18 @@ +drop table decimal_1; + +create table decimal_1 (t decimal); +alter table decimal_1 set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'; + +insert overwrite table decimal_1 + select cast('17.29' as decimal) from src limit 1; +select cast(t as boolean) from decimal_1 limit 1; +select cast(t as tinyint) from decimal_1 limit 1; +select cast(t as smallint) from decimal_1 limit 1; +select cast(t as int) from decimal_1 limit 1; +select cast(t as bigint) from decimal_1 limit 1; +select cast(t as float) from decimal_1 limit 1; +select cast(t as double) from decimal_1 limit 1; +select cast(t as string) from decimal_1 limit 1; +select cast(t as timestamp) from decimal_1 limit 1; + +drop table decimal_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_2.q new file mode 100644 index 0000000000000..4890618a0dc32 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_2.q @@ -0,0 +1,40 @@ +drop table decimal_2; + +create table decimal_2 (t decimal); +alter table decimal_2 set serde 'org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe'; + +insert overwrite table decimal_2 + select cast('17.29' as decimal) from src limit 1; + +select cast(t as boolean) from decimal_2 limit 1; +select cast(t as tinyint) from decimal_2 limit 1; +select cast(t as smallint) from decimal_2 limit 1; +select cast(t as int) from decimal_2 limit 1; +select cast(t as bigint) from decimal_2 limit 1; +select cast(t as float) from decimal_2 limit 1; +select cast(t as double) from decimal_2 limit 1; +select cast(t as string) from decimal_2 limit 1; + +insert overwrite table decimal_2 + select cast('3404045.5044003' as decimal) from src limit 1; + +select cast(t as boolean) from decimal_2 limit 1; +select cast(t as tinyint) from decimal_2 limit 1; +select cast(t as smallint) from decimal_2 limit 1; +select cast(t as int) from decimal_2 limit 1; +select cast(t as bigint) from decimal_2 limit 1; +select cast(t as float) from decimal_2 limit 1; +select cast(t as double) from decimal_2 limit 1; +select cast(t as string) from decimal_2 limit 1; + +select cast(3.14 as decimal) from decimal_2 limit 1; +select cast(cast(3.14 as float) as decimal) from decimal_2 limit 1; +select cast(cast('2012-12-19 11:12:19.1234567' as timestamp) as decimal) from decimal_2 limit 1; +select cast(true as decimal) from decimal_2 limit 1; +select cast(3Y as decimal) from decimal_2 limit 1; +select cast(3S as decimal) from decimal_2 limit 1; +select cast(cast(3 as int) as decimal) from decimal_2 limit 1; +select cast(3L as decimal) from decimal_2 limit 1; +select cast(0.99999999999999999999 as decimal) from decimal_2 limit 1; +select cast('0.99999999999999999999' as decimal) from decimal_2 limit 1; +drop table decimal_2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_3.q new file mode 100644 index 0000000000000..28211e3f14cc1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_3.q @@ -0,0 +1,28 @@ +DROP TABLE IF EXISTS DECIMAL_3; + +CREATE TABLE DECIMAL_3(key decimal, value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/kv7.txt' INTO TABLE DECIMAL_3; + +SELECT * FROM DECIMAL_3 ORDER BY key, value; + +SELECT * FROM DECIMAL_3 ORDER BY key DESC, value DESC; + +SELECT * FROM DECIMAL_3 ORDER BY key, value; + +SELECT DISTINCT key FROM DECIMAL_3 ORDER BY key; + +SELECT key, sum(value) FROM DECIMAL_3 GROUP BY key ORDER BY key; + +SELECT value, sum(key) FROM DECIMAL_3 GROUP BY value ORDER BY value; + +SELECT * FROM DECIMAL_3 a JOIN DECIMAL_3 b ON (a.key = b.key) ORDER BY a.key, a.value, b.value; + +SELECT * FROM DECIMAL_3 WHERE key=3.14 ORDER BY key, value; + +SELECT * FROM DECIMAL_3 WHERE key=3.140 ORDER BY key, value; + +DROP TABLE DECIMAL_3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_4.q new file mode 100644 index 0000000000000..e8a89c131cd85 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_4.q @@ -0,0 +1,21 @@ +DROP TABLE IF EXISTS DECIMAL_4_1; +DROP TABLE IF EXISTS DECIMAL_4_2; + +CREATE TABLE DECIMAL_4_1(key decimal, value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +CREATE TABLE DECIMAL_4_2(key decimal, value decimal) +STORED AS ORC; + +LOAD DATA LOCAL INPATH '../data/files/kv7.txt' INTO TABLE DECIMAL_4_1; + +INSERT OVERWRITE TABLE DECIMAL_4_2 SELECT key, key * 3 FROM DECIMAL_4_1; + +SELECT * FROM DECIMAL_4_1 ORDER BY key, value; + +SELECT * FROM DECIMAL_4_2 ORDER BY key; + +DROP TABLE DECIMAL_4_1; +DROP TABLE DECIMAL_4_2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_join.q new file mode 100644 index 0000000000000..589fc6597dfa4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_join.q @@ -0,0 +1,6 @@ +-- HIVE-5292 Join on decimal columns fails + +create table src_dec (key decimal, value string); +load data local inpath '../data/files/kv1.txt' into table src_dec; + +select * from src_dec a join src_dec b on a.key=b.key+450; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_precision.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_precision.q new file mode 100644 index 0000000000000..403c2be3fbc10 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_precision.q @@ -0,0 +1,27 @@ +DROP TABLE IF EXISTS DECIMAL_PRECISION; + +CREATE TABLE DECIMAL_PRECISION(dec decimal) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/kv8.txt' INTO TABLE DECIMAL_PRECISION; + +SELECT * FROM DECIMAL_PRECISION ORDER BY dec; + +SELECT dec, dec + 1, dec - 1 FROM DECIMAL_PRECISION ORDER BY dec; +SELECT dec, dec * 2, dec / 3 FROM DECIMAL_PRECISION ORDER BY dec; +SELECT dec, dec / 9 FROM DECIMAL_PRECISION ORDER BY dec; +SELECT dec, dec / 27 FROM DECIMAL_PRECISION ORDER BY dec; +SELECT dec, dec * dec FROM DECIMAL_PRECISION ORDER BY dec; + +SELECT avg(dec), sum(dec) FROM DECIMAL_PRECISION; + +SELECT dec * cast('123456789012345678901234567890.123456789' as decimal) FROM DECIMAL_PRECISION LIMIT 1; +SELECT * from DECIMAL_PRECISION WHERE dec > cast('123456789012345678901234567890.123456789' as decimal) LIMIT 1; +SELECT dec * 123456789012345678901234567890.123456789 FROM DECIMAL_PRECISION LIMIT 1; + +SELECT MIN(cast('123456789012345678901234567890.123456789' as decimal)) FROM DECIMAL_PRECISION; +SELECT COUNT(cast('123456789012345678901234567890.123456789' as decimal)) FROM DECIMAL_PRECISION; + +DROP TABLE DECIMAL_PRECISION; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_serde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_serde.q new file mode 100644 index 0000000000000..3556807705ae5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_serde.q @@ -0,0 +1,37 @@ +DROP TABLE IF EXISTS DECIMAL_TEXT; +DROP TABLE IF EXISTS DECIMAL_RC; +DROP TABLE IF EXISTS DECIMAL_LAZY_COL; +DROP TABLE IF EXISTS DECIMAL_SEQUENCE; + +CREATE TABLE DECIMAL_TEXT (key decimal, value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/kv7.txt' INTO TABLE DECIMAL_TEXT; + +SELECT * FROM DECIMAL_TEXT ORDER BY key, value; + +CREATE TABLE DECIMAL_RC +STORED AS RCFile AS +SELECT * FROM DECIMAL_TEXT; + +CREATE TABLE DECIMAL_LAZY_COL +ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" +STORED AS RCFile AS +SELECT * FROM DECIMAL_RC; + +CREATE TABLE DECIMAL_SEQUENCE +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '\001' +COLLECTION ITEMS TERMINATED BY '\002' +MAP KEYS TERMINATED BY '\003' +STORED AS SEQUENCEFILE AS +SELECT * FROM DECIMAL_LAZY_COL ORDER BY key; + +SELECT * FROM DECIMAL_SEQUENCE ORDER BY key, value; + +DROP TABLE IF EXISTS DECIMAL_TEXT; +DROP TABLE IF EXISTS DECIMAL_RC; +DROP TABLE IF EXISTS DECIMAL_LAZY_COL; +DROP TABLE IF EXISTS DECIMAL_SEQUENCE; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_udf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_udf.q new file mode 100644 index 0000000000000..b5ff088d1613a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/decimal_udf.q @@ -0,0 +1,128 @@ +DROP TABLE IF EXISTS DECIMAL_UDF; + +CREATE TABLE DECIMAL_UDF (key decimal, value int) +ROW FORMAT DELIMITED + FIELDS TERMINATED BY ' ' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/kv7.txt' INTO TABLE DECIMAL_UDF; + +-- addition +EXPLAIN SELECT key + key FROM DECIMAL_UDF; +SELECT key + key FROM DECIMAL_UDF; + +EXPLAIN SELECT key + value FROM DECIMAL_UDF; +SELECT key + value FROM DECIMAL_UDF; + +EXPLAIN SELECT key + (value/2) FROM DECIMAL_UDF; +SELECT key + (value/2) FROM DECIMAL_UDF; + +EXPLAIN SELECT key + '1.0' FROM DECIMAL_UDF; +SELECT key + '1.0' FROM DECIMAL_UDF; + +-- substraction +EXPLAIN SELECT key - key FROM DECIMAL_UDF; +SELECT key - key FROM DECIMAL_UDF; + +EXPLAIN SELECT key - value FROM DECIMAL_UDF; +SELECT key - value FROM DECIMAL_UDF; + +EXPLAIN SELECT key - (value/2) FROM DECIMAL_UDF; +SELECT key - (value/2) FROM DECIMAL_UDF; + +EXPLAIN SELECT key - '1.0' FROM DECIMAL_UDF; +SELECT key - '1.0' FROM DECIMAL_UDF; + +-- multiplication +EXPLAIN SELECT key * key FROM DECIMAL_UDF; +SELECT key * key FROM DECIMAL_UDF; + +EXPLAIN SELECT key * value FROM DECIMAL_UDF; +SELECT key * value FROM DECIMAL_UDF; + +EXPLAIN SELECT key * (value/2) FROM DECIMAL_UDF; +SELECT key * (value/2) FROM DECIMAL_UDF; + +EXPLAIN SELECT key * '2.0' FROM DECIMAL_UDF; +SELECT key * '2.0' FROM DECIMAL_UDF; + +-- division +EXPLAIN SELECT key / 0 FROM DECIMAL_UDF limit 1; +SELECT key / 0 FROM DECIMAL_UDF limit 1; + +EXPLAIN SELECT key / NULL FROM DECIMAL_UDF limit 1; +SELECT key / NULL FROM DECIMAL_UDF limit 1; + +EXPLAIN SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0; +SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0; + +EXPLAIN SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0; +SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0; + +EXPLAIN SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0; +SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0; + +EXPLAIN SELECT key / '2.0' FROM DECIMAL_UDF; +SELECT key / '2.0' FROM DECIMAL_UDF; + +-- abs +EXPLAIN SELECT abs(key) FROM DECIMAL_UDF; +SELECT abs(key) FROM DECIMAL_UDF; + +-- avg +EXPLAIN SELECT value, sum(key) / count(key), avg(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value; +SELECT value, sum(key) / count(key), avg(key) FROM DECIMAL_UDF GROUP BY value ORDER BY value; + +-- negative +EXPLAIN SELECT -key FROM DECIMAL_UDF; +SELECT -key FROM DECIMAL_UDF; + +-- positive +EXPLAIN SELECT +key FROM DECIMAL_UDF; +SELECT +key FROM DECIMAL_UDF; + +-- ceiling +EXPlAIN SELECT CEIL(key) FROM DECIMAL_UDF; +SELECT CEIL(key) FROM DECIMAL_UDF; + +-- floor +EXPLAIN SELECT FLOOR(key) FROM DECIMAL_UDF; +SELECT FLOOR(key) FROM DECIMAL_UDF; + +-- round +EXPLAIN SELECT ROUND(key, 2) FROM DECIMAL_UDF; +SELECT ROUND(key, 2) FROM DECIMAL_UDF; + +-- power +EXPLAIN SELECT POWER(key, 2) FROM DECIMAL_UDF; +SELECT POWER(key, 2) FROM DECIMAL_UDF; + +-- modulo +EXPLAIN SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF; +SELECT (key + 1) % (key / 2) FROM DECIMAL_UDF; + +-- stddev, var +EXPLAIN SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value; +SELECT value, stddev(key), variance(key) FROM DECIMAL_UDF GROUP BY value; + +-- stddev_samp, var_samp +EXPLAIN SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value; +SELECT value, stddev_samp(key), var_samp(key) FROM DECIMAL_UDF GROUP BY value; + +-- histogram +EXPLAIN SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF; +SELECT histogram_numeric(key, 3) FROM DECIMAL_UDF; + +-- min +EXPLAIN SELECT MIN(key) FROM DECIMAL_UDF; +SELECT MIN(key) FROM DECIMAL_UDF; + +-- max +EXPLAIN SELECT MAX(key) FROM DECIMAL_UDF; +SELECT MAX(key) FROM DECIMAL_UDF; + +-- count +EXPLAIN SELECT COUNT(key) FROM DECIMAL_UDF; +SELECT COUNT(key) FROM DECIMAL_UDF; + +DROP TABLE IF EXISTS DECIMAL_UDF; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/default_partition_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/default_partition_name.q new file mode 100644 index 0000000000000..6a82318787979 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/default_partition_name.q @@ -0,0 +1,7 @@ +create table default_partition_name (key int, value string) partitioned by (ds string); + +set hive.exec.default.partition.name='some_other_default_partition_name'; + +alter table default_partition_name add partition(ds='__HIVE_DEFAULT_PARTITION__'); + +show partitions default_partition_name; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/delimiter.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/delimiter.q new file mode 100644 index 0000000000000..112ac57c3be5b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/delimiter.q @@ -0,0 +1,12 @@ +create table impressions (imp string, msg string) +row format delimited +fields terminated by '\t' +lines terminated by '\n' +stored as textfile; +LOAD DATA LOCAL INPATH '../data/files/in7.txt' INTO TABLE impressions; + +select * from impressions; + +select imp,msg from impressions; + +drop table impressions; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/desc_non_existent_tbl.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/desc_non_existent_tbl.q new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_comment_indent.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_comment_indent.q new file mode 100644 index 0000000000000..310b694874f8d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_comment_indent.q @@ -0,0 +1,14 @@ +-- test comment indent processing for multi-line comments + +CREATE TABLE test_table( + col1 INT COMMENT 'col1 one line comment', + col2 STRING COMMENT 'col2 +two lines comment', + col3 STRING COMMENT 'col3 +three lines +comment') +COMMENT 'table comment +two lines'; + +DESCRIBE test_table; +DESCRIBE FORMATTED test_table; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_comment_nonascii.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_comment_nonascii.q new file mode 100644 index 0000000000000..9027d1ee46511 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_comment_nonascii.q @@ -0,0 +1,9 @@ +-- HIVE-2905 showing non-ascii comments + +create table dummy (col1 string, col2 string, col3 string); + +alter table dummy change col1 col1 string comment '한글_col1'; +alter table dummy change col2 col2 string comment '漢字_col2'; +alter table dummy change col3 col3 string comment 'わご_col3'; + +DESCRIBE FORMATTED dummy; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_database_json.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_database_json.q new file mode 100644 index 0000000000000..2f4cedcdc4ff7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_database_json.q @@ -0,0 +1,23 @@ +set hive.ddl.output.format=json; + +CREATE DATABASE IF NOT EXISTS jsondb1 COMMENT 'Test database' LOCATION '${hiveconf:hive.metastore.warehouse.dir}/jsondb1' WITH DBPROPERTIES ('id' = 'jsondb1'); + +DESCRIBE DATABASE jsondb1; + +DESCRIBE DATABASE EXTENDED jsondb1; + +SHOW DATABASES; + +SHOW DATABASES LIKE 'json*'; + +DROP DATABASE jsondb1; + +CREATE DATABASE jsondb1; + +DESCRIBE DATABASE jsondb1; + +DESCRIBE DATABASE EXTENDED jsondb1; + +DROP DATABASE jsondb1; + +set hive.ddl.output.format=text; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_formatted_view_partitioned.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_formatted_view_partitioned.q new file mode 100644 index 0000000000000..241ff1113286e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_formatted_view_partitioned.q @@ -0,0 +1,15 @@ +DROP VIEW view_partitioned; + +CREATE VIEW view_partitioned +PARTITIONED ON (value) +AS +SELECT key, value +FROM src +WHERE key=86; + +ALTER VIEW view_partitioned +ADD PARTITION (value='val_86'); + +DESCRIBE FORMATTED view_partitioned PARTITION (value='val_86'); + +DROP VIEW view_partitioned; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_formatted_view_partitioned_json.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_formatted_view_partitioned_json.q new file mode 100644 index 0000000000000..150ff70641198 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_formatted_view_partitioned_json.q @@ -0,0 +1,17 @@ +set hive.ddl.output.format=json; + +DROP VIEW view_partitioned; + +CREATE VIEW view_partitioned +PARTITIONED ON (value) +AS +SELECT key, value +FROM src +WHERE key=86; + +ALTER VIEW view_partitioned +ADD PARTITION (value='val_86'); + +DESCRIBE FORMATTED view_partitioned PARTITION (value='val_86'); + +DROP VIEW view_partitioned; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_pretty.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_pretty.q new file mode 100644 index 0000000000000..89db075fd6d1b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_pretty.q @@ -0,0 +1,80 @@ +-- test comment indent processing for multi-line comments + +CREATE TABLE test_table( + col1 INT COMMENT 'col1 one line comment', + col2 STRING COMMENT 'col2 +two lines comment', + col3 STRING COMMENT 'col3 +three lines +comment', + col4 STRING COMMENT 'col4 very long comment that is greater than 80 chars and is likely to spill into multiple lines', + col5 STRING COMMENT 'col5 very long multi-line comment where each line is very long by itself and is likely to spill +into multiple lines. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin in dolor nisl, sodales +adipiscing tortor. Integer venenatis', + col6 STRING COMMENT 'This comment has a very long single word ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz123 which will not fit in a line by itself for small column widths.', + col7_NoComment STRING) +COMMENT 'table comment +two lines'; + +SET hive.cli.pretty.output.num.cols=80; + +-- There will be an extra tab at the end of each comment line in the output. +-- This is because DESCRIBE command separates the column, type and +-- comment field using a \t. DESCRIBE PRETTY uses spaces instead +-- of \t to separate columns. Hive gets confused when it parses the string +-- table description constructed in MetaDataPrettyFormatUtils, and adds a tab +-- at the end of each line. +-- There are three ways to address this: +-- 1. Pad each row to the full terminal width with extra spaces. +-- 2. Assume a maximum tab width of 8, and subtract 2 * 8 spaces from the +-- available line width. This approach wastes upto 2 * 8 - 2 columns. +-- 3. Since the pretty output is meant only for human consumption, do nothing. +-- Just add a comment to the unit test file explaining what is happening. +-- This is the approach chosen. + +DESCRIBE PRETTY test_table; + +SET hive.cli.pretty.output.num.cols=200; +DESCRIBE PRETTY test_table; + +SET hive.cli.pretty.output.num.cols=50; +DESCRIBE PRETTY test_table; + +SET hive.cli.pretty.output.num.cols=60; +DESCRIBE PRETTY test_table; + +CREATE TABLE test_table_very_long_column_name( + col1 INT COMMENT 'col1 one line comment', + col2_abcdefghiklmnopqrstuvxyz STRING COMMENT 'col2 +two lines comment', + col3 STRING COMMENT 'col3 +three lines +comment', + col4 STRING COMMENT 'col4 very long comment that is greater than 80 chars and is likely to spill into multiple lines') +; + +SET hive.cli.pretty.output.num.cols=80; +DESCRIBE PRETTY test_table_very_long_column_name; + +SET hive.cli.pretty.output.num.cols=20; +DESCRIBE PRETTY test_table_very_long_column_name; + +CREATE TABLE test_table_partitioned( + col1 INT COMMENT 'col1 one line comment', + col2 STRING COMMENT 'col2 +two lines comment', + col3 STRING COMMENT 'col3 +three lines +comment', + col4 STRING COMMENT 'col4 very long comment that is greater than 80 chars and is likely to spill into multiple lines', + col5 STRING COMMENT 'col5 very long multi-line comment where each line is very long by itself and is likely to spill +into multiple lines. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin in dolor nisl, sodales +adipiscing tortor. Integer venenatis', + col6 STRING COMMENT 'This comment has a very long single word ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz123 which will not fit in a line by itself for small column widths.', + col7_NoComment STRING) +COMMENT 'table comment +two lines' +PARTITIONED BY (ds STRING); + +SET hive.cli.pretty.output.num.cols=60; +DESCRIBE PRETTY test_table_partitioned; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_syntax.q new file mode 100644 index 0000000000000..c9255b5d3ceac --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_syntax.q @@ -0,0 +1,46 @@ + +CREATE DATABASE db1; +CREATE TABLE db1.t1(key1 INT, value1 STRING) PARTITIONED BY (ds STRING, part STRING); + +use db1; + +ALTER TABLE t1 ADD PARTITION (ds='3', part='3'); +ALTER TABLE t1 ADD PARTITION (ds='4', part='4'); +ALTER TABLE t1 ADD PARTITION (ds='4', part='5'); + +-- describe table +DESCRIBE t1; +DESCRIBE EXTENDED t1; +DESCRIBE FORMATTED t1; + +-- describe database.table +DESCRIBE db1.t1; +DESCRIBE EXTENDED db1.t1; +DESCRIBE FORMATTED db1.t1; + +-- describe table column +DESCRIBE t1 key1; +DESCRIBE EXTENDED t1 key1; +DESCRIBE FORMATTED t1 key1; + +-- describe database.tabe column +DESCRIBE db1.t1 key1; +DESCRIBE EXTENDED db1.t1 key1; +DESCRIBE FORMATTED db1.t1 key1; + +-- describe table.column +-- after first checking t1.key1 for database.table not valid +-- fall back to the old syntax table.column +DESCRIBE t1.key1; +DESCRIBE EXTENDED t1.key1; +DESCRIBE FORMATTED t1.key1; + +-- describe table partition +DESCRIBE t1 PARTITION(ds='4', part='5'); +DESCRIBE EXTENDED t1 PARTITION(ds='4', part='5'); +DESCRIBE FORMATTED t1 PARTITION(ds='4', part='5'); + +-- describe database.table partition +DESCRIBE db1.t1 PARTITION(ds='4', part='5'); +DESCRIBE EXTENDED db1.t1 PARTITION(ds='4', part='5'); +DESCRIBE FORMATTED db1.t1 PARTITION(ds='4', part='5'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_table.q new file mode 100644 index 0000000000000..f72cae9d8003f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_table.q @@ -0,0 +1,19 @@ +describe srcpart; +describe srcpart.key; +describe srcpart PARTITION(ds='2008-04-08', hr='12'); + +describe extended srcpart; +describe extended srcpart.key; +describe extended srcpart PARTITION(ds='2008-04-08', hr='12'); + +describe formatted srcpart; +describe formatted srcpart.key; +describe formatted srcpart PARTITION(ds='2008-04-08', hr='12'); + +create table srcpart_serdeprops like srcpart; +alter table srcpart_serdeprops set serdeproperties('xyz'='0'); +alter table srcpart_serdeprops set serdeproperties('pqrs'='1'); +alter table srcpart_serdeprops set serdeproperties('abcd'='2'); +alter table srcpart_serdeprops set serdeproperties('A1234'='3'); +describe formatted srcpart_serdeprops; +drop table srcpart_serdeprops; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_table_json.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_table_json.q new file mode 100644 index 0000000000000..f19e98d7985ce --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_table_json.q @@ -0,0 +1,19 @@ +set hive.ddl.output.format=json; + +CREATE TABLE IF NOT EXISTS jsontable (key INT, value STRING) COMMENT 'json table' STORED AS TEXTFILE; + +SHOW TABLES; + +SHOW TABLES LIKE 'json*'; + +SHOW TABLE EXTENDED LIKE 'json*'; + +ALTER TABLE jsontable SET TBLPROPERTIES ('id' = 'jsontable'); + +DESCRIBE jsontable; + +DESCRIBE extended jsontable; + +DROP TABLE jsontable; + +set hive.ddl.output.format=text; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_xpath.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_xpath.q new file mode 100644 index 0000000000000..469cbf43c1141 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/describe_xpath.q @@ -0,0 +1,17 @@ +-- Describe a list structure in a thrift table +describe src_thrift.lint; + +-- Describe the element of a list +describe src_thrift.lint.$elem$; + +-- Describe the key of a map +describe src_thrift.mStringString.$key$; + +-- Describe the value of a map +describe src_thrift.mStringString.$value$; + +-- Describe a complex element of a list +describe src_thrift.lintString.$elem$; + +-- Describe a member of an element of a list +describe src_thrift.lintString.$elem$.myint; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/diff_part_input_formats.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/diff_part_input_formats.q new file mode 100644 index 0000000000000..c5741d005010d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/diff_part_input_formats.q @@ -0,0 +1,9 @@ +-- Tests the case where a table is changed from sequence file to a RC file, +-- resulting in partitions in both file formats. If no valid partitions are +-- selected, then it should still use RC file for reading the dummy partition. +CREATE TABLE part_test (key STRING, value STRING) PARTITIONED BY (ds STRING) STORED AS SEQUENCEFILE; +ALTER TABLE part_test ADD PARTITION(ds='1'); +ALTER TABLE part_test SET FILEFORMAT RCFILE; +ALTER TABLE part_test ADD PARTITION(ds='2'); +SELECT count(1) FROM part_test WHERE ds='3'; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disable_file_format_check.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disable_file_format_check.q new file mode 100644 index 0000000000000..6ea4156b3493e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disable_file_format_check.q @@ -0,0 +1,9 @@ +set hive.fileformat.check = false; +create table kv_fileformat_check_txt (key string, value string) stored as textfile; +load data local inpath '../data/files/kv1.seq' overwrite into table kv_fileformat_check_txt; + +create table kv_fileformat_check_seq (key string, value string) stored as sequencefile; +load data local inpath '../data/files/kv1.txt' overwrite into table kv_fileformat_check_seq; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disable_merge_for_bucketing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disable_merge_for_bucketing.q new file mode 100644 index 0000000000000..471d296b8d2d0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disable_merge_for_bucketing.q @@ -0,0 +1,21 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.enforce.bucketing = true; +set hive.exec.reducers.max = 1; +set hive.merge.mapredfiles=true; + + +CREATE TABLE bucket2_1(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS; + +explain extended +insert overwrite table bucket2_1 +select * from src; + +insert overwrite table bucket2_1 +select * from src; + +explain +select * from bucket2_1 tablesample (bucket 1 out of 2) s order by key; + +select * from bucket2_1 tablesample (bucket 1 out of 2) s order by key; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disallow_incompatible_type_change_off.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disallow_incompatible_type_change_off.q new file mode 100644 index 0000000000000..2a1e7276cacfe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/disallow_incompatible_type_change_off.q @@ -0,0 +1,7 @@ +SET hive.metastore.disallow.incompatible.col.type.changes=false; +SELECT * FROM src LIMIT 1; +CREATE TABLE test_table123 (a INT, b MAP) PARTITIONED BY (ds STRING) STORED AS SEQUENCEFILE; +INSERT OVERWRITE TABLE test_table123 PARTITION(ds="foo1") SELECT 1, MAP("a1", "b1") FROM src LIMIT 1; +SELECT * from test_table123 WHERE ds="foo1"; +-- This should now work as hive.metastore.disallow.incompatible.col.type.changes is false +ALTER TABLE test_table123 REPLACE COLUMNS (a INT, b STRING); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/driverhook.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/driverhook.q new file mode 100644 index 0000000000000..191c15436b614 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/driverhook.q @@ -0,0 +1,6 @@ +SET hive.exec.driver.run.hooks=org.apache.hadoop.hive.ql.hooks.DriverTestHook; + +-- This query should appear in the Hive CLI output. +-- We test DriverTestHook, which does exactly that. +-- This should not break. +SELECT * FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_database_removes_partition_dirs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_database_removes_partition_dirs.q new file mode 100644 index 0000000000000..a5f5189491fed --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_database_removes_partition_dirs.q @@ -0,0 +1,27 @@ +-- This test verifies that if a partition exists outside a table's current location when the +-- database is dropped the partition's location is dropped as well. + +CREATE DATABASE test_database; + +USE test_database; + +CREATE TABLE test_table (key STRING, value STRING) +PARTITIONED BY (part STRING) +STORED AS RCFILE +LOCATION 'file:${system:test.tmp.dir}/drop_database_removes_partition_dirs_table'; + +ALTER TABLE test_table ADD PARTITION (part = '1') +LOCATION 'file:${system:test.tmp.dir}/drop_database_removes_partition_dirs_table2/part=1'; + +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT * FROM default.src; + +dfs -ls ${system:test.tmp.dir}/drop_database_removes_partition_dirs_table2; + +USE default; + +DROP DATABASE test_database CASCADE; + +dfs -ls ${system:test.tmp.dir}/drop_database_removes_partition_dirs_table2; + +dfs -rmr ${system:test.tmp.dir}/drop_database_removes_partition_dirs_table2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_function.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_function.q new file mode 100644 index 0000000000000..18c428ce20a55 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_function.q @@ -0,0 +1,2 @@ +SET hive.exec.drop.ignorenonexistent=false; +DROP TEMPORARY FUNCTION IF EXISTS UnknownFunction; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_index.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_index.q new file mode 100644 index 0000000000000..df23f8d33f0c2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_index.q @@ -0,0 +1,2 @@ +SET hive.exec.drop.ignorenonexistent=false; +DROP INDEX IF EXISTS UnknownIndex ON src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_index_removes_partition_dirs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_index_removes_partition_dirs.q new file mode 100644 index 0000000000000..ed471db2cffb7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_index_removes_partition_dirs.q @@ -0,0 +1,22 @@ +-- This test verifies that if a partition exists outside an index table's current location when the +-- index is dropped the partition's location is dropped as well. + +CREATE TABLE test_table (key STRING, value STRING) +PARTITIONED BY (part STRING) +STORED AS RCFILE +LOCATION 'file:${system:test.tmp.dir}/drop_database_removes_partition_dirs_table'; + +CREATE INDEX test_index ON +TABLE test_table(key) AS 'compact' WITH DEFERRED REBUILD +IN TABLE test_index_table; + +ALTER TABLE test_index_table ADD PARTITION (part = '1') +LOCATION 'file:${system:test.tmp.dir}/drop_index_removes_partition_dirs_index_table2/part=1'; + +dfs -ls ${system:test.tmp.dir}/drop_index_removes_partition_dirs_index_table2; + +DROP INDEX test_index ON test_table; + +dfs -ls ${system:test.tmp.dir}/drop_index_removes_partition_dirs_index_table2; + +dfs -rmr ${system:test.tmp.dir}/drop_index_removes_partition_dirs_index_table2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_multi_partitions.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_multi_partitions.q new file mode 100644 index 0000000000000..14e235660929f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_multi_partitions.q @@ -0,0 +1,17 @@ +create table mp (a string) partitioned by (b string, c string); + +alter table mp add partition (b='1', c='1'); +alter table mp add partition (b='1', c='2'); +alter table mp add partition (b='2', c='2'); + +show partitions mp; + +explain extended alter table mp drop partition (b='1'); +alter table mp drop partition (b='1'); + +show partitions mp; + +set hive.exec.drop.ignorenonexistent=false; +alter table mp drop if exists partition (b='3'); + +show partitions mp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter.q new file mode 100644 index 0000000000000..04fbcae0a6586 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter.q @@ -0,0 +1,37 @@ +create table ptestfilter (a string, b int) partitioned by (c string, d string); +describe ptestfilter; + +alter table ptestfilter add partition (c='US', d=1); +alter table ptestfilter add partition (c='US', d=2); +alter table ptestFilter add partition (c='Uganda', d=2); +alter table ptestfilter add partition (c='Germany', d=2); +alter table ptestfilter add partition (c='Canada', d=3); +alter table ptestfilter add partition (c='Russia', d=3); +alter table ptestfilter add partition (c='Greece', d=2); +alter table ptestfilter add partition (c='India', d=3); +alter table ptestfilter add partition (c='France', d=4); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c='US', d<'2'); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c>='US', d<='2'); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c >'India'); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c >='India'), + partition (c='Greece', d='2'); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c != 'France'); +show partitions ptestfilter; + +set hive.exec.drop.ignorenonexistent=false; +alter table ptestfilter drop if exists partition (c='US'); +show partitions ptestfilter; + +drop table ptestfilter; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter2.q new file mode 100644 index 0000000000000..798aa6d51a185 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter2.q @@ -0,0 +1,20 @@ +create table ptestfilter (a string, b int) partitioned by (c int, d int); +describe ptestfilter; + +alter table ptestfilter add partition (c=1, d=1); +alter table ptestfilter add partition (c=1, d=2); +alter table ptestFilter add partition (c=2, d=1); +alter table ptestfilter add partition (c=2, d=2); +alter table ptestfilter add partition (c=3, d=1); +alter table ptestfilter add partition (c=3, d=2); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c=1, d=1); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c=2); +show partitions ptestfilter; + +drop table ptestfilter; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter3.q new file mode 100644 index 0000000000000..2d41da4627bdd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_filter3.q @@ -0,0 +1,20 @@ +create table ptestfilter (a string, b int) partitioned by (c string, d int); +describe ptestfilter; + +alter table ptestfilter add partition (c='1', d=1); +alter table ptestfilter add partition (c='1', d=2); +alter table ptestFilter add partition (c='2', d=1); +alter table ptestfilter add partition (c='2', d=2); +alter table ptestfilter add partition (c='3', d=1); +alter table ptestfilter add partition (c='3', d=2); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c='1', d=1); +show partitions ptestfilter; + +alter table ptestfilter drop partition (c='2'); +show partitions ptestfilter; + +drop table ptestfilter; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_ignore_protection.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_ignore_protection.q new file mode 100644 index 0000000000000..e825df9e5b5b4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_partitions_ignore_protection.q @@ -0,0 +1,10 @@ +create table tbl_protectmode_no_drop (c1 string,c2 string) partitioned by (p string); +alter table tbl_protectmode_no_drop add partition (p='p1'); +alter table tbl_protectmode_no_drop partition (p='p1') enable no_drop; +desc extended tbl_protectmode_no_drop partition (p='p1'); + +-- The partition will be dropped, even though we have enabled no_drop +-- as 'ignore protection' has been specified in the command predicate +alter table tbl_protectmode_no_drop drop partition (p='p1') ignore protection; +drop table tbl_protectmode_no_drop; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table.q new file mode 100644 index 0000000000000..6d189fc43c6b7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table.q @@ -0,0 +1,2 @@ +SET hive.exec.drop.ignorenonexistent=false; +DROP TABLE IF EXISTS UnknownTable; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table2.q new file mode 100644 index 0000000000000..a3e8c5c3bd5eb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table2.q @@ -0,0 +1,15 @@ +SET hive.metastore.batch.retrieve.max=1; +create table if not exists temp(col STRING) partitioned by (p STRING); +alter table temp add if not exists partition (p ='p1'); +alter table temp add if not exists partition (p ='p2'); +alter table temp add if not exists partition (p ='p3'); + +show partitions temp; + +drop table temp; + +create table if not exists temp(col STRING) partitioned by (p STRING); + +show partitions temp; + +drop table temp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table_removes_partition_dirs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table_removes_partition_dirs.q new file mode 100644 index 0000000000000..102b3ef5f5e3a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_table_removes_partition_dirs.q @@ -0,0 +1,21 @@ +-- This test verifies that if a partition exists outside the table's current location when the +-- table is dropped the partition's location is dropped as well. + +CREATE TABLE test_table (key STRING, value STRING) +PARTITIONED BY (part STRING) +STORED AS RCFILE +LOCATION 'file:${system:test.tmp.dir}/drop_table_removes_partition_dirs_table'; + +ALTER TABLE test_table ADD PARTITION (part = '1') +LOCATION 'file:${system:test.tmp.dir}/drop_table_removes_partition_dirs_table2/part=1'; + +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT * FROM src; + +dfs -ls ${system:test.tmp.dir}/drop_table_removes_partition_dirs_table2; + +DROP TABLE test_table; + +dfs -ls ${system:test.tmp.dir}/drop_table_removes_partition_dirs_table2; + +dfs -rmr ${system:test.tmp.dir}/drop_table_removes_partition_dirs_table2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_udf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_udf.q new file mode 100644 index 0000000000000..8aaa66e3e694d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_udf.q @@ -0,0 +1,6 @@ +CREATE TEMPORARY FUNCTION test_translate AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestTranslate'; + +EXPLAIN +DROP TEMPORARY FUNCTION test_translate; + +DROP TEMPORARY FUNCTION test_translate; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_view.q new file mode 100644 index 0000000000000..4ff097541ee99 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/drop_view.q @@ -0,0 +1,2 @@ +SET hive.exec.drop.ignorenonexistent=false; +DROP VIEW IF EXISTS UnknownView; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/dynamic_partition_skip_default.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/dynamic_partition_skip_default.q new file mode 100644 index 0000000000000..397a2200a8972 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/dynamic_partition_skip_default.q @@ -0,0 +1,19 @@ +create table dynamic_part_table(intcol int) partitioned by (partcol1 int, partcol2 int); + +set hive.exec.dynamic.partition.mode=nonstrict; + +insert into table dynamic_part_table partition(partcol1, partcol2) select 1, 1, 1 from src where key=150; + +insert into table dynamic_part_table partition(partcol1, partcol2) select 1, NULL, 1 from src where key=150; + +insert into table dynamic_part_table partition(partcol1, partcol2) select 1, 1, NULL from src where key=150; + +insert into table dynamic_part_table partition(partcol1, partcol2) select 1, NULL, NULL from src where key=150; + +explain extended select intcol from dynamic_part_table where partcol1=1 and partcol2=1; + +set hive.exec.dynamic.partition.mode=strict; + +explain extended select intcol from dynamic_part_table where partcol1=1 and partcol2=1; + +explain extended select intcol from dynamic_part_table where (partcol1=1 and partcol2=1)or (partcol1=1 and partcol2='__HIVE_DEFAULT_PARTITION__'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/enforce_order.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/enforce_order.q new file mode 100644 index 0000000000000..6a303c3ad2139 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/enforce_order.q @@ -0,0 +1,13 @@ +drop table table_asc; +drop table table_desc; + +set hive.enforce.sorting = true; + +create table table_asc(key string, value string) clustered by (key) sorted by (key ASC) into 1 BUCKETS; +create table table_desc(key string, value string) clustered by (key) sorted by (key DESC) into 1 BUCKETS; + +insert overwrite table table_asc select key, value from src; +insert overwrite table table_desc select key, value from src; + +select * from table_asc limit 10; +select * from table_desc limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape1.q new file mode 100644 index 0000000000000..a7f4cf79c980f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape1.q @@ -0,0 +1,28 @@ +set hive.exec.dynamic.partition=true; +set hive.exec.max.dynamic.partitions.pernode=200; + +-- EXCLUDE_OS_WINDOWS +-- excluded on windows because of difference in file name encoding logic + +DROP TABLE escape1; +DROP TABLE escape_raw; + +CREATE TABLE escape_raw (s STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/escapetest.txt' INTO TABLE escape_raw; + +SELECT count(*) from escape_raw; +SELECT * from escape_raw; + +CREATE TABLE escape1 (a STRING) PARTITIONED BY (ds STRING, part STRING); +INSERT OVERWRITE TABLE escape1 PARTITION (ds='1', part) SELECT '1', s from +escape_raw; + +SELECT count(*) from escape1; +SELECT * from escape1; +SHOW PARTITIONS escape1; + +ALTER TABLE escape1 DROP PARTITION (ds='1'); +SHOW PARTITIONS escape1; + +DROP TABLE escape1; +DROP TABLE escape_raw; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape2.q new file mode 100644 index 0000000000000..473cbf8c94e4e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape2.q @@ -0,0 +1,122 @@ +set hive.exec.dynamic.partition=true; +set hive.exec.max.dynamic.partitions.pernode=200; +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set hive.default.fileformat=RCFILE; + +-- EXCLUDE_OS_WINDOWS +-- excluded on windows because of difference in file name encoding logic + +DROP TABLE IF EXISTS escape2; +DROP TABLE IF EXISTS escape_raw; + +CREATE TABLE escape_raw (s STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/escapetest.txt' INTO TABLE escape_raw; + +SELECT count(*) from escape_raw; +SELECT * from escape_raw; + +CREATE TABLE escape2(a STRING) PARTITIONED BY (ds STRING, part STRING); +INSERT OVERWRITE TABLE escape2 PARTITION (ds='1', part) SELECT '1', s from +escape_raw; + +SELECT count(*) from escape2; +SELECT * from escape2; +SHOW PARTITIONS escape2; + +-- ASCII values 1-31, 59, 92, 127 were not included in the below commands + +ALTER table escape2 PARTITION (ds='1', part=' ') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='!') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='"') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='#') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='$') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='%') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='&') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part="'") CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='(') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part=')') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='*') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='+') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part=',') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='-') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='.') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='/') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='0') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='1') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='2') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='3') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='4') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='5') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='6') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='7') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='8') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='9') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part=':') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='<') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='=') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='>') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='?') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='@') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='A') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='B') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='C') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='D') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='E') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='F') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='G') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='H') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='I') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='J') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='K') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='L') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='M') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='N') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='O') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='P') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='Q') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='R') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='S') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='T') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='U') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='V') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='W') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='X') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='Y') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='Z') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='[') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part=']') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='_') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='`') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='a') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='b') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='c') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='d') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='e') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='f') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='g') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='h') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='i') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='j') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='k') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='l') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='m') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='n') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='o') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='p') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='q') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='r') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='s') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='t') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='u') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='v') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='w') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='x') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='y') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='z') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='{') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='|') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='}') CONCATENATE; +ALTER TABLE escape2 PARTITION (ds='1', part='~') CONCATENATE; + +DROP TABLE escape2; +DROP TABLE escape_raw; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_clusterby1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_clusterby1.q new file mode 100644 index 0000000000000..13ea15153909a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_clusterby1.q @@ -0,0 +1,6 @@ +-- escaped column names in cluster by are not working jira 3267 +explain +select key, value from src cluster by key, value; + +explain +select `key`, value from src cluster by `key`, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_distributeby1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_distributeby1.q new file mode 100644 index 0000000000000..40ed2de635367 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_distributeby1.q @@ -0,0 +1,6 @@ +-- escaped column names in distribute by by are not working jira 3267 +explain +select key, value from src distribute by key, value; + +explain +select `key`, value from src distribute by `key`, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_orderby1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_orderby1.q new file mode 100644 index 0000000000000..39a1c4c787e6a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_orderby1.q @@ -0,0 +1,6 @@ +-- escaped column names in order by are not working jira 3267 +explain +select key, value from src order by key, value; + +explain +select `key`, value from src order by `key`, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_sortby1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_sortby1.q new file mode 100644 index 0000000000000..6b487c8a47d21 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/escape_sortby1.q @@ -0,0 +1,6 @@ +-- escaped column names in sort by are not working jira 3267 +explain +select key, value from src sort by key, value; + +explain +select `key`, value from src sort by `key`, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition.q new file mode 100644 index 0000000000000..6e8bf8ebc1fa2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition.q @@ -0,0 +1,12 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING); +CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05'); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE exchange_part_test2; +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition2.q new file mode 100644 index 0000000000000..27b335a3d7844 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition2.q @@ -0,0 +1,12 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1'); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05', hr='1') WITH TABLE exchange_part_test2; +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition3.q new file mode 100644 index 0000000000000..7b9060d420a1e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exchange_partition3.q @@ -0,0 +1,14 @@ +CREATE TABLE exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +CREATE TABLE exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING, hr STRING); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='1'); +ALTER TABLE exchange_part_test1 ADD PARTITION (ds='2013-04-05', hr='2'); +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; + +-- This will exchange both partitions hr=1 and hr=2 +ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE exchange_part_test2; +SHOW PARTITIONS exchange_part_test1; +SHOW PARTITIONS exchange_part_test2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_00_nonpart_empty.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_00_nonpart_empty.q new file mode 100644 index 0000000000000..7fa96b629a0fa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_00_nonpart_empty.q @@ -0,0 +1,23 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_department'; +describe extended exim_department; +show table extended like exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; +select * from exim_department; +drop table exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_01_nonpart.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_01_nonpart.q new file mode 100644 index 0000000000000..9920e778d18a6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_01_nonpart.q @@ -0,0 +1,24 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_department'; +describe extended exim_department; +show table extended like exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; +select * from exim_department; +drop table exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_02_00_part_empty.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_02_00_part_empty.q new file mode 100644 index 0000000000000..4017c83aa3dd4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_02_00_part_empty.q @@ -0,0 +1,25 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_02_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_02_part.q new file mode 100644 index 0000000000000..21138f0263418 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_02_part.q @@ -0,0 +1,27 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_03_nonpart_over_compat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_03_nonpart_over_compat.q new file mode 100644 index 0000000000000..5f6bdee83cc90 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_03_nonpart_over_compat.q @@ -0,0 +1,26 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int comment "department identifier") + stored as textfile + tblproperties("maker"="krishna"); +import from 'ql/test/data/exports/exim_department'; +describe extended exim_department; +select * from exim_department; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_04_all_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_04_all_part.q new file mode 100644 index 0000000000000..69c6faa30a07c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_04_all_part.q @@ -0,0 +1,33 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_04_evolved_parts.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_04_evolved_parts.q new file mode 100644 index 0000000000000..cdc02fa25c169 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_04_evolved_parts.q @@ -0,0 +1,39 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee (emp_id int comment 'employee id', emp_name string, emp_dob string comment 'employee date of birth', emp_sex string comment 'M/F') + comment 'employee table' + partitioned by (emp_country string comment '2-char code', emp_state string comment '2-char code') + clustered by (emp_sex) sorted by (emp_id ASC) into 10 buckets + row format serde "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" with serdeproperties ('serialization.format'='1') + stored as rcfile; + +alter table exim_employee add columns (emp_dept int); +alter table exim_employee clustered by (emp_sex, emp_dept) sorted by (emp_id desc) into 5 buckets; +alter table exim_employee add partition (emp_country='in', emp_state='tn'); + +alter table exim_employee set serde "org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe" with serdeproperties ('serialization.format'='2'); +alter table exim_employee set fileformat + inputformat "org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat" + outputformat "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat"; + +alter table exim_employee add partition (emp_country='in', emp_state='ka'); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +describe extended exim_employee partition (emp_country='in', emp_state='tn'); +describe extended exim_employee partition (emp_country='in', emp_state='ka'); +show table extended like exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_05_some_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_05_some_part.q new file mode 100644 index 0000000000000..50a59463b1870 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_05_some_part.q @@ -0,0 +1,33 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee partition (emp_state="ka") to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_06_one_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_06_one_part.q new file mode 100644 index 0000000000000..5136090929fc5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_06_one_part.q @@ -0,0 +1,33 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee partition (emp_country="in",emp_state="ka") to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_07_all_part_over_nonoverlap.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_07_all_part_over_nonoverlap.q new file mode 100644 index 0000000000000..5b9d4ddc03c59 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_07_all_part_over_nonoverlap.q @@ -0,0 +1,39 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +create table exim_employee ( emp_id int comment "employee id") + comment "table of employees" + partitioned by (emp_country string comment "iso code", emp_state string comment "free-form text") + stored as textfile + tblproperties("maker"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="al"); +import from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +select * from exim_employee; +drop table exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_08_nonpart_rename.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_08_nonpart_rename.q new file mode 100644 index 0000000000000..173f1569c501a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_08_nonpart_rename.q @@ -0,0 +1,28 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee,exim_imported_dept; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; +create table exim_department ( dep_id int comment "department id") + partitioned by (emp_org string) + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department partition (emp_org="hr"); +import table exim_imported_dept from 'ql/test/data/exports/exim_department'; +describe extended exim_imported_dept; +select * from exim_imported_dept; +drop table exim_imported_dept; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_09_part_spec_nonoverlap.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_09_part_spec_nonoverlap.q new file mode 100644 index 0000000000000..178b76674d862 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_09_part_spec_nonoverlap.q @@ -0,0 +1,40 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +import table exim_employee partition (emp_country="us", emp_state="tn") from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +select * from exim_employee; +drop table exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_10_external_managed.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_10_external_managed.q new file mode 100644 index 0000000000000..413f2aa4762f5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_10_external_managed.q @@ -0,0 +1,27 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_department/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; +create external table exim_department ( dep_id int comment "department id") + stored as textfile + location 'ql/test/data/tablestore/exim_department' + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; + +create database importer; +use importer; + +import from 'ql/test/data/exports/exim_department'; +describe extended exim_department; +select * from exim_department; +drop table exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_11_managed_external.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_11_managed_external.q new file mode 100644 index 0000000000000..f3b2896a322a5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_11_managed_external.q @@ -0,0 +1,24 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +import external table exim_department from 'ql/test/data/exports/exim_department'; +describe extended exim_department; +select * from exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; +select * from exim_department; +drop table exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_12_external_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_12_external_location.q new file mode 100644 index 0000000000000..37d063432e16a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_12_external_location.q @@ -0,0 +1,29 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_department/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; + +import external table exim_department from 'ql/test/data/exports/exim_department' + location 'ql/test/data/tablestore/exim_department'; +describe extended exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; +select * from exim_department; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; +select * from exim_department; +drop table exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_13_managed_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_13_managed_location.q new file mode 100644 index 0000000000000..fb5058b840bae --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_13_managed_location.q @@ -0,0 +1,29 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_department/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; + +import table exim_department from 'ql/test/data/exports/exim_department' + location 'ql/test/data/tablestore/exim_department'; +describe extended exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; +select * from exim_department; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; +select * from exim_department; +drop table exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_14_managed_location_over_existing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_14_managed_location_over_existing.q new file mode 100644 index 0000000000000..031b6bda6cece --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_14_managed_location_over_existing.q @@ -0,0 +1,33 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_department/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; + +create table exim_department ( dep_id int comment "department id") + stored as textfile + location 'ql/test/data/tablestore/exim_department' + tblproperties("creator"="krishna"); +import table exim_department from 'ql/test/data/exports/exim_department' + location 'ql/test/data/tablestore/exim_department'; +describe extended exim_department; +dfs -rmr ../build/ql/test/data/exports/exim_department; +select * from exim_department; +dfs -rmr ../build/ql/test/data/tablestore/exim_department; +select * from exim_department; +drop table exim_department; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_15_external_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_15_external_part.q new file mode 100644 index 0000000000000..ff088c70d7ffb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_15_external_part.q @@ -0,0 +1,50 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_employee/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; + +create external table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + location 'ql/test/data/tablestore/exim_employee' + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +import external table exim_employee partition (emp_country="us", emp_state="tn") + from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +select * from exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; +select * from exim_employee; +drop table exim_employee; + + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_16_part_external.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_16_part_external.q new file mode 100644 index 0000000000000..6f4ee7a01c256 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_16_part_external.q @@ -0,0 +1,49 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_employee/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore2/exim_employee/temp; +dfs -rmr ../build/ql/test/data/tablestore2/exim_employee; + +create external table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + location 'ql/test/data/tablestore2/exim_employee' + tblproperties("creator"="krishna"); +import table exim_employee partition (emp_country="us", emp_state="tn") + from 'ql/test/data/exports/exim_employee' + location 'ql/test/data/tablestore/exim_employee'; +show table extended like exim_employee; +show table extended like exim_employee partition (emp_country="us", emp_state="tn"); +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; +select * from exim_employee; +drop table exim_employee; +dfs -rmr ../build/ql/test/data/tablestore2/exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_17_part_managed.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_17_part_managed.q new file mode 100644 index 0000000000000..56ec152948aed --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_17_part_managed.q @@ -0,0 +1,48 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_employee/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +import table exim_employee partition (emp_country="us", emp_state="tn") + from 'ql/test/data/exports/exim_employee' + location 'ql/test/data/tablestore/exim_employee'; +alter table exim_employee add partition (emp_country="us", emp_state="ap") + location 'ql/test/data/tablestore2/exim_employee'; +show table extended like exim_employee; +show table extended like exim_employee partition (emp_country="us", emp_state="tn"); +show table extended like exim_employee partition (emp_country="us", emp_state="ap"); +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_18_part_external.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_18_part_external.q new file mode 100644 index 0000000000000..7aa1297dc7d02 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_18_part_external.q @@ -0,0 +1,36 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +import external table exim_employee partition (emp_country="us", emp_state="tn") + from 'ql/test/data/exports/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +show table extended like exim_employee partition (emp_country="us", emp_state="tn"); +select * from exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_19_00_part_external_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_19_00_part_external_location.q new file mode 100644 index 0000000000000..cb9f8efc087da --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_19_00_part_external_location.q @@ -0,0 +1,38 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test2.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_employee/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; + +import external table exim_employee + from 'ql/test/data/exports/exim_employee' + location 'ql/test/data/tablestore/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +show table extended like exim_employee partition (emp_country="in", emp_state="tn"); +show table extended like exim_employee partition (emp_country="in", emp_state="ka"); +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_19_part_external_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_19_part_external_location.q new file mode 100644 index 0000000000000..bdbd19df70a21 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_19_part_external_location.q @@ -0,0 +1,41 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_employee/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; + +import external table exim_employee partition (emp_country="us", emp_state="tn") + from 'ql/test/data/exports/exim_employee' + location 'ql/test/data/tablestore/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +show table extended like exim_employee partition (emp_country="us", emp_state="tn"); +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_20_part_managed_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_20_part_managed_location.q new file mode 100644 index 0000000000000..eb44961a9b7ca --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_20_part_managed_location.q @@ -0,0 +1,41 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="ka"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="tn"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="us", emp_state="ka"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/tablestore/exim_employee/temp; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; + +import table exim_employee partition (emp_country="us", emp_state="tn") + from 'ql/test/data/exports/exim_employee' + location 'ql/test/data/tablestore/exim_employee'; +describe extended exim_employee; +show table extended like exim_employee; +show table extended like exim_employee partition (emp_country="us", emp_state="tn"); +dfs -rmr ../build/ql/test/data/exports/exim_employee; +select * from exim_employee; +dfs -rmr ../build/ql/test/data/tablestore/exim_employee; +select * from exim_employee; +drop table exim_employee; + +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_21_export_authsuccess.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_21_export_authsuccess.q new file mode 100644 index 0000000000000..822ed70a38c0c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_21_export_authsuccess.q @@ -0,0 +1,15 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; + +create table exim_department ( dep_id int) stored as textfile; +load data local inpath "../data/files/test.dat" into table exim_department; + +set hive.security.authorization.enabled=true; + +grant Select on table exim_department to user hive_test_user; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; + +set hive.security.authorization.enabled=false; +drop table exim_department; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_22_import_exist_authsuccess.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_22_import_exist_authsuccess.q new file mode 100644 index 0000000000000..440d08d2dc7b5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_22_import_exist_authsuccess.q @@ -0,0 +1,26 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int) stored as textfile; +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/temp; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +create table exim_department ( dep_id int) stored as textfile; +set hive.security.authorization.enabled=true; +grant Alter on table exim_department to user hive_test_user; +grant Update on table exim_department to user hive_test_user; +import from 'ql/test/data/exports/exim_department'; + +set hive.security.authorization.enabled=false; +select * from exim_department; +drop table exim_department; +drop database importer; +dfs -rmr ../build/ql/test/data/exports/exim_department; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_23_import_part_authsuccess.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_23_import_part_authsuccess.q new file mode 100644 index 0000000000000..30fc343dd8f9c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_23_import_part_authsuccess.q @@ -0,0 +1,34 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); +load data local inpath "../data/files/test.dat" + into table exim_employee partition (emp_country="in", emp_state="tn"); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_employee/temp; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +export table exim_employee to 'ql/test/data/exports/exim_employee'; +drop table exim_employee; + +create database importer; +use importer; +create table exim_employee ( emp_id int comment "employee id") + comment "employee table" + partitioned by (emp_country string comment "two char iso code", emp_state string comment "free text") + stored as textfile + tblproperties("creator"="krishna"); + +set hive.security.authorization.enabled=true; +grant Alter on table exim_employee to user hive_test_user; +grant Update on table exim_employee to user hive_test_user; +import from 'ql/test/data/exports/exim_employee'; + +set hive.security.authorization.enabled=false; +select * from exim_employee; +dfs -rmr ../build/ql/test/data/exports/exim_employee; +drop table exim_employee; +drop database importer; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_24_import_nonexist_authsuccess.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_24_import_nonexist_authsuccess.q new file mode 100644 index 0000000000000..2dc5af6ce4774 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/exim_24_import_nonexist_authsuccess.q @@ -0,0 +1,24 @@ +set hive.test.mode=true; +set hive.test.mode.prefix=; +set hive.test.mode.nosamplelist=exim_department,exim_employee; + +create table exim_department ( dep_id int) stored as textfile; +load data local inpath "../data/files/test.dat" into table exim_department; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/exim_department/test; +dfs -rmr ../build/ql/test/data/exports/exim_department; +export table exim_department to 'ql/test/data/exports/exim_department'; +drop table exim_department; + +create database importer; +use importer; + +set hive.security.authorization.enabled=true; +grant Create on database importer to user hive_test_user; +import from 'ql/test/data/exports/exim_department'; + +set hive.security.authorization.enabled=false; +select * from exim_department; +drop table exim_department; +drop database importer; +dfs -rmr ../build/ql/test/data/exports/exim_department; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_dependency.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_dependency.q new file mode 100644 index 0000000000000..eecf2a6bbef04 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_dependency.q @@ -0,0 +1,34 @@ +-- This test is used for testing EXPLAIN DEPENDENCY command + +-- Create some views +CREATE VIEW V1 AS SELECT key, value from src; +CREATE VIEW V2 AS SELECT ds, key, value FROM srcpart WHERE ds IS NOT NULL; +CREATE VIEW V3 AS + SELECT src1.key, src2.value FROM V2 src1 + JOIN src src2 ON src1.key = src2.key WHERE src1.ds IS NOT NULL; +CREATE VIEW V4 AS + SELECT src1.key, src2.value as value1, src3.value as value2 + FROM V1 src1 JOIN V2 src2 on src1.key = src2.key JOIN src src3 ON src2.key = src3.key; + +-- Simple select queries, union queries and join queries +EXPLAIN DEPENDENCY + SELECT key, count(1) FROM srcpart WHERE ds IS NOT NULL GROUP BY key; +EXPLAIN DEPENDENCY + SELECT key, count(1) FROM (SELECT key, value FROM src) subq1 GROUP BY key; +EXPLAIN DEPENDENCY + SELECT * FROM ( + SELECT key, value FROM src UNION ALL SELECT key, value FROM srcpart WHERE ds IS NOT NULL + ) S1; +EXPLAIN DEPENDENCY + SELECT S1.key, S2.value FROM src S1 JOIN srcpart S2 ON S1.key = S2.key WHERE ds IS NOT NULL; + +-- With views +EXPLAIN DEPENDENCY SELECT * FROM V1; +EXPLAIN DEPENDENCY SELECT * FROM V2; +EXPLAIN DEPENDENCY SELECT * FROM V3; +EXPLAIN DEPENDENCY SELECT * FROM V4; + +-- The table should show up in the explain dependency even if none +-- of the partitions are selected. +CREATE VIEW V5 as SELECT * FROM srcpart where ds = '10'; +EXPLAIN DEPENDENCY SELECT * FROM V5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_dependency2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_dependency2.q new file mode 100644 index 0000000000000..88d4464a91487 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_dependency2.q @@ -0,0 +1,31 @@ +-- This test is used for testing EXPLAIN DEPENDENCY command + +-- select from a table which does not involve a map-reduce job +EXPLAIN DEPENDENCY SELECT * FROM src; + +-- select from a table which involves a map-reduce job +EXPLAIN DEPENDENCY SELECT count(*) FROM src; + +-- select from a partitioned table which does not involve a map-reduce job +-- and some partitions are being selected +EXPLAIN DEPENDENCY SELECT * FROM srcpart where ds is not null; + +-- select from a partitioned table which does not involve a map-reduce job +-- and none of the partitions are being selected +EXPLAIN DEPENDENCY SELECT * FROM srcpart where ds = '1'; + +-- select from a partitioned table which involves a map-reduce job +-- and some partitions are being selected +EXPLAIN DEPENDENCY SELECT count(*) FROM srcpart where ds is not null; + +-- select from a partitioned table which involves a map-reduce job +-- and none of the partitions are being selected +EXPLAIN DEPENDENCY SELECT count(*) FROM srcpart where ds = '1'; + +create table tstsrcpart like srcpart; + +-- select from a partitioned table with no partitions which does not involve a map-reduce job +EXPLAIN DEPENDENCY SELECT * FROM tstsrcpart where ds is not null; + +-- select from a partitioned table with no partitions which involves a map-reduce job +EXPLAIN DEPENDENCY SELECT count(*) FROM tstsrcpart where ds is not null; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_logical.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_logical.q new file mode 100644 index 0000000000000..4b0fa5b8932d7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explain_logical.q @@ -0,0 +1,36 @@ +-- This test is used for testing EXPLAIN LOGICAL command + +-- Create some views +CREATE VIEW V1 AS SELECT key, value from src; +CREATE VIEW V2 AS SELECT ds, key, value FROM srcpart WHERE ds IS NOT NULL; +CREATE VIEW V3 AS + SELECT src1.key, src2.value FROM V2 src1 + JOIN src src2 ON src1.key = src2.key WHERE src1.ds IS NOT NULL; +CREATE VIEW V4 AS + SELECT src1.key, src2.value as value1, src3.value as value2 + FROM V1 src1 JOIN V2 src2 on src1.key = src2.key JOIN src src3 ON src2.key = src3.key; + +-- Simple select queries, union queries and join queries +EXPLAIN LOGICAL + SELECT key, count(1) FROM srcpart WHERE ds IS NOT NULL GROUP BY key; +EXPLAIN LOGICAL + SELECT key, count(1) FROM (SELECT key, value FROM src) subq1 GROUP BY key; +EXPLAIN LOGICAL + SELECT * FROM ( + SELECT key, value FROM src UNION ALL SELECT key, value FROM srcpart WHERE ds IS NOT NULL + ) S1; +EXPLAIN LOGICAL + SELECT S1.key, S2.value FROM src S1 JOIN srcpart S2 ON S1.key = S2.key WHERE ds IS NOT NULL; + +-- With views +EXPLAIN LOGICAL SELECT * FROM V1; +EXPLAIN LOGICAL SELECT * FROM V2; +EXPLAIN LOGICAL SELECT * FROM V3; +EXPLAIN LOGICAL SELECT * FROM V4; + +-- The table should show up in the explain logical even if none +-- of the partitions are selected. +CREATE VIEW V5 as SELECT * FROM srcpart where ds = '10'; +EXPLAIN LOGICAL SELECT * FROM V5; + +EXPLAIN LOGICAL SELECT s1.key, s1.cnt, s2.value FROM (SELECT key, count(value) as cnt FROM src GROUP BY key) s1 JOIN src s2 ON (s1.key = s2.key) ORDER BY s1.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explode_null.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explode_null.q new file mode 100644 index 0000000000000..76e453525eeba --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/explode_null.q @@ -0,0 +1,10 @@ +SELECT explode(col) AS myCol FROM + (SELECT array(1,2,3) AS col FROM src LIMIT 1 + UNION ALL + SELECT IF(false, array(1,2,3), NULL) AS col FROM src LIMIT 1) a; + +SELECT explode(col) AS (myCol1,myCol2) FROM + (SELECT map(1,'one',2,'two',3,'three') AS col FROM src LIMIT 1 + UNION ALL + SELECT IF(false, map(1,'one',2,'two',3,'three'), NULL) AS col FROM src LIMIT 1) a; + \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fetch_aggregation.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fetch_aggregation.q new file mode 100644 index 0000000000000..618fea158aa65 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fetch_aggregation.q @@ -0,0 +1,6 @@ +set hive.fetch.task.aggr=true; + +explain +select count(key),sum(key),avg(key),min(key),max(key),std(key),variance(key) from src; + +select count(key),sum(key),avg(key),min(key),max(key),std(key),variance(key) from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_mix.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_mix.q new file mode 100644 index 0000000000000..1e0c164733fbe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_mix.q @@ -0,0 +1,16 @@ + + +create table fileformat_mix_test (src int, value string) partitioned by (ds string); +alter table fileformat_mix_test set fileformat Sequencefile; + +insert overwrite table fileformat_mix_test partition (ds='1') +select key, value from src; + +alter table fileformat_mix_test add partition (ds='2'); + +alter table fileformat_mix_test set fileformat rcfile; + +select count(1) from fileformat_mix_test; + +select src from fileformat_mix_test; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_sequencefile.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_sequencefile.q new file mode 100644 index 0000000000000..895c70f8af4c2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_sequencefile.q @@ -0,0 +1,17 @@ +EXPLAIN +CREATE TABLE dest1(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileOutputFormat'; + +CREATE TABLE dest1(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileOutputFormat'; + +DESCRIBE EXTENDED dest1; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 10; + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_text.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_text.q new file mode 100644 index 0000000000000..8233aded970c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/fileformat_text.q @@ -0,0 +1,17 @@ +EXPLAIN +CREATE TABLE dest1(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'; + +CREATE TABLE dest1(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'; + +DESCRIBE EXTENDED dest1; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 10; + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/filter_join_breaktask.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/filter_join_breaktask.q new file mode 100644 index 0000000000000..fe24da744112a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/filter_join_breaktask.q @@ -0,0 +1,16 @@ + +CREATE TABLE filter_join_breaktask(key int, value string) partitioned by (ds string); + +INSERT OVERWRITE TABLE filter_join_breaktask PARTITION(ds='2008-04-08') +SELECT key, value from src1; + + +EXPLAIN EXTENDED +SELECT f.key, g.value +FROM filter_join_breaktask f JOIN filter_join_breaktask m ON( f.key = m.key AND f.ds='2008-04-08' AND m.ds='2008-04-08' AND f.key is not null) +JOIN filter_join_breaktask g ON(g.value = m.value AND g.ds='2008-04-08' AND m.ds='2008-04-08' AND m.value is not null AND m.value !=''); + +SELECT f.key, g.value +FROM filter_join_breaktask f JOIN filter_join_breaktask m ON( f.key = m.key AND f.ds='2008-04-08' AND m.ds='2008-04-08' AND f.key is not null) +JOIN filter_join_breaktask g ON(g.value = m.value AND g.ds='2008-04-08' AND m.ds='2008-04-08' AND m.value is not null AND m.value !=''); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/filter_join_breaktask2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/filter_join_breaktask2.q new file mode 100644 index 0000000000000..f8d855b25948a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/filter_join_breaktask2.q @@ -0,0 +1,40 @@ + + + + + +create table T1(c1 string, c2 string, c3 string, c4 string, c5 string, c6 string, c7 string) +partitioned by (ds string); + +create table T2(c1 string, c2 string, c3 string, c0 string, c4 string, c5 string, c6 string, c7 string, c8 string, c9 string, c10 string, c11 string, c12 string, c13 string, c14 string, c15 string, c16 string, c17 string, c18 string, c19 string, c20 string, c21 string, c22 string, c23 string, c24 string, c25 string) partitioned by (ds string); + +create table T3 (c0 bigint, c1 bigint, c2 int) partitioned by (ds string); + +create table T4 (c0 bigint, c1 string, c2 string, c3 string, c4 string, c5 string, c6 string, c7 string, c8 string, c9 string, c10 string, c11 string, c12 string, c13 string, c14 string, c15 string, c16 string, c17 string, c18 string, c19 string, c20 string, c21 string, c22 string, c23 string, c24 string, c25 string, c26 string, c27 string, c28 string, c29 string, c30 string, c31 string, c32 string, c33 string, c34 string, c35 string, c36 string, c37 string, c38 string, c39 string, c40 string, c41 string, c42 string, c43 string, c44 string, c45 string, c46 string, c47 string, c48 string, c49 string, c50 string, c51 string, c52 string, c53 string, c54 string, c55 string, c56 string, c57 string, c58 string, c59 string, c60 string, c61 string, c62 string, c63 string, c64 string, c65 string, c66 string, c67 bigint, c68 string, c69 string, c70 bigint, c71 bigint, c72 bigint, c73 string, c74 string, c75 string, c76 string, c77 string, c78 string, c79 string, c80 string, c81 bigint, c82 bigint, c83 bigint) partitioned by (ds string); + +insert overwrite table T1 partition (ds='2010-04-17') select '5', '1', '1', '1', 0, 0,4 from src limit 1; + +insert overwrite table T2 partition(ds='2010-04-17') select '5','name', NULL, '2', 'kavin',NULL, '9', 'c', '8', '0', '0', '7', '1','2', '0', '3','2', NULL, '1', NULL, '3','2','0','0','5','10' from src limit 1; + +insert overwrite table T3 partition (ds='2010-04-17') select 4,5,0 from src limit 1; + +insert overwrite table T4 partition(ds='2010-04-17') +select 4,'1','1','8','4','5','1','0','9','U','2','2', '0','2','1','1','J','C','A','U', '2','s', '2',NULL, NULL, NULL,NULL, NULL, NULL,'1','j', 'S', '6',NULL,'1', '2', 'J', 'g', '1', 'e', '2', '1', '2', 'U', 'P', 'p', '3', '0', '0', '0', '1', '1', '1', '0', '0', '0', '6', '2', 'j',NULL, NULL, NULL,NULL,NULL, NULL, '5',NULL, 'j', 'j', 2, 2, 1, '2', '2', '1', '1', '1', '1', '1', '1', 1, 1, 32,NULL from src limit 1; + +select * from T2; +select * from T1; +select * from T3; +select * from T4; + +SELECT a.c1 as a_c1, b.c1 b_c1, d.c0 as d_c0 +FROM T1 a JOIN T2 b + ON (a.c1 = b.c1 AND a.ds='2010-04-17' AND b.ds='2010-04-17') + JOIN T3 c + ON (a.c1 = c.c1 AND a.ds='2010-04-17' AND c.ds='2010-04-17') + JOIN T4 d + ON (c.c0 = d.c0 AND c.ds='2010-04-17' AND d.ds='2010-04-17'); + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/global_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/global_limit.q new file mode 100644 index 0000000000000..b76cf34120701 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/global_limit.q @@ -0,0 +1,68 @@ +set hive.limit.optimize.enable=true; +set hive.limit.optimize.limit.file=2; + +drop table gl_tgt; +drop table gl_src1; +drop table gl_src2; +drop table gl_src_part1; + + +create table gl_src1 (key int, value string) stored as textfile; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE gl_src1; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE gl_src1; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE gl_src1; + + + + +set hive.limit.row.max.size=100; + +-- need one file +create table gl_tgt as select key from gl_src1 limit 1; +select * from gl_tgt ORDER BY key ASC; +-- need two files +select 'x' as key_new , split(value,',') as value_new from gl_src1 ORDER BY key_new ASC, value_new[0] ASC limit 20; +-- no sufficient files +select key, value, split(value,',') as value_new from gl_src1 ORDER BY key ASC, value ASC, value_new[0] ASC limit 30; +-- need all files +select key from gl_src1 ORDER BY key ASC limit 100; +set hive.limit.optimize.limit.file=4; +select key from gl_src1 ORDER BY key ASC limit 30; + +-- not qualified cases +select key, count(1) from gl_src1 group by key ORDER BY key ASC limit 5; +select distinct key from gl_src1 ORDER BY key ASC limit 10; +select count(1) from gl_src1 limit 1; +select transform(*) using "tr _ \n" as t from +(select "a_a_a_a_a_a_" from gl_src1 limit 100) subq ORDER BY t; +select key from (select * from (select key,value from gl_src1)t1 limit 10)t2 ORDER BY key ASC limit 2000; + +-- complicated queries +select key from (select * from (select key,value from gl_src1 limit 10)t1 )t2 ORDER BY key ASC; +select key from (select * from (select key,value from gl_src1)t1 limit 10)t2 ORDER BY key ASC; +insert overwrite table gl_tgt select key+1 from (select * from (select key,value from gl_src1)t1)t2 limit 10; +select * from gl_tgt ORDER BY key ASC; + +-- empty table +create table gl_src2 (key int, value string) stored as textfile; +select key from gl_src2 ORDER BY key ASC limit 10; + +-- partition +create table gl_src_part1 (key int, value string) partitioned by (p string) stored as textfile; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE gl_src_part1 partition(p='11'); +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE gl_src_part1 partition(p='12'); +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE gl_src_part1 partition(p='12'); +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE gl_src_part1 partition(p='12'); + +select key from gl_src_part1 where p like '1%' ORDER BY key ASC limit 10; +select key from gl_src_part1 where p='11' ORDER BY key ASC limit 10; +select key from gl_src_part1 where p='12' ORDER BY key ASC limit 10; +select key from gl_src_part1 where p='13' ORDER BY key ASC limit 10; +alter table gl_src_part1 add partition (p='13'); +select key from gl_src_part1 where p='13' ORDER BY key ASC limit 10; +select key from gl_src_part1 where p='12' ORDER BY key ASC limit 1000; + +drop table gl_src1; +drop table gl_src2; +drop table gl_src_part1; +drop table gl_tgt; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1.q new file mode 100755 index 0000000000000..1275eab281f42 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1.q @@ -0,0 +1,15 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest_g1(key INT, value DOUBLE) STORED AS TEXTFILE; + +set fs.default.name=invalidscheme:///; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +set fs.default.name=file:///; + +FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +SELECT dest_g1.* FROM dest_g1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby10.q new file mode 100644 index 0000000000000..db38d43fe4354 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby10.q @@ -0,0 +1,48 @@ +set hive.map.aggr=false; +set hive.multigroupby.singlereducer=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest1(key INT, val1 INT, val2 INT); +CREATE TABLE dest2(key INT, val1 INT, val2 INT); + +CREATE TABLE INPUT(key INT, value STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv5.txt' INTO TABLE INPUT; + +EXPLAIN +FROM INPUT +INSERT OVERWRITE TABLE dest1 SELECT INPUT.key, count(substr(INPUT.value,5)), count(distinct substr(INPUT.value,5)) GROUP BY INPUT.key +INSERT OVERWRITE TABLE dest2 SELECT INPUT.key, sum(substr(INPUT.value,5)), sum(distinct substr(INPUT.value,5)) GROUP BY INPUT.key; + +FROM INPUT +INSERT OVERWRITE TABLE dest1 SELECT INPUT.key, count(substr(INPUT.value,5)), count(distinct substr(INPUT.value,5)) GROUP BY INPUT.key +INSERT OVERWRITE TABLE dest2 SELECT INPUT.key, sum(substr(INPUT.value,5)), sum(distinct substr(INPUT.value,5)) GROUP BY INPUT.key; + +SELECT * from dest1; +SELECT * from dest2; + +set hive.multigroupby.singlereducer=true; + +EXPLAIN +FROM INPUT +INSERT OVERWRITE TABLE dest1 SELECT INPUT.key, count(substr(INPUT.value,5)), count(distinct substr(INPUT.value,5)) GROUP BY INPUT.key +INSERT OVERWRITE TABLE dest2 SELECT INPUT.key, sum(substr(INPUT.value,5)), sum(distinct substr(INPUT.value,5)) GROUP BY INPUT.key; + +FROM INPUT +INSERT OVERWRITE TABLE dest1 SELECT INPUT.key, count(substr(INPUT.value,5)), count(distinct substr(INPUT.value,5)) GROUP BY INPUT.key +INSERT OVERWRITE TABLE dest2 SELECT INPUT.key, sum(substr(INPUT.value,5)), sum(distinct substr(INPUT.value,5)) GROUP BY INPUT.key; + +SELECT * from dest1; +SELECT * from dest2; + +-- HIVE-3852 Multi-groupby optimization fails when same distinct column is used twice or more +EXPLAIN +FROM INPUT +INSERT OVERWRITE TABLE dest1 SELECT INPUT.key, sum(distinct substr(INPUT.value,5)), count(distinct substr(INPUT.value,5)) GROUP BY INPUT.key +INSERT OVERWRITE TABLE dest2 SELECT INPUT.key, sum(distinct substr(INPUT.value,5)), avg(distinct substr(INPUT.value,5)) GROUP BY INPUT.key; + +FROM INPUT +INSERT OVERWRITE TABLE dest1 SELECT INPUT.key, sum(distinct substr(INPUT.value,5)), count(distinct substr(INPUT.value,5)) GROUP BY INPUT.key +INSERT OVERWRITE TABLE dest2 SELECT INPUT.key, sum(distinct substr(INPUT.value,5)), avg(distinct substr(INPUT.value,5)) GROUP BY INPUT.key; + +SELECT * from dest1; +SELECT * from dest2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby11.q new file mode 100644 index 0000000000000..0bf92ac4483d2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby11.q @@ -0,0 +1,27 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + + + + +CREATE TABLE dest1(key STRING, val1 INT, val2 INT) partitioned by (ds string); +CREATE TABLE dest2(key STRING, val1 INT, val2 INT) partitioned by (ds string); + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 partition(ds='111') + SELECT src.value, count(src.key), count(distinct src.key) GROUP BY src.value +INSERT OVERWRITE TABLE dest2 partition(ds='111') + SELECT substr(src.value, 5), count(src.key), count(distinct src.key) GROUP BY substr(src.value, 5); + +FROM src +INSERT OVERWRITE TABLE dest1 partition(ds='111') + SELECT src.value, count(src.key), count(distinct src.key) GROUP BY src.value +INSERT OVERWRITE TABLE dest2 partition(ds='111') + SELECT substr(src.value, 5), count(src.key), count(distinct src.key) GROUP BY substr(src.value, 5); + +SELECT * from dest1; +SELECT * from dest2; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_limit.q new file mode 100644 index 0000000000000..1b6891e33a37e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_limit.q @@ -0,0 +1,10 @@ +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key INT, value DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key LIMIT 5; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key LIMIT 5; + +SELECT dest1.* FROM dest1 ORDER BY dest1.key ASC , dest1.value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map.q new file mode 100644 index 0000000000000..82cff36422e62 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map.q @@ -0,0 +1,12 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key INT, value DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map_nomap.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map_nomap.q new file mode 100644 index 0000000000000..eb09a9c70e0c1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map_nomap.q @@ -0,0 +1,12 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set hive.groupby.mapaggr.checkinterval=20; + +CREATE TABLE dest1(key INT, value DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map_skew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map_skew.q new file mode 100644 index 0000000000000..874995888b447 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_map_skew.q @@ -0,0 +1,12 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key INT, value DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_noskew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_noskew.q new file mode 100644 index 0000000000000..1b10f1e024819 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby1_noskew.q @@ -0,0 +1,12 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest_g1(key INT, value DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; + +SELECT dest_g1.* FROM dest_g1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2.q new file mode 100755 index 0000000000000..80b50c39bb7cf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2.q @@ -0,0 +1,14 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest_g2(key STRING, c1 INT, c2 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); + +SELECT dest_g2.* FROM dest_g2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_limit.q new file mode 100644 index 0000000000000..4bc263c77f1b4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_limit.q @@ -0,0 +1,7 @@ +set mapred.reduce.tasks=31; + +EXPLAIN +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key LIMIT 5; + +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key LIMIT 5; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map.q new file mode 100644 index 0000000000000..c3cf598fb1c90 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map.q @@ -0,0 +1,14 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key STRING, c1 INT, c2 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map_multi_distinct.q new file mode 100644 index 0000000000000..25e6789b63ef2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map_multi_distinct.q @@ -0,0 +1,14 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map_skew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map_skew.q new file mode 100644 index 0000000000000..39a2a178e3a5e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_map_skew.q @@ -0,0 +1,14 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key STRING, c1 INT, c2 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_noskew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_noskew.q new file mode 100644 index 0000000000000..c3c82d51749fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_noskew.q @@ -0,0 +1,14 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest_g2(key STRING, c1 INT, c2 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); + +SELECT dest_g2.* FROM dest_g2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_noskew_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_noskew_multi_distinct.q new file mode 100644 index 0000000000000..b80c271afe5dc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby2_noskew_multi_distinct.q @@ -0,0 +1,14 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest_g2(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +SELECT dest_g2.* FROM dest_g2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3.q new file mode 100755 index 0000000000000..8f24584a58e50 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3.q @@ -0,0 +1,33 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)); + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map.q new file mode 100644 index 0000000000000..7ecc71dfab64a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map.q @@ -0,0 +1,34 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)); + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map_multi_distinct.q new file mode 100644 index 0000000000000..50243beca9efa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map_multi_distinct.q @@ -0,0 +1,36 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, c10 DOUBLE, c11 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)), + sum(DISTINCT substr(src.value, 5)), + count(DISTINCT substr(src.value, 5)); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)), + sum(DISTINCT substr(src.value, 5)), + count(DISTINCT substr(src.value, 5)); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map_skew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map_skew.q new file mode 100644 index 0000000000000..07d10c2d741d8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_map_skew.q @@ -0,0 +1,34 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)); + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_noskew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_noskew.q new file mode 100644 index 0000000000000..d33f12c5744e9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_noskew.q @@ -0,0 +1,36 @@ +set hive.map.aggr=false; + +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)); + +SELECT dest1.* FROM dest1; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_noskew_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_noskew_multi_distinct.q new file mode 100644 index 0000000000000..86d8986f1df7d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby3_noskew_multi_distinct.q @@ -0,0 +1,38 @@ +set hive.map.aggr=false; + +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, c10 DOUBLE, c11 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)), + sum(DISTINCT substr(src.value, 5)), + count(DISTINCT substr(src.value, 5)); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT + sum(substr(src.value,5)), + avg(substr(src.value,5)), + avg(DISTINCT substr(src.value,5)), + max(substr(src.value,5)), + min(substr(src.value,5)), + std(substr(src.value,5)), + stddev_samp(substr(src.value,5)), + variance(substr(src.value,5)), + var_samp(substr(src.value,5)), + sum(DISTINCT substr(src.value, 5)), + count(DISTINCT substr(src.value, 5)); + +SELECT dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4.q new file mode 100755 index 0000000000000..ae5cae5b73e74 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4.q @@ -0,0 +1,14 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1) GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_map.q new file mode 100644 index 0000000000000..8ecce23eb8321 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_map.q @@ -0,0 +1,12 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT count(1); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT count(1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_map_skew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_map_skew.q new file mode 100644 index 0000000000000..eb2001c6b21b0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_map_skew.q @@ -0,0 +1,12 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT count(1); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT count(1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_noskew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_noskew.q new file mode 100644 index 0000000000000..99c2d2d5a1784 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby4_noskew.q @@ -0,0 +1,16 @@ +set hive.map.aggr=false; + +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1) GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5.q new file mode 100755 index 0000000000000..0909c90bc4137 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5.q @@ -0,0 +1,18 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +INSERT OVERWRITE TABLE dest1 +SELECT src.key, sum(substr(src.value,5)) +FROM src +GROUP BY src.key; + +INSERT OVERWRITE TABLE dest1 +SELECT src.key, sum(substr(src.value,5)) +FROM src +GROUP BY src.key; + +SELECT dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_map.q new file mode 100644 index 0000000000000..4fd6445d7927c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_map.q @@ -0,0 +1,12 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT sum(src.key); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT sum(src.key); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_map_skew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_map_skew.q new file mode 100644 index 0000000000000..eccd45dd5b422 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_map_skew.q @@ -0,0 +1,12 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT sum(src.key); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT sum(src.key); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_noskew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_noskew.q new file mode 100644 index 0000000000000..be60785d87ea5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby5_noskew.q @@ -0,0 +1,20 @@ +set hive.map.aggr=false; + +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +INSERT OVERWRITE TABLE dest1 +SELECT src.key, sum(substr(src.value,5)) +FROM src +GROUP BY src.key; + +INSERT OVERWRITE TABLE dest1 +SELECT src.key, sum(substr(src.value,5)) +FROM src +GROUP BY src.key; + +SELECT dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6.q new file mode 100755 index 0000000000000..3a3cc58e0787f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6.q @@ -0,0 +1,15 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_map.q new file mode 100644 index 0000000000000..fbf761c3aea55 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_map.q @@ -0,0 +1,16 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_map_skew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_map_skew.q new file mode 100644 index 0000000000000..ac79a286055d5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_map_skew.q @@ -0,0 +1,16 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_noskew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_noskew.q new file mode 100644 index 0000000000000..2c99d362ffff7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby6_noskew.q @@ -0,0 +1,17 @@ +set hive.map.aggr=false; + +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7.q new file mode 100644 index 0000000000000..1235e3c0a0ba5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7.q @@ -0,0 +1,15 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +SET hive.exec.compress.intermediate=true; +SET hive.exec.compress.output=true; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map.q new file mode 100644 index 0000000000000..b1457d9349aee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map.q @@ -0,0 +1,22 @@ +set hive.map.aggr=true; +set hive.multigroupby.singlereducer=false; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +SET hive.exec.compress.intermediate=true; +SET hive.exec.compress.output=true; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map_multi_single_reducer.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map_multi_single_reducer.q new file mode 100644 index 0000000000000..481b3cd084f16 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map_multi_single_reducer.q @@ -0,0 +1,21 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +SET hive.exec.compress.intermediate=true; +SET hive.exec.compress.output=true; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map_skew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map_skew.q new file mode 100644 index 0000000000000..a34ac8f64b117 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_map_skew.q @@ -0,0 +1,21 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +SET hive.exec.compress.intermediate=true; +SET hive.exec.compress.output=true; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_noskew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_noskew.q new file mode 100644 index 0000000000000..94a3dcf7ec3f2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_noskew.q @@ -0,0 +1,22 @@ +set hive.map.aggr=false; +set hive.multigroupby.singlereducer=false; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +SET hive.exec.compress.intermediate=true; +SET hive.exec.compress.output=true; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_noskew_multi_single_reducer.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_noskew_multi_single_reducer.q new file mode 100644 index 0000000000000..802aea244da9e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby7_noskew_multi_single_reducer.q @@ -0,0 +1,21 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +SET hive.exec.compress.intermediate=true; +SET hive.exec.compress.output=true; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key limit 10 +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key limit 10; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key limit 10 +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key limit 10; + +SELECT DEST1.* FROM DEST1 ORDER BY key ASC, value ASC; +SELECT DEST2.* FROM DEST2 ORDER BY key ASC, value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8.q new file mode 100644 index 0000000000000..e7b08b274d82c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8.q @@ -0,0 +1,31 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; + +set hive.multigroupby.singlereducer=false; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_map.q new file mode 100644 index 0000000000000..62b6ff5ddebb6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_map.q @@ -0,0 +1,19 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_map_skew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_map_skew.q new file mode 100644 index 0000000000000..846fd01017172 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_map_skew.q @@ -0,0 +1,19 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_noskew.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_noskew.q new file mode 100644 index 0000000000000..20c8bef34223a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby8_noskew.q @@ -0,0 +1,19 @@ +set hive.map.aggr=false; + +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby9.q new file mode 100644 index 0000000000000..afd40c9ddbaa1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby9.q @@ -0,0 +1,67 @@ + +CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key INT, val1 STRING, val2 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key, SRC.value; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key, SRC.value; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.value, SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.value, SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; + +set hive.multigroupby.singlereducer=false; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key, SRC.value; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key, SRC.value; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(SUBSTR(SRC.value,5)) GROUP BY SRC.key, SRC.value; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(SUBSTR(SRC.value,5)) GROUP BY SRC.key, SRC.value; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.value, SRC.key; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.value, SRC.key; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_bigdata.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_bigdata.q new file mode 100644 index 0000000000000..7e97f75cecc92 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_bigdata.q @@ -0,0 +1,7 @@ +set hive.map.aggr.hash.percentmemory = 0.3; +set hive.mapred.local.mem = 384; + +add file ../data/scripts/dumpdata_script.py; + +select count(distinct subq.key) from +(FROM src MAP src.key USING 'python dumpdata_script.py' AS key WHERE src.key = 10) subq; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_complex_types.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_complex_types.q new file mode 100644 index 0000000000000..bb1e6d269710a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_complex_types.q @@ -0,0 +1,19 @@ +CREATE TABLE DEST1(key ARRAY, value BIGINT) STORED AS TEXTFILE; +CREATE TABLE DEST2(key MAP, value BIGINT) STORED AS TEXTFILE; +CREATE TABLE DEST3(key STRUCT, value BIGINT) STORED AS TEXTFILE; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key) +INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value) +INSERT OVERWRITE TABLE DEST3 SELECT STRUCT(SRC.key, SRC.value), COUNT(1) GROUP BY STRUCT(SRC.key, SRC.value); + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key) +INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value) +INSERT OVERWRITE TABLE DEST3 SELECT STRUCT(SRC.key, SRC.value), COUNT(1) GROUP BY STRUCT(SRC.key, SRC.value); + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; +SELECT DEST3.* FROM DEST3; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_complex_types_multi_single_reducer.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_complex_types_multi_single_reducer.q new file mode 100644 index 0000000000000..22c5a389a957a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_complex_types_multi_single_reducer.q @@ -0,0 +1,17 @@ +set hive.multigroupby.singlereducer=true; + +CREATE TABLE DEST1(key ARRAY, value BIGINT) STORED AS TEXTFILE; +CREATE TABLE DEST2(key MAP, value BIGINT) STORED AS TEXTFILE; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key) limit 10 +INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value) limit 10; + +FROM SRC +INSERT OVERWRITE TABLE DEST1 SELECT ARRAY(SRC.key), COUNT(1) GROUP BY ARRAY(SRC.key) limit 10 +INSERT OVERWRITE TABLE DEST2 SELECT MAP(SRC.key, SRC.value), COUNT(1) GROUP BY MAP(SRC.key, SRC.value) limit 10; + +SELECT DEST1.* FROM DEST1 ORDER BY key[0] ASC, value ASC; +SELECT DEST2.* FROM DEST2 ORDER BY 1 ASC, value ASC; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_cube1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_cube1.q new file mode 100644 index 0000000000000..46e1f00d0f224 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_cube1.q @@ -0,0 +1,49 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +EXPLAIN +SELECT key, val, count(1) FROM T1 GROUP BY key, val with cube; + +SELECT key, val, count(1) FROM T1 GROUP BY key, val with cube +ORDER BY key, val; + +EXPLAIN +SELECT key, count(distinct val) FROM T1 GROUP BY key with cube; + +SELECT key, count(distinct val) FROM T1 GROUP BY key with cube +ORDER BY key; + +set hive.groupby.skewindata=true; + +EXPLAIN +SELECT key, val, count(1) FROM T1 GROUP BY key, val with cube; + +SELECT key, val, count(1) FROM T1 GROUP BY key, val with cube +ORDER BY key, val; + +EXPLAIN +SELECT key, count(distinct val) FROM T1 GROUP BY key with cube; + +SELECT key, count(distinct val) FROM T1 GROUP BY key with cube +ORDER BY key; + + +set hive.multigroupby.singlereducer=true; + +CREATE TABLE T2(key1 STRING, key2 STRING, val INT) STORED AS TEXTFILE; +CREATE TABLE T3(key1 STRING, key2 STRING, val INT) STORED AS TEXTFILE; + +EXPLAIN +FROM T1 +INSERT OVERWRITE TABLE T2 SELECT key, val, count(1) group by key, val with cube +INSERT OVERWRITE TABLE T3 SELECT key, val, sum(1) group by key, val with cube; + + +FROM T1 +INSERT OVERWRITE TABLE T2 SELECT key, val, count(1) group by key, val with cube +INSERT OVERWRITE TABLE T3 SELECT key, val, sum(1) group by key, val with cube; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_distinct_samekey.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_distinct_samekey.q new file mode 100644 index 0000000000000..8219a5efb10de --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_distinct_samekey.q @@ -0,0 +1,15 @@ +-- This test covers HIVE-2332 + +create table t1 (int1 int, int2 int, str1 string, str2 string); + +set hive.optimize.reducededuplication=false; +--disabled RS-dedup for keeping intention of test + +insert into table t1 select cast(key as int), cast(key as int), value, value from src where key < 6; +explain select Q1.int1, sum(distinct Q1.int1) from (select * from t1 order by int1) Q1 group by Q1.int1; +explain select int1, sum(distinct int1) from t1 group by int1; + +select Q1.int1, sum(distinct Q1.int1) from (select * from t1 order by int1) Q1 group by Q1.int1; +select int1, sum(distinct int1) from t1 group by int1; + +drop table t1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_id1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_id1.q new file mode 100644 index 0000000000000..bced21f9e494a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_id1.q @@ -0,0 +1,10 @@ +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +SELECT key, val, GROUPING__ID from T1 group by key, val with cube; + +SELECT GROUPING__ID, key, val from T1 group by key, val with rollup; + +SELECT key, val, GROUPING__ID, CASE WHEN GROUPING__ID == 0 THEN "0" WHEN GROUPING__ID == 1 THEN "1" WHEN GROUPING__ID == 2 THEN "2" WHEN GROUPING__ID == 3 THEN "3" ELSE "nothing" END from T1 group by key, val with cube; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_id2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_id2.q new file mode 100644 index 0000000000000..ffc627c82eaff --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_id2.q @@ -0,0 +1,41 @@ +CREATE TABLE T1(key INT, value INT) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/groupby_groupingid.txt' INTO TABLE T1; + +set hive.groupby.skewindata = true; + +SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key, value WITH ROLLUP; + +SELECT GROUPING__ID, count(*) +FROM +( +SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key, value WITH ROLLUP +) t +GROUP BY GROUPING__ID; + +SELECT t1.GROUPING__ID, t2.GROUPING__ID FROM (SELECT GROUPING__ID FROM T1 GROUP BY key,value WITH ROLLUP) t1 +JOIN +(SELECT GROUPING__ID FROM T1 GROUP BY key, value WITH ROLLUP) t2 +ON t1.GROUPING__ID = t2.GROUPING__ID; + + + + + +set hive.groupby.skewindata = false; + +SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key, value WITH ROLLUP; + +SELECT GROUPING__ID, count(*) +FROM +( +SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key, value WITH ROLLUP +) t +GROUP BY GROUPING__ID; + +SELECT t1.GROUPING__ID, t2.GROUPING__ID FROM (SELECT GROUPING__ID FROM T1 GROUP BY key,value WITH ROLLUP) t1 +JOIN +(SELECT GROUPING__ID FROM T1 GROUP BY key, value WITH ROLLUP) t2 +ON t1.GROUPING__ID = t2.GROUPING__ID; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets1.q new file mode 100644 index 0000000000000..4fba7338f1d0a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets1.q @@ -0,0 +1,18 @@ +CREATE TABLE T1(a STRING, b STRING, c STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/grouping_sets.txt' INTO TABLE T1; + +SELECT * FROM T1; + +SELECT a, b, count(*) from T1 group by a, b with cube; + +SELECT a, b, count(*) FROM T1 GROUP BY a, b GROUPING SETS (a, (a, b), b, ()); + +SELECT a, b, count(*) FROM T1 GROUP BY a, b GROUPING SETS (a, (a, b)); + +SELECT a FROM T1 GROUP BY a, b, c GROUPING SETS (a, b, c); + +SELECT a FROM T1 GROUP BY a GROUPING SETS ((a), (a)); + +SELECT a + b, count(*) FROM T1 GROUP BY a + b GROUPING SETS (a+b); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets2.q new file mode 100644 index 0000000000000..9f2286cc9be31 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets2.q @@ -0,0 +1,23 @@ +set hive.new.job.grouping.set.cardinality=2; + +CREATE TABLE T1(a STRING, b STRING, c STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/grouping_sets.txt' INTO TABLE T1; + +-- Since 4 grouping sets would be generated for the query below, an additional MR job should be created +EXPLAIN +SELECT a, b, count(*) from T1 group by a, b with cube; +SELECT a, b, count(*) from T1 group by a, b with cube; + +EXPLAIN +SELECT a, b, sum(c) from T1 group by a, b with cube; +SELECT a, b, sum(c) from T1 group by a, b with cube; + +CREATE TABLE T2(a STRING, b STRING, c int, d int); + +INSERT OVERWRITE TABLE T2 +SELECT a, b, c, c from T1; + +EXPLAIN +SELECT a, b, sum(c+d) from T2 group by a, b with cube; +SELECT a, b, sum(c+d) from T2 group by a, b with cube; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets3.q new file mode 100644 index 0000000000000..9a00d0a7aa77f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets3.q @@ -0,0 +1,27 @@ +-- In this test, 2 files are loaded into table T1. The data contains rows with the same value of a and b, +-- with different number of rows for a and b in each file. Since bucketizedHiveInputFormat is used, +-- this tests that the aggregate function stores the partial aggregate state correctly even if an +-- additional MR job is created for processing the grouping sets. +CREATE TABLE T1(a STRING, b STRING, c STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/grouping_sets1.txt' INTO TABLE T1; +LOAD DATA LOCAL INPATH '../data/files/grouping_sets2.txt' INTO TABLE T1; + +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.new.job.grouping.set.cardinality = 30; + +-- The query below will execute in a single MR job, since 4 rows are generated per input row +-- (cube of a,b will lead to (a,b), (a, null), (null, b) and (null, null) and +-- hive.new.job.grouping.set.cardinality is more than 4. +EXPLAIN +SELECT a, b, avg(c), count(*) from T1 group by a, b with cube; +SELECT a, b, avg(c), count(*) from T1 group by a, b with cube; + +set hive.new.job.grouping.set.cardinality=2; + +-- The query below will execute in 2 MR jobs, since hive.new.job.grouping.set.cardinality is set to 2. +-- The partial aggregation state should be maintained correctly across MR jobs. +EXPLAIN +SELECT a, b, avg(c), count(*) from T1 group by a, b with cube; +SELECT a, b, avg(c), count(*) from T1 group by a, b with cube; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets4.q new file mode 100644 index 0000000000000..25f1fcd793a74 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets4.q @@ -0,0 +1,39 @@ +set hive.merge.mapfiles = false; +set hive.merge.mapredfiles = false; +-- Set merging to false above to make the explain more readable + +CREATE TABLE T1(a STRING, b STRING, c STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/grouping_sets.txt' INTO TABLE T1; + +-- This tests that cubes and rollups work fine inside sub-queries. +EXPLAIN +SELECT * FROM +(SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq1 +join +(SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq2 +on subq1.a = subq2.a order by subq1.a, subq1.b, subq2.a, subq2.b; + +SELECT * FROM +(SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq1 +join +(SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq2 +on subq1.a = subq2.a order by subq1.a, subq1.b, subq2.a, subq2.b; + +set hive.new.job.grouping.set.cardinality=2; + +-- Since 4 grouping sets would be generated for each sub-query, an additional MR job should be created +-- for each of them +EXPLAIN +SELECT * FROM +(SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq1 +join +(SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq2 +on subq1.a = subq2.a order by subq1.a, subq1.b, subq2.a, subq2.b; + +SELECT * FROM +(SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq1 +join +(SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq2 +on subq1.a = subq2.a order by subq1.a, subq1.b, subq2.a, subq2.b; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets5.q new file mode 100644 index 0000000000000..fb0c5913fa07f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_grouping_sets5.q @@ -0,0 +1,25 @@ +set hive.merge.mapfiles = false; +set hive.merge.mapredfiles = false; +-- Set merging to false above to make the explain more readable + +CREATE TABLE T1(a STRING, b STRING, c STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/grouping_sets.txt' INTO TABLE T1; + +-- This tests that cubes and rollups work fine where the source is a sub-query +EXPLAIN +SELECT a, b, count(*) FROM +(SELECT a, b, count(1) from T1 group by a, b) subq1 group by a, b with cube; + +SELECT a, b, count(*) FROM +(SELECT a, b, count(1) from T1 group by a, b) subq1 group by a, b with cube; + +set hive.new.job.grouping.set.cardinality=2; + +-- Since 4 grouping sets would be generated for the cube, an additional MR job should be created +EXPLAIN +SELECT a, b, count(*) FROM +(SELECT a, b, count(1) from T1 group by a, b) subq1 group by a, b with cube; + +SELECT a, b, count(*) FROM +(SELECT a, b, count(1) from T1 group by a, b) subq1 group by a, b with cube; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_map_ppr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_map_ppr.q new file mode 100644 index 0000000000000..f0a8b72b0c83e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_map_ppr.q @@ -0,0 +1,20 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key STRING, c1 INT, c2 STRING) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +FROM srcpart src +INSERT OVERWRITE TABLE dest1 +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) +WHERE src.ds = '2008-04-08' +GROUP BY substr(src.key,1,1); + +FROM srcpart src +INSERT OVERWRITE TABLE dest1 +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) +WHERE src.ds = '2008-04-08' +GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_map_ppr_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_map_ppr_multi_distinct.q new file mode 100644 index 0000000000000..b863344485d9f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_map_ppr_multi_distinct.q @@ -0,0 +1,20 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; +set mapred.reduce.tasks=31; + +CREATE TABLE dest1(key STRING, c1 INT, c2 STRING, C3 INT, c4 INT) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +FROM srcpart src +INSERT OVERWRITE TABLE dest1 +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(DISTINCT src.value) +WHERE src.ds = '2008-04-08' +GROUP BY substr(src.key,1,1); + +FROM srcpart src +INSERT OVERWRITE TABLE dest1 +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(DISTINCT src.value) +WHERE src.ds = '2008-04-08' +GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_insert_common_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_insert_common_distinct.q new file mode 100644 index 0000000000000..aa1c48939a766 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_insert_common_distinct.q @@ -0,0 +1,32 @@ +set hive.map.aggr=true; + +create table dest1(key int, cnt int); +create table dest2(key int, cnt int); + +explain +from src +insert overwrite table dest1 select key, count(distinct value) group by key +insert overwrite table dest2 select key+key, count(distinct value) group by key+key; + +from src +insert overwrite table dest1 select key, count(distinct value) group by key +insert overwrite table dest2 select key+key, count(distinct value) group by key+key; + + +select * from dest1 where key < 10 order by key; +select * from dest2 where key < 20 order by key limit 10; + +set hive.optimize.multigroupby.common.distincts=false; + +-- no need to spray by distinct key first +explain +from src +insert overwrite table dest1 select key, count(distinct value) group by key +insert overwrite table dest2 select key+key, count(distinct value) group by key+key; + +from src +insert overwrite table dest1 select key, count(distinct value) group by key +insert overwrite table dest2 select key+key, count(distinct value) group by key+key; + +select * from dest1 where key < 10 order by key; +select * from dest2 where key < 20 order by key limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer.q new file mode 100644 index 0000000000000..145aab87f1877 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer.q @@ -0,0 +1,49 @@ +set hive.multigroupby.singlereducer=true; + +CREATE TABLE dest_g2(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; +CREATE TABLE dest_g3(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; +CREATE TABLE dest_g4(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; +CREATE TABLE dest_h2(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; +CREATE TABLE dest_h3(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) >= 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g3 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) < 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g4 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) >= 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g3 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) < 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g4 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1); + +SELECT * FROM dest_g2 ORDER BY key ASC, c1 ASC, c2 ASC, c3 ASC, c4 ASC; +SELECT * FROM dest_g3 ORDER BY key ASC, c1 ASC, c2 ASC, c3 ASC, c4 ASC; +SELECT * FROM dest_g4 ORDER BY key ASC, c1 ASC, c2 ASC, c3 ASC, c4 ASC; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) >= 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g3 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) < 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g4 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_h2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1), substr(src.key,2,1) LIMIT 10 +INSERT OVERWRITE TABLE dest_h3 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) >= 5 GROUP BY substr(src.key,1,1), substr(src.key,2,1); + +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) >= 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g3 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) < 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g4 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_h2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(substr(src.value, 5)), count(src.value) GROUP BY substr(src.key,1,1), substr(src.key,2,1) LIMIT 10 +INSERT OVERWRITE TABLE dest_h3 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(substr(src.value, 5)), count(src.value) WHERE substr(src.key,1,1) >= 5 GROUP BY substr(src.key,1,1), substr(src.key,2,1); + +SELECT * FROM dest_g2 ORDER BY key ASC, c1 ASC, c2 ASC, c3 ASC, c4 ASC; +SELECT * FROM dest_g3 ORDER BY key ASC, c1 ASC, c2 ASC, c3 ASC, c4 ASC; +SELECT * FROM dest_g4 ORDER BY key ASC, c1 ASC, c2 ASC, c3 ASC, c4 ASC; +SELECT * FROM dest_h2 ORDER BY key ASC, c1 ASC, c2 ASC, c3 ASC, c4 ASC; +SELECT * FROM dest_h3 ORDER BY key ASC, c1 ASC, c2 ASC, c3 ASC, c4 ASC; + +DROP TABLE dest_g2; +DROP TABLE dest_g3; +DROP TABLE dest_g4; +DROP TABLE dest_h2; +DROP TABLE dest_h3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer2.q new file mode 100644 index 0000000000000..b58f9d3ade441 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer2.q @@ -0,0 +1,19 @@ +set hive.multigroupby.singlereducer=true; + +CREATE TABLE dest_g2(key STRING, c1 INT) STORED AS TEXTFILE; +CREATE TABLE dest_g3(key STRING, c1 INT, c2 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT src.key) WHERE substr(src.key,1,1) >= 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g3 SELECT substr(src.key,1,1), count(DISTINCT src.key), count(src.value) WHERE substr(src.key,1,1) < 5 GROUP BY substr(src.key,1,1); + +FROM src +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT src.key) WHERE substr(src.key,1,1) >= 5 GROUP BY substr(src.key,1,1) +INSERT OVERWRITE TABLE dest_g3 SELECT substr(src.key,1,1), count(DISTINCT src.key), count(src.value) WHERE substr(src.key,1,1) < 5 GROUP BY substr(src.key,1,1); + +SELECT * FROM dest_g2; +SELECT * FROM dest_g3; + +DROP TABLE dest_g2; +DROP TABLE dest_g3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer3.q new file mode 100644 index 0000000000000..1253ddfed52a7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_multi_single_reducer3.q @@ -0,0 +1,101 @@ +-- HIVE-3849 Aliased column in where clause for multi-groupby single reducer cannot be resolved +create table e1 (key string, count int); +create table e2 (key string, count int); + +explain +from src +insert overwrite table e1 +select key, count(*) +where src.value in ('val_100', 'val_200', 'val_300') AND key in (100, 150, 200) +group by key +insert overwrite table e2 +select key, count(*) +where src.value in ('val_400', 'val_500') AND key in (400, 450) +group by key; + +from src +insert overwrite table e1 +select key, count(*) +where src.value in ('val_100', 'val_200', 'val_300') AND key in (100, 150, 200) +group by key +insert overwrite table e2 +select key, count(*) +where src.value in ('val_400', 'val_500') AND key in (400, 450) +group by key; + +select * from e1; +select * from e2; + +explain +from src +insert overwrite table e1 +select value, count(*) +where src.key + src.key = 200 or src.key - 100 = 100 or src.key = 300 AND VALUE IS NOT NULL +group by value +insert overwrite table e2 +select value, count(*) +where src.key + src.key = 400 or src.key - 100 = 500 AND VALUE IS NOT NULL +group by value; + +from src +insert overwrite table e1 +select value, count(*) +where src.key + src.key = 200 or src.key - 100 = 100 or src.key = 300 AND VALUE IS NOT NULL +group by value +insert overwrite table e2 +select value, count(*) +where src.key + src.key = 400 or src.key - 100 = 500 AND VALUE IS NOT NULL +group by value; + +select * from e1; +select * from e2; + +set hive.optimize.ppd=false; + +explain +from src +insert overwrite table e1 +select key, count(*) +where src.value in ('val_100', 'val_200', 'val_300') AND key in (100, 150, 200) +group by key +insert overwrite table e2 +select key, count(*) +where src.value in ('val_400', 'val_500') AND key in (400, 450) +group by key; + +from src +insert overwrite table e1 +select key, count(*) +where src.value in ('val_100', 'val_200', 'val_300') AND key in (100, 150, 200) +group by key +insert overwrite table e2 +select key, count(*) +where src.value in ('val_400', 'val_500') AND key in (400, 450) +group by key; + +select * from e1; +select * from e2; + +explain +from src +insert overwrite table e1 +select value, count(*) +where src.key + src.key = 200 or src.key - 100 = 100 or src.key = 300 AND VALUE IS NOT NULL +group by value +insert overwrite table e2 +select value, count(*) +where src.key + src.key = 400 or src.key - 100 = 500 AND VALUE IS NOT NULL +group by value; + +from src +insert overwrite table e1 +select value, count(*) +where src.key + src.key = 200 or src.key - 100 = 100 or src.key = 300 AND VALUE IS NOT NULL +group by value +insert overwrite table e2 +select value, count(*) +where src.key + src.key = 400 or src.key - 100 = 500 AND VALUE IS NOT NULL +group by value; + +select * from e1; +select * from e2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_mutli_insert_common_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_mutli_insert_common_distinct.q new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_neg_float.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_neg_float.q new file mode 100644 index 0000000000000..0e41131861b7d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_neg_float.q @@ -0,0 +1,10 @@ +FROM src +SELECT cast('-30.33' as DOUBLE) +GROUP BY cast('-30.33' as DOUBLE) +LIMIT 1; + + +FROM src +SELECT '-30.33' +GROUP BY '-30.33' +LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_position.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_position.q new file mode 100644 index 0000000000000..4316d4a63ab82 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_position.q @@ -0,0 +1,72 @@ +set hive.groupby.orderby.position.alias=true; + +CREATE TABLE testTable1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE testTable2(key INT, val1 STRING, val2 STRING) STORED AS TEXTFILE; + +-- Position Alias in GROUP BY and ORDER BY + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE testTable1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) WHERE SRC.key < 20 GROUP BY 1 +INSERT OVERWRITE TABLE testTable2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) WHERE SRC.key < 20 GROUP BY 1, 2; + +FROM SRC +INSERT OVERWRITE TABLE testTable1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) WHERE SRC.key < 20 GROUP BY 1 +INSERT OVERWRITE TABLE testTable2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) WHERE SRC.key < 20 GROUP BY 1, 2; + +SELECT key, value FROM testTable1 ORDER BY 1, 2; +SELECT key, val1, val2 FROM testTable2 ORDER BY 1, 2, 3; + +EXPLAIN +FROM SRC +INSERT OVERWRITE TABLE testTable1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) WHERE SRC.key < 20 GROUP BY 1 +INSERT OVERWRITE TABLE testTable2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) WHERE SRC.key < 20 GROUP BY 2, 1; + +FROM SRC +INSERT OVERWRITE TABLE testTable1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) WHERE SRC.key < 20 GROUP BY 1 +INSERT OVERWRITE TABLE testTable2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) WHERE SRC.key < 20 GROUP BY 2, 1; + +SELECT key, value FROM testTable1 ORDER BY 1, 2; +SELECT key, val1, val2 FROM testTable2 ORDER BY 1, 2, 3; + +-- Position Alias in subquery + +EXPLAIN +SELECT t.key, t.value +FROM (SELECT b.key as key, count(1) as value FROM src b WHERE b.key <= 20 GROUP BY 1) t +ORDER BY 2 DESC, 1 ASC; + +SELECT t.key, t.value +FROM (SELECT b.key as key, count(1) as value FROM src b WHERE b.key <= 20 GROUP BY 1) t +ORDER BY 2 DESC, 1 ASC; + +EXPLAIN +SELECT c1, c2, c3, c4 +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2, COUNT(DISTINCT SUBSTR(src1.value,5)) AS c3 WHERE src1.key > 10 and src1.key < 20 GROUP BY 1, 2 + ) a + JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 GROUP BY 1, 2 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +ORDER BY 1 DESC, 2 DESC, 3 ASC, 4 ASC; + +SELECT c1, c2, c3, c4 +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2, COUNT(DISTINCT SUBSTR(src1.value,5)) AS c3 WHERE src1.key > 10 and src1.key < 20 GROUP BY 1, 2 + ) a + JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 GROUP BY 1, 2 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +ORDER BY 1 DESC, 2 DESC, 3 ASC, 4 ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppd.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppd.q new file mode 100644 index 0000000000000..4cda623b80af8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppd.q @@ -0,0 +1,4 @@ +-- see HIVE-2382 +create table invites (id int, foo int, bar int); +explain select * from (select foo, bar from (select bar, foo from invites c union all select bar, foo from invites d) b) a group by bar, foo having bar=1; +drop table invites; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppr.q new file mode 100644 index 0000000000000..1f588eec2477c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppr.q @@ -0,0 +1,19 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=false; + +CREATE TABLE dest1(key STRING, c1 INT, c2 STRING) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +FROM srcpart src +INSERT OVERWRITE TABLE dest1 +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) +WHERE src.ds = '2008-04-08' +GROUP BY substr(src.key,1,1); + +FROM srcpart src +INSERT OVERWRITE TABLE dest1 +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) +WHERE src.ds = '2008-04-08' +GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppr_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppr_multi_distinct.q new file mode 100644 index 0000000000000..20c73bd306648 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_ppr_multi_distinct.q @@ -0,0 +1,19 @@ +set hive.map.aggr=false; +set hive.groupby.skewindata=false; + +CREATE TABLE dest1(key STRING, c1 INT, c2 STRING, c3 INT, c4 INT) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +FROM srcpart src +INSERT OVERWRITE TABLE dest1 +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(DISTINCT src.value) +WHERE src.ds = '2008-04-08' +GROUP BY substr(src.key,1,1); + +FROM srcpart src +INSERT OVERWRITE TABLE dest1 +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))), sum(DISTINCT substr(src.value, 5)), count(DISTINCT src.value) +WHERE src.ds = '2008-04-08' +GROUP BY substr(src.key,1,1); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_rollup1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_rollup1.q new file mode 100644 index 0000000000000..f79b0c472ebb1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_rollup1.q @@ -0,0 +1,49 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +EXPLAIN +SELECT key, val, count(1) FROM T1 GROUP BY key, val with rollup; + +SELECT key, val, count(1) FROM T1 GROUP BY key, val with rollup +ORDER BY key, val; + +EXPLAIN +SELECT key, count(distinct val) FROM T1 GROUP BY key with rollup; + +SELECT key, count(distinct val) FROM T1 GROUP BY key with rollup +ORDER BY key; + +set hive.groupby.skewindata=true; + +EXPLAIN +SELECT key, val, count(1) FROM T1 GROUP BY key, val with rollup; + +SELECT key, val, count(1) FROM T1 GROUP BY key, val with rollup +ORDER BY key, val; + +EXPLAIN +SELECT key, count(distinct val) FROM T1 GROUP BY key with rollup; + +SELECT key, count(distinct val) FROM T1 GROUP BY key with rollup +ORDER BY key; + + +set hive.multigroupby.singlereducer=true; + +CREATE TABLE T2(key1 STRING, key2 STRING, val INT) STORED AS TEXTFILE; +CREATE TABLE T3(key1 STRING, key2 STRING, val INT) STORED AS TEXTFILE; + +EXPLAIN +FROM T1 +INSERT OVERWRITE TABLE T2 SELECT key, val, count(1) group by key, val with rollup +INSERT OVERWRITE TABLE T3 SELECT key, val, sum(1) group by key, val with rollup; + + +FROM T1 +INSERT OVERWRITE TABLE T2 SELECT key, val, count(1) group by key, val with rollup +INSERT OVERWRITE TABLE T3 SELECT key, val, sum(1) group by key, val with rollup; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_1.q new file mode 100644 index 0000000000000..911a11ae8990f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_1.q @@ -0,0 +1,282 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +CREATE TABLE outputTbl1(key int, cnt int); + +-- The plan should be converted to a map-side group by if the group by key +-- matches the sorted key +-- addind a order by at the end to make the test results deterministic +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +CREATE TABLE outputTbl2(key1 int, key2 string, cnt int); + +-- no map-side group by even if the group by key is a superset of sorted key +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +SELECT * FROM outputTbl2 ORDER BY key1, key2; + +-- It should work for sub-queries +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM (SELECT key, val FROM T1) subq1 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM (SELECT key, val FROM T1) subq1 GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- It should work for sub-queries with column aliases +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT k, count(1) FROM (SELECT key as k, val as v FROM T1) subq1 GROUP BY k; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT k, count(1) FROM (SELECT key as k, val as v FROM T1) subq1 GROUP BY k; + +SELECT * FROM outputTbl1 ORDER BY key; + +CREATE TABLE outputTbl3(key1 int, key2 int, cnt int); + +-- The plan should be converted to a map-side group by if the group by key contains a constant followed +-- by a match to the sorted key +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl3 +SELECT 1, key, count(1) FROM T1 GROUP BY 1, key; + +INSERT OVERWRITE TABLE outputTbl3 +SELECT 1, key, count(1) FROM T1 GROUP BY 1, key; + +SELECT * FROM outputTbl3 ORDER BY key1, key2; + +CREATE TABLE outputTbl4(key1 int, key2 int, key3 string, cnt int); + +-- no map-side group by if the group by key contains a constant followed by another column +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, 1, val, count(1) FROM T1 GROUP BY key, 1, val; + +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, 1, val, count(1) FROM T1 GROUP BY key, 1, val; + +SELECT * FROM outputTbl4 ORDER BY key1, key2, key3; + +-- no map-side group by if the group by key contains a function +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl3 +SELECT key, key + 1, count(1) FROM T1 GROUP BY key, key + 1; + +INSERT OVERWRITE TABLE outputTbl3 +SELECT key, key + 1, count(1) FROM T1 GROUP BY key, key + 1; + +SELECT * FROM outputTbl3 ORDER BY key1, key2; + +-- it should not matter what follows the group by +-- test various cases + +-- group by followed by another group by +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key + key, sum(cnt) from +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +group by key + key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key + key, sum(cnt) from +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +group by key + key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- group by followed by a union +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM ( +SELECT key, count(1) FROM T1 GROUP BY key + UNION ALL +SELECT key, count(1) FROM T1 GROUP BY key +) subq1; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM ( +SELECT key, count(1) FROM T1 GROUP BY key + UNION ALL +SELECT key, count(1) FROM T1 GROUP BY key +) subq1; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- group by followed by a union where one of the sub-queries is map-side group by +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM ( +SELECT key, count(1) FROM T1 GROUP BY key + UNION ALL +SELECT key + key as key, count(1) FROM T1 GROUP BY key + key +) subq1; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM ( +SELECT key, count(1) as cnt FROM T1 GROUP BY key + UNION ALL +SELECT key + key as key, count(1) as cnt FROM T1 GROUP BY key + key +) subq1; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- group by followed by a join +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT subq1.key, subq1.cnt+subq2.cnt FROM +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +JOIN +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq2 +ON subq1.key = subq2.key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT subq1.key, subq1.cnt+subq2.cnt FROM +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +JOIN +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq2 +ON subq1.key = subq2.key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- group by followed by a join where one of the sub-queries can be performed in the mapper +EXPLAIN EXTENDED +SELECT * FROM +(SELECT key, count(1) FROM T1 GROUP BY key) subq1 +JOIN +(SELECT key, val, count(1) FROM T1 GROUP BY key, val) subq2 +ON subq1.key = subq2.key; + +CREATE TABLE T2(key STRING, val STRING) +CLUSTERED BY (key, val) SORTED BY (key, val) INTO 2 BUCKETS STORED AS TEXTFILE; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T2 select key, val from T1; + +-- no mapside sort group by if the group by is a prefix of the sorted key +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T2 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T2 GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- The plan should be converted to a map-side group by if the group by key contains a constant in between the +-- sorted keys +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, 1, val, count(1) FROM T2 GROUP BY key, 1, val; + +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, 1, val, count(1) FROM T2 GROUP BY key, 1, val; + +SELECT * FROM outputTbl4 ORDER BY key1, key2, key3; + +CREATE TABLE outputTbl5(key1 int, key2 int, key3 string, key4 int, cnt int); + +-- The plan should be converted to a map-side group by if the group by key contains a constant in between the +-- sorted keys followed by anything +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl5 +SELECT key, 1, val, 2, count(1) FROM T2 GROUP BY key, 1, val, 2; + +INSERT OVERWRITE TABLE outputTbl5 +SELECT key, 1, val, 2, count(1) FROM T2 GROUP BY key, 1, val, 2; + +SELECT * FROM outputTbl5 +ORDER BY key1, key2, key3, key4; + +-- contants from sub-queries should work fine +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, constant, val, count(1) from +(SELECT key, 1 as constant, val from T2)subq +group by key, constant, val; + +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, constant, val, count(1) from +(SELECT key, 1 as constant, val from T2)subq +group by key, constant, val; + +SELECT * FROM outputTbl4 ORDER BY key1, key2, key3; + +-- multiple levels of contants from sub-queries should work fine +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl4 +select key, constant3, val, count(1) from +( +SELECT key, constant as constant2, val, 2 as constant3 from +(SELECT key, 1 as constant, val from T2)subq +)subq2 +group by key, constant3, val; + +INSERT OVERWRITE TABLE outputTbl4 +select key, constant3, val, count(1) from +( +SELECT key, constant as constant2, val, 2 as constant3 from +(SELECT key, 1 as constant, val from T2)subq +)subq2 +group by key, constant3, val; + +SELECT * FROM outputTbl4 ORDER BY key1, key2, key3; + +set hive.map.aggr=true; +set hive.multigroupby.singlereducer=false; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, cnt INT); +CREATE TABLE DEST2(key INT, val STRING, cnt INT); + +SET hive.exec.compress.intermediate=true; +SET hive.exec.compress.output=true; + +EXPLAIN +FROM T2 +INSERT OVERWRITE TABLE DEST1 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE DEST2 SELECT key, val, count(1) GROUP BY key, val; + +FROM T2 +INSERT OVERWRITE TABLE DEST1 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE DEST2 SELECT key, val, count(1) GROUP BY key, val; + +select * from DEST1 ORDER BY key, cnt; +select * from DEST2 ORDER BY key, val, val; + +-- multi-table insert with a sub-query +EXPLAIN +FROM (select key, val from T2 where key = 8) x +INSERT OVERWRITE TABLE DEST1 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE DEST2 SELECT key, val, count(1) GROUP BY key, val; + +FROM (select key, val from T2 where key = 8) x +INSERT OVERWRITE TABLE DEST1 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE DEST2 SELECT key, val, count(1) GROUP BY key, val; + +select * from DEST1 ORDER BY key, cnt; +select * from DEST2 ORDER BY key, val, cnt; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_10.q new file mode 100644 index 0000000000000..b3ddd42dceed6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_10.q @@ -0,0 +1,26 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 PARTITION (ds='1') +SELECT * from src where key = 0 or key = 11; + +-- The plan is converted to a map-side plan +EXPLAIN select distinct key from T1; +select distinct key from T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 PARTITION (ds='2') +SELECT * from src where key = 0 or key = 11; + +-- The plan is not converted to a map-side, since although the sorting columns and grouping +-- columns match, the user is querying multiple input partitions +EXPLAIN select distinct key from T1; +select distinct key from T1; + +DROP TABLE T1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_11.q new file mode 100644 index 0000000000000..19063f667898e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_11.q @@ -0,0 +1,40 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 PARTITION (ds='1') +SELECT * from src where key < 10; + +-- The plan is optimized to perform partial aggregation on the mapper +EXPLAIN select count(distinct key) from T1; +select count(distinct key) from T1; + +-- The plan is optimized to perform partial aggregation on the mapper +EXPLAIN select count(distinct key), count(1), count(key), sum(distinct key) from T1; +select count(distinct key), count(1), count(key), sum(distinct key) from T1; + +-- The plan is not changed in the presence of a grouping key +EXPLAIN select count(distinct key), count(1), count(key), sum(distinct key) from T1 group by key; +select count(distinct key), count(1), count(key), sum(distinct key) from T1 group by key; + +-- The plan is not changed in the presence of a grouping key +EXPLAIN select key, count(distinct key), count(1), count(key), sum(distinct key) from T1 group by key; +select key, count(distinct key), count(1), count(key), sum(distinct key) from T1 group by key; + +-- The plan is not changed in the presence of a grouping key expression +EXPLAIN select count(distinct key+key) from T1; +select count(distinct key+key) from T1; + +EXPLAIN select count(distinct 1) from T1; +select count(distinct 1) from T1; + +set hive.map.aggr=false; + +-- no plan change if map aggr is turned off +EXPLAIN select count(distinct key) from T1; +select count(distinct key) from T1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_2.q new file mode 100644 index 0000000000000..31b4ec5c74dc2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_2.q @@ -0,0 +1,25 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (key) SORTED BY (val) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +CREATE TABLE outputTbl1(val string, cnt int); + +-- The plan should not be converted to a map-side group by even though the group by key +-- matches the sorted key. Adding a order by at the end to make the test results deterministic +EXPLAIN +INSERT OVERWRITE TABLE outputTbl1 +SELECT val, count(1) FROM T1 GROUP BY val; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT val, count(1) FROM T1 GROUP BY val; + +SELECT * FROM outputTbl1 ORDER BY val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_3.q new file mode 100644 index 0000000000000..103c57a123576 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_3.q @@ -0,0 +1,36 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (key) SORTED BY (key, val) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +CREATE TABLE outputTbl1(key string, val string, cnt int); + +-- The plan should be converted to a map-side group by +EXPLAIN +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +SELECT * FROM outputTbl1 ORDER BY key, val; + +CREATE TABLE outputTbl2(key string, cnt int); + +-- The plan should be converted to a map-side group by +EXPLAIN +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, count(1) FROM T1 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, count(1) FROM T1 GROUP BY key; + +SELECT * FROM outputTbl2 ORDER BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_4.q new file mode 100644 index 0000000000000..e43da3c93225f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_4.q @@ -0,0 +1,38 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (key, val) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +CREATE TABLE outputTbl1(key STRING, cnt INT); + +-- The plan should not be converted to a map-side group by. +-- However, there should no hash-based aggregation on the map-side +EXPLAIN +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +CREATE TABLE outputTbl2(key STRING, val STRING, cnt INT); + +-- The plan should not be converted to a map-side group by. +-- Hash-based aggregations should be performed on the map-side +EXPLAIN +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +SELECT * FROM outputTbl2 ORDER BY key, val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_5.q new file mode 100644 index 0000000000000..bef5e5d2d547a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_5.q @@ -0,0 +1,75 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (val) SORTED BY (key, val) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +CREATE TABLE outputTbl1(key STRING, val STRING, cnt INT); + +-- The plan should be converted to a map-side group by, since the +-- sorting columns and grouping columns match, and all the bucketing columns +-- are part of sorting columns +EXPLAIN +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +SELECT * FROM outputTbl1 ORDER BY key, val; + +DROP TABLE T1; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (val, key) SORTED BY (key, val) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +-- The plan should be converted to a map-side group by, since the +-- sorting columns and grouping columns match, and all the bucketing columns +-- are part of sorting columns +EXPLAIN +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +SELECT * FROM outputTbl1 ORDER BY key, val; + +DROP TABLE T1; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (val) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +CREATE TABLE outputTbl2(key STRING, cnt INT); + +-- The plan should not be converted to a map-side group by, since although the +-- sorting columns and grouping columns match, all the bucketing columns +-- are not part of sorting columns. However, no hash map aggregation is required +-- on the mapside. +EXPLAIN +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, count(1) FROM T1 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, count(1) FROM T1 GROUP BY key; + +SELECT * FROM outputTbl2 ORDER BY key; + +DROP TABLE T1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_6.q new file mode 100644 index 0000000000000..cf076e8125612 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_6.q @@ -0,0 +1,41 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string); + +CREATE TABLE outputTbl1(key int, cnt int); + +-- The plan should not be converted to a map-side group since no partition is being accessed +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 where ds = '1' GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 where ds = '1' GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1 PARTITION (ds='2'); + +-- The plan should not be converted to a map-side group since no partition is being accessed +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 where ds = '1' GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 where ds = '1' GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- The plan should not be converted to a map-side group since the partition being accessed +-- is neither bucketed not sorted +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 where ds = '2' GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 where ds = '2' GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_7.q new file mode 100644 index 0000000000000..c2d42154e516c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_7.q @@ -0,0 +1,28 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string) +CLUSTERED BY (val) SORTED BY (key, val) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1 PARTITION (ds='1'); + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 PARTITION (ds='1') select key, val from T1 where ds = '1'; + +CREATE TABLE outputTbl1(key STRING, val STRING, cnt INT); + +-- The plan should be converted to a map-side group by, since the +-- sorting columns and grouping columns match, and all the bucketing columns +-- are part of sorting columns +EXPLAIN +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, val, count(1) FROM T1 where ds = '1' GROUP BY key, val; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, val, count(1) FROM T1 where ds = '1' GROUP BY key, val; + +SELECT * FROM outputTbl1 ORDER BY key, val; + +DROP TABLE T1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_8.q new file mode 100644 index 0000000000000..121804e60a9da --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_8.q @@ -0,0 +1,27 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1 PARTITION (ds='1'); + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 PARTITION (ds='1') select key, val from T1 where ds = '1'; + +-- The plan is not converted to a map-side, since although the sorting columns and grouping +-- columns match, the user is issueing a distinct. +-- However, after HIVE-4310, partial aggregation is performed on the mapper +EXPLAIN +select count(distinct key) from T1; +select count(distinct key) from T1; + +set hive.map.groupby.sorted.testmode=true; +-- In testmode, the plan is not changed +EXPLAIN +select count(distinct key) from T1; +select count(distinct key) from T1; + +DROP TABLE T1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_9.q new file mode 100644 index 0000000000000..1c3d1cdcc265d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_9.q @@ -0,0 +1,21 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; + +CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1 PARTITION (ds='1'); + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 PARTITION (ds='1') select key, val from T1 where ds = '1'; +INSERT OVERWRITE TABLE T1 PARTITION (ds='2') select key, val from T1 where ds = '1'; + +-- The plan is not converted to a map-side, since although the sorting columns and grouping +-- columns match, the user is querying multiple input partitions +EXPLAIN +select key, count(1) from T1 group by key; +select key, count(1) from T1 group by key; + +DROP TABLE T1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_skew_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_skew_1.q new file mode 100644 index 0000000000000..068c26a9c2b4b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_skew_1.q @@ -0,0 +1,283 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; +set hive.groupby.skewindata=true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +CREATE TABLE outputTbl1(key int, cnt int); + +-- The plan should be converted to a map-side group by if the group by key +-- matches the sorted key +-- addind a order by at the end to make the test results deterministic +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +CREATE TABLE outputTbl2(key1 int, key2 string, cnt int); + +-- no map-side group by even if the group by key is a superset of sorted key +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +INSERT OVERWRITE TABLE outputTbl2 +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +SELECT * FROM outputTbl2 ORDER BY key1, key2; + +-- It should work for sub-queries +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM (SELECT key, val FROM T1) subq1 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM (SELECT key, val FROM T1) subq1 GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- It should work for sub-queries with column aliases +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT k, count(1) FROM (SELECT key as k, val as v FROM T1) subq1 GROUP BY k; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT k, count(1) FROM (SELECT key as k, val as v FROM T1) subq1 GROUP BY k; + +SELECT * FROM outputTbl1 ORDER BY key; + +CREATE TABLE outputTbl3(key1 int, key2 int, cnt int); + +-- The plan should be converted to a map-side group by if the group by key contains a constant followed +-- by a match to the sorted key +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl3 +SELECT 1, key, count(1) FROM T1 GROUP BY 1, key; + +INSERT OVERWRITE TABLE outputTbl3 +SELECT 1, key, count(1) FROM T1 GROUP BY 1, key; + +SELECT * FROM outputTbl3 ORDER BY key1, key2; + +CREATE TABLE outputTbl4(key1 int, key2 int, key3 string, cnt int); + +-- no map-side group by if the group by key contains a constant followed by another column +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, 1, val, count(1) FROM T1 GROUP BY key, 1, val; + +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, 1, val, count(1) FROM T1 GROUP BY key, 1, val; + +SELECT * FROM outputTbl4 ORDER BY key1, key2, key3; + +-- no map-side group by if the group by key contains a function +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl3 +SELECT key, key + 1, count(1) FROM T1 GROUP BY key, key + 1; + +INSERT OVERWRITE TABLE outputTbl3 +SELECT key, key + 1, count(1) FROM T1 GROUP BY key, key + 1; + +SELECT * FROM outputTbl3 ORDER BY key1, key2; + +-- it should not matter what follows the group by +-- test various cases + +-- group by followed by another group by +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key + key, sum(cnt) from +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +group by key + key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key + key, sum(cnt) from +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +group by key + key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- group by followed by a union +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM ( +SELECT key, count(1) FROM T1 GROUP BY key + UNION ALL +SELECT key, count(1) FROM T1 GROUP BY key +) subq1; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM ( +SELECT key, count(1) FROM T1 GROUP BY key + UNION ALL +SELECT key, count(1) FROM T1 GROUP BY key +) subq1; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- group by followed by a union where one of the sub-queries is map-side group by +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM ( +SELECT key, count(1) FROM T1 GROUP BY key + UNION ALL +SELECT key + key as key, count(1) FROM T1 GROUP BY key + key +) subq1; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM ( +SELECT key, count(1) as cnt FROM T1 GROUP BY key + UNION ALL +SELECT key + key as key, count(1) as cnt FROM T1 GROUP BY key + key +) subq1; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- group by followed by a join +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT subq1.key, subq1.cnt+subq2.cnt FROM +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +JOIN +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq2 +ON subq1.key = subq2.key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT subq1.key, subq1.cnt+subq2.cnt FROM +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +JOIN +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq2 +ON subq1.key = subq2.key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- group by followed by a join where one of the sub-queries can be performed in the mapper +EXPLAIN EXTENDED +SELECT * FROM +(SELECT key, count(1) FROM T1 GROUP BY key) subq1 +JOIN +(SELECT key, val, count(1) FROM T1 GROUP BY key, val) subq2 +ON subq1.key = subq2.key; + +CREATE TABLE T2(key STRING, val STRING) +CLUSTERED BY (key, val) SORTED BY (key, val) INTO 2 BUCKETS STORED AS TEXTFILE; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T2 select key, val from T1; + +-- no mapside sort group by if the group by is a prefix of the sorted key +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T2 GROUP BY key; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T2 GROUP BY key; + +SELECT * FROM outputTbl1 ORDER BY key; + +-- The plan should be converted to a map-side group by if the group by key contains a constant in between the +-- sorted keys +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, 1, val, count(1) FROM T2 GROUP BY key, 1, val; + +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, 1, val, count(1) FROM T2 GROUP BY key, 1, val; + +SELECT * FROM outputTbl4 ORDER BY key1, key2, key3; + +CREATE TABLE outputTbl5(key1 int, key2 int, key3 string, key4 int, cnt int); + +-- The plan should be converted to a map-side group by if the group by key contains a constant in between the +-- sorted keys followed by anything +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl5 +SELECT key, 1, val, 2, count(1) FROM T2 GROUP BY key, 1, val, 2; + +INSERT OVERWRITE TABLE outputTbl5 +SELECT key, 1, val, 2, count(1) FROM T2 GROUP BY key, 1, val, 2; + +SELECT * FROM outputTbl5 +ORDER BY key1, key2, key3, key4; + +-- contants from sub-queries should work fine +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, constant, val, count(1) from +(SELECT key, 1 as constant, val from T2)subq +group by key, constant, val; + +INSERT OVERWRITE TABLE outputTbl4 +SELECT key, constant, val, count(1) from +(SELECT key, 1 as constant, val from T2)subq +group by key, constant, val; + +SELECT * FROM outputTbl4 ORDER BY key1, key2, key3; + +-- multiple levels of contants from sub-queries should work fine +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE outputTbl4 +select key, constant3, val, count(1) from +( +SELECT key, constant as constant2, val, 2 as constant3 from +(SELECT key, 1 as constant, val from T2)subq +)subq2 +group by key, constant3, val; + +INSERT OVERWRITE TABLE outputTbl4 +select key, constant3, val, count(1) from +( +SELECT key, constant as constant2, val, 2 as constant3 from +(SELECT key, 1 as constant, val from T2)subq +)subq2 +group by key, constant3, val; + +SELECT * FROM outputTbl4 ORDER BY key1, key2, key3; + +set hive.map.aggr=true; +set hive.multigroupby.singlereducer=false; +set mapred.reduce.tasks=31; + +CREATE TABLE DEST1(key INT, cnt INT); +CREATE TABLE DEST2(key INT, val STRING, cnt INT); + +SET hive.exec.compress.intermediate=true; +SET hive.exec.compress.output=true; + +EXPLAIN +FROM T2 +INSERT OVERWRITE TABLE DEST1 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE DEST2 SELECT key, val, count(1) GROUP BY key, val; + +FROM T2 +INSERT OVERWRITE TABLE DEST1 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE DEST2 SELECT key, val, count(1) GROUP BY key, val; + +select * from DEST1 ORDER BY key, cnt; +select * from DEST2 ORDER BY key, val, val; + +-- multi-table insert with a sub-query +EXPLAIN +FROM (select key, val from T2 where key = 8) x +INSERT OVERWRITE TABLE DEST1 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE DEST2 SELECT key, val, count(1) GROUP BY key, val; + +FROM (select key, val from T2 where key = 8) x +INSERT OVERWRITE TABLE DEST1 SELECT key, count(1) GROUP BY key +INSERT OVERWRITE TABLE DEST2 SELECT key, val, count(1) GROUP BY key, val; + +select * from DEST1 ORDER BY key, cnt; +select * from DEST2 ORDER BY key, val, cnt; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_test_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_test_1.q new file mode 100644 index 0000000000000..8efa05e2544d4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/groupby_sort_test_1.q @@ -0,0 +1,21 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 10; +set hive.map.groupby.sorted=true; +set hive.map.groupby.sorted.testmode=true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +-- perform an insert to make sure there are 2 files +INSERT OVERWRITE TABLE T1 select key, val from T1; + +CREATE TABLE outputTbl1(key int, cnt int); + +-- The plan should be converted to a map-side group by if the group by key +-- matches the sorted key. However, in test mode, the group by wont be converted. +EXPLAIN +INSERT OVERWRITE TABLE outputTbl1 +SELECT key, count(1) FROM T1 GROUP BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/having.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/having.q new file mode 100644 index 0000000000000..5b1aa69d9d82b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/having.q @@ -0,0 +1,14 @@ +EXPLAIN SELECT count(value) AS c FROM src GROUP BY key HAVING c > 3; +SELECT count(value) AS c FROM src GROUP BY key HAVING c > 3; + +EXPLAIN SELECT key, max(value) AS c FROM src GROUP BY key HAVING key != 302; +SELECT key, max(value) AS c FROM src GROUP BY key HAVING key != 302; + +EXPLAIN SELECT key FROM src GROUP BY key HAVING max(value) > "val_255"; +SELECT key FROM src GROUP BY key HAVING max(value) > "val_255"; + +EXPLAIN SELECT key FROM src where key > 300 GROUP BY key HAVING max(value) > "val_255"; +SELECT key FROM src where key > 300 GROUP BY key HAVING max(value) > "val_255"; + +EXPLAIN SELECT key, max(value) FROM src GROUP BY key HAVING max(value) > "val_255"; +SELECT key, max(value) FROM src GROUP BY key HAVING max(value) > "val_255"; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/hook_context_cs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/hook_context_cs.q new file mode 100644 index 0000000000000..94ba14802f015 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/hook_context_cs.q @@ -0,0 +1,14 @@ +drop table vcsc; +CREATE TABLE vcsc (c STRING) PARTITIONED BY (ds STRING); +ALTER TABLE vcsc ADD partition (ds='dummy') location '${system:test.tmp.dir}/VerifyContentSummaryCacheHook'; + +set hive.exec.pre.hooks=org.apache.hadoop.hive.ql.hooks.VerifyContentSummaryCacheHook; +SELECT a.c, b.c FROM vcsc a JOIN vcsc b ON a.ds = 'dummy' AND b.ds = 'dummy' AND a.c = b.c; + +set mapred.job.tracker=local; +set hive.exec.pre.hooks = ; +set hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyContentSummaryCacheHook; +SELECT a.c, b.c FROM vcsc a JOIN vcsc b ON a.ds = 'dummy' AND b.ds = 'dummy' AND a.c = b.c; + +set hive.exec.post.hooks=; +drop table vcsc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/hook_order.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/hook_order.q new file mode 100644 index 0000000000000..b6753b308b5f1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/hook_order.q @@ -0,0 +1,11 @@ +SET hive.exec.pre.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHooksRunInOrder$RunFirst,org.apache.hadoop.hive.ql.hooks.VerifyHooksRunInOrder$RunSecond; +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHooksRunInOrder$RunFirst,org.apache.hadoop.hive.ql.hooks.VerifyHooksRunInOrder$RunSecond; +SET hive.semantic.analyzer.hook=org.apache.hadoop.hive.ql.hooks.VerifyHooksRunInOrder$RunFirstSemanticAnalysisHook,org.apache.hadoop.hive.ql.hooks.VerifyHooksRunInOrder$RunSecondSemanticAnalysisHook; +SET hive.exec.driver.run.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHooksRunInOrder$RunFirstDriverRunHook,org.apache.hadoop.hive.ql.hooks.VerifyHooksRunInOrder$RunSecondDriverRunHook; + +SELECT count(*) FROM src; + +SET hive.exec.pre.hooks=; +SET hive.exec.post.hooks=; +SET hive.semantic.analyzer.hook=; +SET hive.exec.driver.run.hooks=; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/implicit_cast1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/implicit_cast1.q new file mode 100644 index 0000000000000..37fb8568c94f4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/implicit_cast1.q @@ -0,0 +1,13 @@ +CREATE TABLE implicit_test1(a BIGINT, b STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe' WITH SERDEPROPERTIES('serialization.format'= 'org.apache.hadoop.hive.serde2.thrift.TCTLSeparatedProtocol') STORED AS TEXTFILE; + +EXPLAIN +SELECT implicit_test1.* +FROM implicit_test1 +WHERE implicit_test1.a <> 0; + +SELECT implicit_test1.* +FROM implicit_test1 +WHERE implicit_test1.a <> 0; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auth.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auth.q new file mode 100644 index 0000000000000..33a1fc581ed13 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auth.q @@ -0,0 +1,15 @@ +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +create table foobar(key int, value string) PARTITIONED BY (ds string, hr string); +alter table foobar add partition (ds='2008-04-08',hr='12'); + +CREATE INDEX srcpart_auth_index ON TABLE foobar(key) as 'BITMAP' WITH DEFERRED REBUILD; +grant select on table foobar to user hive_test_user; +grant select on table default__foobar_srcpart_auth_index__ to user hive_test_user; +grant update on table default__foobar_srcpart_auth_index__ to user hive_test_user; +grant create on table default__foobar_srcpart_auth_index__ to user hive_test_user; +set hive.security.authorization.enabled=true; + +ALTER INDEX srcpart_auth_index ON foobar PARTITION (ds='2008-04-08',hr='12') REBUILD; +set hive.security.authorization.enabled=false; +DROP INDEX srcpart_auth_index on foobar; +DROP TABLE foobar; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto.q new file mode 100644 index 0000000000000..cb8a1d6293f8d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto.q @@ -0,0 +1,28 @@ +-- try the query without indexing, with manual indexing, and with automatic indexing + +-- without indexing +SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +-- manual indexing +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_where" SELECT `_bucketname` , `_offsets` FROM default__src_src_index__ WHERE key > 80 AND key < 100; +SET hive.index.compact.file=${system:test.tmp.dir}/index_where; +SET hive.optimize.index.filter=false; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; + +EXPLAIN SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; +SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- automatic indexing +EXPLAIN SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; +SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; + +DROP INDEX src_index on src; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_empty.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_empty.q new file mode 100644 index 0000000000000..cb32162d40a06 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_empty.q @@ -0,0 +1,21 @@ +-- Test to ensure that an empty index result is propagated correctly + +-- Create temp, and populate it with some values in src. +CREATE TABLE temp(key STRING, val STRING) STORED AS TEXTFILE; + +-- Build an index on temp. +CREATE INDEX temp_index ON TABLE temp(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX temp_index ON temp REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- query should not return any values +SELECT * FROM default__temp_temp_index__ WHERE key = 86; +EXPLAIN SELECT * FROM temp WHERE key = 86; +SELECT * FROM temp WHERE key = 86; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=false; +DROP table temp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_file_format.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_file_format.q new file mode 100644 index 0000000000000..790e6c223f746 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_file_format.q @@ -0,0 +1,19 @@ +-- test automatic use of index on different file formats +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +EXPLAIN SELECT key, value FROM src WHERE key=86 ORDER BY key; +SELECT key, value FROM src WHERE key=86 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +EXPLAIN SELECT key, value FROM src WHERE key=86 ORDER BY key; +SELECT key, value FROM src WHERE key=86 ORDER BY key; + +DROP INDEX src_index on src; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_mult_tables.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_mult_tables.q new file mode 100644 index 0000000000000..2bf8481f1d6e2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_mult_tables.q @@ -0,0 +1,22 @@ +-- try the query without indexing, with manual indexing, and with automatic indexing + +-- without indexing +EXPLAIN SELECT a.key, a.value FROM src a JOIN srcpart b ON (a.key = b.key) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; +SELECT a.key, a.value FROM src a JOIN srcpart b ON (a.key = b.key) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; + + +CREATE INDEX src_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +CREATE INDEX srcpart_index ON TABLE srcpart(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_index ON srcpart REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +EXPLAIN SELECT a.key, a.value FROM src a JOIN srcpart b ON (a.key = b.key) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; +SELECT a.key, a.value FROM src a JOIN srcpart b ON (a.key = b.key) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; + +DROP INDEX src_index on src; +DROP INDEX srcpart_index on src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_mult_tables_compact.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_mult_tables_compact.q new file mode 100644 index 0000000000000..808a04cc360a6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_mult_tables_compact.q @@ -0,0 +1,23 @@ +-- try the query without indexing, with manual indexing, and with automatic indexing + +-- without indexing +EXPLAIN SELECT a.key, a.value FROM src a JOIN srcpart b ON (a.key = b.key) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; +SELECT a.key, a.value FROM src a JOIN srcpart b ON (a.key = b.key) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; + + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +CREATE INDEX srcpart_index ON TABLE srcpart(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_index ON srcpart REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- automatic indexing +EXPLAIN SELECT a.key, a.value FROM src a JOIN srcpart b ON (a.key = b.key) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; +SELECT a.key, a.value FROM src a JOIN srcpart b ON (a.key = b.key) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; + +DROP INDEX src_index on src; +DROP INDEX srcpart_index on src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_multiple.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_multiple.q new file mode 100644 index 0000000000000..06e97fa76bc97 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_multiple.q @@ -0,0 +1,16 @@ +-- With multiple indexes, make sure we choose which to use in a consistent order + +CREATE INDEX src_key_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +CREATE INDEX src_val_index ON TABLE src(value) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_key_index ON src REBUILD; +ALTER INDEX src_val_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +EXPLAIN SELECT key, value FROM src WHERE key=86 ORDER BY key; +SELECT key, value FROM src WHERE key=86 ORDER BY key; + +DROP INDEX src_key_index ON src; +DROP INDEX src_val_index ON src; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_partitioned.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_partitioned.q new file mode 100644 index 0000000000000..5013d29e732c4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_partitioned.q @@ -0,0 +1,12 @@ +-- test automatic use of index on table with partitions +CREATE INDEX src_part_index ON TABLE srcpart(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_part_index ON srcpart REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +EXPLAIN SELECT key, value FROM srcpart WHERE key=86 AND ds='2008-04-09' ORDER BY key; +SELECT key, value FROM srcpart WHERE key=86 AND ds='2008-04-09' ORDER BY key; + +DROP INDEX src_part_index ON srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_self_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_self_join.q new file mode 100644 index 0000000000000..0984a4a21ba17 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_self_join.q @@ -0,0 +1,16 @@ +-- try the query without indexing, with manual indexing, and with automatic indexing + +EXPLAIN SELECT a.key, b.key FROM src a JOIN src b ON (a.value = b.value) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; +SELECT a.key, b.key FROM src a JOIN src b ON (a.value = b.value) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; + +CREATE INDEX src_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +EXPLAIN SELECT a.key, b.key FROM src a JOIN src b ON (a.value = b.value) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; +SELECT a.key, b.key FROM src a JOIN src b ON (a.value = b.value) WHERE a.key > 80 AND a.key < 100 AND b.key > 70 AND b.key < 90 ORDER BY a.key; + +DROP INDEX src_index on src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_unused.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_unused.q new file mode 100644 index 0000000000000..d8f3eda1813c8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_unused.q @@ -0,0 +1,60 @@ +-- test cases where the index should not be used automatically + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=5368709120; +SET hive.optimize.index.filter.compact.maxsize=-1; + +-- min size too large (src is less than 5G) +EXPLAIN SELECT * FROM src WHERE key > 80 AND key < 100 ORDER BY key; +SELECT * FROM src WHERE key > 80 AND key < 100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; +SET hive.optimize.index.filter.compact.maxsize=1; + +-- max size too small +EXPLAIN SELECT * FROM src WHERE key > 80 AND key < 100 ORDER BY key; +SELECT * FROM src WHERE key > 80 AND key < 100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; +SET hive.optimize.index.filter.compact.maxsize=-1; + +-- OR predicate not supported by compact indexes +EXPLAIN SELECT * FROM src WHERE key < 10 OR key > 480 ORDER BY key; +SELECT * FROM src WHERE key < 10 OR key > 480 ORDER BY key; + + SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; +SET hive.optimize.index.filter.compact.maxsize=-1; + +-- columns are not covered by indexes +DROP INDEX src_index on src; +CREATE INDEX src_val_index ON TABLE src(value) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_val_index ON src REBUILD; + +EXPLAIN SELECT * FROM src WHERE key > 80 AND key < 100 ORDER BY key; +SELECT * FROM src WHERE key > 80 AND key < 100 ORDER BY key; + +DROP INDEX src_val_index on src; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; +SET hive.optimize.index.filter.compact.maxsize=-1; + +-- required partitions have not been built yet +CREATE INDEX src_part_index ON TABLE srcpart(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_part_index ON srcpart PARTITION (ds='2008-04-08', hr=11) REBUILD; + +EXPLAIN SELECT * FROM srcpart WHERE ds='2008-04-09' AND hr=12 AND key < 10 ORDER BY key; +SELECT * FROM srcpart WHERE ds='2008-04-09' AND hr=12 AND key < 10 ORDER BY key; + +DROP INDEX src_part_index on srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_update.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_update.q new file mode 100644 index 0000000000000..976de5c67a0d3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_auto_update.q @@ -0,0 +1,26 @@ +-- Test if index is actually being used. + +-- Create temp, and populate it with some values in src. +CREATE TABLE temp(key STRING, val STRING) STORED AS TEXTFILE; +INSERT OVERWRITE TABLE temp SELECT * FROM src WHERE key < 50; + +-- Build an index on temp. +CREATE INDEX temp_index ON TABLE temp(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX temp_index ON temp REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.autoupdate=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- overwrite temp table so index is out of date +EXPLAIN INSERT OVERWRITE TABLE temp SELECT * FROM src; +INSERT OVERWRITE TABLE temp SELECT * FROM src; + +-- query should return indexed values +EXPLAIN SELECT * FROM temp WHERE key = 86; +SELECT * FROM temp WHERE key = 86; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=false; +DROP table temp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap.q new file mode 100644 index 0000000000000..f9deb2883960c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap.q @@ -0,0 +1,47 @@ +DROP INDEX srcpart_index_proj on srcpart; + +EXPLAIN +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) as 'BITMAP' WITH DEFERRED REBUILD; +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_index_proj ON srcpart REBUILD; +SELECT x.* FROM default__srcpart_srcpart_index_proj__ x WHERE x.ds = '2008-04-08' and x.hr = 11 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_test_index_result" SELECT `_bucketname`, +COLLECT_SET(`_offset`) as `_offsets` FROM default__srcpart_srcpart_index_proj__ +x WHERE NOT EWAH_BITMAP_EMPTY(`_bitmaps`) AND x.key=100 AND x.ds = '2008-04-08' GROUP BY `_bucketname`; +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_test_index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; +SELECT key, value FROM srcpart WHERE key=100 AND ds = '2008-04-08' ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_test_index_result" SELECT `_bucketname` , +COLLECT_SET(`_offset`) as `_offsets` FROM default__srcpart_srcpart_index_proj__ +x WHERE NOT EWAH_BITMAP_EMPTY(`_bitmaps`) AND x.key=100 AND x.ds = '2008-04-08' and x.hr = 11 GROUP BY `_bucketname`; +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_test_index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; +SELECT key, value FROM srcpart WHERE key=100 AND ds = '2008-04-08' and hr = 11 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM srcpart WHERE key=100 AND ds = '2008-04-08' and hr = 11 ORDER BY key; + +DROP INDEX srcpart_index_proj on srcpart; + +EXPLAIN +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) as 'BITMAP' WITH DEFERRED REBUILD; +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_index_proj ON srcpart REBUILD; +SELECT x.* FROM default__srcpart_srcpart_index_proj__ x; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname` , +COLLECT_SET(`_offset`) as `_offsets` FROM default__srcpart_srcpart_index_proj__ +WHERE NOT EWAH_BITMAP_EMPTY(`_bitmaps`) AND key=100 GROUP BY `_bucketname`; +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; +SELECT key, value FROM srcpart WHERE key=100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM srcpart WHERE key=100 ORDER BY key; + +DROP INDEX srcpart_index_proj on srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap1.q new file mode 100644 index 0000000000000..55633d9225fa7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap1.q @@ -0,0 +1,18 @@ +EXPLAIN +CREATE INDEX src_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +CREATE INDEX src_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; +SELECT x.* FROM default__src_src_index__ x ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname`, +COLLECT_SET(`_offset`) as `_offsets` FROM default__src_src_index__ WHERE NOT +EWAH_BITMAP_EMPTY(`_bitmaps`) AND key=100 GROUP BY `_bucketname`; +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; +SELECT key, value FROM src WHERE key=100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM src WHERE key=100 ORDER BY key; + +DROP INDEX src_index ON src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap2.q new file mode 100644 index 0000000000000..bd15a21fa4200 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap2.q @@ -0,0 +1,35 @@ +EXPLAIN +CREATE INDEX src1_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +EXPLAIN +CREATE INDEX src2_index ON TABLE src(value) as 'BITMAP' WITH DEFERRED REBUILD; + +CREATE INDEX src1_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +CREATE INDEX src2_index ON TABLE src(value) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src1_index ON src REBUILD; +ALTER INDEX src2_index ON src REBUILD; +SELECT * FROM default__src_src1_index__ ORDER BY key; +SELECT * FROM default__src_src2_index__ ORDER BY value; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" +SELECT t.bucketname as `_bucketname`, COLLECT_SET(t.offset) AS `_offsets` FROM + (SELECT `_bucketname` AS bucketname, `_offset` AS offset + FROM default__src_src1_index__ + WHERE key = 0 AND NOT EWAH_BITMAP_EMPTY(`_bitmaps`) UNION ALL + SELECT `_bucketname` AS bucketname, `_offset` AS offset + FROM default__src_src2_index__ + WHERE value = "val2" AND NOT EWAH_BITMAP_EMPTY(`_bitmaps`)) t +GROUP BY t.bucketname; + +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; + +SELECT key, value FROM src WHERE key=0 OR value = "val_2" ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM src WHERE key=0 OR value = "val_2" ORDER BY key; + +DROP INDEX src1_index ON src; +DROP INDEX src2_index ON src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap3.q new file mode 100644 index 0000000000000..0d2c811459dcb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap3.q @@ -0,0 +1,47 @@ +EXPLAIN +CREATE INDEX src1_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +EXPLAIN +CREATE INDEX src2_index ON TABLE src(value) as 'BITMAP' WITH DEFERRED REBUILD; + +CREATE INDEX src1_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +CREATE INDEX src2_index ON TABLE src(value) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src1_index ON src REBUILD; +ALTER INDEX src2_index ON src REBUILD; +SELECT * FROM default__src_src1_index__ ORDER BY key; +SELECT * FROM default__src_src2_index__ ORDER BY value; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +EXPLAIN +SELECT a.bucketname AS `_bucketname`, COLLECT_SET(a.offset) as `_offsets` +FROM (SELECT `_bucketname` AS bucketname, `_offset` AS offset, `_bitmaps` AS bitmaps FROM default__src_src1_index__ + WHERE key = 0) a + JOIN + (SELECT `_bucketname` AS bucketname, `_offset` AS offset, `_bitmaps` AS bitmaps FROM default__src_src2_index__ + WHERE value = "val_0") b + ON + a.bucketname = b.bucketname AND a.offset = b.offset WHERE NOT +EWAH_BITMAP_EMPTY(EWAH_BITMAP_AND(a.bitmaps, b.bitmaps)) GROUP BY a.bucketname; + +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" +SELECT a.bucketname AS `_bucketname`, COLLECT_SET(a.offset) as `_offsets` +FROM (SELECT `_bucketname` AS bucketname, `_offset` AS offset, `_bitmaps` AS bitmaps FROM default__src_src1_index__ + WHERE key = 0) a + JOIN + (SELECT `_bucketname` AS bucketname, `_offset` AS offset, `_bitmaps` AS bitmaps FROM default__src_src2_index__ + WHERE value = "val_0") b + ON + a.bucketname = b.bucketname AND a.offset = b.offset WHERE NOT +EWAH_BITMAP_EMPTY(EWAH_BITMAP_AND(a.bitmaps, b.bitmaps)) GROUP BY a.bucketname; + +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; + +SELECT key, value FROM src WHERE key=0 AND value = "val_0" ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM src WHERE key=0 AND value = "val_0" ORDER BY key; + +DROP INDEX src1_index ON src; +DROP INDEX src2_index ON src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_auto.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_auto.q new file mode 100644 index 0000000000000..672ce29f1bb47 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_auto.q @@ -0,0 +1,52 @@ +-- try the query without indexing, with manual indexing, and with automatic indexing +-- without indexing +SELECT key, value FROM src WHERE key=0 AND value = "val_0" ORDER BY key; + +-- create indices +EXPLAIN +CREATE INDEX src1_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +EXPLAIN +CREATE INDEX src2_index ON TABLE src(value) as 'BITMAP' WITH DEFERRED REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +CREATE INDEX src1_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +CREATE INDEX src2_index ON TABLE src(value) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src1_index ON src REBUILD; +ALTER INDEX src2_index ON src REBUILD; +SELECT * FROM default__src_src1_index__ ORDER BY key; +SELECT * FROM default__src_src2_index__ ORDER BY value; + + +-- manual indexing +EXPLAIN +SELECT a.bucketname AS `_bucketname`, COLLECT_SET(a.offset) as `_offsets` +FROM (SELECT `_bucketname` AS bucketname, `_offset` AS offset, `_bitmaps` AS bitmaps FROM default__src_src1_index__ + WHERE key = 0) a + JOIN + (SELECT `_bucketname` AS bucketname, `_offset` AS offset, `_bitmaps` AS bitmaps FROM default__src_src2_index__ + WHERE value = "val_0") b + ON + a.bucketname = b.bucketname AND a.offset = b.offset WHERE NOT +EWAH_BITMAP_EMPTY(EWAH_BITMAP_AND(a.bitmaps, b.bitmaps)) GROUP BY a.bucketname; + +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" +SELECT a.bucketname AS `_bucketname`, COLLECT_SET(a.offset) as `_offsets` +FROM (SELECT `_bucketname` AS bucketname, `_offset` AS offset, `_bitmaps` AS bitmaps FROM default__src_src1_index__ + WHERE key = 0) a + JOIN + (SELECT `_bucketname` AS bucketname, `_offset` AS offset, `_bitmaps` AS bitmaps FROM default__src_src2_index__ + WHERE value = "val_0") b + ON + a.bucketname = b.bucketname AND a.offset = b.offset WHERE NOT +EWAH_BITMAP_EMPTY(EWAH_BITMAP_AND(a.bitmaps, b.bitmaps)) GROUP BY a.bucketname; + +SELECT key, value FROM src WHERE key=0 AND value = "val_0" ORDER BY key; + + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SELECT key, value FROM src WHERE key=0 AND value = "val_0" ORDER BY key; + +DROP INDEX src1_index ON src; +DROP INDEX src2_index ON src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_auto_partitioned.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_auto_partitioned.q new file mode 100644 index 0000000000000..90d7987594bac --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_auto_partitioned.q @@ -0,0 +1,11 @@ +-- test automatic use of index on table with partitions +CREATE INDEX src_part_index ON TABLE srcpart(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src_part_index ON srcpart REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; + +EXPLAIN SELECT key, value FROM srcpart WHERE key=86 AND ds='2008-04-09' ORDER BY key; +SELECT key, value FROM srcpart WHERE key=86 AND ds='2008-04-09' ORDER BY key; + +DROP INDEX src_part_index ON srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_compression.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_compression.q new file mode 100644 index 0000000000000..2f5e5d4fb231b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_compression.q @@ -0,0 +1,13 @@ +SET hive.exec.compress.result=true; +CREATE INDEX src_index ON TABLE src(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- automatic indexing +EXPLAIN SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; +SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; + +DROP INDEX src_index on src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_rc.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_rc.q new file mode 100644 index 0000000000000..054df51c32180 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_bitmap_rc.q @@ -0,0 +1,53 @@ +CREATE TABLE srcpart_rc (key int, value string) PARTITIONED BY (ds string, hr int) STORED AS RCFILE; + +INSERT OVERWRITE TABLE srcpart_rc PARTITION (ds='2008-04-08', hr=11) SELECT key, value FROM srcpart WHERE ds = '2008-04-08' AND hr = 11; +INSERT OVERWRITE TABLE srcpart_rc PARTITION (ds='2008-04-08', hr=12) SELECT key, value FROM srcpart WHERE ds = '2008-04-08' AND hr = 12; +INSERT OVERWRITE TABLE srcpart_rc PARTITION (ds='2008-04-09', hr=11) SELECT key, value FROM srcpart WHERE ds = '2008-04-09' AND hr = 11; +INSERT OVERWRITE TABLE srcpart_rc PARTITION (ds='2008-04-09', hr=12) SELECT key, value FROM srcpart WHERE ds = '2008-04-09' AND hr = 12; + +EXPLAIN +CREATE INDEX srcpart_rc_index ON TABLE srcpart_rc(key) as 'BITMAP' WITH DEFERRED REBUILD; +CREATE INDEX srcpart_rc_index ON TABLE srcpart_rc(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_rc_index ON srcpart_rc REBUILD; +SELECT x.* FROM default__srcpart_rc_srcpart_rc_index__ x WHERE x.ds = '2008-04-08' and x.hr = 11 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_test_index_result" SELECT `_bucketname`, +COLLECT_SET(`_offset`) as `_offsets` FROM default__srcpart_rc_srcpart_rc_index__ +x WHERE NOT EWAH_BITMAP_EMPTY(`_bitmaps`) AND x.key=100 AND x.ds = '2008-04-08' GROUP BY `_bucketname`; +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_test_index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 AND ds = '2008-04-08' ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_test_index_result" SELECT `_bucketname` , +COLLECT_SET(`_offset`) as `_offsets` FROM default__srcpart_rc_srcpart_rc_index__ +x WHERE NOT EWAH_BITMAP_EMPTY(`_bitmaps`) AND x.key=100 AND x.ds = '2008-04-08' and x.hr = 11 GROUP BY `_bucketname`; +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_test_index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 AND ds = '2008-04-08' and hr = 11 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 AND ds = '2008-04-08' and hr = 11 ORDER BY key; + +DROP INDEX srcpart_rc_index on srcpart_rc; + +EXPLAIN +CREATE INDEX srcpart_rc_index ON TABLE srcpart_rc(key) as 'BITMAP' WITH DEFERRED REBUILD; +CREATE INDEX srcpart_rc_index ON TABLE srcpart_rc(key) as 'BITMAP' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_rc_index ON srcpart_rc REBUILD; +SELECT x.* FROM default__srcpart_rc_srcpart_rc_index__ x WHERE x.key = 100; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname` , +COLLECT_SET(`_offset`) as `_offsets` FROM default__srcpart_rc_srcpart_rc_index__ +WHERE NOT EWAH_BITMAP_EMPTY(`_bitmaps`) AND key=100 GROUP BY `_bucketname`; +SET hive.index.blockfilter.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.HiveIndexedInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 ORDER BY key; + +DROP INDEX srcpart_rc_index on srcpart_rc; +DROP TABLE srcpart_rc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact.q new file mode 100644 index 0000000000000..a936f1127f690 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact.q @@ -0,0 +1,41 @@ +DROP INDEX srcpart_index_proj on srcpart; + +EXPLAIN +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) as 'COMPACT' WITH DEFERRED REBUILD; +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_index_proj ON srcpart REBUILD; +SELECT x.* FROM default__srcpart_srcpart_index_proj__ x WHERE x.ds = '2008-04-08' and x.hr = 11 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_test_index_result" SELECT `_bucketname` , `_offsets` FROM default__srcpart_srcpart_index_proj__ x WHERE x.key=100 AND x.ds = '2008-04-08'; +SET hive.index.compact.file=${system:test.tmp.dir}/index_test_index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SELECT key, value FROM srcpart WHERE key=100 AND ds = '2008-04-08' ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_test_index_result" SELECT `_bucketname` , `_offsets` FROM default__srcpart_srcpart_index_proj__ x WHERE x.key=100 AND x.ds = '2008-04-08' and x.hr = 11; +SET hive.index.compact.file=${system:test.tmp.dir}/index_test_index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SELECT key, value FROM srcpart WHERE key=100 AND ds = '2008-04-08' and hr = 11 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM srcpart WHERE key=100 AND ds = '2008-04-08' and hr = 11 ORDER BY key; + +DROP INDEX srcpart_index_proj on srcpart; + +EXPLAIN +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) as 'COMPACT' WITH DEFERRED REBUILD; +CREATE INDEX srcpart_index_proj ON TABLE srcpart(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_index_proj ON srcpart REBUILD; +SELECT x.* FROM default__srcpart_srcpart_index_proj__ x; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname` , `_offsets` FROM default__srcpart_srcpart_index_proj__ WHERE key=100; +SET hive.index.compact.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SELECT key, value FROM srcpart WHERE key=100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM srcpart WHERE key=100 ORDER BY key; + +DROP INDEX srcpart_index_proj on srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_1.q new file mode 100644 index 0000000000000..837033be403a9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_1.q @@ -0,0 +1,16 @@ +EXPLAIN +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; +SELECT x.* FROM default__src_src_index__ x ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname` , `_offsets` FROM default__src_src_index__ WHERE key=100; +SET hive.index.compact.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SELECT key, value FROM src WHERE key=100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM src WHERE key=100 ORDER BY key; + +DROP INDEX src_index on src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_2.q new file mode 100644 index 0000000000000..56119ac11f32f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_2.q @@ -0,0 +1,45 @@ +CREATE TABLE srcpart_rc (key int, value string) PARTITIONED BY (ds string, hr int) STORED AS RCFILE; + +INSERT OVERWRITE TABLE srcpart_rc PARTITION (ds='2008-04-08', hr=11) SELECT key, value FROM srcpart WHERE ds = '2008-04-08' AND hr = 11; +INSERT OVERWRITE TABLE srcpart_rc PARTITION (ds='2008-04-08', hr=12) SELECT key, value FROM srcpart WHERE ds = '2008-04-08' AND hr = 12; +INSERT OVERWRITE TABLE srcpart_rc PARTITION (ds='2008-04-09', hr=11) SELECT key, value FROM srcpart WHERE ds = '2008-04-09' AND hr = 11; +INSERT OVERWRITE TABLE srcpart_rc PARTITION (ds='2008-04-09', hr=12) SELECT key, value FROM srcpart WHERE ds = '2008-04-09' AND hr = 12; + +CREATE INDEX srcpart_rc_index ON TABLE srcpart_rc(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_rc_index ON srcpart_rc REBUILD; +SELECT x.* FROM default__srcpart_rc_srcpart_rc_index__ x WHERE x.ds = '2008-04-08' and x.hr = 11 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_test_index_result" SELECT `_bucketname` , `_offsets` FROM default__srcpart_rc_srcpart_rc_index__ x WHERE x.key=100 AND x.ds = '2008-04-08'; +SET hive.index.compact.file=${system:test.tmp.dir}/index_test_index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 AND ds = '2008-04-08' ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_test_index_result" SELECT `_bucketname` , `_offsets` FROM default__srcpart_rc_srcpart_rc_index__ x WHERE x.key=100 AND x.ds = '2008-04-08' and x.hr = 11; +SET hive.index.compact.file=${system:test.tmp.dir}/index_test_index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 AND ds = '2008-04-08' and hr = 11 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 AND ds = '2008-04-08' and hr = 11 ORDER BY key; + +DROP INDEX srcpart_rc_index on srcpart_rc; + +EXPLAIN +CREATE INDEX srcpart_rc_index ON TABLE srcpart_rc(key) as 'COMPACT' WITH DEFERRED REBUILD; +CREATE INDEX srcpart_rc_index ON TABLE srcpart_rc(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX srcpart_rc_index ON srcpart_rc REBUILD; +SELECT x.* FROM default__srcpart_rc_srcpart_rc_index__ x ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname` , `_offsets` FROM default__srcpart_rc_srcpart_rc_index__ WHERE key=100; +SET hive.index.compact.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM srcpart_rc WHERE key=100 ORDER BY key; + +DROP INDEX srcpart_rc_index on srcpart_rc; +DROP TABLE srcpart_rc; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_3.q new file mode 100644 index 0000000000000..f3fcb4af3d5e6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_3.q @@ -0,0 +1,19 @@ +CREATE TABLE src_index_test_rc (key int, value string) STORED AS RCFILE; + +INSERT OVERWRITE TABLE src_index_test_rc SELECT * FROM src; + +CREATE INDEX src_index ON TABLE src_index_test_rc(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src_index_test_rc REBUILD; +SELECT x.* FROM default__src_index_test_rc_src_index__ x ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +INSERT OVERWRITE DIRECTORY "${system:test.tmp.dir}/index_result" SELECT `_bucketname` , `_offsets` FROM default__src_index_test_rc_src_index__ WHERE key=100; +SET hive.index.compact.file=${system:test.tmp.dir}/index_result; +SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat; +SELECT key, value FROM src_index_test_rc WHERE key=100 ORDER BY key; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SELECT key, value FROM src_index_test_rc WHERE key=100 ORDER BY key; + +DROP INDEX src_index on src_index_test_rc; +DROP TABLE src_index_test_rc; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_binary_search.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_binary_search.q new file mode 100644 index 0000000000000..d0d9a32adcba1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compact_binary_search.q @@ -0,0 +1,132 @@ +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.default.fileformat=TextFile; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=1; +SET hive.index.compact.binary.search=true; + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHiveSortedInputFormatUsedHook; + +SELECT * FROM src WHERE key = '0'; + +SELECT * FROM src WHERE key < '1'; + +SELECT * FROM src WHERE key <= '0'; + +SELECT * FROM src WHERE key > '8'; + +SELECT * FROM src WHERE key >= '9'; + +SET hive.exec.post.hooks=; + +DROP INDEX src_index ON src; + +SET hive.default.fileformat=RCFILE; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHiveSortedInputFormatUsedHook; + +SELECT * FROM src WHERE key = '0'; + +SELECT * FROM src WHERE key < '1'; + +SELECT * FROM src WHERE key <= '0'; + +SELECT * FROM src WHERE key > '8'; + +SELECT * FROM src WHERE key >= '9'; + +SET hive.exec.post.hooks=; + +DROP INDEX src_index ON src; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +SET hive.default.fileformat=TextFile; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHiveSortedInputFormatUsedHook; + +SELECT * FROM src WHERE key = '0'; + +SELECT * FROM src WHERE key < '1'; + +SELECT * FROM src WHERE key <= '0'; + +SELECT * FROM src WHERE key > '8'; + +SELECT * FROM src WHERE key >= '9'; + +SET hive.exec.post.hooks=; + +DROP INDEX src_index ON src; + +SET hive.default.fileformat=RCFILE; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHiveSortedInputFormatUsedHook; + +SELECT * FROM src WHERE key = '0'; + +SELECT * FROM src WHERE key < '1'; + +SELECT * FROM src WHERE key <= '0'; + +SELECT * FROM src WHERE key > '8'; + +SELECT * FROM src WHERE key >= '9'; + +SET hive.exec.post.hooks=; + +DROP INDEX src_index ON src; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +SET hive.default.fileformat=TextFile; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHiveSortedInputFormatUsedHook; + +SELECT * FROM src WHERE key = '0'; + +SELECT * FROM src WHERE key < '1'; + +SELECT * FROM src WHERE key <= '0'; + +SELECT * FROM src WHERE key > '8'; + +SELECT * FROM src WHERE key >= '9'; + +SET hive.exec.post.hooks=; + +DROP INDEX src_index ON src; + +SET hive.default.fileformat=RCFILE; + +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyHiveSortedInputFormatUsedHook; + +SELECT * FROM src WHERE key = '0'; + +SELECT * FROM src WHERE key < '1'; + +SELECT * FROM src WHERE key <= '0'; + +SELECT * FROM src WHERE key > '8'; + +SELECT * FROM src WHERE key >= '9'; + +SET hive.exec.post.hooks=; + +DROP INDEX src_index ON src; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compression.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compression.q new file mode 100644 index 0000000000000..84ed3cc932e8c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_compression.q @@ -0,0 +1,13 @@ +SET hive.exec.compress.result=true; +CREATE INDEX src_index ON TABLE src(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX src_index ON src REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- automatic indexing +EXPLAIN SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; +SELECT key, value FROM src WHERE key > 80 AND key < 100 ORDER BY key; + +DROP INDEX src_index on src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_creation.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_creation.q new file mode 100644 index 0000000000000..062821e870dce --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_creation.q @@ -0,0 +1,53 @@ +drop index src_index_2 on src; +drop index src_index_3 on src; +drop index src_index_4 on src; +drop index src_index_5 on src; +drop index src_index_6 on src; +drop index src_index_7 on src; +drop index src_index_8 on src; +drop index src_index_9 on src; +drop table `_t`; + +create index src_index_2 on table src(key) as 'compact' WITH DEFERRED REBUILD; +desc extended default__src_src_index_2__; + +create index src_index_3 on table src(key) as 'compact' WITH DEFERRED REBUILD in table src_idx_src_index_3; +desc extended src_idx_src_index_3; + +create index src_index_4 on table src(key) as 'compact' WITH DEFERRED REBUILD ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; +desc extended default__src_src_index_4__; + +create index src_index_5 on table src(key) as 'compact' WITH DEFERRED REBUILD ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ESCAPED BY '\\'; +desc extended default__src_src_index_5__; + +create index src_index_6 on table src(key) as 'compact' WITH DEFERRED REBUILD STORED AS RCFILE; +desc extended default__src_src_index_6__; + +create index src_index_7 on table src(key) as 'compact' WITH DEFERRED REBUILD in table src_idx_src_index_7 STORED AS RCFILE; +desc extended src_idx_src_index_7; + +create index src_index_8 on table src(key) as 'compact' WITH DEFERRED REBUILD IDXPROPERTIES ("prop1"="val1", "prop2"="val2"); +desc extended default__src_src_index_8__; + +create index src_index_9 on table src(key) as 'compact' WITH DEFERRED REBUILD TBLPROPERTIES ("prop1"="val1", "prop2"="val2"); +desc extended default__src_src_index_9__; + +create table `_t`(`_i` int, `_j` int); +create index x on table `_t`(`_j`) as 'compact' WITH DEFERRED REBUILD; +alter index x on `_t` rebuild; + +create index x2 on table `_t`(`_i`,`_j`) as 'compact' WITH DEFERRED +REBUILD; +alter index x2 on `_t` rebuild; + +drop index src_index_2 on src; +drop index src_index_3 on src; +drop index src_index_4 on src; +drop index src_index_5 on src; +drop index src_index_6 on src; +drop index src_index_7 on src; +drop index src_index_8 on src; +drop index src_index_9 on src; +drop table `_t`; + +show tables; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_serde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_serde.q new file mode 100644 index 0000000000000..a6fe16ba3b809 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_serde.q @@ -0,0 +1,49 @@ +-- Want to ensure we can build and use indices on tables stored with SerDes +-- Build the (Avro backed) table +CREATE TABLE doctors +ROW FORMAT +SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' +STORED AS +INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +TBLPROPERTIES ('avro.schema.literal'='{ + "namespace": "testing.hive.avro.serde", + "name": "doctors", + "type": "record", + "fields": [ + { + "name":"number", + "type":"int", + "doc":"Order of playing the role" + }, + { + "name":"first_name", + "type":"string", + "doc":"first name of actor playing role" + }, + { + "name":"last_name", + "type":"string", + "doc":"last name of actor playing role" + } + ] +}'); + +DESCRIBE doctors; + +LOAD DATA LOCAL INPATH '../data/files/doctors.avro' INTO TABLE doctors; + +-- Create and build an index +CREATE INDEX doctors_index ON TABLE doctors(number) AS 'COMPACT' WITH DEFERRED REBUILD; +DESCRIBE EXTENDED default__doctors_doctors_index__; +ALTER INDEX doctors_index ON doctors REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +EXPLAIN SELECT * FROM doctors WHERE number > 6 ORDER BY number; +SELECT * FROM doctors WHERE number > 6 ORDER BY number; + +DROP INDEX doctors_index ON doctors; +DROP TABLE doctors; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_stale.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_stale.q new file mode 100644 index 0000000000000..82e15b97b6ac4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_stale.q @@ -0,0 +1,20 @@ +-- test that stale indexes are not used + +CREATE TABLE temp(key STRING, val STRING) STORED AS TEXTFILE; +INSERT OVERWRITE TABLE temp SELECT * FROM src WHERE key < 50; + +-- Build an index on temp. +CREATE INDEX temp_index ON TABLE temp(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX temp_index ON temp REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- overwrite temp table so index is out of date +INSERT OVERWRITE TABLE temp SELECT * FROM src; + +-- should return correct results bypassing index +EXPLAIN SELECT * FROM temp WHERE key = 86; +SELECT * FROM temp WHERE key = 86; +DROP table temp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_stale_partitioned.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_stale_partitioned.q new file mode 100644 index 0000000000000..e7cfeff31f6dc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/index_stale_partitioned.q @@ -0,0 +1,26 @@ +-- Test if index is actually being used. + +-- Create temp, and populate it with some values in src. +CREATE TABLE temp(key STRING, val STRING) PARTITIONED BY (foo string) STORED AS TEXTFILE; +ALTER TABLE temp ADD PARTITION (foo = 'bar'); +INSERT OVERWRITE TABLE temp PARTITION (foo = 'bar') SELECT * FROM src WHERE key < 50; + +-- Build an index on temp. +CREATE INDEX temp_index ON TABLE temp(key) as 'COMPACT' WITH DEFERRED REBUILD; +ALTER INDEX temp_index ON temp PARTITION (foo = 'bar') REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +-- overwrite temp table so index is out of date +INSERT OVERWRITE TABLE temp PARTITION (foo = 'bar') SELECT * FROM src; + +-- query should not return any values +SELECT * FROM default__temp_temp_index__ WHERE key = 86 AND foo='bar'; +EXPLAIN SELECT * FROM temp WHERE key = 86 AND foo = 'bar'; +SELECT * FROM temp WHERE key = 86 AND foo = 'bar'; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +SET hive.optimize.index.filter=false; +DROP table temp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort.q new file mode 100644 index 0000000000000..07466fd871ae2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort.q @@ -0,0 +1,158 @@ +set hive.exec.infer.bucket.sort=true; + +-- This tests inferring how data is bucketed/sorted from the operators in the reducer +-- and populating that information in partitions' metadata + +CREATE TABLE test_table (key STRING, value STRING) PARTITIONED BY (part STRING); + +-- Test group by, should be bucketed and sorted by group by key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, count(*) FROM src GROUP BY key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by where a key isn't selected, should not be bucketed or sorted +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, count(*) FROM src GROUP BY key, value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join, should be bucketed and sorted by join key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, a.value FROM src a JOIN src b ON a.key = b.key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join with two keys, should be bucketed and sorted by join keys +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, a.value FROM src a JOIN src b ON a.key = b.key AND a.value = b.value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join with two keys and only one selected, should not be bucketed or sorted +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, '1' FROM src a JOIN src b ON a.key = b.key AND a.value = b.value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join on three tables on same key, should be bucketed and sorted by join key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, c.value FROM src a JOIN src b ON (a.key = b.key) JOIN src c ON (b.key = c.key); + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join on three tables on different keys, should be bucketed and sorted by latter key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, c.value FROM src a JOIN src b ON (a.key = b.key) JOIN src c ON (b.value = c.value); + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test distribute by, should only be bucketed by key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM src DISTRIBUTE BY key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test sort by, should be sorted by key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM src SORT BY key ASC; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test sort by desc, should be sorted by key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM src SORT BY key DESC; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test cluster by, should be bucketed and sorted by key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM src CLUSTER BY key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test distribute by and sort by different keys, should be bucketed by one key sorted by the other +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM src DISTRIBUTE BY key SORT BY value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join in simple subquery, should be bucketed and sorted on key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value from (SELECT a.key, b.value FROM src a JOIN src b ON (a.key = b.key)) subq; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join in simple subquery renaming key column, should be bucketed and sorted on key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT k, value FROM (SELECT a.key as k, b.value FROM src a JOIN src b ON (a.key = b.key)) subq; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in simple subquery, should be bucketed and sorted on key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, cnt from (SELECT key, count(*) as cnt FROM src GROUP BY key) subq; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in simple subquery renaming key column, should be bucketed and sorted on key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT k, cnt FROM (SELECT key as k, count(*) as cnt FROM src GROUP BY key) subq; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery with where outside, should still be bucketed and sorted on key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM (SELECT key, count(1) AS value FROM src group by key) a where key < 10; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery with expression on value, should still be bucketed and sorted on key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value + 1 FROM (SELECT key, count(1) AS value FROM src group by key) a where key < 10; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery with lateral view outside, should still be bucketed and sorted +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM (SELECT key FROM src group by key) a lateral view explode(array(1, 2)) value as value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery with another group by outside, should be bucketed and sorted by the +-- key of the outer group by +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT count(1), value FROM (SELECT key, count(1) as value FROM src group by key) a group by value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery with select on outside reordering the columns, should be bucketed and +-- sorted by the column the group by key ends up in +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT value, key FROM (SELECT key, count(1) as value FROM src group by key) a; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery followed by distribute by, should only be bucketed by the distribute key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM (SELECT key, count(1) as value FROM src group by key) a distribute by key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery followed by sort by, should only be sorted by the sort key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM (SELECT key, count(1) as value FROM src group by key) a sort by key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery followed by transform script, should not be bucketed or sorted +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT TRANSFORM (a.key, a.value) USING 'cat' AS (key, value) FROM (SELECT key, count(1) AS value FROM src GROUP BY KEY) a; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by on function, should be bucketed and sorted by key and value because the function is applied in the mapper +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, value FROM (SELECT concat(key, "a") AS key, value, count(*) FROM src GROUP BY concat(key, "a"), value) a; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_bucketed_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_bucketed_table.q new file mode 100644 index 0000000000000..d69f49f66747c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_bucketed_table.q @@ -0,0 +1,26 @@ +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.infer.bucket.sort=true; + +-- Test writing to a bucketed table, the output should be bucketed by the bucketing key into the +-- a number of files equal to the number of buckets +CREATE TABLE test_table_bucketed (key STRING, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (value) SORTED BY (value) INTO 3 BUCKETS; + +-- Despite the fact that normally inferring would say this table is bucketed and sorted on key, +-- this should be bucketed and sorted by value into 3 buckets +INSERT OVERWRITE TABLE test_table_bucketed PARTITION (part = '1') +SELECT key, count(1) FROM src GROUP BY KEY; + +DESCRIBE FORMATTED test_table_bucketed PARTITION (part = '1'); + +-- If the count(*) from sampling the buckets matches the count(*) from each file, the table is +-- bucketed +SELECT COUNT(*) FROM test_table_bucketed TABLESAMPLE (BUCKET 1 OUT OF 3) WHERE part = '1'; + +SELECT COUNT(*) FROM test_table_bucketed TABLESAMPLE (BUCKET 2 OUT OF 3) WHERE part = '1'; + +SELECT COUNT(*) FROM test_table_bucketed TABLESAMPLE (BUCKET 3 OUT OF 3) WHERE part = '1'; + +SELECT cnt FROM (SELECT INPUT__FILE__NAME, COUNT(*) cnt FROM test_table_bucketed WHERE part = '1' +GROUP BY INPUT__FILE__NAME ORDER BY INPUT__FILE__NAME ASC LIMIT 3) a; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_convert_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_convert_join.q new file mode 100644 index 0000000000000..6b656ffde745e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_convert_join.q @@ -0,0 +1,27 @@ +set hive.exec.infer.bucket.sort=true; +set hive.exec.infer.bucket.sort.num.buckets.power.two=true; +set hive.auto.convert.join=true; + +-- This tests inferring how data is bucketed/sorted from the operators in the reducer +-- and populating that information in partitions' metadata. In particular, those cases +-- where joins may be auto converted to map joins. + +CREATE TABLE test_table (key STRING, value STRING) PARTITIONED BY (part STRING); + +-- Tests a join which is converted to a map join, the output should be neither bucketed nor sorted +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, b.value FROM src a JOIN src b ON a.key = b.key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +set hive.mapjoin.check.memory.rows=1; +set hive.mapjoin.localtask.max.memory.usage = 0.0001; +set hive.auto.convert.join.noconditionaltask = false; + +-- This test tests the scenario when the mapper dies. So, create a conditional task for the mapjoin. +-- Tests a join which is not converted to a map join, the output should be bucketed and sorted. + +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, b.value FROM src a JOIN src b ON a.key = b.key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_dyn_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_dyn_part.q new file mode 100644 index 0000000000000..119994e91b056 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_dyn_part.q @@ -0,0 +1,87 @@ +set hive.exec.infer.bucket.sort=true; +set hive.exec.infer.bucket.sort.num.buckets.power.two=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- This tests inferring how data is bucketed/sorted from the operators in the reducer +-- and populating that information in partitions' metadata. In particular, those cases +-- where dynamic partitioning is used. + +CREATE TABLE test_table LIKE srcpart; +ALTER TABLE test_table SET FILEFORMAT RCFILE; + +-- Simple case, this should not be bucketed or sorted + +INSERT OVERWRITE TABLE test_table PARTITION (ds, hr) +SELECT key, value, ds, hr FROM srcpart +WHERE ds = '2008-04-08'; + +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='11'); +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='12'); + +-- This should not be bucketed or sorted since the partition keys are in the set of bucketed +-- and sorted columns for the output + +INSERT OVERWRITE TABLE test_table PARTITION (ds, hr) +SELECT key, COUNT(*), ds, hr FROM srcpart +WHERE ds = '2008-04-08' +GROUP BY key, ds, hr; + +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='11'); +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='12'); + +-- Both partitions should be bucketed and sorted by key + +INSERT OVERWRITE TABLE test_table PARTITION (ds, hr) +SELECT key, value, '2008-04-08', IF (key % 2 == 0, '11', '12') FROM +(SELECT key, COUNT(*) AS value FROM srcpart +WHERE ds = '2008-04-08' +GROUP BY key) a; + +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='11'); +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='12'); + +CREATE TABLE srcpart_merge_dp LIKE srcpart; + +CREATE TABLE srcpart_merge_dp_rc LIKE srcpart; +ALTER TABLE srcpart_merge_dp_rc SET FILEFORMAT RCFILE; + +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp PARTITION(ds='2008-04-08', hr=11); +LOAD DATA LOCAL INPATH '../data/files/srcbucket21.txt' INTO TABLE srcpart_merge_dp PARTITION(ds='2008-04-08', hr=11); +LOAD DATA LOCAL INPATH '../data/files/srcbucket22.txt' INTO TABLE srcpart_merge_dp PARTITION(ds='2008-04-08', hr=11); +LOAD DATA LOCAL INPATH '../data/files/srcbucket23.txt' INTO TABLE srcpart_merge_dp PARTITION(ds='2008-04-08', hr=11); + +LOAD DATA LOCAL INPATH '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp PARTITION(ds='2008-04-08', hr=12); + +INSERT OVERWRITE TABLE srcpart_merge_dp_rc PARTITION (ds = '2008-04-08', hr) +SELECT key, value, hr FROM srcpart_merge_dp WHERE ds = '2008-04-08'; + +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=200; +set hive.exec.compress.output=false; +set hive.exec.dynamic.partition=true; +set mapred.reduce.tasks=2; + +-- Tests dynamic partitions where bucketing/sorting can be inferred, but some partitions are +-- merged and some are moved. Currently neither should be bucketed or sorted, in the future, +-- (ds='2008-04-08', hr='12') may be bucketed and sorted, (ds='2008-04-08', hr='11') should +-- definitely not be. + +EXPLAIN +INSERT OVERWRITE TABLE test_table PARTITION (ds = '2008-04-08', hr) +SELECT key, value, IF (key % 100 == 0, '11', '12') FROM +(SELECT key, COUNT(*) AS value FROM srcpart +WHERE ds = '2008-04-08' +GROUP BY key) a; + +INSERT OVERWRITE TABLE test_table PARTITION (ds = '2008-04-08', hr) +SELECT key, value, IF (key % 100 == 0, '11', '12') FROM +(SELECT key, COUNT(*) AS value FROM srcpart +WHERE ds = '2008-04-08' +GROUP BY key) a; + +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='11'); +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='12'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_grouping_operators.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_grouping_operators.q new file mode 100644 index 0000000000000..e3b8a17c83daa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_grouping_operators.q @@ -0,0 +1,57 @@ +set hive.exec.infer.bucket.sort=true; + +-- This tests inferring how data is bucketed/sorted from the operators in the reducer +-- and populating that information in partitions' metadata, in particular, this tests +-- the grouping operators rollup/cube/grouping sets + +CREATE TABLE test_table_out (key STRING, value STRING, agg STRING) PARTITIONED BY (part STRING); + +CREATE TABLE test_table_out_2 (key STRING, value STRING, grouping_key STRING, agg STRING) PARTITIONED BY (part STRING); + +-- Test rollup, should not be bucketed or sorted because its missing the grouping ID +EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT key, value, count(1) FROM src GROUP BY key, value WITH ROLLUP; + +INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT key, value, count(1) FROM src GROUP BY key, value WITH ROLLUP; + +DESCRIBE FORMATTED test_table_out PARTITION (part = '1'); + +-- Test rollup, should be bucketed and sorted on key, value, grouping_key + +INSERT OVERWRITE TABLE test_table_out_2 PARTITION (part = '1') +SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY key, value WITH ROLLUP; + +DESCRIBE FORMATTED test_table_out_2 PARTITION (part = '1'); + +-- Test cube, should not be bucketed or sorted because its missing the grouping ID +EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT key, value, count(1) FROM src GROUP BY key, value WITH CUBE; + +INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT key, value, count(1) FROM src GROUP BY key, value WITH CUBE; + +DESCRIBE FORMATTED test_table_out PARTITION (part = '1'); + +-- Test cube, should be bucketed and sorted on key, value, grouping_key + +INSERT OVERWRITE TABLE test_table_out_2 PARTITION (part = '1') +SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY key, value WITH CUBE; + +DESCRIBE FORMATTED test_table_out_2 PARTITION (part = '1'); + +-- Test grouping sets, should not be bucketed or sorted because its missing the grouping ID +EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT key, value, count(1) FROM src GROUP BY key, value GROUPING SETS (key, value); + +INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT key, value, count(1) FROM src GROUP BY key, value GROUPING SETS (key, value); + +DESCRIBE FORMATTED test_table_out PARTITION (part = '1'); + +-- Test grouping sets, should be bucketed and sorted on key, value, grouping_key + +INSERT OVERWRITE TABLE test_table_out_2 PARTITION (part = '1') +SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY key, value GROUPING SETS (key, value); + +DESCRIBE FORMATTED test_table_out_2 PARTITION (part = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_list_bucket.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_list_bucket.q new file mode 100644 index 0000000000000..7d3c0dc7d5859 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_list_bucket.q @@ -0,0 +1,33 @@ +set hive.mapred.supports.subdirectories=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This tests that bucketing/sorting metadata is not inferred for tables with list bucketing + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- create a skewed table +CREATE TABLE list_bucketing_table (key STRING, value STRING) +PARTITIONED BY (part STRING) +SKEWED BY (key) ON ("484") +STORED AS DIRECTORIES; + +-- Tests group by, the output should neither be bucketed nor sorted + +INSERT OVERWRITE TABLE list_bucketing_table PARTITION (part = '1') +SELECT key, count(*) FROM src GROUP BY key; + +DESC FORMATTED list_bucketing_table PARTITION (part = '1'); + +-- create a table skewed on a key which doesnt exist in the data +CREATE TABLE list_bucketing_table2 (key STRING, value STRING) +PARTITIONED BY (part STRING) +SKEWED BY (key) ON ("abc") +STORED AS DIRECTORIES; + +-- should not be bucketed or sorted +INSERT OVERWRITE TABLE list_bucketing_table2 PARTITION (part = '1') +SELECT key, count(*) FROM src GROUP BY key; + +DESC FORMATTED list_bucketing_table2 PARTITION (part = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_map_operators.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_map_operators.q new file mode 100644 index 0000000000000..16e8715a7f3d3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_map_operators.q @@ -0,0 +1,74 @@ +set hive.exec.infer.bucket.sort=true; +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; + +-- This tests inferring how data is bucketed/sorted from the operators in the reducer +-- and populating that information in partitions' metadata, in particular, this tests +-- that operators in the mapper have no effect + +CREATE TABLE test_table1 (key STRING, value STRING) +CLUSTERED BY (key) SORTED BY (key DESC) INTO 2 BUCKETS; + +CREATE TABLE test_table2 (key STRING, value STRING) +CLUSTERED BY (key) SORTED BY (key DESC) INTO 2 BUCKETS; + +INSERT OVERWRITE TABLE test_table1 SELECT key, value FROM src; + +INSERT OVERWRITE TABLE test_table2 SELECT key, value FROM src; + +CREATE TABLE test_table_out (key STRING, value STRING) PARTITIONED BY (part STRING); + +set hive.map.groupby.sorted=true; + +-- Test map group by doesn't affect inference, should not be bucketed or sorted +EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT key, count(*) FROM test_table1 GROUP BY key; + +INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT key, count(*) FROM test_table1 GROUP BY key; + +DESCRIBE FORMATTED test_table_out PARTITION (part = '1'); + +-- Test map group by doesn't affect inference, should be bucketed and sorted by value +EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT a.key, a.value FROM ( + SELECT key, count(*) AS value FROM test_table1 GROUP BY key +) a JOIN ( + SELECT key, value FROM src +) b +ON (a.value = b.value); + +INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT a.key, a.value FROM ( + SELECT key, cast(count(*) AS STRING) AS value FROM test_table1 GROUP BY key +) a JOIN ( + SELECT key, value FROM src +) b +ON (a.value = b.value); + +DESCRIBE FORMATTED test_table_out PARTITION (part = '1'); + +set hive.map.groupby.sorted=false; +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +-- Test SMB join doesn't affect inference, should not be bucketed or sorted +EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT /*+ MAPJOIN(a) */ a.key, b.value FROM test_table1 a JOIN test_table2 b ON a.key = b.key; + +INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT /*+ MAPJOIN(a) */ a.key, b.value FROM test_table1 a JOIN test_table2 b ON a.key = b.key; + +DESCRIBE FORMATTED test_table_out PARTITION (part = '1'); + +-- Test SMB join doesn't affect inference, should be bucketed and sorted by key +EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT /*+ MAPJOIN(a) */ b.value, count(*) FROM test_table1 a JOIN test_table2 b ON a.key = b.key +GROUP BY b.value; + +INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') +SELECT /*+ MAPJOIN(a) */ b.value, count(*) FROM test_table1 a JOIN test_table2 b ON a.key = b.key +GROUP BY b.value; + +DESCRIBE FORMATTED test_table_out PARTITION (part = '1'); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_merge.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_merge.q new file mode 100644 index 0000000000000..41c1a13980cfe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_merge.q @@ -0,0 +1,25 @@ +set hive.exec.infer.bucket.sort=true; +set hive.exec.infer.bucket.sort.num.buckets.power.two=true; +set hive.merge.mapredfiles=true; +set mapred.reduce.tasks=2; + +-- This tests inferring how data is bucketed/sorted from the operators in the reducer +-- and populating that information in partitions' metadata. In particular, those cases +-- where where merging may or may not be used. + +CREATE TABLE test_table (key STRING, value STRING) PARTITIONED BY (part STRING); + +-- Tests a reduce task followed by a merge. The output should be neither bucketed nor sorted. +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, b.value FROM src a JOIN src b ON a.key = b.key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +set hive.merge.smallfiles.avgsize=2; +set hive.exec.compress.output=false; + +-- Tests a reduce task followed by a move. The output should be bucketed and sorted. +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, b.value FROM src a JOIN src b ON a.key = b.key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_multi_insert.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_multi_insert.q new file mode 100644 index 0000000000000..e3992b8da07b8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_multi_insert.q @@ -0,0 +1,46 @@ +set hive.exec.infer.bucket.sort=true; +set hive.exec.infer.bucket.sort.num.buckets.power.two=true; + +-- This tests inferring how data is bucketed/sorted from the operators in the reducer +-- and populating that information in partitions' metadata. In particular, those cases +-- where multi insert is used. + +CREATE TABLE test_table (key STRING, value STRING) PARTITIONED BY (part STRING); + +-- Simple case, neither partition should be bucketed or sorted + +FROM src +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') SELECT key, value +INSERT OVERWRITE TABLE test_table PARTITION (part = '2') SELECT value, key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); +DESCRIBE FORMATTED test_table PARTITION (part = '2'); + +-- The partitions should be bucketed and sorted by different keys + +FROM src +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') SELECT key, COUNT(*) GROUP BY key +INSERT OVERWRITE TABLE test_table PARTITION (part = '2') SELECT COUNT(*), value GROUP BY value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); +DESCRIBE FORMATTED test_table PARTITION (part = '2'); + +-- The first partition should be bucketed and sorted, the second should not + +FROM src +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') SELECT key, COUNT(*) GROUP BY key +INSERT OVERWRITE TABLE test_table PARTITION (part = '2') SELECT key, value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); +DESCRIBE FORMATTED test_table PARTITION (part = '2'); + +set hive.multigroupby.singlereducer=true; + +-- Test the multi group by single reducer optimization +-- Both partitions should be bucketed by key +FROM src +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') SELECT key, COUNT(*) GROUP BY key +INSERT OVERWRITE TABLE test_table PARTITION (part = '2') SELECT key, SUM(SUBSTR(value, 5)) GROUP BY key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); +DESCRIBE FORMATTED test_table PARTITION (part = '2'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_num_buckets.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_num_buckets.q new file mode 100644 index 0000000000000..2255bdb34913d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_num_buckets.q @@ -0,0 +1,37 @@ +set hive.exec.infer.bucket.sort=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.reduce.tasks=2; + +CREATE TABLE test_table (key INT, value STRING) PARTITIONED BY (ds STRING, hr STRING); + +-- Tests dynamic partitions where bucketing/sorting can be inferred, but not all reducers write +-- all partitions. The subquery produces rows as follows +-- key = 0: +-- 0, , 0 +-- key = 1: +-- 0, , 1 +-- key = 2: +-- 1, , 0 +-- This means that by distributing by the first column into two reducers, and using the third +-- columns as a dynamic partition, the dynamic partition for 0 will get written in both reducers +-- and the partition for 1 will get written in one reducer. So hr=0 should be bucketed by key +-- and hr=1 should not. + +EXPLAIN +INSERT OVERWRITE TABLE test_table PARTITION (ds = '2008-04-08', hr) +SELECT key2, value, cast(hr as int) FROM +(SELECT if ((key % 3) < 2, 0, 1) as key2, value, (key % 2) as hr +FROM srcpart +WHERE ds = '2008-04-08') a +DISTRIBUTE BY key2; + +INSERT OVERWRITE TABLE test_table PARTITION (ds = '2008-04-08', hr) +SELECT key2, value, cast(hr as int) FROM +(SELECT if ((key % 3) < 2, 0, 1) as key2, value, (key % 3 % 2) as hr +FROM srcpart +WHERE ds = '2008-04-08') a +DISTRIBUTE BY key2; + +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='0'); +DESCRIBE FORMATTED test_table PARTITION (ds='2008-04-08', hr='1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_reducers_power_two.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_reducers_power_two.q new file mode 100644 index 0000000000000..090f04f4b94c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_bucket_sort_reducers_power_two.q @@ -0,0 +1,46 @@ +set hive.exec.infer.bucket.sort=true; +set hive.exec.infer.bucket.sort.num.buckets.power.two=true; +set hive.exec.reducers.bytes.per.reducer=2500; + +-- This tests inferring how data is bucketed/sorted from the operators in the reducer +-- and populating that information in partitions' metadata, it also verifies that the +-- number of reducers chosen will be a power of two + +CREATE TABLE test_table (key STRING, value STRING) PARTITIONED BY (part STRING); + +-- Test group by, should be bucketed and sorted by group by key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT key, count(*) FROM src GROUP BY key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join, should be bucketed and sorted by join key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, a.value FROM src a JOIN src b ON a.key = b.key; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join with two keys, should be bucketed and sorted by join keys +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, a.value FROM src a JOIN src b ON a.key = b.key AND a.value = b.value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join on three tables on same key, should be bucketed and sorted by join key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, c.value FROM src a JOIN src b ON (a.key = b.key) JOIN src c ON (b.key = c.key); + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test join on three tables on different keys, should be bucketed and sorted by latter key +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT a.key, c.value FROM src a JOIN src b ON (a.key = b.key) JOIN src c ON (b.value = c.value); + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); + +-- Test group by in subquery with another group by outside, should be bucketed and sorted by the +-- key of the outer group by +INSERT OVERWRITE TABLE test_table PARTITION (part = '1') +SELECT count(1), value FROM (SELECT key, count(1) as value FROM src group by key) a group by value; + +DESCRIBE FORMATTED test_table PARTITION (part = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_const_type.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_const_type.q new file mode 100644 index 0000000000000..a039dc5a2a040 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/infer_const_type.q @@ -0,0 +1,66 @@ +DROP TABLE infertypes; +CREATE TABLE infertypes(ti TINYINT, si SMALLINT, i INT, bi BIGINT, fl FLOAT, db DOUBLE, str STRING); + +LOAD DATA LOCAL INPATH '../data/files/infer_const_type.txt' OVERWRITE INTO TABLE infertypes; + +SELECT * FROM infertypes; + +EXPLAIN SELECT * FROM infertypes WHERE + ti = '127' AND + si = 32767 AND + i = '12345' AND + bi = '-12345' AND + fl = '0906' AND + db = '-307' AND + str = 1234; + +SELECT * FROM infertypes WHERE + ti = '127' AND + si = 32767 AND + i = '12345' AND + bi = '-12345' AND + fl = '0906' AND + db = '-307' AND + str = 1234; + +-- all should return false as all numbers exceeed the largest number +-- which could be represented by the corresponding type +-- and string_col = long_const should return false +EXPLAIN SELECT * FROM infertypes WHERE + ti = '128' OR + si = 32768 OR + i = '2147483648' OR + bi = '9223372036854775808' OR + fl = 'float' OR + db = 'double'; + +SELECT * FROM infertypes WHERE + ti = '128' OR + si = 32768 OR + i = '2147483648' OR + bi = '9223372036854775808' OR + fl = 'float' OR + db = 'double'; + +-- for the query like: int_col = double, should return false +EXPLAIN SELECT * FROM infertypes WHERE + ti = '127.0' OR + si = 327.0 OR + i = '-100.0'; + +SELECT * FROM infertypes WHERE + ti = '127.0' OR + si = 327.0 OR + i = '-100.0'; + +EXPLAIN SELECT * FROM infertypes WHERE + ti < '127.0' AND + i > '100.0' AND + str = 1.57; + +SELECT * FROM infertypes WHERE + ti < '127.0' AND + i > '100.0' AND + str = 1.57; + +DROP TABLE infertypes; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/init_file.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/init_file.q new file mode 100644 index 0000000000000..f69a88d0366e5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/init_file.q @@ -0,0 +1,5 @@ +-- tbl_created_by_init is supposed to have been created for us +-- automatically by test_init_file.sql + +select * from tbl_created_by_init; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/innerjoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/innerjoin.q new file mode 100644 index 0000000000000..b384268dbbcff --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/innerjoin.q @@ -0,0 +1,23 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +CREATE TABLE dest_j1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src src1 INNER JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value ORDER BY src1.key, src2.value; + +FROM src src1 INNER JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value ORDER BY src1.key, src2.value; + +SELECT dest_j1.* FROM dest_j1; + +-- verify that INNER is a non-reserved word for backwards compatibility +create table inner(i int); + +select i from inner; + +create table i(inner int); + +select inner from i; + +explain select * from (select * from src) inner left outer join src +on inner.key=src.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inoutdriver.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inoutdriver.q new file mode 100644 index 0000000000000..34b0e0b28ea52 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inoutdriver.q @@ -0,0 +1,2 @@ +create table test (a int) stored as inputformat 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' outputformat 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' inputdriver 'RCFileInDriver' outputdriver 'RCFileOutDriver'; +desc extended test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input.q new file mode 100644 index 0000000000000..567d3b07f7ecc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRC x; + +SELECT x.* FROM SRC x; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input0.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input0.q new file mode 100644 index 0000000000000..63857c779173b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input0.q @@ -0,0 +1,5 @@ +EXPLAIN +SELECT * FROM src; + +SELECT * FROM src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input1.q new file mode 100644 index 0000000000000..3f2cd96de9cbe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input1.q @@ -0,0 +1,9 @@ +CREATE TABLE TEST1(A INT, B DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +DESCRIBE TEST1; + +DESCRIBE TEST1; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input10.q new file mode 100644 index 0000000000000..aef5c9bfe4b0a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input10.q @@ -0,0 +1,9 @@ +CREATE TABLE TEST10(key INT, value STRING) PARTITIONED BY(ds STRING, hr STRING) STORED AS TEXTFILE; + +EXPLAIN +DESCRIBE TEST10; + +DESCRIBE TEST10; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input11.q new file mode 100644 index 0000000000000..5aa6ee785d682 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input11.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 100; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 100; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input11_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input11_limit.q new file mode 100644 index 0000000000000..f68398e3159b2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input11_limit.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 100 LIMIT 10; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 100 LIMIT 10; + +SELECT dest1.* FROM dest1 ORDER BY dest1.key ASC, dest1.value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input12.q new file mode 100644 index 0000000000000..d4bc409cce7d0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input12.q @@ -0,0 +1,24 @@ +set mapreduce.framework.name=yarn; +set mapreduce.jobtracker.address=localhost:58; +set hive.exec.mode.local.auto=true; + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE dest2(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE dest3(key INT) PARTITIONED BY(ds STRING, hr STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 +INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 +INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200; + +SELECT dest1.* FROM dest1; +SELECT dest2.* FROM dest2; +SELECT dest3.* FROM dest3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input12_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input12_hadoop20.q new file mode 100644 index 0000000000000..318cd378db137 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input12_hadoop20.q @@ -0,0 +1,23 @@ +set mapred.job.tracker=localhost:58; +set hive.exec.mode.local.auto=true; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE dest2(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE dest3(key INT) PARTITIONED BY(ds STRING, hr STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 +INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 +INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200; + +SELECT dest1.* FROM dest1; +SELECT dest2.* FROM dest2; +SELECT dest3.* FROM dest3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input13.q new file mode 100644 index 0000000000000..40fbc84a981f1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input13.q @@ -0,0 +1,21 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE dest2(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE dest3(key INT) PARTITIONED BY(ds STRING, hr STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 +INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300 +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/dest4.out' SELECT src.value WHERE src.key >= 300; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 +INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300 +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/dest4.out' SELECT src.value WHERE src.key >= 300; + +SELECT dest1.* FROM dest1; +SELECT dest2.* FROM dest2; +SELECT dest3.* FROM dest3; +dfs -cat ../build/ql/test/data/warehouse/dest4.out/*; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input14.q new file mode 100644 index 0000000000000..750c0b82aa3f1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input14.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input14_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input14_limit.q new file mode 100644 index 0000000000000..7316752a6df65 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input14_limit.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey LIMIT 20 +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey LIMIT 20 +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input15.q new file mode 100644 index 0000000000000..2b76497fe5a7a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input15.q @@ -0,0 +1,7 @@ +EXPLAIN +CREATE TABLE TEST15(key INT, value STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; + +CREATE TABLE TEST15(key INT, value STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; + +DESCRIBE TEST15; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input16.q new file mode 100644 index 0000000000000..82e6d81426efc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input16.q @@ -0,0 +1,6 @@ +-- TestSerDe is a user defined serde where the default delimiter is Ctrl-B +DROP TABLE INPUT16; +ADD JAR ../data/files/TestSerDe.jar; +CREATE TABLE INPUT16(KEY STRING, VALUE STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.TestSerDe' STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1_cb.txt' INTO TABLE INPUT16; +SELECT INPUT16.VALUE, INPUT16.KEY FROM INPUT16; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input16_cc.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input16_cc.q new file mode 100644 index 0000000000000..5dab4103d8dda --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input16_cc.q @@ -0,0 +1,11 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +-- TestSerDe is a user defined serde where the default delimiter is Ctrl-B +-- the user is overwriting it with ctrlC + +DROP TABLE INPUT16_CC; +ADD JAR ../data/files/TestSerDe.jar; +CREATE TABLE INPUT16_CC(KEY STRING, VALUE STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.TestSerDe' with serdeproperties ('testserde.default.serialization.format'='\003', 'dummy.prop.not.used'='dummyy.val') STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1_cc.txt' INTO TABLE INPUT16_CC; +SELECT INPUT16_CC.VALUE, INPUT16_CC.KEY FROM INPUT16_CC; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input17.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input17.q new file mode 100644 index 0000000000000..14bfb640067bb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input17.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src_thrift + SELECT TRANSFORM(src_thrift.aint + src_thrift.lint[0], src_thrift.lintstring[0]) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue; + +FROM ( + FROM src_thrift + SELECT TRANSFORM(src_thrift.aint + src_thrift.lint[0], src_thrift.lintstring[0]) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input18.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input18.q new file mode 100644 index 0000000000000..4761dd6cac34a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input18.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value, 1+2, 3+4) + USING 'cat' + CLUSTER BY key +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.key, regexp_replace(tmap.value,'\t','+') WHERE tmap.key < 100; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value, 1+2, 3+4) + USING 'cat' + CLUSTER BY key +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.key, regexp_replace(tmap.value,'\t','+') WHERE tmap.key < 100; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input19.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input19.q new file mode 100644 index 0000000000000..fec44e97669dd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input19.q @@ -0,0 +1,5 @@ + +create table apachelog(ipaddress STRING,identd STRING,user_name STRING,finishtime STRING,requestline string,returncode INT,size INT) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe' WITH SERDEPROPERTIES ( 'serialization.format'= 'org.apache.hadoop.hive.serde2.thrift.TCTLSeparatedProtocol', 'quote.delim'= '("|\\[|\\])', 'field.delim'=' ', 'serialization.null.format'='-' ) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/apache.access.log' INTO TABLE apachelog; +SELECT a.* FROM apachelog a; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input1_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input1_limit.q new file mode 100644 index 0000000000000..71a9b8ff46a25 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input1_limit.q @@ -0,0 +1,18 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE dest2(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 100 LIMIT 10 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key < 100 LIMIT 5; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 100 LIMIT 10 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key < 100 LIMIT 5; + +SELECT dest1.* FROM dest1 ORDER BY dest1.key ASC, dest1.value ASC; +SELECT dest2.* FROM dest2 ORDER BY dest2.key ASC, dest2.value ASC; + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input2.q new file mode 100644 index 0000000000000..00693851ef1a7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input2.q @@ -0,0 +1,12 @@ +CREATE TABLE TEST2a(A INT, B DOUBLE) STORED AS TEXTFILE; +DESCRIBE TEST2a; +DESC TEST2a; +CREATE TABLE TEST2b(A ARRAY, B DOUBLE, C MAP) STORED AS TEXTFILE; +DESCRIBE TEST2b; +SHOW TABLES; +DROP TABLE TEST2a; +SHOW TABLES; +DROP TABLE TEST2b; + +EXPLAIN +SHOW TABLES; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input20.q new file mode 100644 index 0000000000000..0566ab18c2537 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input20.q @@ -0,0 +1,30 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +ADD FILE ../data/scripts/input20_script; + +EXPLAIN +FROM ( + FROM src + MAP src.key, src.key + USING 'cat' + DISTRIBUTE BY key + SORT BY key, value +) tmap +INSERT OVERWRITE TABLE dest1 +REDUCE tmap.key, tmap.value +USING 'input20_script' +AS key, value; + +FROM ( + FROM src + MAP src.key, src.key + USING 'cat' + DISTRIBUTE BY key + SORT BY key, value +) tmap +INSERT OVERWRITE TABLE dest1 +REDUCE tmap.key, tmap.value +USING 'input20_script' +AS key, value; + +SELECT * FROM dest1 SORT BY key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input21.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input21.q new file mode 100644 index 0000000000000..d7c814e58061c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input21.q @@ -0,0 +1,10 @@ + + +CREATE TABLE src_null(a STRING, b STRING, c STRING, d STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/null.txt' INTO TABLE src_null; + +EXPLAIN SELECT * FROM src_null DISTRIBUTE BY c SORT BY d; + +SELECT * FROM src_null DISTRIBUTE BY c SORT BY d; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input22.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input22.q new file mode 100644 index 0000000000000..853947be57a1f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input22.q @@ -0,0 +1,15 @@ +CREATE TABLE INPUT4(KEY STRING, VALUE STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE INPUT4; + +EXPLAIN +SELECT a.KEY2 +FROM (SELECT INPUT4.*, INPUT4.KEY as KEY2 + FROM INPUT4) a +ORDER BY KEY2 LIMIT 10; + +SELECT a.KEY2 +FROM (SELECT INPUT4.*, INPUT4.KEY as KEY2 + FROM INPUT4) a +ORDER BY KEY2 LIMIT 10; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input23.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input23.q new file mode 100644 index 0000000000000..634699a00c4a0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input23.q @@ -0,0 +1,5 @@ +explain extended + select * from srcpart a join srcpart b where a.ds = '2008-04-08' and a.hr = '11' and b.ds = '2008-04-08' and b.hr = '14' limit 5; + +select * from srcpart a join srcpart b where a.ds = '2008-04-08' and a.hr = '11' and b.ds = '2008-04-08' and b.hr = '14' limit 5; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input24.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input24.q new file mode 100644 index 0000000000000..95b2377f51b9d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input24.q @@ -0,0 +1,9 @@ + +create table tst(a int, b int) partitioned by (d string); +alter table tst add partition (d='2009-01-01'); +explain +select count(1) from tst x where x.d='2009-01-01'; + +select count(1) from tst x where x.d='2009-01-01'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input25.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input25.q new file mode 100644 index 0000000000000..e48368ff2a494 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input25.q @@ -0,0 +1,19 @@ + +create table tst(a int, b int) partitioned by (d string); +alter table tst add partition (d='2009-01-01'); +alter table tst add partition (d='2009-02-02'); + +explain +select * from ( + select * from tst x where x.d='2009-01-01' limit 10 + union all + select * from tst x where x.d='2009-02-02' limit 10 +) subq; + +select * from ( + select * from tst x where x.d='2009-01-01' limit 10 + union all + select * from tst x where x.d='2009-02-02' limit 10 +) subq; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input26.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input26.q new file mode 100644 index 0000000000000..642a7db60ebdf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input26.q @@ -0,0 +1,12 @@ +explain +select * from ( + select * from srcpart a where a.ds = '2008-04-08' and a.hr = '11' order by a.key limit 5 + union all + select * from srcpart b where b.ds = '2008-04-08' and b.hr = '14' limit 5 +)subq; + +select * from ( + select * from srcpart a where a.ds = '2008-04-08' and a.hr = '11' order by a.key limit 5 + union all + select * from srcpart b where b.ds = '2008-04-08' and b.hr = '14' limit 5 +)subq; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input28.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input28.q new file mode 100644 index 0000000000000..12e857df8a325 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input28.q @@ -0,0 +1,10 @@ + +create table tst(a string, b string) partitioned by (d string); +alter table tst add partition (d='2009-01-01'); + +insert overwrite table tst partition(d='2009-01-01') +select tst.a, src.value from tst join src ON (tst.a = src.key); + +select * from tst where tst.d='2009-01-01'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input2_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input2_limit.q new file mode 100644 index 0000000000000..81045100d380c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input2_limit.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRC x WHERE x.key < 300 LIMIT 5; + +SELECT x.* FROM SRC x WHERE x.key < 300 LIMIT 5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input3.q new file mode 100644 index 0000000000000..2efa7a4d3d6bc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input3.q @@ -0,0 +1,26 @@ + + + + +CREATE TABLE TEST3a(A INT, B DOUBLE) STORED AS TEXTFILE; +DESCRIBE TEST3a; +CREATE TABLE TEST3b(A ARRAY, B DOUBLE, C MAP) STORED AS TEXTFILE; +DESCRIBE TEST3b; +SHOW TABLES; +EXPLAIN +ALTER TABLE TEST3b ADD COLUMNS (X DOUBLE); +ALTER TABLE TEST3b ADD COLUMNS (X DOUBLE); +DESCRIBE TEST3b; +EXPLAIN +ALTER TABLE TEST3b RENAME TO TEST3c; +ALTER TABLE TEST3b RENAME TO TEST3c; +DESCRIBE TEST3c; +SHOW TABLES; +EXPLAIN +ALTER TABLE TEST3c REPLACE COLUMNS (R1 INT, R2 DOUBLE); +ALTER TABLE TEST3c REPLACE COLUMNS (R1 INT, R2 DOUBLE); +DESCRIBE EXTENDED TEST3c; + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input30.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input30.q new file mode 100644 index 0000000000000..c84c131082ce0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input30.q @@ -0,0 +1,23 @@ + + + + +create table dest30(a int); +create table tst_dest30(a int); + +set hive.test.mode=true; +set hive.test.mode.prefix=tst_; + +explain +insert overwrite table dest30 +select count(1) from src; + +insert overwrite table dest30 +select count(1) from src; + +set hive.test.mode=false; + +select * from tst_dest30; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input31.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input31.q new file mode 100644 index 0000000000000..ece940903a521 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input31.q @@ -0,0 +1,24 @@ + + + +set hive.test.mode=true; +set hive.test.mode.prefix=tst_; + +create table tst_dest31(a int); +create table dest31(a int); + +explain +insert overwrite table dest31 +select count(1) from srcbucket; + +insert overwrite table dest31 +select count(1) from srcbucket; + +set hive.test.mode=false; + +select * from tst_dest31; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input32.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input32.q new file mode 100644 index 0000000000000..cdc04b8c05b85 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input32.q @@ -0,0 +1,25 @@ + + + +set hive.test.mode=true; +set hive.test.mode.prefix=tst_; +set hive.test.mode.nosamplelist=src,srcbucket; + +create table dest32(a int); +create table tst_dest32(a int); + +explain +insert overwrite table dest32 +select count(1) from srcbucket; + +insert overwrite table dest32 +select count(1) from srcbucket; + +set hive.test.mode=false; + +select * from tst_dest32; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input33.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input33.q new file mode 100644 index 0000000000000..7ab17515af5c7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input33.q @@ -0,0 +1,30 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +ADD FILE ../data/scripts/input20_script; + +EXPLAIN +FROM ( + FROM src + MAP src.key, src.key + USING 'cat' + DISTRIBUTE BY key + SORT BY key, value +) tmap +INSERT OVERWRITE TABLE dest1 +REDUCE tmap.key, tmap.value +USING 'input20_script' +AS (key STRING, value STRING); + +FROM ( + FROM src + MAP src.key, src.key + USING 'cat' + DISTRIBUTE BY key + SORT BY key, value +) tmap +INSERT OVERWRITE TABLE dest1 +REDUCE tmap.key, tmap.value +USING 'input20_script' +AS (key STRING, value STRING); + +SELECT * FROM dest1 SORT BY key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input34.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input34.q new file mode 100644 index 0000000000000..c600bf57e49d3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input34.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' + USING 'cat' + AS (tkey, tvalue) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' + USING 'cat' + AS (tkey, tvalue) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input35.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input35.q new file mode 100644 index 0000000000000..5e37ea370a2ef --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input35.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\002' + USING 'cat' + AS (tkey, tvalue) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\002' +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\002' + USING 'cat' + AS (tkey, tvalue) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\002' +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input36.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input36.q new file mode 100644 index 0000000000000..fd1968f683550 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input36.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\002' + USING 'cat' + AS (tkey, tvalue) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\003' +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\002' + USING 'cat' + AS (tkey, tvalue) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\003' +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input37.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input37.q new file mode 100644 index 0000000000000..6fd136afec444 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input37.q @@ -0,0 +1,16 @@ +create table documents(contents string) stored as textfile; + +LOAD DATA LOCAL INPATH '../data/files/docurl.txt' INTO TABLE documents; + + +select url, count(1) +FROM +( + FROM documents + MAP documents.contents + USING 'java -cp ../build/ql/test/classes org.apache.hadoop.hive.scripts.extracturl' AS (url, count) +) subq +group by url; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input38.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input38.q new file mode 100644 index 0000000000000..1ccc5f26a603a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input38.q @@ -0,0 +1,22 @@ + +CREATE TABLE dest1(key STRING, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value, 1+2, 3+4) + USING 'cat' +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.key, tmap.value; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value, 1+2, 3+4) + USING 'cat' +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.key, tmap.value; + + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input39.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input39.q new file mode 100644 index 0000000000000..04201dd108b35 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input39.q @@ -0,0 +1,32 @@ +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + + +create table t1(key string, value string) partitioned by (ds string); +create table t2(key string, value string) partitioned by (ds string); + +insert overwrite table t1 partition (ds='1') +select key, value from src; + +insert overwrite table t1 partition (ds='2') +select key, value from src; + +insert overwrite table t2 partition (ds='1') +select key, value from src; + +set hive.test.mode=true; +set hive.mapred.mode=strict; +set mapreduce.framework.name=yarn; +set mapreduce.jobtracker.address=localhost:58; +set hive.exec.mode.local.auto=true; + +explain +select count(1) from t1 join t2 on t1.key=t2.key where t1.ds='1' and t2.ds='1'; + +select count(1) from t1 join t2 on t1.key=t2.key where t1.ds='1' and t2.ds='1'; + +set hive.test.mode=false; +set mapreduce.framework.name; +set mapreduce.jobtracker.address; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input39_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input39_hadoop20.q new file mode 100644 index 0000000000000..29e9fae1da9e3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input39_hadoop20.q @@ -0,0 +1,30 @@ +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + + +create table t1(key string, value string) partitioned by (ds string); +create table t2(key string, value string) partitioned by (ds string); + +insert overwrite table t1 partition (ds='1') +select key, value from src; + +insert overwrite table t1 partition (ds='2') +select key, value from src; + +insert overwrite table t2 partition (ds='1') +select key, value from src; + +set hive.test.mode=true; +set hive.mapred.mode=strict; +set mapred.job.tracker=localhost:58; +set hive.exec.mode.local.auto=true; + +explain +select count(1) from t1 join t2 on t1.key=t2.key where t1.ds='1' and t2.ds='1'; + +select count(1) from t1 join t2 on t1.key=t2.key where t1.ds='1' and t2.ds='1'; + +set hive.test.mode=false; +set mapred.job.tracker; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input3_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input3_limit.q new file mode 100644 index 0000000000000..3584820acaf4a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input3_limit.q @@ -0,0 +1,17 @@ + +CREATE TABLE T1(key STRING, value STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE T1; +LOAD DATA LOCAL INPATH '../data/files/kv2.txt' INTO TABLE T1; + + +CREATE TABLE T2(key STRING, value STRING); + +EXPLAIN +INSERT OVERWRITE TABLE T2 SELECT * FROM (SELECT * FROM T1 DISTRIBUTE BY key SORT BY key, value) T LIMIT 20; + +INSERT OVERWRITE TABLE T2 SELECT * FROM (SELECT * FROM T1 DISTRIBUTE BY key SORT BY key, value) T LIMIT 20; + +SELECT * FROM T2 SORT BY key, value; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4.q new file mode 100644 index 0000000000000..08d6d97603045 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4.q @@ -0,0 +1,8 @@ +CREATE TABLE INPUT4(KEY STRING, VALUE STRING) STORED AS TEXTFILE; +EXPLAIN +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE INPUT4; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE INPUT4; +EXPLAIN FORMATTED +SELECT Input4Alias.VALUE, Input4Alias.KEY FROM INPUT4 AS Input4Alias; +SELECT Input4Alias.VALUE, Input4Alias.KEY FROM INPUT4 AS Input4Alias + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input40.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input40.q new file mode 100644 index 0000000000000..4166cb5f94939 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input40.q @@ -0,0 +1,16 @@ + + + +create table tmp_insert_test (key string, value string) stored as textfile; +load data local inpath '../data/files/kv1.txt' into table tmp_insert_test; +select * from tmp_insert_test; + +create table tmp_insert_test_p (key string, value string) partitioned by (ds string) stored as textfile; + +load data local inpath '../data/files/kv1.txt' into table tmp_insert_test_p partition (ds = '2009-08-01'); +select * from tmp_insert_test_p where ds= '2009-08-01' +order by key, value; + +load data local inpath '../data/files/kv2.txt' into table tmp_insert_test_p partition (ds = '2009-08-01'); +select * from tmp_insert_test_p where ds= '2009-08-01' +order by key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input41.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input41.q new file mode 100644 index 0000000000000..5bc396e311f69 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input41.q @@ -0,0 +1,14 @@ +set hive.mapred.mode=strict; + +create table dest_sp (cnt int); + +insert overwrite table dest_sp +select * from + (select count(1) as cnt from src + union all + select count(1) as cnt from srcpart where ds = '2009-08-09' + )x; + +select * from dest_sp x order by x.cnt limit 2; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input42.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input42.q new file mode 100644 index 0000000000000..8682eb7592fa6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input42.q @@ -0,0 +1,16 @@ +explain extended +select * from srcpart a where a.ds='2008-04-08' order by a.key, a.hr; + +select * from srcpart a where a.ds='2008-04-08' order by a.key, a.hr; + + +explain extended +select * from srcpart a where a.ds='2008-04-08' and key < 200 order by a.key, a.hr; + +select * from srcpart a where a.ds='2008-04-08' and key < 200 order by a.key, a.hr; + + +explain extended +select * from srcpart a where a.ds='2008-04-08' and rand(100) < 0.1 order by a.key, a.hr; + +select * from srcpart a where a.ds='2008-04-08' and rand(100) < 0.1 order by a.key, a.hr; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input43.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input43.q new file mode 100644 index 0000000000000..5512dc328065d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input43.q @@ -0,0 +1,7 @@ +drop table tst_src1; +create table tst_src1 like src1; +load data local inpath '../data/files/kv1.txt' into table tst_src1 ; +select count(1) from tst_src1; +load data local inpath '../data/files/kv1.txt' into table tst_src1 ; +select count(1) from tst_src1; +drop table tst_src1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input44.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input44.q new file mode 100644 index 0000000000000..4557edc178b7f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input44.q @@ -0,0 +1,6 @@ +CREATE TABLE dest(key INT, value STRING) STORED AS TEXTFILE; + +SET hive.output.file.extension=.txt; +INSERT OVERWRITE TABLE dest SELECT src.* FROM src; + +dfs -cat ../build/ql/test/data/warehouse/dest/*.txt \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input45.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input45.q new file mode 100644 index 0000000000000..633a8c6edb5cc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input45.q @@ -0,0 +1,9 @@ +SET hive.insert.into.multilevel.dirs=true; + +SET hive.output.file.extension=.txt; + +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/x/y/z/' SELECT src.* FROM src; + +dfs -cat ../build/ql/test/data/x/y/z/*.txt; + +dfs -rmr ../build/ql/test/data/x; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input46.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input46.q new file mode 100644 index 0000000000000..06291d0d66cc5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input46.q @@ -0,0 +1,6 @@ +create database if not exists table_in_database_creation; +create table table_in_database_creation.test1 as select * from src limit 1; +create table `table_in_database_creation.test2` as select * from src limit 1; +create table table_in_database_creation.test3 (a string); +create table `table_in_database_creation.test4` (a string); +drop database table_in_database_creation cascade; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input49.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input49.q new file mode 100644 index 0000000000000..53fa51a6d3e4e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input49.q @@ -0,0 +1,4 @@ +create table intable (b boolean, d double, f float, i int, l bigint, s string, t tinyint); +insert overwrite table intable select 0, 29098519.0, 1410.0, 996, 40408519555, "test_string", 12 from src limit 1; +select * from intable where d in (29098519.0) and f in (1410.0) and i in (996) and l in (40408519555) and s in ('test_string') and t in (12); +drop table intable; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4_cb_delim.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4_cb_delim.q new file mode 100644 index 0000000000000..8c57dd3f25aa6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4_cb_delim.q @@ -0,0 +1,4 @@ +CREATE TABLE INPUT4_CB(KEY STRING, VALUE STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\002' LINES TERMINATED BY '\012' STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1_cb.txt' INTO TABLE INPUT4_CB; +SELECT INPUT4_CB.VALUE, INPUT4_CB.KEY FROM INPUT4_CB; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4_limit.q new file mode 100644 index 0000000000000..e6e3c467fc763 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input4_limit.q @@ -0,0 +1,5 @@ +explain +select * from src sort by key limit 10; + + +select * from src sort by key limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input5.q new file mode 100644 index 0000000000000..2af9163da82c4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input5.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key STRING, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM src_thrift + SELECT TRANSFORM(src_thrift.lint, src_thrift.lintstring) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue; + +FROM ( + FROM src_thrift + SELECT TRANSFORM(src_thrift.lint, src_thrift.lintstring) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input6.q new file mode 100644 index 0000000000000..4f2f17e49be6e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input6.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(key STRING, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src1.value WHERE src1.key is null; + +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src1.value WHERE src1.key is null; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input7.q new file mode 100644 index 0000000000000..f2e1ed0d3d79d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input7.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(c1 DOUBLE, c2 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT NULL, src1.key; + +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT NULL, src1.key; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input8.q new file mode 100644 index 0000000000000..66252a9c5e100 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input8.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(c1 STRING, c2 INT, c3 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT 4 + NULL, src1.key - NULL, NULL + NULL; + +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT 4 + NULL, src1.key - NULL, NULL + NULL; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input9.q new file mode 100644 index 0000000000000..ded20a81c6511 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input9.q @@ -0,0 +1,11 @@ +CREATE TABLE dest1(value STRING, key INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT NULL, src1.key where NULL = NULL; + +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT NULL, src1.key where NULL = NULL; + +SELECT dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_columnarserde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_columnarserde.q new file mode 100644 index 0000000000000..9394382b2b347 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_columnarserde.q @@ -0,0 +1,19 @@ + +CREATE TABLE input_columnarserde(a array, b array, c map, d int, e string) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS + INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'; + +EXPLAIN +FROM src_thrift +INSERT OVERWRITE TABLE input_columnarserde SELECT src_thrift.lint, src_thrift.lstring, src_thrift.mstringstring, src_thrift.aint, src_thrift.astring DISTRIBUTE BY 1; + +FROM src_thrift +INSERT OVERWRITE TABLE input_columnarserde SELECT src_thrift.lint, src_thrift.lstring, src_thrift.mstringstring, src_thrift.aint, src_thrift.astring DISTRIBUTE BY 1; + +SELECT input_columnarserde.* FROM input_columnarserde DISTRIBUTE BY 1; + +SELECT input_columnarserde.a[0], input_columnarserde.b[0], input_columnarserde.c['key2'], input_columnarserde.d, input_columnarserde.e FROM input_columnarserde DISTRIBUTE BY 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_dfs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_dfs.q new file mode 100644 index 0000000000000..4f5824df5c9d5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_dfs.q @@ -0,0 +1,2 @@ +dfs -cat ../data/files/kv1.txt; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_dynamicserde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_dynamicserde.q new file mode 100644 index 0000000000000..14377429fda8d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_dynamicserde.q @@ -0,0 +1,18 @@ +CREATE TABLE dest1(a array, b array, c map, d int, e string) +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '1' +COLLECTION ITEMS TERMINATED BY '2' +MAP KEYS TERMINATED BY '3' +LINES TERMINATED BY '10' +STORED AS TEXTFILE; + +EXPLAIN +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint, src_thrift.lstring, src_thrift.mstringstring, src_thrift.aint, src_thrift.astring; + +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint, src_thrift.lstring, src_thrift.mstringstring, src_thrift.aint, src_thrift.astring; + +SELECT dest1.* FROM dest1; + +SELECT dest1.a[0], dest1.b[0], dest1.c['key2'], dest1.d, dest1.e FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_lazyserde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_lazyserde.q new file mode 100644 index 0000000000000..65e678bee8872 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_lazyserde.q @@ -0,0 +1,30 @@ +CREATE TABLE dest1(a array, b array, c map, d int, e string) +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '1' +COLLECTION ITEMS TERMINATED BY '2' +MAP KEYS TERMINATED BY '3' +LINES TERMINATED BY '10' +STORED AS TEXTFILE; + +EXPLAIN +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint, src_thrift.lstring, src_thrift.mstringstring, src_thrift.aint, src_thrift.astring DISTRIBUTE BY 1; + +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint, src_thrift.lstring, src_thrift.mstringstring, src_thrift.aint, src_thrift.astring DISTRIBUTE BY 1; + +SELECT dest1.* FROM dest1 CLUSTER BY 1; + +SELECT dest1.a[0], dest1.b[0], dest1.c['key2'], dest1.d, dest1.e FROM dest1 CLUSTER BY 1; + +DROP TABLE dest1; + +CREATE TABLE dest1(a array) ROW FORMAT DELIMITED FIELDS TERMINATED BY '1' ESCAPED BY '\\'; +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint FROM src_thrift DISTRIBUTE BY 1; +SELECT * from dest1 ORDER BY 1 ASC; +DROP TABLE dest1; + +CREATE TABLE dest1(a map) ROW FORMAT DELIMITED FIELDS TERMINATED BY '1' ESCAPED BY '\\'; +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.mstringstring FROM src_thrift DISTRIBUTE BY 1; +SELECT * from dest1 ORDER BY 1 ASC; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_limit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_limit.q new file mode 100644 index 0000000000000..6d4363e590059 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_limit.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRC x LIMIT 20; + +SELECT x.* FROM SRC x LIMIT 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part0.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part0.q new file mode 100644 index 0000000000000..e5526e55414ef --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part0.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRCPART x WHERE x.ds = '2008-04-08'; + +SELECT x.* FROM SRCPART x WHERE x.ds = '2008-04-08'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part1.q new file mode 100644 index 0000000000000..b9a210c93daa0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part1.q @@ -0,0 +1,11 @@ +CREATE TABLE dest1(key INT, value STRING, hr STRING, ds STRING) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +FROM srcpart +INSERT OVERWRITE TABLE dest1 SELECT srcpart.key, srcpart.value, srcpart.hr, srcpart.ds WHERE srcpart.key < 100 and srcpart.ds = '2008-04-08' and srcpart.hr = '12'; + +FROM srcpart +INSERT OVERWRITE TABLE dest1 SELECT srcpart.key, srcpart.value, srcpart.hr, srcpart.ds WHERE srcpart.key < 100 and srcpart.ds = '2008-04-08' and srcpart.hr = '12'; + +SELECT dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part10.q new file mode 100644 index 0000000000000..b0698b991041b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part10.q @@ -0,0 +1,23 @@ +-- EXCLUDE_OS_WINDOWS +-- excluded on windows because of difference in file name encoding logic + +CREATE TABLE part_special ( + a STRING, + b STRING +) PARTITIONED BY ( + ds STRING, + ts STRING +); + +EXPLAIN +INSERT OVERWRITE TABLE part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') +SELECT 1, 2 FROM src LIMIT 1; + +INSERT OVERWRITE TABLE part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') +SELECT 1, 2 FROM src LIMIT 1; + +DESCRIBE EXTENDED part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455'); + +SELECT * FROM part_special WHERE ds='2008 04 08' AND ts = '10:11:12=455'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part10_win.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part10_win.q new file mode 100644 index 0000000000000..0f179ec25b1c1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part10_win.q @@ -0,0 +1,23 @@ +-- INCLUDE_OS_WINDOWS +-- included only on windows because of difference in file name encoding logic + +CREATE TABLE part_special ( + a STRING, + b STRING +) PARTITIONED BY ( + ds STRING, + ts STRING +); + +EXPLAIN +INSERT OVERWRITE TABLE part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') +SELECT 1, 2 FROM src LIMIT 1; + +INSERT OVERWRITE TABLE part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455') +SELECT 1, 2 FROM src LIMIT 1; + +DESCRIBE EXTENDED part_special PARTITION(ds='2008 04 08', ts = '10:11:12=455'); + +SELECT * FROM part_special WHERE ds='2008 04 08' AND ts = '10:11:12=455'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part2.q new file mode 100644 index 0000000000000..c9aaf25363e41 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part2.q @@ -0,0 +1,16 @@ +CREATE TABLE dest1(key INT, value STRING, hr STRING, ds STRING) STORED AS TEXTFILE; +CREATE TABLE dest2(key INT, value STRING, hr STRING, ds STRING) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +FROM srcpart +INSERT OVERWRITE TABLE dest1 SELECT srcpart.key, srcpart.value, srcpart.hr, srcpart.ds WHERE srcpart.key < 100 and srcpart.ds = '2008-04-08' and srcpart.hr = '12' +INSERT OVERWRITE TABLE dest2 SELECT srcpart.key, srcpart.value, srcpart.hr, srcpart.ds WHERE srcpart.key < 100 and srcpart.ds = '2008-04-09' and srcpart.hr = '12'; + +FROM srcpart +INSERT OVERWRITE TABLE dest1 SELECT srcpart.key, srcpart.value, srcpart.hr, srcpart.ds WHERE srcpart.key < 100 and srcpart.ds = '2008-04-08' and srcpart.hr = '12' +INSERT OVERWRITE TABLE dest2 SELECT srcpart.key, srcpart.value, srcpart.hr, srcpart.ds WHERE srcpart.key < 100 and srcpart.ds = '2008-04-09' and srcpart.hr = '12'; + +SELECT dest1.* FROM dest1 sort by key,value,ds,hr; +SELECT dest2.* FROM dest2 sort by key,value,ds,hr; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part3.q new file mode 100644 index 0000000000000..ea1d2b2408934 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part3.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRCPART x WHERE x.ds = '2008-04-08' and x.hr = 11; + +SELECT x.* FROM SRCPART x WHERE x.ds = '2008-04-08' and x.hr = 11; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part4.q new file mode 100644 index 0000000000000..71f27befee696 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part4.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRCPART x WHERE x.ds = '2008-04-08' and x.hr = 15; + +SELECT x.* FROM SRCPART x WHERE x.ds = '2008-04-08' and x.hr = 15; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part5.q new file mode 100644 index 0000000000000..ea9f70bdcb4fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part5.q @@ -0,0 +1,12 @@ + +create table tmptable(key string, value string, hr string, ds string); + +EXPLAIN +insert overwrite table tmptable +SELECT x.* FROM SRCPART x WHERE x.ds = '2008-04-08' and x.key < 100; + +insert overwrite table tmptable +SELECT x.* FROM SRCPART x WHERE x.ds = '2008-04-08' and x.key < 100; + +select * from tmptable x sort by x.key,x.value,x.ds,x.hr; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part6.q new file mode 100644 index 0000000000000..a60c7ac3a0284 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part6.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRCPART x WHERE x.ds = 2008-04-08 LIMIT 10; + +SELECT x.* FROM SRCPART x WHERE x.ds = 2008-04-08 LIMIT 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part7.q new file mode 100644 index 0000000000000..10f9336adcea6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part7.q @@ -0,0 +1,14 @@ +EXPLAIN EXTENDED +SELECT * FROM ( + SELECT X.* FROM SRCPART X WHERE X.ds = '2008-04-08' and X.key < 100 + UNION ALL + SELECT Y.* FROM SRCPART Y WHERE Y.ds = '2008-04-08' and Y.key < 100 +) A +SORT BY A.key, A.value, A.ds, A.hr; + +SELECT * FROM ( + SELECT X.* FROM SRCPART X WHERE X.ds = '2008-04-08' and X.key < 100 + UNION ALL + SELECT Y.* FROM SRCPART Y WHERE Y.ds = '2008-04-08' and Y.key < 100 +) A +SORT BY A.key, A.value, A.ds, A.hr; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part8.q new file mode 100644 index 0000000000000..6f1c9ec88f174 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part8.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRCPART x WHERE ds = '2008-04-08' LIMIT 10; + +SELECT x.* FROM SRCPART x WHERE ds = '2008-04-08' LIMIT 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part9.q new file mode 100644 index 0000000000000..30008f0f5a964 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_part9.q @@ -0,0 +1,5 @@ +EXPLAIN EXTENDED +SELECT x.* FROM SRCPART x WHERE key IS NOT NULL AND ds = '2008-04-08' order by x.key, x.hr; + +SELECT x.* FROM SRCPART x WHERE key IS NOT NULL AND ds = '2008-04-08' order by x.key, x.hr; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testsequencefile.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testsequencefile.q new file mode 100755 index 0000000000000..d9926888cef9c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testsequencefile.q @@ -0,0 +1,14 @@ +set mapred.output.compress=true; +set mapred.output.compression.type=BLOCK; + +CREATE TABLE dest4_sequencefile(key INT, value STRING) STORED AS SEQUENCEFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest4_sequencefile SELECT src.key, src.value; + +FROM src +INSERT OVERWRITE TABLE dest4_sequencefile SELECT src.key, src.value; + +set mapred.output.compress=false; +SELECT dest4_sequencefile.* FROM dest4_sequencefile; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath.q new file mode 100755 index 0000000000000..ed22404500811 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(key INT, value STRING, mapvalue STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint[1], src_thrift.lintstring[0].mystring, src_thrift.mstringstring['key_2']; + +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint[1], src_thrift.lintstring[0].mystring, src_thrift.mstringstring['key_2']; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath2.q new file mode 100644 index 0000000000000..131105b763d0e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath2.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(lint_size INT, lintstring_size INT, mstringstring_size INT) STORED AS TEXTFILE; + +EXPLAIN +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT size(src_thrift.lint), size(src_thrift.lintstring), size(src_thrift.mstringstring) where src_thrift.lint IS NOT NULL AND NOT (src_thrift.mstringstring IS NULL); + +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT size(src_thrift.lint), size(src_thrift.lintstring), size(src_thrift.mstringstring) where src_thrift.lint IS NOT NULL AND NOT (src_thrift.mstringstring IS NULL); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath3.q new file mode 100644 index 0000000000000..1b57ead8225f5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath3.q @@ -0,0 +1,6 @@ +EXPLAIN +FROM src_thrift +SELECT src_thrift.mstringstring['key_9'], src_thrift.lintstring.myint; + +FROM src_thrift +SELECT src_thrift.mstringstring['key_9'], src_thrift.lintstring.myint; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath4.q new file mode 100644 index 0000000000000..e8e8d2ef52b39 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/input_testxpath4.q @@ -0,0 +1,29 @@ +set hive.optimize.ppd=false; + +EXPLAIN +FROM src_thrift +SELECT src_thrift.mstringstring['key_9'], lintstring.myint +WHERE src_thrift.mstringstring['key_9'] IS NOT NULL + AND lintstring.myint IS NOT NULL + AND lintstring IS NOT NULL; + +FROM src_thrift +SELECT src_thrift.mstringstring['key_9'], lintstring.myint +WHERE src_thrift.mstringstring['key_9'] IS NOT NULL + OR lintstring.myint IS NOT NULL + OR lintstring IS NOT NULL; + +set hive.optimize.ppd=true; + +EXPLAIN +FROM src_thrift +SELECT src_thrift.mstringstring['key_9'], lintstring.myint +WHERE src_thrift.mstringstring['key_9'] IS NOT NULL + AND lintstring.myint IS NOT NULL + AND lintstring IS NOT NULL; + +FROM src_thrift +SELECT src_thrift.mstringstring['key_9'], lintstring.myint +WHERE src_thrift.mstringstring['key_9'] IS NOT NULL + OR lintstring.myint IS NOT NULL + OR lintstring IS NOT NULL; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl1.q new file mode 100644 index 0000000000000..b41f0b887cd29 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl1.q @@ -0,0 +1,6 @@ +EXPLAIN +CREATE TABLE INPUTDDL1(key INT, value STRING) STORED AS TEXTFILE; + +CREATE TABLE INPUTDDL1(key INT, value STRING) STORED AS TEXTFILE; + +SELECT INPUTDDL1.* from INPUTDDL1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl2.q new file mode 100644 index 0000000000000..e34779112454e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl2.q @@ -0,0 +1,6 @@ +EXPLAIN +CREATE TABLE INPUTDDL2(key INT, value STRING) PARTITIONED BY(ds STRING, country STRING) STORED AS TEXTFILE; +CREATE TABLE INPUTDDL2(key INT, value STRING) PARTITIONED BY(ds STRING, country STRING) STORED AS TEXTFILE; +DESCRIBE INPUTDDL2; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl3.q new file mode 100644 index 0000000000000..946cf54e40445 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl3.q @@ -0,0 +1,5 @@ +EXPLAIN +CREATE TABLE INPUTDDL3(key INT, value STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; +CREATE TABLE INPUTDDL3(key INT, value STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; +DESCRIBE INPUTDDL3; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl4.q new file mode 100644 index 0000000000000..0e07d8da6b9a1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl4.q @@ -0,0 +1,12 @@ +-- a simple test to test sorted/clustered syntax + +CREATE TABLE INPUTDDL4(viewTime STRING, userid INT, + page_url STRING, referrer_url STRING, + friends ARRAY, properties MAP, + ip STRING COMMENT 'IP Address of the User') + COMMENT 'This is the page view table' + PARTITIONED BY(ds STRING, country STRING) + CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS; +DESCRIBE INPUTDDL4; +DESCRIBE EXTENDED INPUTDDL4; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl5.q new file mode 100644 index 0000000000000..9a7ca5da1277f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl5.q @@ -0,0 +1,8 @@ +-- test for internationalization +-- kv4.txt contains the utf-8 character 0xE982B5E993AE which we are verifying later on +CREATE TABLE INPUTDDL5(name STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv4.txt' INTO TABLE INPUTDDL5; +DESCRIBE INPUTDDL5; +SELECT INPUTDDL5.name from INPUTDDL5; +SELECT count(1) FROM INPUTDDL5 WHERE INPUTDDL5.name = _UTF-8 0xE982B5E993AE; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl6.q new file mode 100644 index 0000000000000..d33ab8d9a78f4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl6.q @@ -0,0 +1,15 @@ +-- test for describe extended table +-- test for describe extended table partition +-- test for alter table drop partition +CREATE TABLE INPUTDDL6(KEY STRING, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE INPUTDDL6 PARTITION (ds='2008-04-09'); +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE INPUTDDL6 PARTITION (ds='2008-04-08'); +DESCRIBE EXTENDED INPUTDDL6; +DESCRIBE EXTENDED INPUTDDL6 PARTITION (ds='2008-04-08'); +SHOW PARTITIONS INPUTDDL6; +ALTER TABLE INPUTDDL6 DROP PARTITION (ds='2008-04-08'); +SHOW PARTITIONS INPUTDDL6; +EXPLAIN +DESCRIBE EXTENDED INPUTDDL6 PARTITION (ds='2008-04-09'); +DROP TABLE INPUTDDL6; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl7.q new file mode 100644 index 0000000000000..8a73935feec51 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl7.q @@ -0,0 +1,33 @@ +-- test for loading into tables with the correct file format +-- test for loading into partitions with the correct file format + + +CREATE TABLE T1(name STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE T1; +SELECT COUNT(1) FROM T1; + + +CREATE TABLE T2(name STRING) STORED AS SEQUENCEFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.seq' INTO TABLE T2; +SELECT COUNT(1) FROM T2; + + +CREATE TABLE T3(name STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE T3 PARTITION (ds='2008-04-09'); +SELECT COUNT(1) FROM T3 where T3.ds='2008-04-09'; + + +CREATE TABLE T4(name STRING) PARTITIONED BY(ds STRING) STORED AS SEQUENCEFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.seq' INTO TABLE T4 PARTITION (ds='2008-04-09'); +SELECT COUNT(1) FROM T4 where T4.ds='2008-04-09'; + +DESCRIBE EXTENDED T1; +DESCRIBE EXTENDED T2; +DESCRIBE EXTENDED T3 PARTITION (ds='2008-04-09'); +DESCRIBE EXTENDED T4 PARTITION (ds='2008-04-09'); + + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl8.q new file mode 100644 index 0000000000000..66717a158bd8a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/inputddl8.q @@ -0,0 +1,10 @@ + +CREATE TABLE INPUTDDL8 COMMENT 'This is a thrift based table' + PARTITIONED BY(ds STRING, country STRING) + CLUSTERED BY(aint) SORTED BY(lint) INTO 32 BUCKETS + ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer' + WITH SERDEPROPERTIES ('serialization.class' = 'org.apache.hadoop.hive.serde2.thrift.test.Complex', + 'serialization.format' = 'com.facebook.thrift.protocol.TBinaryProtocol') + STORED AS SEQUENCEFILE; +DESCRIBE EXTENDED INPUTDDL8; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert1.q new file mode 100644 index 0000000000000..5ac234db2069c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert1.q @@ -0,0 +1,36 @@ + + +create table insert1(key int, value string) stored as textfile; +create table insert2(key int, value string) stored as textfile; +insert overwrite table insert1 select a.key, a.value from insert2 a WHERE (a.key=-1); + +explain insert into table insert1 select a.key, a.value from insert2 a WHERE (a.key=-1); +explain insert into table INSERT1 select a.key, a.value from insert2 a WHERE (a.key=-1); + +-- HIVE-3465 +create database x; +create table x.insert1(key int, value string) stored as textfile; + +explain insert into table x.INSERT1 select a.key, a.value from insert2 a WHERE (a.key=-1); + +explain insert into table default.INSERT1 select a.key, a.value from insert2 a WHERE (a.key=-1); + +explain +from insert2 +insert into table insert1 select * where key < 10 +insert overwrite table x.insert1 select * where key > 10 and key < 20; + +-- HIVE-3676 +CREATE DATABASE db2; +USE db2; +CREATE TABLE result(col1 STRING); +INSERT OVERWRITE TABLE result SELECT 'db2_insert1' FROM default.src LIMIT 1; +INSERT INTO TABLE result SELECT 'db2_insert2' FROM default.src LIMIT 1; +SELECT * FROM result order by col1; + +USE default; +CREATE DATABASE db1; +CREATE TABLE db1.result(col1 STRING); +INSERT OVERWRITE TABLE db1.result SELECT 'db1_insert1' FROM src LIMIT 1; +INSERT INTO TABLE db1.result SELECT 'db1_insert2' FROM src LIMIT 1; +SELECT * FROM db1.result order by col1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert1_overwrite_partitions.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert1_overwrite_partitions.q new file mode 100644 index 0000000000000..6ad70b5673f30 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert1_overwrite_partitions.q @@ -0,0 +1,35 @@ +CREATE TABLE sourceTable (one string,two string) PARTITIONED BY (ds string,hr string); + +load data local inpath '../data/files/kv1.txt' INTO TABLE sourceTable partition(ds='2011-11-11', hr='11'); + +load data local inpath '../data/files/kv3.txt' INTO TABLE sourceTable partition(ds='2011-11-11', hr='12'); + +CREATE TABLE destinTable (one string,two string) PARTITIONED BY (ds string,hr string); + +EXPLAIN INSERT OVERWRITE TABLE destinTable PARTITION (ds='2011-11-11', hr='11') if not exists +SELECT one,two FROM sourceTable WHERE ds='2011-11-11' AND hr='11' order by one desc, two desc limit 5; + +INSERT OVERWRITE TABLE destinTable PARTITION (ds='2011-11-11', hr='11') if not exists +SELECT one,two FROM sourceTable WHERE ds='2011-11-11' AND hr='11' order by one desc, two desc limit 5; + +select one,two from destinTable order by one desc, two desc; + +EXPLAIN INSERT OVERWRITE TABLE destinTable PARTITION (ds='2011-11-11', hr='11') if not exists +SELECT one,two FROM sourceTable WHERE ds='2011-11-11' AND hr='12' order by one desc, two desc limit 5; + +INSERT OVERWRITE TABLE destinTable PARTITION (ds='2011-11-11', hr='11') if not exists +SELECT one,two FROM sourceTable WHERE ds='2011-11-11' AND hr='12' order by one desc, two desc limit 5; + +select one,two from destinTable order by one desc, two desc; + +drop table destinTable; + +CREATE TABLE destinTable (one string,two string); + +EXPLAIN INSERT OVERWRITE TABLE destinTable SELECT one,two FROM sourceTable WHERE ds='2011-11-11' AND hr='11' order by one desc, two desc limit 5; + +INSERT OVERWRITE TABLE destinTable SELECT one,two FROM sourceTable WHERE ds='2011-11-11' AND hr='11' order by one desc, two desc limit 5; + +drop table destinTable; + +drop table sourceTable; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert2_overwrite_partitions.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert2_overwrite_partitions.q new file mode 100644 index 0000000000000..598d30eaebba2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert2_overwrite_partitions.q @@ -0,0 +1,35 @@ +CREATE DATABASE db1; + +CREATE DATABASE db2; + +CREATE TABLE db1.sourceTable (one string,two string) PARTITIONED BY (ds string); + +load data local inpath '../data/files/kv1.txt' INTO TABLE db1.sourceTable partition(ds='2011-11-11'); + +load data local inpath '../data/files/kv3.txt' INTO TABLE db1.sourceTable partition(ds='2011-11-11'); + +CREATE TABLE db2.destinTable (one string,two string) PARTITIONED BY (ds string); + +EXPLAIN INSERT OVERWRITE TABLE db2.destinTable PARTITION (ds='2011-11-11') +SELECT one,two FROM db1.sourceTable WHERE ds='2011-11-11' order by one desc, two desc limit 5; + +INSERT OVERWRITE TABLE db2.destinTable PARTITION (ds='2011-11-11') +SELECT one,two FROM db1.sourceTable WHERE ds='2011-11-11' order by one desc, two desc limit 5; + +select one,two from db2.destinTable order by one desc, two desc; + +EXPLAIN INSERT OVERWRITE TABLE db2.destinTable PARTITION (ds='2011-11-11') +SELECT one,two FROM db1.sourceTable WHERE ds='2011-11-11' order by one desc, two desc limit 5; + +INSERT OVERWRITE TABLE db2.destinTable PARTITION (ds='2011-11-11') +SELECT one,two FROM db1.sourceTable WHERE ds='2011-11-11' order by one desc, two desc limit 5; + +select one,two from db2.destinTable order by one desc, two desc; + +drop table db2.destinTable; + +drop table db1.sourceTable; + +DROP DATABASE db1; + +DROP DATABASE db2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_compressed.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_compressed.q new file mode 100644 index 0000000000000..8f1201cd6fb91 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_compressed.q @@ -0,0 +1,15 @@ +set hive.exec.compress.output=true; + +drop table insert_compressed; +create table insert_compressed (key int, value string); + +insert overwrite table insert_compressed select * from src; +select count(*) from insert_compressed; + +insert into table insert_compressed select * from src; +select count(*) from insert_compressed; + +insert into table insert_compressed select * from src; +select count(*) from insert_compressed; + +drop table insert_compressed; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into1.q new file mode 100644 index 0000000000000..edc65a442d098 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into1.q @@ -0,0 +1,26 @@ +DROP TABLE insert_into1; + +CREATE TABLE insert_into1 (key int, value string); + +EXPLAIN INSERT INTO TABLE insert_into1 SELECT * from src LIMIT 100; +INSERT INTO TABLE insert_into1 SELECT * from src LIMIT 100; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 +) t; + +EXPLAIN INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100; +INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 +) t; + +SELECT COUNT(*) FROM insert_into1; + +EXPLAIN INSERT OVERWRITE TABLE insert_into1 SELECT * FROM src LIMIT 10; +INSERT OVERWRITE TABLE insert_into1 SELECT * FROM src LIMIT 10; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 +) t; + + +DROP TABLE insert_into1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into2.q new file mode 100644 index 0000000000000..0cce9585a89e7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into2.q @@ -0,0 +1,31 @@ +DROP TABLE insert_into2; +CREATE TABLE insert_into2 (key int, value string) + PARTITIONED BY (ds string); + +EXPLAIN INSERT INTO TABLE insert_into2 PARTITION (ds='1') + SELECT * FROM src LIMIT 100; +INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src limit 100; +INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src limit 100; +SELECT COUNT(*) FROM insert_into2 WHERE ds='1'; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 +) t; + +EXPLAIN INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') + SELECT * FROM src LIMIT 100; +INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') + SELECT * FROM src LIMIT 100; + +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 +) t; + +EXPLAIN INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') + SELECT * FROM src LIMIT 50; +INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') + SELECT * FROM src LIMIT 50; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 +) t; + +DROP TABLE insert_into2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into3.q new file mode 100644 index 0000000000000..e58b212e190bb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into3.q @@ -0,0 +1,30 @@ +DROP TABLE insert_into3a; +DROP TABLE insert_into3b; + +CREATE TABLE insert_into3a (key int, value string); +CREATE TABLE insert_into3b (key int, value string); + +EXPLAIN FROM src INSERT INTO TABLE insert_into3a SELECT * LIMIT 50 + INSERT INTO TABLE insert_into3b SELECT * LIMIT 100; +FROM src INSERT INTO TABLE insert_into3a SELECT * LIMIT 50 + INSERT INTO TABLE insert_into3b SELECT * LIMIT 100; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into3a +) t; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into3b +) t; + +EXPLAIN FROM src INSERT OVERWRITE TABLE insert_into3a SELECT * LIMIT 10 + INSERT INTO TABLE insert_into3b SELECT * LIMIT 10; +FROM src INSERT OVERWRITE TABLE insert_into3a SELECT * LIMIT 10 + INSERT INTO TABLE insert_into3b SELECT * LIMIT 10; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into3a +) t; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into3b +) t; + +DROP TABLE insert_into3a; +DROP TABLE insert_into3b; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into4.q new file mode 100644 index 0000000000000..2afe41d668bda --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into4.q @@ -0,0 +1,30 @@ +set hive.merge.smallfiles.avgsize=16000000; + +DROP TABLE insert_into4a; +DROP TABLE insert_into4b; + +CREATE TABLE insert_into4a (key int, value string); +CREATE TABLE insert_into4b (key int, value string); + +EXPLAIN INSERT INTO TABLE insert_into4a SELECT * FROM src LIMIT 10; +INSERT INTO TABLE insert_into4a SELECT * FROM src LIMIT 10; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into4a +) t; + +EXPLAIN INSERT INTO TABLE insert_into4a SELECT * FROM src LIMIT 10; +INSERT INTO TABLE insert_into4a SELECT * FROM src LIMIT 10; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into4a +) t; + +--At this point insert_into4a has 2 files (if INSERT INTO merges isn't fixed) + +EXPLAIN INSERT INTO TABLE insert_into4b SELECT * FROM insert_into4a; +INSERT INTO TABLE insert_into4b SELECT * FROM insert_into4a; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into4b +) t; + +DROP TABLE insert_into4a; +DROP TABLE insert_into4b; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into5.q new file mode 100644 index 0000000000000..07e80ea4e30fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into5.q @@ -0,0 +1,34 @@ +DROP TABLE insert_into5a; +DROP TABLE insert_into5b; + +CREATE TABLE insert_into5a (key int, value string); +CREATE TABLE insert_into5b (key int, value string) PARTITIONED BY (ds string); + +EXPLAIN INSERT INTO TABLE insert_into5a SELECT 1, 'one' FROM src LIMIT 10; +INSERT INTO TABLE insert_into5a SELECT 1, 'one' FROM src LIMIT 10; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into5a +) t; + +EXPLAIN INSERT INTO TABLE insert_into5a SELECT * FROM insert_into5a; +INSERT INTO TABLE insert_into5a SELECT * FROM insert_into5a; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into5a +) t; + +EXPLAIN INSERT INTO TABLE insert_into5b PARTITION (ds='1') + SELECT * FROM insert_into5a; +INSERT INTO TABLE insert_into5b PARTITION (ds='1') SELECT * FROM insert_into5a; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into5b +) t; + +EXPLAIN INSERT INTO TABLE insert_into5b PARTITION (ds='1') + SELECT key, value FROM insert_into5b; +INSERT INTO TABLE insert_into5b PARTITION (ds='1') + SELECT key, value FROM insert_into5b; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into5b +) t; + +DROP TABLE insert_into5a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into6.q new file mode 100644 index 0000000000000..2b7988ec6d27a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_into6.q @@ -0,0 +1,28 @@ +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; + +DROP TABLE insert_into6a; +DROP TABLE insert_into6b; +CREATE TABLE insert_into6a (key int, value string) PARTITIONED BY (ds string); +CREATE TABLE insert_into6b (key int, value string) PARTITIONED BY (ds string); + +EXPLAIN INSERT INTO TABLE insert_into6a PARTITION (ds='1') + SELECT * FROM src LIMIT 150; +INSERT INTO TABLE insert_into6a PARTITION (ds='1') SELECT * FROM src LIMIT 150; +INSERT INTO TABLE insert_into6a PARTITION (ds='2') SELECT * FROM src LIMIT 100; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into6a +) t; + +EXPLAIN INSERT INTO TABLE insert_into6b PARTITION (ds) + SELECT * FROM insert_into6a; +INSERT INTO TABLE insert_into6b PARTITION (ds) SELECT * FROM insert_into6a; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into6b +) t; + +SHOW PARTITIONS insert_into6b; + +DROP TABLE insert_into6a; +DROP TABLE insert_into6b; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_overwrite_local_directory_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_overwrite_local_directory_1.q new file mode 100644 index 0000000000000..25c127f67f980 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insert_overwrite_local_directory_1.q @@ -0,0 +1,109 @@ +insert overwrite local directory '../data/files/local_src_table_1' +select * from src ; +dfs -cat ../data/files/local_src_table_1/000000_0; + +insert overwrite local directory '../data/files/local_src_table_2' +row format delimited +FIELDS TERMINATED BY ':' +select * from src ; + +dfs -cat ../data/files/local_src_table_2/000000_0; + +create table array_table (a array, b array) +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '\t' +COLLECTION ITEMS TERMINATED BY ','; + +load data local inpath "../data/files/array_table.txt" overwrite into table array_table; + +insert overwrite local directory '../data/files/local_array_table_1' +select * from array_table; +dfs -cat ../data/files/local_array_table_1/000000_0; + +insert overwrite local directory '../data/files/local_array_table_2' +ROW FORMAT DELIMITED +FIELDS TERMINATED BY ':' +COLLECTION ITEMS TERMINATED BY '#' +select * from array_table; + +dfs -cat ../data/files/local_array_table_2/000000_0; + +insert overwrite local directory '../data/files/local_array_table_2_withfields' +ROW FORMAT DELIMITED +FIELDS TERMINATED BY ':' +COLLECTION ITEMS TERMINATED BY '#' +select b,a from array_table; + +dfs -cat ../data/files/local_array_table_2_withfields/000000_0; + + +create table map_table (foo STRING , bar MAP) +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '\t' +COLLECTION ITEMS TERMINATED BY ',' +MAP KEYS TERMINATED BY ':' +STORED AS TEXTFILE; + +load data local inpath "../data/files/map_table.txt" overwrite into table map_table; + +insert overwrite local directory '../data/files/local_map_table_1' +select * from map_table; +dfs -cat ../data/files/local_map_table_1/000000_0; + +insert overwrite local directory '../data/files/local_map_table_2' +ROW FORMAT DELIMITED +FIELDS TERMINATED BY ':' +COLLECTION ITEMS TERMINATED BY '#' +MAP KEYS TERMINATED BY '=' +select * from map_table; + +dfs -cat ../data/files/local_map_table_2/000000_0; + +insert overwrite local directory '../data/files/local_map_table_2_withfields' +ROW FORMAT DELIMITED +FIELDS TERMINATED BY ':' +COLLECTION ITEMS TERMINATED BY '#' +MAP KEYS TERMINATED BY '=' +select bar,foo from map_table; + +dfs -cat ../data/files/local_map_table_2_withfields/000000_0; + +insert overwrite local directory '../data/files/local_array_table_3' +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe' +STORED AS TEXTFILE +select * from array_table; + +dfs -cat ../data/files/local_array_table_3/000000_0; + +insert overwrite local directory '../data/files/local_map_table_3' +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe' +STORED AS TEXTFILE +select * from map_table; + +dfs -cat ../data/files/local_map_table_3/000000_0; + +insert overwrite local directory '../data/files/local_rctable' +STORED AS RCFILE +select value,key from src; + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/local_rctable/temp; +dfs -rmr ${system:test.tmp.dir}/local_rctable; +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/local_rctable; +dfs -put ../data/files/local_rctable/000000_0 ${system:test.tmp.dir}/local_rctable/000000_0; + +create external table local_rctable(value string, key string) +STORED AS RCFILE +LOCATION '${system:test.tmp.dir}/local_rctable'; + +insert overwrite local directory '../data/files/local_rctable_out' +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '\t' +select key,value from local_rctable; + +dfs -cat ../data/files/local_rctable_out/000000_0; + +drop table local_rctable; +drop table array_table; +drop table map_table; +dfs -rmr ${system:test.tmp.dir}/local_rctable; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insertexternal1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insertexternal1.q new file mode 100644 index 0000000000000..9004a0cce87bb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/insertexternal1.q @@ -0,0 +1,14 @@ + + +create table texternal(key string, val string) partitioned by (insertdate string); + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/texternal/temp; +dfs -rmr ${system:test.tmp.dir}/texternal; +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/texternal/2008-01-01; + +alter table texternal add partition (insertdate='2008-01-01') location 'pfile://${system:test.tmp.dir}/texternal/2008-01-01'; +from src insert overwrite table texternal partition (insertdate='2008-01-01') select *; + +select * from texternal where insertdate='2008-01-01'; + +dfs -rmr ${system:test.tmp.dir}/texternal; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join0.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join0.q new file mode 100644 index 0000000000000..feac6d85714cb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join0.q @@ -0,0 +1,23 @@ +EXPLAIN +SELECT src1.key as k1, src1.value as v1, + src2.key as k2, src2.value as v2 FROM + (SELECT * FROM src WHERE src.key < 10) src1 + JOIN + (SELECT * FROM src WHERE src.key < 10) src2 + SORT BY k1, v1, k2, v2; + +EXPLAIN FORMATTED +SELECT src1.key as k1, src1.value as v1, + src2.key as k2, src2.value as v2 FROM + (SELECT * FROM src WHERE src.key < 10) src1 + JOIN + (SELECT * FROM src WHERE src.key < 10) src2 + SORT BY k1, v1, k2, v2; + +SELECT src1.key as k1, src1.value as v1, + src2.key as k2, src2.value as v2 FROM + (SELECT * FROM src WHERE src.key < 10) src1 + JOIN + (SELECT * FROM src WHERE src.key < 10) src2 + SORT BY k1, v1, k2, v2; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join1.q new file mode 100644 index 0000000000000..886cba7d30d33 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join1.q @@ -0,0 +1,11 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +CREATE TABLE dest_j1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value; + +SELECT dest_j1.* FROM dest_j1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join10.q new file mode 100644 index 0000000000000..f424618034760 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join10.q @@ -0,0 +1,13 @@ +EXPLAIN FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +SELECT Y.*; + +FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +SELECT Y.*; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join11.q new file mode 100644 index 0000000000000..a40f0cc99ed2c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join11.q @@ -0,0 +1,14 @@ +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100; + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join12.q new file mode 100644 index 0000000000000..7053a06f8e2dc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join12.q @@ -0,0 +1,20 @@ +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80; + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join13.q new file mode 100644 index 0000000000000..914fb44860cb4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join13.q @@ -0,0 +1,20 @@ +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 + src2.c3 = src3.c5 AND src3.c5 < 200; + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 + src2.c3 = src3.c5 AND src3.c5 < 200; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join14.q new file mode 100644 index 0000000000000..83346b4c3466b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join14.q @@ -0,0 +1,17 @@ +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +CREATE TABLE dest1(c1 INT, c2 STRING) STORED AS TEXTFILE; + +set mapreduce.framework.name=yarn; +set mapreduce.jobtracker.address=localhost:58; +set hive.exec.mode.local.auto=true; +set hive.exec.mode.local.auto.input.files.max=6; + +EXPLAIN +FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 100 +INSERT OVERWRITE TABLE dest1 SELECT src.key, srcpart.value; + +FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 100 +INSERT OVERWRITE TABLE dest1 SELECT src.key, srcpart.value; + +select dest1.* from dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join14_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join14_hadoop20.q new file mode 100644 index 0000000000000..a12ef1afb055f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join14_hadoop20.q @@ -0,0 +1,15 @@ +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +CREATE TABLE dest1(c1 INT, c2 STRING) STORED AS TEXTFILE; + +set mapred.job.tracker=localhost:58; +set hive.exec.mode.local.auto=true; + +EXPLAIN +FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 100 +INSERT OVERWRITE TABLE dest1 SELECT src.key, srcpart.value; + +FROM src JOIN srcpart ON src.key = srcpart.key AND srcpart.ds = '2008-04-08' and src.key > 100 +INSERT OVERWRITE TABLE dest1 SELECT src.key, srcpart.value; + +select dest1.* from dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join15.q new file mode 100644 index 0000000000000..b86716c9be261 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join15.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key) SORT BY src1.key, src1.value, src2.key, src2.value; + +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key) SORT BY src1.key, src1.value, src2.key, src2.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join16.q new file mode 100644 index 0000000000000..4c9c9619f3e9a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join16.q @@ -0,0 +1 @@ +EXPLAIN SELECT subq.key, tab.value FROM (select a.key, a.value from src a where a.key > 10 ) subq JOIN src tab ON (subq.key = tab.key and subq.key > 20 and subq.value = tab.value) where tab.value < 200; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join17.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join17.q new file mode 100644 index 0000000000000..5fbb620e218f3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join17.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(key1 INT, value1 STRING, key2 INT, value2 STRING) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.*, src2.*; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.*, src2.*; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join18.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join18.q new file mode 100644 index 0000000000000..0ec121874cb5c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join18.q @@ -0,0 +1,24 @@ +EXPLAIN + SELECT a.key, a.value, b.key, b.value + FROM + ( + SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key + ) a + FULL OUTER JOIN + ( + SELECT src2.key as key, count(distinct(src2.value)) AS value + FROM src1 src2 group by src2.key + ) b + ON (a.key = b.key); + + SELECT a.key, a.value, b.key, b.value + FROM + ( + SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key + ) a + FULL OUTER JOIN + ( + SELECT src2.key as key, count(distinct(src2.value)) AS value + FROM src1 src2 group by src2.key + ) b + ON (a.key = b.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join18_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join18_multi_distinct.q new file mode 100644 index 0000000000000..eb4e46af421a3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join18_multi_distinct.q @@ -0,0 +1,26 @@ +EXPLAIN + SELECT a.key, a.value, b.key, b.value1, b.value2 + FROM + ( + SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key + ) a + FULL OUTER JOIN + ( + SELECT src2.key as key, count(distinct(src2.value)) AS value1, + count(distinct(src2.key)) AS value2 + FROM src1 src2 group by src2.key + ) b + ON (a.key = b.key) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value1 ASC, b.value2 ASC; + + SELECT a.key, a.value, b.key, b.value1, b.value2 + FROM + ( + SELECT src1.key as key, count(src1.value) AS value FROM src src1 group by src1.key + ) a + FULL OUTER JOIN + ( + SELECT src2.key as key, count(distinct(src2.value)) AS value1, + count(distinct(src2.key)) AS value2 + FROM src1 src2 group by src2.key + ) b + ON (a.key = b.key) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value1 ASC, b.value2 ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join19.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join19.q new file mode 100644 index 0000000000000..5a6b741f198d7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join19.q @@ -0,0 +1,58 @@ +CREATE TABLE triples (foo string, subject string, predicate string, object string, foo2 string); + +EXPLAIN +SELECT t11.subject, t22.object , t33.subject , t55.object, t66.object +FROM +( +SELECT t1.subject +FROM triples t1 +WHERE +t1.predicate='http://sofa.semanticweb.org/sofa/v1.0/system#__INSTANCEOF_REL' +AND +t1.object='http://ontos/OntosMiner/Common.English/ontology#Citation' +) t11 +JOIN +( +SELECT t2.subject , t2.object +FROM triples t2 +WHERE +t2.predicate='http://sofa.semanticweb.org/sofa/v1.0/system#__LABEL_REL' +) t22 +ON (t11.subject=t22.subject) +JOIN +( +SELECT t3.subject , t3.object +FROM triples t3 +WHERE +t3.predicate='http://www.ontosearch.com/2007/12/ontosofa-ns#_from' + +) t33 +ON (t11.subject=t33.object) +JOIN +( +SELECT t4.subject +FROM triples t4 +WHERE +t4.predicate='http://sofa.semanticweb.org/sofa/v1.0/system#__INSTANCEOF_REL' +AND +t4.object='http://ontos/OntosMiner/Common.English/ontology#Author' + +) t44 +ON (t44.subject=t33.subject) +JOIN +( +SELECT t5.subject, t5.object +FROM triples t5 +WHERE +t5.predicate='http://www.ontosearch.com/2007/12/ontosofa-ns#_to' +) t55 +ON (t55.subject=t44.subject) +JOIN +( +SELECT t6.subject, t6.object +FROM triples t6 +WHERE +t6.predicate='http://sofa.semanticweb.org/sofa/v1.0/system#__LABEL_REL' +) t66 +ON (t66.subject=t55.object); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join2.q new file mode 100644 index 0000000000000..7bb547bcb9473 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join2.q @@ -0,0 +1,10 @@ +CREATE TABLE dest_j2(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key + src2.key = src3.key) +INSERT OVERWRITE TABLE dest_j2 SELECT src1.key, src3.value; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key + src2.key = src3.key) +INSERT OVERWRITE TABLE dest_j2 SELECT src1.key, src3.value; + +SELECT dest_j2.* FROM dest_j2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join20.q new file mode 100644 index 0000000000000..b534a14031207 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join20.q @@ -0,0 +1,14 @@ +EXPLAIN +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + + +EXPLAIN +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key < 15) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key < 15) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join21.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join21.q new file mode 100644 index 0000000000000..50eb73ab85f2f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join21.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 LEFT OUTER JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) RIGHT OUTER JOIN src src3 ON (src2.key = src3.key AND src3.key < 10) SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join22.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join22.q new file mode 100644 index 0000000000000..4a67d74e83abc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join22.q @@ -0,0 +1,2 @@ +explain +SELECT src5.src1_value FROM (SELECT src3.*, src4.value as src4_value, src4.key as src4_key FROM src src4 JOIN (SELECT src2.*, src1.key as src1_key, src1.value as src1_value FROM src src1 JOIN src src2 ON src1.key = src2.key) src3 ON src3.src1_key = src4.key) src5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join23.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join23.q new file mode 100644 index 0000000000000..2db69d394171d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join23.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT * FROM src src1 JOIN src src2 WHERE src1.key < 10 and src2.key < 10 SORT BY src1.key, src1.value, src2.key, src2.value; + +SELECT * FROM src src1 JOIN src src2 WHERE src1.key < 10 and src2.key < 10 SORT BY src1.key, src1.value, src2.key, src2.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join24.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join24.q new file mode 100644 index 0000000000000..65c9256d6f264 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join24.q @@ -0,0 +1,8 @@ +create table tst1(key STRING, cnt INT); + +INSERT OVERWRITE TABLE tst1 +SELECT a.key, count(1) FROM src a group by a.key; + +SELECT sum(a.cnt) FROM tst1 a JOIN tst1 b ON a.key = b.key; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join25.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join25.q new file mode 100644 index 0000000000000..c0e4cbb93a386 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join25.q @@ -0,0 +1,19 @@ +set hive.mapjoin.numrows = 2; + + + +CREATE TABLE dest_j1(key INT, value STRING, val2 STRING) STORED AS TEXTFILE; + +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, x.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key); + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, x.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join26.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join26.q new file mode 100644 index 0000000000000..cecf8da533d8f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join26.q @@ -0,0 +1,17 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 STRING) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x,y) */ x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.key = z.key and z.ds='2008-04-08' and z.hr=11); + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x,y) */ x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.key = z.key and z.ds='2008-04-08' and z.hr=11); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join27.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join27.q new file mode 100644 index 0000000000000..2c6e95765752f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join27.q @@ -0,0 +1,17 @@ + + +CREATE TABLE dest_j1(key INT, value STRING, val2 STRING) STORED AS TEXTFILE; + +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, x.value, y.value +FROM src1 x JOIN src y ON (x.value = y.value); + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, x.value, y.value +FROM src1 x JOIN src y ON (x.value = y.value); + +select * from dest_j1 x order by x.key, x.value; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join28.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join28.q new file mode 100644 index 0000000000000..1d652b3a51843 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join28.q @@ -0,0 +1,27 @@ +CREATE TABLE dest_j1(key STRING, value STRING) STORED AS TEXTFILE; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT subq.key1, z.value +FROM +(SELECT x.key as key1, x.value as value1, y.key as key2, y.value as value2 + FROM src1 x JOIN src y ON (x.key = y.key)) subq + JOIN srcpart z ON (subq.key1 = z.key and z.ds='2008-04-08' and z.hr=11); + +INSERT OVERWRITE TABLE dest_j1 +SELECT subq.key1, z.value +FROM +(SELECT x.key as key1, x.value as value1, y.key as key2, y.value as value2 + FROM src1 x JOIN src y ON (x.key = y.key)) subq + JOIN srcpart z ON (subq.key1 = z.key and z.ds='2008-04-08' and z.hr=11); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join29.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join29.q new file mode 100644 index 0000000000000..7fa4815486c8c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join29.q @@ -0,0 +1,20 @@ +CREATE TABLE dest_j1(key STRING, cnt1 INT, cnt2 INT); + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT subq1.key, subq1.cnt, subq2.cnt +FROM (select x.key, count(1) as cnt from src1 x group by x.key) subq1 JOIN + (select y.key, count(1) as cnt from src y group by y.key) subq2 ON (subq1.key = subq2.key); + +INSERT OVERWRITE TABLE dest_j1 +SELECT subq1.key, subq1.cnt, subq2.cnt +FROM (select x.key, count(1) as cnt from src1 x group by x.key) subq1 JOIN + (select y.key, count(1) as cnt from src y group by y.key) subq2 ON (subq1.key = subq2.key); + +select * from dest_j1 x order by x.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join3.q new file mode 100644 index 0000000000000..f38fe215e8767 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join3.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key = src3.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key = src3.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join30.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join30.q new file mode 100644 index 0000000000000..036a16d3b1eec --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join30.q @@ -0,0 +1,10 @@ +CREATE TABLE dest_j1(key INT, cnt INT); + +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, count(1) FROM src1 x JOIN src y ON (x.key = y.key) group by x.key; + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, count(1) FROM src1 x JOIN src y ON (x.key = y.key) group by x.key; + +select * from dest_j1 x order by x.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join31.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join31.q new file mode 100644 index 0000000000000..0ba143aa76b41 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join31.q @@ -0,0 +1,22 @@ +CREATE TABLE dest_j1(key STRING, cnt INT); + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT subq1.key, count(1) as cnt +FROM (select x.key, count(1) as cnt from src1 x group by x.key) subq1 JOIN + (select y.key, count(1) as cnt from src y group by y.key) subq2 ON (subq1.key = subq2.key) +group by subq1.key; + +INSERT OVERWRITE TABLE dest_j1 +SELECT subq1.key, count(1) as cnt +FROM (select x.key, count(1) as cnt from src1 x group by x.key) subq1 JOIN + (select y.key, count(1) as cnt from src y group by y.key) subq2 ON (subq1.key = subq2.key) +group by subq1.key; + +select * from dest_j1 x order by x.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join32.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join32.q new file mode 100644 index 0000000000000..82fde0e965878 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join32.q @@ -0,0 +1,23 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 STRING) STORED AS TEXTFILE; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.value = z.value and z.ds='2008-04-08' and z.hr=11); + +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.value = z.value and z.ds='2008-04-08' and z.hr=11); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join32_lessSize.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join32_lessSize.q new file mode 100644 index 0000000000000..58a26c5bb3fa5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join32_lessSize.q @@ -0,0 +1,88 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 STRING) STORED AS TEXTFILE; +CREATE TABLE dest_j2(key STRING, value STRING, val2 STRING) STORED AS TEXTFILE; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=6000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.value = z.value and z.ds='2008-04-08' and z.hr=11); + +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.value = z.value and z.ds='2008-04-08' and z.hr=11); + +select * from dest_j1 x order by x.value; + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, z.value, y.value +FROM src w JOIN src1 x ON (x.value = w.value) +JOIN src y ON (x.key = y.key) +JOIN src1 z ON (x.key = z.key); + +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, z.value, y.value +FROM src w JOIN src1 x ON (x.value = w.value) +JOIN src y ON (x.key = y.key) +JOIN src1 z ON (x.key = z.key); + +select * from dest_j1 x order by x.value; + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j2 +SELECT res.key, z.value, res.value +FROM (select x.key, x.value from src1 x JOIN src y ON (x.key = y.key)) res +JOIN srcpart z ON (res.value = z.value and z.ds='2008-04-08' and z.hr=11); + +INSERT OVERWRITE TABLE dest_j2 +SELECT res.key, z.value, res.value +FROM (select x.key, x.value from src1 x JOIN src y ON (x.key = y.key)) res +JOIN srcpart z ON (res.value = z.value and z.ds='2008-04-08' and z.hr=11); + +select * from dest_j2 x order by x.value; + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j2 +SELECT res.key, z.value, res.value +FROM (select x.key, x.value from src1 x LEFT OUTER JOIN src y ON (x.key = y.key)) res +JOIN srcpart z ON (res.value = z.value and z.ds='2008-04-08' and z.hr=11); + +INSERT OVERWRITE TABLE dest_j2 +SELECT res.key, z.value, res.value +FROM (select x.key, x.value from src1 x LEFT OUTER JOIN src y ON (x.key = y.key)) res +JOIN srcpart z ON (res.value = z.value and z.ds='2008-04-08' and z.hr=11); + +select * from dest_j2 x order by x.value; + +EXPLAIN +INSERT OVERWRITE TABLE dest_j2 +SELECT res.key, x.value, res.value +FROM (select x.key, x.value from src1 x JOIN src y ON (x.key = y.key)) res +JOIN srcpart x ON (res.value = x.value and x.ds='2008-04-08' and x.hr=11); + +INSERT OVERWRITE TABLE dest_j2 +SELECT res.key, x.value, res.value +FROM (select x.key, x.value from src1 x JOIN src y ON (x.key = y.key)) res +JOIN srcpart x ON (res.value = x.value and x.ds='2008-04-08' and x.hr=11); + +select * from dest_j2 x order by x.value; + +EXPLAIN +INSERT OVERWRITE TABLE dest_j2 +SELECT res.key, y.value, res.value +FROM (select x.key, x.value from src1 x JOIN src y ON (x.key = y.key)) res +JOIN srcpart y ON (res.value = y.value and y.ds='2008-04-08' and y.hr=11); + +INSERT OVERWRITE TABLE dest_j2 +SELECT res.key, y.value, res.value +FROM (select x.key, x.value from src1 x JOIN src y ON (x.key = y.key)) res +JOIN srcpart y ON (res.value = y.value and y.ds='2008-04-08' and y.hr=11); + +select * from dest_j2 x order by x.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join33.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join33.q new file mode 100644 index 0000000000000..82fde0e965878 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join33.q @@ -0,0 +1,23 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 STRING) STORED AS TEXTFILE; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.value = z.value and z.ds='2008-04-08' and z.hr=11); + +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.value = z.value and z.ds='2008-04-08' and z.hr=11); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join34.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join34.q new file mode 100644 index 0000000000000..85adcfd232955 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join34.q @@ -0,0 +1,31 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 STRING) STORED AS TEXTFILE; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, x.value, subq1.value +FROM +( SELECT x.key as key, x.value as value from src x where x.key < 20 + UNION ALL + SELECT x1.key as key, x1.value as value from src x1 where x1.key > 100 +) subq1 +JOIN src1 x ON (x.key = subq1.key); + +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, x.value, subq1.value +FROM +( SELECT x.key as key, x.value as value from src x where x.key < 20 + UNION ALL + SELECT x1.key as key, x1.value as value from src x1 where x1.key > 100 +) subq1 +JOIN src1 x ON (x.key = subq1.key); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join35.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join35.q new file mode 100644 index 0000000000000..d66616c3cd5ad --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join35.q @@ -0,0 +1,31 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 INT) STORED AS TEXTFILE; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, x.value, subq1.cnt +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.key as key, count(1) as cnt from src x1 where x1.key > 100 group by x1.key +) subq1 +JOIN src1 x ON (x.key = subq1.key); + +INSERT OVERWRITE TABLE dest_j1 +SELECT x.key, x.value, subq1.cnt +FROM +( SELECT x.key as key, count(1) as cnt from src x where x.key < 20 group by x.key + UNION ALL + SELECT x1.key as key, count(1) as cnt from src x1 where x1.key > 100 group by x1.key +) subq1 +JOIN src1 x ON (x.key = subq1.key); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join36.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join36.q new file mode 100644 index 0000000000000..9912610da9667 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join36.q @@ -0,0 +1,29 @@ +set hive.mapjoin.numrows = 2; + + + + + +CREATE TABLE tmp1(key INT, cnt INT); +CREATE TABLE tmp2(key INT, cnt INT); +CREATE TABLE dest_j1(key INT, value INT, val2 INT); + +INSERT OVERWRITE TABLE tmp1 +SELECT key, count(1) from src group by key; + +INSERT OVERWRITE TABLE tmp2 +SELECT key, count(1) from src group by key; + +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, x.cnt, y.cnt +FROM tmp1 x JOIN tmp2 y ON (x.key = y.key); + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x) */ x.key, x.cnt, y.cnt +FROM tmp1 x JOIN tmp2 y ON (x.key = y.key); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join37.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join37.q new file mode 100644 index 0000000000000..a971f4ae07ebb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join37.q @@ -0,0 +1,19 @@ +set hive.mapjoin.numrows = 2; + + + +CREATE TABLE dest_j1(key INT, value STRING, val2 STRING) STORED AS TEXTFILE; + +EXPLAIN +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(X) */ x.key, x.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key); + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(X) */ x.key, x.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join38.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join38.q new file mode 100644 index 0000000000000..7fbe377585917 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join38.q @@ -0,0 +1,20 @@ + + +create table tmp(col0 string, col1 string,col2 string,col3 string,col4 string,col5 string,col6 string,col7 string,col8 string,col9 string,col10 string,col11 string); + +insert overwrite table tmp select key, cast(key + 1 as int), key +2, key+3, key+4, cast(key+5 as int), key+6, key+7, key+8, key+9, key+10, cast(key+11 as int) from src where key = 100; + +select * from tmp; + +explain +FROM src a JOIN tmp b ON (a.key = b.col11) +SELECT /*+ MAPJOIN(a) */ a.value, b.col5, count(1) as count +where b.col11 = 111 +group by a.value, b.col5; + +FROM src a JOIN tmp b ON (a.key = b.col11) +SELECT /*+ MAPJOIN(a) */ a.value, b.col5, count(1) as count +where b.col11 = 111 +group by a.value, b.col5; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join39.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join39.q new file mode 100644 index 0000000000000..d0edac50ef544 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join39.q @@ -0,0 +1,16 @@ +CREATE TABLE dest_j1(key STRING, value STRING, key1 string, val2 STRING) STORED AS TEXTFILE; + +explain +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(y) */ x.key, x.value, y.key, y.value +FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key); + + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(y) */ x.key, x.value, y.key, y.value +FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key); + +select * from dest_j1 x order by x.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join4.q new file mode 100644 index 0000000000000..100076e6cf1b5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join4.q @@ -0,0 +1,32 @@ +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join40.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join40.q new file mode 100644 index 0000000000000..e93f08289ac27 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join40.q @@ -0,0 +1,43 @@ +set hive.join.cache.size=1; + +EXPLAIN SELECT x.key, x.value, y.key, y.value +FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key); + +SELECT x.key, x.value, y.key, y.value +FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key); + + +EXPLAIN select src1.key, src2.value +FROM src src1 JOIN src src2 ON (src1.key = src2.key); + +select src1.key, src2.value +FROM src src1 JOIN src src2 ON (src1.key = src2.key); + + +EXPLAIN +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + + +EXPLAIN +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key < 15) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src src1 JOIN src src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key < 15) RIGHT OUTER JOIN src src3 ON (src1.key = src3.key AND src3.key < 20) +SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + + +EXPLAIN +SELECT /*+ MAPJOIN(y) */ x.key, x.value, y.key, y.value +FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key); + +SELECT /*+ MAPJOIN(y) */ x.key, x.value, y.key, y.value +FROM src x left outer JOIN (select * from src where key <= 100) y ON (x.key = y.key); + +EXPLAIN +SELECT COUNT(1) FROM SRC A JOIN SRC B ON (A.KEY=B.KEY); + +SELECT COUNT(1) FROM SRC A JOIN SRC B ON (A.KEY=B.KEY); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join41.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join41.q new file mode 100644 index 0000000000000..b8d9397fd6569 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join41.q @@ -0,0 +1,16 @@ +create table s1 as select * from src where key = 0; + +set hive.auto.convert.join.noconditionaltask=false; +EXPLAIN +SELECT * FROM s1 src1 LEFT OUTER JOIN s1 src2 ON (src1.key = src2.key AND src2.key > 10); +SELECT * FROM s1 src1 LEFT OUTER JOIN s1 src2 ON (src1.key = src2.key AND src2.key > 10); + +set hive.auto.convert.join.noconditionaltask=true; + +-- Make sure the big table is chosen correctly as part of HIVE-4146 +EXPLAIN +SELECT * FROM s1 src1 LEFT OUTER JOIN s1 src2 ON (src1.key = src2.key AND src2.key > 10); +SELECT * FROM s1 src1 LEFT OUTER JOIN s1 src2 ON (src1.key = src2.key AND src2.key > 10); + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join5.q new file mode 100644 index 0000000000000..405a0a57448a5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join5.q @@ -0,0 +1,32 @@ +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + RIGHT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + RIGHT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join6.q new file mode 100644 index 0000000000000..f55bc08580eb4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join6.q @@ -0,0 +1,33 @@ +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4; + + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join7.q new file mode 100644 index 0000000000000..34f502fa23cc8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join7.q @@ -0,0 +1,42 @@ +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING, c5 INT, c6 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + LEFT OUTER JOIN + ( + FROM src src3 SELECT src3.key AS c5, src3.value AS c6 WHERE src3.key > 20 and src3.key < 25 + ) c + ON (a.c1 = c.c5) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4, c.c5 AS c5, c.c6 AS c6 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4, c.c5, c.c6; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + LEFT OUTER JOIN + ( + FROM src src3 SELECT src3.key AS c5, src3.value AS c6 WHERE src3.key > 20 and src3.key < 25 + ) c + ON (a.c1 = c.c5) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4, c.c5 AS c5, c.c6 AS c6 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4, c.c5, c.c6; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join8.q new file mode 100644 index 0000000000000..a7fdf4cd14ad9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join8.q @@ -0,0 +1,32 @@ +CREATE TABLE dest1(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4 where c.c3 IS NULL AND c.c1 IS NOT NULL; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1 SELECT c.c1, c.c2, c.c3, c.c4 where c.c3 IS NULL AND c.c1 IS NOT NULL; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join9.q new file mode 100644 index 0000000000000..80add736c2a9e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join9.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value where src1.ds = '2008-04-08' and src1.hr = '12'; + +FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value where src1.ds = '2008-04-08' and src1.hr = '12'; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_1to1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_1to1.q new file mode 100644 index 0000000000000..b403814adb4c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_1to1.q @@ -0,0 +1,58 @@ + +CREATE TABLE join_1to1_1(key1 int, key2 int, value int); +LOAD DATA LOCAL INPATH '../data/files/in5.txt' INTO TABLE join_1to1_1; + +CREATE TABLE join_1to1_2(key1 int, key2 int, value int); +LOAD DATA LOCAL INPATH '../data/files/in6.txt' INTO TABLE join_1to1_2; + + +set hive.outerjoin.supports.filters=false; + +set hive.join.emit.interval=5; + +SELECT * FROM join_1to1_1 a join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; + +set hive.join.emit.interval=2; +SELECT * FROM join_1to1_1 a join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; + +set hive.join.emit.interval=1; +SELECT * FROM join_1to1_1 a join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; + + + +set hive.outerjoin.supports.filters=true; + +set hive.join.emit.interval=5; + +SELECT * FROM join_1to1_1 a join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; + +set hive.join.emit.interval=2; +SELECT * FROM join_1to1_1 a join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; + +set hive.join.emit.interval=1; +SELECT * FROM join_1to1_1 a join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; +SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 and a.key2 = b.key2 and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value ASC, b.key1 ASC, b.key2 ASC, b.value ASC; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_array.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_array.q new file mode 100644 index 0000000000000..e4d95a51fa927 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_array.q @@ -0,0 +1,10 @@ +create table tinyA(a bigint, b bigint) stored as textfile; +create table tinyB(a bigint, bList array) stored as textfile; + +load data local inpath '../data/files/tiny_a.txt' into table tinyA; +load data local inpath '../data/files/tiny_b.txt' into table tinyB; + +select * from tinyA; +select * from tinyB; + +select tinyB.a, tinyB.bList from tinyB full outer join tinyA on tinyB.a = tinyA.a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_casesensitive.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_casesensitive.q new file mode 100644 index 0000000000000..a9b69c5b1c448 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_casesensitive.q @@ -0,0 +1,8 @@ + +CREATE TABLE joinone(key1 int, key2 int, value int); +LOAD DATA LOCAL INPATH '../data/files/in5.txt' INTO TABLE joinone; + +CREATE TABLE joinTwo(key1 int, key2 int, value int); +LOAD DATA LOCAL INPATH '../data/files/in6.txt' INTO TABLE joinTwo; + +SELECT * FROM joinone JOIN joinTwo ON(joinone.key2=joinTwo.key2) ORDER BY joinone.key1 ASC, joinone.key2 ASC, joinone.value ASC, joinTwo.key1 ASC, joinTwo.key2 ASC, joinTwo.value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_empty.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_empty.q new file mode 100644 index 0000000000000..1982487c84b9d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_empty.q @@ -0,0 +1,10 @@ +create table srcpart_empty(key int, value string) partitioned by (ds string); +create table src2_empty (key int, value string); + +select /*+mapjoin(a)*/ a.key, b.value from srcpart_empty a join src b on a.key=b.key; +select /*+mapjoin(a)*/ a.key, b.value from src2_empty a join src b on a.key=b.key; + +set hive.mapred.mode=nonstrict; +set hive.auto.convert.join = true; +select a.key, b.value from srcpart_empty a join src b on a.key=b.key; +select a.key, b.value from src2_empty a join src b on a.key=b.key; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_filters.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_filters.q new file mode 100644 index 0000000000000..d54aa950a1ec2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_filters.q @@ -0,0 +1,155 @@ +CREATE TABLE myinput1(key int, value int); +LOAD DATA LOCAL INPATH '../data/files/in3.txt' INTO TABLE myinput1; + +SELECT * FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.key = c.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/in1.txt' into table smb_input1; +LOAD DATA LOCAL INPATH '../data/files/in2.txt' into table smb_input1; +LOAD DATA LOCAL INPATH '../data/files/in1.txt' into table smb_input2; +LOAD DATA LOCAL INPATH '../data/files/in2.txt' into table smb_input2; + +SET hive.optimize.bucketmapjoin = true; +SET hive.optimize.bucketmapjoin.sortedmerge = true; +SET hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key AND a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.key = b.key AND a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SET hive.outerjoin.supports.filters = false; + +SELECT * FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER JOIN myinput1 c ON (b.key=c.key AND c.key > 40 AND c.value > 50 AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.key = c.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value AND c.key > 40 AND c.value > 50 AND c.key = c.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC, c.key ASC, c.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key AND a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.key = b.key AND a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_filters_overlap.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_filters_overlap.q new file mode 100644 index 0000000000000..4394396790d9f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_filters_overlap.q @@ -0,0 +1,27 @@ +-- HIVE-3411 Filter predicates on outer join overlapped on single alias is not handled properly + +create table a as SELECT 100 as key, a.value as value FROM src LATERAL VIEW explode(array(40, 50, 60)) a as value limit 3; + +-- overlap on a +explain extended select * from a left outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (a.key=c.key AND a.value=60 AND c.value=60); +select * from a left outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (a.key=c.key AND a.value=60 AND c.value=60); +select /*+ MAPJOIN(b,c)*/ * from a left outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (a.key=c.key AND a.value=60 AND c.value=60) order by a.key ASC, a.value ASC; + +-- overlap on b +explain extended select * from a right outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (b.key=c.key AND b.value=60 AND c.value=60); +select * from a right outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (b.key=c.key AND b.value=60 AND c.value=60); +select /*+ MAPJOIN(a,c)*/ * from a right outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (b.key=c.key AND b.value=60 AND c.value=60) order by b.key ASC, b.value ASC; + +-- overlap on b with two filters for each +explain extended select * from a right outer join a b on (a.key=b.key AND a.value=50 AND b.value=50 AND b.value>10) left outer join a c on (b.key=c.key AND b.value=60 AND b.value>20 AND c.value=60); +select * from a right outer join a b on (a.key=b.key AND a.value=50 AND b.value=50 AND b.value>10) left outer join a c on (b.key=c.key AND b.value=60 AND b.value>20 AND c.value=60); +select /*+ MAPJOIN(a,c)*/ * from a right outer join a b on (a.key=b.key AND a.value=50 AND b.value=50 AND b.value>10) left outer join a c on (b.key=c.key AND b.value=60 AND b.value>20 AND c.value=60) order by b.key ASC, b.value ASC; + +-- overlap on a, b +explain extended select * from a full outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (b.key=c.key AND b.value=60 AND c.value=60) left outer join a d on (a.key=d.key AND a.value=40 AND d.value=40); +select * from a full outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (b.key=c.key AND b.value=60 AND c.value=60) left outer join a d on (a.key=d.key AND a.value=40 AND d.value=40); + +-- triple overlap on a +explain extended select * from a left outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (a.key=c.key AND a.value=60 AND c.value=60) left outer join a d on (a.key=d.key AND a.value=40 AND d.value=40); +select * from a left outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (a.key=c.key AND a.value=60 AND c.value=60) left outer join a d on (a.key=d.key AND a.value=40 AND d.value=40); +select /*+ MAPJOIN(b,c, d)*/ * from a left outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (a.key=c.key AND a.value=60 AND c.value=60) left outer join a d on (a.key=d.key AND a.value=40 AND d.value=40) order by a.key ASC, a.value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_hive_626.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_hive_626.q new file mode 100644 index 0000000000000..31b0c8c91c10b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_hive_626.q @@ -0,0 +1,30 @@ + + + + +create table hive_foo (foo_id int, foo_name string, foo_a string, foo_b string, +foo_c string, foo_d string) row format delimited fields terminated by ',' +stored as textfile; + +create table hive_bar (bar_id int, bar_0 int, foo_id int, bar_1 int, bar_name +string, bar_a string, bar_b string, bar_c string, bar_d string) row format +delimited fields terminated by ',' stored as textfile; + +create table hive_count (bar_id int, n int) row format delimited fields +terminated by ',' stored as textfile; + +load data local inpath '../data/files/hive_626_foo.txt' overwrite into table hive_foo; +load data local inpath '../data/files/hive_626_bar.txt' overwrite into table hive_bar; +load data local inpath '../data/files/hive_626_count.txt' overwrite into table hive_count; + +explain +select hive_foo.foo_name, hive_bar.bar_name, n from hive_foo join hive_bar on hive_foo.foo_id = +hive_bar.foo_id join hive_count on hive_count.bar_id = hive_bar.bar_id; + +select hive_foo.foo_name, hive_bar.bar_name, n from hive_foo join hive_bar on hive_foo.foo_id = +hive_bar.foo_id join hive_count on hive_count.bar_id = hive_bar.bar_id; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_literals.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_literals.q new file mode 100644 index 0000000000000..250bf839a4cdd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_literals.q @@ -0,0 +1,9 @@ +-- Test Joins with a variety of literals in the on clause + +SELECT COUNT(*) FROM src a JOIN src b ON a.key = b.key AND a.key = 0L; + +SELECT COUNT(*) FROM src a JOIN src b ON a.key = b.key AND a.key = 0S; + +SELECT COUNT(*) FROM src a JOIN src b ON a.key = b.key AND a.key = 0Y; + +SELECT COUNT(*) FROM src a JOIN src b ON a.key = b.key AND a.key = 0BD; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_map_ppr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_map_ppr.q new file mode 100644 index 0000000000000..d8943c4204adb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_map_ppr.q @@ -0,0 +1,41 @@ +CREATE TABLE dest_j1(key STRING, value STRING, val2 STRING) STORED AS TEXTFILE; + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x,y) */ x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.key = z.key) +WHERE z.ds='2008-04-08' and z.hr=11; + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x,y) */ x.key, z.value, y.value +FROM src1 x JOIN src y ON (x.key = y.key) +JOIN srcpart z ON (x.key = z.key) +WHERE z.ds='2008-04-08' and z.hr=11; + +select * from dest_j1 x order by x.key; + +CREATE TABLE src_copy(key int, value string); +CREATE TABLE src1_copy(key string, value string); +INSERT OVERWRITE TABLE src_copy select key, value from src; +INSERT OVERWRITE TABLE src1_copy select key, value from src1; + +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x,y) */ x.key, z.value, y.value +FROM src1_copy x JOIN src_copy y ON (x.key = y.key) +JOIN srcpart z ON (x.key = z.key) +WHERE z.ds='2008-04-08' and z.hr=11; + +INSERT OVERWRITE TABLE dest_j1 +SELECT /*+ MAPJOIN(x,y) */ x.key, z.value, y.value +FROM src1_copy x JOIN src_copy y ON (x.key = y.key) +JOIN srcpart z ON (x.key = z.key) +WHERE z.ds='2008-04-08' and z.hr=11; + +select * from dest_j1 x order by x.key; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_nulls.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_nulls.q new file mode 100644 index 0000000000000..4ff60713d6b44 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_nulls.q @@ -0,0 +1,68 @@ +CREATE TABLE myinput1(key int, value int); +LOAD DATA LOCAL INPATH '../data/files/in1.txt' INTO TABLE myinput1; + +SELECT * FROM myinput1 a JOIN myinput1 b ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key=b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key and a.value=b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key=b.key and a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.value = b.value and a.key=b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT * from myinput1 a LEFT OUTER JOIN myinput1 b ON (a.value=b.value) RIGHT OUTER JOIN myinput1 c ON (b.value=c.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * from myinput1 a RIGHT OUTER JOIN myinput1 b ON (a.value=b.value) LEFT OUTER JOIN myinput1 c ON (b.value=c.value) ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b RIGHT OUTER JOIN myinput1 c ON a.value = b.value and b.value = c.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.value = b.value and a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/in1.txt' into table smb_input1; +LOAD DATA LOCAL INPATH '../data/files/in2.txt' into table smb_input1; +LOAD DATA LOCAL INPATH '../data/files/in1.txt' into table smb_input2; +LOAD DATA LOCAL INPATH '../data/files/in2.txt' into table smb_input2; + +SET hive.optimize.bucketmapJOIN = true; +SET hive.optimize.bucketmapJOIN.sortedmerge = true; +SET hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key AND a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key = b.key ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value = b.value ORDER BY a.key ASC, a.value ASC, b.key ASC, b.value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_nullsafe.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_nullsafe.q new file mode 100644 index 0000000000000..05b57bce202d2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_nullsafe.q @@ -0,0 +1,61 @@ +set hive.nullsafe.equijoin=true; + +CREATE TABLE myinput1(key int, value int); +LOAD DATA LOCAL INPATH '../data/files/in8.txt' INTO TABLE myinput1; + +-- merging +explain select * from myinput1 a join myinput1 b on a.key<=>b.value ORDER BY a.key, a.value, b.key, b.value; +select * from myinput1 a join myinput1 b on a.key<=>b.value ORDER BY a.key, a.value, b.key, b.value; + +explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key ORDER BY a.key, a.value, b.key, b.value, c.key, c.value; +select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key ORDER BY a.key, a.value, b.key, b.value, c.key, c.value; + +explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key ORDER BY a.key, a.value, b.key, b.value, c.key, c.value; +select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key ORDER BY a.key, a.value, b.key, b.value, c.key, c.value; + +explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value ORDER BY a.key, a.value, b.key, b.value, c.key, c.value; +select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value ORDER BY a.key, a.value, b.key, b.value, c.key, c.value; + +explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value ORDER BY a.key, a.value, b.key, b.value, c.key, c.value; +select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value ORDER BY a.key, a.value, b.key, b.value, c.key, c.value; + +-- outer joins +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key<=>b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key<=>b.value ORDER BY a.key, a.value, b.key, b.value; + +-- map joins +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value ORDER BY a.key, a.value, b.key, b.value; + +-- smbs +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS; +LOAD DATA LOCAL INPATH '../data/files/in8.txt' into table smb_input1; +LOAD DATA LOCAL INPATH '../data/files/in9.txt' into table smb_input1; +LOAD DATA LOCAL INPATH '../data/files/in8.txt' into table smb_input2; +LOAD DATA LOCAL INPATH '../data/files/in9.txt' into table smb_input2; + +SET hive.optimize.bucketmapJOIN = true; +SET hive.optimize.bucketmapJOIN.sortedmerge = true; +SET hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key AND a.value <=> b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key <=> b.key ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key <=> b.key ORDER BY a.key, a.value, b.key, b.value; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key <=> b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key <=> b.value ORDER BY a.key, a.value, b.key, b.value; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value <=> b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value ORDER BY a.key, a.value, b.key, b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value <=> b.value ORDER BY a.key, a.value, b.key, b.value; + +--HIVE-3315 join predicate transitive +explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL; +select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL order by a.value ASC, b.key ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_rc.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_rc.q new file mode 100644 index 0000000000000..8a7c2d3eebeb8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_rc.q @@ -0,0 +1,16 @@ + + +create table join_rc1(key string, value string) stored as RCFile; +create table join_rc2(key string, value string) stored as RCFile; +insert overwrite table join_rc1 select * from src; +insert overwrite table join_rc2 select * from src; + +explain +select join_rc1.key, join_rc2.value +FROM join_rc1 JOIN join_rc2 ON join_rc1.key = join_rc2.key; + +select join_rc1.key, join_rc2.value +FROM join_rc1 JOIN join_rc2 ON join_rc1.key = join_rc2.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder.q new file mode 100644 index 0000000000000..b92a79ba07ab2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder.q @@ -0,0 +1,71 @@ + + + + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; + +EXPLAIN FROM T1 a JOIN src c ON c.key+1=a.key +SELECT a.key, a.val, c.key; + +EXPLAIN FROM T1 a JOIN src c ON c.key+1=a.key +SELECT /*+ STREAMTABLE(a) */ a.key, a.val, c.key; + +FROM T1 a JOIN src c ON c.key+1=a.key +SELECT a.key, a.val, c.key; + +FROM T1 a JOIN src c ON c.key+1=a.key +SELECT /*+ STREAMTABLE(a) */ a.key, a.val, c.key; + +EXPLAIN FROM T1 a + LEFT OUTER JOIN T2 b ON (b.key=a.key) + RIGHT OUTER JOIN T3 c ON (c.val = a.val) +SELECT a.key, b.key, a.val, c.val; + +EXPLAIN FROM T1 a + LEFT OUTER JOIN T2 b ON (b.key=a.key) + RIGHT OUTER JOIN T3 c ON (c.val = a.val) +SELECT /*+ STREAMTABLE(a) */ a.key, b.key, a.val, c.val; + +FROM T1 a + LEFT OUTER JOIN T2 b ON (b.key=a.key) + RIGHT OUTER JOIN T3 c ON (c.val = a.val) +SELECT a.key, b.key, a.val, c.val; + +FROM T1 a + LEFT OUTER JOIN T2 b ON (b.key=a.key) + RIGHT OUTER JOIN T3 c ON (c.val = a.val) +SELECT /*+ STREAMTABLE(a) */ a.key, b.key, a.val, c.val; + +EXPLAIN FROM UNIQUEJOIN + PRESERVE T1 a (a.key, a.val), + PRESERVE T2 b (b.key, b.val), + PRESERVE T3 c (c.key, c.val) +SELECT a.key, b.key, c.key; + +EXPLAIN FROM UNIQUEJOIN + PRESERVE T1 a (a.key, a.val), + PRESERVE T2 b (b.key, b.val), + PRESERVE T3 c (c.key, c.val) +SELECT /*+ STREAMTABLE(b) */ a.key, b.key, c.key; + +FROM UNIQUEJOIN + PRESERVE T1 a (a.key, a.val), + PRESERVE T2 b (b.key, b.val), + PRESERVE T3 c (c.key, c.val) +SELECT a.key, b.key, c.key; + +FROM UNIQUEJOIN + PRESERVE T1 a (a.key, a.val), + PRESERVE T2 b (b.key, b.val), + PRESERVE T3 c (c.key, c.val) +SELECT /*+ STREAMTABLE(b) */ a.key, b.key, c.key; + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder2.q new file mode 100644 index 0000000000000..238c0adad3128 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder2.q @@ -0,0 +1,44 @@ + + + + + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T4(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T4; + +EXPLAIN +SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key; + +SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key; + + +EXPLAIN +SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON a.val = c.val + JOIN T4 d ON a.key + 1 = d.key + 1; + + +SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON a.val = c.val + JOIN T4 d ON a.key + 1 = d.key + 1; + + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder3.q new file mode 100644 index 0000000000000..1bda28fbc3d5f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder3.q @@ -0,0 +1,44 @@ + + + + + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T4(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T4; + +EXPLAIN +SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key; + +SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key; + + +EXPLAIN +SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON a.val = c.val + JOIN T4 d ON a.key + 1 = d.key + 1; + + +SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON a.val = c.val + JOIN T4 d ON a.key + 1 = d.key + 1; + + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder4.q new file mode 100644 index 0000000000000..126f356ef785a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_reorder4.q @@ -0,0 +1,18 @@ +CREATE TABLE T1(key1 STRING, val1 STRING) STORED AS TEXTFILE; +CREATE TABLE T2(key2 STRING, val2 STRING) STORED AS TEXTFILE; +CREATE TABLE T3(key3 STRING, val3 STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; + +set hive.auto.convert.join=true; + +explain select /*+ STREAMTABLE(a) */ a.*, b.*, c.* from T1 a join T2 b on a.key1=b.key2 join T3 c on a.key1=c.key3; +select /*+ STREAMTABLE(a) */ a.*, b.*, c.* from T1 a join T2 b on a.key1=b.key2 join T3 c on a.key1=c.key3; + +explain select /*+ STREAMTABLE(b) */ a.*, b.*, c.* from T1 a join T2 b on a.key1=b.key2 join T3 c on a.key1=c.key3; +select /*+ STREAMTABLE(b) */ a.*, b.*, c.* from T1 a join T2 b on a.key1=b.key2 join T3 c on a.key1=c.key3; + +explain select /*+ STREAMTABLE(c) */ a.*, b.*, c.* from T1 a join T2 b on a.key1=b.key2 join T3 c on a.key1=c.key3; +select /*+ STREAMTABLE(c) */ a.*, b.*, c.* from T1 a join T2 b on a.key1=b.key2 join T3 c on a.key1=c.key3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_star.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_star.q new file mode 100644 index 0000000000000..8314161975761 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_star.q @@ -0,0 +1,54 @@ +create table fact(m1 int, m2 int, d1 int, d2 int); +create table dim1(f1 int, f2 int); +create table dim2(f3 int, f4 int); +create table dim3(f5 int, f6 int); +create table dim4(f7 int, f8 int); +create table dim5(f9 int, f10 int); +create table dim6(f11 int, f12 int); +create table dim7(f13 int, f14 int); + +LOAD DATA LOCAL INPATH '../data/files/fact-data.txt' INTO TABLE fact; +LOAD DATA LOCAL INPATH '../data/files/dim-data.txt' INTO TABLE dim1; +LOAD DATA LOCAL INPATH '../data/files/dim-data.txt' INTO TABLE dim2; +LOAD DATA LOCAL INPATH '../data/files/dim-data.txt' INTO TABLE dim3; +LOAD DATA LOCAL INPATH '../data/files/dim-data.txt' INTO TABLE dim4; +LOAD DATA LOCAL INPATH '../data/files/dim-data.txt' INTO TABLE dim5; +LOAD DATA LOCAL INPATH '../data/files/dim-data.txt' INTO TABLE dim6; +LOAD DATA LOCAL INPATH '../data/files/dim-data.txt' INTO TABLE dim7; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=5000; + +explain select m1, m2, f2 from fact join dim1 on fact.d1=dim1.f1; +select m1, m2, f2 from fact join dim1 on fact.d1=dim1.f1; + +explain select m1, m2, f2, f4 from fact join dim1 on fact.d1=dim1.f1 join dim2 on fact.d2=dim2.f3; +select m1, m2, f2, f4 from fact join dim1 on fact.d1=dim1.f1 join dim2 on fact.d2=dim2.f3; + +explain select m1, m2, f2, f4 from fact join dim1 on fact.d1= dim1.f1 join dim2 on dim1.f2 = dim2.f3; +select m1, m2, f2, f4 from fact join dim1 on fact.d1= dim1.f1 join dim2 on dim1.f2 = dim2.f3; + +explain select m1, m2, f2, f4 from fact Left outer join dim1 on fact.d1= dim1.f1 Left outer join dim2 on dim1.f2 = dim2.f3; +select m1, m2, f2, f4 from fact Left outer join dim1 on fact.d1= dim1.f1 Left outer join dim2 on dim1.f2 = dim2.f3; + +explain Select m1, m2, f2, f4, f6, f8, f10, f12, f14 + from fact + Left outer join dim1 on fact.d1= dim1.f1 + Left outer join dim2 on dim1.f2 = dim2.f3 + Left outer Join dim3 on fact.d2= dim3.f5 + Left outer Join dim4 on dim3.f6= dim4.f7 + Left outer join dim5 on dim4.f8= dim5.f9 + Left outer Join dim6 on dim3.f6= dim6.f11 + Left outer Join dim7 on dim6.f12 = dim7.f13; + +Select m1, m2, f2, f4, f6, f8, f10, f12, f14 + from fact + Left outer join dim1 on fact.d1= dim1.f1 + Left outer join dim2 on dim1.f2 = dim2.f3 + Left outer Join dim3 on fact.d2= dim3.f5 + Left outer Join dim4 on dim3.f6= dim4.f7 + Left outer join dim5 on dim4.f8= dim5.f9 + Left outer Join dim6 on dim3.f6= dim6.f11 + Left outer Join dim7 on dim6.f12 = dim7.f13; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_thrift.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_thrift.q new file mode 100644 index 0000000000000..1b4d491207b8d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_thrift.q @@ -0,0 +1,12 @@ +DESCRIBE src_thrift; + +EXPLAIN +SELECT s1.aint, s2.lintstring +FROM src_thrift s1 +JOIN src_thrift s2 +ON s1.aint = s2.aint; + +SELECT s1.aint, s2.lintstring +FROM src_thrift s1 +JOIN src_thrift s2 +ON s1.aint = s2.aint; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_vc.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_vc.q new file mode 100644 index 0000000000000..63b3da7190f5c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_vc.q @@ -0,0 +1,5 @@ +-- see HIVE-4033 earlier a flag named hasVC was not initialized correctly in MapOperator.java, resulting in NPE for following query. order by and limit in the query is not relevant, problem would be evident even without those. They are there to keep .q.out file small and sorted. + +explain select t3.BLOCK__OFFSET__INSIDE__FILE,t3.key,t3.value from src t1 join src t2 on t1.key = t2.key join src t3 on t2.value = t3.value order by t3.BLOCK__OFFSET__INSIDE__FILE,t3.key,t3.value limit 3; + +select t3.BLOCK__OFFSET__INSIDE__FILE,t3.key,t3.value from src t1 join src t2 on t1.key = t2.key join src t3 on t2.value = t3.value order by t3.BLOCK__OFFSET__INSIDE__FILE,t3.key,t3.value limit 3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_view.q new file mode 100644 index 0000000000000..16b6816f0c861 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/join_view.q @@ -0,0 +1,16 @@ +drop table invites; +drop table invites2; +create table invites (foo int, bar string) partitioned by (ds string); +create table invites2 (foo int, bar string) partitioned by (ds string); + +set hive.mapred.mode=strict; + +-- test join views: see HIVE-1989 + +create view v as select invites.bar, invites2.foo, invites2.ds from invites join invites2 on invites.ds=invites2.ds; + +explain select * from v where ds='2011-09-01'; + +drop view v; +drop table invites; +drop table invites2; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/keyword_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/keyword_1.q new file mode 100644 index 0000000000000..2e996af28e39a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/keyword_1.q @@ -0,0 +1,19 @@ +-- SORT_BEFORE_DIFF + +create table test_user (user string, `group` string); +grant select on table test_user to user hive_test; + +explain select user from test_user; + +show grant user hive_test on table test_user; + +drop table test_user; + +create table test_user (role string, `group` string); +grant select on table test_user to user hive_test; + +explain select role from test_user; + +show grant user hive_test on table test_user; + +drop table test_user; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view.q new file mode 100644 index 0000000000000..f0c094fae3775 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view.q @@ -0,0 +1,55 @@ + + + +CREATE TABLE tmp_pyang_lv (inputs string) STORED AS RCFILE; +INSERT OVERWRITE TABLE tmp_pyang_lv SELECT key FROM src; + +EXPLAIN SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol SORT BY key ASC, myCol ASC LIMIT 1; +EXPLAIN SELECT myTable.* FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LIMIT 3; +EXPLAIN SELECT myTable.myCol, myTable2.myCol2 FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LATERAL VIEW explode(array('a', 'b', 'c')) myTable2 AS myCol2 LIMIT 9; +EXPLAIN SELECT myTable2.* FROM src LATERAL VIEW explode(array(array(1,2,3))) myTable AS myCol LATERAL VIEW explode(myTable.myCol) myTable2 AS myCol2 LIMIT 3; + +-- Verify that * selects columns from both tables +SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol SORT BY key ASC, myCol ASC LIMIT 1; +-- TABLE.* should be supported +SELECT myTable.* FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LIMIT 3; +-- Multiple lateral views should result in a Cartesian product +SELECT myTable.myCol, myTable2.myCol2 FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LATERAL VIEW explode(array('a', 'b', 'c')) myTable2 AS myCol2 LIMIT 9; +-- Should be able to reference tables generated earlier +SELECT myTable2.* FROM src LATERAL VIEW explode(array(array(1,2,3))) myTable AS myCol LATERAL VIEW explode(myTable.myCol) myTable2 AS myCol2 LIMIT 3; + +EXPLAIN +SELECT myCol from tmp_pyang_lv LATERAL VIEW explode(array(1,2,3)) myTab as myCol limit 3; + +SELECT myCol from tmp_PYANG_lv LATERAL VIEW explode(array(1,2,3)) myTab as myCol limit 3; + +CREATE TABLE tmp_pyang_src_rcfile (key string, value array) STORED AS RCFILE; +INSERT OVERWRITE TABLE tmp_pyang_src_rcfile SELECT key, array(value) FROM src ORDER BY key LIMIT 20; + +SELECT key,value from tmp_pyang_src_rcfile LATERAL VIEW explode(value) myTable AS myCol; +SELECT myCol from tmp_pyang_src_rcfile LATERAL VIEW explode(value) myTable AS myCol; +SELECT * from tmp_pyang_src_rcfile LATERAL VIEW explode(value) myTable AS myCol; + +SELECT subq.key,subq.value +FROM ( +SELECT * from tmp_pyang_src_rcfile LATERAL VIEW explode(value) myTable AS myCol +)subq; + +SELECT subq.myCol +FROM ( +SELECT * from tmp_pyang_src_rcfile LATERAL VIEW explode(value) myTable AS myCol +)subq; + +SELECT subq.key +FROM ( +SELECT key, value from tmp_pyang_src_rcfile LATERAL VIEW explode(value) myTable AS myCol +)subq; + +EXPLAIN SELECT value, myCol from (SELECT key, array(value[0]) AS value FROM tmp_pyang_src_rcfile GROUP BY value[0], key) a +LATERAL VIEW explode(value) myTable AS myCol; + +SELECT value, myCol from (SELECT key, array(value[0]) AS value FROM tmp_pyang_src_rcfile GROUP BY value[0], key) a +LATERAL VIEW explode(value) myTable AS myCol; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_cp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_cp.q new file mode 100644 index 0000000000000..5e0b6fa20ebe9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_cp.q @@ -0,0 +1,8 @@ +--HIVE 3226 +drop table array_valued_src; +create table array_valued_src (key string, value array); +insert overwrite table array_valued_src select key, array(value) from src; + +-- replace sel(*) to sel(exprs) for reflecting CP result properly +explain select count(val) from (select a.key as key, b.value as array_val from src a join array_valued_src b on a.key=b.key) i lateral view explode (array_val) c as val; +select count(val) from (select a.key as key, b.value as array_val from src a join array_valued_src b on a.key=b.key) i lateral view explode (array_val) c as val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_noalias.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_noalias.q new file mode 100644 index 0000000000000..11e54a5b04c07 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_noalias.q @@ -0,0 +1,12 @@ +--HIVE-2608 Do not require AS a,b,c part in LATERAL VIEW +EXPLAIN SELECT myTab.* from src LATERAL VIEW explode(map('key1', 100, 'key2', 200)) myTab limit 2; +SELECT myTab.* from src LATERAL VIEW explode(map('key1', 100, 'key2', 200)) myTab limit 2; + +EXPLAIN SELECT explode(map('key1', 100, 'key2', 200)) from src limit 2; +SELECT explode(map('key1', 100, 'key2', 200)) from src limit 2; + +-- view +create view lv_noalias as SELECT myTab.* from src LATERAL VIEW explode(map('key1', 100, 'key2', 200)) myTab limit 2; + +explain select * from lv_noalias a join lv_noalias b on a.key=b.key; +select * from lv_noalias a join lv_noalias b on a.key=b.key; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_outer.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_outer.q new file mode 100644 index 0000000000000..d65e79df7b3d2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_outer.q @@ -0,0 +1,15 @@ +-- UDTF forwards nothing, OUTER LV add null for that +explain +select * from src LATERAL VIEW OUTER explode(array()) C AS a limit 10; +select * from src LATERAL VIEW OUTER explode(array()) C AS a limit 10; + +-- backward compatible (UDTF forwards something for OUTER LV) +explain +select * from src LATERAL VIEW OUTER explode(array(4,5)) C AS a limit 10; +select * from src LATERAL VIEW OUTER explode(array(4,5)) C AS a limit 10; + +create table array_valued as select key, if (key > 300, array(value, value), null) as value from src; + +explain +select * from array_valued LATERAL VIEW OUTER explode(value) C AS a limit 10; +select * from array_valued LATERAL VIEW OUTER explode(value) C AS a limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_ppd.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_ppd.q new file mode 100644 index 0000000000000..7be86a6f10ea2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lateral_view_ppd.q @@ -0,0 +1,13 @@ +set hive.optimize.ppd=true; + +EXPLAIN SELECT value, myCol FROM (SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE key='0'; +SELECT value, myCol FROM (SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE key='0'; + +EXPLAIN SELECT value, myCol FROM (SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE key='0' AND myCol=1; +SELECT value, myCol FROM (SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE key='0' AND myCol=1; + +EXPLAIN SELECT value, myCol FROM (SELECT * FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE ds='2008-04-08' AND hr="12" LIMIT 12; +SELECT value, myCol FROM (SELECT * FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol) a WHERE ds='2008-04-08' AND hr="12" LIMIT 12; + +EXPLAIN SELECT value, myCol FROM (SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LATERAL VIEW explode(array(1,2,3)) myTable2 AS myCol2) a WHERE key='0'; +SELECT value, myCol FROM (SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LATERAL VIEW explode(array(1,2,3)) myTable2 AS myCol2) a WHERE key='0'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leadlag.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leadlag.q new file mode 100644 index 0000000000000..f49766771067b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leadlag.q @@ -0,0 +1,82 @@ +DROP TABLE part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +--1. testLagWithPTFWindowing +select p_mfgr, p_name, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +p_retailprice, sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1, +p_size, p_size - lag(p_size,1,p_size) over (partition by p_mfgr order by p_name) as deltaSz +from noop(on part +partition by p_mfgr +order by p_name +); + +-- 2. testLagWithWindowingNoPTF +select p_mfgr, p_name, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +p_retailprice, sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1, +p_size, p_size - lag(p_size,1,p_size) over (partition by p_mfgr order by p_name) as deltaSz +from part +; + +-- 3. testJoinWithLag +select p1.p_mfgr, p1.p_name, +p1.p_size, p1.p_size - lag(p1.p_size,1,p1.p_size) over( distribute by p1.p_mfgr sort by p1.p_name) as deltaSz +from part p1 join part p2 on p1.p_partkey = p2.p_partkey + ; + +-- 4. testLagInSum +select p_mfgr,p_name, p_size, +sum(p_size - lag(p_size,1)) over(distribute by p_mfgr sort by p_name ) as deltaSum +from part +window w1 as (rows between 2 preceding and 2 following) ; + +-- 5. testLagInSumOverWindow +select p_mfgr,p_name, p_size, +sum(p_size - lag(p_size,1)) over w1 as deltaSum +from part +window w1 as (distribute by p_mfgr sort by p_name rows between 2 preceding and 2 following) ; + +-- 6. testRankInLead +select p_mfgr, p_name, p_size, r1, +lead(r1,1,r1) over (distribute by p_mfgr sort by p_name) as deltaRank +from ( +select p_mfgr, p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r1 +from part +) a; + +-- 7. testLeadWithPTF +select p_mfgr, p_name, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +p_size, p_size - lead(p_size,1,p_size) over(distribute by p_mfgr sort by p_name) as deltaSz +from noop(on part +partition by p_mfgr +order by p_name +) +; + +-- 8. testOverNoPartitionMultipleAggregate +select p_name, p_retailprice, +lead(p_retailprice) over() as l1 , +lag(p_retailprice) over() as l2 +from part +where p_retailprice = 1173.15; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leadlag_queries.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leadlag_queries.q new file mode 100644 index 0000000000000..6ef3bdb107a12 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leadlag_queries.q @@ -0,0 +1,53 @@ +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +-- 1. testLeadUDAF +select p_mfgr, p_retailprice, +lead(p_retailprice) over (partition by p_mfgr order by p_name) as l1, +lead(p_retailprice,1) over (partition by p_mfgr order by p_name) as l2, +lead(p_retailprice,1,10) over (partition by p_mfgr order by p_name) as l3, +lead(p_retailprice,1, p_retailprice) over (partition by p_mfgr order by p_name) as l4, +p_retailprice - lead(p_retailprice,1,p_retailprice) over (partition by p_mfgr order by p_name) +from part; + +-- 2.testLeadUDAFPartSz1 +select p_mfgr, p_name, p_retailprice, +lead(p_retailprice,1) over (partition by p_mfgr, p_name ), +p_retailprice - lead(p_retailprice,1,p_retailprice) over (partition by p_mfgr, p_name) +from part; + +-- 3.testLagUDAF +select p_mfgr, p_retailprice, +lag(p_retailprice,1) over (partition by p_mfgr order by p_name) as l1, +lag(p_retailprice) over (partition by p_mfgr order by p_name) as l2, +lag(p_retailprice,1, p_retailprice) over (partition by p_mfgr order by p_name) as l3, +lag(p_retailprice,1,10) over (partition by p_mfgr order by p_name) as l4, +p_retailprice - lag(p_retailprice,1,p_retailprice) over (partition by p_mfgr order by p_name) +from part; + +-- 4.testLagUDAFPartSz1 +select p_mfgr, p_name, p_retailprice, +lag(p_retailprice,1) over (partition by p_mfgr, p_name ), +p_retailprice - lag(p_retailprice,1,p_retailprice) over (partition by p_mfgr, p_name) +from part; + +-- 5.testLeadLagUDAF +select p_mfgr, p_retailprice, +lead(p_retailprice,1) over (partition by p_mfgr order by p_name) as l1, +lead(p_retailprice,1, p_retailprice) over (partition by p_mfgr order by p_name) as l2, +p_retailprice - lead(p_retailprice,1,p_retailprice) over (partition by p_mfgr order by p_name), +lag(p_retailprice,1) over (partition by p_mfgr order by p_name) as l3, +lag(p_retailprice,1, p_retailprice) over (partition by p_mfgr order by p_name) as l4 +from part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leftsemijoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leftsemijoin.q new file mode 100644 index 0000000000000..abe3d3317157c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leftsemijoin.q @@ -0,0 +1,23 @@ +drop table sales; +drop table things; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +CREATE TABLE sales (name STRING, id INT) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; + +CREATE TABLE things (id INT, name STRING) partitioned by (ds string) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; + +load data local inpath '../data/files/sales.txt' INTO TABLE sales; +load data local inpath '../data/files/things.txt' INTO TABLE things partition(ds='2011-10-23'); +load data local inpath '../data/files/things2.txt' INTO TABLE things partition(ds='2011-10-24'); + +SELECT name,id FROM sales ORDER BY name ASC, id ASC; + +SELECT id,name FROM things ORDER BY id ASC, name ASC; + +SELECT name,id FROM sales LEFT SEMI JOIN things ON (sales.id = things.id) ORDER BY name ASC, id ASC; + +drop table sales; +drop table things; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leftsemijoin_mr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leftsemijoin_mr.q new file mode 100644 index 0000000000000..5813ca3c619cc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/leftsemijoin_mr.q @@ -0,0 +1,20 @@ +CREATE TABLE T1(key INT); +LOAD DATA LOCAL INPATH '../data/files/leftsemijoin_mr_t1.txt' INTO TABLE T1; +CREATE TABLE T2(key INT); +LOAD DATA LOCAL INPATH '../data/files/leftsemijoin_mr_t2.txt' INTO TABLE T2; + +-- Run this query using TestMinimrCliDriver + +SELECT * FROM T1; +SELECT * FROM T2; + +set hive.auto.convert.join=false; +set mapred.reduce.tasks=2; + +set hive.join.emit.interval=100; + +SELECT T1.key FROM T1 LEFT SEMI JOIN (SELECT key FROM T2 SORT BY key) tmp ON (T1.key=tmp.key); + +set hive.join.emit.interval=1; + +SELECT T1.key FROM T1 LEFT SEMI JOIN (SELECT key FROM T2 SORT BY key) tmp ON (T1.key=tmp.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/limit_pushdown.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/limit_pushdown.q new file mode 100644 index 0000000000000..e4d0aa06bde87 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/limit_pushdown.q @@ -0,0 +1,66 @@ +set hive.limit.pushdown.memory.usage=0.3f; +set hive.optimize.reducededuplication.min.reducer=1; + +-- HIVE-3562 Some limit can be pushed down to map stage + +explain +select key,value from src order by key limit 20; +select key,value from src order by key limit 20; + +explain +select key,value from src order by key desc limit 20; +select key,value from src order by key desc limit 20; + +explain +select value, sum(key + 1) as sum from src group by value limit 20; +select value, sum(key + 1) as sum from src group by value limit 20; + +-- deduped RS +explain +select value,avg(key + 1) from src group by value order by value limit 20; +select value,avg(key + 1) from src group by value order by value limit 20; + +-- distincts +explain +select distinct(key) from src limit 20; +select distinct(key) from src limit 20; + +explain +select key, count(distinct(key)) from src group by key limit 20; +select key, count(distinct(key)) from src group by key limit 20; + +-- limit zero +explain +select key,value from src order by key limit 0; +select key,value from src order by key limit 0; + +-- 2MR (applied to last RS) +explain +select value, sum(key) as sum from src group by value order by sum limit 20; +select value, sum(key) as sum from src group by value order by sum limit 20; + +-- subqueries +explain +select * from +(select key, count(1) from src group by key order by key limit 2) subq +join +(select key, count(1) from src group by key limit 3) subq2 +on subq.key=subq2.key limit 4; + +set hive.map.aggr=false; +-- map aggregation disabled +explain +select value, sum(key) as sum from src group by value limit 20; +select value, sum(key) as sum from src group by value limit 20; + +set hive.limit.pushdown.memory.usage=0.00002f; + +-- flush for order-by +explain +select key,value,value,value,value,value,value,value,value from src order by key limit 100; +select key,value,value,value,value,value,value,value,value from src order by key limit 100; + +-- flush for group-by +explain +select sum(key) as sum from src group by concat(key,value,value,value,value,value,value,value,value,value) limit 100; +select sum(key) as sum from src group by concat(key,value,value,value,value,value,value,value,value,value) limit 100; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/limit_pushdown_negative.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/limit_pushdown_negative.q new file mode 100644 index 0000000000000..a86ddf14047ef --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/limit_pushdown_negative.q @@ -0,0 +1,22 @@ +set hive.limit.pushdown.memory.usage=0.3f; + +-- negative, RS + join +explain select * from src a join src b on a.key=b.key limit 20; + +-- negative, RS + filter +explain select value, sum(key) as sum from src group by value having sum > 100 limit 20; + +-- negative, RS + lateral view +explain select key, L.* from (select * from src order by key) a lateral view explode(array(value, value)) L as v limit 10; + +-- negative, RS + forward + multi-groupby +CREATE TABLE dest_2(key STRING, c1 INT); +CREATE TABLE dest_3(key STRING, c1 INT); + +EXPLAIN FROM src +INSERT OVERWRITE TABLE dest_2 SELECT value, sum(key) GROUP BY value +INSERT OVERWRITE TABLE dest_3 SELECT value, sum(key) GROUP BY value limit 20; + +-- nagative, multi distinct +explain +select count(distinct key)+count(distinct value) from src limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lineage1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lineage1.q new file mode 100644 index 0000000000000..4743b7f413ab9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lineage1.q @@ -0,0 +1,30 @@ + + +CREATE TABLE dest_l1(key INT, value STRING) STORED AS TEXTFILE; + + +EXPLAIN +INSERT OVERWRITE TABLE dest_l1 +SELECT j.* +FROM (SELECT t1.key, p1.value + FROM src1 t1 + LEFT OUTER JOIN src p1 + ON (t1.key = p1.key) + UNION ALL + SELECT t2.key, p2.value + FROM src1 t2 + LEFT OUTER JOIN src p2 + ON (t2.key = p2.key)) j; + +INSERT OVERWRITE TABLE dest_l1 +SELECT j.* +FROM (SELECT t1.key, p1.value + FROM src1 t1 + LEFT OUTER JOIN src p1 + ON (t1.key = p1.key) + UNION ALL + SELECT t2.key, p2.value + FROM src1 t2 + LEFT OUTER JOIN src p2 + ON (t2.key = p2.key)) j; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_1.q new file mode 100644 index 0000000000000..1062e5503fd43 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_1.q @@ -0,0 +1,40 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- list bucketing DML : dynamic partition and 2 stage query plan. + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- create a skewed table +create table list_bucketing_dynamic_part (key String, value String) +partitioned by (ds String, hr String) +skewed by (key) on ("484") +stored as DIRECTORIES +; + +-- list bucketing DML +explain extended +insert overwrite table list_bucketing_dynamic_part partition (ds='2008-04-08', hr) select key, value, hr from srcpart where ds='2008-04-08'; +insert overwrite table list_bucketing_dynamic_part partition (ds='2008-04-08', hr) select key, value, hr from srcpart where ds='2008-04-08'; + +-- check DML result +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='11'); +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='12'); + +select count(1) from srcpart where ds='2008-04-08'; +select count(1) from list_bucketing_dynamic_part where ds='2008-04-08'; + +select key, value from srcpart where ds='2008-04-08' and hr='11' and key = "484"; +set hive.optimize.listbucketing=true; +explain extended +select key, value from list_bucketing_dynamic_part where ds='2008-04-08' and hr='11' and key = "484"; +select key, value from list_bucketing_dynamic_part where ds='2008-04-08' and hr='11' and key = "484"; + +-- clean up resources +drop table list_bucketing_dynamic_part; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_10.q new file mode 100644 index 0000000000000..2fbafc20169b5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_10.q @@ -0,0 +1,35 @@ +set hive.mapred.supports.subdirectories=true; + +set mapred.input.dir.recursive=true; + +-- run this test case in minimr to ensure it works in cluster + +-- list bucketing DML: static partition. multiple skewed columns. +-- ds=2008-04-08/hr=11/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME: +-- 5263 000000_0 +-- 5263 000001_0 +-- ds=2008-04-08/hr=11/key=103/value=val_103: +-- 99 000000_0 +-- 99 000001_0 +-- ds=2008-04-08/hr=11/key=484/value=val_484: +-- 87 000000_0 +-- 87 000001_0 + +-- create a skewed table +create table list_bucketing_static_part (key String, value String) + partitioned by (ds String, hr String) + skewed by (key) on ('484','51','103') + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML without merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from src; + +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from src; + +-- check DML result +show partitions list_bucketing_static_part; +desc formatted list_bucketing_static_part partition (ds='2008-04-08', hr='11'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_11.q new file mode 100644 index 0000000000000..8260459725efe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_11.q @@ -0,0 +1,36 @@ +set hive.mapred.supports.subdirectories=true; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Ensure it works if skewed column is not the first column in the table columns + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- list bucketing DML: static partition. multiple skewed columns. + +-- create a skewed table +create table list_bucketing_static_part (key String, value String) + partitioned by (ds String, hr String) + skewed by (value) on ('val_466','val_287','val_82') + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML without merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from src; + +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from src; + +-- check DML result +show partitions list_bucketing_static_part; +desc formatted list_bucketing_static_part partition (ds='2008-04-08', hr='11'); + +set hive.optimize.listbucketing=true; +explain extended +select key, value from list_bucketing_static_part where ds='2008-04-08' and hr='11' and value = "val_466"; +select key, value from list_bucketing_static_part where ds='2008-04-08' and hr='11' and value = "val_466"; + +drop table list_bucketing_static_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_12.q new file mode 100644 index 0000000000000..3606e3b8b77c3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_12.q @@ -0,0 +1,42 @@ +set hive.mapred.supports.subdirectories=true; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Ensure it works if skewed column is not the first column in the table columns + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- test where the skewed values are more than 1 say columns no. 2 and 4 in a table with 5 columns +create table list_bucketing_mul_col (col1 String, col2 String, col3 String, col4 String, col5 string) + partitioned by (ds String, hr String) + skewed by (col2, col4) on (('466','val_466'),('287','val_287'),('82','val_82')) + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML +explain extended +insert overwrite table list_bucketing_mul_col partition (ds = '2008-04-08', hr = '11') +select 1, key, 1, value, 1 from src; + +insert overwrite table list_bucketing_mul_col partition (ds = '2008-04-08', hr = '11') +select 1, key, 1, value, 1 from src; + +-- check DML result +show partitions list_bucketing_mul_col; +desc formatted list_bucketing_mul_col partition (ds='2008-04-08', hr='11'); + +set hive.optimize.listbucketing=true; +explain extended +select * from list_bucketing_mul_col +where ds='2008-04-08' and hr='11' and col2 = "466" and col4 = "val_466" ORDER BY col2, col4, ds, hr; +select * from list_bucketing_mul_col +where ds='2008-04-08' and hr='11' and col2 = "466" and col4 = "val_466" ORDER BY col2, col4, ds, hr; + +explain extended +select * from list_bucketing_mul_col +where ds='2008-04-08' and hr='11' and col2 = "382" and col4 = "val_382" ORDER BY col2, col4, ds, hr; +select * from list_bucketing_mul_col +where ds='2008-04-08' and hr='11' and col2 = "382" and col4 = "val_382" ORDER BY col2, col4, ds, hr; + +drop table list_bucketing_mul_col; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_13.q new file mode 100644 index 0000000000000..4903604bd0063 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_13.q @@ -0,0 +1,36 @@ +set hive.mapred.supports.subdirectories=true; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Ensure skewed value map has escaped directory name + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- test where the skewed values are more than 1 say columns no. 2 and 4 in a table with 5 columns +create table list_bucketing_mul_col (col1 String, col2 String, col3 String, col4 String, col5 string) + partitioned by (ds String, hr String) + skewed by (col2, col4) on (('466','val_466'),('287','val_287'),('82','val_82')) + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML +explain extended +insert overwrite table list_bucketing_mul_col partition (ds = '2008-04-08', hr = '2013-01-23+18:00:99') +select 1, key, 1, value, 1 from src; + +insert overwrite table list_bucketing_mul_col partition (ds = '2008-04-08', hr = '2013-01-23+18:00:99') +select 1, key, 1, value, 1 from src; + +-- check DML result +show partitions list_bucketing_mul_col; +desc formatted list_bucketing_mul_col partition (ds='2008-04-08', hr='2013-01-23+18:00:99'); + +set hive.optimize.listbucketing=true; +explain extended +select * from list_bucketing_mul_col +where ds='2008-04-08' and hr='2013-01-23+18:00:99' and col2 = "466" and col4 = "val_466" ORDER BY col2, col4, ds, hr; +select * from list_bucketing_mul_col +where ds='2008-04-08' and hr='2013-01-23+18:00:99' and col2 = "466" and col4 = "val_466" ORDER BY col2, col4, ds, hr; + +drop table list_bucketing_mul_col; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_2.q new file mode 100644 index 0000000000000..3a39f42b2a77d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_2.q @@ -0,0 +1,71 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.smallfiles.avgsize=200; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.stats.reliable=true; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- list bucketing DML: static partition. multiple skewed columns. +-- ds=2008-04-08/hr=11/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME: +-- 5263 000000_0 +-- 5263 000001_0 +-- ds=2008-04-08/hr=11/key=103/value=val_103: +-- 99 000000_0 +-- 99 000001_0 +-- ds=2008-04-08/hr=11/key=484/value=val_484: +-- 87 000000_0 +-- 87 000001_0 + +-- create a skewed table +create table list_bucketing_static_part (key String, value String) + partitioned by (ds String, hr String) + skewed by (key, value) on (('484','val_484'),('51','val_14'),('103','val_103')) + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML without merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_static_part; +desc formatted list_bucketing_static_part partition (ds='2008-04-08', hr='11'); + +select count(1) from srcpart where ds = '2008-04-08'; +select count(*) from list_bucketing_static_part; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.optimize.listbucketing=true; +explain extended +select * from list_bucketing_static_part where ds = '2008-04-08' and hr = '11' and key = '484' and value = 'val_484' ORDER BY key, value, ds, hr; +select * from list_bucketing_static_part where ds = '2008-04-08' and hr = '11' and key = '484' and value = 'val_484' ORDER BY key, value, ds, hr; +select * from srcpart where ds = '2008-04-08' and key = '484' and value = 'val_484' ORDER BY key, value; + +-- 51 and val_51 in the table so skewed data for 51 and val_14 should be none +-- but query should succeed for 51 or 51 and val_14 +select * from srcpart where ds = '2008-04-08' and key = '51' ORDER BY key, value; +select * from list_bucketing_static_part where key = '51' ORDER BY key, value, ds, hr; +select * from srcpart where ds = '2008-04-08' and key = '51' and value = 'val_14' ORDER BY key, value; +select * from list_bucketing_static_part where key = '51' and value = 'val_14' ORDER BY key, value, ds, hr; + +-- queries with < <= > >= should work for skewed test although we don't benefit from pruning +select count(1) from srcpart where ds = '2008-04-08' and key < '51'; +select count(1) from list_bucketing_static_part where key < '51'; +select count(1) from srcpart where ds = '2008-04-08' and key <= '51'; +select count(1) from list_bucketing_static_part where key <= '51'; +select count(1) from srcpart where ds = '2008-04-08' and key > '51'; +select count(1) from list_bucketing_static_part where key > '51'; +select count(1) from srcpart where ds = '2008-04-08' and key >= '51'; +select count(1) from list_bucketing_static_part where key >= '51'; + +-- clean up +drop table list_bucketing_static_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_3.q new file mode 100644 index 0000000000000..a43613cad5e8a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_3.q @@ -0,0 +1,33 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- list bucketing DML : static partition and 2 stage query plan. + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- create a skewed table +create table list_bucketing_static_part (key String, value String) partitioned by (ds String, hr String) skewed by (key) on ("484") stored as DIRECTORIES; + +-- list bucketing DML +explain extended +insert overwrite table list_bucketing_static_part partition (ds='2008-04-08', hr='11') select key, value from srcpart where ds='2008-04-08'; +insert overwrite table list_bucketing_static_part partition (ds='2008-04-08', hr='11') select key, value from srcpart where ds='2008-04-08'; + +-- check DML result +desc formatted list_bucketing_static_part partition (ds='2008-04-08', hr='11'); + +select count(1) from srcpart where ds='2008-04-08'; +select count(1) from list_bucketing_static_part where ds='2008-04-08'; + +select key, value from srcpart where ds='2008-04-08' and hr='11' and key = "484"; +set hive.optimize.listbucketing=true; +explain extended +select key, value from list_bucketing_static_part where ds='2008-04-08' and hr='11' and key = "484"; +select key, value from list_bucketing_static_part where ds='2008-04-08' and hr='11' and key = "484"; +-- clean up resources +drop table list_bucketing_static_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_4.q new file mode 100644 index 0000000000000..918c817e49eff --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_4.q @@ -0,0 +1,71 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.smallfiles.avgsize=200; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- list bucketing DML: static partition. multiple skewed columns. merge. +-- ds=2008-04-08/hr=11/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME: +-- 5263 000000_0 +-- 5263 000001_0 +-- ds=2008-04-08/hr=11/key=103/value=val_103: +-- 99 000000_0 +-- 99 000001_0 +-- after merge +-- 142 000000_0 +-- ds=2008-04-08/hr=11/key=484/value=val_484: +-- 87 000000_0 +-- 87 000001_0 +-- after merge +-- 118 000001_0 + +-- create a skewed table +create table list_bucketing_static_part (key String, value String) + partitioned by (ds String, hr String) + skewed by (key, value) on (('484','val_484'),('51','val_14'),('103','val_103')) + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML without merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_static_part; +desc formatted list_bucketing_static_part partition (ds='2008-04-08', hr='11'); + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +-- list bucketing DML with merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_static_part; +desc formatted list_bucketing_static_part partition (ds='2008-04-08', hr='11'); + +select count(1) from srcpart where ds = '2008-04-08'; +select count(*) from list_bucketing_static_part; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.optimize.listbucketing=true; +explain extended +select * from list_bucketing_static_part where ds = '2008-04-08' and hr = '11' and key = '484' and value = 'val_484' ORDER BY key, value, ds, hr; +select * from list_bucketing_static_part where ds = '2008-04-08' and hr = '11' and key = '484' and value = 'val_484' ORDER BY key, value, ds, hr; +select * from srcpart where ds = '2008-04-08' and key = '484' and value = 'val_484' ORDER BY key, value; + +-- clean up +drop table list_bucketing_static_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_5.q new file mode 100644 index 0000000000000..5ea2e62551a66 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_5.q @@ -0,0 +1,38 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- list bucketing DML: multiple skewed columns. 2 stages + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- create a skewed table +create table list_bucketing_dynamic_part (key String, value String) +partitioned by (ds String, hr String) +skewed by (key, value) on (('484','val_484'),('51','val_14'),('103','val_103')) +stored as DIRECTORIES; + +-- list bucketing DML +explain extended +insert overwrite table list_bucketing_dynamic_part partition (ds='2008-04-08', hr) select key, value, hr from srcpart where ds='2008-04-08'; +insert overwrite table list_bucketing_dynamic_part partition (ds='2008-04-08', hr) select key, value, hr from srcpart where ds='2008-04-08'; + +-- check DML result +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='11'); +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='12'); + +select count(1) from srcpart where ds='2008-04-08'; +select count(1) from list_bucketing_dynamic_part where ds='2008-04-08'; + +select key, value from srcpart where ds='2008-04-08' and key = "103" and value ="val_103" ORDER BY key, value; +set hive.optimize.listbucketing=true; +explain extended +select key, value, ds, hr from list_bucketing_dynamic_part where ds='2008-04-08' and key = "103" and value ="val_103" ORDER BY key, value, ds, hr; +select key, value, ds, hr from list_bucketing_dynamic_part where ds='2008-04-08' and key = "103" and value ="val_103" ORDER BY key, value, ds, hr; + +-- clean up resources +drop table list_bucketing_dynamic_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_6.q new file mode 100644 index 0000000000000..d50e159277eb8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_6.q @@ -0,0 +1,97 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.smallfiles.avgsize=200; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- list bucketing DML: dynamic partition. multiple skewed columns. merge. +-- The following explains merge example used in this test case +-- DML will generated 2 partitions +-- ds=2008-04-08/hr=a1 +-- ds=2008-04-08/hr=b1 +-- without merge, each partition has more files +-- ds=2008-04-08/hr=a1 has 2 files +-- ds=2008-04-08/hr=b1 has 6 files +-- with merge each partition has more files +-- ds=2008-04-08/hr=a1 has 1 files +-- ds=2008-04-08/hr=b1 has 4 files +-- The following shows file size and name in each directory +-- hr=a1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME: +-- without merge +-- 155 000000_0 +-- 155 000001_0 +-- with merge +-- 254 000000_0 +-- hr=b1/key=103/value=val_103: +-- without merge +-- 99 000000_0 +-- 99 000001_0 +-- with merge +-- 142 000001_0 +-- hr=b1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME: +-- without merge +-- 5181 000000_0 +-- 5181 000001_0 +-- with merge +-- 5181 000000_0 +-- 5181 000001_0 +-- hr=b1/key=484/value=val_484 +-- without merge +-- 87 000000_0 +-- 87 000001_0 +-- with merge +-- 118 000002_0 + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- create a skewed table +create table list_bucketing_dynamic_part (key String, value String) + partitioned by (ds String, hr String) + skewed by (key, value) on (('484','val_484'),('51','val_14'),('103','val_103')) + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML without merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_dynamic_part; +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='a1'); +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='b1'); + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +-- list bucketing DML with merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_dynamic_part; +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='a1'); +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='b1'); + +select count(1) from srcpart where ds = '2008-04-08'; +select count(*) from list_bucketing_dynamic_part; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.optimize.listbucketing=true; +explain extended +select * from list_bucketing_dynamic_part where key = '484' and value = 'val_484'; +select * from list_bucketing_dynamic_part where key = '484' and value = 'val_484'; +select * from srcpart where ds = '2008-04-08' and key = '484' and value = 'val_484' order by key, value, ds, hr; + +-- clean up +drop table list_bucketing_dynamic_part; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_7.q new file mode 100644 index 0000000000000..f71e80fa2a099 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_7.q @@ -0,0 +1,70 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.smallfiles.avgsize=200; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.merge.rcfile.block.level=true; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- list bucketing DML : dynamic partition (one level) , merge , one skewed column +-- DML without merge files mixed with small and big files: +-- ds=2008-04-08/hr=a1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/ +-- 155 000000_0 +-- ds=2008-04-08/hr=b1/key=484 +-- 87 000000_0 +-- 87 000001_0 +-- ds=2008-04-08/hr=b1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/ +-- 5201 000000_0 +-- 5201 000001_0 +-- DML with merge will merge small files + +-- skewed table +CREATE TABLE list_bucketing_dynamic_part (key String, value STRING) + PARTITIONED BY (ds string, hr string) + skewed by (key) on ('484') + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML without merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_dynamic_part; +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='a1'); +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='b1'); + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +-- list bucketing DML with merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_dynamic_part; +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='a1'); +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='b1'); + +select count(1) from srcpart where ds = '2008-04-08'; +select count(*) from list_bucketing_dynamic_part; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +explain extended +select * from list_bucketing_dynamic_part where key = '484' and value = 'val_484'; +select * from list_bucketing_dynamic_part where key = '484' and value = 'val_484'; +select * from srcpart where ds = '2008-04-08' and key = '484' and value = 'val_484' order by hr; + +-- clean up +drop table list_bucketing_dynamic_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_8.q new file mode 100644 index 0000000000000..9e81b8d585e6f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_8.q @@ -0,0 +1,90 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.smallfiles.avgsize=200; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- list bucketing alter table ... concatenate: +-- Use list bucketing DML to generate mutilple files in partitions by turning off merge +-- dynamic partition. multiple skewed columns. merge. +-- The following explains merge example used in this test case +-- DML will generated 2 partitions +-- ds=2008-04-08/hr=a1 +-- ds=2008-04-08/hr=b1 +-- without merge, each partition has more files +-- ds=2008-04-08/hr=a1 has 2 files +-- ds=2008-04-08/hr=b1 has 6 files +-- with merge each partition has more files +-- ds=2008-04-08/hr=a1 has 1 files +-- ds=2008-04-08/hr=b1 has 4 files +-- The following shows file size and name in each directory +-- hr=a1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME: +-- without merge +-- 155 000000_0 +-- 155 000001_0 +-- with merge +-- 254 000000_0 +-- hr=b1/key=103/value=val_103: +-- without merge +-- 99 000000_0 +-- 99 000001_0 +-- with merge +-- 142 000001_0 +-- hr=b1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME: +-- without merge +-- 5181 000000_0 +-- 5181 000001_0 +-- with merge +-- 5181 000000_0 +-- 5181 000001_0 +-- hr=b1/key=484/value=val_484 +-- without merge +-- 87 000000_0 +-- 87 000001_0 +-- with merge +-- 118 000002_0 + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- create a skewed table +create table list_bucketing_dynamic_part (key String, value String) + partitioned by (ds String, hr String) + skewed by (key, value) on (('484','val_484'),('51','val_14'),('103','val_103')) + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML without merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_dynamic_part; +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='a1'); +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='b1'); + +set hive.merge.current.job.concatenate.list.bucketing=true; +-- concatenate the partition and it will merge files +alter table list_bucketing_dynamic_part partition (ds='2008-04-08', hr='b1') concatenate; + +desc formatted list_bucketing_dynamic_part partition (ds='2008-04-08', hr='b1'); + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select count(1) from srcpart where ds = '2008-04-08'; +select count(*) from list_bucketing_dynamic_part; +explain extended +select * from list_bucketing_dynamic_part where key = '484' and value = 'val_484'; +select * from list_bucketing_dynamic_part where key = '484' and value = 'val_484'; +select * from srcpart where ds = '2008-04-08' and key = '484' and value = 'val_484' order by hr; + +-- clean up +drop table list_bucketing_dynamic_part; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_9.q new file mode 100644 index 0000000000000..1b69a9a0d39ef --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_dml_9.q @@ -0,0 +1,71 @@ +set hive.mapred.supports.subdirectories=true; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.smallfiles.avgsize=200; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- list bucketing DML: static partition. multiple skewed columns. merge. +-- ds=2008-04-08/hr=11/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME: +-- 5263 000000_0 +-- 5263 000001_0 +-- ds=2008-04-08/hr=11/key=103: +-- 99 000000_0 +-- 99 000001_0 +-- after merge +-- 142 000000_0 +-- ds=2008-04-08/hr=11/key=484: +-- 87 000000_0 +-- 87 000001_0 +-- after merge +-- 118 000001_0 + +-- create a skewed table +create table list_bucketing_static_part (key String, value String) + partitioned by (ds String, hr String) + skewed by (key) on ('484','103') + stored as DIRECTORIES + STORED AS RCFILE; + +-- list bucketing DML without merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_static_part; +desc formatted list_bucketing_static_part partition (ds='2008-04-08', hr='11'); + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +-- list bucketing DML with merge. use bucketize to generate a few small files. +explain extended +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +insert overwrite table list_bucketing_static_part partition (ds = '2008-04-08', hr = '11') +select key, value from srcpart where ds = '2008-04-08'; + +-- check DML result +show partitions list_bucketing_static_part; +desc formatted list_bucketing_static_part partition (ds='2008-04-08', hr='11'); + +select count(1) from srcpart where ds = '2008-04-08'; +select count(*) from list_bucketing_static_part; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.optimize.listbucketing=true; +explain extended +select * from list_bucketing_static_part where ds = '2008-04-08' and hr = '11' and key = '484' and value = 'val_484' ORDER BY key, value, ds, hr; +select * from list_bucketing_static_part where ds = '2008-04-08' and hr = '11' and key = '484' and value = 'val_484' ORDER BY key, value, ds, hr; +select * from srcpart where ds = '2008-04-08' and key = '484' and value = 'val_484' ORDER BY key, value, ds, hr; + +-- clean up +drop table list_bucketing_static_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_1.q new file mode 100644 index 0000000000000..48b1ff3ac81a7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_1.q @@ -0,0 +1,56 @@ +set hive.mapred.supports.subdirectories=true; +set hive.optimize.listbucketing=true; +set mapred.input.dir.recursive=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- List bucketing query logic test case. We simulate the directory structure by DML here. +-- Test condition: +-- 1. where clause has multiple skewed columns +-- 2. where clause doesn't have non-skewed column +-- 3. where clause has one and operator +-- Test focus: +-- 1. basic list bucketing query work +-- Test result: +-- 1. pruner only pick up right directory +-- 2. query result is right + +-- create a skewed table +create table fact_daily (key String, value String) +partitioned by (ds String, hr String) +skewed by (key, value) on (('484','val_484'),('238','val_238')) +stored as DIRECTORIES; + +insert overwrite table fact_daily partition (ds = '1', hr = '4') +select key, value from src; + +describe formatted fact_daily PARTITION (ds = '1', hr='4'); + +SELECT count(1) FROM fact_daily WHERE ds='1' and hr='4'; + +-- pruner only pick up skewed-value directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT key FROM fact_daily WHERE ( ds='1' and hr='4') and (key='484' and value= 'val_484'); +-- List Bucketing Query +SELECT key FROM fact_daily WHERE ( ds='1' and hr='4') and (key='484' and value= 'val_484'); + +-- pruner only pick up skewed-value directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT key,value FROM fact_daily WHERE ( ds='1' and hr='4') and (key='238' and value= 'val_238'); +-- List Bucketing Query +SELECT key,value FROM fact_daily WHERE ( ds='1' and hr='4') and (key='238' and value= 'val_238'); + +-- pruner only pick up default directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT key FROM fact_daily WHERE ( ds='1' and hr='4') and (value = "3"); +-- List Bucketing Query +SELECT key FROM fact_daily WHERE ( ds='1' and hr='4') and (value = "3"); + +-- pruner only pick up default directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT key,value FROM fact_daily WHERE ( ds='1' and hr='4') and key = '495'; +-- List Bucketing Query +SELECT key,value FROM fact_daily WHERE ( ds='1' and hr='4') and key = '369'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_2.q new file mode 100644 index 0000000000000..a364168a6e3be --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_2.q @@ -0,0 +1,50 @@ + set hive.mapred.supports.subdirectories=true; +set hive.optimize.listbucketing=true; +set mapred.input.dir.recursive=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- List bucketing query logic test case. We simulate the directory structure by DML here. +-- Test condition: +-- 1. where clause has multiple skewed columns and non-skewed columns +-- 3. where clause has a few operators +-- Test focus: +-- 1. basic list bucketing query work +-- Test result: +-- 1. pruner only pick up right directory +-- 2. query result is right + +-- create a skewed table +create table fact_daily (key String, value String) +partitioned by (ds String, hr String) +skewed by (key, value) on (('484','val_484'),('238','val_238')) +stored as DIRECTORIES; + +insert overwrite table fact_daily partition (ds = '1', hr = '4') +select key, value from src; + +describe formatted fact_daily PARTITION (ds = '1', hr='4'); + +SELECT count(1) FROM fact_daily WHERE ds='1' and hr='4'; + +-- pruner only pick up default directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT key, value FROM fact_daily WHERE ds='1' and hr='4' and value= 'val_484' ORDER BY key, value; +-- List Bucketing Query +SELECT key, value FROM fact_daily WHERE ds='1' and hr='4' and value= 'val_484' ORDER BY key, value; + +-- pruner only pick up default directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT key FROM fact_daily WHERE ds='1' and hr='4' and key= '406' ORDER BY key; +-- List Bucketing Query +SELECT key, value FROM fact_daily WHERE ds='1' and hr='4' and key= '406' ORDER BY key; + +-- pruner only pick up skewed-value directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT key, value FROM fact_daily WHERE ds='1' and hr='4' and ( (key='484' and value ='val_484') or (key='238' and value= 'val_238')) ORDER BY key, value; +-- List Bucketing Query +SELECT key, value FROM fact_daily WHERE ds='1' and hr='4' and ( (key='484' and value ='val_484') or (key='238' and value= 'val_238')) ORDER BY key, value; + +-- clean up +drop table fact_daily; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_3.q new file mode 100644 index 0000000000000..2d1193deff0cc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_multiskew_3.q @@ -0,0 +1,57 @@ +set hive.mapred.supports.subdirectories=true; +set hive.optimize.listbucketing=true; +set mapred.input.dir.recursive=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- List bucketing query logic test case. We simulate the directory structure by DML here. +-- Test condition: +-- 1. where clause has multiple skewed columns and non-skewed columns +-- 3. where clause has a few operators +-- Test focus: +-- 1. query works for on partition level. +-- A table can mix up non-skewed partition and skewed partition +-- Even for skewed partition, it can have different skewed information. +-- Test result: +-- 1. pruner only pick up right directory +-- 2. query result is right + +-- create a skewed table +create table fact_daily (key String, value String) +partitioned by (ds String, hr String) ; + +-- partition no skew +insert overwrite table fact_daily partition (ds = '1', hr = '1') +select key, value from src; +describe formatted fact_daily PARTITION (ds = '1', hr='1'); + +-- partition. skewed value is 484/238 +alter table fact_daily skewed by (key, value) on (('484','val_484'),('238','val_238')) stored as DIRECTORIES; +insert overwrite table fact_daily partition (ds = '1', hr = '2') +select key, value from src; +describe formatted fact_daily PARTITION (ds = '1', hr='2'); + +-- another partition. skewed value is 327 +alter table fact_daily skewed by (key, value) on (('327','val_327')) stored as DIRECTORIES; +insert overwrite table fact_daily partition (ds = '1', hr = '3') +select key, value from src; +describe formatted fact_daily PARTITION (ds = '1', hr='3'); + +-- query non-skewed partition +explain extended +select * from fact_daily where ds = '1' and hr='1' and key='145'; +select * from fact_daily where ds = '1' and hr='1' and key='145'; +explain extended +select count(*) from fact_daily where ds = '1' and hr='1'; +select count(*) from fact_daily where ds = '1' and hr='1'; + +-- query skewed partition +explain extended +SELECT * FROM fact_daily WHERE ds='1' and hr='2' and (key='484' and value='val_484'); +SELECT * FROM fact_daily WHERE ds='1' and hr='2' and (key='484' and value='val_484'); + +-- query another skewed partition +explain extended +SELECT * FROM fact_daily WHERE ds='1' and hr='3' and (key='327' and value='val_327'); +SELECT * FROM fact_daily WHERE ds='1' and hr='3' and (key='327' and value='val_327'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_1.q new file mode 100644 index 0000000000000..7769fb7af75d2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_1.q @@ -0,0 +1,61 @@ +set hive.mapred.supports.subdirectories=true; +set hive.optimize.listbucketing=true; +set mapred.input.dir.recursive=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- List bucketing query logic test case. +-- Test condition: +-- 1. where clause has only one skewed column +-- 2. where clause doesn't have non-skewed column +-- 3. where clause has one and operator +-- Test result: +-- 1. pruner only pick up right directory +-- 2. query result is right + +-- create 2 tables: fact_daily and fact_tz +-- fact_daily will be used for list bucketing query +-- fact_tz is a table used to prepare data and test directories +CREATE TABLE fact_daily(x int) PARTITIONED BY (ds STRING); +CREATE TABLE fact_tz(x int) PARTITIONED BY (ds STRING, hr STRING) +LOCATION '${hiveconf:hive.metastore.warehouse.dir}/fact_tz'; + +-- create /fact_tz/ds=1/hr=1 directory +INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='1') +SELECT key FROM src WHERE key=484; + +-- create /fact_tz/ds=1/hr=2 directory +INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='2') +SELECT key+11 FROM src WHERE key=484; + +dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1; +dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/hr=1 ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/x=484; +dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/hr=2 ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; +dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1; + +-- switch fact_daily to skewed table and point its location to /fact_tz/ds=1 +alter table fact_daily skewed by (x) on (484); +ALTER TABLE fact_daily SET TBLPROPERTIES('EXTERNAL'='TRUE'); +ALTER TABLE fact_daily ADD PARTITION (ds='1') +LOCATION '${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1'; + +-- set List Bucketing location map +alter table fact_daily PARTITION (ds = '1') set skewed location (484='${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/x=484','HIVE_DEFAULT_LIST_BUCKETING_KEY'='${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME'); +describe formatted fact_daily PARTITION (ds = '1'); + +SELECT * FROM fact_daily WHERE ds='1' ORDER BY x; + +-- pruner only pick up skewed-value directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT x FROM fact_daily WHERE ds='1' and x=484; +-- List Bucketing Query +SELECT x FROM fact_daily WHERE ds='1' and x=484; + +-- pruner only pick up default directory since x equal to non-skewed value +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT x FROM fact_daily WHERE ds='1' and x=495; +-- List Bucketing Query +SELECT x FROM fact_daily WHERE ds='1' and x=495; +explain extended SELECT x FROM fact_daily WHERE ds='1' and x=1; +SELECT x FROM fact_daily WHERE ds='1' and x=1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_2.q new file mode 100644 index 0000000000000..6a6945d4fdf9e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_2.q @@ -0,0 +1,73 @@ +set hive.mapred.supports.subdirectories=true; +set hive.optimize.listbucketing=true; +set mapred.input.dir.recursive=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- List bucketing query logic test case. +-- Test condition: +-- 1. where clause has only one skewed column +-- 2. where clause doesn't have non-skewed column +-- Test focus: +-- 1. list bucketing query logic works fine for subquery +-- Test result: +-- 1. pruner only pick up right directory +-- 2. query result is right + +-- create 2 tables: fact_daily and fact_tz +-- fact_daily will be used for list bucketing query +-- fact_tz is a table used to prepare data and test directories +CREATE TABLE fact_daily(x int, y STRING) PARTITIONED BY (ds STRING); +CREATE TABLE fact_tz(x int, y STRING) PARTITIONED BY (ds STRING, hr STRING) +LOCATION '${hiveconf:hive.metastore.warehouse.dir}/fact_tz'; + +-- create /fact_tz/ds=1/hr=1 directory +INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='1') +SELECT key, value FROM src WHERE key=484; + +-- create /fact_tz/ds=1/hr=2 directory +INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='2') +SELECT key+11, value FROM src WHERE key=484; + +dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1; +dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/hr=1 ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/x=484; +dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/hr=2 ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; +dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1; + +-- switch fact_daily to skewed table and point its location to /fact_tz/ds=1 +alter table fact_daily skewed by (x) on (484); +ALTER TABLE fact_daily SET TBLPROPERTIES('EXTERNAL'='TRUE'); +ALTER TABLE fact_daily ADD PARTITION (ds='1') +LOCATION '${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1'; + +-- set List Bucketing location map +alter table fact_daily PARTITION (ds = '1') set skewed location (484='${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/x=484','HIVE_DEFAULT_LIST_BUCKETING_KEY'='${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME'); +describe formatted fact_daily PARTITION (ds = '1'); + +SELECT * FROM fact_daily WHERE ds='1' ORDER BY x, y; + +-- The first subquery +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended select x from (select x from fact_daily where ds = '1') subq where x = 484; +-- List Bucketing Query +select x from (select * from fact_daily where ds = '1') subq where x = 484; + +-- The second subquery +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended select x1, y1 from(select x as x1, y as y1 from fact_daily where ds ='1') subq where x1 = 484 ORDER BY x1, y1; +-- List Bucketing Query +select x1, y1 from(select x as x1, y as y1 from fact_daily where ds ='1') subq where x1 = 484 ORDER BY x1, y1; + + +-- The third subquery +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended select y, count(1) from fact_daily where ds ='1' and x = 484 group by y; +-- List Bucketing Query +select y, count(1) from fact_daily where ds ='1' and x = 484 group by y; + +-- The fourth subquery +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended select x, c from (select x, count(1) as c from fact_daily where ds = '1' group by x) subq where x = 484;; +-- List Bucketing Query +select x, c from (select x, count(1) as c from fact_daily where ds = '1' group by x) subq where x = 484; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_3.q new file mode 100644 index 0000000000000..892b4c5d3d7cc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/list_bucket_query_oneskew_3.q @@ -0,0 +1,61 @@ +set hive.optimize.listbucketing=true; +set mapred.input.dir.recursive=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.mapred.supports.subdirectories=true; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +-- List bucketing query logic test case. +-- Test condition: +-- 1. where clause has single skewed columns and non-skewed columns +-- 3. where clause has a few operators +-- Test focus: +-- 1. basic list bucketing query works for not (equal) case +-- Test result: +-- 1. pruner only pick up right directory +-- 2. query result is right + +-- create 2 tables: fact_daily and fact_tz +-- fact_daily will be used for list bucketing query +-- fact_tz is a table used to prepare data and test directories +CREATE TABLE fact_daily(x int, y STRING, z STRING) PARTITIONED BY (ds STRING); +CREATE TABLE fact_tz(x int, y STRING, z STRING) PARTITIONED BY (ds STRING, hr STRING) +LOCATION '${hiveconf:hive.metastore.warehouse.dir}/fact_tz'; + +-- create /fact_tz/ds=1/hr=1 directory +INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='1') +SELECT key, value, value FROM src WHERE key=484; + +-- create /fact_tz/ds=1/hr=2 directory +INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='2') +SELECT key, value, value FROM src WHERE key=278 or key=86; + +-- create /fact_tz/ds=1/hr=3 directory +INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='3') +SELECT key, value, value FROM src WHERE key=238; + +dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1; +dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/hr=1 ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/x=484; +dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/hr=2 ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; +dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/hr=3 ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/x=238; +dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1; + +-- switch fact_daily to skewed table and point its location to /fact_tz/ds=1 +alter table fact_daily skewed by (x) on (484,238); +ALTER TABLE fact_daily SET TBLPROPERTIES('EXTERNAL'='TRUE'); +ALTER TABLE fact_daily ADD PARTITION (ds='1') +LOCATION '${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1'; + +-- set List Bucketing location map +alter table fact_daily PARTITION (ds = '1') set skewed location (484='${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/x=484', +238='${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/x=238', +'HIVE_DEFAULT_LIST_BUCKETING_KEY'='${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME'); +describe formatted fact_daily PARTITION (ds = '1'); + +SELECT * FROM fact_daily WHERE ds='1' ORDER BY x, y, z; + +-- pruner pick up right directory +-- explain plan shows which directory selected: Truncated Path -> Alias +explain extended SELECT x FROM fact_daily WHERE ds='1' and not (x = 86) ORDER BY x; +-- List Bucketing Query +SELECT x FROM fact_daily WHERE ds='1' and not (x = 86) ORDER BY x; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_decimal.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_decimal.q new file mode 100644 index 0000000000000..a6ad4b8485a26 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_decimal.q @@ -0,0 +1,3 @@ +EXPLAIN SELECT -1BD, 0BD, 1BD, 3.14BD, -3.14BD, 99999999999999999BD, 99999999999999999.9999999999999BD, 1E-99BD, 1E99BD FROM src LIMIT 1; + +SELECT -1BD, 0BD, 1BD, 3.14BD, -3.14BD, 99999999999999999BD, 99999999999999999.9999999999999BD, 1E-99BD, 1E99BD FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_double.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_double.q new file mode 100644 index 0000000000000..08836127b9958 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_double.q @@ -0,0 +1,3 @@ +EXPLAIN SELECT 3.14, -3.14, 3.14e8, 3.14e-8, -3.14e8, -3.14e-8, 3.14e+8, 3.14E8, 3.14E-8 FROM src LIMIT 1; +SELECT 3.14, -3.14, 3.14e8, 3.14e-8, -3.14e8, -3.14e-8, 3.14e+8, 3.14E8, 3.14E-8 FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_ints.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_ints.q new file mode 100644 index 0000000000000..9da622e246793 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_ints.q @@ -0,0 +1,3 @@ +EXPLAIN SELECT 100, 100Y, 100S, 100L FROM src LIMIT 1; + +SELECT 100, 100Y, 100S, 100L FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_string.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_string.q new file mode 100644 index 0000000000000..21f0890ada168 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/literal_string.q @@ -0,0 +1,13 @@ +EXPLAIN SELECT 'face''book', 'face' 'book', 'face' + 'book', + "face""book", "face" "book", "face" + "book", + 'face' 'bo' 'ok', 'face'"book", + "face"'book', 'facebook' FROM src LIMIT 1; + +SELECT 'face''book', 'face' 'book', 'face' + 'book', + "face""book", "face" "book", "face" + "book", + 'face' 'bo' 'ok', 'face'"book", + "face"'book', 'facebook' FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_binary_data.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_binary_data.q new file mode 100644 index 0000000000000..7da363183ccf6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_binary_data.q @@ -0,0 +1,13 @@ +CREATE TABLE mytable(key binary, value int) +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '9' +STORED AS TEXTFILE; +-- this query loads native binary data, stores in a table and then queries it. Note that string.txt contains binary data. Also uses transform clause and then length udf. + +LOAD DATA LOCAL INPATH '../data/files/string.txt' INTO TABLE mytable; + +create table dest1 (key binary, value int); + +insert overwrite table dest1 select transform(*) using 'cat' as key binary, value int from mytable; + +select key, value, length (key) from dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part1.q new file mode 100644 index 0000000000000..52b4937d4a9dd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part1.q @@ -0,0 +1,30 @@ +show partitions srcpart; + + + + +create table if not exists nzhang_part1 like srcpart; +create table if not exists nzhang_part2 like srcpart; +describe extended nzhang_part1; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; + +explain +from srcpart +insert overwrite table nzhang_part1 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08' +insert overwrite table nzhang_part2 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08'; + +from srcpart +insert overwrite table nzhang_part1 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08' +insert overwrite table nzhang_part2 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08'; + + +show partitions nzhang_part1; +show partitions nzhang_part2; + +select * from nzhang_part1 where ds is not null and hr is not null; +select * from nzhang_part2 where ds is not null and hr is not null; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part10.q new file mode 100644 index 0000000000000..9517664675d69 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part10.q @@ -0,0 +1,24 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part10 like srcpart; +describe extended nzhang_part10; + +set hive.merge.mapfiles=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +explain +from srcpart +insert overwrite table nzhang_part10 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08'; + +from srcpart +insert overwrite table nzhang_part10 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08'; + + +show partitions nzhang_part10; + +select * from nzhang_part10 where ds is not null and hr is not null; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part11.q new file mode 100644 index 0000000000000..4cfbfe8eac003 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part11.q @@ -0,0 +1,17 @@ +show partitions srcpart; + + +create table if not exists nzhang_part like srcpart; +describe extended nzhang_part; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.exec.compress.output=true; +set hive.exec.dynamic.partition=true; + +insert overwrite table nzhang_part partition (ds="2010-03-03", hr) select key, value, hr from srcpart where ds is not null and hr is not null; + +select * from nzhang_part where ds = '2010-03-03' and hr = '11'; +select * from nzhang_part where ds = '2010-03-03' and hr = '12'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part12.q new file mode 100644 index 0000000000000..dd8bd530af43c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part12.q @@ -0,0 +1,19 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part12 like srcpart; +describe extended nzhang_part12; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.exec.dynamic.partition=true; + + +insert overwrite table nzhang_part12 partition (ds="2010-03-03", hr) select key, value, cast(hr*2 as int) from srcpart where ds is not null and hr is not null; + +show partitions nzhang_part12; + +select * from nzhang_part12 where ds is not null and hr is not null; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part13.q new file mode 100644 index 0000000000000..0b8d44f7cf597 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part13.q @@ -0,0 +1,37 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part13 like srcpart; +describe extended nzhang_part13; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.exec.dynamic.partition=true; + +explain +insert overwrite table nzhang_part13 partition (ds="2010-03-03", hr) +select * from ( + select key, value, '22' + from src + where key < 20 + union all + select key, value, '33' + from src + where key > 20 and key < 40) s; + +insert overwrite table nzhang_part13 partition (ds="2010-03-03", hr) +select * from ( + select key, value, '22' + from src + where key < 20 + union all + select key, value, '33' + from src + where key > 20 and key < 40) s; + +show partitions nzhang_part13; + +select * from nzhang_part13 where ds is not null and hr is not null; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part14.q new file mode 100644 index 0000000000000..ba3ce39cf7920 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part14.q @@ -0,0 +1,37 @@ +-- EXCLUDE_OS_WINDOWS +-- excluded on windows because of difference in file name encoding logic + +create table if not exists nzhang_part14 (key string) + partitioned by (value string); + +describe extended nzhang_part14; + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +explain +insert overwrite table nzhang_part14 partition(value) +select key, value from ( + select 'k1' as key, cast(null as string) as value from src limit 2 + union all + select 'k2' as key, '' as value from src limit 2 + union all + select 'k3' as key, ' ' as value from src limit 2 +) T; + +insert overwrite table nzhang_part14 partition(value) +select key, value from ( + select 'k1' as key, cast(null as string) as value from src limit 2 + union all + select 'k2' as key, '' as value from src limit 2 + union all + select 'k3' as key, ' ' as value from src limit 2 +) T; + + +show partitions nzhang_part14; + +select * from nzhang_part14 where value <> 'a' +order by key, value; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part14_win.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part14_win.q new file mode 100644 index 0000000000000..d32b539ae96ab --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part14_win.q @@ -0,0 +1,38 @@ +-- INCLUDE_OS_WINDOWS +-- included only on windows because of difference in file name encoding logic + + +create table if not exists nzhang_part14 (key string) + partitioned by (value string); + +describe extended nzhang_part14; + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +explain +insert overwrite table nzhang_part14 partition(value) +select key, value from ( + select 'k1' as key, cast(null as string) as value from src limit 2 + union all + select 'k2' as key, '' as value from src limit 2 + union all + select 'k3' as key, ' ' as value from src limit 2 +) T; + +insert overwrite table nzhang_part14 partition(value) +select key, value from ( + select 'k1' as key, cast(null as string) as value from src limit 2 + union all + select 'k2' as key, '' as value from src limit 2 + union all + select 'k3' as key, ' ' as value from src limit 2 +) T; + + +show partitions nzhang_part14; + +select * from nzhang_part14 where value <> 'a' +order by key, value; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part15.q new file mode 100644 index 0000000000000..3c3310882a617 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part15.q @@ -0,0 +1,13 @@ + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table if not exists load_dyn_part15_test (key string) + partitioned by (part_key string); + +show partitions load_dyn_part15_test; + +INSERT OVERWRITE TABLE load_dyn_part15_test PARTITION(part_key) +SELECT key, part_key FROM src LATERAL VIEW explode(array("1","{2","3]")) myTable AS part_key; + +show partitions load_dyn_part15_test; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part2.q new file mode 100644 index 0000000000000..03aa5df03501f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part2.q @@ -0,0 +1,23 @@ + +create table if not exists nzhang_part_bucket (key string, value string) + partitioned by (ds string, hr string) + clustered by (key) into 10 buckets; + +describe extended nzhang_part_bucket; + +set hive.merge.mapfiles=false; +set hive.enforce.bucketing=true; +set hive.exec.dynamic.partition=true; + +explain +insert overwrite table nzhang_part_bucket partition (ds='2010-03-23', hr) select key, value, hr from srcpart where ds is not null and hr is not null; + +insert overwrite table nzhang_part_bucket partition (ds='2010-03-23', hr) select key, value, hr from srcpart where ds is not null and hr is not null; + +show partitions nzhang_part_bucket; + +select * from nzhang_part_bucket where ds='2010-03-23' and hr='11' order by key; +select * from nzhang_part_bucket where ds='2010-03-23' and hr='12' order by key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part3.q new file mode 100644 index 0000000000000..e4c8c17f63048 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part3.q @@ -0,0 +1,19 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part3 like srcpart; +describe extended nzhang_part3; + +set hive.merge.mapfiles=false; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; + +explain +insert overwrite table nzhang_part3 partition (ds, hr) select key, value, ds, hr from srcpart where ds is not null and hr is not null; + +insert overwrite table nzhang_part3 partition (ds, hr) select key, value, ds, hr from srcpart where ds is not null and hr is not null; + +select * from nzhang_part3 where ds is not null and hr is not null; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part4.q new file mode 100644 index 0000000000000..3f3a0c8d51b41 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part4.q @@ -0,0 +1,24 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part4 like srcpart; +describe extended nzhang_part4; + +set hive.merge.mapfiles=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +insert overwrite table nzhang_part4 partition (ds='2008-04-08', hr='existing_value') select key, value from src; + +explain +insert overwrite table nzhang_part4 partition (ds, hr) select key, value, ds, hr from srcpart where ds is not null and hr is not null; + +insert overwrite table nzhang_part4 partition (ds, hr) select key, value, ds, hr from srcpart where ds is not null and hr is not null; + +show partitions nzhang_part4; +select * from nzhang_part4 where ds='2008-04-08' and hr is not null; + +select * from nzhang_part4 where ds is not null and hr is not null; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part5.q new file mode 100644 index 0000000000000..5780f5d43911b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part5.q @@ -0,0 +1,22 @@ + + +create table if not exists nzhang_part5 (key string) partitioned by (value string); +describe extended nzhang_part5; + +set hive.merge.mapfiles=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.max.dynamic.partitions=2000; +set hive.exec.max.dynamic.partitions.pernode=2000; + +explain +insert overwrite table nzhang_part5 partition (value) select key, value from src; + +insert overwrite table nzhang_part5 partition (value) select key, value from src; + +show partitions nzhang_part5; + +select * from nzhang_part5 where value='val_0'; +select * from nzhang_part5 where value='val_2'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part6.q new file mode 100644 index 0000000000000..b5e85aebf4ade --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part6.q @@ -0,0 +1,16 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part6 like srcpart; +describe extended nzhang_part6; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.exec.dynamic.partition=true; + +insert overwrite table nzhang_part6 partition (ds="2010-03-03", hr) select key, value, hr from srcpart where ds is not null and hr is not null; + +select * from nzhang_part6 where ds = '2010-03-03' and hr = '11'; +select * from nzhang_part6 where ds = '2010-03-03' and hr = '12'; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part7.q new file mode 100644 index 0000000000000..b9e1da032660b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part7.q @@ -0,0 +1,14 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part7 like srcpart; +describe extended nzhang_part7; + + +insert overwrite table nzhang_part7 partition (ds='2010-03-03', hr='12') select key, value from srcpart where ds = '2008-04-08' and hr = '12'; + +show partitions nzhang_part7; + +select * from nzhang_part7 where ds is not null and hr is not null; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part8.q new file mode 100644 index 0000000000000..8073500c0bf07 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part8.q @@ -0,0 +1,24 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part8 like srcpart; +describe extended nzhang_part8; + +set hive.merge.mapfiles=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +explain extended +from srcpart +insert overwrite table nzhang_part8 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08' +insert overwrite table nzhang_part8 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08'; + +from srcpart +insert overwrite table nzhang_part8 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08' +insert overwrite table nzhang_part8 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08'; + +show partitions nzhang_part8; + +select * from nzhang_part8 where ds is not null and hr is not null; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part9.q new file mode 100644 index 0000000000000..01fa596cdf04a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_dyn_part9.q @@ -0,0 +1,23 @@ +show partitions srcpart; + + + +create table if not exists nzhang_part9 like srcpart; +describe extended nzhang_part9; + +set hive.merge.mapfiles=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +explain +from srcpart +insert overwrite table nzhang_part9 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08'; + +from srcpart +insert overwrite table nzhang_part9 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08'; + + +show partitions nzhang_part9; + +select * from nzhang_part9 where ds is not null and hr is not null; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_exist_part_authsuccess.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_exist_part_authsuccess.q new file mode 100644 index 0000000000000..6d2a8b82d33c1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_exist_part_authsuccess.q @@ -0,0 +1,5 @@ +create table hive_test_src ( col1 string ) partitioned by (pcol1 string) stored as textfile; +alter table hive_test_src add partition (pcol1 = 'test_part'); +set hive.security.authorization.enabled=true; +grant Update on table hive_test_src to user hive_test_user; +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src partition (pcol1 = 'test_part'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_file_with_space_in_the_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_file_with_space_in_the_name.q new file mode 100644 index 0000000000000..3b8951a1a782f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_file_with_space_in_the_name.q @@ -0,0 +1,5 @@ +-- test for loading into tables with the file with space in the name + + +CREATE TABLE load_file_with_space_in_the_name(name STRING, age INT); +LOAD DATA LOCAL INPATH '../data/files/person age.txt' INTO TABLE load_file_with_space_in_the_name; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_fs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_fs.q new file mode 100644 index 0000000000000..c1ac29c172f60 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_fs.q @@ -0,0 +1,21 @@ + +create table load_overwrite (key string, value string) stored as textfile location 'file:${system:test.tmp.dir}/load_overwrite'; +create table load_overwrite2 (key string, value string) stored as textfile location 'file:${system:test.tmp.dir}/load2_overwrite2'; + +load data local inpath '../data/files/kv1.txt' into table load_overwrite; +load data local inpath '../data/files/kv2.txt' into table load_overwrite; +load data local inpath '../data/files/kv3.txt' into table load_overwrite; + +show table extended like load_overwrite; +desc extended load_overwrite; +select count(*) from load_overwrite; + +load data inpath '${system:test.tmp.dir}/load_overwrite/kv*.txt' overwrite into table load_overwrite2; + +show table extended like load_overwrite2; +desc extended load_overwrite2; +select count(*) from load_overwrite2; + +load data inpath '${system:test.tmp.dir}/load2_*' overwrite into table load_overwrite; +show table extended like load_overwrite; +select count(*) from load_overwrite; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_fs2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_fs2.q new file mode 100644 index 0000000000000..7255324d1653d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_fs2.q @@ -0,0 +1,20 @@ +-- HIVE-3300 [jira] LOAD DATA INPATH fails if a hdfs file with same name is added to table +-- 'loader' table is used only for uploading kv1.txt to HDFS (!hdfs -put is not working on minMRDriver) + +create table result (key string, value string); +create table loader (key string, value string); + +load data local inpath '../data/files/kv1.txt' into table loader; + +load data inpath '/build/ql/test/data/warehouse/loader/kv1.txt' into table result; +show table extended like result; + +load data local inpath '../data/files/kv1.txt' into table loader; + +load data inpath '/build/ql/test/data/warehouse/loader/kv1.txt' into table result; +show table extended like result; + +load data local inpath '../data/files/kv1.txt' into table loader; + +load data inpath '/build/ql/test/data/warehouse/loader/kv1.txt' into table result; +show table extended like result; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_hdfs_file_with_space_in_the_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_hdfs_file_with_space_in_the_name.q new file mode 100644 index 0000000000000..cce297cca46db --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_hdfs_file_with_space_in_the_name.q @@ -0,0 +1,9 @@ +dfs -mkdir hdfs:///tmp/test/; + +dfs -copyFromLocal ../data/files hdfs:///tmp/test/.; + +CREATE TABLE load_file_with_space_in_the_name(name STRING, age INT); +LOAD DATA INPATH 'hdfs:///tmp/test/files/person age.txt' INTO TABLE load_file_with_space_in_the_name; + +dfs -rmr hdfs:///tmp/test; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_nonpart_authsuccess.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_nonpart_authsuccess.q new file mode 100644 index 0000000000000..40d8210e57d2a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_nonpart_authsuccess.q @@ -0,0 +1,4 @@ +create table hive_test_src ( col1 string ) stored as textfile; +set hive.security.authorization.enabled=true; +grant Update on table hive_test_src to user hive_test_user; +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src ; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_overwrite.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_overwrite.q new file mode 100644 index 0000000000000..73853f15a94bb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_overwrite.q @@ -0,0 +1,15 @@ +create table load_overwrite like src; + +insert overwrite table load_overwrite select * from src; +show table extended like load_overwrite; +select count(*) from load_overwrite; + + +load data local inpath '../data/files/kv1.txt' into table load_overwrite; +show table extended like load_overwrite; +select count(*) from load_overwrite; + + +load data local inpath '../data/files/kv1.txt' overwrite into table load_overwrite; +show table extended like load_overwrite; +select count(*) from load_overwrite; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_part_authsuccess.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_part_authsuccess.q new file mode 100644 index 0000000000000..ff54324a5a50c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/load_part_authsuccess.q @@ -0,0 +1,4 @@ +create table hive_test_src ( col1 string ) partitioned by (pcol1 string) stored as textfile; +set hive.security.authorization.enabled=true; +grant Update on table hive_test_src to user hive_test_user; +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src partition (pcol1 = 'test_part'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/loadpart1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/loadpart1.q new file mode 100644 index 0000000000000..0813bb23c3746 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/loadpart1.q @@ -0,0 +1,19 @@ + + + +create table hive_test_src ( col1 string ) stored as textfile ; +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src ; + +create table hive_test_dst ( col1 string ) partitioned by ( pcol1 string , pcol2 string) stored as sequencefile; +insert overwrite table hive_test_dst partition ( pcol1='test_part', pCol2='test_Part') select col1 from hive_test_src ; +select * from hive_test_dst where pcol1='test_part' and pcol2='test_Part'; + +insert overwrite table hive_test_dst partition ( pCol1='test_part', pcol2='test_Part') select col1 from hive_test_src ; +select * from hive_test_dst where pcol1='test_part' and pcol2='test_part'; + +select * from hive_test_dst where pcol1='test_part'; +select * from hive_test_dst where pcol1='test_part' and pcol2='test_part'; +select * from hive_test_dst where pcol1='test_Part'; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/loadpart_err.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/loadpart_err.q new file mode 100644 index 0000000000000..6e4df215479bb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/loadpart_err.q @@ -0,0 +1,20 @@ +set hive.cli.errors.ignore=true; + +ADD FILE ../data/scripts/error_script; + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19, 0.20, 0.20S, 0.23) +-- (this test is flaky so it is currently disabled for all Hadoop versions) + +CREATE TABLE loadpart1(a STRING, b STRING) PARTITIONED BY (ds STRING); + +INSERT OVERWRITE TABLE loadpart1 PARTITION (ds='2009-01-01') +SELECT TRANSFORM(src.key, src.value) USING 'error_script' AS (tkey, tvalue) +FROM src; + +DESCRIBE loadpart1; +SHOW PARTITIONS loadpart1; + +LOAD DATA LOCAL INPATH '../data1/files/kv1.txt' INTO TABLE loadpart1 PARTITION(ds='2009-05-05'); +SHOW PARTITIONS loadpart1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock1.q new file mode 100644 index 0000000000000..326cf4910fb49 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock1.q @@ -0,0 +1,29 @@ +drop table tstsrc; +create table tstsrc like src; +insert overwrite table tstsrc select key, value from src; + +SHOW LOCKS; +SHOW LOCKS tstsrc; + +LOCK TABLE tstsrc shared; +SHOW LOCKS; +SHOW LOCKS tstsrc; +SHOW LOCKS tstsrc extended; + +UNLOCK TABLE tstsrc; +SHOW LOCKS; +SHOW LOCKS extended; +SHOW LOCKS tstsrc; +lock TABLE tstsrc SHARED; +SHOW LOCKS; +SHOW LOCKS extended; +SHOW LOCKS tstsrc; +LOCK TABLE tstsrc SHARED; +SHOW LOCKS; +SHOW LOCKS extended; +SHOW LOCKS tstsrc; +UNLOCK TABLE tstsrc; +SHOW LOCKS; +SHOW LOCKS extended; +SHOW LOCKS tstsrc; +drop table tstsrc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock2.q new file mode 100644 index 0000000000000..c8bff56adabe9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock2.q @@ -0,0 +1,36 @@ +drop table tstsrc; +create table tstsrc like src; +insert overwrite table tstsrc select key, value from src; + +drop table tstsrcpart; +create table tstsrcpart like srcpart; + +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='11') +select key, value from srcpart where ds='2008-04-08' and hr='11'; + +LOCK TABLE tstsrc SHARED; +LOCK TABLE tstsrcpart SHARED; +LOCK TABLE tstsrcpart PARTITION(ds='2008-04-08', hr='11') EXCLUSIVE; +SHOW LOCKS; +SHOW LOCKS tstsrcpart; +SHOW LOCKS tstsrcpart PARTITION(ds='2008-04-08', hr='11'); +SHOW LOCKS tstsrcpart PARTITION(ds='2008-04-08', hr='11') extended; + +UNLOCK TABLE tstsrc; +SHOW LOCKS; +SHOW LOCKS tstsrcpart; +SHOW LOCKS tstsrcpart PARTITION(ds='2008-04-08', hr='11'); + +UNLOCK TABLE tstsrcpart; +SHOW LOCKS; +SHOW LOCKS tstsrcpart; +SHOW LOCKS tstsrcpart PARTITION(ds='2008-04-08', hr='11'); + +UNLOCK TABLE tstsrcpart PARTITION(ds='2008-04-08', hr='11'); +SHOW LOCKS; +SHOW LOCKS tstsrcpart; +SHOW LOCKS tstsrcpart PARTITION(ds='2008-04-08', hr='11'); + + +drop table tstsrc; +drop table tstsrcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock3.q new file mode 100644 index 0000000000000..7f2178f5408d6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock3.q @@ -0,0 +1,32 @@ +drop table tstsrcpart; +create table tstsrcpart like srcpart; + +from srcpart +insert overwrite table tstsrcpart partition (ds='2008-04-08',hr='11') +select key, value where ds='2008-04-08' and hr='11'; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; + + +from srcpart +insert overwrite table tstsrcpart partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08'; + +from srcpart +insert overwrite table tstsrcpart partition (ds ='2008-04-08', hr) select key, value, hr where ds = '2008-04-08'; + + +SHOW LOCKS; +SHOW LOCKS tstsrcpart; + +drop table tstsrcpart; + +drop table tst1; +create table tst1 (key string, value string) partitioned by (a string, b string, c string, d string); + + +from srcpart +insert overwrite table tst1 partition (a='1', b='2', c, d) select key, value, ds, hr where ds = '2008-04-08'; + + +drop table tst1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock4.q new file mode 100644 index 0000000000000..e07bfe867d03f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/lock4.q @@ -0,0 +1,33 @@ +set hive.lock.mapred.only.operation=true; +drop table tstsrcpart; +create table tstsrcpart like srcpart; + +from srcpart +insert overwrite table tstsrcpart partition (ds='2008-04-08',hr='11') +select key, value where ds='2008-04-08' and hr='11'; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; + + +from srcpart +insert overwrite table tstsrcpart partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08'; + +from srcpart +insert overwrite table tstsrcpart partition (ds ='2008-04-08', hr) select key, value, hr where ds = '2008-04-08'; + + +SHOW LOCKS; +SHOW LOCKS tstsrcpart; + +drop table tstsrcpart; + +drop table tst1; +create table tst1 (key string, value string) partitioned by (a string, b string, c string, d string); + + +from srcpart +insert overwrite table tst1 partition (a='1', b='2', c, d) select key, value, ds, hr where ds = '2008-04-08'; + + +drop table tst1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/louter_join_ppr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/louter_join_ppr.q new file mode 100644 index 0000000000000..c4e25eb470196 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/louter_join_ppr.q @@ -0,0 +1,71 @@ +set hive.optimize.ppd=true; + +EXPLAIN EXTENDED + FROM + src a + LEFT OUTER JOIN + srcpart b + ON (a.key = b.key AND b.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + FROM + src a + LEFT OUTER JOIN + srcpart b + ON (a.key = b.key AND b.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + +EXPLAIN EXTENDED + FROM + srcpart a + LEFT OUTER JOIN + src b + ON (a.key = b.key AND a.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + FROM + srcpart a + LEFT OUTER JOIN + src b + ON (a.key = b.key AND a.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + +EXPLAIN EXTENDED + FROM + src a + LEFT OUTER JOIN + srcpart b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND b.ds = '2008-04-08'; + + FROM + src a + LEFT OUTER JOIN + srcpart b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND b.ds = '2008-04-08'; + +EXPLAIN EXTENDED + FROM + srcpart a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND a.ds = '2008-04-08'; + + FROM + srcpart a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND a.ds = '2008-04-08'; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/macro.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/macro.q new file mode 100644 index 0000000000000..fd0f7f2b0cdd4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/macro.q @@ -0,0 +1,26 @@ +CREATE TEMPORARY MACRO SIGMOID (x DOUBLE) 1.0 / (1.0 + EXP(-x)); +SELECT SIGMOID(2) FROM src LIMIT 1; +EXPLAIN SELECT SIGMOID(2) FROM src LIMIT 1; +EXPLAIN EXTENDED SELECT SIGMOID(2) FROM src LIMIT 1; +DROP TEMPORARY MACRO SIGMOID; + +CREATE TEMPORARY MACRO FIXED_NUMBER() 1; +SELECT FIXED_NUMBER() + 1 FROM src LIMIT 1; +EXPLAIN SELECT FIXED_NUMBER() + 1 FROM src LIMIT 1; +EXPLAIN EXTENDED SELECT FIXED_NUMBER() + 1 FROM src LIMIT 1; +DROP TEMPORARY MACRO FIXED_NUMBER; + +set macrotest=1; +CREATE TEMPORARY MACRO CONF_TEST() "${hiveconf:macrotest}"; +SELECT CONF_TEST() FROM src LIMIT 1; +DROP TEMPORARY MACRO CONF_TEST; + +CREATE TEMPORARY MACRO SIMPLE_ADD (x INT, y INT) x + y; +CREATE TEMPORARY MACRO SIMPLE_ADD (x INT, y INT) x + y; +SELECT SIMPLE_ADD(1, 9) FROM src LIMIT 1; +EXPLAIN SELECT SIMPLE_ADD(1, 9) FROM src LIMIT 1; +EXPLAIN EXTENDED SELECT SIMPLE_ADD(1, 9) FROM src LIMIT 1; +DROP TEMPORARY MACRO SIMPLE_ADD; +DROP TEMPORARY MACRO SIMPLE_ADD; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin1.q new file mode 100644 index 0000000000000..49de907948f6d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin1.q @@ -0,0 +1,38 @@ +SELECT /*+ MAPJOIN(b) */ sum(a.key) as sum_a + FROM srcpart a + JOIN src b ON a.key = b.key where a.ds is not null; + +set hive.outerjoin.supports.filters=true; + +-- const filter on outer join +EXPLAIN +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN src b on a.key=b.key AND true limit 10; +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN src b on a.key=b.key AND true limit 10; + +-- func filter on outer join +EXPLAIN +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN src b on a.key=b.key AND b.key * 10 < '1000' limit 10; +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN src b on a.key=b.key AND b.key * 10 < '1000' limit 10; + +-- field filter on outer join +EXPLAIN +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN + (select key, named_struct('key', key, 'value', value) as kv from src) b on a.key=b.key AND b.kv.key > 200 limit 10; +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN + (select key, named_struct('key', key, 'value', value) as kv from src) b on a.key=b.key AND b.kv.key > 200 limit 10; + +set hive.outerjoin.supports.filters=false; + +EXPLAIN +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN src b on a.key=b.key AND true limit 10; +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN src b on a.key=b.key AND true limit 10; + +EXPLAIN +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN src b on a.key=b.key AND b.key * 10 < '1000' limit 10; +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN src b on a.key=b.key AND b.key * 10 < '1000' limit 10; + +EXPLAIN +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN + (select key, named_struct('key', key, 'value', value) as kv from src) b on a.key=b.key AND b.kv.key > 200 limit 10; +SELECT /*+ MAPJOIN(a) */ * FROM src a RIGHT OUTER JOIN + (select key, named_struct('key', key, 'value', value) as kv from src) b on a.key=b.key AND b.kv.key > 200 limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_distinct.q new file mode 100644 index 0000000000000..d021c631d1ea5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_distinct.q @@ -0,0 +1,55 @@ +set hive.map.aggr = true; +set hive.groupby.skewindata = true; +explain +FROM srcpart c +JOIN srcpart d +ON ( c.key=d.key AND c.ds='2008-04-08' AND d.ds='2008-04-08') +SELECT /*+ MAPJOIN(d) */ DISTINCT c.value; + +FROM srcpart c +JOIN srcpart d +ON ( c.key=d.key AND c.ds='2008-04-08' AND d.ds='2008-04-08') +SELECT /*+ MAPJOIN(d) */ DISTINCT c.value as value order by value limit 10; + +set hive.map.aggr = true; +set hive.groupby.skewindata = false; +explain +FROM srcpart c +JOIN srcpart d +ON ( c.key=d.key AND c.ds='2008-04-08' AND d.ds='2008-04-08') +SELECT /*+ MAPJOIN(d) */ DISTINCT c.value; + +FROM srcpart c +JOIN srcpart d +ON ( c.key=d.key AND c.ds='2008-04-08' AND d.ds='2008-04-08') +SELECT /*+ MAPJOIN(d) */ DISTINCT c.value as value order by value limit 10; + + +set hive.map.aggr = false; +set hive.groupby.skewindata = true; +explain +FROM srcpart c +JOIN srcpart d +ON ( c.key=d.key AND c.ds='2008-04-08' AND d.ds='2008-04-08') +SELECT /*+ MAPJOIN(d) */ DISTINCT c.value; + +FROM srcpart c +JOIN srcpart d +ON ( c.key=d.key AND c.ds='2008-04-08' AND d.ds='2008-04-08') +SELECT /*+ MAPJOIN(d) */ DISTINCT c.value as value order by value limit 10; + + +set hive.map.aggr = false; +set hive.groupby.skewindata = false; +explain +FROM srcpart c +JOIN srcpart d +ON ( c.key=d.key AND c.ds='2008-04-08' AND d.ds='2008-04-08') +SELECT /*+ MAPJOIN(d) */ DISTINCT c.value; + +FROM srcpart c +JOIN srcpart d +ON ( c.key=d.key AND c.ds='2008-04-08' AND d.ds='2008-04-08') +SELECT /*+ MAPJOIN(d) */ DISTINCT c.value as value order by value limit 10; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_filter_on_outerjoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_filter_on_outerjoin.q new file mode 100644 index 0000000000000..a43d298a4ed57 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_filter_on_outerjoin.q @@ -0,0 +1,31 @@ +set hive.auto.convert.join = false; +--HIVE-2101 mapjoin sometimes gives wrong results if there is a filter in the on condition + +SELECT * FROM src1 + RIGHT OUTER JOIN src1 src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) + JOIN src src3 ON (src2.key = src3.key AND src3.key < 300) + SORT BY src1.key, src2.key, src3.key; + +explain +SELECT /*+ mapjoin(src1, src2) */ * FROM src1 + RIGHT OUTER JOIN src1 src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) + JOIN src src3 ON (src2.key = src3.key AND src3.key < 300) + SORT BY src1.key, src2.key, src3.key; + +SELECT /*+ mapjoin(src1, src2) */ * FROM src1 + RIGHT OUTER JOIN src1 src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) + JOIN src src3 ON (src2.key = src3.key AND src3.key < 300) + SORT BY src1.key, src2.key, src3.key; + +set hive.auto.convert.join = true; + +explain +SELECT * FROM src1 + RIGHT OUTER JOIN src1 src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) + JOIN src src3 ON (src2.key = src3.key AND src3.key < 300) + SORT BY src1.key, src2.key, src3.key; + +SELECT * FROM src1 + RIGHT OUTER JOIN src1 src2 ON (src1.key = src2.key AND src1.key < 10 AND src2.key > 10) + JOIN src src3 ON (src2.key = src3.key AND src3.key < 300) + SORT BY src1.key, src2.key, src3.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_hook.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_hook.q new file mode 100644 index 0000000000000..d6811d493263f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_hook.q @@ -0,0 +1,31 @@ +set hive.exec.post.hooks = org.apache.hadoop.hive.ql.hooks.MapJoinCounterHook ; +drop table dest1; +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +set hive.auto.convert.join = true; + +INSERT OVERWRITE TABLE dest1 +SELECT /*+ MAPJOIN(x) */ x.key, count(1) FROM src1 x JOIN src y ON (x.key = y.key) group by x.key; + + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key = src3.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value; + + + +set hive.mapjoin.localtask.max.memory.usage = 0.0001; +set hive.mapjoin.check.memory.rows = 2; +set hive.auto.convert.join.noconditionaltask = false; + + +FROM srcpart src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value +where (src1.ds = '2008-04-08' or src1.ds = '2008-04-09' )and (src1.hr = '12' or src1.hr = '11'); + + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key + src2.key = src3.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value; + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_mapjoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_mapjoin.q new file mode 100644 index 0000000000000..3f87db28ed2e2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_mapjoin.q @@ -0,0 +1,11 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +explain select srcpart.key from srcpart join src on (srcpart.value=src.value) join src1 on (srcpart.key=src1.key); + +explain select count(*) from srcpart join src on (srcpart.value=src.value) join src1 on (srcpart.key=src1.key) group by ds; + +select count(*) from srcpart join src src on (srcpart.value=src.value) join src src1 on (srcpart.key=src1.key) group by ds; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_subquery.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_subquery.q new file mode 100644 index 0000000000000..81cf940bd01c3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_subquery.q @@ -0,0 +1,34 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN +SELECT subq.key1, z.value +FROM +(SELECT x.key as key1, x.value as value1, y.key as key2, y.value as value2 + FROM src1 x JOIN src y ON (x.key = y.key)) subq + JOIN srcpart z ON (subq.key1 = z.key and z.ds='2008-04-08' and z.hr=11); + +SELECT subq.key1, z.value +FROM +(SELECT x.key as key1, x.value as value1, y.key as key2, y.value as value2 + FROM src1 x JOIN src y ON (x.key = y.key)) subq + JOIN srcpart z ON (subq.key1 = z.key and z.ds='2008-04-08' and z.hr=11) +ORDER BY subq.key1, z.value; + +EXPLAIN +SELECT subq.key1, z.value +FROM +(SELECT x.key as key1, x.value as value1, y.key as key2, y.value as value2 + FROM src1 x JOIN src y ON (x.key = y.key)) subq + JOIN srcpart z ON (subq.key1 = z.key and z.ds='2008-04-08' and z.hr=11) + order by subq.key1, z.value; + +SELECT subq.key1, z.value +FROM +(SELECT x.key as key1, x.value as value1, y.key as key2, y.value as value2 + FROM src1 x JOIN src y ON (x.key = y.key)) subq + JOIN srcpart z ON (subq.key1 = z.key and z.ds='2008-04-08' and z.hr=11) + order by subq.key1, z.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_subquery2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_subquery2.q new file mode 100644 index 0000000000000..9980946057fe1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_subquery2.q @@ -0,0 +1,39 @@ +drop table x; +drop table y; +drop table z; + +CREATE TABLE x (name STRING, id INT) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; + +CREATE TABLE y (id INT, name STRING) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; + +CREATE TABLE z (id INT, name STRING) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; + +load data local inpath '../data/files/x.txt' INTO TABLE x; +load data local inpath '../data/files/y.txt' INTO TABLE y; +load data local inpath '../data/files/z.txt' INTO TABLE z; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +EXPLAIN +SELECT subq.key1, subq.value1, subq.key2, subq.value2, z.id, z.name +FROM +(SELECT x.id as key1, x.name as value1, y.id as key2, y.name as value2 + FROM y JOIN x ON (x.id = y.id)) subq + JOIN z ON (subq.key1 = z.id); + +SELECT subq.key1, subq.value1, subq.key2, subq.value2, z.id, z.name +FROM +(SELECT x.id as key1, x.name as value1, y.id as key2, y.name as value2 + FROM y JOIN x ON (x.id = y.id)) subq + JOIN z ON (subq.key1 = z.id); + +drop table x; +drop table y; +drop table z; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_test_outer.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_test_outer.q new file mode 100644 index 0000000000000..8d31590186514 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapjoin_test_outer.q @@ -0,0 +1,54 @@ +set hive.auto.convert.join = false; +--HIVE-2101 mapjoin sometimes gives wrong results if there is a filter in the on condition + +create table dest_1 (key STRING, value STRING) stored as textfile; +insert overwrite table dest_1 select * from src1 order by src1.value limit 8; +insert into table dest_1 select "333444","555666" from src1 limit 1; + +create table dest_2 (key STRING, value STRING) stored as textfile; + +insert into table dest_2 select * from dest_1; + +SELECT * FROM src1 + RIGHT OUTER JOIN dest_1 src2 ON (src1.key = src2.key) + JOIN dest_2 src3 ON (src2.key = src3.key) + SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT /*+ mapjoin(src1, src2) */ * FROM src1 + RIGHT OUTER JOIN dest_1 src2 ON (src1.key = src2.key) + JOIN dest_2 src3 ON (src2.key = src3.key) + SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT /*+ mapjoin(src1, src2) */ * FROM src1 + RIGHT OUTER JOIN dest_1 src2 ON (src1.key = src2.key) + JOIN dest_2 src3 ON (src2.key = src3.key) + SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT /*+ mapjoin(src1, src2) */ * FROM src1 + RIGHT OUTER JOIN dest_1 src2 ON (src1.key = src2.key) + JOIN dest_2 src3 ON (src1.key = src3.key) + SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +set hive.auto.convert.join = true; + +SELECT * FROM src1 + LEFT OUTER JOIN dest_1 src2 ON (src1.key = src2.key) + JOIN dest_2 src3 ON (src1.key = src3.key) + SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src1 + LEFT OUTER JOIN dest_1 src2 ON (src1.key = src2.key) + JOIN dest_2 src3 ON (src2.key = src3.key) + SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +explain +SELECT * FROM src1 + RIGHT OUTER JOIN dest_1 src2 ON (src1.key = src2.key) + JOIN dest_2 src3 ON (src2.key = src3.key) + SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; + +SELECT * FROM src1 + RIGHT OUTER JOIN dest_1 src2 ON (src1.key = src2.key) + JOIN dest_2 src3 ON (src2.key = src3.key) + SORT BY src1.key, src1.value, src2.key, src2.value, src3.key, src3.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce1.q new file mode 100644 index 0000000000000..83328f1f83cfc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce1.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +DISTRIBUTE BY tvalue, tkey +SORT BY ten, one; + + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +DISTRIBUTE BY tvalue, tkey +SORT BY ten, one; + + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce2.q new file mode 100644 index 0000000000000..ef6f8e5766ffa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce2.q @@ -0,0 +1,17 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +DISTRIBUTE BY tvalue, tkey; + + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +DISTRIBUTE BY tvalue, tkey; + +SELECT * FROM (SELECT dest1.* FROM dest1 DISTRIBUTE BY key SORT BY key, ten, one, value) T; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce3.q new file mode 100644 index 0000000000000..c31ede77d8718 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce3.q @@ -0,0 +1,17 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +SORT BY tvalue, tkey; + + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +SORT BY tvalue, tkey; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce4.q new file mode 100644 index 0000000000000..0c15f1fb55174 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce4.q @@ -0,0 +1,20 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +DISTRIBUTE BY tvalue, tkey +SORT BY ten DESC, one ASC; + + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (tkey, ten, one, tvalue) +DISTRIBUTE BY tvalue, tkey +SORT BY ten DESC, one ASC; + + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce5.q new file mode 100644 index 0000000000000..d7c53d2889c0e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce5.q @@ -0,0 +1,17 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 +SELECT src.key as c1, CAST(src.key / 10 AS INT) as c2, CAST(src.key % 10 AS INT) as c3, src.value as c4 +DISTRIBUTE BY c4, c1 +SORT BY c2 DESC, c3 ASC; + + +FROM src +INSERT OVERWRITE TABLE dest1 +SELECT src.key as c1, CAST(src.key / 10 AS INT) as c2, CAST(src.key % 10 AS INT) as c3, src.value as c4 +DISTRIBUTE BY c4, c1 +SORT BY c2 DESC, c3 ASC; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce6.q new file mode 100644 index 0000000000000..c37181d351068 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce6.q @@ -0,0 +1,17 @@ +CREATE TABLE dest1(key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 +SELECT src.key, CAST(src.key / 10 AS INT) as c2, CAST(src.key % 10 AS INT) as c3, src.value +DISTRIBUTE BY value, key +SORT BY c2 DESC, c3 ASC; + + +FROM src +INSERT OVERWRITE TABLE dest1 +SELECT src.key, CAST(src.key / 10 AS INT) as c2, CAST(src.key % 10 AS INT) as c3, src.value +DISTRIBUTE BY value, key +SORT BY c2 DESC, c3 ASC; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce7.q new file mode 100644 index 0000000000000..0da41d2ecde53 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce7.q @@ -0,0 +1,17 @@ +CREATE TABLE dest1(k STRING, v STRING, key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.*, src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (k, v, tkey, ten, one, tvalue) +SORT BY tvalue, tkey; + + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.*, src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (k, v, tkey, ten, one, tvalue) +SORT BY tvalue, tkey; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce8.q new file mode 100644 index 0000000000000..35d9ed90e77e5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mapreduce8.q @@ -0,0 +1,19 @@ +CREATE TABLE dest1(k STRING, v STRING, key INT, ten INT, one INT, value STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.*, src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (k, v, tkey, ten, one, tvalue) +DISTRIBUTE BY rand(3) +SORT BY tvalue, tkey; + + +FROM src +INSERT OVERWRITE TABLE dest1 +MAP src.*, src.key, CAST(src.key / 10 AS INT), CAST(src.key % 10 AS INT), src.value +USING 'cat' AS (k, v, tkey, ten, one, tvalue) +DISTRIBUTE BY rand(3) +SORT BY tvalue, tkey; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge1.q new file mode 100644 index 0000000000000..834f2ce374608 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge1.q @@ -0,0 +1,29 @@ +set hive.merge.mapredfiles=true; + +create table dest1(key int, val int); + +explain +insert overwrite table dest1 +select key, count(1) from src group by key; + +insert overwrite table dest1 +select key, count(1) from src group by key; + +select * from dest1; + +drop table dest1; + +create table test_src(key string, value string) partitioned by (ds string); +create table dest1(key string); + +insert overwrite table test_src partition(ds='101') select * from src; +insert overwrite table test_src partition(ds='102') select * from src; + +explain +insert overwrite table dest1 select key from test_src; +insert overwrite table dest1 select key from test_src; + +set hive.merge.smallfiles.avgsize=16; +explain +insert overwrite table dest1 select key from test_src; +insert overwrite table dest1 select key from test_src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge2.q new file mode 100644 index 0000000000000..8b77bd2fe19ba --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge2.q @@ -0,0 +1,35 @@ +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; + +create table test1(key int, val int); + +explain +insert overwrite table test1 +select key, count(1) from src group by key; + +insert overwrite table test1 +select key, count(1) from src group by key; + +select * from test1; + +drop table test1; + + +create table test_src(key string, value string) partitioned by (ds string); +create table test1(key string); + +insert overwrite table test_src partition(ds='101') select * from src; +insert overwrite table test_src partition(ds='102') select * from src; + +explain +insert overwrite table test1 select key from test_src; +insert overwrite table test1 select key from test_src; + +set hive.merge.smallfiles.avgsize=16; +explain +insert overwrite table test1 select key from test_src; +insert overwrite table test1 select key from test_src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge3.q new file mode 100644 index 0000000000000..aacd0cd68fc50 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge3.q @@ -0,0 +1,57 @@ +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table merge_src as +select key, value from srcpart where ds is not null; + +create table merge_src_part (key string, value string) partitioned by (ds string); +insert overwrite table merge_src_part partition(ds) select key, value, ds from srcpart where ds is not null; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain extended +create table merge_src2 as +select key, value from merge_src; + +create table merge_src2 as +select key, value from merge_src; + +select * from merge_src2 ORDER BY key ASC, value ASC; +describe formatted merge_src2; + +create table merge_src_part2 like merge_src_part; + + +explain extended +insert overwrite table merge_src_part2 partition(ds) +select key, value, ds from merge_src_part +where ds is not null; + +insert overwrite table merge_src_part2 partition(ds) +select key, value, ds from merge_src_part +where ds is not null; + +show partitions merge_src_part2; + +select * from merge_src_part2 where ds is not null ORDER BY key ASC, value ASC; + +drop table merge_src_part2; + +create table merge_src_part2 like merge_src_part; + +explain extended +from (select * from merge_src_part where ds is not null distribute by ds) s +insert overwrite table merge_src_part2 partition(ds) +select key, value, ds; + +from (select * from merge_src_part where ds is not null distribute by ds) s +insert overwrite table merge_src_part2 partition(ds) +select key, value, ds; + +show partitions merge_src_part2; + +select * from merge_src_part2 where ds is not null ORDER BY key ASC, value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge4.q new file mode 100644 index 0000000000000..744783bd62f8d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge4.q @@ -0,0 +1,40 @@ +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table nzhang_part like srcpart; + +explain +insert overwrite table nzhang_part partition (ds='2010-08-15', hr) select key, value, hr from srcpart where ds='2008-04-08'; + +insert overwrite table nzhang_part partition (ds='2010-08-15', hr) select key, value, hr from srcpart where ds='2008-04-08'; + +select * from nzhang_part; + +explain +insert overwrite table nzhang_part partition (ds='2010-08-15', hr=11) select key, value from srcpart where ds='2008-04-08'; + +insert overwrite table nzhang_part partition (ds='2010-08-15', hr=11) select key, value from srcpart where ds='2008-04-08'; + +select * from nzhang_part; + +explain +insert overwrite table nzhang_part partition (ds='2010-08-15', hr) +select * from ( + select key, value, hr from srcpart where ds='2008-04-08' + union all + select '1' as key, '1' as value, 'file,' as hr from src limit 1) s; + +insert overwrite table nzhang_part partition (ds='2010-08-15', hr) +select * from ( + select key, value, hr from srcpart where ds='2008-04-08' + union all + select '1' as key, '1' as value, 'file,' as hr from src limit 1) s; + +show partitions nzhang_part; + +select * from nzhang_part where hr = 'file,'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition.q new file mode 100644 index 0000000000000..1379426b601f0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition.q @@ -0,0 +1,46 @@ +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table srcpart_merge_dp like srcpart; + +create table merge_dynamic_part like srcpart; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); + +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.merge.smallfiles.avgsize=1000000000; +explain +insert overwrite table merge_dynamic_part partition (ds='2008-04-08', hr) select key, value, hr from srcpart_merge_dp where ds='2008-04-08'; +insert overwrite table merge_dynamic_part partition (ds='2008-04-08', hr) select key, value, hr from srcpart_merge_dp where ds='2008-04-08'; + +select * from merge_dynamic_part order by key, value; +show table extended like `merge_dynamic_part`; + + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1000000000; +explain +insert overwrite table merge_dynamic_part partition (ds='2008-04-08', hr=11) select key, value from srcpart_merge_dp where ds='2008-04-08'; +insert overwrite table merge_dynamic_part partition (ds='2008-04-08', hr=11) select key, value from srcpart_merge_dp where ds='2008-04-08'; + +select * from merge_dynamic_part order by key, value; +show table extended like `merge_dynamic_part`; + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1000000000; +explain +insert overwrite table merge_dynamic_part partition (ds, hr) select key, value, ds, hr from srcpart_merge_dp where ds='2008-04-08' and hr=11; +insert overwrite table merge_dynamic_part partition (ds, hr) select key, value, ds, hr from srcpart_merge_dp where ds='2008-04-08' and hr=11;; + +select * from merge_dynamic_part order by key, value; +show table extended like `merge_dynamic_part`; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition2.q new file mode 100644 index 0000000000000..b51c70ed03a46 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition2.q @@ -0,0 +1,27 @@ +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table srcpart_merge_dp like srcpart; + +create table merge_dynamic_part like srcpart; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket0.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); +load data local inpath '../data/files/srcbucket1.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); + + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=3000; +set hive.exec.compress.output=false; + +explain +insert overwrite table merge_dynamic_part partition (ds='2008-04-08', hr) select key, value, hr from srcpart_merge_dp where ds='2008-04-08'; +insert overwrite table merge_dynamic_part partition (ds='2008-04-08', hr) select key, value, hr from srcpart_merge_dp where ds='2008-04-08'; + +show table extended like `merge_dynamic_part`; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition3.q new file mode 100644 index 0000000000000..b3bcf01ea043d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition3.q @@ -0,0 +1,38 @@ +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table srcpart_merge_dp like srcpart; + +create table merge_dynamic_part like srcpart; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); + +load data local inpath '../data/files/kv1.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-09', hr=11); +load data local inpath '../data/files/kv2.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-09', hr=11); +load data local inpath '../data/files/kv1.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-09', hr=12); +load data local inpath '../data/files/kv2.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-09', hr=12); + +show partitions srcpart_merge_dp; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=3000; +set hive.exec.compress.output=false; + +explain +insert overwrite table merge_dynamic_part partition (ds, hr) select key, value, ds, hr from srcpart_merge_dp where ds>='2008-04-08'; + +insert overwrite table merge_dynamic_part partition (ds, hr) select key, value, ds, hr from srcpart_merge_dp where ds>='2008-04-08'; + +select ds, hr, count(1) from merge_dynamic_part where ds>='2008-04-08' group by ds, hr order by ds, hr; + +show table extended like `merge_dynamic_part`; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition4.q new file mode 100644 index 0000000000000..ef769a042d7ce --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition4.q @@ -0,0 +1,42 @@ +-- this test verifies that the block merge task that can follow a query to generate dynamic +-- partitions does not produce incorrect results by dropping partitions + +create table srcpart_merge_dp like srcpart; + +create table srcpart_merge_dp_rc like srcpart; +alter table srcpart_merge_dp_rc set fileformat RCFILE; + +create table merge_dynamic_part like srcpart; +alter table merge_dynamic_part set fileformat RCFILE; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); + +insert overwrite table srcpart_merge_dp_rc partition (ds = '2008-04-08', hr) +select key, value, hr from srcpart_merge_dp where ds = '2008-04-08'; + +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=10000000000000; +set hive.exec.compress.output=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +explain +insert overwrite table merge_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 2 == 0, 'a1', 'b1') as hr from srcpart_merge_dp_rc where ds = '2008-04-08'; + +insert overwrite table merge_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 2 == 0, 'a1', 'b1') as hr from srcpart_merge_dp_rc where ds = '2008-04-08'; + +show partitions merge_dynamic_part; + +select count(*) from merge_dynamic_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition5.q new file mode 100644 index 0000000000000..a196fa05288b7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/merge_dynamic_partition5.q @@ -0,0 +1,38 @@ +-- this is to test the case where some dynamic partitions are merged and some are moved + +create table srcpart_merge_dp like srcpart; + +create table srcpart_merge_dp_rc like srcpart; +alter table srcpart_merge_dp_rc set fileformat RCFILE; + +create table merge_dynamic_part like srcpart; +alter table merge_dynamic_part set fileformat RCFILE; + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=11); + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcpart_merge_dp partition(ds='2008-04-08', hr=12); + +insert overwrite table srcpart_merge_dp_rc partition (ds = '2008-04-08', hr) +select key, value, hr from srcpart_merge_dp where ds = '2008-04-08'; + +set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=200; +set hive.exec.compress.output=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +explain +insert overwrite table merge_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') as hr from srcpart_merge_dp_rc where ds = '2008-04-08'; + +insert overwrite table merge_dynamic_part partition (ds = '2008-04-08', hr) +select key, value, if(key % 100 == 0, 'a1', 'b1') as hr from srcpart_merge_dp_rc where ds = '2008-04-08'; + +show partitions merge_dynamic_part; + +select count(*) from merge_dynamic_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mergejoins.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mergejoins.q new file mode 100644 index 0000000000000..2857c8612aeb0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mergejoins.q @@ -0,0 +1,10 @@ +create table a (val1 int, val2 int); +create table b (val1 int, val2 int); +create table c (val1 int, val2 int); +create table d (val1 int, val2 int); +create table e (val1 int, val2 int); + +explain select * from a join b on a.val1=b.val1 join c on a.val1=c.val1 join d on a.val1=d.val1 join e on a.val2=e.val2; + +--HIVE-3070 filter on outer join condition removed while merging join tree +explain select * from src a join src b on a.key=b.key left outer join src c on b.key=c.key and b.key<10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mergejoins_mixed.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mergejoins_mixed.q new file mode 100644 index 0000000000000..a7df4e3d2dc65 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mergejoins_mixed.q @@ -0,0 +1,43 @@ +-- HIVE-3464 + +create table a (key string, value string); + +-- (a-b-c-d) +explain +select * from a join a b on (a.key=b.key) left outer join a c on (b.key=c.key) left outer join a d on (a.key=d.key); + +explain +select * from a join a b on (a.key=b.key) left outer join a c on (b.key=c.key) right outer join a d on (a.key=d.key); + +explain +select * from a join a b on (a.key=b.key) right outer join a c on (b.key=c.key) left outer join a d on (a.key=d.key); + +explain +select * from a join a b on (a.key=b.key) right outer join a c on (b.key=c.key) right outer join a d on (a.key=d.key); + +-- ((a-b-d)-c) (reordered) +explain +select * from a join a b on (a.key=b.key) left outer join a c on (b.value=c.key) left outer join a d on (a.key=d.key); + +explain +select * from a join a b on (a.key=b.key) right outer join a c on (b.value=c.key) right outer join a d on (a.key=d.key); + +explain +select * from a join a b on (a.key=b.key) full outer join a c on (b.value=c.key) full outer join a d on (a.key=d.key); + +-- (((a-b)-c)-d) +explain +select * from a join a b on (a.key=b.key) left outer join a c on (b.value=c.key) right outer join a d on (a.key=d.key); + +explain +select * from a join a b on (a.key=b.key) left outer join a c on (b.value=c.key) full outer join a d on (a.key=d.key); + +explain +select * from a join a b on (a.key=b.key) right outer join a c on (b.value=c.key) left outer join a d on (a.key=d.key); + +explain +select * from a join a b on (a.key=b.key) right outer join a c on (b.value=c.key) full outer join a d on (a.key=d.key); + +-- ((a-b)-c-d) +explain +select * from a join a b on (a.key=b.key) left outer join a c on (b.value=c.key) left outer join a d on (c.key=d.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/metadata_export_drop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/metadata_export_drop.q new file mode 100644 index 0000000000000..41be152e7871d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/metadata_export_drop.q @@ -0,0 +1,8 @@ +create table tmp_meta_export_listener_drop_test (foo string); +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/exports/HIVE-3427; +set hive.metastore.pre.event.listeners=org.apache.hadoop.hive.ql.parse.MetaDataExportListener; +set hive.metadata.export.location=../build/ql/test/data/exports/HIVE-3427; +set hive.move.exported.metadata.to.trash=false; +drop table tmp_meta_export_listener_drop_test; +dfs -rmr ../build/ql/test/data/exports/HIVE-3427; +set hive.metastore.pre.event.listeners=; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/metadataonly1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/metadataonly1.q new file mode 100644 index 0000000000000..eb595298497f1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/metadataonly1.q @@ -0,0 +1,45 @@ +CREATE TABLE TEST1(A INT, B DOUBLE) partitioned by (ds string); +explain extended select max(ds) from TEST1; +select max(ds) from TEST1; + +alter table TEST1 add partition (ds='1'); +explain extended select max(ds) from TEST1; +select max(ds) from TEST1; + +explain extended select count(distinct ds) from TEST1; +select count(distinct ds) from TEST1; + +explain extended select count(ds) from TEST1; +select count(ds) from TEST1; + +alter table TEST1 add partition (ds='2'); +explain extended +select count(*) from TEST1 a2 join (select max(ds) m from TEST1) b on a2.ds=b.m; +select count(*) from TEST1 a2 join (select max(ds) m from TEST1) b on a2.ds=b.m; + + +CREATE TABLE TEST2(A INT, B DOUBLE) partitioned by (ds string, hr string); +alter table TEST2 add partition (ds='1', hr='1'); +alter table TEST2 add partition (ds='1', hr='2'); +alter table TEST2 add partition (ds='1', hr='3'); + +explain extended select ds, count(distinct hr) from TEST2 group by ds; +select ds, count(distinct hr) from TEST2 group by ds; + +explain extended select ds, count(hr) from TEST2 group by ds; +select ds, count(hr) from TEST2 group by ds; + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +explain extended select max(ds) from TEST1; +select max(ds) from TEST1; + +select distinct ds from srcpart; +select min(ds),max(ds) from srcpart; + +-- HIVE-3594 URI encoding for temporary path +alter table TEST2 add partition (ds='01:10:10', hr='01'); +alter table TEST2 add partition (ds='01:10:20', hr='02'); + +explain extended select ds, count(distinct hr) from TEST2 group by ds; +select ds, count(distinct hr) from TEST2 group by ds; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mi.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mi.q new file mode 100644 index 0000000000000..067c143c0e684 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/mi.q @@ -0,0 +1,21 @@ +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +create table nzhang_t1 like srcpart; +create table nzhang_t2 like srcpart; + +FROM srcpart +INSERT OVERWRITE TABLE nzhang_t1 PARTITION (ds, hr) +SELECT key, value, ds, hr +WHERE ds = '2008-04-08' AND hr = '11' +INSERT OVERWRITE TABLE nzhang_t2 PARTITION (ds, hr) +SELECT key, value, ds, hr +WHERE ds = '2008-04-08' and hr = '12' +GROUP BY key, value, ds, hr; + +show partitions nzhang_t1; +show partitions nzhang_t2; + +select * from nzhang_t1; +select * from nzhang_t2; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/misc_json.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/misc_json.q new file mode 100644 index 0000000000000..541e36933a6d2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/misc_json.q @@ -0,0 +1,13 @@ +set hive.ddl.output.format=json; + +CREATE TABLE IF NOT EXISTS jsontable (key INT, value STRING) COMMENT 'json table' STORED AS TEXTFILE; + +ALTER TABLE jsontable ADD COLUMNS (name STRING COMMENT 'a new column'); + +ALTER TABLE jsontable RENAME TO jsontable2; + +SHOW TABLE EXTENDED LIKE jsontable2; + +DROP TABLE jsontable2; + +set hive.ddl.output.format=text; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multiMapJoin1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multiMapJoin1.q new file mode 100644 index 0000000000000..9a0a792a91897 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multiMapJoin1.q @@ -0,0 +1,401 @@ +create table smallTbl1(key string, value string); +insert overwrite table smallTbl1 select * from src where key < 10; + +create table smallTbl2(key string, value string); +insert overwrite table smallTbl2 select * from src where key < 10; + +create table smallTbl3(key string, value string); +insert overwrite table smallTbl3 select * from src where key < 10; + +create table smallTbl4(key string, value string); +insert overwrite table smallTbl4 select * from src where key < 10; + +create table bigTbl(key string, value string); +insert overwrite table bigTbl +select * from +( + select * from src + union all + select * from src + union all + select * from src + union all + select * from src + union all + select * from src + union all + select * from src + union all + select * from src + union all + select * from src + union all + select * from src + union all + select * from src +) subq; + +set hive.auto.convert.join=true; + +explain +select count(*) FROM +(select bigTbl.key as key, bigTbl.value as value1, + bigTbl.value as value2 FROM bigTbl JOIN smallTbl1 + on (bigTbl.key = smallTbl1.key) +) firstjoin +JOIN +smallTbl2 on (firstjoin.value1 = smallTbl2.value); + +select count(*) FROM +(select bigTbl.key as key, bigTbl.value as value1, + bigTbl.value as value2 FROM bigTbl JOIN smallTbl1 + on (bigTbl.key = smallTbl1.key) +) firstjoin +JOIN +smallTbl2 on (firstjoin.value1 = smallTbl2.value); + +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Now run a query with two-way join, which should be converted into a +-- map-join followed by groupby - two MR jobs overall +explain +select count(*) FROM +(select bigTbl.key as key, bigTbl.value as value1, + bigTbl.value as value2 FROM bigTbl JOIN smallTbl1 + on (bigTbl.key = smallTbl1.key) +) firstjoin +JOIN +smallTbl2 on (firstjoin.value1 = smallTbl2.value); + +select count(*) FROM +(select bigTbl.key as key, bigTbl.value as value1, + bigTbl.value as value2 FROM bigTbl JOIN smallTbl1 + on (bigTbl.key = smallTbl1.key) +) firstjoin +JOIN +smallTbl2 on (firstjoin.value1 = smallTbl2.value); + +-- Now run a query with two-way join, which should first be converted into a +-- map-join followed by groupby and then finally into a single MR job. + +explain +select count(*) FROM +(select bigTbl.key as key, bigTbl.value as value1, + bigTbl.value as value2 FROM bigTbl JOIN smallTbl1 + on (bigTbl.key = smallTbl1.key) +) firstjoin +JOIN +smallTbl2 on (firstjoin.value1 = smallTbl2.value) +group by smallTbl2.key; + +select count(*) FROM +(select bigTbl.key as key, bigTbl.value as value1, + bigTbl.value as value2 FROM bigTbl JOIN smallTbl1 + on (bigTbl.key = smallTbl1.key) +) firstjoin +JOIN +smallTbl2 on (firstjoin.value1 = smallTbl2.value) +group by smallTbl2.key; + +drop table bigTbl; + +create table bigTbl(key1 string, key2 string, value string); +insert overwrite table bigTbl +select * from +( + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src + union all + select key as key1, key as key2, value from src +) subq; + +set hive.auto.convert.join.noconditionaltask=false; +-- First disable noconditionaltask +EXPLAIN +SELECT SUM(HASH(join3.key1)), + SUM(HASH(join3.key2)), + SUM(HASH(join3.key3)), + SUM(HASH(join3.key4)), + SUM(HASH(join3.key5)), + SUM(HASH(smallTbl4.key)), + SUM(HASH(join3.value1)), + SUM(HASH(join3.value2)) +FROM (SELECT join2.key1 as key1, + join2.key2 as key2, + join2.key3 as key3, + join2.key4 as key4, + smallTbl3.key as key5, + join2.value1 as value1, + join2.value2 as value2 + FROM (SELECT join1.key1 as key1, + join1.key2 as key2, + join1.key3 as key3, + smallTbl2.key as key4, + join1.value1 as value1, + join1.value2 as value2 + FROM (SELECT bigTbl.key1 as key1, + bigTbl.key2 as key2, + smallTbl1.key as key3, + bigTbl.value as value1, + bigTbl.value as value2 + FROM bigTbl + JOIN smallTbl1 ON (bigTbl.key1 = smallTbl1.key)) join1 + JOIN smallTbl2 ON (join1.value1 = smallTbl2.value)) join2 + JOIN smallTbl3 ON (join2.key2 = smallTbl3.key)) join3 +JOIN smallTbl4 ON (join3.key3 = smallTbl4.key); + +SELECT SUM(HASH(join3.key1)), + SUM(HASH(join3.key2)), + SUM(HASH(join3.key3)), + SUM(HASH(join3.key4)), + SUM(HASH(join3.key5)), + SUM(HASH(smallTbl4.key)), + SUM(HASH(join3.value1)), + SUM(HASH(join3.value2)) +FROM (SELECT join2.key1 as key1, + join2.key2 as key2, + join2.key3 as key3, + join2.key4 as key4, + smallTbl3.key as key5, + join2.value1 as value1, + join2.value2 as value2 + FROM (SELECT join1.key1 as key1, + join1.key2 as key2, + join1.key3 as key3, + smallTbl2.key as key4, + join1.value1 as value1, + join1.value2 as value2 + FROM (SELECT bigTbl.key1 as key1, + bigTbl.key2 as key2, + smallTbl1.key as key3, + bigTbl.value as value1, + bigTbl.value as value2 + FROM bigTbl + JOIN smallTbl1 ON (bigTbl.key1 = smallTbl1.key)) join1 + JOIN smallTbl2 ON (join1.value1 = smallTbl2.value)) join2 + JOIN smallTbl3 ON (join2.key2 = smallTbl3.key)) join3 +JOIN smallTbl4 ON (join3.key3 = smallTbl4.key); + +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; +-- Enable noconditionaltask and set the size of hive.auto.convert.join.noconditionaltask.size +-- to 10000, which is large enough to fit all four small tables (smallTbl1 to smallTbl4). +-- We will use a single MR job to evaluate this query. +EXPLAIN +SELECT SUM(HASH(join3.key1)), + SUM(HASH(join3.key2)), + SUM(HASH(join3.key3)), + SUM(HASH(join3.key4)), + SUM(HASH(join3.key5)), + SUM(HASH(smallTbl4.key)), + SUM(HASH(join3.value1)), + SUM(HASH(join3.value2)) +FROM (SELECT join2.key1 as key1, + join2.key2 as key2, + join2.key3 as key3, + join2.key4 as key4, + smallTbl3.key as key5, + join2.value1 as value1, + join2.value2 as value2 + FROM (SELECT join1.key1 as key1, + join1.key2 as key2, + join1.key3 as key3, + smallTbl2.key as key4, + join1.value1 as value1, + join1.value2 as value2 + FROM (SELECT bigTbl.key1 as key1, + bigTbl.key2 as key2, + smallTbl1.key as key3, + bigTbl.value as value1, + bigTbl.value as value2 + FROM bigTbl + JOIN smallTbl1 ON (bigTbl.key1 = smallTbl1.key)) join1 + JOIN smallTbl2 ON (join1.value1 = smallTbl2.value)) join2 + JOIN smallTbl3 ON (join2.key2 = smallTbl3.key)) join3 +JOIN smallTbl4 ON (join3.key3 = smallTbl4.key); + +SELECT SUM(HASH(join3.key1)), + SUM(HASH(join3.key2)), + SUM(HASH(join3.key3)), + SUM(HASH(join3.key4)), + SUM(HASH(join3.key5)), + SUM(HASH(smallTbl4.key)), + SUM(HASH(join3.value1)), + SUM(HASH(join3.value2)) +FROM (SELECT join2.key1 as key1, + join2.key2 as key2, + join2.key3 as key3, + join2.key4 as key4, + smallTbl3.key as key5, + join2.value1 as value1, + join2.value2 as value2 + FROM (SELECT join1.key1 as key1, + join1.key2 as key2, + join1.key3 as key3, + smallTbl2.key as key4, + join1.value1 as value1, + join1.value2 as value2 + FROM (SELECT bigTbl.key1 as key1, + bigTbl.key2 as key2, + smallTbl1.key as key3, + bigTbl.value as value1, + bigTbl.value as value2 + FROM bigTbl + JOIN smallTbl1 ON (bigTbl.key1 = smallTbl1.key)) join1 + JOIN smallTbl2 ON (join1.value1 = smallTbl2.value)) join2 + JOIN smallTbl3 ON (join2.key2 = smallTbl3.key)) join3 +JOIN smallTbl4 ON (join3.key3 = smallTbl4.key); + +set hive.auto.convert.join.noconditionaltask.size=200; +-- Enable noconditionaltask and set the size of hive.auto.convert.join.noconditionaltask.size +-- to 200, which is large enough to fit two small tables. We will have two jobs to evaluate this +-- query. The first job is a Map-only job to evaluate join1 and join2. +-- The second job will evaluate the rest of this query. +EXPLAIN +SELECT SUM(HASH(join3.key1)), + SUM(HASH(join3.key2)), + SUM(HASH(join3.key3)), + SUM(HASH(join3.key4)), + SUM(HASH(join3.key5)), + SUM(HASH(smallTbl4.key)), + SUM(HASH(join3.value1)), + SUM(HASH(join3.value2)) +FROM (SELECT join2.key1 as key1, + join2.key2 as key2, + join2.key3 as key3, + join2.key4 as key4, + smallTbl3.key as key5, + join2.value1 as value1, + join2.value2 as value2 + FROM (SELECT join1.key1 as key1, + join1.key2 as key2, + join1.key3 as key3, + smallTbl2.key as key4, + join1.value1 as value1, + join1.value2 as value2 + FROM (SELECT bigTbl.key1 as key1, + bigTbl.key2 as key2, + smallTbl1.key as key3, + bigTbl.value as value1, + bigTbl.value as value2 + FROM bigTbl + JOIN smallTbl1 ON (bigTbl.key1 = smallTbl1.key)) join1 + JOIN smallTbl2 ON (join1.value1 = smallTbl2.value)) join2 + JOIN smallTbl3 ON (join2.key2 = smallTbl3.key)) join3 +JOIN smallTbl4 ON (join3.key3 = smallTbl4.key); + +SELECT SUM(HASH(join3.key1)), + SUM(HASH(join3.key2)), + SUM(HASH(join3.key3)), + SUM(HASH(join3.key4)), + SUM(HASH(join3.key5)), + SUM(HASH(smallTbl4.key)), + SUM(HASH(join3.value1)), + SUM(HASH(join3.value2)) +FROM (SELECT join2.key1 as key1, + join2.key2 as key2, + join2.key3 as key3, + join2.key4 as key4, + smallTbl3.key as key5, + join2.value1 as value1, + join2.value2 as value2 + FROM (SELECT join1.key1 as key1, + join1.key2 as key2, + join1.key3 as key3, + smallTbl2.key as key4, + join1.value1 as value1, + join1.value2 as value2 + FROM (SELECT bigTbl.key1 as key1, + bigTbl.key2 as key2, + smallTbl1.key as key3, + bigTbl.value as value1, + bigTbl.value as value2 + FROM bigTbl + JOIN smallTbl1 ON (bigTbl.key1 = smallTbl1.key)) join1 + JOIN smallTbl2 ON (join1.value1 = smallTbl2.value)) join2 + JOIN smallTbl3 ON (join2.key2 = smallTbl3.key)) join3 +JOIN smallTbl4 ON (join3.key3 = smallTbl4.key); + +set hive.auto.convert.join.noconditionaltask.size=0; +-- Enable noconditionaltask and but set the size of hive.auto.convert.join.noconditionaltask.size +-- to 0. The plan will be the same as the one with a disabled nonconditionaltask. +EXPLAIN +SELECT SUM(HASH(join3.key1)), + SUM(HASH(join3.key2)), + SUM(HASH(join3.key3)), + SUM(HASH(join3.key4)), + SUM(HASH(join3.key5)), + SUM(HASH(smallTbl4.key)), + SUM(HASH(join3.value1)), + SUM(HASH(join3.value2)) +FROM (SELECT join2.key1 as key1, + join2.key2 as key2, + join2.key3 as key3, + join2.key4 as key4, + smallTbl3.key as key5, + join2.value1 as value1, + join2.value2 as value2 + FROM (SELECT join1.key1 as key1, + join1.key2 as key2, + join1.key3 as key3, + smallTbl2.key as key4, + join1.value1 as value1, + join1.value2 as value2 + FROM (SELECT bigTbl.key1 as key1, + bigTbl.key2 as key2, + smallTbl1.key as key3, + bigTbl.value as value1, + bigTbl.value as value2 + FROM bigTbl + JOIN smallTbl1 ON (bigTbl.key1 = smallTbl1.key)) join1 + JOIN smallTbl2 ON (join1.value1 = smallTbl2.value)) join2 + JOIN smallTbl3 ON (join2.key2 = smallTbl3.key)) join3 +JOIN smallTbl4 ON (join3.key3 = smallTbl4.key); + +SELECT SUM(HASH(join3.key1)), + SUM(HASH(join3.key2)), + SUM(HASH(join3.key3)), + SUM(HASH(join3.key4)), + SUM(HASH(join3.key5)), + SUM(HASH(smallTbl4.key)), + SUM(HASH(join3.value1)), + SUM(HASH(join3.value2)) +FROM (SELECT join2.key1 as key1, + join2.key2 as key2, + join2.key3 as key3, + join2.key4 as key4, + smallTbl3.key as key5, + join2.value1 as value1, + join2.value2 as value2 + FROM (SELECT join1.key1 as key1, + join1.key2 as key2, + join1.key3 as key3, + smallTbl2.key as key4, + join1.value1 as value1, + join1.value2 as value2 + FROM (SELECT bigTbl.key1 as key1, + bigTbl.key2 as key2, + smallTbl1.key as key3, + bigTbl.value as value1, + bigTbl.value as value2 + FROM bigTbl + JOIN smallTbl1 ON (bigTbl.key1 = smallTbl1.key)) join1 + JOIN smallTbl2 ON (join1.value1 = smallTbl2.value)) join2 + JOIN smallTbl3 ON (join2.key2 = smallTbl3.key)) join3 +JOIN smallTbl4 ON (join3.key3 = smallTbl4.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multiMapJoin2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multiMapJoin2.q new file mode 100644 index 0000000000000..ce6cf6d8d6c0d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multiMapJoin2.q @@ -0,0 +1,189 @@ +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=6000; + +-- we will generate one MR job. +EXPLAIN +SELECT tmp.key +FROM (SELECT x1.key AS key FROM src x1 JOIN src1 y1 ON (x1.key = y1.key) + UNION ALL + SELECT x2.key AS key FROM src x2 JOIN src1 y2 ON (x2.key = y2.key)) tmp +ORDER BY tmp.key; + +SELECT tmp.key +FROM (SELECT x1.key AS key FROM src x1 JOIN src1 y1 ON (x1.key = y1.key) + UNION ALL + SELECT x2.key AS key FROM src x2 JOIN src1 y2 ON (x2.key = y2.key)) tmp +ORDER BY tmp.key; + +set hive.auto.convert.join.noconditionaltask.size=400; +-- Check if the total size of local tables will be +-- larger than the limit that +-- we set through hive.auto.convert.join.noconditionaltask.size (right now, it is +-- 400 bytes). If so, do not merge. +-- For this query, we will merge the MapJoin of x2 and y2 into the MR job +-- for UNION ALL and ORDER BY. But, the MapJoin of x1 and y2 will not be merged +-- into that MR job. +EXPLAIN +SELECT tmp.key +FROM (SELECT x1.key AS key FROM src x1 JOIN src1 y1 ON (x1.key = y1.key) + UNION ALL + SELECT x2.key AS key FROM src x2 JOIN src1 y2 ON (x2.key = y2.key)) tmp +ORDER BY tmp.key; + +SELECT tmp.key +FROM (SELECT x1.key AS key FROM src x1 JOIN src1 y1 ON (x1.key = y1.key) + UNION ALL + SELECT x2.key AS key FROM src x2 JOIN src1 y2 ON (x2.key = y2.key)) tmp +ORDER BY tmp.key; + +set hive.auto.convert.join.noconditionaltask.size=6000; +-- We will use two jobs. +-- We will generate one MR job for GROUP BY +-- on x1, one MR job for both the MapJoin of x2 and y2, the UNION ALL, and the +-- ORDER BY. +EXPLAIN +SELECT tmp.key +FROM (SELECT x1.key AS key FROM src1 x1 GROUP BY x1.key + UNION ALL + SELECT x2.key AS key FROM src x2 JOIN src1 y2 ON (x2.key = y2.key)) tmp +ORDER BY tmp.key; + +SELECT tmp.key +FROM (SELECT x1.key AS key FROM src1 x1 GROUP BY x1.key + UNION ALL + SELECT x2.key AS key FROM src x2 JOIN src1 y2 ON (x2.key = y2.key)) tmp +ORDER BY tmp.key; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is disabled, +-- we will use 5 jobs. +-- We will generate one MR job to evaluate the sub-query tmp1, +-- one MR job to evaluate the sub-query tmp2, +-- one MR job for the Join of tmp1 and tmp2, +-- one MR job for aggregation on the result of the Join of tmp1 and tmp2, +-- and one MR job for the ORDER BY. +EXPLAIN +SELECT tmp1.key as key, count(*) as cnt +FROM (SELECT x1.key AS key + FROM src x1 JOIN src1 y1 ON (x1.key = y1.key) + GROUP BY x1.key) tmp1 +JOIN (SELECT x2.key AS key + FROM src x2 JOIN src1 y2 ON (x2.key = y2.key) + GROUP BY x2.key) tmp2 +ON (tmp1.key = tmp2.key) +GROUP BY tmp1.key +ORDER BY key, cnt; + +SELECT tmp1.key as key, count(*) as cnt +FROM (SELECT x1.key AS key + FROM src x1 JOIN src1 y1 ON (x1.key = y1.key) + GROUP BY x1.key) tmp1 +JOIN (SELECT x2.key AS key + FROM src x2 JOIN src1 y2 ON (x2.key = y2.key) + GROUP BY x2.key) tmp2 +ON (tmp1.key = tmp2.key) +GROUP BY tmp1.key +ORDER BY key, cnt; + +set hive.optimize.correlation=true; +-- When Correlation Optimizer is enabled, +-- we will use two jobs. This first MR job will evaluate sub-queries of tmp1, tmp2, +-- the Join of tmp1 and tmp2, and the aggregation on the result of the Join of +-- tmp1 and tmp2. The second job will do the ORDER BY. +EXPLAIN +SELECT tmp1.key as key, count(*) as cnt +FROM (SELECT x1.key AS key + FROM src x1 JOIN src1 y1 ON (x1.key = y1.key) + GROUP BY x1.key) tmp1 +JOIN (SELECT x2.key AS key + FROM src x2 JOIN src1 y2 ON (x2.key = y2.key) + GROUP BY x2.key) tmp2 +ON (tmp1.key = tmp2.key) +GROUP BY tmp1.key +ORDER BY key, cnt; + +SELECT tmp1.key as key, count(*) as cnt +FROM (SELECT x1.key AS key + FROM src x1 JOIN src1 y1 ON (x1.key = y1.key) + GROUP BY x1.key) tmp1 +JOIN (SELECT x2.key AS key + FROM src x2 JOIN src1 y2 ON (x2.key = y2.key) + GROUP BY x2.key) tmp2 +ON (tmp1.key = tmp2.key) +GROUP BY tmp1.key +ORDER BY key, cnt; + +set hive.optimize.correlation=false; +-- When Correlation Optimizer is disabled, +-- we will use five jobs. +-- We will generate one MR job to evaluate the sub-query tmp1, +-- one MR job to evaluate the sub-query tmp2, +-- one MR job for the Join of tmp1 and tmp2, +-- one MR job for aggregation on the result of the Join of tmp1 and tmp2, +-- and one MR job for the ORDER BY. +EXPLAIN +SELECT tmp1.key as key, count(*) as cnt +FROM (SELECT x1.key AS key + FROM src1 x1 + GROUP BY x1.key) tmp1 +JOIN (SELECT x2.key AS key + FROM src x2 JOIN src1 y2 ON (x2.key = y2.key) + GROUP BY x2.key) tmp2 +ON (tmp1.key = tmp2.key) +GROUP BY tmp1.key +ORDER BY key, cnt; + +SELECT tmp1.key as key, count(*) as cnt +FROM (SELECT x1.key AS key + FROM src1 x1 + GROUP BY x1.key) tmp1 +JOIN (SELECT x2.key AS key + FROM src x2 JOIN src1 y2 ON (x2.key = y2.key) + GROUP BY x2.key) tmp2 +ON (tmp1.key = tmp2.key) +GROUP BY tmp1.key +ORDER BY key, cnt; + +set hive.optimize.correlation=true; +-- When Correlation Optimizer is enabled, +-- we will use two job. This first MR job will evaluate sub-queries of tmp1, tmp2, +-- the Join of tmp1 and tmp2, and the aggregation on the result of the Join of +-- tmp1 and tmp2. The second job will do the ORDER BY. +EXPLAIN +SELECT tmp1.key as key, count(*) as cnt +FROM (SELECT x1.key AS key + FROM src1 x1 + GROUP BY x1.key) tmp1 +JOIN (SELECT x2.key AS key + FROM src x2 JOIN src1 y2 ON (x2.key = y2.key) + GROUP BY x2.key) tmp2 +ON (tmp1.key = tmp2.key) +GROUP BY tmp1.key +ORDER BY key, cnt; + +SELECT tmp1.key as key, count(*) as cnt +FROM (SELECT x1.key AS key + FROM src1 x1 + GROUP BY x1.key) tmp1 +JOIN (SELECT x2.key AS key + FROM src x2 JOIN src1 y2 ON (x2.key = y2.key) + GROUP BY x2.key) tmp2 +ON (tmp1.key = tmp2.key) +GROUP BY tmp1.key +ORDER BY key, cnt; + +-- Check if we can correctly handle partitioned table. +CREATE TABLE part_table(key string, value string) PARTITIONED BY (partitionId int); +INSERT OVERWRITE TABLE part_table PARTITION (partitionId=1) + SELECT key, value FROM src ORDER BY key, value LIMIT 100; +INSERT OVERWRITE TABLE part_table PARTITION (partitionId=2) + SELECT key, value FROM src1 ORDER BY key, value; + +EXPLAIN +SELECT count(*) +FROM part_table x JOIN src1 y ON (x.key = y.key); + +SELECT count(*) +FROM part_table x JOIN src1 y ON (x.key = y.key); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert.q new file mode 100644 index 0000000000000..718211b968ccd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert.q @@ -0,0 +1,266 @@ + + +create table src_multi1 like src; +create table src_multi2 like src; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +explain +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + +explain +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/hive_test/multiins_local/temp; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby.q new file mode 100644 index 0000000000000..3aac82ec5a95c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby.q @@ -0,0 +1,33 @@ +--HIVE-3699 Multiple insert overwrite into multiple tables query stores same results in all tables +create table e1 (key string, count int); +create table e2 (key string, count int); + +explain FROM src +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(*) WHERE key>450 GROUP BY key ORDER BY key +INSERT OVERWRITE TABLE e2 + SELECT key, COUNT(*) WHERE key>500 GROUP BY key ORDER BY key; + +FROM src +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(*) WHERE key>450 GROUP BY key ORDER BY key +INSERT OVERWRITE TABLE e2 + SELECT key, COUNT(*) WHERE key>500 GROUP BY key ORDER BY key; + +select * from e1; +select * from e2; + +explain FROM src +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(*) WHERE key>450 GROUP BY key ORDER BY key +INSERT OVERWRITE TABLE e2 + SELECT key, COUNT(*) GROUP BY key ORDER BY key; + +FROM src +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(*) WHERE key>450 GROUP BY key ORDER BY key +INSERT OVERWRITE TABLE e2 + SELECT key, COUNT(*) GROUP BY key ORDER BY key; + +select * from e1; +select * from e2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby2.q new file mode 100644 index 0000000000000..46e2b19576856 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby2.q @@ -0,0 +1,19 @@ +--HIVE-3699 Multiple insert overwrite into multiple tables query stores same results in all tables +create table e1 (count int); +create table e2 (percentile double); + +explain +FROM (select key, cast(key as double) as value from src order by key) a +INSERT OVERWRITE TABLE e1 + SELECT COUNT(*) +INSERT OVERWRITE TABLE e2 + SELECT percentile_approx(value, 0.5); + +FROM (select key, cast(key as double) as value from src order by key) a +INSERT OVERWRITE TABLE e1 + SELECT COUNT(*) +INSERT OVERWRITE TABLE e2 + SELECT percentile_approx(value, 0.5); + +select * from e1; +select * from e2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby3.q new file mode 100644 index 0000000000000..040adca5c2e26 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_gby3.q @@ -0,0 +1,52 @@ +create table e1 (key string, keyD double); +create table e2 (key string, keyD double, value string); +create table e3 (key string, keyD double); + +explain +FROM (select key, cast(key as double) as keyD, value from src order by key) a +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(distinct value) group by key +INSERT OVERWRITE TABLE e2 + SELECT key, sum(keyD), value group by key, value; + +explain +FROM (select key, cast(key as double) as keyD, value from src order by key) a +INSERT OVERWRITE TABLE e2 + SELECT key, sum(keyD), value group by key, value +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(distinct value) group by key; + +FROM (select key, cast(key as double) as keyD, value from src order by key) a +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(distinct value) group by key +INSERT OVERWRITE TABLE e2 + SELECT key, sum(keyD), value group by key, value; + +select * from e1; +select * from e2; + +FROM (select key, cast(key as double) as keyD, value from src order by key) a +INSERT OVERWRITE TABLE e2 + SELECT key, sum(keyD), value group by key, value +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(distinct value) group by key; + +select * from e1; +select * from e2; + +explain +from src +insert overwrite table e1 +select key, count(distinct value) group by key +insert overwrite table e3 +select value, count(distinct key) group by value; + + +explain +FROM (select key, cast(key as double) as keyD, value from src order by key) a +INSERT OVERWRITE TABLE e1 + SELECT key, COUNT(distinct value) group by key +INSERT OVERWRITE TABLE e2 + SELECT key, sum(keyD), value group by key, value +INSERT overwrite table e3 + SELECT key, COUNT(distinct keyD) group by key, keyD, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_lateral_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_lateral_view.q new file mode 100644 index 0000000000000..eb1b9ed3b437a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_lateral_view.q @@ -0,0 +1,102 @@ +create table src_10 as select * from src limit 10; + +create table src_lv1 (key string, value string); +create table src_lv2 (key string, value string); +create table src_lv3 (key string, value string); + +-- 2LV +-- TS[0]-LVF[1]-SEL[2]-LVJ[5]-SEL[11]-FS[12] +-- -SEL[3]-UDTF[4]-LVJ[5] +-- -LVF[6]-SEL[7]-LVJ[10]-SEL[13]-FS[14] +-- -SEL[8]-UDTF[9]-LVJ[10] +explain +from src_10 +insert overwrite table src_lv1 select key, C lateral view explode(array(key+1, key+2)) A as C +insert overwrite table src_lv2 select key, C lateral view explode(array(key+3, key+4)) A as C; + +from src_10 +insert overwrite table src_lv1 select key, C lateral view explode(array(key+1, key+2)) A as C +insert overwrite table src_lv2 select key, C lateral view explode(array(key+3, key+4)) A as C; + +select * from src_lv1 order by key, value; +select * from src_lv2 order by key, value; + +-- 2(LV+GBY) +-- TS[0]-LVF[1]-SEL[2]-LVJ[5]-SEL[11]-GBY[12]-RS[13]-GBY[14]-SEL[15]-FS[16] +-- -SEL[3]-UDTF[4]-LVJ[5] +-- -LVF[6]-SEL[7]-LVJ[10]-SEL[17]-GBY[18]-RS[19]-GBY[20]-SEL[21]-FS[22] +-- -SEL[8]-UDTF[9]-LVJ[10] +explain +from src_10 +insert overwrite table src_lv1 select key, sum(C) lateral view explode(array(key+1, key+2)) A as C group by key +insert overwrite table src_lv2 select key, sum(C) lateral view explode(array(key+3, key+4)) A as C group by key; + +from src_10 +insert overwrite table src_lv1 select key, sum(C) lateral view explode(array(key+1, key+2)) A as C group by key +insert overwrite table src_lv2 select key, sum(C) lateral view explode(array(key+3, key+4)) A as C group by key; + +select * from src_lv1 order by key, value; +select * from src_lv2 order by key, value; + +-- (LV+GBY) + RS:2GBY +-- TS[0]-LVF[1]-SEL[2]-LVJ[5]-SEL[6]-GBY[7]-RS[8]-GBY[9]-SEL[10]-FS[11] +-- -SEL[3]-UDTF[4]-LVJ[5] +-- -FIL[12]-SEL[13]-RS[14]-FOR[15]-FIL[16]-GBY[17]-SEL[18]-FS[19] +-- -FIL[20]-GBY[21]-SEL[22]-FS[23] +explain +from src_10 +insert overwrite table src_lv1 select key, sum(C) lateral view explode(array(key+1, key+2)) A as C group by key +insert overwrite table src_lv2 select key, count(value) where key > 200 group by key +insert overwrite table src_lv3 select key, count(value) where key < 200 group by key; + +from src_10 +insert overwrite table src_lv1 select key, sum(C) lateral view explode(array(key+1, key+2)) A as C group by key +insert overwrite table src_lv2 select key, count(value) where key > 200 group by key +insert overwrite table src_lv3 select key, count(value) where key < 200 group by key; + +select * from src_lv1 order by key, value; +select * from src_lv2 order by key, value; +select * from src_lv3 order by key, value; + +-- todo: shared distinct columns (should work with hive.optimize.multigroupby.common.distincts) +-- 2(LV+GBY) + RS:2GBY +-- TS[0]-LVF[1]-SEL[2]-LVJ[5]-SEL[11]-GBY[12]-RS[13]-GBY[14]-SEL[15]-FS[16] +-- -SEL[3]-UDTF[4]-LVJ[5] +-- -LVF[6]-SEL[7]-LVJ[10]-SEL[17]-GBY[18]-RS[19]-GBY[20]-SEL[21]-FS[22] +-- -SEL[8]-UDTF[9]-LVJ[10] +-- -SEL[23]-GBY[24]-RS[25]-GBY[26]-SEL[27]-FS[28] +explain +from src_10 +insert overwrite table src_lv1 select C, sum(distinct key) lateral view explode(array(key+1, key+2)) A as C group by C +insert overwrite table src_lv2 select C, sum(distinct key) lateral view explode(array(key+3, key+4)) A as C group by C +insert overwrite table src_lv3 select value, sum(distinct key) group by value; + +from src_10 +insert overwrite table src_lv1 select C, sum(distinct key) lateral view explode(array(key+1, key+2)) A as C group by C +insert overwrite table src_lv2 select C, sum(distinct key) lateral view explode(array(key+3, key+4)) A as C group by C +insert overwrite table src_lv3 select value, sum(distinct key) group by value; + +select * from src_lv1 order by key, value; +select * from src_lv2 order by key, value; +select * from src_lv3 order by key, value; + +create table src_lv4 (key string, value string); + +-- Common distincts optimization works across non-lateral view queries, but not across lateral view multi inserts +explain +from src_10 +insert overwrite table src_lv1 select key, sum(distinct C) lateral view explode(array(key+1, key+2)) A as C group by key +insert overwrite table src_lv2 select key, sum(distinct C) lateral view explode(array(key+3, key+4)) A as C group by key +insert overwrite table src_lv3 select value, sum(distinct key) where key > 200 group by value +insert overwrite table src_lv4 select value, sum(distinct key) where key < 200 group by value; + +from src_10 +insert overwrite table src_lv1 select key, sum(distinct C) lateral view explode(array(key+1, key+2)) A as C group by key +insert overwrite table src_lv2 select key, sum(distinct C) lateral view explode(array(key+3, key+4)) A as C group by key +insert overwrite table src_lv3 select value, sum(distinct key) where key > 200 group by value +insert overwrite table src_lv4 select value, sum(distinct key) where key < 200 group by value; + +select * from src_lv1 order by key, value; +select * from src_lv2 order by key, value; +select * from src_lv3 order by key, value; +select * from src_lv4 order by key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_move_tasks_share_dependencies.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_move_tasks_share_dependencies.q new file mode 100644 index 0000000000000..e30992b2cde6b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_insert_move_tasks_share_dependencies.q @@ -0,0 +1,414 @@ +set hive.multi.insert.move.tasks.share.dependencies=true; + +create table src_multi1 like src; +create table src_multi2 like src; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +from src +insert overwrite table src_multi1 select * where key < 10 group by key, value +insert overwrite table src_multi2 select * where key > 10 and key < 20 group by key, value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +explain +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + +explain +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +from (select * from src union all select * from src) s +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/hive_test/multiins_local/temp; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/0' select * where key = 0 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key = 2 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/4' select * where key = 4; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +from src +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=false; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +explain +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +from src +insert overwrite table src_multi1 select * where key < 10 +insert overwrite table src_multi2 select * where key > 10 and key < 20 +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/1' select * where key < 10 group by key, value cluster by key +insert overwrite local directory '${system:test.tmp.dir}/hive_test/multiins_local/2' select * where key > 10 and key < 20 group by key, value cluster by value; + +select * from src_multi1 order by key, value; +select * from src_multi2 order by key, value; + +dfs -ls ${system:test.tmp.dir}/hive_test/multiins_local; +dfs -rmr ${system:test.tmp.dir}/hive_test/multiins_local; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_join_union.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_join_union.q new file mode 100644 index 0000000000000..39650fd4a1ef1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_join_union.q @@ -0,0 +1,13 @@ + +set hive.auto.convert.join=true; + +CREATE TABLE src11 as SELECT * FROM src; +CREATE TABLE src12 as SELECT * FROM src; +CREATE TABLE src13 as SELECT * FROM src; +CREATE TABLE src14 as SELECT * FROM src; + + +EXPLAIN SELECT * FROM +src11 a JOIN +src12 b ON (a.key = b.key) JOIN +(SELECT * FROM (SELECT * FROM src13 UNION ALL SELECT * FROM src14)a )c ON c.value = b.value; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_sahooks.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_sahooks.q new file mode 100644 index 0000000000000..a6cd1ef940018 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multi_sahooks.q @@ -0,0 +1,30 @@ +set hive.semantic.analyzer.hook=org.apache.hadoop.hive.ql.metadata.DummySemanticAnalyzerHook1; + +drop table tbl_sahook; +create table tbl_sahook (c string); +desc extended tbl_sahook; +drop table tbl_sahook; + +set hive.semantic.analyzer.hook=org.apache.hadoop.hive.ql.metadata.DummySemanticAnalyzerHook1,org.apache.hadoop.hive.ql.metadata.DummySemanticAnalyzerHook; + +drop table tbl_sahooks; +create table tbl_sahooks (c string); +desc extended tbl_sahooks; +drop table tbl_sahooks; + +set hive.semantic.analyzer.hook=org.apache.hadoop.hive.ql.metadata.DummySemanticAnalyzerHook,org.apache.hadoop.hive.ql.metadata.DummySemanticAnalyzerHook1; + +drop table tbl_sahooks; +create table tbl_sahooks (c string); +desc extended tbl_sahooks; +drop table tbl_sahooks; + +set hive.semantic.analyzer.hook=org.apache.hadoop.hive.ql.metadata.DummySemanticAnalyzerHook1,org.apache.hadoop.hive.ql.metadata.DummySemanticAnalyzerHook1; + +drop table tbl_sahooks; +create table tbl_sahooks (c string); +desc extended tbl_sahooks; + +set hive.semantic.analyzer.hook=; +drop table tbl_sahooks; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multigroupby_singlemr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multigroupby_singlemr.q new file mode 100644 index 0000000000000..a4e86ade476a7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/multigroupby_singlemr.q @@ -0,0 +1,33 @@ +CREATE TABLE TBL(C1 INT, C2 INT, C3 INT, C4 INT); + +CREATE TABLE DEST1(d1 INT, d2 INT) STORED AS TEXTFILE; +CREATE TABLE DEST2(d1 INT, d2 INT, d3 INT) STORED AS TEXTFILE; +CREATE TABLE DEST3(d1 INT, d2 INT, d3 INT, d4 INT) STORED AS TEXTFILE; +CREATE TABLE DEST4(d1 INT, d2 INT, d3 INT, d4 INT) STORED AS TEXTFILE; + +EXPLAIN +FROM TBL +INSERT OVERWRITE TABLE DEST1 SELECT TBL.C1, COUNT(TBL.C2) GROUP BY TBL.C1 +INSERT OVERWRITE TABLE DEST2 SELECT TBL.C1, TBL.C2, COUNT(TBL.C3) GROUP BY TBL.C1, TBL.C2; + +EXPLAIN +FROM TBL +INSERT OVERWRITE TABLE DEST1 SELECT TBL.C1, COUNT(TBL.C2) GROUP BY TBL.C1 +INSERT OVERWRITE TABLE DEST2 SELECT TBL.C1, TBL.C2, COUNT(TBL.C3) GROUP BY TBL.C2, TBL.C1; + +EXPLAIN +FROM TBL +INSERT OVERWRITE TABLE DEST3 SELECT TBL.C1, TBL.C2, TBL.C3, COUNT(TBL.C4) GROUP BY TBL.C1, TBL.C2, TBL.C3 +INSERT OVERWRITE TABLE DEST2 SELECT TBL.C1, TBL.C2, COUNT(TBL.C3) GROUP BY TBL.C1, TBL.C2; + +EXPLAIN +FROM TBL +INSERT OVERWRITE TABLE DEST3 SELECT TBL.C1, TBL.C2, TBL.C3, COUNT(TBL.C4) GROUP BY TBL.C1, TBL.C2, TBL.C3 +INSERT OVERWRITE TABLE DEST4 SELECT TBL.C1, TBL.C2, TBL.C3, COUNT(TBL.C4) GROUP BY TBL.C1, TBL.C3, TBL.C2; + + +EXPLAIN +FROM TBL +INSERT OVERWRITE TABLE DEST3 SELECT TBL.C1, TBL.C2, TBL.C3, COUNT(TBL.C4) GROUP BY TBL.C1, TBL.C2, TBL.C3 +INSERT OVERWRITE TABLE DEST2 SELECT TBL.C1, TBL.C2, COUNT(TBL.C3) GROUP BY TBL.C1, TBL.C2 +INSERT OVERWRITE TABLE DEST1 SELECT TBL.C1, COUNT(TBL.C2) GROUP BY TBL.C1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nested_complex.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nested_complex.q new file mode 100644 index 0000000000000..b94fbb7b8be43 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nested_complex.q @@ -0,0 +1,22 @@ + +create table nestedcomplex ( +simple_int int, +max_nested_array array>>>>>>>>>>>>>>>>>>>>>>, +max_nested_map array>>>>>>>>>>>>>>>>>>>>>, +max_nested_struct array>>>>>>>>>>>>>>>>>>>>>>, +simple_string string) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' +WITH SERDEPROPERTIES ( + 'hive.serialization.extend.nesting.levels'='true', + 'line.delim'='\n' +) +; + +describe nestedcomplex; +describe extended nestedcomplex; + + +load data local inpath '../data/files/nested_complex.txt' overwrite into table nestedcomplex; + +select * from nestedcomplex sort by simple_int; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nestedvirtual.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nestedvirtual.q new file mode 100644 index 0000000000000..7b80941b8c396 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nestedvirtual.q @@ -0,0 +1,27 @@ +CREATE TABLE pokes (foo INT, bar STRING); +create table pokes2(foo INT, bar STRING); + +create table jssarma_nilzma_bad as select a.val, a.filename, a.offset from (select hash(foo) as val, INPUT__FILE__NAME as filename, BLOCK__OFFSET__INSIDE__FILE as offset from pokes) a join pokes2 b on (a.val = b.foo); + +drop table jssarma_nilzma_bad; + +drop table pokes; +drop table pokes2; +CREATE TABLE pokes (foo INT, bar STRING); +create table pokes2(foo INT, bar STRING); + +create table jssarma_nilzma_bad as select a.val, a.filename, a.offset from (select hash(foo) as val, INPUT__FILE__NAME as filename, BLOCK__OFFSET__INSIDE__FILE as offset from pokes) a join pokes2 b on (a.val = b.foo); + +drop table jssarma_nilzma_bad; + +drop table pokes; +drop table pokes2; +CREATE TABLE pokes (foo INT, bar STRING); +create table pokes2(foo INT, bar STRING); + +create table jssarma_nilzma_bad as select a.val, a.filename, a.offset from (select hash(foo) as val, INPUT__FILE__NAME as filename, BLOCK__OFFSET__INSIDE__FILE as offset from pokes) a join pokes2 b on (a.val = b.foo); + +drop table jssarma_nilzma_bad; + +drop table pokes; +drop table pokes2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/newline.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/newline.q new file mode 100644 index 0000000000000..722ecf6d972ca --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/newline.q @@ -0,0 +1,57 @@ +add file ../data/scripts/newline.py; +set hive.transform.escape.input=true; + +create table tmp_tmp(key string, value string) stored as rcfile; +insert overwrite table tmp_tmp +SELECT TRANSFORM(key, value) USING +'python newline.py' AS key, value FROM src limit 6; + +select * from tmp_tmp ORDER BY key ASC, value ASC; + +drop table tmp_tmp; + +add file ../data/scripts/escapednewline.py; +add file ../data/scripts/escapedtab.py; +add file ../data/scripts/doubleescapedtab.py; +add file ../data/scripts/escapedcarriagereturn.py; + +create table tmp_tmp(key string, value string) stored as rcfile; +insert overwrite table tmp_tmp +SELECT TRANSFORM(key, value) USING +'python escapednewline.py' AS key, value FROM src limit 5; + +select * from tmp_tmp ORDER BY key ASC, value ASC; + +SELECT TRANSFORM(key, value) USING +'cat' AS (key, value) FROM tmp_tmp; + +insert overwrite table tmp_tmp +SELECT TRANSFORM(key, value) USING +'python escapedcarriagereturn.py' AS key, value FROM src limit 5; + +select * from tmp_tmp ORDER BY key ASC, value ASC; + +SELECT TRANSFORM(key, value) USING +'cat' AS (key, value) FROM tmp_tmp; + +insert overwrite table tmp_tmp +SELECT TRANSFORM(key, value) USING +'python escapedtab.py' AS key, value FROM src limit 5; + +select * from tmp_tmp ORDER BY key ASC, value ASC; + +SELECT TRANSFORM(key, value) USING +'cat' AS (key, value) FROM tmp_tmp; + +insert overwrite table tmp_tmp +SELECT TRANSFORM(key, value) USING +'python doubleescapedtab.py' AS key, value FROM src limit 5; + +select * from tmp_tmp ORDER BY key ASC, value ASC; + +SELECT TRANSFORM(key, value) USING +'cat' AS (key, value) FROM tmp_tmp; + +SELECT key FROM (SELECT TRANSFORM ('a\tb', 'c') USING 'cat' AS (key, value) FROM src limit 1)a ORDER BY key ASC; + +SELECT value FROM (SELECT TRANSFORM ('a\tb', 'c') USING 'cat' AS (key, value) FROM src limit 1)a ORDER BY value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/no_hooks.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/no_hooks.q new file mode 100644 index 0000000000000..bbd1feaa37533 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/no_hooks.q @@ -0,0 +1,6 @@ +set hive.exec.pre.hooks=; + +EXPLAIN +SELECT * FROM src src1 JOIN src src2 WHERE src1.key < 10 and src2.key < 10 SORT BY src1.key, src1.value, src2.key, src2.value; + +SELECT * FROM src src1 JOIN src src2 WHERE src1.key < 10 and src2.key < 10 SORT BY src1.key, src1.value, src2.key, src2.value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/noalias_subq1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/noalias_subq1.q new file mode 100644 index 0000000000000..dca8a42badb89 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/noalias_subq1.q @@ -0,0 +1,5 @@ +EXPLAIN +SELECT c1 FROM (select value as c1, key as c2 from src) x where c2 < 100; + +SELECT c1 FROM (select value as c1, key as c2 from src) x where c2 < 100; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nomore_ambiguous_table_col.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nomore_ambiguous_table_col.q new file mode 100644 index 0000000000000..6795475699583 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nomore_ambiguous_table_col.q @@ -0,0 +1,9 @@ +-- was negative/ambiguous_table_col.q + +drop table ambiguous; +create table ambiguous (key string, value string); + +FROM src key +INSERT OVERWRITE TABLE ambiguous SELECT key.key, key.value WHERE key.value < 'val_100'; + +drop table ambiguous; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonblock_op_deduplicate.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonblock_op_deduplicate.q new file mode 100644 index 0000000000000..a9cb7d0217540 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonblock_op_deduplicate.q @@ -0,0 +1,45 @@ +-- negative, references twice for result of funcion +explain select nkey, nkey + 1 from (select key + 1 as nkey, value from src) a; + +set hive.auto.convert.join=false; +-- This test query is introduced for HIVE-4968. +-- First, we do not convert the join to MapJoin. +EXPLAIN +SELECT tmp4.key as key, tmp4.value as value, tmp4.count as count +FROM (SELECT tmp2.key as key, tmp2.value as value, tmp3.count as count + FROM (SELECT * + FROM (SELECT key, value + FROM src1) tmp1 ) tmp2 + JOIN (SELECT count(*) as count + FROM src1) tmp3 + ) tmp4 order by key, value, count; + +SELECT tmp4.key as key, tmp4.value as value, tmp4.count as count +FROM (SELECT tmp2.key as key, tmp2.value as value, tmp3.count as count + FROM (SELECT * + FROM (SELECT key, value + FROM src1) tmp1 ) tmp2 + JOIN (SELECT count(*) as count + FROM src1) tmp3 + ) tmp4 order by key, value, count; + +set hive.auto.convert.join=true; +-- Then, we convert the join to MapJoin. +EXPLAIN +SELECT tmp4.key as key, tmp4.value as value, tmp4.count as count +FROM (SELECT tmp2.key as key, tmp2.value as value, tmp3.count as count + FROM (SELECT * + FROM (SELECT key, value + FROM src1) tmp1 ) tmp2 + JOIN (SELECT count(*) as count + FROM src1) tmp3 + ) tmp4 order by key, value, count; + +SELECT tmp4.key as key, tmp4.value as value, tmp4.count as count +FROM (SELECT tmp2.key as key, tmp2.value as value, tmp3.count as count + FROM (SELECT * + FROM (SELECT key, value + FROM src1) tmp1 ) tmp2 + JOIN (SELECT count(*) as count + FROM src1) tmp3 + ) tmp4 order by key, value, count; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonmr_fetch.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonmr_fetch.q new file mode 100644 index 0000000000000..e961e93a18790 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonmr_fetch.q @@ -0,0 +1,83 @@ +set hive.fetch.task.conversion=minimal; + +-- backward compatible (minimal) +explain select * from src limit 10; +select * from src limit 10; + +explain select * from srcpart where ds='2008-04-08' AND hr='11' limit 10; +select * from srcpart where ds='2008-04-08' AND hr='11' limit 10; + +-- negative, select expression +explain select key from src limit 10; +select key from src limit 10; + +-- negative, filter on non-partition column +explain select * from srcpart where key > 100 limit 10; +select * from srcpart where key > 100 limit 10; + +-- negative, table sampling +explain select * from src TABLESAMPLE (0.25 PERCENT) limit 10; +select * from src TABLESAMPLE (0.25 PERCENT) limit 10; + +set hive.fetch.task.conversion=more; + +-- backward compatible (more) +explain select * from src limit 10; +select * from src limit 10; + +explain select * from srcpart where ds='2008-04-08' AND hr='11' limit 10; +select * from srcpart where ds='2008-04-08' AND hr='11' limit 10; + +-- select expression +explain select cast(key as int) * 10, upper(value) from src limit 10; +select cast(key as int) * 10, upper(value) from src limit 10; + +-- filter on non-partition column +explain select key from src where key < 100 limit 10; +select key from src where key < 100 limit 10; + +-- select expr for partitioned table +explain select key from srcpart where ds='2008-04-08' AND hr='11' limit 10; +select key from srcpart where ds='2008-04-08' AND hr='11' limit 10; + +-- virtual columns +explain select *, BLOCK__OFFSET__INSIDE__FILE from src where key < 10 limit 10; +select *, BLOCK__OFFSET__INSIDE__FILE from src where key < 100 limit 10; + +-- virtual columns on partitioned table +explain select *, BLOCK__OFFSET__INSIDE__FILE from srcpart where key < 10 limit 30; +select *, BLOCK__OFFSET__INSIDE__FILE from srcpart where key < 10 limit 30; + +-- bucket sampling +explain select *, BLOCK__OFFSET__INSIDE__FILE from src TABLESAMPLE (BUCKET 1 OUT OF 40 ON key); +select *, BLOCK__OFFSET__INSIDE__FILE from src TABLESAMPLE (BUCKET 1 OUT OF 40 ON key); +explain select *, BLOCK__OFFSET__INSIDE__FILE from srcpart TABLESAMPLE (BUCKET 1 OUT OF 40 ON key); +select *, BLOCK__OFFSET__INSIDE__FILE from srcpart TABLESAMPLE (BUCKET 1 OUT OF 40 ON key); + +-- split sampling +explain select * from src TABLESAMPLE (0.25 PERCENT); +select * from src TABLESAMPLE (0.25 PERCENT); +explain select *, BLOCK__OFFSET__INSIDE__FILE from srcpart TABLESAMPLE (0.25 PERCENT); +select *, BLOCK__OFFSET__INSIDE__FILE from srcpart TABLESAMPLE (0.25 PERCENT); + +-- non deterministic func +explain select key, value, BLOCK__OFFSET__INSIDE__FILE from srcpart where ds="2008-04-09" AND rand() > 1; +select key, value, BLOCK__OFFSET__INSIDE__FILE from srcpart where ds="2008-04-09" AND rand() > 1; + +-- negative, groupby +explain select key, count(value) from src group by key; + +-- negative, distinct +explain select distinct key, value from src; + +-- negative, CTAS +explain create table srcx as select distinct key, value from src; + +-- negative, analyze +explain analyze table src compute statistics; + +-- negative, subq +explain select a.* from (select * from src) a; + +-- negative, join +explain select * from src join src src2 on src.key=src2.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonreserved_keywords_input37.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonreserved_keywords_input37.q new file mode 100644 index 0000000000000..9cb89da373d29 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonreserved_keywords_input37.q @@ -0,0 +1,12 @@ +CREATE TABLE table(string string) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/docurl.txt' INTO TABLE table; + +SELECT table, count(1) +FROM +( + FROM table + SELECT TRANSFORM (table.string) + USING 'java -cp ../build/ql/test/classes org.apache.hadoop.hive.scripts.extracturl' AS (table, count) +) subq +GROUP BY table; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonreserved_keywords_insert_into1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonreserved_keywords_insert_into1.q new file mode 100644 index 0000000000000..144cfeee6b14b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nonreserved_keywords_insert_into1.q @@ -0,0 +1,26 @@ +DROP TABLE insert; + +CREATE TABLE insert (key INT, as STRING); + +EXPLAIN INSERT INTO TABLE insert SELECT * FROM src LIMIT 100; +INSERT INTO TABLE insert SELECT * FROM src LIMIT 100; +SELECT SUM(HASH(hash)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (hash) FROM insert +) t; + +EXPLAIN INSERT INTO TABLE insert SELECT * FROM src LIMIT 100; +INSERT INTO TABLE insert SELECT * FROM src LIMIT 100; +SELECT SUM(HASH(sum)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (sum) FROM insert +) t; + +SELECT COUNT(*) FROM insert; + +EXPLAIN INSERT OVERWRITE TABLE insert SELECT * FROM src LIMIT 10; +INSERT OVERWRITE TABLE insert SELECT * FROM src LIMIT 10; +SELECT SUM(HASH(add)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (add) FROM insert +) t; + + +DROP TABLE insert; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/notable_alias1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/notable_alias1.q new file mode 100644 index 0000000000000..ed7e31883af33 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/notable_alias1.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(dummy STRING, key INT, value DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', key, count(1) WHERE src.key < 100 group by key; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', key, count(1) WHERE src.key < 100 group by key; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/notable_alias2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/notable_alias2.q new file mode 100644 index 0000000000000..b9c963c97a044 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/notable_alias2.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(dummy STRING, key INT, value DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.key, count(1) WHERE key < 100 group by src.key; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.key, count(1) WHERE key < 100 group by src.key; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/null_cast.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/null_cast.q new file mode 100644 index 0000000000000..48c39b81fdd8f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/null_cast.q @@ -0,0 +1,11 @@ +EXPLAIN SELECT ARRAY(NULL, 0), + ARRAY(NULL, ARRAY()), + ARRAY(NULL, MAP()), + ARRAY(NULL, STRUCT(0)) + FROM src LIMIT 1; + +SELECT ARRAY(NULL, 0), + ARRAY(NULL, ARRAY()), + ARRAY(NULL, MAP()), + ARRAY(NULL, STRUCT(0)) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/null_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/null_column.q new file mode 100644 index 0000000000000..fa4a8639446e5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/null_column.q @@ -0,0 +1,29 @@ + + + + +create table temp_null(a int) stored as textfile; +load data local inpath '../data/files/test.dat' overwrite into table temp_null; + +select null, null from temp_null; + +create table tt(a int, b string); +insert overwrite table tt select null, null from temp_null; +select * from tt; + +create table tt_b(a int, b string) row format serde "org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe"; +insert overwrite table tt_b select null, null from temp_null; +select * from tt_b; + +insert overwrite directory "../build/ql/test/data/warehouse/null_columns.out" select null, null from temp_null; +dfs -cat ../build/ql/test/data/warehouse/null_columns.out/*; + + +create table temp_null2 (key string, value string) partitioned by (ds string); +insert overwrite table temp_null2 partition(ds='2010-04-01') select '1',NULL from src limit 1; +select * from temp_null2 where ds is not null; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup.q new file mode 100644 index 0000000000000..5ec67e560513e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup.q @@ -0,0 +1,31 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; + +explain +select count(1) from src x where x.key > 9999; + +select count(1) from src x where x.key > 9999; + +set hive.map.aggr=true; +set hive.groupby.skewindata=false; + +explain +select count(1) from src x where x.key > 9999; + +select count(1) from src x where x.key > 9999; + +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +explain +select count(1) from src x where x.key > 9999; + +select count(1) from src x where x.key > 9999; + +set hive.map.aggr=false; +set hive.groupby.skewindata=false; + +explain +select count(1) from src x where x.key > 9999; + +select count(1) from src x where x.key > 9999; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup2.q new file mode 100644 index 0000000000000..fecd6d4bd8cc8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup2.q @@ -0,0 +1,31 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; + +explain +select x.key, count(1) from src x where x.key > 9999 group by x.key; + +select x.key, count(1) from src x where x.key > 9999 group by x.key; + +set hive.map.aggr=true; +set hive.groupby.skewindata=false; + +explain +select x.key, count(1) from src x where x.key > 9999 group by x.key; + +select x.key, count(1) from src x where x.key > 9999 group by x.key; + +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +explain +select x.key, count(1) from src x where x.key > 9999 group by x.key; + +select x.key, count(1) from src x where x.key > 9999 group by x.key; + +set hive.map.aggr=false; +set hive.groupby.skewindata=false; + +explain +select x.key, count(1) from src x where x.key > 9999 group by x.key; + +select x.key, count(1) from src x where x.key > 9999 group by x.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup3.q new file mode 100644 index 0000000000000..a5bc9ff1f36ff --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup3.q @@ -0,0 +1,28 @@ +CREATE TABLE tstparttbl(KEY STRING, VALUE STRING) PARTITIONED BY(ds string) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE tstparttbl PARTITION (ds='2008-04-09'); +LOAD DATA LOCAL INPATH '../data/files/nullfile.txt' INTO TABLE tstparttbl PARTITION (ds='2008-04-08'); +explain +select count(1) from tstparttbl; +select count(1) from tstparttbl; + +CREATE TABLE tstparttbl2(KEY STRING, VALUE STRING) PARTITIONED BY(ds string) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/nullfile.txt' INTO TABLE tstparttbl2 PARTITION (ds='2008-04-09'); +LOAD DATA LOCAL INPATH '../data/files/nullfile.txt' INTO TABLE tstparttbl2 PARTITION (ds='2008-04-08'); +explain +select count(1) from tstparttbl2; +select count(1) from tstparttbl2; +DROP TABLE tstparttbl; +CREATE TABLE tstparttbl(KEY STRING, VALUE STRING) PARTITIONED BY(ds string) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE tstparttbl PARTITION (ds='2008-04-09'); +LOAD DATA LOCAL INPATH '../data/files/nullfile.txt' INTO TABLE tstparttbl PARTITION (ds='2008-04-08'); +explain +select count(1) from tstparttbl; +select count(1) from tstparttbl; + +DROP TABLE tstparttbl2; +CREATE TABLE tstparttbl2(KEY STRING, VALUE STRING) PARTITIONED BY(ds string) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/nullfile.txt' INTO TABLE tstparttbl2 PARTITION (ds='2008-04-09'); +LOAD DATA LOCAL INPATH '../data/files/nullfile.txt' INTO TABLE tstparttbl2 PARTITION (ds='2008-04-08'); +explain +select count(1) from tstparttbl2; +select count(1) from tstparttbl2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup4.q new file mode 100644 index 0000000000000..917d1a78ee696 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup4.q @@ -0,0 +1,31 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=true; + +explain +select count(1), count(distinct x.value) from src x where x.key = 9999; + +select count(1), count(distinct x.value) from src x where x.key = 9999; + +set hive.map.aggr=true; +set hive.groupby.skewindata=false; + +explain +select count(1), count(distinct x.value) from src x where x.key = 9999; + +select count(1), count(distinct x.value) from src x where x.key = 9999; + +set hive.map.aggr=false; +set hive.groupby.skewindata=true; + +explain +select count(1), count(distinct x.value) from src x where x.key = 9999; + +select count(1), count(distinct x.value) from src x where x.key = 9999; + +set hive.map.aggr=false; +set hive.groupby.skewindata=false; + +explain +select count(1), count(distinct x.value) from src x where x.key = 9999; + +select count(1), count(distinct x.value) from src x where x.key = 9999; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup4_multi_distinct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup4_multi_distinct.q new file mode 100644 index 0000000000000..fcee62929e466 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup4_multi_distinct.q @@ -0,0 +1,15 @@ +set hive.map.aggr=true; +set hive.groupby.skewindata=false; + +explain +select count(1), count(distinct x.value), count(distinct substr(x.value, 5)) from src x where x.key = 9999; + +select count(1), count(distinct x.value), count(distinct substr(x.value, 5)) from src x where x.key = 9999; + +set hive.map.aggr=false; +set hive.groupby.skewindata=false; + +explain +select count(1), count(distinct x.value), count(distinct substr(x.value, 5)) from src x where x.key = 9999; + +select count(1), count(distinct x.value), count(distinct substr(x.value, 5)) from src x where x.key = 9999; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup5.q new file mode 100644 index 0000000000000..12773b6159a5d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullgroup5.q @@ -0,0 +1,26 @@ + +CREATE TABLE tstparttbl(KEY STRING, VALUE STRING) PARTITIONED BY(ds string) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE tstparttbl PARTITION (ds='2009-04-09'); + + +CREATE TABLE tstparttbl2(KEY STRING, VALUE STRING) PARTITIONED BY(ds string) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE tstparttbl2 PARTITION (ds='2009-04-09'); + +explain +select u.* from +( + select key, value from tstparttbl x where x.ds='2009-04-05' + union all + select key, value from tstparttbl2 y where y.ds='2009-04-09' +)u; + +select u.* from +( + select key, value from tstparttbl x where x.ds='2009-04-05' + union all + select key, value from tstparttbl2 y where y.ds='2009-04-09' +)u; + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullinput.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullinput.q new file mode 100644 index 0000000000000..4a58ed514ab17 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullinput.q @@ -0,0 +1,4 @@ +create table tstnullinut(a string, b string); +select x.* from tstnullinut x; +select x.a, count(1) from tstnullinut x group by x.a; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullinput2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullinput2.q new file mode 100644 index 0000000000000..f5c0af8fa5efa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullinput2.q @@ -0,0 +1,8 @@ + + +create table nulltbl(key int) partitioned by (ds string); +select key from nulltbl where ds='101'; + +select count(1) from nulltbl where ds='101'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullscript.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullscript.q new file mode 100644 index 0000000000000..95c9e1df37679 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/nullscript.q @@ -0,0 +1,10 @@ + +CREATE TABLE nullscript(KEY STRING, VALUE STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE nullscript; +LOAD DATA LOCAL INPATH '../data/files/nullfile.txt' INTO TABLE nullscript; +explain +select transform(key) using 'cat' as key1 from nullscript; +select transform(key) using 'cat' as key1 from nullscript; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/num_op_type_conv.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/num_op_type_conv.q new file mode 100644 index 0000000000000..7f858d3e6f136 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/num_op_type_conv.q @@ -0,0 +1,9 @@ +EXPLAIN SELECT null + 7, 1.0 - null, null + null, + CAST(21 AS BIGINT) % CAST(5 AS TINYINT), + CAST(21 AS BIGINT) % CAST(21 AS BIGINT), + 9 % "3" FROM src LIMIT 1; + +SELECT null + 7, 1.0 - null, null + null, + CAST(21 AS BIGINT) % CAST(5 AS TINYINT), + CAST(21 AS BIGINT) % CAST(21 AS BIGINT), + 9 % "3" FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ops_comparison.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ops_comparison.q new file mode 100644 index 0000000000000..b685ae6c4e53f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ops_comparison.q @@ -0,0 +1,23 @@ + +select 1.0 < 2.0 from src limit 1; +select 2.0 < 2.0 from src limit 1; +select 2.0 > 1.0 from src limit 1; +select 2.0 > 2.0 from src limit 1; + +select 'NaN' < 2.0 from src limit 1; +select 1.0 < 'NaN' from src limit 1; +select 1.0 > 'NaN' from src limit 1; +select 'NaN' > 2.0 from src limit 1; +select 'NaN' > 'NaN' from src limit 1; +select 'NaN' < 'NaN' from src limit 1; + +select 'NaN' = 2.0 from src limit 1; +select 1.0 = 'NaN' from src limit 1; +select 'NaN' = 2.0 from src limit 1; +select 'NaN' = 'NaN' from src limit 1; + +select 'NaN' <> 2.0 from src limit 1; +select 1.0 <> 'NaN' from src limit 1; +select 'NaN' <> 2.0 from src limit 1; +select 'NaN' <> 'NaN' from src limit 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/optional_outer.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/optional_outer.q new file mode 100644 index 0000000000000..10971ab51e328 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/optional_outer.q @@ -0,0 +1,8 @@ +EXPLAIN SELECT * FROM src a LEFT OUTER JOIN src b on (a.key=b.key); +EXPLAIN SELECT * FROM src a LEFT JOIN src b on (a.key=b.key); + +EXPLAIN SELECT * FROM src a RIGHT OUTER JOIN src b on (a.key=b.key); +EXPLAIN SELECT * FROM src a RIGHT JOIN src b on (a.key=b.key); + +EXPLAIN SELECT * FROM src a FULL OUTER JOIN src b on (a.key=b.key); +EXPLAIN SELECT * FROM src a FULL JOIN src b on (a.key=b.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/optrstat_groupby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/optrstat_groupby.q new file mode 100644 index 0000000000000..5993041405ed8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/optrstat_groupby.q @@ -0,0 +1,6 @@ +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.OptrStatGroupByHook; +SET hive.exec.mode.local.auto=false; +SET hive.task.progress=true; +-- This test executes the OptrStatGroupBy hook which prints the optr level +-- stats of GROUPBY optr present is the plan of below query +SELECT count(1) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_create.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_create.q new file mode 100644 index 0000000000000..6aca5486445c8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_create.q @@ -0,0 +1,103 @@ +DROP TABLE orc_create; +DROP TABLE orc_create_complex; +DROP TABLE orc_create_staging; +DROP TABLE orc_create_people_staging; +DROP TABLE orc_create_people; + +CREATE TABLE orc_create_staging ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) ROW FORMAT DELIMITED + FIELDS TERMINATED BY '|' + COLLECTION ITEMS TERMINATED BY ',' + MAP KEYS TERMINATED BY ':'; + +DESCRIBE FORMATTED orc_create_staging; + +CREATE TABLE orc_create (key INT, value STRING) + PARTITIONED BY (ds string) + STORED AS ORC; + +DESCRIBE FORMATTED orc_create; + +DROP TABLE orc_create; + +CREATE TABLE orc_create (key INT, value STRING) + PARTITIONED BY (ds string); + +DESCRIBE FORMATTED orc_create; + +ALTER TABLE orc_create SET FILEFORMAT ORC; + +DESCRIBE FORMATTED orc_create; + +DROP TABLE orc_create; + +set hive.default.fileformat=orc; + +CREATE TABLE orc_create (key INT, value STRING) + PARTITIONED BY (ds string); + +set hive.default.fileformat=text; + +DESCRIBE FORMATTED orc_create; + +CREATE TABLE orc_create_complex ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) STORED AS ORC; + +DESCRIBE FORMATTED orc_create_complex; + +LOAD DATA LOCAL INPATH '../data/files/orc_create.txt' OVERWRITE INTO TABLE orc_create_staging; + +SELECT * from orc_create_staging; + +INSERT OVERWRITE TABLE orc_create_complex SELECT * FROM orc_create_staging; + +SELECT * from orc_create_complex; +SELECT str from orc_create_complex; +SELECT mp from orc_create_complex; +SELECT lst from orc_create_complex; +SELECT strct from orc_create_complex; + +CREATE TABLE orc_create_people_staging ( + id int, + first_name string, + last_name string, + address string, + state string); + +LOAD DATA LOCAL INPATH '../data/files/orc_create_people.txt' + OVERWRITE INTO TABLE orc_create_people_staging; + +CREATE TABLE orc_create_people ( + id int, + first_name string, + last_name string, + address string) +PARTITIONED BY (state string) +STORED AS orc; + +set hive.exec.dynamic.partition.mode=nonstrict; + +INSERT OVERWRITE TABLE orc_create_people PARTITION (state) + SELECT * FROM orc_create_people_staging; + +SET hive.optimize.index.filter=true; +-- test predicate push down with partition pruning +SELECT COUNT(*) FROM orc_create_people where id < 10 and state = 'Ca'; + +-- test predicate push down with no column projection +SELECT id, first_name, last_name, address + FROM orc_create_people WHERE id > 90; + +DROP TABLE orc_create; +DROP TABLE orc_create_complex; +DROP TABLE orc_create_staging; +DROP TABLE orc_create_people_staging; +DROP TABLE orc_create_people; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_createas1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_createas1.q new file mode 100644 index 0000000000000..872692567b37d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_createas1.q @@ -0,0 +1,48 @@ +set mapred.max.split.size=100; +set mapred.min.split.size=1; + +DROP TABLE orc_createas1a; +DROP TABLE orc_createas1b; +DROP TABLE orc_createas1c; + +CREATE TABLE orc_createas1a (key INT, value STRING) + PARTITIONED BY (ds string); +INSERT OVERWRITE TABLE orc_createas1a PARTITION (ds='1') + SELECT * FROM src; +INSERT OVERWRITE TABLE orc_createas1a PARTITION (ds='2') + SELECT * FROM src; + +EXPLAIN CREATE TABLE orc_createas1b + STORED AS ORC AS + SELECT * FROM src; + +CREATE TABLE orc_createas1b + STORED AS ORC AS + SELECT * FROM src; + +EXPLAIN SELECT * FROM orc_createas1b ORDER BY key LIMIT 5; + +SELECT * FROM orc_createas1b ORDER BY key LIMIT 5; + +EXPLAIN + CREATE TABLE orc_createas1c + STORED AS ORC AS + SELECT key, value, PMOD(HASH(key), 50) as part + FROM orc_createas1a; +CREATE TABLE orc_createas1c + STORED AS ORC AS + SELECT key, value, PMOD(HASH(key), 50) as part + FROM orc_createas1a; + +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) + FROM orc_createas1a +) t; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) + FROM orc_createas1c +) t; + +DROP TABLE orc_createas1a; +DROP TABLE orc_createas1b; +DROP TABLE orc_createas1c; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_dictionary_threshold.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_dictionary_threshold.q new file mode 100644 index 0000000000000..f916012b8365e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_dictionary_threshold.q @@ -0,0 +1,60 @@ +set hive.exec.orc.dictionary.key.size.threshold=-1; + +-- Set the threshold to -1 to guarantee dictionary encoding is turned off +-- Tests that the data can be read back correctly when a string column is stored +-- without dictionary encoding + +CREATE TABLE test_orc (key STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'; + +-- should be single split +INSERT OVERWRITE TABLE test_orc SELECT key FROM src TABLESAMPLE (10 ROWS); + +-- Test reading the column back + +SELECT * FROM test_orc; + +ALTER TABLE test_orc SET SERDEPROPERTIES ('orc.stripe.size' = '1'); + +CREATE TABLE src_thousand(key STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1kv2.cogroup.txt' + INTO TABLE src_thousand; + +set hive.exec.orc.dictionary.key.size.threshold=0.5; + +-- Add data to the table in such a way that alternate stripes encode the column +-- differently. Setting orc.stripe.size = 1 guarantees the stripes each have +-- 5000 rows. The first stripe will have 5 * 630 distinct rows and thus be +-- above the cutoff of 50% and will be direct encoded. The second stripe +-- will have 5 * 1 distinct rows and thus be under the cutoff and will be +-- dictionary encoded. The final stripe will have 630 out of 1000 and be +-- direct encoded. + +INSERT OVERWRITE TABLE test_orc +SELECT key FROM ( +SELECT CONCAT("a", key) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("b", key) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("c", key) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("d", key) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("e", key) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("f", 1) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("g", 1) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("h", 1) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("i", 1) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("j", 1) AS key FROM src_thousand +UNION ALL +SELECT CONCAT("k", key) AS key FROM src_thousand +) a ORDER BY key LIMIT 11000; + +SELECT SUM(HASH(key)) FROM test_orc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_diff_part_cols.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_diff_part_cols.q new file mode 100644 index 0000000000000..cbfd7b359f878 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_diff_part_cols.q @@ -0,0 +1,19 @@ +CREATE TABLE test_orc (key STRING) +PARTITIONED BY (part STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'; + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- Create a table with one column write to a partition, then add an additional column and write +-- to another partition +-- This can produce unexpected results with CombineHiveInputFormat + +INSERT OVERWRITE TABLE test_orc PARTITION (part = '1') SELECT key FROM src LIMIT 5; + +ALTER TABLE test_orc ADD COLUMNS (cnt INT); + +INSERT OVERWRITE TABLE test_orc PARTITION (part = '2') SELECT key, count(*) FROM src GROUP BY key LIMIT 5; + +SELECT * FROM test_orc ORDER BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_empty_files.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_empty_files.q new file mode 100644 index 0000000000000..d3cbc5a372955 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_empty_files.q @@ -0,0 +1,18 @@ +CREATE TABLE test_orc (key STRING, cnt INT) +CLUSTERED BY (key) INTO 3 BUCKETS +ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'; + +set hive.enforce.bucketing=true; +set hive.exec.reducers.max = 1; +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- Creates a table bucketed into 3 buckets, but only one contains data, specifically bucket 1, +-- buckets 0 and 2 are empty, so this tests reading from and empty file followed by a file +-- containing data and a file containing data followed by an empty file. +-- This can produce unexpected results with CombineHiveInputFormat + +INSERT OVERWRITE TABLE test_orc SELECT one, COUNT(*) FROM (SELECT 1 AS one FROM src) a GROUP BY one; + +SELECT count(*) FROM test_orc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_empty_strings.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_empty_strings.q new file mode 100644 index 0000000000000..0ef57d18ccaf7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_empty_strings.q @@ -0,0 +1,16 @@ +CREATE TABLE test_orc (key STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'; + +INSERT OVERWRITE TABLE test_orc SELECT '' FROM src limit 10; + +-- Test reading a column which is just empty strings + +SELECT * FROM test_orc; + +INSERT OVERWRITE TABLE test_orc SELECT IF (key % 3 = 0, key, '') FROM src limit 10; + +-- Test reading a column which has some empty strings + +SELECT * FROM test_orc ORDER BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_ends_with_nulls.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_ends_with_nulls.q new file mode 100644 index 0000000000000..6685da7a82245 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_ends_with_nulls.q @@ -0,0 +1,17 @@ +CREATE TABLE test_orc (key STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'; + +ALTER TABLE test_orc SET SERDEPROPERTIES ('orc.row.index.stride' = '1000'); + +-- nulls.txt is a file containing a non-null string row followed by 1000 null string rows +-- this produces the effect that the number of non-null rows between the last and second +-- to last index stride are the same (there's only two index strides) + +CREATE TABLE src_null(a STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/nulls.txt' INTO TABLE src_null; + +INSERT OVERWRITE TABLE test_orc SELECT a FROM src_null; + +SELECT * FROM test_orc LIMIT 5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_predicate_pushdown.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_predicate_pushdown.q new file mode 100644 index 0000000000000..f5f25f00c951a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/orc_predicate_pushdown.q @@ -0,0 +1,248 @@ +CREATE TABLE orc_pred(t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) +STORED AS ORC; + +ALTER TABLE orc_pred SET SERDEPROPERTIES ('orc.row.index.stride' = '1000'); + +CREATE TABLE staging(t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/over1k' OVERWRITE INTO TABLE staging; + +INSERT INTO TABLE orc_pred select * from staging; + +-- no predicate case. the explain plan should not have filter expression in table scan operator + +SELECT SUM(HASH(t)) FROM orc_pred; + +SET hive.optimize.index.filter=true; +SELECT SUM(HASH(t)) FROM orc_pred; +SET hive.optimize.index.filter=false; + +EXPLAIN SELECT SUM(HASH(t)) FROM orc_pred; + +SET hive.optimize.index.filter=true; +EXPLAIN SELECT SUM(HASH(t)) FROM orc_pred; +SET hive.optimize.index.filter=false; + +-- all the following queries have predicates which are pushed down to table scan operator if +-- hive.optimize.index.filter is set to true. the explain plan should show filter expression +-- in table scan operator. + +SELECT * FROM orc_pred WHERE t<2 limit 1; +SET hive.optimize.index.filter=true; +SELECT * FROM orc_pred WHERE t<2 limit 1; +SET hive.optimize.index.filter=false; + +SELECT * FROM orc_pred WHERE t>2 limit 1; +SET hive.optimize.index.filter=true; +SELECT * FROM orc_pred WHERE t>2 limit 1; +SET hive.optimize.index.filter=false; + +SELECT SUM(HASH(t)) FROM orc_pred + WHERE t IS NOT NULL + AND t < 0 + AND t > -2; + +SET hive.optimize.index.filter=true; +SELECT SUM(HASH(t)) FROM orc_pred + WHERE t IS NOT NULL + AND t < 0 + AND t > -2; +SET hive.optimize.index.filter=false; + +EXPLAIN SELECT SUM(HASH(t)) FROM orc_pred + WHERE t IS NOT NULL + AND t < 0 + AND t > -2; + +SET hive.optimize.index.filter=true; +EXPLAIN SELECT SUM(HASH(t)) FROM orc_pred + WHERE t IS NOT NULL + AND t < 0 + AND t > -2; +SET hive.optimize.index.filter=false; + +SELECT t, s FROM orc_pred + WHERE t <=> -1 + AND s IS NOT NULL + AND s LIKE 'bob%' + ORDER BY s; + +SET hive.optimize.index.filter=true; +SELECT t, s FROM orc_pred + WHERE t <=> -1 + AND s IS NOT NULL + AND s LIKE 'bob%' + ORDER BY s; +SET hive.optimize.index.filter=false; + +EXPLAIN SELECT t, s FROM orc_pred + WHERE t <=> -1 + AND s IS NOT NULL + AND s LIKE 'bob%' + ORDER BY s; + +SET hive.optimize.index.filter=true; +EXPLAIN SELECT t, s FROM orc_pred + WHERE t <=> -1 + AND s IS NOT NULL + AND s LIKE 'bob%' + ORDER BY s; +SET hive.optimize.index.filter=false; + +SELECT t, s FROM orc_pred + WHERE s IS NOT NULL + AND s LIKE 'bob%' + AND t NOT IN (-1,-2,-3) + AND t BETWEEN 25 AND 30 + SORT BY t,s; + +set hive.optimize.index.filter=true; +SELECT t, s FROM orc_pred + WHERE s IS NOT NULL + AND s LIKE 'bob%' + AND t NOT IN (-1,-2,-3) + AND t BETWEEN 25 AND 30 + SORT BY t,s; +set hive.optimize.index.filter=false; + +EXPLAIN SELECT t, s FROM orc_pred + WHERE s IS NOT NULL + AND s LIKE 'bob%' + AND t NOT IN (-1,-2,-3) + AND t BETWEEN 25 AND 30 + SORT BY t,s; + +SET hive.optimize.index.filter=true; +EXPLAIN SELECT t, s FROM orc_pred + WHERE s IS NOT NULL + AND s LIKE 'bob%' + AND t NOT IN (-1,-2,-3) + AND t BETWEEN 25 AND 30 + SORT BY t,s; +SET hive.optimize.index.filter=false; + +SELECT t, si, d, s FROM orc_pred + WHERE d >= ROUND(9.99) + AND d < 12 + AND t IS NOT NULL + AND s LIKE '%son' + AND s NOT LIKE '%car%' + AND t > 0 + AND si BETWEEN 300 AND 400 + ORDER BY s DESC + LIMIT 3; + +SET hive.optimize.index.filter=true; +SELECT t, si, d, s FROM orc_pred + WHERE d >= ROUND(9.99) + AND d < 12 + AND t IS NOT NULL + AND s LIKE '%son' + AND s NOT LIKE '%car%' + AND t > 0 + AND si BETWEEN 300 AND 400 + ORDER BY s DESC + LIMIT 3; +SET hive.optimize.index.filter=false; + +EXPLAIN SELECT t, si, d, s FROM orc_pred + WHERE d >= ROUND(9.99) + AND d < 12 + AND t IS NOT NULL + AND s LIKE '%son' + AND s NOT LIKE '%car%' + AND t > 0 + AND si BETWEEN 300 AND 400 + ORDER BY s DESC + LIMIT 3; + +SET hive.optimize.index.filter=true; +EXPLAIN SELECT t, si, d, s FROM orc_pred + WHERE d >= ROUND(9.99) + AND d < 12 + AND t IS NOT NULL + AND s LIKE '%son' + AND s NOT LIKE '%car%' + AND t > 0 + AND si BETWEEN 300 AND 400 + ORDER BY s DESC + LIMIT 3; +SET hive.optimize.index.filter=false; + +SELECT t, si, d, s FROM orc_pred + WHERE t > 10 + AND t <> 101 + AND d >= ROUND(9.99) + AND d < 12 + AND t IS NOT NULL + AND s LIKE '%son' + AND s NOT LIKE '%car%' + AND t > 0 + AND si BETWEEN 300 AND 400 + SORT BY s DESC + LIMIT 3; + +SET hive.optimize.index.filter=true; +SELECT t, si, d, s FROM orc_pred + WHERE t > 10 + AND t <> 101 + AND d >= ROUND(9.99) + AND d < 12 + AND t IS NOT NULL + AND s LIKE '%son' + AND s NOT LIKE '%car%' + AND t > 0 + AND si BETWEEN 300 AND 400 + SORT BY s DESC + LIMIT 3; +SET hive.optimize.index.filter=false; + +EXPLAIN SELECT t, si, d, s FROM orc_pred + WHERE t > 10 + AND t <> 101 + AND d >= ROUND(9.99) + AND d < 12 + AND t IS NOT NULL + AND s LIKE '%son' + AND s NOT LIKE '%car%' + AND t > 0 + AND si BETWEEN 300 AND 400 + SORT BY s DESC + LIMIT 3; + +SET hive.optimize.index.filter=true; +EXPLAIN SELECT t, si, d, s FROM orc_pred + WHERE t > 10 + AND t <> 101 + AND d >= ROUND(9.99) + AND d < 12 + AND t IS NOT NULL + AND s LIKE '%son' + AND s NOT LIKE '%car%' + AND t > 0 + AND si BETWEEN 300 AND 400 + SORT BY s DESC + LIMIT 3; +SET hive.optimize.index.filter=false; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/order.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/order.q new file mode 100644 index 0000000000000..d389892eda48c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/order.q @@ -0,0 +1,9 @@ +EXPLAIN +SELECT x.* FROM SRC x ORDER BY key limit 10; + +SELECT x.* FROM SRC x ORDER BY key limit 10; + +EXPLAIN +SELECT x.* FROM SRC x ORDER BY key desc limit 10; + +SELECT x.* FROM SRC x ORDER BY key desc limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/order2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/order2.q new file mode 100644 index 0000000000000..6c16fe30fa7ec --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/order2.q @@ -0,0 +1,10 @@ +set hive.optimize.ppd=true; + +EXPLAIN +SELECT subq.key, subq.value FROM +(SELECT x.* FROM SRC x ORDER BY key limit 10) subq +where subq.key < 10; + +SELECT subq.key, subq.value FROM +(SELECT x.* FROM SRC x ORDER BY key limit 10) subq +where subq.key < 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/outer_join_ppr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/outer_join_ppr.q new file mode 100644 index 0000000000000..38007cab5f679 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/outer_join_ppr.q @@ -0,0 +1,35 @@ +set hive.optimize.ppd=true; + +EXPLAIN EXTENDED + FROM + src a + FULL OUTER JOIN + srcpart b + ON (a.key = b.key AND b.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + FROM + src a + FULL OUTER JOIN + srcpart b + ON (a.key = b.key AND b.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + +EXPLAIN EXTENDED + FROM + src a + FULL OUTER JOIN + srcpart b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND b.ds = '2008-04-08'; + + FROM + src a + FULL OUTER JOIN + srcpart b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND b.ds = '2008-04-08'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/overridden_confs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/overridden_confs.q new file mode 100644 index 0000000000000..9dcaed6acb12f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/overridden_confs.q @@ -0,0 +1,4 @@ +set hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyOverriddenConfigsHook; +set hive.config.doesnt.exit=abc; + +select count(*) from src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parallel.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parallel.q new file mode 100644 index 0000000000000..03edeaadeef51 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parallel.q @@ -0,0 +1,28 @@ +set mapred.job.name='test_parallel'; +set hive.exec.parallel=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +create table if not exists src_a like src; +create table if not exists src_b like src; + +explain +from (select key, value from src group by key, value) s +insert overwrite table src_a select s.key, s.value group by s.key, s.value +insert overwrite table src_b select s.key, s.value group by s.key, s.value; + +from (select key, value from src group by key, value) s +insert overwrite table src_a select s.key, s.value group by s.key, s.value +insert overwrite table src_b select s.key, s.value group by s.key, s.value; + +select * from src_a order by key, value; +select * from src_b order by key, value; + + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +from (select key, value from src group by key, value) s +insert overwrite table src_a select s.key, s.value group by s.key, s.value +insert overwrite table src_b select s.key, s.value group by s.key, s.value; + +select * from src_a order by key, value; +select * from src_b order by key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parallel_orderby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parallel_orderby.q new file mode 100644 index 0000000000000..5e09395901c08 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parallel_orderby.q @@ -0,0 +1,23 @@ +create table src5 (key string, value string); +load data local inpath '../data/files/kv5.txt' into table src5; +load data local inpath '../data/files/kv5.txt' into table src5; + +set mapred.reduce.tasks = 4; +set hive.optimize.sampling.orderby=true; +set hive.optimize.sampling.orderby.percent=0.66f; + +explain +create table total_ordered as select * from src5 order by key, value; +create table total_ordered as select * from src5 order by key, value; + +desc formatted total_ordered; +select * from total_ordered; + +set hive.optimize.sampling.orderby.percent=0.0001f; +-- rolling back to single task in case that the number of sample is not enough + +drop table total_ordered; +create table total_ordered as select * from src5 order by key, value; + +desc formatted total_ordered; +select * from total_ordered; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parenthesis_star_by.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parenthesis_star_by.q new file mode 100644 index 0000000000000..9e036c1a91d3b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/parenthesis_star_by.q @@ -0,0 +1,10 @@ +SELECT key, value FROM src CLUSTER BY key, value; +SELECT key, value FROM src ORDER BY key ASC, value ASC; +SELECT key, value FROM src SORT BY key, value; +SELECT * FROM (SELECT key, value FROM src DISTRIBUTE BY key, value)t ORDER BY key, value; + + +SELECT key, value FROM src CLUSTER BY (key, value); +SELECT key, value FROM src ORDER BY (key ASC, value ASC); +SELECT key, value FROM src SORT BY (key, value); +SELECT * FROM (SELECT key, value FROM src DISTRIBUTE BY (key, value))t ORDER BY key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partInit.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partInit.q new file mode 100644 index 0000000000000..c492b87e0e96e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partInit.q @@ -0,0 +1,7 @@ +CREATE TABLE empty (c INT) PARTITIONED BY (p INT); +SELECT MAX(c) FROM empty; +SELECT MAX(p) FROM empty; + +ALTER TABLE empty ADD PARTITION (p=1); +SELECT MAX(p) FROM empty; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props.q new file mode 100644 index 0000000000000..3ee1b4ac80e32 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props.q @@ -0,0 +1,8 @@ +set hive.metastore.partition.inherit.table.properties=a,b; +-- The property needs to be unset at the end of the test till HIVE-3109/HIVE-3112 is fixed + +create table mytbl (c1 tinyint) partitioned by (c2 string) tblproperties ('a'='myval','b'='yourval','c'='noval'); +alter table mytbl add partition (c2 = 'v1'); +describe formatted mytbl partition (c2='v1'); + +set hive.metastore.partition.inherit.table.properties=; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props_empty.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props_empty.q new file mode 100644 index 0000000000000..f3f0335c883d3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props_empty.q @@ -0,0 +1,4 @@ +set hive.metastore.partition.inherit.table.properties=""; +create table mytbl (c1 tinyint) partitioned by (c2 string) tblproperties ('a'='myval','b'='yourval','c'='noval'); +alter table mytbl add partition (c2 = 'v1'); +describe formatted mytbl partition (c2='v1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props_with_star.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props_with_star.q new file mode 100644 index 0000000000000..8dac6111ec059 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/part_inherit_tbl_props_with_star.q @@ -0,0 +1,8 @@ +set hive.metastore.partition.inherit.table.properties=key1,*; +-- The property needs to be unset at the end of the test till HIVE-3109/HIVE-3112 is fixed + +create table mytbl (c1 tinyint) partitioned by (c2 string) tblproperties ('a'='myval','b'='yourval','c'='noval'); +alter table mytbl add partition (c2 = 'v1'); +describe formatted mytbl partition (c2='v1'); + +set hive.metastore.partition.inherit.table.properties=; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partcols1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partcols1.q new file mode 100644 index 0000000000000..b7f8c64d4261f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partcols1.q @@ -0,0 +1,18 @@ + +create table test1(col1 string) partitioned by (partitionId int); +insert overwrite table test1 partition (partitionId=1) + select key from src limit 10; + + FROM ( + FROM test1 + SELECT partitionId, 111 as col2, 222 as col3, 333 as col4 + WHERE partitionId = 1 + DISTRIBUTE BY partitionId + SORT BY partitionId + ) b + +SELECT TRANSFORM( + b.partitionId,b.col2,b.col3,b.col4 + ) + + USING 'cat' as (a,b,c,d); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_date.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_date.q new file mode 100644 index 0000000000000..8738afdfa099a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_date.q @@ -0,0 +1,45 @@ +drop table partition_date_1; + +create table partition_date_1 (key string, value string) partitioned by (dt date, region int); + +insert overwrite table partition_date_1 partition(dt='2000-01-01', region=1) + select * from src limit 10; +insert overwrite table partition_date_1 partition(dt='2000-01-01', region=2) + select * from src limit 5; +insert overwrite table partition_date_1 partition(dt='2013-08-08', region=1) + select * from src limit 20; +insert overwrite table partition_date_1 partition(dt='2013-08-08', region=10) + select * from src limit 11; + +select distinct dt from partition_date_1; +select * from partition_date_1 where dt = '2000-01-01' and region = 2 order by key,value; + +-- 15 +select count(*) from partition_date_1 where dt = date '2000-01-01'; +-- 15. Also try with string value in predicate +select count(*) from partition_date_1 where dt = '2000-01-01'; +-- 5 +select count(*) from partition_date_1 where dt = date '2000-01-01' and region = 2; +-- 11 +select count(*) from partition_date_1 where dt = date '2013-08-08' and region = 10; +-- 30 +select count(*) from partition_date_1 where region = 1; +-- 0 +select count(*) from partition_date_1 where dt = date '2000-01-01' and region = 3; +-- 0 +select count(*) from partition_date_1 where dt = date '1999-01-01'; + +-- Try other comparison operations + +-- 20 +select count(*) from partition_date_1 where dt > date '2000-01-01' and region = 1; +-- 10 +select count(*) from partition_date_1 where dt < date '2000-01-02' and region = 1; +-- 20 +select count(*) from partition_date_1 where dt >= date '2000-01-02' and region = 1; +-- 10 +select count(*) from partition_date_1 where dt <= date '2000-01-01' and region = 1; +-- 20 +select count(*) from partition_date_1 where dt <> date '2000-01-01' and region = 1; + +drop table partition_date_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_date2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_date2.q new file mode 100644 index 0000000000000..9b84b59608503 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_date2.q @@ -0,0 +1,55 @@ +drop table partition_date2_1; + +create table partition_date2_1 (key string, value string) partitioned by (dt date, region int); + +-- test date literal syntax +from (select * from src limit 1) x +insert overwrite table partition_date2_1 partition(dt=date '2000-01-01', region=1) select * +insert overwrite table partition_date2_1 partition(dt=date '2000-01-01', region=2) select * +insert overwrite table partition_date2_1 partition(dt=date '1999-01-01', region=2) select *; + +select distinct dt from partition_date2_1; +select * from partition_date2_1; + +-- insert overwrite +insert overwrite table partition_date2_1 partition(dt=date '2000-01-01', region=2) + select 'changed_key', 'changed_value' from src limit 2; +select * from partition_date2_1; + +-- truncate +truncate table partition_date2_1 partition(dt=date '2000-01-01', region=2); +select distinct dt from partition_date2_1; +select * from partition_date2_1; + +-- alter table add partition +alter table partition_date2_1 add partition (dt=date '1980-01-02', region=3); +select distinct dt from partition_date2_1; +select * from partition_date2_1; + +-- alter table drop +alter table partition_date2_1 drop partition (dt=date '1999-01-01', region=2); +select distinct dt from partition_date2_1; +select * from partition_date2_1; + +-- alter table set serde +alter table partition_date2_1 partition(dt=date '1980-01-02', region=3) + set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'; + +-- alter table set fileformat +alter table partition_date2_1 partition(dt=date '1980-01-02', region=3) + set fileformat rcfile; +describe extended partition_date2_1 partition(dt=date '1980-01-02', region=3); + +insert overwrite table partition_date2_1 partition(dt=date '1980-01-02', region=3) + select * from src limit 2; +select * from partition_date2_1 order by key,value,dt,region; + +-- alter table set location +alter table partition_date2_1 partition(dt=date '1980-01-02', region=3) + set location "file:///tmp/partition_date2_1"; +describe extended partition_date2_1 partition(dt=date '1980-01-02', region=3); + +-- alter table touch +alter table partition_date2_1 touch partition(dt=date '1980-01-02', region=3); + +drop table partition_date2_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_decode_name.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_decode_name.q new file mode 100644 index 0000000000000..ba193cd51a26d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_decode_name.q @@ -0,0 +1,21 @@ +create table sc as select * +from (select '2011-01-11', '2011-01-11+14:18:26' from src limit 1 + union all + select '2011-01-11', '2011-01-11+15:18:26' from src limit 1 + union all + select '2011-01-11', '2011-01-11+16:18:26' from src limit 1 ) s; + +create table sc_part (key string) partitioned by (ts string) stored as rcfile; + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +set hive.decode.partition.name=false; +insert overwrite table sc_part partition(ts) select * from sc; +show partitions sc_part; +select count(*) from sc_part where ts is not null; + +set hive.decode.partition.name=true; +insert overwrite table sc_part partition(ts) select * from sc; +show partitions sc_part; +select count(*) from sc_part where ts is not null; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_schema1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_schema1.q new file mode 100644 index 0000000000000..550ea47beb0db --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_schema1.q @@ -0,0 +1,12 @@ + +create table partition_schema1(key string, value string) partitioned by (dt string); + +insert overwrite table partition_schema1 partition(dt='100') select * from src1; +desc partition_schema1 partition(dt='100'); + +alter table partition_schema1 add columns (x string); + +desc partition_schema1; +desc partition_schema1 partition (dt='100'); + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_serde_format.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_serde_format.q new file mode 100644 index 0000000000000..9f7620c148236 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_serde_format.q @@ -0,0 +1,4 @@ +create table src_part_serde (key int, value string) partitioned by (ds string) stored as sequencefile; +insert overwrite table src_part_serde partition (ds='2011') select * from src; +alter table src_part_serde set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' with SERDEPROPERTIES ('serialization.format'='\t'); +select key, value from src_part_serde where ds='2011' order by key, value limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_special_char.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_special_char.q new file mode 100644 index 0000000000000..81344334dfe01 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_special_char.q @@ -0,0 +1,19 @@ +create table sc as select * +from (select '2011-01-11', '2011-01-11+14:18:26' from src limit 1 + union all + select '2011-01-11', '2011-01-11+15:18:26' from src limit 1 + union all + select '2011-01-11', '2011-01-11+16:18:26' from src limit 1 ) s; + +create table sc_part (key string) partitioned by (ts string) stored as rcfile; + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +insert overwrite table sc_part partition(ts) select * from sc; +show partitions sc_part; +select count(*) from sc_part where ts is not null; + +insert overwrite table sc_part partition(ts) select * from sc; +show partitions sc_part; +select count(*) from sc_part where ts is not null; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_type_check.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_type_check.q new file mode 100644 index 0000000000000..7f1accadac6ea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_type_check.q @@ -0,0 +1,24 @@ +set hive.typecheck.on.insert = true; + +-- begin part(string, string) pass(string, int) +CREATE TABLE tab1 (id1 int,id2 string) PARTITIONED BY(month string,day string) stored as textfile; +LOAD DATA LOCAL INPATH '../data/files/T1.txt' overwrite into table tab1 PARTITION(month='June', day=2); + +select * from tab1; +drop table tab1; + +-- begin part(string, int) pass(string, string) +CREATE TABLE tab1 (id1 int,id2 string) PARTITIONED BY(month string,day int) stored as textfile; +LOAD DATA LOCAL INPATH '../data/files/T1.txt' overwrite into table tab1 PARTITION(month='June', day='2'); + +select * from tab1; +drop table tab1; + +-- begin part(string, date) pass(string, date) +create table tab1 (id1 int, id2 string) PARTITIONED BY(month string,day date) stored as textfile; +alter table tab1 add partition (month='June', day='2008-01-01'); +LOAD DATA LOCAL INPATH '../data/files/T1.txt' overwrite into table tab1 PARTITION(month='June', day='2008-01-01'); + +select id1, id2, day from tab1 where day='2008-01-01'; +drop table tab1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_varchar1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_varchar1.q new file mode 100644 index 0000000000000..d700b1cbf8566 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_varchar1.q @@ -0,0 +1,43 @@ +drop table partition_varchar_1; + +create table partition_varchar_1 (key string, value varchar(20)) partitioned by (dt varchar(10), region int); + +insert overwrite table partition_varchar_1 partition(dt='2000-01-01', region=1) + select * from src limit 10; +insert overwrite table partition_varchar_1 partition(dt='2000-01-01', region=2) + select * from src limit 5; +insert overwrite table partition_varchar_1 partition(dt='2013-08-08', region=1) + select * from src limit 20; +insert overwrite table partition_varchar_1 partition(dt='2013-08-08', region=10) + select * from src limit 11; + +select distinct dt from partition_varchar_1; +select * from partition_varchar_1 where dt = '2000-01-01' and region = 2 order by key,value; + +-- 15 +select count(*) from partition_varchar_1 where dt = '2000-01-01'; +-- 5 +select count(*) from partition_varchar_1 where dt = '2000-01-01' and region = 2; +-- 11 +select count(*) from partition_varchar_1 where dt = '2013-08-08' and region = 10; +-- 30 +select count(*) from partition_varchar_1 where region = 1; +-- 0 +select count(*) from partition_varchar_1 where dt = '2000-01-01' and region = 3; +-- 0 +select count(*) from partition_varchar_1 where dt = '1999-01-01'; + +-- Try other comparison operations + +-- 20 +select count(*) from partition_varchar_1 where dt > '2000-01-01' and region = 1; +-- 10 +select count(*) from partition_varchar_1 where dt < '2000-01-02' and region = 1; +-- 20 +select count(*) from partition_varchar_1 where dt >= '2000-01-02' and region = 1; +-- 10 +select count(*) from partition_varchar_1 where dt <= '2000-01-01' and region = 1; +-- 20 +select count(*) from partition_varchar_1 where dt <> '2000-01-01' and region = 1; + +drop table partition_varchar_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_vs_table_metadata.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_vs_table_metadata.q new file mode 100644 index 0000000000000..9f493e561f1f8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_vs_table_metadata.q @@ -0,0 +1,13 @@ + + +create table partition_vs_table(key string, value string) partitioned by (ds string); + +insert overwrite table partition_vs_table partition(ds='100') select key, value from src; + +alter table partition_vs_table add columns (newcol string); + +insert overwrite table partition_vs_table partition(ds='101') select key, value, key from src; + +select key, value, newcol from partition_vs_table +order by key, value, newcol; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat.q new file mode 100644 index 0000000000000..f0d58cf61d714 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat.q @@ -0,0 +1,32 @@ + + +create table partition_test_partitioned(key string, value string) partitioned by (dt string); + +insert overwrite table partition_test_partitioned partition(dt=100) select * from src1; +show table extended like partition_test_partitioned; +show table extended like partition_test_partitioned partition(dt=100); +select key from partition_test_partitioned where dt=100; +select key from partition_test_partitioned; + +alter table partition_test_partitioned set fileformat rcfile; +insert overwrite table partition_test_partitioned partition(dt=101) select * from src1; +show table extended like partition_test_partitioned; +show table extended like partition_test_partitioned partition(dt=100); +show table extended like partition_test_partitioned partition(dt=101); +select key from partition_test_partitioned where dt=100; +select key from partition_test_partitioned where dt=101; +select key from partition_test_partitioned; + +alter table partition_test_partitioned set fileformat Sequencefile; +insert overwrite table partition_test_partitioned partition(dt=102) select * from src1; +show table extended like partition_test_partitioned; +show table extended like partition_test_partitioned partition(dt=100); +show table extended like partition_test_partitioned partition(dt=101); +show table extended like partition_test_partitioned partition(dt=102); +select key from partition_test_partitioned where dt=100; +select key from partition_test_partitioned where dt=101; +select key from partition_test_partitioned where dt=102; +select key from partition_test_partitioned; + +select key from partition_test_partitioned where dt >=100 and dt <= 102; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat10.q new file mode 100644 index 0000000000000..f15f72c08eb34 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat10.q @@ -0,0 +1,13 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- This tests that the schema can be changed for binary serde data +create table prt(key string, value string) partitioned by (dt string); +insert overwrite table prt partition(dt='1') select * from src where key = 238; + +select * from prt where dt is not null; +select key+key, value from prt where dt is not null; + +alter table prt add columns (value2 string); + +select key+key, value from prt where dt is not null; +select * from prt where dt is not null; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat11.q new file mode 100644 index 0000000000000..1a4291fe64f28 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat11.q @@ -0,0 +1,19 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- This tests that the schema can be changed for binary serde data +create table partition_test_partitioned(key string, value string) partitioned by (dt string) stored as rcfile; +alter table partition_test_partitioned set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; +insert overwrite table partition_test_partitioned partition(dt='1') select * from src where key = 238; + +select * from partition_test_partitioned where dt is not null; +select key+key, value from partition_test_partitioned where dt is not null; + +alter table partition_test_partitioned change key key int; + +select key+key, value from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; + +alter table partition_test_partitioned add columns (value2 string); + +select key+key, value from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat12.q new file mode 100644 index 0000000000000..bc51cb5587b16 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat12.q @@ -0,0 +1,26 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- This tests that the schema can be changed for binary serde data +create table partition_test_partitioned(key string, value string) partitioned by (dt string) stored as rcfile; +alter table partition_test_partitioned set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; +insert overwrite table partition_test_partitioned partition(dt='1') select * from src where key = 238; + +select * from partition_test_partitioned where dt is not null; +select key+key, value from partition_test_partitioned where dt is not null; + +alter table partition_test_partitioned change key key int; + +select key+key, value from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; + +insert overwrite table partition_test_partitioned partition(dt='2') select * from src where key = 97; + +alter table partition_test_partitioned add columns (value2 string); + +select key+key, value from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; + +insert overwrite table partition_test_partitioned partition(dt='3') select key, value, value from src where key = 200; + +select key+key, value, value2 from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat13.q new file mode 100644 index 0000000000000..2e4ae6954bcb5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat13.q @@ -0,0 +1,17 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- This tests that the schema can be changed for partitioned tables for binary serde data for joins +create table T1(key string, value string) partitioned by (dt string) stored as rcfile; +alter table T1 set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; +insert overwrite table T1 partition (dt='1') select * from src where key = 238 or key = 97; + +alter table T1 change key key int; +insert overwrite table T1 partition (dt='2') select * from src where key = 238 or key = 97; + +alter table T1 change key key string; + +create table T2(key string, value string) partitioned by (dt string) stored as rcfile; +insert overwrite table T2 partition (dt='1') select * from src where key = 238 or key = 97; + +select /* + MAPJOIN(a) */ count(*) FROM T1 a JOIN T2 b ON a.key = b.key; +select count(*) FROM T1 a JOIN T2 b ON a.key = b.key; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat14.q new file mode 100644 index 0000000000000..f4d4d73745bf5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat14.q @@ -0,0 +1,57 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) PARTITIONED by (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS rcfile; +CREATE TABLE tbl2(key int, value string) PARTITIONED by (ds string) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS rcfile; + +alter table tbl1 set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; +alter table tbl2 set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; + +insert overwrite table tbl1 partition (ds='1') select * from src where key < 10; +insert overwrite table tbl2 partition (ds='1') select * from src where key < 10; + +alter table tbl1 change key key int; +insert overwrite table tbl1 partition (ds='2') select * from src where key < 10; + +alter table tbl1 change key key string; + +-- The subquery itself is being map-joined. Multiple partitions of tbl1 with different schemas are being read for tbl2 +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +set hive.optimize.bucketmapjoin = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- The subquery itself is being map-joined. Since the sub-query only contains selects and filters, it should +-- be converted to a bucketized mapside join. Multiple partitions of tbl1 with different schemas are being read for each +-- bucket of tbl2 +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +set hive.optimize.bucketmapjoin.sortedmerge = true; + +-- The subquery itself is being map-joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join. Multiple partitions of tbl1 with different schemas are being read for a +-- given file of tbl2 +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +-- Since the join key is modified by the sub-query, neither sort-merge join not bucketized map-side +-- join should be performed. Multiple partitions of tbl1 with different schemas are being read for tbl2 +select /*+mapjoin(subq1)*/ count(*) from + (select a.key+1 as key, concat(a.value, a.value) as value from tbl1 a) subq1 + join + (select a.key+1 as key, concat(a.value, a.value) as value from tbl2 a) subq2 + on subq1.key = subq2.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat15.q new file mode 100644 index 0000000000000..6fce1e0c77a4f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat15.q @@ -0,0 +1,26 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- This tests that the schema can be changed for binary serde data +create table partition_test_partitioned(key string, value string) +partitioned by (dt string) stored as rcfile; +insert overwrite table partition_test_partitioned partition(dt='1') +select * from src where key = 238; + +select * from partition_test_partitioned where dt is not null; +select key+key, value from partition_test_partitioned where dt is not null; + +alter table partition_test_partitioned change key key int; + +select key+key, value from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; + +alter table partition_test_partitioned add columns (value2 string); + +select key+key, value from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; + +insert overwrite table partition_test_partitioned partition(dt='2') +select key, value, value from src where key = 86; + +select key+key, value, value2, dt from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat16.q new file mode 100644 index 0000000000000..37bb1a76b258e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat16.q @@ -0,0 +1,26 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- This tests that the schema can be changed for binary serde data +create table partition_test_partitioned(key string, value string) +partitioned by (dt string) stored as textfile; +insert overwrite table partition_test_partitioned partition(dt='1') +select * from src where key = 238; + +select * from partition_test_partitioned where dt is not null; +select key+key, value from partition_test_partitioned where dt is not null; + +alter table partition_test_partitioned change key key int; + +select key+key, value from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; + +alter table partition_test_partitioned add columns (value2 string); + +select key+key, value from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; + +insert overwrite table partition_test_partitioned partition(dt='2') +select key, value, value from src where key = 86; + +select key+key, value, value2, dt from partition_test_partitioned where dt is not null; +select * from partition_test_partitioned where dt is not null; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat17.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat17.q new file mode 100644 index 0000000000000..e9b574c1ca380 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat17.q @@ -0,0 +1,34 @@ +-- HIVE-5199, HIVE-5285 : CustomSerDe(1, 2, 3) are used here. +-- The final results should be all NULL columns deserialized using +-- CustomSerDe(1, 2, 3) irrespective of the inserted values + +DROP TABLE PW17; +ADD JAR ../build/ql/test/test-serdes.jar; +CREATE TABLE PW17(USER STRING, COMPLEXDT ARRAY) PARTITIONED BY (YEAR STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.CustomSerDe1'; +LOAD DATA LOCAL INPATH '../data/files/pw17.txt' INTO TABLE PW17 PARTITION (YEAR='1'); +ALTER TABLE PW17 PARTITION(YEAR='1') SET SERDE 'org.apache.hadoop.hive.serde2.CustomSerDe2'; +ALTER TABLE PW17 SET SERDE 'org.apache.hadoop.hive.serde2.CustomSerDe1'; +-- Without the fix HIVE-5199, will throw cast exception via FetchOperator +SELECT * FROM PW17; + +-- Test for non-parititioned table. +DROP TABLE PW17_2; +CREATE TABLE PW17_2(USER STRING, COMPLEXDT ARRAY) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.CustomSerDe1'; +LOAD DATA LOCAL INPATH '../data/files/pw17.txt' INTO TABLE PW17_2; +-- Without the fix HIVE-5199, will throw cast exception via MapOperator +SELECT COUNT(*) FROM PW17_2; + +DROP TABLE PW17_3; +CREATE TABLE PW17_3(USER STRING, COMPLEXDT ARRAY >) PARTITIONED BY (YEAR STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.CustomSerDe3'; +LOAD DATA LOCAL INPATH '../data/files/pw17.txt' INTO TABLE PW17_3 PARTITION (YEAR='1'); +ALTER TABLE PW17_3 PARTITION(YEAR='1') SET SERDE 'org.apache.hadoop.hive.serde2.CustomSerDe2'; +ALTER TABLE PW17_3 SET SERDE 'org.apache.hadoop.hive.serde2.CustomSerDe3'; +-- Without the fix HIVE-5285, will throw cast exception via FetchOperator +SELECT * FROM PW17; + +DROP TABLE PW17_4; +CREATE TABLE PW17_4(USER STRING, COMPLEXDT ARRAY >) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.CustomSerDe3'; +LOAD DATA LOCAL INPATH '../data/files/pw17.txt' INTO TABLE PW17_4; +-- Without the fix HIVE-5285, will throw cast exception via MapOperator +SELECT COUNT(*) FROM PW17_4; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat2.q new file mode 100644 index 0000000000000..5501a653a30a8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat2.q @@ -0,0 +1,18 @@ + + +create table partition_test_partitioned(key string, value string) partitioned by (dt string); + +insert overwrite table partition_test_partitioned partition(dt=100) select * from src1; +alter table partition_test_partitioned set fileformat rcfile; +insert overwrite table partition_test_partitioned partition(dt=101) select * from src1; +alter table partition_test_partitioned set fileformat Sequencefile; +insert overwrite table partition_test_partitioned partition(dt=102) select * from src1; + +set hive.fetch.task.conversion=minimal; +explain select *, BLOCK__OFFSET__INSIDE__FILE from partition_test_partitioned where dt >=100 and dt <= 102; +select * from partition_test_partitioned where dt >=100 and dt <= 102; + +set hive.fetch.task.conversion=more; +explain select *, BLOCK__OFFSET__INSIDE__FILE from partition_test_partitioned where dt >=100 and dt <= 102; +select * from partition_test_partitioned where dt >=100 and dt <= 102; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat3.q new file mode 100644 index 0000000000000..b85fec538fdd9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat3.q @@ -0,0 +1,18 @@ + + +create table partition_test_partitioned(key string, value string) partitioned by (dt string); + +alter table partition_test_partitioned set fileformat rcfile; +insert overwrite table partition_test_partitioned partition(dt=101) select * from src1; +show table extended like partition_test_partitioned partition(dt=101); + +alter table partition_test_partitioned set fileformat Sequencefile; +insert overwrite table partition_test_partitioned partition(dt=102) select * from src1; +show table extended like partition_test_partitioned partition(dt=102); +select key from partition_test_partitioned where dt=102; + +insert overwrite table partition_test_partitioned partition(dt=101) select * from src1; +show table extended like partition_test_partitioned partition(dt=101); +select key from partition_test_partitioned where dt=101; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat4.q new file mode 100644 index 0000000000000..33decec6eda6f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat4.q @@ -0,0 +1,8 @@ +create table partition_test_partitioned(key string, value string) partitioned by (dt string); +alter table partition_test_partitioned set fileformat sequencefile; +insert overwrite table partition_test_partitioned partition(dt='1') select * from src1; +alter table partition_test_partitioned partition (dt='1') set fileformat sequencefile; + +alter table partition_test_partitioned add partition (dt='2'); +alter table partition_test_partitioned drop partition (dt='2'); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat5.q new file mode 100644 index 0000000000000..fc3bb8458b3e6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat5.q @@ -0,0 +1,14 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +create table partition_test_partitioned(key string, value string) partitioned by (dt string); + +alter table partition_test_partitioned set fileformat rcfile; +insert overwrite table partition_test_partitioned partition(dt=101) select * from src1; +alter table partition_test_partitioned set fileformat Sequencefile; +insert overwrite table partition_test_partitioned partition(dt=102) select * from src1; + +select dt, count(1) from partition_test_partitioned where dt is not null group by dt; + +insert overwrite table partition_test_partitioned partition(dt=103) select * from src1; + +select dt, count(1) from partition_test_partitioned where dt is not null group by dt; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat6.q new file mode 100644 index 0000000000000..dac5ef213e7c4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat6.q @@ -0,0 +1,19 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +create table partition_test_partitioned(key string, value string) partitioned by (dt string); + +alter table partition_test_partitioned set fileformat rcfile; +insert overwrite table partition_test_partitioned partition(dt=101) select * from src1; +alter table partition_test_partitioned set fileformat Sequencefile; + +insert overwrite table partition_test_partitioned partition(dt=102) select * from src1; + +select count(1) from +(select key, value from partition_test_partitioned where dt=101 and key < 100 + union all +select key, value from partition_test_partitioned where dt=101 and key < 20)s; + +select count(1) from +(select key, value from partition_test_partitioned where dt=101 and key < 100 + union all +select key, value from partition_test_partitioned where dt=102 and key < 20)s; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat7.q new file mode 100644 index 0000000000000..c4a19ada5ff2f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat7.q @@ -0,0 +1,12 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +create table partition_test_partitioned(key string, value string) partitioned by (dt string); + +alter table partition_test_partitioned set fileformat rcfile; +insert overwrite table partition_test_partitioned partition(dt=101) select * from src1; + +select count(1) from partition_test_partitioned a join partition_test_partitioned b on a.key = b.key +where a.dt = '101' and b.dt = '101'; + +select count(1) from partition_test_partitioned a join partition_test_partitioned b on a.key = b.key +where a.dt = '101' and b.dt = '101' and a.key < 100; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat8.q new file mode 100644 index 0000000000000..46ea10f4b7a2f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat8.q @@ -0,0 +1,13 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- This tests that a query can span multiple partitions which can not only have different file formats, but +-- also different serdes +create table partition_test_partitioned(key string, value string) partitioned by (dt string) stored as rcfile; +insert overwrite table partition_test_partitioned partition(dt='1') select * from src; +alter table partition_test_partitioned set fileformat sequencefile; +insert overwrite table partition_test_partitioned partition(dt='2') select * from src; +alter table partition_test_partitioned set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'; +insert overwrite table partition_test_partitioned partition(dt='3') select * from src; + +select * from partition_test_partitioned where dt is not null order by key, value, dt limit 20; +select key+key as key, value, dt from partition_test_partitioned where dt is not null order by key, value, dt limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat9.q new file mode 100644 index 0000000000000..5205585853140 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partition_wise_fileformat9.q @@ -0,0 +1,12 @@ +set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; + +-- This tests that a query can span multiple partitions which can not only have different file formats, but +-- also different serdes +create table partition_test_partitioned(key string, value string) partitioned by (dt string) stored as rcfile; +insert overwrite table partition_test_partitioned partition(dt='1') select * from src; +alter table partition_test_partitioned set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; +insert overwrite table partition_test_partitioned partition(dt='2') select * from src; + +select * from partition_test_partitioned where dt is not null order by key, value, dt limit 20; +select key+key as key, value, dt from partition_test_partitioned where dt is not null order by key, value, dt limit 20; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partitions_json.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partitions_json.q new file mode 100644 index 0000000000000..825e3f600464f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/partitions_json.q @@ -0,0 +1,21 @@ +set hive.ddl.output.format=json; + +CREATE TABLE add_part_test (key STRING, value STRING) PARTITIONED BY (ds STRING); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD PARTITION (ds='2010-01-01'); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD IF NOT EXISTS PARTITION (ds='2010-01-01'); +SHOW PARTITIONS add_part_test; + +ALTER TABLE add_part_test ADD IF NOT EXISTS PARTITION (ds='2010-01-02'); +SHOW PARTITIONS add_part_test; + +SHOW TABLE EXTENDED LIKE add_part_test PARTITION (ds='2010-01-02'); + +ALTER TABLE add_part_test DROP PARTITION (ds='2010-01-02'); + +DROP TABLE add_part_test; + +set hive.ddl.output.format=text; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/pcr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/pcr.q new file mode 100644 index 0000000000000..09a39ae4e4476 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/pcr.q @@ -0,0 +1,141 @@ +drop table pcr_t1; +drop table pcr_t2; +drop table pcr_t3; + +create table pcr_t1 (key int, value string) partitioned by (ds string); + +insert overwrite table pcr_t1 partition (ds='2000-04-08') select * from src where key < 20 order by key; +insert overwrite table pcr_t1 partition (ds='2000-04-09') select * from src where key < 20 order by key; +insert overwrite table pcr_t1 partition (ds='2000-04-10') select * from src where key < 20 order by key; + +explain extended select key, value, ds from pcr_t1 where ds<='2000-04-09' and key<5 order by key, ds; +select key, value, ds from pcr_t1 where ds<='2000-04-09' and key<5 order by key, ds; + +explain extended select key, value from pcr_t1 where ds<='2000-04-09' or key<5 order by key; +select key, value from pcr_t1 where ds<='2000-04-09' or key<5 order by key; + +explain extended select key, value, ds from pcr_t1 where ds<='2000-04-09' and key<5 and value != 'val_2' order by key, ds; +select key, value, ds from pcr_t1 where ds<='2000-04-09' and key<5 and value != 'val_2' order by key, ds; + + +explain extended +select key, value, ds from pcr_t1 +where (ds < '2000-04-09' and key < 5) or (ds > '2000-04-09' and value == 'val_5') order by key, ds; + +select key, value, ds from pcr_t1 +where (ds < '2000-04-09' and key < 5) or (ds > '2000-04-09' and value == 'val_5') order by key, ds; + + +explain extended +select key, value, ds from pcr_t1 +where (ds < '2000-04-10' and key < 5) or (ds > '2000-04-08' and value == 'val_5') order by key, ds; + +select key, value, ds from pcr_t1 +where (ds < '2000-04-10' and key < 5) or (ds > '2000-04-08' and value == 'val_5') order by key, ds; + + +explain extended +select key, value, ds from pcr_t1 +where (ds < '2000-04-10' or key < 5) and (ds > '2000-04-08' or value == 'val_5') order by key, ds; + +select key, value, ds from pcr_t1 +where (ds < '2000-04-10' or key < 5) and (ds > '2000-04-08' or value == 'val_5') order by key, ds; + + +explain extended select key, value from pcr_t1 where (ds='2000-04-08' or ds='2000-04-09') and key=14 order by key, value; +select key, value from pcr_t1 where (ds='2000-04-08' or ds='2000-04-09') and key=14 order by key, value; + +explain extended select key, value from pcr_t1 where ds='2000-04-08' or ds='2000-04-09' order by key, value; +select key, value from pcr_t1 where ds='2000-04-08' or ds='2000-04-09' order by key, value; + +explain extended select key, value from pcr_t1 where ds>='2000-04-08' or ds<'2000-04-10' order by key, value; +select key, value from pcr_t1 where ds>='2000-04-08' or ds<'2000-04-10' order by key, value; + +explain extended select key, value, ds from pcr_t1 where (ds='2000-04-08' and key=1) or (ds='2000-04-09' and key=2) order by key, value, ds; +select key, value, ds from pcr_t1 where (ds='2000-04-08' and key=1) or (ds='2000-04-09' and key=2) order by key, value, ds; + +explain extended select * from pcr_t1 t1 join pcr_t1 t2 on t1.key=t2.key and t1.ds='2000-04-08' and t2.ds='2000-04-08' order by t1.key; +select * from pcr_t1 t1 join pcr_t1 t2 on t1.key=t2.key and t1.ds='2000-04-08' and t2.ds='2000-04-08' order by t1.key; + +explain extended select * from pcr_t1 t1 join pcr_t1 t2 on t1.key=t2.key and t1.ds='2000-04-08' and t2.ds='2000-04-09' order by t1.key; +select * from pcr_t1 t1 join pcr_t1 t2 on t1.key=t2.key and t1.ds='2000-04-08' and t2.ds='2000-04-09' order by t1.key; + +insert overwrite table pcr_t1 partition (ds='2000-04-11') select * from src where key < 20 order by key; + +explain extended select key, value, ds from pcr_t1 where (ds>'2000-04-08' and ds<'2000-04-11') or (ds>='2000-04-08' and ds<='2000-04-11' and key=2) order by key, value, ds; +select key, value, ds from pcr_t1 where (ds>'2000-04-08' and ds<'2000-04-11') or (ds>='2000-04-08' and ds<='2000-04-11' and key=2) order by key, value, ds; + +explain extended select key, value, ds from pcr_t1 where (ds>'2000-04-08' and ds<'2000-04-11') or (ds<='2000-04-09' and key=2) order by key, value, ds; +select key, value, ds from pcr_t1 where (ds>'2000-04-08' and ds<'2000-04-11') or (ds<='2000-04-09' and key=2) order by key, value, ds; + +create table pcr_t2 (key int, value string); +create table pcr_t3 (key int, value string); + +explain extended +from pcr_t1 +insert overwrite table pcr_t2 select key, value where ds='2000-04-08' +insert overwrite table pcr_t3 select key, value where ds='2000-04-08'; + +from pcr_t1 +insert overwrite table pcr_t2 select key, value where ds='2000-04-08' +insert overwrite table pcr_t3 select key, value where ds='2000-04-08'; + +explain extended +from pcr_t1 +insert overwrite table pcr_t2 select key, value where ds='2000-04-08' and key=2 +insert overwrite table pcr_t3 select key, value where ds='2000-04-08' and key=3; + +from pcr_t1 +insert overwrite table pcr_t2 select key, value where ds='2000-04-08' and key=2 +insert overwrite table pcr_t3 select key, value where ds='2000-04-08' and key=3; + + +explain extended select key, value from srcpart where ds='2008-04-08' and hr=11 order by key limit 10; +select key, value from srcpart where ds='2008-04-04' and hr=11 order by key limit 10; + +explain extended select key, value, ds, hr from srcpart where ds='2008-04-08' and (hr='11' or hr='12') and key=11 order by key, ds, hr; +select key, value, ds, hr from srcpart where ds='2008-04-08' and (hr='11' or hr='12') and key=11 order by key, ds, hr; + +explain extended select key, value, ds, hr from srcpart where hr='11' and key=11 order by key, ds, hr; +select key, value, ds, hr from srcpart where hr='11' and key=11 order by key, ds, hr; + +drop table pcr_t1; +drop table pcr_t2; +drop table pcr_t3; + + +-- Test cases when a non-boolean ds expression has same and different values for all possible ds values: +drop table pcr_foo; +create table pcr_foo (key int, value string) partitioned by (ds int); +insert overwrite table pcr_foo partition (ds=3) select * from src where key < 10 order by key; +insert overwrite table pcr_foo partition (ds=5) select * from src where key < 10 order by key; +insert overwrite table pcr_foo partition (ds=7) select * from src where key < 10 order by key; + +-- the condition is 'true' for all the 3 partitions (ds=3,5,7): +select key, value, ds from pcr_foo where (ds % 2 == 1); + +-- the condition is 'true' for partitions (ds=3,5) but 'false' of partition ds=7: +select key, value, ds from pcr_foo where (ds / 3 < 2); + +drop table pcr_foo; + + + +-- Cover org.apache.hadoop.hive.ql.optimizer.pcr.PcrExprProcFactory.FieldExprProcessor. +-- Create a table with a struct data: +create table ab(strct struct) +row format delimited + fields terminated by '\t' + collection items terminated by '\001'; +load data local inpath '../data/files/kv1.txt' +overwrite into table ab; + +-- Create partitioned table with struct data: +drop table foo_field; +create table foo_field (s struct) partitioned by (ds int); +insert overwrite table foo_field partition (ds=5) select strct from ab where strct.a < 10 limit 2; +insert overwrite table foo_field partition (ds=7) select strct from ab where strct.a > 190 limit 2; +select s,ds from foo_field where ((ds + s.a) > 0) order by ds,s; + +drop table foo_field; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/plan_json.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/plan_json.q new file mode 100644 index 0000000000000..0243c995412b0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/plan_json.q @@ -0,0 +1,3 @@ +-- explain plan json: the query gets the formatted json output of the query plan of the hive query + +EXPLAIN FORMATTED SELECT count(1) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd1.q new file mode 100644 index 0000000000000..a5a4db0544ed3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd1.q @@ -0,0 +1,14 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT src.key as c3 from src where src.key > '2'; + +SELECT src.key as c3 from src where src.key > '2'; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT src.key as c3 from src where src.key > '2'; + +SELECT src.key as c3 from src where src.key > '2'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd2.q new file mode 100644 index 0000000000000..536eb989dff95 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd2.q @@ -0,0 +1,74 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=true; + +explain +select b.key,b.cc +from ( + select a.* + from ( + select key, count(value) as cc + from srcpart a + where a.ds = '2008-04-08' and a.hr = '11' + group by key + )a + distribute by a.key + sort by a.key,a.cc desc) b +where b.cc>1; + +select b.key,b.cc +from ( + select a.* + from ( + select key, count(value) as cc + from srcpart a + where a.ds = '2008-04-08' and a.hr = '11' + group by key + )a + distribute by a.key + sort by a.key,a.cc desc) b +where b.cc>1; + +EXPLAIN +SELECT user_id +FROM ( + SELECT + CAST(key AS INT) AS user_id + ,CASE WHEN (value LIKE 'aaa%' OR value LIKE 'vvv%') + THEN 1 + ELSE 0 END AS tag_student + FROM srcpart +) sub +WHERE sub.tag_student > 0; + +EXPLAIN +SELECT x.key, x.value as v1, y.key FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1; + +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +explain +select b.key,b.cc +from ( + select a.* + from ( + select key, count(value) as cc + from srcpart a + where a.ds = '2008-04-08' and a.hr = '11' + group by key + )a + distribute by a.key + sort by a.key,a.cc desc) b +where b.cc>1; + +select b.key,b.cc +from ( + select a.* + from ( + select key, count(value) as cc + from srcpart a + where a.ds = '2008-04-08' and a.hr = '11' + group by key + )a + distribute by a.key + sort by a.key,a.cc desc) b +where b.cc>1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_clusterby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_clusterby.q new file mode 100644 index 0000000000000..0c8b245d81320 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_clusterby.q @@ -0,0 +1,20 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT * FROM SRC x where x.key = 10 CLUSTER BY x.key; +SELECT * FROM SRC x where x.key = 10 CLUSTER BY x.key; + +EXPLAIN +SELECT x.key, x.value as v1, y.key FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1;; +SELECT x.key, x.value as v1, y.key FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT * FROM SRC x where x.key = 10 CLUSTER BY x.key; +SELECT * FROM SRC x where x.key = 10 CLUSTER BY x.key; + +EXPLAIN +SELECT x.key, x.value as v1, y.key FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1;; +SELECT x.key, x.value as v1, y.key FROM SRC x JOIN SRC y ON (x.key = y.key) where x.key = 20 CLUSTER BY v1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_constant_expr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_constant_expr.q new file mode 100644 index 0000000000000..969c7e4f0cf28 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_constant_expr.q @@ -0,0 +1,24 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +CREATE TABLE ppd_constant_expr(c1 STRING, c2 INT, c3 DOUBLE) STORED AS TEXTFILE; + +EXPLAIN +FROM src1 +INSERT OVERWRITE TABLE ppd_constant_expr SELECT 4 + NULL, src1.key - NULL, NULL + NULL; + +FROM src1 +INSERT OVERWRITE TABLE ppd_constant_expr SELECT 4 + NULL, src1.key - NULL, NULL + NULL; + +SELECT ppd_constant_expr.* FROM ppd_constant_expr; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +FROM src1 +INSERT OVERWRITE TABLE ppd_constant_expr SELECT 4 + NULL, src1.key - NULL, NULL + NULL; + +FROM src1 +INSERT OVERWRITE TABLE ppd_constant_expr SELECT 4 + NULL, src1.key - NULL, NULL + NULL; + +SELECT ppd_constant_expr.* FROM ppd_constant_expr; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_constant_where.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_constant_where.q new file mode 100644 index 0000000000000..0c102354fed7a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_constant_where.q @@ -0,0 +1,5 @@ +-- Test that the partition pruner does not fail when there is a constant expression in the filter + +EXPLAIN SELECT COUNT(*) FROM srcpart WHERE ds = '2008-04-08' and 'a' = 'a'; + +SELECT COUNT(*) FROM srcpart WHERE ds = '2008-04-08' and 'a' = 'a'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby.q new file mode 100644 index 0000000000000..65c0b01198491 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby.q @@ -0,0 +1,26 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT src1.c1 +FROM +(SELECT src.value as c1, count(src.key) as c2 from src where src.value > 'val_10' group by src.value) src1 +WHERE src1.c1 > 'val_200' and (src1.c2 > 30 or src1.c1 < 'val_400'); + +SELECT src1.c1 +FROM +(SELECT src.value as c1, count(src.key) as c2 from src where src.value > 'val_10' group by src.value) src1 +WHERE src1.c1 > 'val_200' and (src1.c2 > 30 or src1.c1 < 'val_400'); + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT src1.c1 +FROM +(SELECT src.value as c1, count(src.key) as c2 from src where src.value > 'val_10' group by src.value) src1 +WHERE src1.c1 > 'val_200' and (src1.c2 > 30 or src1.c1 < 'val_400'); + +SELECT src1.c1 +FROM +(SELECT src.value as c1, count(src.key) as c2 from src where src.value > 'val_10' group by src.value) src1 +WHERE src1.c1 > 'val_200' and (src1.c2 > 30 or src1.c1 < 'val_400'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby2.q new file mode 100644 index 0000000000000..ae288eada2610 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby2.q @@ -0,0 +1,30 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT max(src1.c1), src1.c2 +FROM +(SELECT src.value AS c1, count(src.key) AS c2 FROM src WHERE src.value > 'val_10' GROUP BY src.value) src1 +WHERE src1.c1 > 'val_200' AND (src1.c2 > 30 OR src1.c1 < 'val_400') +GROUP BY src1.c2; + +SELECT max(src1.c1), src1.c2 +FROM +(SELECT src.value AS c1, count(src.key) AS c2 FROM src WHERE src.value > 'val_10' GROUP BY src.value) src1 +WHERE src1.c1 > 'val_200' AND (src1.c2 > 30 OR src1.c1 < 'val_400') +GROUP BY src1.c2; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT max(src1.c1), src1.c2 +FROM +(SELECT src.value AS c1, count(src.key) AS c2 FROM src WHERE src.value > 'val_10' GROUP BY src.value) src1 +WHERE src1.c1 > 'val_200' AND (src1.c2 > 30 OR src1.c1 < 'val_400') +GROUP BY src1.c2; + +SELECT max(src1.c1), src1.c2 +FROM +(SELECT src.value AS c1, count(src.key) AS c2 FROM src WHERE src.value > 'val_10' GROUP BY src.value) src1 +WHERE src1.c1 > 'val_200' AND (src1.c2 > 30 OR src1.c1 < 'val_400') +GROUP BY src1.c2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby_join.q new file mode 100644 index 0000000000000..82f358b0d6ca1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_gby_join.q @@ -0,0 +1,24 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT src1.c1, count(1) +FROM +(SELECT src.key AS c1, src.value AS c2 from src where src.key > '1' ) src1 +JOIN +(SELECT src.key AS c3, src.value AS c4 from src where src.key > '2' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +WHERE src1.c1 > '20' AND (src1.c2 < 'val_50' OR src1.c1 > '2') AND (src2.c3 > '50' OR src1.c1 < '50') AND (src2.c3 <> '4') +GROUP BY src1.c1; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT src1.c1, count(1) +FROM +(SELECT src.key AS c1, src.value AS c2 from src where src.key > '1' ) src1 +JOIN +(SELECT src.key AS c3, src.value AS c4 from src where src.key > '2' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +WHERE src1.c1 > '20' AND (src1.c2 < 'val_50' OR src1.c1 > '2') AND (src2.c3 > '50' OR src1.c1 < '50') AND (src2.c3 <> '4') +GROUP BY src1.c1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join.q new file mode 100644 index 0000000000000..09323e965b846 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join.q @@ -0,0 +1,38 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key > '1' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key > '2' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +WHERE src1.c1 > '20' and (src1.c2 < 'val_50' or src1.c1 > '2') and (src2.c3 > '50' or src1.c1 < '50') and (src2.c3 <> '4'); + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key > '1' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key > '2' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +WHERE src1.c1 > '20' and (src1.c2 < 'val_50' or src1.c1 > '2') and (src2.c3 > '50' or src1.c1 < '50') and (src2.c3 <> '4'); + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key > '1' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key > '2' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +WHERE src1.c1 > '20' and (src1.c2 < 'val_50' or src1.c1 > '2') and (src2.c3 > '50' or src1.c1 < '50') and (src2.c3 <> '4'); + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key > '1' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key > '2' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +WHERE src1.c1 > '20' and (src1.c2 < 'val_50' or src1.c1 > '2') and (src2.c3 > '50' or src1.c1 < '50') and (src2.c3 <> '4'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join2.q new file mode 100644 index 0000000000000..8bd4cae3f96c2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join2.q @@ -0,0 +1,50 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key <> '302' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key <> '305' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +JOIN +(SELECT src.key as c5, src.value as c6 from src where src.key <> '306' ) src3 +ON src1.c2 = src3.c6 +WHERE src1.c1 <> '311' and (src1.c2 <> 'val_50' or src1.c1 > '1') and (src2.c3 <> '10' or src1.c1 <> '10') and (src2.c3 <> '14') and (sqrt(src3.c5) <> 13); + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key <> '302' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key <> '305' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +JOIN +(SELECT src.key as c5, src.value as c6 from src where src.key <> '306' ) src3 +ON src1.c2 = src3.c6 +WHERE src1.c1 <> '311' and (src1.c2 <> 'val_50' or src1.c1 > '1') and (src2.c3 <> '10' or src1.c1 <> '10') and (src2.c3 <> '14') and (sqrt(src3.c5) <> 13); + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key <> '302' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key <> '305' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +JOIN +(SELECT src.key as c5, src.value as c6 from src where src.key <> '306' ) src3 +ON src1.c2 = src3.c6 +WHERE src1.c1 <> '311' and (src1.c2 <> 'val_50' or src1.c1 > '1') and (src2.c3 <> '10' or src1.c1 <> '10') and (src2.c3 <> '14') and (sqrt(src3.c5) <> 13); + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key <> '302' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key <> '305' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +JOIN +(SELECT src.key as c5, src.value as c6 from src where src.key <> '306' ) src3 +ON src1.c2 = src3.c6 +WHERE src1.c1 <> '311' and (src1.c2 <> 'val_50' or src1.c1 > '1') and (src2.c3 <> '10' or src1.c1 <> '10') and (src2.c3 <> '14') and (sqrt(src3.c5) <> 13); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join3.q new file mode 100644 index 0000000000000..7abf41098618e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join3.q @@ -0,0 +1,50 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key <> '11' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key <> '12' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +JOIN +(SELECT src.key as c5, src.value as c6 from src where src.key <> '13' ) src3 +ON src1.c1 = src3.c5 +WHERE src1.c1 > '0' and (src1.c2 <> 'val_500' or src1.c1 > '1') and (src2.c3 > '10' or src1.c1 <> '10') and (src2.c3 <> '4') and (src3.c5 <> '1'); + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key <> '11' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key <> '12' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +JOIN +(SELECT src.key as c5, src.value as c6 from src where src.key <> '13' ) src3 +ON src1.c1 = src3.c5 +WHERE src1.c1 > '0' and (src1.c2 <> 'val_500' or src1.c1 > '1') and (src2.c3 > '10' or src1.c1 <> '10') and (src2.c3 <> '4') and (src3.c5 <> '1'); + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key <> '11' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key <> '12' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +JOIN +(SELECT src.key as c5, src.value as c6 from src where src.key <> '13' ) src3 +ON src1.c1 = src3.c5 +WHERE src1.c1 > '0' and (src1.c2 <> 'val_500' or src1.c1 > '1') and (src2.c3 > '10' or src1.c1 <> '10') and (src2.c3 <> '4') and (src3.c5 <> '1'); + +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src where src.key <> '11' ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key <> '12' ) src2 +ON src1.c1 = src2.c3 AND src1.c1 < '400' +JOIN +(SELECT src.key as c5, src.value as c6 from src where src.key <> '13' ) src3 +ON src1.c1 = src3.c5 +WHERE src1.c1 > '0' and (src1.c2 <> 'val_500' or src1.c1 > '1') and (src2.c3 > '10' or src1.c1 <> '10') and (src2.c3 <> '4') and (src3.c5 <> '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join_filter.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join_filter.q new file mode 100644 index 0000000000000..9d42ef20860d1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_join_filter.q @@ -0,0 +1,116 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +explain extended select a.key, b.k2, b.k3 +from src a +join ( +select key, +min(key) as k, +min(key)+1 as k1, +min(key)+2 as k2, +min(key)+3 as k3 +from src +group by key +) b +on a.key=b.key and b.k1 < 5; + +select a.key, b.k2, b.k3 +from src a +join ( +select key, +min(key) as k, +min(key)+1 as k1, +min(key)+2 as k2, +min(key)+3 as k3 +from src +group by key +) b +on a.key=b.key and b.k1 < 5; + +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=true; + +explain extended select a.key, b.k2, b.k3 +from src a +join ( +select key, +min(key) as k, +min(key)+1 as k1, +min(key)+2 as k2, +min(key)+3 as k3 +from src +group by key +) b +on a.key=b.key and b.k1 < 5; + +select a.key, b.k2, b.k3 +from src a +join ( +select key, +min(key) as k, +min(key)+1 as k1, +min(key)+2 as k2, +min(key)+3 as k3 +from src +group by key +) b +on a.key=b.key and b.k1 < 5; + +set hive.optimize.ppd=false; +set hive.ppd.remove.duplicatefilters=false; + +explain extended select a.key, b.k2, b.k3 +from src a +join ( +select key, +min(key) as k, +min(key)+1 as k1, +min(key)+2 as k2, +min(key)+3 as k3 +from src +group by key +) b +on a.key=b.key and b.k1 < 5; + +select a.key, b.k2, b.k3 +from src a +join ( +select key, +min(key) as k, +min(key)+1 as k1, +min(key)+2 as k2, +min(key)+3 as k3 +from src +group by key +) b +on a.key=b.key and b.k1 < 5; + +set hive.optimize.ppd=faluse; +set hive.ppd.remove.duplicatefilters=true; + +explain extended select a.key, b.k2, b.k3 +from src a +join ( +select key, +min(key) as k, +min(key)+1 as k1, +min(key)+2 as k2, +min(key)+3 as k3 +from src +group by key +) b +on a.key=b.key and b.k1 < 5; + +select a.key, b.k2, b.k3 +from src a +join ( +select key, +min(key) as k, +min(key)+1 as k1, +min(key)+2 as k2, +min(key)+3 as k3 +from src +group by key +) b +on a.key=b.key and b.k1 < 5; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_multi_insert.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_multi_insert.q new file mode 100644 index 0000000000000..a802df1b98819 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_multi_insert.q @@ -0,0 +1,45 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +CREATE TABLE mi1(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE mi2(key INT, value STRING) STORED AS TEXTFILE; +CREATE TABLE mi3(key INT) PARTITIONED BY(ds STRING, hr STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src a JOIN src b ON (a.key = b.key) +INSERT OVERWRITE TABLE mi1 SELECT a.* WHERE a.key < 100 +INSERT OVERWRITE TABLE mi2 SELECT a.key, a.value WHERE a.key >= 100 and a.key < 200 +INSERT OVERWRITE TABLE mi3 PARTITION(ds='2008-04-08', hr='12') SELECT a.key WHERE a.key >= 200 and a.key < 300 +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/mi4.out' SELECT a.value WHERE a.key >= 300; + +FROM src a JOIN src b ON (a.key = b.key) +INSERT OVERWRITE TABLE mi1 SELECT a.* WHERE a.key < 100 +INSERT OVERWRITE TABLE mi2 SELECT a.key, a.value WHERE a.key >= 100 and a.key < 200 +INSERT OVERWRITE TABLE mi3 PARTITION(ds='2008-04-08', hr='12') SELECT a.key WHERE a.key >= 200 and a.key < 300 +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/mi4.out' SELECT a.value WHERE a.key >= 300; + +SELECT mi1.* FROM mi1; +SELECT mi2.* FROM mi2; +SELECT mi3.* FROM mi3; +dfs -cat ../build/ql/test/data/warehouse/mi4.out/*; + + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +FROM src a JOIN src b ON (a.key = b.key) +INSERT OVERWRITE TABLE mi1 SELECT a.* WHERE a.key < 100 +INSERT OVERWRITE TABLE mi2 SELECT a.key, a.value WHERE a.key >= 100 and a.key < 200 +INSERT OVERWRITE TABLE mi3 PARTITION(ds='2008-04-08', hr='12') SELECT a.key WHERE a.key >= 200 and a.key < 300 +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/mi4.out' SELECT a.value WHERE a.key >= 300; + +FROM src a JOIN src b ON (a.key = b.key) +INSERT OVERWRITE TABLE mi1 SELECT a.* WHERE a.key < 100 +INSERT OVERWRITE TABLE mi2 SELECT a.key, a.value WHERE a.key >= 100 and a.key < 200 +INSERT OVERWRITE TABLE mi3 PARTITION(ds='2008-04-08', hr='12') SELECT a.key WHERE a.key >= 200 and a.key < 300 +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/mi4.out' SELECT a.value WHERE a.key >= 300; + +SELECT mi1.* FROM mi1; +SELECT mi2.* FROM mi2; +SELECT mi3.* FROM mi3; +dfs -cat ../build/ql/test/data/warehouse/mi4.out/*; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join1.q new file mode 100644 index 0000000000000..752176c4b7e4b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join1.q @@ -0,0 +1,38 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN + FROM + src a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + FROM + src a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN + FROM + src a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + FROM + src a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join2.q new file mode 100644 index 0000000000000..e22892b45f2d0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join2.q @@ -0,0 +1,38 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN + FROM + src a + RIGHT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25'; + + FROM + src a + RIGHT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25'; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN + FROM + src a + RIGHT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25'; + + FROM + src a + RIGHT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join3.q new file mode 100644 index 0000000000000..d756b90e84316 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join3.q @@ -0,0 +1,38 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN + FROM + src a + FULL OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25'; + + FROM + src a + FULL OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25'; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN + FROM + src a + FULL OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25'; + + FROM + src a + FULL OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join4.q new file mode 100644 index 0000000000000..e465eda68e258 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join4.q @@ -0,0 +1,50 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN + FROM + src a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + RIGHT OUTER JOIN + src c + ON (a.key = c.key) + SELECT a.key, a.value, b.key, b.value, c.key + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25' AND sqrt(c.key) <> 13 ; + + FROM + src a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + RIGHT OUTER JOIN + src c + ON (a.key = c.key) + SELECT a.key, a.value, b.key, b.value, c.key + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25' AND sqrt(c.key) <> 13 ; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN + FROM + src a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + RIGHT OUTER JOIN + src c + ON (a.key = c.key) + SELECT a.key, a.value, b.key, b.value, c.key + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25' AND sqrt(c.key) <> 13 ; + + FROM + src a + LEFT OUTER JOIN + src b + ON (a.key = b.key) + RIGHT OUTER JOIN + src c + ON (a.key = c.key) + SELECT a.key, a.value, b.key, b.value, c.key + WHERE a.key > '10' AND a.key < '20' AND b.key > '15' AND b.key < '25' AND sqrt(c.key) <> 13 ; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join5.q new file mode 100644 index 0000000000000..382b9494cf7b9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_outer_join5.q @@ -0,0 +1,16 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=true; + +create table t1 (id int, key string, value string); +create table t2 (id int, key string, value string); +create table t3 (id int, key string, value string); +create table t4 (id int, key string, value string); + +explain select * from t1 full outer join t2 on t1.id=t2.id join t3 on t2.id=t3.id where t3.id=20; +explain select * from t1 join t2 on (t1.id=t2.id) left outer join t3 on (t2.id=t3.id) where t2.id=20; +explain select * from t1 join t2 on (t1.id=t2.id) left outer join t3 on (t1.id=t3.id) where t2.id=20; + +drop table t1; +drop table t2; +drop table t3; +drop table t4; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_random.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_random.q new file mode 100644 index 0000000000000..de0c067f353b9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_random.q @@ -0,0 +1,22 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key > '2' ) src2 +ON src1.c1 = src2.c3 +WHERE rand() > 0.5; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT src1.c1, src2.c4 +FROM +(SELECT src.key as c1, src.value as c2 from src ) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src where src.key > '2' ) src2 +ON src1.c1 = src2.c3 +WHERE rand() > 0.5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_repeated_alias.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_repeated_alias.q new file mode 100644 index 0000000000000..732671afbe3da --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_repeated_alias.q @@ -0,0 +1,33 @@ +drop table pokes; +drop table pokes2; +create table pokes (foo int, bar int, blah int); +create table pokes2 (foo int, bar int, blah int); + +-- Q1: predicate should not be pushed on the right side of a left outer join +explain +SELECT a.foo as foo1, b.foo as foo2, b.bar +FROM pokes a LEFT OUTER JOIN pokes2 b +ON a.foo=b.foo +WHERE b.bar=3; + +-- Q2: predicate should not be pushed on the right side of a left outer join +explain +SELECT * FROM + (SELECT a.foo as foo1, b.foo as foo2, b.bar + FROM pokes a LEFT OUTER JOIN pokes2 b + ON a.foo=b.foo) a +WHERE a.bar=3; + +-- Q3: predicate should be pushed +explain +SELECT * FROM + (SELECT a.foo as foo1, b.foo as foo2, a.bar + FROM pokes a JOIN pokes2 b + ON a.foo=b.foo) a +WHERE a.bar=3; + +-- Q4: here, the filter c.bar should be created under the first join but above the second +explain select c.foo, d.bar from (select c.foo, b.bar, c.blah from pokes c left outer join pokes b on c.foo=b.foo) c left outer join pokes d where d.foo=1 and c.bar=2; + +drop table pokes; +drop table pokes2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_transform.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_transform.q new file mode 100644 index 0000000000000..65a498d021f77 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_transform.q @@ -0,0 +1,38 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_udf_case.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_udf_case.q new file mode 100644 index 0000000000000..b7a6b15bfd1c2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_udf_case.q @@ -0,0 +1,55 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT * +FROM srcpart a JOIN srcpart b +ON a.key = b.key +WHERE a.ds = '2008-04-08' AND + b.ds = '2008-04-08' AND + CASE a.key + WHEN '27' THEN TRUE + WHEN '38' THEN FALSE + ELSE NULL + END +ORDER BY a.key, a.value, a.ds, a.hr, b.key, b.value, b.ds, b.hr; + +SELECT * +FROM srcpart a JOIN srcpart b +ON a.key = b.key +WHERE a.ds = '2008-04-08' AND + b.ds = '2008-04-08' AND + CASE a.key + WHEN '27' THEN TRUE + WHEN '38' THEN FALSE + ELSE NULL + END +ORDER BY a.key, a.value, a.ds, a.hr, b.key, b.value, b.ds, b.hr; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT * +FROM srcpart a JOIN srcpart b +ON a.key = b.key +WHERE a.ds = '2008-04-08' AND + b.ds = '2008-04-08' AND + CASE a.key + WHEN '27' THEN TRUE + WHEN '38' THEN FALSE + ELSE NULL + END +ORDER BY a.key, a.value, a.ds, a.hr, b.key, b.value, b.ds, b.hr; + +SELECT * +FROM srcpart a JOIN srcpart b +ON a.key = b.key +WHERE a.ds = '2008-04-08' AND + b.ds = '2008-04-08' AND + CASE a.key + WHEN '27' THEN TRUE + WHEN '38' THEN FALSE + ELSE NULL + END +ORDER BY a.key, a.value, a.ds, a.hr, b.key, b.value, b.ds, b.hr; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_udf_col.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_udf_col.q new file mode 100644 index 0000000000000..993da9752cb7f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_udf_col.q @@ -0,0 +1,48 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1; + +EXPLAIN +SELECT * FROM +( +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1)s WHERE s.randum123>0.1 LIMIT 20; + +EXPLAIN +SELECT key,randum123, h4 +FROM (SELECT *, cast(rand() as double) AS randum123, hex(4) AS h4 FROM src WHERE key = 100) a +WHERE a.h4 <= 3; + +EXPLAIN +SELECT key,randum123, v10 +FROM (SELECT *, cast(rand() as double) AS randum123, value*10 AS v10 FROM src WHERE key = 100) a +WHERE a.v10 <= 200; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1; + +EXPLAIN +SELECT * FROM +( +SELECT key, randum123 +FROM (SELECT *, cast(rand() as double) AS randum123 FROM src WHERE key = 100) a +WHERE randum123 <=0.1)s WHERE s.randum123>0.1 LIMIT 20; + +EXPLAIN +SELECT key,randum123, h4 +FROM (SELECT *, cast(rand() as double) AS randum123, hex(4) AS h4 FROM src WHERE key = 100) a +WHERE a.h4 <= 3; + +EXPLAIN +SELECT key,randum123, v10 +FROM (SELECT *, cast(rand() as double) AS randum123, value*10 AS v10 FROM src WHERE key = 100) a +WHERE a.v10 <= 200; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_union.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_union.q new file mode 100644 index 0000000000000..2cd876e078e93 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_union.q @@ -0,0 +1,38 @@ +set hive.optimize.ppd=true; +set hive.ppd.remove.duplicatefilters=false; + +EXPLAIN +FROM ( + FROM src select src.key, src.value WHERE src.key < '100' + UNION ALL + FROM src SELECT src.* WHERE src.key > '150' +) unioned_query +SELECT unioned_query.* + WHERE key > '4' and value > 'val_4'; + +FROM ( + FROM src select src.key, src.value WHERE src.key < '100' + UNION ALL + FROM src SELECT src.* WHERE src.key > '150' +) unioned_query +SELECT unioned_query.* + WHERE key > '4' and value > 'val_4'; + +set hive.ppd.remove.duplicatefilters=true; + +EXPLAIN +FROM ( + FROM src select src.key, src.value WHERE src.key < '100' + UNION ALL + FROM src SELECT src.* WHERE src.key > '150' +) unioned_query +SELECT unioned_query.* + WHERE key > '4' and value > 'val_4'; + +FROM ( + FROM src select src.key, src.value WHERE src.key < '100' + UNION ALL + FROM src SELECT src.* WHERE src.key > '150' +) unioned_query +SELECT unioned_query.* + WHERE key > '4' and value > 'val_4'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_union_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_union_view.q new file mode 100644 index 0000000000000..d635e2d171469 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_union_view.q @@ -0,0 +1,51 @@ +-- test predicate pushdown on a view with a union + +drop view v; + +create table t1_new (key string, value string) partitioned by (ds string); + +insert overwrite table t1_new partition (ds = '2011-10-15') +select 'key1', 'value1' from src limit 1; + +insert overwrite table t1_new partition (ds = '2011-10-16') +select 'key2', 'value2' from src limit 1; + +create table t1_old (keymap string, value string) partitioned by (ds string); + +insert overwrite table t1_old partition (ds = '2011-10-13') +select 'keymap3', 'value3' from src limit 1; + +insert overwrite table t1_old partition (ds = '2011-10-14') +select 'keymap4', 'value4' from src limit 1; + +create table t1_mapping (key string, keymap string) partitioned by (ds string); + +insert overwrite table t1_mapping partition (ds = '2011-10-13') +select 'key3', 'keymap3' from src limit 1; + +insert overwrite table t1_mapping partition (ds = '2011-10-14') +select 'key4', 'keymap4' from src limit 1; + + +create view t1 partitioned on (ds) as +select * from +( +select key, value, ds from t1_new +union all +select key, value, t1_old.ds from t1_old join t1_mapping +on t1_old.keymap = t1_mapping.keymap and + t1_old.ds = t1_mapping.ds +) subq; + +explain extended +select * from t1 where ds = '2011-10-13'; + +select * from t1 where ds = '2011-10-13'; + +select * from t1 where ds = '2011-10-14'; + +explain extended +select * from t1 where ds = '2011-10-15'; + +select * from t1 where ds = '2011-10-15'; +select * from t1 where ds = '2011-10-16'; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_vc.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_vc.q new file mode 100644 index 0000000000000..b5efdb31bd78c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppd_vc.q @@ -0,0 +1,14 @@ +--HIVE-3926 PPD on virtual column of partitioned table is not working + +explain extended +select * from srcpart where BLOCK__OFFSET__INSIDE__FILE<100; +select * from srcpart where BLOCK__OFFSET__INSIDE__FILE<100; + +explain extended +select b.* from src a join + (select *,BLOCK__OFFSET__INSIDE__FILE from srcpart where BLOCK__OFFSET__INSIDE__FILE<100) b + on a.key=b.key AND b.BLOCK__OFFSET__INSIDE__FILE<50 order by ds,hr,BLOCK__OFFSET__INSIDE__FILE; + +select b.* from src a join + (select *,BLOCK__OFFSET__INSIDE__FILE from srcpart where BLOCK__OFFSET__INSIDE__FILE<100) b + on a.key=b.key AND b.BLOCK__OFFSET__INSIDE__FILE<50 order by ds,hr,BLOCK__OFFSET__INSIDE__FILE; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_allchildsarenull.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_allchildsarenull.q new file mode 100644 index 0000000000000..3cda01b8b343b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_allchildsarenull.q @@ -0,0 +1,41 @@ +set hive.optimize.ppd=true; + +EXPLAIN EXTENDED +SELECT + CAST(key AS INT) AS user_id, value + FROM srcpart + WHERE ds='2008-04-08' and + ( CASE WHEN (value LIKE 'aaa%' OR value LIKE 'vvv%') + THEN 1 + ELSE 0 end ) > 0 +; + +SELECT + CAST(key AS INT) AS user_id, value + FROM srcpart + WHERE ds='2008-04-08' and + ( CASE WHEN (value LIKE 'aaa%' OR value LIKE 'vvv%') + THEN 1 + ELSE 0 end ) > 0 +; + +set hive.optimize.ppd=false; + +EXPLAIN EXTENDED +SELECT + CAST(key AS INT) AS user_id, value + FROM srcpart + WHERE ds='2008-04-08' and + ( CASE WHEN (value LIKE 'aaa%' OR value LIKE 'vvv%') + THEN 1 + ELSE 0 end ) > 0 +; + +SELECT + CAST(key AS INT) AS user_id, value + FROM srcpart + WHERE ds='2008-04-08' and + ( CASE WHEN (value LIKE 'aaa%' OR value LIKE 'vvv%') + THEN 1 + ELSE 0 end ) > 0 +; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown.q new file mode 100644 index 0000000000000..860dd631ce10a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown.q @@ -0,0 +1,41 @@ +create table ppr_test (key string) partitioned by (ds string); + +alter table ppr_test add partition (ds = '1234'); +alter table ppr_test add partition (ds = '1224'); +alter table ppr_test add partition (ds = '1214'); +alter table ppr_test add partition (ds = '12+4'); +alter table ppr_test add partition (ds = '12.4'); +alter table ppr_test add partition (ds = '12:4'); +alter table ppr_test add partition (ds = '12%4'); +alter table ppr_test add partition (ds = '12*4'); + +insert overwrite table ppr_test partition(ds = '1234') select * from (select '1234' from src limit 1 union all select 'abcd' from src limit 1) s; +insert overwrite table ppr_test partition(ds = '1224') select * from (select '1224' from src limit 1 union all select 'abcd' from src limit 1) s; +insert overwrite table ppr_test partition(ds = '1214') select * from (select '1214' from src limit 1 union all select 'abcd' from src limit 1) s; +insert overwrite table ppr_test partition(ds = '12+4') select * from (select '12+4' from src limit 1 union all select 'abcd' from src limit 1) s; +insert overwrite table ppr_test partition(ds = '12.4') select * from (select '12.4' from src limit 1 union all select 'abcd' from src limit 1) s; +insert overwrite table ppr_test partition(ds = '12:4') select * from (select '12:4' from src limit 1 union all select 'abcd' from src limit 1) s; +insert overwrite table ppr_test partition(ds = '12%4') select * from (select '12%4' from src limit 1 union all select 'abcd' from src limit 1) s; +insert overwrite table ppr_test partition(ds = '12*4') select * from (select '12*4' from src limit 1 union all select 'abcd' from src limit 1) s; + + +select * from ppr_test where ds = '1234' order by key; +select * from ppr_test where ds = '1224' order by key; +select * from ppr_test where ds = '1214' order by key; +select * from ppr_test where ds = '12.4' order by key; +select * from ppr_test where ds = '12+4' order by key; +select * from ppr_test where ds = '12:4' order by key; +select * from ppr_test where ds = '12%4' order by key; +select * from ppr_test where ds = '12*4' order by key; +select * from ppr_test where ds = '12.*4' order by key; + +select * from ppr_test where ds = '1234' and key = '1234'; +select * from ppr_test where ds = '1224' and key = '1224'; +select * from ppr_test where ds = '1214' and key = '1214'; +select * from ppr_test where ds = '12.4' and key = '12.4'; +select * from ppr_test where ds = '12+4' and key = '12+4'; +select * from ppr_test where ds = '12:4' and key = '12:4'; +select * from ppr_test where ds = '12%4' and key = '12%4'; +select * from ppr_test where ds = '12*4' and key = '12*4'; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown2.q new file mode 100644 index 0000000000000..67c0da0dfc591 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown2.q @@ -0,0 +1,29 @@ +create table ppr_test (key string) partitioned by (ds string); + +insert overwrite table ppr_test partition(ds='2') select '2' from src limit 1; +insert overwrite table ppr_test partition(ds='22') select '22' from src limit 1; + +select * from ppr_test where ds = '2'; +select * from ppr_test where ds = '22'; + + +create table ppr_test2 (key string) partitioned by (ds string, s string); +insert overwrite table ppr_test2 partition(ds='1', s='2') select '1' from src limit 1; +insert overwrite table ppr_test2 partition(ds='2', s='1') select '2' from src limit 1; + +select * from ppr_test2 where s = '1'; +select * from ppr_test2 where ds = '1'; + + +create table ppr_test3 (key string) partitioned by (col string, ol string, l string); +insert overwrite table ppr_test3 partition(col='1', ol='2', l = '3') select '1' from src limit 1; +insert overwrite table ppr_test3 partition(col='1', ol='1', l = '2') select '2' from src limit 1; +insert overwrite table ppr_test3 partition(col='1', ol='2', l = '1') select '3' from src limit 1; + +select * from ppr_test3 where l = '1'; +select * from ppr_test3 where l = '2'; +select * from ppr_test3 where ol = '1'; +select * from ppr_test3 where ol = '2'; +select * from ppr_test3 where col = '1'; +select * from ppr_test3 where ol = '2' and l = '1'; +select * from ppr_test3 where col='1' and ol = '2' and l = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown3.q new file mode 100644 index 0000000000000..35c11be2d62e4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ppr_pushdown3.q @@ -0,0 +1,10 @@ +set hive.mapred.mode=nonstrict; + +explain select * from srcpart where key < 10; +select * from srcpart where key < 10; + +explain select * from srcpart; +select * from srcpart; + +explain select key from srcpart; +select key from srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/print_header.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/print_header.q new file mode 100644 index 0000000000000..3ca0340e2d267 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/print_header.q @@ -0,0 +1,14 @@ + +set hive.cli.print.header=true; + +SELECT src1.key as k1, src1.value as v1, + src2.key as k2, src2.value as v2 FROM + (SELECT * FROM src WHERE src.key < 10) src1 + JOIN + (SELECT * FROM src WHERE src.key < 10) src2 + SORT BY k1, v1, k2, v2 + LIMIT 10; + +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key LIMIT 10; + +use default; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/progress_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/progress_1.q new file mode 100644 index 0000000000000..ad908a02ad181 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/progress_1.q @@ -0,0 +1,9 @@ +set hive.heartbeat.interval=5; + + +CREATE TABLE PROGRESS_1(key int, value string) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv6.txt' INTO TABLE PROGRESS_1; + +select count(1) from PROGRESS_1 t1 join PROGRESS_1 t2 on t1.key=t2.key; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/protectmode.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/protectmode.q new file mode 100644 index 0000000000000..27055fbbb8235 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/protectmode.q @@ -0,0 +1,63 @@ +-- protect mode: syntax to change protect mode works and queries are not blocked if a table or partition is not in protect mode + +drop table tbl1; +drop table tbl2; + +create table tbl1 (col string); +select * from tbl1; +select col from tbl1; +alter table tbl1 enable offline; +desc extended tbl1; +alter table tbl1 disable offline; +desc extended tbl1; +select * from tbl1; +select col from tbl1; + +create table tbl2 (col string) partitioned by (p string); +alter table tbl2 add partition (p='p1'); +alter table tbl2 add partition (p='p2'); +alter table tbl2 add partition (p='p3'); +alter table tbl2 drop partition (p='not_exist'); + +select * from tbl2 where p='p1'; +select * from tbl2 where p='p2'; + +alter table tbl2 partition (p='p1') enable offline; +desc extended tbl2 partition (p='p1'); + +alter table tbl2 enable offline; +desc extended tbl2; + +alter table tbl2 enable no_drop; +desc extended tbl2; +alter table tbl2 drop partition (p='p3'); + +alter table tbl2 disable offline; +desc extended tbl2; + +alter table tbl2 disable no_drop; +desc extended tbl2; + +select * from tbl2 where p='p2'; +select col from tbl2 where p='p2'; + +alter table tbl2 partition (p='p1') disable offline; +desc extended tbl2 partition (p='p1'); + +select * from tbl2 where p='p1'; +select col from tbl2 where p='p1'; + +insert overwrite table tbl1 select col from tbl2 where p='p1'; +insert overwrite table tbl1 select col from tbl1; + +alter table tbl2 partition (p='p1') enable no_drop; +alter table tbl2 partition (p='p1') disable no_drop; + +alter table tbl2 partition (p='p2') enable no_drop; + +alter table tbl2 drop partition (p='p1'); + +alter table tbl2 partition (p='p2') disable no_drop; + +drop table tbl1; +drop table tbl2; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/protectmode2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/protectmode2.q new file mode 100644 index 0000000000000..978b03264bb6e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/protectmode2.q @@ -0,0 +1,23 @@ +drop table tbl1; + +create table tbl1 (col string); +alter table tbl1 enable no_drop cascade; +desc extended tbl1; +alter table tbl1 enable no_drop; +desc extended tbl1; +alter table tbl1 disable no_drop cascade; +desc extended tbl1; +alter table tbl1 disable no_drop; + +drop table tbl1; + +drop table tbl2; +create table tbl2 (col string) partitioned by (p string); +alter table tbl2 add partition (p='p1'); +alter table tbl2 add partition (p='p2'); +alter table tbl2 add partition (p='p3'); +alter table tbl2 enable no_drop cascade; +desc formatted tbl2; +alter table tbl2 disable no_drop cascade; +desc formatted tbl2; +drop table tbl2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf.q new file mode 100644 index 0000000000000..eea5415d682a1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf.q @@ -0,0 +1,306 @@ +DROP TABLE part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +--1. test1 +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1 +from noop(on part + partition by p_mfgr + order by p_name + ); + +-- 2. testJoinWithNoop +select p_mfgr, p_name, +p_size, p_size - lag(p_size,1,p_size) over (partition by p_mfgr order by p_name) as deltaSz +from noop (on (select p1.* from part p1 join part p2 on p1.p_partkey = p2.p_partkey) j +distribute by j.p_mfgr +sort by j.p_name) +; + +-- 3. testOnlyPTF +select p_mfgr, p_name, p_size +from noop(on part +partition by p_mfgr +order by p_name); + +-- 4. testPTFAlias +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1 +from noop(on part + partition by p_mfgr + order by p_name + ) abc; + +-- 5. testPTFAndWhereWithWindowing +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +p_size, p_size - lag(p_size,1,p_size) over (partition by p_mfgr order by p_name) as deltaSz +from noop(on part + partition by p_mfgr + order by p_name + ) +; + +-- 6. testSWQAndPTFAndGBy +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +p_size, p_size - lag(p_size,1,p_size) over (partition by p_mfgr order by p_name) as deltaSz +from noop(on part + partition by p_mfgr + order by p_name + ) +group by p_mfgr, p_name, p_size +; + +-- 7. testJoin +select abc.* +from noop(on part +partition by p_mfgr +order by p_name +) abc join part p1 on abc.p_partkey = p1.p_partkey; + +-- 8. testJoinRight +select abc.* +from part p1 join noop(on part +partition by p_mfgr +order by p_name +) abc on abc.p_partkey = p1.p_partkey; + +-- 9. testNoopWithMap +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name, p_size desc) as r +from noopwithmap(on part +partition by p_mfgr +order by p_name, p_size desc); + +-- 10. testNoopWithMapWithWindowing +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1 +from noopwithmap(on part + partition by p_mfgr + order by p_name); + +-- 11. testHavingWithWindowingPTFNoGBY +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1 +from noop(on part +partition by p_mfgr +order by p_name) +; + +-- 12. testFunctionChain +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1 +from noop(on noopwithmap(on noop(on part +partition by p_mfgr +order by p_mfgr, p_name +))); + +-- 13. testPTFAndWindowingInSubQ +select p_mfgr, p_name, +sub1.cd, sub1.s1 +from (select p_mfgr, p_name, +count(p_size) over (partition by p_mfgr order by p_name) as cd, +p_retailprice, +sum(p_retailprice) over w1 as s1 +from noop(on part +partition by p_mfgr +order by p_name) +window w1 as (partition by p_mfgr order by p_name rows between 2 preceding and 2 following) +) sub1 ; + +-- 14. testPTFJoinWithWindowingWithCount +select abc.p_mfgr, abc.p_name, +rank() over (distribute by abc.p_mfgr sort by abc.p_name) as r, +dense_rank() over (distribute by abc.p_mfgr sort by abc.p_name) as dr, +count(abc.p_name) over (distribute by abc.p_mfgr sort by abc.p_name) as cd, +abc.p_retailprice, sum(abc.p_retailprice) over (distribute by abc.p_mfgr sort by abc.p_name rows between unbounded preceding and current row) as s1, +abc.p_size, abc.p_size - lag(abc.p_size,1,abc.p_size) over (distribute by abc.p_mfgr sort by abc.p_name) as deltaSz +from noop(on part +partition by p_mfgr +order by p_name +) abc join part p1 on abc.p_partkey = p1.p_partkey +; + +-- 15. testDistinctInSelectWithPTF +select DISTINCT p_mfgr, p_name, p_size +from noop(on part +partition by p_mfgr +order by p_name); + + +-- 16. testViewAsTableInputToPTF +create view IF NOT EXISTS mfgr_price_view as +select p_mfgr, p_brand, +sum(p_retailprice) as s +from part +group by p_mfgr, p_brand; + +select p_mfgr, p_brand, s, +sum(s) over w1 as s1 +from noop(on mfgr_price_view +partition by p_mfgr +order by p_mfgr) +window w1 as ( partition by p_mfgr order by p_brand rows between 2 preceding and current row); + +-- 17. testMultipleInserts2SWQsWithPTF +CREATE TABLE part_4( +p_mfgr STRING, +p_name STRING, +p_size INT, +r INT, +dr INT, +s DOUBLE); + +CREATE TABLE part_5( +p_mfgr STRING, +p_name STRING, +p_size INT, +s2 INT, +r INT, +dr INT, +cud DOUBLE, +fv1 INT); + +from noop(on part +partition by p_mfgr +order by p_name) +INSERT OVERWRITE TABLE part_4 select p_mfgr, p_name, p_size, +rank() over (distribute by p_mfgr sort by p_name) as r, +dense_rank() over (distribute by p_mfgr sort by p_name) as dr, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s +INSERT OVERWRITE TABLE part_5 select p_mfgr,p_name, p_size, +round(sum(p_size) over (distribute by p_mfgr sort by p_size range between 5 preceding and current row),1) as s2, +rank() over (distribute by p_mfgr sort by p_mfgr, p_name) as r, +dense_rank() over (distribute by p_mfgr sort by p_mfgr, p_name) as dr, +cume_dist() over (distribute by p_mfgr sort by p_mfgr, p_name) as cud, +first_value(p_size, true) over w1 as fv1 +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +select * from part_4; + +select * from part_5; + +-- 18. testMulti2OperatorsFunctionChainWithMap +select p_mfgr, p_name, +rank() over (partition by p_mfgr,p_name) as r, +dense_rank() over (partition by p_mfgr,p_name) as dr, +p_size, sum(p_size) over (partition by p_mfgr,p_name rows between unbounded preceding and current row) as s1 +from noop(on + noopwithmap(on + noop(on + noop(on part + partition by p_mfgr + order by p_mfgr) + ) + partition by p_mfgr,p_name + order by p_mfgr,p_name) + partition by p_mfgr,p_name + order by p_mfgr,p_name) ; + +-- 19. testMulti3OperatorsFunctionChain +select p_mfgr, p_name, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +p_size, sum(p_size) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1 +from noop(on + noop(on + noop(on + noop(on part + partition by p_mfgr + order by p_mfgr) + ) + partition by p_mfgr,p_name + order by p_mfgr,p_name) + partition by p_mfgr + order by p_mfgr ) ; + +-- 20. testMultiOperatorChainWithNoWindowing +select p_mfgr, p_name, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +p_size, sum(p_size) over (partition by p_mfgr order by p_name) as s1 +from noop(on + noop(on + noop(on + noop(on part + partition by p_mfgr,p_name + order by p_mfgr,p_name) + ) + partition by p_mfgr + order by p_mfgr)); + + +-- 21. testMultiOperatorChainEndsWithNoopMap +select p_mfgr, p_name, +rank() over (partition by p_mfgr,p_name) as r, +dense_rank() over (partition by p_mfgr,p_name) as dr, +p_size, sum(p_size) over (partition by p_mfgr,p_name rows between unbounded preceding and current row) as s1 +from noopwithmap(on + noop(on + noop(on + noop(on part + partition by p_mfgr,p_name + order by p_mfgr,p_name) + ) + partition by p_mfgr + order by p_mfgr) + partition by p_mfgr,p_name + order by p_mfgr,p_name); + +-- 22. testMultiOperatorChainWithDiffPartitionForWindow1 +select p_mfgr, p_name, +rank() over (partition by p_mfgr,p_name order by p_mfgr,p_name) as r, +dense_rank() over (partition by p_mfgr,p_name order by p_mfgr,p_name) as dr, +p_size, +sum(p_size) over (partition by p_mfgr,p_name order by p_mfgr,p_name rows between unbounded preceding and current row) as s1, +sum(p_size) over (partition by p_mfgr,p_name order by p_mfgr,p_name rows between unbounded preceding and current row) as s2 +from noop(on + noopwithmap(on + noop(on part + partition by p_mfgr, p_name + order by p_mfgr, p_name) + partition by p_mfgr + order by p_mfgr + )); + +-- 23. testMultiOperatorChainWithDiffPartitionForWindow2 +select p_mfgr, p_name, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +p_size, +sum(p_size) over (partition by p_mfgr order by p_name range between unbounded preceding and current row) as s1, +sum(p_size) over (partition by p_mfgr order by p_name range between unbounded preceding and current row) as s2 +from noopwithmap(on + noop(on + noop(on part + partition by p_mfgr, p_name + order by p_mfgr, p_name) + )); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_decimal.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_decimal.q new file mode 100644 index 0000000000000..03f435e4539e2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_decimal.q @@ -0,0 +1,49 @@ +DROP TABLE IF EXISTS part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DECIMAL, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +-- 1. aggregate functions with decimal type + +select p_mfgr, p_retailprice, +lead(p_retailprice) over (partition by p_mfgr ORDER BY p_name) as c1, +lag(p_retailprice) over (partition by p_mfgr ORDER BY p_name) as c2, +first_value(p_retailprice) over (partition by p_mfgr ORDER BY p_name) as c3, +last_value(p_retailprice) over (partition by p_mfgr ORDER BY p_name) as c4 +from part; + +-- 2. ranking functions with decimal type + +select p_mfgr, p_retailprice, +row_number() over (PARTITION BY p_mfgr ORDER BY p_retailprice) as c1, +rank() over (PARTITION BY p_mfgr ORDER BY p_retailprice) as c2, +dense_rank() over (PARTITION BY p_mfgr ORDER BY p_retailprice) as c3, +percent_rank() over (PARTITION BY p_mfgr ORDER BY p_retailprice) as c4, +cume_dist() over (PARTITION BY p_mfgr ORDER BY p_retailprice) as c5, +ntile(5) over (PARTITION BY p_mfgr ORDER BY p_retailprice) as c6 +from part; + +-- 3. order by decimal + +select p_mfgr, p_retailprice, +lag(p_retailprice) over (partition by p_mfgr ORDER BY p_retailprice desc) as c1 +from part; + +-- 4. partition by decimal + +select p_mfgr, p_retailprice, +lag(p_retailprice) over (partition by p_retailprice) as c1 +from part; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_general_queries.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_general_queries.q new file mode 100644 index 0000000000000..885c3b3d43e17 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_general_queries.q @@ -0,0 +1,34 @@ +DROP TABLE part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +-- 1. testNoPTFNoWindowing +select p_mfgr, p_name, p_size +from part +distribute by p_mfgr +sort by p_name ; + +-- 2. testUDAFsNoWindowingNoPTFNoGBY +select p_mfgr,p_name, p_retailprice, +sum(p_retailprice) over(partition by p_mfgr order by p_name) as s, +min(p_retailprice) over(partition by p_mfgr order by p_name) as mi, +max(p_retailprice) over(partition by p_mfgr order by p_name) as ma, +avg(p_retailprice) over(partition by p_mfgr order by p_name) as av +from part +; + +-- 3. testConstExprInSelect +select 'tst1' as key, count(1) as value from part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_matchpath.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_matchpath.q new file mode 100644 index 0000000000000..72eeb104d5298 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_matchpath.q @@ -0,0 +1,36 @@ +DROP TABLE flights_tiny; + +create table flights_tiny ( +ORIGIN_CITY_NAME string, +DEST_CITY_NAME string, +YEAR int, +MONTH int, +DAY_OF_MONTH int, +ARR_DELAY float, +FL_NUM string +); + +LOAD DATA LOCAL INPATH '../data/files/flights_tiny.txt' OVERWRITE INTO TABLE flights_tiny; + +-- 1. basic Matchpath test +select origin_city_name, fl_num, year, month, day_of_month, sz, tpath +from matchpath(on + flights_tiny + distribute by fl_num + sort by year, month, day_of_month + arg1('LATE.LATE+'), + arg2('LATE'), arg3(arr_delay > 15), + arg4('origin_city_name, fl_num, year, month, day_of_month, size(tpath) as sz, tpath[0].day_of_month as tpath') + ); + +-- 2. Matchpath on 1 partition +select origin_city_name, fl_num, year, month, day_of_month, sz, tpath +from matchpath(on + flights_tiny + sort by fl_num, year, month, day_of_month + arg1('LATE.LATE+'), + arg2('LATE'), arg3(arr_delay > 15), + arg4('origin_city_name, fl_num, year, month, day_of_month, size(tpath) as sz, tpath[0].day_of_month as tpath') + ) +where fl_num = 1142; + \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_rcfile.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_rcfile.q new file mode 100644 index 0000000000000..535a233a9e3c4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_rcfile.q @@ -0,0 +1,24 @@ +DROP TABLE part_rc; + +CREATE TABLE part_rc( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +) STORED AS RCFILE ; + +LOAD DATA LOCAL INPATH '../data/files/part.rc' overwrite into table part_rc; + +-- testWindowingPTFWithPartRC +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1 +from noop(on part_rc +partition by p_mfgr +order by p_name); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_register_tblfn.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_register_tblfn.q new file mode 100644 index 0000000000000..a2140cd049f2d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_register_tblfn.q @@ -0,0 +1,29 @@ +DROP TABLE flights_tiny; + +create table flights_tiny ( +ORIGIN_CITY_NAME string, +DEST_CITY_NAME string, +YEAR int, +MONTH int, +DAY_OF_MONTH int, +ARR_DELAY float, +FL_NUM string +); + +LOAD DATA LOCAL INPATH '../data/files/flights_tiny.txt' OVERWRITE INTO TABLE flights_tiny; + +create temporary function matchpathtest as 'org.apache.hadoop.hive.ql.udf.ptf.MatchPath$MatchPathResolver'; + + +-- 1. basic Matchpath test +select origin_city_name, fl_num, year, month, day_of_month, sz, tpath +from matchpathtest(on + flights_tiny + distribute by fl_num + sort by year, month, day_of_month + arg1('LATE.LATE+'), + arg2('LATE'), arg3(arr_delay > 15), + arg4('origin_city_name, fl_num, year, month, day_of_month, size(tpath) as sz, tpath[0].day_of_month as tpath') + ); + +drop temporary function matchpathtest; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_seqfile.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_seqfile.q new file mode 100644 index 0000000000000..4aa8ce11bec9c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ptf_seqfile.q @@ -0,0 +1,24 @@ +DROP TABLE part_seq; + +CREATE TABLE part_seq( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +) STORED AS SEQUENCEFILE ; + +LOAD DATA LOCAL INPATH '../data/files/part.seq' overwrite into table part_seq; + +-- testWindowingPTFWithPartSeqFile +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name) as r, +dense_rank() over (partition by p_mfgr order by p_name) as dr, +sum(p_retailprice) over (partition by p_mfgr order by p_name rows between unbounded preceding and current row) as s1 +from noop(on part_seq +partition by p_mfgr +order by p_name); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/push_or.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/push_or.q new file mode 100644 index 0000000000000..c9b6cea23cd85 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/push_or.q @@ -0,0 +1,10 @@ +drop table push_or; + +create table push_or (key int, value string) partitioned by (ds string); + +insert overwrite table push_or partition (ds='2000-04-08') select * from src where key < 20 order by key; +insert overwrite table push_or partition (ds='2000-04-09') select * from src where key < 20 order by key; + +explain extended select key, value, ds from push_or where ds='2000-04-09' or key=5 order by key, ds; +select key, value, ds from push_or where ds='2000-04-09' or key=5 order by key, ds; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx.q new file mode 100644 index 0000000000000..f198baa6e4c5b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/ql_rewrite_gbtoidx.q @@ -0,0 +1,170 @@ + +DROP TABLE lineitem; +CREATE TABLE lineitem (L_ORDERKEY INT, + L_PARTKEY INT, + L_SUPPKEY INT, + L_LINENUMBER INT, + L_QUANTITY DOUBLE, + L_EXTENDEDPRICE DOUBLE, + L_DISCOUNT DOUBLE, + L_TAX DOUBLE, + L_RETURNFLAG STRING, + L_LINESTATUS STRING, + l_shipdate STRING, + L_COMMITDATE STRING, + L_RECEIPTDATE STRING, + L_SHIPINSTRUCT STRING, + L_SHIPMODE STRING, + L_COMMENT STRING) +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '|'; + +LOAD DATA LOCAL INPATH '../data/files/lineitem.txt' OVERWRITE INTO TABLE lineitem; + +CREATE INDEX lineitem_lshipdate_idx ON TABLE lineitem(l_shipdate) AS 'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD IDXPROPERTIES("AGGREGATES"="count(l_shipdate)"); +ALTER INDEX lineitem_lshipdate_idx ON lineitem REBUILD; + +explain select l_shipdate, count(l_shipdate) +from lineitem +group by l_shipdate; + +select l_shipdate, count(l_shipdate) +from lineitem +group by l_shipdate +order by l_shipdate; + +set hive.optimize.index.groupby=true; + +explain select l_shipdate, count(l_shipdate) +from lineitem +group by l_shipdate; + +select l_shipdate, count(l_shipdate) +from lineitem +group by l_shipdate +order by l_shipdate; + +set hive.optimize.index.groupby=false; + + +explain select year(l_shipdate) as year, + month(l_shipdate) as month, + count(l_shipdate) as monthly_shipments +from lineitem +group by year(l_shipdate), month(l_shipdate) +order by year, month; + +select year(l_shipdate) as year, + month(l_shipdate) as month, + count(l_shipdate) as monthly_shipments +from lineitem +group by year(l_shipdate), month(l_shipdate) +order by year, month; + +set hive.optimize.index.groupby=true; + +explain select year(l_shipdate) as year, + month(l_shipdate) as month, + count(l_shipdate) as monthly_shipments +from lineitem +group by year(l_shipdate), month(l_shipdate) +order by year, month; + +select year(l_shipdate) as year, + month(l_shipdate) as month, + count(l_shipdate) as monthly_shipments +from lineitem +group by year(l_shipdate), month(l_shipdate) +order by year, month; + +explain select lastyear.month, + thisyear.month, + (thisyear.monthly_shipments - lastyear.monthly_shipments) / +lastyear.monthly_shipments as monthly_shipments_delta + from (select year(l_shipdate) as year, + month(l_shipdate) as month, + count(l_shipdate) as monthly_shipments + from lineitem + where year(l_shipdate) = 1997 + group by year(l_shipdate), month(l_shipdate) + ) lastyear join + (select year(l_shipdate) as year, + month(l_shipdate) as month, + count(l_shipdate) as monthly_shipments + from lineitem + where year(l_shipdate) = 1998 + group by year(l_shipdate), month(l_shipdate) + ) thisyear + on lastyear.month = thisyear.month; + +explain select l_shipdate, cnt +from (select l_shipdate, count(l_shipdate) as cnt from lineitem group by l_shipdate +union all +select l_shipdate, l_orderkey as cnt +from lineitem) dummy; + +CREATE TABLE tbl(key int, value int); +CREATE INDEX tbl_key_idx ON TABLE tbl(key) AS 'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD IDXPROPERTIES("AGGREGATES"="count(key)"); +ALTER INDEX tbl_key_idx ON tbl REBUILD; + +EXPLAIN select key, count(key) from tbl where key = 1 group by key; +EXPLAIN select key, count(key) from tbl group by key; + +EXPLAIN select count(1) from tbl; +EXPLAIN select count(key) from tbl; + +EXPLAIN select key FROM tbl GROUP BY key; +EXPLAIN select key FROM tbl GROUP BY value, key; +EXPLAIN select key FROM tbl WHERE key = 3 GROUP BY key; +EXPLAIN select key FROM tbl WHERE value = 2 GROUP BY key; +EXPLAIN select key FROM tbl GROUP BY key, substr(key,2,3); + +EXPLAIN select key, value FROM tbl GROUP BY value, key; +EXPLAIN select key, value FROM tbl WHERE value = 1 GROUP BY key, value; + +EXPLAIN select DISTINCT key FROM tbl; +EXPLAIN select DISTINCT key FROM tbl; +EXPLAIN select DISTINCT key FROM tbl; +EXPLAIN select DISTINCT key, value FROM tbl; +EXPLAIN select DISTINCT key, value FROM tbl WHERE value = 2; +EXPLAIN select DISTINCT key, value FROM tbl WHERE value = 2 AND key = 3; +EXPLAIN select DISTINCT key, value FROM tbl WHERE value = key; +EXPLAIN select DISTINCT key, substr(value,2,3) FROM tbl WHERE value = key; +EXPLAIN select DISTINCT key, substr(value,2,3) FROM tbl; + +EXPLAIN select * FROM (select DISTINCT key, value FROM tbl) v1 WHERE v1.value = 2; + +DROP TABLE tbl; + +CREATE TABLE tblpart (key int, value string) PARTITIONED BY (ds string, hr int); +INSERT OVERWRITE TABLE tblpart PARTITION (ds='2008-04-08', hr=11) SELECT key, value FROM srcpart WHERE ds = '2008-04-08' AND hr = 11; +INSERT OVERWRITE TABLE tblpart PARTITION (ds='2008-04-08', hr=12) SELECT key, value FROM srcpart WHERE ds = '2008-04-08' AND hr = 12; +INSERT OVERWRITE TABLE tblpart PARTITION (ds='2008-04-09', hr=11) SELECT key, value FROM srcpart WHERE ds = '2008-04-09' AND hr = 11; +INSERT OVERWRITE TABLE tblpart PARTITION (ds='2008-04-09', hr=12) SELECT key, value FROM srcpart WHERE ds = '2008-04-09' AND hr = 12; + +CREATE INDEX tbl_part_index ON TABLE tblpart(key) AS 'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD IDXPROPERTIES("AGGREGATES"="count(key)"); + +ALTER INDEX tbl_part_index ON tblpart PARTITION (ds='2008-04-08', hr=11) REBUILD; +EXPLAIN SELECT key, count(key) FROM tblpart WHERE ds='2008-04-09' AND hr=12 AND key < 10 GROUP BY key; + +ALTER INDEX tbl_part_index ON tblpart PARTITION (ds='2008-04-08', hr=12) REBUILD; +ALTER INDEX tbl_part_index ON tblpart PARTITION (ds='2008-04-09', hr=11) REBUILD; +ALTER INDEX tbl_part_index ON tblpart PARTITION (ds='2008-04-09', hr=12) REBUILD; +EXPLAIN SELECT key, count(key) FROM tblpart WHERE ds='2008-04-09' AND hr=12 AND key < 10 GROUP BY key; + +DROP INDEX tbl_part_index on tblpart; +DROP TABLE tblpart; + +CREATE TABLE tbl(key int, value int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'; +LOAD DATA LOCAL INPATH '../data/files/tbl.txt' OVERWRITE INTO TABLE tbl; + +CREATE INDEX tbl_key_idx ON TABLE tbl(key) AS 'org.apache.hadoop.hive.ql.index.AggregateIndexHandler' WITH DEFERRED REBUILD IDXPROPERTIES("AGGREGATES"="count(key)"); +ALTER INDEX tbl_key_idx ON tbl REBUILD; + +set hive.optimize.index.groupby=false; +explain select key, count(key) from tbl group by key order by key; +select key, count(key) from tbl group by key order by key; +set hive.optimize.index.groupby=true; +explain select key, count(key) from tbl group by key order by key; +select key, count(key) from tbl group by key order by key; +DROP TABLE tbl; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_properties.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_properties.q new file mode 100644 index 0000000000000..027ba7f7a833c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_properties.q @@ -0,0 +1,15 @@ +set hive.exec.post.hooks = org.apache.hadoop.hive.ql.hooks.CheckQueryPropertiesHook; + +select * from src a join src b on a.key = b.key limit 0; +select * from src group by src.key, src.value limit 0; +select * from src order by src.key limit 0; +select * from src sort by src.key limit 0; +select a.key, sum(b.value) from src a join src b on a.key = b.key group by a.key limit 0; +select transform(*) using 'cat' from src limit 0; +select * from src distribute by src.key limit 0; +select * from src cluster by src.key limit 0; + +select key, sum(value) from (select a.key as key, b.value as value from src a join src b on a.key = b.key) c group by key limit 0; +select * from src a join src b on a.key = b.key order by a.key limit 0; +select * from src a join src b on a.key = b.key distribute by a.key sort by a.key, b.value limit 0; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_result_fileformat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_result_fileformat.q new file mode 100644 index 0000000000000..3b87e4d170c1f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_result_fileformat.q @@ -0,0 +1,23 @@ +create table nzhang_test1 stored as sequencefile as select 'key1' as key, 'value +1 + +http://asdf' value from src limit 1; + +select * from nzhang_test1; +select count(*) from nzhang_test1; + +explain +select * from nzhang_test1 where key='key1'; + +select * from nzhang_test1 where key='key1'; + +set hive.query.result.fileformat=SequenceFile; + +select * from nzhang_test1; + +select count(*) from nzhang_test1; + +explain +select * from nzhang_test1 where key='key1'; + +select * from nzhang_test1 where key='key1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_with_semi.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_with_semi.q new file mode 100644 index 0000000000000..e0f90d5edb3e6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/query_with_semi.q @@ -0,0 +1,6 @@ +from src +select transform('aa\;') using 'cat' as a limit 1; + +from src +select transform('bb') using 'cat' as b limit 1; from src +select transform('cc') using 'cat' as c limit 1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/quote1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/quote1.q new file mode 100644 index 0000000000000..f968132fa5913 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/quote1.q @@ -0,0 +1,13 @@ +CREATE TABLE dest1(`location` INT, `type` STRING) PARTITIONED BY(`table` STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src +INSERT OVERWRITE TABLE dest1 PARTITION(`table`='2008-04-08') SELECT src.key as `partition`, src.value as `from` WHERE src.key >= 200 and src.key < 300; + +EXPLAIN +SELECT `int`.`location`, `int`.`type`, `int`.`table` FROM dest1 `int` WHERE `int`.`table` = '2008-04-08'; + +FROM src +INSERT OVERWRITE TABLE dest1 PARTITION(`table`='2008-04-08') SELECT src.key as `partition`, src.value as `from` WHERE src.key >= 200 and src.key < 300; + +SELECT `int`.`location`, `int`.`type`, `int`.`table` FROM dest1 `int` WHERE `int`.`table` = '2008-04-08'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/quote2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/quote2.q new file mode 100644 index 0000000000000..65b9f8776d192 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/quote2.q @@ -0,0 +1,28 @@ +EXPLAIN +SELECT + 'abc', "abc", + 'abc\'', "abc\"", + 'abc\\', "abc\\", + 'abc\\\'', "abc\\\"", + 'abc\\\\', "abc\\\\", + 'abc\\\\\'', "abc\\\\\"", + 'abc\\\\\\', "abc\\\\\\", + 'abc""""\\', "abc''''\\", + "awk '{print NR\"\\t\"$0}'", + 'tab\ttab', "tab\ttab" +FROM src +LIMIT 1; + +SELECT + 'abc', "abc", + 'abc\'', "abc\"", + 'abc\\', "abc\\", + 'abc\\\'', "abc\\\"", + 'abc\\\\', "abc\\\\", + 'abc\\\\\'', "abc\\\\\"", + 'abc\\\\\\', "abc\\\\\\", + 'abc""""\\', "abc''''\\", + "awk '{print NR\"\\t\"$0}'", + 'tab\ttab', "tab\ttab" +FROM src +LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner1.q new file mode 100644 index 0000000000000..3eeb5e7b88f6e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner1.q @@ -0,0 +1,3 @@ +-- scanning un-partitioned data +explain extended select * from src where rand(1) < 0.1; +select * from src where rand(1) < 0.1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner2.q new file mode 100644 index 0000000000000..e2f280efe754f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner2.q @@ -0,0 +1,14 @@ +-- scanning partitioned data + +create table tmptable(key string, value string, hr string, ds string); + +explain extended +insert overwrite table tmptable +select a.* from srcpart a where rand(1) < 0.1 and a.ds = '2008-04-08'; + + +insert overwrite table tmptable +select a.* from srcpart a where rand(1) < 0.1 and a.ds = '2008-04-08'; + +select * from tmptable x sort by x.key,x.value,x.ds,x.hr; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner3.q new file mode 100644 index 0000000000000..9f4aaac267864 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rand_partitionpruner3.q @@ -0,0 +1,9 @@ +set hive.optimize.ppd=true; +-- complex predicates in the where clause + +explain extended select a.* from srcpart a where rand(1) < 0.1 and a.ds = '2008-04-08' and not(key > 50 or key < 10) and a.hr like '%2'; +select a.* from srcpart a where rand(1) < 0.1 and a.ds = '2008-04-08' and not(key > 50 or key < 10) and a.hr like '%2'; + +-- without rand for comparison +explain extended select a.* from srcpart a where a.ds = '2008-04-08' and not(key > 50 or key < 10) and a.hr like '%2'; +select a.* from srcpart a where a.ds = '2008-04-08' and not(key > 50 or key < 10) and a.hr like '%2'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_bigdata.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_bigdata.q new file mode 100644 index 0000000000000..3e83e6693b276 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_bigdata.q @@ -0,0 +1,19 @@ +set hive.map.aggr.hash.percentmemory = 0.3; +set hive.mapred.local.mem = 256; + +add file ../data/scripts/dumpdata_script.py; + +CREATE table columnTable_Bigdata (key STRING, value STRING) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS + INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'; + +FROM (FROM src MAP src.key,src.value USING 'python dumpdata_script.py' AS (key,value) WHERE src.key = 10) subq +INSERT OVERWRITE TABLE columnTable_Bigdata SELECT subq.key, subq.value; + +describe columnTable_Bigdata; +select count(columnTable_Bigdata.key) from columnTable_Bigdata; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_columnar.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_columnar.q new file mode 100644 index 0000000000000..0178e535cdb90 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_columnar.q @@ -0,0 +1,15 @@ + +CREATE table columnTable (key STRING, value STRING) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS + INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'; + +FROM src +INSERT OVERWRITE TABLE columnTable SELECT src.key, src.value LIMIT 10; +describe columnTable; + +SELECT columnTable.* FROM columnTable ORDER BY key ASC, value ASC; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_createas1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_createas1.q new file mode 100644 index 0000000000000..f36203724c15f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_createas1.q @@ -0,0 +1,35 @@ +set hive.merge.rcfile.block.level=true; +set mapred.max.split.size=100; +set mapred.min.split.size=1; + +DROP TABLE rcfile_createas1a; +DROP TABLE rcfile_createas1b; + +CREATE TABLE rcfile_createas1a (key INT, value STRING) + PARTITIONED BY (ds string); +INSERT OVERWRITE TABLE rcfile_createas1a PARTITION (ds='1') + SELECT * FROM src; +INSERT OVERWRITE TABLE rcfile_createas1a PARTITION (ds='2') + SELECT * FROM src; + +EXPLAIN + CREATE TABLE rcfile_createas1b + STORED AS RCFILE AS + SELECT key, value, PMOD(HASH(key), 50) as part + FROM rcfile_createas1a; +CREATE TABLE rcfile_createas1b + STORED AS RCFILE AS + SELECT key, value, PMOD(HASH(key), 50) as part + FROM rcfile_createas1a; + +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) + FROM rcfile_createas1a +) t; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) + FROM rcfile_createas1b +) t; + +DROP TABLE rcfile_createas1a; +DROP TABLE rcfile_createas1b; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_default_format.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_default_format.q new file mode 100644 index 0000000000000..e61292e7f1edb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_default_format.q @@ -0,0 +1,31 @@ +SET hive.default.fileformat = RCFile; + +CREATE TABLE rcfile_default_format (key STRING); +DESCRIBE FORMATTED rcfile_default_format; + +CREATE TABLE rcfile_default_format_ctas AS SELECT key,value FROM src; +DESCRIBE FORMATTED rcfile_default_format_ctas; + +CREATE TABLE rcfile_default_format_txtfile (key STRING) STORED AS TEXTFILE; +INSERT OVERWRITE TABLE rcfile_default_format_txtfile SELECT key from src; +DESCRIBE FORMATTED rcfile_default_format_txtfile; + +SET hive.default.fileformat = TextFile; +CREATE TABLE textfile_default_format_ctas AS SELECT key,value FROM rcfile_default_format_ctas; +DESCRIBE FORMATTED textfile_default_format_ctas; + +SET hive.default.fileformat = RCFile; +SET hive.default.rcfile.serde = org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe; +CREATE TABLE rcfile_default_format_ctas_default_serde AS SELECT key,value FROM rcfile_default_format_ctas; +DESCRIBE FORMATTED rcfile_default_format_ctas_default_serde; + +CREATE TABLE rcfile_default_format_default_serde (key STRING); +DESCRIBE FORMATTED rcfile_default_format_default_serde; + +SET hive.default.fileformat = TextFile; +CREATE TABLE rcfile_ctas_default_serde STORED AS rcfile AS SELECT key,value FROM rcfile_default_format_ctas; +DESCRIBE FORMATTED rcfile_ctas_default_serde; + +CREATE TABLE rcfile_default_serde (key STRING) STORED AS rcfile; +DESCRIBE FORMATTED rcfile_default_serde; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_lazydecompress.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_lazydecompress.q new file mode 100644 index 0000000000000..7f55d10bd6458 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_lazydecompress.q @@ -0,0 +1,27 @@ + +CREATE table rcfileTableLazyDecompress (key STRING, value STRING) STORED AS RCFile; + +FROM src +INSERT OVERWRITE TABLE rcfileTableLazyDecompress SELECT src.key, src.value LIMIT 10; + +SELECT key, value FROM rcfileTableLazyDecompress where key > 238 ORDER BY key ASC, value ASC; + +SELECT key, value FROM rcfileTableLazyDecompress where key > 238 and key < 400 ORDER BY key ASC, value ASC; + +SELECT key, count(1) FROM rcfileTableLazyDecompress where key > 238 group by key ORDER BY key ASC; + +set mapred.output.compress=true; +set hive.exec.compress.output=true; + +FROM src +INSERT OVERWRITE TABLE rcfileTableLazyDecompress SELECT src.key, src.value LIMIT 10; + +SELECT key, value FROM rcfileTableLazyDecompress where key > 238 ORDER BY key ASC, value ASC; + +SELECT key, value FROM rcfileTableLazyDecompress where key > 238 and key < 400 ORDER BY key ASC, value ASC; + +SELECT key, count(1) FROM rcfileTableLazyDecompress where key > 238 group by key ORDER BY key ASC; + +set mapred.output.compress=false; +set hive.exec.compress.output=false; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge1.q new file mode 100644 index 0000000000000..1f6f1bd251c25 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge1.q @@ -0,0 +1,43 @@ +set hive.merge.rcfile.block.level=false; +set hive.exec.dynamic.partition=true; +set mapred.max.split.size=100; +set mapref.min.split.size=1; + +DROP TABLE rcfile_merge1; +DROP TABLE rcfile_merge1b; + +CREATE TABLE rcfile_merge1 (key INT, value STRING) + PARTITIONED BY (ds STRING, part STRING) STORED AS RCFILE; +CREATE TABLE rcfile_merge1b (key INT, value STRING) + PARTITIONED BY (ds STRING, part STRING) STORED AS RCFILE; + +-- Use non block-level merge +EXPLAIN + INSERT OVERWRITE TABLE rcfile_merge1 PARTITION (ds='1', part) + SELECT key, value, PMOD(HASH(key), 100) as part + FROM src; +INSERT OVERWRITE TABLE rcfile_merge1 PARTITION (ds='1', part) + SELECT key, value, PMOD(HASH(key), 100) as part + FROM src; + +set hive.merge.rcfile.block.level=true; +EXPLAIN + INSERT OVERWRITE TABLE rcfile_merge1b PARTITION (ds='1', part) + SELECT key, value, PMOD(HASH(key), 100) as part + FROM src; +INSERT OVERWRITE TABLE rcfile_merge1b PARTITION (ds='1', part) + SELECT key, value, PMOD(HASH(key), 100) as part + FROM src; + +-- Verify +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) + FROM rcfile_merge1 WHERE ds='1' +) t; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) + FROM rcfile_merge1b WHERE ds='1' +) t; + +DROP TABLE rcfile_merge1; +DROP TABLE rcfile_merge1b; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge2.q new file mode 100644 index 0000000000000..215d5ebc4a25b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge2.q @@ -0,0 +1,32 @@ +set hive.merge.rcfile.block.level=true; +set hive.exec.dynamic.partition=true; +set mapred.max.split.size=100; +set mapred.min.split.size=1; + +DROP TABLE rcfile_merge2a; + +CREATE TABLE rcfile_merge2a (key INT, value STRING) + PARTITIONED BY (one string, two string, three string) + STORED AS RCFILE; + +EXPLAIN INSERT OVERWRITE TABLE rcfile_merge2a PARTITION (one='1', two, three) + SELECT key, value, PMOD(HASH(key), 10) as two, + PMOD(HASH(value), 10) as three + FROM src; +INSERT OVERWRITE TABLE rcfile_merge2a PARTITION (one='1', two, three) + SELECT key, value, PMOD(HASH(key), 10) as two, + PMOD(HASH(value), 10) as three + FROM src; + +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(*) USING 'tr \t _' AS (c) + FROM rcfile_merge2a +) t; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value, '1', PMOD(HASH(key), 10), + PMOD(HASH(value), 10)) USING 'tr \t _' AS (c) + FROM src +) t; + +DROP TABLE rcfile_merge2a; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge3.q new file mode 100644 index 0000000000000..39fbd2564664b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge3.q @@ -0,0 +1,32 @@ +set hive.merge.rcfile.block.level=true; +set mapred.max.split.size=100; +set mapred.min.split.size=1; + +DROP TABLE rcfile_merge3a; +DROP TABLE rcfile_merge3b; + +CREATE TABLE rcfile_merge3a (key int, value string) + PARTITIONED BY (ds string) STORED AS TEXTFILE; +CREATE TABLE rcfile_merge3b (key int, value string) STORED AS RCFILE; + +INSERT OVERWRITE TABLE rcfile_merge3a PARTITION (ds='1') + SELECT * FROM src; +INSERT OVERWRITE TABLE rcfile_merge3a PARTITION (ds='2') + SELECT * FROM src; + +EXPLAIN INSERT OVERWRITE TABLE rcfile_merge3b + SELECT key, value FROM rcfile_merge3a; +INSERT OVERWRITE TABLE rcfile_merge3b + SELECT key, value FROM rcfile_merge3a; + +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) + FROM rcfile_merge3a +) t; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) + FROM rcfile_merge3b +) t; + +DROP TABLE rcfile_merge3a; +DROP TABLE rcfile_merge3b; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge4.q new file mode 100644 index 0000000000000..fe6df28566cf0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_merge4.q @@ -0,0 +1,32 @@ +set hive.merge.rcfile.block.level=true; +set mapred.max.split.size=100; +set mapred.min.split.size=1; + +DROP TABLE rcfile_merge3a; +DROP TABLE rcfile_merge3b; + +CREATE TABLE rcfile_merge3a (key int, value string) + PARTITIONED BY (ds string) STORED AS RCFILE; +CREATE TABLE rcfile_merge3b (key int, value string) STORED AS TEXTFILE; + +INSERT OVERWRITE TABLE rcfile_merge3a PARTITION (ds='1') + SELECT * FROM src; +INSERT OVERWRITE TABLE rcfile_merge3a PARTITION (ds='2') + SELECT * FROM src; + +EXPLAIN INSERT OVERWRITE TABLE rcfile_merge3b + SELECT key, value FROM rcfile_merge3a; +INSERT OVERWRITE TABLE rcfile_merge3b + SELECT key, value FROM rcfile_merge3a; + +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) + FROM rcfile_merge3a +) t; +SELECT SUM(HASH(c)) FROM ( + SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c) + FROM rcfile_merge3b +) t; + +DROP TABLE rcfile_merge3a; +DROP TABLE rcfile_merge3b; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_null_value.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_null_value.q new file mode 100644 index 0000000000000..2e4c929fb3f52 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_null_value.q @@ -0,0 +1,40 @@ +CREATE TABLE src1_rc(key STRING, value STRING) STORED AS RCFILE; +INSERT OVERWRITE TABLE src1_rc SELECT * FROM src1; +SELECT * FROM src1_rc; + + +CREATE TABLE dest1_rc(c1 INT, c2 STRING, c3 INT, c4 STRING) STORED AS RCFILE; + +EXPLAIN +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + RIGHT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1_rc SELECT c.c1, c.c2, c.c3, c.c4; + +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + RIGHT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +INSERT OVERWRITE TABLE dest1_rc SELECT c.c1, c.c2, c.c3, c.c4; + +SELECT dest1_rc.* FROM dest1_rc; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_toleratecorruptions.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_toleratecorruptions.q new file mode 100644 index 0000000000000..077a52d3934ee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_toleratecorruptions.q @@ -0,0 +1,8 @@ +CREATE TABLE test_src(key int, value string) stored as RCFILE; +set hive.io.rcfile.record.interval=5; +set hive.io.rcfile.record.buffer.size=100; +set hive.exec.compress.output=true; +INSERT OVERWRITE table test_src SELECT * FROM src; + +set hive.io.rcfile.tolerate.corruptions=true; +SELECT key, value FROM test_src order by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_union.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_union.q new file mode 100644 index 0000000000000..fc8c7500804f2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rcfile_union.q @@ -0,0 +1,14 @@ + +CREATE table rcfile_unionTable (b STRING, c STRING) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS RCFILE; + +FROM src +INSERT OVERWRITE TABLE rcfile_unionTable SELECT src.key, src.value LIMIT 10; + +SELECT * FROM ( +SELECT b AS cola FROM rcfile_unionTable +UNION ALL +SELECT c AS cola FROM rcfile_unionTable) s ORDER BY cola ASC; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/recursive_dir.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/recursive_dir.q new file mode 100644 index 0000000000000..709c6eb454ee6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/recursive_dir.q @@ -0,0 +1,20 @@ +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +CREATE TABLE fact_daily(x int) PARTITIONED BY (ds STRING); +CREATE TABLE fact_tz(x int) PARTITIONED BY (ds STRING, hr STRING) +LOCATION 'pfile:${system:test.tmp.dir}/fact_tz'; + +INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='1') +SELECT key+11 FROM src WHERE key=484; + +ALTER TABLE fact_daily SET TBLPROPERTIES('EXTERNAL'='TRUE'); +ALTER TABLE fact_daily ADD PARTITION (ds='1') +LOCATION 'pfile:${system:test.tmp.dir}/fact_tz/ds=1'; + +set hive.mapred.supports.subdirectories=true; +set mapred.input.dir.recursive=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +SELECT * FROM fact_daily WHERE ds='1'; + +SELECT count(1) FROM fact_daily WHERE ds='1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate.q new file mode 100644 index 0000000000000..2e26adc9ed957 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate.q @@ -0,0 +1,45 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.enforce.bucketing = true; +set hive.exec.reducers.max = 1; +set hive.exec.script.trust = true; +set hive.optimize.reducededuplication = true; +set hive.optimize.reducededuplication.min.reducer = 1; + + +CREATE TABLE bucket5_1(key string, value string) CLUSTERED BY (key) INTO 2 BUCKETS; +explain extended +insert overwrite table bucket5_1 +select * from src cluster by key; + +insert overwrite table bucket5_1 +select * from src cluster by key; + +select sum(hash(key)),sum(hash(value)) from bucket5_1; +select sum(hash(key)),sum(hash(value)) from src; + + +create table complex_tbl_1(aid string, bid string, t int, ctime string, etime bigint, l string, et string) partitioned by (ds string); + + +create table complex_tbl_2(aet string, aes string) partitioned by (ds string); + +explain extended +insert overwrite table complex_tbl_1 partition (ds='2010-03-29') +select s2.* from +( + select TRANSFORM (aid,bid,t,ctime,etime,l,et) + USING 'cat' + AS (aid string, bid string, t int, ctime string, etime bigint, l string, et string) + from + ( + select transform(aet,aes) + using 'cat' + as (aid string, bid string, t int, ctime string, etime bigint, l string, et string) + from complex_tbl_2 where ds ='2010-03-29' cluster by bid +)s +)s2; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_exclude_gby.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_exclude_gby.q new file mode 100644 index 0000000000000..e28ed9fc536bf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_exclude_gby.q @@ -0,0 +1,8 @@ +create table t1( key_int1 int, key_int2 int, key_string1 string, key_string2 string); + +set hive.optimize.reducededuplication=false; + +set hive.map.aggr=false; +select Q1.key_int1, sum(Q1.key_int1) from (select * from t1 cluster by key_int1) Q1 group by Q1.key_int1; + +drop table t1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_exclude_join.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_exclude_join.q new file mode 100644 index 0000000000000..ff09754dd118e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_exclude_join.q @@ -0,0 +1,3 @@ +set hive.optimize.reducededuplication=true; +set hive.auto.convert.join=true; +explain select * from (select * from src cluster by key) a join src b on a.key = b.key limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_extended.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_extended.q new file mode 100644 index 0000000000000..48af2c2affc4a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reduce_deduplicate_extended.q @@ -0,0 +1,55 @@ +set hive.optimize.reducededuplication=true; +set hive.optimize.reducededuplication.min.reducer=1; +set hive.map.aggr=true; + +-- HIVE-2340 deduplicate RS followed by RS +-- hive.optimize.reducededuplication : wherther using this optimization +-- hive.optimize.reducededuplication.min.reducer : number of reducer of deduped RS should be this at least + +-- RS-mGBY-RS-rGBY +explain select key, sum(key) from (select * from src distribute by key sort by key, value) Q1 group by key; +explain select key, sum(key), lower(value) from (select * from src order by key) Q1 group by key, lower(value); +explain select key, sum(key), (X + 1) from (select key, (value + 1) as X from src order by key) Q1 group by key, (X + 1); +-- mGBY-RS-rGBY-RS +explain select key, sum(key) as value from src group by key order by key, value; +-- RS-JOIN-mGBY-RS-rGBY +explain select src.key, sum(src.key) FROM src JOIN src1 ON src.key = src1.key group by src.key, src.value; +-- RS-JOIN-RS +explain select src.key, src.value FROM src JOIN src1 ON src.key = src1.key order by src.key, src.value; +-- mGBY-RS-rGBY-mGBY-RS-rGBY +explain from (select key, value from src group by key, value) s select s.key group by s.key; +explain select key, count(distinct value) from (select key, value from src group by key, value) t group by key; + +select key, sum(key) from (select * from src distribute by key sort by key, value) Q1 group by key; +select key, sum(key), lower(value) from (select * from src order by key) Q1 group by key, lower(value); +select key, sum(key), (X + 1) from (select key, (value + 1) as X from src order by key) Q1 group by key, (X + 1); +select key, sum(key) as value from src group by key order by key, value; +select src.key, sum(src.key) FROM src JOIN src1 ON src.key = src1.key group by src.key, src.value; +select src.key, src.value FROM src JOIN src1 ON src.key = src1.key order by src.key, src.value; +from (select key, value from src group by key, value) s select s.key group by s.key; +select key, count(distinct value) from (select key, value from src group by key, value) t group by key; + +set hive.map.aggr=false; + +-- RS-RS-GBY +explain select key, sum(key) from (select * from src distribute by key sort by key, value) Q1 group by key; +explain select key, sum(key), lower(value) from (select * from src order by key) Q1 group by key, lower(value); +explain select key, sum(key), (X + 1) from (select key, (value + 1) as X from src order by key) Q1 group by key, (X + 1); +-- RS-GBY-RS +explain select key, sum(key) as value from src group by key order by key, value; +-- RS-JOIN-RS-GBY +explain select src.key, sum(src.key) FROM src JOIN src1 ON src.key = src1.key group by src.key, src.value; +-- RS-JOIN-RS +explain select src.key, src.value FROM src JOIN src1 ON src.key = src1.key order by src.key, src.value; +-- RS-GBY-RS-GBY +explain from (select key, value from src group by key, value) s select s.key group by s.key; +explain select key, count(distinct value) from (select key, value from src group by key, value) t group by key; + +select key, sum(key) from (select * from src distribute by key sort by key, value) Q1 group by key; +select key, sum(key), lower(value) from (select * from src order by key) Q1 group by key, lower(value); +select key, sum(key), (X + 1) from (select key, (value + 1) as X from src order by key) Q1 group by key, (X + 1); +select key, sum(key) as value from src group by key order by key, value; +select src.key, sum(src.key) FROM src JOIN src1 ON src.key = src1.key group by src.key, src.value; +select src.key, src.value FROM src JOIN src1 ON src.key = src1.key order by src.key, src.value; +from (select key, value from src group by key, value) s select s.key group by s.key; +select key, count(distinct value) from (select key, value from src group by key, value) t group by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reducesink_dedup.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reducesink_dedup.q new file mode 100644 index 0000000000000..d5aa2513c8b3b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reducesink_dedup.q @@ -0,0 +1,20 @@ +DROP TABLE part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + + +select p_name +from (select p_name from part distribute by 1 sort by 1) p +distribute by 1 sort by 1 +; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/regex_col.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/regex_col.q new file mode 100644 index 0000000000000..9cfcee5a599c6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/regex_col.q @@ -0,0 +1,35 @@ +EXPLAIN +SELECT * FROM srcpart; + +EXPLAIN +SELECT `..` FROM srcpart; + +EXPLAIN +SELECT srcpart.`..` FROM srcpart; + +EXPLAIN +SELECT `..` FROM srcpart a JOIN srcpart b +ON a.key = b.key AND a.value = b.value; + +EXPLAIN +SELECT b.`..` FROM srcpart a JOIN srcpart b +ON a.key = b.key AND a.hr = b.hr AND a.ds = b.ds AND a.key = 103 +ORDER BY ds, hr; + +SELECT b.`..` FROM srcpart a JOIN srcpart b +ON a.key = b.key AND a.hr = b.hr AND a.ds = b.ds AND a.key = 103 +ORDER BY ds, hr; + +EXPLAIN +SELECT `.e.` FROM srcpart; + +EXPLAIN +SELECT `d.*` FROM srcpart; + +EXPLAIN +SELECT `(ds)?+.+` FROM srcpart; + +EXPLAIN +SELECT `(ds|hr)?+.+` FROM srcpart ORDER BY key, value LIMIT 10; + +SELECT `(ds|hr)?+.+` FROM srcpart ORDER BY key, value LIMIT 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/regexp_extract.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/regexp_extract.q new file mode 100644 index 0000000000000..2074eea4396f3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/regexp_extract.q @@ -0,0 +1,33 @@ +EXPLAIN EXTENDED +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value, 1+2, 3+4) + USING 'cat' + CLUSTER BY key +) tmap +SELECT tmap.key, regexp_extract(tmap.value, 'val_(\\d+\\t\\d+)',1) WHERE tmap.key < 100; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value, 1+2, 3+4) + USING 'cat' + CLUSTER BY key +) tmap +SELECT tmap.key, regexp_extract(tmap.value, 'val_(\\d+\\t\\d+)',1) WHERE tmap.key < 100; + +EXPLAIN EXTENDED +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value, 1+2, 3+4) + USING 'cat' + CLUSTER BY key +) tmap +SELECT tmap.key, regexp_extract(tmap.value, 'val_(\\d+\\t\\d+)') WHERE tmap.key < 100; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value, 1+2, 3+4) + USING 'cat' + CLUSTER BY key +) tmap +SELECT tmap.key, regexp_extract(tmap.value, 'val_(\\d+\\t\\d+)') WHERE tmap.key < 100; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/remote_script.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/remote_script.q new file mode 100644 index 0000000000000..926601c647bc3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/remote_script.q @@ -0,0 +1,13 @@ +dfs -put ../data/scripts/newline.py /newline.py; +add file hdfs:///newline.py; +set hive.transform.escape.input=true; + +create table tmp_tmp(key string, value string) stored as rcfile; +insert overwrite table tmp_tmp +SELECT TRANSFORM(key, value) USING +'python newline.py' AS key, value FROM src limit 6; + +select * from tmp_tmp ORDER BY key ASC, value ASC; + +dfs -rmr /newline.py; +drop table tmp_tmp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_column.q new file mode 100644 index 0000000000000..a3f3f30466ced --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_column.q @@ -0,0 +1,57 @@ +CREATE TABLE kv_rename_test(a int, b int, c int); +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a a STRING; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a a1 INT; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a1 a2 INT FIRST; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a2 a INT AFTER b; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a a1 INT COMMENT 'test comment1'; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a1 a2 INT COMMENT 'test comment2' FIRST; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE COLUMN a2 a INT AFTER b; +DESCRIBE kv_rename_test; + +DROP TABLE kv_rename_test; +SHOW TABLES; + +-- Using non-default Database +CREATE DATABASE kv_rename_test_db; +USE kv_rename_test_db; + +CREATE TABLE kv_rename_test(a int, b int, c int); +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a a STRING; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a a1 INT; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a1 a2 INT FIRST; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a2 a INT AFTER b; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a a1 INT COMMENT 'test comment1'; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE a1 a2 INT COMMENT 'test comment2' FIRST; +DESCRIBE kv_rename_test; + +ALTER TABLE kv_rename_test CHANGE COLUMN a2 a INT AFTER b; +DESCRIBE kv_rename_test; + +DROP TABLE kv_rename_test; +SHOW TABLES; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_external_partition_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_external_partition_location.q new file mode 100644 index 0000000000000..faebd55b05f49 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_external_partition_location.q @@ -0,0 +1,24 @@ + +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/ex_table; + +CREATE EXTERNAL TABLE ex_table ( key INT, value STRING) + PARTITIONED BY (part STRING) + STORED AS textfile + LOCATION 'file:${system:test.tmp.dir}/ex_table'; + +INSERT OVERWRITE TABLE ex_table PARTITION (part='part1') +SELECT key, value FROM src WHERE key < 10; + +SHOW PARTITIONS ex_table; +SELECT * from ex_table where part='part1' ORDER BY key; + +dfs -ls ${system:test.tmp.dir}/ex_table/part=part1; +dfs -cat ${system:test.tmp.dir}/ex_table/part=part1/000000_0; + +ALTER TABLE ex_table PARTITION (part='part1') RENAME TO PARTITION (part='part2'); + +SHOW PARTITIONS ex_table; +SELECT * from ex_table where part='part2' ORDER BY key; + +dfs -ls ${system:test.tmp.dir}/ex_table/part=part1; +dfs -cat ${system:test.tmp.dir}/ex_table/part=part1/000000_0; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_partition_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_partition_location.q new file mode 100644 index 0000000000000..ee4ff8171f60b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_partition_location.q @@ -0,0 +1,20 @@ +-- This test verifies that if the tables location changes, renaming a partition will not change +-- the partition location accordingly + +CREATE TABLE rename_partition_table (key STRING, value STRING) PARTITIONED BY (part STRING) +STORED AS RCFILE +LOCATION 'pfile:${system:test.tmp.dir}/rename_partition_table'; + +INSERT OVERWRITE TABLE rename_partition_table PARTITION (part = '1') SELECT * FROM src; + +ALTER TABLE rename_partition_table SET LOCATION 'file:${system:test.tmp.dir}/rename_partition_table'; + +ALTER TABLE rename_partition_table PARTITION (part = '1') RENAME TO PARTITION (part = '2'); + +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyPartitionIsNotSubdirectoryOfTableHook; + +SELECT count(*) FROM rename_partition_table where part = '2'; + +SET hive.exec.post.hooks=; + +DROP TABLE rename_partition_table; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_table_location.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_table_location.q new file mode 100644 index 0000000000000..ad0ce3a933450 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/rename_table_location.q @@ -0,0 +1,17 @@ +-- This test verifies that if the tables location changes, renaming a table will not change +-- the table location scheme + +CREATE TABLE rename_partition_table (key STRING, value STRING) PARTITIONED BY (part STRING) +STORED AS RCFILE +LOCATION 'pfile:${system:test.tmp.dir}/rename_partition_table'; + +INSERT OVERWRITE TABLE rename_partition_table PARTITION (part = '1') SELECT * FROM src; + +ALTER TABLE rename_partition_table SET LOCATION 'file:${system:test.tmp.dir}/rename_partition_table'; + +set hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.VerifyOutputTableLocationSchemeIsFileHook; + +-- If the metastore attempts to change the scheme of the table back to the default pfile, it will get +-- an exception related to the source and destination file systems not matching + +ALTER TABLE rename_partition_table RENAME TO rename_partition_table_renamed; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/repair.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/repair.q new file mode 100644 index 0000000000000..8d04d3e991c59 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/repair.q @@ -0,0 +1,15 @@ +CREATE TABLE repairtable(col STRING) PARTITIONED BY (p1 STRING, p2 STRING); + +MSCK TABLE repairtable; + +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/warehouse/repairtable/p1=a/p2=a; +dfs ${system:test.dfs.mkdir} ../build/ql/test/data/warehouse/repairtable/p1=b/p2=a; +dfs -touchz ../build/ql/test/data/warehouse/repairtable/p1=b/p2=a/datafile; + +MSCK TABLE repairtable; + +MSCK REPAIR TABLE repairtable; + +MSCK TABLE repairtable; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reset_conf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reset_conf.q new file mode 100644 index 0000000000000..8ddde2364536d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/reset_conf.q @@ -0,0 +1,11 @@ +set hive.skewjoin.key; +set hive.skewjoin.mapjoin.min.split; +set hive.skewjoin.key=300000; +set hive.skewjoin.mapjoin.min.split=256000000; +set hive.skewjoin.key; +set hive.skewjoin.mapjoin.min.split; + +reset; + +set hive.skewjoin.key; +set hive.skewjoin.mapjoin.min.split; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/router_join_ppr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/router_join_ppr.q new file mode 100644 index 0000000000000..9ec5b7b8f5647 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/router_join_ppr.q @@ -0,0 +1,71 @@ +set hive.optimize.ppd=true; + +EXPLAIN EXTENDED + FROM + src a + RIGHT OUTER JOIN + srcpart b + ON (a.key = b.key AND b.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + FROM + src a + RIGHT OUTER JOIN + srcpart b + ON (a.key = b.key AND b.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + +EXPLAIN EXTENDED + FROM + srcpart a + RIGHT OUTER JOIN + src b + ON (a.key = b.key AND a.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + FROM + srcpart a + RIGHT OUTER JOIN + src b + ON (a.key = b.key AND a.ds = '2008-04-08') + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25; + + +EXPLAIN EXTENDED + FROM + src a + RIGHT OUTER JOIN + srcpart b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND b.ds = '2008-04-08'; + + FROM + src a + RIGHT OUTER JOIN + srcpart b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND b.ds = '2008-04-08'; + +EXPLAIN EXTENDED + FROM + srcpart a + RIGHT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND a.ds = '2008-04-08'; + + FROM + srcpart a + RIGHT OUTER JOIN + src b + ON (a.key = b.key) + SELECT a.key, a.value, b.key, b.value + WHERE a.key > 10 AND a.key < 20 AND b.key > 15 AND b.key < 25 AND a.ds = '2008-04-08'; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample1.q new file mode 100644 index 0000000000000..6e86cef2675bd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample1.q @@ -0,0 +1,15 @@ +CREATE TABLE dest1(key INT, value STRING, dt STRING, hr STRING) STORED AS TEXTFILE; + +-- no input pruning, no sample filter +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcpart TABLESAMPLE (BUCKET 1 OUT OF 1 ON rand()) s +WHERE s.ds='2008-04-08' and s.hr='11'; + +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcpart TABLESAMPLE (BUCKET 1 OUT OF 1 ON rand()) s +WHERE s.ds='2008-04-08' and s.hr='11'; + +SELECT dest1.* FROM dest1; + +select count(1) from srcbucket; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample10.q new file mode 100644 index 0000000000000..1c6695c5410e8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample10.q @@ -0,0 +1,25 @@ + +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.enforce.bucketing=true; +set hive.exec.reducers.max=4; +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set hive.default.fileformat=RCFILE; +set hive.exec.pre.hooks = org.apache.hadoop.hive.ql.hooks.PreExecutePrinter,org.apache.hadoop.hive.ql.hooks.EnforceReadOnlyTables,org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec; + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.17, 0.18, 0.19) + +create table srcpartbucket (key string, value string) partitioned by (ds string, hr string) clustered by (key) into 4 buckets; + +insert overwrite table srcpartbucket partition(ds, hr) select * from srcpart where ds is not null and key < 10; + +explain extended +select ds, count(1) from srcpartbucket tablesample (bucket 1 out of 4 on key) where ds is not null group by ds ORDER BY ds ASC; + +select ds, count(1) from srcpartbucket tablesample (bucket 1 out of 4 on key) where ds is not null group by ds ORDER BY ds ASC; + +select ds, count(1) from srcpartbucket tablesample (bucket 1 out of 2 on key) where ds is not null group by ds ORDER BY ds ASC; + +select * from srcpartbucket where ds is not null ORDER BY key ASC, value ASC, ds ASC, hr ASC; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample2.q new file mode 100644 index 0000000000000..9ca5d26c00895 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample2.q @@ -0,0 +1,12 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +-- input pruning, no sample filter +-- default table sample columns +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2) s; + +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2) s; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample3.q new file mode 100644 index 0000000000000..9dec7172d96af --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample3.q @@ -0,0 +1,8 @@ +-- no input pruning, sample filter +EXPLAIN +SELECT s.key +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 5 on key) s; + +SELECT s.key +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 5 on key) s SORT BY key; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample4.q new file mode 100644 index 0000000000000..85a9d92a2d144 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample4.q @@ -0,0 +1,12 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +-- bucket column is the same as table sample +-- No need for sample filter +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s; + +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample5.q new file mode 100644 index 0000000000000..836ad2f15e43e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample5.q @@ -0,0 +1,11 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +-- no input pruning, sample filter +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest1 SELECT s.* -- here's another test +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 5 on key) s; + +INSERT OVERWRITE TABLE dest1 SELECT s.* -- here's another test +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 5 on key) s; + +SELECT dest1.* FROM dest1 SORT BY key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample6.q new file mode 100644 index 0000000000000..ea3511f2435d6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample6.q @@ -0,0 +1,50 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +-- both input pruning and sample filter +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 4 on key) s; + +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 4 on key) s; + +SELECT dest1.* FROM dest1; + +EXPLAIN EXTENDED SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 4 OUT OF 4 on key) s +ORDER BY key, value; +SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 4 OUT OF 4 on key) s +ORDER BY key, value; + +EXPLAIN EXTENDED SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s +ORDER BY key, value; +SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s +ORDER BY key, value; + +EXPLAIN EXTENDED SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 3 on key) s +ORDER BY key, value; +SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 3 on key) s +ORDER BY key, value; + +EXPLAIN EXTENDED SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 2 OUT OF 3 on key) s +ORDER BY key, value; +SELECT s.* FROM srcbucket TABLESAMPLE (BUCKET 2 OUT OF 3 on key) s +ORDER BY key, value; + +EXPLAIN EXTENDED SELECT s.* FROM srcbucket2 TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s +ORDER BY key, value; +SELECT s.* FROM srcbucket2 TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s +ORDER BY key, value; + +EXPLAIN EXTENDED SELECT s.* FROM srcbucket2 TABLESAMPLE (BUCKET 2 OUT OF 4 on key) s +ORDER BY key, value; +SELECT s.* FROM srcbucket2 TABLESAMPLE (BUCKET 2 OUT OF 4 on key) s +ORDER BY key, value; + +CREATE TABLE empty_bucket (key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +EXPLAIN EXTENDED SELECT s.* FROM empty_bucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s +ORDER BY key, value; +SELECT s.* FROM empty_bucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s +ORDER BY key, value; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample7.q new file mode 100644 index 0000000000000..18344d79c6a09 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample7.q @@ -0,0 +1,13 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +-- both input pruning and sample filter +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 4 on key) s +WHERE s.key > 100; + +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 4 on key) s +WHERE s.key > 100; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample8.q new file mode 100644 index 0000000000000..90fb1fb1ff724 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample8.q @@ -0,0 +1,15 @@ +-- sampling with join and alias +EXPLAIN EXTENDED +SELECT s.* +FROM srcpart TABLESAMPLE (BUCKET 1 OUT OF 1 ON key) s +JOIN srcpart TABLESAMPLE (BUCKET 1 OUT OF 10 ON key) t +WHERE t.key = s.key and t.value = s.value and s.ds='2008-04-08' and s.hr='11' and s.ds='2008-04-08' and s.hr='11' +DISTRIBUTE BY key, value +SORT BY key, value; + +SELECT s.key, s.value +FROM srcpart TABLESAMPLE (BUCKET 1 OUT OF 1 ON key) s +JOIN srcpart TABLESAMPLE (BUCKET 1 OUT OF 10 ON key) t +WHERE s.ds='2008-04-08' and s.hr='11' and s.ds='2008-04-08' and s.hr='11' +DISTRIBUTE BY key, value +SORT BY key, value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample9.q new file mode 100644 index 0000000000000..03139ca1fd758 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample9.q @@ -0,0 +1,6 @@ +EXPLAIN EXTENDED +SELECT s.* +FROM (SELECT a.* FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) a) s; + +SELECT s.* +FROM (SELECT a.* FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) a) s; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample_islocalmode_hook.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample_islocalmode_hook.q new file mode 100644 index 0000000000000..12f2bcd46ec8f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample_islocalmode_hook.q @@ -0,0 +1,39 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set mapred.max.split.size=300; +set mapred.min.split.size=300; +set mapred.min.split.size.per.node=300; +set mapred.min.split.size.per.rack=300; +set hive.exec.mode.local.auto=true; +set hive.merge.smallfiles.avgsize=1; + +-- EXCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +-- create file inputs +create table sih_i_part (key int, value string) partitioned by (p string); +insert overwrite table sih_i_part partition (p='1') select key, value from src; +insert overwrite table sih_i_part partition (p='2') select key+10000, value from src; +insert overwrite table sih_i_part partition (p='3') select key+20000, value from src; +create table sih_src as select key, value from sih_i_part order by key, value; +create table sih_src2 as select key, value from sih_src order by key, value; + +set hive.exec.post.hooks = org.apache.hadoop.hive.ql.hooks.VerifyIsLocalModeHook; +set mapreduce.framework.name=yarn; +set mapreduce.jobtracker.address=localhost:58; +set hive.sample.seednumber=7; + +-- Relaxing hive.exec.mode.local.auto.input.files.max=1. +-- Hadoop20 will not generate more splits than there are files (one). +-- Hadoop23 generate splits correctly (four), hence the max needs to be adjusted to ensure running in local mode. +-- Default value is hive.exec.mode.local.auto.input.files.max=4 which produces expected behavior on Hadoop23. +-- hive.sample.seednumber is required because Hadoop23 generates multiple splits and tablesample is non-repeatable without it. + +-- sample split, running locally limited by num tasks +select count(1) from sih_src tablesample(1 percent); + +-- sample two tables +select count(1) from sih_src tablesample(1 percent) a join sih_src2 tablesample(1 percent) b on a.key = b.key; + +set hive.exec.mode.local.auto.inputbytes.max=1000; + +-- sample split, running locally limited by max bytes +select count(1) from sih_src tablesample(1 percent); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample_islocalmode_hook_hadoop20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample_islocalmode_hook_hadoop20.q new file mode 100644 index 0000000000000..484e1fa617d8a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sample_islocalmode_hook_hadoop20.q @@ -0,0 +1,41 @@ +USE default; + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set mapred.max.split.size=300; +set mapred.min.split.size=300; +set mapred.min.split.size.per.node=300; +set mapred.min.split.size.per.rack=300; +set hive.exec.mode.local.auto=true; +set hive.merge.smallfiles.avgsize=1; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) +-- This test sets mapred.max.split.size=300 and hive.merge.smallfiles.avgsize=1 +-- in an attempt to force the generation of multiple splits and multiple output files. +-- However, Hadoop 0.20 is incapable of generating splits smaller than the block size +-- when using CombineFileInputFormat, so only one split is generated. This has a +-- significant impact on the results of the TABLESAMPLE(x PERCENT). This issue was +-- fixed in MAPREDUCE-2046 which is included in 0.22. + +-- create file inputs +create table sih_i_part (key int, value string) partitioned by (p string); +insert overwrite table sih_i_part partition (p='1') select key, value from src; +insert overwrite table sih_i_part partition (p='2') select key+10000, value from src; +insert overwrite table sih_i_part partition (p='3') select key+20000, value from src; +create table sih_src as select key, value from sih_i_part order by key, value; +create table sih_src2 as select key, value from sih_src order by key, value; + +set hive.exec.post.hooks = org.apache.hadoop.hive.ql.hooks.VerifyIsLocalModeHook ; +set mapred.job.tracker=localhost:58; +set hive.exec.mode.local.auto.input.files.max=1; + +-- Sample split, running locally limited by num tasks +select count(1) from sih_src tablesample(1 percent); + +-- sample two tables +select count(1) from sih_src tablesample(1 percent)a join sih_src2 tablesample(1 percent)b on a.key = b.key; + +set hive.exec.mode.local.auto.inputbytes.max=1000; +set hive.exec.mode.local.auto.input.files.max=4; + +-- sample split, running locally limited by max bytes +select count(1) from sih_src tablesample(1 percent); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/schemeAuthority.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/schemeAuthority.q new file mode 100644 index 0000000000000..c0e18c5688b3c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/schemeAuthority.q @@ -0,0 +1,15 @@ +dfs ${system:test.dfs.mkdir} file:///tmp/test; +dfs ${system:test.dfs.mkdir} hdfs:///tmp/test; + +create external table dynPart (key string) partitioned by (value string) row format delimited fields terminated by '\\t' stored as textfile; +insert overwrite local directory "/tmp/test" select key from src where (key = 10) order by key; +insert overwrite directory "/tmp/test" select key from src where (key = 20) order by key; +alter table dynPart add partition (value='0') location 'file:///tmp/test'; +alter table dynPart add partition (value='1') location 'hdfs:///tmp/test'; +select count(*) from dynPart; +select key from dynPart; +select key from src where (key = 10) order by key; +select key from src where (key = 20) order by key; + +dfs -rmr file:///tmp/test; +dfs -rmr hdfs:///tmp/test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/schemeAuthority2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/schemeAuthority2.q new file mode 100644 index 0000000000000..ecd4d13d0e23b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/schemeAuthority2.q @@ -0,0 +1,12 @@ +dfs -mkdir file:///tmp/test; +dfs -mkdir hdfs:///tmp/test; + +create external table dynPart (key string) partitioned by (value string, value2 string) row format delimited fields terminated by '\\t' stored as textfile; +insert overwrite local directory "/tmp/test" select key from src where (key = 10) order by key; +insert overwrite directory "/tmp/test" select key from src where (key = 20) order by key; +alter table dynPart add partition (value='0', value2='clusterA') location 'file:///tmp/test'; +alter table dynPart add partition (value='0', value2='clusterB') location 'hdfs:///tmp/test'; +select value2, key from dynPart where value='0'; + +dfs -rmr file:///tmp/test; +dfs -rmr hdfs:///tmp/test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_env_var1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_env_var1.q new file mode 100644 index 0000000000000..82268f4dfb595 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_env_var1.q @@ -0,0 +1,5 @@ +-- Verifies that script operator ID environment variables have unique values +-- in each instance of the script operator. +SELECT count(1) FROM +( SELECT TRANSFORM('echo $HIVE_SCRIPT_OPERATOR_ID') USING 'bash' AS key FROM src LIMIT 1 UNION ALL + SELECT TRANSFORM('echo $HIVE_SCRIPT_OPERATOR_ID') USING 'bash' AS key FROM src LIMIT 1 ) a GROUP BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_env_var2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_env_var2.q new file mode 100644 index 0000000000000..7957fe518d55d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_env_var2.q @@ -0,0 +1,5 @@ +set hive.script.operator.id.env.var = MY_ID; +-- Same test as script_env_var1, but test setting the variable name +SELECT count(1) FROM +( SELECT TRANSFORM('echo $MY_ID') USING 'bash' AS key FROM src LIMIT 1 UNION ALL + SELECT TRANSFORM('echo $MY_ID') USING 'bash' AS key FROM src LIMIT 1 ) a GROUP BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_pipe.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_pipe.q new file mode 100644 index 0000000000000..ae2fd2ed8f2dc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/script_pipe.q @@ -0,0 +1,8 @@ +set hive.exec.script.allow.partial.consumption = true; +-- Tests exception in ScriptOperator.close() by passing to the operator a small amount of data +EXPLAIN SELECT TRANSFORM(*) USING 'true' AS a, b, c FROM (SELECT * FROM src LIMIT 1) tmp; +-- Tests exception in ScriptOperator.processOp() by passing extra data needed to fill pipe buffer +EXPLAIN SELECT TRANSFORM(key, value, key, value, key, value, key, value, key, value, key, value) USING 'head -n 1' as a,b,c,d FROM src; + +SELECT TRANSFORM(*) USING 'true' AS a, b, c FROM (SELECT * FROM src LIMIT 1) tmp; +SELECT TRANSFORM(key, value, key, value, key, value, key, value, key, value, key, value) USING 'head -n 1' as a,b,c,d FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/scriptfile1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/scriptfile1.q new file mode 100644 index 0000000000000..4f65016f3081c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/scriptfile1.q @@ -0,0 +1,14 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +CREATE TABLE dest1(key INT, value STRING); + +ADD FILE src/test/scripts/testgrep; + +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING 'testgrep' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_as_omitted.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_as_omitted.q new file mode 100644 index 0000000000000..f0fe03f180c08 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_as_omitted.q @@ -0,0 +1,12 @@ +EXPLAIn +SELECT a, b FROM ( + SELECT key a, value b + FROM src +) src1 +ORDER BY a LIMIT 1; + +SELECT a, b FROM ( + SELECT key a, value b + FROM src +) src1 +ORDER BY a LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_transform_hint.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_transform_hint.q new file mode 100644 index 0000000000000..33959ed5b46a6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_transform_hint.q @@ -0,0 +1,24 @@ +EXPLAIN +SELECT /*+MAPJOIN(a)*/ +TRANSFORM(a.key, a.value) USING 'cat' AS (tkey, tvalue) +FROM src a join src b +on a.key = b.key; + + +SELECT /*+MAPJOIN(a)*/ +TRANSFORM(a.key, a.value) USING 'cat' AS (tkey, tvalue) +FROM src a join src b +on a.key = b.key; + + +EXPLAIN +SELECT /*+STREAMTABLE(a)*/ +TRANSFORM(a.key, a.value) USING 'cat' AS (tkey, tvalue) +FROM src a join src b +on a.key = b.key; + + +SELECT /*+STREAMTABLE(a)*/ +TRANSFORM(a.key, a.value) USING 'cat' AS (tkey, tvalue) +FROM src a join src b +on a.key = b.key; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_and.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_and.q new file mode 100644 index 0000000000000..275c774d1d4eb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_and.q @@ -0,0 +1,15 @@ +CREATE TABLE npe_test (key STRING, value STRING) PARTITIONED BY (ds STRING); + +INSERT OVERWRITE TABLE npe_test PARTITION(ds='2012-12-11') +SELECT src.key, src.value FROM src WHERE key < '200'; + +INSERT OVERWRITE TABLE npe_test PARTITION(ds='2012-12-12') +SELECT src.key, src.value FROM src WHERE key > '200'; + +SELECT count(*) FROM npe_test; + +EXPLAIN SELECT * FROM npe_test WHERE ds > 2012-11-31 AND ds < 2012-12-15; + +SELECT count(*) FROM npe_test WHERE ds > 2012-11-31 AND ds < 2012-12-15; + +DROP TABLE npe_test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_not.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_not.q new file mode 100644 index 0000000000000..93d992e69844f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_not.q @@ -0,0 +1,15 @@ +CREATE TABLE npe_test (key STRING, value STRING) PARTITIONED BY (ds STRING); + +INSERT OVERWRITE TABLE npe_test PARTITION(ds='2012-12-11') +SELECT src.key, src.value FROM src WHERE key < '200'; + +INSERT OVERWRITE TABLE npe_test PARTITION(ds='2012-12-12') +SELECT src.key, src.value FROM src WHERE key > '200'; + +SELECT count(*) FROM npe_test; + +EXPLAIN SELECT * FROM npe_test WHERE NOT ds < 2012-11-31; + +SELECT count(*) FROM npe_test WHERE NOT ds < 2012-11-31; + +DROP TABLE npe_test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_or.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_or.q new file mode 100644 index 0000000000000..5dd0776792f5b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/select_unquote_or.q @@ -0,0 +1,15 @@ +CREATE TABLE npe_test (key STRING, value STRING) PARTITIONED BY (ds STRING); + +INSERT OVERWRITE TABLE npe_test PARTITION(ds='2012-12-11') +SELECT src.key, src.value FROM src WHERE key < '200'; + +INSERT OVERWRITE TABLE npe_test PARTITION(ds='2012-12-12') +SELECT src.key, src.value FROM src WHERE key > '200'; + +SELECT count(*) FROM npe_test; + +EXPLAIN SELECT * FROM npe_test WHERE ds > 2012-11-31 OR ds < 2012-12-15; + +SELECT count(*) FROM npe_test WHERE ds > 2012-11-31 OR ds < 2012-12-15; + +DROP TABLE npe_test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/semicolon.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/semicolon.q new file mode 100644 index 0000000000000..fef2687308d02 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/semicolon.q @@ -0,0 +1,4 @@ +-- comment +-- comment; +-- comment +SELECT COUNT(1) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/semijoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/semijoin.q new file mode 100644 index 0000000000000..142a51ab52e8f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/semijoin.q @@ -0,0 +1,81 @@ + + + + + +create table t1 as select cast(key as int) key, value from src where key <= 10; + +select * from t1 sort by key; + +create table t2 as select cast(2*key as int) key, value from t1; + +select * from t2 sort by key; + +create table t3 as select * from (select * from t1 union all select * from t2) b; +select * from t3 sort by key, value; + +create table t4 (key int, value string); +select * from t4; + +explain select * from t1 a left semi join t2 b on a.key=b.key sort by a.key, a.value; +select * from t1 a left semi join t2 b on a.key=b.key sort by a.key, a.value; + +explain select * from t2 a left semi join t1 b on b.key=a.key sort by a.key, a.value; +select * from t2 a left semi join t1 b on b.key=a.key sort by a.key, a.value; + +explain select * from t1 a left semi join t4 b on b.key=a.key sort by a.key, a.value; +select * from t1 a left semi join t4 b on b.key=a.key sort by a.key, a.value; + +explain select a.value from t1 a left semi join t3 b on (b.key = a.key and b.key < '15') sort by a.value; +select a.value from t1 a left semi join t3 b on (b.key = a.key and b.key < '15') sort by a.value; + +explain select * from t1 a left semi join t2 b on a.key = b.key and b.value < "val_10" sort by a.key, a.value; +select * from t1 a left semi join t2 b on a.key = b.key and b.value < "val_10" sort by a.key, a.value; + +explain select a.value from t1 a left semi join (select key from t3 where key > 5) b on a.key = b.key sort by a.value; +select a.value from t1 a left semi join (select key from t3 where key > 5) b on a.key = b.key sort by a.value; + +explain select a.value from t1 a left semi join (select key , value from t2 where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ; +select a.value from t1 a left semi join (select key , value from t2 where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ; + +explain select * from t2 a left semi join (select key , value from t1 where key > 2) b on a.key = b.key sort by a.key, a.value; +select * from t2 a left semi join (select key , value from t1 where key > 2) b on a.key = b.key sort by a.key, a.value; + +explain select /*+ mapjoin(b) */ a.key from t3 a left semi join t1 b on a.key = b.key sort by a.key; +select /*+ mapjoin(b) */ a.key from t3 a left semi join t1 b on a.key = b.key sort by a.key; + +explain select * from t1 a left semi join t2 b on a.key = 2*b.key sort by a.key, a.value; +select * from t1 a left semi join t2 b on a.key = 2*b.key sort by a.key, a.value; + +explain select * from t1 a join t2 b on a.key = b.key left semi join t3 c on b.key = c.key sort by a.key, a.value; +select * from t1 a join t2 b on a.key = b.key left semi join t3 c on b.key = c.key sort by a.key, a.value; + +explain select * from t3 a left semi join t1 b on a.key = b.key and a.value=b.value sort by a.key, a.value; +select * from t3 a left semi join t1 b on a.key = b.key and a.value=b.value sort by a.key, a.value; + +explain select /*+ mapjoin(b, c) */ a.key from t3 a left semi join t1 b on a.key = b.key left semi join t2 c on a.key = c.key sort by a.key; +select /*+ mapjoin(b, c) */ a.key from t3 a left semi join t1 b on a.key = b.key left semi join t2 c on a.key = c.key sort by a.key; + +explain select a.key from t3 a left outer join t1 b on a.key = b.key left semi join t2 c on b.key = c.key sort by a.key; +select a.key from t3 a left outer join t1 b on a.key = b.key left semi join t2 c on b.key = c.key sort by a.key; + +explain select a.key from t1 a right outer join t3 b on a.key = b.key left semi join t2 c on b.key = c.key sort by a.key; +select a.key from t1 a right outer join t3 b on a.key = b.key left semi join t2 c on b.key = c.key sort by a.key; + +explain select a.key from t1 a full outer join t3 b on a.key = b.key left semi join t2 c on b.key = c.key sort by a.key; +select a.key from t1 a full outer join t3 b on a.key = b.key left semi join t2 c on b.key = c.key sort by a.key; + +explain select a.key from t3 a left semi join t2 b on a.key = b.key left outer join t1 c on a.key = c.key sort by a.key; +select a.key from t3 a left semi join t2 b on a.key = b.key left outer join t1 c on a.key = c.key sort by a.key; + +explain select a.key from t3 a left semi join t2 b on a.key = b.key right outer join t1 c on a.key = c.key sort by a.key; +select a.key from t3 a left semi join t2 b on a.key = b.key right outer join t1 c on a.key = c.key sort by a.key; + +explain select a.key from t3 a left semi join t1 b on a.key = b.key full outer join t2 c on a.key = c.key sort by a.key; +select a.key from t3 a left semi join t1 b on a.key = b.key full outer join t2 c on a.key = c.key sort by a.key; + +explain select a.key from t3 a left semi join t2 b on a.key = b.key left outer join t1 c on a.value = c.value sort by a.key; +select a.key from t3 a left semi join t2 b on a.key = b.key left outer join t1 c on a.value = c.value sort by a.key; + +explain select a.key from t3 a left semi join t2 b on a.value = b.value where a.key > 100; +select a.key from t3 a left semi join t2 b on a.value = b.value where a.key > 100; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_regex.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_regex.q new file mode 100644 index 0000000000000..2a287bd877759 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_regex.q @@ -0,0 +1,66 @@ +EXPLAIN +CREATE TABLE serde_regex( + host STRING, + identity STRING, + user STRING, + time STRING, + request STRING, + status STRING, + size INT, + referer STRING, + agent STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' +WITH SERDEPROPERTIES ( + "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?" +) +STORED AS TEXTFILE; + +CREATE TABLE serde_regex( + host STRING, + identity STRING, + user STRING, + time STRING, + request STRING, + status STRING, + size INT, + referer STRING, + agent STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' +WITH SERDEPROPERTIES ( + "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?" +) +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "../data/files/apache.access.log" INTO TABLE serde_regex; +LOAD DATA LOCAL INPATH "../data/files/apache.access.2.log" INTO TABLE serde_regex; + +SELECT * FROM serde_regex ORDER BY time; + +SELECT host, size, status, time from serde_regex ORDER BY time; + +DROP TABLE serde_regex; + +EXPLAIN +CREATE TABLE serde_regex1( + key decimal, + value int) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' +WITH SERDEPROPERTIES ( + "input.regex" = "([^ ]*) ([^ ]*)" +) +STORED AS TEXTFILE; + +CREATE TABLE serde_regex1( + key decimal, + value int) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' +WITH SERDEPROPERTIES ( + "input.regex" = "([^ ]*) ([^ ]*)" +) +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH "../data/files/kv7.txt" INTO TABLE serde_regex1; + +SELECT key, value FROM serde_regex1 ORDER BY key, value; + +DROP TABLE serde_regex1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_reported_schema.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_reported_schema.q new file mode 100644 index 0000000000000..01ec864bc925f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_reported_schema.q @@ -0,0 +1,9 @@ +create table int_string + partitioned by (b string) + row format serde "org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer" + with serdeproperties ( + "serialization.class"="org.apache.hadoop.hive.serde2.thrift.test.IntString", + "serialization.format"="org.apache.thrift.protocol.TBinaryProtocol"); +describe extended int_string; +alter table int_string add partition (b='part1'); +describe extended int_string partition (b='part1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_user_properties.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_user_properties.q new file mode 100644 index 0000000000000..4d523e1bf7167 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/serde_user_properties.q @@ -0,0 +1,9 @@ +-- HIVE-2906 Table properties in SQL + +explain extended select key from src; +explain extended select a.key from src a; +explain extended select a.key from src tablesample(1 percent) a; +explain extended select key from src ('user.defined.key'='some.value'); +explain extended select key from src ('user.defined.key'='some.value') tablesample(1 percent); +explain extended select a.key from src ('user.defined.key'='some.value') a; +explain extended select a.key from src ('user.defined.key'='some.value') tablesample(1 percent) a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/set_processor_namespaces.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/set_processor_namespaces.q new file mode 100644 index 0000000000000..7e3d1f4d8aa41 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/set_processor_namespaces.q @@ -0,0 +1,31 @@ +set zzz=5; +set zzz; + +set system:xxx=5; +set system:xxx; + +set system:yyy=${system:xxx}; +set system:yyy; + +set go=${hiveconf:zzz}; +set go; + +set hive.variable.substitute=false; +set raw=${hiveconf:zzz}; +set raw; + +set hive.variable.substitute=true; + +EXPLAIN SELECT * FROM src where key=${hiveconf:zzz}; +SELECT * FROM src where key=${hiveconf:zzz}; + +set a=1; +set b=a; +set c=${hiveconf:${hiveconf:b}}; +set c; + +set jar=${system:build.ivy.lib.dir}/default/derby-${system:derby.version}.jar; + +add file ${hiveconf:jar}; +delete file ${hiveconf:jar}; +list file; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/set_variable_sub.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/set_variable_sub.q new file mode 100644 index 0000000000000..7bf1e60a5d3f9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/set_variable_sub.q @@ -0,0 +1,15 @@ +set hivevar:key1=value1; + +EXPLAIN SELECT * FROM src where key="${key1}"; +EXPLAIN SELECT * FROM src where key="${hivevar:key1}"; + +set hivevar:a=1; +set hivevar:b=a; +set hivevar:c=${hivevar:${hivevar:b}}; +EXPLAIN SELECT * FROM src where key="${hivevar:c}"; + +set hivevar:a; +set hivevar:b; +set hivevar:c; +set hivevar:key1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_columns.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_columns.q new file mode 100644 index 0000000000000..58a3a2c29e2cf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_columns.q @@ -0,0 +1,26 @@ +CREATE TABLE shcol_test(KEY STRING, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE; + +EXPLAIN +SHOW COLUMNS from shcol_test; + +SHOW COLUMNS from shcol_test; + +-- SHOW COLUMNS +CREATE DATABASE test_db; +USE test_db; +CREATE TABLE foo(a INT); + +-- SHOW COLUMNS basic syntax tests +USE test_db; +SHOW COLUMNS from foo; +SHOW COLUMNS in foo; + +-- SHOW COLUMNS from a database with a name that requires escaping +CREATE DATABASE `database`; +USE `database`; +CREATE TABLE foo(a INT); +SHOW COLUMNS from foo; + +use default; +SHOW COLUMNS from test_db.foo; +SHOW COLUMNS from foo from test_db; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_alter.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_alter.q new file mode 100644 index 0000000000000..1158a69ba338b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_alter.q @@ -0,0 +1,23 @@ +-- Test SHOW CREATE TABLE on an external, clustered and sorted table. Then test the query again after ALTERs. + +CREATE EXTERNAL TABLE tmp_showcrt1 (key smallint, value float) +CLUSTERED BY (key) SORTED BY (value DESC) INTO 5 BUCKETS; +SHOW CREATE TABLE tmp_showcrt1; + +-- Add a comment to the table, change the EXTERNAL property, and test SHOW CREATE TABLE on the change. +ALTER TABLE tmp_showcrt1 SET TBLPROPERTIES ('comment'='temporary table', 'EXTERNAL'='FALSE'); +SHOW CREATE TABLE tmp_showcrt1; + +-- Alter the table comment, change the EXTERNAL property back and test SHOW CREATE TABLE on the change. +ALTER TABLE tmp_showcrt1 SET TBLPROPERTIES ('comment'='changed comment', 'EXTERNAL'='TRUE'); +SHOW CREATE TABLE tmp_showcrt1; + +-- Change the 'SORTBUCKETCOLSPREFIX' property and test SHOW CREATE TABLE. The output should not change. +ALTER TABLE tmp_showcrt1 SET TBLPROPERTIES ('SORTBUCKETCOLSPREFIX'='FALSE'); +SHOW CREATE TABLE tmp_showcrt1; + +-- Alter the storage handler of the table, and test SHOW CREATE TABLE. +ALTER TABLE tmp_showcrt1 SET TBLPROPERTIES ('storage_handler'='org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler'); +SHOW CREATE TABLE tmp_showcrt1; +DROP TABLE tmp_showcrt1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_db_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_db_table.q new file mode 100644 index 0000000000000..1937acb547cdc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_db_table.q @@ -0,0 +1,10 @@ +-- Test SHOW CREATE TABLE on a table name of format "db.table". + +CREATE DATABASE tmp_feng comment 'for show create table test'; +SHOW DATABASES; +CREATE TABLE tmp_feng.tmp_showcrt (key string, value int); +USE default; +SHOW CREATE TABLE tmp_feng.tmp_showcrt; +DROP TABLE tmp_feng.tmp_showcrt; +DROP DATABASE tmp_feng; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_delimited.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_delimited.q new file mode 100644 index 0000000000000..77229641f121e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_delimited.q @@ -0,0 +1,9 @@ +-- Test SHOW CREATE TABLE on a table with delimiters, stored format, and location. + +CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) +ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '|' MAP KEYS TERMINATED BY '\045' LINES TERMINATED BY '\n' +STORED AS textfile +LOCATION 'file:${system:test.tmp.dir}/tmp_showcrt1'; +SHOW CREATE TABLE tmp_showcrt1; +DROP TABLE tmp_showcrt1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_partitioned.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_partitioned.q new file mode 100644 index 0000000000000..3b691544e5313 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_partitioned.q @@ -0,0 +1,8 @@ +-- Test SHOW CREATE TABLE on a table with partitions and column comments. + +CREATE EXTERNAL TABLE tmp_showcrt1 (key string, newvalue boolean COMMENT 'a new value') +COMMENT 'temporary table' +PARTITIONED BY (value bigint COMMENT 'some value'); +SHOW CREATE TABLE tmp_showcrt1; +DROP TABLE tmp_showcrt1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_serde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_serde.q new file mode 100644 index 0000000000000..a3eb5a8f7d246 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_serde.q @@ -0,0 +1,19 @@ +-- Test SHOW CREATE TABLE on a table with serde. + +-- without a storage handler +CREATE TABLE tmp_showcrt1 (key int, value string, newvalue bigint) +COMMENT 'temporary table' +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'; +SHOW CREATE TABLE tmp_showcrt1; +DROP TABLE tmp_showcrt1; + +-- with a storage handler and serde properties +CREATE EXTERNAL TABLE tmp_showcrt1 (key string, value boolean) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED BY 'org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler' +WITH SERDEPROPERTIES ('field.delim'=',', 'serialization.format'='$'); +SHOW CREATE TABLE tmp_showcrt1; +DROP TABLE tmp_showcrt1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_view.q new file mode 100644 index 0000000000000..a378456494ab4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_create_table_view.q @@ -0,0 +1,6 @@ +-- Test SHOW CREATE TABLE on a view name. + +CREATE VIEW tmp_copy_src AS SELECT * FROM src; +SHOW CREATE TABLE tmp_copy_src; +DROP VIEW tmp_copy_src; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_describe_func_quotes.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_describe_func_quotes.q new file mode 100644 index 0000000000000..de1451d633834 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_describe_func_quotes.q @@ -0,0 +1,7 @@ +SHOW FUNCTIONS 'concat'; + +SHOW FUNCTIONS concat; + +DESCRIBE FUNCTION 'concat'; + +DESCRIBE FUNCTION concat; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_functions.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_functions.q new file mode 100644 index 0000000000000..c09f50a10c0d2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_functions.q @@ -0,0 +1,11 @@ +SHOW FUNCTIONS; + +SHOW FUNCTIONS '^c.*'; + +SHOW FUNCTIONS '.*e$'; + +SHOW FUNCTIONS 'log.*'; + +SHOW FUNCTIONS '.*date.*'; + +SHOW FUNCTIONS '***'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_indexes_edge_cases.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_indexes_edge_cases.q new file mode 100644 index 0000000000000..5fcdf97e2db47 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_indexes_edge_cases.q @@ -0,0 +1,27 @@ +DROP TABLE show_idx_empty; +DROP TABLE show_idx_full; + +CREATE TABLE show_idx_empty(KEY STRING, VALUE STRING); +CREATE TABLE show_idx_full(KEY STRING, VALUE1 STRING, VALUE2 STRING); + +CREATE INDEX idx_1 ON TABLE show_idx_full(KEY) AS "COMPACT" WITH DEFERRED REBUILD; +CREATE INDEX idx_2 ON TABLE show_idx_full(VALUE1) AS "COMPACT" WITH DEFERRED REBUILD; + +CREATE INDEX idx_comment ON TABLE show_idx_full(VALUE2) AS "COMPACT" WITH DEFERRED REBUILD COMMENT "index comment"; +CREATE INDEX idx_compound ON TABLE show_idx_full(KEY, VALUE1) AS "COMPACT" WITH DEFERRED REBUILD; + +ALTER INDEX idx_1 ON show_idx_full REBUILD; +ALTER INDEX idx_2 ON show_idx_full REBUILD; +ALTER INDEX idx_comment ON show_idx_full REBUILD; +ALTER INDEX idx_compound ON show_idx_full REBUILD; + +EXPLAIN SHOW INDEXES ON show_idx_full; +SHOW INDEXES ON show_idx_full; + +EXPLAIN SHOW INDEXES ON show_idx_empty; +SHOW INDEXES ON show_idx_empty; + +DROP INDEX idx_1 on show_idx_full; +DROP INDEX idx_2 on show_idx_full; +DROP TABLE show_idx_empty; +DROP TABLE show_idx_full; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_indexes_syntax.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_indexes_syntax.q new file mode 100644 index 0000000000000..ab588937e179b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_indexes_syntax.q @@ -0,0 +1,23 @@ +DROP TABLE show_idx_t1; + +CREATE TABLE show_idx_t1(KEY STRING, VALUE STRING); + +CREATE INDEX idx_t1 ON TABLE show_idx_t1(KEY) AS "COMPACT" WITH DEFERRED REBUILD; +ALTER INDEX idx_t1 ON show_idx_t1 REBUILD; + +EXPLAIN +SHOW INDEX ON show_idx_t1; + +SHOW INDEX ON show_idx_t1; + +EXPLAIN +SHOW INDEXES ON show_idx_t1; + +SHOW INDEXES ON show_idx_t1; + +EXPLAIN +SHOW FORMATTED INDEXES ON show_idx_t1; + +SHOW FORMATTED INDEXES ON show_idx_t1; + +DROP TABLE show_idx_t1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_partitions.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_partitions.q new file mode 100644 index 0000000000000..7fa7b828bd72e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_partitions.q @@ -0,0 +1,4 @@ +SHOW PARTITIONS srcpart; +SHOW PARTITIONS srcpart PARTITION(hr='11'); +SHOW PARTITIONS srcpart PARTITION(ds='2008-04-08'); +SHOW PARTITIONS srcpart PARTITION(ds='2008-04-08', hr='12'); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tables.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tables.q new file mode 100644 index 0000000000000..f33325dbb9e41 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tables.q @@ -0,0 +1,35 @@ +CREATE TABLE shtb_test1(KEY STRING, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE; +CREATE TABLE shtb_test2(KEY STRING, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE; + +EXPLAIN +SHOW TABLES 'shtb_*'; + +SHOW TABLES 'shtb_*'; + +EXPLAIN +SHOW TABLES LIKE 'shtb_test1|shtb_test2'; + +SHOW TABLES LIKE 'shtb_test1|shtb_test2'; + +-- SHOW TABLES FROM/IN database +CREATE DATABASE test_db; +USE test_db; +CREATE TABLE foo(a INT); +CREATE TABLE bar(a INT); +CREATE TABLE baz(a INT); + +-- SHOW TABLES basic syntax tests +USE default; +SHOW TABLES FROM test_db; +SHOW TABLES FROM default; +SHOW TABLES IN test_db; +SHOW TABLES IN default; +SHOW TABLES IN test_db "test*"; +SHOW TABLES IN test_db LIKE "nomatch"; + +-- SHOW TABLES from a database with a name that requires escaping +CREATE DATABASE `database`; +USE `database`; +CREATE TABLE foo(a INT); +USE default; +SHOW TABLES FROM `database` LIKE "foo"; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tablestatus.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tablestatus.q new file mode 100644 index 0000000000000..9184d6da897c0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tablestatus.q @@ -0,0 +1,20 @@ +EXPLAIN +SHOW TABLE EXTENDED IN default LIKE `src`; + +SHOW TABLE EXTENDED IN default LIKE `src`; + +SHOW TABLE EXTENDED from default LIKE `src`; + +SHOW TABLE EXTENDED LIKE `src`; + +SHOW TABLE EXTENDED LIKE `src.?`; + +SHOW TABLE EXTENDED from default LIKE `src.?`; + +SHOW TABLE EXTENDED LIKE `^s.*`; + +SHOW TABLE EXTENDED from default LIKE `^s.*`; + +SHOW TABLE EXTENDED LIKE `srcpart` PARTITION(ds='2008-04-08', hr=11); + +SHOW TABLE EXTENDED from default LIKE src; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tblproperties.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tblproperties.q new file mode 100644 index 0000000000000..c755108de22f1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/show_tblproperties.q @@ -0,0 +1,11 @@ + +create table tmpfoo (a String); +show tblproperties tmpfoo("bar"); + +alter table tmpfoo set tblproperties ("bar" = "bar value"); +alter table tmpfoo set tblproperties ("tmp" = "true"); + +show tblproperties tmpfoo; +show tblproperties tmpfoo("bar"); + +drop table tmpfoo; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/showparts.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/showparts.q new file mode 100644 index 0000000000000..dbee3efc24f7f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/showparts.q @@ -0,0 +1,4 @@ +EXPLAIN +SHOW PARTITIONS srcpart; + +SHOW PARTITIONS srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin.q new file mode 100644 index 0000000000000..ad917beeef9ce --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin.q @@ -0,0 +1,137 @@ +set hive.optimize.skewjoin = true; +set hive.skewjoin.key = 2; + + + + + + + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T4(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE dest_j1(key INT, value STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T4; + + +EXPLAIN +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value; + +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value; + +SELECT sum(hash(key)), sum(hash(value)) FROM dest_j1; + + +EXPLAIN +SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key; + +SELECT /*+ STREAMTABLE(a) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key; + +EXPLAIN +SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key; + +SELECT /*+ STREAMTABLE(a,c) */ * +FROM T1 a JOIN T2 b ON a.key = b.key + JOIN T3 c ON b.key = c.key + JOIN T4 d ON c.key = d.key; + + +EXPLAIN FROM T1 a JOIN src c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)); +FROM T1 a JOIN src c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)); + +EXPLAIN FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +SELECT sum(hash(Y.key)), sum(hash(Y.value)); + +FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key) +SELECT sum(hash(Y.key)), sum(hash(Y.value)); + + +EXPLAIN FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key and substring(x.value, 5)=substring(y.value, 5)+1) +SELECT sum(hash(Y.key)), sum(hash(Y.value)); + +FROM +(SELECT src.* FROM src) x +JOIN +(SELECT src.* FROM src) Y +ON (x.key = Y.key and substring(x.value, 5)=substring(y.value, 5)+1) +SELECT sum(hash(Y.key)), sum(hash(Y.value)); + + +EXPLAIN +SELECT sum(hash(src1.c1)), sum(hash(src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80; + +SELECT sum(hash(src1.c1)), sum(hash(src2.c4)) +FROM +(SELECT src.key as c1, src.value as c2 from src) src1 +JOIN +(SELECT src.key as c3, src.value as c4 from src) src2 +ON src1.c1 = src2.c3 AND src1.c1 < 100 +JOIN +(SELECT src.key as c5, src.value as c6 from src) src3 +ON src1.c1 = src3.c5 AND src3.c5 < 80; + +EXPLAIN +SELECT /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) FROM T1 k LEFT OUTER JOIN T1 v ON k.key+1=v.key; +SELECT /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) FROM T1 k LEFT OUTER JOIN T1 v ON k.key+1=v.key; + +select /*+ mapjoin(k)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.val; + +select /*+ mapjoin(k)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.key; + +select sum(hash(k.key)), sum(hash(v.val)) from T1 k join T1 v on k.key=v.key; + +select count(1) from T1 a join T1 b on a.key = b.key; + +FROM T1 a LEFT OUTER JOIN T2 c ON c.key+1=a.key SELECT sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)); + +FROM T1 a RIGHT OUTER JOIN T2 c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)); + +FROM T1 a FULL OUTER JOIN T2 c ON c.key+1=a.key SELECT /*+ STREAMTABLE(a) */ sum(hash(a.key)), sum(hash(a.val)), sum(hash(c.key)); + +SELECT sum(hash(src1.key)), sum(hash(src1.val)), sum(hash(src2.key)) FROM T1 src1 LEFT OUTER JOIN T2 src2 ON src1.key+1 = src2.key RIGHT OUTER JOIN T2 src3 ON src2.key = src3.key; + +SELECT sum(hash(src1.key)), sum(hash(src1.val)), sum(hash(src2.key)) FROM T1 src1 JOIN T2 src2 ON src1.key+1 = src2.key JOIN T2 src3 ON src2.key = src3.key; + +select /*+ mapjoin(v)*/ sum(hash(k.key)), sum(hash(v.val)) from T1 k left outer join T1 v on k.key+1=v.key; + + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin_union_remove_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin_union_remove_1.q new file mode 100644 index 0000000000000..03eab4cd6d54e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin_union_remove_1.q @@ -0,0 +1,68 @@ +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; +set hive.mapred.supports.subdirectories=true; + +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink and skewjoin optimization +-- Union of 2 map-reduce subqueries is performed for the skew join +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output, it might be easier to run the test +-- only on hadoop 23 + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- a simple join query with skew on both the tables on the join key + +EXPLAIN +SELECT * FROM T1 a JOIN T2 b ON a.key = b.key; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +SELECT * FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +-- test outer joins also + +EXPLAIN +SELECT a.*, b.* FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +create table DEST1(key1 STRING, val1 STRING, key2 STRING, val2 STRING); + +EXPLAIN +INSERT OVERWRITE TABLE DEST1 +SELECT * FROM T1 a JOIN T2 b ON a.key = b.key; + +INSERT OVERWRITE TABLE DEST1 +SELECT * FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT * FROM DEST1 +ORDER BY key1, key2, val1, val2; + +EXPLAIN +INSERT OVERWRITE TABLE DEST1 +SELECT * FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; + +INSERT OVERWRITE TABLE DEST1 +SELECT * FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; + +SELECT * FROM DEST1 +ORDER BY key1, key2, val1, val2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin_union_remove_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin_union_remove_2.q new file mode 100644 index 0000000000000..9cb919531f7c5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoin_union_remove_2.q @@ -0,0 +1,40 @@ +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; +set hive.mapred.supports.subdirectories=true; + +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; + +-- This is to test the union->selectstar->filesink and skewjoin optimization +-- Union of 3 map-reduce subqueries is performed for the skew join +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table, it might be easier +-- to run the test only on hadoop 23 + +EXPLAIN +SELECT a.*, b.*, c.* FROM T1 a JOIN T2 b ON a.key = b.key JOIN T3 c on a.key = c.key; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +SELECT a.*, b.*, c.* FROM T1 a JOIN T2 b ON a.key = b.key JOIN T3 c on a.key = c.key +ORDER BY a.key, b.key, c.key, a.val, b.val, c.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt1.q new file mode 100644 index 0000000000000..af446bb65c08e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt1.q @@ -0,0 +1,42 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- a simple join query with skew on both the tables on the join key +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +-- test outer joins also + +EXPLAIN +SELECT a.*, b.* FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +-- an aggregation at the end should not change anything + +EXPLAIN +SELECT count(1) FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT count(1) FROM T1 a JOIN T2 b ON a.key = b.key; + +EXPLAIN +SELECT count(1) FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; + +SELECT count(1) FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt10.q new file mode 100644 index 0000000000000..199f3201afb77 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt10.q @@ -0,0 +1,20 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, value STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +drop table array_valued_T1; +create table array_valued_T1 (key string, value array) SKEWED BY (key) ON ((8)); +insert overwrite table array_valued_T1 select key, array(value) from T1; + +-- This test is to verify the skew join compile optimization when the join is followed by a lateral view +-- adding a order by at the end to make the results deterministic + +explain +select * from (select a.key as key, b.value as array_val from T1 a join array_valued_T1 b on a.key=b.key) i lateral view explode (array_val) c as val; + +select * from (select a.key as key, b.value as array_val from T1 a join array_valued_T1 b on a.key=b.key) i lateral view explode (array_val) c as val +ORDER BY key, val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt11.q new file mode 100644 index 0000000000000..ef61fb22f17a1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt11.q @@ -0,0 +1,33 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- This test is to verify the skew join compile optimization when the join is followed +-- by a union. Both sides of a union consist of a join, which should have used +-- skew join compile time optimization. +-- adding an order by at the end to make the results deterministic + +EXPLAIN +select * from +( + select a.key, a.val as val1, b.val as val2 from T1 a join T2 b on a.key = b.key + union all + select a.key, a.val as val1, b.val as val2 from T1 a join T2 b on a.key = b.key +) subq1; + +select * from +( + select a.key, a.val as val1, b.val as val2 from T1 a join T2 b on a.key = b.key + union all + select a.key, a.val as val1, b.val as val2 from T1 a join T2 b on a.key = b.key +) subq1 +ORDER BY key, val1, val2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt12.q new file mode 100644 index 0000000000000..b5d9d9bc46874 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt12.q @@ -0,0 +1,23 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key, val) ON ((2, 12), (8, 18)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key, val) ON ((3, 13), (8, 18)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- Both the join tables are skewed by 2 keys, and one of the skewed values +-- is common to both the tables. The join key matches the skewed key set. +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt13.q new file mode 100644 index 0000000000000..0634c4f4ff6db --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt13.q @@ -0,0 +1,36 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +CREATE TABLE T3(key STRING, val STRING) +SKEWED BY (val) ON ((12)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; + +-- This test is for skewed join compile time optimization for more than 2 tables. +-- The join key for table 3 is different from the join key used for joining +-- tables 1 and 2. Table 3 is skewed, but since one of the join sources for table +-- 3 consist of a sub-query which contains a join, the compile time skew join +-- optimization is not performed +-- adding a order by at the end to make the results deterministic + +EXPLAIN +select * +from +T1 a join T2 b on a.key = b.key +join T3 c on a.val = c.val; + +select * +from +T1 a join T2 b on a.key = b.key +join T3 c on a.val = c.val +order by a.key, b.key, c.key, a.val, b.val, c.val; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt14.q new file mode 100644 index 0000000000000..0f031dd4fc0ae --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt14.q @@ -0,0 +1,38 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +CREATE TABLE T3(key STRING, val STRING) +SKEWED BY (val) ON ((12)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; + +-- This test is for skewed join compile time optimization for more than 2 tables. +-- The join key for table 3 is different from the join key used for joining +-- tables 1 and 2. Tables 1 and 3 are skewed. Since one of the join sources for table +-- 3 consist of a sub-query which contains a join, the compile time skew join +-- optimization is not enabled for table 3, but it is used for the first join between +-- tables 1 and 2 +-- adding a order by at the end to make the results deterministic + +EXPLAIN +select * +from +T1 a join T2 b on a.key = b.key +join T3 c on a.val = c.val; + +select * +from +T1 a join T2 b on a.key = b.key +join T3 c on a.val = c.val +order by a.key, b.key, a.val, b.val; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt15.q new file mode 100644 index 0000000000000..d5474a455e9dd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt15.q @@ -0,0 +1,51 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE tmpT1(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE tmpT1; + +-- testing skew on other data types - int +CREATE TABLE T1(key INT, val STRING) SKEWED BY (key) ON ((2)); +INSERT OVERWRITE TABLE T1 SELECT key, val FROM tmpT1; + +CREATE TABLE tmpT2(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE tmpT2; + +CREATE TABLE T2(key INT, val STRING) SKEWED BY (key) ON ((3)); + +INSERT OVERWRITE TABLE T2 SELECT key, val FROM tmpT2; + +-- The skewed key is a integer column. +-- Otherwise this test is similar to skewjoinopt1.q +-- Both the joined tables are skewed, and the joined column +-- is an integer +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +-- test outer joins also + +EXPLAIN +SELECT a.*, b.* FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +-- an aggregation at the end should not change anything + +EXPLAIN +SELECT count(1) FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT count(1) FROM T1 a JOIN T2 b ON a.key = b.key; + +EXPLAIN +SELECT count(1) FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; + +SELECT count(1) FROM T1 a RIGHT OUTER JOIN T2 b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt16.q new file mode 100644 index 0000000000000..46b4f6d6e600d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt16.q @@ -0,0 +1,23 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key, val) ON ((2, 12)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- One of the tables is skewed by 2 columns, and the other table is +-- skewed by one column. Ths join is performed on the both the columns +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt17.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt17.q new file mode 100644 index 0000000000000..0592ca8c3e498 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt17.q @@ -0,0 +1,49 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key, val) ON ((2, 12)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- One of the tables is skewed by 2 columns, and the other table is +-- skewed by one column. Ths join is performed on the first skewed column +-- The skewed value for the jon key is common to both the tables. +-- In this case, the skewed join value is not repeated in the filter. +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +DROP TABLE T1; +DROP TABLE T2; + + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key, val) ON ((2, 12)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- One of the tables is skewed by 2 columns, and the other table is +-- skewed by one column. Ths join is performed on the both the columns +-- In this case, the skewed join value is repeated in the filter. + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val +ORDER BY a.key, b.key, a.val, b.val; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt18.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt18.q new file mode 100644 index 0000000000000..433fea336dfd4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt18.q @@ -0,0 +1,30 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE tmpT1(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE tmpT1; + +-- testing skew on other data types - int +CREATE TABLE T1(key INT, val STRING) SKEWED BY (key) ON ((2)); +INSERT OVERWRITE TABLE T1 SELECT key, val FROM tmpT1; + +-- Tke skewed column is same in both the tables, however it is +-- INT in one of the tables, and STRING in the other table + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- Once HIVE-3445 is fixed, the compile time skew join optimization would be +-- applicable here. Till the above jira is fixed, it would be performed as a +-- regular join +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt19.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt19.q new file mode 100644 index 0000000000000..0b11ebe4cb696 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt19.q @@ -0,0 +1,24 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (key) INTO 4 BUCKETS +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- add a test where the skewed key is also the bucketized key +-- it should not matter, and the compile time skewed join +-- optimization is performed +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt2.q new file mode 100644 index 0000000000000..34fcdbfac4cb7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt2.q @@ -0,0 +1,45 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2), (7)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- a simple query with skew on both the tables on the join key +-- multiple skew values are present for the skewed keys +-- but the skewed values do not overlap. +-- The join values are a superset of the skewed keys. +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val +ORDER BY a.key, b.key, a.val, b.val; + +-- test outer joins also + +EXPLAIN +SELECT a.*, b.* FROM T1 a LEFT OUTER JOIN T2 b ON a.key = b.key and a.val = b.val; + +SELECT a.*, b.* FROM T1 a LEFT OUTER JOIN T2 b ON a.key = b.key and a.val = b.val +ORDER BY a.key, b.key, a.val, b.val; + +-- a group by at the end should not change anything + +EXPLAIN +SELECT a.key, count(1) FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val group by a.key; + +SELECT a.key, count(1) FROM T1 a JOIN T2 b ON a.key = b.key and a.val = b.val group by a.key; + +EXPLAIN +SELECT a.key, count(1) FROM T1 a LEFT OUTER JOIN T2 b ON a.key = b.key and a.val = b.val group by a.key; + +SELECT a.key, count(1) FROM T1 a LEFT OUTER JOIN T2 b ON a.key = b.key and a.val = b.val group by a.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt20.q new file mode 100644 index 0000000000000..f217052881e24 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt20.q @@ -0,0 +1,24 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- add a test where the skewed key is also the bucketized/sorted key +-- it should not matter, and the compile time skewed join +-- optimization is performed +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt3.q new file mode 100644 index 0000000000000..f6002ad49802a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt3.q @@ -0,0 +1,32 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- a simple query with skew on both the tables. One of the skewed +-- value is common to both the tables. The skewed value should not be +-- repeated in the filter. +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +-- test outer joins also + +EXPLAIN +SELECT a.*, b.* FROM T1 a FULL OUTER JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a FULL OUTER JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt4.q new file mode 100644 index 0000000000000..ca83c446085fa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt4.q @@ -0,0 +1,29 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- only of the tables of the join (the left table of the join) is skewed +-- the skewed filter would still be applied to both the tables +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; + +-- the order of the join should not matter, just confirming +EXPLAIN +SELECT a.*, b.* FROM T2 a JOIN T1 b ON a.key = b.key; + +SELECT a.*, b.* FROM T2 a JOIN T1 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt5.q new file mode 100644 index 0000000000000..3d7884c5e3dcb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt5.q @@ -0,0 +1,23 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key, val) ON ((2, 12)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- One of the tables is skewed by 2 columns, and the other table is +-- skewed by one column. Ths join is performed on the first skewed column +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt6.q new file mode 100644 index 0000000000000..36cf8ceeaebb4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt6.q @@ -0,0 +1,24 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key, val) ON ((2, 12), (8, 18)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key, val) ON ((3, 13), (8, 18)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- Both the join tables are skewed by 2 keys, and one of the skewed values +-- is common to both the tables. The join key is a subset of the skewed key set: +-- it only contains the first skewed key for both the tables +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key; + +SELECT a.*, b.* FROM T1 a JOIN T2 b ON a.key = b.key +ORDER BY a.key, b.key, a.val, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt7.q new file mode 100644 index 0000000000000..cf84f67b6a0fc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt7.q @@ -0,0 +1,28 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; + +-- This test is for validating skewed join compile time optimization for more than +-- 2 tables. The join key is the same, and so a 3-way join would be performed. +-- 2 of the 3 tables are skewed on the join key +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.*, c.* FROM T1 a JOIN T2 b ON a.key = b.key JOIN T3 c on a.key = c.key; + +SELECT a.*, b.*, c.* FROM T1 a JOIN T2 b ON a.key = b.key JOIN T3 c on a.key = c.key +ORDER BY a.key, b.key, c.key, a.val, b.val, c.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt8.q new file mode 100644 index 0000000000000..d0ac845f86581 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt8.q @@ -0,0 +1,27 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) +SKEWED BY (key) ON ((3), (8)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; + +-- This test is for validating skewed join compile time optimization for more than +-- 2 tables. The join key is the same, and so a 3-way join would be performed. +-- 1 of the 3 tables are skewed on the join key +-- adding a order by at the end to make the results deterministic + +EXPLAIN +SELECT a.*, b.*, c.* FROM T1 a JOIN T2 b ON a.key = b.key JOIN T3 c on a.key = c.key; + +SELECT a.*, b.*, c.* FROM T1 a JOIN T2 b ON a.key = b.key JOIN T3 c on a.key = c.key +ORDER BY a.key, b.key, c.key, a.val, b.val, c.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt9.q new file mode 100644 index 0000000000000..04834033a11e6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/skewjoinopt9.q @@ -0,0 +1,49 @@ +set hive.mapred.supports.subdirectories=true; +set hive.internal.ddl.list.bucketing.enable=true; +set hive.optimize.skewjoin.compiletime = true; + +CREATE TABLE T1(key STRING, val STRING) +SKEWED BY (key) ON ((2)) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; + +-- no skew join compile time optimization would be performed if one of the +-- join sources is a sub-query consisting of a union all +-- adding a order by at the end to make the results deterministic +EXPLAIN +select * from +( +select key, val from T1 + union all +select key, val from T1 +) subq1 +join T2 b on subq1.key = b.key; + +select * from +( +select key, val from T1 + union all +select key, val from T1 +) subq1 +join T2 b on subq1.key = b.key +ORDER BY subq1.key, b.key, subq1.val, b.val; + +-- no skew join compile time optimization would be performed if one of the +-- join sources is a sub-query consisting of a group by +EXPLAIN +select * from +( +select key, count(1) as cnt from T1 group by key +) subq1 +join T2 b on subq1.key = b.key; + +select * from +( +select key, count(1) as cnt from T1 group by key +) subq1 +join T2 b on subq1.key = b.key +ORDER BY subq1.key, b.key, subq1.cnt, b.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin9.q new file mode 100644 index 0000000000000..b9590227576c9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin9.q @@ -0,0 +1,57 @@ +create table hive_test_smb_bucket1 (key int, value string) partitioned by (ds string) clustered by (key) sorted by (key) into 2 buckets; +create table hive_test_smb_bucket2 (key int, value string) partitioned by (ds string) clustered by (key) sorted by (key) into 2 buckets; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- empty partitions (HIVE-3205) +explain extended +SELECT /* + MAPJOIN(b) */ b.key as k1, b.value, b.ds, a.key as k2 +FROM hive_test_smb_bucket1 a JOIN +hive_test_smb_bucket2 b +ON a.key = b.key WHERE a.ds = '2010-10-15' and b.ds='2010-10-15' and b.key IS NOT NULL; + +SELECT /* + MAPJOIN(b) */ b.key as k1, b.value, b.ds, a.key as k2 +FROM hive_test_smb_bucket1 a JOIN +hive_test_smb_bucket2 b +ON a.key = b.key WHERE a.ds = '2010-10-15' and b.ds='2010-10-15' and b.key IS NOT NULL; + +explain extended +SELECT /* + MAPJOIN(a) */ b.key as k1, b.value, b.ds, a.key as k2 +FROM hive_test_smb_bucket1 a JOIN +hive_test_smb_bucket2 b +ON a.key = b.key WHERE a.ds = '2010-10-15' and b.ds='2010-10-15' and b.key IS NOT NULL; + +SELECT /* + MAPJOIN(a) */ b.key as k1, b.value, b.ds, a.key as k2 +FROM hive_test_smb_bucket1 a JOIN +hive_test_smb_bucket2 b +ON a.key = b.key WHERE a.ds = '2010-10-15' and b.ds='2010-10-15' and b.key IS NOT NULL; + +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.exec.reducers.max = 1; + +insert overwrite table hive_test_smb_bucket1 partition (ds='2010-10-15') select key, value from src; +insert overwrite table hive_test_smb_bucket2 partition (ds='2010-10-15') select key, value from src; + +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +explain +create table smb_mapjoin9_results as +SELECT /* + MAPJOIN(b) */ b.key as k1, b.value, b.ds, a.key as k2 +FROM hive_test_smb_bucket1 a JOIN +hive_test_smb_bucket2 b +ON a.key = b.key WHERE a.ds = '2010-10-15' and b.ds='2010-10-15' and b.key IS NOT NULL; + + +create table smb_mapjoin9_results as +SELECT /* + MAPJOIN(b) */ b.key as k1, b.value, b.ds, a.key as k2 +FROM hive_test_smb_bucket1 a JOIN +hive_test_smb_bucket2 b +ON a.key = b.key WHERE a.ds = '2010-10-15' and b.ds='2010-10-15' and b.key IS NOT NULL; + +drop table smb_mapjoin9_results; +drop table hive_test_smb_bucket1; +drop table hive_test_smb_bucket2; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_1.q new file mode 100644 index 0000000000000..359513e424dba --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_1.q @@ -0,0 +1,53 @@ + + + + +create table smb_bucket_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; + +load data local inpath '../data/files/smbbucket_1.rc' overwrite into table smb_bucket_1; +load data local inpath '../data/files/smbbucket_2.rc' overwrite into table smb_bucket_2; +load data local inpath '../data/files/smbbucket_3.rc' overwrite into table smb_bucket_3; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_1 a join smb_bucket_2 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_1 a join smb_bucket_2 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key; + + +explain +select /*+mapjoin(b)*/ * from smb_bucket_1 a join smb_bucket_2 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_1 a join smb_bucket_2 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_10.q new file mode 100644 index 0000000000000..a79ebf62d0693 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_10.q @@ -0,0 +1,26 @@ + +create table tmp_smb_bucket_10(userid int, pageid int, postid int, type string) partitioned by (ds string) CLUSTERED BY (userid) SORTED BY (pageid, postid, type, userid) INTO 2 BUCKETS STORED AS RCFILE; + +alter table tmp_smb_bucket_10 add partition (ds = '1'); +alter table tmp_smb_bucket_10 add partition (ds = '2'); + +-- add dummy files to make sure that the number of files in each partition is same as number of buckets + +load data local inpath '../data/files/smbbucket_1.rc' INTO TABLE tmp_smb_bucket_10 partition(ds='1'); +load data local inpath '../data/files/smbbucket_2.rc' INTO TABLE tmp_smb_bucket_10 partition(ds='1'); + +load data local inpath '../data/files/smbbucket_1.rc' INTO TABLE tmp_smb_bucket_10 partition(ds='2'); +load data local inpath '../data/files/smbbucket_2.rc' INTO TABLE tmp_smb_bucket_10 partition(ds='2'); + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +explain +select /*+mapjoin(a)*/ * from tmp_smb_bucket_10 a join tmp_smb_bucket_10 b +on (a.ds = '1' and b.ds = '2' and + a.userid = b.userid and + a.pageid = b.pageid and + a.postid = b.postid and + a.type = b.type); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_11.q new file mode 100644 index 0000000000000..48ba8e80cccf6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_11.q @@ -0,0 +1,34 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- This test verifies that the output of a sort merge join on 2 partitions (one on each side of the join) is bucketed + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) CLUSTERED BY (key) SORTED BY (key) INTO 16 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) CLUSTERED BY (key) SORTED BY (key) INTO 16 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT * +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') SELECT *; + +set hive.enforce.bucketing=false; +set hive.enforce.sorting=false; + +-- Create a bucketed table +CREATE TABLE test_table3 (key INT, value STRING) PARTITIONED BY (ds STRING) CLUSTERED BY (key) INTO 16 BUCKETS; + +-- Insert data into the bucketed table by joining the two bucketed and sorted tables, bucketing is not enforced +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') SELECT /*+ MAPJOIN(b) */ a.key, b.value FROM test_table1 a JOIN test_table2 b ON a.key = b.key AND a.ds = '1' AND b.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') SELECT /*+ MAPJOIN(b) */ a.key, b.value FROM test_table1 a JOIN test_table2 b ON a.key = b.key AND a.ds = '1' AND b.ds = '1'; + +-- Join data from a sampled bucket to verify the data is bucketed +SELECT COUNT(*) FROM test_table3 TABLESAMPLE(BUCKET 2 OUT OF 16) a JOIN test_table1 TABLESAMPLE(BUCKET 2 OUT OF 16) b ON a.key = b.key AND a.ds = '1' AND b.ds='1'; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_12.q new file mode 100644 index 0000000000000..9f9748c41f3ab --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_12.q @@ -0,0 +1,49 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- This test verifies that the output of a sort merge join on 1 big partition with multiple small partitions is bucketed and sorted + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) CLUSTERED BY (key) SORTED BY (key) INTO 16 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) CLUSTERED BY (key) SORTED BY (key) INTO 16 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT * +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') SELECT * +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '2') SELECT * +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '3') SELECT *; + +set hive.enforce.bucketing=false; +set hive.enforce.sorting=false; + +-- Create a bucketed table +CREATE TABLE test_table3 (key INT, value STRING) PARTITIONED BY (ds STRING) CLUSTERED BY (key) SORTED BY (key) INTO 16 BUCKETS; + +-- Insert data into the bucketed table by joining the two bucketed and sorted tables, bucketing is not enforced +EXPLAIN EXTENDED +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') SELECT /*+ MAPJOIN(b) */ a.key, b.value FROM test_table1 a JOIN test_table2 b ON a.key = b.key AND a.ds = '1' AND b.ds >= '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') SELECT /*+ MAPJOIN(b) */ a.key, b.value FROM test_table1 a JOIN test_table2 b ON a.key = b.key AND a.ds = '1' AND b.ds >= '1'; + +-- Join data from a sampled bucket to verify the data is bucketed +SELECT COUNT(*) FROM test_table3 TABLESAMPLE(BUCKET 2 OUT OF 16) a JOIN test_table1 TABLESAMPLE(BUCKET 2 OUT OF 16) b ON a.key = b.key AND a.ds = '1' AND b.ds='1'; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- Join data from the sampled buckets of 2 tables to verify the data is bucketed and sorted +explain extended +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '2') +SELECT /*+mapjoin(b)*/ a.key, concat(a.value, b.value) FROM test_table3 a JOIN test_table1 b ON a.key = b.key AND a.ds = '1' AND b.ds='1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '2') +SELECT /*+mapjoin(b)*/ a.key, concat(a.value, b.value) FROM test_table3 a JOIN test_table1 b ON a.key = b.key AND a.ds = '1' AND b.ds='1'; + +SELECT count(*) from test_table3 tablesample (bucket 2 out of 16) a where ds = '2'; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_13.q new file mode 100644 index 0000000000000..056bccd68999b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_13.q @@ -0,0 +1,36 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- This test verifies that the sort merge join optimizer works when the tables are joined on columns with different names + +-- Create bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key ASC) INTO 16 BUCKETS; +CREATE TABLE test_table2 (value INT, key STRING) CLUSTERED BY (value) SORTED BY (value ASC) INTO 16 BUCKETS; +CREATE TABLE test_table3 (key INT, value STRING) CLUSTERED BY (key, value) SORTED BY (key ASC, value ASC) INTO 16 BUCKETS; +CREATE TABLE test_table4 (key INT, value STRING) CLUSTERED BY (key, value) SORTED BY (value ASC, key ASC) INTO 16 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 SELECT * +INSERT OVERWRITE TABLE test_table2 SELECT * +INSERT OVERWRITE TABLE test_table3 SELECT * +INSERT OVERWRITE TABLE test_table4 SELECT *; + +-- Join data from 2 tables on their respective sorted columns (one each, with different names) and +-- verify sort merge join is used +EXPLAIN EXTENDED +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key = b.value ORDER BY a.key LIMIT 10; + +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key = b.value ORDER BY a.key LIMIT 10; + +-- Join data from 2 tables on their respective columns (two each, with the same names but sorted +-- with different priorities) and verify sort merge join is not used +EXPLAIN EXTENDED +SELECT /*+mapjoin(b)*/ * FROM test_table3 a JOIN test_table4 b ON a.key = b.value ORDER BY a.key LIMIT 10; + +SELECT /*+mapjoin(b)*/ * FROM test_table3 a JOIN test_table4 b ON a.key = b.value ORDER BY a.key LIMIT 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_14.q new file mode 100644 index 0000000000000..f03f92e469d53 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_14.q @@ -0,0 +1,243 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE tbl1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE tbl2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +insert overwrite table tbl1 +select * from src where key < 10; + +insert overwrite table tbl2 +select * from src where key < 10; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- The mapjoin is being performed as part of sub-query. It should be converted to a sort-merge join +explain +select count(*) from ( + select /*+mapjoin(a)*/ a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1; + +select count(*) from ( + select /*+mapjoin(a)*/ a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1; + +-- The mapjoin is being performed as part of sub-query. It should be converted to a sort-merge join +-- Add a order by at the end to make the results deterministic. +explain +select key, count(*) from +( + select /*+mapjoin(a)*/ a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +group by key +order by key; + +select key, count(*) from +( + select /*+mapjoin(a)*/ a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key +) subq1 +group by key +order by key; + +-- The mapjoin is being performed as part of more than one sub-query. It should be converted to a sort-merge join +explain +select count(*) from +( + select key, count(*) from + ( + select /*+mapjoin(a)*/ a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 + group by key +) subq2; + +select count(*) from +( + select key, count(*) from + ( + select /*+mapjoin(a)*/ a.key as key, a.value as val1, b.value as val2 from tbl1 a join tbl2 b on a.key = b.key + ) subq1 + group by key +) subq2; + +-- The subquery itself is being map-joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join. +explain +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key; + +-- The subquery itself is being map-joined. Since the sub-query only contains selects and filters, it should +-- be converted to a sort-merge join, although there is more than one level of sub-query +explain +select /*+mapjoin(subq2)*/ count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join tbl2 b + on subq2.key = b.key; + +select /*+mapjoin(subq2)*/ count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join tbl2 b + on subq2.key = b.key; + +-- Both the big table and the small table are nested sub-queries i.e more then 1 level of sub-query. +-- The join should be converted to a sort-merge join +explain +select /*+mapjoin(subq2)*/ count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq3 + where key < 6 + ) subq4 + on subq2.key = subq4.key; + +select /*+mapjoin(subq2)*/ count(*) from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 + join + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq3 + where key < 6 + ) subq4 + on subq2.key = subq4.key; + +-- The subquery itself is being map-joined. Since the sub-query only contains selects and filters and the join key +-- is not getting modified, it should be converted to a sort-merge join. Note that the sub-query modifies one +-- item, but that is not part of the join key. +explain +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, concat(a.value, a.value) as value from tbl1 a where key < 8) subq1 + join + (select a.key as key, concat(a.value, a.value) as value from tbl2 a where key < 8) subq2 + on subq1.key = subq2.key; + +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, concat(a.value, a.value) as value from tbl1 a where key < 8) subq1 + join + (select a.key as key, concat(a.value, a.value) as value from tbl2 a where key < 8) subq2 + on subq1.key = subq2.key; + +-- Since the join key is modified by the sub-query, neither sort-merge join not bucketized map-side +-- join should be performed +explain +select /*+mapjoin(subq1)*/ count(*) from + (select a.key +1 as key, concat(a.value, a.value) as value from tbl1 a) subq1 + join + (select a.key +1 as key, concat(a.value, a.value) as value from tbl2 a) subq2 + on subq1.key = subq2.key; + +select /*+mapjoin(subq1)*/ count(*) from + (select a.key +1 as key, concat(a.value, a.value) as value from tbl1 a) subq1 + join + (select a.key +1 as key, concat(a.value, a.value) as value from tbl2 a) subq2 + on subq1.key = subq2.key; + +-- The small table is a sub-query and the big table is not. +-- It should be converted to a sort-merge join. +explain +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +select /*+mapjoin(subq1)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +-- The big table is a sub-query and the small table is not. +-- It should be converted to a sort-merge join. +explain +select /*+mapjoin(a)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +select /*+mapjoin(a)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join tbl2 a on subq1.key = a.key; + +-- There are more than 2 inputs to the join, all of them being sub-queries. +-- It should be converted to to a sort-merge join +explain +select /*+mapjoin(subq1, subq2)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on (subq1.key = subq2.key) + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq3 + on (subq1.key = subq3.key); + +select /*+mapjoin(subq1, subq2)*/ count(*) from + (select a.key as key, a.value as value from tbl1 a where key < 6) subq1 + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq2 + on subq1.key = subq2.key + join + (select a.key as key, a.value as value from tbl2 a where key < 6) subq3 + on (subq1.key = subq3.key); + +-- The mapjoin is being performed on a nested sub-query, and an aggregation is performed after that. +-- The join should be converted to a sort-merge join +explain +select count(*) from ( + select /*+mapjoin(subq2)*/ subq2.key as key, subq2.value as value1, b.value as value2 from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 +join tbl2 b +on subq2.key = b.key) a; + +select count(*) from ( + select /*+mapjoin(subq2)*/ subq2.key as key, subq2.value as value1, b.value as value2 from + ( + select * from + ( + select a.key as key, a.value as value from tbl1 a where key < 8 + ) subq1 + where key < 6 + ) subq2 +join tbl2 b +on subq2.key = b.key) a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_15.q new file mode 100644 index 0000000000000..1e77a60670b73 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_15.q @@ -0,0 +1,55 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- This test verifies that the sort merge join optimizer works when the tables are sorted on columns which is a superset +-- of join columns + +-- Create bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key ASC, value ASC) INTO 16 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key ASC, value ASC) INTO 16 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 SELECT * +INSERT OVERWRITE TABLE test_table2 SELECT *; + +-- it should be converted to a sort-merge join, since the first sort column (#join columns = 1) contains the join columns +EXPLAIN EXTENDED +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key = b.key ORDER BY a.key LIMIT 10; +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key = b.key ORDER BY a.key LIMIT 10; + +DROP TABLE test_table1; +DROP TABLE test_table2; + +-- Create bucketed and sorted tables +CREATE TABLE test_table1 (key INT, key2 INT, value STRING) CLUSTERED BY (key) SORTED BY (key ASC, key2 ASC, value ASC) INTO 16 BUCKETS; +CREATE TABLE test_table2 (key INT, key2 INT, value STRING) CLUSTERED BY (key) SORTED BY (key ASC, key2 ASC, value ASC) INTO 16 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 SELECT key, key, value +INSERT OVERWRITE TABLE test_table2 SELECT key, key, value; + +-- it should be converted to a sort-merge join, since the first 2 sort columns (#join columns = 2) contain the join columns +EXPLAIN EXTENDED +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key = b.key and a.key2 = b.key2 ORDER BY a.key LIMIT 10; +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key = b.key and a.key2 = b.key2 ORDER BY a.key LIMIT 10; + +-- it should be converted to a sort-merge join, since the first 2 sort columns (#join columns = 2) contain the join columns +-- even if the order is not the same +EXPLAIN EXTENDED +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key2 = b.key2 and a.key = b.key ORDER BY a.key LIMIT 10; +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key2 = b.key2 and a.key = b.key ORDER BY a.key LIMIT 10; + +-- it should not be converted to a sort-merge join, since the first 2 sort columns (#join columns = 2) do not contain all +-- the join columns +EXPLAIN EXTENDED +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key = b.key and a.value = b.value ORDER BY a.key LIMIT 10; +SELECT /*+mapjoin(b)*/ * FROM test_table1 a JOIN test_table2 b ON a.key = b.key and a.value = b.value ORDER BY a.key LIMIT 10; + +DROP TABLE test_table1; +DROP TABLE test_table2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_16.q new file mode 100644 index 0000000000000..3a3a872427526 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_16.q @@ -0,0 +1,21 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Create bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 SELECT * +INSERT OVERWRITE TABLE test_table2 SELECT *; + +-- Mapjoin followed by a aggregation should be performed in a single MR job +EXPLAIN +SELECT /*+mapjoin(b)*/ count(*) FROM test_table1 a JOIN test_table2 b ON a.key = b.key; +SELECT /*+mapjoin(b)*/ count(*) FROM test_table1 a JOIN test_table2 b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_17.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_17.q new file mode 100644 index 0000000000000..238f7e011b72c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_17.q @@ -0,0 +1,125 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Create bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table3 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table4 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table5 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table6 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table7 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table8 (key INT, value STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +INSERT OVERWRITE TABLE test_table1 +SELECT * FROM src WHERE key < 10; + +INSERT OVERWRITE TABLE test_table2 +SELECT * FROM src WHERE key < 10; + +INSERT OVERWRITE TABLE test_table3 +SELECT * FROM src WHERE key < 10; + +INSERT OVERWRITE TABLE test_table4 +SELECT * FROM src WHERE key < 10; + +INSERT OVERWRITE TABLE test_table5 +SELECT * FROM src WHERE key < 10; + +INSERT OVERWRITE TABLE test_table6 +SELECT * FROM src WHERE key < 10; + +INSERT OVERWRITE TABLE test_table7 +SELECT * FROM src WHERE key < 10; + +INSERT OVERWRITE TABLE test_table8 +SELECT * FROM src WHERE key < 10; + +-- Mapjoin followed by a aggregation should be performed in a single MR job upto 7 tables +EXPLAIN +SELECT /*+ mapjoin(b, c, d, e, f, g) */ count(*) +FROM test_table1 a JOIN test_table2 b ON a.key = b.key +JOIN test_table3 c ON a.key = c.key +JOIN test_table4 d ON a.key = d.key +JOIN test_table5 e ON a.key = e.key +JOIN test_table6 f ON a.key = f.key +JOIN test_table7 g ON a.key = g.key; + +SELECT /*+ mapjoin(b, c, d, e, f, g) */ count(*) +FROM test_table1 a JOIN test_table2 b ON a.key = b.key +JOIN test_table3 c ON a.key = c.key +JOIN test_table4 d ON a.key = d.key +JOIN test_table5 e ON a.key = e.key +JOIN test_table6 f ON a.key = f.key +JOIN test_table7 g ON a.key = g.key; + +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; + +-- It should be automatically converted to a sort-merge join followed by a groupby in +-- a single MR job +EXPLAIN +SELECT count(*) +FROM test_table1 a LEFT OUTER JOIN test_table2 b ON a.key = b.key +LEFT OUTER JOIN test_table3 c ON a.key = c.key +LEFT OUTER JOIN test_table4 d ON a.key = d.key +LEFT OUTER JOIN test_table5 e ON a.key = e.key +LEFT OUTER JOIN test_table6 f ON a.key = f.key +LEFT OUTER JOIN test_table7 g ON a.key = g.key; + +SELECT count(*) +FROM test_table1 a LEFT OUTER JOIN test_table2 b ON a.key = b.key +LEFT OUTER JOIN test_table3 c ON a.key = c.key +LEFT OUTER JOIN test_table4 d ON a.key = d.key +LEFT OUTER JOIN test_table5 e ON a.key = e.key +LEFT OUTER JOIN test_table6 f ON a.key = f.key +LEFT OUTER JOIN test_table7 g ON a.key = g.key; + +EXPLAIN +SELECT count(*) +FROM test_table1 a LEFT OUTER JOIN test_table2 b ON a.key = b.key +LEFT OUTER JOIN test_table3 c ON a.key = c.key +LEFT OUTER JOIN test_table4 d ON a.key = d.key +LEFT OUTER JOIN test_table5 e ON a.key = e.key +LEFT OUTER JOIN test_table6 f ON a.key = f.key +LEFT OUTER JOIN test_table7 g ON a.key = g.key +LEFT OUTER JOIN test_table8 h ON a.key = h.key; + +SELECT count(*) +FROM test_table1 a LEFT OUTER JOIN test_table2 b ON a.key = b.key +LEFT OUTER JOIN test_table3 c ON a.key = c.key +LEFT OUTER JOIN test_table4 d ON a.key = d.key +LEFT OUTER JOIN test_table5 e ON a.key = e.key +LEFT OUTER JOIN test_table6 f ON a.key = f.key +LEFT OUTER JOIN test_table7 g ON a.key = g.key +LEFT OUTER JOIN test_table8 h ON a.key = h.key; + +-- outer join with max 16 aliases +EXPLAIN +SELECT a.* +FROM test_table1 a +LEFT OUTER JOIN test_table2 b ON a.key = b.key +LEFT OUTER JOIN test_table3 c ON a.key = c.key +LEFT OUTER JOIN test_table4 d ON a.key = d.key +LEFT OUTER JOIN test_table5 e ON a.key = e.key +LEFT OUTER JOIN test_table6 f ON a.key = f.key +LEFT OUTER JOIN test_table7 g ON a.key = g.key +LEFT OUTER JOIN test_table8 h ON a.key = h.key +LEFT OUTER JOIN test_table4 i ON a.key = i.key +LEFT OUTER JOIN test_table5 j ON a.key = j.key +LEFT OUTER JOIN test_table6 k ON a.key = k.key +LEFT OUTER JOIN test_table7 l ON a.key = l.key +LEFT OUTER JOIN test_table8 m ON a.key = m.key +LEFT OUTER JOIN test_table7 n ON a.key = n.key +LEFT OUTER JOIN test_table8 o ON a.key = o.key +LEFT OUTER JOIN test_table4 p ON a.key = p.key +LEFT OUTER JOIN test_table5 q ON a.key = q.key +LEFT OUTER JOIN test_table6 r ON a.key = r.key +LEFT OUTER JOIN test_table7 s ON a.key = s.key +LEFT OUTER JOIN test_table8 t ON a.key = t.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_18.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_18.q new file mode 100644 index 0000000000000..6880be340792a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_18.q @@ -0,0 +1,65 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT *; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +select count(*) from test_table1 where ds = '1'; +select count(*) from test_table1 where ds = '1' and hash(key) % 2 = 0; +select count(*) from test_table1 where ds = '1' and hash(key) % 2 = 1; +select count(*) from test_table1 tablesample (bucket 1 out of 2) s where ds = '1'; +select count(*) from test_table1 tablesample (bucket 2 out of 2) s where ds = '1'; + +select count(*) from test_table2 where ds = '1'; +select count(*) from test_table2 where ds = '1' and hash(key) % 2 = 0; +select count(*) from test_table2 where ds = '1' and hash(key) % 2 = 1; +select count(*) from test_table2 tablesample (bucket 1 out of 2) s where ds = '1'; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation, one of the buckets should be empty +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '2') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1' and a.key = 238; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '2') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1' and a.key = 238; + +select count(*) from test_table2 where ds = '2'; +select count(*) from test_table2 where ds = '2' and hash(key) % 2 = 0; +select count(*) from test_table2 where ds = '2' and hash(key) % 2 = 1; +select count(*) from test_table2 tablesample (bucket 1 out of 2) s where ds = '2'; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s where ds = '2'; + +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '3') +SELECT a.key, a.value FROM test_table2 a WHERE a.ds = '2'; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '2') +SELECT a.key, a.value FROM test_table2 a WHERE a.ds = '2'; + +select count(*) from test_table2 where ds = '3'; +select count(*) from test_table2 where ds = '3' and hash(key) % 2 = 0; +select count(*) from test_table2 where ds = '3' and hash(key) % 2 = 1; +select count(*) from test_table2 tablesample (bucket 1 out of 2) s where ds = '3'; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s where ds = '3'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_19.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_19.q new file mode 100644 index 0000000000000..ca48f61f9aaf8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_19.q @@ -0,0 +1,41 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 16 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 16 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT *; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +select count(*) from test_table1 where ds = '1'; +select count(*) from test_table1 where ds = '1' and hash(key) % 16 = 0; +select count(*) from test_table1 where ds = '1' and hash(key) % 16 = 5; +select count(*) from test_table1 where ds = '1' and hash(key) % 16 = 12; +select count(*) from test_table1 tablesample (bucket 1 out of 16) s where ds = '1'; +select count(*) from test_table1 tablesample (bucket 6 out of 16) s where ds = '1'; +select count(*) from test_table1 tablesample (bucket 13 out of 16) s where ds = '1'; + +select count(*) from test_table2 where ds = '1'; +select count(*) from test_table2 where ds = '1' and hash(key) % 16 = 0; +select count(*) from test_table2 where ds = '1' and hash(key) % 16 = 5; +select count(*) from test_table2 where ds = '1' and hash(key) % 16 = 12; +select count(*) from test_table2 tablesample (bucket 1 out of 16) s where ds = '1'; +select count(*) from test_table2 tablesample (bucket 6 out of 16) s where ds = '1'; +select count(*) from test_table2 tablesample (bucket 13 out of 16) s where ds = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_2.q new file mode 100644 index 0000000000000..9d86314879d68 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_2.q @@ -0,0 +1,53 @@ + + + + +create table smb_bucket_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; + +load data local inpath '../data/files/smbbucket_1.rc' overwrite into table smb_bucket_1; +load data local inpath '../data/files/smbbucket_2.rc' overwrite into table smb_bucket_2; +load data local inpath '../data/files/smbbucket_3.rc' overwrite into table smb_bucket_3; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_1 a join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_1 a join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_1 a left outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_1 a left outer join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_1 a right outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_1 a right outer join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_1 a full outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_1 a full outer join smb_bucket_3 b on a.key = b.key; + + +explain +select /*+mapjoin(b)*/ * from smb_bucket_1 a join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_1 a join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_1 a left outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_1 a left outer join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_1 a right outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_1 a right outer join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_1 a full outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_1 a full outer join smb_bucket_3 b on a.key = b.key; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_20.q new file mode 100644 index 0000000000000..f70e7d5c86237 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_20.q @@ -0,0 +1,53 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key int, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key STRING, value1 STRING, value2 string) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT *; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- with different datatypes. This should be a map-reduce operation +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value, a.value FROM test_table1 a WHERE a.ds = '1'; + +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value, a.value FROM test_table1 a WHERE a.ds = '1'; + +select count(*) from test_table2 where ds = '1'; +select count(*) from test_table2 where ds = '1' and hash(key) % 2 = 0; +select count(*) from test_table2 where ds = '1' and hash(key) % 2 = 1; + +CREATE TABLE test_table3 (key STRING, value1 int, value2 string) PARTITIONED BY (ds STRING) +CLUSTERED BY (value1) SORTED BY (value1) INTO 2 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation, although the bucketing positions dont match +EXPLAIN +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.value, a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +INSERT OVERWRITE TABLE test_table3 PARTITION (ds = '1') +SELECT a.value, a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +select count(*) from test_table3 where ds = '1'; +select count(*) from test_table3 where ds = '1' and hash(value1) % 2 = 0; +select count(*) from test_table3 where ds = '1' and hash(value1) % 2 = 1; +select count(*) from test_table3 tablesample (bucket 1 out of 2) s where ds = '1'; +select count(*) from test_table3 tablesample (bucket 2 out of 2) s where ds = '1'; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- However, since an expression is being selected, it should involve a reducer +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '2') +SELECT a.key+a.key, a.value, a.value FROM test_table1 a WHERE a.ds = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_21.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_21.q new file mode 100644 index 0000000000000..09edfc10cd950 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_21.q @@ -0,0 +1,77 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 PARTITION (ds = '1') SELECT *; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +drop table test_table2; + +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key desc) INTO 2 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation since the sort orders does not match +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +drop table test_table2; + +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key, value) INTO 2 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation since the sort columns do not match +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +drop table test_table2; + +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (value) INTO 2 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation since the sort columns do not match +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +drop table test_table2; + +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation since the number of buckets do not match +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; + +drop table test_table2; + +CREATE TABLE test_table2 (key INT, value STRING) PARTITIONED BY (ds STRING) +CLUSTERED BY (key) INTO 2 BUCKETS; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-reduce operation since sort columns do not match +EXPLAIN +INSERT OVERWRITE TABLE test_table2 PARTITION (ds = '1') +SELECT a.key, a.value FROM test_table1 a WHERE a.ds = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_22.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_22.q new file mode 100644 index 0000000000000..676f46ae6d2aa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_22.q @@ -0,0 +1,55 @@ +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +-- Create two bucketed and sorted tables +CREATE TABLE test_table1 (key INT, value STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) +CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 SELECT *; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN INSERT OVERWRITE TABLE test_table2 +SELECT * FROM test_table1; + +INSERT OVERWRITE TABLE test_table2 +SELECT * FROM test_table1; + +select count(*) from test_table1; +select count(*) from test_table1 tablesample (bucket 2 out of 2) s; + +select count(*) from test_table2; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s; + +drop table test_table1; +drop table test_table2; + +CREATE TABLE test_table1 (key INT, value STRING) +CLUSTERED BY (key) INTO 2 BUCKETS; +CREATE TABLE test_table2 (key INT, value STRING) +CLUSTERED BY (key) INTO 2 BUCKETS; + +FROM src +INSERT OVERWRITE TABLE test_table1 SELECT *; + +-- Insert data into the bucketed table by selecting from another bucketed table +-- This should be a map-only operation +EXPLAIN INSERT OVERWRITE TABLE test_table2 +SELECT * FROM test_table1; + +INSERT OVERWRITE TABLE test_table2 +SELECT * FROM test_table1; + +select count(*) from test_table1; +select count(*) from test_table1 tablesample (bucket 2 out of 2) s; + +select count(*) from test_table2; +select count(*) from test_table2 tablesample (bucket 2 out of 2) s; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_25.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_25.q new file mode 100644 index 0000000000000..8b534e85aee1d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_25.q @@ -0,0 +1,41 @@ +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.max.dynamic.partitions.pernode=1000000; +set hive.exec.max.dynamic.partitions=1000000; +set hive.exec.max.created.files=1000000; +set hive.map.aggr=true; + +create table smb_bucket_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; + +load data local inpath '../data/files/smbbucket_1.rc' overwrite into table smb_bucket_1; +load data local inpath '../data/files/smbbucket_2.rc' overwrite into table smb_bucket_2; +load data local inpath '../data/files/smbbucket_3.rc' overwrite into table smb_bucket_3; + +explain +select * from (select a.key from smb_bucket_1 a join smb_bucket_2 b on (a.key = b.key) where a.key = 5) t1 left outer join (select c.key from smb_bucket_2 c join smb_bucket_3 d on (c.key = d.key) where c.key=5) t2 on (t1.key=t2.key) where t2.key=5; + +set hive.optimize.bucketmapjoin=true; +set hive.optimize.bucketmapjoin.sortedmerge=true; +set hive.mapred.reduce.tasks.speculative.execution=false; +set hive.auto.convert.join=true; +set hive.auto.convert.sortmerge.join=true; +set hive.auto.convert.sortmerge.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000000000; +set hive.optimize.reducededuplication.min.reducer=1; +set hive.optimize.mapjoin.mapreduce=true; +set hive.auto.convert.sortmerge.join.bigtable.selection.policy=org.apache.hadoop.hive.ql.optimizer.LeftmostBigTableSelectorForAutoSMJ; + +-- explain +-- select * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key left outer join src c on a.key=c.value + +-- select a.key from smb_bucket_1 a + +explain +select * from (select a.key from smb_bucket_1 a join smb_bucket_2 b on (a.key = b.key) where a.key = 5) t1 left outer join (select c.key from smb_bucket_2 c join smb_bucket_3 d on (c.key = d.key) where c.key=5) t2 on (t1.key=t2.key) where t2.key=5; + +select * from (select a.key from smb_bucket_1 a join smb_bucket_2 b on (a.key = b.key) where a.key = 5) t1 left outer join (select c.key from smb_bucket_2 c join smb_bucket_3 d on (c.key = d.key) where c.key=5) t2 on (t1.key=t2.key) where t2.key=5; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_3.q new file mode 100644 index 0000000000000..73b21fae250e0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_3.q @@ -0,0 +1,53 @@ + + + + +create table smb_bucket_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; + +load data local inpath '../data/files/smbbucket_1.rc' overwrite into table smb_bucket_1; +load data local inpath '../data/files/smbbucket_2.rc' overwrite into table smb_bucket_2; +load data local inpath '../data/files/smbbucket_3.rc' overwrite into table smb_bucket_3; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_2 a join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_2 a join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_2 a left outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_2 a left outer join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_2 a right outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_2 a right outer join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(a)*/ * from smb_bucket_2 a full outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(a)*/ * from smb_bucket_2 a full outer join smb_bucket_3 b on a.key = b.key; + + +explain +select /*+mapjoin(b)*/ * from smb_bucket_2 a join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_2 a join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_2 a left outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_2 a left outer join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_2 a right outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_2 a right outer join smb_bucket_3 b on a.key = b.key; + +explain +select /*+mapjoin(b)*/ * from smb_bucket_2 a full outer join smb_bucket_3 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket_2 a full outer join smb_bucket_3 b on a.key = b.key; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_4.q new file mode 100644 index 0000000000000..83143b170ed5c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_4.q @@ -0,0 +1,72 @@ + + + + +create table smb_bucket_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; + +load data local inpath '../data/files/smbbucket_1.rc' overwrite into table smb_bucket_1; +load data local inpath '../data/files/smbbucket_2.rc' overwrite into table smb_bucket_2; +load data local inpath '../data/files/smbbucket_3.rc' overwrite into table smb_bucket_3; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,b)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_5.q new file mode 100644 index 0000000000000..61ec084f64ffa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_5.q @@ -0,0 +1,72 @@ + + + + +create table smb_bucket_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; +create table smb_bucket_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS STORED AS RCFILE; + +load data local inpath '../data/files/smbbucket_1.rc' overwrite into table smb_bucket_1; +load data local inpath '../data/files/smbbucket_2.rc' overwrite into table smb_bucket_2; +load data local inpath '../data/files/smbbucket_3.rc' overwrite into table smb_bucket_3; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a left outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a right outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key left outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key right outer join smb_bucket_3 c on b.key=c.key; + +explain +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; +select /*+mapjoin(a,c)*/ * from smb_bucket_1 a full outer join smb_bucket_2 b on a.key = b.key full outer join smb_bucket_3 c on b.key=c.key; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_6.q new file mode 100644 index 0000000000000..2884a11433d32 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_6.q @@ -0,0 +1,78 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + + +CREATE TABLE smb_bucket4_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS RCFILE; + + +CREATE TABLE smb_bucket4_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS RCFILE; + +create table smb_join_results(k1 int, v1 string, k2 int, v2 string); +create table normal_join_results(k1 int, v1 string, k2 int, v2 string); + +insert overwrite table smb_bucket4_1 +select * from src; + +insert overwrite table smb_bucket4_2 +select * from src; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +explain +insert overwrite table smb_join_results +select /*+mapjoin(a)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key; + +insert overwrite table smb_join_results +select /*+mapjoin(a)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key; + +select * from smb_join_results order by k1; + +insert overwrite table normal_join_results select * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key; + +select sum(hash(k1)) as k1, sum(hash(k2)) as k2, sum(hash(v1)) as v1, sum(hash(v2)) as v2 from normal_join_results; +select sum(hash(k1)) as k1, sum(hash(k2)) as k2, sum(hash(v1)) as v1, sum(hash(v2)) as v2 from smb_join_results; + + +explain +insert overwrite table smb_join_results +select /*+mapjoin(b)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key; +insert overwrite table smb_join_results +select /*+mapjoin(b)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key; + + +insert overwrite table smb_join_results +select /*+mapjoin(a)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key; + +select * from smb_join_results order by k1; + +insert overwrite table normal_join_results select * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key; + +select sum(hash(k1)) as k1, sum(hash(k2)) as k2, sum(hash(v1)) as v1, sum(hash(v2)) as v2 from normal_join_results; +select sum(hash(k1)) as k1, sum(hash(k2)) as k2, sum(hash(v1)) as v1, sum(hash(v2)) as v2 from smb_join_results; + + +explain +insert overwrite table smb_join_results +select /*+mapjoin(a)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key where a.key>1000; +insert overwrite table smb_join_results +select /*+mapjoin(a)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key where a.key>1000; + + +explain +insert overwrite table smb_join_results +select /*+mapjoin(b)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key where a.key>1000; +insert overwrite table smb_join_results +select /*+mapjoin(b)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key where a.key>1000; + + +explain +select /*+mapjoin(b,c)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key join smb_bucket4_2 c on b.key = c.key where a.key>1000; +select /*+mapjoin(b,c)*/ * from smb_bucket4_1 a join smb_bucket4_2 b on a.key = b.key join smb_bucket4_2 c on b.key = c.key where a.key>1000; + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_7.q new file mode 100644 index 0000000000000..1488b1f949527 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_7.q @@ -0,0 +1,55 @@ +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + + +CREATE TABLE smb_bucket4_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + + +CREATE TABLE smb_bucket4_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; + + + + +create table smb_join_results(k1 int, v1 string, k2 int, v2 string); +create table smb_join_results_empty_bigtable(k1 int, v1 string, k2 int, v2 string); +create table normal_join_results(k1 int, v1 string, k2 int, v2 string); + +load data local inpath '../data/files/empty1.txt' into table smb_bucket4_1; +load data local inpath '../data/files/empty2.txt' into table smb_bucket4_1; + +insert overwrite table smb_bucket4_2 +select * from src; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +insert overwrite table smb_join_results_empty_bigtable +select /*+mapjoin(b)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + +insert overwrite table smb_join_results_empty_bigtable +select /*+mapjoin(b)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + +select * from smb_join_results_empty_bigtable order by k1, v1, k2, v2; + +explain +insert overwrite table smb_join_results +select /*+mapjoin(a)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + +insert overwrite table smb_join_results +select /*+mapjoin(a)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + +select * from smb_join_results order by k1, v1, k2, v2; + +insert overwrite table normal_join_results select * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + +select sum(hash(k1)) as k1, sum(hash(k2)) as k2, sum(hash(v1)) as v1, sum(hash(v2)) as v2 from normal_join_results; +select sum(hash(k1)) as k1, sum(hash(k2)) as k2, sum(hash(v1)) as v1, sum(hash(v2)) as v2 from smb_join_results; +select sum(hash(k1)) as k1, sum(hash(k2)) as k2, sum(hash(v1)) as v1, sum(hash(v2)) as v2 from smb_join_results_empty_bigtable; + + + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_8.q new file mode 100644 index 0000000000000..6f282ed441bfa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/smb_mapjoin_8.q @@ -0,0 +1,90 @@ +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.exec.reducers.max = 1; + + +create table smb_bucket_input (key int, value string) stored as rcfile; +load data local inpath '../data/files/smb_bucket_input.rc' into table smb_bucket_input; + + +CREATE TABLE smb_bucket4_1(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS; + +CREATE TABLE smb_bucket4_2(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS; + +CREATE TABLE smb_bucket4_3(key int, value string) CLUSTERED BY (key) SORTED BY (key) INTO 1 BUCKETS; + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=4 or key=2000 or key=4000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=484 or key=3000 or key=5000; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +select /*+mapjoin(a)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=2000 or key=4000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=3000 or key=5000; + +select /*+mapjoin(a)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=4000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=5000; + +select /*+mapjoin(a)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=1000 or key=4000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=1000 or key=5000; + +select /*+mapjoin(a)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; +select /*+mapjoin(b)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key; + + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=1000 or key=4000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=1000 or key=5000; +insert overwrite table smb_bucket4_3 select * from smb_bucket_input where key=1000 or key=5000; + +select /*+mapjoin(b,c)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key +full outer join smb_bucket4_3 c on a.key=c.key; + + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=1000 or key=4000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=1000 or key=5000; +insert overwrite table smb_bucket4_3 select * from smb_bucket_input where key=1000 or key=4000; + +select /*+mapjoin(b,c)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key +full outer join smb_bucket4_3 c on a.key=c.key; + + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=4000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=5000; +insert overwrite table smb_bucket4_3 select * from smb_bucket_input where key=4000; + +select /*+mapjoin(b,c)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key +full outer join smb_bucket4_3 c on a.key=c.key; + + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=00000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=4000; +insert overwrite table smb_bucket4_3 select * from smb_bucket_input where key=5000; + +select /*+mapjoin(b,c)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key +full outer join smb_bucket4_3 c on a.key=c.key; + + +insert overwrite table smb_bucket4_1 select * from smb_bucket_input where key=1000; +insert overwrite table smb_bucket4_2 select * from smb_bucket_input where key=4000; +insert overwrite table smb_bucket4_3 select * from smb_bucket_input where key=5000; + +select /*+mapjoin(b,c)*/ * from smb_bucket4_1 a full outer join smb_bucket4_2 b on a.key = b.key +full outer join smb_bucket4_3 c on a.key=c.key; + + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort.q new file mode 100644 index 0000000000000..a2a54ee393f10 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT x.* FROM SRC x SORT BY key; + +SELECT x.* FROM SRC x SORT BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_1.q new file mode 100644 index 0000000000000..8002ec55fa7f2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_1.q @@ -0,0 +1,23 @@ +drop table table_desc1; +drop table table_desc2; + +set hive.enforce.sorting = true; + +create table table_desc1(key string, value string) clustered by (key) sorted by (key DESC) into 1 BUCKETS; +create table table_desc2(key string, value string) clustered by (key) sorted by (key DESC) into 1 BUCKETS; + +insert overwrite table table_desc1 select key, value from src; +insert overwrite table table_desc2 select key, value from src; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- The columns of the tables above are sorted in same descending order. +-- So, sort merge join should be performed + +explain +select /*+ mapjoin(b) */ count(*) from table_desc1 a join table_desc2 b on a.key=b.key where a.key < 10; + +select /*+ mapjoin(b) */ count(*) from table_desc1 a join table_desc2 b on a.key=b.key where a.key < 10; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_2.q new file mode 100644 index 0000000000000..bd0cdb2b952b4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_2.q @@ -0,0 +1,28 @@ +drop table table_desc1; +drop table table_desc2; + +set hive.enforce.sorting = true; + +create table table_desc1(key string, value string) clustered by (key, value) +sorted by (key DESC, value DESC) into 1 BUCKETS; +create table table_desc2(key string, value string) clustered by (key, value) +sorted by (key DESC, value DESC) into 1 BUCKETS; + +insert overwrite table table_desc1 select key, value from src; +insert overwrite table table_desc2 select key, value from src; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- The columns of the tables above are sorted in same order. +-- descending followed by descending +-- So, sort merge join should be performed + +explain +select /*+ mapjoin(b) */ count(*) from table_desc1 a join table_desc2 b +on a.key=b.key and a.value=b.value where a.key < 10; + +select /*+ mapjoin(b) */ count(*) from table_desc1 a join table_desc2 b +on a.key=b.key and a.value=b.value where a.key < 10; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_3.q new file mode 100644 index 0000000000000..a109878f88585 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_3.q @@ -0,0 +1,28 @@ +drop table table_desc1; +drop table table_desc2; + +set hive.enforce.sorting = true; + +create table table_desc1(key string, value string) clustered by (key, value) +sorted by (key DESC, value ASC) into 1 BUCKETS; +create table table_desc2(key string, value string) clustered by (key, value) +sorted by (key DESC, value ASC) into 1 BUCKETS; + +insert overwrite table table_desc1 select key, value from src; +insert overwrite table table_desc2 select key, value from src; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- The columns of the tables above are sorted in same orders. +-- descending followed by ascending +-- So, sort merge join should be performed + +explain +select /*+ mapjoin(b) */ count(*) from table_desc1 a join table_desc2 b +on a.key=b.key and a.value=b.value where a.key < 10; + +select /*+ mapjoin(b) */ count(*) from table_desc1 a join table_desc2 b +on a.key=b.key and a.value=b.value where a.key < 10; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_4.q new file mode 100644 index 0000000000000..0bc507130c242 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_4.q @@ -0,0 +1,27 @@ +drop table table_desc1; +drop table table_desc2; + +set hive.enforce.sorting = true; + +create table table_desc1(key string, value string) clustered by (key, value) +sorted by (key DESC, value ASC) into 1 BUCKETS; +create table table_desc2(key string, value string) clustered by (key, value) +sorted by (key DESC, value DESC) into 1 BUCKETS; + +insert overwrite table table_desc1 select key, value from src; +insert overwrite table table_desc2 select key, value from src; + +set hive.optimize.bucketmapjoin = true; +set hive.optimize.bucketmapjoin.sortedmerge = true; +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +-- The columns of the tables above are sorted in different orders. +-- So, sort merge join should not be performed + +explain +select /*+ mapjoin(b) */ count(*) from table_desc1 a join table_desc2 b +on a.key=b.key and a.value=b.value where a.key < 10; + +select /*+ mapjoin(b) */ count(*) from table_desc1 a join table_desc2 b +on a.key=b.key and a.value=b.value where a.key < 10; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_5.q new file mode 100644 index 0000000000000..3505db09dd3ee --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_5.q @@ -0,0 +1,26 @@ +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) SORTED BY (key DESC) INTO 1 BUCKETS; +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_1 PARTITION (part='1') SELECT * FROM src; + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) SORTED BY (key DESC) INTO 1 BUCKETS; +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_2 PARTITION (part='1') SELECT * FROM src; + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key) SORTED BY (value DESC) INTO 1 BUCKETS; + +set hive.optimize.bucketmapjoin=true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +-- The partition sorting metadata matches but the table metadata does not, sorted merge join should still be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' AND b.part = '1'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' AND b.part = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_6.q new file mode 100644 index 0000000000000..35b05353ccbdd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_6.q @@ -0,0 +1,27 @@ +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) SORTED BY (key DESC) INTO 2 BUCKETS; +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_1 PARTITION (part='1') SELECT * FROM src; + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key) SORTED BY (value DESC) INTO 2 BUCKETS; +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_2 PARTITION (part='1') SELECT * FROM src; + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key) SORTED BY (key DESC) INTO 2 BUCKETS; + +set hive.optimize.bucketmapjoin=true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +-- The table sorting metadata matches but the partition metadata does not, sorted merge join should not be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' AND b.part = '1'; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part = '1' AND b.part = '1'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_7.q new file mode 100644 index 0000000000000..65dc7f1d8eda9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/sort_merge_join_desc_7.q @@ -0,0 +1,33 @@ +set hive.enforce.bucketing=true; +set hive.enforce.sorting=true; +set hive.exec.reducers.max = 1; + +CREATE TABLE srcbucket_mapjoin_part_1 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key, value) SORTED BY (key DESC) INTO 2 BUCKETS; +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_1 PARTITION (part='1') SELECT * FROM src; + +ALTER TABLE srcbucket_mapjoin_part_1 CLUSTERED BY (key, value) SORTED BY (value DESC) INTO 2 BUCKETS; +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_1 PARTITION (part='2') SELECT * FROM src; + +CREATE TABLE srcbucket_mapjoin_part_2 (key INT, value STRING) PARTITIONED BY (part STRING) +CLUSTERED BY (key, value) SORTED BY (value DESC) INTO 2 BUCKETS; +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_2 PARTITION (part='1') SELECT * FROM src; + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key, value) SORTED BY (key DESC) INTO 2 BUCKETS; +INSERT OVERWRITE TABLE srcbucket_mapjoin_part_2 PARTITION (part='2') SELECT * FROM src; + +ALTER TABLE srcbucket_mapjoin_part_2 CLUSTERED BY (key, value) SORTED BY (value DESC) INTO 2 BUCKETS; + +set hive.optimize.bucketmapjoin=true; +set hive.optimize.bucketmapjoin.sortedmerge = true; + +-- The table sorting metadata matches but the partition metadata does not, sorted merge join should not be used + +EXPLAIN EXTENDED +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part IS NOT NULL AND b.part IS NOT NULL; + +SELECT /*+ MAPJOIN(b) */ count(*) +FROM srcbucket_mapjoin_part_1 a JOIN srcbucket_mapjoin_part_2 b +ON a.key = b.key AND a.part IS NOT NULL AND b.part IS NOT NULL; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/source.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/source.q new file mode 100644 index 0000000000000..6fe3d211a00b0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/source.q @@ -0,0 +1 @@ +source ../data/files/source.txt; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/split_sample.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/split_sample.q new file mode 100644 index 0000000000000..952eaf72f10c1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/split_sample.q @@ -0,0 +1,115 @@ +USE default; + +set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; +set mapred.max.split.size=300; +set mapred.min.split.size=300; +set mapred.min.split.size.per.node=300; +set mapred.min.split.size.per.rack=300; +set hive.merge.smallfiles.avgsize=1; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20) +-- This test sets mapred.max.split.size=300 and hive.merge.smallfiles.avgsize=1 +-- in an attempt to force the generation of multiple splits and multiple output files. +-- However, Hadoop 0.20 is incapable of generating splits smaller than the block size +-- when using CombineFileInputFormat, so only one split is generated. This has a +-- significant impact on the results of the TABLESAMPLE(x PERCENT). This issue was +-- fixed in MAPREDUCE-2046 which is included in 0.22. + +-- create multiple file inputs (two enable multiple splits) +create table ss_i_part (key int, value string) partitioned by (p string); +insert overwrite table ss_i_part partition (p='1') select key, value from src; +insert overwrite table ss_i_part partition (p='2') select key, value from src; +insert overwrite table ss_i_part partition (p='3') select key, value from src; +create table ss_src2 as select key, value from ss_i_part; + +select count(1) from ss_src2 tablesample(1 percent); + +-- sample first split +desc ss_src2; +set hive.sample.seednumber=0; +explain select key, value from ss_src2 tablesample(1 percent) limit 10; +select key, value from ss_src2 tablesample(1 percent) limit 10; + +-- verify seed number of sampling +insert overwrite table ss_i_part partition (p='1') select key+10000, value from src; +insert overwrite table ss_i_part partition (p='2') select key+20000, value from src; +insert overwrite table ss_i_part partition (p='3') select key+30000, value from src; +create table ss_src3 as select key, value from ss_i_part; +set hive.sample.seednumber=3; +create table ss_t3 as select sum(key) % 397 as s from ss_src3 tablesample(1 percent) limit 10; +set hive.sample.seednumber=4; +create table ss_t4 as select sum(key) % 397 as s from ss_src3 tablesample(1 percent) limit 10; +set hive.sample.seednumber=5; +create table ss_t5 as select sum(key) % 397 as s from ss_src3 tablesample(1 percent) limit 10; +select sum(s) from (select s from ss_t3 union all select s from ss_t4 union all select s from ss_t5) t; + +-- sample more than one split +explain select count(distinct key) from ss_src2 tablesample(70 percent) limit 10; +select count(distinct key) from ss_src2 tablesample(70 percent) limit 10; + +-- sample all splits +select count(1) from ss_src2 tablesample(100 percent); + +-- subquery +explain select key from (select key from ss_src2 tablesample(1 percent) limit 10) subq; +select key from (select key from ss_src2 tablesample(1 percent) limit 10) subq; + +-- groupby +select key, count(1) from ss_src2 tablesample(1 percent) group by key order by key; + +-- sample one of two tables: +create table ss_src1 as select * from ss_src2; +select t2.key as k from ss_src1 join ss_src2 tablesample(1 percent) t2 on ss_src1.key=t2.key order by k; + +-- sample two tables +explain select * from ( +select t1.key as k1, t2.key as k from ss_src1 tablesample(80 percent) t1 full outer join ss_src2 tablesample(2 percent) t2 on t1.key=t2.key +) subq where k in (199, 10199, 20199) or k1 in (199, 10199, 20199); + +select * from ( +select t1.key as k1, t2.key as k from ss_src1 tablesample(80 percent) t1 full outer join ss_src2 tablesample(2 percent) t2 on t1.key=t2.key +) subq where k in (199, 10199, 20199) or k1 in (199, 10199, 20199); + +-- shrink last split +explain select count(1) from ss_src2 tablesample(1 percent); +set mapred.max.split.size=300000; +set mapred.min.split.size=300000; +set mapred.min.split.size.per.node=300000; +set mapred.min.split.size.per.rack=300000; +select count(1) from ss_src2 tablesample(1 percent); +select count(1) from ss_src2 tablesample(50 percent); + +--HIVE-3401 more split samplings + +-- total length +explain +select count(1) from ss_src2 tablesample(100B); +select count(1) from ss_src2 tablesample(100B); + +explain +select count(1) from ss_src2 tablesample(1K); +select count(1) from ss_src2 tablesample(1K); + +-- row per split +explain +select key, value from ss_src2 tablesample(0 ROWS); +select key, value from ss_src2 tablesample(0 ROWS); + +explain +select count(1) from ss_src2 tablesample(10 ROWS); +select count(1) from ss_src2 tablesample(10 ROWS); + +explain +select count(1) from ss_src2 tablesample(100 ROWS); +select count(1) from ss_src2 tablesample(100 ROWS); + +set hive.fetch.task.conversion=more; +select key from ss_src2 tablesample(200B); +select key from ss_src2 tablesample(10 ROWS); + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +-- ROW type works with other input formats (others, don't) +select count(1) from ss_src2 tablesample(10 ROWS); + +--HIVE-5061 row sampling in sub-query +select * from (select * from src TABLESAMPLE (1 ROWS)) x; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats0.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats0.q new file mode 100644 index 0000000000000..48b5c52600ec4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats0.q @@ -0,0 +1,70 @@ +set hive.stats.autogather=true; +set datanucleus.cache.collections=false; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +CREATE TABLE stats_non_partitioned (key string, value string); + +explain extended +insert overwrite table stats_non_partitioned +select * from src; + +insert overwrite table stats_non_partitioned +select * from src; + +desc extended stats_non_partitioned; + +select * from stats_non_partitioned; + + +CREATE TABLE stats_partitioned(key string, value string) partitioned by (ds string); + +explain +insert overwrite table stats_partitioned partition (ds='1') +select * from src; + +insert overwrite table stats_partitioned partition (ds='1') +select * from src; + +show partitions stats_partitioned; +select * from stats_partitioned where ds is not null; + +describe extended stats_partitioned partition (ds='1'); +describe extended stats_partitioned; + + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; + +drop table stats_non_partitioned; +drop table stats_partitioned; + +CREATE TABLE stats_non_partitioned (key string, value string); + +explain extended +insert overwrite table stats_non_partitioned +select * from src; + +insert overwrite table stats_non_partitioned +select * from src; + +desc extended stats_non_partitioned; + +select * from stats_non_partitioned; + + +CREATE TABLE stats_partitioned(key string, value string) partitioned by (ds string); + +explain +insert overwrite table stats_partitioned partition (ds='1') +select * from src; + +insert overwrite table stats_partitioned partition (ds='1') +select * from src; + +show partitions stats_partitioned; +select * from stats_partitioned where ds is not null; + +describe extended stats_partitioned partition (ds='1'); +describe extended stats_partitioned; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats1.q new file mode 100644 index 0000000000000..0b783de153b29 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats1.q @@ -0,0 +1,30 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.map.aggr=true; + +create table tmptable(key string, value string); + +EXPLAIN +INSERT OVERWRITE TABLE tmptable +SELECT unionsrc.key, unionsrc.value +FROM (SELECT 'tst1' AS key, cast(count(1) AS string) AS value FROM src s1 + UNION ALL + SELECT s2.key AS key, s2.value AS value FROM src1 s2) unionsrc; + +INSERT OVERWRITE TABLE tmptable +SELECT unionsrc.key, unionsrc.value +FROM (SELECT 'tst1' AS key, cast(count(1) AS string) AS value FROM src s1 + UNION ALL + SELECT s2.key AS key, s2.value AS value FROM src1 s2) unionsrc; + +SELECT * FROM tmptable x SORT BY x.key, x.value; + +DESCRIBE FORMATTED tmptable; + +-- Load a file into a existing table +-- Some stats (numFiles, totalSize) should be updated correctly +-- Some other stats (numRows, rawDataSize) should be cleared +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE tmptable; +DESCRIBE FORMATTED tmptable; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats10.q new file mode 100644 index 0000000000000..a3f375e5a460a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats10.q @@ -0,0 +1,28 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=true; +set hive.enforce.bucketing = true; +set hive.exec.reducers.max = 1; + +CREATE TABLE bucket3_1(key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS; + +explain +insert overwrite table bucket3_1 partition (ds='1') +select * from src; + +insert overwrite table bucket3_1 partition (ds='1') +select * from src; + +insert overwrite table bucket3_1 partition (ds='1') +select * from src; + +insert overwrite table bucket3_1 partition (ds='2') +select * from src; + +select * from bucket3_1 tablesample (bucket 1 out of 2) s where ds = '1' order by key; + +explain analyze table bucket3_1 partition (ds) compute statistics; +analyze table bucket3_1 partition (ds) compute statistics; + +describe formatted bucket3_1 partition (ds='1'); +describe formatted bucket3_1 partition (ds='2'); +describe formatted bucket3_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats11.q new file mode 100644 index 0000000000000..6618c913ea700 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats11.q @@ -0,0 +1,93 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=true; + +CREATE TABLE srcbucket_mapjoin(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin; +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin; + +CREATE TABLE srcbucket_mapjoin_part (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE; +explain +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); + +desc formatted srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket21.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +desc formatted srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +desc formatted srcbucket_mapjoin_part partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08'); +desc formatted srcbucket_mapjoin_part partition(ds='2008-04-08'); + +CREATE TABLE srcbucket_mapjoin_part_2 (key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcbucket22.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); +load data local inpath '../data/files/srcbucket23.txt' INTO TABLE srcbucket_mapjoin_part_2 partition(ds='2008-04-08'); + +create table bucketmapjoin_hash_result_1 (key bigint , value1 bigint, value2 bigint); +create table bucketmapjoin_hash_result_2 (key bigint , value1 bigint, value2 bigint); + +set hive.optimize.bucketmapjoin = true; +create table bucketmapjoin_tmp_result (key string , value1 string, value2 string); + +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; + +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(b)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; + + +set hive.optimize.bucketmapjoin = true; +explain extended +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; + + +insert overwrite table bucketmapjoin_hash_result_1 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +set hive.optimize.bucketmapjoin = false; +insert overwrite table bucketmapjoin_tmp_result +select /*+mapjoin(a)*/ a.key, a.value, b.value +from srcbucket_mapjoin a join srcbucket_mapjoin_part b +on a.key=b.key where b.ds="2008-04-08"; + +select count(1) from bucketmapjoin_tmp_result; +insert overwrite table bucketmapjoin_hash_result_2 +select sum(hash(key)), sum(hash(value1)), sum(hash(value2)) from bucketmapjoin_tmp_result; + +select a.key-b.key, a.value1-b.value1, a.value2-b.value2 +from bucketmapjoin_hash_result_1 a left outer join bucketmapjoin_hash_result_2 b +on a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats12.q new file mode 100644 index 0000000000000..c1db34618e753 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats12.q @@ -0,0 +1,19 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table analyze_srcpart like srcpart; +insert overwrite table analyze_srcpart partition (ds, hr) select * from srcpart where ds is not null; + +explain extended +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr) compute statistics; + +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr) compute statistics; + +desc formatted analyze_srcpart; +desc formatted analyze_srcpart partition (ds='2008-04-08', hr=11); +desc formatted analyze_srcpart partition (ds='2008-04-08', hr=12); +desc formatted analyze_srcpart partition (ds='2008-04-09', hr=11); +desc formatted analyze_srcpart partition (ds='2008-04-09', hr=12); + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats13.q new file mode 100644 index 0000000000000..beb7bfa42e10f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats13.q @@ -0,0 +1,22 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table analyze_srcpart like srcpart; +insert overwrite table analyze_srcpart partition (ds, hr) select * from srcpart where ds is not null; + +explain extended +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=11) compute statistics; + +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=11) compute statistics; + +desc formatted analyze_srcpart; +desc formatted analyze_srcpart partition (ds='2008-04-08', hr=11); +desc formatted analyze_srcpart partition (ds='2008-04-08', hr=12); +desc formatted analyze_srcpart partition (ds='2008-04-09', hr=11); +desc formatted analyze_srcpart partition (ds='2008-04-09', hr=12); + +create table analyze_srcpart2 like analyze_srcpart; + +desc formatted analyze_srcpart2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats14.q new file mode 100644 index 0000000000000..8e74df535d086 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats14.q @@ -0,0 +1,26 @@ +set datanucleus.cache.collections=false; + +create table stats_src like src; +insert overwrite table stats_src select * from src; +analyze table stats_src compute statistics; +desc formatted stats_src; + +create table stats_part like srcpart; + +insert overwrite table stats_part partition (ds='2010-04-08', hr = '11') select key, value from src; +insert overwrite table stats_part partition (ds='2010-04-08', hr = '12') select key, value from src; + +analyze table stats_part partition(ds='2010-04-08', hr='11') compute statistics; +analyze table stats_part partition(ds='2010-04-08', hr='12') compute statistics; + +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +desc formatted stats_part; +desc formatted stats_part partition (ds='2010-04-08', hr = '11'); +desc formatted stats_part partition (ds='2010-04-08', hr = '12'); + +analyze table stats_part partition(ds, hr) compute statistics; +desc formatted stats_part; + +drop table stats_src; +drop table stats_part; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats15.q new file mode 100644 index 0000000000000..9a557c6708544 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats15.q @@ -0,0 +1,27 @@ +set datanucleus.cache.collections=false; +set hive.stats.collect.uncompressedsize=false; + +create table stats_src like src; +insert overwrite table stats_src select * from src; +analyze table stats_src compute statistics; +desc formatted stats_src; + +create table stats_part like srcpart; + +insert overwrite table stats_part partition (ds='2010-04-08', hr = '11') select key, value from src; +insert overwrite table stats_part partition (ds='2010-04-08', hr = '12') select key, value from src; + +analyze table stats_part partition(ds='2010-04-08', hr='11') compute statistics; +analyze table stats_part partition(ds='2010-04-08', hr='12') compute statistics; + +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +desc formatted stats_part; +desc formatted stats_part partition (ds='2010-04-08', hr = '11'); +desc formatted stats_part partition (ds='2010-04-08', hr = '12'); + +analyze table stats_part partition(ds, hr) compute statistics; +desc formatted stats_part; + +drop table stats_src; +drop table stats_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats16.q new file mode 100644 index 0000000000000..0557ce6e868c4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats16.q @@ -0,0 +1,12 @@ +set hive.stats.autogather=false; + +drop table stats16; + +create table stats16 (key int, value string); +desc formatted stats16; + +insert into table stats16 select * from src; +analyze table stats16 compute statistics; +desc formatted stats16; + +drop table stats16; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats18.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats18.q new file mode 100644 index 0000000000000..425de64c26e83 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats18.q @@ -0,0 +1,21 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=true; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set hive.map.aggr=true; + +create table stats_part like srcpart; + +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +-- Load a file into a existing partition +-- Some stats (numFiles, totalSize) should be updated correctly +-- Some other stats (numRows, rawDataSize) should be cleared +desc formatted stats_part partition (ds='2010-04-08', hr='13'); + +load data local inpath '../data/files/srcbucket20.txt' INTO TABLE stats_part partition (ds='2010-04-08', hr='13'); + +desc formatted stats_part partition (ds='2010-04-08', hr='13'); + +drop table stats_src; +drop table stats_part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats19.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats19.q new file mode 100644 index 0000000000000..da4af9655d16a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats19.q @@ -0,0 +1,105 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=true; +set hive.stats.reliable=true; +set hive.stats.dbclass=dummy; +set hive.stats.default.publisher=org.apache.hadoop.hive.ql.stats.DummyStatsPublisher; +set hive.stats.default.aggregator=org.apache.hadoop.hive.ql.stats.KeyVerifyingStatsAggregator; + +-- Note, its important that the partitions created below have a name greater than 16 characters in +-- length since KeyVerifyingStatsAggregator depends on checking that a keyPrefix is hashed by the +-- length of the keyPrefix, having a partition name greather than 16 characters guarantees no false +-- positives. + +create table stats_part like srcpart; + +set hive.stats.key.prefix.max.length=0; + +-- The stats key should be hashed since the max length is too small +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +set hive.stats.key.prefix.max.length=200; + +-- The stats key should not be hashed since the max length is large enough +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +set hive.stats.key.prefix.max.length=-1; + +-- The stats key should not be hashed since negative values should imply hashing is turned off +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +set hive.stats.dbclass=jdbc:derby; +set hive.stats.default.publisher=; +set hive.stats.default.aggregator=; + +set hive.stats.key.prefix.max.length=0; + +-- Run the tests again and verify the stats are correct, this should verify that the stats publisher +-- is hashing as well where appropriate + +-- The stats key should be hashed since the max length is too small +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +desc formatted stats_part partition (ds='2010-04-08', hr = '13'); + +set hive.stats.key.prefix.max.length=200; + +-- The stats key should not be hashed since the max length is large enough +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +desc formatted stats_part partition (ds='2010-04-08', hr = '13'); + +set hive.stats.key.prefix.max.length=-1; + +-- The stats key should not be hashed since negative values should imply hashing is turned off +insert overwrite table stats_part partition (ds='2010-04-08', hr = '13') select key, value from src; + +desc formatted stats_part partition (ds='2010-04-08', hr = '13'); + + +set hive.stats.dbclass=dummy; +set hive.stats.default.publisher=org.apache.hadoop.hive.ql.stats.DummyStatsPublisher; +set hive.stats.default.aggregator=org.apache.hadoop.hive.ql.stats.KeyVerifyingStatsAggregator; +set hive.stats.key.prefix.max.length=0; + +-- Do the same for dynamic partitions + +-- The stats key should be hashed since the max length is too small +insert overwrite table stats_part partition (ds='2010-04-08', hr) select key, value, '13' from src; + +set hive.stats.key.prefix.max.length=200; + +-- The stats key should not be hashed since the max length is large enough +insert overwrite table stats_part partition (ds='2010-04-08', hr) select key, value, '13' from src; + +set hive.stats.key.prefix.max.length=-1; + +-- The stats key should not be hashed since negative values should imply hashing is turned off +insert overwrite table stats_part partition (ds='2010-04-08', hr) select key, value, '13' from src; + +set hive.stats.dbclass=jdbc:derby; +set hive.stats.default.publisher=; +set hive.stats.default.aggregator=; + +set hive.stats.key.prefix.max.length=0; + +-- Run the tests again and verify the stats are correct, this should verify that the stats publisher +-- is hashing as well where appropriate + +-- The stats key should be hashed since the max length is too small +insert overwrite table stats_part partition (ds='2010-04-08', hr) select key, value, '13' from src; + +desc formatted stats_part partition (ds='2010-04-08', hr = '13'); + +set hive.stats.key.prefix.max.length=200; + +-- The stats key should not be hashed since the max length is large enough +insert overwrite table stats_part partition (ds='2010-04-08', hr) select key, value, '13' from src; + +desc formatted stats_part partition (ds='2010-04-08', hr = '13'); + +set hive.stats.key.prefix.max.length=-1; + +-- The stats key should not be hashed since negative values should imply hashing is turned off +insert overwrite table stats_part partition (ds='2010-04-08', hr) select key, value, '13' from src; + +desc formatted stats_part partition (ds='2010-04-08', hr = '13'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats2.q new file mode 100644 index 0000000000000..d6bb258307d8e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats2.q @@ -0,0 +1,21 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.merge.mapfiles=false; + +create table analyze_t1 like srcpart; + + +explain +insert overwrite table analyze_t1 partition (ds, hr) select * from srcpart where ds is not null; + +insert overwrite table analyze_t1 partition (ds, hr) select * from srcpart where ds is not null; + +desc formatted analyze_t1; + +explain analyze table analyze_t1 partition (ds, hr) compute statistics; + +analyze table analyze_t1 partition (ds, hr) compute statistics; + +describe formatted analyze_t1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats20.q new file mode 100644 index 0000000000000..59701bde771dc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats20.q @@ -0,0 +1,16 @@ +set hive.stats.autogather=true; +set datanucleus.cache.collections=false; + +set hive.stats.collect.rawdatasize=true; +CREATE TABLE stats_partitioned(key string, value string) partitioned by (ds string); +insert overwrite table stats_partitioned partition (ds='1') +select * from src; +-- rawDataSize is 5312 after config is turned on +describe formatted stats_partitioned; + +set hive.stats.collect.rawdatasize=false; +insert overwrite table stats_partitioned partition (ds='1') +select * from src; +-- rawDataSize is 0 after config is turned off +describe formatted stats_partitioned; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats3.q new file mode 100644 index 0000000000000..5962348d9c317 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats3.q @@ -0,0 +1,32 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=true; +drop table hive_test_src; +drop table hive_test_dst; + +create table hive_test_src ( col1 string ) stored as textfile ; +explain extended +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src ; + +load data local inpath '../data/files/test.dat' overwrite into table hive_test_src ; + +desc formatted hive_test_src; + +create table hive_test_dst ( col1 string ) partitioned by ( pcol1 string , pcol2 string) stored as sequencefile; +insert overwrite table hive_test_dst partition ( pcol1='test_part', pCol2='test_Part') select col1 from hive_test_src ; +select * from hive_test_dst where pcol1='test_part' and pcol2='test_Part'; + +select count(1) from hive_test_dst; + +insert overwrite table hive_test_dst partition ( pCol1='test_part', pcol2='test_Part') select col1 from hive_test_src ; +select * from hive_test_dst where pcol1='test_part' and pcol2='test_part'; + +select count(1) from hive_test_dst; + +select * from hive_test_dst where pcol1='test_part'; +select * from hive_test_dst where pcol1='test_part' and pcol2='test_part'; +select * from hive_test_dst where pcol1='test_Part'; + +describe formatted hive_test_dst; + +drop table hive_test_src; +drop table hive_test_dst; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats4.q new file mode 100644 index 0000000000000..62580042d4ded --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats4.q @@ -0,0 +1,40 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=true; + +show partitions srcpart; + +drop table nzhang_part1; +drop table nzhang_part2; + +create table if not exists nzhang_part1 like srcpart; +create table if not exists nzhang_part2 like srcpart; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; + +explain +from srcpart +insert overwrite table nzhang_part1 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08' +insert overwrite table nzhang_part2 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08'; + +from srcpart +insert overwrite table nzhang_part1 partition (ds, hr) select key, value, ds, hr where ds <= '2008-04-08' +insert overwrite table nzhang_part2 partition(ds='2008-12-31', hr) select key, value, hr where ds > '2008-04-08'; + + +show partitions nzhang_part1; +show partitions nzhang_part2; + +select * from nzhang_part1 where ds is not null and hr is not null; +select * from nzhang_part2 where ds is not null and hr is not null; + +describe formatted nzhang_part1 partition(ds='2008-04-08',hr=11); +describe formatted nzhang_part1 partition(ds='2008-04-08',hr=12); +describe formatted nzhang_part2 partition(ds='2008-12-31',hr=11); +describe formatted nzhang_part2 partition(ds='2008-12-31',hr=12); + +describe formatted nzhang_part1; +describe formatted nzhang_part2; + +drop table nzhang_part1; +drop table nzhang_part2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats5.q new file mode 100644 index 0000000000000..6b5d1384e065a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats5.q @@ -0,0 +1,10 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; + +create table analyze_src as select * from src; + +explain analyze table analyze_src compute statistics; + +analyze table analyze_src compute statistics; + +describe formatted analyze_src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats6.q new file mode 100644 index 0000000000000..bef6e8809ef97 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats6.q @@ -0,0 +1,17 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table analyze_srcpart like srcpart; +insert overwrite table analyze_srcpart partition (ds, hr) select * from srcpart where ds is not null; + +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=11) compute statistics; +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=12) compute statistics; + +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=12); +describe formatted analyze_srcpart PARTITION(ds='2008-04-09',hr=11); +describe formatted analyze_srcpart PARTITION(ds='2008-04-09',hr=12); + +describe formatted analyze_srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats7.q new file mode 100644 index 0000000000000..19d0e1426930e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats7.q @@ -0,0 +1,16 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table analyze_srcpart like srcpart; +insert overwrite table analyze_srcpart partition (ds, hr) select * from srcpart where ds is not null; + +explain analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr) compute statistics; + +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr) compute statistics; + +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=12); + +describe formatted analyze_srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats8.q new file mode 100644 index 0000000000000..46002caf4a0ec --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats8.q @@ -0,0 +1,33 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +create table analyze_srcpart like srcpart; +insert overwrite table analyze_srcpart partition (ds, hr) select * from srcpart where ds is not null; + +explain analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=11) compute statistics; +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=11) compute statistics; +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart; + +explain analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=12) compute statistics; +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=12) compute statistics; +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=12); + +explain analyze table analyze_srcpart PARTITION(ds='2008-04-09',hr=11) compute statistics; +analyze table analyze_srcpart PARTITION(ds='2008-04-09',hr=11) compute statistics; +describe formatted analyze_srcpart PARTITION(ds='2008-04-09',hr=11); + +explain analyze table analyze_srcpart PARTITION(ds='2008-04-09',hr=12) compute statistics; +analyze table analyze_srcpart PARTITION(ds='2008-04-09',hr=12) compute statistics; +describe formatted analyze_srcpart PARTITION(ds='2008-04-09',hr=12); + +explain analyze table analyze_srcpart PARTITION(ds, hr) compute statistics; +analyze table analyze_srcpart PARTITION(ds, hr) compute statistics; + +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=12); +describe formatted analyze_srcpart PARTITION(ds='2008-04-09',hr=11); +describe formatted analyze_srcpart PARTITION(ds='2008-04-09',hr=12); +describe formatted analyze_srcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats9.q new file mode 100644 index 0000000000000..48b20443a9f1b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats9.q @@ -0,0 +1,9 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; + +create table analyze_srcbucket like srcbucket; +insert overwrite table analyze_srcbucket select * from srcbucket; + +explain analyze table analyze_srcbucket compute statistics; +analyze table analyze_srcbucket compute statistics; +describe formatted analyze_srcbucket; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_aggregator_error_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_aggregator_error_1.q new file mode 100644 index 0000000000000..4e7d3dc547a30 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_aggregator_error_1.q @@ -0,0 +1,29 @@ +-- In this test, there is a dummy stats aggregator which throws an error when various +-- methods are called (as indicated by the parameter hive.test.dummystats.agregator) +-- Since stats need not be reliable (by setting hive.stats.reliable to false), the +-- insert statements succeed. The insert statement succeeds even if the stats aggregator +-- is set to null, since stats need not be reliable. + +create table tmptable(key string, value string); + +set hive.stats.dbclass=dummy; +set hive.stats.default.publisher=org.apache.hadoop.hive.ql.stats.DummyStatsPublisher; +set hive.stats.default.aggregator=org.apache.hadoop.hive.ql.stats.DummyStatsAggregator; +set hive.stats.reliable=false; + +set hive.test.dummystats.aggregator=connect; + +INSERT OVERWRITE TABLE tmptable select * from src; +select count(1) from tmptable; + +set hive.test.dummystats.aggregator=closeConnection; +INSERT OVERWRITE TABLE tmptable select * from src; +select count(1) from tmptable; + +set hive.test.dummystats.aggregator=cleanUp; +INSERT OVERWRITE TABLE tmptable select * from src; +select count(1) from tmptable; + +set hive.stats.default.aggregator=""; +INSERT OVERWRITE TABLE tmptable select * from src; +select count(1) from tmptable; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_empty_dyn_part.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_empty_dyn_part.q new file mode 100644 index 0000000000000..38ee6f7f4f3fb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_empty_dyn_part.q @@ -0,0 +1,13 @@ +-- This test verifies writing a query using dynamic partitions +-- which results in no partitions actually being created with +-- hive.stats.reliable set to true + +create table tmptable(key string) partitioned by (part string); + +set hive.stats.autogather=true; +set hive.stats.reliable=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +explain insert overwrite table tmptable partition (part) select key, value from src where key = 'no_such_value'; + +insert overwrite table tmptable partition (part) select key, value from src where key = 'no_such_value'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_empty_partition.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_empty_partition.q new file mode 100644 index 0000000000000..305a97c929230 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_empty_partition.q @@ -0,0 +1,11 @@ +-- This test verifies that writing an empty partition succeeds when +-- hive.stats.reliable is set to true. + +create table tmptable(key string, value string) partitioned by (part string); + +set hive.stats.autogather=true; +set hive.stats.reliable=true; + +insert overwrite table tmptable partition (part = '1') select * from src where key = 'no_such_value'; + +describe formatted tmptable partition (part = '1'); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_noscan_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_noscan_1.q new file mode 100644 index 0000000000000..02b4c2aabf039 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_noscan_1.q @@ -0,0 +1,37 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; + +-- test analyze table ... compute statistics noscan + +-- 1. test full spec +create table analyze_srcpart like srcpart; +insert overwrite table analyze_srcpart partition (ds, hr) select * from srcpart where ds is not null; +explain +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=11) compute statistics noscan; +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=11) compute statistics noscan; +analyze table analyze_srcpart PARTITION(ds='2008-04-08',hr=12) compute statistics noscan; +-- confirm result +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart PARTITION(ds='2008-04-08',hr=12); +describe formatted analyze_srcpart PARTITION(ds='2008-04-09',hr=11); +describe formatted analyze_srcpart PARTITION(ds='2008-04-09',hr=12); +describe formatted analyze_srcpart; +drop table analyze_srcpart; + +-- 2. test partial spec +create table analyze_srcpart_partial like srcpart; +insert overwrite table analyze_srcpart_partial partition (ds, hr) select * from srcpart where ds is not null; +explain +analyze table analyze_srcpart_partial PARTITION(ds='2008-04-08') compute statistics noscan; +analyze table analyze_srcpart_partial PARTITION(ds='2008-04-08') compute statistics noscan; +-- confirm result +describe formatted analyze_srcpart_partial PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart_partial PARTITION(ds='2008-04-08',hr=12); +describe formatted analyze_srcpart_partial PARTITION(ds='2008-04-09',hr=11); +describe formatted analyze_srcpart_partial PARTITION(ds='2008-04-09',hr=12); +drop table analyze_srcpart_partial; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_noscan_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_noscan_2.q new file mode 100644 index 0000000000000..c934fb2051258 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_noscan_2.q @@ -0,0 +1,32 @@ + +-- test analyze table compute statistiscs [noscan] on external table +-- 1 test table +CREATE EXTERNAL TABLE anaylyze_external (a INT) LOCATION '${system:test.src.data.dir}/files/ext_test'; +SELECT * FROM anaylyze_external; +analyze table anaylyze_external compute statistics; +describe formatted anaylyze_external; +analyze table anaylyze_external compute statistics noscan; +describe formatted anaylyze_external; +drop table anaylyze_external; + +-- 2 test partition +-- prepare data +create table texternal(key string, val string) partitioned by (insertdate string); +dfs ${system:test.dfs.mkdir} ${system:test.tmp.dir}/texternal/2008-01-01; +alter table texternal add partition (insertdate='2008-01-01') location 'pfile://${system:test.tmp.dir}/texternal/2008-01-01'; +from src insert overwrite table texternal partition (insertdate='2008-01-01') select *; +select count(*) from texternal where insertdate='2008-01-01'; +-- create external table +CREATE EXTERNAL TABLE anaylyze_external (key string, val string) partitioned by (insertdate string) LOCATION "pfile://${system:test.tmp.dir}/texternal"; +ALTER TABLE anaylyze_external ADD PARTITION (insertdate='2008-01-01') location 'pfile://${system:test.tmp.dir}/texternal/2008-01-01'; +select count(*) from anaylyze_external where insertdate='2008-01-01'; +-- analyze +analyze table anaylyze_external PARTITION (insertdate='2008-01-01') compute statistics; +describe formatted anaylyze_external PARTITION (insertdate='2008-01-01'); +analyze table anaylyze_external PARTITION (insertdate='2008-01-01') compute statistics noscan; +describe formatted anaylyze_external PARTITION (insertdate='2008-01-01'); +dfs -rmr ${system:test.tmp.dir}/texternal; +drop table anaylyze_external; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_partscan_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_partscan_1.q new file mode 100644 index 0000000000000..cdf92e44cf676 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_partscan_1.q @@ -0,0 +1,37 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20,0.20S) +-- This test uses mapred.max.split.size/mapred.max.split.size for controlling +-- number of input splits, which is not effective in hive 0.20. +-- stats_partscan_1_23.q is the same test with this but has different result. + +-- test analyze table ... compute statistics partialscan + +-- 1. prepare data +CREATE table analyze_srcpart_partial_scan (key STRING, value STRING) +partitioned by (ds string, hr string) +stored as rcfile; +insert overwrite table analyze_srcpart_partial_scan partition (ds, hr) select * from srcpart where ds is not null; +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11); + +set hive.stats.autogather=true; + +-- 2. partialscan +explain +analyze table analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11) compute statistics partialscan; +analyze table analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11) compute statistics partialscan; + +-- 3. confirm result +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-09',hr=11); +drop table analyze_srcpart_partial_scan; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_partscan_1_23.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_partscan_1_23.q new file mode 100644 index 0000000000000..1e5f360b20cbb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_partscan_1_23.q @@ -0,0 +1,37 @@ +set datanucleus.cache.collections=false; +set hive.stats.autogather=false; +set hive.exec.dynamic.partition=true; +set hive.exec.dynamic.partition.mode=nonstrict; +set mapred.min.split.size=256; +set mapred.min.split.size.per.node=256; +set mapred.min.split.size.per.rack=256; +set mapred.max.split.size=256; + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- This test uses mapred.max.split.size/mapred.max.split.size for controlling +-- number of input splits. +-- stats_partscan_1.q is the same test with this but has different result. + +-- test analyze table ... compute statistics partialscan + +-- 1. prepare data +CREATE table analyze_srcpart_partial_scan (key STRING, value STRING) +partitioned by (ds string, hr string) +stored as rcfile; +insert overwrite table analyze_srcpart_partial_scan partition (ds, hr) select * from srcpart where ds is not null; +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11); + +set hive.stats.autogather=true; + +-- 2. partialscan +explain +analyze table analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11) compute statistics partialscan; +analyze table analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11) compute statistics partialscan; + +-- 3. confirm result +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-08',hr=11); +describe formatted analyze_srcpart_partial_scan PARTITION(ds='2008-04-09',hr=11); +drop table analyze_srcpart_partial_scan; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_publisher_error_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_publisher_error_1.q new file mode 100644 index 0000000000000..6d383f213d1be --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/stats_publisher_error_1.q @@ -0,0 +1,29 @@ +-- In this test, there is a dummy stats publisher which throws an error when various +-- methods are called (as indicated by the parameter hive.test.dummystats.publisher) +-- Since stats need not be reliable (by setting hive.stats.reliable to false), the +-- insert statements succeed. The insert statement succeeds even if the stats publisher +-- is set to null, since stats need not be reliable. + +create table tmptable(key string, value string); + +set hive.stats.dbclass=dummy; +set hive.stats.default.publisher=org.apache.hadoop.hive.ql.stats.DummyStatsPublisher; +set hive.stats.default.aggregator=org.apache.hadoop.hive.ql.stats.DummyStatsAggregator; +set hive.stats.reliable=false; + +set hive.test.dummystats.publisher=connect; + +INSERT OVERWRITE TABLE tmptable select * from src; +select count(1) from tmptable; + +set hive.test.dummystats.publisher=publishStat; +INSERT OVERWRITE TABLE tmptable select * from src; +select count(1) from tmptable; + +set hive.test.dummystats.publisher=closeConnection; +INSERT OVERWRITE TABLE tmptable select * from src; +select count(1) from tmptable; + +set hive.stats.default.publisher=""; +INSERT OVERWRITE TABLE tmptable select * from src; +select count(1) from tmptable; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/str_to_map.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/str_to_map.q new file mode 100644 index 0000000000000..c3b206bba6325 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/str_to_map.q @@ -0,0 +1,26 @@ +desc function str_to_map; +desc function extended str_to_map; + +explain select str_to_map('a=1,b=2,c=3',',','=')['a'] from src limit 3; +select str_to_map('a=1,b=2,c=3',',','=')['a'] from src limit 3; + +explain select str_to_map('a:1,b:2,c:3') from src limit 3; +select str_to_map('a:1,b:2,c:3') from src limit 3; + +explain select str_to_map('a:1,b:2,c:3',',',':') from src limit 3; +select str_to_map('a:1,b:2,c:3',',',':') from src limit 3; + +explain select str_to_map(t.ss,',',':')['a'] +from (select transform('a:1,b:2,c:3') using 'cat' as (ss) from src) t +limit 3; +select str_to_map(t.ss,',',':')['a'] +from (select transform('a:1,b:2,c:3') using 'cat' as (ss) from src) t +limit 3; + + +drop table tbl_s2m; +create table tbl_s2m as select 'ABC=CC_333=444' as t from src limit 3; + +select str_to_map(t,'_','=')['333'] from tbl_s2m; + +drop table tbl_s2m; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/subq.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/subq.q new file mode 100644 index 0000000000000..3fb1558a90f0b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/subq.q @@ -0,0 +1,13 @@ +EXPLAIN +FROM ( + FROM src select src.* WHERE src.key < 100 +) unioninput +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/union.out' SELECT unioninput.*; + +FROM ( + FROM src select src.* WHERE src.key < 100 +) unioninput +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/union.out' SELECT unioninput.*; + +dfs -cat ../build/ql/test/data/warehouse/union.out/*; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/subq2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/subq2.q new file mode 100644 index 0000000000000..7e174da4586fd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/subq2.q @@ -0,0 +1,8 @@ +EXPLAIN +SELECT a.k, a.c +FROM (SELECT b.key as k, count(1) as c FROM src b GROUP BY b.key) a +WHERE a.k >= 90; + +SELECT a.k, a.c +FROM (SELECT b.key as k, count(1) as c FROM src b GROUP BY b.key) a +WHERE a.k >= 90; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/symlink_text_input_format.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/symlink_text_input_format.q new file mode 100644 index 0000000000000..bb9d6f34ed8ec --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/symlink_text_input_format.q @@ -0,0 +1,24 @@ + + +EXPLAIN +CREATE TABLE symlink_text_input_format (key STRING, value STRING) STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'; + +CREATE TABLE symlink_text_input_format (key STRING, value STRING) STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'; + +dfs -cp ../data/files/symlink1.txt ../build/ql/test/data/warehouse/symlink_text_input_format/symlink1.txt; +dfs -cp ../data/files/symlink2.txt ../build/ql/test/data/warehouse/symlink_text_input_format/symlink2.txt; + +EXPLAIN SELECT * FROM symlink_text_input_format order by key, value; + +SELECT * FROM symlink_text_input_format order by key, value; + +EXPLAIN SELECT value FROM symlink_text_input_format order by value; + +SELECT value FROM symlink_text_input_format order by value; + +EXPLAIN SELECT count(1) FROM symlink_text_input_format; + +SELECT count(1) FROM symlink_text_input_format; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/table_access_keys_stats.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/table_access_keys_stats.q new file mode 100644 index 0000000000000..8b1a390149865 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/table_access_keys_stats.q @@ -0,0 +1,218 @@ +SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.CheckTableAccessHook; +SET hive.stats.collect.tablekeys=true; + +-- This test is used for testing the TableAccessAnalyzer + +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; + +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; + +-- Simple group-by queries +SELECT key, count(1) FROM T1 GROUP BY key; +SELECT key, val, count(1) FROM T1 GROUP BY key, val; + +-- With subqueries and column aliases +SELECT key, count(1) FROM (SELECT key, val FROM T1) subq1 GROUP BY key; +SELECT k, count(1) FROM (SELECT key as k, val as v FROM T1) subq1 GROUP BY k; + +-- With constants +SELECT 1, key, count(1) FROM T1 GROUP BY 1, key; +SELECT key, 1, val, count(1) FROM T1 GROUP BY key, 1, val; +SELECT key, 1, val, 2, count(1) FROM T1 GROUP BY key, 1, val, 2; + +-- no mapping with functions +SELECT key, key + 1, count(1) FROM T1 GROUP BY key, key + 1; + +SELECT key + key, sum(cnt) from +(SELECT key, count(1) as cnt FROM T1 GROUP BY key) subq1 +group by key + key; + +-- group by followed by union +SELECT * FROM ( +SELECT key, count(1) as c FROM T1 GROUP BY key + UNION ALL +SELECT key, count(1) as c FROM T1 GROUP BY key +) subq1; + +-- group by followed by a join +SELECT * FROM +(SELECT key, count(1) as c FROM T1 GROUP BY key) subq1 +JOIN +(SELECT key, count(1) as c FROM T1 GROUP BY key) subq2 +ON subq1.key = subq2.key; + +SELECT * FROM +(SELECT key, count(1) as c FROM T1 GROUP BY key) subq1 +JOIN +(SELECT key, val, count(1) as c FROM T1 GROUP BY key, val) subq2 +ON subq1.key = subq2.key +ORDER BY subq1.key ASC, subq1.c ASC, subq2.key ASC, subq2.val ASC, subq2.c ASC; + +-- constants from sub-queries should work fine +SELECT key, constant, val, count(1) from +(SELECT key, 1 as constant, val from T1) subq1 +group by key, constant, val; + +-- multiple levels of constants from sub-queries should work fine +SELECT key, constant3, val, count(1) FROM +( + SELECT key, constant AS constant2, val, 2 AS constant3 + FROM + ( + SELECT key, 1 AS constant, val + FROM T1 + ) subq +) subq2 +GROUP BY key, constant3, val; + +-- work with insert overwrite +FROM T1 +INSERT OVERWRITE TABLE T2 SELECT key, count(1) GROUP BY key, 1 +INSERT OVERWRITE TABLE T3 SELECT key, sum(val) GROUP BY key; + +-- simple joins +SELECT * +FROM T1 JOIN T2 +ON T1.key = t2.key +ORDER BY T1.key ASC, T1.val ASC; + +SELECT * +FROM T1 JOIN T2 +ON T1.key = T2.key AND T1.val = T2.val; + +-- map join +SELECT /*+ MAPJOIN(a) */ * +FROM T1 a JOIN T2 b +ON a.key = b.key; + +-- with constant in join condition +SELECT * +FROM T1 JOIN T2 +ON T1.key = T2.key AND T1.val = 3 and T2.val = 3; + +-- subqueries +SELECT * +FROM +( + SELECT val FROM T1 WHERE key = 5 +) subq1 +JOIN +( + SELECT val FROM T2 WHERE key = 6 +) subq2 +ON subq1.val = subq2.val; + +SELECT * +FROM +( + SELECT val FROM T1 WHERE key = 5 +) subq1 +JOIN +T2 +ON subq1.val = T2.val; + +-- with column aliases in subqueries +SELECT * +FROM +( + SELECT val as v FROM T1 WHERE key = 5 +) subq1 +JOIN +( + SELECT val FROM T2 WHERE key = 6 +) subq2 +ON subq1.v = subq2.val; + +-- with constants in subqueries +SELECT * +FROM +( + SELECT key, val FROM T1 +) subq1 +JOIN +( + SELECT key, 'teststring' as val FROM T2 +) subq2 +ON subq1.val = subq2.val AND subq1.key = subq2.key; + +-- multiple levels of constants in subqueries +SELECT * +FROM +( + SELECT key, val from + ( + SELECT key, 'teststring' as val from T1 + ) subq1 +) subq2 +JOIN +( + SELECT key, val FROM T2 +) subq3 +ON subq3.val = subq2.val AND subq3.key = subq2.key; + +-- no mapping on functions +SELECT * +FROM +( + SELECT key, val from T1 +) subq1 +JOIN +( + SELECT key, val FROM T2 +) subq2 +ON subq1.val = subq2.val AND subq1.key + 1 = subq2.key; + +-- join followed by group by +SELECT subq1.val, COUNT(*) +FROM +( + SELECT key, val FROM T1 +) subq1 +JOIN +( + SELECT key, 'teststring' as val FROM T2 +) subq2 +ON subq1.val = subq2.val AND subq1.key = subq2.key +GROUP BY subq1.val; + +-- join followed by union +SELECT * +FROM +( + SELECT subq1.val, COUNT(*) + FROM + ( + SELECT key, val FROM T1 + ) subq1 + JOIN + ( + SELECT key, 'teststring' as val FROM T2 + ) subq2 + ON subq1.val = subq2.val AND subq1.key = subq2.key + GROUP BY subq1.val + UNION ALL + SELECT val, COUNT(*) + FROM T3 + GROUP BY val +) subq4; + +-- join followed by join +SELECT * +FROM +( + SELECT subq1.val as val, COUNT(*) + FROM + ( + SELECT key, val FROM T1 + ) subq1 + JOIN + ( + SELECT key, 'teststring' as val FROM T2 + ) subq2 + ON subq1.val = subq2.val AND subq1.key = subq2.key + GROUP by subq1.val +) T4 +JOIN T3 +ON T3.val = T4.val; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/tablename_with_select.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/tablename_with_select.q new file mode 100644 index 0000000000000..c48231b66c7b8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/tablename_with_select.q @@ -0,0 +1,9 @@ + +CREATE TABLE tmp_select(a INT, b STRING); +DESCRIBE tmp_select; + +INSERT OVERWRITE TABLE tmp_select SELECT key, value FROM src; + +SELECT a, b FROM tmp_select ORDER BY a; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/test_boolean_whereclause.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/test_boolean_whereclause.q new file mode 100644 index 0000000000000..d2da5ac174a15 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/test_boolean_whereclause.q @@ -0,0 +1,9 @@ +create table if not exists test_boolean(dummy tinyint); +insert overwrite table test_boolean select 1 from src limit 1; + +SELECT 1 +FROM ( +SELECT TRUE AS flag +FROM test_boolean +) a +WHERE flag; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_1.q new file mode 100644 index 0000000000000..f2c3b596af44a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_1.q @@ -0,0 +1,72 @@ +drop table timestamp_1; + +create table timestamp_1 (t timestamp); +alter table timestamp_1 set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'; + +insert overwrite table timestamp_1 + select cast('2011-01-01 01:01:01' as timestamp) from src limit 1; +select cast(t as boolean) from timestamp_1 limit 1; +select cast(t as tinyint) from timestamp_1 limit 1; +select cast(t as smallint) from timestamp_1 limit 1; +select cast(t as int) from timestamp_1 limit 1; +select cast(t as bigint) from timestamp_1 limit 1; +select cast(t as float) from timestamp_1 limit 1; +select cast(t as double) from timestamp_1 limit 1; +select cast(t as string) from timestamp_1 limit 1; + +insert overwrite table timestamp_1 + select '2011-01-01 01:01:01' from src limit 1; +select cast(t as boolean) from timestamp_1 limit 1; +select cast(t as tinyint) from timestamp_1 limit 1; +select cast(t as smallint) from timestamp_1 limit 1; +select cast(t as int) from timestamp_1 limit 1; +select cast(t as bigint) from timestamp_1 limit 1; +select cast(t as float) from timestamp_1 limit 1; +select cast(t as double) from timestamp_1 limit 1; +select cast(t as string) from timestamp_1 limit 1; + +insert overwrite table timestamp_1 + select '2011-01-01 01:01:01.1' from src limit 1; +select cast(t as boolean) from timestamp_1 limit 1; +select cast(t as tinyint) from timestamp_1 limit 1; +select cast(t as smallint) from timestamp_1 limit 1; +select cast(t as int) from timestamp_1 limit 1; +select cast(t as bigint) from timestamp_1 limit 1; +select cast(t as float) from timestamp_1 limit 1; +select cast(t as double) from timestamp_1 limit 1; +select cast(t as string) from timestamp_1 limit 1; + +insert overwrite table timestamp_1 + select '2011-01-01 01:01:01.0001' from src limit 1; +select cast(t as boolean) from timestamp_1 limit 1; +select cast(t as tinyint) from timestamp_1 limit 1; +select cast(t as smallint) from timestamp_1 limit 1; +select cast(t as int) from timestamp_1 limit 1; +select cast(t as bigint) from timestamp_1 limit 1; +select cast(t as float) from timestamp_1 limit 1; +select cast(t as double) from timestamp_1 limit 1; +select cast(t as string) from timestamp_1 limit 1; + +insert overwrite table timestamp_1 + select '2011-01-01 01:01:01.000100000' from src limit 1; +select cast(t as boolean) from timestamp_1 limit 1; +select cast(t as tinyint) from timestamp_1 limit 1; +select cast(t as smallint) from timestamp_1 limit 1; +select cast(t as int) from timestamp_1 limit 1; +select cast(t as bigint) from timestamp_1 limit 1; +select cast(t as float) from timestamp_1 limit 1; +select cast(t as double) from timestamp_1 limit 1; +select cast(t as string) from timestamp_1 limit 1; + +insert overwrite table timestamp_1 + select '2011-01-01 01:01:01.001000011' from src limit 1; +select cast(t as boolean) from timestamp_1 limit 1; +select cast(t as tinyint) from timestamp_1 limit 1; +select cast(t as smallint) from timestamp_1 limit 1; +select cast(t as int) from timestamp_1 limit 1; +select cast(t as bigint) from timestamp_1 limit 1; +select cast(t as float) from timestamp_1 limit 1; +select cast(t as double) from timestamp_1 limit 1; +select cast(t as string) from timestamp_1 limit 1; + +drop table timestamp_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_2.q new file mode 100644 index 0000000000000..b93208f48c453 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_2.q @@ -0,0 +1,72 @@ +drop table timestamp_2; + +create table timestamp_2 (t timestamp); +alter table timestamp_2 set serde 'org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe'; + +insert overwrite table timestamp_2 + select cast('2011-01-01 01:01:01' as timestamp) from src limit 1; +select cast(t as boolean) from timestamp_2 limit 1; +select cast(t as tinyint) from timestamp_2 limit 1; +select cast(t as smallint) from timestamp_2 limit 1; +select cast(t as int) from timestamp_2 limit 1; +select cast(t as bigint) from timestamp_2 limit 1; +select cast(t as float) from timestamp_2 limit 1; +select cast(t as double) from timestamp_2 limit 1; +select cast(t as string) from timestamp_2 limit 1; + +insert overwrite table timestamp_2 + select '2011-01-01 01:01:01' from src limit 1; +select cast(t as boolean) from timestamp_2 limit 1; +select cast(t as tinyint) from timestamp_2 limit 1; +select cast(t as smallint) from timestamp_2 limit 1; +select cast(t as int) from timestamp_2 limit 1; +select cast(t as bigint) from timestamp_2 limit 1; +select cast(t as float) from timestamp_2 limit 1; +select cast(t as double) from timestamp_2 limit 1; +select cast(t as string) from timestamp_2 limit 1; + +insert overwrite table timestamp_2 + select '2011-01-01 01:01:01.1' from src limit 1; +select cast(t as boolean) from timestamp_2 limit 1; +select cast(t as tinyint) from timestamp_2 limit 1; +select cast(t as smallint) from timestamp_2 limit 1; +select cast(t as int) from timestamp_2 limit 1; +select cast(t as bigint) from timestamp_2 limit 1; +select cast(t as float) from timestamp_2 limit 1; +select cast(t as double) from timestamp_2 limit 1; +select cast(t as string) from timestamp_2 limit 1; + +insert overwrite table timestamp_2 + select '2011-01-01 01:01:01.0001' from src limit 1; +select cast(t as boolean) from timestamp_2 limit 1; +select cast(t as tinyint) from timestamp_2 limit 1; +select cast(t as smallint) from timestamp_2 limit 1; +select cast(t as int) from timestamp_2 limit 1; +select cast(t as bigint) from timestamp_2 limit 1; +select cast(t as float) from timestamp_2 limit 1; +select cast(t as double) from timestamp_2 limit 1; +select cast(t as string) from timestamp_2 limit 1; + +insert overwrite table timestamp_2 + select '2011-01-01 01:01:01.000100000' from src limit 1; +select cast(t as boolean) from timestamp_2 limit 1; +select cast(t as tinyint) from timestamp_2 limit 1; +select cast(t as smallint) from timestamp_2 limit 1; +select cast(t as int) from timestamp_2 limit 1; +select cast(t as bigint) from timestamp_2 limit 1; +select cast(t as float) from timestamp_2 limit 1; +select cast(t as double) from timestamp_2 limit 1; +select cast(t as string) from timestamp_2 limit 1; + +insert overwrite table timestamp_2 + select '2011-01-01 01:01:01.001000011' from src limit 1; +select cast(t as boolean) from timestamp_2 limit 1; +select cast(t as tinyint) from timestamp_2 limit 1; +select cast(t as smallint) from timestamp_2 limit 1; +select cast(t as int) from timestamp_2 limit 1; +select cast(t as bigint) from timestamp_2 limit 1; +select cast(t as float) from timestamp_2 limit 1; +select cast(t as double) from timestamp_2 limit 1; +select cast(t as string) from timestamp_2 limit 1; + +drop table timestamp_2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_3.q new file mode 100644 index 0000000000000..cda724f9e8f43 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_3.q @@ -0,0 +1,17 @@ +drop table timestamp_3; + +create table timestamp_3 (t timestamp); +alter table timestamp_3 set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'; + +insert overwrite table timestamp_3 + select cast(cast('1.3041352164485E9' as double) as timestamp) from src limit 1; +select cast(t as boolean) from timestamp_3 limit 1; +select cast(t as tinyint) from timestamp_3 limit 1; +select cast(t as smallint) from timestamp_3 limit 1; +select cast(t as int) from timestamp_3 limit 1; +select cast(t as bigint) from timestamp_3 limit 1; +select cast(t as float) from timestamp_3 limit 1; +select cast(t as double) from timestamp_3 limit 1; +select cast(t as string) from timestamp_3 limit 1; + +drop table timestamp_3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_comparison.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_comparison.q new file mode 100644 index 0000000000000..f64ae48b85db7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_comparison.q @@ -0,0 +1,28 @@ + +select cast('2011-05-06 07:08:09' as timestamp) > + cast('2011-05-06 07:08:09' as timestamp) from src limit 1; + +select cast('2011-05-06 07:08:09' as timestamp) < + cast('2011-05-06 07:08:09' as timestamp) from src limit 1; + +select cast('2011-05-06 07:08:09' as timestamp) = + cast('2011-05-06 07:08:09' as timestamp) from src limit 1; + +select cast('2011-05-06 07:08:09' as timestamp) <> + cast('2011-05-06 07:08:09' as timestamp) from src limit 1; + +select cast('2011-05-06 07:08:09' as timestamp) >= + cast('2011-05-06 07:08:09' as timestamp) from src limit 1; + +select cast('2011-05-06 07:08:09' as timestamp) <= + cast('2011-05-06 07:08:09' as timestamp) from src limit 1; + +select cast('2011-05-06 07:08:09' as timestamp) >= + cast('2011-05-06 07:08:09.1' as timestamp) from src limit 1; + +select cast('2011-05-06 07:08:09' as timestamp) < + cast('2011-05-06 07:08:09.1' as timestamp) from src limit 1; + +select cast('2011-05-06 07:08:09.1000' as timestamp) = + cast('2011-05-06 07:08:09.1' as timestamp) from src limit 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_lazy.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_lazy.q new file mode 100644 index 0000000000000..7a1005295eb28 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_lazy.q @@ -0,0 +1,6 @@ +drop table timestamp_lazy; +create table timestamp_lazy (t timestamp, key string, value string); +insert overwrite table timestamp_lazy select cast('2011-01-01 01:01:01' as timestamp), key, value from src limit 5; + +select t,key,value from timestamp_lazy ORDER BY key ASC, value ASC; +select t,key,value from timestamp_lazy distribute by t sort by key ASC, value ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_null.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_null.q new file mode 100644 index 0000000000000..efd5bc4b78bf4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_null.q @@ -0,0 +1,7 @@ +DROP TABLE IF EXISTS timestamp_null; +CREATE TABLE timestamp_null (t1 TIMESTAMP); +LOAD DATA LOCAL INPATH '../data/files/test.dat' OVERWRITE INTO TABLE timestamp_null; + +SELECT * FROM timestamp_null LIMIT 1; + +SELECT t1 FROM timestamp_null LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_udf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_udf.q new file mode 100644 index 0000000000000..2620acefee7f7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/timestamp_udf.q @@ -0,0 +1,58 @@ +drop table timestamp_udf; +drop table timestamp_udf_string; + +create table timestamp_udf (t timestamp); +create table timestamp_udf_string (t string); +from src + insert overwrite table timestamp_udf + select '2011-05-06 07:08:09.1234567' limit 1 + insert overwrite table timestamp_udf_string + select '2011-05-06 07:08:09.1234567' limit 1; + +-- Test UDFs with Timestamp input +select unix_timestamp(t), year(t), month(t), day(t), dayofmonth(t), + weekofyear(t), hour(t), minute(t), second(t), to_date(t) + from timestamp_udf; + +select date_add(t, 5), date_sub(t, 10) + from timestamp_udf; + +select datediff(t, t), datediff(t, '2002-03-21'), datediff('2002-03-21', t) + from timestamp_udf; + +select from_utc_timestamp(t, 'America/Chicago') + from timestamp_udf; + +select to_utc_timestamp(t, 'America/Chicago') + from timestamp_udf; + +select t, from_utc_timestamp(t, 'America/Chicago') + from timestamp_udf; + +select t, from_utc_timestamp(t, 'America/Chicago'), t, from_utc_timestamp(t, 'America/Chicago') + from timestamp_udf; + +select t, to_utc_timestamp(t, 'America/Chicago') + from timestamp_udf; + +select t, to_utc_timestamp(t, 'America/Chicago'), t, to_utc_timestamp(t, 'America/Chicago') + from timestamp_udf; + +-- Test UDFs with string input +select unix_timestamp(t), year(t), month(t), day(t), dayofmonth(t), + weekofyear(t), hour(t), minute(t), second(t), to_date(t) + from timestamp_udf_string; + +select date_add(t, 5), date_sub(t, 10) from timestamp_udf_string; + +select datediff(t, t), datediff(t, '2002-03-21'), datediff('2002-03-21', t) + from timestamp_udf_string; + +select from_utc_timestamp(t, 'America/Chicago') + from timestamp_udf_string; + +select to_utc_timestamp(t, 'America/Chicago') + from timestamp_udf_string; + +drop table timestamp_udf; +drop table timestamp_udf_string; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/touch.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/touch.q new file mode 100644 index 0000000000000..8a661ef12104e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/touch.q @@ -0,0 +1,17 @@ +drop table tstsrc; +drop table tstsrcpart; + +create table tstsrc like src; +insert overwrite table tstsrc select key, value from src; + +create table tstsrcpart like srcpart; +insert overwrite table tstsrcpart partition (ds='2008-04-08', hr='12') +select key, value from srcpart where ds='2008-04-08' and hr='12'; + + +ALTER TABLE tstsrc TOUCH; +ALTER TABLE tstsrcpart TOUCH; +ALTER TABLE tstsrcpart TOUCH PARTITION (ds='2008-04-08', hr='12'); + +drop table tstsrc; +drop table tstsrcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform1.q new file mode 100644 index 0000000000000..962077c2ca565 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform1.q @@ -0,0 +1,23 @@ + +create table transform1_t1(a string, b string); + +EXPLAIN +SELECT transform(*) USING 'cat' AS (col array) FROM transform1_t1; + +SELECT transform(*) USING 'cat' AS (col array) FROM transform1_t1; + + + + +create table transform1_t2(col array); + +insert overwrite table transform1_t2 +select array(1,2,3) from src limit 1; + +EXPLAIN +SELECT transform('0\0021\0022') USING 'cat' AS (col array) FROM transform1_t2; + +SELECT transform('0\0021\0022') USING 'cat' AS (col array) FROM transform1_t2; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform2.q new file mode 100644 index 0000000000000..ddbc567596410 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform2.q @@ -0,0 +1,2 @@ +-- Transform with a function that has many parameters +SELECT TRANSFORM(substr(key, 1, 2)) USING 'cat' FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform_ppr1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform_ppr1.q new file mode 100644 index 0000000000000..07bb4d1dd08e6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform_ppr1.q @@ -0,0 +1,19 @@ +set hive.optimize.ppd=true; + +EXPLAIN EXTENDED +FROM ( + FROM srcpart src + SELECT TRANSFORM(src.ds, src.key, src.value) + USING 'cat' AS (ds, tkey, tvalue) + CLUSTER BY tkey +) tmap +SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 AND tmap.ds = '2008-04-08'; + +FROM ( + FROM srcpart src + SELECT TRANSFORM(src.ds, src.key, src.value) + USING 'cat' AS (ds, tkey, tvalue) + CLUSTER BY tkey +) tmap +SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 AND tmap.ds = '2008-04-08'; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform_ppr2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform_ppr2.q new file mode 100644 index 0000000000000..85ef3acf824d4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/transform_ppr2.q @@ -0,0 +1,21 @@ +set hive.optimize.ppd=true; + +EXPLAIN EXTENDED +FROM ( + FROM srcpart src + SELECT TRANSFORM(src.ds, src.key, src.value) + USING 'cat' AS (ds, tkey, tvalue) + WHERE src.ds = '2008-04-08' + CLUSTER BY tkey +) tmap +SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + +FROM ( + FROM srcpart src + SELECT TRANSFORM(src.ds, src.key, src.value) + USING 'cat' AS (ds, tkey, tvalue) + WHERE src.ds = '2008-04-08' + CLUSTER BY tkey +) tmap +SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column.q new file mode 100644 index 0000000000000..d756b47e464d0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column.q @@ -0,0 +1,79 @@ +-- Tests truncating column(s) from a table, also tests that stats are updated + +CREATE TABLE test_tab (key STRING, value STRING) +ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' STORED AS RCFILE; + +set hive.stats.autogather=true; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10; + +DESC FORMATTED test_tab; + +SELECT * FROM test_tab ORDER BY value; + +-- Truncate 1 column +TRUNCATE TABLE test_tab COLUMNS (key); + +DESC FORMATTED test_tab; + +-- First column should be null +SELECT * FROM test_tab ORDER BY value; + +-- Truncate multiple columns +INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10; + +TRUNCATE TABLE test_tab COLUMNS (key, value); + +DESC FORMATTED test_tab; + +-- Both columns should be null +SELECT * FROM test_tab ORDER BY value; + +-- Truncate columns again +TRUNCATE TABLE test_tab COLUMNS (key, value); + +DESC FORMATTED test_tab; + +-- Both columns should be null +SELECT * FROM test_tab ORDER BY value; + +-- Test truncating with a binary serde +ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10; + +DESC FORMATTED test_tab; + +SELECT * FROM test_tab ORDER BY value; + +-- Truncate 1 column +TRUNCATE TABLE test_tab COLUMNS (key); + +DESC FORMATTED test_tab; + +-- First column should be null +SELECT * FROM test_tab ORDER BY value; + +-- Truncate 2 columns +TRUNCATE TABLE test_tab COLUMNS (key, value); + +DESC FORMATTED test_tab; + +-- Both columns should be null +SELECT * FROM test_tab ORDER BY value; + +-- Test truncating a partition +CREATE TABLE test_tab_part (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE; + +INSERT OVERWRITE TABLE test_tab_part PARTITION (part = '1') SELECT * FROM src LIMIT 10; + +DESC FORMATTED test_tab_part PARTITION (part = '1'); + +SELECT * FROM test_tab_part WHERE part = '1' ORDER BY value; + +TRUNCATE TABLE test_tab_part PARTITION (part = '1') COLUMNS (key); + +DESC FORMATTED test_tab_part PARTITION (part = '1'); + +-- First column should be null +SELECT * FROM test_tab_part WHERE part = '1' ORDER BY value; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_buckets.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_buckets.q new file mode 100644 index 0000000000000..a2ce21558cdd7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_buckets.q @@ -0,0 +1,23 @@ +-- Tests truncating columns from a bucketed table, table should remain bucketed + +CREATE TABLE test_tab (key STRING, value STRING) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS RCFILE; + +set hive.enforce.bucketing=true; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src; + +-- Check how many rows there are in each bucket, there should be two rows +SELECT cnt FROM ( +SELECT INPUT__FILE__NAME file_name, count(*) cnt FROM +test_tab GROUP BY INPUT__FILE__NAME +ORDER BY file_name DESC)a; + +-- Truncate a column on which the table is not bucketed +TRUNCATE TABLE test_tab COLUMNS (value); + +-- Check how many rows there are in each bucket, this should produce the same rows as before +-- because truncate should not break bucketing +SELECT cnt FROM ( +SELECT INPUT__FILE__NAME file_name, count(*) cnt FROM +test_tab GROUP BY INPUT__FILE__NAME +ORDER BY file_name DESC)a; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_list_bucket.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_list_bucket.q new file mode 100644 index 0000000000000..87289f0d3d619 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_list_bucket.q @@ -0,0 +1,33 @@ +set hive.mapred.supports.subdirectories=true; +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- Tests truncating a column from a list bucketing table + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) + +CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE; + +ALTER TABLE test_tab +SKEWED BY (key) ON ("484") +STORED AS DIRECTORIES; + +INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src; + +set hive.optimize.listbucketing=true; +SELECT * FROM test_tab WHERE part = '1' AND key = '0'; + +TRUNCATE TABLE test_tab PARTITION (part ='1') COLUMNS (value); + +-- In the following select statements the list bucketing optimization should still be used +-- In both cases value should be null + +EXPLAIN EXTENDED SELECT * FROM test_tab WHERE part = '1' AND key = '484'; + +SELECT * FROM test_tab WHERE part = '1' AND key = '484'; + +EXPLAIN EXTENDED SELECT * FROM test_tab WHERE part = '1' AND key = '0'; + +SELECT * FROM test_tab WHERE part = '1' AND key = '0'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_merge.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_merge.q new file mode 100644 index 0000000000000..a7aab357eaf2f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_column_merge.q @@ -0,0 +1,20 @@ +-- Tests truncating a column from a table with multiple files, then merging those files + +CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE; + +INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 5; + +INSERT INTO TABLE test_tab SELECT * FROM src LIMIT 5; + +-- The value should be 2 indicating the table has 2 files +SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM test_tab; + +TRUNCATE TABLE test_tab COLUMNS (key); + +ALTER TABLE test_tab CONCATENATE; + +-- The first column (key) should be null for all 10 rows +SELECT * FROM test_tab ORDER BY value; + +-- The value should be 1 indicating the table has 1 file +SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM test_tab; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_table.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_table.q new file mode 100644 index 0000000000000..c0e81e9ac051f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/truncate_table.q @@ -0,0 +1,35 @@ +create table src_truncate (key string, value string); +load data local inpath '../data/files/kv1.txt' into table src_truncate;; + +create table srcpart_truncate (key string, value string) partitioned by (ds string, hr string); +alter table srcpart_truncate add partition (ds='2008-04-08', hr='11'); +alter table srcpart_truncate add partition (ds='2008-04-08', hr='12'); +alter table srcpart_truncate add partition (ds='2008-04-09', hr='11'); +alter table srcpart_truncate add partition (ds='2008-04-09', hr='12'); + +load data local inpath '../data/files/kv1.txt' into table srcpart_truncate partition (ds='2008-04-08', hr='11'); +load data local inpath '../data/files/kv1.txt' into table srcpart_truncate partition (ds='2008-04-08', hr='12'); +load data local inpath '../data/files/kv1.txt' into table srcpart_truncate partition (ds='2008-04-09', hr='11'); +load data local inpath '../data/files/kv1.txt' into table srcpart_truncate partition (ds='2008-04-09', hr='12'); + +set hive.fetch.task.convertion=more; + +-- truncate non-partitioned table +explain TRUNCATE TABLE src_truncate; +TRUNCATE TABLE src_truncate; +select * from src_truncate; + +-- truncate a partition +explain TRUNCATE TABLE srcpart_truncate partition (ds='2008-04-08', hr='11'); +TRUNCATE TABLE srcpart_truncate partition (ds='2008-04-08', hr='11'); +select * from srcpart_truncate where ds='2008-04-08' and hr='11'; + +-- truncate partitions with partial spec +explain TRUNCATE TABLE srcpart_truncate partition (ds, hr='12'); +TRUNCATE TABLE srcpart_truncate partition (ds, hr='12'); +select * from srcpart_truncate where hr='12'; + +-- truncate partitioned table +explain TRUNCATE TABLE srcpart_truncate; +TRUNCATE TABLE srcpart_truncate; +select * from srcpart_truncate; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_cast_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_cast_1.q new file mode 100644 index 0000000000000..a1607320c7a2d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_cast_1.q @@ -0,0 +1,4 @@ +EXPLAIN +SELECT IF(false, 1, cast(2 as smallint)) + 3 FROM src LIMIT 1; + +SELECT IF(false, 1, cast(2 as smallint)) + 3 FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_conversions_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_conversions_1.q new file mode 100644 index 0000000000000..63dd66ebedd0c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_conversions_1.q @@ -0,0 +1,24 @@ + +-- casting from null should yield null +select + cast(null as tinyint), + cast(null as smallint), + cast(null as int), + cast(null as bigint), + cast(null as float), + cast(null as double), + cast(null as decimal), + cast(null as date), + cast(null as timestamp), + cast(null as string), + cast(null as varchar(10)), + cast(null as boolean), + cast(null as binary) +from src limit 1; + +-- Invalid conversions, should all be null +select + cast('abcd' as date), + cast('abcd' as timestamp) +from src limit 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_widening.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_widening.q new file mode 100644 index 0000000000000..0d36bc44fe08b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/type_widening.q @@ -0,0 +1,6 @@ +-- Check for int, bigint automatic type widening conversions in UDFs, UNIONS +EXPLAIN SELECT COALESCE(0, 9223372036854775807) FROM src LIMIT 1; +SELECT COALESCE(0, 9223372036854775807) FROM src LIMIT 1; + +EXPLAIN SELECT * FROM (SELECT 0 AS numcol FROM src UNION ALL SELECT 9223372036854775807 AS numcol FROM src) a ORDER BY numcol; +SELECT * FROM (SELECT 0 AS numcol FROM src UNION ALL SELECT 9223372036854775807 AS numcol FROM src) a ORDER BY numcol; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_collect_set.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_collect_set.q new file mode 100644 index 0000000000000..45aaa022dc8a4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_collect_set.q @@ -0,0 +1,30 @@ +DESCRIBE FUNCTION collect_set; +DESCRIBE FUNCTION EXTENDED collect_set; + +set hive.map.aggr = false; +set hive.groupby.skewindata = false; + +SELECT key, collect_set(value) +FROM src +GROUP BY key ORDER BY key limit 20; + +set hive.map.aggr = true; +set hive.groupby.skewindata = false; + +SELECT key, collect_set(value) +FROM src +GROUP BY key ORDER BY key limit 20; + +set hive.map.aggr = false; +set hive.groupby.skewindata = true; + +SELECT key, collect_set(value) +FROM src +GROUP BY key ORDER BY key limit 20; + +set hive.map.aggr = true; +set hive.groupby.skewindata = true; + +SELECT key, collect_set(value) +FROM src +GROUP BY key ORDER BY key limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_context_ngrams.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_context_ngrams.q new file mode 100644 index 0000000000000..dda7aaa5f2041 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_context_ngrams.q @@ -0,0 +1,12 @@ +CREATE TABLE kafka (contents STRING); +LOAD DATA LOCAL INPATH '../data/files/text-en.txt' INTO TABLE kafka; +set mapred.reduce.tasks=1; +set hive.exec.reducers.max=1; + +SELECT context_ngrams(sentences(lower(contents)), array(null), 100, 1000).estfrequency FROM kafka; +SELECT context_ngrams(sentences(lower(contents)), array("he",null), 100, 1000) FROM kafka; +SELECT context_ngrams(sentences(lower(contents)), array(null,"salesmen"), 100, 1000) FROM kafka; +SELECT context_ngrams(sentences(lower(contents)), array("what","i",null), 100, 1000) FROM kafka; +SELECT context_ngrams(sentences(lower(contents)), array(null,null), 100, 1000).estfrequency FROM kafka; + +DROP TABLE kafka; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_corr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_corr.q new file mode 100644 index 0000000000000..6cc9ce2630dd1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_corr.q @@ -0,0 +1,16 @@ +DROP TABLE covar_tab; +CREATE TABLE covar_tab (a INT, b INT, c INT) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' +STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/covar_tab.txt' OVERWRITE +INTO TABLE covar_tab; + +DESCRIBE FUNCTION corr; +DESCRIBE FUNCTION EXTENDED corr; +SELECT corr(b, c) FROM covar_tab WHERE a < 1; +SELECT corr(b, c) FROM covar_tab WHERE a < 3; +SELECT corr(b, c) FROM covar_tab WHERE a = 3; +SELECT a, corr(b, c) FROM covar_tab GROUP BY a ORDER BY a; +SELECT corr(b, c) FROM covar_tab; + +DROP TABLE covar_tab; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_covar_pop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_covar_pop.q new file mode 100644 index 0000000000000..0f5d5f35bf02a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_covar_pop.q @@ -0,0 +1,16 @@ +DROP TABLE covar_tab; +CREATE TABLE covar_tab (a INT, b INT, c INT) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' +STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/covar_tab.txt' OVERWRITE +INTO TABLE covar_tab; + +DESCRIBE FUNCTION covar_pop; +DESCRIBE FUNCTION EXTENDED covar_pop; +SELECT covar_pop(b, c) FROM covar_tab WHERE a < 1; +SELECT covar_pop(b, c) FROM covar_tab WHERE a < 3; +SELECT covar_pop(b, c) FROM covar_tab WHERE a = 3; +SELECT a, covar_pop(b, c) FROM covar_tab GROUP BY a ORDER BY a; +SELECT covar_pop(b, c) FROM covar_tab; + +DROP TABLE covar_tab; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_covar_samp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_covar_samp.q new file mode 100644 index 0000000000000..72b9c4bd40049 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_covar_samp.q @@ -0,0 +1,16 @@ +DROP TABLE covar_tab; +CREATE TABLE covar_tab (a INT, b INT, c INT) +ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' +STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/covar_tab.txt' OVERWRITE +INTO TABLE covar_tab; + +DESCRIBE FUNCTION covar_samp; +DESCRIBE FUNCTION EXTENDED covar_samp; +SELECT covar_samp(b, c) FROM covar_tab WHERE a < 1; +SELECT covar_samp(b, c) FROM covar_tab WHERE a < 3; +SELECT covar_samp(b, c) FROM covar_tab WHERE a = 3; +SELECT a, covar_samp(b, c) FROM covar_tab GROUP BY a ORDER BY a; +SELECT covar_samp(b, c) FROM covar_tab; + +DROP TABLE covar_tab; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_histogram_numeric.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_histogram_numeric.q new file mode 100644 index 0000000000000..18bcd1c070a44 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_histogram_numeric.q @@ -0,0 +1,5 @@ + +SELECT histogram_numeric(cast(substr(src.value,5) AS double), 2) FROM src; +SELECT histogram_numeric(cast(substr(src.value,5) AS double), 3) FROM src; +SELECT histogram_numeric(cast(substr(src.value,5) AS double), 20) FROM src; +SELECT histogram_numeric(cast(substr(src.value,5) AS double), 200) FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_ngrams.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_ngrams.q new file mode 100644 index 0000000000000..31ffd29a88acd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_ngrams.q @@ -0,0 +1,12 @@ +CREATE TABLE kafka (contents STRING); +LOAD DATA LOCAL INPATH '../data/files/text-en.txt' INTO TABLE kafka; +set mapred.reduce.tasks=1; +set hive.exec.reducers.max=1; + +SELECT ngrams(sentences(lower(contents)), 1, 100, 1000).estfrequency FROM kafka; +SELECT ngrams(sentences(lower(contents)), 2, 100, 1000).estfrequency FROM kafka; +SELECT ngrams(sentences(lower(contents)), 3, 100, 1000).estfrequency FROM kafka; +SELECT ngrams(sentences(lower(contents)), 4, 100, 1000).estfrequency FROM kafka; +SELECT ngrams(sentences(lower(contents)), 5, 100, 1000).estfrequency FROM kafka; + +DROP TABLE kafka; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_number_format.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_number_format.q new file mode 100644 index 0000000000000..4f2ab453dc976 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_number_format.q @@ -0,0 +1,14 @@ + +EXPLAIN SELECT + sum('a'), + avg('a'), + variance('a'), + std('a') +FROM src; + +SELECT + sum('a'), + avg('a'), + variance('a'), + std('a') +FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_percentile_approx_20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_percentile_approx_20.q new file mode 100644 index 0000000000000..66c408d71bc1a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_percentile_approx_20.q @@ -0,0 +1,85 @@ +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.20, 0.20S) + +CREATE TABLE bucket (key double, value string) CLUSTERED BY (key) SORTED BY (key DESC) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket; +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket; +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket; +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket; + +create table t1 (result double); +create table t2 (result double); +create table t3 (result double); +create table t4 (result double); +create table t5 (result double); +create table t6 (result double); +create table t7 (result array); +create table t8 (result array); +create table t9 (result array); +create table t10 (result array); +create table t11 (result array); +create table t12 (result array); + +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.map.aggr=false; +-- disable map-side aggregation +FROM bucket +insert overwrite table t1 SELECT percentile_approx(cast(key AS double), 0.5) +insert overwrite table t2 SELECT percentile_approx(cast(key AS double), 0.5, 100) +insert overwrite table t3 SELECT percentile_approx(cast(key AS double), 0.5, 1000) + +insert overwrite table t4 SELECT percentile_approx(cast(key AS int), 0.5) +insert overwrite table t5 SELECT percentile_approx(cast(key AS int), 0.5, 100) +insert overwrite table t6 SELECT percentile_approx(cast(key AS int), 0.5, 1000) + +insert overwrite table t7 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98)) +insert overwrite table t8 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98), 100) +insert overwrite table t9 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98), 1000) + +insert overwrite table t10 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98)) +insert overwrite table t11 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98), 100) +insert overwrite table t12 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98), 1000); + +select * from t1; +select * from t2; +select * from t3; +select * from t4; +select * from t5; +select * from t6; +select * from t7; +select * from t8; +select * from t9; +select * from t10; +select * from t11; +select * from t12; + +set hive.map.aggr=true; +-- enable map-side aggregation +FROM bucket +insert overwrite table t1 SELECT percentile_approx(cast(key AS double), 0.5) +insert overwrite table t2 SELECT percentile_approx(cast(key AS double), 0.5, 100) +insert overwrite table t3 SELECT percentile_approx(cast(key AS double), 0.5, 1000) + +insert overwrite table t4 SELECT percentile_approx(cast(key AS int), 0.5) +insert overwrite table t5 SELECT percentile_approx(cast(key AS int), 0.5, 100) +insert overwrite table t6 SELECT percentile_approx(cast(key AS int), 0.5, 1000) + +insert overwrite table t7 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98)) +insert overwrite table t8 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98), 100) +insert overwrite table t9 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98), 1000) + +insert overwrite table t10 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98)) +insert overwrite table t11 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98), 100) +insert overwrite table t12 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98), 1000); + +select * from t1; +select * from t2; +select * from t3; +select * from t4; +select * from t5; +select * from t6; +select * from t7; +select * from t8; +select * from t9; +select * from t10; +select * from t11; +select * from t12; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q new file mode 100644 index 0000000000000..07bfb6e1fb2ab --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q @@ -0,0 +1,86 @@ +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- 0.23 changed input order of data in reducer task, which affects result of percentile_approx + +CREATE TABLE bucket (key double, value string) CLUSTERED BY (key) SORTED BY (key DESC) INTO 4 BUCKETS STORED AS TEXTFILE; +load data local inpath '../data/files/srcsortbucket1outof4.txt' INTO TABLE bucket; +load data local inpath '../data/files/srcsortbucket2outof4.txt' INTO TABLE bucket; +load data local inpath '../data/files/srcsortbucket3outof4.txt' INTO TABLE bucket; +load data local inpath '../data/files/srcsortbucket4outof4.txt' INTO TABLE bucket; + +create table t1 (result double); +create table t2 (result double); +create table t3 (result double); +create table t4 (result double); +create table t5 (result double); +create table t6 (result double); +create table t7 (result array); +create table t8 (result array); +create table t9 (result array); +create table t10 (result array); +create table t11 (result array); +create table t12 (result array); + +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; +set hive.map.aggr=false; +-- disable map-side aggregation +FROM bucket +insert overwrite table t1 SELECT percentile_approx(cast(key AS double), 0.5) +insert overwrite table t2 SELECT percentile_approx(cast(key AS double), 0.5, 100) +insert overwrite table t3 SELECT percentile_approx(cast(key AS double), 0.5, 1000) + +insert overwrite table t4 SELECT percentile_approx(cast(key AS int), 0.5) +insert overwrite table t5 SELECT percentile_approx(cast(key AS int), 0.5, 100) +insert overwrite table t6 SELECT percentile_approx(cast(key AS int), 0.5, 1000) + +insert overwrite table t7 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98)) +insert overwrite table t8 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98), 100) +insert overwrite table t9 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98), 1000) + +insert overwrite table t10 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98)) +insert overwrite table t11 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98), 100) +insert overwrite table t12 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98), 1000); + +select * from t1; +select * from t2; +select * from t3; +select * from t4; +select * from t5; +select * from t6; +select * from t7; +select * from t8; +select * from t9; +select * from t10; +select * from t11; +select * from t12; + +set hive.map.aggr=true; +-- enable map-side aggregation +FROM bucket +insert overwrite table t1 SELECT percentile_approx(cast(key AS double), 0.5) +insert overwrite table t2 SELECT percentile_approx(cast(key AS double), 0.5, 100) +insert overwrite table t3 SELECT percentile_approx(cast(key AS double), 0.5, 1000) + +insert overwrite table t4 SELECT percentile_approx(cast(key AS int), 0.5) +insert overwrite table t5 SELECT percentile_approx(cast(key AS int), 0.5, 100) +insert overwrite table t6 SELECT percentile_approx(cast(key AS int), 0.5, 1000) + +insert overwrite table t7 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98)) +insert overwrite table t8 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98), 100) +insert overwrite table t9 SELECT percentile_approx(cast(key AS double), array(0.05,0.5,0.95,0.98), 1000) + +insert overwrite table t10 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98)) +insert overwrite table t11 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98), 100) +insert overwrite table t12 SELECT percentile_approx(cast(key AS int), array(0.05,0.5,0.95,0.98), 1000); + +select * from t1; +select * from t2; +select * from t3; +select * from t4; +select * from t5; +select * from t6; +select * from t7; +select * from t8; +select * from t9; +select * from t10; +select * from t11; +select * from t12; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf1.q new file mode 100644 index 0000000000000..2292c3f5ec271 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf1.q @@ -0,0 +1,24 @@ +CREATE TABLE dest1(c1 STRING, c2 STRING, c3 STRING, c4 STRING, + c5 STRING, c6 STRING, c7 STRING, c8 STRING, + c9 STRING, c10 STRING, c11 STRING, c12 STRING, c13 STRING, + c14 STRING, c15 STRING, c16 STRING, c17 STRING, + c18 STRING, c19 STRING, c20 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT 'a' LIKE '%a%', 'b' LIKE '%a%', 'ab' LIKE '%a%', 'ab' LIKE '%a_', + '%_' LIKE '\%\_', 'ab' LIKE '\%\_', 'ab' LIKE '_a%', 'ab' LIKE 'a', + '' RLIKE '.*', 'a' RLIKE '[ab]', '' RLIKE '[ab]', 'hadoop' RLIKE '[a-z]*', 'hadoop' RLIKE 'o*', + REGEXP_REPLACE('abc', 'b', 'c'), REGEXP_REPLACE('abc', 'z', 'a'), REGEXP_REPLACE('abbbb', 'bb', 'b'), + REGEXP_REPLACE('hadoop', '(.)[a-z]*', '$1ive'), REGEXP_REPLACE('hadoopAAA','A.*',''), + REGEXP_REPLACE('abc', '', 'A'), 'abc' RLIKE '' + WHERE src.key = 86; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT 'a' LIKE '%a%', 'b' LIKE '%a%', 'ab' LIKE '%a%', 'ab' LIKE '%a_', + '%_' LIKE '\%\_', 'ab' LIKE '\%\_', 'ab' LIKE '_a%', 'ab' LIKE 'a', + '' RLIKE '.*', 'a' RLIKE '[ab]', '' RLIKE '[ab]', 'hadoop' RLIKE '[a-z]*', 'hadoop' RLIKE 'o*', + REGEXP_REPLACE('abc', 'b', 'c'), REGEXP_REPLACE('abc', 'z', 'a'), REGEXP_REPLACE('abbbb', 'bb', 'b'), + REGEXP_REPLACE('hadoop', '(.)[a-z]*', '$1ive'), REGEXP_REPLACE('hadoopAAA','A.*',''), + REGEXP_REPLACE('abc', '', 'A'), 'abc' RLIKE '' + WHERE src.key = 86; + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf2.q new file mode 100644 index 0000000000000..5aa99e85d170b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf2.q @@ -0,0 +1,8 @@ +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT ' abc ' WHERE src.key = 86; + +EXPLAIN +SELECT '|', trim(dest1.c1), '|', rtrim(dest1.c1), '|', ltrim(dest1.c1), '|' FROM dest1; + +SELECT '|', trim(dest1.c1), '|', rtrim(dest1.c1), '|', ltrim(dest1.c1), '|' FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf3.q new file mode 100644 index 0000000000000..dcffeea8dd4c8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf3.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(c1 STRING, c2 STRING, c3 STRING, c4 STRING, c5 STRING) STORED AS TEXTFILE; + +EXPLAIN +FROM src INSERT OVERWRITE TABLE dest1 SELECT count(CAST('' AS INT)), sum(CAST('' AS INT)), avg(CAST('' AS INT)), +min(CAST('' AS INT)), max(CAST('' AS INT)); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT count(CAST('' AS INT)), sum(CAST('' AS INT)), avg(CAST('' AS INT)), +min(CAST('' AS INT)), max(CAST('' AS INT)); + +SELECT dest1.* FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf4.q new file mode 100644 index 0000000000000..16f5b2cce2b03 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf4.q @@ -0,0 +1,51 @@ +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT ' abc ' WHERE src.key = 86; + +EXPLAIN +SELECT round(1.0), round(1.5), round(-1.5), floor(1.0), floor(1.5), floor(-1.5), sqrt(1.0), sqrt(-1.0), sqrt(0.0), ceil(1.0), ceil(1.5), ceil(-1.5), ceiling(1.0), rand(3), +3, -3, 1++2, 1+-2, + +~1, +~CAST(1 AS TINYINT), +~CAST(1 AS SMALLINT), +~CAST(1 AS BIGINT), + +CAST(1 AS TINYINT) & CAST(2 AS TINYINT), +CAST(1 AS SMALLINT) & CAST(2 AS SMALLINT), +1 & 2, +CAST(1 AS BIGINT) & CAST(2 AS BIGINT), + +CAST(1 AS TINYINT) | CAST(2 AS TINYINT), +CAST(1 AS SMALLINT) | CAST(2 AS SMALLINT), +1 | 2, +CAST(1 AS BIGINT) | CAST(2 AS BIGINT), + +CAST(1 AS TINYINT) ^ CAST(3 AS TINYINT), +CAST(1 AS SMALLINT) ^ CAST(3 AS SMALLINT), +1 ^ 3, +CAST(1 AS BIGINT) ^ CAST(3 AS BIGINT) + +FROM dest1; + +SELECT round(1.0), round(1.5), round(-1.5), floor(1.0), floor(1.5), floor(-1.5), sqrt(1.0), sqrt(-1.0), sqrt(0.0), ceil(1.0), ceil(1.5), ceil(-1.5), ceiling(1.0), rand(3), +3, -3, 1++2, 1+-2, +~1, +~CAST(1 AS TINYINT), +~CAST(1 AS SMALLINT), +~CAST(1 AS BIGINT), + +CAST(1 AS TINYINT) & CAST(2 AS TINYINT), +CAST(1 AS SMALLINT) & CAST(2 AS SMALLINT), +1 & 2, +CAST(1 AS BIGINT) & CAST(2 AS BIGINT), + +CAST(1 AS TINYINT) | CAST(2 AS TINYINT), +CAST(1 AS SMALLINT) | CAST(2 AS SMALLINT), +1 | 2, +CAST(1 AS BIGINT) | CAST(2 AS BIGINT), + +CAST(1 AS TINYINT) ^ CAST(3 AS TINYINT), +CAST(1 AS SMALLINT) ^ CAST(3 AS SMALLINT), +1 ^ 3, +CAST(1 AS BIGINT) ^ CAST(3 AS BIGINT) + +FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf5.q new file mode 100644 index 0000000000000..782e23dbfaefc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf5.q @@ -0,0 +1,13 @@ +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT ' abc ' WHERE src.key = 86; + +EXPLAIN +SELECT from_unixtime(1226446340), to_date(from_unixtime(1226446340)), day('2008-11-01'), month('2008-11-01'), year('2008-11-01'), day('2008-11-01 15:32:20'), month('2008-11-01 15:32:20'), year('2008-11-01 15:32:20') FROM dest1; + +SELECT from_unixtime(1226446340), to_date(from_unixtime(1226446340)), day('2008-11-01'), month('2008-11-01'), year('2008-11-01'), day('2008-11-01 15:32:20'), month('2008-11-01 15:32:20'), year('2008-11-01 15:32:20') FROM dest1; + +EXPLAIN +SELECT from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss'), from_unixtime(unix_timestamp('2010-01-13 11:57:40')) from dest1; + +SELECT from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss'), from_unixtime(unix_timestamp('2010-01-13 11:57:40')) from dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf6.q new file mode 100644 index 0000000000000..fd540d610a97e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf6.q @@ -0,0 +1,23 @@ +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT ' abc ' WHERE src.key = 86; + +EXPLAIN +SELECT IF(TRUE, 1, 2) FROM dest1; + +SELECT IF(TRUE, 1, 2) FROM dest1; + +EXPLAIN +SELECT IF(TRUE, 1, 2), IF(FALSE, 1, 2), IF(NULL, 1, 2), IF(TRUE, "a", "b"), + IF(TRUE, 0.1, 0.2), IF(FALSE, CAST(1 AS BIGINT), CAST(2 AS BIGINT)), + IF(FALSE, CAST(127 AS TINYINT), CAST(126 AS TINYINT)), + IF(FALSE, CAST(127 AS SMALLINT), CAST(128 AS SMALLINT)), + CAST(128 AS INT), CAST(1.0 AS DOUBLE), + CAST('128' AS STRING) FROM dest1; + +SELECT IF(TRUE, 1, 2), IF(FALSE, 1, 2), IF(NULL, 1, 2), IF(TRUE, "a", "b"), + IF(TRUE, 0.1, 0.2), IF(FALSE, CAST(1 AS BIGINT), CAST(2 AS BIGINT)), + IF(FALSE, CAST(127 AS TINYINT), CAST(126 AS TINYINT)), + IF(FALSE, CAST(127 AS SMALLINT), CAST(128 AS SMALLINT)), + CAST(128 AS INT), CAST(1.0 AS DOUBLE), + CAST('128' AS STRING) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf7.q new file mode 100644 index 0000000000000..d12394e2e7265 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf7.q @@ -0,0 +1,22 @@ +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT ' abc ' WHERE src.key = 86; + +EXPLAIN +SELECT ROUND(LN(3.0),12), LN(0.0), LN(-1), ROUND(LOG(3.0),12), LOG(0.0), + LOG(-1), ROUND(LOG2(3.0),12), LOG2(0.0), LOG2(-1), + ROUND(LOG10(3.0),12), LOG10(0.0), LOG10(-1), ROUND(LOG(2, 3.0),12), + LOG(2, 0.0), LOG(2, -1), LOG(0.5, 2), LOG(2, 0.5), ROUND(EXP(2.0),12), + POW(2,3), POWER(2,3), POWER(2,-3), POWER(0.5, -3), POWER(4, 0.5), + POWER(-1, 0.5), POWER(-1, 2), POWER(CAST (1 AS DECIMAL), CAST (0 AS INT)), + POWER(CAST (2 AS DECIMAL), CAST (3 AS INT)), + POW(CAST (2 AS DECIMAL), CAST(3 AS INT)) FROM dest1; + +SELECT ROUND(LN(3.0),12), LN(0.0), LN(-1), ROUND(LOG(3.0),12), LOG(0.0), + LOG(-1), ROUND(LOG2(3.0),12), LOG2(0.0), LOG2(-1), + ROUND(LOG10(3.0),12), LOG10(0.0), LOG10(-1), ROUND(LOG(2, 3.0),12), + LOG(2, 0.0), LOG(2, -1), LOG(0.5, 2), LOG(2, 0.5), ROUND(EXP(2.0),12), + POW(2,3), POWER(2,3), POWER(2,-3), POWER(0.5, -3), POWER(4, 0.5), + POWER(-1, 0.5), POWER(-1, 2), POWER(CAST (1 AS DECIMAL), CAST (0 AS INT)), + POWER(CAST (2 AS DECIMAL), CAST (3 AS INT)), + POW(CAST (2 AS DECIMAL), CAST(3 AS INT)) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf8.q new file mode 100644 index 0000000000000..a9e696369a047 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf8.q @@ -0,0 +1,10 @@ +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT '' WHERE src.key = 86; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT '1' WHERE src.key = 86; + +EXPLAIN +SELECT avg(c1), sum(c1), count(c1) FROM dest1; + +SELECT avg(c1), sum(c1), count(c1) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf9.q new file mode 100644 index 0000000000000..3b179b338e991 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf9.q @@ -0,0 +1,20 @@ +EXPLAIN +SELECT DATEDIFF('2008-12-31', '2009-01-01'), DATEDIFF('2008-03-01', '2008-02-28'), + DATEDIFF('2007-03-01', '2007-01-28'), DATEDIFF('2008-03-01 23:59:59', '2008-03-02 00:00:00'), + DATE_ADD('2008-12-31', 1), DATE_ADD('2008-12-31', 365), + DATE_ADD('2008-02-28', 2), DATE_ADD('2009-02-28', 2), + DATE_ADD('2007-02-28', 365), DATE_ADD('2007-02-28 23:59:59', 730), + DATE_SUB('2009-01-01', 1), DATE_SUB('2009-01-01', 365), + DATE_SUB('2008-02-28', 2), DATE_SUB('2009-02-28', 2), + DATE_SUB('2007-02-28', 365), DATE_SUB('2007-02-28 01:12:34', 730) + FROM src WHERE src.key = 86; + +SELECT DATEDIFF('2008-12-31', '2009-01-01'), DATEDIFF('2008-03-01', '2008-02-28'), + DATEDIFF('2007-03-01', '2007-01-28'), DATEDIFF('2008-03-01 23:59:59', '2008-03-02 00:00:00'), + DATE_ADD('2008-12-31', 1), DATE_ADD('2008-12-31', 365), + DATE_ADD('2008-02-28', 2), DATE_ADD('2009-02-28', 2), + DATE_ADD('2007-02-28', 365), DATE_ADD('2007-02-28 23:59:59', 730), + DATE_SUB('2009-01-01', 1), DATE_SUB('2009-01-01', 365), + DATE_SUB('2008-03-01', 2), DATE_SUB('2009-03-01', 2), + DATE_SUB('2007-02-28', 365), DATE_SUB('2007-02-28 01:12:34', 730) + FROM src WHERE src.key = 86; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_10_trims.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_10_trims.q new file mode 100644 index 0000000000000..8a7e3a520751e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_10_trims.q @@ -0,0 +1,12 @@ +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +EXPLAIN +INSERT OVERWRITE TABLE dest1 +SELECT trim(trim(trim(trim(trim(trim(trim(trim(trim(trim( ' abc ')))))))))) +FROM src +WHERE src.key = 86; + +INSERT OVERWRITE TABLE dest1 +SELECT trim(trim(trim(trim(trim(trim(trim(trim(trim(trim( ' abc ')))))))))) +FROM src +WHERE src.key = 86; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_E.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_E.q new file mode 100644 index 0000000000000..113af61062b0d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_E.q @@ -0,0 +1,14 @@ +explain +select E() FROM src LIMIT 1; + +select E() FROM src LIMIT 1; + +DESCRIBE FUNCTION E; +DESCRIBE FUNCTION EXTENDED E; +explain +select E() FROM src LIMIT 1; + +select E() FROM src LIMIT 1; + +DESCRIBE FUNCTION E; +DESCRIBE FUNCTION EXTENDED E; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_PI.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_PI.q new file mode 100644 index 0000000000000..1fde7df5d251e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_PI.q @@ -0,0 +1,14 @@ +explain +select PI() FROM src LIMIT 1; + +select PI() FROM src LIMIT 1; + +DESCRIBE FUNCTION PI; +DESCRIBE FUNCTION EXTENDED PI; +explain +select PI() FROM src LIMIT 1; + +select PI() FROM src LIMIT 1; + +DESCRIBE FUNCTION PI; +DESCRIBE FUNCTION EXTENDED PI; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_abs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_abs.q new file mode 100644 index 0000000000000..f4f227d0dc168 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_abs.q @@ -0,0 +1,30 @@ +DESCRIBE FUNCTION abs; +DESCRIBE FUNCTION EXTENDED abs; + +EXPLAIN SELECT + abs(0), + abs(-1), + abs(123), + abs(-9223372036854775807), + abs(9223372036854775807) +FROM src LIMIT 1; + +SELECT + abs(0), + abs(-1), + abs(123), + abs(-9223372036854775807), + abs(9223372036854775807) +FROM src LIMIT 1; + +EXPLAIN SELECT + abs(0.0), + abs(-3.14159265), + abs(3.14159265) +FROM src LIMIT 1; + +SELECT + abs(0.0), + abs(-3.14159265), + abs(3.14159265) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_acos.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_acos.q new file mode 100644 index 0000000000000..625a2aa5c6aa6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_acos.q @@ -0,0 +1,14 @@ +DESCRIBE FUNCTION acos; +DESCRIBE FUNCTION EXTENDED acos; + +SELECT acos(null) +FROM src LIMIT 1; + +SELECT acos(0) +FROM src LIMIT 1; + +SELECT acos(-0.5), asin(0.66) +FROM src LIMIT 1; + +SELECT acos(2) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_add.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_add.q new file mode 100644 index 0000000000000..dbc3940f450ea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_add.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION +; +DESCRIBE FUNCTION EXTENDED +; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_array.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_array.q new file mode 100644 index 0000000000000..fca8fe8d1c00c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_array.q @@ -0,0 +1,8 @@ +DESCRIBE FUNCTION array; +DESCRIBE FUNCTION EXTENDED array; + +EXPLAIN SELECT array(), array()[1], array(1, 2, 3), array(1, 2, 3)[2], array(1,"a", 2, 3), array(1,"a", 2, 3)[2], +array(array(1), array(2), array(3), array(4))[1][0] FROM src LIMIT 1; + +SELECT array(), array()[1], array(1, 2, 3), array(1, 2, 3)[2], array(1,"a", 2, 3), array(1,"a", 2, 3)[2], +array(array(1), array(2), array(3), array(4))[1][0] FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_array_contains.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_array_contains.q new file mode 100644 index 0000000000000..937bb0be03bd3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_array_contains.q @@ -0,0 +1,9 @@ +DESCRIBE FUNCTION array_contains; +DESCRIBE FUNCTION EXTENDED array_contains; + +-- evalutes function for array of primitives +SELECT array_contains(array(1, 2, 3), 1) FROM src LIMIT 1; + +-- evaluates function for nested arrays +SELECT array_contains(array(array(1,2), array(2,3), array(3,4)), array(1,2)) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ascii.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ascii.q new file mode 100644 index 0000000000000..53b389fd38fd8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ascii.q @@ -0,0 +1,14 @@ +DESCRIBE FUNCTION ascii; +DESCRIBE FUNCTION EXTENDED ascii; + +EXPLAIN SELECT + ascii('Facebook'), + ascii(''), + ascii('!') +FROM src LIMIT 1; + +SELECT + ascii('Facebook'), + ascii(''), + ascii('!') +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_asin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_asin.q new file mode 100644 index 0000000000000..f95a5f57df8f8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_asin.q @@ -0,0 +1,14 @@ +DESCRIBE FUNCTION asin; +DESCRIBE FUNCTION EXTENDED asin; + +SELECT asin(null) +FROM src LIMIT 1; + +SELECT asin(0) +FROM src LIMIT 1; + +SELECT asin(-0.5), asin(0.66) +FROM src LIMIT 1; + +SELECT asin(2) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_atan.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_atan.q new file mode 100644 index 0000000000000..d4ef03deb81b0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_atan.q @@ -0,0 +1,16 @@ +DESCRIBE FUNCTION atan; +DESCRIBE FUNCTION EXTENDED atan; + +SELECT atan(null) +FROM src LIMIT 1; + +SELECT atan(1), atan(6), atan(-1.0) +FROM src LIMIT 1; +DESCRIBE FUNCTION atan; +DESCRIBE FUNCTION EXTENDED atan; + +SELECT atan(null) +FROM src LIMIT 1; + +SELECT atan(1), atan(6), atan(-1.0) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_avg.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_avg.q new file mode 100644 index 0000000000000..5c95bc407b63c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_avg.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION avg; +DESCRIBE FUNCTION EXTENDED avg; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_between.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_between.q new file mode 100644 index 0000000000000..eb3ccea82e631 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_between.q @@ -0,0 +1,14 @@ +describe function between; +describe function extended between; + +explain SELECT * FROM src where key + 100 between (150 + -50) AND (150 + 50) LIMIT 20; +SELECT * FROM src where key + 100 between (150 + -50) AND (150 + 50) LIMIT 20; + +explain SELECT * FROM src where key + 100 not between (150 + -50) AND (150 + 50) LIMIT 20; +SELECT * FROM src where key + 100 not between (150 + -50) AND (150 + 50) LIMIT 20; + +explain SELECT * FROM src where 'b' between 'a' AND 'c' LIMIT 1; +SELECT * FROM src where 'b' between 'a' AND 'c' LIMIT 1; + +explain SELECT * FROM src where 2 between 2 AND '3' LIMIT 1; +SELECT * FROM src where 2 between 2 AND '3' LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bigint.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bigint.q new file mode 100644 index 0000000000000..e430866bf0952 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bigint.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION bigint; +DESCRIBE FUNCTION EXTENDED bigint; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bin.q new file mode 100644 index 0000000000000..2b9ad62a39dbe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bin.q @@ -0,0 +1,11 @@ +DESCRIBE FUNCTION bin; +DESCRIBE FUNCTION EXTENDED bin; + +SELECT + bin(1), + bin(0), + bin(99992421) +FROM src LIMIT 1; + +-- Negative numbers should be treated as two's complement (64 bit). +SELECT bin(-5) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_and.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_and.q new file mode 100644 index 0000000000000..7ea50dac31d07 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_and.q @@ -0,0 +1,12 @@ +select ewah_bitmap_and(array(13,2,4,8589934592,4096,0), array(13,2,4,8589934592,4096,0)) from src limit 1; +select ewah_bitmap_and(array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0)) from src limit 1; + +drop table bitmap_test; +create table bitmap_test (a array, b array); + +insert overwrite table bitmap_test +select array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0) from src limit 10; + +select ewah_bitmap_and(a,b) from bitmap_test; + +drop table bitmap_test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_empty.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_empty.q new file mode 100644 index 0000000000000..88e961683e289 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_empty.q @@ -0,0 +1,3 @@ +select ewah_bitmap_empty(array(13,2,4,8589934592,0,0)) from src limit 1; + +select ewah_bitmap_empty(array(13,2,4,8589934592,4096,0)) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_or.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_or.q new file mode 100644 index 0000000000000..0b71e681a53d5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitmap_or.q @@ -0,0 +1,12 @@ +select ewah_bitmap_or(array(13,2,4,8589934592,4096,0), array(13,2,4,8589934592,4096,0)) from src limit 1; +select ewah_bitmap_or(array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0)) from src limit 1; + +drop table bitmap_test; +create table bitmap_test (a array, b array); + +insert overwrite table bitmap_test +select array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0) from src limit 10; + +select ewah_bitmap_or(a,b) from bitmap_test; + +drop table bitmap_test; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_and.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_and.q new file mode 100644 index 0000000000000..8e40111c1ff84 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_and.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION &; +DESCRIBE FUNCTION EXTENDED &; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_not.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_not.q new file mode 100644 index 0000000000000..fdd5485446520 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_not.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION ~; +DESCRIBE FUNCTION EXTENDED ~; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_or.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_or.q new file mode 100644 index 0000000000000..55375db9be5d7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_or.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION |; +DESCRIBE FUNCTION EXTENDED |; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_xor.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_xor.q new file mode 100644 index 0000000000000..9c4ee7366232f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_bitwise_xor.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION ^; +DESCRIBE FUNCTION EXTENDED ^; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_boolean.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_boolean.q new file mode 100644 index 0000000000000..1dc5017b340f7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_boolean.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION boolean; +DESCRIBE FUNCTION EXTENDED boolean; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case.q new file mode 100644 index 0000000000000..4f71e70e1f3bf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case.q @@ -0,0 +1,63 @@ +DESCRIBE FUNCTION case; +DESCRIBE FUNCTION EXTENDED case; + +EXPLAIN +SELECT CASE 1 + WHEN 1 THEN 2 + WHEN 3 THEN 4 + ELSE 5 + END, + CASE 2 + WHEN 1 THEN 2 + ELSE 5 + END, + CASE 14 + WHEN 12 THEN 13 + WHEN 14 THEN 15 + END, + CASE 16 + WHEN 12 THEN 13 + WHEN 14 THEN 15 + END, + CASE 17 + WHEN 18 THEN NULL + WHEN 17 THEN 20 + END, + CASE 21 + WHEN 22 THEN 23 + WHEN 21 THEN 24 + END +FROM src LIMIT 1; + +SELECT CASE 1 + WHEN 1 THEN 2 + WHEN 3 THEN 4 + ELSE 5 + END, + CASE 2 + WHEN 1 THEN 2 + ELSE 5 + END, + CASE 14 + WHEN 12 THEN 13 + WHEN 14 THEN 15 + END, + CASE 16 + WHEN 12 THEN 13 + WHEN 14 THEN 15 + END, + CASE 17 + WHEN 18 THEN NULL + WHEN 17 THEN 20 + END, + CASE 21 + WHEN 22 THEN 23 + WHEN 21 THEN 24 + END +FROM src LIMIT 1; + +-- verify that short-circuiting is working correctly for CASE +-- we should never get to the ELSE branch, which would raise an exception +SELECT CASE 1 WHEN 1 THEN 'yo' +ELSE reflect('java.lang.String', 'bogus', 1) END +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case_column_pruning.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case_column_pruning.q new file mode 100644 index 0000000000000..da925515b30da --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case_column_pruning.q @@ -0,0 +1,18 @@ +EXPLAIN +SELECT CASE a.key + WHEN '1' THEN 2 + WHEN '3' THEN 4 + ELSE 5 + END as key +FROM src a JOIN src b +ON a.key = b.key +ORDER BY key LIMIT 10; + +SELECT CASE a.key + WHEN '1' THEN 2 + WHEN '3' THEN 4 + ELSE 5 + END as key +FROM src a JOIN src b +ON a.key = b.key +ORDER BY key LIMIT 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case_thrift.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case_thrift.q new file mode 100644 index 0000000000000..736bb053cddc7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_case_thrift.q @@ -0,0 +1,34 @@ +EXPLAIN +SELECT CASE src_thrift.lint[0] + WHEN 0 THEN src_thrift.lint[0] + 1 + WHEN 1 THEN src_thrift.lint[0] + 2 + WHEN 2 THEN 100 + ELSE 5 + END, + CASE src_thrift.lstring[0] + WHEN '0' THEN 'zero' + WHEN '10' THEN CONCAT(src_thrift.lstring[0], " is ten") + ELSE 'default' + END, + (CASE src_thrift.lstring[0] + WHEN '0' THEN src_thrift.lstring + ELSE NULL + END)[0] +FROM src_thrift LIMIT 3; + +SELECT CASE src_thrift.lint[0] + WHEN 0 THEN src_thrift.lint[0] + 1 + WHEN 1 THEN src_thrift.lint[0] + 2 + WHEN 2 THEN 100 + ELSE 5 + END, + CASE src_thrift.lstring[0] + WHEN '0' THEN 'zero' + WHEN '10' THEN CONCAT(src_thrift.lstring[0], " is ten") + ELSE 'default' + END, + (CASE src_thrift.lstring[0] + WHEN '0' THEN src_thrift.lstring + ELSE NULL + END)[0] +FROM src_thrift LIMIT 3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ceil.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ceil.q new file mode 100644 index 0000000000000..34a91e18500fb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ceil.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION ceil; +DESCRIBE FUNCTION EXTENDED ceil; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ceiling.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ceiling.q new file mode 100644 index 0000000000000..d830b4db4f67f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ceiling.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION ceiling; +DESCRIBE FUNCTION EXTENDED ceiling; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_coalesce.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_coalesce.q new file mode 100644 index 0000000000000..48ca29cbc3ba6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_coalesce.q @@ -0,0 +1,54 @@ +DESCRIBE FUNCTION coalesce; +DESCRIBE FUNCTION EXTENDED coalesce; + +EXPLAIN +SELECT COALESCE(1), + COALESCE(1, 2), + COALESCE(NULL, 2), + COALESCE(1, NULL), + COALESCE(NULL, NULL, 3), + COALESCE(4, NULL, NULL, NULL), + COALESCE('1'), + COALESCE('1', '2'), + COALESCE(NULL, '2'), + COALESCE('1', NULL), + COALESCE(NULL, NULL, '3'), + COALESCE('4', NULL, NULL, NULL), + COALESCE(1.0), + COALESCE(1.0, 2.0), + COALESCE(NULL, 2.0), + COALESCE(NULL, 2.0, 3.0), + COALESCE(2.0, NULL, 3.0), + COALESCE(IF(TRUE, NULL, 0), NULL) +FROM src LIMIT 1; + +SELECT COALESCE(1), + COALESCE(1, 2), + COALESCE(NULL, 2), + COALESCE(1, NULL), + COALESCE(NULL, NULL, 3), + COALESCE(4, NULL, NULL, NULL), + COALESCE('1'), + COALESCE('1', '2'), + COALESCE(NULL, '2'), + COALESCE('1', NULL), + COALESCE(NULL, NULL, '3'), + COALESCE('4', NULL, NULL, NULL), + COALESCE(1.0), + COALESCE(1.0, 2.0), + COALESCE(NULL, 2.0), + COALESCE(NULL, 2.0, 3.0), + COALESCE(2.0, NULL, 3.0), + COALESCE(IF(TRUE, NULL, 0), NULL) +FROM src LIMIT 1; + +EXPLAIN +SELECT COALESCE(src_thrift.lint[1], 999), + COALESCE(src_thrift.lintstring[0].mystring, '999'), + COALESCE(src_thrift.mstringstring['key_2'], '999') +FROM src_thrift; + +SELECT COALESCE(src_thrift.lint[1], 999), + COALESCE(src_thrift.lintstring[0].mystring, '999'), + COALESCE(src_thrift.mstringstring['key_2'], '999') +FROM src_thrift; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_compare_java_string.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_compare_java_string.q new file mode 100644 index 0000000000000..6c12f81304e46 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_compare_java_string.q @@ -0,0 +1,10 @@ +EXPLAIN +CREATE TEMPORARY FUNCTION test_udf_get_java_string AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaString'; + +CREATE TEMPORARY FUNCTION test_udf_get_java_string AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFTestGetJavaString'; + +select * from src where value = test_udf_get_java_string("val_66"); +select * from (select * from src where value = 'val_66' or value = 'val_8') t where value <> test_udf_get_java_string("val_8"); + + +DROP TEMPORARY FUNCTION test_udf_get_java_boolean; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat.q new file mode 100644 index 0000000000000..f642f6a2d00df --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat.q @@ -0,0 +1,15 @@ +DESCRIBE FUNCTION concat; +DESCRIBE FUNCTION EXTENDED concat; + +SELECT + concat('a', 'b'), + concat('a', 'b', 'c'), + concat('a', null, 'c'), + concat(null), + concat('a'), + concat(null, 1, 2), + concat(1, 2, 3, 'a'), + concat(1, 2), + concat(1), + concat('1234', 'abc', 'extra argument') +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_insert1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_insert1.q new file mode 100644 index 0000000000000..496f40372d088 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_insert1.q @@ -0,0 +1,7 @@ +CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', concat(src.key) WHERE src.key < 100 group by src.key; + +SELECT dest1.* FROM dest1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_insert2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_insert2.q new file mode 100644 index 0000000000000..6d1353feacd2d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_insert2.q @@ -0,0 +1,8 @@ +CREATE TABLE dest1(key STRING, value STRING) STORED AS TEXTFILE; + +FROM src +INSERT OVERWRITE TABLE dest1 SELECT concat('1234', 'abc', 'extra argument'), src.value WHERE src.key < 100; + +SELECT dest1.* FROM dest1; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_ws.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_ws.q new file mode 100644 index 0000000000000..6a0ce20dc37b7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_concat_ws.q @@ -0,0 +1,43 @@ +DESCRIBE FUNCTION concat_ws; +DESCRIBE FUNCTION EXTENDED concat_ws; + +CREATE TABLE dest1(c1 STRING, c2 STRING, c3 STRING); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT 'abc', 'xyz', '8675309' WHERE src.key = 86; + +EXPLAIN +SELECT concat_ws(dest1.c1, dest1.c2, dest1.c3), + concat_ws(',', dest1.c1, dest1.c2, dest1.c3), + concat_ws(NULL, dest1.c1, dest1.c2, dest1.c3), + concat_ws('**', dest1.c1, NULL, dest1.c3) FROM dest1; + +SELECT concat_ws(dest1.c1, dest1.c2, dest1.c3), + concat_ws(',', dest1.c1, dest1.c2, dest1.c3), + concat_ws(NULL, dest1.c1, dest1.c2, dest1.c3), + concat_ws('**', dest1.c1, NULL, dest1.c3) FROM dest1; + +-- evalutes function for array of strings +EXPLAIN +SELECT concat_ws('.', array('www', 'face', 'book', 'com'), '1234'), + concat_ws('-', 'www', array('face', 'book', 'com'), '1234'), + concat_ws('F', 'www', array('face', 'book', 'com', '1234')), + concat_ws('_', array('www', 'face'), array('book', 'com', '1234')), + concat_ws('**', 'www', array('face'), array('book', 'com', '1234')), + concat_ws('[]', array('www'), 'face', array('book', 'com', '1234')), + concat_ws('AAA', array('www'), array('face', 'book', 'com'), '1234') FROM dest1 LIMIT 1; + +SELECT concat_ws('.', array('www', 'face', 'book', 'com'), '1234'), + concat_ws('-', 'www', array('face', 'book', 'com'), '1234'), + concat_ws('F', 'www', array('face', 'book', 'com', '1234')), + concat_ws('_', array('www', 'face'), array('book', 'com', '1234')), + concat_ws('**', 'www', array('face'), array('book', 'com', '1234')), + concat_ws('[]', array('www'), 'face', array('book', 'com', '1234')), + concat_ws('AAA', array('www'), array('face', 'book', 'com'), '1234') FROM dest1 LIMIT 1; + +SELECT concat_ws(NULL, array('www', 'face', 'book', 'com'), '1234'), + concat_ws(NULL, 'www', array('face', 'book', 'com'), '1234'), + concat_ws(NULL, 'www', array('face', 'book', 'com', '1234')), + concat_ws(NULL, array('www', 'face'), array('book', 'com', '1234')), + concat_ws(NULL, 'www', array('face'), array('book', 'com', '1234')), + concat_ws(NULL, array('www'), 'face', array('book', 'com', '1234')), + concat_ws(NULL, array('www'), array('face', 'book', 'com'), '1234') FROM dest1 LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_context_aware.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_context_aware.q new file mode 100644 index 0000000000000..04cb512f4a3eb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_context_aware.q @@ -0,0 +1,5 @@ +create temporary function counter as 'org.apache.hadoop.hive.ql.udf.generic.DummyContextUDF'; + +set hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +select *, counter(key) from src limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_conv.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_conv.q new file mode 100644 index 0000000000000..212bcfb57938f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_conv.q @@ -0,0 +1,75 @@ +DESCRIBE FUNCTION conv; +DESCRIBE FUNCTION EXTENDED conv; + +-- conv must work on both strings and integers up to 64-bit precision + +-- Some simple conversions to test different bases +SELECT + conv('4521', 10, 36), + conv('22', 10, 10), + conv('110011', 2, 16), + conv('facebook', 36, 16) +FROM src LIMIT 1; + +-- Test negative numbers. If to_base is positive, the number should be handled +-- as a two's complement (64-bit) +SELECT + conv('-641', 10, -10), + conv('1011', 2, -16), + conv('-1', 10, 16), + conv('-15', 10, 16) +FROM src LIMIT 1; + +-- Test overflow. If a number is two large, the result should be -1 (if signed) +-- or MAX_LONG (if unsigned) +SELECT + conv('9223372036854775807', 36, 16), + conv('9223372036854775807', 36, -16), + conv('-9223372036854775807', 36, 16), + conv('-9223372036854775807', 36, -16) +FROM src LIMIT 1; + +-- Test with invalid input. If one of the bases is invalid, the result should +-- be NULL. If there is an invalid digit in the number, the longest valid +-- prefix should be converted. +SELECT + conv('123455', 3, 10), + conv('131', 1, 5), + conv('515', 5, 100), + conv('10', -2, 2) +FROM src LIMIT 1; + +-- Perform the same tests with number arguments. + +SELECT + conv(4521, 10, 36), + conv(22, 10, 10), + conv(110011, 2, 16) +FROM src LIMIT 1; + +SELECT + conv(-641, 10, -10), + conv(1011, 2, -16), + conv(-1, 10, 16), + conv(-15, 10, 16) +FROM src LIMIT 1; + +SELECT + conv(9223372036854775807, 36, 16), + conv(9223372036854775807, 36, -16), + conv(-9223372036854775807, 36, 16), + conv(-9223372036854775807, 36, -16) +FROM src LIMIT 1; + +SELECT + conv(123455, 3, 10), + conv(131, 1, 5), + conv(515, 5, 100), + conv('10', -2, 2) +FROM src LIMIT 1; + +-- Make sure that state is properly reset. + +SELECT conv(key, 10, 16), + conv(key, 16, 10) +FROM src LIMIT 3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_cos.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_cos.q new file mode 100644 index 0000000000000..7887c4c2603f1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_cos.q @@ -0,0 +1,8 @@ +DESCRIBE FUNCTION cos; +DESCRIBE FUNCTION EXTENDED cos; + +SELECT cos(null) +FROM src LIMIT 1; + +SELECT cos(0.98), cos(1.57), cos(-0.5) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_count.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_count.q new file mode 100644 index 0000000000000..022d7a9f8dd4d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_count.q @@ -0,0 +1,20 @@ +DESCRIBE FUNCTION count; +DESCRIBE FUNCTION EXTENDED count; + +EXPLAIN SELECT count(key) FROM src; +SELECT count(key) FROM src; + +EXPLAIN SELECT count(DISTINCT key) FROM src; +SELECT count(DISTINCT key) FROM src; + +EXPLAIN SELECT count(DISTINCT key, value) FROM src; +SELECT count(DISTINCT key, value) FROM src; + +EXPLAIN SELECT count(*) FROM src; +SELECT count(*) FROM src; + +EXPLAIN SELECT count(1) FROM src; +SELECT count(1) FROM src; + +select count(1) from src where false; +select count(*) from src where false; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_date_add.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_date_add.q new file mode 100644 index 0000000000000..52e19ed3f417d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_date_add.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION date_add; +DESCRIBE FUNCTION EXTENDED date_add; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_date_sub.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_date_sub.q new file mode 100644 index 0000000000000..9fdef94456d06 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_date_sub.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION date_sub; +DESCRIBE FUNCTION EXTENDED date_sub; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_datediff.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_datediff.q new file mode 100644 index 0000000000000..30718fe8e4d5c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_datediff.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION datediff; +DESCRIBE FUNCTION EXTENDED datediff; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_day.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_day.q new file mode 100644 index 0000000000000..fb9b57da015bb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_day.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION day; +DESCRIBE FUNCTION EXTENDED day; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_dayofmonth.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_dayofmonth.q new file mode 100644 index 0000000000000..ab30f1d69b4af --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_dayofmonth.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION dayofmonth; +DESCRIBE FUNCTION EXTENDED dayofmonth; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_degrees.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_degrees.q new file mode 100644 index 0000000000000..014ca1c6e6afb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_degrees.q @@ -0,0 +1,14 @@ +explain +select degrees(PI()) FROM src LIMIT 1; + +select degrees(PI()) FROM src LIMIT 1; + +DESCRIBE FUNCTION degrees; +DESCRIBE FUNCTION EXTENDED degrees; +explain +select degrees(PI()) FROM src LIMIT 1; + +select degrees(PI()) FROM src LIMIT 1; + +DESCRIBE FUNCTION degrees; +DESCRIBE FUNCTION EXTENDED degrees; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_div.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_div.q new file mode 100644 index 0000000000000..4229e625a042a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_div.q @@ -0,0 +1,4 @@ +DESCRIBE FUNCTION div; +DESCRIBE FUNCTION EXTENDED div; + +SELECT 3 DIV 2 FROM SRC LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_divide.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_divide.q new file mode 100644 index 0000000000000..dc4b2e7884d68 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_divide.q @@ -0,0 +1,4 @@ +DESCRIBE FUNCTION /; +DESCRIBE FUNCTION EXTENDED /; + +SELECT 3 / 2 FROM SRC LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_double.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_double.q new file mode 100644 index 0000000000000..974dbf1595513 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_double.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION double; +DESCRIBE FUNCTION EXTENDED double; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_elt.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_elt.q new file mode 100644 index 0000000000000..c32340ac89feb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_elt.q @@ -0,0 +1,29 @@ +DESCRIBE FUNCTION elt; +DESCRIBE FUNCTION EXTENDED elt; + +EXPLAIN +SELECT elt(2, 'abc', 'defg'), + elt(3, 'aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'), + elt('1', 'abc', 'defg'), + elt(2, 'aa', CAST('2' AS TINYINT)), + elt(2, 'aa', CAST('12345' AS SMALLINT)), + elt(2, 'aa', CAST('123456789012' AS BIGINT)), + elt(2, 'aa', CAST(1.25 AS FLOAT)), + elt(2, 'aa', CAST(16.0 AS DOUBLE)), + elt(null, 'abc', 'defg'), + elt(0, 'abc', 'defg'), + elt(3, 'abc', 'defg') +FROM src LIMIT 1; + +SELECT elt(2, 'abc', 'defg'), + elt(3, 'aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'), + elt('1', 'abc', 'defg'), + elt(2, 'aa', CAST('2' AS TINYINT)), + elt(2, 'aa', CAST('12345' AS SMALLINT)), + elt(2, 'aa', CAST('123456789012' AS BIGINT)), + elt(2, 'aa', CAST(1.25 AS FLOAT)), + elt(2, 'aa', CAST(16.0 AS DOUBLE)), + elt(null, 'abc', 'defg'), + elt(0, 'abc', 'defg'), + elt(3, 'abc', 'defg') +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_equal.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_equal.q new file mode 100644 index 0000000000000..f5e9a7df4be00 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_equal.q @@ -0,0 +1,12 @@ +DESCRIBE FUNCTION =; +DESCRIBE FUNCTION EXTENDED =; + +DESCRIBE FUNCTION ==; +DESCRIBE FUNCTION EXTENDED ==; + +SELECT true=false, false=true, false=false, true=true, NULL=NULL, true=NULL, NULL=true, false=NULL, NULL=false FROM src LIMIT 1; + +DESCRIBE FUNCTION <=>; +DESCRIBE FUNCTION EXTENDED <=>; + +SELECT true<=>false, false<=>true, false<=>false, true<=>true, NULL<=>NULL, true<=>NULL, NULL<=>true, false<=>NULL, NULL<=>false FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_exp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_exp.q new file mode 100644 index 0000000000000..612c9a75760f9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_exp.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION exp; +DESCRIBE FUNCTION EXTENDED exp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_explode.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_explode.q new file mode 100644 index 0000000000000..19af288ff8404 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_explode.q @@ -0,0 +1,22 @@ +DESCRIBE FUNCTION explode; +DESCRIBE FUNCTION EXTENDED explode; + +EXPLAIN EXTENDED SELECT explode(array(1,2,3)) AS myCol FROM src LIMIT 3; +EXPLAIN EXTENDED SELECT a.myCol, count(1) FROM (SELECT explode(array(1,2,3)) AS myCol FROM src LIMIT 3) a GROUP BY a.myCol; + +SELECT explode(array(1,2,3)) AS myCol FROM src LIMIT 3; +SELECT explode(array(1,2,3)) AS (myCol) FROM src LIMIT 3; +SELECT a.myCol, count(1) FROM (SELECT explode(array(1,2,3)) AS myCol FROM src LIMIT 3) a GROUP BY a.myCol; + +EXPLAIN EXTENDED SELECT explode(map(1,'one',2,'two',3,'three')) AS (key,val) FROM src LIMIT 3; +EXPLAIN EXTENDED SELECT a.key, a.val, count(1) FROM (SELECT explode(map(1,'one',2,'two',3,'three')) AS (key,val) FROM src LIMIT 3) a GROUP BY a.key, a.val; + +SELECT explode(map(1,'one',2,'two',3,'three')) AS (key,val) FROM src LIMIT 3; +SELECT a.key, a.val, count(1) FROM (SELECT explode(map(1,'one',2,'two',3,'three')) AS (key,val) FROM src LIMIT 3) a GROUP BY a.key, a.val; + +drop table lazy_array_map; +create table lazy_array_map (map_col map, array_col array); +INSERT OVERWRITE TABLE lazy_array_map select map(1,'one',2,'two',3,'three'), array('100','200','300') FROM src LIMIT 1; + +SELECT array_col, myCol from lazy_array_map lateral view explode(array_col) X AS myCol; +SELECT map_col, myKey, myValue from lazy_array_map lateral view explode(map_col) X AS myKey, myValue; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_field.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_field.q new file mode 100644 index 0000000000000..e995f5cf3c084 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_field.q @@ -0,0 +1,55 @@ +DESCRIBE FUNCTION field; +DESCRIBE FUNCTION EXTENDED field; + +SELECT + field("x", "a", "b", "c", "d"), + field(NULL, "a", "b", "c", "d"), + field(0, 1, 2, 3, 4) +FROM src LIMIT 1; + +SELECT + field("a", "a", "b", "c", "d"), + field("b", "a", "b", "c", "d"), + field("c", "a", "b", "c", "d"), + field("d", "a", "b", "c", "d"), + field("d", "a", "b", NULL, "d") +FROM src LIMIT 1; + +SELECT + field(1, 1, 2, 3, 4), + field(2, 1, 2, 3, 4), + field(3, 1, 2, 3, 4), + field(4, 1, 2, 3, 4), + field(4, 1, 2, NULL, 4) +FROM src LIMIT 1; + + +CREATE TABLE test_table(col1 STRING, col2 STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE test_table; + +select col1,col2, + field("66",col1), + field("66",col1, col2), + field("val_86",col1, col2), + field(NULL, col1, col2), + field(col1, 66, 88), + field(col1, "66", "88"), + field(col1, "666", "888"), + field(col2, "66", "88"), + field(col1, col2, col1), + field(col1, col2, "66") +from test_table where col1="86" or col1="66"; + + +CREATE TABLE test_table1(col1 int, col2 string) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' INTO TABLE test_table1; + +select col1,col2, + field(66,col1), + field(66,col1, col2), + field(86, col2, col1), + field(86, col1, col1), + field(86,col1,n,col2), + field(NULL,col1,n,col2), + field(col1, col2) +from (select col1, col2, NULL as n from test_table1 where col1=86 or col1=66) t; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_find_in_set.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_find_in_set.q new file mode 100644 index 0000000000000..eac2c6e91c3d1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_find_in_set.q @@ -0,0 +1,23 @@ +DESCRIBE FUNCTION find_in_set; +DESCRIBE FUNCTION EXTENDED find_in_set; + +EXPLAIN +FROM src1 SELECT find_in_set(src1.key,concat(src1.key,',',src1.value)); + +FROM src1 SELECT find_in_set(src1.key,concat(src1.key,',',src1.value)); + +SELECT find_in_set('ab','ab,abc,abcde') FROM src1 LIMIT 1; +SELECT find_in_set('ab','abc,ab,bbb') FROM src1 LIMIT 1; +SELECT find_in_set('ab','def,abc,ab') FROM src1 LIMIT 1; +SELECT find_in_set('ab','abc,abd,abf') FROM src1 LIMIT 1; +SELECT find_in_set(null,'a,b,c') FROM src1 LIMIT 1; +SELECT find_in_set('a',null) FROM src1 LIMIT 1; +SELECT find_in_set('', '') FROM src1 LIMIT 1; +SELECT find_in_set('',',') FROM src1 LIMIT 1; +SELECT find_in_set('','a,,b') FROM src1 LIMIT 1; +SELECT find_in_set('','a,b,') FROM src1 LIMIT 1; +SELECT find_in_set(',','a,b,d,') FROM src1 LIMIT 1; +SELECT find_in_set('a','') FROM src1 LIMIT 1; +SELECT find_in_set('a,','a,b,c,d') FROM src1 LIMIT 1; + +SELECT * FROM src1 WHERE NOT find_in_set(key,'311,128,345,2,956')=0; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_float.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_float.q new file mode 100644 index 0000000000000..abad4ed136ad0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_float.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION float; +DESCRIBE FUNCTION EXTENDED float; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_floor.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_floor.q new file mode 100644 index 0000000000000..a9c304b14fc7a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_floor.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION floor; +DESCRIBE FUNCTION EXTENDED floor; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_format_number.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_format_number.q new file mode 100644 index 0000000000000..e2084cddf0ec7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_format_number.q @@ -0,0 +1,57 @@ +use default; +-- Test format_number() UDF + +DESCRIBE FUNCTION format_number; +DESCRIBE FUNCTION EXTENDED format_number; + +EXPLAIN +SELECT format_number(12332.123456, 4), + format_number(12332.1,4), + format_number(12332.2,0) FROM src limit 1; + +SELECT format_number(12332.123456, 4), + format_number(12332.1,4), + format_number(12332.2,0) +FROM src limit 1; + +-- positive numbers +SELECT format_number(0.123456789, 12), + format_number(12345678.123456789, 5), + format_number(1234567.123456789, 7), + format_number(123456.123456789, 0) +FROM src limit 1; + +-- negative numbers +SELECT format_number(-123456.123456789, 0), + format_number(-1234567.123456789, 2), + format_number(-0.123456789, 15), + format_number(-12345.123456789, 4) +FROM src limit 1; + +-- zeros +SELECT format_number(0.0, 4), + format_number(0.000000, 1), + format_number(000.0000, 1), + format_number(00000.0000, 1), + format_number(-00.0, 4) +FROM src limit 1; + +-- integers +SELECT format_number(0, 0), + format_number(1, 4), + format_number(12, 2), + format_number(123, 5), + format_number(1234, 7) +FROM src limit 1; + +-- long and double boundary +-- 9223372036854775807 is LONG_MAX +-- -9223372036854775807 is one more than LONG_MIN, +-- due to HIVE-2733, put it here to check LONG_MIN boundary +-- 4.9E-324 and 1.7976931348623157E308 are Double.MIN_VALUE and Double.MAX_VALUE +-- check them for Double boundary +SELECT format_number(-9223372036854775807, 10), + format_number(9223372036854775807, 20), + format_number(4.9E-324, 324), + format_number(1.7976931348623157E308, 308) +FROM src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_from_unixtime.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_from_unixtime.q new file mode 100644 index 0000000000000..e67803703fa92 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_from_unixtime.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION from_unixtime; +DESCRIBE FUNCTION EXTENDED from_unixtime; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_get_json_object.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_get_json_object.q new file mode 100644 index 0000000000000..464f2df3dcd7a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_get_json_object.q @@ -0,0 +1,40 @@ +DESCRIBE FUNCTION get_json_object; +DESCRIBE FUNCTION EXTENDED get_json_object; + +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT ' abc ' WHERE src.key = 86; + +EXPLAIN +SELECT get_json_object(src_json.json, '$.owner') FROM src_json; + +SELECT get_json_object(src_json.json, '$') FROM src_json; + +SELECT get_json_object(src_json.json, '$.owner'), get_json_object(src_json.json, '$.store') FROM src_json; + +SELECT get_json_object(src_json.json, '$.store.bicycle'), get_json_object(src_json.json, '$.store.book') FROM src_json; + +SELECT get_json_object(src_json.json, '$.store.book[0]'), get_json_object(src_json.json, '$.store.book[*]') FROM src_json; + +SELECT get_json_object(src_json.json, '$.store.book[0].category'), get_json_object(src_json.json, '$.store.book[*].category'), get_json_object(src_json.json, '$.store.book[*].isbn'), get_json_object(src_json.json, '$.store.book[*].reader') FROM src_json; + +SELECT get_json_object(src_json.json, '$.store.book[*].reader[0].age'), get_json_object(src_json.json, '$.store.book[*].reader[*].age') FROM src_json; + +SELECT get_json_object(src_json.json, '$.store.basket[0][1]'), get_json_object(src_json.json, '$.store.basket[*]'), get_json_object(src_json.json, '$.store.basket[*][0]'), get_json_object(src_json.json, '$.store.basket[0][*]'), get_json_object(src_json.json, '$.store.basket[*][*]'), get_json_object(src_json.json, '$.store.basket[0][2].b'), get_json_object(src_json.json, '$.store.basket[0][*].b') FROM src_json; + +SELECT get_json_object(src_json.json, '$.non_exist_key'), get_json_object(src_json.json, '$..no_recursive'), get_json_object(src_json.json, '$.store.book[10]'), get_json_object(src_json.json, '$.store.book[0].non_exist_key'), get_json_object(src_json.json, '$.store.basket[*].non_exist_key'), get_json_object(src_json.json, '$.store.basket[0][*].non_exist_key') FROM src_json; + +SELECT get_json_object(src_json.json, '$.zip code') FROM src_json; + +SELECT get_json_object(src_json.json, '$.fb:testid') FROM src_json; + + +-- Verify that get_json_object can handle new lines in JSON values + +CREATE TABLE dest2(c1 STRING) STORED AS RCFILE; + +INSERT OVERWRITE TABLE dest2 SELECT '{"a":"b\nc"}' FROM src LIMIT 1; + +SELECT * FROM dest2; + +SELECT get_json_object(c1, '$.a') FROM dest2; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_greaterthan.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_greaterthan.q new file mode 100644 index 0000000000000..aea110a9431cf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_greaterthan.q @@ -0,0 +1,4 @@ +DESCRIBE FUNCTION >; +DESCRIBE FUNCTION EXTENDED >; + +SELECT true>false, false>true, false>false, true>true FROM src LIMIT 1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_greaterthanorequal.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_greaterthanorequal.q new file mode 100644 index 0000000000000..8de165b9ea9ed --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_greaterthanorequal.q @@ -0,0 +1,4 @@ +DESCRIBE FUNCTION >=; +DESCRIBE FUNCTION EXTENDED >=; + +SELECT true>=false, false>=true, false>=false, true>=true FROM src LIMIT 1; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hash.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hash.q new file mode 100644 index 0000000000000..faf372218a107 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hash.q @@ -0,0 +1,17 @@ +DESCRIBE FUNCTION hash; +DESCRIBE FUNCTION EXTENDED hash; + +EXPLAIN +SELECT hash(CAST(1 AS TINYINT)), hash(CAST(2 AS SMALLINT)), + hash(3), hash(CAST('123456789012' AS BIGINT)), + hash(CAST(1.25 AS FLOAT)), hash(CAST(16.0 AS DOUBLE)), + hash('400'), hash('abc'), hash(TRUE), hash(FALSE), + hash(1, 2, 3) +FROM src LIMIT 1; + +SELECT hash(CAST(1 AS TINYINT)), hash(CAST(2 AS SMALLINT)), + hash(3), hash(CAST('123456789012' AS BIGINT)), + hash(CAST(1.25 AS FLOAT)), hash(CAST(16.0 AS DOUBLE)), + hash('400'), hash('abc'), hash(TRUE), hash(FALSE), + hash(1, 2, 3) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hex.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hex.q new file mode 100644 index 0000000000000..37e035ad42b00 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hex.q @@ -0,0 +1,20 @@ +DESCRIBE FUNCTION hex; +DESCRIBE FUNCTION EXTENDED hex; + +-- If the argument is a string, hex should return a string containing two hex +-- digits for every character in the input. +SELECT + hex('Facebook'), + hex('\0'), + hex('qwertyuiopasdfghjkl') +FROM src LIMIT 1; + +-- If the argument is a number, hex should convert it to hexadecimal. +SELECT + hex(1), + hex(0), + hex(4207849477) +FROM src LIMIT 1; + +-- Negative numbers should be treated as two's complement (64 bit). +SELECT hex(-5) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hour.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hour.q new file mode 100644 index 0000000000000..c5c366daa8c83 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_hour.q @@ -0,0 +1,13 @@ +DESCRIBE FUNCTION hour; +DESCRIBE FUNCTION EXTENDED hour; + +EXPLAIN +SELECT hour('2009-08-07 13:14:15'), hour('13:14:15'), hour('2009-08-07') +FROM src WHERE key = 86; + +SELECT hour('2009-08-07 13:14:15'), hour('13:14:15'), hour('2009-08-07') +FROM src WHERE key = 86; + + +SELECT hour(cast('2009-08-07 13:14:15' as timestamp)) +FROM src WHERE key=86; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_if.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_if.q new file mode 100644 index 0000000000000..4f7c8b4a36bad --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_if.q @@ -0,0 +1,34 @@ +DESCRIBE FUNCTION if; +DESCRIBE FUNCTION EXTENDED if; + +EXPLAIN +SELECT IF(TRUE, 1, 2) AS COL1, + IF(FALSE, CAST(NULL AS STRING), CAST(1 AS STRING)) AS COL2, + IF(1=1, IF(2=2, 1, 2), IF(3=3, 3, 4)) AS COL3, + IF(2=2, 1, NULL) AS COL4, + IF(2=2, NULL, 1) AS COL5, + IF(IF(TRUE, NULL, FALSE), 1, 2) AS COL6 +FROM src LIMIT 1; + + +SELECT IF(TRUE, 1, 2) AS COL1, + IF(FALSE, CAST(NULL AS STRING), CAST(1 AS STRING)) AS COL2, + IF(1=1, IF(2=2, 1, 2), IF(3=3, 3, 4)) AS COL3, + IF(2=2, 1, NULL) AS COL4, + IF(2=2, NULL, 1) AS COL5, + IF(IF(TRUE, NULL, FALSE), 1, 2) AS COL6 +FROM src LIMIT 1; + +-- Type conversions +EXPLAIN +SELECT IF(TRUE, CAST(128 AS SMALLINT), CAST(1 AS TINYINT)) AS COL1, + IF(FALSE, 1, 1.1) AS COL2, + IF(FALSE, 1, 'ABC') AS COL3, + IF(FALSE, 'ABC', 12.3) AS COL4 +FROM src LIMIT 1; + +SELECT IF(TRUE, CAST(128 AS SMALLINT), CAST(1 AS TINYINT)) AS COL1, + IF(FALSE, 1, 1.1) AS COL2, + IF(FALSE, 1, 'ABC') AS COL3, + IF(FALSE, 'ABC', 12.3) AS COL4 +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_in.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_in.q new file mode 100644 index 0000000000000..75778138742d5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_in.q @@ -0,0 +1,13 @@ +SELECT 1 IN (1, 2, 3), + 4 IN (1, 2, 3), + array(1,2,3) IN (array(1,2,3)), + "bee" IN("aee", "bee", "cee", 1), + "dee" IN("aee", "bee", "cee"), + 1 = 1 IN(true, false), + true IN (true, false) = true, + 1 IN (1, 2, 3) OR false IN(false), + NULL IN (1, 2, 3), + 4 IN (1, 2, 3, NULL), + (1+3) IN (5, 6, (1+2) + 1) FROM src LIMIT 1; + +SELECT key FROM src WHERE key IN ("238", 86); \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_in_file.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_in_file.q new file mode 100644 index 0000000000000..4da478908ddbd --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_in_file.q @@ -0,0 +1,12 @@ +DESCRIBE FUNCTION in_file; + +EXPLAIN +SELECT in_file("303", "../data/files/test2.dat"), + in_file("304", "../data/files/test2.dat"), + in_file(CAST(NULL AS STRING), "../data/files/test2.dat") +FROM src LIMIT 1; + +SELECT in_file("303", "../data/files/test2.dat"), + in_file("304", "../data/files/test2.dat"), + in_file(CAST(NULL AS STRING), "../data/files/test2.dat") +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_index.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_index.q new file mode 100644 index 0000000000000..9079d0e5743f6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_index.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION `index`; +DESCRIBE FUNCTION EXTENDED `index`; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_inline.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_inline.q new file mode 100644 index 0000000000000..39006f4b9b117 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_inline.q @@ -0,0 +1,26 @@ +describe function inline; + +explain SELECT inline( + ARRAY( + STRUCT (1,'dude!'), + STRUCT (2,'Wheres'), + STRUCT (3,'my car?') + ) +) as (id, text) FROM SRC limit 2; + +SELECT inline( + ARRAY( + STRUCT (1,'dude!'), + STRUCT (2,'Wheres'), + STRUCT (3,'my car?') + ) +) as (id, text) FROM SRC limit 2; + +-- HIVE-3475 INLINE UDTF doesn't convert types properly +select * from (SELECT + ARRAY( + STRUCT (1,'dude!'), + STRUCT (2,'Wheres'), + STRUCT (3,'my car?') + ) as value FROM SRC limit 1) input + LATERAL VIEW inline(value) myTable AS id, text; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_instr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_instr.q new file mode 100644 index 0000000000000..20ed8e4ea0176 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_instr.q @@ -0,0 +1,33 @@ +DESCRIBE FUNCTION instr; +DESCRIBE FUNCTION EXTENDED instr; + +EXPLAIN +SELECT instr('abcd', 'abc'), + instr('abcabc', 'ccc'), + instr(123, '23'), + instr(123, 23), + instr(TRUE, 1), + instr(FALSE, 1), + instr('12345', CAST('2' AS TINYINT)), + instr(CAST('12345' AS SMALLINT), '34'), + instr(CAST('123456789012' AS BIGINT), '456'), + instr(CAST(1.25 AS FLOAT), '.25'), + instr(CAST(16.0 AS DOUBLE), '.0'), + instr(null, 'abc'), + instr('abcd', null) +FROM src LIMIT 1; + +SELECT instr('abcd', 'abc'), + instr('abcabc', 'ccc'), + instr(123, '23'), + instr(123, 23), + instr(TRUE, 1), + instr(FALSE, 1), + instr('12345', CAST('2' AS TINYINT)), + instr(CAST('12345' AS SMALLINT), '34'), + instr(CAST('123456789012' AS BIGINT), '456'), + instr(CAST(1.25 AS FLOAT), '.25'), + instr(CAST(16.0 AS DOUBLE), '.0'), + instr(null, 'abc'), + instr('abcd', null) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_int.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_int.q new file mode 100644 index 0000000000000..64e94a1dc32e1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_int.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION int; +DESCRIBE FUNCTION EXTENDED int; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnotnull.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnotnull.q new file mode 100644 index 0000000000000..75228617ae4f8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnotnull.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION isnotnull; +DESCRIBE FUNCTION EXTENDED isnotnull; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnull.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnull.q new file mode 100644 index 0000000000000..3b5df163f55b2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnull.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION isnull; +DESCRIBE FUNCTION EXTENDED isnull; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnull_isnotnull.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnull_isnotnull.q new file mode 100644 index 0000000000000..d1569cc7f6dbb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_isnull_isnotnull.q @@ -0,0 +1,37 @@ +DESCRIBE FUNCTION isnull; +DESCRIBE FUNCTION EXTENDED isnull; + +DESCRIBE FUNCTION isnotnull; +DESCRIBE FUNCTION EXTENDED isnotnull; + + +EXPLAIN +SELECT NULL IS NULL, + 1 IS NOT NULL, + 'my string' IS NOT NULL +FROM src +WHERE true IS NOT NULL LIMIT 1; + + +SELECT NULL IS NULL, + 1 IS NOT NULL, + 'my string' IS NOT NULL +FROM src +WHERE true IS NOT NULL LIMIT 1; + + +EXPLAIN +FROM src_thrift +SELECT src_thrift.lint IS NOT NULL, + src_thrift.lintstring IS NOT NULL, + src_thrift.mstringstring IS NOT NULL +WHERE src_thrift.lint IS NOT NULL + AND NOT (src_thrift.mstringstring IS NULL) LIMIT 1; + + +FROM src_thrift +SELECT src_thrift.lint IS NOT NULL, + src_thrift.lintstring IS NOT NULL, + src_thrift.mstringstring IS NOT NULL +WHERE src_thrift.lint IS NOT NULL + AND NOT (src_thrift.mstringstring IS NULL) LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_java_method.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_java_method.q new file mode 100644 index 0000000000000..2f28be1e9d0e1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_java_method.q @@ -0,0 +1,25 @@ +DESCRIBE FUNCTION java_method; +DESCRIBE FUNCTION EXTENDED java_method; + +-- java_method() is a synonym for reflect() + +EXPLAIN EXTENDED +SELECT java_method("java.lang.String", "valueOf", 1), + java_method("java.lang.String", "isEmpty"), + java_method("java.lang.Math", "max", 2, 3), + java_method("java.lang.Math", "min", 2, 3), + java_method("java.lang.Math", "round", 2.5), + java_method("java.lang.Math", "exp", 1.0), + java_method("java.lang.Math", "floor", 1.9) +FROM src LIMIT 1; + + +SELECT java_method("java.lang.String", "valueOf", 1), + java_method("java.lang.String", "isEmpty"), + java_method("java.lang.Math", "max", 2, 3), + java_method("java.lang.Math", "min", 2, 3), + java_method("java.lang.Math", "round", 2.5), + java_method("java.lang.Math", "exp", 1.0), + java_method("java.lang.Math", "floor", 1.9) +FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_lcase.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_lcase.q new file mode 100644 index 0000000000000..c2a09b0f6570c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_lcase.q @@ -0,0 +1,3 @@ +DESCRIBE FUNCTION lcase; +DESCRIBE FUNCTION EXTENDED lcase; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_length.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_length.q new file mode 100644 index 0000000000000..b84307970d630 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_length.q @@ -0,0 +1,14 @@ +DESCRIBE FUNCTION length; +DESCRIBE FUNCTION EXTENDED length; + +CREATE TABLE dest1(len INT); +EXPLAIN FROM src1 INSERT OVERWRITE TABLE dest1 SELECT length(src1.value); +FROM src1 INSERT OVERWRITE TABLE dest1 SELECT length(src1.value); +SELECT dest1.* FROM dest1; +DROP TABLE dest1; + +-- Test with non-ascii characters. +CREATE TABLE dest1(name STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv4.txt' INTO TABLE dest1; +EXPLAIN SELECT length(dest1.name) FROM dest1; +SELECT length(dest1.name) FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_lessthan.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_lessthan.q new file mode 100644 index 0000000000000..a2577006a885d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_lessthan.q @@ -0,0 +1,4 @@ +DESCRIBE FUNCTION <; +DESCRIBE FUNCTION EXTENDED <; + +SELECT true; +DESCRIBE FUNCTION EXTENDED <>; + +DESCRIBE FUNCTION !=; +DESCRIBE FUNCTION EXTENDED !=; + +EXPLAIN +SELECT key, value +FROM src +WHERE key <> '302'; + +SELECT key, value +FROM src +WHERE key <> '302'; + +EXPLAIN +SELECT key, value +FROM src +WHERE key != '302'; + +SELECT key, value +FROM src +WHERE key != '302'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_notop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_notop.q new file mode 100644 index 0000000000000..88396545de933 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_notop.q @@ -0,0 +1,10 @@ +SELECT 1 NOT IN (1, 2, 3), + 4 NOT IN (1, 2, 3), + 1 = 2 NOT IN (true, false), + "abc" NOT LIKE "a%", + "abc" NOT LIKE "b%", + "abc" NOT RLIKE "^ab", + "abc" NOT RLIKE "^bc", + "abc" NOT REGEXP "^ab", + "abc" NOT REGEXP "^bc", + 1 IN (1, 2) AND "abc" NOT LIKE "bc%" FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_nvl.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_nvl.q new file mode 100644 index 0000000000000..0133b4b90bcbc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_nvl.q @@ -0,0 +1,13 @@ + +DESCRIBE FUNCTION nvl; +DESCRIBE FUNCTION EXTENDED nvl; + +EXPLAIN +SELECT NVL( 1 , 2 ) AS COL1, + NVL( NULL, 5 ) AS COL2 +FROM src LIMIT 1; + +SELECT NVL( 1 , 2 ) AS COL1, + NVL( NULL, 5 ) AS COL2 +FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_or.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_or.q new file mode 100644 index 0000000000000..fbd4486d49d6d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_or.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION or; +DESCRIBE FUNCTION EXTENDED or; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_parse_url.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_parse_url.q new file mode 100644 index 0000000000000..62c67db20b1a2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_parse_url.q @@ -0,0 +1,29 @@ +DESCRIBE FUNCTION parse_url; +DESCRIBE FUNCTION EXTENDED parse_url; + +EXPLAIN +SELECT parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST'), +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'PATH'), +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'REF') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k2') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k3') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'FILE') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'PROTOCOL') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'USERINFO') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'AUTHORITY') + FROM src WHERE key = 86; + +SELECT parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST'), +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'PATH'), +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'REF') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k2') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k3') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'FILE') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'PROTOCOL') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'USERINFO') , +parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'AUTHORITY') + FROM src WHERE key = 86; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_percentile.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_percentile.q new file mode 100644 index 0000000000000..936a514b1e7bc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_percentile.q @@ -0,0 +1,75 @@ +DESCRIBE FUNCTION percentile; +DESCRIBE FUNCTION EXTENDED percentile; + + +set hive.map.aggr = false; +set hive.groupby.skewindata = false; + +SELECT CAST(key AS INT) DIV 10, + percentile(CAST(substr(value, 5) AS INT), 0.0), + percentile(CAST(substr(value, 5) AS INT), 0.5), + percentile(CAST(substr(value, 5) AS INT), 1.0), + percentile(CAST(substr(value, 5) AS INT), array(0.0, 0.5, 0.99, 1.0)) +FROM src +GROUP BY CAST(key AS INT) DIV 10; + + +set hive.map.aggr = true; +set hive.groupby.skewindata = false; + +SELECT CAST(key AS INT) DIV 10, + percentile(CAST(substr(value, 5) AS INT), 0.0), + percentile(CAST(substr(value, 5) AS INT), 0.5), + percentile(CAST(substr(value, 5) AS INT), 1.0), + percentile(CAST(substr(value, 5) AS INT), array(0.0, 0.5, 0.99, 1.0)) +FROM src +GROUP BY CAST(key AS INT) DIV 10; + + + +set hive.map.aggr = false; +set hive.groupby.skewindata = true; + +SELECT CAST(key AS INT) DIV 10, + percentile(CAST(substr(value, 5) AS INT), 0.0), + percentile(CAST(substr(value, 5) AS INT), 0.5), + percentile(CAST(substr(value, 5) AS INT), 1.0), + percentile(CAST(substr(value, 5) AS INT), array(0.0, 0.5, 0.99, 1.0)) +FROM src +GROUP BY CAST(key AS INT) DIV 10; + + +set hive.map.aggr = true; +set hive.groupby.skewindata = true; + +SELECT CAST(key AS INT) DIV 10, + percentile(CAST(substr(value, 5) AS INT), 0.0), + percentile(CAST(substr(value, 5) AS INT), 0.5), + percentile(CAST(substr(value, 5) AS INT), 1.0), + percentile(CAST(substr(value, 5) AS INT), array(0.0, 0.5, 0.99, 1.0)) +FROM src +GROUP BY CAST(key AS INT) DIV 10; + + +set hive.map.aggr = true; +set hive.groupby.skewindata = false; + +-- test null handling +SELECT CAST(key AS INT) DIV 10, + percentile(NULL, 0.0), + percentile(NULL, array(0.0, 0.5, 0.99, 1.0)) +FROM src +GROUP BY CAST(key AS INT) DIV 10; + + +-- test empty array handling +SELECT CAST(key AS INT) DIV 10, + percentile(IF(CAST(key AS INT) DIV 10 < 5, 1, NULL), 0.5), + percentile(IF(CAST(key AS INT) DIV 10 < 5, 1, NULL), array(0.0, 0.5, 0.99, 1.0)) +FROM src +GROUP BY CAST(key AS INT) DIV 10; + +select percentile(cast(key as bigint), 0.5) from src where false; + +-- test where percentile list is empty +select percentile(cast(key as bigint), array()) from src where false; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_pmod.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_pmod.q new file mode 100644 index 0000000000000..9ff73d42b41e6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_pmod.q @@ -0,0 +1,20 @@ +DESCRIBE FUNCTION pmod; +DESCRIBE FUNCTION EXTENDED pmod; + +SELECT pmod(null, null) +FROM src LIMIT 1; + +SELECT pmod(-100,9), pmod(-50,101), pmod(-1000,29) +FROM src LIMIT 1; + +SELECT pmod(100,19), pmod(50,125), pmod(300,15) +FROM src LIMIT 1; + +SELECT pmod(CAST(-100 AS TINYINT),CAST(9 AS TINYINT)), pmod(CAST(-50 AS TINYINT),CAST(101 AS TINYINT)), pmod(CAST(-100 AS TINYINT),CAST(29 AS TINYINT)) FROM src LIMIT 1; +SELECT pmod(CAST(-100 AS SMALLINT),CAST(9 AS SMALLINT)), pmod(CAST(-50 AS SMALLINT),CAST(101 AS SMALLINT)), pmod(CAST(-100 AS SMALLINT),CAST(29 AS SMALLINT)) FROM src LIMIT 1; +SELECT pmod(CAST(-100 AS BIGINT),CAST(9 AS BIGINT)), pmod(CAST(-50 AS BIGINT),CAST(101 AS BIGINT)), pmod(CAST(-100 AS BIGINT),CAST(29 AS BIGINT)) FROM src LIMIT 1; + +SELECT pmod(CAST(-100.91 AS FLOAT),CAST(9.8 AS FLOAT)), pmod(CAST(-50.1 AS FLOAT),CAST(101.8 AS FLOAT)), pmod(CAST(-100.91 AS FLOAT),CAST(29.75 AS FLOAT)) FROM src LIMIT 1; +SELECT pmod(CAST(-100.91 AS DOUBLE),CAST(9.8 AS DOUBLE)), pmod(CAST(-50.1 AS DOUBLE),CAST(101.8 AS DOUBLE)), pmod(CAST(-100.91 AS DOUBLE),CAST(29.75 AS DOUBLE)) FROM src LIMIT 1; +SELECT pmod(CAST(-100.91 AS DECIMAL),CAST(9.8 AS DECIMAL)), pmod(CAST(-50.1 AS DECIMAL),CAST(101.8 AS DECIMAL)), pmod(CAST(-100.91 AS DECIMAL),CAST(29.75 AS DECIMAL)) FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_positive.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_positive.q new file mode 100644 index 0000000000000..e5fd17e2a0a68 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_positive.q @@ -0,0 +1,6 @@ +DESCRIBE FUNCTION positive; +DESCRIBE FUNCTION EXTENDED positive; + +-- synonym +DESCRIBE FUNCTION +; +DESCRIBE FUNCTION EXTENDED +; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_pow.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_pow.q new file mode 100644 index 0000000000000..dc9ad9ddea600 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_pow.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION pow; +DESCRIBE FUNCTION EXTENDED pow; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_power.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_power.q new file mode 100644 index 0000000000000..c5a3f40e5f3bb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_power.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION power; +DESCRIBE FUNCTION EXTENDED power; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_printf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_printf.q new file mode 100644 index 0000000000000..99e89ccbf773a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_printf.q @@ -0,0 +1,35 @@ +use default; +-- Test printf() UDF + +DESCRIBE FUNCTION printf; +DESCRIBE FUNCTION EXTENDED printf; + +EXPLAIN +SELECT printf("Hello World %d %s", 100, "days") FROM src LIMIT 1; + +-- Test Primitive Types +SELECT printf("Hello World %d %s", 100, "days") FROM src LIMIT 1; +SELECT printf("All Type Test: %b, %c, %d, %e, %+10.4f, %g, %h, %s, %a", false, 65, 15000, 12.3400, 27183.240051, 2300.41, 50, "corret", 256.125) FROM src LIMIT 1; + +-- Test NULL Values +SELECT printf("Color %s, String Null: %s, number1 %d, number2 %05d, Integer Null: %d, hex %#x, float %5.2f Double Null: %f\n", "red", NULL, 123456, 89, NULL, 255, 3.14159, NULL) FROM src LIMIT 1; + +-- Test Timestamp +create table timestamp_udf (t timestamp); +from src + insert overwrite table timestamp_udf + select '2011-05-06 07:08:09.1234567' limit 1; +select printf("timestamp: %s", t) from timestamp_udf; +drop table timestamp_udf; + +-- Test Binary +CREATE TABLE binay_udf(key binary, value int) +ROW FORMAT DELIMITED +FIELDS TERMINATED BY '9' +STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/string.txt' INTO TABLE binay_udf; +create table dest1 (key binary, value int); +insert overwrite table dest1 select transform(*) using 'cat' as key binary, value int from binay_udf; +select value, printf("format key: %s", key) from dest1; +drop table dest1; +drop table binary_udf; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_radians.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_radians.q new file mode 100644 index 0000000000000..001d1cf8b6464 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_radians.q @@ -0,0 +1,16 @@ +explain +select radians(57.2958) FROM src LIMIT 1; + +select radians(57.2958) FROM src LIMIT 1; +select radians(143.2394) FROM src LIMIT 1; + +DESCRIBE FUNCTION radians; +DESCRIBE FUNCTION EXTENDED radians; +explain +select radians(57.2958) FROM src LIMIT 1; + +select radians(57.2958) FROM src LIMIT 1; +select radians(143.2394) FROM src LIMIT 1; + +DESCRIBE FUNCTION radians; +DESCRIBE FUNCTION EXTENDED radians; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rand.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rand.q new file mode 100644 index 0000000000000..ff5380c545414 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rand.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION rand; +DESCRIBE FUNCTION EXTENDED rand; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reflect.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reflect.q new file mode 100644 index 0000000000000..f357ff5049564 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reflect.q @@ -0,0 +1,24 @@ +DESCRIBE FUNCTION reflect; +DESCRIBE FUNCTION EXTENDED reflect; + +EXPLAIN EXTENDED +SELECT reflect("java.lang.String", "valueOf", 1), + reflect("java.lang.String", "isEmpty"), + reflect("java.lang.Math", "max", 2, 3), + reflect("java.lang.Math", "min", 2, 3), + reflect("java.lang.Math", "round", 2.5), + reflect("java.lang.Math", "exp", 1.0), + reflect("java.lang.Math", "floor", 1.9), + reflect("java.lang.Integer", "valueOf", key, 16) +FROM src LIMIT 1; + + +SELECT reflect("java.lang.String", "valueOf", 1), + reflect("java.lang.String", "isEmpty"), + reflect("java.lang.Math", "max", 2, 3), + reflect("java.lang.Math", "min", 2, 3), + reflect("java.lang.Math", "round", 2.5), + reflect("java.lang.Math", "exp", 1.0), + reflect("java.lang.Math", "floor", 1.9), + reflect("java.lang.Integer", "valueOf", key, 16) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reflect2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reflect2.q new file mode 100644 index 0000000000000..9ffd755292f66 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reflect2.q @@ -0,0 +1,70 @@ +DESCRIBE FUNCTION reflect2; +DESCRIBE FUNCTION EXTENDED reflect2; + +EXPLAIN EXTENDED +SELECT key, + reflect2(key, "byteValue"), + reflect2(key, "shortValue"), + reflect2(key, "intValue"), + reflect2(key, "longValue"), + reflect2(key, "floatValue"), + reflect2(key, "doubleValue"), + reflect2(key, "toString"), + value, + reflect2(value, "concat", "_concat"), + reflect2(value, "contains", "86"), + reflect2(value, "startsWith", "v"), + reflect2(value, "endsWith", "6"), + reflect2(value, "equals", "val_86"), + reflect2(value, "equalsIgnoreCase", "VAL_86"), + reflect2(value, "getBytes"), + reflect2(value, "indexOf", "1"), + reflect2(value, "lastIndexOf", "1"), + reflect2(value, "replace", "val", "VALUE"), + reflect2(value, "substring", 1), + reflect2(value, "substring", 1, 5), + reflect2(value, "toUpperCase"), + reflect2(value, "trim"), + ts, + reflect2(ts, "getYear"), + reflect2(ts, "getMonth"), + reflect2(ts, "getDay"), + reflect2(ts, "getHours"), + reflect2(ts, "getMinutes"), + reflect2(ts, "getSeconds"), + reflect2(ts, "getTime") +FROM (select cast(key as int) key, value, cast('2013-02-15 19:41:20' as timestamp) ts from src) a LIMIT 5; + + +SELECT key, + reflect2(key, "byteValue"), + reflect2(key, "shortValue"), + reflect2(key, "intValue"), + reflect2(key, "longValue"), + reflect2(key, "floatValue"), + reflect2(key, "doubleValue"), + reflect2(key, "toString"), + value, + reflect2(value, "concat", "_concat"), + reflect2(value, "contains", "86"), + reflect2(value, "startsWith", "v"), + reflect2(value, "endsWith", "6"), + reflect2(value, "equals", "val_86"), + reflect2(value, "equalsIgnoreCase", "VAL_86"), + reflect2(value, "getBytes"), + reflect2(value, "indexOf", "1"), + reflect2(value, "lastIndexOf", "1"), + reflect2(value, "replace", "val", "VALUE"), + reflect2(value, "substring", 1), + reflect2(value, "substring", 1, 5), + reflect2(value, "toUpperCase"), + reflect2(value, "trim"), + ts, + reflect2(ts, "getYear"), + reflect2(ts, "getMonth"), + reflect2(ts, "getDay"), + reflect2(ts, "getHours"), + reflect2(ts, "getMinutes"), + reflect2(ts, "getSeconds"), + reflect2(ts, "getTime") +FROM (select cast(key as int) key, value, cast('2013-02-15 19:41:20' as timestamp) ts from src) a LIMIT 5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp.q new file mode 100644 index 0000000000000..3aee10963d747 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp.q @@ -0,0 +1,6 @@ +DESCRIBE FUNCTION regexp; +DESCRIBE FUNCTION EXTENDED regexp; + +SELECT 'fofo' REGEXP '^fo', 'fo\no' REGEXP '^fo\no$', 'Bn' REGEXP '^Ba*n', 'afofo' REGEXP 'fo', +'afofo' REGEXP '^fo', 'Baan' REGEXP '^Ba?n', 'axe' REGEXP 'pi|apa', 'pip' REGEXP '^(pi)*$' +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp_extract.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp_extract.q new file mode 100644 index 0000000000000..7d7560d44d1f7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp_extract.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION regexp_extract; +DESCRIBE FUNCTION EXTENDED regexp_extract; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp_replace.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp_replace.q new file mode 100644 index 0000000000000..db536a1efa4b9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_regexp_replace.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION regexp_replace; +DESCRIBE FUNCTION EXTENDED regexp_replace; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_repeat.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_repeat.q new file mode 100644 index 0000000000000..162085f4c71c8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_repeat.q @@ -0,0 +1,16 @@ +DESCRIBE FUNCTION repeat; +DESCRIBE FUNCTION EXTENDED repeat; + +EXPLAIN SELECT + repeat("Facebook", 3), + repeat("", 4), + repeat("asd", 0), + repeat("asdf", -1) +FROM src LIMIT 1; + +SELECT + repeat("Facebook", 3), + repeat("", 4), + repeat("asd", 0), + repeat("asdf", -1) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reverse.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reverse.q new file mode 100644 index 0000000000000..81f765ec5937c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_reverse.q @@ -0,0 +1,15 @@ +DESCRIBE FUNCTION reverse; +DESCRIBE FUNCTION EXTENDED reverse; + +CREATE TABLE dest1(len STRING); +EXPLAIN FROM src1 INSERT OVERWRITE TABLE dest1 SELECT reverse(src1.value); +FROM src1 INSERT OVERWRITE TABLE dest1 SELECT reverse(src1.value); +SELECT dest1.* FROM dest1; +DROP TABLE dest1; + +-- Test with non-ascii characters +-- kv4.txt contains the text 0xE982B5E993AE, which should be reversed to +-- 0xE993AEE982B5 +CREATE TABLE dest1(name STRING) STORED AS TEXTFILE; +LOAD DATA LOCAL INPATH '../data/files/kv4.txt' INTO TABLE dest1; +SELECT count(1) FROM dest1 WHERE reverse(dest1.name) = _UTF-8 0xE993AEE982B5; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rlike.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rlike.q new file mode 100644 index 0000000000000..27581046a8f10 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rlike.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION rlike; +DESCRIBE FUNCTION EXTENDED rlike; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round.q new file mode 100644 index 0000000000000..18ebba8708493 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round.q @@ -0,0 +1,44 @@ +DESCRIBE FUNCTION round; +DESCRIBE FUNCTION EXTENDED round; + +SELECT round(null), round(null, 0), round(125, null), +round(1.0/0.0, 0), round(power(-1.0,0.5), 0) +FROM src LIMIT 1; + +SELECT + round(55555), round(55555, 0), round(55555, 1), round(55555, 2), round(55555, 3), + round(55555, -1), round(55555, -2), round(55555, -3), round(55555, -4), + round(55555, -5), round(55555, -6), round(55555, -7), round(55555, -8) +FROM src LIMIT 1; + +SELECT + round(125.315), round(125.315, 0), + round(125.315, 1), round(125.315, 2), round(125.315, 3), round(125.315, 4), + round(125.315, -1), round(125.315, -2), round(125.315, -3), round(125.315, -4), + round(-125.315), round(-125.315, 0), + round(-125.315, 1), round(-125.315, 2), round(-125.315, 3), round(-125.315, 4), + round(-125.315, -1), round(-125.315, -2), round(-125.315, -3), round(-125.315, -4) +FROM src LIMIT 1; + +SELECT + round(3.141592653589793, -15), round(3.141592653589793, -16), + round(3.141592653589793, -13), round(3.141592653589793, -14), + round(3.141592653589793, -11), round(3.141592653589793, -12), + round(3.141592653589793, -9), round(3.141592653589793, -10), + round(3.141592653589793, -7), round(3.141592653589793, -8), + round(3.141592653589793, -5), round(3.141592653589793, -6), + round(3.141592653589793, -3), round(3.141592653589793, -4), + round(3.141592653589793, -1), round(3.141592653589793, -2), + round(3.141592653589793, 0), round(3.141592653589793, 1), + round(3.141592653589793, 2), round(3.141592653589793, 3), + round(3.141592653589793, 4), round(3.141592653589793, 5), + round(3.141592653589793, 6), round(3.141592653589793, 7), + round(3.141592653589793, 8), round(3.141592653589793, 9), + round(3.141592653589793, 10), round(3.141592653589793, 11), + round(3.141592653589793, 12), round(3.141592653589793, 13), + round(3.141592653589793, 13), round(3.141592653589793, 14), + round(3.141592653589793, 15), round(3.141592653589793, 16) +FROM src LIMIT 1; + +SELECT round(1809242.3151111344, 9), round(-1809242.3151111344, 9) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round_2.q new file mode 100644 index 0000000000000..6be30855aea1b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round_2.q @@ -0,0 +1,13 @@ +-- test for NaN (not-a-number) +create table tstTbl1(n double); + +insert overwrite table tstTbl1 +select 'NaN' from src limit 1; + +select * from tstTbl1; + +select round(n, 1) from tstTbl1; +select round(n) from tstTbl1; + +-- test for Infinity +select round(1/0), round(1/0, 2), round(1.0/0.0), round(1.0/0.0, 2) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round_3.q new file mode 100644 index 0000000000000..50a1f44419047 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_round_3.q @@ -0,0 +1,14 @@ +-- test for TINYINT +select round(-128), round(127), round(0) from src limit 1; + +-- test for SMALLINT +select round(-32768), round(32767), round(-129), round(128) from src limit 1; + +-- test for INT +select round(cast(negative(pow(2, 31)) as INT)), round(cast((pow(2, 31) - 1) as INT)), round(-32769), round(32768) from src limit 1; + +-- test for BIGINT +select round(cast(negative(pow(2, 63)) as BIGINT)), round(cast((pow(2, 63) - 1) as BIGINT)), round(cast(negative(pow(2, 31) + 1) as BIGINT)), round(cast(pow(2, 31) as BIGINT)) from src limit 1; + +-- test for DOUBLE +select round(126.1), round(126.7), round(32766.1), round(32766.7) from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rpad.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rpad.q new file mode 100644 index 0000000000000..01e5fbd429b17 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rpad.q @@ -0,0 +1,14 @@ +DESCRIBE FUNCTION rpad; +DESCRIBE FUNCTION EXTENDED rpad; + +EXPLAIN SELECT + rpad('hi', 1, '?'), + rpad('hi', 5, '.'), + rpad('hi', 6, '123') +FROM src LIMIT 1; + +SELECT + rpad('hi', 1, '?'), + rpad('hi', 5, '.'), + rpad('hi', 6, '123') +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rtrim.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rtrim.q new file mode 100644 index 0000000000000..33d09df284624 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_rtrim.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION rtrim; +DESCRIBE FUNCTION EXTENDED rtrim; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_second.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_second.q new file mode 100644 index 0000000000000..1943188086ea5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_second.q @@ -0,0 +1,9 @@ +DESCRIBE FUNCTION second; +DESCRIBE FUNCTION EXTENDED second; + +EXPLAIN +SELECT second('2009-08-07 13:14:15'), second('13:14:15'), second('2009-08-07') +FROM src WHERE key = 86; + +SELECT second('2009-08-07 13:14:15'), second('13:14:15'), second('2009-08-07') +FROM src WHERE key = 86; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sentences.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sentences.q new file mode 100644 index 0000000000000..009e4cb48a1d4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sentences.q @@ -0,0 +1,22 @@ +CREATE TABLE sent_tmp (val array); +CREATE TABLE sent_tmp2 (val string); +INSERT OVERWRITE TABLE sent_tmp +SELECT explode(sentences(decode(unhex("486976652065737420756E20657863656C6C656E74206F7574696C20706F7572206C65732072657175C3AA74657320646520646F6E6EC3A965732C20657420706575742DC3AA74726520706C757320706F6C7976616C656E7420717565206C612074726164756374696F6E206175746F6D61746971756521206C6120706F6E6374756174696F6E206D756C7469706C65732C206465732070687261736573206D616C20666F726DC3A96573202E2E2E20636F6E667573696F6E202D20657420706F757274616E742063652055444620666F6E6374696F6E6E6520656E636F72652121"), "UTF-8"), "fr")) AS val FROM src LIMIT 3; +INSERT OVERWRITE TABLE sent_tmp2 +SELECT explode(val) AS val FROM sent_tmp; +SELECT hex(val) AS value FROM sent_tmp2 ORDER BY value ASC; + +DROP TABLE sent_tmp; +DROP TABLE sent_tmp2; + +CREATE TABLE sent_tmp (val array); +CREATE TABLE sent_tmp2 (val string); +INSERT OVERWRITE TABLE sent_tmp +SELECT explode(sentences(decode(unhex("48697665206973742065696E2061757367657A656963686E65746573205765726B7A6575672066C3BC7220646965204162667261676520766F6E20446174656E2C20756E64207669656C6C6569636874207669656C736569746967657220616C7320646965206D61736368696E656C6C6520C39C6265727365747A756E6721204D756C7469706C652C207363686C6563687420676562696C646574656E2053C3A4747A65202E2E2E205665727765636873656C756E6720496E74657270756E6B74696F6E202D20756E6420646F636820697374206469657365205544462066756E6B74696F6E6965727420696D6D6572206E6F63682121"), "UTF-8"), "de")) AS val FROM src LIMIT 3; +INSERT OVERWRITE TABLE sent_tmp2 +SELECT explode(val) AS val FROM sent_tmp; +SELECT hex(val) AS value FROM sent_tmp2 ORDER BY value ASC; + + + +SELECT sentences("Hive is an excellent tool for data querying\; and perhaps more versatile than machine translation!! Multiple, ill-formed sentences...confounding punctuation--and yet this UDF still works!!!!") AS value FROM src ORDER BY value ASC LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sign.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sign.q new file mode 100644 index 0000000000000..abceb3439ec1e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sign.q @@ -0,0 +1,20 @@ +explain +select sign(0) FROM src LIMIT 1; +select sign(0) FROM src LIMIT 1; + +select sign(-45) FROM src LIMIT 1; + +select sign(46) FROM src LIMIT 1; + +DESCRIBE FUNCTION sign; +DESCRIBE FUNCTION EXTENDED sign; +explain +select sign(0) FROM src LIMIT 1; +select sign(0) FROM src LIMIT 1; + +select sign(-45) FROM src LIMIT 1; + +select sign(46) FROM src LIMIT 1; + +DESCRIBE FUNCTION sign; +DESCRIBE FUNCTION EXTENDED sign; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sin.q new file mode 100644 index 0000000000000..abb7cac8dac9d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sin.q @@ -0,0 +1,8 @@ +DESCRIBE FUNCTION sin; +DESCRIBE FUNCTION EXTENDED sin; + +SELECT sin(null) +FROM src LIMIT 1; + +SELECT sin(0.98), sin(1.57), sin(-0.5) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_size.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_size.q new file mode 100644 index 0000000000000..8aaa68a6e318a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_size.q @@ -0,0 +1,20 @@ +DESCRIBE FUNCTION size; +DESCRIBE FUNCTION EXTENDED size; + +EXPLAIN +FROM src_thrift +SELECT size(src_thrift.lint), + size(src_thrift.lintstring), + size(src_thrift.mstringstring), + size(null) +WHERE src_thrift.lint IS NOT NULL + AND NOT (src_thrift.mstringstring IS NULL) LIMIT 1; + + +FROM src_thrift +SELECT size(src_thrift.lint), + size(src_thrift.lintstring), + size(src_thrift.mstringstring), + size(null) +WHERE src_thrift.lint IS NOT NULL + AND NOT (src_thrift.mstringstring IS NULL) LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_smallint.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_smallint.q new file mode 100644 index 0000000000000..202a401eb705d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_smallint.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION smallint; +DESCRIBE FUNCTION EXTENDED smallint; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sort_array.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sort_array.q new file mode 100644 index 0000000000000..ef0973212a27c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sort_array.q @@ -0,0 +1,38 @@ +use default; +-- Test sort_array() UDF + +DESCRIBE FUNCTION sort_array; +DESCRIBE FUNCTION EXTENDED sort_array; + +-- Evaluate function against STRING valued keys +EXPLAIN +SELECT sort_array(array("b", "d", "c", "a")) FROM src LIMIT 1; + +SELECT sort_array(array("f", "a", "g", "c", "b", "d", "e")) FROM src LIMIT 1; +SELECT sort_array(sort_array(array("hadoop distributed file system", "enterprise databases", "hadoop map-reduce"))) FROM src LIMIT 1; + +-- Evaluate function against INT valued keys +SELECT sort_array(array(2, 9, 7, 3, 5, 4, 1, 6, 8)) FROM src LIMIT 1; + +-- Evaluate function against FLOAT valued keys +SELECT sort_array(sort_array(array(2.333, 9, 1.325, 2.003, 0.777, -3.445, 1))) FROM src LIMIT 1; + +-- Test it against data in a table. +CREATE TABLE dest1 ( + tinyints ARRAY, + smallints ARRAY, + ints ARRAY, + bigints ARRAY, + booleans ARRAY, + floats ARRAY, + doubles ARRAY, + strings ARRAY, + timestamps ARRAY +) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/primitive_type_arrays.txt' OVERWRITE INTO TABLE dest1; + +SELECT sort_array(tinyints), sort_array(smallints), sort_array(ints), + sort_array(bigints), sort_array(booleans), sort_array(floats), + sort_array(doubles), sort_array(strings), sort_array(timestamps) + FROM dest1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_space.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_space.q new file mode 100644 index 0000000000000..cf6466fb63bad --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_space.q @@ -0,0 +1,27 @@ +DESCRIBE FUNCTION space; +DESCRIBE FUNCTION EXTENDED space; + +EXPLAIN SELECT + space(10), + space(0), + space(1), + space(-1), + space(-100) +FROM src LIMIT 1; + +SELECT + length(space(10)), + length(space(0)), + length(space(1)), + length(space(-1)), + length(space(-100)) +FROM src LIMIT 1; + +SELECT + space(10), + space(0), + space(1), + space(-1), + space(-100) +FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_split.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_split.q new file mode 100644 index 0000000000000..f79901736cf7c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_split.q @@ -0,0 +1,16 @@ +DESCRIBE FUNCTION split; +DESCRIBE FUNCTION EXTENDED split; + +EXPLAIN SELECT + split('a b c', ' '), + split('oneAtwoBthreeC', '[ABC]'), + split('', '.'), + split(50401020, 0) +FROM src LIMIT 1; + +SELECT + split('a b c', ' '), + split('oneAtwoBthreeC', '[ABC]'), + split('', '.'), + split(50401020, 0) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sqrt.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sqrt.q new file mode 100644 index 0000000000000..aec061ddd7b9c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sqrt.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION sqrt; +DESCRIBE FUNCTION EXTENDED sqrt; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_std.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_std.q new file mode 100644 index 0000000000000..9a20256e3e5fc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_std.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION std; +DESCRIBE FUNCTION EXTENDED std; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev.q new file mode 100644 index 0000000000000..b3b8794c9d585 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION stddev; +DESCRIBE FUNCTION EXTENDED stddev; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev_pop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev_pop.q new file mode 100644 index 0000000000000..4abede7af8b55 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev_pop.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION udf_stddev_pop; +DESCRIBE FUNCTION EXTENDED udf_stddev_pop; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev_samp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev_samp.q new file mode 100644 index 0000000000000..30d2f24513864 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_stddev_samp.q @@ -0,0 +1,4 @@ +DESCRIBE FUNCTION stddev_samp; +DESCRIBE FUNCTION EXTENDED stddev_samp; +DESCRIBE FUNCTION stddev_samp; +DESCRIBE FUNCTION EXTENDED stddev_samp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_string.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_string.q new file mode 100644 index 0000000000000..96e433e1751c5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_string.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION string; +DESCRIBE FUNCTION EXTENDED string; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_struct.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_struct.q new file mode 100644 index 0000000000000..3ee19c83699bb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_struct.q @@ -0,0 +1,9 @@ +DESCRIBE FUNCTION struct; +DESCRIBE FUNCTION EXTENDED struct; + +EXPLAIN +SELECT struct(1), struct(1, "a"), struct(1, "b", 1.5).col1, struct(1, struct("a", 1.5)).col2.col1 +FROM src LIMIT 1; + +SELECT struct(1), struct(1, "a"), struct(1, "b", 1.5).col1, struct(1, struct("a", 1.5)).col2.col1 +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_substr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_substr.q new file mode 100644 index 0000000000000..32757bef51c1c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_substr.q @@ -0,0 +1,75 @@ +DESCRIBE FUNCTION substr; +DESCRIBE FUNCTION EXTENDED substr; + +SELECT + substr(null, 1), substr(null, 1, 1), + substr('ABC', null), substr('ABC', null, 1), + substr('ABC', 1, null) +FROM src LIMIT 1; + +SELECT + substr('ABC', 1, 0), substr('ABC', 1, -1), substr('ABC', 2, -100), + substr('ABC', 4), substr('ABC', 4, 100), + substr('ABC', -4), substr('ABC', -4, 100), + substr('ABC', 100), substr('ABC', 100, 100), + substr('ABC', -100), substr('ABC', -100, 100), + substr('ABC', 2147483647), substr('ABC', 2147483647, 2147483647) +FROM src LIMIT 1; + +SELECT + substr('ABCDEFG', 3, 4), substr('ABCDEFG', -5, 4), + substr('ABCDEFG', 3), substr('ABCDEFG', -5), + substr('ABC', 0), substr('ABC', 1), substr('ABC', 2), substr('ABC', 3), + substr('ABC', 1, 2147483647), substr('ABC', 2, 2147483647), + substr('A', 0), substr('A', 1), substr('A', -1) +FROM src LIMIT 1; + +SELECT + substr('ABC', 0, 1), substr('ABC', 0, 2), substr('ABC', 0, 3), substr('ABC', 0, 4), + substr('ABC', 1, 1), substr('ABC', 1, 2), substr('ABC', 1, 3), substr('ABC', 1, 4), + substr('ABC', 2, 1), substr('ABC', 2, 2), substr('ABC', 2, 3), substr('ABC', 2, 4), + substr('ABC', 3, 1), substr('ABC', 3, 2), substr('ABC', 3, 3), substr('ABC', 3, 4), + substr('ABC', 4, 1) +FROM src LIMIT 1; + +SELECT + substr('ABC', -1, 1), substr('ABC', -1, 2), substr('ABC', -1, 3), substr('ABC', -1, 4), + substr('ABC', -2, 1), substr('ABC', -2, 2), substr('ABC', -2, 3), substr('ABC', -2, 4), + substr('ABC', -3, 1), substr('ABC', -3, 2), substr('ABC', -3, 3), substr('ABC', -3, 4), + substr('ABC', -4, 1) +FROM src LIMIT 1; + +-- substring() is a synonim of substr(), so just perform some basic tests +SELECT + substring('ABCDEFG', 3, 4), substring('ABCDEFG', -5, 4), + substring('ABCDEFG', 3), substring('ABCDEFG', -5), + substring('ABC', 0), substring('ABC', 1), substring('ABC', 2), substring('ABC', 3), + substring('ABC', 1, 2147483647), substring('ABC', 2, 2147483647), + substring('A', 0), substring('A', 1), substring('A', -1) +FROM src LIMIT 1; + +-- test for binary substr +SELECT + substr(null, 1), substr(null, 1, 1), + substr(ABC, null), substr(ABC, null, 1), + substr(ABC, 1, null), + substr(ABC, 0, 1), substr(ABC, 0, 2), substr(ABC, 0, 3), substr(ABC, 0, 4), + substr(ABC, 1, 1), substr(ABC, 1, 2), substr(ABC, 1, 3), substr(ABC, 1, 4), + substr(ABC, 2, 1), substr(ABC, 2, 2), substr(ABC, 2, 3), substr(ABC, 2, 4), + substr(ABC, 3, 1), substr(ABC, 3, 2), substr(ABC, 3, 3), substr(ABC, 3, 4), + substr(ABC, 4, 1), + substr(ABC, -1, 1), substr(ABC, -1, 2), substr(ABC, -1, 3), substr(ABC, -1, 4), + substr(ABC, -2, 1), substr(ABC, -2, 2), substr(ABC, -2, 3), substr(ABC, -2, 4), + substr(ABC, -3, 1), substr(ABC, -3, 2), substr(ABC, -3, 3), substr(ABC, -3, 4), + substr(ABC, -4, 1) +FROM ( + select CAST(concat(substr(value, 1, 0), 'ABC') as BINARY) as ABC from src LIMIT 1 +) X; + +-- test UTF-8 substr +SELECT + substr("玩", 1), + substr("abc 玩", 5), + substr("abc 玩玩玩 abc", 5), + substr("abc 玩玩玩 abc", 5, 3) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_substring.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_substring.q new file mode 100644 index 0000000000000..d56b828b8b5c6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_substring.q @@ -0,0 +1,3 @@ +-- Synonym. See udf_substr.q +DESCRIBE FUNCTION substring; +DESCRIBE FUNCTION EXTENDED substring; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_subtract.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_subtract.q new file mode 100644 index 0000000000000..3bc583493487a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_subtract.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION -; +DESCRIBE FUNCTION EXTENDED -; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sum.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sum.q new file mode 100644 index 0000000000000..325bcabd6c9aa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_sum.q @@ -0,0 +1,6 @@ +DESCRIBE FUNCTION sum; +DESCRIBE FUNCTION EXTENDED sum; + +DESCRIBE FUNCTION sum; +DESCRIBE FUNCTION EXTENDED sum; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_tan.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_tan.q new file mode 100644 index 0000000000000..f103da9ecb2de --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_tan.q @@ -0,0 +1,16 @@ +DESCRIBE FUNCTION tan; +DESCRIBE FUNCTION EXTENDED tan; + +SELECT tan(null) +FROM src LIMIT 1; + +SELECT tan(1), tan(6), tan(-1.0) +FROM src LIMIT 1; +DESCRIBE FUNCTION tan; +DESCRIBE FUNCTION EXTENDED tan; + +SELECT tan(null) +FROM src LIMIT 1; + +SELECT tan(1), tan(6), tan(-1.0) +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_testlength.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_testlength.q new file mode 100644 index 0000000000000..322a061d645d7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_testlength.q @@ -0,0 +1,12 @@ +EXPLAIN +CREATE TEMPORARY FUNCTION testlength AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength'; + +CREATE TEMPORARY FUNCTION testlength AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength'; + +CREATE TABLE dest1(len INT); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT testlength(src.value); + +SELECT dest1.* FROM dest1; + +DROP TEMPORARY FUNCTION testlength; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_testlength2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_testlength2.q new file mode 100644 index 0000000000000..6de270902f7fb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_testlength2.q @@ -0,0 +1,12 @@ +EXPLAIN +CREATE TEMPORARY FUNCTION testlength2 AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength2'; + +CREATE TEMPORARY FUNCTION testlength2 AS 'org.apache.hadoop.hive.ql.udf.UDFTestLength2'; + +CREATE TABLE dest1(len INT); + +FROM src INSERT OVERWRITE TABLE dest1 SELECT testlength2(src.value); + +SELECT dest1.* FROM dest1; + +DROP TEMPORARY FUNCTION testlength2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_tinyint.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_tinyint.q new file mode 100644 index 0000000000000..56ea53af7766d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_tinyint.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION tinyint; +DESCRIBE FUNCTION EXTENDED tinyint; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_boolean.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_boolean.q new file mode 100644 index 0000000000000..ca23f719f93e3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_boolean.q @@ -0,0 +1,44 @@ +-- 'true' cases: + +SELECT CAST(CAST(1 AS TINYINT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(2 AS SMALLINT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(-4 AS INT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(-444 AS BIGINT) AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST(7.0 AS FLOAT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(-8.0 AS DOUBLE) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(-99.0 AS DECIMAL) AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST('Foo' AS STRING) AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST('2011-05-06 07:08:09' as timestamp) AS BOOLEAN) FROM src LIMIT 1; + +-- 'false' cases: + +SELECT CAST(CAST(0 AS TINYINT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(0 AS SMALLINT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(0 AS INT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(0 AS BIGINT) AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST(0.0 AS FLOAT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(0.0 AS DOUBLE) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(0.0 AS DECIMAL) AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST('' AS STRING) AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST(0 as timestamp) AS BOOLEAN) FROM src LIMIT 1; + +-- 'NULL' cases: +SELECT CAST(NULL AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST(NULL AS TINYINT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(NULL AS SMALLINT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(NULL AS INT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(NULL AS BIGINT) AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST(NULL AS FLOAT) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(NULL AS DOUBLE) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(NULL AS DECIMAL) AS BOOLEAN) FROM src LIMIT 1; + +SELECT CAST(CAST(NULL AS STRING) AS BOOLEAN) FROM src LIMIT 1; +SELECT CAST(CAST(NULL as timestamp) AS BOOLEAN) FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_byte.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_byte.q new file mode 100644 index 0000000000000..ded930d1115a4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_byte.q @@ -0,0 +1,15 @@ +-- Conversion of main primitive types to Byte type: +SELECT CAST(NULL AS TINYINT) FROM src LIMIT 1; + +SELECT CAST(TRUE AS TINYINT) FROM src LIMIT 1; + +SELECT CAST(CAST(-18 AS SMALLINT) AS TINYINT) FROM src LIMIT 1; +SELECT CAST(-129 AS TINYINT) FROM src LIMIT 1; +SELECT CAST(CAST(-1025 AS BIGINT) AS TINYINT) FROM src LIMIT 1; + +SELECT CAST(CAST(-3.14 AS DOUBLE) AS TINYINT) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS FLOAT) AS TINYINT) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS DECIMAL) AS TINYINT) FROM src LIMIT 1; + +SELECT CAST('-38' AS TINYINT) FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_date.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_date.q new file mode 100644 index 0000000000000..935609bbc3e55 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_date.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION to_date; +DESCRIBE FUNCTION EXTENDED to_date; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_double.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_double.q new file mode 100644 index 0000000000000..b0a248ad70bba --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_double.q @@ -0,0 +1,15 @@ +-- Conversion of main primitive types to Double type: +SELECT CAST(NULL AS DOUBLE) FROM src LIMIT 1; + +SELECT CAST(TRUE AS DOUBLE) FROM src LIMIT 1; + +SELECT CAST(CAST(-7 AS TINYINT) AS DOUBLE) FROM src LIMIT 1; +SELECT CAST(CAST(-18 AS SMALLINT) AS DOUBLE) FROM src LIMIT 1; +SELECT CAST(-129 AS DOUBLE) FROM src LIMIT 1; +SELECT CAST(CAST(-1025 AS BIGINT) AS DOUBLE) FROM src LIMIT 1; + +SELECT CAST(CAST(-3.14 AS FLOAT) AS DOUBLE) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS DECIMAL) AS DOUBLE) FROM src LIMIT 1; + +SELECT CAST('-38.14' AS DOUBLE) FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_float.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_float.q new file mode 100644 index 0000000000000..c91d18cc2f5c7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_float.q @@ -0,0 +1,15 @@ +-- Conversion of main primitive types to Float type: +SELECT CAST(NULL AS FLOAT) FROM src LIMIT 1; + +SELECT CAST(TRUE AS FLOAT) FROM src LIMIT 1; + +SELECT CAST(CAST(-7 AS TINYINT) AS FLOAT) FROM src LIMIT 1; +SELECT CAST(CAST(-18 AS SMALLINT) AS FLOAT) FROM src LIMIT 1; +SELECT CAST(-129 AS FLOAT) FROM src LIMIT 1; +SELECT CAST(CAST(-1025 AS BIGINT) AS FLOAT) FROM src LIMIT 1; + +SELECT CAST(CAST(-3.14 AS DOUBLE) AS FLOAT) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS DECIMAL) AS FLOAT) FROM src LIMIT 1; + +SELECT CAST('-38.14' AS FLOAT) FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_long.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_long.q new file mode 100644 index 0000000000000..45dc6f8bd32fa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_long.q @@ -0,0 +1,15 @@ +-- Conversion of main primitive types to Long type: +SELECT CAST(NULL AS BIGINT) FROM src LIMIT 1; + +SELECT CAST(TRUE AS BIGINT) FROM src LIMIT 1; + +SELECT CAST(CAST(-7 AS TINYINT) AS BIGINT) FROM src LIMIT 1; +SELECT CAST(CAST(-18 AS SMALLINT) AS BIGINT) FROM src LIMIT 1; +SELECT CAST(-129 AS BIGINT) FROM src LIMIT 1; + +SELECT CAST(CAST(-3.14 AS DOUBLE) AS BIGINT) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS FLOAT) AS BIGINT) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS DECIMAL) AS BIGINT) FROM src LIMIT 1; + +SELECT CAST('-38' AS BIGINT) FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_short.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_short.q new file mode 100644 index 0000000000000..7d843c1ea12ea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_short.q @@ -0,0 +1,15 @@ +-- Conversion of main primitive types to Short type: +SELECT CAST(NULL AS SMALLINT) FROM src LIMIT 1; + +SELECT CAST(TRUE AS SMALLINT) FROM src LIMIT 1; + +SELECT CAST(CAST(-18 AS TINYINT) AS SMALLINT) FROM src LIMIT 1; +SELECT CAST(-129 AS SMALLINT) FROM src LIMIT 1; +SELECT CAST(CAST(-1025 AS BIGINT) AS SMALLINT) FROM src LIMIT 1; + +SELECT CAST(CAST(-3.14 AS DOUBLE) AS SMALLINT) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS FLOAT) AS SMALLINT) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS DECIMAL) AS SMALLINT) FROM src LIMIT 1; + +SELECT CAST('-38' AS SMALLINT) FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_string.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_string.q new file mode 100644 index 0000000000000..3b585e7170c60 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_string.q @@ -0,0 +1,16 @@ +-- Conversion of main primitive types to String type: +SELECT CAST(NULL AS STRING) FROM src LIMIT 1; + +SELECT CAST(TRUE AS STRING) FROM src LIMIT 1; + +SELECT CAST(CAST(1 AS TINYINT) AS STRING) FROM src LIMIT 1; +SELECT CAST(CAST(-18 AS SMALLINT) AS STRING) FROM src LIMIT 1; +SELECT CAST(-129 AS STRING) FROM src LIMIT 1; +SELECT CAST(CAST(-1025 AS BIGINT) AS STRING) FROM src LIMIT 1; + +SELECT CAST(CAST(-3.14 AS DOUBLE) AS STRING) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS FLOAT) AS STRING) FROM src LIMIT 1; +SELECT CAST(CAST(-3.14 AS DECIMAL) AS STRING) FROM src LIMIT 1; + +SELECT CAST('Foo' AS STRING) FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_unix_timestamp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_unix_timestamp.q new file mode 100644 index 0000000000000..3024074bba4b3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_to_unix_timestamp.q @@ -0,0 +1,29 @@ +DESCRIBE FUNCTION to_unix_timestamp; +DESCRIBE FUNCTION EXTENDED to_unix_timestamp; + +create table oneline(key int, value string); +load data local inpath '../data/files/things.txt' into table oneline; + +SELECT + '2009-03-20 11:30:01', + to_unix_timestamp('2009-03-20 11:30:01') +FROM oneline; + +SELECT + '2009-03-20', + to_unix_timestamp('2009-03-20', 'yyyy-MM-dd') +FROM oneline; + +SELECT + '2009 Mar 20 11:30:01 am', + to_unix_timestamp('2009 Mar 20 11:30:01 am', 'yyyy MMM dd h:mm:ss a') +FROM oneline; + +SELECT + 'random_string', + to_unix_timestamp('random_string') +FROM oneline; + +-- PPD +explain select * from (select * from src) a where unix_timestamp(a.key) > 10; +explain select * from (select * from src) a where to_unix_timestamp(a.key) > 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_translate.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_translate.q new file mode 100644 index 0000000000000..cba6ff90f643f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_translate.q @@ -0,0 +1,37 @@ +DESCRIBE FUNCTION translate; +DESCRIBE FUNCTION EXTENDED translate; + +-- Create some tables to serve some input data +CREATE TABLE table_input(input STRING); +CREATE TABLE table_translate(input_string STRING, from_string STRING, to_string STRING); + +FROM src INSERT OVERWRITE TABLE table_input SELECT 'abcd' WHERE src.key = 86; +FROM src INSERT OVERWRITE TABLE table_translate SELECT 'abcd', 'ahd', '12' WHERE src.key = 86; + +-- Run some queries on constant input parameters +SELECT translate('abcd', 'ab', '12'), + translate('abcd', 'abc', '12') FROM src LIMIT 1; + +-- Run some queries where first parameter being a table column while the other two being constants +SELECT translate(table_input.input, 'ab', '12'), + translate(table_input.input, 'abc', '12') FROM table_input LIMIT 1; + +-- Run some queries where all parameters are coming from table columns +SELECT translate(input_string, from_string, to_string) FROM table_translate LIMIT 1; + +-- Run some queries where some parameters are NULL +SELECT translate(NULL, 'ab', '12'), + translate('abcd', NULL, '12'), + translate('abcd', 'ab', NULL), + translate(NULL, NULL, NULL) FROM src LIMIT 1; + +-- Run some queries where the same character appears several times in the from string (2nd argument) of the UDF +SELECT translate('abcd', 'aba', '123'), + translate('abcd', 'aba', '12') FROM src LIMIT 1; + +-- Run some queries for the ignorant case when the 3rd parameter has more characters than the second one +SELECT translate('abcd', 'abc', '1234') FROM src LIMIT 1; + +-- Test proper function over UTF-8 characters +SELECT translate('Àbcd', 'À', 'Ã') FROM src LIMIT 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_trim.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_trim.q new file mode 100644 index 0000000000000..1fa34e00c90cf --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_trim.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION trim; +DESCRIBE FUNCTION EXTENDED trim; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ucase.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ucase.q new file mode 100644 index 0000000000000..a61b9ba67a4d6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_ucase.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION ucase; +DESCRIBE FUNCTION EXTENDED ucase; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_unhex.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_unhex.q new file mode 100644 index 0000000000000..e80021c8b2c51 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_unhex.q @@ -0,0 +1,19 @@ +DESCRIBE FUNCTION unhex; +DESCRIBE FUNCTION EXTENDED unhex; + +-- Good inputs + +SELECT + unhex('4D7953514C'), + unhex('31323637'), + unhex('61'), + unhex('2D34'), + unhex('') +FROM src limit 1; + +-- Bad inputs +SELECT + unhex('MySQL'), + unhex('G123'), + unhex('\0') +FROM src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_union.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_union.q new file mode 100644 index 0000000000000..9140d22fb58c7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_union.q @@ -0,0 +1,11 @@ +DESCRIBE FUNCTION create_union; +DESCRIBE FUNCTION EXTENDED create_union; + +EXPLAIN +SELECT create_union(0, key), create_union(if(key<100, 0, 1), 2.0, value), +create_union(1, "a", struct(2, "b")) +FROM src LIMIT 2; + +SELECT create_union(0, key), create_union(if(key<100, 0, 1), 2.0, value), +create_union(1, "a", struct(2, "b")) +FROM src LIMIT 2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_unix_timestamp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_unix_timestamp.q new file mode 100644 index 0000000000000..89288a1193c87 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_unix_timestamp.q @@ -0,0 +1,27 @@ +DESCRIBE FUNCTION unix_timestamp; +DESCRIBE FUNCTION EXTENDED unix_timestamp; + +create table oneline(key int, value string); +load data local inpath '../data/files/things.txt' into table oneline; + +SELECT + '2009-03-20 11:30:01', + unix_timestamp('2009-03-20 11:30:01') +FROM oneline; + +SELECT + '2009-03-20', + unix_timestamp('2009-03-20', 'yyyy-MM-dd') +FROM oneline; + +SELECT + '2009 Mar 20 11:30:01 am', + unix_timestamp('2009 Mar 20 11:30:01 am', 'yyyy MMM dd h:mm:ss a') +FROM oneline; + +SELECT + 'random_string', + unix_timestamp('random_string') +FROM oneline; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_upper.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_upper.q new file mode 100644 index 0000000000000..2a9d5ed4d6c90 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_upper.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION upper; +DESCRIBE FUNCTION EXTENDED upper; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_var_pop.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_var_pop.q new file mode 100644 index 0000000000000..7761506f28cbb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_var_pop.q @@ -0,0 +1,2 @@ +DESCRIBE FUNCTION var_pop; +DESCRIBE FUNCTION EXTENDED var_pop; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_var_samp.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_var_samp.q new file mode 100644 index 0000000000000..de68e499005ef --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_var_samp.q @@ -0,0 +1,4 @@ +DESCRIBE FUNCTION var_samp; +DESCRIBE FUNCTION EXTENDED var_samp; +DESCRIBE FUNCTION var_samp; +DESCRIBE FUNCTION EXTENDED var_samp; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_variance.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_variance.q new file mode 100644 index 0000000000000..579cc8e68f49c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_variance.q @@ -0,0 +1,10 @@ +DESCRIBE FUNCTION variance; +DESCRIBE FUNCTION EXTENDED variance; + +DESCRIBE FUNCTION var_pop; +DESCRIBE FUNCTION EXTENDED var_pop; +DESCRIBE FUNCTION variance; +DESCRIBE FUNCTION EXTENDED variance; + +DESCRIBE FUNCTION var_pop; +DESCRIBE FUNCTION EXTENDED var_pop; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_weekofyear.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_weekofyear.q new file mode 100644 index 0000000000000..4b7b4ea55aa81 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_weekofyear.q @@ -0,0 +1,6 @@ +DESCRIBE FUNCTION weekofyear; +DESCRIBE FUNCTION EXTENDED weekofyear; + +SELECT weekofyear('1980-01-01'), weekofyear('1980-01-06'), weekofyear('1980-01-07'), weekofyear('1980-12-31'), +weekofyear('1984-1-1'), weekofyear('2008-02-20 00:00:00'), weekofyear('1980-12-28 23:59:59'), weekofyear('1980-12-29 23:59:59') +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_when.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_when.q new file mode 100644 index 0000000000000..d94a594f026c5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_when.q @@ -0,0 +1,57 @@ +DESCRIBE FUNCTION when; +DESCRIBE FUNCTION EXTENDED when; + +EXPLAIN +SELECT CASE + WHEN 1=1 THEN 2 + WHEN 1=3 THEN 4 + ELSE 5 + END, + CASE + WHEN 6=7 THEN 8 + ELSE 9 + END, + CASE + WHEN 10=11 THEN 12 + WHEN 13=13 THEN 14 + END, + CASE + WHEN 15=16 THEN 17 + WHEN 18=19 THEN 20 + END, + CASE + WHEN 21=22 THEN NULL + WHEN 23=23 THEN 24 + END, + CASE + WHEN 25=26 THEN 27 + WHEN 28=28 THEN NULL + END +FROM src LIMIT 1; + +SELECT CASE + WHEN 1=1 THEN 2 + WHEN 1=3 THEN 4 + ELSE 5 + END, + CASE + WHEN 6=7 THEN 8 + ELSE 9 + END, + CASE + WHEN 10=11 THEN 12 + WHEN 13=13 THEN 14 + END, + CASE + WHEN 15=16 THEN 17 + WHEN 18=19 THEN 20 + END, + CASE + WHEN 21=22 THEN NULL + WHEN 23=23 THEN 24 + END, + CASE + WHEN 25=26 THEN 27 + WHEN 28=28 THEN NULL + END +FROM src LIMIT 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath.q new file mode 100644 index 0000000000000..fca1ba11d85b2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath.q @@ -0,0 +1,8 @@ +DESCRIBE FUNCTION xpath ; +DESCRIBE FUNCTION EXTENDED xpath ; + +SELECT xpath ('b1b2b3c1c2', 'a/text()') FROM src LIMIT 1 ; +SELECT xpath ('b1b2b3c1c2', 'a/*/text()') FROM src LIMIT 1 ; +SELECT xpath ('b1b2b3c1c2', 'a/b/text()') FROM src LIMIT 1 ; +SELECT xpath ('b1b2b3c1c2', 'a/c/text()') FROM src LIMIT 1 ; +SELECT xpath ('b1b2b3c1c2', 'a/*[@class="bb"]/text()') FROM src LIMIT 1 ; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_boolean.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_boolean.q new file mode 100644 index 0000000000000..3a6e613eb6a0e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_boolean.q @@ -0,0 +1,9 @@ +DESCRIBE FUNCTION xpath_boolean ; +DESCRIBE FUNCTION EXTENDED xpath_boolean ; + +SELECT xpath_boolean ('b', 'a/b') FROM src LIMIT 1 ; +SELECT xpath_boolean ('b', 'a/c') FROM src LIMIT 1 ; +SELECT xpath_boolean ('b', 'a/b = "b"') FROM src LIMIT 1 ; +SELECT xpath_boolean ('b', 'a/b = "c"') FROM src LIMIT 1 ; +SELECT xpath_boolean ('10', 'a/b < 10') FROM src LIMIT 1 ; +SELECT xpath_boolean ('10', 'a/b = 10') FROM src LIMIT 1 ; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_double.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_double.q new file mode 100644 index 0000000000000..4328747f44497 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_double.q @@ -0,0 +1,14 @@ +DESCRIBE FUNCTION xpath_number ; +DESCRIBE FUNCTION EXTENDED xpath_number ; + +DESCRIBE FUNCTION xpath_double ; +DESCRIBE FUNCTION EXTENDED xpath_double ; + +SELECT xpath_double ('this is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_double ('this 2 is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_double ('200000000040000000000', 'a/b * a/c') FROM src LIMIT 1 ; +SELECT xpath_double ('try a boolean', 'a = 10') FROM src LIMIT 1 ; +SELECT xpath_double ('1248', 'a/b') FROM src LIMIT 1 ; +SELECT xpath_double ('1248', 'sum(a/*)') FROM src LIMIT 1 ; +SELECT xpath_double ('1248', 'sum(a/b)') FROM src LIMIT 1 ; +SELECT xpath_double ('1248', 'sum(a/b[@class="odd"])') FROM src LIMIT 1 ; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_float.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_float.q new file mode 100644 index 0000000000000..1f1482833c858 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_float.q @@ -0,0 +1,11 @@ +DESCRIBE FUNCTION xpath_float ; +DESCRIBE FUNCTION EXTENDED xpath_float ; + +SELECT xpath_float ('this is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_float ('this 2 is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_float ('200000000040000000000', 'a/b * a/c') FROM src LIMIT 1 ; +SELECT xpath_float ('try a boolean', 'a = 10') FROM src LIMIT 1 ; +SELECT xpath_float ('1248', 'a/b') FROM src LIMIT 1 ; +SELECT xpath_float ('1248', 'sum(a/*)') FROM src LIMIT 1 ; +SELECT xpath_float ('1248', 'sum(a/b)') FROM src LIMIT 1 ; +SELECT xpath_float ('1248', 'sum(a/b[@class="odd"])') FROM src LIMIT 1 ; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_int.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_int.q new file mode 100644 index 0000000000000..9b50bd9eeb365 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_int.q @@ -0,0 +1,11 @@ +DESCRIBE FUNCTION xpath_int ; +DESCRIBE FUNCTION EXTENDED xpath_int ; + +SELECT xpath_int ('this is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_int ('this 2 is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_int ('200000000040000000000', 'a/b * a/c') FROM src LIMIT 1 ; +SELECT xpath_int ('try a boolean', 'a = 10') FROM src LIMIT 1 ; +SELECT xpath_int ('1248', 'a/b') FROM src LIMIT 1 ; +SELECT xpath_int ('1248', 'sum(a/*)') FROM src LIMIT 1 ; +SELECT xpath_int ('1248', 'sum(a/b)') FROM src LIMIT 1 ; +SELECT xpath_int ('1248', 'sum(a/b[@class="odd"])') FROM src LIMIT 1 ; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_long.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_long.q new file mode 100644 index 0000000000000..04ee61b1f0e9d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_long.q @@ -0,0 +1,11 @@ +DESCRIBE FUNCTION xpath_long ; +DESCRIBE FUNCTION EXTENDED xpath_long ; + +SELECT xpath_long ('this is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_long ('this 2 is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_long ('200000000040000000000', 'a/b * a/c') FROM src LIMIT 1 ; +SELECT xpath_long ('try a boolean', 'a = 10') FROM src LIMIT 1 ; +SELECT xpath_long ('1248', 'a/b') FROM src LIMIT 1 ; +SELECT xpath_long ('1248', 'sum(a/*)') FROM src LIMIT 1 ; +SELECT xpath_long ('1248', 'sum(a/b)') FROM src LIMIT 1 ; +SELECT xpath_long ('1248', 'sum(a/b[@class="odd"])') FROM src LIMIT 1 ; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_short.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_short.q new file mode 100644 index 0000000000000..6a1abdc0bdb21 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_short.q @@ -0,0 +1,11 @@ +DESCRIBE FUNCTION xpath_short ; +DESCRIBE FUNCTION EXTENDED xpath_short ; + +SELECT xpath_short ('this is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_short ('this 2 is not a number', 'a') FROM src LIMIT 1 ; +SELECT xpath_short ('200000000040000000000', 'a/b * a/c') FROM src LIMIT 1 ; +SELECT xpath_short ('try a boolean', 'a = 10') FROM src LIMIT 1 ; +SELECT xpath_short ('1248', 'a/b') FROM src LIMIT 1 ; +SELECT xpath_short ('1248', 'sum(a/*)') FROM src LIMIT 1 ; +SELECT xpath_short ('1248', 'sum(a/b)') FROM src LIMIT 1 ; +SELECT xpath_short ('1248', 'sum(a/b[@class="odd"])') FROM src LIMIT 1 ; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_string.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_string.q new file mode 100644 index 0000000000000..ebbc913b71bfb --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udf_xpath_string.q @@ -0,0 +1,11 @@ +DESCRIBE FUNCTION xpath_string ; +DESCRIBE FUNCTION EXTENDED xpath_string ; + +SELECT xpath_string ('bbcc', 'a') FROM src LIMIT 1 ; +SELECT xpath_string ('bbcc', 'a/b') FROM src LIMIT 1 ; +SELECT xpath_string ('bbcc', 'a/c') FROM src LIMIT 1 ; +SELECT xpath_string ('bbcc', 'a/d') FROM src LIMIT 1 ; +SELECT xpath_string ('b1b2', '//b') FROM src LIMIT 1 ; +SELECT xpath_string ('b1b2', 'a/b[1]') FROM src LIMIT 1 ; +SELECT xpath_string ('b1b2', 'a/b[2]') FROM src LIMIT 1 ; +SELECT xpath_string ('b1b2', 'a/b[@id="b_2"]') FROM src LIMIT 1 ; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_explode.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_explode.q new file mode 100644 index 0000000000000..638a4e9ca57e7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_explode.q @@ -0,0 +1,25 @@ +DESCRIBE FUNCTION explode; +DESCRIBE FUNCTION EXTENDED explode; + +EXPLAIN EXTENDED SELECT explode(array(1,2,3)) AS myCol FROM src LIMIT 3; +EXPLAIN EXTENDED SELECT a.myCol, count(1) FROM (SELECT explode(array(1,2,3)) AS myCol FROM src LIMIT 3) a GROUP BY a.myCol; + +SELECT explode(array(1,2,3)) AS myCol FROM src LIMIT 3; +SELECT explode(array(1,2,3)) AS (myCol) FROM src LIMIT 3; +SELECT a.myCol, count(1) FROM (SELECT explode(array(1,2,3)) AS myCol FROM src LIMIT 3) a GROUP BY a.myCol; + +EXPLAIN SELECT explode(map(1,'one',2,'two',3,'three')) as (myKey,myVal) FROM src LIMIT 3; +EXPLAIN EXTENDED SELECT a.myKey, a.myVal, count(1) FROM (SELECT explode(map(1,'one',2,'two',3,'three')) as (myKey,myVal) FROM src LIMIT 3) a GROUP BY a.myKey, a.myVal; + +SELECT explode(map(1,'one',2,'two',3,'three')) as (myKey,myVal) FROM src LIMIT 3; +SELECT a.myKey, a.myVal, count(1) FROM (SELECT explode(map(1,'one',2,'two',3,'three')) as (myKey,myVal) FROM src LIMIT 3) a GROUP BY a.myKey, a.myVal; + +SELECT src.key, myCol FROM src lateral view explode(array(1,2,3)) x AS myCol LIMIT 3; +SELECT src.key, myKey, myVal FROM src lateral view explode(map(1,'one',2,'two',3,'three')) x AS myKey,myVal LIMIT 3; + +-- HIVE-4295 +SELECT BLOCK__OFFSET__INSIDE__FILE, src.key, myKey, myVal FROM src lateral view explode(map(1,'one',2,'two',3,'three')) x AS myKey,myVal LIMIT 3; + +set hive.optimize.cp=false; +SELECT src.key, myKey, myVal FROM src lateral view explode(map(1,'one',2,'two',3,'three')) x AS myKey,myVal LIMIT 3; +SELECT BLOCK__OFFSET__INSIDE__FILE, src.key, myKey, myVal FROM src lateral view explode(map(1,'one',2,'two',3,'three')) x AS myKey,myVal LIMIT 3; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_json_tuple.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_json_tuple.q new file mode 100644 index 0000000000000..712d9598c755d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_json_tuple.q @@ -0,0 +1,47 @@ +create table json_t (key string, jstring string); + +insert overwrite table json_t +select * from ( + select '1', '{"f1": "value1", "f2": "value2", "f3": 3, "f5": 5.23}' from src limit 1 + union all + select '2', '{"f1": "value12", "f3": "value3", "f2": 2, "f4": 4.01}' from src limit 1 + union all + select '3', '{"f1": "value13", "f4": "value44", "f3": "value33", "f2": 2, "f5": 5.01}' from src limit 1 + union all + select '4', cast(null as string) from src limit 1 + union all + select '5', '{"f1": "", "f5": null}' from src limit 1 + union all + select '6', '[invalid JSON string]' from src limit 1 +) s; + +explain +select a.key, b.* from json_t a lateral view json_tuple(a.jstring, 'f1', 'f2', 'f3', 'f4', 'f5') b as f1, f2, f3, f4, f5 order by a.key; + +select a.key, b.* from json_t a lateral view json_tuple(a.jstring, 'f1', 'f2', 'f3', 'f4', 'f5') b as f1, f2, f3, f4, f5 order by a.key; + +explain +select json_tuple(a.jstring, 'f1', 'f2', 'f3', 'f4', 'f5') as (f1, f2, f3, f4, f5) from json_t a order by f1, f2, f3; + +select json_tuple(a.jstring, 'f1', 'f2', 'f3', 'f4', 'f5') as (f1, f2, f3, f4, f5) from json_t a order by f1, f2, f3; + +explain +select a.key, b.f2, b.f5 from json_t a lateral view json_tuple(a.jstring, 'f1', 'f2', 'f3', 'f4', 'f5') b as f1, f2, f3, f4, f5 order by a.key; + +select a.key, b.f2, b.f5 from json_t a lateral view json_tuple(a.jstring, 'f1', 'f2', 'f3', 'f4', 'f5') b as f1, f2, f3, f4, f5 order by a.key; + +explain +select f2, count(*) from json_t a lateral view json_tuple(a.jstring, 'f1', 'f2', 'f3', 'f4', 'f5') b as f1, f2, f3, f4, f5 where f1 is not null group by f2 order by f2; + +select f2, count(*) from json_t a lateral view json_tuple(a.jstring, 'f1', 'f2', 'f3', 'f4', 'f5') b as f1, f2, f3, f4, f5 where f1 is not null group by f2 order by f2; + + +-- Verify that json_tuple can handle new lines in JSON values + +CREATE TABLE dest1(c1 STRING) STORED AS RCFILE; + +INSERT OVERWRITE TABLE dest1 SELECT '{"a":"b\nc"}' FROM src LIMIT 1; + +SELECT * FROM dest1; + +SELECT json FROM dest1 a LATERAL VIEW json_tuple(c1, 'a') b AS json; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_parse_url_tuple.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_parse_url_tuple.q new file mode 100644 index 0000000000000..055e39b2973a6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_parse_url_tuple.q @@ -0,0 +1,42 @@ +create table url_t (key string, fullurl string); + +insert overwrite table url_t +select * from ( + select '1', 'http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1' from src limit 1 + union all + select '2', 'https://www.socs.uts.edu.au:80/MosaicDocs-old/url-primer.html?k1=tps#chapter1' from src limit 1 + union all + select '3', 'ftp://sites.google.com/a/example.com/site/page' from src limit 1 + union all + select '4', cast(null as string) from src limit 1 + union all + select '5', 'htttp://' from src limit 1 + union all + select '6', '[invalid url string]' from src limit 1 +) s; + +describe function parse_url_tuple; +describe function extended parse_url_tuple; + +explain +select a.key, b.* from url_t a lateral view parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE', 'AUTHORITY', 'USERINFO', 'QUERY:k1') b as ho, pa, qu, re, pr, fi, au, us, qk1 order by a.key; + +select a.key, b.* from url_t a lateral view parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE', 'AUTHORITY', 'USERINFO', 'QUERY:k1') b as ho, pa, qu, re, pr, fi, au, us, qk1 order by a.key; + +explain +select parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE', 'AUTHORITY', 'USERINFO', 'QUERY:k1') as (ho, pa, qu, re, pr, fi, au, us, qk1) from url_t a order by ho, pa, qu; + +select parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE', 'AUTHORITY', 'USERINFO', 'QUERY:k1') as (ho, pa, qu, re, pr, fi, au, us, qk1) from url_t a order by ho, pa, qu; + +-- should return null for 'host', 'query', 'QUERY:nonExistCol' +explain +select a.key, b.ho, b.qu, b.qk1, b.err1, b.err2, b.err3 from url_t a lateral view parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE', 'AUTHORITY', 'USERINFO', 'QUERY:k1', 'host', 'query', 'QUERY:nonExistCol') b as ho, pa, qu, re, pr, fi, au, us, qk1, err1, err2, err3 order by a.key; + +select a.key, b.ho, b.qu, b.qk1, b.err1, b.err2, b.err3 from url_t a lateral view parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE', 'AUTHORITY', 'USERINFO', 'QUERY:k1', 'host', 'query', 'QUERY:nonExistCol') b as ho, pa, qu, re, pr, fi, au, us, qk1, err1, err2, err3 order by a.key; + + +explain +select ho, count(*) from url_t a lateral view parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE', 'AUTHORITY', 'USERINFO', 'QUERY:k1') b as ho, pa, qu, re, pr, fi, au, us, qk1 where qk1 is not null group by ho; + +select ho, count(*) from url_t a lateral view parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE', 'AUTHORITY', 'USERINFO', 'QUERY:k1') b as ho, pa, qu, re, pr, fi, au, us, qk1 where qk1 is not null group by ho; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_stack.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_stack.q new file mode 100644 index 0000000000000..e7cbae0605954 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/udtf_stack.q @@ -0,0 +1,7 @@ +DESCRIBE FUNCTION stack; + +EXPLAIN SELECT x, y FROM src LATERAL VIEW STACK(2, 'x', array(1), 'z') a AS x, y LIMIT 2; +EXPLAIN SELECT x, y FROM src LATERAL VIEW STACK(2, 'x', array(1), 'z', array(4)) a AS x, y LIMIT 2; + +SELECT x, y FROM src LATERAL VIEW STACK(2, 'x', array(1), 'z') a AS x, y LIMIT 2; +SELECT x, y FROM src LATERAL VIEW STACK(2, 'x', array(1), 'z', array(4)) a AS x, y LIMIT 2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/unicode_notation.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/unicode_notation.q new file mode 100644 index 0000000000000..b3397363e1943 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/unicode_notation.q @@ -0,0 +1,13 @@ +-- HIVE-4618 hive should accept unicode notation like \uxxxx + +CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001'; +desc formatted k1; +drop table k1; + +CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'; +desc formatted k1; +drop table k1; + +CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'; +desc formatted k1; +drop table k1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union.q new file mode 100644 index 0000000000000..91bbd1b07f08b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union.q @@ -0,0 +1,18 @@ +-- union case: both subqueries are map jobs on same input, followed by filesink + +EXPLAIN +FROM ( + FROM src select src.key, src.value WHERE src.key < 100 + UNION ALL + FROM src SELECT src.* WHERE src.key > 100 +) unioninput +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/union.out' SELECT unioninput.*; + +FROM ( + FROM src select src.key, src.value WHERE src.key < 100 + UNION ALL + FROM src SELECT src.* WHERE src.key > 100 +) unioninput +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/union.out' SELECT unioninput.*; + +dfs -cat ../build/ql/test/data/warehouse/union.out/*; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union10.q new file mode 100644 index 0000000000000..8a5c5f78c8469 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union10.q @@ -0,0 +1,25 @@ +set hive.map.aggr = true; + +-- union case: all subqueries are a map-reduce jobs, 3 way union, same input for all sub-queries, followed by filesink + +create table tmptable(key string, value int); + +explain +insert overwrite table tmptable + select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src s2 + UNION ALL + select 'tst3' as key, count(1) as value from src s3) unionsrc; + + +insert overwrite table tmptable + select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src s2 + UNION ALL + select 'tst3' as key, count(1) as value from src s3) unionsrc; + + +select * from tmptable x sort by x.key; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union11.q new file mode 100644 index 0000000000000..77dc2efec5692 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union11.q @@ -0,0 +1,20 @@ +set hive.map.aggr = true; + +-- union case: all subqueries are a map-reduce jobs, 3 way union, same input for all sub-queries, followed by reducesink + +explain + select unionsrc.key, count(1) FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src s2 + UNION ALL + select 'tst3' as key, count(1) as value from src s3) unionsrc group by unionsrc.key; + + + select unionsrc.key, count(1) FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src s2 + UNION ALL + select 'tst3' as key, count(1) as value from src s3) unionsrc group by unionsrc.key; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union12.q new file mode 100644 index 0000000000000..b0893df97be67 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union12.q @@ -0,0 +1,23 @@ +set hive.map.aggr = true; + +-- union case: all subqueries are a map-reduce jobs, 3 way union, different inputs for all sub-queries, followed by filesink + +create table tmptable(key string, value int); + +explain +insert overwrite table tmptable + select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src1 s2 + UNION ALL + select 'tst3' as key, count(1) as value from srcbucket s3) unionsrc; + + +insert overwrite table tmptable + select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src1 s2 + UNION ALL + select 'tst3' as key, count(1) as value from srcbucket s3) unionsrc; + +select * from tmptable x sort by x.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union13.q new file mode 100644 index 0000000000000..8bee1d7993570 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union13.q @@ -0,0 +1,8 @@ +-- union case: both subqueries are a map-only jobs, same input, followed by filesink + +explain + select unionsrc.key, unionsrc.value FROM (select s1.key as key, s1.value as value from src s1 UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc; + +select unionsrc.key, unionsrc.value FROM (select s1.key as key, s1.value as value from src s1 UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union14.q new file mode 100644 index 0000000000000..4437ad8d01e49 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union14.q @@ -0,0 +1,16 @@ +set hive.map.aggr = true; + +-- union case: 1 subquery is a map-reduce job, different inputs for sub-queries, followed by reducesink + +explain + select unionsrc.key, count(1) FROM (select s2.key as key, s2.value as value from src1 s2 + UNION ALL + select 'tst1' as key, cast(count(1) as string) as value from src s1) + unionsrc group by unionsrc.key; + + + + select unionsrc.key, count(1) FROM (select s2.key as key, s2.value as value from src1 s2 + UNION ALL + select 'tst1' as key, cast(count(1) as string) as value from src s1) + unionsrc group by unionsrc.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union15.q new file mode 100644 index 0000000000000..3080b077e9d35 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union15.q @@ -0,0 +1,18 @@ +set hive.map.aggr = true; + +-- union case: 1 subquery is a map-reduce job, different inputs for sub-queries, followed by reducesink + +explain + select unionsrc.key, count(1) FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src1 s2 + UNION ALL + select s3.key as key, s3.value as value from src1 s3) unionsrc group by unionsrc.key; + + select unionsrc.key, count(1) FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src1 s2 + UNION ALL + select s3.key as key, s3.value as value from src1 s3) unionsrc group by unionsrc.key; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union16.q new file mode 100644 index 0000000000000..1df68b037ebe5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union16.q @@ -0,0 +1,63 @@ +EXPLAIN +SELECT count(1) FROM ( + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src) src; + + +SELECT count(1) FROM ( + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src UNION ALL + SELECT key, value FROM src) src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union17.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union17.q new file mode 100644 index 0000000000000..34b0e8cc6335f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union17.q @@ -0,0 +1,20 @@ +CREATE TABLE DEST1(key STRING, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key STRING, val1 STRING, val2 STRING) STORED AS TEXTFILE; + +-- union case:map-reduce sub-queries followed by multi-table insert + +explain +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc +INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, COUNT(DISTINCT SUBSTR(unionsrc.value,5)) GROUP BY unionsrc.key +INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, COUNT(DISTINCT SUBSTR(unionsrc.value,5)) GROUP BY unionsrc.key, unionsrc.value; + +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc +INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, COUNT(DISTINCT SUBSTR(unionsrc.value,5)) GROUP BY unionsrc.key +INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, COUNT(DISTINCT SUBSTR(unionsrc.value,5)) GROUP BY unionsrc.key, unionsrc.value; + +SELECT DEST1.* FROM DEST1; +SELECT DEST2.* FROM DEST2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union18.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union18.q new file mode 100644 index 0000000000000..6207730963173 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union18.q @@ -0,0 +1,20 @@ +CREATE TABLE DEST1(key STRING, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key STRING, val1 STRING, val2 STRING) STORED AS TEXTFILE; + +-- union case:map-reduce sub-queries followed by multi-table insert + +explain +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc +INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, unionsrc.value +INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, unionsrc.value; + +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc +INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, unionsrc.value +INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, unionsrc.value; + +SELECT DEST1.* FROM DEST1 SORT BY DEST1.key, DEST1.value; +SELECT DEST2.* FROM DEST2 SORT BY DEST2.key, DEST2.val1, DEST2.val2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union19.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union19.q new file mode 100644 index 0000000000000..dc61b74d02f0a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union19.q @@ -0,0 +1,26 @@ + + + +CREATE TABLE DEST1(key STRING, value STRING) STORED AS TEXTFILE; +CREATE TABLE DEST2(key STRING, val1 STRING, val2 STRING) STORED AS TEXTFILE; + +-- union case:map-reduce sub-queries followed by multi-table insert + +explain +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc +INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, count(unionsrc.value) group by unionsrc.key +INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, unionsrc.value; + +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc +INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, count(unionsrc.value) group by unionsrc.key +INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, unionsrc.value; + +SELECT DEST1.* FROM DEST1 SORT BY DEST1.key, DEST1.value; +SELECT DEST2.* FROM DEST2 SORT BY DEST2.key, DEST2.val1, DEST2.val2; + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union2.q new file mode 100644 index 0000000000000..581cbebd861e9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union2.q @@ -0,0 +1,8 @@ +-- union case: both subqueries are map-reduce jobs on same input, followed by reduce sink + +explain + select count(1) FROM (select s1.key as key, s1.value as value from src s1 UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc; + +select count(1) FROM (select s1.key as key, s1.value as value from src s1 UNION ALL + select s2.key as key, s2.value as value from src s2) unionsrc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union20.q new file mode 100644 index 0000000000000..267262e371e18 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union20.q @@ -0,0 +1,22 @@ +-- union :map-reduce sub-queries followed by join + +explain +SELECT unionsrc1.key, unionsrc1.value, unionsrc2.key, unionsrc2.value +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2 where s2.key < 10) unionsrc1 +JOIN + (select 'tst1' as key, cast(count(1) as string) as value from src s3 + UNION ALL + select s4.key as key, s4.value as value from src s4 where s4.key < 10) unionsrc2 +ON (unionsrc1.key = unionsrc2.key); + +SELECT unionsrc1.key, unionsrc1.value, unionsrc2.key, unionsrc2.value +FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src s2 where s2.key < 10) unionsrc1 +JOIN + (select 'tst1' as key, cast(count(1) as string) as value from src s3 + UNION ALL + select s4.key as key, s4.value as value from src s4 where s4.key < 10) unionsrc2 +ON (unionsrc1.key = unionsrc2.key); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union21.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union21.q new file mode 100644 index 0000000000000..8185994655228 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union21.q @@ -0,0 +1,30 @@ +-- union of constants, udf outputs, and columns from text table and thrift table + +explain +SELECT key, count(1) +FROM ( + SELECT '1' as key from src + UNION ALL + SELECT reverse(key) as key from src + UNION ALL + SELECT key as key from src + UNION ALL + SELECT astring as key from src_thrift + UNION ALL + SELECT lstring[0] as key from src_thrift +) union_output +GROUP BY key; + +SELECT key, count(1) +FROM ( + SELECT '1' as key from src + UNION ALL + SELECT reverse(key) as key from src + UNION ALL + SELECT key as key from src + UNION ALL + SELECT astring as key from src_thrift + UNION ALL + SELECT lstring[0] as key from src_thrift +) union_output +GROUP BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union22.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union22.q new file mode 100644 index 0000000000000..d0b125682f84e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union22.q @@ -0,0 +1,43 @@ +create table dst_union22(k1 string, k2 string, k3 string, k4 string) partitioned by (ds string); +create table dst_union22_delta(k0 string, k1 string, k2 string, k3 string, k4 string, k5 string) partitioned by (ds string); + +insert overwrite table dst_union22 partition (ds='1') +select key, value, key , value from src; + +insert overwrite table dst_union22_delta partition (ds='1') +select key, key, value, key, value, value from src; + +set hive.merge.mapfiles=false; + +set hive.auto.convert.join=true; +set hive.auto.convert.join.noconditionaltask=true; +set hive.auto.convert.join.noconditionaltask.size=10000; + +-- Since the inputs are small, it should be automatically converted to mapjoin + +explain extended +insert overwrite table dst_union22 partition (ds='2') +select * from +( +select k1 as k1, k2 as k2, k3 as k3, k4 as k4 from dst_union22_delta where ds = '1' and k0 <= 50 +union all +select a.k1 as k1, a.k2 as k2, b.k3 as k3, b.k4 as k4 +from dst_union22 a left outer join (select * from dst_union22_delta where ds = '1' and k0 > 50) b on +a.k1 = b.k1 and a.ds='1' +where a.k1 > 20 +) +subq; + +insert overwrite table dst_union22 partition (ds='2') +select * from +( +select k1 as k1, k2 as k2, k3 as k3, k4 as k4 from dst_union22_delta where ds = '1' and k0 <= 50 +union all +select a.k1 as k1, a.k2 as k2, b.k3 as k3, b.k4 as k4 +from dst_union22 a left outer join (select * from dst_union22_delta where ds = '1' and k0 > 50) b on +a.k1 = b.k1 and a.ds='1' +where a.k1 > 20 +) +subq; + +select * from dst_union22 where ds = '2' order by k1, k2, k3, k4; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union23.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union23.q new file mode 100644 index 0000000000000..41dca46ad2369 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union23.q @@ -0,0 +1,17 @@ +explain +select s.key2, s.value2 +from ( + select transform(key, value) using 'cat' as (key2, value2) + from src + union all + select key as key2, value as value2 from src) s +order by s.key2, s.value2; + +select s.key2, s.value2 +from ( + select transform(key, value) using 'cat' as (key2, value2) + from src + union all + select key as key2, value as value2 from src) s +order by s.key2, s.value2; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union24.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union24.q new file mode 100644 index 0000000000000..e8f0e14076080 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union24.q @@ -0,0 +1,70 @@ +create table src2 as select key, count(1) as count from src group by key; +create table src3 as select * from src2; +create table src4 as select * from src2; +create table src5 as select * from src2; + + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + + +explain extended +select s.key, s.count from ( + select key, count from src2 where key < 10 + union all + select key, count from src3 where key < 10 + union all + select key, count from src4 where key < 10 + union all + select key, count(1) as count from src5 where key < 10 group by key +)s +order by s.key ASC, s.count ASC; + +select s.key, s.count from ( + select key, count from src2 where key < 10 + union all + select key, count from src3 where key < 10 + union all + select key, count from src4 where key < 10 + union all + select key, count(1) as count from src5 where key < 10 group by key +)s +order by s.key ASC, s.count ASC; + +explain extended +select s.key, s.count from ( + select key, count from src2 where key < 10 + union all + select key, count from src3 where key < 10 + union all + select a.key as key, b.count as count from src4 a join src5 b on a.key=b.key where a.key < 10 +)s +order by s.key ASC, s.count ASC; + +select s.key, s.count from ( + select key, count from src2 where key < 10 + union all + select key, count from src3 where key < 10 + union all + select a.key as key, b.count as count from src4 a join src5 b on a.key=b.key where a.key < 10 +)s +order by s.key ASC, s.count ASC; + +explain extended +select s.key, s.count from ( + select key, count from src2 where key < 10 + union all + select key, count from src3 where key < 10 + union all + select a.key as key, count(1) as count from src4 a join src5 b on a.key=b.key where a.key < 10 group by a.key +)s +order by s.key ASC, s.count ASC; + +select s.key, s.count from ( + select key, count from src2 where key < 10 + union all + select key, count from src3 where key < 10 + union all + select a.key as key, count(1) as count from src4 a join src5 b on a.key=b.key where a.key < 10 group by a.key +)s +order by s.key ASC, s.count ASC; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union25.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union25.q new file mode 100644 index 0000000000000..04e782e2a5e34 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union25.q @@ -0,0 +1,23 @@ +create table tmp_srcpart like srcpart; + +insert overwrite table tmp_srcpart partition (ds='2008-04-08', hr='11') +select key, value from srcpart where ds='2008-04-08' and hr='11'; + +explain +create table tmp_unionall as +SELECT count(1) as counts, key, value +FROM +( + SELECT key, value FROM srcpart a WHERE a.ds='2008-04-08' and a.hr='11' + + UNION ALL + + SELECT key, key as value FROM ( + SELECT distinct key FROM ( + SELECT key, value FROM tmp_srcpart a WHERE a.ds='2008-04-08' and a.hr='11' + UNION ALL + SELECT key, value FROM tmp_srcpart b WHERE b.ds='2008-04-08' and b.hr='11' + )t + ) master_table +) a GROUP BY key, value +; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union26.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union26.q new file mode 100644 index 0000000000000..dce7bc3425117 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union26.q @@ -0,0 +1,89 @@ +EXPLAIN +SELECT +count(1) as counts, +key, +value +FROM +( + +SELECT +a.key, a.value +FROM srcpart a JOIN srcpart b +ON a.ds='2008-04-08' and a.hr='11' and b.ds='2008-04-08' and b.hr='12' +AND a.key = b.key + +UNION ALL + +select key, value +FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol +WHERE ds='2008-04-08' and hr='11' +) a +group by key, value +; + +SELECT +count(1) as counts, +key, +value +FROM +( + +SELECT +a.key, a.value +FROM srcpart a JOIN srcpart b +ON a.ds='2008-04-08' and a.hr='11' and b.ds='2008-04-08' and b.hr='12' +AND a.key = b.key + +UNION ALL + +select key, value +FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol +WHERE ds='2008-04-08' and hr='11' +) a +group by key, value order by key, value +; + + +SELECT +count(1) as counts, +key, +value +FROM +( + +SELECT +a.key, a.value +FROM srcpart a JOIN srcpart b +ON a.ds='2008-04-08' and a.hr='11' and b.ds='2008-04-08' and b.hr='12' +AND a.key = b.key + +UNION ALL + +select key, value +FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol +WHERE ds='2008-04-08' and hr='11' +) a +group by key, value +; + +SELECT +count(1) as counts, +key, +value +FROM +( + +SELECT +a.key, a.value +FROM srcpart a JOIN srcpart b +ON a.ds='2008-04-08' and a.hr='11' and b.ds='2008-04-08' and b.hr='12' +AND a.key = b.key + +UNION ALL + +select key, value +FROM srcpart LATERAL VIEW explode(array(1,2,3)) myTable AS myCol +WHERE ds='2008-04-08' and hr='11' +) a +group by key, value order by key, value +; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union27.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union27.q new file mode 100644 index 0000000000000..e0fccfcd72820 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union27.q @@ -0,0 +1,4 @@ +create table jackson_sev_same as select * from src; +create table dim_pho as select * from src; +create table jackson_sev_add as select * from src; +select b.* from jackson_sev_same a join (select * from dim_pho union all select * from jackson_sev_add)b on a.key=b.key and b.key=97; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union28.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union28.q new file mode 100644 index 0000000000000..6aebfeb41a3c7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union28.q @@ -0,0 +1,30 @@ +create table union_subq_union(key int, value string); + +explain +insert overwrite table union_subq_union +select * from ( + select key, value from src + union all + select key, value from + ( + select key, value, count(1) from src group by key, value + union all + select key, value, count(1) from src group by key, value + ) subq +) a +; + +insert overwrite table union_subq_union +select * from ( + select key, value from src + union all + select key, value from + ( + select key, value, count(1) from src group by key, value + union all + select key, value, count(1) from src group by key, value + ) subq +) a +; + +select * from union_subq_union order by key, value limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union29.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union29.q new file mode 100644 index 0000000000000..ea99d4c9f29be --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union29.q @@ -0,0 +1,30 @@ +create table union_subq_union(key int, value string); + +explain +insert overwrite table union_subq_union +select * from ( + select key, value from src + union all + select key, value from + ( + select key, value from src + union all + select key, value from src + ) subq +) a +; + +insert overwrite table union_subq_union +select * from ( + select key, value from src + union all + select key, value from + ( + select key, value from src + union all + select key, value from src + ) subq +) a +; + +select * from union_subq_union order by key, value limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union3.q new file mode 100644 index 0000000000000..b26a2e2799f7a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union3.q @@ -0,0 +1,42 @@ + +explain +SELECT * +FROM ( + SELECT 1 AS id + FROM (SELECT * FROM src LIMIT 1) s1 + CLUSTER BY id + UNION ALL + SELECT 2 AS id + FROM (SELECT * FROM src LIMIT 1) s1 + CLUSTER BY id + UNION ALL + SELECT 3 AS id + FROM (SELECT * FROM src LIMIT 1) s2 + UNION ALL + SELECT 4 AS id + FROM (SELECT * FROM src LIMIT 1) s2 +) a; + + + +CREATE TABLE union_out (id int); + +insert overwrite table union_out +SELECT * +FROM ( + SELECT 1 AS id + FROM (SELECT * FROM src LIMIT 1) s1 + CLUSTER BY id + UNION ALL + SELECT 2 AS id + FROM (SELECT * FROM src LIMIT 1) s1 + CLUSTER BY id + UNION ALL + SELECT 3 AS id + FROM (SELECT * FROM src LIMIT 1) s2 + UNION ALL + SELECT 4 AS id + FROM (SELECT * FROM src LIMIT 1) s2 +) a; + +select * from union_out cluster by id; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union30.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union30.q new file mode 100644 index 0000000000000..9763bc3c9a9c3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union30.q @@ -0,0 +1,44 @@ +create table union_subq_union(key int, value string); + +explain +insert overwrite table union_subq_union +select * from ( + +select * from ( + select key, value from src + union all + select key, value from + ( + select key, value, count(1) from src group by key, value + union all + select key, value, count(1) from src group by key, value + ) subq +) a + +union all + +select key, value from src +) aa +; + +insert overwrite table union_subq_union +select * from ( + +select * from ( + select key, value from src + union all + select key, value from + ( + select key, value, count(1) from src group by key, value + union all + select key, value, count(1) from src group by key, value + ) subq +) a + +union all + +select key, value from src +) aa +; + +select * from union_subq_union order by key, value limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union31.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union31.q new file mode 100644 index 0000000000000..1d430fe1de815 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union31.q @@ -0,0 +1,97 @@ +drop table t1; +drop table t2; + + +create table t1 as select * from src where key < 10; +create table t2 as select * from src where key < 10; + +create table t3(key string, cnt int); +create table t4(value string, cnt int); + +explain +from +(select * from t1 + union all + select * from t2 +) x +insert overwrite table t3 + select key, count(1) group by key +insert overwrite table t4 + select value, count(1) group by value; + +from +(select * from t1 + union all + select * from t2 +) x +insert overwrite table t3 + select key, count(1) group by key +insert overwrite table t4 + select value, count(1) group by value; + +select * from t3 order by key; +select * from t4 order by value; + +create table t5(c1 string, cnt int); +create table t6(c1 string, cnt int); + +explain +from +( + select key as c1, count(1) as cnt from t1 group by key + union all + select key as c1, count(1) as cnt from t2 group by key +) x +insert overwrite table t5 + select c1, sum(cnt) group by c1 +insert overwrite table t6 + select c1, sum(cnt) group by c1; + +from +( + select key as c1, count(1) as cnt from t1 group by key + union all + select key as c1, count(1) as cnt from t2 group by key +) x +insert overwrite table t5 + select c1, sum(cnt) group by c1 +insert overwrite table t6 + select c1, sum(cnt) group by c1; + +select * from t5 order by c1; +select * from t6 order by c1; + +drop table t1; +drop table t2; + +create table t1 as select * from src where key < 10; +create table t2 as select key, count(1) as cnt from src where key < 10 group by key; + +create table t7(c1 string, cnt int); +create table t8(c1 string, cnt int); + +explain +from +( + select key as c1, count(1) as cnt from t1 group by key + union all + select key as c1, cnt from t2 +) x +insert overwrite table t7 + select c1, count(1) group by c1 +insert overwrite table t8 + select c1, count(1) group by c1; + +from +( + select key as c1, count(1) as cnt from t1 group by key + union all + select key as c1, cnt from t2 +) x +insert overwrite table t7 + select c1, count(1) group by c1 +insert overwrite table t8 + select c1, count(1) group by c1; + +select * from t7 order by c1; +select * from t8 order by c1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union32.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union32.q new file mode 100644 index 0000000000000..9abb09bf76d40 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union32.q @@ -0,0 +1,75 @@ +-- This tests various union queries which have columns on one side of the query +-- being of double type and those on the other side another + +CREATE TABLE t1 AS SELECT * FROM src WHERE key < 10; +CREATE TABLE t2 AS SELECT * FROM src WHERE key < 10; + +-- Test simple union with double +EXPLAIN +SELECT * FROM +(SELECT CAST(key AS DOUBLE) AS key FROM t1 +UNION ALL +SELECT CAST(key AS BIGINT) AS key FROM t2) a +ORDER BY key; + +SELECT * FROM +(SELECT CAST(key AS DOUBLE) AS key FROM t1 +UNION ALL +SELECT CAST(key AS BIGINT) AS key FROM t2) a +ORDER BY key; + +-- Test union with join on the left +EXPLAIN +SELECT * FROM +(SELECT CAST(a.key AS BIGINT) AS key FROM t1 a JOIN t2 b ON a.key = b.key +UNION ALL +SELECT CAST(key AS DOUBLE) AS key FROM t2) a +ORDER BY key; + +SELECT * FROM +(SELECT CAST(a.key AS BIGINT) AS key FROM t1 a JOIN t2 b ON a.key = b.key +UNION ALL +SELECT CAST(key AS DOUBLE) AS key FROM t2) a +ORDER BY key; + +-- Test union with join on the right +EXPLAIN +SELECT * FROM +(SELECT CAST(key AS DOUBLE) AS key FROM t2 +UNION ALL +SELECT CAST(a.key AS BIGINT) AS key FROM t1 a JOIN t2 b ON a.key = b.key) a +ORDER BY key; + +SELECT * FROM +(SELECT CAST(key AS DOUBLE) AS key FROM t2 +UNION ALL +SELECT CAST(a.key AS BIGINT) AS key FROM t1 a JOIN t2 b ON a.key = b.key) a +ORDER BY key; + +-- Test union with join on the left selecting multiple columns +EXPLAIN +SELECT * FROM +(SELECT CAST(a.key AS BIGINT) AS key, CAST(b.key AS DOUBLE) AS value FROM t1 a JOIN t2 b ON a.key = b.key +UNION ALL +SELECT CAST(key AS DOUBLE) AS key, CAST(key AS STRING) AS value FROM t2) a +ORDER BY key; + +SELECT * FROM +(SELECT CAST(a.key AS BIGINT) AS key, CAST(b.key AS DOUBLE) AS value FROM t1 a JOIN t2 b ON a.key = b.key +UNION ALL +SELECT CAST(key AS DOUBLE) AS key, CAST(key AS STRING) AS value FROM t2) a +ORDER BY key; + +-- Test union with join on the right selecting multiple columns +EXPLAIN +SELECT * FROM +(SELECT CAST(key AS DOUBLE) AS key, CAST(key AS STRING) AS value FROM t2 +UNION ALL +SELECT CAST(a.key AS BIGINT) AS key, CAST(b.key AS DOUBLE) AS value FROM t1 a JOIN t2 b ON a.key = b.key) a +ORDER BY key; + +SELECT * FROM +(SELECT CAST(key AS DOUBLE) AS key, CAST(key AS STRING) AS value FROM t2 +UNION ALL +SELECT CAST(a.key AS BIGINT) AS key, CAST(b.key AS DOUBLE) AS value FROM t1 a JOIN t2 b ON a.key = b.key) a +ORDER BY key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union33.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union33.q new file mode 100644 index 0000000000000..69e46f44d7806 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union33.q @@ -0,0 +1,47 @@ +set hive.groupby.skewindata=true; + +-- This tests that a union all with a map only subquery on one side and a +-- subquery involving two map reduce jobs on the other runs correctly. + +CREATE TABLE test_src (key STRING, value STRING); + +EXPLAIN INSERT OVERWRITE TABLE test_src +SELECT key, value FROM ( + SELECT key, value FROM src + WHERE key = 0 +UNION ALL + SELECT key, COUNT(*) AS value FROM src + GROUP BY key +)a; + +INSERT OVERWRITE TABLE test_src +SELECT key, value FROM ( + SELECT key, value FROM src + WHERE key = 0 +UNION ALL + SELECT key, COUNT(*) AS value FROM src + GROUP BY key +)a; + +SELECT COUNT(*) FROM test_src; + +EXPLAIN INSERT OVERWRITE TABLE test_src +SELECT key, value FROM ( + SELECT key, COUNT(*) AS value FROM src + GROUP BY key +UNION ALL + SELECT key, value FROM src + WHERE key = 0 +)a; + +INSERT OVERWRITE TABLE test_src +SELECT key, value FROM ( + SELECT key, COUNT(*) AS value FROM src + GROUP BY key +UNION ALL + SELECT key, value FROM src + WHERE key = 0 +)a; + +SELECT COUNT(*) FROM test_src; + \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union34.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union34.q new file mode 100644 index 0000000000000..36bc865be81fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union34.q @@ -0,0 +1,44 @@ +create table src10_1 (key string, value string); +create table src10_2 (key string, value string); +create table src10_3 (key string, value string); +create table src10_4 (key string, value string); + +from (select * from src limit 10) a +insert overwrite table src10_1 select * +insert overwrite table src10_2 select * +insert overwrite table src10_3 select * +insert overwrite table src10_4 select *; + +set hive.auto.convert.join=true; +-- When we convert the Join of sub1 and sub0 into a MapJoin, +-- we can use a single MR job to evaluate this entire query. +explain +SELECT * FROM ( + SELECT sub1.key,sub1.value FROM (SELECT * FROM src10_1) sub1 JOIN (SELECT * FROM src10_2) sub0 ON (sub0.key = sub1.key) + UNION ALL + SELECT key,value FROM (SELECT * FROM (SELECT * FROM src10_3) sub2 UNION ALL SELECT * FROM src10_4 ) alias0 +) alias1 order by key; + +SELECT * FROM ( + SELECT sub1.key,sub1.value FROM (SELECT * FROM src10_1) sub1 JOIN (SELECT * FROM src10_2) sub0 ON (sub0.key = sub1.key) + UNION ALL + SELECT key,value FROM (SELECT * FROM (SELECT * FROM src10_3) sub2 UNION ALL SELECT * FROM src10_4 ) alias0 +) alias1 order by key; + +set hive.auto.convert.join=false; +-- When we do not convert the Join of sub1 and sub0 into a MapJoin, +-- we need to use two MR jobs to evaluate this query. +-- The first job is for the Join of sub1 and sub2. The second job +-- is for the UNION ALL and ORDER BY. +explain +SELECT * FROM ( + SELECT sub1.key,sub1.value FROM (SELECT * FROM src10_1) sub1 JOIN (SELECT * FROM src10_2) sub0 ON (sub0.key = sub1.key) + UNION ALL + SELECT key,value FROM (SELECT * FROM (SELECT * FROM src10_3) sub2 UNION ALL SELECT * FROM src10_4 ) alias0 +) alias1 order by key; + +SELECT * FROM ( + SELECT sub1.key,sub1.value FROM (SELECT * FROM src10_1) sub1 JOIN (SELECT * FROM src10_2) sub0 ON (sub0.key = sub1.key) + UNION ALL + SELECT key,value FROM (SELECT * FROM (SELECT * FROM src10_3) sub2 UNION ALL SELECT * FROM src10_4 ) alias0 +) alias1 order by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union4.q new file mode 100644 index 0000000000000..ee13e7ad3dd45 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union4.q @@ -0,0 +1,21 @@ +set hive.map.aggr = true; + +-- union case: both subqueries are map-reduce jobs on same input, followed by filesink + + +create table tmptable(key string, value int); + +explain +insert overwrite table tmptable + select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src s2) unionsrc; + +insert overwrite table tmptable +select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src s2) unionsrc; + +select * from tmptable x sort by x.key; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union5.q new file mode 100644 index 0000000000000..9844127e4a4bc --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union5.q @@ -0,0 +1,12 @@ +set hive.map.aggr = true; + +-- union case: both subqueries are map-reduce jobs on same input, followed by reduce sink + +explain + select unionsrc.key, count(1) FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src s2) unionsrc group by unionsrc.key; + +select unionsrc.key, count(1) FROM (select 'tst1' as key, count(1) as value from src s1 + UNION ALL + select 'tst2' as key, count(1) as value from src s2) unionsrc group by unionsrc.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union6.q new file mode 100644 index 0000000000000..b793002821147 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union6.q @@ -0,0 +1,21 @@ +set hive.map.aggr = true; + +-- union case: 1 subquery is a map-reduce job, different inputs for sub-queries, followed by filesink + + +create table tmptable(key string, value string); + +explain +insert overwrite table tmptable + select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src1 s2) unionsrc; + +insert overwrite table tmptable +select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src1 s2) unionsrc; + +select * from tmptable x sort by x.key, x.value; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union7.q new file mode 100644 index 0000000000000..d66d5960bd187 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union7.q @@ -0,0 +1,14 @@ +set hive.map.aggr = true; + +-- union case: 1 subquery is a map-reduce job, different inputs for sub-queries, followed by reducesink + +explain + select unionsrc.key, count(1) FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src1 s2) unionsrc group by unionsrc.key; + +select unionsrc.key, count(1) FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1 + UNION ALL + select s2.key as key, s2.value as value from src1 s2) unionsrc group by unionsrc.key; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union8.q new file mode 100644 index 0000000000000..6d5bf673e0881 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union8.q @@ -0,0 +1,10 @@ +-- union case: all subqueries are a map-only jobs, 3 way union, same input for all sub-queries, followed by filesink + +explain + select unionsrc.key, unionsrc.value FROM (select s1.key as key, s1.value as value from src s1 UNION ALL + select s2.key as key, s2.value as value from src s2 UNION ALL + select s3.key as key, s3.value as value from src s3) unionsrc; + +select unionsrc.key, unionsrc.value FROM (select s1.key as key, s1.value as value from src s1 UNION ALL + select s2.key as key, s2.value as value from src s2 UNION ALL + select s3.key as key, s3.value as value from src s3) unionsrc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union9.q new file mode 100644 index 0000000000000..7d4c11b252ab5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union9.q @@ -0,0 +1,10 @@ +-- union case: all subqueries are a map-only jobs, 3 way union, same input for all sub-queries, followed by reducesink + +explain + select count(1) FROM (select s1.key as key, s1.value as value from src s1 UNION ALL + select s2.key as key, s2.value as value from src s2 UNION ALL + select s3.key as key, s3.value as value from src s3) unionsrc; + + select count(1) FROM (select s1.key as key, s1.value as value from src s1 UNION ALL + select s2.key as key, s2.value as value from src s2 UNION ALL + select s3.key as key, s3.value as value from src s3) unionsrc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_date.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_date.q new file mode 100644 index 0000000000000..e332a8af7bb1b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_date.q @@ -0,0 +1,32 @@ +drop table union_date_1; +drop table union_date_2; + +create table union_date_1 ( + ORIGIN_CITY_NAME string, + DEST_CITY_NAME string, + FL_DATE date, + ARR_DELAY float, + FL_NUM int +); + +create table union_date_2 ( + ORIGIN_CITY_NAME string, + DEST_CITY_NAME string, + FL_DATE date, + ARR_DELAY float, + FL_NUM int +); + +LOAD DATA LOCAL INPATH '../data/files/flights_join.txt' OVERWRITE INTO TABLE union_date_1; +LOAD DATA LOCAL INPATH '../data/files/flights_join.txt' OVERWRITE INTO TABLE union_date_2; + +select * from ( + select fl_num, fl_date from union_date_1 + union all + select fl_num, fl_date from union_date_2 +) union_result order by fl_date, fl_num; + +drop table union_date_1; +drop table union_date_2; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_lateralview.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_lateralview.q new file mode 100644 index 0000000000000..012296d7c3a51 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_lateralview.q @@ -0,0 +1,43 @@ + +create table test_union_lateral_view(key int, arr_ele int, value string); + +EXPLAIN +INSERT OVERWRITE TABLE test_union_lateral_view +SELECT b.key, d.arr_ele, d.value +FROM ( + SELECT c.arr_ele as arr_ele, a.key as key, a.value as value + FROM ( + SELECT key, value, array(1,2,3) as arr + FROM src + + UNION ALL + + SELECT key, value, array(1,2,3) as arr + FROM srcpart + WHERE ds = '2008-04-08' and hr='12' + ) a LATERAL VIEW EXPLODE(arr) c AS arr_ele +) d +LEFT OUTER JOIN src b +ON d.key = b.key +; + +INSERT OVERWRITE TABLE test_union_lateral_view +SELECT b.key, d.arr_ele, d.value +FROM ( + SELECT c.arr_ele as arr_ele, a.key as key, a.value as value + FROM ( + SELECT key, value, array(1,2,3) as arr + FROM src + + UNION ALL + + SELECT key, value, array(1,2,3) as arr + FROM srcpart + WHERE ds = '2008-04-08' and hr='12' + ) a LATERAL VIEW EXPLODE(arr) c AS arr_ele +) d +LEFT OUTER JOIN src b +ON d.key = b.key +; + +select key, arr_ele, value from test_union_lateral_view order by key, arr_ele limit 20; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_null.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_null.q new file mode 100644 index 0000000000000..70147070feaca --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_null.q @@ -0,0 +1,2 @@ +-- HIVE-2901 +select x from (select value as x from src union all select NULL as x from src)a limit 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_ppr.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_ppr.q new file mode 100644 index 0000000000000..27d2c262def40 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_ppr.q @@ -0,0 +1,16 @@ +EXPLAIN EXTENDED +SELECT * FROM ( + SELECT X.* FROM SRCPART X WHERE X.key < 100 + UNION ALL + SELECT Y.* FROM SRCPART Y WHERE Y.key < 100 +) A +WHERE A.ds = '2008-04-08' +SORT BY A.key, A.value, A.ds, A.hr; + +SELECT * FROM ( + SELECT X.* FROM SRCPART X WHERE X.key < 100 + UNION ALL + SELECT Y.* FROM SRCPART Y WHERE Y.key < 100 +) A +WHERE A.ds = '2008-04-08' +SORT BY A.key, A.value, A.ds, A.hr; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_1.q new file mode 100644 index 0000000000000..c9f920c648a92 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_1.q @@ -0,0 +1,44 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_10.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_10.q new file mode 100644 index 0000000000000..a072fe3b56e43 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_10.q @@ -0,0 +1,57 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 subqueries is performed (one of which is a map-only query, and the +-- other one contains a nested union where one of the sub-queries requires a map-reduce +-- job), followed by select star and a file sink. +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The outer union can be removed completely. +-- The final file format is different from the input and intermediate file format. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, 1 as values from inputTbl1 +union all +select * FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a +)b; + +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, 1 as values from inputTbl1 +union all +select * FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a +)b; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_11.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_11.q new file mode 100644 index 0000000000000..6250a20210f9f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_11.q @@ -0,0 +1,57 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 subqueries is performed (one of which is a map-only query, and the +-- other one contains a nested union where also contains map only sub-queries), +-- followed by select star and a file sink. +-- There is no need for the union optimization, since the whole query can be performed +-- in a single map-only job +-- The final file format is different from the input and intermediate file format. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, 1 as values from inputTbl1 +union all +select * FROM ( + SELECT key, 2 values from inputTbl1 + UNION ALL + SELECT key, 3 as values from inputTbl1 +) a +)b; + +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, 1 as values from inputTbl1 +union all +select * FROM ( + SELECT key, 2 as values from inputTbl1 + UNION ALL + SELECT key, 3 as values from inputTbl1 +) a +)b; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_12.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_12.q new file mode 100644 index 0000000000000..168eac34a0301 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_12.q @@ -0,0 +1,51 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; +set hive.auto.convert.join=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 subqueries is performed (one of which is a map-only query, and the +-- other one is a map-join query), followed by select star and a file sink. +-- The union optimization is applied, and the union is removed. + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +-- The final file format is different from the input and intermediate file format. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, 1 as values from inputTbl1 +union all +select a.key as key, b.val as values +FROM inputTbl1 a join inputTbl1 b on a.key=b.key +)c; + +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, 1 as values from inputTbl1 +union all +select a.key as key, b.val as values +FROM inputTbl1 a join inputTbl1 b on a.key=b.key +)c; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_13.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_13.q new file mode 100644 index 0000000000000..a88a83e152a5f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_13.q @@ -0,0 +1,51 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; +set hive.auto.convert.join=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 subqueries is performed (one of which is a mapred query, and the +-- other one is a map-join query), followed by select star and a file sink. +-- The union selectstar optimization should be performed, and the union should be removed. + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +-- The final file format is different from the input and intermediate file format. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, count(1) as values from inputTbl1 group by key +union all +select a.key as key, b.val as values +FROM inputTbl1 a join inputTbl1 b on a.key=b.key +)c; + +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, count(1) as values from inputTbl1 group by key +union all +select a.key as key, b.val as values +FROM inputTbl1 a join inputTbl1 b on a.key=b.key +)c; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_14.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_14.q new file mode 100644 index 0000000000000..e588e8fd62ab9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_14.q @@ -0,0 +1,52 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.auto.convert.join=true; +set hive.merge.smallfiles.avgsize=1; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 subqueries is performed (one of which is a map-only query, and the +-- other one contains a join, which should be performed as a map-join query at runtime), +-- followed by select star and a file sink. +-- The union selectstar optimization should be performed, and the union should be removed. + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +-- The final file format is different from the input and intermediate file format. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, 1 as values from inputTbl1 +union all +select a.key as key, b.val as values +FROM inputTbl1 a join inputTbl1 b on a.key=b.key +)c; + +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, 1 as values from inputTbl1 +union all +select a.key as key, b.val as values +FROM inputTbl1 a join inputTbl1 b on a.key=b.key +)c; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_15.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_15.q new file mode 100644 index 0000000000000..237f2e7629057 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_15.q @@ -0,0 +1,53 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- and the results are written to a table using dynamic partitions. +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- This tests demonstrates that this optimization works in the presence of dynamic partitions. + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) partitioned by (ds string) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 partition (ds) +SELECT * +FROM ( + SELECT key, count(1) as values, '1' as ds from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values, '2' as ds from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 partition (ds) +SELECT * +FROM ( + SELECT key, count(1) as values, '1' as ds from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values, '2' as ds from inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +show partitions outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 where ds = '1' order by key, values; +select * from outputTbl1 where ds = '2' order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_16.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_16.q new file mode 100644 index 0000000000000..06d5043f9cf9d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_16.q @@ -0,0 +1,52 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1; +set mapred.input.dir.recursive=true; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- and the results are written to a table using dynamic partitions. +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on +-- This test demonstrates that this optimization works in the presence of dynamic partitions. +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) partitioned by (ds string) stored as rcfile ; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 partition (ds) +SELECT * +FROM ( + SELECT key, count(1) as values, '1' as ds from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values, '2' as ds from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 partition (ds) +SELECT * +FROM ( + SELECT key, count(1) as values, '1' as ds from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values, '2' as ds from inputTbl1 group by key +) a; + +desc formatted outputTbl1; +show partitions outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 where ds = '1' order by key, values; +select * from outputTbl1 where ds = '2' order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_17.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_17.q new file mode 100644 index 0000000000000..65b8255c3e954 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_17.q @@ -0,0 +1,49 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- and the results are written to a table using dynamic partitions. +-- There is no need for this optimization, since the query is a map-only query. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) partitioned by (ds string) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 partition (ds) +SELECT * +FROM ( + SELECT key, 1 as values, '1' as ds from inputTbl1 + UNION ALL + SELECT key, 2 as values, '2' as ds from inputTbl1 +) a; + +insert overwrite table outputTbl1 partition (ds) +SELECT * +FROM ( + SELECT key, 1 as values, '1' as ds from inputTbl1 + UNION ALL + SELECT key, 2 as values, '2' as ds from inputTbl1 +) a; + +desc formatted outputTbl1; +show partitions outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 where ds = '1' order by key, values; +select * from outputTbl1 where ds = '2' order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_18.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_18.q new file mode 100644 index 0000000000000..265acfd35758f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_18.q @@ -0,0 +1,53 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- This test demonstrates that the optimization works with dynamic partitions irrespective of the +-- file format of the output file +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, ds string) stored as textfile; +create table outputTbl1(key string, values bigint) partitioned by (ds string) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 partition (ds) +SELECT * +FROM ( + SELECT key, count(1) as values, ds from inputTbl1 group by key, ds + UNION ALL + SELECT key, count(1) as values, ds from inputTbl1 group by key, ds +) a; + +insert overwrite table outputTbl1 partition (ds) +SELECT * +FROM ( + SELECT key, count(1) as values, ds from inputTbl1 group by key, ds + UNION ALL + SELECT key, count(1) as values, ds from inputTbl1 group by key, ds +) a; + +desc formatted outputTbl1; + +show partitions outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 where ds = '11' order by key, values; +select * from outputTbl1 where ds = '18' order by key, values; +select * from outputTbl1 where ds is not null order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_19.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_19.q new file mode 100644 index 0000000000000..1450caa2d07a7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_19.q @@ -0,0 +1,90 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT a.key, a.values +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 +SELECT a.key, a.values +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +select * from outputTbl1; + +-- filter should be fine +explain +insert overwrite table outputTbl1 +SELECT a.key, a.values +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a where a.key = 7; + +insert overwrite table outputTbl1 +SELECT a.key, a.values +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a where a.key = 7; + +select * from outputTbl1; + +-- filters and sub-queries should be fine +explain +insert overwrite table outputTbl1 +select key, values from +( +SELECT a.key + a.key as key, a.values +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a +) b where b.key >= 7; + +insert overwrite table outputTbl1 +select key, values from +( +SELECT a.key + a.key as key, a.values +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a +) b where b.key >= 7; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_2.q new file mode 100644 index 0000000000000..015c146ecadf0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_2.q @@ -0,0 +1,50 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 3 subqueries is performed (exactly one of which requires a map-reduce job) +-- followed by select star and a file sink. +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a; + +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_20.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_20.q new file mode 100644 index 0000000000000..ac727889273d7 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_20.q @@ -0,0 +1,45 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select and a file sink +-- However, the order of the columns in the select list is different. So, union cannot +-- be removed. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23. The union is removed, the select (which changes the order of +-- columns being selected) is pushed above the union. + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(values bigint, key string) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT a.values, a.key +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 +SELECT a.values, a.key +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_21.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_21.q new file mode 100644 index 0000000000000..f89744624116f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_21.q @@ -0,0 +1,45 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select and a file sink +-- However, all the columns are not selected. So, union cannot +-- be removed. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23. The union is removed, the select (which changes the order of +-- columns being selected) is pushed above the union. + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT a.key +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 +SELECT a.key +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_22.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_22.q new file mode 100644 index 0000000000000..f01053d27d0c0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_22.q @@ -0,0 +1,63 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select and a file sink +-- However, some columns are repeated. So, union cannot be removed. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23. The union is removed, the select (which selects columns from +-- both the sub-qeuries of the union) is pushed above the union. + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint, values2 bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT a.key, a.values, a.values +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 +SELECT a.key, a.values, a.values +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +select * from outputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT a.key, concat(a.values, a.values), concat(a.values, a.values) +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 +SELECT a.key, concat(a.values, a.values), concat(a.values, a.values) +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_23.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_23.q new file mode 100644 index 0000000000000..805dd76274c42 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_23.q @@ -0,0 +1,47 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. One of the sub-queries +-- would have multiple map-reduce jobs. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from + (SELECT a.key, b.val from inputTbl1 a join inputTbl1 b on a.key=b.key) subq group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) subq2; + +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from + (SELECT a.key, b.val from inputTbl1 a join inputTbl1 b on a.key=b.key) subq group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) subq2; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_24.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_24.q new file mode 100644 index 0000000000000..36fd947d6035d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_24.q @@ -0,0 +1,43 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- One sub-query has a double and the other sub-query has a bigint. +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key double, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +EXPLAIN +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM +( + SELECT CAST(key AS DOUBLE) AS key, count(1) as values FROM inputTbl1 group by key + UNION ALL + SELECT CAST(key AS BIGINT) AS key, count(1) as values FROM inputTbl1 group by key +) a; + +INSERT OVERWRITE TABLE outputTbl1 +SELECT * FROM +( + SELECT CAST(key AS DOUBLE) AS key, count(1) as values FROM inputTbl1 group by key + UNION ALL + SELECT CAST(key AS BIGINT) AS key, count(1) as values FROM inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_3.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_3.q new file mode 100644 index 0000000000000..da0f1c0473ffe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_3.q @@ -0,0 +1,50 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->remove->filesink optimization +-- Union of 3 subqueries is performed (all of which are map-only queries) +-- followed by select star and a file sink. +-- There is no need for any optimization, since the whole query can be processed in +-- a single map-only job +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 + UNION ALL + SELECT key, 3 as values from inputTbl1 +) a; + +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 + UNION ALL + SELECT key, 3 as values from inputTbl1 +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_4.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_4.q new file mode 100644 index 0000000000000..18d4730a12024 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_4.q @@ -0,0 +1,45 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set mapred.input.dir.recursive=true; +set hive.merge.smallfiles.avgsize=1; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_5.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_5.q new file mode 100644 index 0000000000000..a6fbeb03ddcc3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_5.q @@ -0,0 +1,51 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 3 subqueries is performed (exactly one of which requires a map-reduce job) +-- followed by select star and a file sink. +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a; + +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_6.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_6.q new file mode 100644 index 0000000000000..7ae5af30c1bae --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_6.q @@ -0,0 +1,41 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 subqueries is performed (all of which are mapred queries) +-- followed by select star and a file sink in 2 output tables. +-- The optimiaztion does not take affect since it is a multi-table insert. +-- It does not matter, whether the output is merged or not. In this case, +-- merging is turned off + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as textfile; +create table outputTbl2(key string, values bigint) stored as textfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a +insert overwrite table outputTbl1 select * +insert overwrite table outputTbl2 select *; + +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a +insert overwrite table outputTbl1 select * +insert overwrite table outputTbl2 select *; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; +select * from outputTbl2 order by key, values;; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_7.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_7.q new file mode 100644 index 0000000000000..5a639ca11700d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_7.q @@ -0,0 +1,46 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 map-reduce subqueries is performed followed by select star and a file sink +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- The final file format is different from the input and intermediate file format. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, count(1) as values from inputTbl1 group by key +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_8.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_8.q new file mode 100644 index 0000000000000..79b84e81181d3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_8.q @@ -0,0 +1,51 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=false; +set hive.merge.mapredfiles=false; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 3 subqueries is performed (exactly one of which requires a map-reduce job) +-- followed by select star and a file sink. +-- There is no need to write the temporary results of the sub-queries, and then read them +-- again to process the union. The union can be removed completely. +-- The final file format is different from the input and intermediate file format. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- off + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a; + +insert overwrite table outputTbl1 +SELECT * +FROM ( + SELECT key, count(1) as values from inputTbl1 group by key + UNION ALL + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_9.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_9.q new file mode 100644 index 0000000000000..f6038384f3fa8 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_remove_9.q @@ -0,0 +1,55 @@ +set hive.stats.autogather=false; +set hive.optimize.union.remove=true; +set hive.mapred.supports.subdirectories=true; + +set hive.merge.mapfiles=true; +set hive.merge.mapredfiles=true; +set hive.merge.smallfiles.avgsize=1; +set mapred.input.dir.recursive=true; + +-- This is to test the union->selectstar->filesink optimization +-- Union of 2 subqueries is performed (one of which contains a union and is map-only), +-- and the other one is a map-reduce query followed by select star and a file sink. +-- There is no need for the outer union. +-- The final file format is different from the input and intermediate file format. +-- It does not matter, whether the output is merged or not. In this case, merging is turned +-- on + +-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23) +-- Since this test creates sub-directories for the output table outputTbl1, it might be easier +-- to run the test only on hadoop 23 + +create table inputTbl1(key string, val string) stored as textfile; +create table outputTbl1(key string, values bigint) stored as rcfile; + +load data local inpath '../data/files/T1.txt' into table inputTbl1; + +explain +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, count(1) as values from inputTbl1 group by key +union all +select * FROM ( + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a +)b; + +insert overwrite table outputTbl1 +SELECT * FROM +( +select key, count(1) as values from inputTbl1 group by key +union all +select * FROM ( + SELECT key, 1 as values from inputTbl1 + UNION ALL + SELECT key, 2 as values from inputTbl1 +) a +)b; + +desc formatted outputTbl1; + +set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; +select * from outputTbl1 order by key, values; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_script.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_script.q new file mode 100644 index 0000000000000..df35859f597c5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_script.q @@ -0,0 +1,7 @@ +select * from ( + select transform(key) using 'cat' as cola from src)s order by cola; + +select * from ( + select transform(key) using 'cat' as cola from src + union all + select transform(key) using 'cat' as cola from src) s order by cola; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_view.q new file mode 100644 index 0000000000000..4f8bafe37a809 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/union_view.q @@ -0,0 +1,84 @@ +CREATE TABLE src_union_1 (key int, value string) PARTITIONED BY (ds string); +CREATE INDEX src_union_1_key_idx ON TABLE src_union_1(key) AS 'COMPACT' WITH DEFERRED REBUILD; + +CREATE TABLE src_union_2 (key int, value string) PARTITIONED BY (ds string, part_1 string); +CREATE INDEX src_union_2_key_idx ON TABLE src_union_2(key) AS 'COMPACT' WITH DEFERRED REBUILD; + +CREATE TABLE src_union_3(key int, value string) PARTITIONED BY (ds string, part_1 string, part_2 string); +CREATE INDEX src_union_3_key_idx ON TABLE src_union_3(key) AS 'COMPACT' WITH DEFERRED REBUILD; + +SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; + +SET hive.optimize.index.filter=true; +SET hive.optimize.index.filter.compact.minsize=0; + +SET hive.exec.pre.hooks=; +SET hive.exec.post.hooks=; +SET hive.semantic.analyzer.hook=; +SET hive.merge.mapfiles=false; +SET hive.merge.mapredfiles=false; + +INSERT OVERWRITE TABLE src_union_1 PARTITION (ds='1') SELECT * FROM src; +ALTER INDEX src_union_1_key_idx ON src_union_1 PARTITION (ds='1') REBUILD; + +INSERT OVERWRITE TABLE src_union_2 PARTITION (ds='2', part_1='1') SELECT * FROM src; +INSERT OVERWRITE TABLE src_union_2 PARTITION (ds='2', part_1='2') SELECT * FROM src; +ALTER INDEX src_union_2_key_idx ON src_union_2 PARTITION (ds='2', part_1='1') REBUILD; +ALTER INDEX src_union_2_key_idx ON src_union_2 PARTITION (ds='2', part_1='2') REBUILD; + +INSERT OVERWRITE TABLE src_union_3 PARTITION (ds='3', part_1='1', part_2='2:3+4') SELECT * FROM src; +INSERT OVERWRITE TABLE src_union_3 PARTITION (ds='3', part_1='2', part_2='2:3+4') SELECT * FROM src; +ALTER INDEX src_union_3_key_idx ON src_union_3 PARTITION (ds='3', part_1='1', part_2='2:3+4') REBUILD; +ALTER INDEX src_union_3_key_idx ON src_union_3 PARTITION (ds='3', part_1='2', part_2='2:3+4') REBUILD; + +EXPLAIN SELECT key, value, ds FROM src_union_1 WHERE key=86 and ds='1'; +EXPLAIN SELECT key, value, ds FROM src_union_2 WHERE key=86 and ds='2'; +EXPLAIN SELECT key, value, ds FROM src_union_3 WHERE key=86 and ds='3'; + +SELECT key, value, ds FROM src_union_1 WHERE key=86 AND ds ='1'; +SELECT key, value, ds FROM src_union_2 WHERE key=86 AND ds ='2'; +SELECT key, value, ds FROM src_union_3 WHERE key=86 AND ds ='3'; + +EXPLAIN SELECT count(1) from src_union_1 WHERE ds ='1'; +EXPLAIN SELECT count(1) from src_union_2 WHERE ds ='2'; +EXPLAIN SELECT count(1) from src_union_3 WHERE ds ='3'; + +SELECT count(1) from src_union_1 WHERE ds ='1'; +SELECT count(1) from src_union_2 WHERE ds ='2'; +SELECT count(1) from src_union_3 WHERE ds ='3'; + +CREATE VIEW src_union_view PARTITIONED ON (ds) as +SELECT key, value, ds FROM ( +SELECT key, value, ds FROM src_union_1 +UNION ALL +SELECT key, value, ds FROM src_union_2 +UNION ALL +SELECT key, value, ds FROM src_union_3 +) subq; + +EXPLAIN SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds ='1'; +EXPLAIN SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds ='2'; +EXPLAIN SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds ='3'; +EXPLAIN SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds IS NOT NULL order by ds; + +SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds ='1'; +SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds ='2'; +SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds ='3'; +SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds IS NOT NULL order by ds; + +EXPLAIN SELECT count(1) from src_union_view WHERE ds ='1'; +EXPLAIN SELECT count(1) from src_union_view WHERE ds ='2'; +EXPLAIN SELECT count(1) from src_union_view WHERE ds ='3'; + +SELECT count(1) from src_union_view WHERE ds ='1'; +SELECT count(1) from src_union_view WHERE ds ='2'; +SELECT count(1) from src_union_view WHERE ds ='3'; + +INSERT OVERWRITE TABLE src_union_3 PARTITION (ds='4', part_1='1', part_2='2:3+4') SELECT * FROM src; +ALTER INDEX src_union_3_key_idx ON src_union_3 PARTITION (ds='4', part_1='1', part_2='2:3+4') REBUILD; + +EXPLAIN SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds ='4'; +SELECT key, value, ds FROM src_union_view WHERE key=86 AND ds ='4'; + +EXPLAIN SELECT count(1) from src_union_view WHERE ds ='4'; +SELECT count(1) from src_union_view WHERE ds ='4'; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/uniquejoin.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/uniquejoin.q new file mode 100644 index 0000000000000..51bcf22bfa0be --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/uniquejoin.q @@ -0,0 +1,25 @@ +CREATE TABLE T1(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T2(key STRING, val STRING) STORED AS TEXTFILE; +CREATE TABLE T3(key STRING, val STRING) STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/T1.txt' INTO TABLE T1; +LOAD DATA LOCAL INPATH '../data/files/T2.txt' INTO TABLE T2; +LOAD DATA LOCAL INPATH '../data/files/T3.txt' INTO TABLE T3; + +FROM UNIQUEJOIN PRESERVE T1 a (a.key), PRESERVE T2 b (b.key), PRESERVE T3 c (c.key) +SELECT a.key, b.key, c.key; + +FROM UNIQUEJOIN T1 a (a.key), T2 b (b.key), T3 c (c.key) +SELECT a.key, b.key, c.key; + +FROM UNIQUEJOIN T1 a (a.key), T2 b (b.key-1), T3 c (c.key) +SELECT a.key, b.key, c.key; + +FROM UNIQUEJOIN PRESERVE T1 a (a.key, a.val), PRESERVE T2 b (b.key, b.val), PRESERVE T3 c (c.key, c.val) +SELECT a.key, a.val, b.key, b.val, c.key, c.val; + +FROM UNIQUEJOIN PRESERVE T1 a (a.key), T2 b (b.key), PRESERVE T3 c (c.key) +SELECT a.key, b.key, c.key; + +FROM UNIQUEJOIN PRESERVE T1 a (a.key), T2 b(b.key) +SELECT a.key, b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/unset_table_view_property.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/unset_table_view_property.q new file mode 100644 index 0000000000000..f838cd1feb106 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/unset_table_view_property.q @@ -0,0 +1,64 @@ +CREATE TABLE testTable(col1 INT, col2 INT); +SHOW TBLPROPERTIES testTable; + +-- UNSET TABLE PROPERTIES +ALTER TABLE testTable SET TBLPROPERTIES ('a'='1', 'c'='3'); +SHOW TBLPROPERTIES testTable; + +-- UNSET all the properties +ALTER TABLE testTable UNSET TBLPROPERTIES ('a', 'c'); +SHOW TBLPROPERTIES testTable; + +ALTER TABLE testTable SET TBLPROPERTIES ('a'='1', 'c'='3', 'd'='4'); +SHOW TBLPROPERTIES testTable; + +-- UNSET a subset of the properties +ALTER TABLE testTable UNSET TBLPROPERTIES ('a', 'd'); +SHOW TBLPROPERTIES testTable; + +-- the same property being UNSET multiple times +ALTER TABLE testTable UNSET TBLPROPERTIES ('c', 'c', 'c'); +SHOW TBLPROPERTIES testTable; + +ALTER TABLE testTable SET TBLPROPERTIES ('a'='1', 'b' = '2', 'c'='3', 'd'='4'); +SHOW TBLPROPERTIES testTable; + +-- UNSET a subset of the properties and some non-existed properties using IF EXISTS +ALTER TABLE testTable UNSET TBLPROPERTIES IF EXISTS ('b', 'd', 'b', 'f'); +SHOW TBLPROPERTIES testTable; + +-- UNSET a subset of the properties and some non-existed properties using IF EXISTS +ALTER TABLE testTable UNSET TBLPROPERTIES IF EXISTS ('b', 'd', 'c', 'f', 'x', 'y', 'z'); +SHOW TBLPROPERTIES testTable; + +-- UNSET VIEW PROPERTIES +CREATE VIEW testView AS SELECT value FROM src WHERE key=86; +ALTER VIEW testView SET TBLPROPERTIES ('propA'='100', 'propB'='200'); +SHOW TBLPROPERTIES testView; + +-- UNSET all the properties +ALTER VIEW testView UNSET TBLPROPERTIES ('propA', 'propB'); +SHOW TBLPROPERTIES testView; + +ALTER VIEW testView SET TBLPROPERTIES ('propA'='100', 'propC'='300', 'propD'='400'); +SHOW TBLPROPERTIES testView; + +-- UNSET a subset of the properties +ALTER VIEW testView UNSET TBLPROPERTIES ('propA', 'propC'); +SHOW TBLPROPERTIES testView; + +-- the same property being UNSET multiple times +ALTER VIEW testView UNSET TBLPROPERTIES ('propD', 'propD', 'propD'); +SHOW TBLPROPERTIES testView; + +ALTER VIEW testView SET TBLPROPERTIES ('propA'='100', 'propB' = '200', 'propC'='300', 'propD'='400'); +SHOW TBLPROPERTIES testView; + +-- UNSET a subset of the properties and some non-existed properties using IF EXISTS +ALTER VIEW testView UNSET TBLPROPERTIES IF EXISTS ('propC', 'propD', 'propD', 'propC', 'propZ'); +SHOW TBLPROPERTIES testView; + +-- UNSET a subset of the properties and some non-existed properties using IF EXISTS +ALTER VIEW testView UNSET TBLPROPERTIES IF EXISTS ('propB', 'propC', 'propD', 'propF'); +SHOW TBLPROPERTIES testView; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/updateAccessTime.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/updateAccessTime.q new file mode 100644 index 0000000000000..908b6ecfa0778 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/updateAccessTime.q @@ -0,0 +1,30 @@ +drop table tstsrc; + +set hive.exec.pre.hooks = org.apache.hadoop.hive.ql.hooks.PreExecutePrinter,org.apache.hadoop.hive.ql.hooks.EnforceReadOnlyTables,org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec; + +create table tstsrc as select * from src; +desc extended tstsrc; +select count(1) from tstsrc; +desc extended tstsrc; +drop table tstsrc; + +drop table tstsrcpart; +create table tstsrcpart like srcpart; + +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.exec.dynamic.partition=true; + + +insert overwrite table tstsrcpart partition (ds, hr) select key, value, ds, hr from srcpart; + +desc extended tstsrcpart; +desc extended tstsrcpart partition (ds='2008-04-08', hr='11'); +desc extended tstsrcpart partition (ds='2008-04-08', hr='12'); + +select count(1) from tstsrcpart where ds = '2008-04-08' and hr = '11'; + +desc extended tstsrcpart; +desc extended tstsrcpart partition (ds='2008-04-08', hr='11'); +desc extended tstsrcpart partition (ds='2008-04-08', hr='12'); + +drop table tstsrcpart; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_1.q new file mode 100644 index 0000000000000..53273b3187a78 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_1.q @@ -0,0 +1,32 @@ +drop table varchar1; +drop table varchar1_1; + +create table varchar1 (key varchar(10), value varchar(20)); +create table varchar1_1 (key string, value string); + +-- load from file +load data local inpath '../data/files/srcbucket0.txt' overwrite into table varchar1; +select * from varchar1 order by key, value limit 2; + +-- insert overwrite, from same/different length varchar +insert overwrite table varchar1 + select cast(key as varchar(10)), cast(value as varchar(15)) from src order by key, value limit 2; +select key, value from varchar1 order by key, value; + +-- insert overwrite, from string +insert overwrite table varchar1 + select key, value from src order by key, value limit 2; +select key, value from varchar1 order by key, value; + +-- insert string from varchar +insert overwrite table varchar1_1 + select key, value from varchar1 order by key, value limit 2; +select key, value from varchar1_1 order by key, value; + +-- respect string length +insert overwrite table varchar1 + select key, cast(value as varchar(3)) from src order by key, value limit 2; +select key, value from varchar1 order by key, value; + +drop table varchar1; +drop table varchar1_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_2.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_2.q new file mode 100644 index 0000000000000..1eb3b85d6a3b3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_2.q @@ -0,0 +1,36 @@ +drop table varchar_2; + +create table varchar_2 ( + key varchar(10), + value varchar(20) +); + +insert overwrite table varchar_2 select * from src; + +select value, sum(cast(key as int)), count(*) numrows +from src +group by value +order by value asc +limit 5; + +-- should match the query from src +select value, sum(cast(key as int)), count(*) numrows +from varchar_2 +group by value +order by value asc +limit 5; + +select value, sum(cast(key as int)), count(*) numrows +from src +group by value +order by value desc +limit 5; + +-- should match the query from src +select value, sum(cast(key as int)), count(*) numrows +from varchar_2 +group by value +order by value desc +limit 5; + +drop table varchar_2; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_cast.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_cast.q new file mode 100644 index 0000000000000..550f3dc728df2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_cast.q @@ -0,0 +1,84 @@ + +-- Cast from varchar to other data types +select + cast(cast('11' as string) as tinyint), + cast(cast('11' as string) as smallint), + cast(cast('11' as string) as int), + cast(cast('11' as string) as bigint), + cast(cast('11.00' as string) as float), + cast(cast('11.00' as string) as double), + cast(cast('11.00' as string) as decimal) +from src limit 1; + +select + cast(cast('11' as varchar(10)) as tinyint), + cast(cast('11' as varchar(10)) as smallint), + cast(cast('11' as varchar(10)) as int), + cast(cast('11' as varchar(10)) as bigint), + cast(cast('11.00' as varchar(10)) as float), + cast(cast('11.00' as varchar(10)) as double), + cast(cast('11.00' as varchar(10)) as decimal) +from src limit 1; + +select + cast(cast('2011-01-01' as string) as date), + cast(cast('2011-01-01 01:02:03' as string) as timestamp) +from src limit 1; + +select + cast(cast('2011-01-01' as varchar(10)) as date), + cast(cast('2011-01-01 01:02:03' as varchar(30)) as timestamp) +from src limit 1; + +-- no tests from string/varchar to boolean, that conversion doesn't look useful +select + cast(cast('abc123' as string) as string), + cast(cast('abc123' as string) as varchar(10)) +from src limit 1; + +select + cast(cast('abc123' as varchar(10)) as string), + cast(cast('abc123' as varchar(10)) as varchar(10)) +from src limit 1; + +-- cast from other types to varchar +select + cast(cast(11 as tinyint) as string), + cast(cast(11 as smallint) as string), + cast(cast(11 as int) as string), + cast(cast(11 as bigint) as string), + cast(cast(11.00 as float) as string), + cast(cast(11.00 as double) as string), + cast(cast(11.00 as decimal) as string) +from src limit 1; + +select + cast(cast(11 as tinyint) as varchar(10)), + cast(cast(11 as smallint) as varchar(10)), + cast(cast(11 as int) as varchar(10)), + cast(cast(11 as bigint) as varchar(10)), + cast(cast(11.00 as float) as varchar(10)), + cast(cast(11.00 as double) as varchar(10)), + cast(cast(11.00 as decimal) as varchar(10)) +from src limit 1; + +select + cast(date '2011-01-01' as string), + cast(timestamp('2011-01-01 01:02:03') as string) +from src limit 1; + +select + cast(date '2011-01-01' as varchar(10)), + cast(timestamp('2011-01-01 01:02:03') as varchar(30)) +from src limit 1; + +select + cast(true as string), + cast(false as string) +from src limit 1; + +select + cast(true as varchar(10)), + cast(false as varchar(10)) +from src limit 1; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_comparison.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_comparison.q new file mode 100644 index 0000000000000..b6c6f406412fe --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_comparison.q @@ -0,0 +1,40 @@ + +-- Should all be true +select + cast('abc' as varchar(10)) = cast('abc' as varchar(10)), + cast('abc' as varchar(10)) <= cast('abc' as varchar(10)), + cast('abc' as varchar(10)) >= cast('abc' as varchar(10)), + cast('abc' as varchar(10)) < cast('abd' as varchar(10)), + cast('abc' as varchar(10)) > cast('abb' as varchar(10)), + cast('abc' as varchar(10)) <> cast('abb' as varchar(10)) +from src limit 1; + +-- Different varchar lengths should still compare the same +select + cast('abc' as varchar(10)) = cast('abc' as varchar(3)), + cast('abc' as varchar(10)) <= cast('abc' as varchar(3)), + cast('abc' as varchar(10)) >= cast('abc' as varchar(3)), + cast('abc' as varchar(10)) < cast('abd' as varchar(3)), + cast('abc' as varchar(10)) > cast('abb' as varchar(3)), + cast('abc' as varchar(10)) <> cast('abb' as varchar(3)) +from src limit 1; + +-- Should work with string types as well +select + cast('abc' as varchar(10)) = 'abc', + cast('abc' as varchar(10)) <= 'abc', + cast('abc' as varchar(10)) >= 'abc', + cast('abc' as varchar(10)) < 'abd', + cast('abc' as varchar(10)) > 'abb', + cast('abc' as varchar(10)) <> 'abb' +from src limit 1; + +-- leading space is significant for varchar +select + cast(' abc' as varchar(10)) <> cast('abc' as varchar(10)) +from src limit 1; + +-- trailing space is significant for varchar +select + cast('abc ' as varchar(10)) <> cast('abc' as varchar(10)) +from src limit 1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_join1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_join1.q new file mode 100644 index 0000000000000..6a19efaa3c5a1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_join1.q @@ -0,0 +1,35 @@ +drop table varchar_join1_vc1; +drop table varchar_join1_vc2; +drop table varchar_join1_str; + +create table varchar_join1_vc1 ( + c1 int, + c2 varchar(10) +); + +create table varchar_join1_vc2 ( + c1 int, + c2 varchar(20) +); + +create table varchar_join1_str ( + c1 int, + c2 string +); + +load data local inpath '../data/files/vc1.txt' into table varchar_join1_vc1; +load data local inpath '../data/files/vc1.txt' into table varchar_join1_vc2; +load data local inpath '../data/files/vc1.txt' into table varchar_join1_str; + +-- Join varchar with same length varchar +select * from varchar_join1_vc1 a join varchar_join1_vc1 b on (a.c2 = b.c2) order by a.c1; + +-- Join varchar with different length varchar +select * from varchar_join1_vc1 a join varchar_join1_vc2 b on (a.c2 = b.c2) order by a.c1; + +-- Join varchar with string +select * from varchar_join1_vc1 a join varchar_join1_str b on (a.c2 = b.c2) order by a.c1; + +drop table varchar_join1_vc1; +drop table varchar_join1_vc2; +drop table varchar_join1_str; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_nested_types.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_nested_types.q new file mode 100644 index 0000000000000..5c0989f7fc5ae --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_nested_types.q @@ -0,0 +1,53 @@ +drop table varchar_nested_1; +drop table varchar_nested_array; +drop table varchar_nested_map; +drop table varchar_nested_struct; +drop table varchar_nested_cta; +drop table varchar_nested_view; + +create table varchar_nested_1 (key int, value varchar(20)); +insert overwrite table varchar_nested_1 + select key, value from src order by key limit 1; + +-- arrays +create table varchar_nested_array (c1 array); +insert overwrite table varchar_nested_array + select array(value, value) from varchar_nested_1; +describe varchar_nested_array; +select * from varchar_nested_array; + +-- maps +create table varchar_nested_map (c1 map); +insert overwrite table varchar_nested_map + select map(key, value) from varchar_nested_1; +describe varchar_nested_map; +select * from varchar_nested_map; + +-- structs +create table varchar_nested_struct (c1 struct); +insert overwrite table varchar_nested_struct + select named_struct('a', key, + 'b', value, + 'c', cast(value as string)) + from varchar_nested_1; +describe varchar_nested_struct; +select * from varchar_nested_struct; + +-- nested type with create table as +create table varchar_nested_cta as + select * from varchar_nested_struct; +describe varchar_nested_cta; +select * from varchar_nested_cta; + +-- nested type with view +create table varchar_nested_view as + select * from varchar_nested_struct; +describe varchar_nested_view; +select * from varchar_nested_view; + +drop table varchar_nested_1; +drop table varchar_nested_array; +drop table varchar_nested_map; +drop table varchar_nested_struct; +drop table varchar_nested_cta; +drop table varchar_nested_view; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_serde.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_serde.q new file mode 100644 index 0000000000000..7351b688cf504 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_serde.q @@ -0,0 +1,102 @@ +drop table if exists varchar_serde_regex; +drop table if exists varchar_serde_lb; +drop table if exists varchar_serde_ls; +drop table if exists varchar_serde_c; +drop table if exists varchar_serde_lbc; +drop table if exists varchar_serde_orc; + +-- +-- RegexSerDe +-- +create table varchar_serde_regex ( + key varchar(10), + value varchar(20) +) +row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe' +with serdeproperties ( + "input.regex" = "([^]*)([^]*)" +) +stored as textfile; + +load data local inpath '../data/files/srcbucket0.txt' overwrite into table varchar_serde_regex; + +select * from varchar_serde_regex limit 5; +select value, count(*) from varchar_serde_regex group by value limit 5; + +-- +-- LazyBinary +-- +create table varchar_serde_lb ( + key varchar(10), + value varchar(20) +); +alter table varchar_serde_lb set serde 'org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe'; + +insert overwrite table varchar_serde_lb + select key, value from varchar_serde_regex; +select * from varchar_serde_lb limit 5; +select value, count(*) from varchar_serde_lb group by value limit 5; + +-- +-- LazySimple +-- +create table varchar_serde_ls ( + key varchar(10), + value varchar(20) +); +alter table varchar_serde_ls set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'; + +insert overwrite table varchar_serde_ls + select key, value from varchar_serde_lb; +select * from varchar_serde_ls limit 5; +select value, count(*) from varchar_serde_ls group by value limit 5; + +-- +-- Columnar +-- +create table varchar_serde_c ( + key varchar(10), + value varchar(20) +) stored as rcfile; +alter table varchar_serde_c set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'; + +insert overwrite table varchar_serde_c + select key, value from varchar_serde_ls; +select * from varchar_serde_c limit 5; +select value, count(*) from varchar_serde_c group by value limit 5; + +-- +-- LazyBinaryColumnar +-- +create table varchar_serde_lbc ( + key varchar(10), + value varchar(20) +) stored as rcfile; +alter table varchar_serde_lbc set serde 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'; + +insert overwrite table varchar_serde_lbc + select key, value from varchar_serde_c; +select * from varchar_serde_lbc limit 5; +select value, count(*) from varchar_serde_lbc group by value limit 5; + +-- +-- ORC +-- +create table varchar_serde_orc ( + key varchar(10), + value varchar(20) +) stored as orc; +alter table varchar_serde_orc set serde 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'; + + +insert overwrite table varchar_serde_orc + select key, value from varchar_serde_lbc; +select * from varchar_serde_orc limit 5; +select value, count(*) from varchar_serde_orc group by value limit 5; + +drop table if exists varchar_serde_regex; +drop table if exists varchar_serde_lb; +drop table if exists varchar_serde_ls; +drop table if exists varchar_serde_c; +drop table if exists varchar_serde_lbc; +drop table if exists varchar_serde_orc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_udf1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_udf1.q new file mode 100644 index 0000000000000..0a3012b5cd6d3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_udf1.q @@ -0,0 +1,156 @@ +drop table varchar_udf_1; + +create table varchar_udf_1 (c1 string, c2 string, c3 varchar(10), c4 varchar(20)); +insert overwrite table varchar_udf_1 + select key, value, key, value from src where key = '238' limit 1; + +-- UDFs with varchar support +select + concat(c1, c2), + concat(c3, c4), + concat(c1, c2) = concat(c3, c4) +from varchar_udf_1 limit 1; + +select + upper(c2), + upper(c4), + upper(c2) = upper(c4) +from varchar_udf_1 limit 1; + +select + lower(c2), + lower(c4), + lower(c2) = lower(c4) +from varchar_udf_1 limit 1; + +-- Scalar UDFs +select + ascii(c2), + ascii(c4), + ascii(c2) = ascii(c4) +from varchar_udf_1 limit 1; + +select + concat_ws('|', c1, c2), + concat_ws('|', c3, c4), + concat_ws('|', c1, c2) = concat_ws('|', c3, c4) +from varchar_udf_1 limit 1; + +select + decode(encode(c2, 'US-ASCII'), 'US-ASCII'), + decode(encode(c4, 'US-ASCII'), 'US-ASCII'), + decode(encode(c2, 'US-ASCII'), 'US-ASCII') = decode(encode(c4, 'US-ASCII'), 'US-ASCII') +from varchar_udf_1 limit 1; + +select + instr(c2, '_'), + instr(c4, '_'), + instr(c2, '_') = instr(c4, '_') +from varchar_udf_1 limit 1; + +select + length(c2), + length(c4), + length(c2) = length(c4) +from varchar_udf_1 limit 1; + +select + locate('a', 'abcdabcd', 3), + locate(cast('a' as varchar(1)), cast('abcdabcd' as varchar(10)), 3), + locate('a', 'abcdabcd', 3) = locate(cast('a' as varchar(1)), cast('abcdabcd' as varchar(10)), 3) +from varchar_udf_1 limit 1; + +select + lpad(c2, 15, ' '), + lpad(c4, 15, ' '), + lpad(c2, 15, ' ') = lpad(c4, 15, ' ') +from varchar_udf_1 limit 1; + +select + ltrim(c2), + ltrim(c4), + ltrim(c2) = ltrim(c4) +from varchar_udf_1 limit 1; + +select + regexp(c2, 'val'), + regexp(c4, 'val'), + regexp(c2, 'val') = regexp(c4, 'val') +from varchar_udf_1 limit 1; + +select + regexp_extract(c2, 'val_([0-9]+)', 1), + regexp_extract(c4, 'val_([0-9]+)', 1), + regexp_extract(c2, 'val_([0-9]+)', 1) = regexp_extract(c4, 'val_([0-9]+)', 1) +from varchar_udf_1 limit 1; + +select + regexp_replace(c2, 'val', 'replaced'), + regexp_replace(c4, 'val', 'replaced'), + regexp_replace(c2, 'val', 'replaced') = regexp_replace(c4, 'val', 'replaced') +from varchar_udf_1 limit 1; + +select + reverse(c2), + reverse(c4), + reverse(c2) = reverse(c4) +from varchar_udf_1 limit 1; + +select + rpad(c2, 15, ' '), + rpad(c4, 15, ' '), + rpad(c2, 15, ' ') = rpad(c4, 15, ' ') +from varchar_udf_1 limit 1; + +select + rtrim(c2), + rtrim(c4), + rtrim(c2) = rtrim(c4) +from varchar_udf_1 limit 1; + +select + sentences('See spot run. See jane run.'), + sentences(cast('See spot run. See jane run.' as varchar(50))) +from varchar_udf_1 limit 1; + +select + split(c2, '_'), + split(c4, '_') +from varchar_udf_1 limit 1; + +select + str_to_map('a:1,b:2,c:3',',',':'), + str_to_map(cast('a:1,b:2,c:3' as varchar(20)),',',':') +from varchar_udf_1 limit 1; + +select + substr(c2, 1, 3), + substr(c4, 1, 3), + substr(c2, 1, 3) = substr(c4, 1, 3) +from varchar_udf_1 limit 1; + +select + trim(c2), + trim(c4), + trim(c2) = trim(c4) +from varchar_udf_1 limit 1; + + +-- Aggregate Functions +select + compute_stats(c2, 16), + compute_stats(c4, 16) +from varchar_udf_1; + +select + min(c2), + min(c4) +from varchar_udf_1; + +select + max(c2), + max(c4) +from varchar_udf_1; + + +drop table varchar_udf_1; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_union1.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_union1.q new file mode 100644 index 0000000000000..cf90eab33e2d0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/varchar_union1.q @@ -0,0 +1,47 @@ +drop table varchar_union1_vc1; +drop table varchar_union1_vc2; +drop table varchar_union1_str; + +create table varchar_union1_vc1 ( + c1 int, + c2 varchar(10) +); + +create table varchar_union1_vc2 ( + c1 int, + c2 varchar(20) +); + +create table varchar_union1_str ( + c1 int, + c2 string +); + +load data local inpath '../data/files/vc1.txt' into table varchar_union1_vc1; +load data local inpath '../data/files/vc1.txt' into table varchar_union1_vc2; +load data local inpath '../data/files/vc1.txt' into table varchar_union1_str; + +-- union varchar with same length varchar +select * from ( + select * from varchar_union1_vc1 + union all + select * from varchar_union1_vc1 limit 1 +) q1 sort by c1; + +-- union varchar with different length varchar +select * from ( + select * from varchar_union1_vc1 + union all + select * from varchar_union1_vc2 limit 1 +) q1 sort by c1; + +-- union varchar with string +select * from ( + select * from varchar_union1_vc1 + union all + select * from varchar_union1_str limit 1 +) q1 sort by c1; + +drop table varchar_union1_vc1; +drop table varchar_union1_vc2; +drop table varchar_union1_str; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view.q new file mode 100644 index 0000000000000..4e3d0572921d6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view.q @@ -0,0 +1,51 @@ +CREATE DATABASE db1; +USE db1; + +CREATE TABLE table1 (key STRING, value STRING) +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' +OVERWRITE INTO TABLE table1; + +CREATE TABLE table2 (key STRING, value STRING) +STORED AS TEXTFILE; + +LOAD DATA LOCAL INPATH '../data/files/kv1.txt' +OVERWRITE INTO TABLE table2; + +-- relative reference, no alias +CREATE VIEW v1 AS SELECT * FROM table1; + +-- relative reference, aliased +CREATE VIEW v2 AS SELECT t1.* FROM table1 t1; + +-- relative reference, multiple tables +CREATE VIEW v3 AS SELECT t1.*, t2.key k FROM table1 t1 JOIN table2 t2 ON t1.key = t2.key; + +-- absolute reference, no alias +CREATE VIEW v4 AS SELECT * FROM db1.table1; + +-- absolute reference, aliased +CREATE VIEW v5 AS SELECT t1.* FROM db1.table1 t1; + +-- absolute reference, multiple tables +CREATE VIEW v6 AS SELECT t1.*, t2.key k FROM db1.table1 t1 JOIN db1.table2 t2 ON t1.key = t2.key; + +-- relative reference, explicit column +CREATE VIEW v7 AS SELECT key from table1; + +-- absolute reference, explicit column +CREATE VIEW v8 AS SELECT key from db1.table1; + +CREATE DATABASE db2; +USE db2; + +SELECT * FROM db1.v1; +SELECT * FROM db1.v2; +SELECT * FROM db1.v3; +SELECT * FROM db1.v4; +SELECT * FROM db1.v5; +SELECT * FROM db1.v6; +SELECT * FROM db1.v7; +SELECT * FROM db1.v8; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view_cast.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view_cast.q new file mode 100644 index 0000000000000..b0b078ec628b3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view_cast.q @@ -0,0 +1,16 @@ +DROP TABLE IF EXISTS atab; +CREATE TABLE IF NOT EXISTS atab (ks_uid BIGINT, sr_uid STRING, sr_id STRING, tstamp STRING, m_id STRING, act STRING, at_sr_uid STRING, tstamp_type STRING, original_m_id STRING, original_tstamp STRING, registered_flag TINYINT, at_ks_uid BIGINT) PARTITIONED BY (dt STRING,nt STRING); +LOAD DATA LOCAL INPATH '../data/files/v1.txt' INTO TABLE atab PARTITION (dt='20130312', nt='tw'); +LOAD DATA LOCAL INPATH '../data/files/v1.txt' INTO TABLE atab PARTITION (dt='20130311', nt='tw'); + +DROP TABLE IF EXISTS mstab; +CREATE TABLE mstab(ks_uid INT, csc INT) PARTITIONED BY (dt STRING); +LOAD DATA LOCAL INPATH '../data/files/v2.txt' INTO TABLE mstab PARTITION (dt='20130311'); + +DROP VIEW IF EXISTS aa_view_tw; +CREATE VIEW aa_view_tw AS SELECT ks_uid, sr_id, act, at_ks_uid, at_sr_uid, from_unixtime(CAST(CAST( tstamp as BIGINT)/1000 AS BIGINT),'yyyyMMdd') AS act_date, from_unixtime(CAST(CAST( original_tstamp AS BIGINT)/1000 AS BIGINT),'yyyyMMdd') AS content_creation_date FROM atab WHERE dt='20130312' AND nt='tw' AND ks_uid != at_ks_uid; + +DROP VIEW IF EXISTS joined_aa_view_tw; +CREATE VIEW joined_aa_view_tw AS SELECT aa.ks_uid, aa.sr_id, aa.act, at_sr_uid, aa.act_date, aa.at_ks_uid, aa.content_creation_date, coalesce( other.ksc, 10.0) AS at_ksc, coalesce( self.ksc , 10.0 ) AS self_ksc FROM aa_view_tw aa LEFT OUTER JOIN ( SELECT ks_uid, csc AS ksc FROM mstab WHERE dt='20130311' ) self ON ( CAST(aa.ks_uid AS BIGINT) = CAST(self.ks_uid AS BIGINT) ) LEFT OUTER JOIN ( SELECT ks_uid, csc AS ksc FROM mstab WHERE dt='20130311' ) other ON ( CAST(aa.at_ks_uid AS BIGINT) = CAST(other.ks_uid AS BIGINT) ); + +SELECT * FROM joined_aa_view_tw; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view_inputs.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view_inputs.q new file mode 100644 index 0000000000000..7acc321e6f7d3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/view_inputs.q @@ -0,0 +1,7 @@ +-- Tests that selecting from a view and another view that selects from that same view + +CREATE VIEW test_view1 AS SELECT * FROM src; + +CREATE VIEW test_view2 AS SELECT * FROM test_view1; + +SELECT COUNT(*) FROM test_view1 a JOIN test_view2 b ON a.key = b.key; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/virtual_column.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/virtual_column.q new file mode 100644 index 0000000000000..30fde395ebb04 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/virtual_column.q @@ -0,0 +1,19 @@ +select INPUT__FILE__NAME, key, BLOCK__OFFSET__INSIDE__FILE from src; + +select key, count(INPUT__FILE__NAME) from src group by key order by key; + +select INPUT__FILE__NAME, key, collect_set(BLOCK__OFFSET__INSIDE__FILE) from src group by INPUT__FILE__NAME, key order by key; + +select * from src where BLOCK__OFFSET__INSIDE__FILE > 12000 order by key; + +select * from src where BLOCK__OFFSET__INSIDE__FILE > 5800 order by key; + + +CREATE TABLE src_index_test_rc (key int, value string) STORED AS RCFILE; + +set hive.io.rcfile.record.buffer.size = 1024; +INSERT OVERWRITE TABLE src_index_test_rc SELECT * FROM src; +select INPUT__FILE__NAME, key, BLOCK__OFFSET__INSIDE__FILE from src_index_test_rc order by key; + +DROP TABLE src_index_test_rc; +DROP INDEX src_index on src_index_test_rc; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing.q new file mode 100644 index 0000000000000..a7297db6104c0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing.q @@ -0,0 +1,434 @@ +DROP TABLE part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +-- 1. testWindowing +select p_mfgr, p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1 +from part +; + +-- 2. testGroupByWithPartitioning +select p_mfgr, p_name, p_size, +min(p_retailprice), +rank() over(distribute by p_mfgr sort by p_name)as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +p_size, p_size - lag(p_size,1,p_size) over(distribute by p_mfgr sort by p_name) as deltaSz +from part +group by p_mfgr, p_name, p_size +; + +-- 3. testGroupByHavingWithSWQ +select p_mfgr, p_name, p_size, min(p_retailprice), +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +p_size, p_size - lag(p_size,1,p_size) over(distribute by p_mfgr sort by p_name) as deltaSz +from part +group by p_mfgr, p_name, p_size +having p_size > 0 +; + +-- 4. testCount +select p_mfgr, p_name, +count(p_size) over(distribute by p_mfgr sort by p_name) as cd +from part +; + +-- 5. testCountWithWindowingUDAF +select p_mfgr, p_name, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +count(p_size) over(distribute by p_mfgr sort by p_name) as cd, +p_retailprice, sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1, +p_size, p_size - lag(p_size,1,p_size) over(distribute by p_mfgr sort by p_name) as deltaSz +from part +; + +-- 6. testCountInSubQ +select sub1.r, sub1.dr, sub1.cd, sub1.s1, sub1.deltaSz +from (select p_mfgr, p_name, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +count(p_size) over(distribute by p_mfgr sort by p_name) as cd, +p_retailprice, sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1, +p_size, p_size - lag(p_size,1,p_size) over(distribute by p_mfgr sort by p_name) as deltaSz +from part +) sub1; + +-- 7. testJoinWithWindowingAndPTF +select abc.p_mfgr, abc.p_name, +rank() over(distribute by abc.p_mfgr sort by abc.p_name) as r, +dense_rank() over(distribute by abc.p_mfgr sort by abc.p_name) as dr, +abc.p_retailprice, sum(abc.p_retailprice) over (distribute by abc.p_mfgr sort by abc.p_name rows between unbounded preceding and current row) as s1, +abc.p_size, abc.p_size - lag(abc.p_size,1,abc.p_size) over(distribute by abc.p_mfgr sort by abc.p_name) as deltaSz +from noop(on part +partition by p_mfgr +order by p_name +) abc join part p1 on abc.p_partkey = p1.p_partkey +; + +-- 8. testMixedCaseAlias +select p_mfgr, p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name, p_size desc) as R +from part +; + +-- 9. testHavingWithWindowingNoGBY +select p_mfgr, p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1 +from part +; + +-- 10. testHavingWithWindowingCondRankNoGBY +select p_mfgr, p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1 +from part +; + +-- 11. testFirstLast +select p_mfgr,p_name, p_size, +sum(p_size) over (distribute by p_mfgr sort by p_name rows between current row and current row) as s2, +first_value(p_size) over w1 as f, +last_value(p_size, false) over w1 as l +from part +window w1 as (distribute by p_mfgr sort by p_name rows between 2 preceding and 2 following); + +-- 12. testFirstLastWithWhere +select p_mfgr,p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r, +sum(p_size) over (distribute by p_mfgr sort by p_name rows between current row and current row) as s2, +first_value(p_size) over w1 as f, +last_value(p_size, false) over w1 as l +from part +where p_mfgr = 'Manufacturer#3' +window w1 as (distribute by p_mfgr sort by p_name rows between 2 preceding and 2 following); + +-- 13. testSumWindow +select p_mfgr,p_name, p_size, +sum(p_size) over w1 as s1, +sum(p_size) over (distribute by p_mfgr sort by p_name rows between current row and current row) as s2 +from part +window w1 as (distribute by p_mfgr sort by p_name rows between 2 preceding and 2 following); + +-- 14. testNoSortClause +select p_mfgr,p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r, dense_rank() over(distribute by p_mfgr sort by p_name) as dr +from part +window w1 as (distribute by p_mfgr sort by p_name rows between 2 preceding and 2 following); + +-- 15. testExpressions +select p_mfgr,p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +cume_dist() over(distribute by p_mfgr sort by p_name) as cud, +percent_rank() over(distribute by p_mfgr sort by p_name) as pr, +ntile(3) over(distribute by p_mfgr sort by p_name) as nt, +count(p_size) over(distribute by p_mfgr sort by p_name) as ca, +avg(p_size) over(distribute by p_mfgr sort by p_name) as avg, +stddev(p_size) over(distribute by p_mfgr sort by p_name) as st, +first_value(p_size % 5) over(distribute by p_mfgr sort by p_name) as fv, +last_value(p_size) over(distribute by p_mfgr sort by p_name) as lv, +first_value(p_size) over w1 as fvW1 +from part +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +-- 16. testMultipleWindows +select p_mfgr,p_name, p_size, + rank() over(distribute by p_mfgr sort by p_name) as r, + dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +cume_dist() over(distribute by p_mfgr sort by p_name) as cud, +sum(p_size) over (distribute by p_mfgr sort by p_name range between unbounded preceding and current row) as s1, +sum(p_size) over (distribute by p_mfgr sort by p_size range between 5 preceding and current row) as s2, +first_value(p_size) over w1 as fv1 +from part +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +-- 17. testCountStar +select p_mfgr,p_name, p_size, +count(*) over(distribute by p_mfgr sort by p_name ) as c, +count(p_size) over(distribute by p_mfgr sort by p_name) as ca, +first_value(p_size) over w1 as fvW1 +from part +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +-- 18. testUDAFs +select p_mfgr,p_name, p_size, +sum(p_retailprice) over w1 as s, +min(p_retailprice) over w1 as mi, +max(p_retailprice) over w1 as ma, +avg(p_retailprice) over w1 as ag +from part +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +-- 19. testUDAFsWithGBY +select p_mfgr,p_name, p_size, p_retailprice, +sum(p_retailprice) over w1 as s, +min(p_retailprice) as mi , +max(p_retailprice) as ma , +avg(p_retailprice) over w1 as ag +from part +group by p_mfgr,p_name, p_size, p_retailprice +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +-- 20. testSTATs +select p_mfgr,p_name, p_size, +stddev(p_retailprice) over w1 as sdev, +stddev_pop(p_retailprice) over w1 as sdev_pop, +collect_set(p_size) over w1 as uniq_size, +variance(p_retailprice) over w1 as var, +corr(p_size, p_retailprice) over w1 as cor, +covar_pop(p_size, p_retailprice) over w1 as covarp +from part +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +-- 21. testDISTs +select p_mfgr,p_name, p_size, +histogram_numeric(p_retailprice, 5) over w1 as hist, +percentile(p_partkey, 0.5) over w1 as per, +row_number() over(distribute by p_mfgr sort by p_name) as rn +from part +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +-- 22. testViewAsTableInputWithWindowing +create view IF NOT EXISTS mfgr_price_view as +select p_mfgr, p_brand, +round(sum(p_retailprice),2) as s +from part +group by p_mfgr, p_brand; + +select * +from ( +select p_mfgr, p_brand, s, +round(sum(s) over w1 , 2) as s1 +from mfgr_price_view +window w1 as (distribute by p_mfgr sort by p_mfgr ) +) sq +order by p_mfgr, p_brand; + +select p_mfgr, p_brand, s, +round(sum(s) over w1 ,2) as s1 +from mfgr_price_view +window w1 as (distribute by p_mfgr sort by p_brand rows between 2 preceding and current row); + +-- 23. testCreateViewWithWindowingQuery +create view IF NOT EXISTS mfgr_brand_price_view as +select p_mfgr, p_brand, +sum(p_retailprice) over w1 as s +from part +window w1 as (distribute by p_mfgr sort by p_name rows between 2 preceding and current row); + +select * from mfgr_brand_price_view; + +-- 24. testLateralViews +select p_mfgr, p_name, +lv_col, p_size, sum(p_size) over w1 as s +from (select p_mfgr, p_name, p_size, array(1,2,3) arr from part) p +lateral view explode(arr) part_lv as lv_col +window w1 as (distribute by p_mfgr sort by p_size, lv_col rows between 2 preceding and current row); + +-- 25. testMultipleInserts3SWQs +CREATE TABLE part_1( +p_mfgr STRING, +p_name STRING, +p_size INT, +r INT, +dr INT, +s DOUBLE); + +CREATE TABLE part_2( +p_mfgr STRING, +p_name STRING, +p_size INT, +r INT, +dr INT, +cud INT, +s2 DOUBLE, +fv1 INT); + +CREATE TABLE part_3( +p_mfgr STRING, +p_name STRING, +p_size INT, +c INT, +ca INT, +fv INT); + +from part +INSERT OVERWRITE TABLE part_1 +select p_mfgr, p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name ) as r, +dense_rank() over(distribute by p_mfgr sort by p_name ) as dr, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s +INSERT OVERWRITE TABLE part_2 +select p_mfgr,p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +cume_dist() over(distribute by p_mfgr sort by p_name) as cud, +round(sum(p_size) over (distribute by p_mfgr sort by p_size range between 5 preceding and current row),1) as s2, +first_value(p_size) over w1 as fv1 +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following) +INSERT OVERWRITE TABLE part_3 +select p_mfgr,p_name, p_size, +count(*) over(distribute by p_mfgr sort by p_name) as c, +count(p_size) over(distribute by p_mfgr sort by p_name) as ca, +first_value(p_size) over w1 as fv +window w1 as (distribute by p_mfgr sort by p_mfgr, p_name rows between 2 preceding and 2 following); + +select * from part_1; + +select * from part_2; + +select * from part_3; + +-- 26. testGroupByHavingWithSWQAndAlias +select p_mfgr, p_name, p_size, min(p_retailprice) as mi, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +p_size, p_size - lag(p_size,1,p_size) over(distribute by p_mfgr sort by p_name) as deltaSz +from part +group by p_mfgr, p_name, p_size +having p_size > 0 +; + +-- 27. testMultipleRangeWindows +select p_mfgr,p_name, p_size, +sum(p_size) over (distribute by p_mfgr sort by p_size range between 10 preceding and current row) as s2, +sum(p_size) over (distribute by p_mfgr sort by p_size range between current row and 10 following ) as s1 +from part +window w1 as (rows between 2 preceding and 2 following); + +-- 28. testPartOrderInUDAFInvoke +select p_mfgr, p_name, p_size, +sum(p_size) over (partition by p_mfgr order by p_name rows between 2 preceding and 2 following) as s +from part; + +-- 29. testPartOrderInWdwDef +select p_mfgr, p_name, p_size, +sum(p_size) over w1 as s +from part +window w1 as (partition by p_mfgr order by p_name rows between 2 preceding and 2 following); + +-- 30. testDefaultPartitioningSpecRules +select p_mfgr, p_name, p_size, +sum(p_size) over w1 as s, +sum(p_size) over w2 as s2 +from part +window w1 as (distribute by p_mfgr sort by p_name rows between 2 preceding and 2 following), + w2 as (partition by p_mfgr order by p_name); + +-- 31. testWindowCrossReference +select p_mfgr, p_name, p_size, +sum(p_size) over w1 as s1, +sum(p_size) over w2 as s2 +from part +window w1 as (partition by p_mfgr order by p_name range between 2 preceding and 2 following), + w2 as w1; + + +-- 32. testWindowInheritance +select p_mfgr, p_name, p_size, +sum(p_size) over w1 as s1, +sum(p_size) over w2 as s2 +from part +window w1 as (partition by p_mfgr order by p_name range between 2 preceding and 2 following), + w2 as (w1 rows between unbounded preceding and current row); + + +-- 33. testWindowForwardReference +select p_mfgr, p_name, p_size, +sum(p_size) over w1 as s1, +sum(p_size) over w2 as s2, +sum(p_size) over w3 as s3 +from part +window w1 as (distribute by p_mfgr sort by p_name range between 2 preceding and 2 following), + w2 as w3, + w3 as (distribute by p_mfgr sort by p_name range between unbounded preceding and current row); + + +-- 34. testWindowDefinitionPropagation +select p_mfgr, p_name, p_size, +sum(p_size) over w1 as s1, +sum(p_size) over w2 as s2, +sum(p_size) over (w3 rows between 2 preceding and 2 following) as s3 +from part +window w1 as (distribute by p_mfgr sort by p_name range between 2 preceding and 2 following), + w2 as w3, + w3 as (distribute by p_mfgr sort by p_name range between unbounded preceding and current row); + +-- 35. testDistinctWithWindowing +select DISTINCT p_mfgr, p_name, p_size, +sum(p_size) over w1 as s +from part +window w1 as (distribute by p_mfgr sort by p_name rows between 2 preceding and 2 following); + +-- 36. testRankWithPartitioning +select p_mfgr, p_name, p_size, +rank() over (partition by p_mfgr order by p_name ) as r +from part; + +-- 37. testPartitioningVariousForms +select p_mfgr, +round(sum(p_retailprice) over (partition by p_mfgr order by p_mfgr),2) as s1, +min(p_retailprice) over (partition by p_mfgr) as s2, +max(p_retailprice) over (distribute by p_mfgr sort by p_mfgr) as s3, +round(avg(p_retailprice) over (distribute by p_mfgr),2) as s4, +count(p_retailprice) over (cluster by p_mfgr ) as s5 +from part; + +-- 38. testPartitioningVariousForms2 +select p_mfgr, p_name, p_size, +sum(p_retailprice) over (partition by p_mfgr, p_name order by p_mfgr, p_name rows between unbounded preceding and current row) as s1, +min(p_retailprice) over (distribute by p_mfgr, p_name sort by p_mfgr, p_name rows between unbounded preceding and current row) as s2, +max(p_retailprice) over (partition by p_mfgr, p_name order by p_name) as s3 +from part; + +-- 39. testUDFOnOrderCols +select p_mfgr, p_type, substr(p_type, 2) as short_ptype, +rank() over (partition by p_mfgr order by substr(p_type, 2)) as r +from part; + +-- 40. testNoBetweenForRows +select p_mfgr, p_name, p_size, + sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows unbounded preceding) as s1 + from part ; + +-- 41. testNoBetweenForRange +select p_mfgr, p_name, p_size, + sum(p_retailprice) over (distribute by p_mfgr sort by p_size range unbounded preceding) as s1 + from part ; + +-- 42. testUnboundedFollowingForRows +select p_mfgr, p_name, p_size, + sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between current row and unbounded following) as s1 + from part ; + +-- 43. testUnboundedFollowingForRange +select p_mfgr, p_name, p_size, + sum(p_retailprice) over (distribute by p_mfgr sort by p_size range between current row and unbounded following) as s1 + from part ; + +-- 44. testOverNoPartitionSingleAggregate +select p_name, p_retailprice, +round(avg(p_retailprice) over(),2) +from part +order by p_name; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_adjust_rowcontainer_sz.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_adjust_rowcontainer_sz.q new file mode 100644 index 0000000000000..9c7625dcd786a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_adjust_rowcontainer_sz.q @@ -0,0 +1,27 @@ +DROP TABLE part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +set hive.join.cache.size=1; + +select p_mfgr, p_name, p_size, +rank() over(distribute by p_mfgr sort by p_name) as r, +dense_rank() over(distribute by p_mfgr sort by p_name) as dr, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1 +from part +; + +set hive.join.cache.size=25000; \ No newline at end of file diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_columnPruning.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_columnPruning.q new file mode 100644 index 0000000000000..7c4ab386145d5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_columnPruning.q @@ -0,0 +1,32 @@ +DROP TABLE part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +-- 1. testQueryLevelPartitionColsNotInSelect +select p_size, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1 +from part + ; + +-- 2. testWindowPartitionColsNotInSelect +select p_size, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1 +from part; + +-- 3. testHavingColNotInSelect +select p_mfgr, +sum(p_retailprice) over (distribute by p_mfgr sort by p_name rows between unbounded preceding and current row) as s1 +from part; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_expressions.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_expressions.q new file mode 100644 index 0000000000000..2c3339095f22b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_expressions.q @@ -0,0 +1,70 @@ +DROP TABLE part; + +-- data setup +CREATE TABLE part( + p_partkey INT, + p_name STRING, + p_mfgr STRING, + p_brand STRING, + p_type STRING, + p_size INT, + p_container STRING, + p_retailprice DOUBLE, + p_comment STRING +); + +LOAD DATA LOCAL INPATH '../data/files/part_tiny.txt' overwrite into table part; + +drop table over10k; + +create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|'; + +load data local inpath '../data/files/over10k' into table over10k; + +select p_mfgr, p_retailprice, p_size, +round(sum(p_retailprice) over w1 , 2) = round(sum(lag(p_retailprice,1,0.0)) over w1 + last_value(p_retailprice) over w1 , 2), +max(p_retailprice) over w1 - min(p_retailprice) over w1 = last_value(p_retailprice) over w1 - first_value(p_retailprice) over w1 +from part +window w1 as (distribute by p_mfgr sort by p_retailprice) +; +select p_mfgr, p_retailprice, p_size, +rank() over (distribute by p_mfgr sort by p_retailprice) as r, +sum(p_retailprice) over (distribute by p_mfgr sort by p_retailprice rows between unbounded preceding and current row) as s2, +sum(p_retailprice) over (distribute by p_mfgr sort by p_retailprice rows between unbounded preceding and current row) -5 as s1 +from part +; + +select s, si, f, si - lead(f, 3) over (partition by t order by bo,s,si,f desc) from over10k limit 100; +select s, i, i - lead(i, 3, 0) over (partition by si order by i,s) from over10k limit 100; +select s, si, d, si - lag(d, 3) over (partition by b order by si,s,d) from over10k limit 100; +select s, lag(s, 3, 'fred') over (partition by f order by b) from over10k limit 100; + +select p_mfgr, avg(p_retailprice) over(partition by p_mfgr, p_type order by p_mfgr) from part; + +select p_mfgr, avg(p_retailprice) over(partition by p_mfgr order by p_type,p_mfgr rows between unbounded preceding and current row) from part; + +-- multi table insert test +create table t1 (a1 int, b1 string); +create table t2 (a1 int, b1 string); +from (select sum(i) over (partition by ts order by i), s from over10k) tt insert overwrite table t1 select * insert overwrite table t2 select * ; +select * from t1 limit 3; +select * from t2 limit 3; + +select p_mfgr, p_retailprice, p_size, +round(sum(p_retailprice) over w1 , 2) + 50.0 = round(sum(lag(p_retailprice,1,50.0)) over w1 + (last_value(p_retailprice) over w1),2) +from part +window w1 as (distribute by p_mfgr sort by p_retailprice) +limit 11; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_multipartitioning.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_multipartitioning.q new file mode 100644 index 0000000000000..bb371e900975b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_multipartitioning.q @@ -0,0 +1,42 @@ +drop table over10k; + +create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|'; + +load data local inpath '../data/files/over10k' into table over10k; + +select s, rank() over (partition by s order by si), sum(b) over (partition by s order by si) from over10k limit 100; + +select s, +rank() over (partition by s order by dec desc), +sum(b) over (partition by s order by ts desc) +from over10k +where s = 'tom allen' or s = 'bob steinbeck'; + +select s, sum(i) over (partition by s), sum(f) over (partition by si) from over10k where s = 'tom allen' or s = 'bob steinbeck' ; + +select s, rank() over (partition by s order by bo), rank() over (partition by si order by bin desc) from over10k +where s = 'tom allen' or s = 'bob steinbeck'; + +select s, sum(f) over (partition by i), row_number() over (order by f) from over10k where s = 'tom allen' or s = 'bob steinbeck'; + +select s, rank() over w1, +rank() over w2 +from over10k +where s = 'tom allen' or s = 'bob steinbeck' +window +w1 as (partition by s order by dec), +w2 as (partition by si order by f) +; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_navfn.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_navfn.q new file mode 100644 index 0000000000000..8a9d0012593e6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_navfn.q @@ -0,0 +1,31 @@ +drop table over10k; + +create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|'; + +load data local inpath '../data/files/over10k' into table over10k; + +select s, row_number() over (partition by d order by dec) from over10k limit 100; + +select i, lead(s) over (partition by bin order by d,i desc) from over10k limit 100; + +select i, lag(dec) over (partition by i order by s,i,dec) from over10k limit 100; + +select s, last_value(t) over (partition by d order by f) from over10k limit 100; + +select s, first_value(s) over (partition by bo order by s) from over10k limit 100; + +select t, s, i, last_value(i) over (partition by t order by s) +from over10k where (s = 'oscar allen' or s = 'oscar carson') and t = 10; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_ntile.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_ntile.q new file mode 100644 index 0000000000000..505c259f4b7b3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_ntile.q @@ -0,0 +1,28 @@ +drop table over10k; + +create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|'; + +load data local inpath '../data/files/over10k' into table over10k; + +select i, ntile(10) over (partition by s order by i) from over10k limit 100; + +select s, ntile(100) over (partition by i order by s) from over10k limit 100; + +select f, ntile(4) over (partition by d order by f) from over10k limit 100; + +select d, ntile(1000) over (partition by dec order by d) from over10k limit 100; + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_rank.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_rank.q new file mode 100644 index 0000000000000..bf76867813e4e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_rank.q @@ -0,0 +1,66 @@ +drop table over10k; + +create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|'; + +load data local inpath '../data/files/over10k' into table over10k; + +select s, rank() over (partition by f order by t) from over10k limit 100; + +select s, dense_rank() over (partition by ts order by i,s desc) from over10k limit 100; + +select s, cume_dist() over (partition by bo order by b,s) from over10k limit 100; + +select s, percent_rank() over (partition by dec order by f) from over10k limit 100; + +-- If following tests fail, look for the comments in class PTFPPD::process() + +select ts, dec, rnk +from + (select ts, dec, + rank() over (partition by ts order by dec) as rnk + from + (select other.ts, other.dec + from over10k other + join over10k on (other.b = over10k.b) + ) joined + ) ranked +where rnk = 1 limit 10; + +select ts, dec, rnk +from + (select ts, dec, + rank() over (partition by ts) as rnk + from + (select other.ts, other.dec + from over10k other + join over10k on (other.b = over10k.b) + ) joined + ) ranked +where dec = 89.5 limit 10; + +select ts, dec, rnk +from + (select ts, dec, + rank() over (partition by ts order by dec) as rnk + from + (select other.ts, other.dec + from over10k other + join over10k on (other.b = over10k.b) + where other.t < 10 + ) joined + ) ranked +where rnk = 1 limit 10; + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_udaf.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_udaf.q new file mode 100644 index 0000000000000..f22b992cd4386 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_udaf.q @@ -0,0 +1,28 @@ +drop table over10k; + +create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|'; + +load data local inpath '../data/files/over10k' into table over10k; + +select s, min(i) over (partition by s) from over10k limit 100; + +select s, avg(f) over (partition by si order by s) from over10k limit 100; + +select s, avg(i) over (partition by t, b order by s) from over10k limit 100; + +select max(i) over w from over10k window w as (partition by f) limit 100; + +select s, avg(d) over (partition by t order by f) from over10k limit 100; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_windowspec.q b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_windowspec.q new file mode 100644 index 0000000000000..7cc1367306956 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/clientpositive/windowing_windowspec.q @@ -0,0 +1,36 @@ +drop table over10k; + +create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|'; + +load data local inpath '../data/files/over10k' into table over10k; + +select s, sum(b) over (partition by i order by s,b rows unbounded preceding) from over10k limit 100; + +select s, sum(f) over (partition by d order by s,f rows unbounded preceding) from over10k limit 100; + +select s, sum(f) over (partition by ts order by f range between current row and unbounded following) from over10k limit 100; + +select s, avg(f) over (partition by ts order by s,f rows between current row and 5 following) from over10k limit 100; + +select s, avg(d) over (partition by t order by s,d desc rows between 5 preceding and 5 following) from over10k limit 100; + +select s, sum(i) over(partition by ts order by s) from over10k limit 100; + +select f, sum(f) over (partition by ts order by f range between unbounded preceding and current row) from over10k limit 100; + +select s, i, round(avg(d) over (partition by s order by i) / 10.0 , 2) from over10k limit 7; + +select s, i, round((avg(d) over w1 + 10.0) - (avg(d) over w1 - 10.0),2) from over10k window w1 as (partition by s order by i) limit 7; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/ambiguous_join_col.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/ambiguous_join_col.q new file mode 100644 index 0000000000000..e70aae46275b0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/ambiguous_join_col.q @@ -0,0 +1,2 @@ +FROM src src1 JOIN src src2 ON src1.key = src2.key +INSERT OVERWRITE TABLE dest1 SELECT key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/duplicate_alias.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/duplicate_alias.q new file mode 100644 index 0000000000000..5fd22460c037a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/duplicate_alias.q @@ -0,0 +1,2 @@ +FROM src a JOIN src a ON (a.key = a.key) +INSERT OVERWRITE TABLE dest1 SELECT a.key, a.value diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/garbage.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/garbage.q new file mode 100644 index 0000000000000..6c8c751f21c31 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/garbage.q @@ -0,0 +1 @@ +this is totally garbage SELECT src.key WHERE a lot of garbage diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/insert_wrong_number_columns.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/insert_wrong_number_columns.q new file mode 100644 index 0000000000000..aadfbde33836a --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/insert_wrong_number_columns.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value, 1 WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_create_table.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_create_table.q new file mode 100644 index 0000000000000..899bbd368b185 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_create_table.q @@ -0,0 +1,4 @@ +CREATE TABLE mytable ( + a INT + b STRING +); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_dot.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_dot.q new file mode 100644 index 0000000000000..36b9bd2a3b980 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_dot.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.value.member WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_function_param2.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_function_param2.q new file mode 100644 index 0000000000000..3543449b8870b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_function_param2.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT substr('1234', 'abc'), src.value WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_index.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_index.q new file mode 100644 index 0000000000000..146bc5dc9f3b0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_index.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key[0], src.value diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_list_index.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_list_index.q new file mode 100644 index 0000000000000..c40f079f60aaa --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_list_index.q @@ -0,0 +1,2 @@ +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint[0], src_thrift.lstring['abc'] diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_list_index2.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_list_index2.q new file mode 100644 index 0000000000000..99d0b3d4162ac --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_list_index2.q @@ -0,0 +1,2 @@ +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint[0], src_thrift.lstring[1 + 2] diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_map_index.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_map_index.q new file mode 100644 index 0000000000000..c2b9eab61b80e --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_map_index.q @@ -0,0 +1,2 @@ +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint[0], src_thrift.mstringstring[0] diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_map_index2.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_map_index2.q new file mode 100644 index 0000000000000..5828f0709f53b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_map_index2.q @@ -0,0 +1,2 @@ +FROM src_thrift +INSERT OVERWRITE TABLE dest1 SELECT src_thrift.lint[0], src_thrift.mstringstring[concat('abc', 'abc')] diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_select.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_select.q new file mode 100644 index 0000000000000..fd1298577be8c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/invalid_select.q @@ -0,0 +1,4 @@ +SELECT + trim(trim(a)) + trim(b) +FROM src; diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/macro_reserved_word.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/macro_reserved_word.q new file mode 100644 index 0000000000000..359eb9de93bac --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/macro_reserved_word.q @@ -0,0 +1 @@ +CREATE TEMPORARY MACRO DOUBLE (x DOUBLE) 1.0 / (1.0 + EXP(-x)); diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/missing_overwrite.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/missing_overwrite.q new file mode 100644 index 0000000000000..1bfeee382ea37 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/missing_overwrite.q @@ -0,0 +1,2 @@ +FROM src +INSERT TABLE dest1 SELECT '1234', src.value WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/nonkey_groupby.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/nonkey_groupby.q new file mode 100644 index 0000000000000..ad0f4415cbd8c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/nonkey_groupby.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.value WHERE src.key < 100 group by src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/quoted_string.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/quoted_string.q new file mode 100644 index 0000000000000..0252a9e11cdf5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/quoted_string.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234", src.value WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column1.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column1.q new file mode 100644 index 0000000000000..429cead63beb1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column1.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.dummycol WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column2.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column2.q new file mode 100644 index 0000000000000..3767dc4e65021 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column2.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.value WHERE src.dummykey < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column3.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column3.q new file mode 100644 index 0000000000000..2fc5f490f118d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column3.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.value WHERE src.key < 100 group by src.dummycol diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column4.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column4.q new file mode 100644 index 0000000000000..8ad8dd12e46e2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column4.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.value WHERE src.key < 100 group by dummysrc.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column5.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column5.q new file mode 100644 index 0000000000000..766b0e5255fea --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column5.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.value WHERE dummysrc.key < 100 group by src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column6.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column6.q new file mode 100644 index 0000000000000..bb76c28623484 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_column6.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', dummysrc.value WHERE src.key < 100 group by src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function1.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function1.q new file mode 100644 index 0000000000000..d8ff6325b95f2 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function1.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', dummyfn(src.value, 10) WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function2.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function2.q new file mode 100644 index 0000000000000..f7d255934db5c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function2.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.value WHERE anotherdummyfn('abc', src.key) + 10 < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function3.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function3.q new file mode 100644 index 0000000000000..87d4edc987865 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function3.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.value WHERE anotherdummyfn('abc', src.key) + 10 < 100 group by src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function4.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function4.q new file mode 100644 index 0000000000000..cfe70e4f2fdc4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_function4.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT '1234', dummyfn(src.key) WHERE src.key < 100 group by src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_table1.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_table1.q new file mode 100644 index 0000000000000..585ef6d7f2db1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_table1.q @@ -0,0 +1,2 @@ +FROM dummySrc +INSERT OVERWRITE TABLE dest1 SELECT '1234', src.value WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_table2.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_table2.q new file mode 100644 index 0000000000000..2c69c16be5905 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/unknown_table2.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dummyDest SELECT '1234', src.value WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/wrong_distinct1.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/wrong_distinct1.q new file mode 100755 index 0000000000000..d92c3bb8df4b0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/wrong_distinct1.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT src.key, substr(src.value,4,1) GROUP BY src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/negative/wrong_distinct2.q b/sql/hive/src/test/resources/ql/src/test/queries/negative/wrong_distinct2.q new file mode 100755 index 0000000000000..53fb550b3d111 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/negative/wrong_distinct2.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, DISTINCT substr(src.value,4,1) GROUP BY src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/case_sensitivity.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/case_sensitivity.q new file mode 100644 index 0000000000000..d7f7371507662 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/case_sensitivity.q @@ -0,0 +1,2 @@ +FROM SRC_THRIFT +INSERT OVERWRITE TABLE dest1 SELECT src_Thrift.LINT[1], src_thrift.lintstring[0].MYSTRING where src_thrift.liNT[0] > 0 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/cast1.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/cast1.q new file mode 100644 index 0000000000000..6269c6a4e76f9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/cast1.q @@ -0,0 +1,2 @@ +FROM src +SELECT 3 + 2, 3.0 + 2, 3 + 2.0, 3.0 + 2.0, 3 + CAST(2.0 AS INT), CAST(1 AS BOOLEAN), CAST(TRUE AS INT) WHERE src.key = 86 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby1.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby1.q new file mode 100755 index 0000000000000..96b29b05cc7ad --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby1.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby2.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby2.q new file mode 100755 index 0000000000000..d741eb60b6bb1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby2.q @@ -0,0 +1,2 @@ +FROM src +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1) diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby3.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby3.q new file mode 100755 index 0000000000000..03b1248a11cb6 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby3.q @@ -0,0 +1,2 @@ +FROM src +SELECT sum(substr(src.value,5)), avg(substr(src.value,5)), avg(DISTINCT substr(src.value,5)), max(substr(src.value,5)), min(substr(src.value,5)) diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby4.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby4.q new file mode 100755 index 0000000000000..85271a9caf6e3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby4.q @@ -0,0 +1,2 @@ +FROM src +SELECT substr(src.key,1,1) GROUP BY substr(src.key,1,1) diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby5.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby5.q new file mode 100755 index 0000000000000..ebd65b3069722 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby5.q @@ -0,0 +1,4 @@ + +SELECT src.key, sum(substr(src.value,5)) +FROM src +GROUP BY src.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby6.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby6.q new file mode 100755 index 0000000000000..80654f2a9ce6b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/groupby6.q @@ -0,0 +1,2 @@ +FROM src +SELECT DISTINCT substr(src.value,5,1) diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input1.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input1.q new file mode 100644 index 0000000000000..fdd290d6b136b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input1.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.key, src.value WHERE src.key < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input2.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input2.q new file mode 100644 index 0000000000000..4e1612ea972e9 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input2.q @@ -0,0 +1,4 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 +INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key, 2 WHERE src.key >= 200 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input20.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input20.q new file mode 100644 index 0000000000000..f30cf27017d96 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input20.q @@ -0,0 +1,9 @@ +FROM ( + FROM src + MAP src.key % 2, src.key % 5 + USING 'cat' + CLUSTER BY key +) tmap +REDUCE tmap.key, tmap.value +USING 'uniq -c | sed "s@^ *@@" | sed "s@\t@_@" | sed "s@ @\t@"' +AS key, value diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input3.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input3.q new file mode 100644 index 0000000000000..fc53e94d39f02 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input3.q @@ -0,0 +1,5 @@ +FROM src +INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 +INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 +INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key, 2 WHERE src.key >= 200 and src.key < 300 +INSERT OVERWRITE DIRECTORY '../../../../build/contrib/hive/ql/test/data/warehouse/dest4.out' SELECT src.value WHERE src.key >= 300 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input4.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input4.q new file mode 100644 index 0000000000000..03e6de48faca3 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input4.q @@ -0,0 +1,7 @@ +FROM ( + FROM src + SELECT TRANSFORM(src.key, src.value) + USING '/bin/cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue WHERE tmap.tkey < 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input5.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input5.q new file mode 100644 index 0000000000000..a46abc75833f0 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input5.q @@ -0,0 +1,7 @@ +FROM ( + FROM src_thrift + SELECT TRANSFORM(src_thrift.lint, src_thrift.lintstring) + USING '/bin/cat' AS (tkey, tvalue) + CLUSTER BY tkey +) tmap +INSERT OVERWRITE TABLE dest1 SELECT tmap.tkey, tmap.tvalue diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input6.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input6.q new file mode 100644 index 0000000000000..d6f25a935ae7d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input6.q @@ -0,0 +1,2 @@ +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src1.value WHERE src1.key is null diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input7.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input7.q new file mode 100644 index 0000000000000..33a82953c26ed --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input7.q @@ -0,0 +1,2 @@ +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT NULL, src1.key diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input8.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input8.q new file mode 100644 index 0000000000000..0843b9ba4e557 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input8.q @@ -0,0 +1,2 @@ +FROM src1 +SELECT 4 + NULL, src1.key - NULL, NULL + NULL diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input9.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input9.q new file mode 100644 index 0000000000000..2892f0b2dfc4f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input9.q @@ -0,0 +1,2 @@ +FROM src1 +INSERT OVERWRITE TABLE dest1 SELECT NULL, src1.key where NULL = NULL diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input_part1.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input_part1.q new file mode 100644 index 0000000000000..d45d1cd0b47ec --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input_part1.q @@ -0,0 +1,2 @@ +FROM srcpart +SELECT srcpart.key, srcpart.value, srcpart.hr, srcpart.ds WHERE srcpart.key < 100 and srcpart.ds = '2008-04-08' and srcpart.hr = '12' diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testsequencefile.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testsequencefile.q new file mode 100755 index 0000000000000..cf9a092417e1d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testsequencefile.q @@ -0,0 +1,2 @@ +FROM src +INSERT OVERWRITE TABLE dest4_sequencefile SELECT src.key, src.value diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testxpath.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testxpath.q new file mode 100755 index 0000000000000..7699bff755520 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testxpath.q @@ -0,0 +1,2 @@ +FROM src_thrift +SELECT src_thrift.lint[1], src_thrift.lintstring[0].mystring, src_thrift.mstringstring['key_2'] diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testxpath2.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testxpath2.q new file mode 100644 index 0000000000000..08abaf4fad8da --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/input_testxpath2.q @@ -0,0 +1,2 @@ +FROM src_thrift +SELECT size(src_thrift.lint), size(src_thrift.lintstring), size(src_thrift.mstringstring) where src_thrift.lint IS NOT NULL AND NOT (src_thrift.mstringstring IS NULL) diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/join1.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/join1.q new file mode 100644 index 0000000000000..739c39dd8f718 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/join1.q @@ -0,0 +1,3 @@ +FROM src src1 JOIN src src2 ON (src1.key = src2.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src2.value + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/join2.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/join2.q new file mode 100644 index 0000000000000..a02d87f09f58c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/join2.q @@ -0,0 +1,3 @@ +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key + src2.key = src3.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/join3.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/join3.q new file mode 100644 index 0000000000000..b57c9569d7286 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/join3.q @@ -0,0 +1,4 @@ +FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key = src3.key) +INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/join4.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/join4.q new file mode 100644 index 0000000000000..2e5967fb7d854 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/join4.q @@ -0,0 +1,14 @@ +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +SELECT c.c1, c.c2, c.c3, c.c4 + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/join5.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/join5.q new file mode 100644 index 0000000000000..63a38f554a24f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/join5.q @@ -0,0 +1,15 @@ +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + RIGHT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +SELECT c.c1, c.c2, c.c3, c.c4 + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/join6.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/join6.q new file mode 100644 index 0000000000000..110451cf3039b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/join6.q @@ -0,0 +1,16 @@ +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +SELECT c.c1, c.c2, c.c3, c.c4 + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/join7.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/join7.q new file mode 100644 index 0000000000000..65797b44a2cb1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/join7.q @@ -0,0 +1,21 @@ +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + FULL OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + LEFT OUTER JOIN + ( + FROM src src3 SELECT src3.key AS c5, src3.value AS c6 WHERE src3.key > 20 and src3.key < 25 + ) c + ON (a.c1 = c.c5) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4, c.c5 AS c5, c.c6 AS c6 +) c +SELECT c.c1, c.c2, c.c3, c.c4, c.c5, c.c6 + + + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/join8.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/join8.q new file mode 100644 index 0000000000000..d215b07a6720f --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/join8.q @@ -0,0 +1,14 @@ +FROM ( + FROM + ( + FROM src src1 SELECT src1.key AS c1, src1.value AS c2 WHERE src1.key > 10 and src1.key < 20 + ) a + LEFT OUTER JOIN + ( + FROM src src2 SELECT src2.key AS c3, src2.value AS c4 WHERE src2.key > 15 and src2.key < 25 + ) b + ON (a.c1 = b.c3) + SELECT a.c1 AS c1, a.c2 AS c2, b.c3 AS c3, b.c4 AS c4 +) c +SELECT c.c1, c.c2, c.c3, c.c4 where c.c3 IS NULL AND c.c1 IS NOT NULL + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/sample1.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample1.q new file mode 100644 index 0000000000000..3a168b999d707 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample1.q @@ -0,0 +1,5 @@ +-- no input pruning, no sample filter +SELECT s.* +FROM srcpart TABLESAMPLE (BUCKET 1 OUT OF 1 ON rand()) s +WHERE s.ds='2008-04-08' and s.hr='11' + diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/sample2.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample2.q new file mode 100644 index 0000000000000..b505b896fa2c5 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample2.q @@ -0,0 +1,4 @@ +-- input pruning, no sample filter +-- default table sample columns +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2) s diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/sample3.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample3.q new file mode 100644 index 0000000000000..42d5a2bbec34b --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample3.q @@ -0,0 +1,4 @@ +-- sample columns not same as bucket columns +-- no input pruning, sample filter +INSERT OVERWRITE TABLE dest1 SELECT s.* -- here's another test +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key, value) s diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/sample4.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample4.q new file mode 100644 index 0000000000000..7b5ab03380ae1 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample4.q @@ -0,0 +1,4 @@ +-- bucket column is the same as table sample +-- No need for sample filter +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 2 on key) s diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/sample5.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample5.q new file mode 100644 index 0000000000000..b9b48fdc71884 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample5.q @@ -0,0 +1,3 @@ +-- no input pruning, sample filter +INSERT OVERWRITE TABLE dest1 SELECT s.* -- here's another test +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 5 on key) s diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/sample6.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample6.q new file mode 100644 index 0000000000000..0ee026f0f368c --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample6.q @@ -0,0 +1,3 @@ +-- both input pruning and sample filter +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 4 on key) s diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/sample7.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample7.q new file mode 100644 index 0000000000000..f17ce105c3572 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/sample7.q @@ -0,0 +1,4 @@ +-- both input pruning and sample filter +INSERT OVERWRITE TABLE dest1 SELECT s.* +FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 4 on key) s +WHERE s.key > 100 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/subq.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/subq.q new file mode 100644 index 0000000000000..6392dbcc4380d --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/subq.q @@ -0,0 +1,4 @@ +FROM ( + FROM src select src.* WHERE src.key < 100 +) unioninput +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/union.out' SELECT unioninput.* diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/udf1.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf1.q new file mode 100644 index 0000000000000..2ecf46e742c30 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf1.q @@ -0,0 +1,5 @@ +FROM src SELECT 'a' LIKE '%a%', 'b' LIKE '%a%', 'ab' LIKE '%a%', 'ab' LIKE '%a_', + '%_' LIKE '\%\_', 'ab' LIKE '\%\_', 'ab' LIKE '_a%', 'ab' LIKE 'a', + '' RLIKE '.*', 'a' RLIKE '[ab]', '' RLIKE '[ab]', 'hadoop' RLIKE '[a-z]*', 'hadoop' RLIKE 'o*', + REGEXP_REPLACE('abc', 'b', 'c'), REGEXP_REPLACE('abc', 'z', 'a'), REGEXP_REPLACE('abbbb', 'bb', 'b'), REGEXP_REPLACE('hadoop', '(.)[a-z]*', '$1ive') + WHERE src.key = 86 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/udf4.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf4.q new file mode 100644 index 0000000000000..f3a7598e17210 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf4.q @@ -0,0 +1 @@ +SELECT round(1.0), round(1.5), round(-1.5), floor(1.0), floor(1.5), floor(-1.5), sqrt(1.0), sqrt(-1.0), sqrt(0.0), ceil(1.0), ceil(1.5), ceil(-1.5), ceiling(1.0), rand(3), +3, -3, 1++2, 1+-2, ~1 FROM dest1 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/udf6.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf6.q new file mode 100644 index 0000000000000..65791c41c1ff4 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf6.q @@ -0,0 +1 @@ +FROM src SELECT CONCAT('a', 'b'), IF(TRUE, 1 ,2) diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/udf_case.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf_case.q new file mode 100644 index 0000000000000..0c86da2198699 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf_case.q @@ -0,0 +1,10 @@ +SELECT CASE 1 + WHEN 1 THEN 2 + WHEN 3 THEN 4 + ELSE 5 + END, + CASE 11 + WHEN 12 THEN 13 + WHEN 14 THEN 15 + END +FROM src LIMIT 1 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/udf_when.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf_when.q new file mode 100644 index 0000000000000..99ed09990b874 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/udf_when.q @@ -0,0 +1,10 @@ +SELECT CASE + WHEN 1=1 THEN 2 + WHEN 3=5 THEN 4 + ELSE 5 + END, + CASE + WHEN 12=11 THEN 13 + WHEN 14=10 THEN 15 + END +FROM src LIMIT 1 diff --git a/sql/hive/src/test/resources/ql/src/test/queries/positive/union.q b/sql/hive/src/test/resources/ql/src/test/queries/positive/union.q new file mode 100644 index 0000000000000..6a6b9882aee71 --- /dev/null +++ b/sql/hive/src/test/resources/ql/src/test/queries/positive/union.q @@ -0,0 +1,6 @@ +FROM ( + FROM src select src.key, src.value WHERE src.key < 100 + UNION ALL + FROM src SELECT src.* WHERE src.key > 100 +) unioninput +INSERT OVERWRITE DIRECTORY '../build/ql/test/data/warehouse/union.out' SELECT unioninput.* diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/CachedTableSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/CachedTableSuite.scala new file mode 100644 index 0000000000000..79ec1f1cde019 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/CachedTableSuite.scala @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive + +import org.apache.spark.sql.execution.SparkLogicalPlan +import org.apache.spark.sql.columnar.InMemoryColumnarTableScan +import org.apache.spark.sql.hive.execution.HiveComparisonTest + +class CachedTableSuite extends HiveComparisonTest { + TestHive.loadTestTable("src") + + test("cache table") { + TestHive.cacheTable("src") + } + + createQueryTest("read from cached table", + "SELECT * FROM src LIMIT 1", reset = false) + + test("check that table is cached and uncache") { + TestHive.table("src").queryExecution.analyzed match { + case SparkLogicalPlan(_ : InMemoryColumnarTableScan) => // Found evidence of caching + case noCache => fail(s"No cache node found in plan $noCache") + } + TestHive.uncacheTable("src") + } + + createQueryTest("read from uncached table", + "SELECT * FROM src LIMIT 1", reset = false) + + test("make sure table is uncached") { + TestHive.table("src").queryExecution.analyzed match { + case cachePlan @ SparkLogicalPlan(_ : InMemoryColumnarTableScan) => + fail(s"Table still cached after uncache: $cachePlan") + case noCache => // Table uncached successfully + } + } + + test("correct error on uncache of non-cached table") { + intercept[IllegalArgumentException] { + TestHive.uncacheTable("src") + } + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/api/java/JavaHiveSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/api/java/JavaHiveSuite.scala new file mode 100644 index 0000000000000..8137f99b227f4 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/api/java/JavaHiveSuite.scala @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.api.java + +import org.scalatest.FunSuite + +import org.apache.spark.api.java.JavaSparkContext +import org.apache.spark.sql.test.TestSQLContext +import org.apache.spark.sql.hive.TestHive + +// Implicits +import scala.collection.JavaConversions._ + +class JavaHiveSQLSuite extends FunSuite { + ignore("SELECT * FROM src") { + val javaCtx = new JavaSparkContext(TestSQLContext.sparkContext) + // There is a little trickery here to avoid instantiating two HiveContexts in the same JVM + val javaSqlCtx = new JavaHiveContext(javaCtx) { + override val sqlContext = TestHive + } + + assert( + javaSqlCtx.hql("SELECT * FROM src").collect().map(_.getInt(0)) === + TestHive.sql("SELECT * FROM src").collect().map(_.getInt(0)).toSeq) + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/BigDataBenchmarkSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/BigDataBenchmarkSuite.scala new file mode 100644 index 0000000000000..8488f23abd0fd --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/BigDataBenchmarkSuite.scala @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +import java.io.File + +import org.apache.spark.sql.hive.TestHive._ + +/** + * A set of test cases based on the big-data-benchmark. + * https://amplab.cs.berkeley.edu/benchmark/ + */ +class BigDataBenchmarkSuite extends HiveComparisonTest { + val testDataDirectory = new File("target/big-data-benchmark-testdata") + + val testTables = Seq( + TestTable( + "rankings", + s""" + |CREATE EXTERNAL TABLE rankings ( + | pageURL STRING, + | pageRank INT, + | avgDuration INT) + | ROW FORMAT DELIMITED FIELDS TERMINATED BY "," + | STORED AS TEXTFILE LOCATION "${new File(testDataDirectory, "rankings").getCanonicalPath}" + """.stripMargin.cmd), + TestTable( + "scratch", + s""" + |CREATE EXTERNAL TABLE scratch ( + | pageURL STRING, + | pageRank INT, + | avgDuration INT) + | ROW FORMAT DELIMITED FIELDS TERMINATED BY "," + | STORED AS TEXTFILE LOCATION "${new File(testDataDirectory, "scratch").getCanonicalPath}" + """.stripMargin.cmd), + TestTable( + "uservisits", + s""" + |CREATE EXTERNAL TABLE uservisits ( + | sourceIP STRING, + | destURL STRING, + | visitDate STRING, + | adRevenue DOUBLE, + | userAgent STRING, + | countryCode STRING, + | languageCode STRING, + | searchWord STRING, + | duration INT) + | ROW FORMAT DELIMITED FIELDS TERMINATED BY "," + | STORED AS TEXTFILE LOCATION "${new File(testDataDirectory, "uservisits").getCanonicalPath}" + """.stripMargin.cmd), + TestTable( + "documents", + s""" + |CREATE EXTERNAL TABLE documents (line STRING) + |STORED AS TEXTFILE + |LOCATION "${new File(testDataDirectory, "crawl").getCanonicalPath}" + """.stripMargin.cmd)) + + testTables.foreach(registerTestTable) + + if (!testDataDirectory.exists()) { + // TODO: Auto download the files on demand. + ignore("No data files found for BigDataBenchmark tests.") {} + } else { + createQueryTest("query1", + "SELECT pageURL, pageRank FROM rankings WHERE pageRank > 1") + + createQueryTest("query2", + "SELECT SUBSTR(sourceIP, 1, 10), SUM(adRevenue) FROM uservisits GROUP BY SUBSTR(sourceIP, 1, 10)") + + createQueryTest("query3", + """ + |SELECT sourceIP, + | sum(adRevenue) as totalRevenue, + | avg(pageRank) as pageRank + |FROM + | rankings R JOIN + | (SELECT sourceIP, destURL, adRevenue + | FROM uservisits UV + | WHERE UV.visitDate > "1980-01-01" + | AND UV.visitDate < "1980-04-01") + | NUV ON (R.pageURL = NUV.destURL) + |GROUP BY sourceIP + |ORDER BY totalRevenue DESC + |LIMIT 1 + """.stripMargin) + + createQueryTest("query4", + """ + |DROP TABLE IF EXISTS url_counts_partial; + |CREATE TABLE url_counts_partial AS + | SELECT TRANSFORM (line) + | USING 'python target/url_count.py' as (sourcePage, + | destPage, count) from documents; + |DROP TABLE IF EXISTS url_counts_total; + |CREATE TABLE url_counts_total AS + | SELECT SUM(count) AS totalCount, destpage + | FROM url_counts_partial GROUP BY destpage + |-- The following queries run, but generate different results in HIVE likely because the UDF is not deterministic + |-- given different input splits. + |-- SELECT CAST(SUM(count) AS INT) FROM url_counts_partial + |-- SELECT COUNT(*) FROM url_counts_partial + |-- SELECT * FROM url_counts_partial + |-- SELECT * FROM url_counts_total + """.stripMargin) + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/ConcurrentHiveSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/ConcurrentHiveSuite.scala new file mode 100644 index 0000000000000..ac87f2cb10d12 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/ConcurrentHiveSuite.scala @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +import org.apache.spark.{SparkConf, SparkContext} +import org.apache.spark.sql.hive.TestHiveContext +import org.scalatest.{BeforeAndAfterAll, FunSuite} + +class ConcurrentHiveSuite extends FunSuite with BeforeAndAfterAll { + ignore("multiple instances not supported") { + test("Multiple Hive Instances") { + (1 to 10).map { i => + val ts = + new TestHiveContext(new SparkContext("local", s"TestSQLContext$i", new SparkConf())) + ts.executeSql("SHOW TABLES").toRdd.collect() + ts.executeSql("SELECT * FROM src").toRdd.collect() + ts.executeSql("SHOW TABLES").toRdd.collect() + } + } + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala new file mode 100644 index 0000000000000..3cc4562a88d66 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala @@ -0,0 +1,378 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +import java.io._ + +import org.apache.spark.sql.Logging +import org.apache.spark.sql.catalyst.plans.logical.{ExplainCommand, NativeCommand} +import org.apache.spark.sql.catalyst.util._ +import org.apache.spark.sql.execution.Sort +import org.scalatest.{BeforeAndAfterAll, FunSuite, GivenWhenThen} +import org.apache.spark.sql.hive.TestHive + +/** + * Allows the creations of tests that execute the same query against both hive + * and catalyst, comparing the results. + * + * The "golden" results from Hive are cached in an retrieved both from the classpath and + * [[answerCache]] to speed up testing. + * + * See the documentation of public vals in this class for information on how test execution can be + * configured using system properties. + */ +abstract class HiveComparisonTest + extends FunSuite with BeforeAndAfterAll with GivenWhenThen with Logging { + + /** + * When set, any cache files that result in test failures will be deleted. Used when the test + * harness or hive have been updated thus requiring new golden answers to be computed for some + * tests. Also prevents the classpath being used when looking for golden answers as these are + * usually stale. + */ + val recomputeCache = System.getProperty("spark.hive.recomputeCache") != null + + protected val shardRegEx = "(\\d+):(\\d+)".r + /** + * Allows multiple JVMs to be run in parallel, each responsible for portion of all test cases. + * Format `shardId:numShards`. Shard ids should be zero indexed. E.g. -Dspark.hive.testshard=0:4. + */ + val shardInfo = Option(System.getProperty("spark.hive.shard")).map { + case shardRegEx(id, total) => (id.toInt, total.toInt) + } + + protected val targetDir = new File("target") + + /** + * When set, this comma separated list is defines directories that contain the names of test cases + * that should be skipped. + * + * For example when `-Dspark.hive.skiptests=passed,hiveFailed` is specified and test cases listed + * in [[passedDirectory]] or [[hiveFailedDirectory]] will be skipped. + */ + val skipDirectories = + Option(System.getProperty("spark.hive.skiptests")) + .toSeq + .flatMap(_.split(",")) + .map(name => new File(targetDir, s"$suiteName.$name")) + + val runOnlyDirectories = + Option(System.getProperty("spark.hive.runonlytests")) + .toSeq + .flatMap(_.split(",")) + .map(name => new File(targetDir, s"$suiteName.$name")) + + /** The local directory with cached golden answer will be stored. */ + protected val answerCache = new File("src/test/resources/golden") + if (!answerCache.exists) { + answerCache.mkdir() + } + + /** The [[ClassLoader]] that contains test dependencies. Used to look for golden answers. */ + protected val testClassLoader = this.getClass.getClassLoader + + /** Directory containing a file for each test case that passes. */ + val passedDirectory = new File(targetDir, s"$suiteName.passed") + if (!passedDirectory.exists()) { + passedDirectory.mkdir() // Not atomic! + } + + /** Directory containing output of tests that fail to execute with Catalyst. */ + val failedDirectory = new File(targetDir, s"$suiteName.failed") + if (!failedDirectory.exists()) { + failedDirectory.mkdir() // Not atomic! + } + + /** Directory containing output of tests where catalyst produces the wrong answer. */ + val wrongDirectory = new File(targetDir, s"$suiteName.wrong") + if (!wrongDirectory.exists()) { + wrongDirectory.mkdir() // Not atomic! + } + + /** Directory containing output of tests where we fail to generate golden output with Hive. */ + val hiveFailedDirectory = new File(targetDir, s"$suiteName.hiveFailed") + if (!hiveFailedDirectory.exists()) { + hiveFailedDirectory.mkdir() // Not atomic! + } + + /** All directories that contain per-query output files */ + val outputDirectories = Seq( + passedDirectory, + failedDirectory, + wrongDirectory, + hiveFailedDirectory) + + protected val cacheDigest = java.security.MessageDigest.getInstance("MD5") + protected def getMd5(str: String): String = { + val digest = java.security.MessageDigest.getInstance("MD5") + digest.update(str.getBytes) + new java.math.BigInteger(1, digest.digest).toString(16) + } + + protected def prepareAnswer( + hiveQuery: TestHive.type#HiveQLQueryExecution, + answer: Seq[String]): Seq[String] = { + val orderedAnswer = hiveQuery.logical match { + // Clean out non-deterministic time schema info. + case _: NativeCommand => answer.filterNot(nonDeterministicLine).filterNot(_ == "") + case _: ExplainCommand => answer + case _ => + // TODO: Really we only care about the final total ordering here... + val isOrdered = hiveQuery.executedPlan.collect { + case s @ Sort(_, global, _) if global => s + }.nonEmpty + // If the query results aren't sorted, then sort them to ensure deterministic answers. + if (!isOrdered) answer.sorted else answer + } + orderedAnswer.map(cleanPaths) + } + + // TODO: Instead of filtering we should clean to avoid accidentally ignoring actual results. + lazy val nonDeterministicLineIndicators = Seq( + "CreateTime", + "transient_lastDdlTime", + "grantTime", + "lastUpdateTime", + "last_modified_time", + "Owner:", + // The following are hive specific schema parameters which we do not need to match exactly. + "numFiles", + "numRows", + "rawDataSize", + "totalSize", + "totalNumberFiles", + "maxFileSize", + "minFileSize" + ) + protected def nonDeterministicLine(line: String) = + nonDeterministicLineIndicators.map(line contains _).reduceLeft(_||_) + + /** + * Removes non-deterministic paths from `str` so cached answers will compare correctly. + */ + protected def cleanPaths(str: String): String = { + str.replaceAll("file:\\/.*\\/", "") + } + + val installHooksCommand = "(?i)SET.*hooks".r + def createQueryTest(testCaseName: String, sql: String, reset: Boolean = true) { + // If test sharding is enable, skip tests that are not in the correct shard. + shardInfo.foreach { + case (shardId, numShards) if testCaseName.hashCode % numShards != shardId => return + case (shardId, _) => logger.debug(s"Shard $shardId includes test '$testCaseName'") + } + + // Skip tests found in directories specified by user. + skipDirectories + .map(new File(_, testCaseName)) + .filter(_.exists) + .foreach(_ => return) + + // If runonlytests is set, skip this test unless we find a file in one of the specified + // directories. + val runIndicators = + runOnlyDirectories + .map(new File(_, testCaseName)) + .filter(_.exists) + if (runOnlyDirectories.nonEmpty && runIndicators.isEmpty) { + logger.debug( + s"Skipping test '$testCaseName' not found in ${runOnlyDirectories.map(_.getCanonicalPath)}") + return + } + + test(testCaseName) { + logger.debug(s"=== HIVE TEST: $testCaseName ===") + + // Clear old output for this testcase. + outputDirectories.map(new File(_, testCaseName)).filter(_.exists()).foreach(_.delete()) + + val allQueries = sql.split("(?<=[^\\\\]);").map(_.trim).filterNot(q => q == "").toSeq + + // TODO: DOCUMENT UNSUPPORTED + val queryList = + allQueries + // In hive, setting the hive.outerjoin.supports.filters flag to "false" essentially tells + // the system to return the wrong answer. Since we have no intention of mirroring their + // previously broken behavior we simply filter out changes to this setting. + .filterNot(_ contains "hive.outerjoin.supports.filters") + + if (allQueries != queryList) + logger.warn(s"Simplifications made on unsupported operations for test $testCaseName") + + lazy val consoleTestCase = { + val quotes = "\"\"\"" + queryList.zipWithIndex.map { + case (query, i) => + s""" + |val q$i = $quotes$query$quotes.q + |q$i.stringResult() + """.stripMargin + }.mkString("\n== Console version of this test ==\n", "\n", "\n") + } + + try { + // MINOR HACK: You must run a query before calling reset the first time. + TestHive.hql("SHOW TABLES") + if (reset) { TestHive.reset() } + + val hiveCacheFiles = queryList.zipWithIndex.map { + case (queryString, i) => + val cachedAnswerName = s"$testCaseName-$i-${getMd5(queryString)}" + new File(answerCache, cachedAnswerName) + } + + val hiveCachedResults = hiveCacheFiles.flatMap { cachedAnswerFile => + logger.debug(s"Looking for cached answer file $cachedAnswerFile.") + if (cachedAnswerFile.exists) { + Some(fileToString(cachedAnswerFile)) + } else { + logger.debug(s"File $cachedAnswerFile not found") + None + } + }.map { + case "" => Nil + case "\n" => Seq("") + case other => other.split("\n").toSeq + } + + val hiveResults: Seq[Seq[String]] = + if (hiveCachedResults.size == queryList.size) { + logger.info(s"Using answer cache for test: $testCaseName") + hiveCachedResults + } else { + + val hiveQueries = queryList.map(new TestHive.HiveQLQueryExecution(_)) + // Make sure we can at least parse everything before attempting hive execution. + hiveQueries.foreach(_.logical) + val computedResults = (queryList.zipWithIndex, hiveQueries, hiveCacheFiles).zipped.map { + case ((queryString, i), hiveQuery, cachedAnswerFile)=> + try { + // Hooks often break the harness and don't really affect our test anyway, don't + // even try running them. + if (installHooksCommand.findAllMatchIn(queryString).nonEmpty) + sys.error("hive exec hooks not supported for tests.") + + logger.warn(s"Running query ${i+1}/${queryList.size} with hive.") + // Analyze the query with catalyst to ensure test tables are loaded. + val answer = hiveQuery.analyzed match { + case _: ExplainCommand => Nil // No need to execute EXPLAIN queries as we don't check the output. + case _ => TestHive.runSqlHive(queryString) + } + + // We need to add a new line to non-empty answers so we can differentiate Seq() + // from Seq(""). + stringToFile( + cachedAnswerFile, answer.mkString("\n") + (if (answer.nonEmpty) "\n" else "")) + answer + } catch { + case e: Exception => + val errorMessage = + s""" + |Failed to generate golden answer for query: + |Error: ${e.getMessage} + |${stackTraceToString(e)} + |$queryString + |$consoleTestCase + """.stripMargin + stringToFile( + new File(hiveFailedDirectory, testCaseName), + errorMessage + consoleTestCase) + fail(errorMessage) + } + }.toSeq + if (reset) { TestHive.reset() } + + computedResults + } + + // Run w/ catalyst + val catalystResults = queryList.zip(hiveResults).map { case (queryString, hive) => + val query = new TestHive.HiveQLQueryExecution(queryString) + try { (query, prepareAnswer(query, query.stringResult())) } catch { + case e: Exception => + val errorMessage = + s""" + |Failed to execute query using catalyst: + |Error: ${e.getMessage} + |${stackTraceToString(e)} + |$query + |== HIVE - ${hive.size} row(s) == + |${hive.mkString("\n")} + | + |$consoleTestCase + """.stripMargin + stringToFile(new File(failedDirectory, testCaseName), errorMessage + consoleTestCase) + fail(errorMessage) + } + }.toSeq + + (queryList, hiveResults, catalystResults).zipped.foreach { + case (query, hive, (hiveQuery, catalyst)) => + // Check that the results match unless its an EXPLAIN query. + val preparedHive = prepareAnswer(hiveQuery,hive) + + if ((!hiveQuery.logical.isInstanceOf[ExplainCommand]) && preparedHive != catalyst) { + + val hivePrintOut = s"== HIVE - ${hive.size} row(s) ==" +: preparedHive + val catalystPrintOut = s"== CATALYST - ${catalyst.size} row(s) ==" +: catalyst + + val resultComparison = sideBySide(hivePrintOut, catalystPrintOut).mkString("\n") + + if (recomputeCache) { + logger.warn(s"Clearing cache files for failed test $testCaseName") + hiveCacheFiles.foreach(_.delete()) + } + + val errorMessage = + s""" + |Results do not match for $testCaseName: + |$hiveQuery\n${hiveQuery.analyzed.output.map(_.name).mkString("\t")} + |$resultComparison + """.stripMargin + + stringToFile(new File(wrongDirectory, testCaseName), errorMessage + consoleTestCase) + fail(errorMessage) + } + } + + // Touch passed file. + new FileOutputStream(new File(passedDirectory, testCaseName)).close() + } catch { + case tf: org.scalatest.exceptions.TestFailedException => throw tf + case originalException: Exception => + if (System.getProperty("spark.hive.canarytest") != null) { + // When we encounter an error we check to see if the environment is still okay by running a simple query. + // If this fails then we halt testing since something must have gone seriously wrong. + try { + new TestHive.HiveQLQueryExecution("SELECT key FROM src").stringResult() + TestHive.runSqlHive("SELECT key FROM src") + } catch { + case e: Exception => + logger.error(s"FATAL ERROR: Canary query threw $e This implies that the testing environment has likely been corrupted.") + // The testing setup traps exits so wait here for a long time so the developer can see when things started + // to go wrong. + Thread.sleep(1000000) + } + } + + // If the canary query didn't fail then the environment is still okay, so just throw the original exception. + throw originalException + } + } + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala new file mode 100644 index 0000000000000..f76e16bc1afc5 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala @@ -0,0 +1,781 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +import org.apache.spark.sql.hive.TestHive + +/** + * Runs the test cases that are included in the hive distribution. + */ +class HiveCompatibilitySuite extends HiveQueryFileTest { + // TODO: bundle in jar files... get from classpath + lazy val hiveQueryDir = TestHive.getHiveFile("ql/src/test/queries/clientpositive") + def testCases = hiveQueryDir.listFiles.map(f => f.getName.stripSuffix(".q") -> f) + + /** A list of tests deemed out of scope currently and thus completely disregarded. */ + override def blackList = Seq( + // These tests use hooks that are not on the classpath and thus break all subsequent execution. + "hook_order", + "hook_context", + "mapjoin_hook", + "multi_sahooks", + "overridden_confs", + "query_properties", + "sample10", + "updateAccessTime", + "index_compact_binary_search", + "bucket_num_reducers", + "column_access_stats", + "concatenate_inherit_table_location", + "describe_pretty", + "describe_syntax", + "orc_ends_with_nulls", + + // Setting a default property does not seem to get reset and thus changes the answer for many + // subsequent tests. + "create_default_prop", + + // User/machine specific test answers, breaks the caching mechanism. + "authorization_3", + "authorization_5", + "keyword_1", + "misc_json", + "create_like_tbl_props", + "load_overwrite", + "alter_table_serde2", + "alter_table_not_sorted", + "alter_skewed_table", + "alter_partition_clusterby_sortby", + "alter_merge", + "alter_concatenate_indexed_table", + "protectmode2", + "describe_table", + "describe_comment_nonascii", + "udf5", + "udf_java_method", + "create_merge_compressed", + + // Weird DDL differences result in failures on jenkins. + "create_like2", + "create_view_translate", + "partitions_json", + + // Timezone specific test answers. + "udf_unix_timestamp", + "udf_to_unix_timestamp", + + // Cant run without local map/reduce. + "index_auto_update", + "index_auto_self_join", + "index_stale.*", + "index_compression", + "index_bitmap_compression", + "index_auto_multiple", + "index_auto_mult_tables_compact", + "index_auto_mult_tables", + "index_auto_file_format", + "index_auth", + "index_auto_empty", + "index_auto_partitioned", + "index_auto_unused", + "index_bitmap_auto_partitioned", + "ql_rewrite_gbtoidx", + "stats1.*", + "stats20", + "alter_merge_stats", + + // Hive seems to think 1.0 > NaN = true && 1.0 < NaN = false... which is wrong. + // http://stackoverflow.com/a/1573715 + "ops_comparison", + + // Tests that seems to never complete on hive... + "skewjoin", + "database", + + // These tests fail and and exit the JVM. + "auto_join18_multi_distinct", + "join18_multi_distinct", + "input44", + "input42", + "input_dfs", + "metadata_export_drop", + "repair", + + // Uses a serde that isn't on the classpath... breaks other tests. + "bucketizedhiveinputformat", + + // Avro tests seem to change the output format permanently thus breaking the answer cache, until + // we figure out why this is the case let just ignore all of avro related tests. + ".*avro.*", + + // Unique joins are weird and will require a lot of hacks (see comments in hive parser). + "uniquejoin", + + // Hive seems to get the wrong answer on some outer joins. MySQL agrees with catalyst. + "auto_join29", + + // No support for multi-alias i.e. udf as (e1, e2, e3). + "allcolref_in_udf", + + // No support for TestSerDe (not published afaik) + "alter1", + "input16", + + // No support for unpublished test udfs. + "autogen_colalias", + + // Hive does not support buckets. + ".*bucket.*", + + // No window support yet + ".*window.*", + + // Fails in hive with authorization errors. + "alter_rename_partition_authorization", + "authorization.*", + + // Hadoop version specific tests + "archive_corrupt", + + // No support for case sensitivity is resolution using hive properties atm. + "case_sensitivity" + ) + + /** + * The set of tests that are believed to be working in catalyst. Tests not on whiteList or + * blacklist are implicitly marked as ignored. + */ + override def whiteList = Seq( + "add_part_exist", + "add_partition_no_whitelist", + "add_partition_with_whitelist", + "alias_casted_column", + "alter2", + "alter3", + "alter4", + "alter5", + "alter_index", + "alter_merge_2", + "alter_partition_format_loc", + "alter_partition_protect_mode", + "alter_partition_with_whitelist", + "alter_rename_partition", + "alter_table_serde", + "alter_varchar1", + "alter_varchar2", + "alter_view_as_select", + "ambiguous_col", + "auto_join0", + "auto_join1", + "auto_join10", + "auto_join11", + "auto_join12", + "auto_join13", + "auto_join14", + "auto_join14_hadoop20", + "auto_join15", + "auto_join17", + "auto_join18", + "auto_join19", + "auto_join2", + "auto_join20", + "auto_join21", + "auto_join22", + "auto_join23", + "auto_join24", + "auto_join25", + "auto_join26", + "auto_join27", + "auto_join28", + "auto_join3", + "auto_join30", + "auto_join31", + "auto_join32", + "auto_join4", + "auto_join5", + "auto_join6", + "auto_join7", + "auto_join8", + "auto_join9", + "auto_join_filters", + "auto_join_nulls", + "auto_join_reordering_values", + "auto_smb_mapjoin_14", + "auto_sortmerge_join_1", + "auto_sortmerge_join_10", + "auto_sortmerge_join_11", + "auto_sortmerge_join_12", + "auto_sortmerge_join_13", + "auto_sortmerge_join_14", + "auto_sortmerge_join_15", + "auto_sortmerge_join_2", + "auto_sortmerge_join_3", + "auto_sortmerge_join_4", + "auto_sortmerge_join_5", + "auto_sortmerge_join_6", + "auto_sortmerge_join_7", + "auto_sortmerge_join_8", + "auto_sortmerge_join_9", + "binary_constant", + "binarysortable_1", + "cast1", + "cluster", + "combine1", + "compute_stats_binary", + "compute_stats_boolean", + "compute_stats_double", + "compute_stats_empty_table", + "compute_stats_long", + "compute_stats_string", + "compute_stats_table", + "convert_enum_to_string", + "correlationoptimizer11", + "correlationoptimizer15", + "correlationoptimizer2", + "correlationoptimizer3", + "correlationoptimizer4", + "correlationoptimizer6", + "correlationoptimizer7", + "correlationoptimizer8", + "count", + "cp_mj_rc", + "create_insert_outputformat", + "create_like_view", + "create_nested_type", + "create_skewed_table1", + "create_struct_table", + "ct_case_insensitive", + "database_location", + "database_properties", + "decimal_4", + "decimal_join", + "default_partition_name", + "delimiter", + "desc_non_existent_tbl", + "describe_comment_indent", + "describe_database_json", + "describe_formatted_view_partitioned", + "describe_formatted_view_partitioned_json", + "describe_table_json", + "diff_part_input_formats", + "disable_file_format_check", + "drop_function", + "drop_index", + "drop_partitions_filter", + "drop_partitions_filter2", + "drop_partitions_filter3", + "drop_partitions_ignore_protection", + "drop_table", + "drop_table2", + "drop_view", + "escape_clusterby1", + "escape_distributeby1", + "escape_orderby1", + "escape_sortby1", + "fetch_aggregation", + "filter_join_breaktask", + "filter_join_breaktask2", + "groupby1", + "groupby11", + "groupby1_map", + "groupby1_map_nomap", + "groupby1_map_skew", + "groupby1_noskew", + "groupby4", + "groupby4_map", + "groupby4_map_skew", + "groupby4_noskew", + "groupby5", + "groupby5_map", + "groupby5_map_skew", + "groupby5_noskew", + "groupby6", + "groupby6_map", + "groupby6_map_skew", + "groupby6_noskew", + "groupby7", + "groupby7_map", + "groupby7_map_multi_single_reducer", + "groupby7_map_skew", + "groupby7_noskew", + "groupby8", + "groupby8_map", + "groupby8_map_skew", + "groupby8_noskew", + "groupby9", + "groupby_distinct_samekey", + "groupby_multi_insert_common_distinct", + "groupby_multi_single_reducer2", + "groupby_mutli_insert_common_distinct", + "groupby_neg_float", + "groupby_sort_10", + "groupby_sort_2", + "groupby_sort_3", + "groupby_sort_4", + "groupby_sort_5", + "groupby_sort_6", + "groupby_sort_7", + "groupby_sort_8", + "groupby_sort_9", + "groupby_sort_test_1", + "implicit_cast1", + "innerjoin", + "inoutdriver", + "input", + "input0", + "input11", + "input11_limit", + "input12", + "input12_hadoop20", + "input14", + "input19", + "input1_limit", + "input21", + "input22", + "input23", + "input24", + "input25", + "input26", + "input28", + "input2_limit", + "input40", + "input41", + "input4_cb_delim", + "input6", + "input7", + "input8", + "input9", + "inputddl4", + "inputddl7", + "inputddl8", + "input_limit", + "input_part0", + "input_part1", + "input_part10", + "input_part10_win", + "input_part2", + "input_part3", + "input_part4", + "input_part5", + "input_part6", + "input_part7", + "input_part8", + "input_part9", + "input_testsequencefile", + "insert1", + "insert2_overwrite_partitions", + "insert_compressed", + "join0", + "join1", + "join10", + "join11", + "join12", + "join13", + "join14", + "join14_hadoop20", + "join15", + "join16", + "join17", + "join18", + "join19", + "join_1to1", + "join2", + "join20", + "join21", + "join22", + "join23", + "join24", + "join25", + "join26", + "join27", + "join28", + "join29", + "join3", + "join30", + "join31", + "join32", + "join32_lessSize", + "join33", + "join34", + "join35", + "join36", + "join37", + "join38", + "join39", + "join4", + "join40", + "join41", + "join5", + "join6", + "join7", + "join8", + "join9", + "join_array", + "join_casesensitive", + "join_empty", + "join_filters", + "join_hive_626", + "join_map_ppr", + "join_nulls", + "join_rc", + "join_reorder2", + "join_reorder3", + "join_reorder4", + "join_star", + "join_view", + "lateral_view_cp", + "lateral_view_ppd", + "lineage1", + "literal_double", + "literal_ints", + "literal_string", + "load_dyn_part7", + "load_file_with_space_in_the_name", + "loadpart1", + "louter_join_ppr", + "mapjoin_distinct", + "mapjoin_mapjoin", + "mapjoin_subquery", + "mapjoin_subquery2", + "mapjoin_test_outer", + "mapreduce1", + "mapreduce2", + "mapreduce3", + "mapreduce4", + "mapreduce5", + "mapreduce6", + "mapreduce7", + "mapreduce8", + "merge1", + "merge2", + "mergejoins", + "mergejoins_mixed", + "multigroupby_singlemr", + "multi_insert_gby", + "multi_insert_gby3", + "multi_insert_lateral_view", + "multi_join_union", + "multiMapJoin1", + "multiMapJoin2", + "noalias_subq1", + "nomore_ambiguous_table_col", + "nonblock_op_deduplicate", + "notable_alias1", + "notable_alias2", + "nullgroup", + "nullgroup2", + "nullgroup3", + "nullgroup4", + "nullgroup4_multi_distinct", + "nullgroup5", + "nullinput", + "nullinput2", + "nullscript", + "optional_outer", + "orc_dictionary_threshold", + "orc_empty_files", + "order", + "order2", + "outer_join_ppr", + "parallel", + "parenthesis_star_by", + "partcols1", + "part_inherit_tbl_props", + "part_inherit_tbl_props_empty", + "part_inherit_tbl_props_with_star", + "partition_schema1", + "partition_serde_format", + "partition_varchar1", + "partition_wise_fileformat4", + "partition_wise_fileformat5", + "partition_wise_fileformat6", + "partition_wise_fileformat7", + "partition_wise_fileformat9", + "plan_json", + "ppd1", + "ppd2", + "ppd_clusterby", + "ppd_constant_expr", + "ppd_constant_where", + "ppd_gby", + "ppd_gby2", + "ppd_gby_join", + "ppd_join", + "ppd_join2", + "ppd_join3", + "ppd_join_filter", + "ppd_outer_join1", + "ppd_outer_join2", + "ppd_outer_join3", + "ppd_outer_join4", + "ppd_outer_join5", + "ppd_random", + "ppd_repeated_alias", + "ppd_transform", + "ppd_udf_col", + "ppd_union", + "ppr_allchildsarenull", + "ppr_pushdown", + "ppr_pushdown2", + "ppr_pushdown3", + "progress_1", + "protectmode", + "push_or", + "query_with_semi", + "quote1", + "quote2", + "rcfile_columnar", + "rcfile_lazydecompress", + "rcfile_null_value", + "rcfile_toleratecorruptions", + "rcfile_union", + "reduce_deduplicate", + "reduce_deduplicate_exclude_gby", + "reduce_deduplicate_exclude_join", + "reducesink_dedup", + "rename_column", + "router_join_ppr", + "select_as_omitted", + "select_unquote_and", + "select_unquote_not", + "select_unquote_or", + "serde_reported_schema", + "set_variable_sub", + "show_describe_func_quotes", + "show_functions", + "show_partitions", + "skewjoinopt13", + "skewjoinopt18", + "skewjoinopt9", + "smb_mapjoin_1", + "smb_mapjoin_10", + "smb_mapjoin_13", + "smb_mapjoin_14", + "smb_mapjoin_15", + "smb_mapjoin_16", + "smb_mapjoin_17", + "smb_mapjoin_2", + "smb_mapjoin_21", + "smb_mapjoin_25", + "smb_mapjoin_3", + "smb_mapjoin_4", + "smb_mapjoin_5", + "smb_mapjoin_6", + "smb_mapjoin_7", + "smb_mapjoin_8", + "sort", + "sort_merge_join_desc_1", + "sort_merge_join_desc_2", + "sort_merge_join_desc_3", + "sort_merge_join_desc_4", + "sort_merge_join_desc_5", + "sort_merge_join_desc_6", + "sort_merge_join_desc_7", + "stats0", + "stats_aggregator_error_1", + "stats_empty_partition", + "stats_publisher_error_1", + "subq2", + "tablename_with_select", + "timestamp_comparison", + "touch", + "transform_ppr1", + "transform_ppr2", + "type_cast_1", + "type_widening", + "udaf_collect_set", + "udaf_corr", + "udaf_covar_pop", + "udaf_covar_samp", + "udaf_histogram_numeric", + "udf_10_trims", + "udf2", + "udf6", + "udf8", + "udf9", + "udf_abs", + "udf_acos", + "udf_add", + "udf_array", + "udf_array_contains", + "udf_ascii", + "udf_asin", + "udf_atan", + "udf_avg", + "udf_bigint", + "udf_bin", + "udf_bitmap_and", + "udf_bitmap_empty", + "udf_bitmap_or", + "udf_bitwise_and", + "udf_bitwise_not", + "udf_bitwise_or", + "udf_bitwise_xor", + "udf_boolean", + "udf_case", + "udf_ceil", + "udf_ceiling", + "udf_concat", + "udf_concat_insert2", + "udf_concat_ws", + "udf_conv", + "udf_cos", + "udf_count", + "udf_date_add", + "udf_datediff", + "udf_date_sub", + "udf_day", + "udf_dayofmonth", + "udf_degrees", + "udf_div", + "udf_double", + "udf_E", + "udf_exp", + "udf_field", + "udf_find_in_set", + "udf_float", + "udf_floor", + "udf_format_number", + "udf_from_unixtime", + "udf_greaterthan", + "udf_greaterthanorequal", + "udf_hex", + "udf_if", + "udf_index", + "udf_int", + "udf_isnotnull", + "udf_isnull", + "udf_java_method", + "udf_lcase", + "udf_length", + "udf_lessthan", + "udf_lessthanorequal", + "udf_like", + "udf_ln", + "udf_log", + "udf_log10", + "udf_log2", + "udf_lower", + "udf_lpad", + "udf_ltrim", + "udf_map", + "udf_minute", + "udf_modulo", + "udf_month", + "udf_negative", + "udf_not", + "udf_notequal", + "udf_notop", + "udf_nvl", + "udf_or", + "udf_parse_url", + "udf_PI", + "udf_positive", + "udf_pow", + "udf_power", + "udf_radians", + "udf_rand", + "udf_regexp", + "udf_regexp_extract", + "udf_regexp_replace", + "udf_repeat", + "udf_rlike", + "udf_round", + "udf_round_3", + "udf_rpad", + "udf_rtrim", + "udf_second", + "udf_sign", + "udf_sin", + "udf_smallint", + "udf_space", + "udf_sqrt", + "udf_std", + "udf_stddev", + "udf_stddev_pop", + "udf_stddev_samp", + "udf_string", + "udf_substring", + "udf_subtract", + "udf_sum", + "udf_tan", + "udf_tinyint", + "udf_to_byte", + "udf_to_date", + "udf_to_double", + "udf_to_float", + "udf_to_long", + "udf_to_short", + "udf_translate", + "udf_trim", + "udf_ucase", + "udf_upper", + "udf_variance", + "udf_var_pop", + "udf_var_samp", + "udf_weekofyear", + "udf_when", + "udf_xpath", + "udf_xpath_boolean", + "udf_xpath_double", + "udf_xpath_float", + "udf_xpath_int", + "udf_xpath_long", + "udf_xpath_short", + "udf_xpath_string", + "unicode_notation", + "union10", + "union11", + "union13", + "union14", + "union15", + "union16", + "union17", + "union18", + "union19", + "union2", + "union20", + "union22", + "union23", + "union24", + "union26", + "union27", + "union28", + "union29", + "union3", + "union30", + "union31", + "union33", + "union34", + "union4", + "union5", + "union6", + "union7", + "union8", + "union9", + "union_lateralview", + "union_ppr", + "union_remove_11", + "union_remove_3", + "union_remove_6", + "union_script", + "varchar_2", + "varchar_join1", + "varchar_union1" + ) +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQueryFileTest.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQueryFileTest.scala new file mode 100644 index 0000000000000..50ab71a9003d3 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQueryFileTest.scala @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +import java.io.File + +import org.apache.spark.sql.catalyst.util._ + +/** + * A framework for running the query tests that are listed as a set of text files. + * + * TestSuites that derive from this class must provide a map of testCaseName -> testCaseFiles that should be included. + * Additionally, there is support for whitelisting and blacklisting tests as development progresses. + */ +abstract class HiveQueryFileTest extends HiveComparisonTest { + /** A list of tests deemed out of scope and thus completely disregarded */ + def blackList: Seq[String] = Nil + + /** + * The set of tests that are believed to be working in catalyst. Tests not in whiteList + * blacklist are implicitly marked as ignored. + */ + def whiteList: Seq[String] = ".*" :: Nil + + def testCases: Seq[(String, File)] + + val runAll = + !(System.getProperty("spark.hive.alltests") == null) || + runOnlyDirectories.nonEmpty || + skipDirectories.nonEmpty + + val whiteListProperty = "spark.hive.whitelist" + // Allow the whiteList to be overridden by a system property + val realWhiteList = + Option(System.getProperty(whiteListProperty)).map(_.split(",").toSeq).getOrElse(whiteList) + + // Go through all the test cases and add them to scala test. + testCases.sorted.foreach { + case (testCaseName, testCaseFile) => + if (blackList.map(_.r.pattern.matcher(testCaseName).matches()).reduceLeft(_||_)) { + logger.debug(s"Blacklisted test skipped $testCaseName") + } else if (realWhiteList.map(_.r.pattern.matcher(testCaseName).matches()).reduceLeft(_||_) || runAll) { + // Build a test case and submit it to scala test framework... + val queriesString = fileToString(testCaseFile) + createQueryTest(testCaseName, queriesString) + } else { + // Only output warnings for the built in whitelist as this clutters the output when the user + // trying to execute a single test from the commandline. + if(System.getProperty(whiteListProperty) == null && !runAll) + ignore(testCaseName) {} + } + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala new file mode 100644 index 0000000000000..a09667ac84b01 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +import org.apache.spark.sql.hive.TestHive._ + +/** + * A set of test cases expressed in Hive QL that are not covered by the tests included in the hive distribution. + */ +class HiveQuerySuite extends HiveComparisonTest { + + test("Query expressed in SQL") { + assert(sql("SELECT 1").collect() === Array(Seq(1))) + } + + test("Query expressed in HiveQL") { + hql("FROM src SELECT key").collect() + hiveql("FROM src SELECT key").collect() + } + + createQueryTest("Simple Average", + "SELECT AVG(key) FROM src") + + createQueryTest("Simple Average + 1", + "SELECT AVG(key) + 1.0 FROM src") + + createQueryTest("Simple Average + 1 with group", + "SELECT AVG(key) + 1.0, value FROM src group by value") + + createQueryTest("string literal", + "SELECT 'test' FROM src") + + createQueryTest("Escape sequences", + """SELECT key, '\\\t\\' FROM src WHERE key = 86""") + + createQueryTest("IgnoreExplain", + """EXPLAIN SELECT key FROM src""") + + createQueryTest("trivial join where clause", + "SELECT * FROM src a JOIN src b WHERE a.key = b.key") + + createQueryTest("trivial join ON clause", + "SELECT * FROM src a JOIN src b ON a.key = b.key") + + createQueryTest("small.cartesian", + "SELECT a.key, b.key FROM (SELECT key FROM src WHERE key < 1) a JOIN (SELECT key FROM src WHERE key = 2) b") + + createQueryTest("length.udf", + "SELECT length(\"test\") FROM src LIMIT 1") + + createQueryTest("partitioned table scan", + "SELECT ds, hr, key, value FROM srcpart") + + createQueryTest("hash", + "SELECT hash('test') FROM src LIMIT 1") + + createQueryTest("create table as", + """ + |CREATE TABLE createdtable AS SELECT * FROM src; + |SELECT * FROM createdtable + """.stripMargin) + + createQueryTest("create table as with db name", + """ + |CREATE DATABASE IF NOT EXISTS testdb; + |CREATE TABLE testdb.createdtable AS SELECT * FROM default.src; + |SELECT * FROM testdb.createdtable; + |DROP DATABASE IF EXISTS testdb CASCADE + """.stripMargin) + + createQueryTest("insert table with db name", + """ + |CREATE DATABASE IF NOT EXISTS testdb; + |CREATE TABLE testdb.createdtable like default.src; + |INSERT INTO TABLE testdb.createdtable SELECT * FROM default.src; + |SELECT * FROM testdb.createdtable; + |DROP DATABASE IF EXISTS testdb CASCADE + """.stripMargin) + + createQueryTest("insert into and insert overwrite", + """ + |CREATE TABLE createdtable like src; + |INSERT INTO TABLE createdtable SELECT * FROM src; + |INSERT INTO TABLE createdtable SELECT * FROM src1; + |SELECT * FROM createdtable; + |INSERT OVERWRITE TABLE createdtable SELECT * FROM src WHERE key = 86; + |SELECT * FROM createdtable; + """.stripMargin) + + createQueryTest("transform", + "SELECT TRANSFORM (key) USING 'cat' AS (tKey) FROM src") + + createQueryTest("LIKE", + "SELECT * FROM src WHERE value LIKE '%1%'") + + createQueryTest("DISTINCT", + "SELECT DISTINCT key, value FROM src") + + ignore("empty aggregate input") { + createQueryTest("empty aggregate input", + "SELECT SUM(key) FROM (SELECT * FROM src LIMIT 0) a") + } + + createQueryTest("lateral view1", + "SELECT tbl.* FROM src LATERAL VIEW explode(array(1,2)) tbl as a") + + createQueryTest("lateral view2", + "SELECT * FROM src LATERAL VIEW explode(array(1,2)) tbl") + + + createQueryTest("lateral view3", + "FROM src SELECT key, D.* lateral view explode(array(key+3, key+4)) D as CX") + + createQueryTest("lateral view4", + """ + |create table src_lv1 (key string, value string); + |create table src_lv2 (key string, value string); + | + |FROM src + |insert overwrite table src_lv1 SELECT key, D.* lateral view explode(array(key+3, key+4)) D as CX + |insert overwrite table src_lv2 SELECT key, D.* lateral view explode(array(key+3, key+4)) D as CX + """.stripMargin) + + createQueryTest("lateral view5", + "FROM src SELECT explode(array(key+3, key+4))") + + createQueryTest("lateral view6", + "SELECT * FROM src LATERAL VIEW explode(map(key+3,key+4)) D as k, v") + + test("sampling") { + hql("SELECT * FROM src TABLESAMPLE(0.1 PERCENT) s") + } + + test("SchemaRDD toString") { + hql("SHOW TABLES").toString + hql("SELECT * FROM src").toString + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveResolutionSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveResolutionSuite.scala new file mode 100644 index 0000000000000..8883e5b16d4da --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveResolutionSuite.scala @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +import org.apache.spark.sql.hive.TestHive +import org.apache.spark.sql.hive.TestHive._ + +case class Data(a: Int, B: Int, n: Nested) +case class Nested(a: Int, B: Int) + +/** + * A set of test cases expressed in Hive QL that are not covered by the tests included in the hive distribution. + */ +class HiveResolutionSuite extends HiveComparisonTest { + createQueryTest("table.attr", + "SELECT src.key FROM src ORDER BY key LIMIT 1") + + createQueryTest("database.table", + "SELECT key FROM default.src ORDER BY key LIMIT 1") + + createQueryTest("database.table table.attr", + "SELECT src.key FROM default.src ORDER BY key LIMIT 1") + + createQueryTest("alias.attr", + "SELECT a.key FROM src a ORDER BY key LIMIT 1") + + createQueryTest("subquery-alias.attr", + "SELECT a.key FROM (SELECT * FROM src ORDER BY key LIMIT 1) a") + + createQueryTest("quoted alias.attr", + "SELECT `a`.`key` FROM src a ORDER BY key LIMIT 1") + + createQueryTest("attr", + "SELECT key FROM src a ORDER BY key LIMIT 1") + + createQueryTest("alias.star", + "SELECT a.* FROM src a ORDER BY key LIMIT 1") + + test("case insensitivity with scala reflection") { + // Test resolution with Scala Reflection + TestHive.sparkContext.parallelize(Data(1, 2, Nested(1,2)) :: Nil) + .registerAsTable("caseSensitivityTest") + + hql("SELECT a, b, A, B, n.a, n.b, n.A, n.B FROM caseSensitivityTest") + } + + /** + * Negative examples. Currently only left here for documentation purposes. + * TODO(marmbrus): Test that catalyst fails on these queries. + */ + + /* SemanticException [Error 10009]: Line 1:7 Invalid table alias 'src' + createQueryTest("table.*", + "SELECT src.* FROM src a ORDER BY key LIMIT 1") */ + + /* Invalid table alias or column reference 'src': (possible column names are: key, value) + createQueryTest("tableName.attr from aliased subquery", + "SELECT src.key FROM (SELECT * FROM src ORDER BY key LIMIT 1) a") */ + +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveSerDeSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveSerDeSuite.scala new file mode 100644 index 0000000000000..df9bae96494d5 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveSerDeSuite.scala @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +/** + * A set of tests that validates support for Hive SerDe. + */ +class HiveSerDeSuite extends HiveComparisonTest { + createQueryTest( + "Read and write with LazySimpleSerDe (tab separated)", + "SELECT * from serdeins") + + createQueryTest("Read with RegexSerDe", "SELECT * FROM sales") + + createQueryTest("Read with AvroSerDe", "SELECT * FROM episodes") +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveTypeCoercionSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveTypeCoercionSuite.scala new file mode 100644 index 0000000000000..e030c8ee3dfc8 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveTypeCoercionSuite.scala @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +/** + * A set of tests that validate type promotion rules. + */ +class HiveTypeCoercionSuite extends HiveComparisonTest { + val baseTypes = Seq("1", "1.0", "1L", "1S", "1Y", "'1'") + + baseTypes.foreach { i => + baseTypes.foreach { j => + createQueryTest(s"$i + $j", s"SELECT $i + $j FROM src LIMIT 1") + } + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/PruningSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/PruningSuite.scala new file mode 100644 index 0000000000000..d9ccb93e23923 --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/PruningSuite.scala @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.hive.execution + +import org.apache.spark.sql.hive.{HiveTableScan, TestHive} + +/* Implicit conversions */ +import scala.collection.JavaConversions._ + +/** + * A set of test cases that validate partition and column pruning. + */ +class PruningSuite extends HiveComparisonTest { + // Column pruning tests + + createPruningTest("Column pruning: with partitioned table", + "SELECT key FROM srcpart WHERE ds = '2008-04-08' LIMIT 3", + Seq("key"), + Seq("key"), + Seq( + Seq("2008-04-08", "11"), + Seq("2008-04-08", "12"))) + + createPruningTest("Column pruning: with non-partitioned table", + "SELECT key FROM src WHERE key > 10 LIMIT 3", + Seq("key"), + Seq("key"), + Seq.empty) + + createPruningTest("Column pruning: with multiple projects", + "SELECT c1 FROM (SELECT key AS c1 FROM src WHERE key > 10) t1 LIMIT 3", + Seq("c1"), + Seq("key"), + Seq.empty) + + createPruningTest("Column pruning: projects alias substituting", + "SELECT c1 AS c2 FROM (SELECT key AS c1 FROM src WHERE key > 10) t1 LIMIT 3", + Seq("c2"), + Seq("key"), + Seq.empty) + + createPruningTest("Column pruning: filter alias in-lining", + "SELECT c1 FROM (SELECT key AS c1 FROM src WHERE key > 10) t1 WHERE c1 < 100 LIMIT 3", + Seq("c1"), + Seq("key"), + Seq.empty) + + createPruningTest("Column pruning: without filters", + "SELECT c1 FROM (SELECT key AS c1 FROM src) t1 LIMIT 3", + Seq("c1"), + Seq("key"), + Seq.empty) + + createPruningTest("Column pruning: simple top project without aliases", + "SELECT key FROM (SELECT key FROM src WHERE key > 10) t1 WHERE key < 100 LIMIT 3", + Seq("key"), + Seq("key"), + Seq.empty) + + createPruningTest("Column pruning: non-trivial top project with aliases", + "SELECT c1 * 2 AS double FROM (SELECT key AS c1 FROM src WHERE key > 10) t1 LIMIT 3", + Seq("double"), + Seq("key"), + Seq.empty) + + // Partition pruning tests + + createPruningTest("Partition pruning: non-partitioned, non-trivial project", + "SELECT key * 2 AS double FROM src WHERE value IS NOT NULL", + Seq("double"), + Seq("key", "value"), + Seq.empty) + + createPruningTest("Partiton pruning: non-partitioned table", + "SELECT value FROM src WHERE key IS NOT NULL", + Seq("value"), + Seq("value", "key"), + Seq.empty) + + createPruningTest("Partition pruning: with filter on string partition key", + "SELECT value, hr FROM srcpart1 WHERE ds = '2008-04-08'", + Seq("value", "hr"), + Seq("value", "hr"), + Seq( + Seq("2008-04-08", "11"), + Seq("2008-04-08", "12"))) + + createPruningTest("Partition pruning: with filter on int partition key", + "SELECT value, hr FROM srcpart1 WHERE hr < 12", + Seq("value", "hr"), + Seq("value", "hr"), + Seq( + Seq("2008-04-08", "11"), + Seq("2008-04-09", "11"))) + + createPruningTest("Partition pruning: left only 1 partition", + "SELECT value, hr FROM srcpart1 WHERE ds = '2008-04-08' AND hr < 12", + Seq("value", "hr"), + Seq("value", "hr"), + Seq( + Seq("2008-04-08", "11"))) + + createPruningTest("Partition pruning: all partitions pruned", + "SELECT value, hr FROM srcpart1 WHERE ds = '2014-01-27' AND hr = 11", + Seq("value", "hr"), + Seq("value", "hr"), + Seq.empty) + + createPruningTest("Partition pruning: pruning with both column key and partition key", + "SELECT value, hr FROM srcpart1 WHERE value IS NOT NULL AND hr < 12", + Seq("value", "hr"), + Seq("value", "hr"), + Seq( + Seq("2008-04-08", "11"), + Seq("2008-04-09", "11"))) + + def createPruningTest( + testCaseName: String, + sql: String, + expectedOutputColumns: Seq[String], + expectedScannedColumns: Seq[String], + expectedPartValues: Seq[Seq[String]]) = { + test(s"$testCaseName - pruning test") { + val plan = new TestHive.HiveQLQueryExecution(sql).executedPlan + val actualOutputColumns = plan.output.map(_.name) + val (actualScannedColumns, actualPartValues) = plan.collect { + case p @ HiveTableScan(columns, relation, _) => + val columnNames = columns.map(_.name) + val partValues = p.prunePartitions(relation.hiveQlPartitions).map(_.getValues) + (columnNames, partValues) + }.head + + assert(actualOutputColumns === expectedOutputColumns, "Output columns mismatch") + assert(actualScannedColumns === expectedScannedColumns, "Scanned columns mismatch") + + assert( + actualPartValues.length === expectedPartValues.length, + "Partition value count mismatches") + + for ((actual, expected) <- actualPartValues.zip(expectedPartValues)) { + assert(actual sameElements expected, "Partition values mismatch") + } + } + + // Creates a query test to compare query results generated by Hive and Catalyst. + createQueryTest(s"$testCaseName - query test", sql) + } +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/parquet/HiveParquetSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/parquet/HiveParquetSuite.scala new file mode 100644 index 0000000000000..aade62eb8f84e --- /dev/null +++ b/sql/hive/src/test/scala/org/apache/spark/sql/parquet/HiveParquetSuite.scala @@ -0,0 +1,154 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.sql.parquet + +import org.scalatest.{BeforeAndAfterAll, BeforeAndAfterEach, FunSuite} + +import org.apache.spark.sql.catalyst.expressions.{AttributeReference, Row} +import org.apache.spark.sql.catalyst.types.{DataType, StringType, IntegerType} +import org.apache.spark.sql.{parquet, SchemaRDD} +import org.apache.spark.sql.hive.TestHive +import org.apache.spark.util.Utils + +// Implicits +import org.apache.spark.sql.hive.TestHive._ + +class HiveParquetSuite extends FunSuite with BeforeAndAfterAll with BeforeAndAfterEach { + + val dirname = Utils.createTempDir() + + var testRDD: SchemaRDD = null + + override def beforeAll() { + // write test data + ParquetTestData.writeFile + testRDD = parquetFile(ParquetTestData.testDir.toString) + testRDD.registerAsTable("testsource") + } + + override def afterAll() { + Utils.deleteRecursively(ParquetTestData.testDir) + Utils.deleteRecursively(dirname) + reset() // drop all tables that were registered as part of the tests + } + + // in case tests are failing we delete before and after each test + override def beforeEach() { + Utils.deleteRecursively(dirname) + } + + override def afterEach() { + Utils.deleteRecursively(dirname) + } + + test("SELECT on Parquet table") { + val rdd = hql("SELECT * FROM testsource").collect() + assert(rdd != null) + assert(rdd.forall(_.size == 6)) + } + + test("Simple column projection + filter on Parquet table") { + val rdd = hql("SELECT myboolean, mylong FROM testsource WHERE myboolean=true").collect() + assert(rdd.size === 5, "Filter returned incorrect number of rows") + assert(rdd.forall(_.getBoolean(0)), "Filter returned incorrect Boolean field value") + } + + test("Converting Hive to Parquet Table via saveAsParquetFile") { + hql("SELECT * FROM src").saveAsParquetFile(dirname.getAbsolutePath) + parquetFile(dirname.getAbsolutePath).registerAsTable("ptable") + val rddOne = hql("SELECT * FROM src").collect().sortBy(_.getInt(0)) + val rddTwo = hql("SELECT * from ptable").collect().sortBy(_.getInt(0)) + compareRDDs(rddOne, rddTwo, "src (Hive)", Seq("key:Int", "value:String")) + } + + test("INSERT OVERWRITE TABLE Parquet table") { + hql("SELECT * FROM testsource").saveAsParquetFile(dirname.getAbsolutePath) + parquetFile(dirname.getAbsolutePath).registerAsTable("ptable") + // let's do three overwrites for good measure + hql("INSERT OVERWRITE TABLE ptable SELECT * FROM testsource").collect() + hql("INSERT OVERWRITE TABLE ptable SELECT * FROM testsource").collect() + hql("INSERT OVERWRITE TABLE ptable SELECT * FROM testsource").collect() + val rddCopy = hql("SELECT * FROM ptable").collect() + val rddOrig = hql("SELECT * FROM testsource").collect() + assert(rddCopy.size === rddOrig.size, "INSERT OVERWRITE changed size of table??") + compareRDDs(rddOrig, rddCopy, "testsource", ParquetTestData.testSchemaFieldNames) + } + + test("CREATE TABLE of Parquet table") { + createParquetFile(dirname.getAbsolutePath, ("key", IntegerType), ("value", StringType)) + .registerAsTable("tmp") + val rddCopy = + hql("INSERT INTO TABLE tmp SELECT * FROM src") + .collect() + .sortBy[Int](_.apply(0) match { + case x: Int => x + case _ => 0 + }) + val rddOrig = hql("SELECT * FROM src") + .collect() + .sortBy(_.getInt(0)) + compareRDDs(rddOrig, rddCopy, "src (Hive)", Seq("key:Int", "value:String")) + } + + test("Appending to Parquet table") { + createParquetFile(dirname.getAbsolutePath, ("key", IntegerType), ("value", StringType)) + .registerAsTable("tmpnew") + hql("INSERT INTO TABLE tmpnew SELECT * FROM src").collect() + hql("INSERT INTO TABLE tmpnew SELECT * FROM src").collect() + hql("INSERT INTO TABLE tmpnew SELECT * FROM src").collect() + val rddCopies = hql("SELECT * FROM tmpnew").collect() + val rddOrig = hql("SELECT * FROM src").collect() + assert(rddCopies.size === 3 * rddOrig.size, "number of copied rows via INSERT INTO did not match correct number") + } + + test("Appending to and then overwriting Parquet table") { + createParquetFile(dirname.getAbsolutePath, ("key", IntegerType), ("value", StringType)) + .registerAsTable("tmp") + hql("INSERT INTO TABLE tmp SELECT * FROM src").collect() + hql("INSERT INTO TABLE tmp SELECT * FROM src").collect() + hql("INSERT OVERWRITE TABLE tmp SELECT * FROM src").collect() + val rddCopies = hql("SELECT * FROM tmp").collect() + val rddOrig = hql("SELECT * FROM src").collect() + assert(rddCopies.size === rddOrig.size, "INSERT OVERWRITE did not actually overwrite") + } + + private def compareRDDs(rddOne: Array[Row], rddTwo: Array[Row], tableName: String, fieldNames: Seq[String]) { + var counter = 0 + (rddOne, rddTwo).zipped.foreach { + (a,b) => (a,b).zipped.toArray.zipWithIndex.foreach { + case ((value_1, value_2), index) => + assert(value_1 === value_2, s"table $tableName row $counter field ${fieldNames(index)} don't match") + } + counter = counter + 1 + } + } + + /** + * Creates an empty SchemaRDD backed by a ParquetRelation. + * + * TODO: since this is so experimental it is better to have it here and not + * in SQLContext. Also note that when creating new AttributeReferences + * one needs to take care not to create duplicate Attribute ID's. + */ + private def createParquetFile(path: String, schema: (Tuple2[String, DataType])*): SchemaRDD = { + val attributes = schema.map(t => new AttributeReference(t._1, t._2)()) + new SchemaRDD( + TestHive, + parquet.ParquetRelation.createEmpty(path, attributes, sparkContext.hadoopConfiguration)) + } +} diff --git a/streaming/pom.xml b/streaming/pom.xml index 2343e381e6f7c..93b1c5a37aff9 100644 --- a/streaming/pom.xml +++ b/streaming/pom.xml @@ -45,20 +45,6 @@ - - - apache-repo - Apache Repository - https://repository.apache.org/content/repositories/releases - - true - - - false - - - - org.apache.spark @@ -88,10 +74,6 @@ junit-interface test - - commons-io - commons-io - target/scala-${scala.binary.version}/classes @@ -114,7 +96,6 @@ org.apache.maven.plugins maven-jar-plugin - 2.2 diff --git a/streaming/src/main/scala/org/apache/spark/streaming/Checkpoint.scala b/streaming/src/main/scala/org/apache/spark/streaming/Checkpoint.scala index baf80fe2a91b7..93023e8dced57 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/Checkpoint.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/Checkpoint.scala @@ -194,19 +194,19 @@ class CheckpointWriter( } } - def stop() { - synchronized { - if (stopped) { - return - } - stopped = true - } + def stop(): Unit = synchronized { + if (stopped) return + executor.shutdown() val startTime = System.currentTimeMillis() val terminated = executor.awaitTermination(10, java.util.concurrent.TimeUnit.SECONDS) + if (!terminated) { + executor.shutdownNow() + } val endTime = System.currentTimeMillis() logInfo("CheckpointWriter executor terminated ? " + terminated + ", waited for " + (endTime - startTime) + " ms.") + stopped = true } private def fs = synchronized { diff --git a/streaming/src/main/scala/org/apache/spark/streaming/DStreamGraph.scala b/streaming/src/main/scala/org/apache/spark/streaming/DStreamGraph.scala index fde46705d89fb..d3339063cc079 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/DStreamGraph.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/DStreamGraph.scala @@ -153,7 +153,7 @@ final private[streaming] class DStreamGraph extends Serializable with Logging { def validate() { this.synchronized { assert(batchDuration != null, "Batch duration has not been set") - //assert(batchDuration >= Milliseconds(100), "Batch duration of " + batchDuration + + // assert(batchDuration >= Milliseconds(100), "Batch duration of " + batchDuration + // " is very low") assert(getOutputStreams().size > 0, "No output streams registered, so nothing to execute") } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/StreamingContext.scala b/streaming/src/main/scala/org/apache/spark/streaming/StreamingContext.scala index 5847b95e3f5d1..ff5d0aaa3d0bd 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/StreamingContext.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/StreamingContext.scala @@ -17,29 +17,28 @@ package org.apache.spark.streaming -import scala.collection.mutable.Queue -import scala.collection.Map -import scala.reflect.ClassTag - import java.io.InputStream import java.util.concurrent.atomic.AtomicInteger -import akka.actor.Props -import akka.actor.SupervisorStrategy -import org.apache.hadoop.io.LongWritable -import org.apache.hadoop.io.Text +import scala.collection.Map +import scala.collection.mutable.Queue +import scala.reflect.ClassTag + +import akka.actor.{Props, SupervisorStrategy} +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.fs.Path +import org.apache.hadoop.io.{LongWritable, Text} import org.apache.hadoop.mapreduce.{InputFormat => NewInputFormat} import org.apache.hadoop.mapreduce.lib.input.TextInputFormat -import org.apache.hadoop.fs.Path import org.apache.spark._ import org.apache.spark.rdd.RDD import org.apache.spark.storage.StorageLevel -import org.apache.spark.util.MetadataCleaner import org.apache.spark.streaming.dstream._ import org.apache.spark.streaming.receivers._ import org.apache.spark.streaming.scheduler._ -import org.apache.hadoop.conf.Configuration +import org.apache.spark.streaming.ui.StreamingTab +import org.apache.spark.util.MetadataCleaner /** * Main entry point for Spark Streaming functionality. It provides methods used to create @@ -158,6 +157,17 @@ class StreamingContext private[streaming] ( private[streaming] val waiter = new ContextWaiter + private[streaming] val uiTab = new StreamingTab(this) + + /** Enumeration to identify current state of the StreamingContext */ + private[streaming] object StreamingContextState extends Enumeration { + type CheckpointState = Value + val Initialized, Started, Stopped = Value + } + + import StreamingContextState._ + private[streaming] var state = Initialized + /** * Return the associated Spark context */ @@ -201,7 +211,7 @@ class StreamingContext private[streaming] ( /** * Create an input stream with any arbitrary user implemented network receiver. - * Find more details at: http://spark-project.org/docs/latest/streaming-custom-receivers.html + * Find more details at: http://spark.apache.org/docs/latest/streaming-custom-receivers.html * @param receiver Custom implementation of NetworkReceiver */ def networkStream[T: ClassTag]( @@ -211,7 +221,7 @@ class StreamingContext private[streaming] ( /** * Create an input stream with any arbitrary user implemented actor receiver. - * Find more details at: http://spark-project.org/docs/latest/streaming-custom-receivers.html + * Find more details at: http://spark.apache.org/docs/latest/streaming-custom-receivers.html * @param props Props object defining creation of the actor * @param name Name of the actor * @param storageLevel RDD storage level. Defaults to memory-only. @@ -405,9 +415,18 @@ class StreamingContext private[streaming] ( /** * Start the execution of the streams. */ - def start() = synchronized { + def start(): Unit = synchronized { + // Throw exception if the context has already been started once + // or if a stopped context is being started again + if (state == Started) { + throw new SparkException("StreamingContext has already been started") + } + if (state == Stopped) { + throw new SparkException("StreamingContext has already been stopped") + } validate() scheduler.start() + state = Started } /** @@ -428,14 +447,38 @@ class StreamingContext private[streaming] ( } /** - * Stop the execution of the streams. + * Stop the execution of the streams immediately (does not wait for all received data + * to be processed). * @param stopSparkContext Stop the associated SparkContext or not + * */ - def stop(stopSparkContext: Boolean = true) = synchronized { - scheduler.stop() + def stop(stopSparkContext: Boolean = true): Unit = synchronized { + stop(stopSparkContext, false) + } + + /** + * Stop the execution of the streams, with option of ensuring all received data + * has been processed. + * @param stopSparkContext Stop the associated SparkContext or not + * @param stopGracefully Stop gracefully by waiting for the processing of all + * received data to be completed + */ + def stop(stopSparkContext: Boolean, stopGracefully: Boolean): Unit = synchronized { + // Warn (but not fail) if context is stopped twice, + // or context is stopped before starting + if (state == Initialized) { + logWarning("StreamingContext has not been started yet") + return + } + if (state == Stopped) { + logWarning("StreamingContext has already been stopped") + return + } // no need to throw an exception as its okay to stop twice + scheduler.stop(stopGracefully) logInfo("StreamingContext stopped successfully") waiter.notifyStop() if (stopSparkContext) sc.stop() + state = Stopped } } @@ -489,7 +532,7 @@ object StreamingContext extends Logging { * Find the JAR from which a given class was loaded, to make it easy for users to pass * their JARs to StreamingContext. */ - def jarOfClass(cls: Class[_]) = SparkContext.jarOfClass(cls) + def jarOfClass(cls: Class[_]): Seq[String] = SparkContext.jarOfClass(cls) private[streaming] def createNewSparkContext(conf: SparkConf): SparkContext = { // Set the default cleaner delay to an hour if not already set. diff --git a/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaDStreamLike.scala b/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaDStreamLike.scala index a85cd04c9319c..bb2f492d06a00 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaDStreamLike.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaDStreamLike.scala @@ -49,7 +49,9 @@ trait JavaDStreamLike[T, This <: JavaDStreamLike[T, This, R], R <: JavaRDDLike[T * Print the first ten elements of each RDD generated in this DStream. This is an output * operator, so this DStream will be registered as an output stream and there materialized. */ - def print() = dstream.print() + def print(): Unit = { + dstream.print() + } /** * Return a new DStream in which each RDD has a single element generated by counting each RDD @@ -401,7 +403,7 @@ trait JavaDStreamLike[T, This <: JavaDStreamLike[T, This, R], R <: JavaRDDLike[T * Enable periodic checkpointing of RDDs of this DStream. * @param interval Time interval after which generated RDD will be checkpointed */ - def checkpoint(interval: Duration) = { + def checkpoint(interval: Duration): DStream[T] = { dstream.checkpoint(interval) } } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaPairDStream.scala b/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaPairDStream.scala index ac451d1913aaa..2ac943d7bf781 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaPairDStream.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaPairDStream.scala @@ -17,7 +17,7 @@ package org.apache.spark.streaming.api.java -import java.lang.{Long => JLong} +import java.lang.{Long => JLong, Iterable => JIterable} import java.util.{List => JList} import scala.collection.JavaConversions._ @@ -115,15 +115,15 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( * Return a new DStream by applying `groupByKey` to each RDD. Hash partitioning is used to * generate the RDDs with Spark's default number of partitions. */ - def groupByKey(): JavaPairDStream[K, JList[V]] = - dstream.groupByKey().mapValues(seqAsJavaList _) + def groupByKey(): JavaPairDStream[K, JIterable[V]] = + dstream.groupByKey().mapValues(asJavaIterable _) /** * Return a new DStream by applying `groupByKey` to each RDD. Hash partitioning is used to * generate the RDDs with `numPartitions` partitions. */ - def groupByKey(numPartitions: Int): JavaPairDStream[K, JList[V]] = - dstream.groupByKey(numPartitions).mapValues(seqAsJavaList _) + def groupByKey(numPartitions: Int): JavaPairDStream[K, JIterable[V]] = + dstream.groupByKey(numPartitions).mapValues(asJavaIterable _) /** * Return a new DStream by applying `groupByKey` on each RDD of `this` DStream. @@ -131,8 +131,8 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( * single sequence to generate the RDDs of the new DStream. org.apache.spark.Partitioner * is used to control the partitioning of each RDD. */ - def groupByKey(partitioner: Partitioner): JavaPairDStream[K, JList[V]] = - dstream.groupByKey(partitioner).mapValues(seqAsJavaList _) + def groupByKey(partitioner: Partitioner): JavaPairDStream[K, JIterable[V]] = + dstream.groupByKey(partitioner).mapValues(asJavaIterable _) /** * Return a new DStream by applying `reduceByKey` to each RDD. The values for each key are @@ -196,8 +196,8 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( * @param windowDuration width of the window; must be a multiple of this DStream's * batching interval */ - def groupByKeyAndWindow(windowDuration: Duration): JavaPairDStream[K, JList[V]] = { - dstream.groupByKeyAndWindow(windowDuration).mapValues(seqAsJavaList _) + def groupByKeyAndWindow(windowDuration: Duration): JavaPairDStream[K, JIterable[V]] = { + dstream.groupByKeyAndWindow(windowDuration).mapValues(asJavaIterable _) } /** @@ -211,8 +211,8 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( * DStream's batching interval */ def groupByKeyAndWindow(windowDuration: Duration, slideDuration: Duration) - : JavaPairDStream[K, JList[V]] = { - dstream.groupByKeyAndWindow(windowDuration, slideDuration).mapValues(seqAsJavaList _) + : JavaPairDStream[K, JIterable[V]] = { + dstream.groupByKeyAndWindow(windowDuration, slideDuration).mapValues(asJavaIterable _) } /** @@ -227,9 +227,9 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( * @param numPartitions Number of partitions of each RDD in the new DStream. */ def groupByKeyAndWindow(windowDuration: Duration, slideDuration: Duration, numPartitions: Int) - :JavaPairDStream[K, JList[V]] = { + :JavaPairDStream[K, JIterable[V]] = { dstream.groupByKeyAndWindow(windowDuration, slideDuration, numPartitions) - .mapValues(seqAsJavaList _) + .mapValues(asJavaIterable _) } /** @@ -247,9 +247,9 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( windowDuration: Duration, slideDuration: Duration, partitioner: Partitioner - ):JavaPairDStream[K, JList[V]] = { + ):JavaPairDStream[K, JIterable[V]] = { dstream.groupByKeyAndWindow(windowDuration, slideDuration, partitioner) - .mapValues(seqAsJavaList _) + .mapValues(asJavaIterable _) } /** @@ -518,9 +518,9 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( * Hash partitioning is used to generate the RDDs with Spark's default number * of partitions. */ - def cogroup[W](other: JavaPairDStream[K, W]): JavaPairDStream[K, (JList[V], JList[W])] = { + def cogroup[W](other: JavaPairDStream[K, W]): JavaPairDStream[K, (JIterable[V], JIterable[W])] = { implicit val cm: ClassTag[W] = fakeClassTag - dstream.cogroup(other.dstream).mapValues(t => (seqAsJavaList(t._1), seqAsJavaList((t._2)))) + dstream.cogroup(other.dstream).mapValues(t => (asJavaIterable(t._1), asJavaIterable((t._2)))) } /** @@ -530,10 +530,10 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( def cogroup[W]( other: JavaPairDStream[K, W], numPartitions: Int - ): JavaPairDStream[K, (JList[V], JList[W])] = { + ): JavaPairDStream[K, (JIterable[V], JIterable[W])] = { implicit val cm: ClassTag[W] = fakeClassTag dstream.cogroup(other.dstream, numPartitions) - .mapValues(t => (seqAsJavaList(t._1), seqAsJavaList((t._2)))) + .mapValues(t => (asJavaIterable(t._1), asJavaIterable((t._2)))) } /** @@ -543,10 +543,10 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])( def cogroup[W]( other: JavaPairDStream[K, W], partitioner: Partitioner - ): JavaPairDStream[K, (JList[V], JList[W])] = { + ): JavaPairDStream[K, (JIterable[V], JIterable[W])] = { implicit val cm: ClassTag[W] = fakeClassTag dstream.cogroup(other.dstream, partitioner) - .mapValues(t => (seqAsJavaList(t._1), seqAsJavaList((t._2)))) + .mapValues(t => (asJavaIterable(t._1), asJavaIterable((t._2)))) } /** diff --git a/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaStreamingContext.scala b/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaStreamingContext.scala index c48d754e439e9..c800602d0959b 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaStreamingContext.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaStreamingContext.scala @@ -477,31 +477,49 @@ class JavaStreamingContext(val ssc: StreamingContext) { /** * Start the execution of the streams. */ - def start() = ssc.start() + def start(): Unit = { + ssc.start() + } /** * Wait for the execution to stop. Any exceptions that occurs during the execution * will be thrown in this thread. */ - def awaitTermination() = ssc.awaitTermination() + def awaitTermination(): Unit = { + ssc.awaitTermination() + } /** * Wait for the execution to stop. Any exceptions that occurs during the execution * will be thrown in this thread. * @param timeout time to wait in milliseconds */ - def awaitTermination(timeout: Long) = ssc.awaitTermination(timeout) + def awaitTermination(timeout: Long): Unit = { + ssc.awaitTermination(timeout) + } /** * Stop the execution of the streams. Will stop the associated JavaSparkContext as well. */ - def stop() = ssc.stop() + def stop(): Unit = { + ssc.stop() + } /** * Stop the execution of the streams. * @param stopSparkContext Stop the associated SparkContext or not */ def stop(stopSparkContext: Boolean) = ssc.stop(stopSparkContext) + + /** + * Stop the execution of the streams. + * @param stopSparkContext Stop the associated SparkContext or not + * @param stopGracefully Stop gracefully by waiting for the processing of all + * received data to be completed + */ + def stop(stopSparkContext: Boolean, stopGracefully: Boolean) = { + ssc.stop(stopSparkContext, stopGracefully) + } } /** @@ -579,7 +597,7 @@ object JavaStreamingContext { * Find the JAR from which a given class was loaded, to make it easy for users to pass * their JARs to StreamingContext. */ - def jarOfClass(cls: Class[_]) = SparkContext.jarOfClass(cls).toArray + def jarOfClass(cls: Class[_]): Array[String] = SparkContext.jarOfClass(cls).toArray } /** diff --git a/streaming/src/main/scala/org/apache/spark/streaming/dstream/DStream.scala b/streaming/src/main/scala/org/apache/spark/streaming/dstream/DStream.scala index 6bff56a9d332a..a7e5215437e54 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/dstream/DStream.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/dstream/DStream.scala @@ -341,9 +341,11 @@ abstract class DStream[T: ClassTag] ( */ private[streaming] def clearMetadata(time: Time) { val oldRDDs = generatedRDDs.filter(_._1 <= (time - rememberDuration)) + logDebug("Clearing references to old RDDs: [" + + oldRDDs.map(x => s"${x._1} -> ${x._2.id}").mkString(", ") + "]") generatedRDDs --= oldRDDs.keys if (ssc.conf.getBoolean("spark.streaming.unpersist", false)) { - logDebug("Unpersisting old RDDs: " + oldRDDs.keys.mkString(", ")) + logDebug("Unpersisting old RDDs: " + oldRDDs.values.map(_.id).mkString(", ")) oldRDDs.values.foreach(_.unpersist(false)) } logDebug("Cleared " + oldRDDs.size + " RDDs that were older than " + @@ -351,15 +353,6 @@ abstract class DStream[T: ClassTag] ( dependencies.foreach(_.clearMetadata(time)) } - /* Adds metadata to the Stream while it is running. - * This method should be overwritten by sublcasses of InputDStream. - */ - private[streaming] def addMetadata(metadata: Any) { - if (metadata != null) { - logInfo("Dropping Metadata: " + metadata.toString) - } - } - /** * Refresh the list of checkpointed RDDs that will be saved along with checkpoint of * this stream. This is an internal method that should not be called directly. This is @@ -503,14 +496,18 @@ abstract class DStream[T: ClassTag] ( * 'this' DStream will be registered as an output stream and therefore materialized. */ @deprecated("use foreachRDD", "0.9.0") - def foreach(foreachFunc: RDD[T] => Unit) = this.foreachRDD(foreachFunc) + def foreach(foreachFunc: RDD[T] => Unit): Unit = { + this.foreachRDD(foreachFunc) + } /** * Apply a function to each RDD in this DStream. This is an output operator, so * 'this' DStream will be registered as an output stream and therefore materialized. */ @deprecated("use foreachRDD", "0.9.0") - def foreach(foreachFunc: (RDD[T], Time) => Unit) = this.foreachRDD(foreachFunc) + def foreach(foreachFunc: (RDD[T], Time) => Unit): Unit = { + this.foreachRDD(foreachFunc) + } /** * Apply a function to each RDD in this DStream. This is an output operator, so diff --git a/streaming/src/main/scala/org/apache/spark/streaming/dstream/NetworkInputDStream.scala b/streaming/src/main/scala/org/apache/spark/streaming/dstream/NetworkInputDStream.scala index 0dc6704603f82..5a249706b4d2f 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/dstream/NetworkInputDStream.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/dstream/NetworkInputDStream.scala @@ -17,23 +17,23 @@ package org.apache.spark.streaming.dstream -import java.util.concurrent.ArrayBlockingQueue import java.nio.ByteBuffer +import java.util.concurrent.{ArrayBlockingQueue, TimeUnit} -import scala.collection.mutable.ArrayBuffer +import scala.collection.mutable.{ArrayBuffer, HashMap} import scala.concurrent.Await -import scala.concurrent.duration._ import scala.reflect.ClassTag -import akka.actor.{Props, Actor} +import akka.actor.{Actor, Props} import akka.pattern.ask -import org.apache.spark.streaming.util.{RecurringTimer, SystemClock} -import org.apache.spark.streaming._ import org.apache.spark.{Logging, SparkEnv} -import org.apache.spark.rdd.{RDD, BlockRDD} +import org.apache.spark.rdd.{BlockRDD, RDD} import org.apache.spark.storage.{BlockId, StorageLevel, StreamBlockId} -import org.apache.spark.streaming.scheduler.{DeregisterReceiver, AddBlocks, RegisterReceiver} +import org.apache.spark.streaming._ +import org.apache.spark.streaming.scheduler.{AddBlock, DeregisterReceiver, ReceivedBlockInfo, RegisterReceiver} +import org.apache.spark.streaming.util.{RecurringTimer, SystemClock} +import org.apache.spark.util.{AkkaUtils, Utils} /** * Abstract class for defining any [[org.apache.spark.streaming.dstream.InputDStream]] @@ -48,8 +48,10 @@ import org.apache.spark.streaming.scheduler.{DeregisterReceiver, AddBlocks, Regi abstract class NetworkInputDStream[T: ClassTag](@transient ssc_ : StreamingContext) extends InputDStream[T](ssc_) { - // This is an unique identifier that is used to match the network receiver with the - // corresponding network input stream. + /** Keeps all received blocks information */ + private lazy val receivedBlockInfo = new HashMap[Time, Array[ReceivedBlockInfo]] + + /** This is an unique identifier for the network input stream. */ val id = ssc.getNewNetworkStreamId() /** @@ -64,25 +66,44 @@ abstract class NetworkInputDStream[T: ClassTag](@transient ssc_ : StreamingConte def stop() {} + /** Ask NetworkInputTracker for received data blocks and generates RDDs with them. */ override def compute(validTime: Time): Option[RDD[T]] = { // If this is called for any time before the start time of the context, // then this returns an empty RDD. This may happen when recovering from a // master failure if (validTime >= graph.startTime) { - val blockIds = ssc.scheduler.networkInputTracker.getBlockIds(id, validTime) + val blockInfo = ssc.scheduler.networkInputTracker.getReceivedBlockInfo(id) + receivedBlockInfo(validTime) = blockInfo + val blockIds = blockInfo.map(_.blockId.asInstanceOf[BlockId]) Some(new BlockRDD[T](ssc.sc, blockIds)) } else { Some(new BlockRDD[T](ssc.sc, Array[BlockId]())) } } + + /** Get information on received blocks. */ + private[streaming] def getReceivedBlockInfo(time: Time) = { + receivedBlockInfo(time) + } + + /** + * Clear metadata that are older than `rememberDuration` of this DStream. + * This is an internal method that should not be called directly. This + * implementation overrides the default implementation to clear received + * block information. + */ + private[streaming] override def clearMetadata(time: Time) { + super.clearMetadata(time) + val oldReceivedBlocks = receivedBlockInfo.filter(_._1 <= (time - rememberDuration)) + receivedBlockInfo --= oldReceivedBlocks.keys + logDebug("Cleared " + oldReceivedBlocks.size + " RDDs that were older than " + + (time - rememberDuration) + ": " + oldReceivedBlocks.keys.mkString(", ")) + } } private[streaming] sealed trait NetworkReceiverMessage private[streaming] case class StopReceiver(msg: String) extends NetworkReceiverMessage -private[streaming] case class ReportBlock(blockId: BlockId, metadata: Any) - extends NetworkReceiverMessage -private[streaming] case class ReportError(msg: String) extends NetworkReceiverMessage /** * Abstract class of a receiver that can be run on worker nodes to receive external data. See @@ -90,13 +111,31 @@ private[streaming] case class ReportError(msg: String) extends NetworkReceiverMe */ abstract class NetworkReceiver[T: ClassTag]() extends Serializable with Logging { + /** Local SparkEnv */ lazy protected val env = SparkEnv.get + /** Remote Akka actor for the NetworkInputTracker */ + lazy protected val trackerActor = { + val ip = env.conf.get("spark.driver.host", "localhost") + val port = env.conf.getInt("spark.driver.port", 7077) + val url = "akka.tcp://spark@%s:%s/user/NetworkInputTracker".format(ip, port) + env.actorSystem.actorSelection(url) + } + + /** Akka actor for receiving messages from the NetworkInputTracker in the driver */ lazy protected val actor = env.actorSystem.actorOf( Props(new NetworkReceiverActor()), "NetworkReceiver-" + streamId) + /** Timeout for Akka actor messages */ + lazy protected val askTimeout = AkkaUtils.askTimeout(env.conf) + + /** Thread that starts the receiver and stays blocked while data is being received */ lazy protected val receivingThread = Thread.currentThread() + /** Exceptions that occurs while receiving data */ + protected lazy val exceptions = new ArrayBuffer[Exception] + + /** Identifier of the stream this receiver is associated with */ protected var streamId: Int = -1 /** @@ -112,7 +151,7 @@ abstract class NetworkReceiver[T: ClassTag]() extends Serializable with Logging def getLocationPreference() : Option[String] = None /** - * Starts the receiver. First is accesses all the lazy members to + * Start the receiver. First is accesses all the lazy members to * materialize them. Then it calls the user-defined onStart() method to start * other threads, etc required to receiver the data. */ @@ -124,84 +163,120 @@ abstract class NetworkReceiver[T: ClassTag]() extends Serializable with Logging receivingThread // Call user-defined onStart() + logInfo("Starting receiver") onStart() + + // Wait until interrupt is called on this thread + while(true) Thread.sleep(100000) } catch { case ie: InterruptedException => - logInfo("Receiving thread interrupted") - //println("Receiving thread interrupted") + logInfo("Receiving thread has been interrupted, receiver " + streamId + " stopped") case e: Exception => - stopOnError(e) + logError("Error receiving data in receiver " + streamId, e) + exceptions += e + } + + // Call user-defined onStop() + logInfo("Stopping receiver") + try { + onStop() + } catch { + case e: Exception => + logError("Error stopping receiver " + streamId, e) + exceptions += e + } + + val message = if (exceptions.isEmpty) { + null + } else if (exceptions.size == 1) { + val e = exceptions.head + "Exception in receiver " + streamId + ": " + e.getMessage + "\n" + e.getStackTraceString + } else { + "Multiple exceptions in receiver " + streamId + "(" + exceptions.size + "):\n" + exceptions.zipWithIndex.map { + case (e, i) => "Exception " + i + ": " + e.getMessage + "\n" + e.getStackTraceString + }.mkString("\n") } + + logInfo("Deregistering receiver " + streamId) + val future = trackerActor.ask(DeregisterReceiver(streamId, message))(askTimeout) + Await.result(future, askTimeout) + logInfo("Deregistered receiver " + streamId) + env.actorSystem.stop(actor) + logInfo("Stopped receiver " + streamId) } /** - * Stops the receiver. First it interrupts the main receiving thread, - * that is, the thread that called receiver.start(). Then it calls the user-defined - * onStop() method to stop other threads and/or do cleanup. + * Stop the receiver. First it interrupts the main receiving thread, + * that is, the thread that called receiver.start(). */ def stop() { + // Stop receiving by interrupting the receiving thread receivingThread.interrupt() - onStop() - //TODO: terminate the actor + logInfo("Interrupted receiving thread " + receivingThread + " for stopping") } /** - * Stops the receiver and reports exception to the tracker. + * Stop the receiver and reports exception to the tracker. * This should be called whenever an exception is to be handled on any thread * of the receiver. */ protected def stopOnError(e: Exception) { logError("Error receiving data", e) + exceptions += e stop() - actor ! ReportError(e.toString) } - /** - * Pushes a block (as an ArrayBuffer filled with data) into the block manager. + * Push a block (as an ArrayBuffer filled with data) into the block manager. */ - def pushBlock(blockId: BlockId, arrayBuffer: ArrayBuffer[T], metadata: Any, level: StorageLevel) { + def pushBlock( + blockId: StreamBlockId, + arrayBuffer: ArrayBuffer[T], + metadata: Any, + level: StorageLevel + ) { env.blockManager.put(blockId, arrayBuffer.asInstanceOf[ArrayBuffer[Any]], level) - actor ! ReportBlock(blockId, metadata) + trackerActor ! AddBlock(ReceivedBlockInfo(streamId, blockId, arrayBuffer.size, metadata)) + logDebug("Pushed block " + blockId) } /** - * Pushes a block (as bytes) into the block manager. + * Push a block (as bytes) into the block manager. */ - def pushBlock(blockId: BlockId, bytes: ByteBuffer, metadata: Any, level: StorageLevel) { + def pushBlock( + blockId: StreamBlockId, + bytes: ByteBuffer, + metadata: Any, + level: StorageLevel + ) { env.blockManager.putBytes(blockId, bytes, level) - actor ! ReportBlock(blockId, metadata) + trackerActor ! AddBlock(ReceivedBlockInfo(streamId, blockId, -1, metadata)) + } + + /** Set the ID of the DStream that this receiver is associated with */ + protected[streaming] def setStreamId(id: Int) { + streamId = id } /** A helper actor that communicates with the NetworkInputTracker */ private class NetworkReceiverActor extends Actor { - logInfo("Attempting to register with tracker") - val ip = env.conf.get("spark.driver.host", "localhost") - val port = env.conf.getInt("spark.driver.port", 7077) - val url = "akka.tcp://spark@%s:%s/user/NetworkInputTracker".format(ip, port) - val tracker = env.actorSystem.actorSelection(url) - val timeout = 5.seconds override def preStart() { - val future = tracker.ask(RegisterReceiver(streamId, self))(timeout) - Await.result(future, timeout) + val msg = RegisterReceiver( + streamId, NetworkReceiver.this.getClass.getSimpleName, Utils.localHostName(), self) + val future = trackerActor.ask(msg)(askTimeout) + Await.result(future, askTimeout) + logInfo("Registered receiver " + streamId) } override def receive() = { - case ReportBlock(blockId, metadata) => - tracker ! AddBlocks(streamId, Array(blockId), metadata) - case ReportError(msg) => - tracker ! DeregisterReceiver(streamId, msg) - case StopReceiver(msg) => + case StopReceiver => + logInfo("Received stop signal") stop() - tracker ! DeregisterReceiver(streamId, msg) } } - protected[streaming] def setStreamId(id: Int) { - streamId = id - } - /** * Batches objects created by a [[org.apache.spark.streaming.dstream.NetworkReceiver]] and puts * them into appropriately named blocks at regular intervals. This class starts two threads, @@ -211,27 +286,30 @@ abstract class NetworkReceiver[T: ClassTag]() extends Serializable with Logging class BlockGenerator(storageLevel: StorageLevel) extends Serializable with Logging { - case class Block(id: BlockId, buffer: ArrayBuffer[T], metadata: Any = null) + case class Block(id: StreamBlockId, buffer: ArrayBuffer[T], metadata: Any = null) val clock = new SystemClock() val blockInterval = env.conf.getLong("spark.streaming.blockInterval", 200) - val blockIntervalTimer = new RecurringTimer(clock, blockInterval, updateCurrentBuffer) + val blockIntervalTimer = new RecurringTimer(clock, blockInterval, updateCurrentBuffer, + "BlockGenerator") val blockStorageLevel = storageLevel val blocksForPushing = new ArrayBlockingQueue[Block](1000) val blockPushingThread = new Thread() { override def run() { keepPushingBlocks() } } var currentBuffer = new ArrayBuffer[T] + var stopped = false def start() { blockIntervalTimer.start() blockPushingThread.start() - logInfo("Data handler started") + logInfo("Started BlockGenerator") } def stop() { - blockIntervalTimer.stop() - blockPushingThread.interrupt() - logInfo("Data handler stopped") + blockIntervalTimer.stop(false) + stopped = true + blockPushingThread.join() + logInfo("Stopped BlockGenerator") } def += (obj: T): Unit = synchronized { @@ -249,24 +327,35 @@ abstract class NetworkReceiver[T: ClassTag]() extends Serializable with Logging } } catch { case ie: InterruptedException => - logInfo("Block interval timer thread interrupted") + logInfo("Block updating timer thread was interrupted") case e: Exception => - NetworkReceiver.this.stop() + NetworkReceiver.this.stopOnError(e) } } private def keepPushingBlocks() { - logInfo("Block pushing thread started") + logInfo("Started block pushing thread") try { - while(true) { + while(!stopped) { + Option(blocksForPushing.poll(100, TimeUnit.MILLISECONDS)) match { + case Some(block) => + NetworkReceiver.this.pushBlock(block.id, block.buffer, block.metadata, storageLevel) + case None => + } + } + // Push out the blocks that are still left + logInfo("Pushing out the last " + blocksForPushing.size() + " blocks") + while (!blocksForPushing.isEmpty) { val block = blocksForPushing.take() NetworkReceiver.this.pushBlock(block.id, block.buffer, block.metadata, storageLevel) + logInfo("Blocks left to push " + blocksForPushing.size()) } + logInfo("Stopped blocks pushing thread") } catch { case ie: InterruptedException => - logInfo("Block pushing thread interrupted") + logInfo("Block pushing thread was interrupted") case e: Exception => - NetworkReceiver.this.stop() + NetworkReceiver.this.stopOnError(e) } } } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/dstream/PairDStreamFunctions.scala b/streaming/src/main/scala/org/apache/spark/streaming/dstream/PairDStreamFunctions.scala index 2473496949360..354bc132dcdc0 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/dstream/PairDStreamFunctions.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/dstream/PairDStreamFunctions.scala @@ -51,7 +51,7 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) * Return a new DStream by applying `groupByKey` to each RDD. Hash partitioning is used to * generate the RDDs with Spark's default number of partitions. */ - def groupByKey(): DStream[(K, Seq[V])] = { + def groupByKey(): DStream[(K, Iterable[V])] = { groupByKey(defaultPartitioner()) } @@ -59,7 +59,7 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) * Return a new DStream by applying `groupByKey` to each RDD. Hash partitioning is used to * generate the RDDs with `numPartitions` partitions. */ - def groupByKey(numPartitions: Int): DStream[(K, Seq[V])] = { + def groupByKey(numPartitions: Int): DStream[(K, Iterable[V])] = { groupByKey(defaultPartitioner(numPartitions)) } @@ -67,12 +67,12 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) * Return a new DStream by applying `groupByKey` on each RDD. The supplied * org.apache.spark.Partitioner is used to control the partitioning of each RDD. */ - def groupByKey(partitioner: Partitioner): DStream[(K, Seq[V])] = { + def groupByKey(partitioner: Partitioner): DStream[(K, Iterable[V])] = { val createCombiner = (v: V) => ArrayBuffer[V](v) val mergeValue = (c: ArrayBuffer[V], v: V) => (c += v) val mergeCombiner = (c1: ArrayBuffer[V], c2: ArrayBuffer[V]) => (c1 ++ c2) combineByKey(createCombiner, mergeValue, mergeCombiner, partitioner) - .asInstanceOf[DStream[(K, Seq[V])]] + .asInstanceOf[DStream[(K, Iterable[V])]] } /** @@ -126,7 +126,7 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) * @param windowDuration width of the window; must be a multiple of this DStream's * batching interval */ - def groupByKeyAndWindow(windowDuration: Duration): DStream[(K, Seq[V])] = { + def groupByKeyAndWindow(windowDuration: Duration): DStream[(K, Iterable[V])] = { groupByKeyAndWindow(windowDuration, self.slideDuration, defaultPartitioner()) } @@ -140,7 +140,8 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) * the new DStream will generate RDDs); must be a multiple of this * DStream's batching interval */ - def groupByKeyAndWindow(windowDuration: Duration, slideDuration: Duration): DStream[(K, Seq[V])] = + def groupByKeyAndWindow(windowDuration: Duration, slideDuration: Duration) + : DStream[(K, Iterable[V])] = { groupByKeyAndWindow(windowDuration, slideDuration, defaultPartitioner()) } @@ -161,7 +162,7 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) windowDuration: Duration, slideDuration: Duration, numPartitions: Int - ): DStream[(K, Seq[V])] = { + ): DStream[(K, Iterable[V])] = { groupByKeyAndWindow(windowDuration, slideDuration, defaultPartitioner(numPartitions)) } @@ -180,14 +181,14 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) windowDuration: Duration, slideDuration: Duration, partitioner: Partitioner - ): DStream[(K, Seq[V])] = { - val createCombiner = (v: Seq[V]) => new ArrayBuffer[V] ++= v - val mergeValue = (buf: ArrayBuffer[V], v: Seq[V]) => buf ++= v + ): DStream[(K, Iterable[V])] = { + val createCombiner = (v: Iterable[V]) => new ArrayBuffer[V] ++= v + val mergeValue = (buf: ArrayBuffer[V], v: Iterable[V]) => buf ++= v val mergeCombiner = (buf1: ArrayBuffer[V], buf2: ArrayBuffer[V]) => buf1 ++= buf2 self.groupByKey(partitioner) .window(windowDuration, slideDuration) .combineByKey[ArrayBuffer[V]](createCombiner, mergeValue, mergeCombiner, partitioner) - .asInstanceOf[DStream[(K, Seq[V])]] + .asInstanceOf[DStream[(K, Iterable[V])]] } /** @@ -438,7 +439,7 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) * Hash partitioning is used to generate the RDDs with Spark's default number * of partitions. */ - def cogroup[W: ClassTag](other: DStream[(K, W)]): DStream[(K, (Seq[V], Seq[W]))] = { + def cogroup[W: ClassTag](other: DStream[(K, W)]): DStream[(K, (Iterable[V], Iterable[W]))] = { cogroup(other, defaultPartitioner()) } @@ -447,7 +448,7 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) * Hash partitioning is used to generate the RDDs with `numPartitions` partitions. */ def cogroup[W: ClassTag](other: DStream[(K, W)], numPartitions: Int) - : DStream[(K, (Seq[V], Seq[W]))] = { + : DStream[(K, (Iterable[V], Iterable[W]))] = { cogroup(other, defaultPartitioner(numPartitions)) } @@ -458,7 +459,7 @@ class PairDStreamFunctions[K: ClassTag, V: ClassTag](self: DStream[(K,V)]) def cogroup[W: ClassTag]( other: DStream[(K, W)], partitioner: Partitioner - ): DStream[(K, (Seq[V], Seq[W]))] = { + ): DStream[(K, (Iterable[V], Iterable[W]))] = { self.transformWith( other, (rdd1: RDD[(K, V)], rdd2: RDD[(K, W)]) => rdd1.cogroup(rdd2, partitioner) diff --git a/streaming/src/main/scala/org/apache/spark/streaming/dstream/ReducedWindowedDStream.scala b/streaming/src/main/scala/org/apache/spark/streaming/dstream/ReducedWindowedDStream.scala index ca0a8ae47864d..b334d68bf9910 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/dstream/ReducedWindowedDStream.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/dstream/ReducedWindowedDStream.scala @@ -78,7 +78,7 @@ class ReducedWindowedDStream[K: ClassTag, V: ClassTag]( override def checkpoint(interval: Duration): DStream[(K, V)] = { super.checkpoint(interval) - //reducedStream.checkpoint(interval) + // reducedStream.checkpoint(interval) this } @@ -128,7 +128,7 @@ class ReducedWindowedDStream[K: ClassTag, V: ClassTag]( // Cogroup the reduced RDDs and merge the reduced values val cogroupedRDD = new CoGroupedRDD[K](allRDDs.toSeq.asInstanceOf[Seq[RDD[(K, _)]]], partitioner) - //val mergeValuesFunc = mergeValues(oldRDDs.size, newRDDs.size) _ + // val mergeValuesFunc = mergeValues(oldRDDs.size, newRDDs.size) _ val numOldValues = oldRDDs.size val numNewValues = newRDDs.size diff --git a/streaming/src/main/scala/org/apache/spark/streaming/dstream/SocketInputDStream.scala b/streaming/src/main/scala/org/apache/spark/streaming/dstream/SocketInputDStream.scala index 2cdd13f205313..63d94d1cc670a 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/dstream/SocketInputDStream.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/dstream/SocketInputDStream.scala @@ -67,7 +67,6 @@ class SocketReceiver[T: ClassTag]( protected def onStop() { blockGenerator.stop() } - } private[streaming] diff --git a/streaming/src/main/scala/org/apache/spark/streaming/dstream/StateDStream.scala b/streaming/src/main/scala/org/apache/spark/streaming/dstream/StateDStream.scala index 9d8889b655356..7e22268767de7 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/dstream/StateDStream.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/dstream/StateDStream.scala @@ -56,15 +56,19 @@ class StateDStream[K: ClassTag, V: ClassTag, S: ClassTag]( // first map the cogrouped tuple to tuples of required type, // and then apply the update function val updateFuncLocal = updateFunc - val finalFunc = (iterator: Iterator[(K, (Seq[V], Seq[S]))]) => { + val finalFunc = (iterator: Iterator[(K, (Iterable[V], Iterable[S]))]) => { val i = iterator.map(t => { - (t._1, t._2._1, t._2._2.headOption) + val itr = t._2._2.iterator + val headOption = itr.hasNext match { + case true => Some(itr.next()) + case false => None + } + (t._1, t._2._1.toSeq, headOption) }) updateFuncLocal(i) } val cogroupedRDD = parentRDD.cogroup(prevStateRDD, partitioner) val stateRDD = cogroupedRDD.mapPartitions(finalFunc, preservePartitioning) - //logDebug("Generating state RDD for time " + validTime) Some(stateRDD) } case None => { // If parent RDD does not exist @@ -91,17 +95,17 @@ class StateDStream[K: ClassTag, V: ClassTag, S: ClassTag]( // first map the grouped tuple to tuples of required type, // and then apply the update function val updateFuncLocal = updateFunc - val finalFunc = (iterator: Iterator[(K, Seq[V])]) => { - updateFuncLocal(iterator.map(tuple => (tuple._1, tuple._2, None))) + val finalFunc = (iterator: Iterator[(K, Iterable[V])]) => { + updateFuncLocal(iterator.map(tuple => (tuple._1, tuple._2.toSeq, None))) } val groupedRDD = parentRDD.groupByKey(partitioner) val sessionRDD = groupedRDD.mapPartitions(finalFunc, preservePartitioning) - //logDebug("Generating state RDD for time " + validTime + " (first)") + // logDebug("Generating state RDD for time " + validTime + " (first)") Some(sessionRDD) } case None => { // If parent RDD does not exist, then nothing to do! - //logDebug("Not generating state RDD (no previous state, no parent)") + // logDebug("Not generating state RDD (no previous state, no parent)") None } } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/receivers/ActorReceiver.scala b/streaming/src/main/scala/org/apache/spark/streaming/receivers/ActorReceiver.scala index 9c5b177c163c8..44eb2750c6c7a 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/receivers/ActorReceiver.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/receivers/ActorReceiver.scala @@ -46,7 +46,7 @@ object ReceiverSupervisorStrategy { * A receiver trait to be mixed in with your Actor to gain access to * the API for pushing received data into Spark Streaming for being processed. * - * Find more details at: http://spark-project.org/docs/latest/streaming-custom-receivers.html + * Find more details at: http://spark.apache.org/docs/latest/streaming-custom-receivers.html * * @example {{{ * class MyActor extends Actor with Receiver{ @@ -174,10 +174,10 @@ private[streaming] class ActorReceiver[T: ClassTag]( blocksGenerator.start() supervisor logInfo("Supervision tree for receivers initialized at:" + supervisor.path) + } protected def onStop() = { supervisor ! PoisonPill } - } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/BatchInfo.scala b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/BatchInfo.scala index 4e8d07fe921fb..9c69a2a4e21f5 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/BatchInfo.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/BatchInfo.scala @@ -29,6 +29,7 @@ import org.apache.spark.streaming.Time */ case class BatchInfo( batchTime: Time, + receivedBlockInfo: Map[Int, Array[ReceivedBlockInfo]], submissionTime: Long, processingStartTime: Option[Long], processingEndTime: Option[Long] @@ -39,17 +40,19 @@ case class BatchInfo( * was submitted to the streaming scheduler. Essentially, it is * `processingStartTime` - `submissionTime`. */ - def schedulingDelay = processingStartTime.map(_ - submissionTime) + def schedulingDelay: Option[Long] = processingStartTime.map(_ - submissionTime) /** * Time taken for the all jobs of this batch to finish processing from the time they started * processing. Essentially, it is `processingEndTime` - `processingStartTime`. */ - def processingDelay = processingEndTime.zip(processingStartTime).map(x => x._1 - x._2).headOption + def processingDelay: Option[Long] = processingEndTime.zip(processingStartTime) + .map(x => x._1 - x._2).headOption /** * Time taken for all the jobs of this batch to finish processing from the time they * were submitted. Essentially, it is `processingDelay` + `schedulingDelay`. */ - def totalDelay = schedulingDelay.zip(processingDelay).map(x => x._1 + x._2).headOption + def totalDelay: Option[Long] = schedulingDelay.zip(processingDelay) + .map(x => x._1 + x._2).headOption } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobGenerator.scala b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobGenerator.scala index c7306248b1950..e564eccba2df5 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobGenerator.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobGenerator.scala @@ -39,16 +39,22 @@ class JobGenerator(jobScheduler: JobScheduler) extends Logging { private val ssc = jobScheduler.ssc private val graph = ssc.graph + val clock = { val clockClass = ssc.sc.conf.get( "spark.streaming.clock", "org.apache.spark.streaming.util.SystemClock") Class.forName(clockClass).newInstance().asInstanceOf[Clock] } + private val timer = new RecurringTimer(clock, ssc.graph.batchDuration.milliseconds, - longTime => eventActor ! GenerateJobs(new Time(longTime))) - private lazy val checkpointWriter = - if (ssc.checkpointDuration != null && ssc.checkpointDir != null) { - new CheckpointWriter(this, ssc.conf, ssc.checkpointDir, ssc.sparkContext.hadoopConfiguration) + longTime => eventActor ! GenerateJobs(new Time(longTime)), "JobGenerator") + + // This is marked lazy so that this is initialized after checkpoint duration has been set + // in the context and the generator has been started. + private lazy val shouldCheckpoint = ssc.checkpointDuration != null && ssc.checkpointDir != null + + private lazy val checkpointWriter = if (shouldCheckpoint) { + new CheckpointWriter(this, ssc.conf, ssc.checkpointDir, ssc.sparkContext.hadoopConfiguration) } else { null } @@ -57,17 +63,16 @@ class JobGenerator(jobScheduler: JobScheduler) extends Logging { // This not being null means the scheduler has been started and not stopped private var eventActor: ActorRef = null + // last batch whose completion,checkpointing and metadata cleanup has been completed + private var lastProcessedBatch: Time = null + /** Start generation of jobs */ - def start() = synchronized { - if (eventActor != null) { - throw new SparkException("JobGenerator already started") - } + def start(): Unit = synchronized { + if (eventActor != null) return // generator has already been started eventActor = ssc.env.actorSystem.actorOf(Props(new Actor { def receive = { - case event: JobGeneratorEvent => - logDebug("Got event of type " + event.getClass.getName) - processEvent(event) + case event: JobGeneratorEvent => processEvent(event) } }), "JobGenerator") if (ssc.isCheckpointPresent) { @@ -77,30 +82,79 @@ class JobGenerator(jobScheduler: JobScheduler) extends Logging { } } - /** Stop generation of jobs */ - def stop() = synchronized { - if (eventActor != null) { - timer.stop() - ssc.env.actorSystem.stop(eventActor) - if (checkpointWriter != null) checkpointWriter.stop() - ssc.graph.stop() - logInfo("JobGenerator stopped") + /** + * Stop generation of jobs. processReceivedData = true makes this wait until jobs + * of current ongoing time interval has been generated, processed and corresponding + * checkpoints written. + */ + def stop(processReceivedData: Boolean): Unit = synchronized { + if (eventActor == null) return // generator has already been stopped + + if (processReceivedData) { + logInfo("Stopping JobGenerator gracefully") + val timeWhenStopStarted = System.currentTimeMillis() + val stopTimeout = 10 * ssc.graph.batchDuration.milliseconds + val pollTime = 100 + + // To prevent graceful stop to get stuck permanently + def hasTimedOut = { + val timedOut = System.currentTimeMillis() - timeWhenStopStarted > stopTimeout + if (timedOut) logWarning("Timed out while stopping the job generator") + timedOut + } + + // Wait until all the received blocks in the network input tracker has + // been consumed by network input DStreams, and jobs have been generated with them + logInfo("Waiting for all received blocks to be consumed for job generation") + while(!hasTimedOut && jobScheduler.networkInputTracker.hasMoreReceivedBlockIds) { + Thread.sleep(pollTime) + } + logInfo("Waited for all received blocks to be consumed for job generation") + + // Stop generating jobs + val stopTime = timer.stop(false) + graph.stop() + logInfo("Stopped generation timer") + + // Wait for the jobs to complete and checkpoints to be written + def haveAllBatchesBeenProcessed = { + lastProcessedBatch != null && lastProcessedBatch.milliseconds == stopTime + } + logInfo("Waiting for jobs to be processed and checkpoints to be written") + while (!hasTimedOut && !haveAllBatchesBeenProcessed) { + Thread.sleep(pollTime) + } + logInfo("Waited for jobs to be processed and checkpoints to be written") + } else { + logInfo("Stopping JobGenerator immediately") + // Stop timer and graph immediately, ignore unprocessed data and pending jobs + timer.stop(true) + graph.stop() } + + // Stop the actor and checkpoint writer + if (shouldCheckpoint) checkpointWriter.stop() + ssc.env.actorSystem.stop(eventActor) + logInfo("Stopped JobGenerator") } /** - * On batch completion, clear old metadata and checkpoint computation. + * Callback called when a batch has been completely processed. */ def onBatchCompletion(time: Time) { eventActor ! ClearMetadata(time) } - + + /** + * Callback called when the checkpoint of a batch has been written. + */ def onCheckpointCompletion(time: Time) { eventActor ! ClearCheckpointData(time) } /** Processes all events */ private def processEvent(event: JobGeneratorEvent) { + logDebug("Got event " + event) event match { case GenerateJobs(time) => generateJobs(time) case ClearMetadata(time) => clearMetadata(time) @@ -114,7 +168,7 @@ class JobGenerator(jobScheduler: JobScheduler) extends Logging { val startTime = new Time(timer.getStartTime()) graph.start(startTime - graph.batchDuration) timer.start(startTime.milliseconds) - logInfo("JobGenerator started at " + startTime) + logInfo("Started JobGenerator at " + startTime) } /** Restarts the generator based on the information in checkpoint */ @@ -147,20 +201,27 @@ class JobGenerator(jobScheduler: JobScheduler) extends Logging { logInfo("Batches to reschedule (" + timesToReschedule.size + " batches): " + timesToReschedule.mkString(", ")) timesToReschedule.foreach(time => - jobScheduler.runJobs(time, graph.generateJobs(time)) + jobScheduler.submitJobSet(JobSet(time, graph.generateJobs(time))) ) // Restart the timer timer.start(restartTime.milliseconds) - logInfo("JobGenerator restarted at " + restartTime) + logInfo("Restarted JobGenerator at " + restartTime) } /** Generate jobs and perform checkpoint for the given `time`. */ private def generateJobs(time: Time) { SparkEnv.set(ssc.env) Try(graph.generateJobs(time)) match { - case Success(jobs) => jobScheduler.runJobs(time, jobs) - case Failure(e) => jobScheduler.reportError("Error generating jobs for time " + time, e) + case Success(jobs) => + val receivedBlockInfo = graph.getNetworkInputStreams.map { stream => + val streamId = stream.id + val receivedBlockInfo = stream.getReceivedBlockInfo(time) + (streamId, receivedBlockInfo) + }.toMap + jobScheduler.submitJobSet(JobSet(time, jobs, receivedBlockInfo)) + case Failure(e) => + jobScheduler.reportError("Error generating jobs for time " + time, e) } eventActor ! DoCheckpoint(time) } @@ -168,20 +229,32 @@ class JobGenerator(jobScheduler: JobScheduler) extends Logging { /** Clear DStream metadata for the given `time`. */ private def clearMetadata(time: Time) { ssc.graph.clearMetadata(time) - eventActor ! DoCheckpoint(time) + + // If checkpointing is enabled, then checkpoint, + // else mark batch to be fully processed + if (shouldCheckpoint) { + eventActor ! DoCheckpoint(time) + } else { + markBatchFullyProcessed(time) + } } /** Clear DStream checkpoint data for the given `time`. */ private def clearCheckpointData(time: Time) { ssc.graph.clearCheckpointData(time) + markBatchFullyProcessed(time) } /** Perform checkpoint for the give `time`. */ - private def doCheckpoint(time: Time) = synchronized { - if (checkpointWriter != null && (time - graph.zeroTime).isMultipleOf(ssc.checkpointDuration)) { + private def doCheckpoint(time: Time) { + if (shouldCheckpoint && (time - graph.zeroTime).isMultipleOf(ssc.checkpointDuration)) { logInfo("Checkpointing graph for time " + time) ssc.graph.updateCheckpointData(time) checkpointWriter.write(new Checkpoint(ssc, time)) } } + + private def markBatchFullyProcessed(time: Time) { + lastProcessedBatch = time + } } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobScheduler.scala b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobScheduler.scala index de675d3c7fb94..d9ada99b472ac 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobScheduler.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobScheduler.scala @@ -39,7 +39,7 @@ class JobScheduler(val ssc: StreamingContext) extends Logging { private val jobSets = new ConcurrentHashMap[Time, JobSet] private val numConcurrentJobs = ssc.conf.getInt("spark.streaming.concurrentJobs", 1) - private val executor = Executors.newFixedThreadPool(numConcurrentJobs) + private val jobExecutor = Executors.newFixedThreadPool(numConcurrentJobs) private val jobGenerator = new JobGenerator(this) val clock = jobGenerator.clock val listenerBus = new StreamingListenerBus() @@ -50,46 +50,63 @@ class JobScheduler(val ssc: StreamingContext) extends Logging { private var eventActor: ActorRef = null - def start() = synchronized { - if (eventActor != null) { - throw new SparkException("JobScheduler already started") - } + def start(): Unit = synchronized { + if (eventActor != null) return // scheduler has already been started + logDebug("Starting JobScheduler") eventActor = ssc.env.actorSystem.actorOf(Props(new Actor { def receive = { case event: JobSchedulerEvent => processEvent(event) } }), "JobScheduler") + listenerBus.start() networkInputTracker = new NetworkInputTracker(ssc) networkInputTracker.start() - Thread.sleep(1000) jobGenerator.start() - logInfo("JobScheduler started") + logInfo("Started JobScheduler") } - def stop() = synchronized { - if (eventActor != null) { - jobGenerator.stop() - networkInputTracker.stop() - executor.shutdown() - if (!executor.awaitTermination(2, TimeUnit.SECONDS)) { - executor.shutdownNow() - } - listenerBus.stop() - ssc.env.actorSystem.stop(eventActor) - logInfo("JobScheduler stopped") + def stop(processAllReceivedData: Boolean): Unit = synchronized { + if (eventActor == null) return // scheduler has already been stopped + logDebug("Stopping JobScheduler") + + // First, stop receiving + networkInputTracker.stop() + + // Second, stop generating jobs. If it has to process all received data, + // then this will wait for all the processing through JobScheduler to be over. + jobGenerator.stop(processAllReceivedData) + + // Stop the executor for receiving new jobs + logDebug("Stopping job executor") + jobExecutor.shutdown() + + // Wait for the queued jobs to complete if indicated + val terminated = if (processAllReceivedData) { + jobExecutor.awaitTermination(1, TimeUnit.HOURS) // just a very large period of time + } else { + jobExecutor.awaitTermination(2, TimeUnit.SECONDS) } + if (!terminated) { + jobExecutor.shutdownNow() + } + logDebug("Stopped job executor") + + // Stop everything else + listenerBus.stop() + ssc.env.actorSystem.stop(eventActor) + eventActor = null + logInfo("Stopped JobScheduler") } - def runJobs(time: Time, jobs: Seq[Job]) { - if (jobs.isEmpty) { - logInfo("No jobs added for time " + time) + def submitJobSet(jobSet: JobSet) { + if (jobSet.jobs.isEmpty) { + logInfo("No jobs added for time " + jobSet.time) } else { - val jobSet = new JobSet(time, jobs) - jobSets.put(time, jobSet) - jobSet.jobs.foreach(job => executor.execute(new JobHandler(job))) - logInfo("Added jobs for time " + time) + jobSets.put(jobSet.time, jobSet) + jobSet.jobs.foreach(job => jobExecutor.execute(new JobHandler(job))) + logInfo("Added jobs for time " + jobSet.time) } } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobSet.scala b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobSet.scala index fcf303aee6cd7..a69d74362173e 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobSet.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/JobSet.scala @@ -24,7 +24,11 @@ import org.apache.spark.streaming.Time * belong to the same batch. */ private[streaming] -case class JobSet(time: Time, jobs: Seq[Job]) { +case class JobSet( + time: Time, + jobs: Seq[Job], + receivedBlockInfo: Map[Int, Array[ReceivedBlockInfo]] = Map.empty + ) { private val incompleteJobs = new HashSet[Job]() private val submissionTime = System.currentTimeMillis() // when this jobset was submitted @@ -60,6 +64,7 @@ case class JobSet(time: Time, jobs: Seq[Job]) { def toBatchInfo: BatchInfo = { new BatchInfo( time, + receivedBlockInfo, submissionTime, if (processingStartTime >= 0 ) Some(processingStartTime) else None, if (processingEndTime >= 0 ) Some(processingEndTime) else None diff --git a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/NetworkInputTracker.scala b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/NetworkInputTracker.scala index e4fa163f2e069..a1e6f5176825a 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/NetworkInputTracker.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/NetworkInputTracker.scala @@ -17,26 +17,42 @@ package org.apache.spark.streaming.scheduler -import org.apache.spark.streaming.dstream.{NetworkInputDStream, NetworkReceiver} -import org.apache.spark.streaming.dstream.{StopReceiver, ReportBlock, ReportError} -import org.apache.spark.{SparkException, Logging, SparkEnv} -import org.apache.spark.SparkContext._ - -import scala.collection.mutable.HashMap -import scala.collection.mutable.Queue -import scala.concurrent.duration._ +import scala.collection.mutable.{HashMap, SynchronizedMap, SynchronizedQueue} import akka.actor._ -import akka.pattern.ask -import akka.dispatch._ -import org.apache.spark.storage.BlockId -import org.apache.spark.streaming.{Time, StreamingContext} + +import org.apache.spark.{Logging, SparkEnv, SparkException} +import org.apache.spark.SparkContext._ +import org.apache.spark.storage.StreamBlockId +import org.apache.spark.streaming.{StreamingContext, Time} +import org.apache.spark.streaming.dstream.{NetworkReceiver, StopReceiver} import org.apache.spark.util.AkkaUtils +/** Information about receiver */ +case class ReceiverInfo(streamId: Int, typ: String, location: String) { + override def toString = s"$typ-$streamId" +} + +/** Information about blocks received by the network receiver */ +case class ReceivedBlockInfo( + streamId: Int, + blockId: StreamBlockId, + numRecords: Long, + metadata: Any + ) + +/** + * Messages used by the NetworkReceiver and the NetworkInputTracker to communicate + * with each other. + */ private[streaming] sealed trait NetworkInputTrackerMessage -private[streaming] case class RegisterReceiver(streamId: Int, receiverActor: ActorRef) - extends NetworkInputTrackerMessage -private[streaming] case class AddBlocks(streamId: Int, blockIds: Seq[BlockId], metadata: Any) +private[streaming] case class RegisterReceiver( + streamId: Int, + typ: String, + host: String, + receiverActor: ActorRef + ) extends NetworkInputTrackerMessage +private[streaming] case class AddBlock(receivedBlockInfo: ReceivedBlockInfo) extends NetworkInputTrackerMessage private[streaming] case class DeregisterReceiver(streamId: Int, msg: String) extends NetworkInputTrackerMessage @@ -52,10 +68,11 @@ class NetworkInputTracker(ssc: StreamingContext) extends Logging { val networkInputStreams = ssc.graph.getNetworkInputStreams() val networkInputStreamMap = Map(networkInputStreams.map(x => (x.id, x)): _*) val receiverExecutor = new ReceiverExecutor() - val receiverInfo = new HashMap[Int, ActorRef] - val receivedBlockIds = new HashMap[Int, Queue[BlockId]] + val receiverInfo = new HashMap[Int, ActorRef] with SynchronizedMap[Int, ActorRef] + val receivedBlockInfo = new HashMap[Int, SynchronizedQueue[ReceivedBlockInfo]] + with SynchronizedMap[Int, SynchronizedQueue[ReceivedBlockInfo]] val timeout = AkkaUtils.askTimeout(ssc.conf) - + val listenerBus = ssc.scheduler.listenerBus // actor is created when generator starts. // This not being null means the tracker has been started and not stopped @@ -63,7 +80,7 @@ class NetworkInputTracker(ssc: StreamingContext) extends Logging { var currentTime: Time = null /** Start the actor and receiver execution thread. */ - def start() { + def start() = synchronized { if (actor != null) { throw new SparkException("NetworkInputTracker already started") } @@ -77,72 +94,110 @@ class NetworkInputTracker(ssc: StreamingContext) extends Logging { } /** Stop the receiver execution thread. */ - def stop() { + def stop() = synchronized { if (!networkInputStreams.isEmpty && actor != null) { - receiverExecutor.interrupt() - receiverExecutor.stopReceivers() + // First, stop the receivers + receiverExecutor.stop() + + // Finally, stop the actor ssc.env.actorSystem.stop(actor) + actor = null logInfo("NetworkInputTracker stopped") } } /** Return all the blocks received from a receiver. */ - def getBlockIds(receiverId: Int, time: Time): Array[BlockId] = synchronized { - val queue = receivedBlockIds.synchronized { - receivedBlockIds.getOrElse(receiverId, new Queue[BlockId]()) - } - val result = queue.synchronized { - queue.dequeueAll(x => true) + def getReceivedBlockInfo(streamId: Int): Array[ReceivedBlockInfo] = { + val receivedBlockInfo = getReceivedBlockInfoQueue(streamId).dequeueAll(x => true) + logInfo("Stream " + streamId + " received " + receivedBlockInfo.size + " blocks") + receivedBlockInfo.toArray + } + + private def getReceivedBlockInfoQueue(streamId: Int) = { + receivedBlockInfo.getOrElseUpdate(streamId, new SynchronizedQueue[ReceivedBlockInfo]) + } + + /** Register a receiver */ + def registerReceiver( + streamId: Int, + typ: String, + host: String, + receiverActor: ActorRef, + sender: ActorRef + ) { + if (!networkInputStreamMap.contains(streamId)) { + throw new Exception("Register received for unexpected id " + streamId) } - logInfo("Stream " + receiverId + " received " + result.size + " blocks") - result.toArray + receiverInfo += ((streamId, receiverActor)) + ssc.scheduler.listenerBus.post(StreamingListenerReceiverStarted( + ReceiverInfo(streamId, typ, host) + )) + logInfo("Registered receiver for network stream " + streamId + " from " + sender.path.address) + } + + /** Deregister a receiver */ + def deregisterReceiver(streamId: Int, message: String) { + receiverInfo -= streamId + logError("Deregistered receiver for network stream " + streamId + " with message:\n" + message) + } + + /** Add new blocks for the given stream */ + def addBlocks(receivedBlockInfo: ReceivedBlockInfo) { + getReceivedBlockInfoQueue(receivedBlockInfo.streamId) += receivedBlockInfo + logDebug("Stream " + receivedBlockInfo.streamId + " received new blocks: " + + receivedBlockInfo.blockId) + } + + /** Check if any blocks are left to be processed */ + def hasMoreReceivedBlockIds: Boolean = { + !receivedBlockInfo.values.forall(_.isEmpty) } /** Actor to receive messages from the receivers. */ private class NetworkInputTrackerActor extends Actor { def receive = { - case RegisterReceiver(streamId, receiverActor) => { - if (!networkInputStreamMap.contains(streamId)) { - throw new Exception("Register received for unexpected id " + streamId) - } - receiverInfo += ((streamId, receiverActor)) - logInfo("Registered receiver for network stream " + streamId + " from " - + sender.path.address) + case RegisterReceiver(streamId, typ, host, receiverActor) => + registerReceiver(streamId, typ, host, receiverActor, sender) + sender ! true + case AddBlock(receivedBlockInfo) => + addBlocks(receivedBlockInfo) + case DeregisterReceiver(streamId, message) => + deregisterReceiver(streamId, message) sender ! true - } - case AddBlocks(streamId, blockIds, metadata) => { - val tmp = receivedBlockIds.synchronized { - if (!receivedBlockIds.contains(streamId)) { - receivedBlockIds += ((streamId, new Queue[BlockId])) - } - receivedBlockIds(streamId) - } - tmp.synchronized { - tmp ++= blockIds - } - networkInputStreamMap(streamId).addMetadata(metadata) - } - case DeregisterReceiver(streamId, msg) => { - receiverInfo -= streamId - logError("De-registered receiver for network stream " + streamId - + " with message " + msg) - //TODO: Do something about the corresponding NetworkInputDStream - } } } /** This thread class runs all the receivers on the cluster. */ - class ReceiverExecutor extends Thread { - val env = ssc.env - - override def run() { - try { - SparkEnv.set(env) - startReceivers() - } catch { - case ie: InterruptedException => logInfo("ReceiverExecutor interrupted") - } finally { - stopReceivers() + class ReceiverExecutor { + @transient val env = ssc.env + @transient val thread = new Thread() { + override def run() { + try { + SparkEnv.set(env) + startReceivers() + } catch { + case ie: InterruptedException => logInfo("ReceiverExecutor interrupted") + } + } + } + + def start() { + thread.start() + } + + def stop() { + // Send the stop signal to all the receivers + stopReceivers() + + // Wait for the Spark job that runs the receivers to be over + // That is, for the receivers to quit gracefully. + thread.join(10000) + + // Check if all the receivers have been deregistered or not + if (!receiverInfo.isEmpty) { + logWarning("All of the receivers have not deregistered, " + receiverInfo) + } else { + logInfo("All of the receivers have deregistered successfully") } } @@ -150,7 +205,7 @@ class NetworkInputTracker(ssc: StreamingContext) extends Logging { * Get the receivers from the NetworkInputDStreams, distributes them to the * worker nodes as a parallel collection, and runs them. */ - def startReceivers() { + private def startReceivers() { val receivers = networkInputStreams.map(nis => { val rcvr = nis.getReceiver() rcvr.setStreamId(nis.id) @@ -186,13 +241,16 @@ class NetworkInputTracker(ssc: StreamingContext) extends Logging { } // Distribute the receivers and start them + logInfo("Starting " + receivers.length + " receivers") ssc.sparkContext.runJob(tempRDD, startReceiver) + logInfo("All of the receivers have been terminated") } /** Stops the receivers. */ - def stopReceivers() { + private def stopReceivers() { // Signal the receivers to stop receiverInfo.values.foreach(_ ! StopReceiver) + logInfo("Sent stop signal to all " + receiverInfo.size + " receivers") } } } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListener.scala b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListener.scala index 461ea3506477f..5db40ebbeb1de 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListener.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListener.scala @@ -23,8 +23,11 @@ import org.apache.spark.util.Distribution /** Base trait for events related to StreamingListener */ sealed trait StreamingListenerEvent +case class StreamingListenerBatchSubmitted(batchInfo: BatchInfo) extends StreamingListenerEvent case class StreamingListenerBatchCompleted(batchInfo: BatchInfo) extends StreamingListenerEvent case class StreamingListenerBatchStarted(batchInfo: BatchInfo) extends StreamingListenerEvent +case class StreamingListenerReceiverStarted(receiverInfo: ReceiverInfo) + extends StreamingListenerEvent /** An event used in the listener to shutdown the listener daemon thread. */ private[scheduler] case object StreamingListenerShutdown extends StreamingListenerEvent @@ -34,14 +37,17 @@ private[scheduler] case object StreamingListenerShutdown extends StreamingListen * computation. */ trait StreamingListener { - /** - * Called when processing of a batch has completed - */ + + /** Called when a receiver has been started */ + def onReceiverStarted(receiverStarted: StreamingListenerReceiverStarted) { } + + /** Called when a batch of jobs has been submitted for processing. */ + def onBatchSubmitted(batchSubmitted: StreamingListenerBatchSubmitted) { } + + /** Called when processing of a batch of jobs has completed. */ def onBatchCompleted(batchCompleted: StreamingListenerBatchCompleted) { } - /** - * Called when processing of a batch has started - */ + /** Called when processing of a batch of jobs has started. */ def onBatchStarted(batchStarted: StreamingListenerBatchStarted) { } } diff --git a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListenerBus.scala b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListenerBus.scala index 18811fc2b01d8..ea03dfc7bfeea 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListenerBus.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/scheduler/StreamingListenerBus.scala @@ -38,6 +38,10 @@ private[spark] class StreamingListenerBus() extends Logging { while (true) { val event = eventQueue.take event match { + case receiverStarted: StreamingListenerReceiverStarted => + listeners.foreach(_.onReceiverStarted(receiverStarted)) + case batchSubmitted: StreamingListenerBatchSubmitted => + listeners.foreach(_.onBatchSubmitted(batchSubmitted)) case batchStarted: StreamingListenerBatchStarted => listeners.foreach(_.onBatchStarted(batchStarted)) case batchCompleted: StreamingListenerBatchCompleted => diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingJobProgressListener.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingJobProgressListener.scala new file mode 100644 index 0000000000000..8921b99f53a23 --- /dev/null +++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingJobProgressListener.scala @@ -0,0 +1,148 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.streaming.ui + +import org.apache.spark.streaming.{Time, StreamingContext} +import org.apache.spark.streaming.scheduler._ +import scala.collection.mutable.{Queue, HashMap} +import org.apache.spark.streaming.scheduler.StreamingListenerReceiverStarted +import org.apache.spark.streaming.scheduler.StreamingListenerBatchStarted +import org.apache.spark.streaming.scheduler.BatchInfo +import org.apache.spark.streaming.scheduler.ReceiverInfo +import org.apache.spark.streaming.scheduler.StreamingListenerBatchSubmitted +import org.apache.spark.util.Distribution + + +private[ui] class StreamingJobProgressListener(ssc: StreamingContext) extends StreamingListener { + + private val waitingBatchInfos = new HashMap[Time, BatchInfo] + private val runningBatchInfos = new HashMap[Time, BatchInfo] + private val completedaBatchInfos = new Queue[BatchInfo] + private val batchInfoLimit = ssc.conf.getInt("spark.steaming.ui.maxBatches", 100) + private var totalCompletedBatches = 0L + private val receiverInfos = new HashMap[Int, ReceiverInfo] + + val batchDuration = ssc.graph.batchDuration.milliseconds + + override def onReceiverStarted(receiverStarted: StreamingListenerReceiverStarted) = { + synchronized { + receiverInfos.put(receiverStarted.receiverInfo.streamId, receiverStarted.receiverInfo) + } + } + + override def onBatchSubmitted(batchSubmitted: StreamingListenerBatchSubmitted) = synchronized { + runningBatchInfos(batchSubmitted.batchInfo.batchTime) = batchSubmitted.batchInfo + } + + override def onBatchStarted(batchStarted: StreamingListenerBatchStarted) = synchronized { + runningBatchInfos(batchStarted.batchInfo.batchTime) = batchStarted.batchInfo + waitingBatchInfos.remove(batchStarted.batchInfo.batchTime) + } + + override def onBatchCompleted(batchCompleted: StreamingListenerBatchCompleted) = synchronized { + waitingBatchInfos.remove(batchCompleted.batchInfo.batchTime) + runningBatchInfos.remove(batchCompleted.batchInfo.batchTime) + completedaBatchInfos.enqueue(batchCompleted.batchInfo) + if (completedaBatchInfos.size > batchInfoLimit) completedaBatchInfos.dequeue() + totalCompletedBatches += 1L + } + + def numNetworkReceivers = synchronized { + ssc.graph.getNetworkInputStreams().size + } + + def numTotalCompletedBatches: Long = synchronized { + totalCompletedBatches + } + + def numUnprocessedBatches: Long = synchronized { + waitingBatchInfos.size + runningBatchInfos.size + } + + def waitingBatches: Seq[BatchInfo] = synchronized { + waitingBatchInfos.values.toSeq + } + + def runningBatches: Seq[BatchInfo] = synchronized { + runningBatchInfos.values.toSeq + } + + def completedBatches: Seq[BatchInfo] = synchronized { + completedaBatchInfos.toSeq + } + + def processingDelayDistribution: Option[Distribution] = synchronized { + extractDistribution(_.processingDelay) + } + + def schedulingDelayDistribution: Option[Distribution] = synchronized { + extractDistribution(_.schedulingDelay) + } + + def totalDelayDistribution: Option[Distribution] = synchronized { + extractDistribution(_.totalDelay) + } + + def receivedRecordsDistributions: Map[Int, Option[Distribution]] = synchronized { + val latestBatchInfos = allBatches.reverse.take(batchInfoLimit) + val latestBlockInfos = latestBatchInfos.map(_.receivedBlockInfo) + (0 until numNetworkReceivers).map { receiverId => + val blockInfoOfParticularReceiver = latestBlockInfos.map { batchInfo => + batchInfo.get(receiverId).getOrElse(Array.empty) + } + val recordsOfParticularReceiver = blockInfoOfParticularReceiver.map { blockInfo => + // calculate records per second for each batch + blockInfo.map(_.numRecords).sum.toDouble * 1000 / batchDuration + } + val distributionOption = Distribution(recordsOfParticularReceiver) + (receiverId, distributionOption) + }.toMap + } + + def lastReceivedBatchRecords: Map[Int, Long] = { + val lastReceivedBlockInfoOption = lastReceivedBatch.map(_.receivedBlockInfo) + lastReceivedBlockInfoOption.map { lastReceivedBlockInfo => + (0 until numNetworkReceivers).map { receiverId => + (receiverId, lastReceivedBlockInfo(receiverId).map(_.numRecords).sum) + }.toMap + }.getOrElse { + (0 until numNetworkReceivers).map(receiverId => (receiverId, 0L)).toMap + } + } + + def receiverInfo(receiverId: Int): Option[ReceiverInfo] = { + receiverInfos.get(receiverId) + } + + def lastCompletedBatch: Option[BatchInfo] = { + completedaBatchInfos.sortBy(_.batchTime)(Time.ordering).lastOption + } + + def lastReceivedBatch: Option[BatchInfo] = { + allBatches.lastOption + } + + private def allBatches: Seq[BatchInfo] = synchronized { + (waitingBatchInfos.values.toSeq ++ + runningBatchInfos.values.toSeq ++ completedaBatchInfos).sortBy(_.batchTime)(Time.ordering) + } + + private def extractDistribution(getMetric: BatchInfo => Option[Long]): Option[Distribution] = { + Distribution(completedaBatchInfos.flatMap(getMetric(_)).map(_.toDouble)) + } +} diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala new file mode 100644 index 0000000000000..1f3fcacf66695 --- /dev/null +++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala @@ -0,0 +1,180 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.streaming.ui + +import java.util.Calendar +import javax.servlet.http.HttpServletRequest + +import scala.xml.Node + +import org.apache.spark.Logging +import org.apache.spark.ui._ +import org.apache.spark.ui.UIUtils._ +import org.apache.spark.util.Distribution + +/** Page for Spark Web UI that shows statistics of a streaming job */ +private[ui] class StreamingPage(parent: StreamingTab) + extends WebUIPage("") with Logging { + + private val listener = parent.listener + private val startTime = Calendar.getInstance().getTime() + private val emptyCellTest = "-" + + /** Render the page */ + def render(request: HttpServletRequest): Seq[Node] = { + val content = + generateBasicStats() ++ +

      Statistics over last {listener.completedBatches.size} processed batches

      ++ + generateNetworkStatsTable() ++ + generateBatchStatsTable() + UIUtils.headerSparkPage( + content, parent.basePath, parent.appName, "Streaming", parent.headerTabs, parent, Some(5000)) + } + + /** Generate basic stats of the streaming program */ + private def generateBasicStats(): Seq[Node] = { + val timeSinceStart = System.currentTimeMillis() - startTime.getTime +
        +
      • + Started at: {startTime.toString} +
      • +
      • + Time since start: {formatDurationVerbose(timeSinceStart)} +
      • +
      • + Network receivers: {listener.numNetworkReceivers} +
      • +
      • + Batch interval: {formatDurationVerbose(listener.batchDuration)} +
      • +
      • + Processed batches: {listener.numTotalCompletedBatches} +
      • +
      • + Waiting batches: {listener.numUnprocessedBatches} +
      • +
      + } + + /** Generate stats of data received over the network the streaming program */ + private def generateNetworkStatsTable(): Seq[Node] = { + val receivedRecordDistributions = listener.receivedRecordsDistributions + val lastBatchReceivedRecord = listener.lastReceivedBatchRecords + val table = if (receivedRecordDistributions.size > 0) { + val headerRow = Seq( + "Receiver", + "Location", + "Records in last batch\n[" + formatDate(Calendar.getInstance().getTime()) + "]", + "Minimum rate\n[records/sec]", + "25th percentile rate\n[records/sec]", + "Median rate\n[records/sec]", + "75th percentile rate\n[records/sec]", + "Maximum rate\n[records/sec]" + ) + val dataRows = (0 until listener.numNetworkReceivers).map { receiverId => + val receiverInfo = listener.receiverInfo(receiverId) + val receiverName = receiverInfo.map(_.toString).getOrElse(s"Receiver-$receiverId") + val receiverLocation = receiverInfo.map(_.location).getOrElse(emptyCellTest) + val receiverLastBatchRecords = formatDurationVerbose(lastBatchReceivedRecord(receiverId)) + val receivedRecordStats = receivedRecordDistributions(receiverId).map { d => + d.getQuantiles().map(r => formatDurationVerbose(r.toLong)) + }.getOrElse { + Seq(emptyCellTest, emptyCellTest, emptyCellTest, emptyCellTest, emptyCellTest) + } + Seq(receiverName, receiverLocation, receiverLastBatchRecords) ++ receivedRecordStats + } + Some(listingTable(headerRow, dataRows)) + } else { + None + } + + val content = +
      Network Input Statistics
      ++ +
      {table.getOrElse("No network receivers")}
      + + content + } + + /** Generate stats of batch jobs of the streaming program */ + private def generateBatchStatsTable(): Seq[Node] = { + val numBatches = listener.completedBatches.size + val lastCompletedBatch = listener.lastCompletedBatch + val table = if (numBatches > 0) { + val processingDelayQuantilesRow = { + Seq( + "Processing Time", + formatDurationOption(lastCompletedBatch.flatMap(_.processingDelay)) + ) ++ getQuantiles(listener.processingDelayDistribution) + } + val schedulingDelayQuantilesRow = { + Seq( + "Scheduling Delay", + formatDurationOption(lastCompletedBatch.flatMap(_.schedulingDelay)) + ) ++ getQuantiles(listener.schedulingDelayDistribution) + } + val totalDelayQuantilesRow = { + Seq( + "Total Delay", + formatDurationOption(lastCompletedBatch.flatMap(_.totalDelay)) + ) ++ getQuantiles(listener.totalDelayDistribution) + } + val headerRow = Seq("Metric", "Last batch", "Minimum", "25th percentile", + "Median", "75th percentile", "Maximum") + val dataRows: Seq[Seq[String]] = Seq( + processingDelayQuantilesRow, + schedulingDelayQuantilesRow, + totalDelayQuantilesRow + ) + Some(listingTable(headerRow, dataRows)) + } else { + None + } + + val content = +
      Batch Processing Statistics
      ++ +
      +
        + {table.getOrElse("No statistics have been generated yet.")} +
      +
      + + content + } + + + /** + * Returns a human-readable string representing a duration such as "5 second 35 ms" + */ + private def formatDurationOption(msOption: Option[Long]): String = { + msOption.map(formatDurationVerbose).getOrElse(emptyCellTest) + } + + /** Get quantiles for any time distribution */ + private def getQuantiles(timeDistributionOption: Option[Distribution]) = { + timeDistributionOption.get.getQuantiles().map { ms => formatDurationVerbose(ms.toLong) } + } + + /** Generate HTML table from string data */ + private def listingTable(headers: Seq[String], data: Seq[Seq[String]]) = { + def generateDataRow(data: Seq[String]): Seq[Node] = { +
      {data.map(d => )} + } + UIUtils.listingTable(headers, generateDataRow, data, fixedWidth = true) + } +} + diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingTab.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingTab.scala new file mode 100644 index 0000000000000..51448d15c6516 --- /dev/null +++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingTab.scala @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.streaming.ui + +import org.apache.spark.Logging +import org.apache.spark.streaming.StreamingContext +import org.apache.spark.ui.WebUITab + +/** Spark Web UI tab that shows statistics of a streaming job */ +private[spark] class StreamingTab(ssc: StreamingContext) + extends WebUITab(ssc.sc.ui, "streaming") with Logging { + + val parent = ssc.sc.ui + val appName = parent.appName + val basePath = parent.basePath + val listener = new StreamingJobProgressListener(ssc) + + ssc.addStreamingListener(listener) + attachPage(new StreamingPage(this)) + parent.attachTab(this) +} diff --git a/streaming/src/main/scala/org/apache/spark/streaming/util/Clock.scala b/streaming/src/main/scala/org/apache/spark/streaming/util/Clock.scala index c3a849d2769a7..c5ef2cc8c390d 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/util/Clock.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/util/Clock.scala @@ -48,14 +48,11 @@ class SystemClock() extends Clock { minPollTime } } - - + while (true) { currentTime = System.currentTimeMillis() waitTime = targetTime - currentTime - if (waitTime <= 0) { - return currentTime } val sleepTime = diff --git a/streaming/src/main/scala/org/apache/spark/streaming/util/MasterFailureTest.scala b/streaming/src/main/scala/org/apache/spark/streaming/util/MasterFailureTest.scala index 2bb616cfb8b08..c48a38590e060 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/util/MasterFailureTest.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/util/MasterFailureTest.scala @@ -28,12 +28,12 @@ import scala.collection.mutable.{SynchronizedBuffer, ArrayBuffer} import scala.reflect.ClassTag import java.io.{File, ObjectInputStream, IOException} +import java.nio.charset.Charset import java.util.UUID import com.google.common.io.Files -import org.apache.commons.io.FileUtils -import org.apache.hadoop.fs.{FileUtil, FileSystem, Path} +import org.apache.hadoop.fs.Path import org.apache.hadoop.conf.Configuration @@ -389,7 +389,7 @@ class FileGeneratingThread(input: Seq[String], testDir: Path, interval: Long) val localFile = new File(localTestDir, (i + 1).toString) val hadoopFile = new Path(testDir, (i + 1).toString) val tempHadoopFile = new Path(testDir, ".tmp_" + (i + 1).toString) - FileUtils.writeStringToFile(localFile, input(i).toString + "\n") + Files.write(input(i) + "\n", localFile, Charset.forName("UTF-8")) var tries = 0 var done = false while (!done && tries < maxTries) { diff --git a/streaming/src/main/scala/org/apache/spark/streaming/util/RecurringTimer.scala b/streaming/src/main/scala/org/apache/spark/streaming/util/RecurringTimer.scala index 559c2473851b3..f71938ac55ccb 100644 --- a/streaming/src/main/scala/org/apache/spark/streaming/util/RecurringTimer.scala +++ b/streaming/src/main/scala/org/apache/spark/streaming/util/RecurringTimer.scala @@ -17,44 +17,84 @@ package org.apache.spark.streaming.util +import org.apache.spark.Logging + private[streaming] -class RecurringTimer(val clock: Clock, val period: Long, val callback: (Long) => Unit) { +class RecurringTimer(clock: Clock, period: Long, callback: (Long) => Unit, name: String) + extends Logging { - private val thread = new Thread("RecurringTimer") { + private val thread = new Thread("RecurringTimer - " + name) { + setDaemon(true) override def run() { loop } } - - private var nextTime = 0L + @volatile private var prevTime = -1L + @volatile private var nextTime = -1L + @volatile private var stopped = false + + /** + * Get the time when this timer will fire if it is started right now. + * The time will be a multiple of this timer's period and more than + * current system time. + */ def getStartTime(): Long = { (math.floor(clock.currentTime.toDouble / period) + 1).toLong * period } + /** + * Get the time when the timer will fire if it is restarted right now. + * This time depends on when the timer was started the first time, and was stopped + * for whatever reason. The time must be a multiple of this timer's period and + * more than current time. + */ def getRestartTime(originalStartTime: Long): Long = { val gap = clock.currentTime - originalStartTime (math.floor(gap.toDouble / period).toLong + 1) * period + originalStartTime } - def start(startTime: Long): Long = { + /** + * Start at the given start time. + */ + def start(startTime: Long): Long = synchronized { nextTime = startTime thread.start() + logInfo("Started timer for " + name + " at time " + nextTime) nextTime } + /** + * Start at the earliest time it can start based on the period. + */ def start(): Long = { start(getStartTime()) } - def stop() { - thread.interrupt() + /** + * Stop the timer, and return the last time the callback was made. + * interruptTimer = true will interrupt the callback + * if it is in progress (not guaranteed to give correct time in this case). + */ + def stop(interruptTimer: Boolean): Long = synchronized { + if (!stopped) { + stopped = true + if (interruptTimer) thread.interrupt() + thread.join() + logInfo("Stopped timer for " + name + " after time " + prevTime) + } + prevTime } - + + /** + * Repeatedly call the callback every interval. + */ private def loop() { try { - while (true) { + while (!stopped) { clock.waitTillTime(nextTime) callback(nextTime) + prevTime = nextTime nextTime += period + logDebug("Callback for " + name + " called at time " + prevTime) } } catch { case e: InterruptedException => @@ -74,10 +114,10 @@ object RecurringTimer { println("" + currentTime + ": " + (currentTime - lastRecurTime)) lastRecurTime = currentTime } - val timer = new RecurringTimer(new SystemClock(), period, onRecur) + val timer = new RecurringTimer(new SystemClock(), period, onRecur, "Test") timer.start() Thread.sleep(30 * 1000) - timer.stop() + timer.stop(true) } } diff --git a/streaming/src/test/java/org/apache/spark/streaming/JavaAPISuite.java b/streaming/src/test/java/org/apache/spark/streaming/JavaAPISuite.java index e93bf18b6d0b9..13fa64894b773 100644 --- a/streaming/src/test/java/org/apache/spark/streaming/JavaAPISuite.java +++ b/streaming/src/test/java/org/apache/spark/streaming/JavaAPISuite.java @@ -23,6 +23,7 @@ import org.junit.Test; import java.io.*; import java.util.*; +import java.lang.Iterable; import com.google.common.base.Optional; import com.google.common.collect.Lists; @@ -45,6 +46,18 @@ // see http://stackoverflow.com/questions/758570/. public class JavaAPISuite extends LocalJavaStreamingContext implements Serializable { + public void equalIterator(Iterator a, Iterator b) { + while (a.hasNext() && b.hasNext()) { + Assert.assertEquals(a.next(), b.next()); + } + Assert.assertEquals(a.hasNext(), b.hasNext()); + } + + public void equalIterable(Iterable a, Iterable b) { + equalIterator(a.iterator(), b.iterator()); + } + + @SuppressWarnings("unchecked") @Test public void testCount() { @@ -1016,11 +1029,24 @@ public void testPairGroupByKey() { JavaDStream> stream = JavaTestUtils.attachTestInputStream(ssc, inputData, 1); JavaPairDStream pairStream = JavaPairDStream.fromJavaDStream(stream); - JavaPairDStream> grouped = pairStream.groupByKey(); + JavaPairDStream> grouped = pairStream.groupByKey(); JavaTestUtils.attachTestOutputStream(grouped); - List>>> result = JavaTestUtils.runStreams(ssc, 2, 2); - - Assert.assertEquals(expected, result); + List>>> result = JavaTestUtils.runStreams(ssc, 2, 2); + + Assert.assertEquals(expected.size(), result.size()); + Iterator>>> resultItr = result.iterator(); + Iterator>>> expectedItr = expected.iterator(); + while (resultItr.hasNext() && expectedItr.hasNext()) { + Iterator>> resultElements = resultItr.next().iterator(); + Iterator>> expectedElements = expectedItr.next().iterator(); + while (resultElements.hasNext() && expectedElements.hasNext()) { + Tuple2> resultElement = resultElements.next(); + Tuple2> expectedElement = expectedElements.next(); + Assert.assertEquals(expectedElement._1(), resultElement._1()); + equalIterable(expectedElement._2(), resultElement._2()); + } + Assert.assertEquals(resultElements.hasNext(), expectedElements.hasNext()); + } } @SuppressWarnings("unchecked") @@ -1128,7 +1154,7 @@ public void testGroupByKeyAndWindow() { JavaDStream> stream = JavaTestUtils.attachTestInputStream(ssc, inputData, 1); JavaPairDStream pairStream = JavaPairDStream.fromJavaDStream(stream); - JavaPairDStream> groupWindowed = + JavaPairDStream> groupWindowed = pairStream.groupByKeyAndWindow(new Duration(2000), new Duration(1000)); JavaTestUtils.attachTestOutputStream(groupWindowed); List>>> result = JavaTestUtils.runStreams(ssc, 3, 3); @@ -1471,11 +1497,25 @@ public void testCoGroup() { ssc, stringStringKVStream2, 1); JavaPairDStream pairStream2 = JavaPairDStream.fromJavaDStream(stream2); - JavaPairDStream, List>> grouped = pairStream1.cogroup(pairStream2); + JavaPairDStream, Iterable>> grouped = pairStream1.cogroup(pairStream2); JavaTestUtils.attachTestOutputStream(grouped); - List, List>>>> result = JavaTestUtils.runStreams(ssc, 2, 2); - - Assert.assertEquals(expected, result); + List, Iterable>>>> result = JavaTestUtils.runStreams(ssc, 2, 2); + + Assert.assertEquals(expected.size(), result.size()); + Iterator, Iterable>>>> resultItr = result.iterator(); + Iterator, List>>>> expectedItr = expected.iterator(); + while (resultItr.hasNext() && expectedItr.hasNext()) { + Iterator, Iterable>>> resultElements = resultItr.next().iterator(); + Iterator, List>>> expectedElements = expectedItr.next().iterator(); + while (resultElements.hasNext() && expectedElements.hasNext()) { + Tuple2, Iterable>> resultElement = resultElements.next(); + Tuple2, List>> expectedElement = expectedElements.next(); + Assert.assertEquals(expectedElement._1(), resultElement._1()); + equalIterable(expectedElement._2()._1(), resultElement._2()._1()); + equalIterable(expectedElement._2()._2(), resultElement._2()._2()); + } + Assert.assertEquals(resultElements.hasNext(), expectedElements.hasNext()); + } } @SuppressWarnings("unchecked") diff --git a/streaming/src/test/scala/org/apache/spark/streaming/BasicOperationsSuite.scala b/streaming/src/test/scala/org/apache/spark/streaming/BasicOperationsSuite.scala index bcb0c28bf07a0..8aec27e39478a 100644 --- a/streaming/src/test/scala/org/apache/spark/streaming/BasicOperationsSuite.scala +++ b/streaming/src/test/scala/org/apache/spark/streaming/BasicOperationsSuite.scala @@ -117,7 +117,7 @@ class BasicOperationsSuite extends TestSuiteBase { test("groupByKey") { testOperation( Seq( Seq("a", "a", "b"), Seq("", ""), Seq() ), - (s: DStream[String]) => s.map(x => (x, 1)).groupByKey(), + (s: DStream[String]) => s.map(x => (x, 1)).groupByKey().mapValues(_.toSeq), Seq( Seq(("a", Seq(1, 1)), ("b", Seq(1))), Seq(("", Seq(1, 1))), Seq() ), true ) @@ -251,7 +251,7 @@ class BasicOperationsSuite extends TestSuiteBase { Seq( ) ) val operation = (s1: DStream[String], s2: DStream[String]) => { - s1.map(x => (x,1)).cogroup(s2.map(x => (x, "x"))) + s1.map(x => (x,1)).cogroup(s2.map(x => (x, "x"))).mapValues(x => (x._1.toSeq, x._2.toSeq)) } testOperation(inputData1, inputData2, operation, outputData, true) } @@ -324,7 +324,7 @@ class BasicOperationsSuite extends TestSuiteBase { val updateStateOperation = (s: DStream[String]) => { val updateFunc = (values: Seq[Int], state: Option[Int]) => { - Some(values.foldLeft(0)(_ + _) + state.getOrElse(0)) + Some(values.sum + state.getOrElse(0)) } s.map(x => (x, 1)).updateStateByKey[Int](updateFunc) } @@ -359,7 +359,7 @@ class BasicOperationsSuite extends TestSuiteBase { // updateFunc clears a state when a StateObject is seen without new values twice in a row val updateFunc = (values: Seq[Int], state: Option[StateObject]) => { val stateObj = state.getOrElse(new StateObject) - values.foldLeft(0)(_ + _) match { + values.sum match { case 0 => stateObj.expireCounter += 1 // no new values case n => { // has new values, increment and reset expireCounter stateObj.counter += n diff --git a/streaming/src/test/scala/org/apache/spark/streaming/CheckpointSuite.scala b/streaming/src/test/scala/org/apache/spark/streaming/CheckpointSuite.scala index 831e7c1471a09..25739956cb889 100644 --- a/streaming/src/test/scala/org/apache/spark/streaming/CheckpointSuite.scala +++ b/streaming/src/test/scala/org/apache/spark/streaming/CheckpointSuite.scala @@ -18,10 +18,10 @@ package org.apache.spark.streaming import java.io.File +import java.nio.charset.Charset import scala.collection.mutable.ArrayBuffer import scala.reflect.ClassTag -import org.apache.commons.io.FileUtils import com.google.common.io.Files import org.apache.hadoop.fs.{Path, FileSystem} import org.apache.hadoop.conf.Configuration @@ -29,7 +29,6 @@ import org.apache.spark.streaming.StreamingContext._ import org.apache.spark.streaming.dstream.{DStream, FileInputDStream} import org.apache.spark.streaming.util.ManualClock import org.apache.spark.util.Utils -import org.apache.spark.SparkConf /** * This test suites tests the checkpointing functionality of DStreams - @@ -46,13 +45,13 @@ class CheckpointSuite extends TestSuiteBase { override def beforeFunction() { super.beforeFunction() - FileUtils.deleteDirectory(new File(checkpointDir)) + Utils.deleteRecursively(new File(checkpointDir)) } override def afterFunction() { super.afterFunction() if (ssc != null) ssc.stop() - FileUtils.deleteDirectory(new File(checkpointDir)) + Utils.deleteRecursively(new File(checkpointDir)) } test("basic rdd checkpoints + dstream graph checkpoint recovery") { @@ -253,10 +252,10 @@ class CheckpointSuite extends TestSuiteBase { ssc.start() // Create files and advance manual clock to process them - //var clock = ssc.scheduler.clock.asInstanceOf[ManualClock] + // var clock = ssc.scheduler.clock.asInstanceOf[ManualClock] Thread.sleep(1000) for (i <- Seq(1, 2, 3)) { - FileUtils.writeStringToFile(new File(testDir, i.toString), i.toString + "\n") + Files.write(i + "\n", new File(testDir, i.toString), Charset.forName("UTF-8")) // wait to make sure that the file is written such that it gets shown in the file listings Thread.sleep(1000) } @@ -273,7 +272,7 @@ class CheckpointSuite extends TestSuiteBase { // Create files while the master is down for (i <- Seq(4, 5, 6)) { - FileUtils.writeStringToFile(new File(testDir, i.toString), i.toString + "\n") + Files.write(i + "\n", new File(testDir, i.toString), Charset.forName("UTF-8")) Thread.sleep(1000) } @@ -289,7 +288,7 @@ class CheckpointSuite extends TestSuiteBase { // Restart stream computation ssc.start() for (i <- Seq(7, 8, 9)) { - FileUtils.writeStringToFile(new File(testDir, i.toString), i.toString + "\n") + Files.write(i + "\n", new File(testDir, i.toString), Charset.forName("UTF-8")) Thread.sleep(1000) } Thread.sleep(1000) diff --git a/streaming/src/test/scala/org/apache/spark/streaming/FailureSuite.scala b/streaming/src/test/scala/org/apache/spark/streaming/FailureSuite.scala index da9b04de1ac44..92e1b76d28301 100644 --- a/streaming/src/test/scala/org/apache/spark/streaming/FailureSuite.scala +++ b/streaming/src/test/scala/org/apache/spark/streaming/FailureSuite.scala @@ -19,14 +19,9 @@ package org.apache.spark.streaming import org.apache.spark.Logging import org.apache.spark.streaming.util.MasterFailureTest -import StreamingContext._ +import org.apache.spark.util.Utils -import org.scalatest.{FunSuite, BeforeAndAfter} -import com.google.common.io.Files import java.io.File -import org.apache.commons.io.FileUtils -import collection.mutable.ArrayBuffer - /** * This testsuite tests master failures at random times while the stream is running using @@ -43,12 +38,12 @@ class FailureSuite extends TestSuiteBase with Logging { override def beforeFunction() { super.beforeFunction() - FileUtils.deleteDirectory(new File(directory)) + Utils.deleteRecursively(new File(directory)) } override def afterFunction() { super.afterFunction() - FileUtils.deleteDirectory(new File(directory)) + Utils.deleteRecursively(new File(directory)) } test("multiple failures with map") { diff --git a/streaming/src/test/scala/org/apache/spark/streaming/InputStreamsSuite.scala b/streaming/src/test/scala/org/apache/spark/streaming/InputStreamsSuite.scala index 95bf40ba75956..952511d411a8e 100644 --- a/streaming/src/test/scala/org/apache/spark/streaming/InputStreamsSuite.scala +++ b/streaming/src/test/scala/org/apache/spark/streaming/InputStreamsSuite.scala @@ -23,21 +23,23 @@ import akka.actor.IOManager import akka.actor.Props import akka.util.ByteString -import org.apache.spark.streaming.dstream.{NetworkReceiver} -import java.net.{InetSocketAddress, SocketException, Socket, ServerSocket} import java.io.{File, BufferedWriter, OutputStreamWriter} +import java.net.{InetSocketAddress, SocketException, ServerSocket} +import java.nio.charset.Charset import java.util.concurrent.{Executors, TimeUnit, ArrayBlockingQueue} -import collection.mutable.{SynchronizedBuffer, ArrayBuffer} -import util.ManualClock +import java.util.concurrent.atomic.AtomicInteger + +import scala.collection.mutable.{SynchronizedBuffer, ArrayBuffer} + +import com.google.common.io.Files +import org.scalatest.BeforeAndAfter + +import org.apache.spark.Logging import org.apache.spark.storage.StorageLevel +import org.apache.spark.streaming.dstream.NetworkReceiver import org.apache.spark.streaming.receivers.Receiver -import org.apache.spark.Logging -import scala.util.Random -import org.apache.commons.io.FileUtils -import org.scalatest.BeforeAndAfter -import collection.JavaConversions._ -import com.google.common.io.Files -import java.util.concurrent.atomic.AtomicInteger +import org.apache.spark.streaming.util.ManualClock +import org.apache.spark.util.Utils class InputStreamsSuite extends TestSuiteBase with BeforeAndAfter { @@ -112,7 +114,7 @@ class InputStreamsSuite extends TestSuiteBase with BeforeAndAfter { Thread.sleep(1000) for (i <- 0 until input.size) { val file = new File(testDir, i.toString) - FileUtils.writeStringToFile(file, input(i).toString + "\n") + Files.write(input(i) + "\n", file, Charset.forName("UTF-8")) logInfo("Created file " + file) Thread.sleep(batchDuration.milliseconds) Thread.sleep(1000) @@ -136,14 +138,14 @@ class InputStreamsSuite extends TestSuiteBase with BeforeAndAfter { // (whether the elements were received one in each interval is not verified) assert(output.toList === expectedOutput.toList) - FileUtils.deleteDirectory(testDir) + Utils.deleteRecursively(testDir) // Enable manual clock back again for other tests conf.set("spark.streaming.clock", "org.apache.spark.streaming.util.ManualClock") } - - test("actor input stream") { + // TODO: This test makes assumptions about Thread.sleep() and is flaky + ignore("actor input stream") { // Start the server val testServer = new TestServer() val port = testServer.port @@ -152,7 +154,8 @@ class InputStreamsSuite extends TestSuiteBase with BeforeAndAfter { // Set up the streaming context and input streams val ssc = new StreamingContext(conf, batchDuration) val networkStream = ssc.actorStream[String](Props(new TestActor(port)), "TestActor", - StorageLevel.MEMORY_AND_DISK) //Had to pass the local value of port to prevent from closing over entire scope + // Had to pass the local value of port to prevent from closing over entire scope + StorageLevel.MEMORY_AND_DISK) val outputBuffer = new ArrayBuffer[Seq[String]] with SynchronizedBuffer[Seq[String]] val outputStream = new TestOutputStream(networkStream, outputBuffer) def output = outputBuffer.flatMap(x => x) @@ -236,11 +239,11 @@ class InputStreamsSuite extends TestSuiteBase with BeforeAndAfter { /** This is a server to test the network input stream */ -class TestServer() extends Logging { +class TestServer(portToBind: Int = 0) extends Logging { val queue = new ArrayBlockingQueue[String](100) - val serverSocket = new ServerSocket(0) + val serverSocket = new ServerSocket(portToBind) val servingThread = new Thread() { override def run() { @@ -279,7 +282,7 @@ class TestServer() extends Logging { def start() { servingThread.start() } - def send(msg: String) { queue.add(msg) } + def send(msg: String) { queue.put(msg) } def stop() { servingThread.interrupt() } diff --git a/streaming/src/test/scala/org/apache/spark/streaming/StreamingContextSuite.scala b/streaming/src/test/scala/org/apache/spark/streaming/StreamingContextSuite.scala index 717da8e00462b..efd0d22ecb57a 100644 --- a/streaming/src/test/scala/org/apache/spark/streaming/StreamingContextSuite.scala +++ b/streaming/src/test/scala/org/apache/spark/streaming/StreamingContextSuite.scala @@ -17,19 +17,22 @@ package org.apache.spark.streaming -import org.scalatest.{FunSuite, BeforeAndAfter} -import org.scalatest.exceptions.TestFailedDueToTimeoutException +import java.util.concurrent.atomic.AtomicInteger + +import org.apache.spark.{Logging, SparkConf, SparkContext, SparkException} +import org.apache.spark.storage.StorageLevel +import org.apache.spark.streaming.dstream.{DStream, NetworkReceiver} +import org.apache.spark.util.{MetadataCleaner, Utils} +import org.scalatest.{BeforeAndAfter, FunSuite} import org.scalatest.concurrent.Timeouts +import org.scalatest.exceptions.TestFailedDueToTimeoutException import org.scalatest.time.SpanSugar._ -import org.apache.spark.{SparkException, SparkConf, SparkContext} -import org.apache.spark.util.{Utils, MetadataCleaner} -import org.apache.spark.streaming.dstream.DStream -class StreamingContextSuite extends FunSuite with BeforeAndAfter with Timeouts { +class StreamingContextSuite extends FunSuite with BeforeAndAfter with Timeouts with Logging { val master = "local[2]" val appName = this.getClass.getSimpleName - val batchDuration = Seconds(1) + val batchDuration = Milliseconds(500) val sparkHome = "someDir" val envPair = "key" -> "value" val ttl = StreamingContext.DEFAULT_CLEANER_TTL + 100 @@ -108,19 +111,31 @@ class StreamingContextSuite extends FunSuite with BeforeAndAfter with Timeouts { val myConf = SparkContext.updatedConf(new SparkConf(false), master, appName) myConf.set("spark.cleaner.ttl", ttl.toString) val ssc1 = new StreamingContext(myConf, batchDuration) + addInputStream(ssc1).register + ssc1.start() val cp = new Checkpoint(ssc1, Time(1000)) assert(MetadataCleaner.getDelaySeconds(cp.sparkConf) === ttl) ssc1.stop() val newCp = Utils.deserialize[Checkpoint](Utils.serialize(cp)) assert(MetadataCleaner.getDelaySeconds(newCp.sparkConf) === ttl) - ssc = new StreamingContext(null, cp, null) + ssc = new StreamingContext(null, newCp, null) assert(MetadataCleaner.getDelaySeconds(ssc.conf) === ttl) } - test("start multiple times") { + test("start and stop state check") { ssc = new StreamingContext(master, appName, batchDuration) addInputStream(ssc).register + assert(ssc.state === ssc.StreamingContextState.Initialized) + ssc.start() + assert(ssc.state === ssc.StreamingContextState.Started) + ssc.stop() + assert(ssc.state === ssc.StreamingContextState.Stopped) + } + + test("start multiple times") { + ssc = new StreamingContext(master, appName, batchDuration) + addInputStream(ssc).register ssc.start() intercept[SparkException] { ssc.start() @@ -133,7 +148,17 @@ class StreamingContextSuite extends FunSuite with BeforeAndAfter with Timeouts { ssc.start() ssc.stop() ssc.stop() - ssc = null + } + + test("stop before start and start after stop") { + ssc = new StreamingContext(master, appName, batchDuration) + addInputStream(ssc).register + ssc.stop() // stop before start should not throw exception + ssc.start() + ssc.stop() + intercept[SparkException] { + ssc.start() // start after stop should throw exception + } } test("stop only streaming context") { @@ -142,9 +167,41 @@ class StreamingContextSuite extends FunSuite with BeforeAndAfter with Timeouts { addInputStream(ssc).register ssc.start() ssc.stop(false) - ssc = null assert(sc.makeRDD(1 to 100).collect().size === 100) ssc = new StreamingContext(sc, batchDuration) + addInputStream(ssc).register + ssc.start() + ssc.stop() + } + + test("stop gracefully") { + val conf = new SparkConf().setMaster(master).setAppName(appName) + conf.set("spark.cleaner.ttl", "3600") + sc = new SparkContext(conf) + for (i <- 1 to 4) { + logInfo("==================================") + ssc = new StreamingContext(sc, batchDuration) + var runningCount = 0 + TestReceiver.counter.set(1) + val input = ssc.networkStream(new TestReceiver) + input.count.foreachRDD(rdd => { + val count = rdd.first() + logInfo("Count = " + count) + runningCount += count.toInt + }) + ssc.start() + ssc.awaitTermination(500) + ssc.stop(stopSparkContext = false, stopGracefully = true) + logInfo("Running count = " + runningCount) + logInfo("TestReceiver.counter = " + TestReceiver.counter.get()) + assert(runningCount > 0) + assert( + (TestReceiver.counter.get() == runningCount + 1) || + (TestReceiver.counter.get() == runningCount + 2), + "Received records = " + TestReceiver.counter.get() + ", " + + "processed records = " + runningCount + ) + } } test("awaitTermination") { @@ -199,7 +256,6 @@ class StreamingContextSuite extends FunSuite with BeforeAndAfter with Timeouts { test("awaitTermination with error in job generation") { ssc = new StreamingContext(master, appName, batchDuration) val inputStream = addInputStream(ssc) - inputStream.transform(rdd => { throw new TestException("error in transform"); rdd }).register val exception = intercept[TestException] { ssc.start() @@ -215,4 +271,29 @@ class StreamingContextSuite extends FunSuite with BeforeAndAfter with Timeouts { } } -class TestException(msg: String) extends Exception(msg) \ No newline at end of file +class TestException(msg: String) extends Exception(msg) + +/** Custom receiver for testing whether all data received by a receiver gets processed or not */ +class TestReceiver extends NetworkReceiver[Int] { + protected lazy val blockGenerator = new BlockGenerator(StorageLevel.MEMORY_ONLY) + protected def onStart() { + blockGenerator.start() + logInfo("BlockGenerator started on thread " + receivingThread) + try { + while(true) { + blockGenerator += TestReceiver.counter.getAndIncrement + Thread.sleep(0) + } + } finally { + logInfo("Receiving stopped at count value of " + TestReceiver.counter.get()) + } + } + + protected def onStop() { + blockGenerator.stop() + } +} + +object TestReceiver { + val counter = new AtomicInteger(1) +} diff --git a/streaming/src/test/scala/org/apache/spark/streaming/TestSuiteBase.scala b/streaming/src/test/scala/org/apache/spark/streaming/TestSuiteBase.scala index 201630672ab4c..aa2d5c2fc2454 100644 --- a/streaming/src/test/scala/org/apache/spark/streaming/TestSuiteBase.scala +++ b/streaming/src/test/scala/org/apache/spark/streaming/TestSuiteBase.scala @@ -277,7 +277,7 @@ trait TestSuiteBase extends FunSuite with BeforeAndAfter with Logging { assert(timeTaken < maxWaitTimeMillis, "Operation timed out after " + timeTaken + " ms") assert(output.size === numExpectedOutput, "Unexpected number of outputs generated") - Thread.sleep(500) // Give some time for the forgetting old RDDs to complete + Thread.sleep(100) // Give some time for the forgetting old RDDs to complete } catch { case e: Exception => {e.printStackTrace(); throw e} } finally { diff --git a/streaming/src/test/scala/org/apache/spark/streaming/UISuite.scala b/streaming/src/test/scala/org/apache/spark/streaming/UISuite.scala new file mode 100644 index 0000000000000..35538ec188f67 --- /dev/null +++ b/streaming/src/test/scala/org/apache/spark/streaming/UISuite.scala @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.streaming + +import scala.io.Source + +import org.scalatest.FunSuite +import org.scalatest.concurrent.Eventually._ +import org.scalatest.time.SpanSugar._ + +class UISuite extends FunSuite { + + test("streaming tab in spark UI") { + val ssc = new StreamingContext("local", "test", Seconds(1)) + eventually(timeout(10 seconds), interval(50 milliseconds)) { + val html = Source.fromURL(ssc.sparkContext.ui.appUIAddress).mkString + assert(!html.contains("random data that should not be present")) + // test if streaming tab exist + assert(html.toLowerCase.contains("streaming")) + // test if other Spark tabs still exist + assert(html.toLowerCase.contains("stages")) + } + + eventually(timeout(10 seconds), interval(50 milliseconds)) { + val html = Source.fromURL( + ssc.sparkContext.ui.appUIAddress.stripSuffix("/") + "/streaming").mkString + assert(html.toLowerCase.contains("batch")) + assert(html.toLowerCase.contains("network")) + } + } +} diff --git a/streaming/src/test/scala/org/apache/spark/streaming/util/RateLimitedOutputStreamSuite.scala b/streaming/src/test/scala/org/apache/spark/streaming/util/RateLimitedOutputStreamSuite.scala index 7d18a0fcf7ba8..9ebf7b484f421 100644 --- a/streaming/src/test/scala/org/apache/spark/streaming/util/RateLimitedOutputStreamSuite.scala +++ b/streaming/src/test/scala/org/apache/spark/streaming/util/RateLimitedOutputStreamSuite.scala @@ -36,8 +36,9 @@ class RateLimitedOutputStreamSuite extends FunSuite { val stream = new RateLimitedOutputStream(underlying, desiredBytesPerSec = 10000) val elapsedNs = benchmark { stream.write(data.getBytes("UTF-8")) } - // We accept anywhere from 4.0 to 4.99999 seconds since the value is rounded down. - assert(SECONDS.convert(elapsedNs, NANOSECONDS) === 4) + val seconds = SECONDS.convert(elapsedNs, NANOSECONDS) + assert(seconds >= 4, s"Seconds value ($seconds) is less than 4.") + assert(seconds <= 30, s"Took more than 30 seconds ($seconds) to write data.") assert(underlying.toString("UTF-8") === data) } } diff --git a/tools/pom.xml b/tools/pom.xml index 11433e596f5b0..ae2ba64e07c21 100644 --- a/tools/pom.xml +++ b/tools/pom.xml @@ -55,6 +55,14 @@ spark-streaming_${scala.binary.version} ${project.version} + + org.scala-lang + scala-reflect + + + org.scala-lang + scala-compiler + org.scalatest scalatest_${scala.binary.version} diff --git a/tools/src/main/scala/org/apache/spark/tools/GenerateMIMAIgnore.scala b/tools/src/main/scala/org/apache/spark/tools/GenerateMIMAIgnore.scala new file mode 100644 index 0000000000000..5547e9fe58fc7 --- /dev/null +++ b/tools/src/main/scala/org/apache/spark/tools/GenerateMIMAIgnore.scala @@ -0,0 +1,132 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.tools + +import java.io.File +import java.util.jar.JarFile + +import scala.collection.mutable +import scala.collection.JavaConversions._ +import scala.reflect.runtime.universe.runtimeMirror + +/** + * A tool for generating classes to be excluded during binary checking with MIMA. It is expected + * that this tool is run with ./spark-class. + * + * MIMA itself only supports JVM-level visibility and doesn't account for package-private classes. + * This tool looks at all currently package-private classes and generates exclusions for them. Note + * that this approach is not sound. It can lead to false positives if we move or rename a previously + * package-private class. It can lead to false negatives if someone explicitly makes a class + * package-private that wasn't before. This exists only to help catch certain classes of changes + * which might be difficult to catch during review. + */ +object GenerateMIMAIgnore { + private val classLoader = Thread.currentThread().getContextClassLoader + private val mirror = runtimeMirror(classLoader) + + private def classesPrivateWithin(packageName: String): Set[String] = { + + val classes = getClasses(packageName, classLoader) + val privateClasses = mutable.HashSet[String]() + + def isPackagePrivate(className: String) = { + try { + /* Couldn't figure out if it's possible to determine a-priori whether a given symbol + is a module or class. */ + + val privateAsClass = mirror + .staticClass(className) + .privateWithin + .fullName + .startsWith(packageName) + + val privateAsModule = mirror + .staticModule(className) + .privateWithin + .fullName + .startsWith(packageName) + + privateAsClass || privateAsModule + } catch { + case _: Throwable => { + println("Error determining visibility: " + className) + false + } + } + } + + for (className <- classes) { + val directlyPrivateSpark = isPackagePrivate(className) + + /* Inner classes defined within a private[spark] class or object are effectively + invisible, so we account for them as package private. */ + val indirectlyPrivateSpark = { + val maybeOuter = className.toString.takeWhile(_ != '$') + if (maybeOuter != className) { + isPackagePrivate(maybeOuter) + } else { + false + } + } + if (directlyPrivateSpark || indirectlyPrivateSpark) privateClasses += className + } + privateClasses.flatMap(c => Seq(c, c.replace("$", "#"))).toSet + } + + def main(args: Array[String]) { + scala.tools.nsc.io.File(".mima-excludes"). + writeAll(classesPrivateWithin("org.apache.spark").mkString("\n")) + println("Created : .mima-excludes in current directory.") + } + + + private def shouldExclude(name: String) = { + // Heuristic to remove JVM classes that do not correspond to user-facing classes in Scala + name.contains("anon") || + name.endsWith("$class") || + name.contains("$sp") + } + + /** + * Scans all classes accessible from the context class loader which belong to the given package + * and subpackages both from directories and jars present on the classpath. + */ + private def getClasses(packageName: String, + classLoader: ClassLoader = Thread.currentThread().getContextClassLoader): Set[String] = { + val path = packageName.replace('.', '/') + val resources = classLoader.getResources(path) + + val jars = resources.filter(x => x.getProtocol == "jar") + .map(_.getFile.split(":")(1).split("!")(0)).toSeq + + jars.flatMap(getClassesFromJar(_, path)) + .map(_.getName) + .filterNot(shouldExclude).toSet + } + + /** + * Get all classes in a package from a jar file. + */ + private def getClassesFromJar(jarPath: String, packageName: String) = { + val jar = new JarFile(new File(jarPath)) + val enums = jar.entries().map(_.getName).filter(_.startsWith(packageName)) + val classes = for (entry <- enums if entry.endsWith(".class")) + yield Class.forName(entry.replace('/', '.').stripSuffix(".class")) + classes + } +} diff --git a/core/src/main/scala/org/apache/spark/storage/StoragePerfTester.scala b/tools/src/main/scala/org/apache/spark/tools/StoragePerfTester.scala similarity index 97% rename from core/src/main/scala/org/apache/spark/storage/StoragePerfTester.scala rename to tools/src/main/scala/org/apache/spark/tools/StoragePerfTester.scala index 8cea302eb14c3..8e8c35615a711 100644 --- a/core/src/main/scala/org/apache/spark/storage/StoragePerfTester.scala +++ b/tools/src/main/scala/org/apache/spark/tools/StoragePerfTester.scala @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.spark.storage +package org.apache.spark.tools import java.util.concurrent.{CountDownLatch, Executors} import java.util.concurrent.atomic.AtomicLong @@ -25,7 +25,7 @@ import org.apache.spark.serializer.KryoSerializer import org.apache.spark.util.Utils /** - * Utility for micro-benchmarking shuffle write performance. + * Internal utility for micro-benchmarking shuffle write performance. * * Writes simulated shuffle output from several threads and records the observed throughput. */ diff --git a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala index bb574f415293a..910484ed5432a 100644 --- a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala +++ b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala @@ -61,9 +61,9 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, YarnConfiguration.DEFAULT_RM_AM_MAX_RETRIES) private var isLastAMRetry: Boolean = true - // Default to numWorkers * 2, with minimum of 3 - private val maxNumWorkerFailures = sparkConf.getInt("spark.yarn.max.worker.failures", - math.max(args.numWorkers * 2, 3)) + // Default to numExecutors * 2, with minimum of 3 + private val maxNumExecutorFailures = sparkConf.getInt("spark.yarn.max.executor.failures", + sparkConf.getInt("spark.yarn.max.worker.failures", math.max(args.numExecutors * 2, 3))) private var registered = false @@ -79,6 +79,9 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, // other spark processes running on the same box System.setProperty("spark.ui.port", "0") + // when running the AM, the Spark master is always "yarn-cluster" + System.setProperty("spark.master", "yarn-cluster") + // Use priority 30 as its higher then HDFS. Its same priority as MapReduce is using. ShutdownHookManager.get().addShutdownHook(new AppMasterShutdownHook(this), 30) @@ -93,7 +96,7 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, // Call this to force generation of secret so it gets populated into the // hadoop UGI. This has to happen before the startUserClass which does a - // doAs in order for the credentials to be passed on to the worker containers. + // doAs in order for the credentials to be passed on to the executor containers. val securityMgr = new SecurityManager(sparkConf) // Start the user's JAR @@ -112,7 +115,7 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, } // Allocate all containers - allocateWorkers() + allocateExecutors() // Wait for the user class to Finish userThread.join() @@ -212,7 +215,7 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, t } - // this need to happen before allocateWorkers + // this need to happen before allocateExecutors private def waitForSparkContextInitialized() { logInfo("Waiting for spark context initialization") try { @@ -257,21 +260,21 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, } } - private def allocateWorkers() { + private def allocateExecutors() { try { - logInfo("Allocating " + args.numWorkers + " workers.") + logInfo("Allocating " + args.numExecutors + " executors.") // Wait until all containers have finished // TODO: This is a bit ugly. Can we make it nicer? // TODO: Handle container failure // Exists the loop if the user thread exits. - while (yarnAllocator.getNumWorkersRunning < args.numWorkers && userThread.isAlive) { - if (yarnAllocator.getNumWorkersFailed >= maxNumWorkerFailures) { + while (yarnAllocator.getNumExecutorsRunning < args.numExecutors && userThread.isAlive) { + if (yarnAllocator.getNumExecutorsFailed >= maxNumExecutorFailures) { finishApplicationMaster(FinalApplicationStatus.FAILED, - "max number of worker failures reached") + "max number of executor failures reached") } yarnAllocator.allocateContainers( - math.max(args.numWorkers - yarnAllocator.getNumWorkersRunning, 0)) + math.max(args.numExecutors - yarnAllocator.getNumExecutorsRunning, 0)) ApplicationMaster.incrementAllocatorLoop(1) Thread.sleep(100) } @@ -280,7 +283,7 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, // so that the loop in ApplicationMaster#sparkContextInitialized() breaks. ApplicationMaster.incrementAllocatorLoop(ApplicationMaster.ALLOCATOR_LOOP_WAIT_COUNT) } - logInfo("All workers have launched.") + logInfo("All executors have launched.") // Launch a progress reporter thread, else the app will get killed after expiration // (def: 10mins) timeout. @@ -306,15 +309,15 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, val t = new Thread { override def run() { while (userThread.isAlive) { - if (yarnAllocator.getNumWorkersFailed >= maxNumWorkerFailures) { + if (yarnAllocator.getNumExecutorsFailed >= maxNumExecutorFailures) { finishApplicationMaster(FinalApplicationStatus.FAILED, - "max number of worker failures reached") + "max number of executor failures reached") } - val missingWorkerCount = args.numWorkers - yarnAllocator.getNumWorkersRunning - if (missingWorkerCount > 0) { + val missingExecutorCount = args.numExecutors - yarnAllocator.getNumExecutorsRunning + if (missingExecutorCount > 0) { logInfo("Allocating %d containers to make up for (potentially) lost containers". - format(missingWorkerCount)) - yarnAllocator.allocateContainers(missingWorkerCount) + format(missingExecutorCount)) + yarnAllocator.allocateContainers(missingExecutorCount) } else sendProgress() Thread.sleep(sleepTime) diff --git a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/Client.scala b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/Client.scala index 71a64ecf5879a..0179b0600c61f 100644 --- a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/Client.scala +++ b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/Client.scala @@ -167,6 +167,9 @@ class Client(clientArgs: ClientArguments, hadoopConf: Configuration, spConf: Spa object Client { def main(argStrings: Array[String]) { + println("WARNING: This client is deprecated and will be removed in a future version of Spark.") + println("Use ./bin/spark-submit with \"--master yarn\"") + // Set an env variable indicating we are running in YARN mode. // Note that anything with SPARK prefix gets propagated to all (remote) processes System.setProperty("SPARK_YARN_MODE", "true") diff --git a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ExecutorLauncher.scala b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ExecutorLauncher.scala new file mode 100644 index 0000000000000..7b0e020263835 --- /dev/null +++ b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ExecutorLauncher.scala @@ -0,0 +1,272 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.yarn + +import java.net.Socket +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.net.NetUtils +import org.apache.hadoop.yarn.api._ +import org.apache.hadoop.yarn.api.records._ +import org.apache.hadoop.yarn.api.protocolrecords._ +import org.apache.hadoop.yarn.conf.YarnConfiguration +import org.apache.hadoop.yarn.ipc.YarnRPC +import org.apache.hadoop.yarn.util.{ConverterUtils, Records} +import akka.actor._ +import akka.remote._ +import akka.actor.Terminated +import org.apache.spark.{Logging, SecurityManager, SparkConf, SparkContext} +import org.apache.spark.util.{Utils, AkkaUtils} +import org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend +import org.apache.spark.scheduler.SplitInfo + +class ExecutorLauncher(args: ApplicationMasterArguments, conf: Configuration, sparkConf: SparkConf) + extends Logging { + + def this(args: ApplicationMasterArguments, sparkConf: SparkConf) = this(args, new Configuration(), sparkConf) + + def this(args: ApplicationMasterArguments) = this(args, new SparkConf()) + + private val rpc: YarnRPC = YarnRPC.create(conf) + private var resourceManager: AMRMProtocol = _ + private var appAttemptId: ApplicationAttemptId = _ + private var reporterThread: Thread = _ + private val yarnConf: YarnConfiguration = new YarnConfiguration(conf) + + private var yarnAllocator: YarnAllocationHandler = _ + private var driverClosed:Boolean = false + + val securityManager = new SecurityManager(sparkConf) + val actorSystem : ActorSystem = AkkaUtils.createActorSystem("sparkYarnAM", Utils.localHostName, 0, + conf = sparkConf, securityManager = securityManager)._1 + var actor: ActorRef = _ + + // This actor just working as a monitor to watch on Driver Actor. + class MonitorActor(driverUrl: String) extends Actor { + + var driver: ActorSelection = _ + + override def preStart() { + logInfo("Listen to driver: " + driverUrl) + driver = context.actorSelection(driverUrl) + // Send a hello message thus the connection is actually established, thus we can monitor Lifecycle Events. + driver ! "Hello" + context.system.eventStream.subscribe(self, classOf[RemotingLifecycleEvent]) + } + + override def receive = { + case x: DisassociatedEvent => + logInfo(s"Driver terminated or disconnected! Shutting down. $x") + driverClosed = true + } + } + + def run() { + + // Setup the directories so things go to yarn approved directories rather + // then user specified and /tmp. + System.setProperty("spark.local.dir", getLocalDirs()) + + appAttemptId = getApplicationAttemptId() + resourceManager = registerWithResourceManager() + val appMasterResponse: RegisterApplicationMasterResponse = registerApplicationMaster() + + // Compute number of threads for akka + val minimumMemory = appMasterResponse.getMinimumResourceCapability().getMemory() + + if (minimumMemory > 0) { + val mem = args.executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD + val numCore = (mem / minimumMemory) + (if (0 != (mem % minimumMemory)) 1 else 0) + + if (numCore > 0) { + // do not override - hits https://issues.apache.org/jira/browse/HADOOP-8406 + // TODO: Uncomment when hadoop is on a version which has this fixed. + // args.workerCores = numCore + } + } + + waitForSparkMaster() + + // Allocate all containers + allocateExecutors() + + // Launch a progress reporter thread, else app will get killed after expiration (def: 10mins) timeout + // ensure that progress is sent before YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS elapse. + + val timeoutInterval = yarnConf.getInt(YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS, 120000) + // we want to be reasonably responsive without causing too many requests to RM. + val schedulerInterval = + System.getProperty("spark.yarn.scheduler.heartbeat.interval-ms", "5000").toLong + + // must be <= timeoutInterval / 2. + val interval = math.min(timeoutInterval / 2, schedulerInterval) + + reporterThread = launchReporterThread(interval) + + // Wait for the reporter thread to Finish. + reporterThread.join() + + finishApplicationMaster(FinalApplicationStatus.SUCCEEDED) + actorSystem.shutdown() + + logInfo("Exited") + System.exit(0) + } + + /** Get the Yarn approved local directories. */ + private def getLocalDirs(): String = { + // Hadoop 0.23 and 2.x have different Environment variable names for the + // local dirs, so lets check both. We assume one of the 2 is set. + // LOCAL_DIRS => 2.X, YARN_LOCAL_DIRS => 0.23.X + val localDirs = Option(System.getenv("YARN_LOCAL_DIRS")) + .orElse(Option(System.getenv("LOCAL_DIRS"))) + + localDirs match { + case None => throw new Exception("Yarn Local dirs can't be empty") + case Some(l) => l + } + } + + private def getApplicationAttemptId(): ApplicationAttemptId = { + val envs = System.getenv() + val containerIdString = envs.get(ApplicationConstants.AM_CONTAINER_ID_ENV) + val containerId = ConverterUtils.toContainerId(containerIdString) + val appAttemptId = containerId.getApplicationAttemptId() + logInfo("ApplicationAttemptId: " + appAttemptId) + appAttemptId + } + + private def registerWithResourceManager(): AMRMProtocol = { + val rmAddress = NetUtils.createSocketAddr(yarnConf.get( + YarnConfiguration.RM_SCHEDULER_ADDRESS, + YarnConfiguration.DEFAULT_RM_SCHEDULER_ADDRESS)) + logInfo("Connecting to ResourceManager at " + rmAddress) + rpc.getProxy(classOf[AMRMProtocol], rmAddress, conf).asInstanceOf[AMRMProtocol] + } + + private def registerApplicationMaster(): RegisterApplicationMasterResponse = { + logInfo("Registering the ApplicationMaster") + val appMasterRequest = Records.newRecord(classOf[RegisterApplicationMasterRequest]) + .asInstanceOf[RegisterApplicationMasterRequest] + appMasterRequest.setApplicationAttemptId(appAttemptId) + // Setting this to master host,port - so that the ApplicationReport at client has some sensible info. + // Users can then monitor stderr/stdout on that node if required. + appMasterRequest.setHost(Utils.localHostName()) + appMasterRequest.setRpcPort(0) + // What do we provide here ? Might make sense to expose something sensible later ? + appMasterRequest.setTrackingUrl("") + resourceManager.registerApplicationMaster(appMasterRequest) + } + + private def waitForSparkMaster() { + logInfo("Waiting for spark driver to be reachable.") + var driverUp = false + val hostport = args.userArgs(0) + val (driverHost, driverPort) = Utils.parseHostPort(hostport) + while(!driverUp) { + try { + val socket = new Socket(driverHost, driverPort) + socket.close() + logInfo("Master now available: " + driverHost + ":" + driverPort) + driverUp = true + } catch { + case e: Exception => + logError("Failed to connect to driver at " + driverHost + ":" + driverPort) + Thread.sleep(100) + } + } + sparkConf.set("spark.driver.host", driverHost) + sparkConf.set("spark.driver.port", driverPort.toString) + + val driverUrl = "akka.tcp://spark@%s:%s/user/%s".format( + driverHost, driverPort.toString, CoarseGrainedSchedulerBackend.ACTOR_NAME) + + actor = actorSystem.actorOf(Props(new MonitorActor(driverUrl)), name = "YarnAM") + } + + + private def allocateExecutors() { + + // Fixme: should get preferredNodeLocationData from SparkContext, just fake a empty one for now. + val preferredNodeLocationData: scala.collection.Map[String, scala.collection.Set[SplitInfo]] = + scala.collection.immutable.Map() + + yarnAllocator = YarnAllocationHandler.newAllocator(yarnConf, resourceManager, appAttemptId, + args, preferredNodeLocationData, sparkConf) + + logInfo("Allocating " + args.numExecutors + " executors.") + // Wait until all containers have finished + // TODO: This is a bit ugly. Can we make it nicer? + // TODO: Handle container failure + while ((yarnAllocator.getNumExecutorsRunning < args.numExecutors) && (!driverClosed)) { + yarnAllocator.allocateContainers(math.max(args.numExecutors - yarnAllocator.getNumExecutorsRunning, 0)) + Thread.sleep(100) + } + + logInfo("All executors have launched.") + + } + + // TODO: We might want to extend this to allocate more containers in case they die ! + private def launchReporterThread(_sleepTime: Long): Thread = { + val sleepTime = if (_sleepTime <= 0 ) 0 else _sleepTime + + val t = new Thread { + override def run() { + while (!driverClosed) { + val missingExecutorCount = args.numExecutors - yarnAllocator.getNumExecutorsRunning + if (missingExecutorCount > 0) { + logInfo("Allocating " + missingExecutorCount + " containers to make up for (potentially ?) lost containers") + yarnAllocator.allocateContainers(missingExecutorCount) + } + else sendProgress() + Thread.sleep(sleepTime) + } + } + } + // setting to daemon status, though this is usually not a good idea. + t.setDaemon(true) + t.start() + logInfo("Started progress reporter thread - sleep time : " + sleepTime) + t + } + + private def sendProgress() { + logDebug("Sending progress") + // simulated with an allocate request with no nodes requested ... + yarnAllocator.allocateContainers(0) + } + + def finishApplicationMaster(status: FinalApplicationStatus) { + + logInfo("finish ApplicationMaster with " + status) + val finishReq = Records.newRecord(classOf[FinishApplicationMasterRequest]) + .asInstanceOf[FinishApplicationMasterRequest] + finishReq.setAppAttemptId(appAttemptId) + finishReq.setFinishApplicationStatus(status) + resourceManager.finishApplicationMaster(finishReq) + } + +} + + +object ExecutorLauncher { + def main(argStrings: Array[String]) { + val args = new ApplicationMasterArguments(argStrings) + new ExecutorLauncher(args).run() + } +} diff --git a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala new file mode 100644 index 0000000000000..3469b7decedf6 --- /dev/null +++ b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.yarn + +import java.net.URI +import java.nio.ByteBuffer +import java.security.PrivilegedExceptionAction + +import scala.collection.JavaConversions._ +import scala.collection.mutable.HashMap + +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.io.DataOutputBuffer +import org.apache.hadoop.net.NetUtils +import org.apache.hadoop.security.UserGroupInformation +import org.apache.hadoop.yarn.api._ +import org.apache.hadoop.yarn.api.records._ +import org.apache.hadoop.yarn.api.protocolrecords._ +import org.apache.hadoop.yarn.conf.YarnConfiguration +import org.apache.hadoop.yarn.ipc.YarnRPC +import org.apache.hadoop.yarn.util.{Apps, ConverterUtils, Records, ProtoUtils} + +import org.apache.spark.{SparkConf, Logging} + + +class ExecutorRunnable( + container: Container, + conf: Configuration, + spConf: SparkConf, + masterAddress: String, + slaveId: String, + hostname: String, + executorMemory: Int, + executorCores: Int) + extends Runnable with ExecutorRunnableUtil with Logging { + + var rpc: YarnRPC = YarnRPC.create(conf) + var cm: ContainerManager = _ + val sparkConf = spConf + val yarnConf: YarnConfiguration = new YarnConfiguration(conf) + + def run = { + logInfo("Starting Executor Container") + cm = connectToCM + startContainer + } + + def startContainer = { + logInfo("Setting up ContainerLaunchContext") + + val ctx = Records.newRecord(classOf[ContainerLaunchContext]) + .asInstanceOf[ContainerLaunchContext] + + ctx.setContainerId(container.getId()) + ctx.setResource(container.getResource()) + val localResources = prepareLocalResources + ctx.setLocalResources(localResources) + + val env = prepareEnvironment + ctx.setEnvironment(env) + + ctx.setUser(UserGroupInformation.getCurrentUser().getShortUserName()) + + val credentials = UserGroupInformation.getCurrentUser().getCredentials() + val dob = new DataOutputBuffer() + credentials.writeTokenStorageToStream(dob) + ctx.setContainerTokens(ByteBuffer.wrap(dob.getData())) + + val commands = prepareCommand(masterAddress, slaveId, hostname, executorMemory, executorCores, + localResources.contains(ClientBase.LOG4J_PROP)) + logInfo("Setting up executor with commands: " + commands) + ctx.setCommands(commands) + + // Send the start request to the ContainerManager + val startReq = Records.newRecord(classOf[StartContainerRequest]) + .asInstanceOf[StartContainerRequest] + startReq.setContainerLaunchContext(ctx) + cm.startContainer(startReq) + } + + def connectToCM: ContainerManager = { + val cmHostPortStr = container.getNodeId().getHost() + ":" + container.getNodeId().getPort() + val cmAddress = NetUtils.createSocketAddr(cmHostPortStr) + logInfo("Connecting to ContainerManager at " + cmHostPortStr) + + // Use doAs and remoteUser here so we can add the container token and not pollute the current + // users credentials with all of the individual container tokens + val user = UserGroupInformation.createRemoteUser(container.getId().toString()) + val containerToken = container.getContainerToken() + if (containerToken != null) { + user.addToken(ProtoUtils.convertFromProtoFormat(containerToken, cmAddress)) + } + + val proxy = user + .doAs(new PrivilegedExceptionAction[ContainerManager] { + def run: ContainerManager = { + rpc.getProxy(classOf[ContainerManager], cmAddress, conf).asInstanceOf[ContainerManager] + } + }) + proxy + } + +} diff --git a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/WorkerLauncher.scala b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/WorkerLauncher.scala deleted file mode 100644 index b735d01df8097..0000000000000 --- a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/WorkerLauncher.scala +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.deploy.yarn - -import java.net.Socket -import org.apache.hadoop.conf.Configuration -import org.apache.hadoop.net.NetUtils -import org.apache.hadoop.yarn.api._ -import org.apache.hadoop.yarn.api.records._ -import org.apache.hadoop.yarn.api.protocolrecords._ -import org.apache.hadoop.yarn.conf.YarnConfiguration -import org.apache.hadoop.yarn.ipc.YarnRPC -import org.apache.hadoop.yarn.util.{ConverterUtils, Records} -import akka.actor._ -import akka.remote._ -import akka.actor.Terminated -import org.apache.spark.{Logging, SecurityManager, SparkConf, SparkContext} -import org.apache.spark.util.{Utils, AkkaUtils} -import org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend -import org.apache.spark.scheduler.SplitInfo - -class WorkerLauncher(args: ApplicationMasterArguments, conf: Configuration, sparkConf: SparkConf) - extends Logging { - - def this(args: ApplicationMasterArguments, sparkConf: SparkConf) = this(args, new Configuration(), sparkConf) - - def this(args: ApplicationMasterArguments) = this(args, new SparkConf()) - - private val rpc: YarnRPC = YarnRPC.create(conf) - private var resourceManager: AMRMProtocol = _ - private var appAttemptId: ApplicationAttemptId = _ - private var reporterThread: Thread = _ - private val yarnConf: YarnConfiguration = new YarnConfiguration(conf) - - private var yarnAllocator: YarnAllocationHandler = _ - private var driverClosed:Boolean = false - - val securityManager = new SecurityManager(sparkConf) - val actorSystem : ActorSystem = AkkaUtils.createActorSystem("sparkYarnAM", Utils.localHostName, 0, - conf = sparkConf, securityManager = securityManager)._1 - var actor: ActorRef = _ - - // This actor just working as a monitor to watch on Driver Actor. - class MonitorActor(driverUrl: String) extends Actor { - - var driver: ActorSelection = _ - - override def preStart() { - logInfo("Listen to driver: " + driverUrl) - driver = context.actorSelection(driverUrl) - // Send a hello message thus the connection is actually established, thus we can monitor Lifecycle Events. - driver ! "Hello" - context.system.eventStream.subscribe(self, classOf[RemotingLifecycleEvent]) - } - - override def receive = { - case x: DisassociatedEvent => - logInfo(s"Driver terminated or disconnected! Shutting down. $x") - driverClosed = true - } - } - - def run() { - - // Setup the directories so things go to yarn approved directories rather - // then user specified and /tmp. - System.setProperty("spark.local.dir", getLocalDirs()) - - appAttemptId = getApplicationAttemptId() - resourceManager = registerWithResourceManager() - val appMasterResponse: RegisterApplicationMasterResponse = registerApplicationMaster() - - // Compute number of threads for akka - val minimumMemory = appMasterResponse.getMinimumResourceCapability().getMemory() - - if (minimumMemory > 0) { - val mem = args.workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD - val numCore = (mem / minimumMemory) + (if (0 != (mem % minimumMemory)) 1 else 0) - - if (numCore > 0) { - // do not override - hits https://issues.apache.org/jira/browse/HADOOP-8406 - // TODO: Uncomment when hadoop is on a version which has this fixed. - // args.workerCores = numCore - } - } - - waitForSparkMaster() - - // Allocate all containers - allocateWorkers() - - // Launch a progress reporter thread, else app will get killed after expiration (def: 10mins) timeout - // ensure that progress is sent before YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS elapse. - - val timeoutInterval = yarnConf.getInt(YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS, 120000) - // we want to be reasonably responsive without causing too many requests to RM. - val schedulerInterval = - System.getProperty("spark.yarn.scheduler.heartbeat.interval-ms", "5000").toLong - - // must be <= timeoutInterval / 2. - val interval = math.min(timeoutInterval / 2, schedulerInterval) - - reporterThread = launchReporterThread(interval) - - // Wait for the reporter thread to Finish. - reporterThread.join() - - finishApplicationMaster(FinalApplicationStatus.SUCCEEDED) - actorSystem.shutdown() - - logInfo("Exited") - System.exit(0) - } - - /** Get the Yarn approved local directories. */ - private def getLocalDirs(): String = { - // Hadoop 0.23 and 2.x have different Environment variable names for the - // local dirs, so lets check both. We assume one of the 2 is set. - // LOCAL_DIRS => 2.X, YARN_LOCAL_DIRS => 0.23.X - val localDirs = Option(System.getenv("YARN_LOCAL_DIRS")) - .orElse(Option(System.getenv("LOCAL_DIRS"))) - - localDirs match { - case None => throw new Exception("Yarn Local dirs can't be empty") - case Some(l) => l - } - } - - private def getApplicationAttemptId(): ApplicationAttemptId = { - val envs = System.getenv() - val containerIdString = envs.get(ApplicationConstants.AM_CONTAINER_ID_ENV) - val containerId = ConverterUtils.toContainerId(containerIdString) - val appAttemptId = containerId.getApplicationAttemptId() - logInfo("ApplicationAttemptId: " + appAttemptId) - appAttemptId - } - - private def registerWithResourceManager(): AMRMProtocol = { - val rmAddress = NetUtils.createSocketAddr(yarnConf.get( - YarnConfiguration.RM_SCHEDULER_ADDRESS, - YarnConfiguration.DEFAULT_RM_SCHEDULER_ADDRESS)) - logInfo("Connecting to ResourceManager at " + rmAddress) - rpc.getProxy(classOf[AMRMProtocol], rmAddress, conf).asInstanceOf[AMRMProtocol] - } - - private def registerApplicationMaster(): RegisterApplicationMasterResponse = { - logInfo("Registering the ApplicationMaster") - val appMasterRequest = Records.newRecord(classOf[RegisterApplicationMasterRequest]) - .asInstanceOf[RegisterApplicationMasterRequest] - appMasterRequest.setApplicationAttemptId(appAttemptId) - // Setting this to master host,port - so that the ApplicationReport at client has some sensible info. - // Users can then monitor stderr/stdout on that node if required. - appMasterRequest.setHost(Utils.localHostName()) - appMasterRequest.setRpcPort(0) - // What do we provide here ? Might make sense to expose something sensible later ? - appMasterRequest.setTrackingUrl("") - resourceManager.registerApplicationMaster(appMasterRequest) - } - - private def waitForSparkMaster() { - logInfo("Waiting for spark driver to be reachable.") - var driverUp = false - val hostport = args.userArgs(0) - val (driverHost, driverPort) = Utils.parseHostPort(hostport) - while(!driverUp) { - try { - val socket = new Socket(driverHost, driverPort) - socket.close() - logInfo("Master now available: " + driverHost + ":" + driverPort) - driverUp = true - } catch { - case e: Exception => - logError("Failed to connect to driver at " + driverHost + ":" + driverPort) - Thread.sleep(100) - } - } - sparkConf.set("spark.driver.host", driverHost) - sparkConf.set("spark.driver.port", driverPort.toString) - - val driverUrl = "akka.tcp://spark@%s:%s/user/%s".format( - driverHost, driverPort.toString, CoarseGrainedSchedulerBackend.ACTOR_NAME) - - actor = actorSystem.actorOf(Props(new MonitorActor(driverUrl)), name = "YarnAM") - } - - - private def allocateWorkers() { - - // Fixme: should get preferredNodeLocationData from SparkContext, just fake a empty one for now. - val preferredNodeLocationData: scala.collection.Map[String, scala.collection.Set[SplitInfo]] = - scala.collection.immutable.Map() - - yarnAllocator = YarnAllocationHandler.newAllocator(yarnConf, resourceManager, appAttemptId, - args, preferredNodeLocationData, sparkConf) - - logInfo("Allocating " + args.numWorkers + " workers.") - // Wait until all containers have finished - // TODO: This is a bit ugly. Can we make it nicer? - // TODO: Handle container failure - while ((yarnAllocator.getNumWorkersRunning < args.numWorkers) && (!driverClosed)) { - yarnAllocator.allocateContainers(math.max(args.numWorkers - yarnAllocator.getNumWorkersRunning, 0)) - Thread.sleep(100) - } - - logInfo("All workers have launched.") - - } - - // TODO: We might want to extend this to allocate more containers in case they die ! - private def launchReporterThread(_sleepTime: Long): Thread = { - val sleepTime = if (_sleepTime <= 0 ) 0 else _sleepTime - - val t = new Thread { - override def run() { - while (!driverClosed) { - val missingWorkerCount = args.numWorkers - yarnAllocator.getNumWorkersRunning - if (missingWorkerCount > 0) { - logInfo("Allocating " + missingWorkerCount + " containers to make up for (potentially ?) lost containers") - yarnAllocator.allocateContainers(missingWorkerCount) - } - else sendProgress() - Thread.sleep(sleepTime) - } - } - } - // setting to daemon status, though this is usually not a good idea. - t.setDaemon(true) - t.start() - logInfo("Started progress reporter thread - sleep time : " + sleepTime) - t - } - - private def sendProgress() { - logDebug("Sending progress") - // simulated with an allocate request with no nodes requested ... - yarnAllocator.allocateContainers(0) - } - - def finishApplicationMaster(status: FinalApplicationStatus) { - - logInfo("finish ApplicationMaster with " + status) - val finishReq = Records.newRecord(classOf[FinishApplicationMasterRequest]) - .asInstanceOf[FinishApplicationMasterRequest] - finishReq.setAppAttemptId(appAttemptId) - finishReq.setFinishApplicationStatus(status) - resourceManager.finishApplicationMaster(finishReq) - } - -} - - -object WorkerLauncher { - def main(argStrings: Array[String]) { - val args = new ApplicationMasterArguments(argStrings) - new WorkerLauncher(args).run() - } -} diff --git a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnable.scala b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnable.scala deleted file mode 100644 index 8c686e393f4f8..0000000000000 --- a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnable.scala +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.deploy.yarn - -import java.net.URI -import java.nio.ByteBuffer -import java.security.PrivilegedExceptionAction - -import scala.collection.JavaConversions._ -import scala.collection.mutable.HashMap - -import org.apache.hadoop.conf.Configuration -import org.apache.hadoop.io.DataOutputBuffer -import org.apache.hadoop.net.NetUtils -import org.apache.hadoop.security.UserGroupInformation -import org.apache.hadoop.yarn.api._ -import org.apache.hadoop.yarn.api.records._ -import org.apache.hadoop.yarn.api.protocolrecords._ -import org.apache.hadoop.yarn.conf.YarnConfiguration -import org.apache.hadoop.yarn.ipc.YarnRPC -import org.apache.hadoop.yarn.util.{Apps, ConverterUtils, Records, ProtoUtils} - -import org.apache.spark.{SparkConf, Logging} - - -class WorkerRunnable( - container: Container, - conf: Configuration, - spConf: SparkConf, - masterAddress: String, - slaveId: String, - hostname: String, - workerMemory: Int, - workerCores: Int) - extends Runnable with WorkerRunnableUtil with Logging { - - var rpc: YarnRPC = YarnRPC.create(conf) - var cm: ContainerManager = _ - val sparkConf = spConf - val yarnConf: YarnConfiguration = new YarnConfiguration(conf) - - def run = { - logInfo("Starting Worker Container") - cm = connectToCM - startContainer - } - - def startContainer = { - logInfo("Setting up ContainerLaunchContext") - - val ctx = Records.newRecord(classOf[ContainerLaunchContext]) - .asInstanceOf[ContainerLaunchContext] - - ctx.setContainerId(container.getId()) - ctx.setResource(container.getResource()) - val localResources = prepareLocalResources - ctx.setLocalResources(localResources) - - val env = prepareEnvironment - ctx.setEnvironment(env) - - ctx.setUser(UserGroupInformation.getCurrentUser().getShortUserName()) - - val credentials = UserGroupInformation.getCurrentUser().getCredentials() - val dob = new DataOutputBuffer() - credentials.writeTokenStorageToStream(dob) - ctx.setContainerTokens(ByteBuffer.wrap(dob.getData())) - - val commands = prepareCommand(masterAddress, slaveId, hostname, workerMemory, workerCores) - logInfo("Setting up worker with commands: " + commands) - ctx.setCommands(commands) - - // Send the start request to the ContainerManager - val startReq = Records.newRecord(classOf[StartContainerRequest]) - .asInstanceOf[StartContainerRequest] - startReq.setContainerLaunchContext(ctx) - cm.startContainer(startReq) - } - - def connectToCM: ContainerManager = { - val cmHostPortStr = container.getNodeId().getHost() + ":" + container.getNodeId().getPort() - val cmAddress = NetUtils.createSocketAddr(cmHostPortStr) - logInfo("Connecting to ContainerManager at " + cmHostPortStr) - - // Use doAs and remoteUser here so we can add the container token and not pollute the current - // users credentials with all of the individual container tokens - val user = UserGroupInformation.createRemoteUser(container.getId().toString()) - val containerToken = container.getContainerToken() - if (containerToken != null) { - user.addToken(ProtoUtils.convertFromProtoFormat(containerToken, cmAddress)) - } - - val proxy = user - .doAs(new PrivilegedExceptionAction[ContainerManager] { - def run: ContainerManager = { - rpc.getProxy(classOf[ContainerManager], cmAddress, conf).asInstanceOf[ContainerManager] - } - }) - proxy - } - -} diff --git a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocationHandler.scala b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocationHandler.scala index e91257be8ed00..2056667af50cb 100644 --- a/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocationHandler.scala +++ b/yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocationHandler.scala @@ -58,9 +58,9 @@ private[yarn] class YarnAllocationHandler( val conf: Configuration, val resourceManager: AMRMProtocol, val appAttemptId: ApplicationAttemptId, - val maxWorkers: Int, - val workerMemory: Int, - val workerCores: Int, + val maxExecutors: Int, + val executorMemory: Int, + val executorCores: Int, val preferredHostToCount: Map[String, Int], val preferredRackToCount: Map[String, Int], val sparkConf: SparkConf) @@ -84,39 +84,39 @@ private[yarn] class YarnAllocationHandler( // Containers to be released in next request to RM private val pendingReleaseContainers = new ConcurrentHashMap[ContainerId, Boolean] - private val numWorkersRunning = new AtomicInteger() - // Used to generate a unique id per worker - private val workerIdCounter = new AtomicInteger() + private val numExecutorsRunning = new AtomicInteger() + // Used to generate a unique id per executor + private val executorIdCounter = new AtomicInteger() private val lastResponseId = new AtomicInteger() - private val numWorkersFailed = new AtomicInteger() + private val numExecutorsFailed = new AtomicInteger() - def getNumWorkersRunning: Int = numWorkersRunning.intValue + def getNumExecutorsRunning: Int = numExecutorsRunning.intValue - def getNumWorkersFailed: Int = numWorkersFailed.intValue + def getNumExecutorsFailed: Int = numExecutorsFailed.intValue def isResourceConstraintSatisfied(container: Container): Boolean = { - container.getResource.getMemory >= (workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD) + container.getResource.getMemory >= (executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD) } - def allocateContainers(workersToRequest: Int) { + def allocateContainers(executorsToRequest: Int) { // We need to send the request only once from what I understand ... but for now, not modifying // this much. // Keep polling the Resource Manager for containers - val amResp = allocateWorkerResources(workersToRequest).getAMResponse + val amResp = allocateExecutorResources(executorsToRequest).getAMResponse val _allocatedContainers = amResp.getAllocatedContainers() if (_allocatedContainers.size > 0) { logDebug(""" Allocated containers: %d - Current worker count: %d + Current executor count: %d Containers released: %s Containers to be released: %s Cluster resources: %s """.format( _allocatedContainers.size, - numWorkersRunning.get(), + numExecutorsRunning.get(), releasedContainerList, pendingReleaseContainers, amResp.getAvailableResources)) @@ -221,59 +221,59 @@ private[yarn] class YarnAllocationHandler( // Run each of the allocated containers for (container <- allocatedContainers) { - val numWorkersRunningNow = numWorkersRunning.incrementAndGet() - val workerHostname = container.getNodeId.getHost + val numExecutorsRunningNow = numExecutorsRunning.incrementAndGet() + val executorHostname = container.getNodeId.getHost val containerId = container.getId assert( - container.getResource.getMemory >= (workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD)) + container.getResource.getMemory >= (executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD)) - if (numWorkersRunningNow > maxWorkers) { + if (numExecutorsRunningNow > maxExecutors) { logInfo("""Ignoring container %s at host %s, since we already have the required number of - containers for it.""".format(containerId, workerHostname)) + containers for it.""".format(containerId, executorHostname)) releasedContainerList.add(containerId) // reset counter back to old value. - numWorkersRunning.decrementAndGet() + numExecutorsRunning.decrementAndGet() } else { // Deallocate + allocate can result in reusing id's wrongly - so use a different counter - // (workerIdCounter) - val workerId = workerIdCounter.incrementAndGet().toString + // (executorIdCounter) + val executorId = executorIdCounter.incrementAndGet().toString val driverUrl = "akka.tcp://spark@%s:%s/user/%s".format( sparkConf.get("spark.driver.host"), sparkConf.get("spark.driver.port"), CoarseGrainedSchedulerBackend.ACTOR_NAME) - logInfo("launching container on " + containerId + " host " + workerHostname) + logInfo("launching container on " + containerId + " host " + executorHostname) // Just to be safe, simply remove it from pendingReleaseContainers. // Should not be there, but .. pendingReleaseContainers.remove(containerId) - val rack = YarnAllocationHandler.lookupRack(conf, workerHostname) + val rack = YarnAllocationHandler.lookupRack(conf, executorHostname) allocatedHostToContainersMap.synchronized { - val containerSet = allocatedHostToContainersMap.getOrElseUpdate(workerHostname, + val containerSet = allocatedHostToContainersMap.getOrElseUpdate(executorHostname, new HashSet[ContainerId]()) containerSet += containerId - allocatedContainerToHostMap.put(containerId, workerHostname) + allocatedContainerToHostMap.put(containerId, executorHostname) if (rack != null) { allocatedRackCount.put(rack, allocatedRackCount.getOrElse(rack, 0) + 1) } } new Thread( - new WorkerRunnable(container, conf, sparkConf, driverUrl, workerId, - workerHostname, workerMemory, workerCores) + new ExecutorRunnable(container, conf, sparkConf, driverUrl, executorId, + executorHostname, executorMemory, executorCores) ).start() } } logDebug(""" Finished processing %d containers. - Current number of workers running: %d, + Current number of executors running: %d, releasedContainerList: %s, pendingReleaseContainers: %s """.format( allocatedContainers.size, - numWorkersRunning.get(), + numExecutorsRunning.get(), releasedContainerList, pendingReleaseContainers)) } @@ -292,7 +292,7 @@ private[yarn] class YarnAllocationHandler( } else { // Simply decrement count - next iteration of ReporterThread will take care of allocating. - numWorkersRunning.decrementAndGet() + numExecutorsRunning.decrementAndGet() logInfo("Completed container %s (state: %s, exit status: %s)".format( containerId, completedContainer.getState, @@ -302,7 +302,7 @@ private[yarn] class YarnAllocationHandler( // now I think its ok as none of the containers are expected to exit if (completedContainer.getExitStatus() != 0) { logInfo("Container marked as failed: " + containerId) - numWorkersFailed.incrementAndGet() + numExecutorsFailed.incrementAndGet() } } @@ -332,12 +332,12 @@ private[yarn] class YarnAllocationHandler( } logDebug(""" Finished processing %d completed containers. - Current number of workers running: %d, + Current number of executors running: %d, releasedContainerList: %s, pendingReleaseContainers: %s """.format( completedContainers.size, - numWorkersRunning.get(), + numExecutorsRunning.get(), releasedContainerList, pendingReleaseContainers)) } @@ -387,18 +387,18 @@ private[yarn] class YarnAllocationHandler( retval } - private def allocateWorkerResources(numWorkers: Int): AllocateResponse = { + private def allocateExecutorResources(numExecutors: Int): AllocateResponse = { var resourceRequests: List[ResourceRequest] = null // default. - if (numWorkers <= 0 || preferredHostToCount.isEmpty) { - logDebug("numWorkers: " + numWorkers + ", host preferences: " + preferredHostToCount.isEmpty) + if (numExecutors <= 0 || preferredHostToCount.isEmpty) { + logDebug("numExecutors: " + numExecutors + ", host preferences: " + preferredHostToCount.isEmpty) resourceRequests = List( - createResourceRequest(AllocationType.ANY, null, numWorkers, YarnAllocationHandler.PRIORITY)) + createResourceRequest(AllocationType.ANY, null, numExecutors, YarnAllocationHandler.PRIORITY)) } else { - // request for all hosts in preferred nodes and for numWorkers - + // request for all hosts in preferred nodes and for numExecutors - // candidates.size, request by default allocation policy. val hostContainerRequests: ArrayBuffer[ResourceRequest] = new ArrayBuffer[ResourceRequest](preferredHostToCount.size) @@ -419,7 +419,7 @@ private[yarn] class YarnAllocationHandler( val anyContainerRequests: ResourceRequest = createResourceRequest( AllocationType.ANY, resource = null, - numWorkers, + numExecutors, YarnAllocationHandler.PRIORITY) val containerRequests: ArrayBuffer[ResourceRequest] = new ArrayBuffer[ResourceRequest]( @@ -441,9 +441,9 @@ private[yarn] class YarnAllocationHandler( val releasedContainerList = createReleasedContainerList() req.addAllReleases(releasedContainerList) - if (numWorkers > 0) { - logInfo("Allocating %d worker containers with %d of memory each.".format(numWorkers, - workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD)) + if (numExecutors > 0) { + logInfo("Allocating %d executor containers with %d of memory each.".format(numExecutors, + executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD)) } else { logDebug("Empty allocation req .. release : " + releasedContainerList) @@ -464,7 +464,7 @@ private[yarn] class YarnAllocationHandler( private def createResourceRequest( requestType: AllocationType.AllocationType, resource:String, - numWorkers: Int, + numExecutors: Int, priority: Int): ResourceRequest = { // If hostname specified, we need atleast two requests - node local and rack local. @@ -473,7 +473,7 @@ private[yarn] class YarnAllocationHandler( case AllocationType.HOST => { assert(YarnAllocationHandler.ANY_HOST != resource) val hostname = resource - val nodeLocal = createResourceRequestImpl(hostname, numWorkers, priority) + val nodeLocal = createResourceRequestImpl(hostname, numExecutors, priority) // Add to host->rack mapping YarnAllocationHandler.populateRackInfo(conf, hostname) @@ -482,10 +482,10 @@ private[yarn] class YarnAllocationHandler( } case AllocationType.RACK => { val rack = resource - createResourceRequestImpl(rack, numWorkers, priority) + createResourceRequestImpl(rack, numExecutors, priority) } case AllocationType.ANY => createResourceRequestImpl( - YarnAllocationHandler.ANY_HOST, numWorkers, priority) + YarnAllocationHandler.ANY_HOST, numExecutors, priority) case _ => throw new IllegalArgumentException( "Unexpected/unsupported request type: " + requestType) } @@ -493,13 +493,13 @@ private[yarn] class YarnAllocationHandler( private def createResourceRequestImpl( hostname:String, - numWorkers: Int, + numExecutors: Int, priority: Int): ResourceRequest = { val rsrcRequest = Records.newRecord(classOf[ResourceRequest]) val memCapability = Records.newRecord(classOf[Resource]) // There probably is some overhead here, let's reserve a bit more memory. - memCapability.setMemory(workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD) + memCapability.setMemory(executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD) rsrcRequest.setCapability(memCapability) val pri = Records.newRecord(classOf[Priority]) @@ -508,7 +508,7 @@ private[yarn] class YarnAllocationHandler( rsrcRequest.setHostName(hostname) - rsrcRequest.setNumContainers(java.lang.Math.max(numWorkers, 0)) + rsrcRequest.setNumContainers(java.lang.Math.max(numExecutors, 0)) rsrcRequest } @@ -560,9 +560,9 @@ object YarnAllocationHandler { conf, resourceManager, appAttemptId, - args.numWorkers, - args.workerMemory, - args.workerCores, + args.numExecutors, + args.executorMemory, + args.executorCores, Map[String, Int](), Map[String, Int](), sparkConf) @@ -582,9 +582,9 @@ object YarnAllocationHandler { conf, resourceManager, appAttemptId, - args.numWorkers, - args.workerMemory, - args.workerCores, + args.numExecutors, + args.executorMemory, + args.executorCores, hostToCount, rackToCount, sparkConf) @@ -594,9 +594,9 @@ object YarnAllocationHandler { conf: Configuration, resourceManager: AMRMProtocol, appAttemptId: ApplicationAttemptId, - maxWorkers: Int, - workerMemory: Int, - workerCores: Int, + maxExecutors: Int, + executorMemory: Int, + executorCores: Int, map: collection.Map[String, collection.Set[SplitInfo]], sparkConf: SparkConf): YarnAllocationHandler = { @@ -606,9 +606,9 @@ object YarnAllocationHandler { conf, resourceManager, appAttemptId, - maxWorkers, - workerMemory, - workerCores, + maxExecutors, + executorMemory, + executorCores, hostToCount, rackToCount, sparkConf) diff --git a/yarn/common/src/main/resources/log4j-spark-container.properties b/yarn/common/src/main/resources/log4j-spark-container.properties new file mode 100644 index 0000000000000..a1e37a0be27dd --- /dev/null +++ b/yarn/common/src/main/resources/log4j-spark-container.properties @@ -0,0 +1,24 @@ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. See accompanying LICENSE file. + +# Set everything to be logged to the console +log4j.rootCategory=INFO, console +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.target=System.err +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n + +# Settings to quiet third party logs that are too verbose +log4j.logger.org.eclipse.jetty=WARN +log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO +log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO diff --git a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMasterArguments.scala b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMasterArguments.scala index f76a5ddd39e90..25cc9016b10a6 100644 --- a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMasterArguments.scala +++ b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMasterArguments.scala @@ -24,9 +24,9 @@ class ApplicationMasterArguments(val args: Array[String]) { var userJar: String = null var userClass: String = null var userArgs: Seq[String] = Seq[String]() - var workerMemory = 1024 - var workerCores = 1 - var numWorkers = 2 + var executorMemory = 1024 + var executorCores = 1 + var numExecutors = 2 parseArgs(args.toList) @@ -36,7 +36,8 @@ class ApplicationMasterArguments(val args: Array[String]) { var args = inputArgs while (! args.isEmpty) { - + // --num-workers, --worker-memory, and --worker-cores are deprecated since 1.0, + // the properties with executor in their names are preferred. args match { case ("--jar") :: value :: tail => userJar = value @@ -50,16 +51,16 @@ class ApplicationMasterArguments(val args: Array[String]) { userArgsBuffer += value args = tail - case ("--num-workers") :: IntParam(value) :: tail => - numWorkers = value + case ("--num-workers" | "--num-executors") :: IntParam(value) :: tail => + numExecutors = value args = tail - case ("--worker-memory") :: IntParam(value) :: tail => - workerMemory = value + case ("--worker-memory" | "--executor-memory") :: IntParam(value) :: tail => + executorMemory = value args = tail - case ("--worker-cores") :: IntParam(value) :: tail => - workerCores = value + case ("--worker-cores" | "--executor-cores") :: IntParam(value) :: tail => + executorCores = value args = tail case Nil => @@ -86,9 +87,9 @@ class ApplicationMasterArguments(val args: Array[String]) { " --class CLASS_NAME Name of your application's main class (required)\n" + " --args ARGS Arguments to be passed to your application's main class.\n" + " Mutliple invocations are possible, each will be passed in order.\n" + - " --num-workers NUM Number of workers to start (Default: 2)\n" + - " --worker-cores NUM Number of cores for the workers (Default: 1)\n" + - " --worker-memory MEM Memory per Worker (e.g. 1000M, 2G) (Default: 1G)\n") + " --num-executors NUM Number of executors to start (Default: 2)\n" + + " --executor-cores NUM Number of cores for the executors (Default: 1)\n" + + " --executor-memory MEM Memory per executor (e.g. 1000M, 2G) (Default: 1G)\n") System.exit(exitCode) } } diff --git a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientArguments.scala b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientArguments.scala index 1f894a677d169..3e4c739e34fe9 100644 --- a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientArguments.scala +++ b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientArguments.scala @@ -33,9 +33,9 @@ class ClientArguments(val args: Array[String], val sparkConf: SparkConf) { var userJar: String = null var userClass: String = null var userArgs: Seq[String] = Seq[String]() - var workerMemory = 1024 // MB - var workerCores = 1 - var numWorkers = 2 + var executorMemory = 1024 // MB + var executorCores = 1 + var numExecutors = 2 var amQueue = sparkConf.get("QUEUE", "default") var amMemory: Int = 512 // MB var amClass: String = "org.apache.spark.deploy.yarn.ApplicationMaster" @@ -63,28 +63,46 @@ class ClientArguments(val args: Array[String], val sparkConf: SparkConf) { userClass = value args = tail - case ("--args") :: value :: tail => + case ("--args" | "--arg") :: value :: tail => + if (args(0) == "--args") { + println("--args is deprecated. Use --arg instead.") + } userArgsBuffer += value args = tail - case ("--master-class") :: value :: tail => + case ("--master-class" | "--am-class") :: value :: tail => + if (args(0) == "--master-class") { + println("--master-class is deprecated. Use --am-class instead.") + } amClass = value args = tail - case ("--master-memory") :: MemoryParam(value) :: tail => + case ("--master-memory" | "--driver-memory") :: MemoryParam(value) :: tail => + if (args(0) == "--master-memory") { + println("--master-memory is deprecated. Use --driver-memory instead.") + } amMemory = value args = tail - case ("--num-workers") :: IntParam(value) :: tail => - numWorkers = value + case ("--num-workers" | "--num-executors") :: IntParam(value) :: tail => + if (args(0) == "--num-workers") { + println("--num-workers is deprecated. Use --num-executors instead.") + } + numExecutors = value args = tail - case ("--worker-memory") :: MemoryParam(value) :: tail => - workerMemory = value + case ("--worker-memory" | "--executor-memory") :: MemoryParam(value) :: tail => + if (args(0) == "--worker-memory") { + println("--worker-memory is deprecated. Use --executor-memory instead.") + } + executorMemory = value args = tail - case ("--worker-cores") :: IntParam(value) :: tail => - workerCores = value + case ("--worker-cores" | "--executor-cores") :: IntParam(value) :: tail => + if (args(0) == "--worker-cores") { + println("--worker-cores is deprecated. Use --executor-cores instead.") + } + executorCores = value args = tail case ("--queue") :: value :: tail => @@ -131,13 +149,12 @@ class ClientArguments(val args: Array[String], val sparkConf: SparkConf) { "Options:\n" + " --jar JAR_PATH Path to your application's JAR file (required in yarn-cluster mode)\n" + " --class CLASS_NAME Name of your application's main class (required)\n" + - " --args ARGS Arguments to be passed to your application's main class.\n" + - " Mutliple invocations are possible, each will be passed in order.\n" + - " --num-workers NUM Number of workers to start (Default: 2)\n" + - " --worker-cores NUM Number of cores for the workers (Default: 1).\n" + - " --master-class CLASS_NAME Class Name for Master (Default: spark.deploy.yarn.ApplicationMaster)\n" + - " --master-memory MEM Memory for Master (e.g. 1000M, 2G) (Default: 512 Mb)\n" + - " --worker-memory MEM Memory per Worker (e.g. 1000M, 2G) (Default: 1G)\n" + + " --arg ARGS Argument to be passed to your application's main class.\n" + + " Multiple invocations are possible, each will be passed in order.\n" + + " --num-executors NUM Number of executors to start (Default: 2)\n" + + " --executor-cores NUM Number of cores for the executors (Default: 1).\n" + + " --driver-memory MEM Memory for driver (e.g. 1000M, 2G) (Default: 512 Mb)\n" + + " --executor-memory MEM Memory per executor (e.g. 1000M, 2G) (Default: 1G)\n" + " --name NAME The name of your application (Default: Spark)\n" + " --queue QUEUE The hadoop queue to use for allocation requests (Default: 'default')\n" + " --addJars jars Comma separated list of local jars that want SparkContext.addJar to work with.\n" + diff --git a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientBase.scala b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientBase.scala index 4b6c7db836b02..eb42922aea228 100644 --- a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientBase.scala +++ b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientBase.scala @@ -29,8 +29,10 @@ import org.apache.hadoop.fs._ import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.io.DataOutputBuffer import org.apache.hadoop.mapred.Master +import org.apache.hadoop.mapreduce.MRJobConfig import org.apache.hadoop.net.NetUtils import org.apache.hadoop.security.UserGroupInformation +import org.apache.hadoop.util.StringUtils import org.apache.hadoop.yarn.api._ import org.apache.hadoop.yarn.api.ApplicationConstants.Environment import org.apache.hadoop.yarn.api.protocolrecords._ @@ -71,10 +73,10 @@ trait ClientBase extends Logging { ((args.userJar == null && args.amClass == classOf[ApplicationMaster].getName) -> "Error: You must specify a user jar when running in standalone mode!"), (args.userClass == null) -> "Error: You must specify a user class!", - (args.numWorkers <= 0) -> "Error: You must specify at least 1 worker!", + (args.numExecutors <= 0) -> "Error: You must specify at least 1 executor!", (args.amMemory <= YarnAllocationHandler.MEMORY_OVERHEAD) -> ("Error: AM memory size must be" + "greater than: " + YarnAllocationHandler.MEMORY_OVERHEAD), - (args.workerMemory <= YarnAllocationHandler.MEMORY_OVERHEAD) -> ("Error: Worker memory size" + + (args.executorMemory <= YarnAllocationHandler.MEMORY_OVERHEAD) -> ("Error: Executor memory size" + "must be greater than: " + YarnAllocationHandler.MEMORY_OVERHEAD.toString) ).foreach { case(cond, errStr) => if (cond) { @@ -93,9 +95,9 @@ trait ClientBase extends Logging { logInfo("Max mem capabililty of a single resource in this cluster " + maxMem) // If we have requested more then the clusters max for a single resource then exit. - if (args.workerMemory > maxMem) { - logError("Required worker memory (%d MB), is above the max threshold (%d MB) of this cluster.". - format(args.workerMemory, maxMem)) + if (args.executorMemory > maxMem) { + logError("Required executor memory (%d MB), is above the max threshold (%d MB) of this cluster.". + format(args.executorMemory, maxMem)) System.exit(1) } val amMem = args.amMemory + YarnAllocationHandler.MEMORY_OVERHEAD @@ -137,7 +139,6 @@ trait ClientBase extends Logging { } else if (srcHost != null && dstHost == null) { return false } - //check for ports if (srcUri.getPort() != dstUri.getPort()) { false } else { @@ -265,16 +266,16 @@ trait ClientBase extends Logging { localResources: HashMap[String, LocalResource], stagingDir: String): HashMap[String, String] = { logInfo("Setting up the launch environment") - val log4jConfLocalRes = localResources.getOrElse(ClientBase.LOG4J_PROP, null) val env = new HashMap[String, String]() - ClientBase.populateClasspath(yarnConf, sparkConf, log4jConfLocalRes != null, env) + ClientBase.populateClasspath(yarnConf, sparkConf, localResources.contains(ClientBase.LOG4J_PROP), + env) env("SPARK_YARN_MODE") = "true" env("SPARK_YARN_STAGING_DIR") = stagingDir env("SPARK_USER") = UserGroupInformation.getCurrentUser().getShortUserName() - // Set the environment variables to be passed on to the Workers. + // Set the environment variables to be passed on to the executors. distCacheMgr.setDistFilesEnv(env) distCacheMgr.setDistArchivesEnv(env) @@ -343,24 +344,22 @@ trait ClientBase extends Logging { JAVA_OPTS += " " + env("SPARK_JAVA_OPTS") } - // Command for the ApplicationMaster - var javaCommand = "java" - val javaHome = System.getenv("JAVA_HOME") - if ((javaHome != null && !javaHome.isEmpty()) || env.isDefinedAt("JAVA_HOME")) { - javaCommand = Environment.JAVA_HOME.$() + "/bin/java" + if (!localResources.contains(ClientBase.LOG4J_PROP)) { + JAVA_OPTS += " " + YarnSparkHadoopUtil.getLoggingArgsForContainerCommandLine() } + // Command for the ApplicationMaster val commands = List[String]( - javaCommand + + Environment.JAVA_HOME.$() + "/bin/java" + " -server " + JAVA_OPTS + " " + args.amClass + " --class " + args.userClass + " --jar " + args.userJar + userArgsToString(args) + - " --worker-memory " + args.workerMemory + - " --worker-cores " + args.workerCores + - " --num-workers " + args.numWorkers + + " --executor-memory " + args.executorMemory + + " --executor-cores " + args.executorCores + + " --num-executors " + args.numExecutors + " 1> " + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/stdout" + " 2> " + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/stderr") @@ -379,9 +378,50 @@ object ClientBase { // Based on code from org.apache.hadoop.mapreduce.v2.util.MRApps def populateHadoopClasspath(conf: Configuration, env: HashMap[String, String]) { - for (c <- conf.getStrings(YarnConfiguration.YARN_APPLICATION_CLASSPATH)) { + val classpathEntries = Option(conf.getStrings( + YarnConfiguration.YARN_APPLICATION_CLASSPATH)).getOrElse( + getDefaultYarnApplicationClasspath()) + for (c <- classpathEntries) { Apps.addToEnvironment(env, Environment.CLASSPATH.name, c.trim) } + + val mrClasspathEntries = Option(conf.getStrings( + "mapreduce.application.classpath")).getOrElse( + getDefaultMRApplicationClasspath()) + if (mrClasspathEntries != null) { + for (c <- mrClasspathEntries) { + Apps.addToEnvironment(env, Environment.CLASSPATH.name, c.trim) + } + } + } + + def getDefaultYarnApplicationClasspath(): Array[String] = { + try { + val field = classOf[MRJobConfig].getField("DEFAULT_YARN_APPLICATION_CLASSPATH") + field.get(null).asInstanceOf[Array[String]] + } catch { + case err: NoSuchFieldError => null + case err: NoSuchFieldException => null + } + } + + /** + * In Hadoop 0.23, the MR application classpath comes with the YARN application + * classpath. In Hadoop 2.0, it's an array of Strings, and in 2.2+ it's a String. + * So we need to use reflection to retrieve it. + */ + def getDefaultMRApplicationClasspath(): Array[String] = { + try { + val field = classOf[MRJobConfig].getField("DEFAULT_MAPREDUCE_APPLICATION_CLASSPATH") + if (field.getType == classOf[String]) { + StringUtils.getStrings(field.get(null).asInstanceOf[String]) + } else { + field.get(null).asInstanceOf[Array[String]] + } + } catch { + case err: NoSuchFieldError => null + case err: NoSuchFieldException => null + } } def populateClasspath(conf: Configuration, sparkConf: SparkConf, addLog4j: Boolean, env: HashMap[String, String]) { diff --git a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientDistributedCacheManager.scala b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientDistributedCacheManager.scala index 535abbfb7f638..9b7f1fca96c6d 100644 --- a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientDistributedCacheManager.scala +++ b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ClientDistributedCacheManager.scala @@ -46,10 +46,10 @@ class ClientDistributedCacheManager() extends Logging { /** * Add a resource to the list of distributed cache resources. This list can - * be sent to the ApplicationMaster and possibly the workers so that it can + * be sent to the ApplicationMaster and possibly the executors so that it can * be downloaded into the Hadoop distributed cache for use by this application. * Adds the LocalResource to the localResources HashMap passed in and saves - * the stats of the resources to they can be sent to the workers and verified. + * the stats of the resources to they can be sent to the executors and verified. * * @param fs FileSystem * @param conf Configuration @@ -157,7 +157,7 @@ class ClientDistributedCacheManager() extends Logging { def isPublic(conf: Configuration, uri: URI, statCache: Map[URI, FileStatus]): Boolean = { val fs = FileSystem.get(uri, conf) val current = new Path(uri.getPath()) - //the leaf level file should be readable by others + // the leaf level file should be readable by others if (!checkPermissionOfOther(fs, current, FsAction.READ, statCache)) { return false } @@ -177,7 +177,7 @@ class ClientDistributedCacheManager() extends Logging { statCache: Map[URI, FileStatus]): Boolean = { var current = path while (current != null) { - //the subdirs in the path should have execute permissions for others + // the subdirs in the path should have execute permissions for others if (!checkPermissionOfOther(fs, current, FsAction.EXECUTE, statCache)) { return false } diff --git a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnableUtil.scala b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnableUtil.scala new file mode 100644 index 0000000000000..b3696c5fe7183 --- /dev/null +++ b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnableUtil.scala @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.yarn + +import java.net.URI +import java.nio.ByteBuffer +import java.security.PrivilegedExceptionAction + +import scala.collection.JavaConversions._ +import scala.collection.mutable.HashMap + +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.fs.Path +import org.apache.hadoop.io.DataOutputBuffer +import org.apache.hadoop.net.NetUtils +import org.apache.hadoop.security.UserGroupInformation +import org.apache.hadoop.yarn.api._ +import org.apache.hadoop.yarn.api.ApplicationConstants.Environment +import org.apache.hadoop.yarn.api.records._ +import org.apache.hadoop.yarn.api.protocolrecords._ +import org.apache.hadoop.yarn.util.{Apps, ConverterUtils, Records} + +import org.apache.spark.{SparkConf, Logging} +import org.apache.hadoop.yarn.conf.YarnConfiguration + + +trait ExecutorRunnableUtil extends Logging { + + val yarnConf: YarnConfiguration + val sparkConf: SparkConf + lazy val env = prepareEnvironment + + def prepareCommand( + masterAddress: String, + slaveId: String, + hostname: String, + executorMemory: Int, + executorCores: Int, + userSpecifiedLogFile: Boolean) = { + // Extra options for the JVM + var JAVA_OPTS = "" + // Set the JVM memory + val executorMemoryString = executorMemory + "m" + JAVA_OPTS += "-Xms" + executorMemoryString + " -Xmx" + executorMemoryString + " " + if (env.isDefinedAt("SPARK_JAVA_OPTS")) { + JAVA_OPTS += env("SPARK_JAVA_OPTS") + " " + } + + JAVA_OPTS += " -Djava.io.tmpdir=" + + new Path(Environment.PWD.$(), YarnConfiguration.DEFAULT_CONTAINER_TEMP_DIR) + " " + + if (!userSpecifiedLogFile) { + JAVA_OPTS += " " + YarnSparkHadoopUtil.getLoggingArgsForContainerCommandLine() + } + + // Commenting it out for now - so that people can refer to the properties if required. Remove + // it once cpuset version is pushed out. + // The context is, default gc for server class machines end up using all cores to do gc - hence + // if there are multiple containers in same node, spark gc effects all other containers + // performance (which can also be other spark containers) + // Instead of using this, rely on cpusets by YARN to enforce spark behaves 'properly' in + // multi-tenant environments. Not sure how default java gc behaves if it is limited to subset + // of cores on a node. + /* + else { + // If no java_opts specified, default to using -XX:+CMSIncrementalMode + // It might be possible that other modes/config is being done in SPARK_JAVA_OPTS, so we dont + // want to mess with it. + // In our expts, using (default) throughput collector has severe perf ramnifications in + // multi-tennent machines + // The options are based on + // http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html#0.0.0.%20When%20to%20Use%20the%20Concurrent%20Low%20Pause%20Collector|outline + JAVA_OPTS += " -XX:+UseConcMarkSweepGC " + JAVA_OPTS += " -XX:+CMSIncrementalMode " + JAVA_OPTS += " -XX:+CMSIncrementalPacing " + JAVA_OPTS += " -XX:CMSIncrementalDutyCycleMin=0 " + JAVA_OPTS += " -XX:CMSIncrementalDutyCycle=10 " + } + */ + + val commands = List[String]( + Environment.JAVA_HOME.$() + "/bin/java" + + " -server " + + // Kill if OOM is raised - leverage yarn's failure handling to cause rescheduling. + // Not killing the task leaves various aspects of the executor and (to some extent) the jvm in + // an inconsistent state. + // TODO: If the OOM is not recoverable by rescheduling it on different node, then do + // 'something' to fail job ... akin to blacklisting trackers in mapred ? + " -XX:OnOutOfMemoryError='kill %p' " + + JAVA_OPTS + + " org.apache.spark.executor.CoarseGrainedExecutorBackend " + + masterAddress + " " + + slaveId + " " + + hostname + " " + + executorCores + + " 1> " + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/stdout" + + " 2> " + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/stderr") + + commands + } + + private def setupDistributedCache( + file: String, + rtype: LocalResourceType, + localResources: HashMap[String, LocalResource], + timestamp: String, + size: String, + vis: String) = { + val uri = new URI(file) + val amJarRsrc = Records.newRecord(classOf[LocalResource]).asInstanceOf[LocalResource] + amJarRsrc.setType(rtype) + amJarRsrc.setVisibility(LocalResourceVisibility.valueOf(vis)) + amJarRsrc.setResource(ConverterUtils.getYarnUrlFromURI(uri)) + amJarRsrc.setTimestamp(timestamp.toLong) + amJarRsrc.setSize(size.toLong) + localResources(uri.getFragment()) = amJarRsrc + } + + def prepareLocalResources: HashMap[String, LocalResource] = { + logInfo("Preparing Local resources") + val localResources = HashMap[String, LocalResource]() + + if (System.getenv("SPARK_YARN_CACHE_FILES") != null) { + val timeStamps = System.getenv("SPARK_YARN_CACHE_FILES_TIME_STAMPS").split(',') + val fileSizes = System.getenv("SPARK_YARN_CACHE_FILES_FILE_SIZES").split(',') + val distFiles = System.getenv("SPARK_YARN_CACHE_FILES").split(',') + val visibilities = System.getenv("SPARK_YARN_CACHE_FILES_VISIBILITIES").split(',') + for( i <- 0 to distFiles.length - 1) { + setupDistributedCache(distFiles(i), LocalResourceType.FILE, localResources, timeStamps(i), + fileSizes(i), visibilities(i)) + } + } + + if (System.getenv("SPARK_YARN_CACHE_ARCHIVES") != null) { + val timeStamps = System.getenv("SPARK_YARN_CACHE_ARCHIVES_TIME_STAMPS").split(',') + val fileSizes = System.getenv("SPARK_YARN_CACHE_ARCHIVES_FILE_SIZES").split(',') + val distArchives = System.getenv("SPARK_YARN_CACHE_ARCHIVES").split(',') + val visibilities = System.getenv("SPARK_YARN_CACHE_ARCHIVES_VISIBILITIES").split(',') + for( i <- 0 to distArchives.length - 1) { + setupDistributedCache(distArchives(i), LocalResourceType.ARCHIVE, localResources, + timeStamps(i), fileSizes(i), visibilities(i)) + } + } + + logInfo("Prepared Local resources " + localResources) + localResources + } + + def prepareEnvironment: HashMap[String, String] = { + val env = new HashMap[String, String]() + + ClientBase.populateClasspath(yarnConf, sparkConf, System.getenv("SPARK_YARN_LOG4J_PATH") != null, env) + + // Allow users to specify some environment variables + Apps.setEnvFromInputString(env, System.getenv("SPARK_YARN_USER_ENV")) + + System.getenv().filterKeys(_.startsWith("SPARK")).foreach { case (k,v) => env(k) = v } + env + } + +} diff --git a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnableUtil.scala b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnableUtil.scala deleted file mode 100644 index bfa8f84bf7f85..0000000000000 --- a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnableUtil.scala +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.deploy.yarn - -import java.net.URI -import java.nio.ByteBuffer -import java.security.PrivilegedExceptionAction - -import scala.collection.JavaConversions._ -import scala.collection.mutable.HashMap - -import org.apache.hadoop.conf.Configuration -import org.apache.hadoop.fs.Path -import org.apache.hadoop.io.DataOutputBuffer -import org.apache.hadoop.net.NetUtils -import org.apache.hadoop.security.UserGroupInformation -import org.apache.hadoop.yarn.api._ -import org.apache.hadoop.yarn.api.ApplicationConstants.Environment -import org.apache.hadoop.yarn.api.records._ -import org.apache.hadoop.yarn.api.protocolrecords._ -import org.apache.hadoop.yarn.util.{Apps, ConverterUtils, Records} - -import org.apache.spark.{SparkConf, Logging} -import org.apache.hadoop.yarn.conf.YarnConfiguration - - -trait WorkerRunnableUtil extends Logging { - - val yarnConf: YarnConfiguration - val sparkConf: SparkConf - lazy val env = prepareEnvironment - - def prepareCommand( - masterAddress: String, - slaveId: String, - hostname: String, - workerMemory: Int, - workerCores: Int) = { - // Extra options for the JVM - var JAVA_OPTS = "" - // Set the JVM memory - val workerMemoryString = workerMemory + "m" - JAVA_OPTS += "-Xms" + workerMemoryString + " -Xmx" + workerMemoryString + " " - if (env.isDefinedAt("SPARK_JAVA_OPTS")) { - JAVA_OPTS += env("SPARK_JAVA_OPTS") + " " - } - - JAVA_OPTS += " -Djava.io.tmpdir=" + - new Path(Environment.PWD.$(), YarnConfiguration.DEFAULT_CONTAINER_TEMP_DIR) + " " - - // Commenting it out for now - so that people can refer to the properties if required. Remove - // it once cpuset version is pushed out. - // The context is, default gc for server class machines end up using all cores to do gc - hence - // if there are multiple containers in same node, spark gc effects all other containers - // performance (which can also be other spark containers) - // Instead of using this, rely on cpusets by YARN to enforce spark behaves 'properly' in - // multi-tenant environments. Not sure how default java gc behaves if it is limited to subset - // of cores on a node. - /* - else { - // If no java_opts specified, default to using -XX:+CMSIncrementalMode - // It might be possible that other modes/config is being done in SPARK_JAVA_OPTS, so we dont - // want to mess with it. - // In our expts, using (default) throughput collector has severe perf ramnifications in - // multi-tennent machines - // The options are based on - // http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html#0.0.0.%20When%20to%20Use%20the%20Concurrent%20Low%20Pause%20Collector|outline - JAVA_OPTS += " -XX:+UseConcMarkSweepGC " - JAVA_OPTS += " -XX:+CMSIncrementalMode " - JAVA_OPTS += " -XX:+CMSIncrementalPacing " - JAVA_OPTS += " -XX:CMSIncrementalDutyCycleMin=0 " - JAVA_OPTS += " -XX:CMSIncrementalDutyCycle=10 " - } - */ - - var javaCommand = "java" - val javaHome = System.getenv("JAVA_HOME") - if ((javaHome != null && !javaHome.isEmpty()) || env.isDefinedAt("JAVA_HOME")) { - javaCommand = Environment.JAVA_HOME.$() + "/bin/java" - } - - val commands = List[String](javaCommand + - " -server " + - // Kill if OOM is raised - leverage yarn's failure handling to cause rescheduling. - // Not killing the task leaves various aspects of the worker and (to some extent) the jvm in - // an inconsistent state. - // TODO: If the OOM is not recoverable by rescheduling it on different node, then do - // 'something' to fail job ... akin to blacklisting trackers in mapred ? - " -XX:OnOutOfMemoryError='kill %p' " + - JAVA_OPTS + - " org.apache.spark.executor.CoarseGrainedExecutorBackend " + - masterAddress + " " + - slaveId + " " + - hostname + " " + - workerCores + - " 1> " + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/stdout" + - " 2> " + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/stderr") - - commands - } - - private def setupDistributedCache( - file: String, - rtype: LocalResourceType, - localResources: HashMap[String, LocalResource], - timestamp: String, - size: String, - vis: String) = { - val uri = new URI(file) - val amJarRsrc = Records.newRecord(classOf[LocalResource]).asInstanceOf[LocalResource] - amJarRsrc.setType(rtype) - amJarRsrc.setVisibility(LocalResourceVisibility.valueOf(vis)) - amJarRsrc.setResource(ConverterUtils.getYarnUrlFromURI(uri)) - amJarRsrc.setTimestamp(timestamp.toLong) - amJarRsrc.setSize(size.toLong) - localResources(uri.getFragment()) = amJarRsrc - } - - def prepareLocalResources: HashMap[String, LocalResource] = { - logInfo("Preparing Local resources") - val localResources = HashMap[String, LocalResource]() - - if (System.getenv("SPARK_YARN_CACHE_FILES") != null) { - val timeStamps = System.getenv("SPARK_YARN_CACHE_FILES_TIME_STAMPS").split(',') - val fileSizes = System.getenv("SPARK_YARN_CACHE_FILES_FILE_SIZES").split(',') - val distFiles = System.getenv("SPARK_YARN_CACHE_FILES").split(',') - val visibilities = System.getenv("SPARK_YARN_CACHE_FILES_VISIBILITIES").split(',') - for( i <- 0 to distFiles.length - 1) { - setupDistributedCache(distFiles(i), LocalResourceType.FILE, localResources, timeStamps(i), - fileSizes(i), visibilities(i)) - } - } - - if (System.getenv("SPARK_YARN_CACHE_ARCHIVES") != null) { - val timeStamps = System.getenv("SPARK_YARN_CACHE_ARCHIVES_TIME_STAMPS").split(',') - val fileSizes = System.getenv("SPARK_YARN_CACHE_ARCHIVES_FILE_SIZES").split(',') - val distArchives = System.getenv("SPARK_YARN_CACHE_ARCHIVES").split(',') - val visibilities = System.getenv("SPARK_YARN_CACHE_ARCHIVES_VISIBILITIES").split(',') - for( i <- 0 to distArchives.length - 1) { - setupDistributedCache(distArchives(i), LocalResourceType.ARCHIVE, localResources, - timeStamps(i), fileSizes(i), visibilities(i)) - } - } - - logInfo("Prepared Local resources " + localResources) - localResources - } - - def prepareEnvironment: HashMap[String, String] = { - val env = new HashMap[String, String]() - - ClientBase.populateClasspath(yarnConf, sparkConf, System.getenv("SPARK_YARN_LOG4J_PATH") != null, env) - - // Allow users to specify some environment variables - Apps.setEnvFromInputString(env, System.getenv("SPARK_YARN_USER_ENV")) - - System.getenv().filterKeys(_.startsWith("SPARK")).foreach { case (k,v) => env(k) = v } - env - } - -} diff --git a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/YarnSparkHadoopUtil.scala b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/YarnSparkHadoopUtil.scala index 4c6e1dcd6dac3..314a7550ada71 100644 --- a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/YarnSparkHadoopUtil.scala +++ b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/YarnSparkHadoopUtil.scala @@ -22,6 +22,7 @@ import org.apache.hadoop.mapred.JobConf import org.apache.hadoop.security.Credentials import org.apache.hadoop.security.UserGroupInformation import org.apache.hadoop.yarn.conf.YarnConfiguration +import org.apache.hadoop.yarn.api.ApplicationConstants import org.apache.hadoop.conf.Configuration import org.apache.spark.deploy.SparkHadoopUtil @@ -67,3 +68,9 @@ class YarnSparkHadoopUtil extends SparkHadoopUtil { } } + +object YarnSparkHadoopUtil { + def getLoggingArgsForContainerCommandLine(): String = { + "-Dlog4j.configuration=log4j-spark-container.properties" + } +} diff --git a/yarn/common/src/main/scala/org/apache/spark/scheduler/cluster/YarnClientClusterScheduler.scala b/yarn/common/src/main/scala/org/apache/spark/scheduler/cluster/YarnClientClusterScheduler.scala index 522e0a9ad7eeb..6b91e6b9eb899 100644 --- a/yarn/common/src/main/scala/org/apache/spark/scheduler/cluster/YarnClientClusterScheduler.scala +++ b/yarn/common/src/main/scala/org/apache/spark/scheduler/cluster/YarnClientClusterScheduler.scala @@ -25,7 +25,7 @@ import org.apache.spark.util.Utils /** * - * This scheduler launch worker through Yarn - by call into Client to launch WorkerLauncher as AM. + * This scheduler launches executors through Yarn - by calling into Client to launch ExecutorLauncher as AM. */ private[spark] class YarnClientClusterScheduler(sc: SparkContext, conf: Configuration) extends TaskSchedulerImpl(sc) { @@ -40,7 +40,7 @@ private[spark] class YarnClientClusterScheduler(sc: SparkContext, conf: Configur override def postStartHook() { - // The yarn application is running, but the worker might not yet ready + // The yarn application is running, but the executor might not yet ready // Wait for a few seconds for the slaves to bootstrap and register with master - best case attempt Thread.sleep(2000L) logInfo("YarnClientClusterScheduler.postStartHook done") diff --git a/yarn/common/src/main/scala/org/apache/spark/scheduler/cluster/YarnClientSchedulerBackend.scala b/yarn/common/src/main/scala/org/apache/spark/scheduler/cluster/YarnClientSchedulerBackend.scala index e7130d24072ca..161918859e7c4 100644 --- a/yarn/common/src/main/scala/org/apache/spark/scheduler/cluster/YarnClientSchedulerBackend.scala +++ b/yarn/common/src/main/scala/org/apache/spark/scheduler/cluster/YarnClientSchedulerBackend.scala @@ -33,11 +33,12 @@ private[spark] class YarnClientSchedulerBackend( var client: Client = null var appId: ApplicationId = null - private[spark] def addArg(optionName: String, optionalParam: String, arrayBuf: ArrayBuffer[String]) { - Option(System.getenv(optionalParam)) foreach { - optParam => { - arrayBuf += (optionName, optParam) - } + private[spark] def addArg(optionName: String, envVar: String, sysProp: String, + arrayBuf: ArrayBuffer[String]) { + if (System.getProperty(sysProp) != null) { + arrayBuf += (optionName, System.getProperty(sysProp)) + } else if (System.getenv(envVar) != null) { + arrayBuf += (optionName, System.getenv(envVar)) } } @@ -53,21 +54,27 @@ private[spark] class YarnClientSchedulerBackend( "--class", "notused", "--jar", null, "--args", hostport, - "--master-class", "org.apache.spark.deploy.yarn.WorkerLauncher" + "--am-class", "org.apache.spark.deploy.yarn.ExecutorLauncher" ) - // process any optional arguments, use the defaults already defined in ClientArguments - // if things aren't specified - Map("--master-memory" -> "SPARK_MASTER_MEMORY", - "--num-workers" -> "SPARK_WORKER_INSTANCES", - "--worker-memory" -> "SPARK_WORKER_MEMORY", - "--worker-cores" -> "SPARK_WORKER_CORES", - "--queue" -> "SPARK_YARN_QUEUE", - "--name" -> "SPARK_YARN_APP_NAME", - "--files" -> "SPARK_YARN_DIST_FILES", - "--archives" -> "SPARK_YARN_DIST_ARCHIVES") - .foreach { case (optName, optParam) => addArg(optName, optParam, argsArrayBuf) } - + // process any optional arguments, given either as environment variables + // or system properties. use the defaults already defined in ClientArguments + // if things aren't specified. system properties override environment + // variables. + List(("--driver-memory", "SPARK_MASTER_MEMORY", "spark.master.memory"), + ("--driver-memory", "SPARK_DRIVER_MEMORY", "spark.driver.memory"), + ("--num-executors", "SPARK_WORKER_INSTANCES", "spark.worker.instances"), + ("--num-executors", "SPARK_EXECUTOR_INSTANCES", "spark.executor.instances"), + ("--executor-memory", "SPARK_WORKER_MEMORY", "spark.executor.memory"), + ("--executor-memory", "SPARK_EXECUTOR_MEMORY", "spark.executor.memory"), + ("--executor-cores", "SPARK_WORKER_CORES", "spark.executor.cores"), + ("--executor-cores", "SPARK_EXECUTOR_CORES", "spark.executor.cores"), + ("--queue", "SPARK_YARN_QUEUE", "spark.yarn.queue"), + ("--name", "SPARK_YARN_APP_NAME", "spark.app.name"), + ("--files", "SPARK_YARN_DIST_FILES", "spark.yarn.dist.files"), + ("--archives", "SPARK_YARN_DIST_ARCHIVES", "spark.yarn.dist.archives")) + .foreach { case (optName, envVar, sysProp) => addArg(optName, envVar, sysProp, argsArrayBuf) } + logDebug("ClientArguments called with: " + argsArrayBuf) val args = new ClientArguments(argsArrayBuf.toArray, conf) client = new Client(args, conf) @@ -77,7 +84,7 @@ private[spark] class YarnClientSchedulerBackend( def waitForApp() { - // TODO : need a better way to find out whether the workers are ready or not + // TODO : need a better way to find out whether the executors are ready or not // maybe by resource usage report? while(true) { val report = client.getApplicationReport(appId) diff --git a/yarn/common/src/test/scala/org/apache/spark/deploy/yarn/ClientDistributedCacheManagerSuite.scala b/yarn/common/src/test/scala/org/apache/spark/deploy/yarn/ClientDistributedCacheManagerSuite.scala index 458df4fa3cd99..80b57d1355a3a 100644 --- a/yarn/common/src/test/scala/org/apache/spark/deploy/yarn/ClientDistributedCacheManagerSuite.scala +++ b/yarn/common/src/test/scala/org/apache/spark/deploy/yarn/ClientDistributedCacheManagerSuite.scala @@ -99,7 +99,7 @@ class ClientDistributedCacheManagerSuite extends FunSuite with MockitoSugar { assert(env.get("SPARK_YARN_CACHE_ARCHIVES_FILE_SIZES") === None) assert(env.get("SPARK_YARN_CACHE_ARCHIVES_VISIBILITIES") === None) - //add another one and verify both there and order correct + // add another one and verify both there and order correct val realFileStatus = new FileStatus(20, false, 1, 1024, 10, 30, null, "testOwner", null, new Path("/tmp/testing2")) val destPath2 = new Path("file:///foo.invalid.com:8080/tmp/testing2") diff --git a/yarn/pom.xml b/yarn/pom.xml index 35e31760c1f02..3342cb65edcd1 100644 --- a/yarn/pom.xml +++ b/yarn/pom.xml @@ -167,6 +167,12 @@ target/scala-${scala.binary.version}/classes target/scala-${scala.binary.version}/test-classes + + + + ../common/src/main/resources + + diff --git a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala index b48a2d50db5ef..c8a4d2e647cbd 100644 --- a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala +++ b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala @@ -18,7 +18,6 @@ package org.apache.spark.deploy.yarn import java.io.IOException -import java.net.Socket import java.util.concurrent.CopyOnWriteArrayList import java.util.concurrent.atomic.{AtomicInteger, AtomicReference} @@ -36,7 +35,7 @@ import org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest import org.apache.hadoop.yarn.conf.YarnConfiguration import org.apache.hadoop.yarn.ipc.YarnRPC import org.apache.hadoop.yarn.util.{ConverterUtils, Records} -import org.apache.hadoop.yarn.webapp.util.WebAppUtils; +import org.apache.hadoop.yarn.webapp.util.WebAppUtils import org.apache.spark.{Logging, SecurityManager, SparkConf, SparkContext} import org.apache.spark.deploy.SparkHadoopUtil @@ -64,9 +63,9 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, private var isLastAMRetry: Boolean = true private var amClient: AMRMClient[ContainerRequest] = _ - // Default to numWorkers * 2, with minimum of 3 - private val maxNumWorkerFailures = sparkConf.getInt("spark.yarn.max.worker.failures", - math.max(args.numWorkers * 2, 3)) + // Default to numExecutors * 2, with minimum of 3 + private val maxNumExecutorFailures = sparkConf.getInt("spark.yarn.max.executor.failures", + sparkConf.getInt("spark.yarn.max.worker.failures", math.max(args.numExecutors * 2, 3))) private var registered = false @@ -82,6 +81,9 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, // other spark processes running on the same box System.setProperty("spark.ui.port", "0") + // when running the AM, the Spark master is always "yarn-cluster" + System.setProperty("spark.master", "yarn-cluster") + // Use priority 30 as it's higher then HDFS. It's same priority as MapReduce is using. ShutdownHookManager.get().addShutdownHook(new AppMasterShutdownHook(this), 30) @@ -98,7 +100,7 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, // Call this to force generation of secret so it gets populated into the // hadoop UGI. This has to happen before the startUserClass which does a - // doAs in order for the credentials to be passed on to the worker containers. + // doAs in order for the credentials to be passed on to the executor containers. val securityMgr = new SecurityManager(sparkConf) // Start the user's JAR @@ -117,7 +119,7 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, } // Allocate all containers - allocateWorkers() + allocateExecutors() // Wait for the user class to Finish userThread.join() @@ -199,7 +201,7 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, t } - // This need to happen before allocateWorkers() + // This need to happen before allocateExecutors() private def waitForSparkContextInitialized() { logInfo("Waiting for Spark context initialization") try { @@ -244,18 +246,18 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, } } - private def allocateWorkers() { + private def allocateExecutors() { try { - logInfo("Allocating " + args.numWorkers + " workers.") + logInfo("Allocating " + args.numExecutors + " executors.") // Wait until all containers have finished // TODO: This is a bit ugly. Can we make it nicer? // TODO: Handle container failure - yarnAllocator.addResourceRequests(args.numWorkers) + yarnAllocator.addResourceRequests(args.numExecutors) // Exits the loop if the user thread exits. - while (yarnAllocator.getNumWorkersRunning < args.numWorkers && userThread.isAlive) { - if (yarnAllocator.getNumWorkersFailed >= maxNumWorkerFailures) { + while (yarnAllocator.getNumExecutorsRunning < args.numExecutors && userThread.isAlive) { + if (yarnAllocator.getNumExecutorsFailed >= maxNumExecutorFailures) { finishApplicationMaster(FinalApplicationStatus.FAILED, - "max number of worker failures reached") + "max number of executor failures reached") } yarnAllocator.allocateResources() ApplicationMaster.incrementAllocatorLoop(1) @@ -266,7 +268,7 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, // so that the loop in ApplicationMaster#sparkContextInitialized() breaks. ApplicationMaster.incrementAllocatorLoop(ApplicationMaster.ALLOCATOR_LOOP_WAIT_COUNT) } - logInfo("All workers have launched.") + logInfo("All executors have launched.") // Launch a progress reporter thread, else the app will get killed after expiration // (def: 10mins) timeout. @@ -291,16 +293,16 @@ class ApplicationMaster(args: ApplicationMasterArguments, conf: Configuration, val t = new Thread { override def run() { while (userThread.isAlive) { - if (yarnAllocator.getNumWorkersFailed >= maxNumWorkerFailures) { + if (yarnAllocator.getNumExecutorsFailed >= maxNumExecutorFailures) { finishApplicationMaster(FinalApplicationStatus.FAILED, - "max number of worker failures reached") + "max number of executor failures reached") } - val missingWorkerCount = args.numWorkers - yarnAllocator.getNumWorkersRunning - + val missingExecutorCount = args.numExecutors - yarnAllocator.getNumExecutorsRunning - yarnAllocator.getNumPendingAllocate - if (missingWorkerCount > 0) { + if (missingExecutorCount > 0) { logInfo("Allocating %d containers to make up for (potentially) lost containers". - format(missingWorkerCount)) - yarnAllocator.addResourceRequests(missingWorkerCount) + format(missingExecutorCount)) + yarnAllocator.addResourceRequests(missingExecutorCount) } sendProgress() Thread.sleep(sleepTime) diff --git a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/Client.scala b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/Client.scala index 837b7e12cb0de..77eb1276a0c4e 100644 --- a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/Client.scala +++ b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/Client.scala @@ -173,6 +173,9 @@ class Client(clientArgs: ClientArguments, hadoopConf: Configuration, spConf: Spa object Client { def main(argStrings: Array[String]) { + println("WARNING: This client is deprecated and will be removed in a future version of Spark.") + println("Use ./bin/spark-submit with \"--master yarn\"") + // Set an env variable indicating we are running in YARN mode. // Note: anything env variable with SPARK_ prefix gets propagated to all (remote) processes - // see Client#setupLaunchEnv(). diff --git a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ExecutorLauncher.scala b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ExecutorLauncher.scala new file mode 100644 index 0000000000000..b697f103914fd --- /dev/null +++ b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ExecutorLauncher.scala @@ -0,0 +1,252 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.yarn + +import java.net.Socket +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.net.NetUtils +import org.apache.hadoop.yarn.api._ +import org.apache.hadoop.yarn.api.records._ +import org.apache.hadoop.yarn.api.protocolrecords._ +import org.apache.hadoop.yarn.conf.YarnConfiguration +import org.apache.hadoop.yarn.util.{ConverterUtils, Records} +import akka.actor._ +import akka.remote._ +import akka.actor.Terminated +import org.apache.spark.{Logging, SecurityManager, SparkConf, SparkContext} +import org.apache.spark.util.{Utils, AkkaUtils} +import org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend +import org.apache.spark.scheduler.SplitInfo +import org.apache.hadoop.yarn.client.api.AMRMClient +import org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest + +class ExecutorLauncher(args: ApplicationMasterArguments, conf: Configuration, sparkConf: SparkConf) + extends Logging { + + def this(args: ApplicationMasterArguments, sparkConf: SparkConf) = + this(args, new Configuration(), sparkConf) + + def this(args: ApplicationMasterArguments) = this(args, new SparkConf()) + + private var appAttemptId: ApplicationAttemptId = _ + private var reporterThread: Thread = _ + private val yarnConf: YarnConfiguration = new YarnConfiguration(conf) + + private var yarnAllocator: YarnAllocationHandler = _ + private var driverClosed:Boolean = false + + private var amClient: AMRMClient[ContainerRequest] = _ + + val securityManager = new SecurityManager(sparkConf) + val actorSystem: ActorSystem = AkkaUtils.createActorSystem("sparkYarnAM", Utils.localHostName, 0, + conf = sparkConf, securityManager = securityManager)._1 + var actor: ActorRef = _ + + // This actor just working as a monitor to watch on Driver Actor. + class MonitorActor(driverUrl: String) extends Actor { + + var driver: ActorSelection = _ + + override def preStart() { + logInfo("Listen to driver: " + driverUrl) + driver = context.actorSelection(driverUrl) + // Send a hello message thus the connection is actually established, thus we can monitor Lifecycle Events. + driver ! "Hello" + context.system.eventStream.subscribe(self, classOf[RemotingLifecycleEvent]) + } + + override def receive = { + case x: DisassociatedEvent => + logInfo(s"Driver terminated or disconnected! Shutting down. $x") + driverClosed = true + } + } + + def run() { + + // Setup the directories so things go to yarn approved directories rather + // then user specified and /tmp. + System.setProperty("spark.local.dir", getLocalDirs()) + + amClient = AMRMClient.createAMRMClient() + amClient.init(yarnConf) + amClient.start() + + appAttemptId = getApplicationAttemptId() + registerApplicationMaster() + + waitForSparkMaster() + + // Allocate all containers + allocateExecutors() + + // Launch a progress reporter thread, else app will get killed after expiration (def: 10mins) timeout + // ensure that progress is sent before YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS elapse. + + val timeoutInterval = yarnConf.getInt(YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS, 120000) + // we want to be reasonably responsive without causing too many requests to RM. + val schedulerInterval = + System.getProperty("spark.yarn.scheduler.heartbeat.interval-ms", "5000").toLong + // must be <= timeoutInterval / 2. + val interval = math.min(timeoutInterval / 2, schedulerInterval) + + reporterThread = launchReporterThread(interval) + + + // Wait for the reporter thread to Finish. + reporterThread.join() + + finishApplicationMaster(FinalApplicationStatus.SUCCEEDED) + actorSystem.shutdown() + + logInfo("Exited") + System.exit(0) + } + + /** Get the Yarn approved local directories. */ + private def getLocalDirs(): String = { + // Hadoop 0.23 and 2.x have different Environment variable names for the + // local dirs, so lets check both. We assume one of the 2 is set. + // LOCAL_DIRS => 2.X, YARN_LOCAL_DIRS => 0.23.X + val localDirs = Option(System.getenv("YARN_LOCAL_DIRS")) + .orElse(Option(System.getenv("LOCAL_DIRS"))) + + localDirs match { + case None => throw new Exception("Yarn Local dirs can't be empty") + case Some(l) => l + } + } + + private def getApplicationAttemptId(): ApplicationAttemptId = { + val envs = System.getenv() + val containerIdString = envs.get(ApplicationConstants.Environment.CONTAINER_ID.name()) + val containerId = ConverterUtils.toContainerId(containerIdString) + val appAttemptId = containerId.getApplicationAttemptId() + logInfo("ApplicationAttemptId: " + appAttemptId) + appAttemptId + } + + private def registerApplicationMaster(): RegisterApplicationMasterResponse = { + logInfo("Registering the ApplicationMaster") + // TODO:(Raymond) Find out Spark UI address and fill in here? + amClient.registerApplicationMaster(Utils.localHostName(), 0, "") + } + + private def waitForSparkMaster() { + logInfo("Waiting for Spark driver to be reachable.") + var driverUp = false + val hostport = args.userArgs(0) + val (driverHost, driverPort) = Utils.parseHostPort(hostport) + while(!driverUp) { + try { + val socket = new Socket(driverHost, driverPort) + socket.close() + logInfo("Driver now available: %s:%s".format(driverHost, driverPort)) + driverUp = true + } catch { + case e: Exception => + logError("Failed to connect to driver at %s:%s, retrying ...". + format(driverHost, driverPort)) + Thread.sleep(100) + } + } + sparkConf.set("spark.driver.host", driverHost) + sparkConf.set("spark.driver.port", driverPort.toString) + + val driverUrl = "akka.tcp://spark@%s:%s/user/%s".format( + driverHost, driverPort.toString, CoarseGrainedSchedulerBackend.ACTOR_NAME) + + actor = actorSystem.actorOf(Props(new MonitorActor(driverUrl)), name = "YarnAM") + } + + + private def allocateExecutors() { + + // Fixme: should get preferredNodeLocationData from SparkContext, just fake a empty one for now. + val preferredNodeLocationData: scala.collection.Map[String, scala.collection.Set[SplitInfo]] = + scala.collection.immutable.Map() + + yarnAllocator = YarnAllocationHandler.newAllocator( + yarnConf, + amClient, + appAttemptId, + args, + preferredNodeLocationData, + sparkConf) + + logInfo("Allocating " + args.numExecutors + " executors.") + // Wait until all containers have finished + // TODO: This is a bit ugly. Can we make it nicer? + // TODO: Handle container failure + + yarnAllocator.addResourceRequests(args.numExecutors) + while ((yarnAllocator.getNumExecutorsRunning < args.numExecutors) && (!driverClosed)) { + yarnAllocator.allocateResources() + Thread.sleep(100) + } + + logInfo("All executors have launched.") + + } + + // TODO: We might want to extend this to allocate more containers in case they die ! + private def launchReporterThread(_sleepTime: Long): Thread = { + val sleepTime = if (_sleepTime <= 0) 0 else _sleepTime + + val t = new Thread { + override def run() { + while (!driverClosed) { + val missingExecutorCount = args.numExecutors - yarnAllocator.getNumExecutorsRunning - + yarnAllocator.getNumPendingAllocate + if (missingExecutorCount > 0) { + logInfo("Allocating %d containers to make up for (potentially) lost containers". + format(missingExecutorCount)) + yarnAllocator.addResourceRequests(missingExecutorCount) + } + sendProgress() + Thread.sleep(sleepTime) + } + } + } + // setting to daemon status, though this is usually not a good idea. + t.setDaemon(true) + t.start() + logInfo("Started progress reporter thread - sleep time : " + sleepTime) + t + } + + private def sendProgress() { + logDebug("Sending progress") + // simulated with an allocate request with no nodes requested ... + yarnAllocator.allocateResources() + } + + def finishApplicationMaster(status: FinalApplicationStatus) { + logInfo("finish ApplicationMaster with " + status) + amClient.unregisterApplicationMaster(status, "" /* appMessage */ , "" /* appTrackingUrl */) + } + +} + + +object ExecutorLauncher { + def main(argStrings: Array[String]) { + val args = new ApplicationMasterArguments(argStrings) + new ExecutorLauncher(args).run() + } +} diff --git a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala new file mode 100644 index 0000000000000..81d9d1b5c9280 --- /dev/null +++ b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.deploy.yarn + +import java.nio.ByteBuffer +import java.security.PrivilegedExceptionAction + +import scala.collection.JavaConversions._ + +import org.apache.hadoop.conf.Configuration +import org.apache.hadoop.io.DataOutputBuffer +import org.apache.hadoop.net.NetUtils +import org.apache.hadoop.security.UserGroupInformation +import org.apache.hadoop.yarn.api._ +import org.apache.hadoop.yarn.api.records._ +import org.apache.hadoop.yarn.api.records.impl.pb.ProtoUtils +import org.apache.hadoop.yarn.api.protocolrecords._ +import org.apache.hadoop.yarn.client.api.NMClient +import org.apache.hadoop.yarn.conf.YarnConfiguration +import org.apache.hadoop.yarn.ipc.YarnRPC +import org.apache.hadoop.yarn.util.{Apps, ConverterUtils, Records} + +import org.apache.spark.{SparkConf, Logging} + + +class ExecutorRunnable( + container: Container, + conf: Configuration, + spConf: SparkConf, + masterAddress: String, + slaveId: String, + hostname: String, + executorMemory: Int, + executorCores: Int) + extends Runnable with ExecutorRunnableUtil with Logging { + + var rpc: YarnRPC = YarnRPC.create(conf) + var nmClient: NMClient = _ + val sparkConf = spConf + val yarnConf: YarnConfiguration = new YarnConfiguration(conf) + + def run = { + logInfo("Starting Executor Container") + nmClient = NMClient.createNMClient() + nmClient.init(yarnConf) + nmClient.start() + startContainer + } + + def startContainer = { + logInfo("Setting up ContainerLaunchContext") + + val ctx = Records.newRecord(classOf[ContainerLaunchContext]) + .asInstanceOf[ContainerLaunchContext] + + val localResources = prepareLocalResources + ctx.setLocalResources(localResources) + + ctx.setEnvironment(env) + + val credentials = UserGroupInformation.getCurrentUser().getCredentials() + val dob = new DataOutputBuffer() + credentials.writeTokenStorageToStream(dob) + ctx.setTokens(ByteBuffer.wrap(dob.getData())) + + val commands = prepareCommand(masterAddress, slaveId, hostname, executorMemory, executorCores, + localResources.contains(ClientBase.LOG4J_PROP)) + + logInfo("Setting up executor with commands: " + commands) + ctx.setCommands(commands) + + // Send the start request to the ContainerManager + nmClient.startContainer(container, ctx) + } + +} diff --git a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/WorkerLauncher.scala b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/WorkerLauncher.scala deleted file mode 100644 index f1c1fea0b5895..0000000000000 --- a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/WorkerLauncher.scala +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.deploy.yarn - -import java.net.Socket -import org.apache.hadoop.conf.Configuration -import org.apache.hadoop.net.NetUtils -import org.apache.hadoop.yarn.api._ -import org.apache.hadoop.yarn.api.records._ -import org.apache.hadoop.yarn.api.protocolrecords._ -import org.apache.hadoop.yarn.conf.YarnConfiguration -import org.apache.hadoop.yarn.util.{ConverterUtils, Records} -import akka.actor._ -import akka.remote._ -import akka.actor.Terminated -import org.apache.spark.{Logging, SecurityManager, SparkConf, SparkContext} -import org.apache.spark.util.{Utils, AkkaUtils} -import org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend -import org.apache.spark.scheduler.SplitInfo -import org.apache.hadoop.yarn.client.api.AMRMClient -import org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest - -class WorkerLauncher(args: ApplicationMasterArguments, conf: Configuration, sparkConf: SparkConf) - extends Logging { - - def this(args: ApplicationMasterArguments, sparkConf: SparkConf) = - this(args, new Configuration(), sparkConf) - - def this(args: ApplicationMasterArguments) = this(args, new SparkConf()) - - private var appAttemptId: ApplicationAttemptId = _ - private var reporterThread: Thread = _ - private val yarnConf: YarnConfiguration = new YarnConfiguration(conf) - - private var yarnAllocator: YarnAllocationHandler = _ - private var driverClosed:Boolean = false - - private var amClient: AMRMClient[ContainerRequest] = _ - - val securityManager = new SecurityManager(sparkConf) - val actorSystem: ActorSystem = AkkaUtils.createActorSystem("sparkYarnAM", Utils.localHostName, 0, - conf = sparkConf, securityManager = securityManager)._1 - var actor: ActorRef = _ - - // This actor just working as a monitor to watch on Driver Actor. - class MonitorActor(driverUrl: String) extends Actor { - - var driver: ActorSelection = _ - - override def preStart() { - logInfo("Listen to driver: " + driverUrl) - driver = context.actorSelection(driverUrl) - // Send a hello message thus the connection is actually established, thus we can monitor Lifecycle Events. - driver ! "Hello" - context.system.eventStream.subscribe(self, classOf[RemotingLifecycleEvent]) - } - - override def receive = { - case x: DisassociatedEvent => - logInfo(s"Driver terminated or disconnected! Shutting down. $x") - driverClosed = true - } - } - - def run() { - - // Setup the directories so things go to yarn approved directories rather - // then user specified and /tmp. - System.setProperty("spark.local.dir", getLocalDirs()) - - amClient = AMRMClient.createAMRMClient() - amClient.init(yarnConf) - amClient.start() - - appAttemptId = getApplicationAttemptId() - registerApplicationMaster() - - waitForSparkMaster() - - // Allocate all containers - allocateWorkers() - - // Launch a progress reporter thread, else app will get killed after expiration (def: 10mins) timeout - // ensure that progress is sent before YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS elapse. - - val timeoutInterval = yarnConf.getInt(YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS, 120000) - // we want to be reasonably responsive without causing too many requests to RM. - val schedulerInterval = - System.getProperty("spark.yarn.scheduler.heartbeat.interval-ms", "5000").toLong - // must be <= timeoutInterval / 2. - val interval = math.min(timeoutInterval / 2, schedulerInterval) - - reporterThread = launchReporterThread(interval) - - - // Wait for the reporter thread to Finish. - reporterThread.join() - - finishApplicationMaster(FinalApplicationStatus.SUCCEEDED) - actorSystem.shutdown() - - logInfo("Exited") - System.exit(0) - } - - /** Get the Yarn approved local directories. */ - private def getLocalDirs(): String = { - // Hadoop 0.23 and 2.x have different Environment variable names for the - // local dirs, so lets check both. We assume one of the 2 is set. - // LOCAL_DIRS => 2.X, YARN_LOCAL_DIRS => 0.23.X - val localDirs = Option(System.getenv("YARN_LOCAL_DIRS")) - .orElse(Option(System.getenv("LOCAL_DIRS"))) - - localDirs match { - case None => throw new Exception("Yarn Local dirs can't be empty") - case Some(l) => l - } - } - - private def getApplicationAttemptId(): ApplicationAttemptId = { - val envs = System.getenv() - val containerIdString = envs.get(ApplicationConstants.Environment.CONTAINER_ID.name()) - val containerId = ConverterUtils.toContainerId(containerIdString) - val appAttemptId = containerId.getApplicationAttemptId() - logInfo("ApplicationAttemptId: " + appAttemptId) - appAttemptId - } - - private def registerApplicationMaster(): RegisterApplicationMasterResponse = { - logInfo("Registering the ApplicationMaster") - // TODO:(Raymond) Find out Spark UI address and fill in here? - amClient.registerApplicationMaster(Utils.localHostName(), 0, "") - } - - private def waitForSparkMaster() { - logInfo("Waiting for Spark driver to be reachable.") - var driverUp = false - val hostport = args.userArgs(0) - val (driverHost, driverPort) = Utils.parseHostPort(hostport) - while(!driverUp) { - try { - val socket = new Socket(driverHost, driverPort) - socket.close() - logInfo("Driver now available: %s:%s".format(driverHost, driverPort)) - driverUp = true - } catch { - case e: Exception => - logError("Failed to connect to driver at %s:%s, retrying ...". - format(driverHost, driverPort)) - Thread.sleep(100) - } - } - sparkConf.set("spark.driver.host", driverHost) - sparkConf.set("spark.driver.port", driverPort.toString) - - val driverUrl = "akka.tcp://spark@%s:%s/user/%s".format( - driverHost, driverPort.toString, CoarseGrainedSchedulerBackend.ACTOR_NAME) - - actor = actorSystem.actorOf(Props(new MonitorActor(driverUrl)), name = "YarnAM") - } - - - private def allocateWorkers() { - - // Fixme: should get preferredNodeLocationData from SparkContext, just fake a empty one for now. - val preferredNodeLocationData: scala.collection.Map[String, scala.collection.Set[SplitInfo]] = - scala.collection.immutable.Map() - - yarnAllocator = YarnAllocationHandler.newAllocator( - yarnConf, - amClient, - appAttemptId, - args, - preferredNodeLocationData, - sparkConf) - - logInfo("Allocating " + args.numWorkers + " workers.") - // Wait until all containers have finished - // TODO: This is a bit ugly. Can we make it nicer? - // TODO: Handle container failure - - yarnAllocator.addResourceRequests(args.numWorkers) - while ((yarnAllocator.getNumWorkersRunning < args.numWorkers) && (!driverClosed)) { - yarnAllocator.allocateResources() - Thread.sleep(100) - } - - logInfo("All workers have launched.") - - } - - // TODO: We might want to extend this to allocate more containers in case they die ! - private def launchReporterThread(_sleepTime: Long): Thread = { - val sleepTime = if (_sleepTime <= 0) 0 else _sleepTime - - val t = new Thread { - override def run() { - while (!driverClosed) { - val missingWorkerCount = args.numWorkers - yarnAllocator.getNumWorkersRunning - - yarnAllocator.getNumPendingAllocate - if (missingWorkerCount > 0) { - logInfo("Allocating %d containers to make up for (potentially) lost containers". - format(missingWorkerCount)) - yarnAllocator.addResourceRequests(missingWorkerCount) - } - sendProgress() - Thread.sleep(sleepTime) - } - } - } - // setting to daemon status, though this is usually not a good idea. - t.setDaemon(true) - t.start() - logInfo("Started progress reporter thread - sleep time : " + sleepTime) - t - } - - private def sendProgress() { - logDebug("Sending progress") - // simulated with an allocate request with no nodes requested ... - yarnAllocator.allocateResources() - } - - def finishApplicationMaster(status: FinalApplicationStatus) { - logInfo("finish ApplicationMaster with " + status) - amClient.unregisterApplicationMaster(status, "" /* appMessage */ , "" /* appTrackingUrl */) - } - -} - - -object WorkerLauncher { - def main(argStrings: Array[String]) { - val args = new ApplicationMasterArguments(argStrings) - new WorkerLauncher(args).run() - } -} diff --git a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnable.scala b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnable.scala deleted file mode 100644 index ab4a79be70485..0000000000000 --- a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/WorkerRunnable.scala +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.spark.deploy.yarn - -import java.nio.ByteBuffer -import java.security.PrivilegedExceptionAction - -import scala.collection.JavaConversions._ - -import org.apache.hadoop.conf.Configuration -import org.apache.hadoop.io.DataOutputBuffer -import org.apache.hadoop.net.NetUtils -import org.apache.hadoop.security.UserGroupInformation -import org.apache.hadoop.yarn.api._ -import org.apache.hadoop.yarn.api.records._ -import org.apache.hadoop.yarn.api.records.impl.pb.ProtoUtils -import org.apache.hadoop.yarn.api.protocolrecords._ -import org.apache.hadoop.yarn.client.api.NMClient -import org.apache.hadoop.yarn.conf.YarnConfiguration -import org.apache.hadoop.yarn.ipc.YarnRPC -import org.apache.hadoop.yarn.util.{Apps, ConverterUtils, Records} - -import org.apache.spark.{SparkConf, Logging} - - -class WorkerRunnable( - container: Container, - conf: Configuration, - spConf: SparkConf, - masterAddress: String, - slaveId: String, - hostname: String, - workerMemory: Int, - workerCores: Int) - extends Runnable with WorkerRunnableUtil with Logging { - - var rpc: YarnRPC = YarnRPC.create(conf) - var nmClient: NMClient = _ - val sparkConf = spConf - val yarnConf: YarnConfiguration = new YarnConfiguration(conf) - - def run = { - logInfo("Starting Worker Container") - nmClient = NMClient.createNMClient() - nmClient.init(yarnConf) - nmClient.start() - startContainer - } - - def startContainer = { - logInfo("Setting up ContainerLaunchContext") - - val ctx = Records.newRecord(classOf[ContainerLaunchContext]) - .asInstanceOf[ContainerLaunchContext] - - val localResources = prepareLocalResources - ctx.setLocalResources(localResources) - - ctx.setEnvironment(env) - - val credentials = UserGroupInformation.getCurrentUser().getCredentials() - val dob = new DataOutputBuffer() - credentials.writeTokenStorageToStream(dob) - ctx.setTokens(ByteBuffer.wrap(dob.getData())) - - val commands = prepareCommand(masterAddress, slaveId, hostname, workerMemory, workerCores) - - logInfo("Setting up worker with commands: " + commands) - ctx.setCommands(commands) - - // Send the start request to the ContainerManager - nmClient.startContainer(container, ctx) - } - -} diff --git a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocationHandler.scala b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocationHandler.scala index 1ac61124cb028..e31c4060e8452 100644 --- a/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocationHandler.scala +++ b/yarn/stable/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocationHandler.scala @@ -60,9 +60,9 @@ private[yarn] class YarnAllocationHandler( val conf: Configuration, val amClient: AMRMClient[ContainerRequest], val appAttemptId: ApplicationAttemptId, - val maxWorkers: Int, - val workerMemory: Int, - val workerCores: Int, + val maxExecutors: Int, + val executorMemory: Int, + val executorCores: Int, val preferredHostToCount: Map[String, Int], val preferredRackToCount: Map[String, Int], val sparkConf: SparkConf) @@ -89,20 +89,20 @@ private[yarn] class YarnAllocationHandler( // Number of container requests that have been sent to, but not yet allocated by the // ApplicationMaster. private val numPendingAllocate = new AtomicInteger() - private val numWorkersRunning = new AtomicInteger() - // Used to generate a unique id per worker - private val workerIdCounter = new AtomicInteger() + private val numExecutorsRunning = new AtomicInteger() + // Used to generate a unique id per executor + private val executorIdCounter = new AtomicInteger() private val lastResponseId = new AtomicInteger() - private val numWorkersFailed = new AtomicInteger() + private val numExecutorsFailed = new AtomicInteger() def getNumPendingAllocate: Int = numPendingAllocate.intValue - def getNumWorkersRunning: Int = numWorkersRunning.intValue + def getNumExecutorsRunning: Int = numExecutorsRunning.intValue - def getNumWorkersFailed: Int = numWorkersFailed.intValue + def getNumExecutorsFailed: Int = numExecutorsFailed.intValue def isResourceConstraintSatisfied(container: Container): Boolean = { - container.getResource.getMemory >= (workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD) + container.getResource.getMemory >= (executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD) } def releaseContainer(container: Container) { @@ -127,13 +127,13 @@ private[yarn] class YarnAllocationHandler( logDebug(""" Allocated containers: %d - Current worker count: %d + Current executor count: %d Containers released: %s Containers to-be-released: %s Cluster resources: %s """.format( allocatedContainers.size, - numWorkersRunning.get(), + numExecutorsRunning.get(), releasedContainerList, pendingReleaseContainers, allocateResponse.getAvailableResources)) @@ -240,64 +240,64 @@ private[yarn] class YarnAllocationHandler( // Run each of the allocated containers. for (container <- allocatedContainersToProcess) { - val numWorkersRunningNow = numWorkersRunning.incrementAndGet() - val workerHostname = container.getNodeId.getHost + val numExecutorsRunningNow = numExecutorsRunning.incrementAndGet() + val executorHostname = container.getNodeId.getHost val containerId = container.getId - val workerMemoryOverhead = (workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD) - assert(container.getResource.getMemory >= workerMemoryOverhead) + val executorMemoryOverhead = (executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD) + assert(container.getResource.getMemory >= executorMemoryOverhead) - if (numWorkersRunningNow > maxWorkers) { + if (numExecutorsRunningNow > maxExecutors) { logInfo("""Ignoring container %s at host %s, since we already have the required number of - containers for it.""".format(containerId, workerHostname)) + containers for it.""".format(containerId, executorHostname)) releaseContainer(container) - numWorkersRunning.decrementAndGet() + numExecutorsRunning.decrementAndGet() } else { - val workerId = workerIdCounter.incrementAndGet().toString + val executorId = executorIdCounter.incrementAndGet().toString val driverUrl = "akka.tcp://spark@%s:%s/user/%s".format( sparkConf.get("spark.driver.host"), sparkConf.get("spark.driver.port"), CoarseGrainedSchedulerBackend.ACTOR_NAME) - logInfo("Launching container %s for on host %s".format(containerId, workerHostname)) + logInfo("Launching container %s for on host %s".format(containerId, executorHostname)) // To be safe, remove the container from `pendingReleaseContainers`. pendingReleaseContainers.remove(containerId) - val rack = YarnAllocationHandler.lookupRack(conf, workerHostname) + val rack = YarnAllocationHandler.lookupRack(conf, executorHostname) allocatedHostToContainersMap.synchronized { - val containerSet = allocatedHostToContainersMap.getOrElseUpdate(workerHostname, + val containerSet = allocatedHostToContainersMap.getOrElseUpdate(executorHostname, new HashSet[ContainerId]()) containerSet += containerId - allocatedContainerToHostMap.put(containerId, workerHostname) + allocatedContainerToHostMap.put(containerId, executorHostname) if (rack != null) { allocatedRackCount.put(rack, allocatedRackCount.getOrElse(rack, 0) + 1) } } - logInfo("Launching WorkerRunnable. driverUrl: %s, workerHostname: %s".format(driverUrl, workerHostname)) - val workerRunnable = new WorkerRunnable( + logInfo("Launching ExecutorRunnable. driverUrl: %s, executorHostname: %s".format(driverUrl, executorHostname)) + val executorRunnable = new ExecutorRunnable( container, conf, sparkConf, driverUrl, - workerId, - workerHostname, - workerMemory, - workerCores) - new Thread(workerRunnable).start() + executorId, + executorHostname, + executorMemory, + executorCores) + new Thread(executorRunnable).start() } } logDebug(""" Finished allocating %s containers (from %s originally). - Current number of workers running: %d, + Current number of executors running: %d, releasedContainerList: %s, pendingReleaseContainers: %s """.format( allocatedContainersToProcess, allocatedContainers, - numWorkersRunning.get(), + numExecutorsRunning.get(), releasedContainerList, pendingReleaseContainers)) } @@ -314,9 +314,9 @@ private[yarn] class YarnAllocationHandler( // `pendingReleaseContainers`. pendingReleaseContainers.remove(containerId) } else { - // Decrement the number of workers running. The next iteration of the ApplicationMaster's + // Decrement the number of executors running. The next iteration of the ApplicationMaster's // reporting thread will take care of allocating. - numWorkersRunning.decrementAndGet() + numExecutorsRunning.decrementAndGet() logInfo("Completed container %s (state: %s, exit status: %s)".format( containerId, completedContainer.getState, @@ -326,7 +326,7 @@ private[yarn] class YarnAllocationHandler( // now I think its ok as none of the containers are expected to exit if (completedContainer.getExitStatus() != 0) { logInfo("Container marked as failed: " + containerId) - numWorkersFailed.incrementAndGet() + numExecutorsFailed.incrementAndGet() } } @@ -364,12 +364,12 @@ private[yarn] class YarnAllocationHandler( } logDebug(""" Finished processing %d completed containers. - Current number of workers running: %d, + Current number of executors running: %d, releasedContainerList: %s, pendingReleaseContainers: %s """.format( completedContainers.size, - numWorkersRunning.get(), + numExecutorsRunning.get(), releasedContainerList, pendingReleaseContainers)) } @@ -421,18 +421,18 @@ private[yarn] class YarnAllocationHandler( retval } - def addResourceRequests(numWorkers: Int) { + def addResourceRequests(numExecutors: Int) { val containerRequests: List[ContainerRequest] = - if (numWorkers <= 0 || preferredHostToCount.isEmpty) { - logDebug("numWorkers: " + numWorkers + ", host preferences: " + + if (numExecutors <= 0 || preferredHostToCount.isEmpty) { + logDebug("numExecutors: " + numExecutors + ", host preferences: " + preferredHostToCount.isEmpty) createResourceRequests( AllocationType.ANY, resource = null, - numWorkers, + numExecutors, YarnAllocationHandler.PRIORITY).toList } else { - // Request for all hosts in preferred nodes and for numWorkers - + // Request for all hosts in preferred nodes and for numExecutors - // candidates.size, request by default allocation policy. val hostContainerRequests = new ArrayBuffer[ContainerRequest](preferredHostToCount.size) for ((candidateHost, candidateCount) <- preferredHostToCount) { @@ -452,7 +452,7 @@ private[yarn] class YarnAllocationHandler( val anyContainerRequests = createResourceRequests( AllocationType.ANY, resource = null, - numWorkers, + numExecutors, YarnAllocationHandler.PRIORITY) val containerRequestBuffer = new ArrayBuffer[ContainerRequest]( @@ -468,11 +468,11 @@ private[yarn] class YarnAllocationHandler( amClient.addContainerRequest(request) } - if (numWorkers > 0) { - numPendingAllocate.addAndGet(numWorkers) - logInfo("Will Allocate %d worker containers, each with %d memory".format( - numWorkers, - (workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD))) + if (numExecutors > 0) { + numPendingAllocate.addAndGet(numExecutors) + logInfo("Will Allocate %d executor containers, each with %d memory".format( + numExecutors, + (executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD))) } else { logDebug("Empty allocation request ...") } @@ -494,7 +494,7 @@ private[yarn] class YarnAllocationHandler( private def createResourceRequests( requestType: AllocationType.AllocationType, resource: String, - numWorkers: Int, + numExecutors: Int, priority: Int ): ArrayBuffer[ContainerRequest] = { @@ -507,7 +507,7 @@ private[yarn] class YarnAllocationHandler( val nodeLocal = constructContainerRequests( Array(hostname), racks = null, - numWorkers, + numExecutors, priority) // Add `hostname` to the global (singleton) host->rack mapping in YarnAllocationHandler. @@ -516,10 +516,10 @@ private[yarn] class YarnAllocationHandler( } case AllocationType.RACK => { val rack = resource - constructContainerRequests(hosts = null, Array(rack), numWorkers, priority) + constructContainerRequests(hosts = null, Array(rack), numExecutors, priority) } case AllocationType.ANY => constructContainerRequests( - hosts = null, racks = null, numWorkers, priority) + hosts = null, racks = null, numExecutors, priority) case _ => throw new IllegalArgumentException( "Unexpected/unsupported request type: " + requestType) } @@ -528,18 +528,18 @@ private[yarn] class YarnAllocationHandler( private def constructContainerRequests( hosts: Array[String], racks: Array[String], - numWorkers: Int, + numExecutors: Int, priority: Int ): ArrayBuffer[ContainerRequest] = { - val memoryRequest = workerMemory + YarnAllocationHandler.MEMORY_OVERHEAD - val resource = Resource.newInstance(memoryRequest, workerCores) + val memoryRequest = executorMemory + YarnAllocationHandler.MEMORY_OVERHEAD + val resource = Resource.newInstance(memoryRequest, executorCores) val prioritySetting = Records.newRecord(classOf[Priority]) prioritySetting.setPriority(priority) val requests = new ArrayBuffer[ContainerRequest]() - for (i <- 0 until numWorkers) { + for (i <- 0 until numExecutors) { requests += new ContainerRequest(resource, hosts, racks, prioritySetting) } requests @@ -574,9 +574,9 @@ object YarnAllocationHandler { conf, amClient, appAttemptId, - args.numWorkers, - args.workerMemory, - args.workerCores, + args.numExecutors, + args.executorMemory, + args.executorCores, Map[String, Int](), Map[String, Int](), sparkConf) @@ -596,9 +596,9 @@ object YarnAllocationHandler { conf, amClient, appAttemptId, - args.numWorkers, - args.workerMemory, - args.workerCores, + args.numExecutors, + args.executorMemory, + args.executorCores, hostToSplitCount, rackToSplitCount, sparkConf) @@ -608,9 +608,9 @@ object YarnAllocationHandler { conf: Configuration, amClient: AMRMClient[ContainerRequest], appAttemptId: ApplicationAttemptId, - maxWorkers: Int, - workerMemory: Int, - workerCores: Int, + maxExecutors: Int, + executorMemory: Int, + executorCores: Int, map: collection.Map[String, collection.Set[SplitInfo]], sparkConf: SparkConf ): YarnAllocationHandler = { @@ -619,9 +619,9 @@ object YarnAllocationHandler { conf, amClient, appAttemptId, - maxWorkers, - workerMemory, - workerCores, + maxExecutors, + executorMemory, + executorCores, hostToCount, rackToCount, sparkConf)
      Storage LevelMeaning
      MEMORY_AND_DISK_SER Similar to MEMORY_ONLY_SER, but spill partitions that don't fit in memory to disk instead of recomputing them - on the fly each time they're needed. Similar to MEMORY_ONLY_SER, but spill partitions that don't fit in memory to disk instead of + recomputing them on the fly each time they're needed.
      OFF_HEAP Store RDD in a serialized format in Tachyon. + This is generally more space-efficient than deserialized objects, especially when using a + fast serializer, but more CPU-intensive to read. + This also significantly reduces the overheads of GC. +
      DISK_ONLY
      {d}